Mercurial > hg > tony
changeset 625:72f85d34a922
Merge
author | Chris Cannam |
---|---|
date | Thu, 10 Oct 2019 13:39:08 +0100 |
parents | bd18e52aa382 (current diff) cccac82528b9 (diff) |
children | fdcb31f2b559 |
files | |
diffstat | 5 files changed, 141 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/linux/build-and-test-deb.sh Thu Oct 10 13:39:08 2019 +0100 @@ -0,0 +1,49 @@ +#!/bin/bash +# +# Docker required + +set -eu + +current=$(hg id | awk '{ print $1; }') +release=$(perl -p -e 's/^[^"]*"([^"]*)".*$/$1/' version.h) + +case "$current" in + *+) echo "ERROR: Current working copy has been modified - unmodified copy required so we know we can check it out separately and obtain the same contents"; exit 2;; + *);; +esac + +echo +echo "Building Debian deb archive from revision $current..." + +dockerdir=deploy/linux/docker + +cat "$dockerdir"/Dockerfile_deb.in | \ + perl -p -e "s/\[\[REVISION\]\]/$current/g" | \ + perl -p -e "s/\[\[RELEASE\]\]/$release/g" > \ + "$dockerdir"/Dockerfile_deb.gen + +cat "$dockerdir"/Dockerfile_test_deb.in | \ + perl -p -e "s/\[\[REVISION\]\]/$current/g" | \ + perl -p -e "s/\[\[RELEASE\]\]/$release/g" > \ + "$dockerdir"/Dockerfile_test_deb.gen + +fgrep 'hg.sr.ht' ~/.ssh/known_hosts > "$dockerdir"/known_hosts +cp ~/.ssh/id_rsa_build "$dockerdir"/id_rsa_build +chmod 600 "$dockerdir"/known_hosts "$dockerdir"/id_rsa_build +trap "rm $dockerdir/known_hosts $dockerdir/id_rsa_build" 0 + +dockertag="cannam/tony-deb-$current" + +sudo docker build -t "$dockertag" -f "$dockerdir"/Dockerfile_deb.gen "$dockerdir" + +outdir="$dockerdir/output" +mkdir -p "$outdir" + +container=$(sudo docker create "$dockertag") + +sudo docker cp "$container":output-deb.tar "$outdir" +sudo docker rm "$container" + +( cd "$outdir" ; tar xf output-deb.tar && rm -f output-deb.tar ) + +sudo docker build -f "$dockerdir"/Dockerfile_test_deb.gen "$dockerdir"
--- a/deploy/linux/deploy-deb.sh Thu Oct 10 13:38:59 2019 +0100 +++ b/deploy/linux/deploy-deb.sh Thu Oct 10 13:39:08 2019 +0100 @@ -1,8 +1,6 @@ #!/bin/bash # -# Run this from the build root - -set -e +# Run this from the build root (with sudo, I think) usage() { echo @@ -10,7 +8,7 @@ echo echo "$0 <version> <architecture>" echo - echo "For example: $0 1.0cc1-1 amd64" + echo "For example: $0 2.4cc1-1 amd64" echo exit 2 } @@ -22,7 +20,7 @@ usage fi -set -u +set -eu program=tony plugins="chp pyin" @@ -42,17 +40,20 @@ cp -r "$depdir"/deb-skeleton/* "$targetdir"/ -mkdir -p "$targetdir"/usr/bin "$targetdir"/usr/share/pixmaps +mkdir -p "$targetdir"/usr/bin +mkdir -p "$targetdir"/usr/lib/"$program" +mkdir -p "$targetdir"/usr/share/pixmaps cp "$program" "$targetdir"/usr/bin/ -for plug in $plugins; do - cp "$plug/$plug.so" "$targetdir"/usr/lib/"$program"/ +for p in $plugins ; do + cp "$p.so" "$targetdir"/usr/lib/"$program"/ done -cp icons/"$program"-128x128.png "$targetdir"/usr/share/pixmaps/ +cp icons/"$program"-icon.svg "$targetdir"/usr/share/pixmaps/ +cp icons/"$program"-128x128.png "$targetdir"/usr/share/pixmaps/"$program"-icon.png cp "$program".desktop "$targetdir"/usr/share/applications/ -cp README "$targetdir"/usr/share/doc/"$program"/ +cp README.md "$targetdir"/usr/share/doc/"$program"/ perl -i -p -e "s/Architecture: .*/Architecture: $arch/" "$targetdir"/DEBIAN/control @@ -60,7 +61,11 @@ perl -i -p -e "s/Depends: .*/$deps/" "$targetdir"/DEBIAN/control +control_ver=${version%-?} + +perl -i -p -e "s/Version: .*/Version: $control_ver/" "$targetdir"/DEBIAN/control + bash "$depdir"/fix-lintian-bits.sh "$targetdir" -sudo dpkg-deb --build "$targetdir" && lintian "$targetdir".deb +dpkg-deb --build "$targetdir" && lintian "$targetdir".deb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/linux/docker/Dockerfile_deb.in Thu Oct 10 13:39:08 2019 +0100 @@ -0,0 +1,59 @@ +FROM ubuntu:14.04 +MAINTAINER Chris Cannam <cannam@all-day-breakfast.com> +RUN apt-get update && \ + apt-get install -y \ + software-properties-common \ + build-essential \ + libbz2-dev \ + libfftw3-dev \ + libfishsound1-dev \ + libid3tag0-dev \ + liblo-dev \ + liblrdf0-dev \ + libmad0-dev \ + liboggz2-dev \ + libopus-dev \ + libopusfile-dev \ + libpulse-dev \ + libasound2-dev \ + libjack-dev \ + libsamplerate-dev \ + libsndfile-dev \ + libsord-dev \ + libxml2-utils \ + libgl1-mesa-dev \ + raptor-utils \ + librubberband-dev \ + portaudio19-dev \ + qt5-default libqt5svg5-dev \ + git \ + mercurial \ + curl wget \ + mlton \ + autoconf automake libtool lintian + +RUN apt-get clean && rm -rf /var/lib/apt/lists/* + +RUN locale-gen en_US.UTF-8 +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US:en +ENV LC_ALL en_US.UTF-8 + +RUN hg clone -r[[REVISION]] https://code.soundsoftware.ac.uk/hg/tony + +WORKDIR /root + +COPY id_rsa_build .ssh/id_rsa_build +COPY known_hosts .ssh/known_hosts +RUN chmod 600 .ssh/id_rsa_build .ssh/known_hosts +RUN echo '{"accounts": {"sourcehut": "~breakfastquay"}}' > .repoint.json +RUN ( echo '[ui]' ; echo 'ssh = ssh -i /root/.ssh/id_rsa_build' ) > .hgrc + +RUN rm -f /usr/lib/x86_64-linux-gnu/librubberband.so* + +WORKDIR /tony +RUN ./configure +RUN make -j3 + +RUN deploy/linux/deploy-deb.sh [[RELEASE]] amd64 +RUN tar cvf output-deb.tar *.deb && cp output-deb.tar ..
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/linux/docker/Dockerfile_test_deb.in Thu Oct 10 13:39:08 2019 +0100 @@ -0,0 +1,13 @@ +FROM ubuntu:18.04 + +# Ensure that everything subsequent is re-run when a new revision is +# being built (rather than being cached) - so as to avoid potential +# mismatches between results of apt-get update and the package +# dependency installation itself +RUN echo [[REVISION]] + +RUN apt-get update +ADD output/tony_[[RELEASE]]_amd64.deb tony_[[RELEASE]]_amd64.deb +RUN apt install -y ./tony_[[RELEASE]]_amd64.deb +RUN /usr/bin/tony --version +
--- a/deploy/linux/fix-lintian-bits.sh Thu Oct 10 13:38:59 2019 +0100 +++ b/deploy/linux/fix-lintian-bits.sh Thu Oct 10 13:39:08 2019 +0100 @@ -4,14 +4,15 @@ [ -d "$dir" ] || exit 1 +set -eu + strip "$dir"/usr/bin/* -strip "$dir"/usr/lib/*/*.so sz=`du -sx --exclude DEBIAN "$dir" | awk '{ print $1; }'` perl -i -p -e "s/Installed-Size: .*/Installed-Size: $sz/" "$dir"/DEBIAN/control find "$dir" -name \*~ -exec rm \{\} \; -sudo chown -R root.root "$dir"/* +chown -R root.root "$dir"/* -sudo chmod -R g-w "$dir"/* +chmod -R g-w "$dir"/*