diff --git a/tools/docker/natron-sdk-ubuntu24.04-apt/.gitignore b/tools/docker/natron-sdk-ubuntu24.04-apt/.gitignore new file mode 100644 index 0000000000..252a78c841 --- /dev/null +++ b/tools/docker/natron-sdk-ubuntu24.04-apt/.gitignore @@ -0,0 +1,30 @@ +build-Linux-installer.sh +build-Linux-sdk.sh +build-OSX-installer.sh +build-Windows-installer.sh +build-natron.sh +build-plugins.sh +checkout-repository.sh +common.sh +compiler-common.sh +createBuildOptionsFile.sh +ensure-ssh-identity.sh +fixMacPortsDeps.sh +gen-natron-doc.sh +genDllVersions.sh +gitRepositories.sh +launchBuildMain.sh +linuxStartupJenkins.sh +macStartupJenkins.sh +manageBuildOptions.sh +manageLog.sh +msysStartupJenkins.sh +push.sh +runUnitTests.sh +uploadArtifactsMain.sh +zip-python-mingw.sh +zip-python.sh +include +pkg +builds +artifacts diff --git a/tools/docker/natron-sdk-ubuntu24.04-apt/Dockerfile b/tools/docker/natron-sdk-ubuntu24.04-apt/Dockerfile new file mode 100644 index 0000000000..c0f66a5133 --- /dev/null +++ b/tools/docker/natron-sdk-ubuntu24.04-apt/Dockerfile @@ -0,0 +1,49 @@ +# Natron-SDK ubuntu 24.04 (apt) dockerfile. +FROM ubuntu:24.04 +MAINTAINER https://github.com/NatronGitHub/Natron +WORKDIR /home +ARG SDK=/opt/Natron-sdk +ARG DEBIAN_FRONTEND=noninteractive +RUN apt update && apt install -y build-essential llvm xorg-dev libgl-dev libegl1-mesa-dev libglu-dev curl wget git valgrind zip python3 python3-dev libosmesa6-dev libboost-serialization-dev libboost-system-dev libexpat1-dev libcairo2-dev qt5-qmake qtbase5-dev libshiboken2-dev libpyside2-dev python3-pyside2.qtwidgets python3-qtpy qtdeclarative5-dev extra-cmake-modules libopenexr-dev libilmbase-dev libavcodec-dev libraw-dev libopenimageio-dev libopencolorio-dev libmagick++-dev libavformat-dev libcdr-dev libpoppler-glib-dev libpoppler-private-dev libpoppler-qt5-dev libpango1.0-dev libzip-dev libssl-dev libfftw3-dev && rm -rf /var/lib/apt/lists/* +ENV WORKSPACE=/home \ + GIT_URL=https://github.com/NatronGitHub/Natron.git \ + GIT_BRANCH=RB-2.6 \ + GIT_COMMIT= \ + RELEASE_TAG= \ + SNAPSHOT_BRANCH= \ + SNAPSHOT_COMMIT= \ + UNIT_TESTS=true \ + NATRON_LICENSE=GPL \ + DISABLE_BREAKPAD=1 \ + COMPILE_TYPE=release \ + NATRON_DEV_STATUS=RC \ + NATRON_CUSTOM_BUILD_USER_NAME= \ + NATRON_EXTRA_QMAKE_FLAGS= \ + BUILD_NAME=natron_github_RB2 \ + DISABLE_RPM_DEB_PKGS=1 \ + DISABLE_PORTABLE_ARCHIVE= \ + BITS= \ + DEBUG_SCRIPTS= \ + EXTRA_PYTHON_MODULES_SCRIPT= \ + BUILD_NUMBER=0 + +COPY \ + common.sh \ + compiler-common.sh \ + linuxStartupJenkins.sh \ + launchBuildMain.sh \ + manageBuildOptions.sh \ + manageLog.sh \ + createBuildOptionsFile.sh \ + gitRepositories.sh \ + checkout-repository.sh \ + build-plugins.sh \ + build-natron.sh \ + build-Linux-installer.sh \ + gen-natron-doc.sh \ + zip-python.sh \ + runUnitTests.sh \ + uploadArtifactsMain.sh \ + ./ +COPY include/ include/ +CMD ./launchBuildMain.sh diff --git a/tools/docker/natron-sdk-ubuntu24.04-apt/build.sh b/tools/docker/natron-sdk-ubuntu24.04-apt/build.sh new file mode 100755 index 0000000000..d9d92310d6 --- /dev/null +++ b/tools/docker/natron-sdk-ubuntu24.04-apt/build.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -xe + +cd `dirname "$0"` +cp ../../jenkins/*.sh . +(cd ../../jenkins/; tar cf - include) | tar xf - +export UBUNTU=24.04 +LABEL="natrongithub/natron-sdk-ubuntu24.04apt" +#env GEN_DOCKERFILE=1 ../../jenkins/include/scripts/build-Linux-sdk.sh > Dockerfile +docker build -t "${LABEL}:latest" . +#docker build --no-cache -t "${LABEL}:latest" . +echo "please execute:" +#echo "docker-squash ${LABEL}:latest" +echo "docker login" +echo "docker tag ${LABEL}:latest ${LABEL}:$(date -u +%Y%m%d)" +echo "docker push ${LABEL}:latest" +echo "docker push ${LABEL}:$(date -u +%Y%m%d)" diff --git a/tools/docker/natron-sdk-ubuntu24.04/.gitignore b/tools/docker/natron-sdk-ubuntu24.04/.gitignore new file mode 100644 index 0000000000..cba02379e6 --- /dev/null +++ b/tools/docker/natron-sdk-ubuntu24.04/.gitignore @@ -0,0 +1,31 @@ +Dockerfile +build-Linux-installer.sh +build-Linux-sdk.sh +build-OSX-installer.sh +build-Windows-installer.sh +build-natron.sh +build-plugins.sh +checkout-repository.sh +common.sh +compiler-common.sh +createBuildOptionsFile.sh +ensure-ssh-identity.sh +fixMacPortsDeps.sh +gen-natron-doc.sh +genDllVersions.sh +gitRepositories.sh +launchBuildMain.sh +linuxStartupJenkins.sh +macStartupJenkins.sh +manageBuildOptions.sh +manageLog.sh +msysStartupJenkins.sh +push.sh +runUnitTests.sh +uploadArtifactsMain.sh +zip-python-mingw.sh +zip-python.sh +include +pkg +builds +artifacts diff --git a/tools/docker/natron-sdk-ubuntu24.04/build.sh b/tools/docker/natron-sdk-ubuntu24.04/build.sh new file mode 100755 index 0000000000..5f9bf0229b --- /dev/null +++ b/tools/docker/natron-sdk-ubuntu24.04/build.sh @@ -0,0 +1,15 @@ +#!/bin/sh +cd `dirname "$0"` +cp ../../jenkins/*.sh . +(cd ../../jenkins/; tar cf - include) | tar xf - +export UBUNTU=24.04 +LABEL="natrongithub/natron-sdk${UBUNTU+-ubuntu}${UBUNTU:-}${CENTOS+-centos}${CENTOS:-}${DTS+-dts}${DTS:-}" +env GEN_DOCKERFILE=1 ../../jenkins/include/scripts/build-Linux-sdk.sh > Dockerfile +docker build -t "${LABEL}:latest" . +#docker build --no-cache -t "${LABEL}:latest" . +echo "please execute:" +#echo "docker-squash ${LABEL}:latest" +echo "docker login" +echo "docker tag ${LABEL}:latest ${LABEL}:$(date -u +%Y%m%d)" +echo "docker push ${LABEL}:latest" +echo "docker push ${LABEL}:$(date -u +%Y%m%d)" diff --git a/tools/jenkins/build-Linux-installer.sh b/tools/jenkins/build-Linux-installer.sh index 4067dcd084..7bcbcb7ff5 100755 --- a/tools/jenkins/build-Linux-installer.sh +++ b/tools/jenkins/build-Linux-installer.sh @@ -42,17 +42,17 @@ popd () { command popd "$@" > /dev/null } -LD_LIBRARY_PATH="${SDK_HOME}/lib:${FFMPEG_PATH}/lib:${SDK_HOME}/qt${QT_VERSION_MAJOR}/lib" -PATH="${SDK_HOME}/gcc/bin:${SDK_HOME}/bin:$PATH" +#LD_LIBRARY_PATH="${SDK_HOME}/lib:${FFMPEG_PATH}/lib:${SDK_HOME}/qt${QT_VERSION_MAJOR}/lib" +#PATH="${SDK_HOME}/gcc/bin:${SDK_HOME}/bin:$PATH" export C_INCLUDE_PATH="${SDK_HOME}/gcc/include:${SDK_HOME}/include:${SDK_HOME}/qt${QT_VERSION_MAJOR}/include" export CPLUS_INCLUDE_PATH="${C_INCLUDE_PATH}" -if [ "${ARCH}" = "x86_64" ]; then - LD_LIBRARY_PATH="${SDK_HOME}/gcc/lib64:${FFMPEG_PATH}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" -else - LD_LIBRARY_PATH="${SDK_HOME}/gcc/lib:${FFMPEG_PATH}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" -fi -export LD_LIBRARY_PATH +#if [ "${ARCH}" = "x86_64" ]; then +# LD_LIBRARY_PATH="${SDK_HOME}/gcc/lib64:${FFMPEG_PATH}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" +#else +# LD_LIBRARY_PATH="${SDK_HOME}/gcc/lib:${FFMPEG_PATH}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" +#fi +#export LD_LIBRARY_PATH # Pretty architecture/platform identifier (used for breakpad symbol files) PKGOS_BITS="${PKGOS}-x86_${BITS}bit" diff --git a/tools/jenkins/build-natron.sh b/tools/jenkins/build-natron.sh index 1aacc4ed99..049f4f7082 100755 --- a/tools/jenkins/build-natron.sh +++ b/tools/jenkins/build-natron.sh @@ -156,7 +156,7 @@ if [ "$QT_VERSION_MAJOR" = 5 ]; then rm Engine/Qt${QT_VERSION_MAJOR}/NatronEngine/* Gui/Qt${QT_VERSION_MAJOR}/NatronGui/* || true SHIBOKEN_INCLUDE_PATHS="-I. -I./Engine -I./Global -Ilibs/OpenFX/include -I${UNIX_SDK_HOME}/include -I${QTDIR}/include -I${QTDIR}/include/QtCore -I${UNIX_PYTHON_HOME}/include/python${PYVER} -I${UNIX_PYTHON_HOME}/include/PySide2 -I${UNIX_PYTHON_HOME}/include/PySide2/QtCore -I${UNIX_PYTHON_HOME}/include/PySide2/QtGui -I${UNIX_PYTHON_HOME}/lib/python${PYVER}/site-packages/PySide2/include -I${UNIX_PYTHON_HOME}/lib/python${PYVER}/site-packages/PySide2/include/QtCore -I${UNIX_PYTHON_HOME}/lib/python${PYVER}/site-packages/PySide2/include/QtGui" SHIBOKEN_TYPESYSTEM_PATHS="-T${UNIX_PYTHON_HOME}/share/PySide2/typesystems -T${UNIX_PYTHON_HOME}/lib/python${PYVER}/site-packages/PySide2/typesystems" - shiboken2 -std=c++17 --avoid-protected-hack --enable-pyside-extensions ${SHIBOKEN_INCLUDE_PATHS} ${SHIBOKEN_TYPESYSTEM_PATHS} --output-directory=Engine/Qt${QT_VERSION_MAJOR} Engine/Pyside2_Engine_Python.h Engine/typesystem_engine.xml + shiboken2 -std=c++17 --avoid-protected-hack --enable-pyside-extensions ${SHIBOKEN_INCLUDE_PATHS} ${SHIBOKEN_TYPESYSTEM_PATHS} --output-directory=Engine/Qt${QT_VERSION_MAJOR} Engine/PySide2_Engine_Python.h Engine/typesystem_engine.xml shiboken2 -std=c++17 --avoid-protected-hack --enable-pyside-extensions ${SHIBOKEN_INCLUDE_PATHS} -I${QTDIR}/include/QtWidgets -I${QTDIR}/include/QtGui -I${QTDIR}/include/QtCore ${SHIBOKEN_TYPESYSTEM_PATHS} -T./Engine -T./Shiboken --output-directory=Gui/Qt${QT_VERSION_MAJOR} Gui/PySide2_Gui_Python.h Gui/typesystem_natronGui.xml diff --git a/tools/jenkins/build-plugins.sh b/tools/jenkins/build-plugins.sh index 31f504d7d6..bb1c8a239e 100755 --- a/tools/jenkins/build-plugins.sh +++ b/tools/jenkins/build-plugins.sh @@ -4,7 +4,7 @@ set -e # Exit immediately if a command exits with a non-zero status set -u # Treat unset variables as an error when substituting. -#set -x # Print commands and their arguments as they are executed. +set -x # Print commands and their arguments as they are executed. source common.sh source manageBuildOptions.sh @@ -63,18 +63,18 @@ fi # Setup env CXXFLAGS_EXTRA= if [ "$PKGOS" = "Linux" ]; then - export OPENJPEG_HOME="$SDK_HOME" - export THIRD_PARTY_TOOLS_HOME="$SDK_HOME" - export LD_LIBRARY_PATH="$SDK_HOME/lib:$FFMPEG_PATH/lib" - export PATH="$SDK_HOME/gcc/bin:$SDK_HOME/bin:$SDK_HOME/cmake/bin:$PATH" - if [ "$ARCH" = "x86_64" ]; then - export LD_LIBRARY_PATH="$SDK_HOME/gcc/lib64:$LD_LIBRARY_PATH" - else - export LD_LIBRARY_PATH="$SDK_HOME/gcc/lib:$LD_LIBRARY_PATH" - fi - export C_INCLUDE_PATH="${SDK_HOME}/gcc/include:${SDK_HOME}/include:${FFMPEG_PATH}/include:$LIBRAW_PATH/include" - export CPLUS_INCLUDE_PATH="${C_INCLUDE_PATH}" - + echo "skipping setting env vars for linux" + #export OPENJPEG_HOME="$SDK_HOME" + #export THIRD_PARTY_TOOLS_HOME="$SDK_HOME" + #export LD_LIBRARY_PATH="$SDK_HOME/lib:$FFMPEG_PATH/lib" + #export PATH="$SDK_HOME/gcc/bin:$SDK_HOME/bin:$SDK_HOME/cmake/bin:$PATH" + #if [ "$ARCH" = "x86_64" ]; then + # export LD_LIBRARY_PATH="$SDK_HOME/gcc/lib64:$LD_LIBRARY_PATH" + #else + # export LD_LIBRARY_PATH="$SDK_HOME/gcc/lib:$LD_LIBRARY_PATH" + #fi + #export C_INCLUDE_PATH="${SDK_HOME}/gcc/include:${SDK_HOME}/include:${FFMPEG_PATH}/include:$LIBRAW_PATH/include" + #export CPLUS_INCLUDE_PATH="${C_INCLUDE_PATH}" elif [ "$PKGOS" = "Windows" ]; then export OPENJPEG_HOME="$SDK_HOME" export THIRD_PARTY_TOOLS_HOME="$SDK_HOME" @@ -161,7 +161,9 @@ if [ "$BUILD_MISC" = "1" ] && [ -d "$TMP_PATH/openfx-misc" ]; then if [ -s "$OSMESA_PATH/lib/libMangledOSMesa32.a" ]; then MESALIB="-lMangledOSMesa32" fi - GLULIB="-lMangledGLU" + if [ "$PKGOS" != "Linux" ]; then + GLULIB="-lMangledGLU" + fi # Build static on Windows so that openfx-misc are usable on other hosts without DLL's and manifests (note Shadertoy will require osmesa dll) # Could/Should also be done on OSX? @@ -212,7 +214,7 @@ if [ "$BUILD_MISC" = "1" ] && [ -d "$TMP_PATH/openfx-misc" ]; then LDFLAGS_ADD="${BUILDID:-} ${EXTRA_LDFLAGS_OFXMISC:-}" \ HAVE_CIMG=0 \ ${OMP} \ - CXXFLAGS_EXTRA="-DHAVE_OSMESA ${CXXFLAGS_EXTRA}" \ + CXXFLAGS_EXTRA="${CXXFLAGS_EXTRA}" \ make -j"${MKJOBS}" ${MAKEFLAGS_VERBOSE:-} set +x @@ -319,7 +321,8 @@ if [ "$BUILD_IO" = "1" ] && [ -d "$TMP_PATH/openfx-io" ]; then BITS="${BITS}" \ LDFLAGS_ADD="${BUILDID:-}" \ CXXFLAGS_EXTRA="${CXXFLAGS_EXTRA}" \ - make -j"${MKJOBS}" ${MAKEFLAGS_VERBOSE:-} + make -j"${MKJOBS}" ${MAKEFLAGS_VERBOSE:-} \ + SUBDIRS_NOMULTI="EXR FFmpeg OCIO OIIO PFM PNG" nomulti # Skip SeExpr2 which doesn't support Qt5 ${CP_OR_MV} ./*/*-*-*/*.ofx.bundle "$TMP_BINARIES_PATH/OFX/Plugins/" set +x echo "Info: build openfx-io using make... done!" diff --git a/tools/jenkins/common.sh b/tools/jenkins/common.sh index a1df96a50c..6ba549a9ad 100644 --- a/tools/jenkins/common.sh +++ b/tools/jenkins/common.sh @@ -96,7 +96,8 @@ if [ "$PKGOS" = "Linux" ]; then else exit 1 fi - SDK_HOME="/opt/Natron-$SDK_VERSION" + #SDK_HOME="/opt/Natron-$SDK_VERSION" + SDK_HOME="/usr" # Path where GPL builds are stored CUSTOM_BUILDS_PATH="$SDK_HOME" @@ -330,21 +331,8 @@ if [ "$PKGOS" = "Windows" ]; then LIBRAW_PATH="$CUSTOM_BUILDS_PATH/libraw-lgpl" fi elif [ "$PKGOS" = "Linux" ]; then - if [ "${NATRON_LICENSE:-}" = "GPL" ]; then - if [ -d "$CUSTOM_BUILDS_PATH/ffmpeg-gpl" ]; then - FFMPEG_PATH="$CUSTOM_BUILDS_PATH/ffmpeg-gpl" - elif [ -d "$CUSTOM_BUILDS_PATH/ffmpeg-gpl2" ]; then - FFMPEG_PATH="$CUSTOM_BUILDS_PATH/ffmpeg-gpl2" - else - (>&2 echo "FFmpeg cannot be found in $SDK_HOME/ffmpeg-gpl or $SDK_HOME/ffmpeg-gpl2") - (>&2 echo "Info: Setting FFMPEG_PATH=$SDK_HOME/ffmpeg-gpl2") - FFMPEG_PATH="$SDK_HOME/ffmpeg-gpl2" - fi - LIBRAW_PATH="$CUSTOM_BUILDS_PATH/libraw-gpl2" - elif [ -z "${NATRON_LICENSE+x}" ] || [ "${NATRON_LICENSE:-}" = "COMMERCIAL" ]; then - FFMPEG_PATH="$CUSTOM_BUILDS_PATH/ffmpeg-lgpl" - LIBRAW_PATH="$CUSTOM_BUILDS_PATH/libraw-lgpl" - fi + FFMPEG_PATH="/usr" + LIBRAW_PATH="/usr" elif [ "$PKGOS" = "OSX" ]; then LIBRAW_PATH="$SDK_HOME" FFMPEG_PATH="$SDK_HOME" @@ -371,13 +359,17 @@ if [ -d "$SDK_HOME/osmesa" ]; then OSMESA_PATH="$SDK_HOME/osmesa" elif [ -d "/opt/osmesa" ]; then OSMESA_PATH="/opt/osmesa" +elif [ "$PKGOS" = "Linux" ]; then + OSMESA_PATH="/usr" else (>&2 echo "Warning: OSMesa cannot be found in $SDK_HOME/osmesa or /opt/osmesa") (>&2 echo "Info: Setting OSMESA_PATH=$SDK_HOME/osmesa") OSMESA_PATH="$SDK_HOME/osmesa" fi -if [ -n "${LLVM_PREFIX:-}" ]; then +if [ "$PKGOS" = "Linux" ]; then + LLVM_PATH="/usr" +elif [ -n "${LLVM_PREFIX:-}" ]; then LLVM_PATH="${LLVM_PREFIX}" elif [ -d "$SDK_HOME/llvm" ]; then LLVM_PATH="$SDK_HOME/llvm" @@ -396,6 +388,8 @@ elif [ -d "$SDK_HOME/libexec/qt${QT_VERSION_MAJOR}" ]; then QTDIR="$SDK_HOME/libexec/qt${QT_VERSION_MAJOR}" elif [ -x "$SDK_HOME/bin/qmake" ] || [ -x "$SDK_HOME/bin/qmake.exe" ]; then QTDIR="$SDK_HOME" +elif [ "$PKGOS" = "Linux" ]; then + QTDIR="/usr" else (>&2 echo "Warning: Qt cannot be found in $SDK_HOME or $SDK_HOME/qt${QT_VERSION_MAJOR}") (>&2 echo "Info: setting QTDIR=$SDK_HOME/qt${QT_VERSION_MAJOR}") @@ -407,11 +401,12 @@ BOOST_ROOT="$SDK_HOME" PKG_CONFIG_PATH= if [ "$PKGOS" = "Linux" ]; then - PATH="$SDK_HOME/bin:$QTDIR/bin:$SDK_HOME/gcc/bin:$FFMPEG_PATH/bin:$LIBRAW_PATH/bin:$PATH" - LIBRARY_PATH="$SDK_HOME/lib:$QTDIR/lib:$SDK_HOME/gcc/lib64:$SDK_HOME/gcc/lib:$FFMPEG_PATH/lib:$LIBRAW_PATH/lib" - LD_LIBRARY_PATH="$SDK_HOME/lib:$QTDIR/lib:$SDK_HOME/gcc/lib64:$SDK_HOME/gcc/lib:$FFMPEG_PATH/lib:$LIBRAW_PATH/lib" + echo "skipping using Natron SDK, deferring to ubuntu system libraries" + #PATH="$SDK_HOME/bin:$QTDIR/bin:$SDK_HOME/gcc/bin:$FFMPEG_PATH/bin:$LIBRAW_PATH/bin:$PATH" + #LIBRARY_PATH="$SDK_HOME/lib:$QTDIR/lib:$SDK_HOME/gcc/lib64:$SDK_HOME/gcc/lib:$FFMPEG_PATH/lib:$LIBRAW_PATH/lib" + #LD_LIBRARY_PATH="$SDK_HOME/lib:$QTDIR/lib:$SDK_HOME/gcc/lib64:$SDK_HOME/gcc/lib:$FFMPEG_PATH/lib:$LIBRAW_PATH/lib" #LD_RUN_PATH="$SDK_HOME/lib:$QTDIR/lib:$SDK_HOME/gcc/lib:$FFMPEG_PATH/lib:$LIBRAW_PATH/lib" - PKG_CONFIG_PATH="$SDK_HOME/lib/pkgconfig:$SDK_HOME/share/pkgconfig:$SDK_HOME/libdata/pkgconfig:$FFMPEG_PATH/lib/pkgconfig:$LIBRAW_PATH/lib/pkgconfig:$OSMESA_PATH/lib/pkgconfig:$PYTHON_HOME/lib/pkgconfig:$QTDIR/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" + #PKG_CONFIG_PATH="$SDK_HOME/lib/pkgconfig:$SDK_HOME/share/pkgconfig:$SDK_HOME/libdata/pkgconfig:$FFMPEG_PATH/lib/pkgconfig:$LIBRAW_PATH/lib/pkgconfig:$OSMESA_PATH/lib/pkgconfig:$PYTHON_HOME/lib/pkgconfig:$QTDIR/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" elif [ "$PKGOS" = "Windows" ]; then PKG_CONFIG_PATH="$FFMPEG_PATH/lib/pkgconfig:$LIBRAW_PATH/lib/pkgconfig:$OSMESA_PATH/lib/pkgconfig:$(cygpath -u ${PYTHON_HOME})/lib/pkgconfig:$QTDIR/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" elif [ "$PKGOS" = "OSX" ]; then @@ -419,12 +414,16 @@ elif [ "$PKGOS" = "OSX" ]; then fi export LD_LIBRARY_PATH LD_RUN_PATH DYLD_LIBRARY_PATH LIBRARY_PATH CPATH PKG_CONFIG_PATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH BOOST_ROOT -if [ "${QT_VERSION_MAJOR}" = 4 ]; then - QT_VERSION=$(pkg-config --modversion QtCore) -else - QT_VERSION=$(pkg-config --modversion Qt${QT_VERSION_MAJOR}Core) -fi -QT_VERSION_MINOR=$(echo $QT_VERSION | cut -d. -f2) +# [Troy] This is unnecessary and breaks the linux build because pkg-config +# is used to find the Qt5 version before Qt5 is actually built/installed into +# $SDK_HOME. +# +#if [ "${QT_VERSION_MAJOR}" = 4 ]; then +# QT_VERSION=$(pkg-config --modversion QtCore) +#else +# QT_VERSION=$(pkg-config --modversion Qt${QT_VERSION_MAJOR}Core) +#fi +#QT_VERSION_MINOR=$(echo $QT_VERSION | cut -d. -f2) # Load compiler related stuff source $CWD/compiler-common.sh diff --git a/tools/jenkins/include/natron/Linux.pri b/tools/jenkins/include/natron/Linux.pri index bf13dd4797..cd66960d7c 100644 --- a/tools/jenkins/include/natron/Linux.pri +++ b/tools/jenkins/include/natron/Linux.pri @@ -4,20 +4,39 @@ expat: PKGCONFIG -= expat INCLUDEPATH+=/opt/Natron-sdk/include LIBS+="-L/opt/Natron-sdk/lib" -pyside { -PKGCONFIG -= pyside -PKGCONFIG -= pyside-py$$PYV -INCLUDEPATH += $$system(pkg-config --variable=includedir pyside-py$$PYV) -INCLUDEPATH += $$system(pkg-config --variable=includedir pyside-py$$PYV)/QtCore -INCLUDEPATH += $$system(pkg-config --variable=includedir pyside-py$$PYV)/QtGui -INCLUDEPATH += $$system(pkg-config --variable=includedir QtGui) -LIBS += $$system(pkg-config --libs pyside-py$$PYV) +equals(QT_MAJOR_VERSION, 5) { + pyside { + #PKGCONFIG -= pyside + #PKGCONFIG -= pyside-py$$PYV + INCLUDEPATH += $$system(pkg-config --variable=includedir pyside2) + INCLUDEPATH += $$system(pkg-config --variable=includedir pyside2)/QtCore + INCLUDEPATH += $$system(pkg-config --variable=includedir pyside2)/QtGui + #INCLUDEPATH += $$system(pkg-config --variable=includedir QtGui) + LIBS += $$system(pkg-config --libs pyside2) + } + shiboken { + #PKGCONFIG -= shiboken + #PKGCONFIG -= shiboken-py$$PYV + INCLUDEPATH += $$system(pkg-config --variable=includedir shiboken2) + LIBS += $$system(pkg-config --libs shiboken2) + } } -shiboken { -PKGCONFIG -= shiboken -PKGCONFIG -= shiboken-py$$PYV -INCLUDEPATH += $$system(pkg-config --variable=includedir shiboken-py$$PYV) -LIBS += $$system(pkg-config --libs shiboken-py$$PYV) +equals(QT_MAJOR_VERSION, 4) { + pyside { + PKGCONFIG -= pyside + PKGCONFIG -= pyside-py$$PYV + INCLUDEPATH += $$system(pkg-config --variable=includedir pyside-py$$PYV) + INCLUDEPATH += $$system(pkg-config --variable=includedir pyside-py$$PYV)/QtCore + INCLUDEPATH += $$system(pkg-config --variable=includedir pyside-py$$PYV)/QtGui + INCLUDEPATH += $$system(pkg-config --variable=includedir QtGui) + LIBS += $$system(pkg-config --libs pyside-py$$PYV) + } + shiboken { + PKGCONFIG -= shiboken + PKGCONFIG -= shiboken-py$$PYV + INCLUDEPATH += $$system(pkg-config --variable=includedir shiboken-py$$PYV) + LIBS += $$system(pkg-config --libs shiboken-py$$PYV) + } } QMAKE_LFLAGS += -Wl,-rpath,\\\$\$ORIGIN/../lib diff --git a/tools/jenkins/include/scripts/build-Linux-sdk.sh b/tools/jenkins/include/scripts/build-Linux-sdk.sh index a3531157cb..4cbfbc471a 100755 --- a/tools/jenkins/include/scripts/build-Linux-sdk.sh +++ b/tools/jenkins/include/scripts/build-Linux-sdk.sh @@ -104,7 +104,7 @@ EOF LD_RUN_PATH=\"\$SDK/lib:\$QTDIR/lib:\$GCC/lib:\$FFMPEG/lib:\$LIBRAW/lib\" \\ CPATH=\"\$SDK/include:\$QTDIR/include:\$GCC/include:\$FFMPEG/include:\$LIBRAW/include:\$OSMESA/include\" \\ PKG_CONFIG_PATH=\"\$SDK/lib/pkgconfig:\$OSMESA/lib/pkgconfig:\$QTDIR/lib/pkgconfig:\$GCC/lib/pkgconfig:\$FFMPEG/lib/pkgconfig:\$LIBRAW/lib/pkgconfig\" \\ - PATH=\"\$SDK/bin:\$QTDIR/bin:\$GCC/bin:\$FFMPEG/bin:\$LIBRAW_PATH:\$PATH\" \\ + PATH=\"\$SDK/bin:\$QTDIR/bin:\$GCC/bin:\$FFMPEG/bin:\$LIBRAW/bin:\$PATH\" \\ WORKSPACE=/home \\ GIT_URL=https://github.com/NatronGitHub/Natron.git \\ GIT_BRANCH=RB-2.5 \\ @@ -222,7 +222,7 @@ EOF ARCH=x86_64 fi SDKPREP="ARG DEBIAN_FRONTEND=noninteractive -RUN apt-get update && apt-get install -y build-essential xorg-dev libgl-dev libegl1-mesa-dev libglu-dev wget git valgrind zip && rm -rf /var/lib/apt/lists/*" +RUN apt-get update && apt-get install -y build-essential xorg-dev libgl-dev libegl1-mesa-dev libglu-dev wget git valgrind zip python3 python3-dev libshiboken2-dev libpyside2-dev && rm -rf /var/lib/apt/lists/*" cat <&2 echo "Error: librsvg requires rust. Please install rust by executing:") - (>&2 echo "$SDK_HOME/bin/curl https://sh.rustup.rs -sSf | sh") - exit 1 + $SDK_HOME/bin/curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y fi source "$HOME/.cargo/env" if [ "$ARCH" = "x86_64" ]; then diff --git a/tools/jenkins/include/scripts/pkg/poppler-glib.sh b/tools/jenkins/include/scripts/pkg/poppler-glib.sh index 5d0d718e74..a7761723c2 100644 --- a/tools/jenkins/include/scripts/pkg/poppler-glib.sh +++ b/tools/jenkins/include/scripts/pkg/poppler-glib.sh @@ -4,7 +4,8 @@ # see http://www.linuxfromscratch.org/blfs/view/svn/general/poppler.html POPPLER_VERSION=23.05.0 POPPLER_TAR="poppler-${POPPLER_VERSION}.tar.xz" -POPPLER_SITE="https://poppler.freedesktop.org" +#POPPLER_SITE="https://poppler.freedesktop.org" +POPPLER_SITE="https://web.archive.org/web/20250503140523/https://poppler.freedesktop.org/" if download_step; then download "$POPPLER_SITE" "$POPPLER_TAR" fi diff --git a/tools/jenkins/include/scripts/pkg/pyside2.sh b/tools/jenkins/include/scripts/pkg/pyside2.sh index 307470aa6f..cc4c7aab61 100644 --- a/tools/jenkins/include/scripts/pkg/pyside2.sh +++ b/tools/jenkins/include/scripts/pkg/pyside2.sh @@ -25,9 +25,21 @@ if build_step && { force_build || { [ ! -x "$SDK_HOME/lib/python{PY3_VERSION_SHO pushd _build # It's OK to install in $SDK_HOME and not $QT5PREFIX, even if it's qt5-specific, # because PySide2 only works with Qt5 anyway. - cmake .. -DCMAKE_INSTALL_PREFIX="$SDK_HOME" -DCMAKE_C_FLAGS="$BF" -DCMAKE_CXX_FLAGS="$BF" \ - -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" -DPYTHON_EXECUTABLE="$PY3_EXE" -GNinja + # [TROY] Building using cmake directly failed to compile shiboken2 because of this error: https://bugs.gentoo.org/show_bug.cgi?id=913096 + # I gave up on this approach and tried using setuptools method below. + cmake .. \ + -DCMAKE_INSTALL_PREFIX="$SDK_HOME" \ + -DCMAKE_C_FLAGS="$BF" \ + -DCMAKE_CXX_FLAGS="$BF" \ + -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" \ + -DPYTHON_EXECUTABLE="$PY3_EXE" \ + -DPYTHON_LIMITED_API=ON \ + -DFORCE_LIMITED_API=yes \ + -DLLVM_CONFIG="${LLVM_PATH}/bin/llvm-config" \ + -GNinja ninja install + # [TROY] Building using `setup.py install` was slightly more successful, but failed to build pyside2. + #python3 setup.py install --qmake=/opt/Natron-sdk/qt5/bin/qmake --parallel=8 --limited-api=yes --build-tests popd popd rm -rf "pyside-setup-opensource-src-${PYSIDE2_VERSION}" diff --git a/tools/jenkins/include/scripts/pkg/qt5.sh b/tools/jenkins/include/scripts/pkg/qt5.sh index 11a6e6b829..dfac164354 100644 --- a/tools/jenkins/include/scripts/pkg/qt5.sh +++ b/tools/jenkins/include/scripts/pkg/qt5.sh @@ -4,7 +4,7 @@ # see https://www.linuxfromscratch.org/blfs/view/svn/x/qt5.html # Note: This is excluding qtwebengine, which is available separately (for security reasons): # https://www.linuxfromscratch.org/blfs/view/svn/x/qtwebengine.html -QT5_VERSION=5.15.9 +QT5_VERSION=5.15.14 QT5_VERSION_SHORT=${QT5_VERSION%.*} QT5_TAR="qt-everywhere-opensource-src-${QT5_VERSION}.tar.xz" QT5_SITE="https://download.qt.io/archive/qt/${QT5_VERSION_SHORT}/${QT5_VERSION}/single" @@ -14,7 +14,7 @@ QT5_SITE="https://download.qt.io/archive/qt/${QT5_VERSION_SHORT}/${QT5_VERSION}/ # Required patch: https://www.linuxfromscratch.org/patches/blfs/svn/qt-everywhere-src-5.15.2-kf5.15-2.patch # Details of the kde curation can be found at https://dot.kde.org/2021/04/06/announcing-kdes-qt-5-patch-collection # and https://community.kde.org/Qt5PatchCollection. -QT5_PATCH="qt-everywhere-opensource-src-5.15.9-kf5-1.patch" +QT5_PATCH="qt-everywhere-opensource-src-5.15.14-kf5-1.patch" QT5_PATCH_SITE="https://www.linuxfromscratch.org/patches/blfs/svn" if download_step; then @@ -45,7 +45,8 @@ if build_step && { force_build || { [ ! -s "$QT5PREFIX/lib/pkgconfig/Qt5Core.pc" -nomake examples \ -no-rpath \ -syslog \ - -skip qtwebengine + -skip qtwebengine \ + -skip qtlocation make -j${MKJOBS} make install # Remove references to the build directory from installed library dependency (prl) files by running the following command as the root user: diff --git a/tools/jenkins/include/scripts/pkg/shiboken2.sh b/tools/jenkins/include/scripts/pkg/shiboken2.sh new file mode 100644 index 0000000000..15ba230ae1 --- /dev/null +++ b/tools/jenkins/include/scripts/pkg/shiboken2.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Install shiboken +# See https://github.com/pyside/pyside-setup +PYSIDE_SETUP_VERSION=5.15.2 +PYSIDE_SETUP_GIT="git@github.com:pyside/pyside-setup.git" + +if download_step; then + git_clone_branch_or_tag "${PYSIDE_SETUP_GIT}" "${PYSIDE_SETUP_VERSION}" +fi +if build_step && { force_build || { [ ! -s "$SDK_HOME/lib/pkgconfig/shiboken2.pc" ] || [ "$(env PKG_CONFIG_PATH=$SDK_HOME/lib/pkgconfig:$QT5PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH pkg-config --modversion shiboken2)" != "$SHIBOKEN_VERSION" ]; }; }; then + start_build + pushd "pyside-setup" + + python setup.py build + + popd + rm -rf "pyside-setup" + end_build +fi