Age | Commit message (Collapse) | Author |
|
When leaving the fakeroot environment, the build fails with something like
kill: sending signal to 694 failed: No such process
/usr/bin/fakeroot: line 178: 686 User defined signal 1 FAKEROOTKEY=$FAKEROOTKEY LD_LIBRARY_PATH="$PATHS" LD_PRELOAD="$FAKEROOT_LIB" "$@"
What's happening is that:
1. the main makepkg process launches the `distcc-tool ideaemon`, which
binds to the TCP ports
2. then, the inferior in-fakeroot makepkg process tries to launch its own
`distcc-tool idaemon`, which immediately fails in the background
because it can't bind to those TCP ports.
3. Then, when the inferior in-fakeroot makepkg process exits it tries to
clean up after itself by `kill`ing the idaemon pid. This fails
because that pid died long ago.
I'm not entirely sure what broke it--I think either makepkg didn't used to
re-load makepkg.conf when entering the fakeroot environment, or Bash
`jobs -p` didn't used to list jobs that had terminated but hadn't been
`wait`ed for? IDK. Actually, the Bash one seems more likely.
Anyway, fix this by only launching the idaemon from the parent makepkg
process.
|
|
This mimics d6866e0 (lib: support arbitrary compressed package
files, 2019-12-04, Levente Polyak <anthraxx@archlinux.org>) from
devtools.git
|
|
I'm not sure exactly what changed (default PAM policy?), but by default
`sudo -u #NN` to use unnamed numeric UIDs no longer works.
|
|
rename
Commit a94838e (src/lib/librelib: separate LIBRETOOLS_LIBDIR by ':'
and consider each part as a candidate for searching the requested
script, and rename LIBRETOOLS_LIBDIR to LIBRETOOLS_LIBRARY_PATH to
reflect that change, 2020-04-12, Andreas Grapentin
<andreas@grapentin.org>) renamed the environment variable from
LIBRETOOLS_LIBDIR to LIBRETOOLS_LIBRARY_PATH, but didn't update the
tests or the man page.
So update the tests and man page.
|
|
|
|
|
|
- Drop the superfluous '+' before $(MAKE)
- Pull the desired MAKEFLAGS into a variable
- Add some comments
|
|
|
|
This documents all the contributions of the last few years, based on
the Git history.
|
|
GNUtoo: split patch and wrote commit message.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
|
Without that fix we have the following error when trying to build a
tarball that needs to be created with librefetch:
$PKGEXT does not contain a valid package suffix (needs '.pkg.tar*',
got '<pkgname>-<pkgver>.pkg.tar.xz')
I was told by bill-auger on #parabola that it could be fixed by
applying the commit 23321a3f77ecbb76b4fc79adfbf212d07dc3a0f1 ("bugfix
mksource()") which was in the wip-2022-01 at the time and so this
commit is based on this bugfix mksource() commit.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
|
Several packages require a read-write startdir:
- Some packages have a pkgver that is computed dynamically
through a pkgver function. This is the case for many packages
using git repositories. At the end of the package build, the
pkgver is automatically updated in the PKGBUILD, however,
without that fix that fails with libremakepkg as the PKGBUILD
was set read-only.
- Some packages like linux-libre are modifying the install=
script. This is done by creating a temporary install script
in the startdir that is then modified with sed. Once this is
done that install script is then dynamically selected.
As this also require to have read-write access to the
startdir to be read-write it fails to build the package if
it's not the case.
In both cases it's possible to modify the PKGBUILDs to
workaround the issue, however the Arch Linux distribution has
a read-write startdir, and modifying each affected packages
would significatively increase the cost (in time and efforts)
of maintaining Parabola.
This was broken by the commit 646ac0258c3295943778142468aadfe5b04ad6d1
("libremakepkg,chcleanup: Be stricter about network access").
Thanks to elibrokeit on the #parabola IRC channel on Freenode
for helping me identifying the cause of read-only mounts in
libremakepkg.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
|
|
|
|
|
as a candidate for searching the requested script, and rename LIBRETOOLS_LIBDIR to LIBRETOOLS_LIBRARY_PATH to reflect that change
Signed-off-by: Andreas Grapentin <andreas@grapentin.org>
|
|
|
|
|
|
|
|
|
|
"Ignore space change" might be helpful when viewing this diff.
|
|
"What is the alignment of the libremakepkg options section based on?", you
may ask. You'll see in the next commit!
|
|
|
|
|
|
|
|
|
|
If $TMPDIR is permissively owned (as /tmp is), then sshd will refuse to
look at the AuthorizedKeysFile. So bypass that permission check by
configuring AuthrorizedKeysCommand to just `cat` that file.
|
|
If /run/user/$UID/ doesn't exist, then the gpg-agent socket will be in
$GNUPGHOME, which is inside of $tmpdir. Because the $BATS_TEST_NAME is
embedded in $tmpdir, the path might be quite long, and hit the 108-byte
limit on socket paths, which GnuPG does nothing to check for or handle.
So, don't embed $BATS_TEST_NAME in $tmpdir, in order to keep the path
shorter.
|
|
common_setup might have errored before setting tmpdir or chrootdir; handle
those cases.
|
|
|
|
This will display the evaluated command line, rather than the cryptic
ssh -fN ${REPODEST_port:+-p "$REPODEST_port"} "${REPODEST_userhost}"
|
|
Its value is configurable in libretools.conf.
I discussed this eventual change in my dbscripts plans on the mailing list.
|
|
https://labs.parabola.nu/issues/1411
https://labs.parabola.nu/issues/1412
I have verified that the test fails with commit
0b8606e0cd0e1aedfe222d4d6603c4986aacb7b5 ("librerelease: Fix rmdir
failing") reverted.
|
|
This reverts commit 70b9f3cdcabc217609be96cfdd1fd47133aa273b.
|
|
The implementation is not dual-stack. It supports *either* IPv4 or IPv6.
I'm not entirely sure how it chooses.
Clients that support happy-eyeballs will do thing right thing, but clients
that don't (*cough* openssh) won't. So explicitly choose the IPv4
localhost instead of using an ambiguous "localhost".
|
|
Use local variables.
|
|
- Drop `distcc-tool-idaemon.pid`; we can just check `jobs -p`
- _distcc_start_idaemon() and _distcc_stop_idaemon() are thereby
simplified to the point where they can just be inlined.
- Why did I keep doing `foo & wait`!?
- Don't forget to write DISTCC_HOSTS to makepkg.conf
- There was a typo in makepkg.conf; it said "_discc_start_idaemon"
|
|
distcc-tool [ci-skip]
|
|
It was written by me, in May 2018.
|
|
I don't know what I was thinking when I wrote it that way.
For one, the "<&0" bit is a no-op. It redirects stdin to be stdin. Maybe
I had meant to write "<&-" and close it?
For two, just write it normally. It's simple enough, don't make it look
like magic.
|
|
- I'm pretty sure the "& trap 'jobs -p | xargs kill' EXIT; wait" bit is
100% superstition.
- Sprinkle `exec` in there to use fewer PIDs
- Don't bother with variables for short constant values, just hard-code
them
- Use `sleep infinity` instead of a dumb socat if we need to sleep
forever without doing anything.
|
|
|
|
for file in test/cases/*.bats; do
name=$(sed -n 's/^describe //p' -- "$file")
sed -ri '
# Remove the roundup shebang
/^#!\/usr\/bin\/env roundup$/d
# Use $BATS_TEST_NAME instead of $roundup_test_name
s,roundup_test_name,BATS_TEST_NAME,g
# Use BATS built-in "skip" instead of just succeeding
/^\trequire /s/\|\| return 0$/|| skip/
# Remove the chroot message, does not play well with BATS output
/Creating a chroot, may take a few minutes/d
# Update file locations
s,^\. \./test-common\.sh$,load ../lib/common,
s,\b(libre(chroot|dbdiff|fetch|makepkg|stage|xgettext)|pkgbuild-check-nonfree|toru)\.d\b,fixtures/\1,g
# In BATS, the hook is setup(), not before()
s,^before\(\),setup(),
s,^\tcommon_before$,\tcommon_setup,
# Convert test definitions from
# describe FOO
# it_does_a_thing() { … }
# to
# @test "FOO does a thing" { … }
/^describe /d
/^it_/ {
s/_/ /g
s,^it (.*)\(\),@test "'"$name"' \1\",
}
' \
-- "$file"
# Remove leading newline that might have been left behind by the above
sed -i '1{/^$/d}' -- "$file"
git add "$file"
done
sed -i \
-e 's,librexgettext\.d,fixtures/librexgettext,g' \
-e 's,/it_,/test_librexgettext_,g' \
-- test/fixtures/librexgettext/*
git add test/fixtures/librexgettext/*
|
|
But don't edit them yet.
This directory structure is based on that of dbscripts.
|
|
|
|
This really messed me up while debugging, I don't want to fall for that
again!
|
|
The maximum socket name length is surprising short. So `cd` and use a
short relative path.
|
|
|
|
With $HOME now being owned by test-common.sh instead of testenv, it's
sufficiently short-lived that we don't need to worry about reverting
changes we make to it.
|
|
- move REPODEST to common.bash
- don't bother setting PKGEXT
|
|
|