Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CI] Enhance CI run and make mac ci less likely to fail #7561

Merged
merged 10 commits into from
Dec 31, 2020
Merged
28 changes: 25 additions & 3 deletions .ci/ci-script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,31 @@ case "$TARGET" in
$ECO "$SRC_DIR" || (cat "$BUILD_DIR"/CMakeFiles/CMakeOutput.log; cat "$BUILD_DIR"/CMakeFiles/CMakeError.log)
target_notest
;;
"usermanual")
cmake -DCMAKE_INSTALL_PREFIX="$INSTALL_PREFIX" -G"$GENERATOR" -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" "$ECO" "$SRC_DIR" || (cat "$BUILD_DIR"/CMakeFiles/CMakeOutput.log; cat "$BUILD_DIR"/CMakeFiles/CMakeError.log)
target_usermanual
"nofeatures_nosse")
cmake -DCMAKE_INSTALL_PREFIX="$INSTALL_PREFIX" \
-G"$GENERATOR" \
-DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" \
-DUSE_OPENMP=OFF \
-DUSE_OPENCL=OFF \
-DUSE_LUA=OFF \
-DUSE_GAME=OFF \
-DUSE_CAMERA_SUPPORT=OFF \
-DUSE_NLS=OFF \
-DUSE_GRAPHICSMAGICK=OFF \
-DUSE_OPENJPEG=OFF \
-DUSE_WEBP=OFF \
-DUSE_AVIF=OFF \
-DUSE_XCF=OFF \
-DBUILD_CMSTEST=OFF \
-DUSE_OPENEXR=OFF \
-DBUILD_PRINT=OFF \
-DBUILD_RS_IDENTIFY=OFF \
-DUSE_LENSFUN=OFF \
-DUSE_GMIC=OFF \
-DUSE_LIBSECRET=OFF \
-DBUILD_SSE2_CODEPATHS=OFF \
$ECO "$SRC_DIR" || (cat "$BUILD_DIR"/CMakeFiles/CMakeOutput.log; cat "$BUILD_DIR"/CMakeFiles/CMakeError.log)
target_notest
;;
*)
exit 1
Expand Down
159 changes: 156 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,135 @@ on:

jobs:

Linux-minimal:
name: Linux-minimal.${{ matrix.os.code }}.${{ matrix.compiler.compiler }}.${{ matrix.target }}.${{ matrix.btype }}
runs-on: ${{ matrix.os.label }}
strategy:
fail-fast: true
matrix:
os:
- { label: ubuntu-20.04, code: focal }
#- { label: ubuntu-18.04, code: bionic }
compiler:
#- { compiler: GNU8, CC: gcc-8, CXX: g++-8, packages: gcc-8 g++-8 }
- { compiler: GNU9, CC: gcc-9, CXX: g++-9, packages: gcc-9 g++-9 }
#- { compiler: GNU10, CC: gcc-10, CXX: g++-10, packages: gcc-10 g++-10 }
#- { compiler: LLVM9, CC: clang-9, CXX: clang++-9, packages: clang-9 libomp-9-dev libclang-common-9-dev llvm-9-dev clang++-9 libc++-9-dev lld-9}
- { compiler: LLVM10, CC: clang-10, CXX: clang++-10, packages: clang-10 libomp-10-dev libclang-common-10-dev llvm-10-dev clang++-10 libc++-10-dev lld-10}
#- { compiler: LLVM11, CC: clang-11, CXX: clang++-11, packages: clang-11 libomp-11-dev libclang-common-11-dev llvm-11-dev clang++-11 libc++-11-dev lld-11}
btype:
- RelWithDebInfo
#- Release
target:
#- build
- nofeatures
- nofeatures_nosse
include:
- os: { label: ubuntu-18.04, code: bionic }
btype: RelWithDebInfo
compiler: { compiler: GNU7, CC: gcc-7, CXX: g++-7, packages: gcc-7 g++-7 }
target: nofeatures
- os: { label: ubuntu-18.04, code: bionic }
btype: RelWithDebInfo
compiler: { compiler: GNU7, CC: gcc-7, CXX: g++-7, packages: gcc-7 g++-7 }
target: nofeatures_nosse
env:
CC: ${{ matrix.compiler.CC }}
CXX: ${{ matrix.compiler.CXX }}
SRC_DIR: ${{ github.workspace }}/src
BUILD_DIR: ${{ github.workspace }}/build
INSTALL_PREFIX: ${{ github.workspace }}/install
CMAKE_BUILD_TYPE: ${{ matrix.btype }}
GENERATOR: Ninja
TARGET: ${{ matrix.target }}
DARKTABLE_CLI: ${{ github.workspace }}/install/bin/darktable-cli
steps:
- name: Install compiler ${{ matrix.compiler.compiler }}
run: |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo add-apt-repository -y universe
sudo add-apt-repository -y multiverse
sudo apt-get update
sudo apt-get -y install \
${{ matrix.compiler.packages }}
- name: Install Base Dependencies
run: |
sudo apt-get -y install \
build-essential \
appstream-util \
desktop-file-utils \
gettext \
git \
gdb \
intltool \
libatk1.0-dev \
libcairo2-dev \
libcolord-dev \
libcolord-gtk-dev \
libcmocka-dev \
libcups2-dev \
libcurl4-gnutls-dev \
libexiv2-dev \
libgdk-pixbuf2.0-dev \
libglib2.0-dev \
libgphoto2-dev \
libgraphicsmagick1-dev \
libgtk-3-dev \
libjpeg-dev \
libjson-glib-dev \
liblcms2-dev \
liblensfun-dev \
liblua5.2-dev \
liblua5.3-dev \
libopenexr-dev \
libopenjp2-7-dev \
libosmgpsmap-1.0-dev \
libpango1.0-dev \
libpng-dev \
libpugixml-dev \
librsvg2-dev \
libsaxon-java \
libsecret-1-dev \
libsoup2.4-dev \
libsqlite3-dev \
libtiff5-dev \
libwebp-dev \
libx11-dev \
libxml2-dev \
libxml2-utils \
ninja-build \
perl \
po4a \
python3-jsonschema \
xsltproc \
zlib1g-dev;
- uses: actions/checkout@v2
with:
submodules: true
path: src
- name: Build and Install
run: |
cmake -E make_directory "${BUILD_DIR}";
cmake -E make_directory "${INSTALL_PREFIX}";
./src/.ci/ci-script.sh;
- name: Check if it runs
if: ${{ matrix.target != 'usermanual' }}
run: |
${INSTALL_PREFIX}/bin/darktable --version || true
${INSTALL_PREFIX}/bin/darktable-cli \
--width 2048 --height 2048 \
--hq true --apply-custom-presets false \
"${SRC_DIR}/src/tests/integration/images/mire1.cr2" \
"${SRC_DIR}/src/tests/integration/0000-nop/nop.xmp" \
output.png \
--core --disable-opencl --conf host_memory_limit=8192 \
--conf worker_threads=4 -t 4 \
--conf plugins/lighttable/export/force_lcms2=FALSE \
--conf plugins/lighttable/export/iccintent=0

