From 4628461383855610f87c8df5c64535f521056a32 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Thu, 11 Oct 2018 13:35:07 -0400 Subject: [PATCH] Set up Azure Pipelines Use free Azure Pipelines to do Linux, Windows, and Mac build and test and to generate Windows binary distributions. --- ChangeLog | 5 +++ README.md | 7 +++- azure-pipelines.yml | 62 +++++++++++++++++++++++++++++++ azure-pipelines/build-linux | 12 ++++++ azure-pipelines/build-mac | 13 +++++++ azure-pipelines/build-windows | 40 ++++++++++++++++++++ azure-pipelines/build-windows.bat | 16 ++++++++ 7 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 azure-pipelines.yml create mode 100755 azure-pipelines/build-linux create mode 100755 azure-pipelines/build-mac create mode 100755 azure-pipelines/build-windows create mode 100644 azure-pipelines/build-windows.bat diff --git a/ChangeLog b/ChangeLog index e7addcd8..e445527f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-10-11 Jay Berkenbilt + + * Add build in Azure Pipelines, now that it is free for open + source projects. + 2018-08-18 Jay Berkenbilt * 8.2.1: release diff --git a/README.md b/README.md index e25754e5..009662e3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,12 @@ -# QPDF [![Build Status](https://travis-ci.org/qpdf/qpdf.svg?branch=master)](https://travis-ci.org/qpdf/qpdf) + +# QPDF [![QPDF](logo/qpdf.svg)](http://qpdf.sourceforge.net) +[![Build status]()] + +[![Build status](https://dev.azure.com/qpdf/qpdf/_apis/build/status/qpdf?branchName=master)](https://dev.azure.com/qpdf/qpdf/_build?definitionId=3&branchName=master) [![Travis Build Status](https://travis-ci.org/qpdf/qpdf.svg?branch=master)](https://travis-ci.org/qpdf/qpdf) + This is the QPDF package. Information about it can be found at http://qpdf.sourceforge.net. The source code repository is hosted at github: https://github.com/qpdf/qpdf. QPDF is copyright (c) 2005-2018 Jay Berkenbilt diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 00000000..c5d8d5ba --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,62 @@ +jobs: +- job: Linux + pool: + vmImage: ubuntu-16.04 + steps: + - script: azure-pipelines/build-linux + displayName: 'Generate, build, and test' + - task: PublishBuildArtifacts@1 + inputs: + pathtoPublish: '$(System.DefaultWorkingDirectory)/distfiles.zip' + artifactName: distfiles + displayName: 'Upload extra distribution files' +- job: Windows + pool: + vmImage: vs2017-win2016 + strategy: + matrix: + msvc32: + wordsize: 32 + tool: msvc + msvc64: + wordsize: 64 + tool: msvc + mingw32: + wordsize: 32 + tool: mingw + mingw64: + wordsize: 64 + tool: mingw + maxParallel: 4 + steps: + - bash: git config --global core.autocrlf input + displayName: 'Disable git autocrlf' + - checkout: self + displayName: 'Get sources' + - task: DownloadBuildArtifacts@0 + displayName: 'Download distribution files' + inputs: + artifactName: distfiles + downloadPath: $(System.DefaultWorkingDirectory) + - script: azure-pipelines/build-windows.bat $(wordsize) $(tool) + displayName: 'Build, test, generate binary distributions' + - task: PublishBuildArtifacts@1 + inputs: + pathtoPublish: '$(System.DefaultWorkingDirectory)/installers' + artifactName: installers + displayName: 'Upload binary distributions' + dependsOn: Linux + condition: succeeded() +- job: macOS + pool: + vmImage: macOS-10.13 + steps: + - task: DownloadBuildArtifacts@0 + displayName: 'Download distribution files' + inputs: + artifactName: distfiles + downloadPath: $(System.DefaultWorkingDirectory) + - script: azure-pipelines/build-mac + displayName: 'Mac build and test' + dependsOn: Linux + condition: succeeded() diff --git a/azure-pipelines/build-linux b/azure-pipelines/build-linux new file mode 100755 index 00000000..89be3c6b --- /dev/null +++ b/azure-pipelines/build-linux @@ -0,0 +1,12 @@ +#!/bin/bash +set -ex +sudo apt-get update +sudo apt-get -y install \ + autoconf build-essential zlib1g-dev libjpeg-dev \ + docbook-xsl fop xsltproc libxml2-utils inkscape imagemagick +./autogen.sh +./configure --enable-werror --enable-doc-maintenance \ + --enable-show-failed-test-output +make -j$(nproc) +make -k check +make distfiles.zip diff --git a/azure-pipelines/build-mac b/azure-pipelines/build-mac new file mode 100755 index 00000000..95ea884b --- /dev/null +++ b/azure-pipelines/build-mac @@ -0,0 +1,13 @@ +#!/bin/bash +set -ex +curl -L https://www.ijg.org/files/jpegsrc.v9c.tar.gz -o jpegsrc.v9c.tar.gz +tar xzf jpegsrc.v9c.tar.gz +cd jpeg-9c +./configure +make +sudo make install +cd .. +unzip distfiles/distfiles.zip +./configure --enable-werror --enable-show-failed-test-output +make -j$(nproc) +make -k check diff --git a/azure-pipelines/build-windows b/azure-pipelines/build-windows new file mode 100755 index 00000000..834c884f --- /dev/null +++ b/azure-pipelines/build-windows @@ -0,0 +1,40 @@ +#!/bin/bash +set -ex +cd $(dirname $0)/.. +wordsize=$1 +tool=$2 + +if [[ $tool == mingw ]]; then + pacman -Sy --noconfirm make base-devel tar zip unzip + if [[ $wordsize == 64 ]]; then + pacman -Sy --noconfirm mingw-w64-x86_64-toolchain + PATH="/c/tools/msys64/mingw64/bin:$PATH" + else + pacman -Sy --noconfirm mingw-w64-i686-toolchain + PATH="/c/tools/msys64/mingw32/bin:$PATH" + fi + g++ -v +elif [[ $tool == msvc ]]; then + cl +fi +unzip distfiles/distfiles.zip +curl -L https://downloads.sourceforge.net/project/qpdf/external-libs/2017-08-21/qpdf-external-libs-bin.zip -o qpdf-external-libs-bin.zip +unzip qpdf-external-libs-bin.zip +cwd=`pwd` +PATH=$cwd/libqpdf/build:$PATH + +installdir=install-$tool$wordsize +rm -rf $installdir +./config-$tool --with-windows-wordsize=$wordsize --enable-show-failed-test-output +make -j$(nproc) +# XXX Fix test fragility -- it's always check status in the content preservation tests. +make -k check || echo "WARNING: TESTS FAILED" +make install + +v=`(cd $installdir; ls -d qpdf-*)` +cp -p README-windows-install.txt $installdir/$v/README.txt +mkdir installers +(cd $installdir; zip -r ../installers/$v-bin-$tool$wordsize.zip $v) + +set +x +ls -l installers diff --git a/azure-pipelines/build-windows.bat b/azure-pipelines/build-windows.bat new file mode 100644 index 00000000..ba11b4fd --- /dev/null +++ b/azure-pipelines/build-windows.bat @@ -0,0 +1,16 @@ +@echo on +@rem Usage: build-windows {32|64} {msvc|mingw} +if %2 == msvc ( + if %1 == 64 ( + call "%VS140COMNTOOLS%\..\..\VC\bin\amd64\vcvars64.bat" + ) else ( + call "%VS140COMNTOOLS%\..\..\VC\bin\vcvars32.bat" + ) + choco install zip + bash ./azure-pipelines/build-windows %1 %2 +) else ( + @rem The vs2017-win2016 pool has an ancient 64-bit-only mingw. + @rem Install msys2 so we can get current gcc toolchains. + choco install msys2 + C:\tools\msys64\usr\bin\env.exe MSYSTEM=MINGW64 /bin/bash -l %CD%/azure-pipelines/build-windows %1 %2 +)