1
0
Fork 0
mirror of git://slackware.nl/current.git synced 2025-01-29 08:36:40 +01:00

Tue Aug 27 19:24:48 UTC 2024

patches/packages/kcron-21.12.3-x86_64-1_slack15.0.txz:  Upgraded.
  This update fixes a security issue:
  kcron: Invalid temporary file handling.
  Thanks to pbslxw for the heads-up.
  For more information, see:
    https://kde.org/info/security/advisory-20220216-1.txt
    https://www.cve.org/CVERecord?id=CVE-2022-24986
  (* Security fix *)
patches/packages/plasma-workspace-5.23.5-x86_64-4_slack15.0.txz:  Rebuilt.
  This update patches a security issue:
  ksmserver: Unauthorized users can access session manager.
  Thanks to pbslxw for the heads-up.
  For more information, see:
    https://kde.org/info/security/advisory-20240531-1.txt
    https://www.cve.org/CVERecord?id=CVE-2024-36041
  (* Security fix *)
This commit is contained in:
Patrick J Volkerding 2024-08-27 19:24:48 +00:00 committed by Eric Hameleers
parent 1246cf6d34
commit e472158ace
41 changed files with 3220 additions and 501 deletions

View file

@ -11,9 +11,35 @@
<description>Tracking Slackware development in git.</description>
<language>en-us</language>
<id xmlns="http://www.w3.org/2005/Atom">urn:uuid:c964f45e-6732-11e8-bbe5-107b4450212f</id>
<pubDate>Thu, 22 Aug 2024 19:10:18 GMT</pubDate>
<lastBuildDate>Fri, 23 Aug 2024 11:30:52 GMT</lastBuildDate>
<pubDate>Tue, 27 Aug 2024 19:24:48 GMT</pubDate>
<lastBuildDate>Wed, 28 Aug 2024 11:30:35 GMT</lastBuildDate>
<generator>maintain_current_git.sh v 1.17</generator>
<item>
<title>Tue, 27 Aug 2024 19:24:48 GMT</title>
<pubDate>Tue, 27 Aug 2024 19:24:48 GMT</pubDate>
<link>https://git.slackware.nl/current/tag/?h=20240827192448</link>
<guid isPermaLink="false">20240827192448</guid>
<description>
<![CDATA[<pre>
patches/packages/kcron-21.12.3-x86_64-1_slack15.0.txz: Upgraded.
This update fixes a security issue:
kcron: Invalid temporary file handling.
Thanks to pbslxw for the heads-up.
For more information, see:
https://kde.org/info/security/advisory-20220216-1.txt
https://www.cve.org/CVERecord?id=CVE-2022-24986
(* Security fix *)
patches/packages/plasma-workspace-5.23.5-x86_64-4_slack15.0.txz: Rebuilt.
This update patches a security issue:
ksmserver: Unauthorized users can access session manager.
Thanks to pbslxw for the heads-up.
For more information, see:
https://kde.org/info/security/advisory-20240531-1.txt
https://www.cve.org/CVERecord?id=CVE-2024-36041
(* Security fix *)
</pre>]]>
</description>
</item>
<item>
<title>Thu, 22 Aug 2024 19:10:18 GMT</title>
<pubDate>Thu, 22 Aug 2024 19:10:18 GMT</pubDate>

View file

@ -1,3 +1,21 @@
Tue Aug 27 19:24:48 UTC 2024
patches/packages/kcron-21.12.3-x86_64-1_slack15.0.txz: Upgraded.
This update fixes a security issue:
kcron: Invalid temporary file handling.
Thanks to pbslxw for the heads-up.
For more information, see:
https://kde.org/info/security/advisory-20220216-1.txt
https://www.cve.org/CVERecord?id=CVE-2022-24986
(* Security fix *)
patches/packages/plasma-workspace-5.23.5-x86_64-4_slack15.0.txz: Rebuilt.
This update patches a security issue:
ksmserver: Unauthorized users can access session manager.
Thanks to pbslxw for the heads-up.
For more information, see:
https://kde.org/info/security/advisory-20240531-1.txt
https://www.cve.org/CVERecord?id=CVE-2024-36041
(* Security fix *)
+--------------------------+
Thu Aug 22 19:10:18 UTC 2024
patches/packages/bind-9.18.29-x86_64-1_slack15.0.txz: Upgraded.
This is a bugfix release.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,11 @@
kcron: kcron (task scheduler)
kcron:
kcron: kcron is a module for scheduling programs to run in the background.
kcron: It is a graphical user interface to cron, the UNIX system scheduler.
kcron:
kcron:
kcron:
kcron:
kcron:
kcron:
kcron:

View file

@ -0,0 +1,11 @@
plasma-workspace: plasma-workspace (KDE Plasma Workspace)
plasma-workspace:
plasma-workspace: The Plasma Workspace provides support for KDE Plasma Widgets,
plasma-workspace: integrated search, hardware management, and a high degree of
plasma-workspace: customizability.
plasma-workspace:
plasma-workspace:
plasma-workspace:
plasma-workspace:
plasma-workspace:
plasma-workspace:

View file

@ -0,0 +1 @@
1_slack15.0

View file

@ -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 \
..

View file

