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