File indexing completed on 2024-04-14 04:45:51
0001 #!/bin/bash 0002 # SPDX-FileCopyrightText: 2018 V. Pinon <vpinon@kde.org> 0003 # SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 # Uses msys2 package management, download from msys2.org 0005 0006 # Be verbose, halt on errors 0007 set -xe 0008 0009 [ -z "$MSYSTEM" ] && echo "Please run under MSYS/MINGW(64)" && exit 1 0010 0011 # change this to another location if you prefer 0012 export SRC=$PWD/src 0013 mkdir -p $SRC 0014 0015 export PREFIX=$MINGW_PREFIX 0016 0017 #if [ -n "$PREFIX" ] ; then 0018 # mkdir -p $PREFIX/lib 0019 # export PATH=$PREFIX/bin:$PATH 0020 # export LD_LIBRARY_PATH=$PREFIX/lib:/usr/lib 0021 # export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig:/usr/lib/pkgconfig 0022 #fi 0023 0024 THREADS=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu) 0025 [[ $THREADS -gt 1 ]] && THREADS=$((THREADS-1)) 0026 0027 # $@: package base names 0028 function pacman_install { 0029 pacman -Sy --needed ${@/#/mingw-w64-x86_64-} 0030 } 0031 0032 # $1: repo URL, $2: branch 0033 function git_pull { 0034 URL=$1 BRANCH=$2 0035 PKG=${URL##*/}; PKG=${PKG%%.git} 0036 cd $SRC 0037 if [ -d $PKG ]; then 0038 echo "$PKG already cloned" 0039 cd $PKG 0040 # git reset --hard 0041 git checkout $BRANCH 0042 git pull --rebase 0043 cd .. 0044 else 0045 git clone $URL 0046 fi 0047 } 0048 0049 # $1: archive URL 0050 function wget_extract { 0051 URL=$1 0052 ARCHIVE=${URL##*/} 0053 PKGVERS=${ARCHIVE%%.tar.*} 0054 cd $SRC 0055 if [ -d $SRC/$PKGVERS ]; then 0056 echo "$PKGVERS already downloaded" 0057 else 0058 [ -f $ARCHIVE ] || wget $URL 0059 if [[ ${ARCHIVE##*.} == zip ]] ; then 0060 unzip $ARCHIVE 0061 else 0062 tar -xf ${URL##*/} 0063 fi 0064 fi 0065 } 0066 0067 # $1: package name ; $@: cmake args 0068 function cmake_ninja { 0069 PKG=$1; shift; CMAKE_ARGS="$@" 0070 [ -n "$PREFIX" ] && CMAKE_ARGS+=" -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX" 0071 if [ ! -f $SRC/$PKG/build/CMakeCache.txt ] ; then 0072 mkdir -p $SRC/$PKG/build 0073 cd $SRC/$PKG/build 0074 cmake .. -G Ninja $CMAKE_ARGS 0075 fi 0076 cd $SRC/$PKG/build 0077 ninja install 0078 } 0079 0080 # $1: package name ; $2: configure args 0081 function configure_make { 0082 PKG=$1; shift; CONFIGURE_ARGS="$@" 0083 [ -n "$PREFIX" ] && CONFIGURE_ARGS+=" --prefix=$PREFIX" 0084 cd $SRC/$PKG 0085 ./configure $CONFIGURE_ARGS 0086 mingw32-make -j$THREADS 0087 mingw32-make install 0088 } 0089 0090 0091 #### DOWNLOAD DEPS 0092 if pacman -Suy ; then 0093 # MSYS tools 0094 pacman -Sy --needed tar git automake1.16 0095 # MINGW packages 0096 TOOLS="make cmake ninja pkg-config libtool" # ruby 0097 DEPS="gcc drmingw gavl opencv dlfcn SDL2 exiv2 libexif vid.stab ffmpeg gtk2 qt5 fftw ladspa-sdk eigen3 extra-cmake-modules" 0098 KF5=(breeze-icons karchive kconfig kcoreaddons kdbusaddons kguiaddons \ 0099 ki18n kitemviews kwidgetsaddons kcompletion kwindowsystem \ 0100 kcrash kjobwidgets kauth kcodecs kconfigwidgets kiconthemes \ 0101 solid sonnet attica kservice kglobalaccel ktextwidgets \ 0102 kxmlgui kbookmarks knotifications kio knewstuff \ 0103 kpackage kdeclarative kirigami2 \ 0104 kcmutils plasma-framework) 0105 pacman_install $DEPS $TOOLS ${KF5[@]/%/-qt5} 0106 fi 0107 0108 #### BUILD EXTRA KF5 0109 0110 KF5_VERSION=$(pacman -Ss $MINGW_PACKAGE_PREFIX-extra-cmake-modules | sed -n 's/.* \(5\..*\)-.*/\1/p') 0111 for FRAMEWORK in knotifyconfig purpose frameworkintegration ; do 0112 #git_pull git://anongit.kde.org/$FRAMEWORK v$KF5_VERSION 0113 wget_extract https://download.kde.org/stable/frameworks/${KF5_VERSION%.*}/$FRAMEWORK-$KF5_VERSION.tar.xz 0114 cmake_ninja $FRAMEWORK-$KF5_VERSION \ 0115 -DKDE_INSTALL_USE_QT_SYS_PATHS:BOOL=ON 0116 #-DBUILD_TESTING:BOOL=OFF \ 0117 #-DKDE_INSTALL_LIBDIR=lib \ 0118 #-DKDE_INSTALL_QMLDIR=share/qt5/qml \ 0119 #-DKDE_INSTALL_QTPLUGINDIR=share/qt5/plugins \ 0120 #-DKDE_INSTALL_DBUSDIR=share/dbus-1 \ 0121 #-DKDE_INSTALL_MANDIR=share/man \ 0122 #-DKDE_INSTALL_APPDIR=share/applications \ 0123 #-DKDE_INSTALL_MIMEDIR=share/mime/packages \ 0124 #-DECM_MKSPECS_INSTALL_DIR=$MINGW_PREFIX/share/qt5/mkspecs/modules \ 0125 #-DECM_DIR=$MINGW_PREFIX/share/ECM \ 0126 done 0127 wget_extract https://download.kde.org/stable/plasma/5.16.5/kdecoration-5.16.5.tar.xz 0128 cmake_ninja kdecoration-5.16.5 -DKDE_INSTALL_USE_QT_SYS_PATHS:BOOL=ON 0129 wget_extract https://download.kde.org/stable/plasma/5.16.5/breeze-5.16.5.tar.xz || true # symlink errors 0130 cmake_ninja breeze-5.16.5 -DKDE_INSTALL_USE_QT_SYS_PATHS:BOOL=ON 0131 0132 #### BUILD MULTIMEDIA DEPS 0133 0134 if false ; then # Still Failing 0135 wget_extract https://github.com/jackaudio/jack2/releases/download/v1.9.12/jack2-1.9.12.tar.gz 0136 git_pull https://github.com/jackaudio/jack2.git 0137 pushd $SRC/jack2 #-1.9.12 0138 ./waf configure build install -j $THREADS --prefix=$PREFIX 0139 popd 0140 0141 git_pull https://git.sesse.net/movit 0142 pushd $SRC/movit 0143 ./autogen.sh 0144 popd 0145 configure_make movit 0146 fi 0147 0148 git_pull https://github.com/dyne/frei0r.git 0149 cmake_ninja frei0r -DWITHOUT_OPENCV=ON 0150 0151 git_pull https://github.com/mltframework/mlt.git 0152 configure_make mlt --enable-gpl --enable-gpl3 --disable-windeploy 0153 0154 #### BUILD KDENLIVE 0155 0156 wget_extract https://github.com/rttrorg/rttr/archive/v0.9.6.tar.gz 0157 cmake_ninja rttr-0.9.6 \ 0158 -DBUILD_EXAMPLES=OFF -DBUILD_DOCUMENTATION=OFF \ 0159 -DBUILD_UNIT_TESTS=OFF -DBUILD_PACKAGE=OFF -DBUILD_STATIC=ON 0160 0161 git_pull https://anongit.kde.org/kdenlive.git 0162 #git_pull https://anongit.kde.org/releaseme.git 0163 #pushd $SRC/kdenlive 0164 #ruby ../releaseme/fetchpo.rb --origin stable --project kdenlive --output-dir po --output-poqm-dir poqm . 0165 #popd 0166 mkdir -p $SRC/kdenlive/build 0167 cd $SRC/kdenlive/build 0168 cmake_ninja kdenlive -DCMAKE_BUILD_TYPE=RelWithDebSymbols -DBUILD_TESTING:BOOL=OFF -DKDE_INSTALL_USE_QT_SYS_PATHS:BOOL=ON 0169 0170