...
 
Commits (4463)

Too many changes to show.

To preserve performance only 315 of 315+ files are displayed.
FROM ligo/base:el7
LABEL name="LALSuite Nightly - EL7" \
maintainer="Adam Mercer <adam.mercer@ligo.org>" \
support="Reference Platform" \
date="20180506"
# add RPMs to container
COPY rpms /rpms
# install RPMs & cleanup
RUN yum makecache && \
yum -y localinstall /rpms/*.rpm && \
rm -rf /rpms && yum clean all
FROM ligo/base:stretch
LABEL name="LALSuite Nightly - Debian Stretch" \
maintainer="Adam Mercer <adam.mercer@ligo.org>" \
support="Reference Platform" \
date="20180506"
# add debian packages to container
COPY debs /debs
# install debs & cleanup
RUN apt-get update && \
dpkg -i /debs/*.deb || apt-get --assume-yes -f install && \
rm -rf /debs && rm -rf /var/lib/apts/lists/*
[Makefile]
bears = SpaceConsistencyBear
files = **Makefile.am
use_spaces = False
; vim: set ft=dosini :
[flake8]
select =
E9,
F401,
W2,
exclude =
__pycache__,
.git/,
*doxygen/filter_py.py,
lalapps/src/string/old/,
per-file-ignores =
__init__.py:F401,
lalburst/*:F401,
lalinspiral/*:F401,
lal/test/tools/resamp_10x4.eps filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S5-L1-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalpulsar/test/earth98.dat filter=lfs diff=lfs merge=lfs -text
lalsimulation/src/lalsimburst_btlwnbexamples.svg filter=lfs diff=lfs merge=lfs -text
lalapps/src/inspiral/MachoMasses.dat filter=lfs diff=lfs merge=lfs -text
lalapps/src/inspiral/test/HL-INJECTIONS_1234_INJ001-866088014-2633400.xml filter=lfs diff=lfs merge=lfs -text
lalapps/src/pulsar/CreateEphemeris/ephemMLDC.dat filter=lfs diff=lfs merge=lfs -text
lalframe/test/F-TEST-600000000-60.gwf filter=lfs diff=lfs merge=lfs -text
lalframe/test/H-CAL_REF_V03-734073939-64.gwf filter=lfs diff=lfs merge=lfs -text
lalapps/src/inspiral/inspsrcs100Mpc.errors filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S6-V1-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalburst/test/CLRindata.asc filter=lfs diff=lfs merge=lfs -text
lalinspiral/test/SpaceCovering.par filter=lfs diff=lfs merge=lfs -text
lalsimulation/src/lalsimburst_sinegaussianexamples.svg filter=lfs diff=lfs merge=lfs -text
lalapps/src/calibration/S4H1Filters.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/pulsar/HeterodyneSearch/H-CW_Injection-875206560-120.gwf filter=lfs diff=lfs merge=lfs -text
lalframe/test/H-CAL_FAC_V03-729273600-5094000.gwf filter=lfs diff=lfs merge=lfs -text
lalapps/src/calibration/S5H1_NoiseCompTimes.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/calibration/S5L1_NoiseCompTimes.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S6-L1-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalframe/test/F-TEST-600000060-60.gwf filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S6-H1-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalframe/test/L-CAL_REF_V03-731488397-64.gwf filter=lfs diff=lfs merge=lfs -text
lalsimulation/test/reviewed_waveforms.asc filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S5-H1H2-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/inspiral/BNSMasses.dat filter=lfs diff=lfs merge=lfs -text
lalapps/src/inspiral/inspsrcs100Mpc.errors filter=lfs diff=lfs merge=lfs -text
lalapps/src/pulsar/CreateEphemeris/ephemMLDC.dat filter=lfs diff=lfs merge=lfs -text
lalapps/src/pulsar/*/test*.tar.gz filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S5-H1H2-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S5-H2-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S5-L1-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S5-L1segments-cat1.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S5-V1-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S6-H1-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S6-L1-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S6-V1-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalframe/test/F-TEST-600000000-60.gwf filter=lfs diff=lfs merge=lfs -text
lalframe/test/F-TEST-600000060-60.gwf filter=lfs diff=lfs merge=lfs -text
lalframe/test/F-TEST-600000120-60.gwf filter=lfs diff=lfs merge=lfs -text
lalframe/test/H-CAL_FAC_V03-729273600-5094000.gwf filter=lfs diff=lfs merge=lfs -text
lalframe/test/H-CAL_REF_V03-734073939-64.gwf filter=lfs diff=lfs merge=lfs -text
lalframe/test/L-CAL_FAC_V03-729273600-5094000.gwf filter=lfs diff=lfs merge=lfs -text
lalapps/src/findchirp/L1response_psd.dat filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S5-H2-cat2.txt filter=lfs diff=lfs merge=lfs -text
lalapps/src/string/S5-L1segments-cat1.txt filter=lfs diff=lfs merge=lfs -text
lalframe/test/L-CAL_REF_V03-731488397-64.gwf filter=lfs diff=lfs merge=lfs -text
lalinference/test/data/2016_subset.xml.gz filter=lfs diff=lfs merge=lfs -text
lalapps/src/pulsar/Weave/TestInterpolating.tar.gz filter=lfs diff=lfs merge=lfs -text
lalapps/src/pulsar/Weave/TestNonInterpolating.tar.gz filter=lfs diff=lfs merge=lfs -text
lalapps/src/pulsar/Weave/TestSingleSegment.tar.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/earth00-40-DE430.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/earth00-40-DE405.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/sun00-19-DE405.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/sun00-19-DE414.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/sun00-40-DE430.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/earth00-19-DE414.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/earth00-40-DE200.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/earth00-40-DE421.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/sun00-19-DE200.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/sun00-40-DE200.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/te405_2000-2019.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/earth00-19-DE421.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/earth00-19-DE405.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/sun00-19-DE421.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/sun00-40-DE405.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/sun00-40-DE421.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/tdb_2000-2019.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/tdb_2000-2040.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/te405_2000-2040.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/src/earth00-19-DE200.dat.gz filter=lfs diff=lfs merge=lfs -text
lalinspiral/test/SpaceCovering.par filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/earth00-19-DE200.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/earth00-19-DE405.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/earth00-19-DE414.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/earth00-19-DE421.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/earth00-40-DE200.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/earth00-40-DE405.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/earth00-40-DE421.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/earth00-40-DE430.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/sun00-19-DE200.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/sun00-19-DE405.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/sun00-19-DE414.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/sun00-19-DE421.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/sun00-40-DE200.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/sun00-40-DE405.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/sun00-40-DE421.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/sun00-40-DE430.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/tdb_2000-2019.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/tdb_2000-2040.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/te405_2000-2019.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/lib/te405_2000-2040.dat.gz filter=lfs diff=lfs merge=lfs -text
lalpulsar/test/earth98.dat filter=lfs diff=lfs merge=lfs -text
lalsimulation/lib/lalsimburst_btlwnbexamples.svg filter=lfs diff=lfs merge=lfs -text
lalsimulation/lib/lalsimburst_sinegaussianexamples.svg filter=lfs diff=lfs merge=lfs -text
lalsimulation/test/reviewed_waveforms.asc filter=lfs diff=lfs merge=lfs -text
lal/test/tools/resamp_10x4.eps filter=lfs diff=lfs merge=lfs -text
.dirstamp
.DS_Store
.vscode
*.dSYM
*.egg-info
*.swp
*.trs
*~
.DS_Store
.dirstamp
/Makefile
/Makefile.in
/wheel/Makefile.in
__pycache__/
/_build/
/_inst/
/index.html
/lalsuite-*/
/lalsuiterc
TAGS
/Makefile
/Makefile.in
/wheel/*.whl
/wheel/build/
/wheel/destdir/
/wheel/Makefile
/wheel/Makefile.in
/wheel/setup.py
aclocal.m4
auto/
autom4te.cache/
......@@ -22,14 +28,17 @@ config.log
config.status
configure
cscope.*
junit*.xml
lalsuite-*.tar.xz
lalsuite-user-env.csh
lalsuite-user-env.fish
lalsuite-user-env.sh
lalsuite-user-env.shell
meta.yaml
meta.yaml.in
output.json
tags
/wheel/build/
/wheel/destdir/
/wheel/Makefile
/wheel/setup.py
/wheel/*.whl
TAGS
.pytest_cache
test_python_imports.py
test_python_scripts.py
FROM igwn/base:buster
LABEL name="LALSuite Nightly - Debian Buster" \
maintainer="Adam Mercer <adam.mercer@ligo.org>" \
support="Not Supported"
# add debian packages to container
COPY debs /srv/local-apt=repository
# install debs & cleanup
RUN apt-get update && \
apt-get -y install local-apt-repository && \
/usr/lib/local-apt-repository/rebuild && \
apt-get update && \
apt-get -y install lscsoft-lalsuite && \
rm -rf /var/lib/apts/lists/*
FROM igwn/base:el7-testing
LABEL name="LALSuite Nightly - EL7" \
maintainer="Adam Mercer <adam.mercer@ligo.org>" \
support="Reference Platform"
# add RPMs to container
COPY rpms /rpms
# install RPMs & cleanup
RUN yum makecache && \
yum -y localinstall /rpms/*.rpm && \
rm -rf /rpms && yum clean all
image: docker:latest
#
# Gitlab-CI configuration for LALSuite
#
# This file is complicated, but hopefully robust,
# if you have any questions please email lal-discuss@ligo.org
# or open a question ticket at
# https://git.ligo.org/lscsoft/lalsuite/-/issues/
#
variables:
DOCKER_DRIVER: overlay
# GIT_DEPTH: 1
BRANCH: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
COMMIT: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
NIGHTLY: $CI_REGISTRY_IMAGE:nightly
TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
LAL_DIR: $CI_PROJECT_DIR/opt/lalsuite
# -- setup --------------------------------------
stages:
- level0
- level1
- level2
- level3
- level4
- docker
- nightly
- tarballs
# build packages for each subpackage
- LAL
- LALFrame
- LALMetaIO
- LALSimulation
- LALBurst
- LALInspiral
- LALPulsar
- LALInference
- LALApps
- wheels
# end-to-end tests
- integration tests
- compiler tests
- platform tests
- upgrade tests
# build containers
- docker
# quality checks
- coverage
- lint
# documentation
- documentation
# deploy packages
- deploy
before_script:
- ulimit -S -c 0
- export VERBOSE="true"
- export PATH=/usr/lib/ccache:/opt/local/libexec/ccache:$PATH
- export CCACHE_DIR=${PWD}/ccache
- export PKG_CONFIG_PATH=${LAL_DIR}/lib/pkgconfig
- mkdir -p opt/lalsuite
- if [ ${CI_PIPELINE_SOURCE} = "schedule" ] || [ ${CI_PIPELINE_SOURCE} = "web" ]; then EXTRA_CONFIG_FLAGS="--enable-nightly"; fi
# include job templates from the gitlab-ci-templates repo
# see https://computing.docs.ligo.org/gitlab-ci-templates/
include:
- project: computing/gitlab-ci-templates
file:
# helpers for debian builds
- /packaging/debian.yml
# helpers for RHEL builds
- /packaging/rhel.yml
# a flake8 job template
- /python/lint.yml
# -- global settings ----------------------------
# by default cache everything in the .cache directory
cache:
key: $CI_JOB_NAME
key: "${CI_JOB_NAME}"
paths:
- ccache
- .cache
#
# ci documentation
#
variables:
# version of python to use for builds
LALSUITE_PYTHON_VERSION: "3.8"
# gitlab runners have 4 cores per job
CPU_COUNT: 4
# don't need git history
GIT_DEPTH: 1
# global build helpers
VERBOSE: "true"
# where to store files, ideally everything that is 'cache'
# should go under ${CI_PROJECT_DIR}/.cache to match the
# cache key setting above
XDG_CONFIG_HOME: "${CI_PROJECT_DIR}/.config"
XDG_CACHE_HOME: "${CI_PROJECT_DIR}/.cache"
CCACHE_DIR: "${CI_PROJECT_DIR}/.cache/ccache"
CONDA_PKGS_DIRS: "${CI_PROJECT_DIR}/.cache/conda/pkgs"
PIP_CACHE_DIR: "${CI_PROJECT_DIR}/.cache/pipe"
# where to build conda environments (i.e. not in ~/.conda)
CONDA_ENVS_PATH: "${CI_PROJECT_DIR}/envs"
# what file to use for conda configuration
CONDARC: "${CI_PROJECT_DIR}/.condarc"
documentation:
image: ligo/lalsuite-dev:stretch
stage: level0
# -- templates ----------------------------------
.configure-ccache: &configure-ccache
export PATH=/usr/lib/ccache:/opt/local/libexec/ccache:$PATH
.configure-coredump: &configure-coredump
ulimit -S -c 0
# manually triggered and scheduled pipelines should use the
# `--enable-nightly` configure flag
.configure-nightly: &configure-nightly-build
if [ ${CI_PIPELINE_SOURCE} = "schedule" ] || [ ${CI_PIPELINE_SOURCE} = "web" ]; then
export ENABLE_NIGHTLY="--enable-nightly";
fi
# basic steps for a job that compiles stuff
# can be included in the before_script/script sections
# via `*init-build-job`
.build-init: &init-build-job
- *configure-ccache
- *configure-coredump
- *configure-nightly-build
# simple bash command to retry a stage up to 3 times
# with a 15-second delay (mainly to survive transient
# network issues)
.retry: &define-retry |
retry() {
local n=1
local max=3
local delay=15
while true; do
"$@" && break || {
if [[ $n -lt $max ]]; then
((n++))
echo "Command failed. Attempt $n/$max:"
sleep $delay;
else
echo "The command has failed after $n attempts." 1>&2
exit 1
fi
}
done
}
# basic before_script template for a compiling job
.build-job:
before_script:
- *init-build-job
# a top-level build runs the standard boot/configure/make
# cycle with some sensible defaults
.make-distcheck:
extends:
- .build-job
variables:
# default configure flags (can be overridden from dependents)
CONFIGURE_FLAGS: "--enable-doxygen --enable-swig --enable-python"
# target to actually run (distcheck is the most thorough)
MAKE_TARGET: "distcheck"
# set default python as python3
# TODO: this can be removed when all packages require python>=3
# on their own
PYTHON: "python3"
needs: []
script:
- ./00boot
- ./configure --enable-doxygen --prefix=${LAL_DIR}
- make -j4 install-html
- pushd ${LAL_DIR}/share/doc
- cp lalsuite/index.html index.html
- sed -i 's/..\/lal/lal/g' index.html
- popd
# we use xargs here in case CONFIGURE_FLAGS contains
# variables with spaces, etc etc
- xargs ./configure ${ENABLE_NIGHTLY} <<< ${CONFIGURE_FLAGS}
- make -j${CPU_COUNT} VERBOSE=1 ${MAKE_TARGET:-distcheck}
artifacts:
expire_in: 18h
# upload some files to debug failures
paths:
- ${LAL_DIR}/share/doc
only:
- pushes
- web
- config.log
- Makefile
when: on_failure
#
# build rpms
#
# helper template for jobs running on macOS
# (the 'macos' tag means that jobs only run on macOS runners)
.macos:
tags:
- macos
# -- build templates ----------------------------
# jobs that build from the tarballs should not need
# the git repository (this speeds things up and prevents
# other issues)
.build-from-tarball:
variables:
GIT_STRATEGY: none
# -- rpm
# disable the condor repo, we don't need it (most of the time)
.yum-disable-htcondor-repo: &yum-disable-htcondor-repo
- yum-config-manager --disable htcondor
.levelN:rpm: &levelN-rpm-package
image: ligo/lalsuite-dev:el7
# template for RPM packaging jobs
.rpmbuild:
extends:
- .rhel:base
- .build-from-tarball
image: igwn/base:el7-testing
variables:
RPM_BUILD_CPUS: 4
# parallelise the build (rpmbuild uses this variable by default)
RPM_BUILD_NCPUS: ${CPU_COUNT}
# where to build things (not a standard variable name)
RPM_BUILD_TOPDIR: "${CI_PROJECT_DIR}/rpmbuild"
# before_script comes from .rhel:base
script:
- if [ -d rpmbuild ]; then yum -y install rpmbuild/RPMS/x86_64/*.rpm; fi
- cd ${CI_JOB_NAME#level?:rpm:}
- ./00boot
- ./configure --enable-swig ${EXTRA_CONFIG_FLAGS}
- make dist
- rpmbuild -tb --define "_topdir $CI_PROJECT_DIR/rpmbuild" ${CI_JOB_NAME#level?:rpm:}-*.tar.xz
- *init-build-job
- *yum-disable-htcondor-repo
# install srpm dependencies
- yum install -y -q lscsoft-packaging-tools
# install upstream packages
- if [ -d rpmbuild ]; then yum install -y -q rpmbuild/RPMS/x86_64/*.rpm; fi
# build src.rpm
- PACKAGE=${CI_JOB_NAME%%:*}
- cd ${PACKAGE}/
- TARBALL=$(ls -t1 ${PACKAGE}-*.tar.* | head -n1 | xargs readlink -f)
- rpmbuild -ts --define "_topdir ${RPM_BUILD_TOPDIR}" ${TARBALL}
- SRPM=${RPM_BUILD_TOPDIR}/SRPMS/${PACKAGE}-*.src.rpm
# install build dependencies
- yum-builddep -y -q ${SRPM}
# build binary rpms and print details of what we got
- rpmbuild --rebuild --noclean --define "_topdir ${RPM_BUILD_TOPDIR}" ${SRPM}
# print package info
- set +x
- for rpmf in ${CI_PROJECT_DIR}/rpmbuild/RPMS/*/*${PACKAGE}-*.rpm; do
echo "===== ${rpmf}" &&
rpm -qlp "${rpmf}" &&
echo "Files:" &&
rpm -qip "${rpmf}" &&
echo "Provides:" &&
rpm -qp --provides "${rpmf}" &&
echo "Requires:" &&
rpm -qp --requires "${rpmf}";
done
# lint RPMs
- |
cat << EOF > rpmlintrc
# don't validate Source0
setOption("NetworkEnabled", False)
# don't know how to fix this
addFilter('binary-or-shlib-defines-rpath')
# the regex rpmlint uses to identify 'lib' libraries is crap
addFilter('explicit-lib-dependency (.*)?matplotlib')
addFilter('explicit-lib-dependency (.*)?ciecplib')
EOF
- rpmlint
-f rpmlintrc
${CI_PROJECT_DIR}/rpmbuild/RPMS/*/*${PACKAGE}-*.rpm
artifacts:
expire_in: 18h
paths:
- rpmbuild/RPMS/x86_64/${CI_JOB_NAME#level?:rpm:}-*.rpm
- rpmbuild/RPMS/x86_64/python2-${CI_JOB_NAME#level?:rpm:}-*.rpm
only:
- pushes
- schedules
- tags
- web
level0:rpm:lal:
<<: *levelN-rpm-package
stage: level0
level1:rpm:lalframe:
<<: *levelN-rpm-package
stage: level1
dependencies:
- level0:rpm:lal
level1:rpm:lalmetaio:
<<: *levelN-rpm-package
stage: level1
dependencies:
- level0:rpm:lal
level1:rpm:lalsimulation:
<<: *levelN-rpm-package
stage: level1
dependencies:
- level0:rpm:lal
level2:rpm:lalburst:
<<: *levelN-rpm-package
stage: level2
dependencies:
- level0:rpm:lal
- level1:rpm:lalmetaio
- level1:rpm:lalsimulation
level2:rpm:lalinspiral:
<<: *levelN-rpm-package
stage: level2
dependencies:
- level0:rpm:lal
- level1:rpm:lalframe
- level1:rpm:lalmetaio
- level1:rpm:lalsimulation
level2:rpm:lalpulsar:
<<: *levelN-rpm-package
stage: level2
dependencies:
- level0:rpm:lal
level3:rpm:lalinference:
<<: *levelN-rpm-package
stage: level3
dependencies:
- level0:rpm:lal
- level1:rpm:lalframe
- level1:rpm:lalmetaio
- level1:rpm:lalsimulation
- level2:rpm:lalburst
- level2:rpm:lalinspiral
- level2:rpm:lalpulsar
level4:rpm:lalapps:
<<: *levelN-rpm-package
stage: level4
dependencies:
- level0:rpm:lal
- level1:rpm:lalframe
- level1:rpm:lalmetaio
- level1:rpm:lalsimulation
- level2:rpm:lalburst
- level2:rpm:lalinspiral
- level2:rpm:lalpulsar
- level3:rpm:lalinference
#
# docker container from RPMs
#
# build a nightly container from the RPMs
docker:nightly:el7:
stage: docker
before_script: []
script:
# add RPMs to directory to pass to docker
- mkdir rpms && mv rpmbuild/RPMS/x86_64/*.rpm rpms
- rm -rf rpmbuild*
# build container and push to registry
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build --pull -t $CI_REGISTRY_IMAGE/nightly:el7 --file .Dockerfile-el7.gitlab-ci .
- docker push $CI_REGISTRY_IMAGE/nightly:el7
dependencies:
- level0:rpm:lal
- level1:rpm:lalframe
- level1:rpm:lalmetaio
- level1:rpm:lalsimulation
- level2:rpm:lalburst
- level2:rpm:lalinspiral
- level2:rpm:lalpulsar
- level3:rpm:lalinference
- level4:rpm:lalapps
# build packages
- "rpmbuild/RPMS/x86_64/${CI_JOB_NAME%%:*}-*.rpm"
- "rpmbuild/RPMS/x86_64/lib${CI_JOB_NAME%%:*}-*.rpm"
- "rpmbuild/RPMS/x86_64/python*-${CI_JOB_NAME%%:*}-*.rpm"
# log files
- "rpmbuild/BUILD/**/config.log"
- "rpmbuild/BUILD/**/test-suite.log"
reports:
junit: "rpmbuild/BUILD/**/*junit*.xml"
when: always
only:
- schedules
refs:
- pushes
- schedules
- tags
- web
variables:
# allow these jobs to be skipped by including
# `[skip rhel]` in the commit message
- $CI_COMMIT_MESSAGE !~ /\[skip rhel\]/
# build a tagged container from the rpms
docker:tags:el7:
stage: docker
before_script: []
script:
# add RPMs to directory to pass to docker
- mkdir rpms && mv rpmbuild/RPMS/x86_64/*.rpm rpms
- rm -rf rpmbuild*
# build container and push to registry
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build --pull -t $CI_REGISTRY_IMAGE/$CI_COMMIT_TAG:el7 --file .Dockerfile-el7.gitlab-ci .
- docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_TAG:el7
dependencies:
- level0:rpm:lal
- level1:rpm:lalframe
- level1:rpm:lalmetaio
- level1:rpm:lalsimulation
- level2:rpm:lalburst
- level2:rpm:lalinspiral
- level2:rpm:lalpulsar
- level3:rpm:lalinference
- level4:rpm:lalapps
only:
- /^lalsuite-v.*$/
#
# build debs
#
# -- debian
.levelN:deb: &levelN-deb-package
image: ligo/lalsuite-dev:stretch
# template for debian packaging jobs
.debuild:
extends:
- .debian:base
- .build-from-tarball
image: igwn/base:buster
variables:
# tell debhelper to parallelise the build
DEB_BUILD_OPTIONS: "parallel=${CPU_COUNT}"
# before_script: comes from .debian:base
script:
# install debs from artifacts
- dpkg -i *.deb || true
# make dist tarball
- cd ${CI_JOB_NAME#level?:deb:}
- ./00boot
- ./configure --enable-swig ${EXTRA_CONFIG_FLAGS}
- make dist
- *init-build-job
- PACKAGE=${CI_JOB_NAME%%:*}
# install build requirements
- apt-get install -y -q -q
devscripts
dpkg-dev
lintian
# install upstream packages
- "ls *.deb &>/dev/null && { dpkg -i *.deb || { apt-get -y -f install; dpkg -i *.deb; } }"
# create orig tarball
- PACKAGE=$(echo ${CI_JOB_NAME} | sed 's/.*://')
- TARBALL="${PACKAGE}-*.tar.*"
- SUFFIX=$(echo $TARBALL | sed 's/.*\.\(tar\..*\)/\1/')
- VERSION=$(echo $TARBALL | sed 's/[^-]*-\(.*\)\.tar\..*/\1/' | tr '-' '~')
- cd ${CI_PROJECT_DIR}
- cp ${CI_JOB_NAME#level?:deb:}/${TARBALL} ${PACKAGE}_${VERSION}.orig.${SUFFIX}
# update changelog
- cd ${PACKAGE}/
- TARBALL=$(ls -t1 ${PACKAGE}-*.tar.* | head -n1 | xargs readlink -f)
- SUFFIX=$(basename $TARBALL | sed 's/.*\.\(tar\..*\)/\1/')
- VERSION=$(basename $TARBALL | sed 's/[^-]*-\(.*\)\.tar\..*/\1/' | tr '-' '~')
- cd ${CI_PROJECT_DIR}/
- cp ${TARBALL} ${PACKAGE}_${VERSION}.orig.${SUFFIX}
# unpack tarball
- export DEBFULLNAME="GitLab"
- export DEBEMAIL="gitlab@git.ligo.org"
- tar xf ${CI_JOB_NAME#level?:deb:}/${TARBALL}
- cd ${PACKAGE}-*
- tar -xf ${TARBALL}
- cd ${PACKAGE}-*/
# update changelog
- dch -v ${VERSION}-1 -b 'Rebuilt automatically on git.ligo.org CI'
# install build dependencies
- mk-build-deps
--tool "apt-get -y -q -o Debug::pkgProblemResolver=yes --no-install-recommends"
--install
--remove
# build packages
- debuild -us -uc -r
- debuild
-us -uc -r
--lintian-opts --color=always --allow-root
# print package info
- set +x
- cd ${CI_PROJECT_DIR}
- for debf in *.deb; do
echo "===== ${debf}";
dpkg --info "${debf}";
dpkg --contents "${debf}";
done
artifacts:
expire_in: 18h
paths:
- ${CI_JOB_NAME#level?:deb:}*.changes
- ${CI_JOB_NAME#level?:deb:}*.deb
- python*-${CI_JOB_NAME#level?:deb:}*.deb
- ${CI_JOB_NAME#level?:deb:}*.dsc
- ${CI_JOB_NAME#level?:deb:}*.orig.*
only:
- pushes
- schedules
- tags
- web
level0:deb:lal:
<<: *levelN-deb-package
stage: level0
level1:deb:lalframe:
<<: *levelN-deb-package
stage: level1
dependencies:
- level0:deb:lal
level1:deb:lalmetaio:
<<: *levelN-deb-package
stage: level1
dependencies:
- level0:deb:lal
level1:deb:lalsimulation:
<<: *levelN-deb-package
stage: level1
dependencies:
- level0:deb:lal
level2:deb:lalburst:
<<: *levelN-deb-package
stage: level2
dependencies:
- level0:deb:lal
- level1:deb:lalmetaio
- level1:deb:lalsimulation
level2:deb:lalinspiral:
<<: *levelN-deb-package
stage: level2
dependencies:
- level0:deb:lal
- level1:deb:lalframe
- level1:deb:lalmetaio
- level1:deb:lalsimulation
level2:deb:lalpulsar:
<<: *levelN-deb-package
stage: level2
dependencies:
- level0:deb:lal
level3:deb:lalinference:
<<: *levelN-deb-package
stage: level3
dependencies:
- level0:deb:lal
- level1:deb:lalframe
- level1:deb:lalmetaio
- level1:deb:lalsimulation
- level2:deb:lalburst
- level2:deb:lalinspiral
- level2:deb:lalpulsar
level4:deb:lalapps:
<<: *levelN-deb-package
stage: level4
dependencies:
- level0:deb:lal
- level1:deb:lalframe
- level1:deb:lalmetaio
- level1:deb:lalsimulation
- level2:deb:lalburst
- level2:deb:lalinspiral
- level2:deb:lalpulsar
- level3:deb:lalinference
#
# docker container from the debs
#
# build a nightly container from the debian packages
docker:nightly:stretch:
stage: docker
before_script: []
script:
# add deb packages to directory to pass to docker
- mkdir debs && mv *.deb debs
- rm *.changes *.dsc *.orig.*
# build container and push to registry
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build --pull -t $CI_REGISTRY_IMAGE/nightly:stretch --file .Dockerfile-stretch.gitlab-ci .
- docker push $CI_REGISTRY_IMAGE/nightly:stretch
dependencies:
- level0:deb:lal
- level1:deb:lalframe
- level1:deb:lalmetaio
- level1:deb:lalsimulation
- level2:deb:lalburst
- level2:deb:lalinspiral
- level2:deb:lalpulsar
- level3:deb:lalinference
- level4:deb:lalapps
# build packages
- "${CI_JOB_NAME%%:*}*.changes"
- "${CI_JOB_NAME%%:*}*.deb"
- "lib${CI_JOB_NAME%%:*}*.deb"
- "python*-${CI_JOB_NAME%%:*}*.deb"
- "${CI_JOB_NAME%%:*}*.dsc"
# log files
- "${CI_JOB_NAME%%:*}*/**/config.log"
- "${CI_JOB_NAME%%:*}*/**/test-suite.log"
# the orig tarball
- "${CI_JOB_NAME%%:*}*.orig.*"
reports:
junit: "${CI_JOB_NAME%%:*}-*/**/*junit*.xml"
when: always
only:
- schedules
refs:
- pushes
- schedules
- tags
- web
variables:
# allow these jobs to be skipped by including
# `[skip debian]` in the commit message
- $CI_COMMIT_MESSAGE !~ /\[skip debian\]/
# build a tagged container from the debian packages
docker:tags:stretch:
stage: docker
before_script: []
# -- conda
# initialise conda for 'conda build jobs'
# note: this assumes that the base environment is writable,
# which is not the case by default for the shared
# macos runners at CIT, if you need a writable base env
# on those machines, install miniconda/miniforge yourself
.conda-init: &conda-init
- *define-retry
# init conda
- mkdir -p $(dirname ${CONDA_PKGS_DIRS})
- source ${CONDA_ROOT:=/opt/conda}/etc/profile.d/conda.sh
# configure conda options
- conda config --file ${CONDARC} --set always_yes yes
- conda config --file ${CONDARC} --add channels conda-forge
- conda config --file ${CONDARC} --set channel_priority strict
# update conda itself
- retry conda update -n base conda setuptools
# install build helpers
- retry conda install -n base "conda-build!=3.18.10" conda-forge-pinning "conda-smithy>=3.7.5" conda-verify
# print info
- conda activate base
- conda info --all
- conda config --show-sources
# template for jobs that use conda (in any context)
.conda-job:
image: igwn/base:conda
variables:
# where to write conda packages
CONDA_BLD_PATH: "${CI_PROJECT_DIR}/conda-bld"
# dont clone the git repo
GIT_STRATEGY: none
before_script:
- *init-build-job
- *define-retry
- *conda-init
# template for `conda build` jobs
.conda-build:
extends:
- .conda-job
variables:
# stub of feedstock configuration file
CONDA_CONFIG: "linux_64_"
script:
# add deb packages to directory to pass to docker
- mkdir debs && mv *.deb debs
- rm *.changes *.dsc *.orig.*
# build container and push to registry
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build --pull -t $CI_REGISTRY_IMAGE/$CI_COMMIT_TAG:stretch --file .Dockerfile-stretch.gitlab-ci .
- docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_TAG:stretch
dependencies:
- level0:deb:lal
- level1:deb:lalframe
- level1:deb:lalmetaio
- level1:deb:lalsimulation
- level2:deb:lalburst
- level2:deb:lalinspiral
- level2:deb:lalpulsar
- level3:deb:lalinference
- level4:deb:lalapps
- PACKAGE=${CI_JOB_NAME%%:*}
- cd ${PACKAGE}/
# render YAML file to use our tarball
- TARBALL=$(ls -t1 ${PACKAGE}-*.tar.* | head -n1 | xargs readlink -f)
- SHA256=$(openssl dgst -r -sha256 $TARBALL | cut -d\ -f1)
- tar -xf ${TARBALL} --wildcards ${PACKAGE}-*/conda/ --strip-components=1
- sed 's|@TARBALL@|'${TARBALL}'|g' conda/meta.yaml.in > conda/meta.yaml
- sed -i 's|@SHA256@|'${SHA256}'|g' conda/meta.yaml
# create a feedstock from the conda recipe
- git config --global user.name "${GITLAB_USER_NAME}"
- git config --global user.email "${GITLAB_USER_EMAIL}"
- conda smithy init conda/ --feedstock-directory ${PACKAGE}-feedstock
- cd ${PACKAGE}-feedstock
- retry conda smithy regenerate --no-check-uptodate
- git ls-files
# if not a nightly or web-triggered pipeline, just build one python version
- if [ ${CI_PIPELINE_SOURCE} != "schedule" ] && [ ${CI_PIPELINE_SOURCE} != "web" ]; then
CONDA_BUILD_ARGS="--python \"${LALSUITE_PYTHON_VERSION}.* *_cpython\"";
fi
# build packages (preferring local packages over everything)
# NOTE: we use xargs here because CONDA_BUILD_ARGS contains multiple spaces
- xargs conda build
recipe/
--dirty
--error-overlinking
--error-overdepending
--keep-old-work
--no-anaconda-upload
--use-channeldata
--use-local
--variant-config-files .ci_support/${CONDA_CONFIG}.yaml
<<< ${CONDA_BUILD_ARGS}
after_script:
# clean cache of old files
- find ${CONDA_PKGS_DIRS%:*} -atime +30 -delete
- find ${CONDA_PKGS_DIRS%:*} -type d -empty -delete
artifacts:
expire_in: 18h
paths:
# built packages (matching this package only)
- "conda-bld/**/${CI_JOB_NAME%%:*}-*.conda"
- "conda-bld/**/${CI_JOB_NAME%%:*}-*.tar.bz2"
- "conda-bld/**/lib${CI_JOB_NAME%%:*}-*.conda"
- "conda-bld/**/lib${CI_JOB_NAME%%:*}-*.tar.bz2"
- "conda-bld/**/python-${CI_JOB_NAME%%:*}-*.conda"
- "conda-bld/**/python-${CI_JOB_NAME%%:*}-*.tar.bz2"
# log files
- "conda-bld/${CI_JOB_NAME%%:*}-*/work/**/config.log"
- "conda-bld/${CI_JOB_NAME%%:*}-*/work/**/test-suite.log"
# the feedstock
- "${CI_JOB_NAME%%:*}/${CI_JOB_NAME%%:*}-feedstock/"
reports:
# conda-build deletes the _test_tmp directory for each
# package, so we write them into the project directory
junit: "*junit*.xml"
when: always
only:
- /^lalsuite-v.*$/
refs:
- pushes
- schedules
- tags
- web
variables:
# allow these jobs to be skipped by including
# `[skip conda]` in the commit message
- $CI_COMMIT_MESSAGE !~ /\[skip conda\]/
# -- tarballs -----------------------------------
#
# nightly builds
# make tarballs for each subpackage
#
# compilers
nightly:clang:6:
image: skymoo/ligo-lalsuite-clang:6
stage: nightly
# job template for a subpackage tarball build;
# to build a tarball for a subpackage just define
# a job called `tarball:<subpackage>` that
# `extends` this one (see `tarball:lal` below)
.make-dist:
image: igwn/lalsuite-dev:el7
stage: tarballs
needs: []
extends:
- .build-job
script:
- pushd ${CI_JOB_NAME##*:}
- ./00boot
- CC=clang-6.0 CXX=clang++-6.0 ./configure --enable-swig --enable-doxygen
- make -j4 distcheck
dependencies: []
only:
- schedules
- web
- ./configure ${ENABLE_NIGHTLY} --enable-swig
- make dist
artifacts:
expire_in: 18h
# store the tarballs
paths:
- "*/*.tar.*"
# there are no reports for tarball jobs
reports:
junit: []
nightly:clang:7:
image: skymoo/ligo-lalsuite-clang:7
stage: nightly
# make tarballs for _all_ packages
tarballs:
extends:
- .make-dist
script:
- ./00boot
- CC=clang-7 CXX=clang++-7 ./configure --enable-swig --enable-doxygen
- make -j4 distcheck
dependencies: []
only:
- schedules
- web
- ./configure ${ENABLE_NIGHTLY} --enable-swig
- for subdir in lal lalframe lalmetaio lalsimulation lalburst lalinspiral lalpulsar lalinference lalapps; do
pushd ${subdir};
make dist;
popd;
done
nightly:clang:8:
image: skymoo/ligo-lalsuite-clang:8
stage: nightly
script:
- ./00boot
- CC=clang-8 CXX=clang++-8 ./configure --enable-swig --enable-doxygen
- make -j4 distcheck
dependencies: []
# make the tarball for LAL only
# (this job will run much faster than the `tarballs` job
# so we use it to release the 'LAL' stage jobs as
# early as possible)
tarball:lal:
extends:
- .make-dist
# -- lal ----------------------------------------
#
# build packages for LAL
#
.lal:
stage: LAL
needs:
- tarball:lal
lal:rpm:
extends:
- .rpmbuild
- .lal
lal:deb:
extends:
- .debuild
- .lal
# build with conda using FFTW
lal:conda:fftw:
extends:
- .conda-build
- .lal
variables:
CONDA_CONFIG: "linux_64_fft_implfftw"
# build with conda using Intel FFT (MKL)
lal:conda:mkl:
extends:
- .conda-build
- .lal
variables:
CONDA_CONFIG: "linux_64_fft_implmkl"
# -- lalframe------------------------------------
#
# build packages for LALFrame
#
.lalframe:
stage: LALFrame
lalframe:rpm:
extends:
- .rpmbuild
- .lalframe
needs:
- tarballs
- lal:rpm
lalframe:deb:
extends:
- .debuild
- .lalframe
needs:
- tarballs
- lal:deb
lalframe:conda:
extends:
- .conda-build
- .lalframe
needs:
- tarballs
- lal:conda:fftw
# -- lalmetaio ----------------------------------
#
# build packages for LALMetaIO
#
.lalmetaio:
stage: LALMetaIO
lalmetaio:rpm:
extends:
- .rpmbuild
- .lalmetaio
needs:
- tarballs
- lal:rpm
lalmetaio:deb:
extends:
- .debuild
- .lalmetaio
needs:
- tarballs
- lal:deb
lalmetaio:conda:
extends:
- .conda-build
- .lalmetaio
needs:
- tarballs
- lal:conda:fftw
# -- lalsimulation ------------------------------
#
# build packages for LALSimulation
#
.lalsimulation:
stage: LALSimulation
lalsimulation:rpm:
extends:
- .rpmbuild
- .lalsimulation
needs:
- tarballs
- lal:rpm