diff --git a/.appveyor.yml b/.appveyor.yml index 464ee8a..3d8c595 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -16,6 +16,7 @@ skip_commits: - 'documentation/*' - '**/*.rst' - '**/*.md' + - '.github/*' #---------------------------------# # build matrix configuration # diff --git a/.ci b/.ci index 4cd9499..ad8dd4a 160000 --- a/.ci +++ b/.ci @@ -1 +1 @@ -Subproject commit 4cd9499df52505379768cd38aaea2bb9d1ff55fd +Subproject commit ad8dd4a136348c7dc889fdc03a645e0f0358a2dc diff --git a/.ci-local/libevent.py b/.ci-local/libevent.py index 8eb1650..946216f 100644 --- a/.ci-local/libevent.py +++ b/.ci-local/libevent.py @@ -44,14 +44,16 @@ print('PATH') [print(" ", K, "=", V) for K, V in env.items()] # update to specific libevent version -if 'LIBEVENT_TAG' in os.environ: - tag = remote = os.environ['LIBEVENT_TAG'] - if tag.startswith('origin/'): - remote = tag[7:] +libevent_tag = os.environ.get('LIBEVENT_TAG', '') +if len(libevent_tag): + if libevent_tag.startswith('origin/'): + libevent_tag = libevent_tag[7:] - check_call('git fetch origin '+remote, + check_call('git fetch --unshallow --tags origin', shell=True, cwd='bundle/libevent') - check_call('git reset --hard '+tag, + check_call('git log -n1 '+libevent_tag+' --', + shell=True, cwd='bundle/libevent') + check_call('git reset --hard '+libevent_tag+' --', shell=True, cwd='bundle/libevent') check_call('make -C bundle libevent', shell=True, env=env) @@ -62,3 +64,10 @@ if os.environ.get('WINE')=='64': F.write('\nCROSS_COMPILER_TARGET_ARCHS+=windows-x64-mingw\n') check_call('make -C bundle libevent.windows-x64-mingw', shell=True, env=env) + +elif os.environ.get('WINE')=='32': + print('Enable mingw32') + with open('configure/CONFIG_SITE.local', 'a') as F: + F.write('\nCROSS_COMPILER_TARGET_ARCHS+=win32-x86-mingw\n') + + check_call('make -C bundle libevent.win32-x86-mingw', shell=True, env=env) diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml new file mode 100644 index 0000000..fb81012 --- /dev/null +++ b/.github/workflows/ci-scripts-build.yml @@ -0,0 +1,134 @@ +# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts +# (see: https://github.com/epics-base/ci-scripts) + +# This is YAML - indentation levels are crucial + +# Set the 'name:' properties to values that work for you (pvxs) + +name: PVXS + +# Trigger on pushes and PRs to any branch +on: + push: + paths-ignore: + - .appveyor.yml + pull_request: + +env: + SETUP_PATH: .ci-local + CMP: gcc + _PVXS_ABORT_ON_CRIT: 1 + PVXS_LOG: pvxs.*=WARN + +jobs: + build-pvxs: + name: ${{ matrix.os }}/${{ matrix.cmp }}/${{ matrix.configuration }}/${{ matrix.base }}/${{ matrix.wine }}/${{ matrix.libevent }} + runs-on: ${{ matrix.os }} + # Set environment variables from matrix parameters + env: + CMP: ${{ matrix.cmp }} + BCFG: ${{ matrix.configuration }} + BASE: ${{ matrix.base }} + WINE: ${{ matrix.wine }} + LIBEVENT_TAG: ${{ matrix.libevent }} + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-20.04 + cmp: gcc + configuration: default + base: "7.0" + wine: "64" + + - os: ubuntu-20.04 + cmp: gcc + configuration: static + base: "7.0" + wine: "64" + + - os: ubuntu-20.04 + cmp: clang + configuration: default + base: "7.0" + + - os: ubuntu-20.04 + cmp: gcc + configuration: default + base: "7.0" + libevent: "release-2.0.22-stable" + + - os: ubuntu-20.04 + cmp: gcc + configuration: default + base: "3.15" + + - os: ubuntu-20.04 + cmp: gcc + configuration: default + base: "3.14" + + - os: ubuntu-16.04 + cmp: gcc-4.8 + utoolchain: true + configuration: default + base: "7.0" + + - os: ubuntu-16.04 + cmp: gcc-4.9 + utoolchain: true + configuration: default + base: "7.0" + + - os: ubuntu-20.04 + cmp: gcc-8 + utoolchain: true + configuration: default + base: "7.0" + + - os: ubuntu-20.04 + cmp: clang + configuration: default + base: "7.0" + + - os: macos-latest + cmp: clang + configuration: default + base: "7.0" + + - os: windows-2019 + cmp: vs2019 + configuration: default + base: "7.0" + + - os: windows-2019 + cmp: vs2019 + configuration: static + base: "7.0" + + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: "apt-get install" + run: sudo apt-get -y install g++-mingw-w64-x86-64 cmake gdb + if: runner.os == 'Linux' + - name: "apt-get install ${{ matrix.cmp }}" + run: | + sudo apt-get -y install software-properties-common + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + sudo apt-get -y install ${{ matrix.cmp }} + if: matrix.utoolchain + - name: Prepare and compile dependencies + run: python .ci/cue.py prepare + - name: Build libevent + run: python .ci/cue.py exec python .ci-local/libevent.py + - name: Build main module + run: python .ci/cue.py build + - name: Run main module tests + run: python .ci/cue.py --add-path "{TOP}\bundle\usr\{EPICS_HOST_ARCH}\lib" test + - name: Collect and show test results + run: python .ci/cue.py test-results + - name: CDT Check + run: ./.ci-local/cdt-check.sh + if: runner.os == 'Linux' diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index febf2c9..0000000 --- a/.travis.yml +++ /dev/null @@ -1,203 +0,0 @@ -# .travis.yml for use with EPICS Base ci-scripts -# (see: https://github.com/epics-base/ci-scripts) - -# This is YAML - indentation levels are crucial - -language: cpp -compiler: gcc -dist: bionic -os: linux - -_anchors: - before_install_win: &before_install_win - - choco install python - # https://travis-ci.community/t/windows-builds-refreshenv-command-not-found/5803/4 - - eval $(powershell -NonInteractive -Command 'write("export PATH=`"" + ([Environment]::GetEnvironmentVariable("PATH","Machine") + ";" + [Environment]::GetEnvironmentVariable("PATH","User")).replace("\","/").replace("C:","/c").replace(";",":") + ":`$PATH`"")') - - python -V - - python -m pip install git+https://github.com/mdavidsaver/ci-core-dumper#egg=ci-core-dumper - - before_install_lin: &before_install_lin - - sudo python -m pip install git+https://github.com/mdavidsaver/ci-core-dumper#egg=ci-core-dumper - - addons: &addons_native - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gdb - - cmake -cache: - directories: - - $HOME/.cache - -env: - global: - - SETUP_PATH=.ci-local:.ci - - VV=1 - - _PVXS_ABORT_ON_CRIT=1 - - PVXS_LOG=*=WARN - -install: - - python .ci/cue.py prepare - - python .ci/cue.py exec python .ci-local/libevent.py - -script: - - ulimit -c unlimited - - python .ci/cue.py build - - python .ci/cue.py --add-path "{TOP}\bundle\usr\{EPICS_HOST_ARCH}\lib" test - - python .ci/cue.py test-results - - ./.ci-local/cdt-check.sh - -# If you need to do more during install and build, -# add a local directory to your module and do e.g. -# - ./.ci-local/travis/install-extras.sh - -# Define build jobs - -# Well-known variables to use -# SET source setup file -# EXTRA content will be added to make command line -# STATIC set to YES for static build (default: NO) -# TEST set to NO to skip running the tests (default: YES) -# VV set to make build scripts verbose (default: unset) - -# Usually from setup files, but may be specified or overridden -# on a job line -# MODULES list of dependency modules -# BASE branch or release tag name of the EPICS Base to use -# branch or release tag for a specific module -# ... see README for setup file syntax description - -jobs: - include: - -# Windows builds - - - env: BASE=7.0 - os: windows - compiler: vs2017 - before_install: *before_install_win - - - env: BASE=7.0 - os: windows - before_install: *before_install_win - -# Different configurations of default gcc and clang - - - env: BASE=7.0 LIBEVENT_TAG=release-2.1.11-stable - addons: *addons_native - before_install: *before_install_lin - - - env: BASE=3.15 - addons: *addons_native - before_install: *before_install_lin - - - env: BASE=3.14 - addons: *addons_native - before_install: *before_install_lin - - - env: BASE=7.0 - compiler: clang - addons: *addons_native - before_install: *before_install_lin - -# Cross-compilations to Windows using MinGW and WINE - - - env: BASE=7.0 WINE=64 TEST=NO BCFG=static - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gdb - - cmake - - g++-mingw-w64-x86-64 - before_install: *before_install_lin - - - env: BASE=7.0 WINE=64 TEST=NO - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gdb - - cmake - - g++-mingw-w64-x86-64 - before_install: *before_install_lin - -# Other gcc versions (added as an extra package) - - - env: BASE=7.0 LIBEVENT_TAG=origin/patches-2.0 LIBEVENT_USE_CMAKE=NO - dist: trusty - compiler: gcc-4.8 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gdb - - cmake - - clang - - g++-4.8 - before_install: *before_install_lin - - - env: BASE=7.0 LIBEVENT_USE_CMAKE=NO - dist: trusty - compiler: gcc-4.9 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gdb - - cmake - - clang - - g++-4.9 - before_install: *before_install_lin - - - env: BASE=7.0 - compiler: gcc-6 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gdb - - cmake - - clang - - g++-6 - before_install: *before_install_lin - - - env: BASE=7.0 - compiler: gcc-7 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gdb - - cmake - - clang - - g++-7 - before_install: *before_install_lin - - - env: BASE=7.0 - compiler: gcc-8 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gdb - - cmake - - clang - - g++-8 - before_install: *before_install_lin - -# MacOS build - - - env: BASE=7.0 - os: osx - compiler: clang - addons: { homebrew: { packages: ["re2c"], update: true } } - before_install: *before_install_lin diff --git a/README.md b/README.md index bbaeca7..2fdc12d 100644 --- a/README.md +++ b/README.md @@ -7,5 +7,5 @@ Documentation - https://mdavidsaver.github.io/pvxs/ CI status -* https://travis-ci.org/mdavidsaver/pvxs +* https://github.com/mdavidsaver/pvxs/actions * https://ci.appveyor.com/project/mdavidsaver/pvxs diff --git a/bundle/Makefile b/bundle/Makefile index 0c94133..c5a1d2b 100644 --- a/bundle/Makefile +++ b/bundle/Makefile @@ -140,7 +140,7 @@ libevent.%: ../libevent/configuration [ -f Makefile ] || ../libevent/configure --prefix=$(abspath $(LIBEVENT_$(T_A))) $(CONFIGUREFLAGS) $(MAKE) install -../libevent/configuration: ../libevent/configure.ac +../libevent/configuration: (cd ../libevent && autoreconf -ivf) endif