@ -0,0 +1,2 @@
UPGRADE_PACKAGES=no ./kde.SlackBuild applications:kcron
mv /tmp/kde_build/kcron*txz /tmp

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,4 @@
breeze-grub
oxygen-fonts
sddm-theme-breeze

View file

@ -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

View file

@ -0,0 +1,146 @@
#!/bin/sh
# $id$
# -----------------------------------------------------------------------------
# Purpose: A script to checkout sources for KDE Plasma Next from the
# git repositories and create tarballs of them.
# Author: Eric Hameleers <alien@slackware.com>
# Date: 20140604
# -----------------------------------------------------------------------------
# Defaults:
# Directory where we start:
CWD=$(pwd)
# Cleanup (delete) the directories containing the local clones afterwards:
CLEANUP="NO"
# Checkout at a custom date instead of today:
CUSTDATE="NO"
# Forced overwriting of existing tarballs:
FORCE="NO"
# Where to write the files by default:
MYDIR="${CWD}/_plasma_checkouts"
# KDE git repositories:
KDEGITURI="git://anongit.kde.org"
# Prefered branch to check out from if it exists (HEAD otherwise):
BRANCH="frameworks"
# Shrink the tarball by removing git repository metadata:
SHRINK="YES"
# Today's timestamp:
THEDATE=$(date +%Y%m%d)
# The KDE topdirectory ( by default the location of this script):
TOPDIR=$(cd $(dirname $0); pwd)
# -----------------------------------------------------------------------------
while getopts "cd:fghk:o:" Option
do
case $Option in
c ) CLEANUP="YES"
;;
d ) THEDATE="date --date='${OPTARG}' +%Y%m%d"
CUSTDATE="${OPTARG}"
;;
f ) FORCE="YES"
;;
g ) SHRINK="NO"
;;
k ) TOPDIR="${OPTARG}"
;;
o ) MYDIR="${OPTARG}"
;;
h|* )
echo "$(basename $0) [<param> <param> ...] [<module> <module> ...]"
echo "Parameters are:"
echo " -h This help."
echo " -c Cleanup afterwards (delete the cloned repos)."
echo " -d <date> Checkout git at <date> instead of today."
echo " -f Force overwriting of tarballs if they exist."
echo " -g Keep git repository metadata (bigger tarball)."
echo " -o <dir> Create tarballs in <dir> instead of $MYDIR/."
echo " -k <dir> Location of KDE sources if not $(cd $(dirname $0), pwd)/."
exit
;;
esac
done
shift $(($OPTIND - 1))
# End of option parsing.
# $1 now references the first non option item supplied on the command line
# if one exists.
# -----------------------------------------------------------------------------
# Catch any individual requests on the commandline:
MODS=${1:-""}
# Verify that our TOPDIR is the KDE source top directory:
if ! [ -f ${TOPDIR}/KDE.SlackBuild -a -d ${TOPDIR}/src ]; then
echo ">> Error: '$TOPDIR' does not seem to contain the KDE SlackBuild plus sources"
echo ">> Either place this script in the KDE directory before running it,"
echo ">> Or specify the KDE toplevel source directory with the '-k' parameter"
exit 1
fi
# No modules specified on the commandline; get all enabled plasma modules:
if [ ! -n "$MODS" ]; then
MODS="$(cat ${TOPDIR}/modules/plasma | grep -v " *#" | grep -v "^$")"
fi
# Create the work directory:
mkdir -p "${MYDIR}"
if [ $? -ne 0 ]; then
echo "Error creating '${MYDIR}' - aborting."
exit 1
fi
cd "${MYDIR}"
# Proceed with checking out all plasma-next sources.
# Some packages are called foo-framework to make them co-installable with the
# KDE4 packages with the same source-name. Strip the '-framework' off the
# package name to get the source name):
for MOD in $MODS ; do
git clone ${KDEGITURI}/${MOD%-framework}.git ${MOD%-framework}-${THEDATE}git
( cd ${MOD%-framework}-${THEDATE}git
git checkout ${BRANCH} # If this fails we should have 'master' anyway
if [ $? -ne 0 ]; then
BRANCH="master"
fi
if [ "$CUSTDATE" != "NO" ]; then
# Checkout at a specified date instead of HEAD:
git checkout $(git rev-list -n 1 --before="`date -d $THEDATE`" $BRANCH)
fi
)
done
if [ "$SHRINK" = "YES" ]; then
# Remove git meta data from the tarballs:
for DIR in $(ls |grep git$) ; do
find ${DIR%/} -name ".git*" -depth -exec rm -rf {} \;
done
fi
# Zip them up:
for DIR in $(ls |grep git$) ; do
if [ "$FORCE" = "NO" -a -f ${DIR%/}.tar.xz ]; then
echo ">> Not overwriting existng file '${DIR%/}.tar.xz'"
echo ">> Use '-f' to force ovewriting existing files"
else
tar -Jcf ${DIR%/}.tar.xz ${DIR%/}
fi
done
if [ "$CLEANUP" = "YES" ]; then
# Remmove the cloned directories now that we have the tarballs:
rm -r *git
fi
cd $CWD
# Done!

View file

