diff options
Diffstat (limited to 'patches/source')
-rw-r--r-- | patches/source/rocs/build/rocs | 1 | ||||
-rw-r--r-- | patches/source/rocs/cmake/cmake | 22 | ||||
-rw-r--r-- | patches/source/rocs/doinst.sh/rocs | 5 | ||||
-rwxr-xr-x | patches/source/rocs/kde.SlackBuild | 572 | ||||
-rw-r--r-- | patches/source/rocs/kde.options | 68 | ||||
-rw-r--r-- | patches/source/rocs/modules/applications | 215 | ||||
-rw-r--r-- | patches/source/rocs/noarch | 9 | ||||
-rw-r--r-- | patches/source/rocs/nomake | 4 | ||||
-rw-r--r-- | patches/source/rocs/package-blacklist | 11 | ||||
-rw-r--r-- | patches/source/rocs/patch/rocs.patch | 1 | ||||
-rw-r--r-- | patches/source/rocs/patch/rocs/97a1f41c4d79f471c36207ec4d86e1a346b8df83.patch | 29 | ||||
-rwxr-xr-x | patches/source/rocs/rocs.SlackBuild | 1 | ||||
-rw-r--r-- | patches/source/rocs/slack-desc/rocs | 19 |
13 files changed, 957 insertions, 0 deletions
diff --git a/patches/source/rocs/build/rocs b/patches/source/rocs/build/rocs new file mode 100644 index 000000000..75288bc9f --- /dev/null +++ b/patches/source/rocs/build/rocs @@ -0,0 +1 @@ +2_slack15.0 diff --git a/patches/source/rocs/cmake/cmake b/patches/source/rocs/cmake/cmake new file mode 100644 index 000000000..24f8ebdaa --- /dev/null +++ b/patches/source/rocs/cmake/cmake @@ -0,0 +1,22 @@ +mkdir cmake-build +cd cmake-build + cmake \ + $KDE_OPT_ARGS \ + -DKDE_PLATFORM_FEATURE_DISABLE_DEPRECATED=TRUE \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DMAN_INSTALL_DIR=/usr/man \ + -DSYSCONF_INSTALL_DIR=/etc/kde \ + -DLIB_SUFFIX=${LIBDIRSUFFIX} \ + -DLIB_INSTALL_DIR=lib$LIBDIRSUFFIX \ + -DQT_PLUGIN_INSTALL_DIR=lib$LIBDIRSUFFIX/qt5/plugins \ + -DQML_INSTALL_DIR=lib$LIBDIRSUFFIX/qt5/qml \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DBUILD_TESTING=OFF \ + -DQca-qt5_DIR=/usr/lib${LIBDIRSUFFIX}/cmake/Qca \ + .. + diff --git a/patches/source/rocs/doinst.sh/rocs b/patches/source/rocs/doinst.sh/rocs new file mode 100644 index 000000000..e376b59af --- /dev/null +++ b/patches/source/rocs/doinst.sh/rocs @@ -0,0 +1,5 @@ + +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database /usr/share/applications >/dev/null 2>&1 +fi + diff --git a/patches/source/rocs/kde.SlackBuild b/patches/source/rocs/kde.SlackBuild new file mode 100755 index 000000000..86b2bcd36 --- /dev/null +++ b/patches/source/rocs/kde.SlackBuild @@ -0,0 +1,572 @@ +#!/bin/sh +# Copyright 2011, 2012, 2017, 2018, 2020 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Adapted by Eric Hameleers <alien@slackware.com> from the modular x.org build. + +# To build only a single package group, specify it as $1, like: +# ./kde.SlackBuild frameworks +# To build only a single package, specify both the group name +# and the name of the package, like: +# ./kde.SlackBuild applications:dolphin +# To build multiple packages in a module, separate the package names with comma: +# ./kde.SlackBuild plasma:powerdevil,bluedevil +# To build a package *and* all the remaining packages following it +# in the modules file, end the package name with a comma: +# ./kde.SlackBuild plasma:breeze,kwin, + +# ---------------------------------------------------------------------------- + +CLEANUP=${CLEANUP:-"yes"} # clean up build directory after successful build. +UPGRADE=${UPGRADE:-"yes"} # upgrade package after successful build. +PRECHECK=${PRECHECK:-"no"} # don't let the script check the available sources. +CHECKOUT=${CHECKOUT:-"no"} # don't let the script checkout missing sources. +GRACETME=${GRACETME:-"10"} # grace time to change your mind before build starts. +SKIPBUILT=${SKIPBUILT:-"no"} # skip building already built packages. +EXITFAIL=${EXITFAIL:-"yes"} # exit if a package fails to build. + +KDEGITURI="git://anongit.kde.org" + +pkgbase() { + PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev) + case $PKGEXT in + 'gz' ) + PKGRETURN=$(basename $1 .tar.gz) + ;; + 'bz2' ) + PKGRETURN=$(basename $1 .tar.bz2) + ;; + 'lzma' ) + PKGRETURN=$(basename $1 .tar.lzma) + ;; + 'lz' ) + PKGRETURN=$(basename $1 .tar.lz) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +cd $(dirname $0) ; CWD=$(pwd) + +if [ -z "$TMP" ]; then + TMP=/tmp + # Old default output directory. If $TMP wasn't predefined, we'll default to + # using it unless a different value is provided: + SLACK_KDE_BUILD_DIR=${SLACK_KDE_BUILD_DIR:-/tmp/kde_build} +else + # $TMP already set. We'll also use it for the output directory unless + # a different value is provided: + SLACK_KDE_BUILD_DIR=${SLACK_KDE_BUILD_DIR:-$TMP} +fi +mkdir -p $TMP $SLACK_KDE_BUILD_DIR + +# Set up a few useful functions: + +extract_archive() { + # Find the archive first: + local src_archive=$(find $CWD/src -name ${1}) + if [ $(tar -tf $src_archive |grep -o '^[^/]\+' |sort -u |wc -l) -eq 1 ]; + then + # Archive contains one toplevel directory, good. Make sure that + # this directory ends up as '$(pkgbase $1)': + tar -xf $src_archive || return 1 + local topdir="$(tar -tf $src_archive |grep -o '^[^/]\+' |sort -u)" + if [ "${topdir}" != "$(pkgbase $1)" ]; then + mv ${topdir} $(pkgbase $1) + fi + else + # No toplevel directory found, so we create one first: + mkdir -p $(pkgbase $1) + tar -C $(pkgbase $1) -xf $src_archive || return 1 + fi +} + +fix_perms() { + target_dir=$1 + [ -z "$target_dir" ] && target_dir='.' + + chown -R root:root $target_dir + find $target_dir \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \+ +} + +strip_binaries() { + target_dir=$1 + [ -z "$target_dir" ] && target_dir='.' + + find $target_dir | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find $target_dir | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find $target_dir | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null + # Also strip rpaths: + for file in $(find $target_dir | xargs file | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : 2> /dev/null) ; do + if [ ! "$(patchelf --print-rpath $file 2> /dev/null)" = "" ]; then + patchelf --remove-rpath $file + fi + done +} + +process_man_pages() { + # Compress and if needed symlink the man pages: + if [ -d usr/man ]; then + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.* + ) + done + ) + fi +} + +process_info_pages() { + # Compress info pages and purge "dir" file from the package: + if [ -d usr/info ]; then + ( cd usr/info + rm -f dir + gzip -9 * + ) + fi +} + +no_usr_share_doc() { + # If there are docs, move them: + if [ -d usr/share/doc ]; then + mkdir -p usr/doc + mv usr/share/doc/* usr/doc + rmdir usr/share/doc + fi +} + +precheck() { + # See if the sources we have match the module components we want to build: + RETVAL=0 + + for SRCFILE in $(find $CWD/src -name "*.tar.?z*" |grep -vE ".asc$|.sig$") ; do + # Check if the source tarball is mentioned in pkgsrc/ + # meaning its package will get a different name: + ################################################################### + # USE OF THIS FEATURE SHOULD BE RESERVED FOR CASES WHERE THERE IS # + # A VERY GOOD RATIONALE - KEEPING UPSTREAM NAMES IS PREFERRED # + ################################################################### + PKGSRC=$(echo $SRCFILE |rev |cut -f2- -d- |cut -f1,2 -d/ |rev) + PKGBASE=$(basename $(grep -lw $PKGSRC $CWD/pkgsrc/*) 2>/dev/null) + if [ -z "$PKGBASE" ]; then + PKGBASE=$(echo $(basename $SRCFILE) |rev |cut -f2- -d- |rev) + fi + # We now have the package base name and we can start looking: + PKGTGT=$(grep -w ${PKGBASE}$ modules/*) + if [ -n "$(echo $PKGTGT |cut -d: -f2- |grep "^ *#")" ]; then + echo "Source file '$(basename $SRCFILE)' is commented out: ($PKGTGT) !" + elif cat package-blacklist |grep -v "^ *#" |grep -wq ${PKGBASE}$ ; then + echo "Source file '$(basename $SRCFILE)' is on the package-blacklist ($PKGBASE) !" + elif ! cat modules/* |grep -v "^ *#" |grep -wq ${PKGBASE}$ ; then + echo "Source file '$(basename $SRCFILE)' is not mentioned in 'modules' ($PKGBASE) !" + RETVAL=1 + fi + done + + # Do we have duplicate package names? + PKGDUP="$(cat $CWD/modules/* |grep -v "^ *#" |grep -v "^$" |sort |uniq -d)" + if [ -n "$PKGDUP" ] ; then + echo "Multiply-defined package names: '$(echo $PKGDUP)'" + RETVAL=1 + fi + unset PKGDUP + + for MODPKG in $(cat $CWD/modules/* | grep -v "^ *#") ; do + # First find out if the pkg source is different from the actual pkg name: + if [ -f $CWD/pkgsrc/$MODPKG ]; then + MODBASE=$(basename $(cat $CWD/pkgsrc/$MODPKG)) + MODLOC=$(dirname $(cat $CWD/pkgsrc/$MODPKG))/ + else + MODBASE=$MODPKG + MODLOC="" + fi + MODSRC="$(find $CWD/src/$MODLOC -name $MODBASE-*.tar.* |grep -vE ".asc$|.sig$" |grep -E "$MODBASE-[^-]+.tar.*$|$MODBASE-[0-9].+.tar.*$")" + if [ -z "$MODSRC" ] ; then + echo "Module '$MODPKG' does not have a matching source tarball ($MODLOC$MODBASE)!" + if [ "$CHECKOUT" = "yes" -o "$CHECKOUT" = "YES" ]; then + echo "Checking out KDE component at branch '$VERSION'." + git archive --format=tar --prefix ${MODBASE}-${VERSION}/ --remote ${KDEGITURI}/${MODBASE}.git v${VERSION} | xz -c > $CWD/src/${MODLOC}/${MODBASE}-${VERSION}.tar.xz + RETVAL=$? + if [ $RETVAL -ne 0 ]; then + echo "Error while checking out '$MODPKG' ($MODLOC/$MODBASE) !" + mv $CWD/src/$MODLOC/${MODBASE}-${VERSION}.tar.xz $CWD/src/$MODLOC/${MODBASE}-${VERSION}.tar.xz.failed + fi + else + RETVAL=1 + fi + fi + # A missing slack-desc counts as fatal: + if [ -z "$(find $CWD/slack-desc -name ${MODPKG})" ] ; then + echo "Module '$MODPKG' does not have a slack-desc file !" + RETVAL=1 + fi + done + + if [ $RETVAL -eq 0 ]; then + echo "Check complete, build starts in ${GRACETME} seconds.." + sleep ${GRACETME} + else + echo "Precheck failed with error code '$RETVAL'." + exit 1 + fi +} + +# Support function builds one complete module (like 'frameworks'), or +# exactly one package which is part of a module (like 'okular'): +build_mod_pkg () { + kde_module=$1 + kde_pkg=$2 + + cd $CWD/modules + + # See if $kde_module is a module name like "frameworks": + if [ ! -z "$kde_module" ]; then + if [ ! -f "$kde_module" ]; then + echo "** '${kde_module}' is not an existing module." + return + fi + fi + PKG=${SLACK_KDE_BUILD_DIR}/${kde_module}/package-${kde_module} + rm -rf $PKG + mkdir -p $PKG + ( for PKGNAME in $(cat $kde_module |grep -v "^$" |grep -v "^ *#") ; do + if grep -wq "^${PKGNAME}$" ${CWD}/package-blacklist ; then + if [ -z "$PRINT_PACKAGE_NAME" ]; then + echo "** '${PKGNAME}' is on the package blacklist." + fi + continue + fi + # Find the full source filename - yeah ugly, but I had two goals: + # 1- source tarball can be in a random subdirectory of src/ + # 2- differentiate between e.g. 'kdepim' and 'kdepim-runtime' + if [ -f $CWD/pkgsrc/$PKGNAME ]; then + PKGSRC=$(basename $(cat $CWD/pkgsrc/$PKGNAME)) + PKGLOC=$(dirname $(cat $CWD/pkgsrc/$PKGNAME)) + else + PKGSRC=$PKGNAME + PKGLOC="" + fi + kde_src=$(basename $(find $CWD/src/$PKGLOC -name "$PKGSRC-*.tar.?z*" |grep -vE ".asc$|.sig$" |grep -E "$PKGSRC-[^-]+.tar.*$|$PKGSRC-[0-9].+.tar.*$") 2>/dev/null) + if [ "x$kde_src" = "x" ]; then + if [ -z "$PRINT_PACKAGE_NAME" ]; then + echo "** Did not find '$PKGSRC' in src" + fi + continue + fi + # Reset $PKGARCH to its initial value: + PKGARCH=$ARCH + # Perhaps $PKGARCH should be something different: + if grep -wq "^${PKGNAME}$" ${CWD}/noarch ; then + PKGARCH=noarch + fi + cd $SLACK_KDE_BUILD_DIR/${kde_module} + # If $kde_pkg is set, we only want to build one package: + if [ ! -z "$kde_pkg" ]; then + if [ "$kde_pkg" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_KDE_BUILD_DIR/${kde_module}/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + if [ -z "$PRINT_PACKAGE_NAME" ]; then + echo + echo "Building from source ${kde_src}" + echo + fi + fi + + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_KDE_BUILD_DIR/${kde_module}/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $kde_src | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + # If this variable is passed to the script, nothing will be built. + # Instead, a list of packages to be built will be output. + if [ ! -z "$PRINT_PACKAGE_NAME" ]; then + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + echo "${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz" + continue + fi + + # If requested, skip packages that are already in the output directory: + if [ "$SKIPBUILT" = "yes" ]; then + # Construct the package name: + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + TESTPKGNAME="${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz" + if [ -r ${SLACK_KDE_BUILD_DIR}/${kde_module}/$TESTPKGNAME -o -r ${SLACK_KDE_BUILD_DIR}/$TESTPKGNAME ]; then + echo "** Skipping already built package $TESTPKGNAME." + continue + fi + fi + + rm -rf $(pkgbase $kde_src) + extract_archive $kde_src || exit 1 + cd $(pkgbase $kde_src) || exit 1 + + fix_perms + + # If any patches are needed, call this script to apply them: + if [ -r $CWD/patch/${PKGNAME}.patch ]; then + . $CWD/patch/${PKGNAME}.patch || exit 1 + fi + + # If there's any pre-install things to do, do them: + if [ -r $CWD/pre-install/${PKGNAME}.pre-install ]; then + . $CWD/pre-install/${PKGNAME}.pre-install + fi + + if ! grep -wq "^${PKGNAME}$" ${CWD}/nomake ; then + # Run cmake, using custom cmake script if needed: + if [ -r $CWD/cmake/${PKGNAME} ]; then + . $CWD/cmake/${PKGNAME} + elif [ -r $CWD/cmake/${kde_module} ]; then + . $CWD/cmake/${kde_module} + else + # This is the default configure script: + . $CWD/cmake/cmake + fi + + # Run make, using custom make script if needed: + if [ -r $CWD/make/${PKGNAME} ]; then + . $CWD/make/${PKGNAME} + elif [ -r $CWD/make/${kde_module} ]; then + . $CWD/make/${kde_module} + else + # This is the default make && make install routine: + make $NUMJOBS || make || exit 1 + make install DESTDIR=$PKG || exit 1 + fi + fi + + # Back to source toplevel builddir, since cmake may have run in a subdir: + cd $SLACK_KDE_BUILD_DIR/${kde_module}/$(pkgbase $kde_src) + + mkdir -p $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + # Use specific documentation files if available, else use a default set: + if [ -r $CWD/docs/${PKGNAME} ]; then + cp -a $(cat $CWD/docs/${PKGNAME}) \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + else + cp -a \ + AUTHORS* CONTRIBUTING* COPYING* HACKING* \ + INSTALL* LICENSE* MAINTAINERS README* NEWS* TODO* \ + $PKG/usr/doc/${PKGNAME}-${MODULAR_PACKAGE_VERSION} + # If there's a ChangeLog, installing at least part of the recent + # history is useful, but don't let it get totally out of control: + if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog + fi + fi + + # Get rid of zero-length junk files: + find $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION -type f -size 0 -exec rm --verbose "{}" \+ + rmdir --verbose $PKG/usr/doc/${PKGNAME}-$MODULAR_PACKAGE_VERSION 2> /dev/null + + # Strip binaries if needed: + if [ ! -r $CWD/nostrip/${PKGNAME} ]; then + strip_binaries $PKG + fi + + # If there's any special post-install things to do, do them: + if [ -r $CWD/post-install/${PKGNAME}.post-install ]; then + . $CWD/post-install/${PKGNAME}.post-install + fi + + # If this package requires some doinst.sh material, add it here: + if [ -r $CWD/doinst.sh/${PKGNAME} ]; then + mkdir -p $PKG/install + cat $CWD/doinst.sh/${PKGNAME} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + + # If this is a modular package, build it here: + if [ -d $SLACK_KDE_BUILD_DIR/${kde_module}/package-$PKGNAME ]; then + cd $PKG + process_man_pages + process_info_pages + no_usr_share_doc + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${PKGNAME} ]; then + cat $CWD/slack-desc/${PKGNAME} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/build/${PKGNAME} ]; then + MODBUILD=$(cat $CWD/build/${PKGNAME}) + else + MODBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${PKGNAME} ]; then + BUILD=$MODBUILD . $CWD/makepkg/${PKGNAME} + else + /sbin/makepkg -l y -c n ${SLACK_KDE_BUILD_DIR}/${kde_module}/${PKGNAME}-$(echo $MODULAR_PACKAGE_VERSION |tr - _)-${PKGARCH}-${MODBUILD}.txz + fi + # We will continue with the fresh packages installed: + if [ "$UPGRADE" = "yes" -o "$UPGRADE" = "YES" ]; then + upgradepkg --install-new --reinstall ${SLACK_KDE_BUILD_DIR}/${kde_module}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}.txz + # Keep MIME database current: + /usr/bin/update-mime-database /usr/share/mime 1>/dev/null 2>/dev/null & + fi + fi + + done + + ) +} + +# Process the module queue. Format is: +# module[:subpackage[,subpackage]] [module...] +deterministic_build() { + RET=0 + for ENTRY in $1 ; do + KDE_MOD=$(echo "$ENTRY": | cut -f1 -d:) + KDE_PKGS=$(echo "$ENTRY": | cut -f2 -d:) + if [ -z "$KDE_PKGS" ]; then + if [ -z "$PRINT_PACKAGE_NAME" ]; then + echo "** SlackBuild building '$KDE_MOD'" + fi + build_mod_pkg $KDE_MOD + let RET=$RET+$? + else + if [ "${KDE_PKGS: -1}" = "," ]; then + # Last character is a ','. Expand the list with all subsequent packages. + START_PKG=$(echo $KDE_PKGS |rev |cut -d, -f2 |rev) + MOD_LIST=$(cat modules/$KDE_MOD |grep -v "^ *#" |grep -v "^$" |tr '\n' ',') + KDE_PKGS="${KDE_PKGS}${MOD_LIST/#?*,${START_PKG},/}" + if [ -z "$PRINT_PACKAGE_NAME" ]; then + echo "** SlackBuild expanding '$ENTRY' to '$KDE_MOD:$KDE_PKGS'" + fi + fi + for KDE_PKG in $(echo $KDE_PKGS |tr ',' ' ') ; do + if [ -z "$PRINT_PACKAGE_NAME" ]; then + echo "** SlackBuild building '$KDE_MOD:$KDE_PKG'" + fi + build_mod_pkg $KDE_MOD $KDE_PKG + let RET=$RET+$? + done + fi + done + + return $RET +} + +# MAIN PART # + +# Import the build configuration options for as far as they are not already set: +[ -r ./kde.options ] && . ./kde.options + +# This avoids compiling a version number into KDE's .la files: +QTDIR=/usr/lib${LIBDIRSUFFIX}/qt5 ; export QTDIR + +# Get the KDE environment variables: +[ -d post-install/kservice ] && eval $(sed -e "s#/lib#/lib${LIBDIRSUFFIX}#" ./post-install/kservice/profile.d/kde.sh) + +# Build/install libkdiagram before compiling kdepim: +# Build/install libktorrent before compiling kget: +KDEMODS=" \ + kde4 \ + frameworks \ + applications-extra:kdiagram \ + kdepim \ + plasma-extra:plasma-wayland-protocols \ + plasma \ + plasma-extra \ + applications:libktorrent \ + applications \ + applications-extra \ + applications:umbrello \ + " + #telepathy \ + +# Allow for specification of individual packages to be built: +if [ -z "$1" ]; then + MODQUEUE=$KDEMODS +else + MODQUEUE="$*" +fi + +# If requested, check if +# sources, module definitions and slack-desc are complete and matching: +if [ "$PRECHECK" = "yes" -o "$PRECHECK" = "YES" ]; then + precheck +fi + +# And finally, start working! +for module in \ + $MODQUEUE ; +do + if [ -z "$PRINT_PACKAGE_NAME" ]; then + echo "SlackBuild processing module '$module'" + fi + deterministic_build $module + if [ $? = 0 ]; then + # Move the created packages up into the KDE build directory: + mv ${SLACK_KDE_BUILD_DIR}/$(echo $module |cut -f1 -d:)/*.t?z ${SLACK_KDE_BUILD_DIR}/ 2> /dev/null + if [ "$CLEANUP" = "yes" -o "$CLEANUP" = "YES" ]; then + # Clean out package and build directories: + rm -rf ${SLACK_KDE_BUILD_DIR}/$(echo $module |cut -f1 -d:) + fi + else + if [ -z "$PRINT_PACKAGE_NAME" ]; then + echo "${module} failed to build." + fi + if [ "$EXITFAIL" = "yes" ]; then + exit 1 + fi + fi + cd - > /dev/null +done + +exit 0 + + diff --git a/patches/source/rocs/kde.options b/patches/source/rocs/kde.options new file mode 100644 index 000000000..4435ead77 --- /dev/null +++ b/patches/source/rocs/kde.options @@ -0,0 +1,68 @@ +# Set default arch/build. A default version is not needed since +# package versions are determined by their source tarvall. + +[ -z $BUILD ] && export BUILD=1 + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) ;; + esac + export ARCH +fi + +[ -z $PKGARCH ] && export PKGARCH=$ARCH + +# Use this as CFLAGS and CXXFLAGS: +if [ -z "$SLKCFLAGS" ]; then + if [ "$ARCH" = "i486" ]; then + export SLKCFLAGS="-O2 -march=i486 -mtune=i686" + export LIBDIRSUFFIX="" + elif [ "$ARCH" = "i586" ]; then + export SLKCFLAGS="-O2 -march=i586 -mtune=i686" + export LIBDIRSUFFIX="" + elif [ "$ARCH" = "s390" ]; then + export SLKCFLAGS="-O2" + export LIBDIRSUFFIX="" + elif [ "$ARCH" = "x86_64" ]; then + export SLKCFLAGS="-O2 -fPIC" + export LIBDIRSUFFIX="64" + elif [ "$ARCH" = "arm" ]; then + export SLKCFLAGS="-O2 -march=armv4 -mtune=xscale" + export LIBDIRSUFFIX="" + elif [ "$ARCH" = "armel" ]; then + export SLKCFLAGS="-O2 -march=armv4t" + export LIBDIRSUFFIX="" + elif [ "$ARCH" = "armv7hl" ]; then + export SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" + export LIBDIRSUFFIX="" + else + export SLKCFLAGS="-O2" + export LIBDIRSUFFIX="" + fi +fi + +# Use this to set the number of parallel make jobs: +NUMJOBS=${NUMJOBS:-" -j $(expr $(nproc) + 1) "} +export NUMJOBS + +# Additional cmake flags that are spanned across the KDE modules +# Do not use "final build" unless we build an actual release. +export KDE_OPT_ARGS=" -Wno-dev -DBUILD_TESTING=OFF -DSITE=\"slackware.com\" -DKDE_DISTRIBUTION_TEXT=\"volkerdi@slackware.com\" " + +# Choose correct options depending on whether PAM is installed: +if [ -L /lib${LIBDIRSUFFIX}/libpam.so.? ]; then + SLACKPAM=${SLACKPAM:-"yes"} +else + SLACKPAM=${SLACKPAM:-"no"} +fi + +# Choose correct options depending on whether elogind is installed: +if [ -L /lib${LIBDIRSUFFIX}/libelogind.so.? ]; then + SLKELOGIND=${SLKELOGIND:-"yes"} +else + SLKELOGIND=${SLKELOGIND:-"no"} +fi diff --git a/patches/source/rocs/modules/applications b/patches/source/rocs/modules/applications new file mode 100644 index 000000000..5fa4c7f07 --- /dev/null +++ b/patches/source/rocs/modules/applications @@ -0,0 +1,215 @@ +# https://community.kde.org/Applications/17.12_Release_Notes +# +# Some of the kdegraphics needs to be compiled first: +libkipi +kipi-plugins +libkexiv2 +libkdcraw +libksane +gwenview + +# Not currently packaging due to deps needed for kaccounts-integration, and +# more deps needed for those deps. Might check into it again later... +#kaccounts-integration +#kaccounts-providers + +# kdebase: +kio-extras +kio-gdrive +konsole +kate +kdialog +keditbookmarks +kfind +konqueror + +# kdeutils: +ark +baloo-widgets +filelight +kcalc +kcharselect +kdf +kfloppy +kgpg +print-manager +kbackup +ktimer +khelpcenter +kwalletmanager +sweeper + +# dolphin needs to pick up baloo5-widgets: +dolphin + +# kdesdk: +kdebugsettings +kapptemplate +cervisia +dolphin-plugins +kcachegrind +kde-dev-scripts +kde-dev-utils +kdesdk-kioslaves +kdesdk-thumbnailers +kross-interpreters +libkomparediff2 +kompare +lokalize +poxml +umbrello + +# Rest of kdegraphics: +kdegraphics-mobipocket +okular +kdegraphics-thumbnailers +kamera +kcolorchooser +kolourpaint +kruler +spectacle +svgpart +kirigami-gallery + +# kdeaccessibility: +kmouth +kmousetool +kmag + +# kdemultimedia: +libkcddb +libkcompactdisc +audiocd-kio +dragon +juk +kmix +ffmpegthumbs +kwave +k3b +kamoso +elisa + +# kdenetwork: +kdenetwork-filesharing +zeroconf-ioslave +kget +kopete +krdc +krfb + +# kdeadmin: +kcron +ksystemlog + +# kdegames: +libkdegames +libkmahjongg +klickety +ksudoku +ksquares +# Needs fc-solver library: +kpat +klines +ksnakeduel +kollision +kshisen +kblocks +lskat +kreversi +bovo +#kajongg +granatier +kmines +kiriki +kigo +bomber +kolf +kdiamond +kbounce +konquest +kapman +knavalbattle +killbots +kubrick +kgoldrunner +knetwalk +kbreakout +ksirk +kfourinline +picmi +kblackbox +palapeli +katomic +ktuberling +kjumpingcube +kmahjongg +kspaceduel +knights + +# kdetoys: +kteatime + +# kdeedu: +kdeedu-data +libkeduvocdocument +analitza +kalgebra +kanagram +khangman +kig +parley +artikulate +blinken +cantor +kalzium +kbruch +kgeography +kiten +klettres +kmplot +kqtquickcharts +ktouch +kturtle +kwordquiz +marble +rocs +step +minuet + +# Needs to come after marble (obsolete, removed): +#libkgeomap + +# Needs ffmpeg and dvdauthor to be really useful: +kdenlive + +# kdewebdev remnant: +kimagemapeditor + +# New in 19.08: +yakuake + +# New in 20.04: +kdeconnect-kde + +# New in 20.12.0: +markdownpart +kpublictransport +kosmindoormap +itinerary +kontrast +konversation +libktorrent +ktorrent +kpmcore +partitionmanager + +# New in 21.08.0: +skanlite + +# kdevelop added to 21.12.0: +kdevelop +kdev-php +kdev-python + +# New in 21.12.0: +zanshin diff --git a/patches/source/rocs/noarch b/patches/source/rocs/noarch new file mode 100644 index 000000000..a1dd4c697 --- /dev/null +++ b/patches/source/rocs/noarch @@ -0,0 +1,9 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: + +breeze-icons +kde-wallpapers +oxygen-fonts +oxygen-icons +oxygen-icons5 + diff --git a/patches/source/rocs/nomake b/patches/source/rocs/nomake new file mode 100644 index 000000000..2703fd484 --- /dev/null +++ b/patches/source/rocs/nomake @@ -0,0 +1,4 @@ +breeze-grub +oxygen-fonts +sddm-theme-breeze + diff --git a/patches/source/rocs/package-blacklist b/patches/source/rocs/package-blacklist new file mode 100644 index 000000000..f6ab382c4 --- /dev/null +++ b/patches/source/rocs/package-blacklist @@ -0,0 +1,11 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +## kdebindings: +# needs c-sharp: +kimono +qyoto + +# We need to support Wayland first. +#kwayland diff --git a/patches/source/rocs/patch/rocs.patch b/patches/source/rocs/patch/rocs.patch new file mode 100644 index 000000000..222d878bb --- /dev/null +++ b/patches/source/rocs/patch/rocs.patch @@ -0,0 +1 @@ +cat $CWD/patch/rocs/97a1f41c4d79f471c36207ec4d86e1a346b8df83.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; } diff --git a/patches/source/rocs/patch/rocs/97a1f41c4d79f471c36207ec4d86e1a346b8df83.patch b/patches/source/rocs/patch/rocs/97a1f41c4d79f471c36207ec4d86e1a346b8df83.patch new file mode 100644 index 000000000..630acd127 --- /dev/null +++ b/patches/source/rocs/patch/rocs/97a1f41c4d79f471c36207ec4d86e1a346b8df83.patch @@ -0,0 +1,29 @@ +From 97a1f41c4d79f471c36207ec4d86e1a346b8df83 Mon Sep 17 00:00:00 2001 +From: Tomaz Canabrava <tcanabrava@kde.org> +Date: Tue, 14 Dec 2021 17:32:12 +0000 +Subject: [PATCH] I hate `auto`. This creates a QStringRref, not a QString, + then crashes. + +We can't pass a QStringRef to QUrl::fromLocalFile, this accepts +a const QString& and then QStringRef will decay to a QString() +but it's UB to hold a const ref to a temporary. +--- + src/project/project.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/project/project.cpp b/src/project/project.cpp +index 42e00bc0c..47d11912c 100644 +--- a/src/project/project.cpp ++++ b/src/project/project.cpp +@@ -205,7 +205,7 @@ QString Project::workingDir() const + + KTextEditor::Document* Project::createCodeDocument(const QString& filePath) + { +- auto path = d->m_workingDirectory.path() + QLatin1Char('/') + filePath + QStringLiteral(".js"); ++ const QString path = d->m_workingDirectory.path() + QLatin1Char('/') + filePath + QStringLiteral(".js"); + + auto doc = KTextEditor::Editor::instance()->createDocument(nullptr); + if (!doc->saveAs(QUrl::fromLocalFile(path))) { +-- +GitLab + diff --git a/patches/source/rocs/rocs.SlackBuild b/patches/source/rocs/rocs.SlackBuild new file mode 100755 index 000000000..edf1d803b --- /dev/null +++ b/patches/source/rocs/rocs.SlackBuild @@ -0,0 +1 @@ +SLACK_KDE_BUILD_DIR=/tmp ./kde.SlackBuild applications:rocs diff --git a/patches/source/rocs/slack-desc/rocs b/patches/source/rocs/slack-desc/rocs new file mode 100644 index 000000000..1be6d3104 --- /dev/null +++ b/patches/source/rocs/slack-desc/rocs @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +rocs: rocs (graph theory IDE) +rocs: +rocs: Rocs is a Graph Theory IDE for everybody interested in designing and +rocs: analyzing graph algorithms (e.g., lecturers, students, researchers). +rocs: For all these users, Rocs provides an easy to use visual data +rocs: structure editor and a powerful scripting engine to execute +rocs: algorithms. Algorithms are specified in JavaScript. +rocs: +rocs: Homepage: https://www.kde.org/applications/education/rocs +rocs: +rocs: |