diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f409955080..5e1f49c8413 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -313,7 +313,7 @@ arm_build: - .fdo.container-build@debian@arm64v8 - .container variables: - FDO_DISTRIBUTION_TAG: &arm_build "2020-06-22-tracie" + FDO_DISTRIBUTION_TAG: &arm_build "2020-07-07" .use-arm_build: variables: @@ -602,6 +602,8 @@ meson-armhf: LLVM_VERSION: "7" EXTRA_OPTION: > -D llvm=disabled + UPLOAD_FOR_LAVA: 1 + DEBIAN_ARCH: armhf script: - .gitlab-ci/meson-build.sh - .gitlab-ci/prepare-artifacts.sh @@ -614,6 +616,8 @@ meson-arm64: VULKAN_DRIVERS: "freedreno" EXTRA_OPTION: > -D llvm=disabled + UPLOAD_FOR_LAVA: 1 + DEBIAN_ARCH: arm64 script: - .gitlab-ci/meson-build.sh - .gitlab-ci/prepare-artifacts.sh diff --git a/.gitlab-ci/container/arm_build.sh b/.gitlab-ci/container/arm_build.sh index 3c003e509f6..dd0be655d9e 100644 --- a/.gitlab-ci/container/arm_build.sh +++ b/.gitlab-ci/container/arm_build.sh @@ -3,11 +3,9 @@ set -e set -o xtrace -############### Install packages for building apt-get -y install ca-certificates sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list -dpkg --add-architecture armhf apt-get update apt-get -y install \ abootimg \ @@ -19,60 +17,34 @@ apt-get -y install \ ccache \ cmake \ cpio \ - crossbuild-essential-armhf \ debootstrap \ fastboot \ flex \ g++ \ git \ lavacli \ - libboost-dev:armhf \ - libboost-dev \ - libdrm-dev:armhf \ libdrm-dev \ - libegl1-mesa-dev \ - libegl1-mesa-dev:armhf \ libelf-dev \ - libelf-dev:armhf \ libexpat1-dev \ - libexpat1-dev:armhf \ - libgbm-dev \ - libgbm-dev:armhf \ - libgles2-mesa-dev \ - libgles2-mesa-dev:armhf \ - libpcre3-dev \ - libpcre3-dev:armhf \ - libpng-dev \ - libpng-dev:armhf \ - libpython3-dev \ - libpython3-dev:armhf \ - libssl-dev \ - libvulkan-dev \ - libvulkan-dev \ - libvulkan-dev:armhf \ - libxcb-keysyms1-dev \ - libxcb-keysyms1-dev:armhf \ - llvm-7-dev:armhf \ llvm-8-dev \ pkg-config \ python \ - python3-dev \ - python3-distutils \ - python3-setuptools \ python3-mako \ - python3-serial \ - qt5-default \ - qt5-qmake \ - qtbase5-dev \ - qtbase5-dev:armhf \ + python3-pip \ + python3-setuptools \ unzip \ wget \ xz-utils \ zlib1g-dev +pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates@6f5af7e5574509726c79109e3c147cee95e81366 + apt install -y --no-remove -t buster-backports \ meson +arch=armhf +. .gitlab-ci/container/cross_build.sh + . .gitlab-ci/container/container_pre_build.sh # dependencies where we want a specific version @@ -83,17 +55,4 @@ tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2 cd $LIBDRM_VERSION; meson build -D vc4=true -D freedreno=true -D etnaviv=true; ninja -C build install; cd .. rm -rf $LIBDRM_VERSION -############### Generate cross build file for Meson - -. .gitlab-ci/create-cross-file.sh armhf - -############### Generate kernel, ramdisk, test suites, etc for LAVA jobs -KERNEL_URL="https://gitlab.freedesktop.org/tomeu/linux/-/archive/v5.5-panfrost-fixes/linux-v5.5-panfrost-fixes.tar.gz" - -DEBIAN_ARCH=arm64 . .gitlab-ci/container/lava_arm.sh -DEBIAN_ARCH=armhf . .gitlab-ci/container/lava_arm.sh - -apt-get purge -y \ - wget - . .gitlab-ci/container/container_post_build.sh diff --git a/.gitlab-ci/container/cross_build.sh b/.gitlab-ci/container/cross_build.sh index 58f449f7cf5..bfbac4f520b 100644 --- a/.gitlab-ci/container/cross_build.sh +++ b/.gitlab-ci/container/cross_build.sh @@ -7,8 +7,7 @@ export DEBIAN_FRONTEND=noninteractive # Ephemeral packages (installed for this script and removed again at the end) STABLE_EPHEMERAL=" \ - libpciaccess-dev:$arch \ - wget \ + libpciaccess-dev:$arch " dpkg --add-architecture $arch @@ -23,8 +22,14 @@ apt-get install -y --no-remove \ libstdc++6:$arch \ libtinfo-dev:$arch +if [[ $arch == "armhf" ]]; then + LLVM=llvm-7-dev +else + LLVM=llvm-8-dev +fi + apt-get install -y --no-remove -t buster-backports \ - llvm-8-dev:$arch + $LLVM:$arch . .gitlab-ci/create-cross-file.sh $arch diff --git a/.gitlab-ci/container/lava_arm.sh b/.gitlab-ci/container/lava_arm.sh old mode 100644 new mode 100755 index e5da199abc8..ec3bf52b9f4 --- a/.gitlab-ci/container/lava_arm.sh +++ b/.gitlab-ci/container/lava_arm.sh @@ -3,6 +3,15 @@ set -e set -o xtrace +# If remote files are up-to-date, skip rebuilding them +MINIO_PATH=minio-packet.freedesktop.org/mesa-lava/${CI_PROJECT_PATH}/${DISTRIBUTION_TAG}/${DEBIAN_ARCH} +DONE_FILE=https://${MINIO_PATH}/done +if wget -q --method=HEAD ${DONE_FILE}; then + exit +fi + +. .gitlab-ci/container/container_pre_build.sh + if [[ "$DEBIAN_ARCH" = "arm64" ]]; then GCC_ARCH="aarch64-linux-gnu" KERNEL_ARCH="arm64" @@ -15,6 +24,7 @@ else DEFCONFIG="arch/arm/configs/multi_v7_defconfig" DEVICE_TREES="arch/arm/boot/dts/rk3288-veyron-jaq.dtb arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb" KERNEL_IMAGE_NAME="zImage" + . .gitlab-ci/create-cross-file.sh armhf fi # Determine if we're in a cross build. @@ -26,6 +36,46 @@ if [[ -e /cross_file-$DEBIAN_ARCH.txt ]]; then export CROSS_COMPILE="${GCC_ARCH}-" fi +apt-get update +apt-get install -y automake \ + git \ + bc \ + cmake \ + cpio \ + wget \ + debootstrap \ + libboost-dev \ + libegl1-mesa-dev \ + libgbm-dev \ + libgles2-mesa-dev \ + libpcre3-dev \ + libpng-dev \ + libpython3-dev \ + libssl-dev \ + libvulkan-dev \ + libxcb-keysyms1-dev \ + python3-dev \ + python3-distutils \ + python3-serial \ + qt5-default \ + qt5-qmake \ + qtbase5-dev + + +if [[ "$DEBIAN_ARCH" = "armhf" ]]; then + apt-get install -y libboost-dev:armhf \ + libegl1-mesa-dev:armhf \ + libelf-dev:armhf \ + libgbm-dev:armhf \ + libgles2-mesa-dev:armhf \ + libpcre3-dev:armhf \ + libpng-dev:armhf \ + libpython3-dev:armhf \ + libvulkan-dev:armhf \ + libxcb-keysyms1-dev:armhf \ + qtbase5-dev:armhf +fi + ############### Build dEQP runner . .gitlab-ci/build-cts-runner.sh mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin @@ -63,6 +113,7 @@ rm -rf /renderdoc ############### Cross-build kernel +KERNEL_URL="https://gitlab.freedesktop.org/tomeu/linux/-/archive/v5.5-panfrost-fixes/linux-v5.5-panfrost-fixes.tar.gz" mkdir -p kernel wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C kernel pushd kernel @@ -73,19 +124,6 @@ for image in ${KERNEL_IMAGE_NAME}; do done cp ${DEVICE_TREES} /lava-files/. - -if [[ ${DEBIAN_ARCH} = "arm64" ]] && which mkimage > /dev/null; then - make Image.lzma - mkimage \ - -f auto \ - -A arm \ - -O linux \ - -d arch/arm64/boot/Image.lzma \ - -C lzma\ - -b arch/arm64/boot/dts/qcom/sdm845-cheza-r3.dtb \ - /lava-files/cheza-kernel -fi - popd rm -rf kernel @@ -105,37 +143,22 @@ set -e cp .gitlab-ci/create-rootfs.sh /lava-files/rootfs-${DEBIAN_ARCH}/. chroot /lava-files/rootfs-${DEBIAN_ARCH} sh /create-rootfs.sh rm /lava-files/rootfs-${DEBIAN_ARCH}/create-rootfs.sh +pushd /lava-files/rootfs-${DEBIAN_ARCH} + find -H | cpio -H newc -o | gzip -c - > /lava-files/lava-rootfs.cpio.gz +popd +rm -rf /lava-files/rootfs-${DEBIAN_ARCH} -if [ ${DEBIAN_ARCH} = arm64 ]; then - # Pull down a specific build of qcomlt/release/qcomlt-5.4 8c79b3d12355 - # ("Merge tag 'v5.4.23' into release/qcomlt-5.4"), where I used the - # .config from - # http://snapshots.linaro.org/96boards/dragonboard820c/linaro/debian/457/config-5.4.0-qcomlt-arm64 - # with the following merged in: - # - # CONFIG_DRM=y - # CONFIG_DRM_MSM=y - # CONFIG_ATL1C=y - # - # Reason: 5.5 has a big stack of oopses and warns on db820c. 4.14-5.4 - # linaro kernel binaries (see above .config link) have these as modules - # and distributed the modules only in the debian system, not the initrd, - # so they're very hard to extract (involving simg2img and loopback - # mounting). 4.11 is missing d72fea538fe6 ("drm/msm: Fix the check for - # the command size") so it can't actually run fredreno. qcomlt-4.14 is - # unstable at boot (~10% instaboot rate). The 5.4 qcomlt kernel with msm - # built in seems like the easiest way to go. - wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/Image.gz -O Image.gz \ - -O /lava-files/db820c-kernel - wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/apq8096-db820c.dtb \ - -O /lava-files/db820c.dtb +ls -lh /lava-files/ - # Make a gzipped copy of the Image for db410c. - gzip -k /lava-files/Image +. .gitlab-ci/container/container_post_build.sh + +############### Upload the files! +ci-fairy minio login $CI_JOB_JWT +for f in $(ls /lava-files/); do + ci-fairy minio cp /lava-files/$f \ + minio://${MINIO_PATH}/$f +done + +touch /lava-files/done +ci-fairy minio cp /lava-files/done minio://${MINIO_PATH}/done - # Add missing a630 firmware, added to debian packge in apr 2020 - wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/qcom/a630_gmu.bin \ - -O /lava-files/rootfs-arm64/lib/firmware/qcom/a630_gmu.bin - wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/qcom/a630_sqe.fw \ - -O /lava-files/rootfs-arm64/lib/firmware/qcom/a630_sqe.fw -fi diff --git a/.gitlab-ci/create-rootfs.sh b/.gitlab-ci/create-rootfs.sh index ef1026fea7c..f6e80e1c517 100644 --- a/.gitlab-ci/create-rootfs.sh +++ b/.gitlab-ci/create-rootfs.sh @@ -13,7 +13,6 @@ apt-get -y install --no-install-recommends \ libdrm-nouveau2 \ libx11-6 \ libx11-xcb1 \ - firmware-qcom-media \ netcat-openbsd \ python3 \ libpython3.7 \ @@ -38,19 +37,13 @@ exec sh EOF chmod +x /init -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 - ####################################################################### # Strip the image to a small minimal system without removing the debian # toolchain. -# 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. +# xz compress firmware so it doesn't waste RAM at runtime. find /lib/firmware -type f -print0 | \ - grep -vz a530 | \ xargs -0r -P4 -n4 xz -T1 -C crc32 -ln -s /lib/firmware/qcom/a530* /lib/firmware/ # Copy timezone file and remove tzdata package rm -rf /etc/localtime @@ -124,7 +117,6 @@ UNNEEDED_PACKAGES="apt libapt-pkg6.0 "\ "passwd "\ "libsemanage1 libsemanage-common "\ "libsepol1 "\ -"gzip "\ "gpgv "\ "hostname "\ "adduser "\ diff --git a/.gitlab-ci/generate_lava.py b/.gitlab-ci/generate_lava.py index e278093fcc9..4021f66b0c5 100755 --- a/.gitlab-ci/generate_lava.py +++ b/.gitlab-ci/generate_lava.py @@ -3,11 +3,13 @@ from jinja2 import Environment, FileSystemLoader import argparse import os +import datetime parser = argparse.ArgumentParser() parser.add_argument("--template") parser.add_argument("--pipeline-info") parser.add_argument("--base-artifacts-url") +parser.add_argument("--mesa-url") parser.add_argument("--device-type") parser.add_argument("--kernel-image-name") parser.add_argument("--kernel-image-type", nargs='?', default="") @@ -16,7 +18,6 @@ parser.add_argument("--boot-method") parser.add_argument("--lava-tags", nargs='?', default="") parser.add_argument("--env-vars", nargs='?', default="") parser.add_argument("--deqp-version") -parser.add_argument("--arch") parser.add_argument("--ci-node-index") parser.add_argument("--ci-node-total") args = parser.parse_args() @@ -29,6 +30,7 @@ env_vars = "%s CI_NODE_INDEX=%s CI_NODE_TOTAL=%s" % (args.env_vars, args.ci_node values = {} values['pipeline_info'] = args.pipeline_info values['base_artifacts_url'] = args.base_artifacts_url +values['mesa_url'] = args.mesa_url values['device_type'] = args.device_type values['kernel_image_name'] = args.kernel_image_name values['kernel_image_type'] = args.kernel_image_type @@ -37,7 +39,10 @@ values['boot_method'] = args.boot_method values['tags'] = args.lava_tags values['env_vars'] = env_vars values['deqp_version'] = args.deqp_version -values['arch'] = args.arch + +# We need a sane date to check certificates, but don't want to wait to get +# time from the network after boot. +values['date'] = datetime.datetime.now().strftime("%Y%m%d %H%M") f = open('lava-deqp.yml', "w") f.write(template.render(values)) diff --git a/.gitlab-ci/lava-deqp.yml.jinja2 b/.gitlab-ci/lava-deqp.yml.jinja2 index 1ee127224f4..92a48ed7915 100644 --- a/.gitlab-ci/lava-deqp.yml.jinja2 +++ b/.gitlab-ci/lava-deqp.yml.jinja2 @@ -21,13 +21,6 @@ actions: - deploy: timeout: minutes: 10 -{% if boot_method == "fastboot" %} -{# fastboot has just one boot image with the dtb and rootfs packed in #} - to: fastboot - images: - boot: - url: {{ base_artifacts_url }}/{{ kernel_image_name }} -{% else %} to: tftp kernel: url: {{ base_artifacts_url }}/{{ kernel_image_name }} @@ -35,11 +28,10 @@ actions: {{ kernel_image_type }} {% endif %} ramdisk: - url: {{ base_artifacts_url }}/lava-rootfs-{{ arch }}.cpio.gz + url: {{ base_artifacts_url }}/lava-rootfs.cpio.gz compression: gz dtb: url: {{ base_artifacts_url }}/{{ device_type }}.dtb -{% endif %} os: oe - boot: timeout: @@ -78,6 +70,9 @@ actions: - mount -t devtmpfs none /dev || echo possibly already mounted - mkdir -p /dev/pts - mount -t devpts devpts /dev/pts + - echo "nameserver 8.8.8.8" > /etc/resolv.conf + - date "+%Y%m%d %H%M" -s "{{ date }}" + {% if env_vars %} - export {{ env_vars }} @@ -86,6 +81,8 @@ actions: # deqp-runner.sh assumes some stuff is in pwd - cd / + - wget -S --progress=dot:giga -O- {{ mesa_url }} | tar -xz + - export DEQP_NO_SAVE_RESULTS=1 - 'export DEQP_RUNNER_OPTIONS="--shuffle false"' - export DEQP_EXPECTED_FAILS=deqp-{{ gpu_version }}-fails.txt diff --git a/.gitlab-ci/lava-gitlab-ci.yml b/.gitlab-ci/lava-gitlab-ci.yml index 2e15e923b68..77ec9b89728 100644 --- a/.gitlab-ci/lava-gitlab-ci.yml +++ b/.gitlab-ci/lava-gitlab-ci.yml @@ -1,3 +1,30 @@ +variables: + DISTRIBUTION_TAG: "2020-07-06" + +.kernel+rootfs: + stage: container-2 + variables: + GIT_STRATEGY: fetch + script: + - DEBIAN_ARCH=${DEBIAN_ARCH} .gitlab-ci/container/lava_arm.sh + rules: + - when: always + +kernel+rootfs_arm64: + extends: + - .use-arm_build + - .kernel+rootfs + tags: + - aarch64 + variables: + DEBIAN_ARCH: "arm64" + +kernel+rootfs_armhf: + extends: + - kernel+rootfs_arm64 + variables: + DEBIAN_ARCH: "armhf" + .lava-test: extends: - .ci-run-policy @@ -5,22 +32,17 @@ GIT_STRATEGY: none # testing doesn't build anything from source ENV_VARS: "DEQP_PARALLEL=6" DEQP_VERSION: gles2 + ARTIFACTS_URL: "https://minio-packet.freedesktop.org/mesa-lava/${CI_PROJECT_PATH}/${DISTRIBUTION_TAG}/${ARCH}" + MESA_URL: "https://minio-packet.freedesktop.org/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}/mesa-${ARCH}.tar.gz" script: - - mkdir -p /srv/${FILES_HOST_NAME}/$CI_JOB_ID/ - - cp /lava-files/${KERNEL_IMAGE_NAME} /srv/${FILES_HOST_NAME}/$CI_JOB_ID/. - - cp /lava-files/${DEVICE_TYPE}.dtb /srv/${FILES_HOST_NAME}/$CI_JOB_ID/. - - tar -C /lava-files/rootfs-${ARCH} -xf artifacts/install.tar - - pushd /lava-files/rootfs-${ARCH} - - find -H | cpio -H newc -o | gzip -c - > /srv/${FILES_HOST_NAME}/$CI_JOB_ID/lava-rootfs-${ARCH}.cpio.gz - - popd - > artifacts/generate_lava.py \ --template artifacts/lava-deqp.yml.jinja2 \ --pipeline-info "$CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \ - --base-artifacts-url ${FILES_HOST_URL}/$CI_JOB_ID \ + --base-artifacts-url ${ARTIFACTS_URL} \ + --mesa-url ${MESA_URL} \ --device-type ${DEVICE_TYPE} \ --env-vars "${ENV_VARS}" \ - --arch ${ARCH} \ --deqp-version ${DEQP_VERSION} \ --kernel-image-name ${KERNEL_IMAGE_NAME} \ --kernel-image-type "${KERNEL_IMAGE_TYPE}" \ @@ -38,8 +60,6 @@ - result=`lavacli results $lava_job_id 0_deqp deqp | head -1` - echo $result - '[[ "$result" == "pass" ]]' - after_script: - - rm -rf /srv/${FILES_HOST_NAME}/$CI_JOB_ID/ artifacts: name: "mesa_${CI_JOB_NAME}" when: always @@ -58,7 +78,7 @@ dependencies: - meson-armhf needs: - - arm_build + - kernel+rootfs_armhf - meson-armhf .lava-test:arm64: @@ -73,7 +93,7 @@ dependencies: - meson-arm64 needs: - - arm_build + - kernel+rootfs_arm64 - meson-arm64 panfrost-t720-gles2:arm64: @@ -84,8 +104,6 @@ panfrost-t720-gles2:arm64: DEVICE_TYPE: sun50i-h6-pine-h64 GPU_VERSION: panfrost-t720 ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T720" - FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org" - FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org" tags: - mesa-ci-aarch64-lava-collabora @@ -99,8 +117,6 @@ panfrost-t760-gles2:armhf: BOOT_METHOD: depthcharge KERNEL_IMAGE_TYPE: "" ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T760" - FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org" - FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org" tags: - mesa-ci-aarch64-lava-collabora @@ -114,8 +130,6 @@ panfrost-t860-gles2:arm64: BOOT_METHOD: depthcharge KERNEL_IMAGE_TYPE: "" ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860" - FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org" - FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org" tags: - mesa-ci-aarch64-lava-collabora @@ -132,8 +146,6 @@ panfrost-t860-gles3:arm64: ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860" CI_NODE_INDEX: 1 CI_NODE_TOTAL: 5 - FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org" - FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org" tags: - mesa-ci-aarch64-lava-collabora diff --git a/.gitlab-ci/prepare-artifacts.sh b/.gitlab-ci/prepare-artifacts.sh index 4c230921715..9bf5e3dcc7c 100755 --- a/.gitlab-ci/prepare-artifacts.sh +++ b/.gitlab-ci/prepare-artifacts.sh @@ -47,8 +47,13 @@ mkdir -p artifacts/ tar -cf artifacts/install.tar install # If the container has LAVA stuff, prepare the artifacts for LAVA jobs -if [ -d /lava-files ]; then +if [ -n "$UPLOAD_FOR_LAVA" ]; then # Pass needed files to the test stage cp $CI_PROJECT_DIR/.gitlab-ci/generate_lava.py artifacts/. cp $CI_PROJECT_DIR/.gitlab-ci/lava-deqp.yml.jinja2 artifacts/. + + gzip -c artifacts/install.tar > mesa-${DEBIAN_ARCH}.tar.gz + ci-fairy minio login $CI_JOB_JWT + MINIO_PATH=minio-packet.freedesktop.org/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID} + ci-fairy minio cp mesa-${DEBIAN_ARCH}.tar.gz minio://${MINIO_PATH}/mesa-${DEBIAN_ARCH}.tar.gz fi