@ -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------------------------------------------------------|
kcron: kcron (task scheduler)
kcron:
kcron: kcron is a module for scheduling programs to run in the background.
kcron: It is a graphical user interface to cron, the UNIX system scheduler.
kcron:
kcron:
kcron:
kcron:
kcron:
kcron:
kcron:

View file

@ -0,0 +1 @@
4_slack15.0

View file

@ -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 \
..

View file

@ -0,0 +1 @@
COPYING* ChangeLog FAQ.txt INSTALL.txt PERMISSIONS.txt README.txt Release\ How\ To.txt

View file

@ -0,0 +1,2 @@
COPYING* DEBUG HACKING MAINTAINERS PLAN POLICIES README*

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,58 @@
# plasma
kgamma5
kdecoration
breeze
breeze-gtk
breeze-grub
#breeze-plymouth
kwayland-integration
kwayland-server
plasma-integration
kinfocenter
libksysguard
#ksysguard
layer-shell-qt
kscreenlocker
kwin
kwrited
libkscreen
milou
oxygen
plasma-workspace
kde-cli-tools
# Circular dependency between plasma-workspace and kde-cli-tools:
plasma-workspace
systemsettings
plasma-desktop
kdeplasma-addons
plasma-workspace-wallpapers
plasma-nm
powerdevil
bluedevil
khotkeys
kmenuedit
polkit-kde-agent-1
kscreen
sddm-kcm
kde-gtk-config
ksshaskpass
plasma-sdk
plasma-pa
#plasma-tests
kactivitymanagerd
user-manager
xdg-desktop-portal-kde
drkonqi
plasma-vault
plasma-browser-integration
kwallet-pam
plasma-disks
#plymouth-kcm
#discover
#plasma-thunderbolt
#plasma-nano
#plasma-phone-components
plasma-firewall
plasma-systemmonitor
qqc2-breeze-style
ksystemstats

View file

@ -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

View file

@ -0,0 +1,4 @@
breeze-grub
oxygen-fonts
sddm-theme-breeze

View file

@ -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

View file

@ -0,0 +1,6 @@
cat $CWD/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
cat $CWD/patch/plasma-workspace/70d23b89.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
cat $CWD/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
cat $CWD/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
cat $CWD/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
cat $CWD/patch/plasma-workspace/da843d3fdb143ed44094c8e6246cfb8305f6f09f.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }

View file

