xbps-builder: update to use ethereal build-style instead of fakedchroot (they're the same Actually but w/e)
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
parent
4a208dc64f
commit
047a02a9f7
@ -1,4 +1,4 @@
|
||||
FROM d.xr.to/base:glibc
|
||||
COPY files/* /opt/dxrto/
|
||||
RUN chmod a+x /opt/dxrto/setup-fakedchroot /opt/dxrto/fakedchroot.sh /opt/dxrto/xbps-build && /opt/dxrto/setup-fakedchroot && ln -s /opt/dxrto/xbps-build /bin/xbps-build
|
||||
RUN chmod a+x /opt/dxrto/setup-fakedchroot /opt/dxrto/xbps-build && /opt/dxrto/setup-fakedchroot && ln -s /opt/dxrto/xbps-build /bin/xbps-build
|
||||
WORKDIR '/_workdir'
|
||||
|
@ -1,80 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This chroot script uses bad design
|
||||
#
|
||||
fake_mount() {
|
||||
#
|
||||
# Fake mount works by removing the dir, and replacing it with a symlink
|
||||
# This created the illusion of a bind.
|
||||
#
|
||||
|
||||
local FROM="$1";
|
||||
local TO="$2"
|
||||
if [ -d "$TO" ]; then
|
||||
rmdir "$TO";
|
||||
fi
|
||||
ln -s "$FROM" "$TO";
|
||||
}
|
||||
|
||||
fake_umount() {
|
||||
#
|
||||
# Remove the symlink and recreate the dir
|
||||
#
|
||||
rm "$1";
|
||||
mkdir "$1";
|
||||
}
|
||||
|
||||
readonly MASTERDIR="$1"
|
||||
readonly DISTDIR="$2"
|
||||
readonly HOSTDIR="$3"
|
||||
readonly EXTRA_ARGS="$4"
|
||||
readonly CMD="$5"
|
||||
shift 5
|
||||
|
||||
if [ -z "$MASTERDIR" -o -z "$DISTDIR" ]; then
|
||||
echo "$0 MASTERDIR/DISTDIR not set"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
fake_mount $DISTDIR $MASTERDIR/void-packages;
|
||||
|
||||
if [ ! -z "$HOSTDIR" ]; then
|
||||
fake_mount $HOSTDIR $MASTERDIR/host;
|
||||
fi
|
||||
|
||||
ITEMS="";
|
||||
# xbps-src may send some other binds, parse them here
|
||||
while getopts 'b:' c -- "$EXTRA_ARGS"; do
|
||||
# Skip everything that's not a bind
|
||||
[ "$c" = "b" ] || continue;
|
||||
|
||||
_FROM="$(cut -d: -f1 <<< "$OPTARG")";
|
||||
_TO="$(cut -d: -f2 <<< "$OPTARG")";
|
||||
fake_mount "${_FROM}" "${_TO}";
|
||||
# Save created mounts so we can clean them up later
|
||||
ITEMS+="${_TO} "
|
||||
done
|
||||
|
||||
CURR_DIR="${PWD}";
|
||||
# To give the illusion we entered the chroot, cd to /
|
||||
cd /;
|
||||
# Tell xbps-src that we are "in the chroot".
|
||||
IN_CHROOT=1 $CMD $@;
|
||||
# Save exit code for after clean up
|
||||
X="$?";
|
||||
# cd back to the old pwd, so everything is the same again
|
||||
cd "$CURR_DIR";
|
||||
|
||||
if [ ! -z "$HOSTDIR" ]; then
|
||||
fake_umount $MASTERDIR/host;
|
||||
fi
|
||||
|
||||
fake_umount $MASTERDIR/void-packages;
|
||||
|
||||
# "umount" on demand created "mounts"
|
||||
for i in $ITEMS; do
|
||||
fake_umount "$i";
|
||||
done
|
||||
|
||||
# Exit with the returned exit code
|
||||
exit "$X";
|
Loading…
Reference in New Issue