File indexing completed on 2024-06-16 04:06:50

0001 #! /bin/bash
0002 
0003 # Script to build digiKam using VCPKG
0004 #
0005 # SPDX-FileCopyrightText: 2015-2024 by Gilles Caulier  <caulier dot gilles at gmail dot com>
0006 #
0007 # SPDX-License-Identifier: BSD-3-Clause
0008 #
0009 
0010 # Halt and catch errors
0011 set -eE
0012 trap 'PREVIOUS_COMMAND=$THIS_COMMAND; THIS_COMMAND=$BASH_COMMAND' DEBUG
0013 trap 'echo "FAILED COMMAND: $PREVIOUS_COMMAND"' ERR
0014 
0015 #################################################################################################
0016 # Manage script traces to log file
0017 
0018 mkdir -p ./logs
0019 exec > >(tee ./logs/build-digikam.full.log) 2>&1
0020 
0021 #################################################################################################
0022 
0023 echo "03-build-digikam.sh : build digiKam using VCPKG."
0024 echo "------------------------------------------------"
0025 
0026 #################################################################################################
0027 # Pre-processing checks
0028 
0029 . ./config.sh
0030 . ./common.sh
0031 StartScript
0032 ChecksCPUCores
0033 RegisterRemoteServers
0034 AppendVCPKGPaths
0035 
0036 #################################################################################################
0037 
0038 # Paths rules
0039 ORIG_WD="`pwd`"
0040 
0041 if [ ! -d $BUILDING_DIR/dk_cmake ] ; then
0042     mkdir -p $BUILDING_DIR/dk_cmake
0043 fi
0044 
0045 cd $BUILDING_DIR/dk_cmake
0046 
0047 #################################################################################################
0048 # Check if IcoTool CLI program is installed
0049 
0050 if ! which icotool ; then
0051     echo "IcoTool is not installed"
0052     echo "See https://www.nongnu.org/icoutils/ for details."
0053     exit 1
0054 else
0055     echo "Check IcoTool CLI passed..."
0056 fi
0057 
0058 #################################################################################################
0059 # Install out-dated dependencies
0060 
0061 if [ ! -d $BUILDING_DIR/dk_cmake ] ; then
0062     mkdir -p $BUILDING_DIR/dk_cmake
0063 fi
0064 
0065 cd $BUILDING_DIR/dk_cmake
0066 
0067 rm -rf $BUILDING_DIR/dk_cmake/* || true
0068 
0069 cmake $ORIG_WD/../3rdparty \
0070       -DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake \
0071       -DVCPKG_TARGET_TRIPLET=$VCPKG_TRIPLET \
0072       -DCMAKE_COLOR_MAKEFILE=ON \
0073       -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
0074       -DCMAKE_INSTALL_PREFIX=$VCPKG_INSTALL_PREFIX \
0075       -DCMAKE_BUILD_TYPE=RelWithDebInfo \
0076       -DINSTALL_ROOT=$VCPKG_INSTALL_PREFIX \
0077       -DBUILD_TESTING=OFF \
0078       -DBUILD_WITH_QT6=ON \
0079       -DEXTERNALS_DOWNLOAD_DIR=$DOWNLOAD_DIR \
0080       -DKP_VERSION=$DK_KP_VERSION \
0081       -DKA_VERSION=$DK_KA_VERSION \
0082       -DKDE_VERSION=$DK_KDE_VERSION \
0083       -DENABLE_QTVERSION=$DK_QTVERSION \
0084       -DENABLE_QTWEBENGINE=$DK_QTWEBENGINE \
0085       -Wno-dev
0086 
0087 cmake --build . --config RelWithDebInfo --target ext_lensfun --parallel
0088 cp $DOWNLOAD_DIR/lensfun_manifest.txt $ORIG_WD/data/
0089 
0090 #################################################################################################
0091 # Build digiKam in temporary directory and installation
0092 
0093 # Clean up previous install (see bug #459276)
0094 
0095 FILES=$(find "$VCPKG_INSTALL_PREFIX" -name \* | grep -E '(digikam|showfoto)') || true
0096 
0097 for FILE in $FILES ; do
0098     if [[ -f $FILE || -d $FILE ]] ; then
0099         echo -e "   ==> $FILE will be removed from previous install"
0100         rm -fr $FILE
0101     fi
0102 done
0103 
0104 cd $BUILDING_DIR
0105 
0106 if [ -d "$DK_BUILDTEMP/digikam-$DK_VERSION" ] ; then
0107 
0108     echo "---------- Updating existing $DK_BUILDTEMP"
0109 
0110     cd "$DK_BUILDTEMP"
0111     cd digikam-$DK_VERSION
0112 
0113     git reset --hard
0114     git pull
0115 
0116 else
0117 
0118     echo "---------- Creating $DK_BUILDTEMP"
0119     mkdir -p "$DK_BUILDTEMP"
0120 
0121     if [ $? -ne 0 ] ; then
0122         echo "---------- Cannot create $DK_BUILDTEMP directory."
0123         echo "---------- Aborting..."
0124         exit;
0125     fi
0126 
0127     cd "$DK_BUILDTEMP"
0128     echo -e "\n\n"
0129     echo "---------- Downloading digiKam $DK_VERSION"
0130 
0131     git clone --progress --verbose --branch $DK_VERSION --single-branch $DK_GITURL digikam-$DK_VERSION
0132     cd digikam-$DK_VERSION
0133 
0134     if [ $? -ne 0 ] ; then
0135         echo "---------- Cannot clone repositories."
0136         echo "---------- Aborting..."
0137         exit;
0138     fi
0139 
0140     mkdir build
0141 
0142 fi
0143 
0144 echo -e "\n\n"
0145 echo "---------- Configure digiKam $DK_VERSION"
0146 
0147 sed -e "s/DIGIKAMSC_COMPILE_PO=OFF/DIGIKAMSC_COMPILE_PO=ON/g"   ./bootstrap.vcpkg > ./tmp.vcpkg ; mv -f ./tmp.vcpkg ./bootstrap.vcpkg
0148 sed -e "s/DBUILD_TESTING=ON/DBUILD_TESTING=OFF/g"               ./bootstrap.vcpkg > ./tmp.vcpkg ; mv -f ./tmp.vcpkg ./bootstrap.vcpkg
0149 sed -e "s/DENABLE_DBUS=ON/DENABLE_DBUS=OFF/g"                   ./bootstrap.vcpkg > ./tmp.vcpkg ; mv -f ./tmp.vcpkg ./bootstrap.vcpkg
0150 
0151 chmod +x ./bootstrap.vcpkg
0152 
0153 ./bootstrap.vcpkg $INSTALL_DIR RelWithDebInfo
0154 
0155 if [ $? -ne 0 ]; then
0156     echo "---------- Cannot configure digiKam $DK_VERSION."
0157     echo "---------- Aborting..."
0158     exit;
0159 fi
0160 
0161 echo -e "\n\n"
0162 echo "---------- Building digiKam $DK_VERSION"
0163 
0164 cd "$DK_BUILDTEMP/digikam-$DK_VERSION/build"
0165 cmake --build . --parallel --config RelWithDebInfo
0166 
0167 if [ $? -ne 0 ]; then
0168     echo "---------- Cannot compile digiKam $DK_VERSION."
0169     echo "---------- Aborting..."
0170     exit;
0171 fi
0172 
0173 cat $DK_BUILDTEMP/digikam-$DK_VERSION/build/core/app/utils/digikam_version.h   | grep "digikam_version\[\]" | awk '{print $6}' | tr -d '";'  > $ORIG_WD/data/RELEASEID.txt
0174 cat $DK_BUILDTEMP/digikam-$DK_VERSION/build/core/app/utils/digikam_builddate.h | grep "define BUILD_DATE"   | awk '{print $3}' | tr -d '"\n' > $ORIG_WD/data/BUILDDATE.txt
0175 
0176 # Copy manifests for rolling release codes included in digiKam core.
0177 cp  $DK_BUILDTEMP/digikam-$DK_VERSION/core/libs/dimg/filters/transform/lqr/liblqr_manifest.txt $ORIG_WD/data
0178 cp  $DK_BUILDTEMP/digikam-$DK_VERSION/core/libs/rawengine/libraw/libraw_manifest.txt $ORIG_WD/data
0179 cp  $DK_BUILDTEMP/digikam-$DK_VERSION/core/libs/dplugins/webservices/o2/o2_manifest.txt $ORIG_WD/data
0180 
0181 echo -e "\n\n"
0182 echo "---------- Installing digiKam $DK_VERSION"
0183 echo -e "\n\n"
0184 
0185 cd "$DK_BUILDTEMP/digikam-$DK_VERSION/build"
0186 cmake --install . --config RelWithDebInfo
0187 
0188 cd "$ORIG_WD"
0189 
0190 if [ $? -ne 0 ]; then
0191     echo "---------- Cannot install digiKam $DK_VERSION."
0192     echo "---------- Aborting..."
0193     exit;
0194 fi
0195 
0196 #################################################################################################
0197 # Install Extra Plugins
0198 
0199 if [ ! -d $BUILDING_DIR/dk_cmake ] ; then
0200     mkdir -p $BUILDING_DIR/dk_cmake
0201 fi
0202 
0203 cd $BUILDING_DIR/dk_cmake
0204 
0205 rm -rf $BUILDING_DIR/dk_cmake/* || true
0206 
0207 cmake $ORIG_WD/../3rdparty \
0208       -DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake \
0209       -DVCPKG_TARGET_TRIPLET=$VCPKG_TRIPLET \
0210       -DCMAKE_COLOR_MAKEFILE=ON \
0211       -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
0212       -DCMAKE_INSTALL_PREFIX=$VCPKG_INSTALL_PREFIX \
0213       -DCMAKE_BUILD_TYPE=RelWithDebInfo \
0214       -DINSTALL_ROOT=$VCPKG_INSTALL_PREFIX \
0215       -DBUILD_TESTING=OFF \
0216       -DBUILD_WITH_QT6=ON \
0217       -DEXTERNALS_DOWNLOAD_DIR=$DOWNLOAD_DIR \
0218       -DKP_VERSION=$DK_KP_VERSION \
0219       -DKA_VERSION=$DK_KA_VERSION \
0220       -DKDE_VERSION=$DK_KDE_VERSION \
0221       -DENABLE_QTVERSION=$DK_QTVERSION \
0222       -DENABLE_QTWEBENGINE=$DK_QTWEBENGINE \
0223       -Wno-dev
0224 
0225 cmake --build . --config RelWithDebInfo --target ext_mosaicwall --parallel
0226 cmake --build . --config RelWithDebInfo --target ext_flowview   --parallel
0227 cmake --build . --config RelWithDebInfo --target ext_gmic_qt    --parallel
0228 
0229 #################################################################################################
0230 
0231 export PATH=$ORIG_PATH
0232 
0233 TerminateScript