From bfa3c104d7aed6300313694585fa676f33ba5e4a Mon Sep 17 00:00:00 2001 From: Nicolas Viennot Date: Sun, 10 Nov 2019 15:19:32 -0500 Subject: [PATCH] Refactor static builds --- .gitignore | 1 + .travis.yml | 4 ++-- Dockerfile | 5 +++-- build_static_release.sh | 33 +++++++++++++++++++++++++++++++++ package_release.sh | 14 -------------- 5 files changed, 39 insertions(+), 18 deletions(-) create mode 100755 build_static_release.sh delete mode 100755 package_release.sh diff --git a/.gitignore b/.gitignore index 93153ede..bcbdfe13 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ downloads/ ext/ libssh-*/ msgpack-*/ +releases/ diff --git a/.travis.yml b/.travis.yml index a02e89a8..fc43a83f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ script: # On arch=arm64, some directories are not setup correctly, and 'ruby -S gem # install dpl' required by the release push scripts fails. - 'if [ "$TRAVIS_TAG" ]; then sudo chown -R $USER: /var/lib/gems /usr/local/bin; fi' -- 'if [ "$TRAVIS_TAG" ]; then ./package_release.sh $TRAVIS_TAG $PLATFORM; fi' +- 'if [ "$TRAVIS_TAG" ]; then ./build_static_release.sh $TRAVIS_TAG $PLATFORM; fi' deploy: provider: releases @@ -29,7 +29,7 @@ deploy: skip_cleanup: true overwrite: true file_glob: true - file: /tmp/tmate-release/*.tar.* + file: releases/*.tar.* on: repo: tmate-io/tmate branch: master diff --git a/Dockerfile b/Dockerfile index c7aa2b9f..8b736f63 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,9 +20,10 @@ RUN set -ex; \ make -j $(nproc); \ make install -COPY . . +COPY compat ./compat +COPY *.c *.h autogen.sh Makefile.am configure.ac ./ RUN ./autogen.sh && ./configure --enable-static RUN make -j $(nproc) -RUN strip tmate +RUN objcopy --only-keep-debug tmate tmate.symbols && strip tmate RUN ./tmate -V diff --git a/build_static_release.sh b/build_static_release.sh new file mode 100755 index 00000000..77b5d003 --- /dev/null +++ b/build_static_release.sh @@ -0,0 +1,33 @@ +#!/bin/bash +set -eux + +# This is invoked by .travis.yml + +VERSION=$1 +PLATFORM=$2 + +SRC_VERSION=`cat configure.ac | grep AC_INIT | sed -E 's/^AC_INIT\(tmate, (.+)\)$/\1/'` + +if [ $SRC_VERSION != $VERSION ]; then + echo "Version mismatch: $SRC_VERSION != $VERSION" + exit 1 +fi + +RELEASE_NAME=tmate-$VERSION-static-linux-$PLATFORM +echo "Building $RELEASE_NAME" + +docker build . --tag local-$PLATFORM/tmate-build --build-arg PLATFORM=$PLATFORM + +mkdir -p releases +cd releases + +rm -rf $RELEASE_NAME +mkdir -p $RELEASE_NAME +docker run --rm local-$PLATFORM/tmate-build cat tmate > $RELEASE_NAME/tmate +chmod +x $RELEASE_NAME/tmate +tar -cf - $RELEASE_NAME | xz > tmate-$VERSION-static-linux-$PLATFORM.tar.xz + +rm -rf $RELEASE_NAME-symbols +mkdir -p $RELEASE_NAME-symbols +docker run --rm local-$PLATFORM/tmate-build cat tmate.symbols > $RELEASE_NAME-symbols/tmate.symbols +tar -cf - $RELEASE_NAME-symbols | xz > dbg-symbols-tmate-$VERSION-static-linux-$PLATFORM.tar.xz diff --git a/package_release.sh b/package_release.sh deleted file mode 100755 index f4186e3c..00000000 --- a/package_release.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -set -eux -VERSION=$1 -PLATFORM=$2 -RELEASE_NAME=tmate-$VERSION-static-linux-$PLATFORM - -# This assumes the follow command has already been run: -# docker build . --tag local-$PLATFORM/tmate-build --build-arg PLATFORM=$PLATFORM - -mkdir -p /tmp/tmate-release/$RELEASE_NAME -cd /tmp/tmate-release -docker run --rm local-$PLATFORM/tmate-build cat tmate > $RELEASE_NAME/tmate -chmod +x $RELEASE_NAME/tmate -tar -cf - $RELEASE_NAME | xz > tmate-$VERSION-static-linux-$PLATFORM.tar.xz