2019-12-17 10:50:14 +00:00
|
|
|
#!/bin/bash
|
2019-04-29 17:33:22 +01:00
|
|
|
|
|
|
|
set -ex
|
|
|
|
|
2020-07-03 09:04:20 +01:00
|
|
|
if [ $DEBIAN_ARCH = arm64 ]; then
|
|
|
|
ARCH_PACKAGES="firmware-qcom-media"
|
|
|
|
elif [ $DEBIAN_ARCH = amd64 ]; then
|
|
|
|
# Upstream LLVM package repository
|
|
|
|
apt-get -y install --no-install-recommends gnupg ca-certificates
|
|
|
|
apt-key add /llvm-snapshot.gpg.key
|
2020-10-06 01:49:00 +01:00
|
|
|
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-10 main" >/etc/apt/sources.list.d/llvm10.list
|
2020-07-03 09:04:20 +01:00
|
|
|
apt-get update
|
|
|
|
|
2020-11-11 16:15:25 +00:00
|
|
|
ARCH_PACKAGES="firmware-amd-graphics
|
|
|
|
libelf1
|
2020-10-06 01:49:00 +01:00
|
|
|
libllvm10
|
2020-07-03 09:04:20 +01:00
|
|
|
"
|
|
|
|
fi
|
|
|
|
|
2020-08-27 20:18:17 +01:00
|
|
|
if [ -n "$INCLUDE_PIGLIT" ]; then
|
2021-02-12 21:34:44 +00:00
|
|
|
PIGLIT_PACKAGES="libpython3.7
|
|
|
|
libwaffle-1-0
|
|
|
|
libx11-6
|
|
|
|
libx11-xcb1
|
|
|
|
libxcb-glx0
|
|
|
|
libxcb-shm0
|
|
|
|
libxdamage1
|
|
|
|
libxext6
|
|
|
|
libxfixes3
|
2020-08-27 20:18:17 +01:00
|
|
|
libxkbcommon0
|
2021-02-12 21:34:44 +00:00
|
|
|
libxxf86vm1
|
|
|
|
python3
|
2020-08-27 20:18:17 +01:00
|
|
|
python3-lxml
|
|
|
|
python3-mako
|
|
|
|
python3-numpy
|
2021-02-03 21:35:29 +00:00
|
|
|
python3-packaging
|
2021-02-12 21:34:44 +00:00
|
|
|
python3-pil
|
|
|
|
python3-requests
|
2020-08-27 20:18:17 +01:00
|
|
|
python3-simplejson
|
2021-02-12 21:34:44 +00:00
|
|
|
python3-yaml
|
2020-08-27 20:18:17 +01:00
|
|
|
"
|
|
|
|
INSTALL_CI_FAIRY_PACKAGES="git
|
|
|
|
python3-dev
|
|
|
|
python3-pip
|
|
|
|
python3-setuptools
|
|
|
|
python3-wheel
|
|
|
|
"
|
|
|
|
fi
|
|
|
|
|
2019-12-17 10:50:14 +00:00
|
|
|
apt-get -y install --no-install-recommends \
|
2020-11-11 16:15:25 +00:00
|
|
|
$ARCH_PACKAGES \
|
2020-08-27 20:18:17 +01:00
|
|
|
$CI_FAIRY_PACKAGES \
|
|
|
|
$INSTALL_CI_FAIRY_PACKAGES \
|
|
|
|
$PIGLIT_PACKAGES \
|
|
|
|
$VK_CTS_PACKAGES \
|
2020-03-03 22:38:09 +00:00
|
|
|
ca-certificates \
|
2020-06-10 13:44:17 +01:00
|
|
|
curl \
|
2019-12-17 10:50:14 +00:00
|
|
|
initramfs-tools \
|
2020-12-15 23:47:51 +00:00
|
|
|
libasan5 \
|
2020-11-11 16:15:25 +00:00
|
|
|
libexpat1 \
|
2019-12-17 10:50:14 +00:00
|
|
|
libpng16-16 \
|
|
|
|
libsensors5 \
|
2021-02-09 17:28:17 +00:00
|
|
|
libvulkan1 \
|
2020-10-17 13:00:45 +01:00
|
|
|
libxcb-dri2-0 \
|
|
|
|
libxcb-dri3-0 \
|
|
|
|
libxcb-present0 \
|
|
|
|
libxcb-randr0 \
|
|
|
|
libxcb-sync1 \
|
|
|
|
libxcb-xfixes0 \
|
|
|
|
libxshmfence1 \
|
2020-05-01 17:57:00 +01:00
|
|
|
netcat-openbsd \
|
2020-07-31 05:51:47 +01:00
|
|
|
sntp \
|
2020-11-11 16:15:25 +00:00
|
|
|
strace \
|
ci: Include db410c support in the ARM container.
I'm working on moving the db410c CI from docker to LAVA, which means we
get to boot a custom kernel. To do that, we need to enable ARCH_QCOM in
the kernel, save the dtb around, and include abootimg in our container so
that we can generate combined kernel/dtb/ramdisk images for fastboot.
LAVA's fastboot support is unable to pack the overlay into an abootimg
image, just a cpio rootfs. We could flash the cpio rootfs after overlay
addition, but that takes 2 minutes to do, and causes wear on the devices.
Instead, we'll bring up the network at boot and use wget to fetch the
overlay. We'll want network support anyway, so that we can transfer the
failure xmls back to the gitlab job's artifacts at some point.
Since the msm GPU and realtek network firmware increase our payload by
3MB, add in firmware compression so that it doesn't waste as much RAM on
devices not using it.
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3928>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3928>
2020-01-28 20:02:39 +00:00
|
|
|
wget \
|
2021-01-21 23:59:47 +00:00
|
|
|
xinit \
|
|
|
|
xserver-xorg-core \
|
ci: Include db410c support in the ARM container.
I'm working on moving the db410c CI from docker to LAVA, which means we
get to boot a custom kernel. To do that, we need to enable ARCH_QCOM in
the kernel, save the dtb around, and include abootimg in our container so
that we can generate combined kernel/dtb/ramdisk images for fastboot.
LAVA's fastboot support is unable to pack the overlay into an abootimg
image, just a cpio rootfs. We could flash the cpio rootfs after overlay
addition, but that takes 2 minutes to do, and causes wear on the devices.
Instead, we'll bring up the network at boot and use wget to fetch the
overlay. We'll want network support anyway, so that we can transfer the
failure xmls back to the gitlab job's artifacts at some point.
Since the msm GPU and realtek network firmware increase our payload by
3MB, add in firmware compression so that it doesn't waste as much RAM on
devices not using it.
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3928>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3928>
2020-01-28 20:02:39 +00:00
|
|
|
xz-utils
|
2020-05-28 20:50:51 +01:00
|
|
|
|
2020-08-27 20:18:17 +01:00
|
|
|
if [ -n "$INCLUDE_PIGLIT" ]; then
|
|
|
|
# Needed for ci-fairy, this revision is able to upload files to
|
|
|
|
# MinIO and doesn't depend on git
|
|
|
|
pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates@0f1abc24c043e63894085a6bd12f14263e8b29eb
|
|
|
|
|
|
|
|
apt-get purge -y \
|
|
|
|
$INSTALL_CI_FAIRY_PACKAGES
|
2020-05-28 20:50:51 +01:00
|
|
|
fi
|
|
|
|
|
2019-04-29 17:33:22 +01:00
|
|
|
passwd root -d
|
|
|
|
chsh -s /bin/sh
|
2020-02-19 18:22:02 +00:00
|
|
|
|
|
|
|
cat > /init <<EOF
|
|
|
|
#!/bin/sh
|
|
|
|
export PS1=lava-shell:
|
|
|
|
exec sh
|
|
|
|
EOF
|
|
|
|
chmod +x /init
|
2019-04-29 17:33:22 +01:00
|
|
|
|
2020-07-09 21:38:51 +01:00
|
|
|
mkdir -p /lib/firmware/rtl_nic
|
|
|
|
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/rtl_nic/rtl8153a-3.fw -O /lib/firmware/rtl_nic/rtl8153a-3.fw
|
|
|
|
|
2019-04-29 17:33:22 +01:00
|
|
|
#######################################################################
|
|
|
|
# Strip the image to a small minimal system without removing the debian
|
|
|
|
# toolchain.
|
|
|
|
|
2020-07-09 21:38:51 +01:00
|
|
|
# xz compress firmware so it doesn't waste RAM at runtime. Except db820c's
|
|
|
|
# GPU firmware, due to using a precompiled kernel without compression support.
|
2020-03-03 22:38:09 +00:00
|
|
|
find /lib/firmware -type f -print0 | \
|
2020-07-09 21:38:51 +01:00
|
|
|
grep -vz a530 | \
|
2020-03-03 22:38:09 +00:00
|
|
|
xargs -0r -P4 -n4 xz -T1 -C crc32
|
2020-07-09 21:38:51 +01:00
|
|
|
ln -s /lib/firmware/qcom/a530* /lib/firmware/
|
ci: Include db410c support in the ARM container.
I'm working on moving the db410c CI from docker to LAVA, which means we
get to boot a custom kernel. To do that, we need to enable ARCH_QCOM in
the kernel, save the dtb around, and include abootimg in our container so
that we can generate combined kernel/dtb/ramdisk images for fastboot.
LAVA's fastboot support is unable to pack the overlay into an abootimg
image, just a cpio rootfs. We could flash the cpio rootfs after overlay
addition, but that takes 2 minutes to do, and causes wear on the devices.
Instead, we'll bring up the network at boot and use wget to fetch the
overlay. We'll want network support anyway, so that we can transfer the
failure xmls back to the gitlab job's artifacts at some point.
Since the msm GPU and realtek network firmware increase our payload by
3MB, add in firmware compression so that it doesn't waste as much RAM on
devices not using it.
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3928>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3928>
2020-01-28 20:02:39 +00:00
|
|
|
|
2019-04-29 17:33:22 +01:00
|
|
|
# Copy timezone file and remove tzdata package
|
|
|
|
rm -rf /etc/localtime
|
|
|
|
cp /usr/share/zoneinfo/Etc/UTC /etc/localtime
|
|
|
|
|
2019-08-15 09:41:21 +01:00
|
|
|
UNNEEDED_PACKAGES="libfdisk1
|
|
|
|
tzdata
|
2020-07-03 09:04:20 +01:00
|
|
|
diffutils
|
|
|
|
gnupg"
|
2019-04-29 17:33:22 +01:00
|
|
|
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
|
|
|
|
# Removing unused packages
|
|
|
|
for PACKAGE in ${UNNEEDED_PACKAGES}
|
|
|
|
do
|
|
|
|
echo ${PACKAGE}
|
|
|
|
if ! apt-get remove --purge --yes "${PACKAGE}"
|
|
|
|
then
|
|
|
|
echo "WARNING: ${PACKAGE} isn't installed"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
apt-get autoremove --yes || true
|
|
|
|
|
|
|
|
# Dropping logs
|
|
|
|
rm -rf /var/log/*
|
|
|
|
|
|
|
|
# Dropping documentation, localization, i18n files, etc
|
|
|
|
rm -rf /usr/share/doc/*
|
|
|
|
rm -rf /usr/share/locale/*
|
2020-01-28 14:19:53 +00:00
|
|
|
rm -rf /usr/share/X11/locale/*
|
2019-04-29 17:33:22 +01:00
|
|
|
rm -rf /usr/share/man
|
|
|
|
rm -rf /usr/share/i18n/*
|
|
|
|
rm -rf /usr/share/info/*
|
|
|
|
rm -rf /usr/share/lintian/*
|
|
|
|
rm -rf /usr/share/common-licenses/*
|
|
|
|
rm -rf /usr/share/mime/*
|
|
|
|
|
|
|
|
# Dropping reportbug scripts
|
|
|
|
rm -rf /usr/share/bug
|
|
|
|
|
|
|
|
# Drop udev hwdb not required on a stripped system
|
|
|
|
rm -rf /lib/udev/hwdb.bin /lib/udev/hwdb.d/*
|
|
|
|
|
|
|
|
# Drop all gconv conversions && binaries
|
|
|
|
rm -rf usr/bin/iconv
|
|
|
|
rm -rf usr/sbin/iconvconfig
|
|
|
|
rm -rf usr/lib/*/gconv/
|
|
|
|
|
|
|
|
# Remove libusb database
|
|
|
|
rm -rf usr/sbin/update-usbids
|
|
|
|
rm -rf var/lib/usbutils/usb.ids
|
|
|
|
rm -rf usr/share/misc/usb.ids
|
|
|
|
|
|
|
|
#######################################################################
|
|
|
|
# Crush into a minimal production image to be deployed via some type of image
|
|
|
|
# updating system.
|
|
|
|
# IMPORTANT: The Debian system is not longer functional at this point,
|
|
|
|
# for example, apt and dpkg will stop working
|
|
|
|
|
2020-05-14 00:58:26 +01:00
|
|
|
UNNEEDED_PACKAGES="apt libapt-pkg6.0 "\
|
|
|
|
"ncurses-bin ncurses-base libncursesw6 libncurses6 "\
|
2019-04-29 17:33:22 +01:00
|
|
|
"perl-base "\
|
|
|
|
"debconf libdebconfclient0 "\
|
|
|
|
"e2fsprogs e2fslibs libfdisk1 "\
|
|
|
|
"insserv "\
|
|
|
|
"udev "\
|
|
|
|
"init-system-helpers "\
|
|
|
|
"bash "\
|
|
|
|
"cpio "\
|
ci: Include db410c support in the ARM container.
I'm working on moving the db410c CI from docker to LAVA, which means we
get to boot a custom kernel. To do that, we need to enable ARCH_QCOM in
the kernel, save the dtb around, and include abootimg in our container so
that we can generate combined kernel/dtb/ramdisk images for fastboot.
LAVA's fastboot support is unable to pack the overlay into an abootimg
image, just a cpio rootfs. We could flash the cpio rootfs after overlay
addition, but that takes 2 minutes to do, and causes wear on the devices.
Instead, we'll bring up the network at boot and use wget to fetch the
overlay. We'll want network support anyway, so that we can transfer the
failure xmls back to the gitlab job's artifacts at some point.
Since the msm GPU and realtek network firmware increase our payload by
3MB, add in firmware compression so that it doesn't waste as much RAM on
devices not using it.
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3928>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3928>
2020-01-28 20:02:39 +00:00
|
|
|
"xz-utils "\
|
2019-04-29 17:33:22 +01:00
|
|
|
"passwd "\
|
|
|
|
"libsemanage1 libsemanage-common "\
|
|
|
|
"libsepol1 "\
|
|
|
|
"gpgv "\
|
|
|
|
"hostname "\
|
|
|
|
"adduser "\
|
|
|
|
"debian-archive-keyring "\
|
2020-01-28 14:19:53 +00:00
|
|
|
"libegl1-mesa-dev "\
|
|
|
|
"libegl-mesa0 "\
|
|
|
|
"libgl1-mesa-dev "\
|
|
|
|
"libgl1-mesa-dri "\
|
|
|
|
"libglapi-mesa "\
|
|
|
|
"libgles2-mesa-dev "\
|
|
|
|
"libglx-mesa0 "\
|
|
|
|
"mesa-common-dev "\
|
|
|
|
"libz3-4 "\
|
2019-04-29 17:33:22 +01:00
|
|
|
|
|
|
|
# Removing unneeded packages
|
|
|
|
for PACKAGE in ${UNNEEDED_PACKAGES}
|
|
|
|
do
|
|
|
|
echo "Forcing removal of ${PACKAGE}"
|
|
|
|
if ! dpkg --purge --force-remove-essential --force-depends "${PACKAGE}"
|
|
|
|
then
|
|
|
|
echo "WARNING: ${PACKAGE} isn't installed"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
# Show what's left package-wise before dropping dpkg itself
|
|
|
|
COLUMNS=300 dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n
|
|
|
|
|
|
|
|
# Drop dpkg
|
|
|
|
dpkg --purge --force-remove-essential --force-depends dpkg
|
|
|
|
|
|
|
|
# No apt or dpkg, no need for its configuration archives
|
|
|
|
rm -rf etc/apt
|
|
|
|
rm -rf etc/dpkg
|
|
|
|
|
|
|
|
# Drop directories not part of ostree
|
|
|
|
# Note that /var needs to exist as ostree bind mounts the deployment /var over
|
|
|
|
# it
|
|
|
|
rm -rf var/* opt srv share
|
|
|
|
|
|
|
|
# ca-certificates are in /etc drop the source
|
|
|
|
rm -rf usr/share/ca-certificates
|
|
|
|
|
|
|
|
# No bash, no need for completions
|
|
|
|
rm -rf usr/share/bash-completion
|
|
|
|
|
|
|
|
# No zsh, no need for comletions
|
|
|
|
rm -rf usr/share/zsh/vendor-completions
|
|
|
|
|
|
|
|
# drop gcc-6 python helpers
|
|
|
|
rm -rf usr/share/gcc-6
|
|
|
|
|
|
|
|
# Drop sysvinit leftovers
|
|
|
|
rm -rf etc/init.d
|
|
|
|
rm -rf etc/rc[0-6S].d
|
|
|
|
|
|
|
|
# Drop upstart helpers
|
|
|
|
rm -rf etc/init
|
|
|
|
|
|
|
|
# Various xtables helpers
|
|
|
|
rm -rf usr/lib/xtables
|
|
|
|
|
|
|
|
# Drop all locales
|
|
|
|
# TODO: only remaining locale is actually "C". Should we really remove it?
|
|
|
|
rm -rf usr/lib/locale/*
|
|
|
|
|
|
|
|
# partition helpers
|
2020-05-13 22:36:36 +01:00
|
|
|
rm -rf usr/sbin/*fdisk
|
2019-04-29 17:33:22 +01:00
|
|
|
|
|
|
|
# local compiler
|
2020-05-13 22:36:36 +01:00
|
|
|
rm -rf usr/bin/localedef
|
2019-04-29 17:33:22 +01:00
|
|
|
|
|
|
|
# Systemd dns resolver
|
|
|
|
find usr etc -name '*systemd-resolve*' -prune -exec rm -r {} \;
|
|
|
|
|
|
|
|
# Systemd network configuration
|
|
|
|
find usr etc -name '*networkd*' -prune -exec rm -r {} \;
|
|
|
|
|
|
|
|
# systemd ntp client
|
|
|
|
find usr etc -name '*timesyncd*' -prune -exec rm -r {} \;
|
|
|
|
|
|
|
|
# systemd hw database manager
|
|
|
|
find usr etc -name '*systemd-hwdb*' -prune -exec rm -r {} \;
|
|
|
|
|
|
|
|
# No need for fuse
|
|
|
|
find usr etc -name '*fuse*' -prune -exec rm -r {} \;
|
|
|
|
|
|
|
|
# lsb init function leftovers
|
|
|
|
rm -rf usr/lib/lsb
|
|
|
|
|
|
|
|
# Only needed when adding libraries
|
2020-05-13 22:36:36 +01:00
|
|
|
rm -rf usr/sbin/ldconfig*
|
2019-04-29 17:33:22 +01:00
|
|
|
|
|
|
|
# Games, unused
|
|
|
|
rmdir usr/games
|
|
|
|
|
|
|
|
# Remove pam module to authenticate against a DB
|
|
|
|
# plus libdb-5.3.so that is only used by this pam module
|
2020-05-13 22:36:36 +01:00
|
|
|
rm -rf usr/lib/*/security/pam_userdb.so
|
|
|
|
rm -rf usr/lib/*/libdb-5.3.so
|
2019-04-29 17:33:22 +01:00
|
|
|
|
|
|
|
# remove NSS support for nis, nisplus and hesiod
|
2020-05-13 22:36:36 +01:00
|
|
|
rm -rf usr/lib/*/libnss_hesiod*
|
|
|
|
rm -rf usr/lib/*/libnss_nis*
|