← Back to issue list

craft_parts.packages.deb.Ubuntu wants gcc, but it is not installable (Depends: binutils)

View original Github issue

Metadata

Project
snapcraft
Number
#6479
Type
issue
State
open
Author
nteodosio
Labels
Status: Triaged Type: Bug
Created
Updated
Closed
—

Current evaluation

⚠️ This summary may be outdated — the issue content or evaluation prompts have changed since this evaluation was made.

Cross-compiling Firefox amd64->arm64 in destructive Docker fails installing build-packages: plugin-injected gcc/make leads to gcc-13 Depends binutils not installable. No maintainer triage yet.

Suggested action: needs triage

Reason: The issue has no labels, comments, or maintainer acknowledgement, and the reproducer requires Mozilla CI permissions plus a large project-specific snapcraft.yaml. The root cause is not yet isolated: it may be an apt repository/architecture configuration problem rather than a snapcraft defect.

Evaluated by: mr-cal-bot

Impact: 45 Quick Win: 6 Complexity: 65 Confidence: 50 Actionability: 35

Issue body

### Check existing issues - [x] I've verified that this bug isn't described by any existing issues. ### Bug description When installing the packages specified in the part's build-packages, snapcraft will fail: ``` The following packages have unmet dependencies: gcc-13 : Depends: binutils (>= 2.39) but it is not installable E: Unable to correct problems, you have held broken packages. Cannot install all requested build packages: clang-19:arm64, cmake, coreutils, curl, file, gcc, git, gpg, jq, libasound2-dev:arm64, libc++-19-dev-wasm32, libc++abi-19-dev-wasm32, libc++abi-19-dev:arm64, libclang-rt-19-dev-wasm32, libclang-rt-19-dev:arm64, libpython3-dev:arm64, libstdc++-11-dev-arm64-cross, libx11-dev:arm64, lld-19:arm64, llvm-19:arm64, m4, make, mercurial, nasm, nodejs:arm64, python3, python3-lxml, python3-virtualenv, python3-yaml, quilt, sed, sudo, unzip, wasi-libc:arm64, wget, xvfb, zip ``` Now, I never specified GCC-13 in the part. Looking some lines above, one can see ``` get repository attribute: attr=get_packages_for_source_type, repository:<class 'craft_parts.packages.deb.Ubuntu'> plugin build packages: {'gcc', 'make'} ``` This seems to be a "hidden" part responsible for the `build-packages:` list. An important factor is that this happens when cross-compiling Firefox in destructive mode in Docker. ### Steps to reproduce This is complicated as it has to be reproduced in Mozilla's CI. Clone Firefox' source and `./mach try fuzzy --full -q "'snap"` (one needs to have permissions to run it). ### Environment Cross-compiling (amd64->arm64) Firefox in destructive mode in Docker. ### snapcraft.yaml ```yaml # Copyright (C) 2021 Canonical Ltd. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License version 3, as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. name: firefox version: "159.0a1" summary: Mozilla Firefox web browser description: Firefox is a powerful, extensible web browser with support for modern web application technologies. confinement: strict grade: stable base: core24 compression: lzo # This requires snapcraft version including # https://github.com/canonical/snapcraft/pull/5233 # Launchpad is not able to handle those for the moment, so it is commented by # default but users can uncomment ##CROSS-COMPILATION##platforms: ##CROSS-COMPILATION## native: ##CROSS-COMPILATION## build-on: [amd64] ##CROSS-COMPILATION## build-for: [amd64] ##CROSS-COMPILATION## cross-arm64: ##CROSS-COMPILATION## build-on: [amd64, arm64] ##CROSS-COMPILATION## build-for: [arm64] package-repositories: - type: apt architectures: [arm64] components: [main, multiverse, universe] suites: [noble, noble-updates, noble-security, noble-backports] key-id: F6ECB3762474EDA9D21B7022871920D1991BC93C url: http://ports.ubuntu.com/ assumes: - snapd2.54 # for mount-control apps: firefox: command: firefox.launcher desktop: firefox.desktop extensions: [gnome] environment: # See below and also the 'snap/hooks/post-refresh' file for # more details about our hunspell setup. DICPATH: "$SNAP_COMMON/snap-hunspell" GTK_USE_PORTAL: 1 HOME: "$SNAP_USER_COMMON" PIPEWIRE_CONFIG_NAME: client.conf SPEECHD_ADDRESS: "unix_socket:/run/user/$SNAP_UID/speech-dispatcher/speechd.sock" MOZ_DBUS_APP_NAME: "firefox_nightly" MOZ_APP_REMOTINGNAME: "firefox_firefox" MOZ_LEGACY_HOME: 1 slots: - dbus-daemon - mpris plugs: - alsa - audio-playback - audio-record - avahi-observe - browser-sandbox - camera - cups-control - gsettings - hardware-observe - home-read-all - host-hunspell - host-usr-share-hunspell - joystick - kerberos-tickets - login-session-observe - network - network-observe - opengl - password-manager-service - pcscd - removable-media - screen-inhibit-control - system-packages-doc - timezone-control - u2f-devices - unity7 - upower-observe geckodriver: command: usr/lib/firefox/geckodriver extensions: [gnome] plugs: - network-bind # + all the plugs required by firefox, so that when geckodriver # executes firefox it inherits the correct set of permissions - audio-playback - audio-record - avahi-observe - browser-sandbox - camera - cups-control - gsettings - hardware-observe - home-read-all - host-hunspell - host-usr-share-hunspell - joystick - kerberos-tickets - login-session-observe - network - network-observe - opengl - password-manager-service - pcscd - removable-media - screen-inhibit-control - system-packages-doc - timezone-control - u2f-devices - unity7 - upower-observe slots: - dbus-daemon - mpris plugs: browser-sandbox: interface: browser-support allow-sandbox: true dot-mozilla-firefox: interface: personal-files read: [$HOME/.mozilla/firefox] etc-firefox: interface: system-files read: [/etc/firefox] host-hunspell: interface: mount-control mount: - what: /usr/share/hunspell where: $SNAP_COMMON/host-hunspell persistent: true options: [ro, bind, noatime, noexec] host-usr-share-hunspell: interface: system-files read: - /var/lib/snapd/hostfs/usr/share/hunspell home-read-all: interface: home read: all layout: /usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/opensc-pkcs11.so: bind-file: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/opensc-pkcs11.so parts: dump-syms: plugin: nil build-packages: - curl - git - jq - python3-yaml override-pull: | apt remove -y gcc || : if [ $CRAFT_ARCH_TRIPLET_BUILD_FOR = arm64 ]; then apt install -y rustc-1.91:arm64 cargo-1.91:arm64 gcc-13:arm64 else apt install -y cargo-1.91 rustc-1.91 gcc-13 fi ROOT=https://ftp.mozilla.org/pub/firefox/nightly/latest-mozilla-central REVISION=$(wget -O - $ROOT/firefox-$(craftctl get version).en-US.linux-x86_64.txt | tail -1 | sed -n "s#^.*\/rev/\(.*\)\$#\1#p") FETCHES=https://hg.mozilla.org/mozilla-central/raw-file/${REVISION}/taskcluster/kinds/fetch/toolchains.yml TOOLCHAINS=$(curl -sSL "${FETCHES}") unset PYTHONPATH REPO=$(echo "${TOOLCHAINS}" | /usr/bin/python3 -c 'import yaml, sys; fetches = yaml.safe_load(sys.stdin); print("{}".format(fetches["dump-syms"]["fetch"]["repo"]))') SHA1=$(echo "${TOOLCHAINS}" | /usr/bin/python3 -c 'import yaml, sys; fetches = yaml.safe_load(sys.stdin); print("{}".format(fetches["dump-syms"]["fetch"]["revision"]))') git clone "${REPO}" . && git checkout "${SHA1}" override-build: | craftctl default cargo-1.91 build --release mkdir -p $CRAFT_STAGE/usr/bin/ cp target/release/dump_syms $CRAFT_STAGE/usr/bin/ # This is a temporary workaround to including the hunspell content # snap, which would cause breakage in the Ubuntu desktop image build # because of the Ubuntu policy. See: # https://bugzilla.mozilla.org/show_bug.cgi?id=1792006 # # The definition of this part is essentially a copy of the # corresponding part in hunspell-dictionaries-1-7-2004 by # Buo-ren, Lin. hunspell: plugin: nil override-build: | craftctl default set -eu apt download $(apt-cache search '^hunspell-.*$' | awk '!/myspell|dbgsym|tools|transitional|dependency/{printf "%s ", $1}') find . -name "*.deb" -exec dpkg-deb -x {} "$CRAFT_PART_INSTALL" \; prime: - usr/share/hunspell mozconfig: plugin: nil # This should be 'pull' step so that firefox.pull step can add more # configure flags to mozconfig ; if it's stage then firefox.pull will put # content that we will overwrite here override-pull: | cp $CRAFT_PROJECT_DIR/mozconfig.in $CRAFT_STAGE/mozconfig override-prime: '' # Launchpad builders have a timeout for how long they are allowed to access # the internet (through a proxy) starting from the start of the build. # Since the firefox part takes a long time to build, we need to ensure # that all other parts that need to access the internet (to e.g. fetch build # or stage packages) are built before it (before the proxy authentication is # revoked). firefox: plugin: nil after: - apikeys - distribution - dump-syms - kerberos - ffmpeg - firefox-langpacks - hunspell - mozconfig build-packages: - libc++-19-dev-wasm32 - libc++abi-19-dev-wasm32 - libclang-rt-19-dev-wasm32 - sudo # For Mozilla's docker build - on amd64: - to amd64: - libasound2-dev - libpython3-dev - libclang-rt-19-dev - libc++abi-19-dev - libx11-dev - clang-19 - llvm-19 - lld-19 - nodejs - wasi-libc - to arm64: - libstdc++-11-dev-arm64-cross - libasound2-dev:arm64 - libpython3-dev:arm64 - libclang-rt-19-dev:arm64 - libc++abi-19-dev:arm64 - libx11-dev:arm64 - clang-19:arm64 - llvm-19:arm64 - lld-19:arm64 - nodejs:arm64 - wasi-libc:arm64 - else: - libasound2-dev - libpython3-dev - libclang-rt-19-dev - libc++abi-19-dev - libx11-dev - clang-19 - llvm-19 - lld-19 - nodejs - wasi-libc - cmake - coreutils - file - git - m4 - make - mercurial - nasm - quilt - sed - unzip - wget - xvfb - zip override-pull: | craftctl default REPO=https://hg.mozilla.org/mozilla-central ROOT=https://ftp.mozilla.org/pub/firefox/nightly/latest-mozilla-central REVISION=$(wget -O - $ROOT/firefox-$(craftctl get version).en-US.linux-x86_64.txt | tail -1 | sed -n "s#^$REPO/rev/\(.*\)\$#\1#p") hg clone --stream $REPO -u $REVISION . rm -rf .hg mkdir -p $CRAFT_STAGE/debug-symbols cp toolkit/crashreporter/tools/upload_symbols.py $CRAFT_STAGE/debug-symbols/ # Apply patches before the build, so a failed build can be # easily rerun. QUILT_PATCHES=$CRAFT_PROJECT_DIR/patches quilt push -a BUILD_DBGSYMS=true export MOZCONFIG="$CRAFT_STAGE/mozconfig" echo "export MOZ_SOURCE_REPO=${REPO}" >> $MOZCONFIG echo "export MOZ_SOURCE_CHANGESET=${REVISION}" >> $MOZCONFIG if [ $BUILD_DBGSYMS = "true" ]; then echo "ac_add_options --enable-debug-symbols" >> $MOZCONFIG else echo "ac_add_options --disable-debug-symbols" >> $MOZCONFIG fi if [ $CRAFT_ARCH_BUILD_FOR = "amd64" ]; then # Enable LTO and PGO (https://firefox-source-docs.mozilla.org/build/buildsystem/pgo.html) only on amd64 for now. # Running PGO on arm64 takes forever (> 4 days in the Launchpad build environment!). echo "ac_add_options --enable-linker=lld" >> $MOZCONFIG echo "ac_add_options MOZ_PGO=1" >> $MOZCONFIG fi echo "ac_add_options --enable-rust-simd" >> $MOZCONFIG echo "ac_add_options --prefix=$CRAFT_PART_INSTALL/usr" >> $MOZCONFIG if [ $CRAFT_ARCH_BUILD_ON != $CRAFT_ARCH_BUILD_FOR ]; then if [ $CRAFT_ARCH_BUILD_FOR = "arm64" ]; then echo "ac_add_options --target=aarch64-linux-gnu" >> $MOZCONFIG echo "ac_add_options --enable-linker=lld" >> $MOZCONFIG fi fi override-build: | craftctl default unvBinDir=$CRAFT_PART_BUILD/unversioned-binaries export PATH=$PATH:$unvBinDir mkdir -p "$unvBinDir" for o in /usr/bin/llvm-*-19 \ /usr/bin/lld-19 \ /usr/bin/lld-link-19 \ /usr/bin/ld.lld-19 \ /usr/bin/wasm-ld-19 \ /usr/bin/lld-19 \ /usr/bin/clang-19 \ /usr/bin/clang++-19 \ ; do b=$(basename "$o") ln -sf "$o" "$unvBinDir/${b%-19}" done rustv=1.91 ln -sf "/usr/bin/rustc-${rustv}" "$unvBinDir/rustc" ln -sf "/usr/bin/rust-${rustv}-clang" "$unvBinDir/rust-clang" ln -sf "/usr/bin/rust-${rustv}-lld" "$unvBinDir/rust-lld" ln -sf "/usr/bin/rust-${rustv}-llvm-dwp" "$unvBinDir/rust-llvm-dwp" ln -sf "/usr/bin/cargo-${rustv}" "$unvBinDir/cargo" cargo install cbindgen # Fixes configuration error that started after Libclang version 19: # "Could not find libclang to generate rust bindings for C/C++." export MOZCONFIG="$CRAFT_STAGE/mozconfig" sudo ln -sf /usr/lib/llvm-19/lib/libclang-19.so.1 \ /usr/lib/llvm-19/lib/libclang.so.1 echo "ac_add_options --with-libclang-path=/usr/lib/llvm-19/lib/" >> $MOZCONFIG GNOME_SDK_SNAP_BASE=gnome-46-2404-sdk GNOME_SDK_SNAP_REVISION=current GNOME_SDK_SNAP=/snap/$GNOME_SDK_SNAP_BASE/$GNOME_SDK_SNAP_REVISION if [ $CRAFT_ARCH_BUILD_FOR = "amd64" ]; then # "clang -dumpmachine" returns "x86_64-unknown-linux-gnu" on # amd64 (at least the binaries they distribute), but what we # really need is "x86_64-pc-linux-gnu"; so let's hard-code it. export TARGET_TRIPLET="x86_64-pc-linux-gnu" elif [ $CRAFT_ARCH_BUILD_FOR = "arm64" ]; then export TARGET_TRIPLET="aarch64-unknown-linux-gnu" fi export LDFLAGS="-Wl,-rpath-link=$GNOME_SDK_SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR -Wl,-rpath-link=$GNOME_SDK_SNAP/usr/lib" export LDFLAGS="-Wl,-rpath-link=$CRAFT_PART_BUILD/obj-$TARGET_TRIPLET/dist/bin${LDFLAGS:+ $LDFLAGS}" export LD_LIBRARY_PATH="$CRAFT_PART_BUILD/obj-$TARGET_TRIPLET/dist/bin${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" export MOZBUILD_STATE_PATH=$CRAFT_PART_BUILD/.mozbuild export MOZCONFIG="$CRAFT_STAGE/mozconfig" BUILD_DBGSYMS=false if [ $CRAFT_ARCH_BUILD_ON = "amd64" ] || [ $CRAFT_ARCH_BUILD_FOR = "arm64" ]; then # See override-pull above for why we only build debug symbols # on these arches. BUILD_DBGSYMS=true fi unset PYTHONPATH if [ $CRAFT_ARCH_BUILD_FOR = "amd64" ]; then # Needed for PGO-enabled builds that execute the built binaries. This should mirror the link paths in $LDFLAGS. export LD_LIBRARY_PATH="$GNOME_SDK_SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:$GNOME_SDK_SNAP/usr/lib" # Ensure the instrumented binary is run against the right version of libssl3.so and libnss3.so # (locally-built versions are more recent than the ones in the gnome platform snap) export LD_LIBRARY_PATH="$CRAFT_PART_BUILD/obj-$TARGET_TRIPLET/instrumented/dist/bin${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" fi # Hack to avoid out of space condition when building. This removes the # sources of all parts. FIXME when Launchpad builders get more space # (currently 80 GB: https://help.launchpad.net/Packaging/BuilderSpecs) for d in $CRAFT_PROJECT_DIR/parts/*/; do rm -rf "$d"/src || : done MACH="/usr/bin/python3 ./mach" $MACH repackage desktop-file --output $CRAFT_PART_INSTALL/firefox.desktop --flavor snap --release-product "firefox" --release-type nightly if grep -qF "MOZ_PGO=1" "$MOZCONFIG"; then # xvfb is only needed when doing a PGO-enabled build xvfb-run '--server-args=-screen 0 1920x1080x24' $MACH build --verbose -j$CRAFT_PARALLEL_BUILD_COUNT else $MACH build --verbose -j$CRAFT_PARALLEL_BUILD_COUNT fi find . -name 'dep-graph.bin' -delete find . -name 'query-cache.bin' -delete find . -name 'work-products.bin' -delete if [ $BUILD_DBGSYMS = "true" ]; then DUMP_SYMS=$CRAFT_STAGE/usr/bin/dump_syms $MACH buildsymbols fi $MACH install cp obj-*/dist/host/bin/geckodriver $CRAFT_PART_INSTALL/usr/lib/firefox/ DISTRIBUTION=$CRAFT_PART_INSTALL/usr/lib/firefox/distribution mkdir -p $DISTRIBUTION/extensions cp browser/branding/nightly/default256.png $CRAFT_PART_INSTALL/ if [ $BUILD_DBGSYMS = "true" ]; then cp obj-*/dist/firefox-*.crashreporter-symbols.zip $CRAFT_STAGE/debug-symbols/ fi override-stage: | # Workaround for LP: #2016358: create mount points for the gnome # content interface, while a proper fix is implemented in snapd. # Thanks to James Henstridge. mkdir $CRAFT_PART_INSTALL/{gnome-platform,data-dir,data-dir/{icons,sounds,themes}} craftctl default stage-packages: - on amd64: - to amd64: - libpci3 - libspeechd2 - opensc-pkcs11 - to arm64: - libpci3:arm64 - libspeechd2:arm64 - opensc-pkcs11:arm64 - else: - libpci3 - libspeechd2 - opensc-pkcs11 prime: - default256.png - firefox.desktop - usr/lib/firefox - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/opensc-pkcs11.so - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pkcs11/opensc-pkcs11.so - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libasn1.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libhcrypto.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libheimbase.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libheimntlm.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libhogweed.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libhx509.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/liblber-2.4.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libldap_r-2.4.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libnettle.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libnghttp2.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libroken.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/librtmp.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libsasl2.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libspeechd.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libssh.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libssl.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libwind.so.* # Workaround for LP: #2016358 (see the 'override-stage' above). - gnome-platform - data-dir/icons - data-dir/sounds - data-dir/themes firefox-langpacks: plugin: nil build-packages: - coreutils - sed - wget override-pull: | VERSION=$(craftctl get version) SERVER=https://ftp.mozilla.org ROOT=$SERVER/pub/firefox/nightly/latest-mozilla-central-l10n/linux-x86_64/xpi/ XPIS=$(wget -O - $ROOT | sed -n "s/.* href=\"\(.*$VERSION.*\.xpi\)\".*/\1/p") mkdir -p $CRAFT_STAGE for XPI in $XPIS; do wget -P $CRAFT_STAGE $SERVER$XPI done override-prime: | INSTALLDIR=$CRAFT_PRIME/usr/lib/firefox/distribution/extensions mkdir -p $INSTALLDIR for XPI in $(ls $CRAFT_STAGE/*.xpi); do LANGCODE=$(basename $XPI .xpi) mkdir $INSTALLDIR/locale-$LANGCODE cp $XPI $INSTALLDIR/locale-$LANGCODE/langpack-$LANGCODE@firefox.mozilla.org.xpi done # Bundle patched Kerberos library that ignores failed includedirs (LP:2122317) # # We need to untangle this part from Gnome extension's idiosyncrasies, # as they cause cryptic errors including but not limited to # # > relocation R_X86_64_TPOFF32 against `buffer' can not be used when making # > a shared object; recompile with -fPIC" kerberos: plugin: nil build-packages: - python3-lxml # Missing from Krb5 build-dependencies? - sudo # For Mozilla's docker build build-environment: - DEB_BUILD_OPTIONS: nodoc # Delete Gnome extension's injections in this variable - PKG_CONFIG_PATH: $CRAFT_STAGE/usr/share/pkgconfig override-pull: | # Fetch Kerberos from release matching current base snap sudo sed -i '/Types:/s/deb/deb deb-src/' /etc/apt/sources.list.d/*.sources sudo apt update apt source krb5 override-build: | # Delete Gnome extension's injections in this variable export PATH=${PATH#/snap*:} # Apply our patch and build cp -r $CRAFT_PART_SRC/krb5* . cd krb5*/ sudo apt build-dep -y . # sudo needed in Mozilla's docker build patch -p1 < "$CRAFT_PROJECT_DIR/patches/external/krb5:ignore-failed-includedirs" ./debian/rules build # Prime its resultant relevant libraries mkdir -p "$CRAFT_PRIME/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR" cp build/lib/*krb5*.so.? "$CRAFT_PRIME/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR" launcher: plugin: nil override-prime: | cp "$CRAFT_PROJECT_DIR/firefox.launcher" "$CRAFT_PRIME/" cp "$CRAFT_PROJECT_DIR/patch-default-profile.py" "$CRAFT_PRIME/" distribution: plugin: nil override-pull : | git clone --depth 1 https://github.com/mozilla-partners/canonical.git . mkdir -p $CRAFT_PRIME/usr/lib/firefox/ cp -Rv desktop/ubuntu/distribution $CRAFT_PRIME/usr/lib/firefox/ ffmpeg: plugin: nil # Not using the ffmpeg snap (which might provide a more recent version) # because it is currently built on core18 stage-packages: - on amd64: - to amd64: - libavcodec60 - libhwy1t64 - libsvtav1enc1d1 - libjxl0.7 - librav1e0 - libvpl2 # the package is intel specific - to arm64: - libavcodec60:arm64 - libhwy1t64:arm64 - libsvtav1enc1d1:arm64 - libjxl0.7:arm64 - librav1e0:arm64 - else: - libavcodec60 - libhwy1t64 - libsvtav1enc1d1 - libjxl0.7 - librav1e0 prime: - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libaom.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libavcodec.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libavutil.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libcodec2.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libdav1d.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libgsm.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libhwy.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libjxl.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libjxl_threads.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libmd.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libmfx.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libmp3lame.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libnuma.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libOpenCL.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libopus.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/librav1e.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libshine.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libsnappy.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libsoxr.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libspeex.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libSvtAv1Enc.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libswresample.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libtheoradec.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libtheoraenc.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libtwolame.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libvdpau.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libvpl.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libvpx.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libwavpack.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libwebpmux.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libwebp.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libx264.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libx265.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libxvidcore.so.* - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libzvbi.so.* # the package is intel specific - on amd64: - to amd64: - usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libvpl.so.* # Obscure API keys. This is just to give scrapers a hard time; It is therefore # no problem that .passphrase is public. # # To update an API key, execute the GPG command to generate the apikeys file. # Update the desired key manually, encrypt and commit the new .apikeys file. apikeys: plugin: nil after: - mozconfig build-packages: - coreutils - gpg - jq override-build: | craftctl default MOZCONFIG="$CRAFT_STAGE/mozconfig" gpg -d --batch --passphrase "$(base64 -d $CRAFT_PROJECT_DIR/.passphrase)" -o apikeys $CRAFT_PROJECT_DIR/.apikeys < apikeys jq .MOZ_GOOGLE_LOCATION_SERVICE_API_KEY | tr -d '"' > $CRAFT_PART_INSTALL/gls-gapi.data echo "ac_add_options --with-google-location-service-api-keyfile=$CRAFT_STAGE/gls-gapi.data" >> $MOZCONFIG < apikeys jq .MOZ_GOOGLE_SAFEBROWSING_API_KEY | tr -d '"' > $CRAFT_PART_INSTALL/sb-gapi.data echo "ac_add_options --with-google-safebrowsing-api-keyfile=$CRAFT_STAGE/sb-gapi.data" >> $MOZCONFIG override-prime: '' debug-symbols: plugin: nil build-packages: - python3 - python3-virtualenv after: - firefox override-build: | export SYMBOLS_ARCHIVE=$(find $CRAFT_STAGE/debug-symbols/ -type f -name "firefox-*.crashreporter-symbols.zip") if [ -f "$SYMBOLS_ARCHIVE" ]; then cp $SYMBOLS_ARCHIVE $CRAFT_PROJECT_DIR/$CRAFT_PROJECT_NAME_$(craftctl get version)_$CRAFT_ARCH_BUILD_FOR.debug fi slots: dbus-daemon: interface: dbus bus: session name: org.mozilla.firefox_nightly hooks: post-refresh: plugs: [host-usr-share-hunspell] install: plugs: [host-usr-share-hunspell] ``` ### Log output ```shell https://people.canonical.com/~npt/live_backing.log ```

Evaluation history

Date Model Scores Action Summary
~deepseek/deepseek-pro-latest
Impact: 45
Quick Win: 6
Complexity: 65
Confidence: 50
Actionability: 35
needs triage Cross-compiling Firefox amd64->arm64 in destructive Docker fails installing build-packages: plugin-injected gcc/make leads to gcc-13 Depends binutils not installable. No maintainer triage yet.

Update history

Date Change
updated
created

Related issues

No related issues found above the similarity threshold.