aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-11-24 11:39:17 +0100
committerGitHub <noreply@github.com>2020-11-24 11:39:17 +0100
commit28aa4f13095eb69438d47f30663f13bd8780c0c1 (patch)
tree90b16efb6be9a8b785eeed526c13831446f7f615
parent2414eb2bb655588b4b7e9fe86bba70592bd7f911 (diff)
parent452f1dbb258b573c97ad0083a891b43d0b543cd1 (diff)
downloadPROJ-28aa4f13095eb69438d47f30663f13bd8780c0c1.tar.gz
PROJ-28aa4f13095eb69438d47f30663f13bd8780c0c1.zip
Merge pull request #2448 from rouault/gha_mingw_w64
CI: move mingw job to GitHub actions
-rw-r--r--.github/workflows/mingw_w64.yml24
-rwxr-xr-x.github/workflows/mingw_w64/start.sh117
-rw-r--r--.travis.yml7
-rw-r--r--src/mutex.cpp18
-rwxr-xr-xtravis/mingw32/after_success.sh5
-rwxr-xr-xtravis/mingw32/before_install.sh15
-rwxr-xr-xtravis/mingw32/install.sh59
7 files changed, 150 insertions, 95 deletions
diff --git a/.github/workflows/mingw_w64.yml b/.github/workflows/mingw_w64.yml
new file mode 100644
index 00000000..8e323efa
--- /dev/null
+++ b/.github/workflows/mingw_w64.yml
@@ -0,0 +1,24 @@
+name: mingw_w64 build
+
+on: [push, pull_request]
+
+jobs:
+
+ mingw_w64_build:
+ runs-on: ubuntu-latest
+ if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Cache
+ uses: actions/cache@v2
+ id: cache
+ with:
+ path: |
+ ${{ github.workspace }}/ccache.tar.gz
+ key: ${{ runner.os }}-cache-mingw_w64-${{ github.run_id }}
+ restore-keys: ${{ runner.os }}-cache-mingw_w64-
+
+ - name: Build
+ run: docker run -e CI -e TRAVIS_OS_NAME=linux -e BUILD_NAME=mingw_w64 -e WORK_DIR="$PWD" -v $PWD:$PWD ubuntu:18.04 $PWD/.github/workflows/mingw_w64/start.sh
diff --git a/.github/workflows/mingw_w64/start.sh b/.github/workflows/mingw_w64/start.sh
new file mode 100755
index 00000000..e6d04ff0
--- /dev/null
+++ b/.github/workflows/mingw_w64/start.sh
@@ -0,0 +1,117 @@
+#!/bin/sh
+
+set -e
+
+SCRIPT_DIR=$(dirname "$0")
+case $SCRIPT_DIR in
+ "/"*)
+ ;;
+ ".")
+ SCRIPT_DIR=$(pwd)
+ ;;
+ *)
+ SCRIPT_DIR=$(pwd)/$(dirname "$0")
+ ;;
+esac
+
+apt-get update -y
+DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+ sudo wget tzdata
+
+USER=root
+export USER
+
+cd "$WORK_DIR"
+
+if test -f "$WORK_DIR/ccache.tar.gz"; then
+ echo "Restoring ccache..."
+ (cd $HOME && tar xzf "$WORK_DIR/ccache.tar.gz")
+fi
+
+export PROJ_DB_CACHE_DIR="$HOME/.ccache"
+
+sudo apt-get install -y --no-install-recommends \
+ ccache \
+ binutils-mingw-w64-x86-64 \
+ gcc-mingw-w64-x86-64 \
+ g++-mingw-w64-x86-64 \
+ g++-mingw-w64 \
+ mingw-w64-tools \
+ wine-stable \
+ make autoconf automake libtool zip \
+ sqlite3 \
+ curl ca-certificates
+
+# Select posix/pthread for std::mutex
+update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
+update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
+
+ccache -M 500M
+ccache -s
+
+MINGW_ARCH=x86_64-w64-mingw32
+MINGW_PREFIX=/usr/lib/gcc/$MINGW_ARCH/7.3-posix
+
+export CCACHE_CPP2=yes
+export CC="ccache $MINGW_ARCH-gcc"
+export CXX="ccache $MINGW_ARCH-g++"
+export LD=$MINGW_ARCH-ld
+
+UNAME="$(uname)" || UNAME=""
+NPROC=$(nproc);
+echo "NPROC=${NPROC}"
+export MAKEFLAGS="-j ${NPROC}"
+
+# prepare wine environment
+export WINE_PREFIX="$HOME/.wine"
+WINE_SYSDIR=$WINE_PREFIX/drive_c/windows
+wine64 cmd /c dir
+ln -s $MINGW_PREFIX/libstdc++-6.dll $WINE_SYSDIR
+ln -s $MINGW_PREFIX/libgcc_s_seh-1.dll $WINE_SYSDIR
+ln -s $MINGW_PREFIX/libgcc_s_sjlj-1.dll $WINE_SYSDIR
+ln -s /usr/$MINGW_ARCH/lib/libwinpthread-1.dll $WINE_SYSDIR
+
+# build zlib
+wget https://github.com/madler/zlib/archive/v1.2.11.tar.gz
+tar xzf v1.2.11.tar.gz
+(cd zlib-1.2.11 && sudo make install -fwin32/Makefile.gcc SHARED_MODE=1 PREFIX=x86_64-w64-mingw32- DESTDIR=/usr/$MINGW_ARCH/)
+sudo mkdir -p /usr/$MINGW_ARCH/include
+sudo mkdir -p /usr/$MINGW_ARCH/lib
+sudo cp /usr/$MINGW_ARCH/*.h /usr/$MINGW_ARCH/include
+sudo cp /usr/$MINGW_ARCH/libz.* /usr/$MINGW_ARCH/lib
+ln -s /usr/$MINGW_ARCH/zlib1.dll $WINE_SYSDIR
+
+# build libtiff
+wget https://download.osgeo.org/libtiff/tiff-4.1.0.tar.gz
+tar xzf tiff-4.1.0.tar.gz
+(cd tiff-4.1.0 && ./configure --host=$MINGW_ARCH --prefix=/usr/$MINGW_ARCH && make && sudo make install)
+ln -s /usr/$MINGW_ARCH/bin/libtiff-5.dll $WINE_SYSDIR
+
+# build sqlite3
+wget https://sqlite.org/2018/sqlite-autoconf-3250100.tar.gz
+tar xzf sqlite-autoconf-3250100.tar.gz
+(cd sqlite-autoconf-3250100 &&
+./configure --host=$MINGW_ARCH --prefix=/usr/$MINGW_ARCH && make && sudo make install)
+ln -s /usr/$MINGW_ARCH/bin/libsqlite3-0.dll $WINE_SYSDIR
+
+# prepare build files
+./autogen.sh
+# autoconf build
+mkdir build_autoconf
+cd build_autoconf
+CFLAGS="-Werror" CXXFLAGS="-Werror" ../configure --host=$MINGW_ARCH --prefix=/tmp/proj_autoconf_install --without-curl
+make
+make install
+make dist-all
+find /tmp/proj_autoconf_install
+(cd test; make)
+cp -r ../data/tests /tmp/proj_autoconf_install/share/proj
+cp ../data/tests/egm96_15_downsampled.gtx /tmp/proj_autoconf_install/share/proj/egm96_15.gtx
+cp ../data/tests/ntv2_0_downsampled.gsb /tmp/proj_autoconf_install/share/proj/ntv2_0.gsb
+wine64 test/unit/test_cpp_api.exe
+
+ccache -s
+
+echo "Saving ccache..."
+rm -f "$WORK_DIR/ccache.tar.gz"
+(cd $HOME && tar czf "$WORK_DIR/ccache.tar.gz" .ccache)
diff --git a/.travis.yml b/.travis.yml
index 1053ce1e..c2f2b69d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -83,13 +83,6 @@ matrix:
- DETAILS="linux, arm64"
- os: linux
- dist: xenial
- compiler: gcc
- env:
- - BUILD_NAME=mingw32
- - DETAILS="mingw32"
-
- - os: linux
compiler: gcc
dist: xenial
env:
diff --git a/src/mutex.cpp b/src/mutex.cpp
index da415e55..60ed5be1 100644
--- a/src/mutex.cpp
+++ b/src/mutex.cpp
@@ -184,7 +184,7 @@ void pj_cleanup_lock()
#include <windows.h>
-static HANDLE mutex_lock = NULL;
+static HANDLE mutex_lock = nullptr;
#if _WIN32_WINNT >= 0x0600
@@ -199,7 +199,7 @@ static BOOL CALLBACK pj_create_lock(PINIT_ONCE InitOnce,
(void)InitOnce;
(void)Parameter;
(void)Context;
- mutex_lock = CreateMutex( NULL, FALSE, NULL );
+ mutex_lock = CreateMutex( nullptr, FALSE, nullptr );
return TRUE;
}
#endif
@@ -213,10 +213,10 @@ static void pj_init_lock()
{
#if _WIN32_WINNT >= 0x0600
static INIT_ONCE sInitOnce = INIT_ONCE_STATIC_INIT;
- InitOnceExecuteOnce( &sInitOnce, pj_create_lock, NULL, NULL );
+ InitOnceExecuteOnce( &sInitOnce, pj_create_lock, nullptr, nullptr );
#else
- if( mutex_lock == NULL )
- mutex_lock = CreateMutex( NULL, FALSE, NULL );
+ if( mutex_lock == nullptr )
+ mutex_lock = CreateMutex( nullptr, FALSE, nullptr );
#endif
}
@@ -228,7 +228,7 @@ static void pj_init_lock()
void pj_acquire_lock()
{
- if( mutex_lock == NULL )
+ if( mutex_lock == nullptr )
pj_init_lock();
WaitForSingleObject( mutex_lock, INFINITE );
@@ -242,7 +242,7 @@ void pj_acquire_lock()
void pj_release_lock()
{
- if( mutex_lock == NULL )
+ if( mutex_lock == nullptr )
pj_init_lock();
else
ReleaseMutex( mutex_lock );
@@ -253,10 +253,10 @@ void pj_release_lock()
/************************************************************************/
void pj_cleanup_lock()
{
- if( mutex_lock != NULL )
+ if( mutex_lock != nullptr )
{
CloseHandle( mutex_lock );
- mutex_lock = NULL;
+ mutex_lock = nullptr;
}
}
diff --git a/travis/mingw32/after_success.sh b/travis/mingw32/after_success.sh
deleted file mode 100755
index 9618f673..00000000
--- a/travis/mingw32/after_success.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-set -e
-
-# nothing
diff --git a/travis/mingw32/before_install.sh b/travis/mingw32/before_install.sh
deleted file mode 100755
index f33d18ff..00000000
--- a/travis/mingw32/before_install.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-set -e
-
-./travis/before_install_apt.sh
-./travis/before_install_pip.sh
-
-sudo apt-get install -qq \
- wget \
- binutils-mingw-w64-x86-64 \
- gcc-mingw-w64-x86-64 \
- g++-mingw-w64-x86-64 \
- mingw-w64-tools \
- wine1.4-amd64 \
- sqlite3
diff --git a/travis/mingw32/install.sh b/travis/mingw32/install.sh
deleted file mode 100755
index 67873dd1..00000000
--- a/travis/mingw32/install.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-
-set -e
-
-unset CC
-unset CXX
-
-export CCACHE_CPP2=yes
-export PROJ_DB_CACHE_DIR="$HOME/.ccache"
-
-MINGW_ARCH=x86_64-w64-mingw32
-MINGW_PREFIX=/usr/lib/gcc/$MINGW_ARCH/5.3-posix
-
-# prepare wine environment
-WINE_SYSDIR=$HOME/.wine/drive_c/windows
-wine64 cmd /c dir
-ln -s $MINGW_PREFIX/libstdc++-6.dll $WINE_SYSDIR
-ln -s $MINGW_PREFIX/libgcc_s_seh-1.dll $WINE_SYSDIR
-ln -s $MINGW_PREFIX/libgcc_s_sjlj-1.dll $WINE_SYSDIR
-ln -s /usr/$MINGW_ARCH/lib/libwinpthread-1.dll $WINE_SYSDIR
-
-# build zlib
-wget https://github.com/madler/zlib/archive/v1.2.11.tar.gz
-tar xzf v1.2.11.tar.gz
-(cd zlib-1.2.11 && sudo make install -fwin32/Makefile.gcc SHARED_MODE=1 PREFIX=x86_64-w64-mingw32- DESTDIR=/usr/$MINGW_ARCH/)
-sudo mkdir -p /usr/$MINGW_ARCH/include
-sudo mkdir -p /usr/$MINGW_ARCH/lib
-sudo cp /usr/$MINGW_ARCH/*.h /usr/$MINGW_ARCH/include
-sudo cp /usr/$MINGW_ARCH/libz.* /usr/$MINGW_ARCH/lib
-ln -s /usr/$MINGW_ARCH/zlib1.dll $WINE_SYSDIR
-
-# build libtiff
-wget https://download.osgeo.org/libtiff/tiff-4.1.0.tar.gz
-tar xzf tiff-4.1.0.tar.gz
-(cd tiff-4.1.0 && ./configure --host=$MINGW_ARCH --prefix=/usr/$MINGW_ARCH && make -j2 && sudo make install)
-ln -s /usr/$MINGW_ARCH/bin/libtiff-5.dll $WINE_SYSDIR
-
-# build sqlite3
-wget https://sqlite.org/2018/sqlite-autoconf-3250100.tar.gz
-tar xzf sqlite-autoconf-3250100.tar.gz
-(cd sqlite-autoconf-3250100 && CC="ccache $MINGW_ARCH-gcc" CXX="ccache $MINGW_ARCH-g++" LD=$MINGW_ARCH-ld
-./configure --host=$MINGW_ARCH --prefix=/usr/$MINGW_ARCH && make -j2 && sudo make install)
-ln -s /usr/$MINGW_ARCH/bin/libsqlite3-0.dll $WINE_SYSDIR
-
-# prepare build files
-./autogen.sh
-# autoconf build
-mkdir build_autoconf
-cd build_autoconf
-CC="ccache $MINGW_ARCH-gcc" CXX="ccache $MINGW_ARCH-g++" LD=$MINGW_ARCH-ld ../configure --host=$MINGW_ARCH --prefix=/tmp/proj_autoconf_install --without-curl
-make -j2
-make install
-make dist-all
-find /tmp/proj_autoconf_install
-(cd test; make -j2)
-cp -r ../data/tests /tmp/proj_autoconf_install/share/proj
-cp ../data/tests/egm96_15_downsampled.gtx /tmp/proj_autoconf_install/share/proj/egm96_15.gtx
-cp ../data/tests/ntv2_0_downsampled.gsb /tmp/proj_autoconf_install/share/proj/ntv2_0.gsb
-test/unit/test_cpp_api.exe