@ -0,0 +1,30 @@
From 5db85cf17cd11236f8ee44ba95dd56b81087c6aa Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Thu, 21 Oct 2021 08:20:33 +0200
Subject: [PATCH 1/2] Revert "Drop setupX11 from startplasma-waylandsession"
This reverts commit 8bf0e43620de3416e783c307ba10111c6964757b.
---
startkde/startplasma-waylandsession.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/startkde/startplasma-waylandsession.cpp b/startkde/startplasma-waylandsession.cpp
index 3a054a04f..ed496cc24 100644
--- a/startkde/startplasma-waylandsession.cpp
+++ b/startkde/startplasma-waylandsession.cpp
@@ -19,6 +19,12 @@ int main(int argc, char **argv)
out << "startplasma-waylandsession: Starting up...";
+ if (qEnvironmentVariableIsSet("DISPLAY")) {
+ setupX11();
+ } else {
+ qWarning() << "running kwin without Xwayland support";
+ }
+
if (!syncDBusEnvironment()) {
out << "Could not sync environment to dbus.\n";
return 2;
--
2.33.0

View file

@ -0,0 +1,133 @@
From a437cb34a3cacc0daae012a26cb5a28407a6f873 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Wed, 28 Feb 2018 17:10:14 +0100
Subject: [PATCH] Revert "No icons on the desktop by default"
This reverts commit 240d0d6fe1e5db88e304199339396bd48c23e130.
We want those icons in openSUSE. They've always been there and there is no
reason not to have them.
---
kioslave/desktop/CMakeLists.txt | 1 +
kioslave/desktop/Home.desktop | 88 ++++++++++++++++++++++++++++++++++++++++
kioslave/desktop/kio_desktop.cpp | 4 ++
3 files changed, 93 insertions(+)
create mode 100644 kioslave/desktop/Home.desktop
Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/CMakeLists.txt
===================================================================
--- plasma-workspace-5.17.80git.20210531T011335~40d302afe.orig/kioslave/desktop/CMakeLists.txt 2021-05-31 03:13:35.000000000 +0200
+++ plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/CMakeLists.txt 2021-05-31 06:59:47.519362944 +0200
@@ -31,3 +31,4 @@
########### install files ###############
install(FILES directory.desktop directory.trash DESTINATION ${KDE_INSTALL_DATADIR}/kio_desktop)
+install(FILES Home.desktop DESTINATION ${KDE_INSTALL_DATADIR}/kio_desktop/DesktopLinks)
Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/Home.desktop
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/Home.desktop 2021-05-31 06:59:47.519362944 +0200
@@ -0,0 +1,88 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Home
+Name[ca]=Inici
+Name[ca@valencia]=Inici
+Name[cs]=Můj adresář
+Name[da]=Hjem
+Name[de]=Persönlicher Ordner
+Name[el]=Προσωπικός φάκελος
+Name[en_GB]=Home
+Name[es]=Inicio
+Name[et]=Kodu
+Name[eu]=Etxea
+Name[fi]=Koti
+Name[fr]=Dossier personnel
+Name[gl]=Persoal
+Name[he]=בית
+Name[hu]=Saját mappa
+Name[is]=Heimamappa
+Name[it]=Home
+Name[ja]=ホーム
+Name[ko]=홈
+Name[lt]=Pradžia
+Name[nl]=Home
+Name[nn]=Heim
+Name[pa]=ਘਰ
+Name[pl]=Katalog domowy
+Name[pt]=Pasta Pessoal
+Name[pt_BR]=Pasta Pessoal
+Name[ru]=Домашняя папка
+Name[se]=Ruoktu
+Name[sk]=Domov
+Name[sl]=Dom
+Name[sr]=Домаће
+Name[sr@ijekavian]=Домаће
+Name[sr@ijekavianlatin]=Domaće
+Name[sr@latin]=Domaće
+Name[sv]=Hem
+Name[tr]=Başlangıç
+Name[uk]=Домівка
+Name[x-test]=xxHomexx
+Name[zh_CN]=主文件夹
+Name[zh_TW]=家目錄
+GenericName=Personal Files
+GenericName[ca]=Fitxers personals
+GenericName[ca@valencia]=Fitxers personals
+GenericName[cs]=Osobní soubory
+GenericName[da]=Personlige filer
+GenericName[de]=Persönliche Dateien
+GenericName[el]=Προσωπικά αρχεία
+GenericName[en_GB]=Personal Files
+GenericName[es]=Archivos personales
+GenericName[et]=Isiklikud failid
+GenericName[eu]=Fitxategi pertsonalak
+GenericName[fi]=Omat tiedostot
+GenericName[fr]=Fichiers personnels
+GenericName[gl]=Ficheiros persoais
+GenericName[he]=קבצים אישיים
+GenericName[hu]=Személyes fájlok
+GenericName[is]=Einkaskrár
+GenericName[it]=File personali
+GenericName[ja]=個人のファイル
+GenericName[ko]=개인적인 파일
+GenericName[lt]=Asmeniniai failai
+GenericName[nl]=Persoonlijke bestanden
+GenericName[nn]=Personlege filer
+GenericName[pa]=ਨਿੱਜੀ ਫਾਇਲਾਂ
+GenericName[pl]=Pliki osobiste
+GenericName[pt]=Ficheiros Pessoais
+GenericName[pt_BR]=Arquivos pessoais
+GenericName[ru]=Личные файлы
+GenericName[se]=Iežat fiillat
+GenericName[sk]=Osobné súbory
+GenericName[sl]=Osebne datoteke
+GenericName[sr]=Лични фајлови
+GenericName[sr@ijekavian]=Лични фајлови
+GenericName[sr@ijekavianlatin]=Lični fajlovi
+GenericName[sr@latin]=Lični fajlovi
+GenericName[sv]=Personliga filer
+GenericName[tr]=Kişisel Dosyalar
+GenericName[uk]=Особисті файли
+GenericName[x-test]=xxPersonal Filesxx
+GenericName[zh_CN]=个人文件
+GenericName[zh_TW]=個人檔案
+URL[$e]=$HOME
+Icon=user-home
+Type=Link
+
Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/kio_desktop.cpp
===================================================================
--- plasma-workspace-5.17.80git.20210531T011335~40d302afe.orig/kioslave/desktop/kio_desktop.cpp 2021-05-31 03:13:35.000000000 +0200
+++ plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/kio_desktop.cpp 2021-05-31 06:59:47.519362944 +0200
@@ -90,6 +90,10 @@
// Copy the .directory file
QFile::copy(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kio_desktop/directory.desktop")), desktopPath + "/.directory");
+ // Copy the trash link
+ QFile::copy(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kio_desktop/directory.trash")),
+ desktopPath + "/trash.desktop");
+
// Copy the desktop links
QSet<QString> links;
const auto dirs =

View file

@ -0,0 +1,86 @@
From 075b2f27722d2f28a5c3d4e201c7e7e787cb68de Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Thu, 21 Oct 2021 08:20:38 +0200
Subject: [PATCH 2/2] Revert "Drop X11 root properties for KDE full session /
session version"
This reverts commit 9a4e3d39c2a9ca48f39a60ae2ea88e9921723cec.
---
startkde/startplasma-waylandsession.cpp | 1 +
startkde/startplasma-x11.cpp | 1 +
startkde/startplasma.cpp | 22 ++++++++++++++++++++++
startkde/startplasma.h | 1 +
4 files changed, 25 insertions(+)
diff --git a/startkde/startplasma-waylandsession.cpp b/startkde/startplasma-waylandsession.cpp
index ed496cc24..d0c83bf5a 100644
--- a/startkde/startplasma-waylandsession.cpp
+++ b/startkde/startplasma-waylandsession.cpp
@@ -41,6 +41,7 @@ int main(int argc, char **argv)
// Keep for KF5; remove in KF6 (KInit will be gone then)
runSync(QStringLiteral("kdeinit5_shutdown"), {});
+ cleanupX11();
out << "startplasma-waylandsession: Done.\n";
return 0;
diff --git a/startkde/startplasma-x11.cpp b/startkde/startplasma-x11.cpp
index d6b2c5439..7ddf7b3ea 100644
--- a/startkde/startplasma-x11.cpp
+++ b/startkde/startplasma-x11.cpp
@@ -93,6 +93,7 @@ int main(int argc, char **argv)
runSync(QStringLiteral("kdeinit5_shutdown"), {});
cleanupPlasmaEnvironment(oldSystemdEnvironment);
+ cleanupX11();
out << "startkde: Done.\n";
diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp
index 8d0b0ba89..5f78e7016 100644
--- a/startkde/startplasma.cpp
+++ b/startkde/startplasma.cpp
@@ -336,6 +336,28 @@ void setupX11()
// so don't move this up.
runSync(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
+ runSync(QStringLiteral("xprop"),
+ {QStringLiteral("-root"),
+ QStringLiteral("-f"),
+ QStringLiteral("KDE_FULL_SESSION"),
+ QStringLiteral("8t"),
+ QStringLiteral("-set"),
+ QStringLiteral("KDE_FULL_SESSION"),
+ QStringLiteral("true")});
+ runSync(QStringLiteral("xprop"),
+ {QStringLiteral("-root"),
+ QStringLiteral("-f"),
+ QStringLiteral("KDE_SESSION_VERSION"),
+ QStringLiteral("32c"),
+ QStringLiteral("-set"),
+ QStringLiteral("KDE_SESSION_VERSION"),
+ QStringLiteral("5")});
+}
+
+void cleanupX11()
+{
+ runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_FULL_SESSION")});
+ runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_SESSION_VERSION")});
}
void cleanupPlasmaEnvironment(const std::optional<QStringList> &oldSystemdEnvironment)
diff --git a/startkde/startplasma.h b/startkde/startplasma.h
index e8684be74..00c5c1570 100644
--- a/startkde/startplasma.h
+++ b/startkde/startplasma.h
@@ -26,6 +26,7 @@ void importSystemdEnvrionment();
void runEnvironmentScripts();
void setupPlasmaEnvironment();
void cleanupPlasmaEnvironment(const std::optional<QStringList> &oldSystemdEnvironment);
+void cleanupX11();
bool syncDBusEnvironment();
void setupFontDpi();
QProcess *setupKSplash();
--
2.33.0

View file

@ -0,0 +1,52 @@
From 70d23b891e95bc6911389773f320a4406a12bd87 Mon Sep 17 00:00:00 2001
From: Lufan Zhong <lufanzhong@gmail.com>
Date: Sun, 26 Dec 2021 19:33:09 +0000
Subject: [PATCH] runners/shell: Port from KToolInvocation::invokeTerminal to
KTerminalLauncherJob
kinit is being deprecated; this change will allow it to open a terminal and execute
commands normally without kinit being present.
BUG: 437131
FIXED-IN: 5.24
---
runners/shell/shellrunner.cpp | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/runners/shell/shellrunner.cpp b/runners/shell/shellrunner.cpp
index 03b54e1f1..be4058acf 100644
--- a/runners/shell/shellrunner.cpp
+++ b/runners/shell/shellrunner.cpp
@@ -12,8 +12,9 @@
#include <KLocalizedString>
#include <KNotificationJobUiDelegate>
#include <KShell>
-#include <KToolInvocation>
+#include <KTerminalLauncherJob>
#include <QAction>
+#include <QProcessEnvironment>
#include <QRegularExpression>
#include <QStandardPaths>
@@ -62,7 +63,17 @@ void ShellRunner::run(const Plasma::RunnerContext &context, const Plasma::QueryM
{
if (match.selectedAction()) {
const QVariantList data = match.data().toList();
- KToolInvocation::invokeTerminal(data.at(0).toString(), data.at(1).toStringList());
+ const QStringList list = data.at(1).toStringList();
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ for (const auto& str : list)
+ {
+ const int pos = str.indexOf('=');
+ env.insert(str.left(pos), str.mid(pos+1));
+ }
+ auto job = new KTerminalLauncherJob(data.at(0).toString());
+ job->setProcessEnvironment(env);
+ job->setUiDelegate(new KNotificationJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled));
+ job->start();
return;
}
--
GitLab

View file

@ -0,0 +1,38 @@
From 926f864756e5586f38574c166abdb5befa3dc771 Mon Sep 17 00:00:00 2001
From: David Edmundson <kde@davidedmundson.co.uk>
Date: Wed, 8 Dec 2021 13:08:43 +0000
Subject: [PATCH] [libtaskmanager] Increase buffer for pipewire format
negotiation
Libtaskmanager's buffer for spa_builder is too small on certain
configurations. Because podBuilder->state.offset is never reset, the
buffer space can run out when EGL returns a long list of dma_buf
modifiers, causing PipeWire negotiation to fail.
An example is when EGL returns 20 modifiers. There are 6 formats defined
in pipewiresourcestream.cpp, for each format it will construct 2 frames,
one with 21*8=168 bytes long of modifiers. The modifier lists for all
frames will be 6*168=1008 bytes (only 16 bytes left of 1024 bytes), let
alone other frames.
BUG: 446061
---
libtaskmanager/declarative/pipewiresourcestream.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libtaskmanager/declarative/pipewiresourcestream.cpp b/libtaskmanager/declarative/pipewiresourcestream.cpp
index a6713ae76..f1d3032a5 100644
--- a/libtaskmanager/declarative/pipewiresourcestream.cpp
+++ b/libtaskmanager/declarative/pipewiresourcestream.cpp
@@ -260,7 +260,7 @@ bool PipeWireSourceStream::createStream(uint nodeid)
pwNodeId = nodeid;
pw_stream_add_listener(pwStream, &streamListener, &pwStreamEvents, this);
- uint8_t buffer[1024];
+ uint8_t buffer[4096];
spa_pod_builder podBuilder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer));
const QVector<spa_video_format> formats =
--
GitLab

View file

@ -0,0 +1,127 @@
From da843d3fdb143ed44094c8e6246cfb8305f6f09f Mon Sep 17 00:00:00 2001
From: David Edmundson <kde@davidedmundson.co.uk>
Date: Sat, 13 Apr 2024 23:07:19 +0100
Subject: [PATCH] Authenticate local clients
ksmserver currently authenticates remote clients, but allows local
connections through.
This is a security risk that can allow another user on the same system
to access the user's session management session without authentication.
Co-authored-by: Fabian Vogt <fabian@ritter-vogt.de>
---
ksmserver/server.cpp | 57 ++++----------------------------------------
1 file changed, 5 insertions(+), 52 deletions(-)
diff --git a/ksmserver/server.cpp b/ksmserver/server.cpp
index 8a408cf73b..62bb8fb74d 100644
--- a/ksmserver/server.cpp
+++ b/ksmserver/server.cpp
@@ -158,15 +158,6 @@ static QTemporaryFile *remTempFile = nullptr;
static IceListenObj *listenObjs = nullptr;
int numTransports = 0;
-static bool only_local = 0;
-
-static Bool HostBasedAuthProc(char * /*hostname*/)
-{
- if (only_local)
- return true;
- else
- return false;
-}
Status KSMRegisterClientProc(SmsConn /* smsConn */, SmPointer managerData, char *previousId)
{
@@ -311,33 +302,6 @@ static void write_iceauth(FILE *addfp, FILE *removefp, IceAuthDataEntry *entry)
#define MAGIC_COOKIE_LEN 16
-Status SetAuthentication_local(int count, IceListenObj *listenObjs)
-{
- int i;
- for (i = 0; i < count; i++) {
- char *prot = IceGetListenConnectionString(listenObjs[i]);
- if (!prot)
- continue;
- char *host = strchr(prot, '/');
- char *sock = nullptr;
- if (host) {
- *host = 0;
- host++;
- sock = strchr(host, ':');
- if (sock) {
- *sock = 0;
- sock++;
- }
- }
- qCDebug(KSMSERVER) << "KSMServer: SetAProc_loc: conn " << (unsigned)i << ", prot=" << prot << ", file=" << sock;
- if (sock && !strcmp(prot, "local")) {
- chmod(sock, 0700);
- }
- IceSetHostBasedAuthProc(listenObjs[i], HostBasedAuthProc);
- free(prot);
- }
- return 1;
-}
Status SetAuthentication(int count, IceListenObj *listenObjs, IceAuthDataEntry **authDataEntries)
{
@@ -372,8 +336,6 @@ Status SetAuthentication(int count, IceListenObj *listenObjs, IceAuthDataEntry *
write_iceauth(addAuthFile, remAuthFile, &(*authDataEntries)[i + 1]);
IceSetPaAuthData(2, &(*authDataEntries)[i]);
-
- IceSetHostBasedAuthProc(listenObjs[i / 2], HostBasedAuthProc);
}
fclose(addAuthFile);
fclose(remAuthFile);
@@ -397,9 +359,6 @@ Status SetAuthentication(int count, IceListenObj *listenObjs, IceAuthDataEntry *
void FreeAuthenticationData(int count, IceAuthDataEntry *authDataEntries)
{
/* Each transport has entries for ICE and XSMP */
- if (only_local)
- return;
-
for (int i = 0; i < count * 2; i++) {
free(authDataEntries[i].network_id);
free(authDataEntries[i].auth_data);
@@ -542,16 +501,14 @@ KSMServer::KSMServer(InitFlags flags)
clientInteracting = nullptr;
xonCommand = config.readEntry("xonCommand", "xon");
- only_local = flags.testFlag(InitFlag::OnlyLocal);
#ifdef HAVE__ICETRANSNOLISTEN
- if (only_local)
+ if (flags.testFlag(InitFlag::OnlyLocal)) {
_IceTransNoListen("tcp");
-#else
- only_local = false;
+ }
#endif
char errormsg[256];
- if (!SmsInitialize((char *)KSMVendorString, (char *)KSMReleaseString, KSMNewClientProc, (SmPointer)this, HostBasedAuthProc, 256, errormsg)) {
+ if (!SmsInitialize((char *)KSMVendorString, (char *)KSMReleaseString, KSMNewClientProc, (SmPointer)this, nullptr, 256, errormsg)) {
qCWarning(KSMSERVER, "KSMServer: could not register XSM protocol");
}
@@ -594,12 +551,8 @@ KSMServer::KSMServer(InitFlags flags)
free(session_manager);
}
- if (only_local) {
- if (!SetAuthentication_local(numTransports, listenObjs))
- qFatal("KSMSERVER: authentication setup failed.");
- } else {
- if (!SetAuthentication(numTransports, listenObjs, &authDataEntries))
- qFatal("KSMSERVER: authentication setup failed.");
+ if (!SetAuthentication(numTransports, listenObjs, &authDataEntries)) {
+ qFatal("KSMSERVER: authentication setup failed.");
}
IceAddConnectionWatch(KSMWatchProc, (IcePointer)this);
--
GitLab

View file

@ -0,0 +1,2 @@
UPGRADE_PACKAGES=no ./kde.SlackBuild plasma:plasma-workspace
mv /tmp/kde_build/plasma-workspace*txz /tmp

View file

@ -0,0 +1,146 @@
#!/bin/sh
# $id$
# -----------------------------------------------------------------------------
# Purpose: A script to checkout sources for KDE Plasma Next from the
# git repositories and create tarballs of them.
# Author: Eric Hameleers <alien@slackware.com>
# Date: 20140604
# -----------------------------------------------------------------------------
# Defaults:
# Directory where we start:
CWD=$(pwd)
# Cleanup (delete) the directories containing the local clones afterwards:
CLEANUP="NO"
# Checkout at a custom date instead of today:
CUSTDATE="NO"
# Forced overwriting of existing tarballs:
FORCE="NO"
# Where to write the files by default:
MYDIR="${CWD}/_plasma_checkouts"
# KDE git repositories:
KDEGITURI="git://anongit.kde.org"
# Prefered branch to check out from if it exists (HEAD otherwise):
BRANCH="frameworks"
# Shrink the tarball by removing git repository metadata:
SHRINK="YES"
# Today's timestamp:
THEDATE=$(date +%Y%m%d)
# The KDE topdirectory ( by default the location of this script):
TOPDIR=$(cd $(dirname $0); pwd)
# -----------------------------------------------------------------------------
while getopts "cd:fghk:o:" Option
do
case $Option in
c ) CLEANUP="YES"
;;
d ) THEDATE="date --date='${OPTARG}' +%Y%m%d"
CUSTDATE="${OPTARG}"
;;
f ) FORCE="YES"
;;
g ) SHRINK="NO"
;;
k ) TOPDIR="${OPTARG}"
;;
o ) MYDIR="${OPTARG}"
;;
h|* )
echo "$(basename $0) [<param> <param> ...] [<module> <module> ...]"
echo "Parameters are:"
echo " -h This help."
echo " -c Cleanup afterwards (delete the cloned repos)."
echo " -d <date> Checkout git at <date> instead of today."
echo " -f Force overwriting of tarballs if they exist."
echo " -g Keep git repository metadata (bigger tarball)."
echo " -o <dir> Create tarballs in <dir> instead of $MYDIR/."
echo " -k <dir> Location of KDE sources if not $(cd $(dirname $0), pwd)/."
exit
;;
esac
done
shift $(($OPTIND - 1))
# End of option parsing.
# $1 now references the first non option item supplied on the command line
# if one exists.
# -----------------------------------------------------------------------------
# Catch any individual requests on the commandline:
MODS=${1:-""}
# Verify that our TOPDIR is the KDE source top directory:
if ! [ -f ${TOPDIR}/KDE.SlackBuild -a -d ${TOPDIR}/src ]; then
echo ">> Error: '$TOPDIR' does not seem to contain the KDE SlackBuild plus sources"
echo ">> Either place this script in the KDE directory before running it,"
echo ">> Or specify the KDE toplevel source directory with the '-k' parameter"
exit 1
fi
# No modules specified on the commandline; get all enabled plasma modules:
if [ ! -n "$MODS" ]; then
MODS="$(cat ${TOPDIR}/modules/plasma | grep -v " *#" | grep -v "^$")"
fi
# Create the work directory:
mkdir -p "${MYDIR}"
if [ $? -ne 0 ]; then
echo "Error creating '${MYDIR}' - aborting."
exit 1
fi
cd "${MYDIR}"
# Proceed with checking out all plasma-next sources.
# Some packages are called foo-framework to make them co-installable with the
# KDE4 packages with the same source-name. Strip the '-framework' off the
# package name to get the source name):
for MOD in $MODS ; do
git clone ${KDEGITURI}/${MOD%-framework}.git ${MOD%-framework}-${THEDATE}git
( cd ${MOD%-framework}-${THEDATE}git
git checkout ${BRANCH} # If this fails we should have 'master' anyway
if [ $? -ne 0 ]; then
BRANCH="master"
fi
if [ "$CUSTDATE" != "NO" ]; then
# Checkout at a specified date instead of HEAD:
git checkout $(git rev-list -n 1 --before="`date -d $THEDATE`" $BRANCH)
fi
)
done
if [ "$SHRINK" = "YES" ]; then
# Remove git meta data from the tarballs:
for DIR in $(ls |grep git$) ; do
find ${DIR%/} -name ".git*" -depth -exec rm -rf {} \;
done
fi
# Zip them up:
for DIR in $(ls |grep git$) ; do
if [ "$FORCE" = "NO" -a -f ${DIR%/}.tar.xz ]; then
echo ">> Not overwriting existng file '${DIR%/}.tar.xz'"
echo ">> Use '-f' to force ovewriting existing files"
else
tar -Jcf ${DIR%/}.tar.xz ${DIR%/}
fi
done
if [ "$CLEANUP" = "YES" ]; then
# Remmove the cloned directories now that we have the tarballs:
rm -r *git
fi
cd $CWD
# Done!