Linux:
name: Linux.${{ matrix.os.code }}.${{ matrix.compiler.compiler }}.${{ matrix.target }}.${{ matrix.btype }}
needs: Linux-minimal
runs-on: ${{ matrix.os.label }}
strategy:
fail-fast: true
Expand All @@ -57,11 +184,33 @@ jobs:
target:
- build
- nofeatures
- nofeatures_nosse
include:
- os: { label: ubuntu-latest, code: latest }
btype: Debug
compiler: { compiler: GNU9, CC: gcc-9, CXX: g++-9, packages: gcc-9 g++-9 }
target: skiptest
- os: { label: ubuntu-latest, code: latest }
btype: Debug
compiler: { compiler: LLVM10, CC: clang-10, CXX: clang++-10, packages: clang-10 libomp-10-dev libclang-common-10-dev llvm-10-dev clang++-10 libc++-10-dev lld-10}
target: skiptest
exclude:
- os: { label: ubuntu-20.04, code: focal }
btype: RelWithDebInfo
compiler: { compiler: GNU9, CC: gcc-9, CXX: g++-9, packages: gcc-9 g++-9 }
target: nofeatures
- os: { label: ubuntu-20.04, code: focal }
btype: RelWithDebInfo
compiler: { compiler: GNU9, CC: gcc-9, CXX: g++-9, packages: gcc-9 g++-9 }
target: nofeatures_nosse
- os: { label: ubuntu-20.04, code: focal }
btype: RelWithDebInfo
compiler: { compiler: LLVM10, CC: clang-10, CXX: clang++-10, packages: clang-10 libomp-10-dev libclang-common-10-dev llvm-10-dev clang++-10 libc++-10-dev lld-10}
target: nofeatures
- os: { label: ubuntu-20.04, code: focal }
btype: RelWithDebInfo
compiler: { compiler: LLVM10, CC: clang-10, CXX: clang++-10, packages: clang-10 libomp-10-dev libclang-common-10-dev llvm-10-dev clang++-10 libc++-10-dev lld-10}
target: nofeatures_nosse
env:
CC: ${{ matrix.compiler.CC }}
CXX: ${{ matrix.compiler.CXX }}
Expand Down Expand Up @@ -164,7 +313,7 @@ jobs:

Win64:
name: Win64.${{ matrix.compiler.compiler }}.${{ matrix.target }}.${{ matrix.btype }}
needs: Linux
needs: Linux-minimal
runs-on: windows-latest
strategy:
fail-fast: true
Expand Down Expand Up @@ -289,7 +438,7 @@ jobs:

macOS:
name: macOS.${{ matrix.compiler.compiler }}.${{ matrix.target }}
needs: Linux
needs: Linux-minimal
runs-on: macos-latest
strategy:
fail-fast: true
Expand Down Expand Up @@ -317,8 +466,12 @@ jobs:
- name: Install Base Dependencies
run: |
brew update > /dev/null || true
brew unlink [email protected]
sudo rm '/usr/local/bin/2to3'
brew link --overwrite [email protected] # workaround introduced 30.12.2021, replace asap.
brew upgrade
brew tap Homebrew/bundle
cd src/.ci
cd src/.ci
brew bundle --verbose
- name: Build and Install
# todo: use linker which supprots --wrap, ld.bfd and ld.gold support it
Expand Down