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

Reply via email to