View file

@ -0,0 +1,57 @@
# Use ck-launch-session in runlevel 3 if that is available,
# to start and attach a ConsoleKit session to the X session:
mkdir -p $PKG/etc/X11/xinit
cat $CWD/post-install/plasma-workspace/xinit/xinitrc.kde \
| sed -e "s/@LIBDIRSUFFIX@/$LIBDIRSUFFIX/g" \
> $PKG/etc/X11/xinit/xinitrc.kde
chmod 0755 $PKG/etc/X11/xinit/xinitrc.kde
# Add a script that launches a Plasma Wayland session from the commandline:
mkdir -p $PKG/usr/bin
cat $CWD/post-install/plasma-workspace/scripts/startkwayland \
| sed -e "s/@LIBDIRSUFFIX@/$LIBDIRSUFFIX/g" \
> $PKG/usr/bin/startkwayland
chmod 0755 $PKG/usr/bin/startkwayland
# Install custom "full wayland" session
pushd $PKG/usr/share/wayland-sessions/
sed '/^Name/d;s/^Exec=/Exec=env GDK_BACKEND=wayland QT_QPA_PLATFORM=wayland /' plasmawayland.desktop > z_plasmafullwayland.desktop
echo 'Name=Plasma (Full Wayland)' >> z_plasmafullwayland.desktop
popd
# Add a "fail-safe" version of KDE Plasma desktop session.
# Prefix the name with "z_" because SDDM is braindead:
mkdir -p $PKG/usr/share/xsessions
cat $CWD/post-install/plasma-workspace/xsession/plasma-safe.desktop \
| sed -e "s,@PREFIX@,/usr,g" \
> $PKG/usr/share/xsessions/z_plasma-safe.desktop
# What is "plugins/plugins"?
mv $PKG/usr/lib$LIBDIRSUFFIX/qt5/plugins/{plugins,}/phonon_platform
rmdir $PKG/usr/lib$LIBDIRSUFFIX/qt5/plugins/plugins
# Move the polkit dbus configuration files to the proper place:
mkdir -p $PKG/etc
mv $PKG/etc/kde/dbus-1 $PKG/etc/
if [ "$SLACKPAM" == "no" ]; then
# For shadow, this file needs to be setuid root just like the KDE4 version:
if [ -f $PKG/usr/lib$LIBDIRSUFFIX/kcheckpass ]; then
chmod +s $PKG/usr/lib$LIBDIRSUFFIX/kcheckpass
fi
# ck-launch-session is needed for a Wayland session, since we do not have PAM:
sed -e 's/^Exec=dbus-launch/Exec=ck-launch-session dbus-launch --sh-syntax/' \
-i $PKG/usr/share/wayland-sessions/plasmawayland.desktop
else
# Install a PAM file for Plasma5 workspace:
install -Dm644 $CWD/post-install/plasma-workspace/pam.d/kde $PKG/etc/pam.d/kde
fi
if [ "$SLKELOGIND" == "yes" ]; then
# Since elogind does not set DBUS_SESSION_BUS_ADDRESS we need to start
# Plasma X11 session through dbus-run-session like Wayland is launched:
sed -i $PKG/usr/share/xsessions/plasma.desktop \
-e "s,^Exec=/,Exec=dbus-run-session /,"
fi

