summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2013-10-07revert last commit, it makes systemd-nspawn not handle signals correctly.Luke Shumaker
I'm a fan of systemd-nspawn. I really am. It handles a lot of things the "right" way, so you don't have to. However, it handles PTYs and signals in an incredibly stupid way. Working around one is f---ed up by the other being wrong. Before I implemented the change that this reverts, this is what happens: systemd-nspawn> I need to create a PTY and proxy between it and stdio. I can specify a terminal size when doing this--I should set it to reflect the terminal I am connected to. systemd-nspawn> /dev/stdout: Are you a TTY? /dev/stdout> systemd-nspawn: No. ---- The correct thing to do here would be to either not set the size, ---- or set it to 80×24 systemd-nspawn> /dev/stdin: Are you a TTY? /dev/stdin> systemd-nspawn: Yes. systemd-nspawn> /dev/stdin: Great, what size are you? /dev/stdin> systemd-nspawn: I am X×Y. systemd-nspawn: libc: Please give me a PTY that is X×Y. ---- Why the f--- would you do this? The size only effects *output*. ---- If you don't know the characteristics of the output, set ---- reasonable defaults! Don't base it on the characteristics of the ---- input! My solution was to make /dev/stdin not be a TTY by closing it. This had the desired effect, but tripped up the signal handling. Here is how signals were handled before: systemd-nspawn> /dev/stdin: Are you a TTY? /dev/stdin> systemd-nspawn: Yes. systemd-nspawn> /dev/stdin: Great, please don't send SIGINT on C-c. I will handle it myself. *user presses C-c, systemd reads it* systemd-nspawn> child processes: here's a SIGINT. Here's what happens when I close, or do other things to make stdin not be a TTY: systemd-nspawn> /dev/stdin: Are you a TTY? /dev/stdin> systemd-nspawn: No. systemd-nspawn> /dev/stdin: Oh, OK. *user presses C-c, /dev/stdin interprets it* /dev/stdin> systemd-nspawn: Here's a SIGINT. systemd-nspawn> *dies, abandoning child processes* The clear correct thing to do would have been to *handle* SIGINT, and pass it along to the children.
2013-10-04libremakepkg: close stdin on most commands being sent through `indent`Luke Shumaker
Besides preventing interactive use, this prevents the program from knowing the size of the terminal.
2013-10-04librechroot/hook-chcleanup: look at /startdir/PKGBUILD, not /build/PKGBUILDLuke Shumaker
2013-10-04chcleanup: prevent searching PATH for PKGBUILDLuke Shumaker
2013-10-04conf.sh: generalize {get,set}_conf_makepkg to {get,set}_varLuke Shumaker
2013-10-02Add documentation for lib/Luke Shumaker
* Add a bunch of man-pages * Add some comments to conf.sh * Add more information to librelib:usage()
2013-10-01libremakepkg: when prefixing output with ' | ', do better than sed.Luke Shumaker
There are two downsizes to using sed; it line-buffers, and (the existing pattern) doesn't handle '\r'. So, now I've included a Perl helper program to do a better job. I'd originally written it in C, and while that version was faster (the Perl version stutters occasionally), it required recompilation for different architectures. I could have gotten around that with tcc, but I didn't want to add any dependencies. Which is why I settled on Perl. It's part of group=(base), and it is required by packages in group=(base-devel), so I can count on it always being there. It doesn't handle every movement character, just '\n' and '\r', but that's enough for curl and pacman.
2013-09-30librerelease: add -u flag for upload-only; don't run db-updateLuke Shumaker
2013-09-30librerelease: fix upload size totalLuke Shumaker
2013-09-30librerelease: fixv20130930Luke Shumaker
2013-09-30librerelease: I was dumb and messed up the flags to `find`. Add unit tests.Luke Shumaker
2013-09-29Strip trailing whitespace everywhere.Luke Shumaker
find * -type f -not -name '*.patch' -exec sed -i -r 's/\s+$//' {} +
2013-09-29update the makechrootpkg patch to apply cleanly with an updated devtoolsLuke Shumaker
2013-09-29fullpkg-build: (minor) use printf instead of echo and post-processingLuke Shumaker
2013-09-29fullpkg-find: fiddle with some of the quoting, it was tripping up xgettextLuke Shumaker
2013-09-29fullpkg-find: add licensing informationLuke Shumaker
2013-09-29fullpkg: internationalizeLuke Shumaker
2013-09-26Makefile: create a standard 'pot' targetLuke Shumaker
2013-09-23Makefile: fix xgettext rulesLuke Shumaker
2013-09-23fullpkg: use tab for indentLuke Shumaker
2013-09-23librefetch: tidy up: use prose(), remove --version, remove $MAKEPKGLuke Shumaker
2013-09-23librerelease: print what HOOK* is configured too before running itLuke Shumaker
2013-09-22Merge commit '610699'Luke Shumaker
Conflicts: src/abslibre-tools/createworkdir
2013-09-22fix typo in usage text for librechrootLuke Shumaker
2013-09-22createworkdir: clean upLuke Shumaker
Use set -euE and trap for simpler error handling. Use libregit to fetch abslibre
2013-09-21librerelease: support per-user staging directoriesLuke Shumaker
The relies on db-update on the server respecting STAGING if it is set in the environment. https://labs.parabola.nu/issues/314
2013-09-21librerelease: tidy upLuke Shumaker
2013-09-21librerelease: Avoid locking the staging directory the whole time.Luke Shumaker
https://labs.parabola.nu/issues/410
2013-09-21abslibre-tools: internationalizeLuke Shumaker
2013-09-21librerelease: tidy upLuke Shumaker
2013-09-18librefetch: Don't inherit `options` or `PURGE_TARGETS`Luke Shumaker
2013-09-14libremakepkg: play with the outputv20130914Luke Shumaker
2013-09-14libremakepkg: clean up temporary files created by prepare_chrootLuke Shumaker
2013-09-14libremakepkg: add a librechroot_flags variable, split chrootbuild upLuke Shumaker
We split chrootbuild so that the initialization bit runs before hook_pre_build.
2013-09-14libremakepkg: remove extra call to clean_chrootLuke Shumaker
2013-09-13libremakepkg: I can't believe committed my debug statements.Luke Shumaker
2013-09-12Merge branch 'fauno~2' (early part) into masterLuke Shumaker
2013-09-11libreblacklist: Fix a bug in the -h flag, adjust the unit test to catch it.Luke Shumaker
2013-09-11libre{stage,release}: fix https://labs.parabola.nu/issues/379Luke Shumaker
2013-09-11Update to the new version of devtools (huge commit).Luke Shumaker
User-facing changes: - libremessages: `lock_open_write` became `lock` - libremessages: `lock_open_read` became `slock` - librechroot: learned the `-r` and `-w` flags to do bind mounts. Internal changes: The changes to librechroot were pretty straight-forward; the biggest change is that `archroot` got split into `mkarchroot` and `arch-nspawn`. libremakepkg got a major overhaul Honestly, the changes to libremakepklg probably could have been a lot smaller, but... I wanted to do it right/be clean. makechrootpkg in devtools got cleaned up a lot, actually a lot of the same changes I was making. But, the small differences between the way we did things made it less than simple to adjust. The biggest changes in terms of conflict for me are how devtools now uses bind-mounts to put files in the chroot, and that the /chrootbuild file is more complicated. I handled a lot of the complexity by moving things out of the main program, and adding hooks for non-core functionality, including chcleanup, distcc compatability hacks, and PKGBUILD/pkg checking. Unfortunately, the files containing the hooks are currently hard-coded. Perhaps they will be truly pluggable in the future. That might be neat. Or over-complicated. We'll see where it goes.
2013-09-11chcleanup: Do better error handlingLuke Shumaker
2013-09-11chroot-tools: internationalizeLuke Shumaker
2013-09-11internationalize pkgbuild-check-*Luke Shumaker
2013-09-11librelib: Internationalize (actually use the internationalization stuff)Luke Shumaker
2013-09-11libremessages: add a few more message routines, and make them gettext-aware.Luke Shumaker
- Don't set LANG=C in common.sh - Move TEXTDOMAIN stuff into common.sh; so devtools stuff will use it. - Add _(): Basically an alias for `gettext`, but falls back if gettext is not available. - Add panic(): First showed up in `distcc-tool`, does what it sounds like. - Add prose(), bullet(), and flag(): they do word wrapping and such to make it easy to internationalize `--help` text. - Teach common.mk how to make .pot files based on these routines.
2013-09-11Move libregit into its own directory/subpackageLuke Shumaker
2013-09-11libregit: don't call gettext, I will count on libremessages to do thatLuke Shumaker
2013-09-11Make common-devtools.mk unnecessary. Move devtools chroot stuff into ↵Luke Shumaker
chroot-tools
2013-09-11conf.sh: touch up quotingLuke Shumaker
2013-08-12librefetch: add .makepkg/ to PURGE_TARGETS, it is created in download_svn()v20130812Luke Shumaker