summaryrefslogtreecommitdiff
path: root/src/chroot-tools/libremakepkg
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-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-22Merge commit '610699'Luke Shumaker
Conflicts: src/abslibre-tools/createworkdir
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-11chroot-tools: internationalizeLuke 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-10libremakepkg: set PACKAGER in the chroot to reflect the value outside.Luke Shumaker
2013-06-10libremakepkg: integrate distcc-toolLuke Shumaker
2013-06-09libremakepkg: fix up clean up routinesLuke Shumaker
2013-06-08libremakepkg: add -N flag to enable networking, for distcc supportLuke Shumaker
2013-06-05libre{chroot,makepkg}: improve handling of when not configuredLuke Shumaker
2013-06-05Phase out `load_conf_*` and `check_conf_*` functionsLuke Shumaker
Replace their usages with `load_files *` and `check_vars *`
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-14libremakepkg: fix adding [repo] to pacman.confLuke Shumaker
2013-05-07libremakepkg: copy more things out on failuretesting-20130507Luke Shumaker
2013-05-07have `librechroot install-file` add the packages to the local repo.Luke Shumaker
2013-05-07libremakepkg: fix possible sudo option parsing bugLuke Shumaker
2013-05-03libremakepkg: fix -R flagtesting-20130503Luke Shumaker
2013-05-02libremakepkg: only lock the chroot if there is a chroot to lock.Luke Shumaker
2013-05-02fix libremakepkgLuke Shumaker
2013-05-02Update for the new devtools-par (major)Luke Shumaker
* `src/devtools`: Redo to get devtools from another location, and patch it * `src/chroot-tools/{chcleanup,chroot.conf}`: Only install 'base-devel' by default * libremkchroot: deprecate in favor of `librechroot make` * librechroot: - redo option parsing to be a "sub-command" (git-like) interface, instead of having esoteric flags (pacman-like). - add more documentation. - allow COPY to be an absolute path - generally clean up and use updated functions from `makechrootpkg.sh` * libremakepkg: - allow COPY to be an absolute path - update to work with the new `makechrootpkg.sh`: - `makechrootpkg.sh:chroot_exec()` -> `libremakepkg:run()` - `makechrootpkg.sh:chroot_init()` -> `libremakepkg:chroot_init()` - All functions from `makechrootpkg.sh` are wrapped, because they don't work with `set -euE`. - Other small changes
2013-01-13use /usr/share/devtools/makechrootpkg.sh instead of *.gpl2Luke Shumaker
2012-12-09make the messages while waiting for a chroot lock more helpfulLuke Shumaker
2012-12-09Improve the help messages for librechroot and libremakepkgLuke Shumaker
2012-12-09rethink libremakepkg's chroot logic to make it play well from in a chrootLuke Shumaker
2012-12-09Add /usr/share/libretools/conf.sh, use /etc/libretools.d/chroot.confLuke Shumaker
Use it for librechroot, libremakepkg, libremkchroot
2012-12-09libremakepkg: learn '-C' to dissable using the chrootLuke Shumaker
2012-11-30libremakepkg: match makepkg's error message if PKGBUILD does not existLuke Shumaker
2012-11-30libremakepkg: forget -RLuke Shumaker
2012-11-30libremakepkg: fix bug in makepkg_conf_getLuke Shumaker
2012-11-28many fixesLuke Shumaker
2012-11-28improve libremakepkg's help messageLuke Shumaker
2012-11-28teach libremakepkg "-m" to use a different command than "makepkg"v20121128.1Luke Shumaker
2012-11-28Rewrite libremakepkg to not use makechrootpkgLuke Shumaker
2012-11-28chroot-tools: disable overriding CHROOTDIR at the command lineLuke Shumaker
2012-11-13add an '-f' flag to pkgbuild-check-nonfree to let libremakepkg run as rootLuke Shumaker
2012-11-13libremakepkg: fix copy_logLuke Shumaker
2012-11-12libremakepkg: touch up bracketsLuke Shumaker
2012-11-12chroot-tools: clean up, make play nice with new devtoolsLuke Shumaker
* buildenv: delete; this is done by `mkarchroot` * librechroot: - adopt `archbuild`'s concept of CHROOT and CHROOTCOPY - add `-l` option to set the CHROOTCOPY * libremakepkg: - adopt `archbuild`'s concept of CHROOT and CHROOTCOPY - add `-l` option to set the CHROOTCOPY - pass options to `makechrootpkg` and `makepkg` the way `-h` always said it did * libremkchroot: - adopt `archbuild`'s concept of CHROOT and CHROOTCOPY - remove `-c` option to set the pacman cache - remove `-f` option to force overwrite
2012-11-07organize the filesLuke Shumaker