summaryrefslogtreecommitdiff
path: root/src/chroot-tools
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-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-29update the makechrootpkg patch to apply cleanly with an updated devtoolsLuke Shumaker
2013-09-26Makefile: create a standard 'pot' targetLuke Shumaker
2013-09-23Makefile: fix xgettext rulesLuke 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-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-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-11Make common-devtools.mk unnecessary. Move devtools chroot stuff into ↵Luke Shumaker
chroot-tools
2013-07-27revamp the Makefiles to support manpagesLuke Shumaker
2013-06-27cleanup: set CARCH before loading PKGBUILDLuke Shumaker
2013-06-23librechroot: fix mkdir spitting to stderr in clean-pkgs.Luke Shumaker
2013-06-11librechroot: clarify what config files are installed.Luke Shumaker
2013-06-11libremakepkg: don't remove -N, but discourage its use.v20130611Luke Shumaker
2013-06-11libremakepkg: improve behavior when PACKAGER is not setLuke Shumaker
2013-06-10distcc-tool: fix bugs in odaemonLuke Shumaker
1. The file permissions on /socket were bad, fix this by setting umask 111 2. In some cases, the child socat wouldn't exit. Add trap to killit on exit.
2013-06-10libremakepkg: set PACKAGER in the chroot to reflect the value outside.Luke Shumaker
2013-06-10improve documentation in chroot.confLuke Shumaker
2013-06-10libremakepkg: integrate distcc-toolLuke Shumaker
2013-06-09libremakepkg: fix up clean up routinesLuke Shumaker
2013-06-09distcc-tools: remove automatic ssh configurationLuke Shumaker
2013-06-09add chroot-tools/distcc-tool; it is not used yet thoughLuke Shumaker
2013-06-08libremakepkg: add -N flag to enable networking, for distcc supportLuke Shumaker
2013-06-05librechroot: fix clean-repov20130605.1Luke Shumaker
2013-06-05chroot.conf: configure CHROOTEXTRAPKG to be empty by defaultv20130605testing-20130605Luke Shumaker
2013-06-05librechroot: improve documentation for -C and -MLuke Shumaker
2013-06-05librechroot: check if the command doesn't exist and fail earlyLuke Shumaker
2013-06-05libre{chroot,makepkg}: improve handling of when not configuredLuke Shumaker
2013-06-05Double bracket ==/</> compare lexicographically, not numerically.Luke Shumaker
Unfortunately for me, that means that it works correctly *most* of the time. But, for example, [[ 10 < 2 ]], and negatives don't work.
2013-06-05librechroot: capitalization and punctuation in usage()Luke Shumaker
2013-06-05chcleanup: don't fail when offlineLuke Shumaker
2013-06-05Add tests for librechroot's help system, make them pass.Luke Shumaker
They didn't pass because on several errors it printed to stdout, not stderr
2013-06-05Phase out `load_conf_*` and `check_conf_*` functionsLuke Shumaker
Replace their usages with `load_files *` and `check_vars *`
2013-05-28librechroot: fix typos, add unit testtesting-20130528.2Luke Shumaker
2013-05-28librechroot: didn't always create repo.db symlinktesting-20130528.1Luke Shumaker
Fix this and remove code duplication by pulling the relevant code into a function.
2013-05-26redo the library system; avoid hard-coded pathsLuke Shumaker
* install all library files to $(libexecdir)/libretools, instead of - $(bindir) - $(datadir)/libretools - $(datadir)/devtools * symlink the executable library files into $(bindir) * add the tool `librelib` * instead of ". /path/to/lib.sh", use ". $(librelib lib.sh)" * mark all libraries with shebangs of what options they support * move blacklist.sh to libreblacklist
2013-05-22fix https://labs.parabola.nu/issues/335Luke Shumaker
2013-05-14libremakepkg: fix adding [repo] to pacman.confLuke Shumaker