A page in your DokuWiki was added or changed. Here are the details:
Date : 2019/09/18 19:31
Browser : Mozilla/5.0 (X11; Linux x86_64; rv:60.9) Gecko/20100101
Goanna/4.4 Firefox/60.9 PaleMoon/28.7.1
IP-Address : 109.193.81.67
Hostname : HSI-KBW-109-193-081-067.hsi7.kabel-badenwuerttemberg.de
Old Revision: https://wiki.x2go.org/doku.php/doc:howto:tce?rev=1568834946
New Revision: https://wiki.x2go.org/doku.php/doc:howto:tce
Edit Summary: [Starting the Build] updated script for experimental ARM support
User : stefanbaur
@@ -273,16 +273,127 @@
echo 'rm -rf ./usr/share/man/*'
>>./config/hooks/0112-remove-folders.hook.chroot
[ "$LBX2GO_IMAGETYPE" != "netboot" ] && echo 'rm -rf ./var/lib/apt/lists/*'
>>./config/hooks/0112-remove-folders.hook.chroot
chmod 755 ./config/hooks/0112-remove-folders.hook.chroot
fi
+
+ if [ -n "$LB_APT_HTTP_PROXY" ] || [ -n "$LB_APT_FTP_PROXY" ]; then
+ echo "NOTICE: apt proxy variable(s)
is/are set."
+ echo "NOTICE: Trying to use the proxy for all downloads."
+ echo "NOTICE: If this fails, look for #SETPROXY in the $0 source."
+ # Here, we should have reached a point where it is safe to point all
proxy variables
+ # at the apt-cacher-ng proxy. If you're seeing errors during your
build that hint
+ # at files not being downloaded, disable these three entries.
+ export https_proxy=$LB_APT_HTTP_PROXY
+ export http_proxy=$LB_APT_HTTP_PROXY
+ export ftp_proxy=$LB_APT_FTP_PROXY
+ fi
+
+ # This is a crude hack to detect crossbuilds for ARM on Intel/AMD hardware.
+ # It makes some necessary changes, and also tries to speed up squashfs
creation.
+ if (uname -r | grep -q 'i.86' || uname -r | grep -q 'amd64') && \
+ echo "$LB_X2GO_ARCH" | grep -q 'arm'; then
+
+ # This command removes all references to fuseext and x2gothinclient from the
+ # package list files. Currently needed as
there are no ARM packages for either.
+ echo "WARNING: Removing all references to fuseext and x2gothinclient from
the build."
+ sed -e 's/^.*fuseext.*$//g' -e 's/^.*x2gothinclient.*$//g' -i
./config/package-lists/*
+
+ # This command removes the X2Go repository from the directory where additional
+ # archives are stored. Currently needed as the X2Go repository offers no arm64
+ # packages, but Debian Buster does - so that's what we're falling back to.
+ echo "WARNING: Removing all references to the X2Go repository from the
build."
+ rm ./config/archives/*x2go*
+
+ # The following is a hack to reduce squashfs creation time. We're replacing mksquashfs
+ # in the changeroot environment with a wrapper script that drops the original
+ # mksquashfs call into a file.
+
+ # We need to do this as a background task, waiting for the mksquashfs executable to
+ # appear in the changeroot; as the changeroot
will only be created later on, once
+ # lb build is called.
+
+ # The other background task waits until the command file has been created, then
+ # it applies some necessary patches to it, and starts the mksquashfs
command natively
+ # on the build host, rather than in the changeroot environment.
+ # This is because in the changeroot, we'd be running the ARM
mksquashfs in a qemu
+ # software emulation of the ARM architecture, while on the host, we
can use all the
+ # native, raw CPU power and cores available to us.
+
+ # To make sure we don't have any lingering processes in the background, we're passing
+ # our own PID along to the background tasks, and tell them to
terminate if our PID
+ # disappears while they're still in their waiting/looping state.
+
+ MASTERPID=$$
+
+ # Replace mksquashfs in chroot with script
+ # (script will undo this upon completion)
+
(
+ # wait until the chroot has been populated or until our parent
process dies
+ while ! [ -x ./chroot/usr/bin/mksquashfs ]; do
+ ps $MASTERPID >/dev/null || exit 1
+ sleep 1
+ done
+ # make sure we don't overwrite the real executable if it has
already been
+ # moved out of the way
+ if ! [ -x ./chroot/usr/bin/mksquashfs.real ]; then
+ cp ./chroot/usr/bin/mksquashfs
./chroot/usr/bin/mksquashfs.real
+ fi
+ echo '#!/bin/bash' >./chroot/usr/bin/mksquashfs
+ # log the name we've been called with and all parameters into this
file
+ echo 'echo "$0 $@" >/tmp/filesystem.squashfs.temp'
>>./chroot/usr/bin/mksquashfs
+ # once the native mksquashfs is complete, we will remove this file
+ echo 'while [ -f /tmp/filesystem.squashfs.temp ]; do'
>>./chroot/usr/bin/mksquashfs
+ echo ' sleep 1'
./chroot/usr/bin/mksquashfs
+ echo 'done' >>./chroot/usr/bin/mksquashfs
+ # so let's wait until it has been removed before deleting
ourselves ...
+ echo 'rm /usr/bin/mksquashfs' >>./chroot/usr/bin/mksquashfs
+ # ... and moving the real executable back into its place
+ echo 'mv /usr/bin/mksquashfs.real /usr/bin/mksquashfs'
>>./chroot/usr/bin/mksquashfs
+ chmod 755 ./chroot/usr/bin/mksquashfs
+ ) &
+
+ # start the native mksquashfs after patching the parameters
+ (
+ # wait until the trigger file has been created or until our
parent process dies
+ while ! [ -f ./chroot/tmp/filesystem.squashfs.temp ]; do
+ ps $MASTERPID >/dev/null || exit 1
+ sleep 1
+ done
+ # using any of the available filters (x86, arm, armthumb) for the
+ # -Xbcj command results in an unusable squashfs on arm, so we drop the
+
# parameter completely if it's there.
+ # also, all absolute paths (detected by beginning with " /") need
to be
+ # prefixed with "./chroot" so the mksquashfs outside the chroot
knows where
+ # to look for the corresponding paths/files.
+ sed -e 's/ -Xbcj x86/ /g' -e 's# /# ./chroot/#g' -i \
+ ./chroot/tmp/filesystem.squashfs.temp
+ # now let's make this executable
+ chmod 755 ./chroot/tmp/filesystem.squashfs.temp
+
+ # we also need to add some more excludes because they shouldn't end up
+ # in the squashfs - no idea why we don't need them while inside
the chroot ...
+ echo 'proc/*' >>./chroot/excludes
+ echo 'sys/*' >>./chroot/excludes
+ echo 'dev/pts/*' >>/.chroot.excludes
+ # now let's execute the script and, if it terminates without an
error,
+ # we'll move the newly created squashfs into the chroot
where the chrooted
+ # mksquashfs command would have created it; if that worked as
well, we'll
+ # remove the script file so our dummy mksquashfs inside the
chroot knows
+ # it's time to terminate itself.
+ ./chroot/tmp/filesystem.squashfs.temp && \
+ mv ./filesystem.squashfs ./chroot/ && \
+ rm ./chroot/tmp/filesystem.squashfs.temp
+ ) &
+ fi
+
if lb build ; then
echo -e "Build is done: '$LBX2GO_TCEDIR'"
ln $(realpath ./chroot/vmlinuz) ./x2go-tce-vmlinuz
ln $(realpath ./chroot/initrd.img) ./x2go-tce-initrd.img
ln ./binary/live/filesystem.squashfs ./x2go-tce-filesystem.squashfs
if [ "$LBX2GO_IMAGETYPE" = "hdd" ] ; then
- ln ./live-image-$(echo $LBX2GO_ARCH | awk '{print $2}').img \
+ ln ./live-image-$(echo $LBX2GO_ARCH | awk '{print $2}').img \
./x2go-tce-live-image-$(echo $LBX2GO_ARCH |
awk '{print $2}').img
fi
if [ "$LBX2GO_IMAGETYPE" = "netboot" ] ; then
if [ "$LBX2GO_NOSQUASHFS" = "true" ] ; then
--
This mail was generated by DokuWiki at
https://wiki.x2go.org/
_______________________________________________
x2go-commits mailing list
x2go-commits@lists.x2go.org
https://lists.x2go.org/listinfo/x2go-commits