Nightly PKG #20
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Nightly PKG | |
on: | |
schedule: | |
- cron: "0 0 * * *" | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
AppImage: | |
if: github.repository == 'darktable-org/darktable' || github.event_name == 'workflow_dispatch' | |
name: Nightly darktable AppImage | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
compiler: | |
- { compiler: LLVM12, CC: clang-12, CXX: clang++-12, packages: clang-12 libomp-12-dev libclang-common-12-dev llvm-12-dev clang++-12 libc++-12-dev libc++1-12 libc++abi1-12 lld-12} | |
branch: | |
- { code: master, label: gitmaster } | |
env: | |
CC: ${{ matrix.compiler.CC }} | |
CXX: ${{ matrix.compiler.CXX }} | |
SRC_DIR: ${{ github.workspace }}/src | |
BUILD_DIR: ${{ github.workspace }}/build | |
INSTALL_PREFIX: ${{ github.workspace }}/AppDir/usr | |
CMAKE_BUILD_TYPE: ${{ matrix.btype }} | |
GENERATOR: ${{ matrix.generator }} | |
TARGET: ${{ matrix.target }} | |
DARKTABLE_CLI: ${{ github.workspace }}/AppDir/usr/bin/darktable-cli | |
BRANCH: ${{ matrix.branch.code }} | |
BUILD_NAME: ${{ matrix.branch.label }} | |
steps: | |
- name: Install compiler ${{ matrix.compiler.compiler }} | |
run: | | |
# Remove azure mirror because it is unreliable and sometimes unpredictably leads to failed CI | |
sudo sed -i 's/azure\.//' /etc/apt/sources.list | |
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 \ | |
libimage-exiftool-perl \ | |
libgdk-pixbuf2.0-dev \ | |
libglib2.0-dev \ | |
libgraphicsmagick1-dev \ | |
libgtk-3-dev \ | |
libjpeg-dev \ | |
libjson-glib-dev \ | |
liblcms2-dev \ | |
liblensfun-dev \ | |
liblensfun-bin \ | |
liblensfun-data-v1 \ | |
liblensfun1 \ | |
libopenjp2-7-dev \ | |
libosmgpsmap-1.0-dev \ | |
libpango1.0-dev \ | |
libpng-dev \ | |
libportmidi-dev \ | |
libpugixml-dev \ | |
librsvg2-dev \ | |
libsaxon-java \ | |
libsdl2-dev \ | |
libsecret-1-dev \ | |
libsqlite3-dev \ | |
libtiff5-dev \ | |
libwebp-dev \ | |
libx11-dev \ | |
libxml2-dev \ | |
libxml2-utils \ | |
ninja-build \ | |
perl \ | |
po4a \ | |
python3-jsonschema \ | |
xsltproc \ | |
zlib1g-dev \ | |
appstream; | |
sudo add-apt-repository -y ppa:savoury1/graphics | |
sudo add-apt-repository -y ppa:savoury1/ffmpeg4 | |
sudo add-apt-repository -y ppa:savoury1/display | |
sudo apt-get update | |
sudo apt-get -y install \ | |
libavif-dev \ | |
libexiv2-dev \ | |
libgmic-dev \ | |
libgphoto2-dev \ | |
libheif-dev \ | |
libimath-dev \ | |
libjxl-dev \ | |
libopenexr-dev \ | |
x11proto-dev \ | |
libxfixes-dev; | |
- uses: actions/checkout@v3 | |
with: | |
ref: ${{ env.BRANCH }} | |
submodules: true | |
# We have to fetch the entire history to correctly generate the version for the AppImage filename | |
fetch-depth: 0 | |
- name: Update lensfun data | |
continue-on-error: true | |
run: | | |
sudo lensfun-update-data | |
- name: Build and Install | |
run: | | |
bash tools/appimage-build-script.sh | |
- name: Check if it runs | |
run: | | |
${INSTALL_PREFIX}/bin/darktable --version || true | |
${INSTALL_PREFIX}/bin/darktable-cli \ | |
--width 2048 --height 2048 \ | |
--hq true --apply-custom-presets false \ | |
"${SRC_DIR}/tests/integration/images/mire1.cr2" \ | |
"${SRC_DIR}/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 | |
- name: Package upload | |
if: ${{ success() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ${{ env.BUILD_DIR }}/Darktable-*.AppImage* | |
retention-days: 1 | |
Windows: | |
if: github.repository == 'darktable-org/darktable' || github.event_name == 'workflow_dispatch' | |
name: Nightly darktable Windows | |
runs-on: windows-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
btype: | |
- Release | |
msystem: | |
- UCRT64 | |
target: | |
- skiptest | |
generator: | |
- Ninja | |
eco: [-DBINARY_PACKAGE_BUILD=ON] | |
defaults: | |
run: | |
shell: msys2 {0} | |
env: | |
SRC_DIR: ${{ github.workspace }}/src | |
BUILD_DIR: ${{ github.workspace }}/build | |
INSTALL_PREFIX: ${{ github.workspace }}/install | |
ECO: ${{ matrix.eco }} | |
CMAKE_BUILD_TYPE: ${{ matrix.btype }} | |
TARGET: ${{ matrix.target }} | |
GENERATOR: ${{ matrix.generator }} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{ matrix.msystem }} | |
install: >- | |
git | |
intltool | |
po4a | |
pacboy: >- | |
cc:p | |
cmake:p | |
libxslt:p | |
ninja:p | |
nsis:p | |
python-jsonschema:p | |
curl:p | |
drmingw:p | |
exiv2:p | |
gcc-libs:p | |
gettext:p | |
gmic:p | |
graphicsmagick:p | |
gtk3:p | |
icu:p | |
imath:p | |
iso-codes:p | |
lcms2:p | |
lensfun:p | |
libavif:p | |
libgphoto2:p | |
libheif:p | |
libjpeg-turbo:p | |
libjxl:p | |
libpng:p | |
librsvg:p | |
libsecret:p | |
libtiff:p | |
libwebp:p | |
libxml2:p | |
lua:p | |
omp:p | |
openexr:p | |
openjpeg2:p | |
osm-gps-map:p | |
portmidi:p | |
pugixml:p | |
SDL2:p | |
sqlite3:p | |
zlib:p | |
update: false | |
- run: git config --global core.autocrlf input | |
shell: bash | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
path: src | |
- name: Update lensfun data | |
if: ${{ success() && matrix.btype == 'Release' && matrix.target == 'skiptest' }} | |
continue-on-error: true | |
run: | | |
lensfun-update-data | |
- name: Build and Install | |
run: | | |
cmake -E make_directory "${BUILD_DIR}" | |
cmake -E make_directory "${INSTALL_PREFIX}" | |
$(cygpath ${SRC_DIR})/.ci/ci-script.sh | |
- name: Check if it runs | |
run: | | |
$(cygpath ${INSTALL_PREFIX})/bin/darktable.exe --version || true | |
echo "Testing RUN!" | |
$(cygpath ${INSTALL_PREFIX})/bin/darktable-cli.exe \ | |
--width 2048 --height 2048 \ | |
--hq true --apply-custom-presets false \ | |
$(cygpath ${SRC_DIR})/src/tests/integration/images/mire1.cr2 \ | |
$(cygpath ${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 | |
- name: Package | |
if: ${{ success() && matrix.btype == 'Release' && matrix.target == 'skiptest' }} | |
run: | | |
cd "${BUILD_DIR}" | |
cmake --build "${BUILD_DIR}" --target package | |
- name: Get version info | |
run: | | |
cd ${SRC_DIR} | |
echo "VERSION=$(git describe --tags --match release-* | sed 's/^release-//;s/-/+/;s/-/~/;s/rc/~rc/')" >> $GITHUB_ENV | |
([[ ${MSYSTEM_CARCH} == x86_64 ]] && echo "SYSTEM=win64" || echo "SYSTEM=woa64") >> $GITHUB_ENV | |
- name: Package upload | |
if: ${{ success() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ${{ env.BUILD_DIR }}/darktable-${{ env.VERSION }}-${{ env.SYSTEM }}.exe | |
retention-days: 2 | |
macOS: | |
if: github.repository == 'darktable-org/darktable' || github.event_name == 'workflow_dispatch' | |
name: Nightly darktable macOS | |
runs-on: ${{ matrix.build.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
build: | |
- { os: macos-11, xcode: 13.2.1, deployment: 11.3 } | |
compiler: | |
- { compiler: XCode, CC: cc, CXX: c++ } | |
btype: [ Release ] | |
eco: [-DBINARY_PACKAGE_BUILD=ON -DBUILD_CURVE_TOOLS=ON -DBUILD_NOISE_TOOLS=ON -DUSE_GRAPHICSMAGICK=OFF -DUSE_IMAGEMAGICK=ON] | |
target: | |
- skiptest | |
generator: | |
- Ninja | |
env: | |
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.build.xcode }}.app/Contents/Developer | |
CC: ${{ matrix.compiler.CC }} | |
CXX: ${{ matrix.compiler.CXX }} | |
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.build.deployment }} | |
SRC_DIR: ${{ github.workspace }}/src | |
BUILD_DIR: ${{ github.workspace }}/src/build | |
INSTALL_PREFIX: ${{ github.workspace }}/src/build/macosx | |
ECO: ${{ matrix.eco }} | |
CMAKE_BUILD_TYPE: ${{ matrix.btype }} | |
GENERATOR: ${{ matrix.generator }} | |
TARGET: ${{ matrix.target }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
path: src | |
- name: Install Base Dependencies | |
run: | | |
brew update > /dev/null || true | |
# brew upgrade || true # no need for a very time-consuming upgrade of ALL packages | |
brew tap Homebrew/bundle | |
cd src/.ci | |
export HOMEBREW_NO_INSTALL_UPGRADE=1 | |
export HOMEBREW_NO_INSTALL_CLEANUP=1 | |
brew bundle --verbose || true | |
# handle keg-only libs | |
brew link --force libomp | |
brew link --force libsoup@2 | |
- name: use ImageMagick 6 | |
run: | | |
brew link --overwrite --force imagemagick@6 | |
- name: Build and Install | |
# todo: use linker which supports --wrap, ld.bfd and ld.gold support it | |
run: | | |
cmake -E make_directory "${BUILD_DIR}"; | |
cmake -E make_directory "${INSTALL_PREFIX}"; | |
./src/.ci/ci-script.sh; | |
- name: Check if it runs | |
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 | |
- name: Build macOS package | |
run: | | |
./src/packaging/macosx/3_make_hb_darktable_package.sh | |
- name: Create DMG file | |
run: | | |
./src/packaging/macosx/4_make_hb_darktable_dmg.sh | |
- name: Get version info | |
run: | | |
cd ${{ env.SRC_DIR }} | |
echo "VERSION=$(git describe --tags --match release-* | sed 's/^release-//;s/-/+/;s/-/~/;s/rc/~rc/')-$(uname -m)" >> $GITHUB_ENV | |
- name: Package upload | |
if: ${{ success() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ${{ env.INSTALL_PREFIX }}/darktable-${{ env.VERSION }}.dmg | |
retention-days: 2 | |
upload_to_release: | |
permissions: | |
# We need write permission to update the nightly tag | |
contents: write | |
runs-on: ubuntu-latest | |
needs: [AppImage, Windows] | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
- name: Update nightly release | |
uses: andelf/nightly-release@main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: nightly | |
prerelease: true | |
name: 'Darktable nightly build $$' | |
body: | | |
This is a nightly build of Darktable. | |
You can use this if you want to try new features without waiting for releases. | |
From time to time, in development builds, old difficult-to-reproduce bugs are | |
fixed, but it is also true that in the development process with the introduction | |
of new complex code, the stability of the program may suffer compared to | |
official releases, so **use it with caution**! | |
Also, new versions can make changes to the database schema, so it's best to run | |
them with a separate library. | |
The `*.AppImage.zsync` file is not intended to be downloaded and used locally. | |
Just ignore it. This file contains technical information required by AppImage | |
auto-updaters such as [AppImageUpdate](https://appimage.github.io/AppImageUpdate/). | |
__Please help us improve Darktable by reporting any issues you encounter!__ :wink: | |
files: | | |
artifact/* |