diff --git a/taskcluster/ci/toolchain/linux.yml b/taskcluster/ci/toolchain/linux.yml index a07ed2942d14..b4ddf12141d7 100644 --- a/taskcluster/ci/toolchain/linux.yml +++ b/taskcluster/ci/toolchain/linux.yml @@ -132,3 +132,23 @@ linux64-hfsplus/opt: - 'build/unix/build-hfsplus/**' - 'taskcluster/scripts/misc/build-hfsplus-linux.sh' - 'taskcluster/taskgraph/transforms/job/toolchain.py' + +linux64-libdmg/opt: + description: "libdmg-hfsplus toolchain build" + treeherder: + kind: build + platform: linux64/opt + symbol: Cc(libdmg) + tier: 1 + run: + using: toolchain-script + script: build-libdmg-hfsplus.sh + worker-type: aws-provisioner-v1/gecko-{level}-b-linux + worker: + implementation: docker-worker + docker-image: {in-tree: desktop-build} + max-run-time: 36000 + when: + files-changed: + - 'taskcluster/scripts/misc/build-libdmg-hfsplus.sh' + - 'taskcluster/taskgraph/transforms/job/toolchain.py' diff --git a/taskcluster/scripts/misc/build-libdmg-hfsplus.sh b/taskcluster/scripts/misc/build-libdmg-hfsplus.sh new file mode 100755 index 000000000000..37357fc720c5 --- /dev/null +++ b/taskcluster/scripts/misc/build-libdmg-hfsplus.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -x -e -v + +# This script is for building libdmg-hfsplus to get the `dmg` and `hfsplus` +# tools for producing DMG archives on Linux. + +WORKSPACE=$HOME/workspace +STAGE=$WORKSPACE/dmg +UPLOAD_DIR=$WORKSPACE/artifacts + +# There's no single well-maintained fork of libdmg-hfsplus, but this +# branch currently has some fixes we need. +: LIBDMG_REPOSITORY ${LIBDMG_REPOSITORY:=https://github.com/andreas56/libdmg-hfsplus} +# This is the current head of the `from_zarvox` branch. +: LIBDMG_REV ${LIBDMG_REV:=81dd75fd1549b24bf8af9736ac25518b367e6b63} + +mkdir -p $UPLOAD_DIR $STAGE + +cd $WORKSPACE +tc-vcs checkout --force-clone libdmg-hfsplus $LIBDMG_REPOSITORY $LIBDMG_REPOSITORY $LIBDMG_REV +cd libdmg-hfsplus +# Make a source archive +git archive ${LIBDMG_REV} | xz > $UPLOAD_DIR/libdmg-hfsplus.tar.xz +cmake . +make -j$(getconf _NPROCESSORS_ONLN) + +# We only need the dmg and hfsplus tools. +strip dmg/dmg hfs/hfsplus +cp dmg/dmg hfs/hfsplus $STAGE + +cat >$STAGE/README< $UPLOAD_DIR/dmg.tar.xz