Commit 4628461383855610f87c8df5c64535f521056a32

Authored by Jay Berkenbilt
1 parent e7adaff7

Set up Azure Pipelines

Use free Azure Pipelines to do Linux, Windows, and Mac build and test
and to generate Windows binary distributions.
ChangeLog
  1 +2018-10-11 Jay Berkenbilt <ejb@ql.org>
  2 +
  3 + * Add build in Azure Pipelines, now that it is free for open
  4 + source projects.
  5 +
1 6 2018-08-18 Jay Berkenbilt <ejb@ql.org>
2 7  
3 8 * 8.2.1: release
... ...
README.md
1   -# QPDF [![Build Status](https://travis-ci.org/qpdf/qpdf.svg?branch=master)](https://travis-ci.org/qpdf/qpdf)
  1 +
  2 +# QPDF
2 3  
3 4 [![QPDF](logo/qpdf.svg)](http://qpdf.sourceforge.net)
4 5  
  6 +[![Build status]()]
  7 +
  8 +[![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)
  9 +
5 10 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.
6 11  
7 12 QPDF is copyright (c) 2005-2018 Jay Berkenbilt
... ...
azure-pipelines.yml 0 → 100644
  1 +jobs:
  2 +- job: Linux
  3 + pool:
  4 + vmImage: ubuntu-16.04
  5 + steps:
  6 + - script: azure-pipelines/build-linux
  7 + displayName: 'Generate, build, and test'
  8 + - task: PublishBuildArtifacts@1
  9 + inputs:
  10 + pathtoPublish: '$(System.DefaultWorkingDirectory)/distfiles.zip'
  11 + artifactName: distfiles
  12 + displayName: 'Upload extra distribution files'
  13 +- job: Windows
  14 + pool:
  15 + vmImage: vs2017-win2016
  16 + strategy:
  17 + matrix:
  18 + msvc32:
  19 + wordsize: 32
  20 + tool: msvc
  21 + msvc64:
  22 + wordsize: 64
  23 + tool: msvc
  24 + mingw32:
  25 + wordsize: 32
  26 + tool: mingw
  27 + mingw64:
  28 + wordsize: 64
  29 + tool: mingw
  30 + maxParallel: 4
  31 + steps:
  32 + - bash: git config --global core.autocrlf input
  33 + displayName: 'Disable git autocrlf'
  34 + - checkout: self
  35 + displayName: 'Get sources'
  36 + - task: DownloadBuildArtifacts@0
  37 + displayName: 'Download distribution files'
  38 + inputs:
  39 + artifactName: distfiles
  40 + downloadPath: $(System.DefaultWorkingDirectory)
  41 + - script: azure-pipelines/build-windows.bat $(wordsize) $(tool)
  42 + displayName: 'Build, test, generate binary distributions'
  43 + - task: PublishBuildArtifacts@1
  44 + inputs:
  45 + pathtoPublish: '$(System.DefaultWorkingDirectory)/installers'
  46 + artifactName: installers
  47 + displayName: 'Upload binary distributions'
  48 + dependsOn: Linux
  49 + condition: succeeded()
  50 +- job: macOS
  51 + pool:
  52 + vmImage: macOS-10.13
  53 + steps:
  54 + - task: DownloadBuildArtifacts@0
  55 + displayName: 'Download distribution files'
  56 + inputs:
  57 + artifactName: distfiles
  58 + downloadPath: $(System.DefaultWorkingDirectory)
  59 + - script: azure-pipelines/build-mac
  60 + displayName: 'Mac build and test'
  61 + dependsOn: Linux
  62 + condition: succeeded()
... ...
azure-pipelines/build-linux 0 → 100755
  1 +#!/bin/bash
  2 +set -ex
  3 +sudo apt-get update
  4 +sudo apt-get -y install \
  5 + autoconf build-essential zlib1g-dev libjpeg-dev \
  6 + docbook-xsl fop xsltproc libxml2-utils inkscape imagemagick
  7 +./autogen.sh
  8 +./configure --enable-werror --enable-doc-maintenance \
  9 + --enable-show-failed-test-output
  10 +make -j$(nproc)
  11 +make -k check
  12 +make distfiles.zip
... ...
azure-pipelines/build-mac 0 → 100755
  1 +#!/bin/bash
  2 +set -ex
  3 +curl -L https://www.ijg.org/files/jpegsrc.v9c.tar.gz -o jpegsrc.v9c.tar.gz
  4 +tar xzf jpegsrc.v9c.tar.gz
  5 +cd jpeg-9c
  6 +./configure
  7 +make
  8 +sudo make install
  9 +cd ..
  10 +unzip distfiles/distfiles.zip
  11 +./configure --enable-werror --enable-show-failed-test-output
  12 +make -j$(nproc)
  13 +make -k check
... ...
azure-pipelines/build-windows 0 → 100755
  1 +#!/bin/bash
  2 +set -ex
  3 +cd $(dirname $0)/..
  4 +wordsize=$1
  5 +tool=$2
  6 +
  7 +if [[ $tool == mingw ]]; then
  8 + pacman -Sy --noconfirm make base-devel tar zip unzip
  9 + if [[ $wordsize == 64 ]]; then
  10 + pacman -Sy --noconfirm mingw-w64-x86_64-toolchain
  11 + PATH="/c/tools/msys64/mingw64/bin:$PATH"
  12 + else
  13 + pacman -Sy --noconfirm mingw-w64-i686-toolchain
  14 + PATH="/c/tools/msys64/mingw32/bin:$PATH"
  15 + fi
  16 + g++ -v
  17 +elif [[ $tool == msvc ]]; then
  18 + cl
  19 +fi
  20 +unzip distfiles/distfiles.zip
  21 +curl -L https://downloads.sourceforge.net/project/qpdf/external-libs/2017-08-21/qpdf-external-libs-bin.zip -o qpdf-external-libs-bin.zip
  22 +unzip qpdf-external-libs-bin.zip
  23 +cwd=`pwd`
  24 +PATH=$cwd/libqpdf/build:$PATH
  25 +
  26 +installdir=install-$tool$wordsize
  27 +rm -rf $installdir
  28 +./config-$tool --with-windows-wordsize=$wordsize --enable-show-failed-test-output
  29 +make -j$(nproc)
  30 +# XXX Fix test fragility -- it's always check status in the content preservation tests.
  31 +make -k check || echo "WARNING: TESTS FAILED"
  32 +make install
  33 +
  34 +v=`(cd $installdir; ls -d qpdf-*)`
  35 +cp -p README-windows-install.txt $installdir/$v/README.txt
  36 +mkdir installers
  37 +(cd $installdir; zip -r ../installers/$v-bin-$tool$wordsize.zip $v)
  38 +
  39 +set +x
  40 +ls -l installers
... ...
azure-pipelines/build-windows.bat 0 → 100644
  1 +@echo on
  2 +@rem Usage: build-windows {32|64} {msvc|mingw}
  3 +if %2 == msvc (
  4 + if %1 == 64 (
  5 + call "%VS140COMNTOOLS%\..\..\VC\bin\amd64\vcvars64.bat"
  6 + ) else (
  7 + call "%VS140COMNTOOLS%\..\..\VC\bin\vcvars32.bat"
  8 + )
  9 + choco install zip
  10 + bash ./azure-pipelines/build-windows %1 %2
  11 +) else (
  12 + @rem The vs2017-win2016 pool has an ancient 64-bit-only mingw.
  13 + @rem Install msys2 so we can get current gcc toolchains.
  14 + choco install msys2
  15 + C:\tools\msys64\usr\bin\env.exe MSYSTEM=MINGW64 /bin/bash -l %CD%/azure-pipelines/build-windows %1 %2
  16 +)
... ...