ubuntu2404-test-system-setup-base.sh (5675B)
1 #!/usr/bin/env bash 2 3 set -ve 4 5 test "$(whoami)" == 'root' 6 7 # We do want to install recommended packages. 8 sed -i /APT::Install-Recommends/d /etc/apt/apt.conf.d/99taskcluster 9 10 # To speed up docker image build times as well as number of network/disk I/O 11 # build a list of packages to be installed and call it in one go. 12 apt_packages=() 13 14 ARCH="${1:-amd64}" 15 16 if [[ "$ARCH" == "amd64" ]]; then 17 apt_packages+=('g++-multilib') 18 apt_packages+=('gcc-multilib') 19 fi 20 21 apt_packages+=('bluez-cups') 22 apt_packages+=('build-essential') 23 apt_packages+=('ca-certificates') 24 apt_packages+=('ccache') 25 apt_packages+=('curl') 26 apt_packages+=('dbus-x11') 27 apt_packages+=('fontconfig') 28 apt_packages+=('fonts-dejavu') 29 apt_packages+=('fonts-kacst') 30 apt_packages+=('fonts-kacst-one') 31 apt_packages+=('fonts-liberation') 32 apt_packages+=('fonts-stix') 33 apt_packages+=('fonts-unfonts-core') 34 apt_packages+=('fonts-unfonts-extra') 35 apt_packages+=('fonts-vlgothic') 36 apt_packages+=('gir1.2-gnomebluetooth-3.0') 37 apt_packages+=('gnome-icon-theme') 38 apt_packages+=('gnome-keyring') 39 apt_packages+=('gstreamer1.0-gtk3') 40 apt_packages+=('gstreamer1.0-plugins-base') 41 apt_packages+=('gstreamer1.0-plugins-good') 42 apt_packages+=('gstreamer1.0-tools') 43 apt_packages+=('gstreamer1.0-pulseaudio') 44 apt_packages+=('language-pack-en-base') 45 apt_packages+=('libc6-dbg') 46 apt_packages+=('libasound2-dev') 47 apt_packages+=('libavcodec-extra60') 48 apt_packages+=('libcanberra-gtk3-module') 49 apt_packages+=('libcanberra-pulse') 50 apt_packages+=('libcurl4-openssl-dev') 51 apt_packages+=('libdbus-1-dev') 52 apt_packages+=('libfreetype6') 53 apt_packages+=('libgstreamer-plugins-base1.0-dev') 54 apt_packages+=('libgstreamer1.0-dev') 55 apt_packages+=('libgtk-3-0t64') 56 apt_packages+=('libiw-dev') 57 apt_packages+=('libx11-xcb1') 58 apt_packages+=('libxcb1') 59 apt_packages+=('libxcb-render0') 60 apt_packages+=('libxcb-shm0') 61 apt_packages+=('libxcb-glx0') 62 apt_packages+=('libxcb-shape0') 63 apt_packages+=('libnotify-dev') 64 apt_packages+=('libpulse0') 65 apt_packages+=('libpulse-dev') 66 apt_packages+=('libxt-dev') 67 apt_packages+=('libxxf86vm1') 68 apt_packages+=('llvm') 69 apt_packages+=('llvm-dev') 70 apt_packages+=('llvm-runtime') 71 apt_packages+=('mesa-common-dev') 72 apt_packages+=('net-tools') 73 apt_packages+=('pulseaudio-utils') 74 apt_packages+=('python3-pip') 75 apt_packages+=('python3-pyatspi') 76 apt_packages+=('qemu-system-x86') 77 apt_packages+=('rlwrap') 78 apt_packages+=('screen') 79 apt_packages+=('software-properties-common') 80 apt_packages+=('sudo') 81 apt_packages+=('ubuntu-desktop') 82 apt_packages+=('unzip') 83 apt_packages+=('uuid') 84 apt_packages+=('wget') 85 apt_packages+=('xvfb') 86 apt_packages+=('xwit') 87 apt_packages+=('yasm') 88 apt_packages+=('zip') 89 90 # Bug 1232407 - this allows the user to start vnc 91 apt_packages+=('x11vnc') 92 93 # Bug 1176031 - need `xset` to disable screensavers 94 apt_packages+=('x11-xserver-utils') 95 96 # Build a list of packages to install from the multiverse repo. 97 apt_packages+=('ubuntu-restricted-extras') 98 99 # APT update takes very long on Ubuntu. Run it at the last possible minute. 100 apt-get update 101 102 # Also force the cleanup after installation of packages to reduce image size. 103 apt-get install --allow-downgrades "${apt_packages[@]}" 104 105 # libgallium debug symbols 106 wget -O /tmp/mesa-libgallium-dbgsym.ddeb "https://launchpad.net/ubuntu/+archive/primary/+files/mesa-libgallium-dbgsym_24.2.8-1ubuntu1~24.04.1_$ARCH.ddeb" 107 dpkg -i /tmp/mesa-libgallium-dbgsym.ddeb 108 109 # gsd-power can't start without logind, but it's marked as required in the 110 # gnome-session config; remove it so the session doesn't start with the fail 111 # whale 112 sed -i 's/org.gnome.SettingsDaemon.Power;//' /usr/share/gnome-session/sessions/ubuntu.session 113 114 if [[ "$ARCH" == "amd64" ]]; then 115 # Enable i386 packages 116 dpkg --add-architecture i386 117 apt-get update 118 119 # Make sure we have libraries for 32-bit tests 120 apt_packages=() 121 apt_packages+=('libavcodec-extra60:i386') 122 apt_packages+=('libpulse0:i386') 123 apt_packages+=('libxt6t64:i386') 124 apt_packages+=('libxtst6:i386') 125 apt_packages+=('libsecret-1-0:i386') 126 apt_packages+=('libgtk-3-0t64:i386') 127 apt_packages+=('libx11-xcb1:i386') 128 apt_packages+=('libxcb1:i386') 129 apt_packages+=('libasound2t64:i386') 130 apt_packages+=('libnotify4:i386') 131 132 apt-get install --allow-downgrades "${apt_packages[@]}" 133 fi 134 135 rm -rf /var/lib/apt/lists/* 136 137 # enable audiotestsrc plugin in pipewire config 138 # used by gecko media tests to create dummy sound sources 139 install -d -o root -g root -m 755 /etc/pipewire 140 sed -e '/^context.spa-libs = {/,/^}$/ s/#\(audiotestsrc\)/\1/' /usr/share/pipewire/pipewire.conf > /etc/pipewire/pipewire.conf 141 142 # Build a list of packages to purge from the image. 143 apt_packages=() 144 apt_packages+=('gnome-calendar') 145 apt_packages+=('gnome-initial-setup') 146 apt_packages+=('libx11-doc') 147 apt_packages+=('manpages-dev') 148 apt_packages+=('orca') 149 apt_packages+=('rhythmbox') 150 apt_packages+=('thunderbird') 151 apt_packages+=('ubuntu-release-upgrader*') 152 apt_packages+=('update-manager-core') 153 apt_packages+=('update-manager') 154 apt_packages+=('yelp') 155 156 # Purge unnecessary packages 157 apt-get purge "${apt_packages[@]}" 158 159 # We don't need no docs! 160 rm -rf /usr/share/help /usr/share/doc /usr/share/man 161 162 # Remove all locale files other than en_US.UTF-8 163 rm -rf /usr/share/locale/ /usr/share/locale-langpack/ /usr/share/locales/ 164 165 # Remove systemd tmpfiles that confuse gnome-shell into thinking it should talk to logind 166 rm -rf /run/systemd/seats 167 168 # Further cleanup 169 apt-get autoremove --purge 170 171 # Overwrite Ubuntu's Yaru theme with GTK's default (Adwaita), for consistency 172 cat > /etc/gtk-3.0/settings.ini <<EOF 173 [Settings] 174 gtk-theme-name = Adwaita 175 gtk-icon-theme-name = Yaru 176 gtk-sound-theme-name = Yaru 177 gtk-icon-sizes = panel-menu-bar=24,24 178 EOF 179 180 rm -f "$0"