View file

@ -0,0 +1,10 @@
#%PAM-1.0
auth include system-auth
auth include postlogin
account include system-auth
password include system-auth
session include system-auth
session required pam_loginuid.so
-session optional pam_ck_connector.so nox11
-session optional pam_elogind.so
session include postlogin

View file

@ -0,0 +1,4 @@
#!/bin/sh
# Start KWin as a Plasma 5 Wayland session
dbus-launch --sh-syntax --exit-with-session /usr/bin/startplasma-wayland

View file

@ -0,0 +1,33 @@
#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f $userresources ]; then
xrdb -merge $userresources
fi
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
# Start the window manager:
if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then
ck-launch-session dbus-launch --sh-syntax --exit-with-session startplasma-x11
else
dbus-launch --sh-syntax --exit-with-session startplasma-x11
fi

View file

@ -0,0 +1,9 @@
[Desktop Entry]
Encoding=UTF-8
Type=XSession
Exec=dbus-run-session /usr/bin/startplasma-x11 --failsafe
TryExec=/usr/bin/startplasma-x11
DesktopNames=KDE
Name=Plasma (Failsafe)
Comment=Plasma by KDE (Failsafe)

View file

@ -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 ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
plasma-workspace: plasma-workspace (KDE Plasma Workspace)
plasma-workspace:
plasma-workspace: The Plasma Workspace provides support for KDE Plasma Widgets,
plasma-workspace: integrated search, hardware management, and a high degree of
plasma-workspace: customizability.
plasma-workspace:
plasma-workspace:
plasma-workspace:
plasma-workspace:
plasma-workspace:
plasma-workspace: