diff options
author | Eric Hameleers <alien@slackware.com> | 2017-06-26 13:37:22 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2017-06-26 13:37:22 +0000 |
commit | f7302c671bb8dddadbe870e0e8f5f107d8650e75 (patch) | |
tree | 84aceb8c5610279484c5fd445eaced63a59aeebd | |
parent | 6997606e4340232bd11c112733d1ca22a06c6d41 (diff) | |
download | asb-f7302c671bb8dddadbe870e0e8f5f107d8650e75.tar.gz asb-f7302c671bb8dddadbe870e0e8f5f107d8650e75.tar.xz |
Initial revision
-rw-r--r-- | lxqt/build/DOWNLOAD.sh | 77 | ||||
-rw-r--r-- | lxqt/build/README.Slackware | 126 | ||||
-rwxr-xr-x | lxqt/build/lxqt.SlackBuild | 575 | ||||
-rw-r--r-- | lxqt/build/lxqt.options | 60 | ||||
-rw-r--r-- | lxqt/build/modularize | 66 | ||||
-rw-r--r-- | lxqt/build/noarch | 7 | ||||
-rw-r--r-- | lxqt/build/nomake | 0 | ||||
-rw-r--r-- | lxqt/build/package-blacklist | 5 |
8 files changed, 916 insertions, 0 deletions
diff --git a/lxqt/build/DOWNLOAD.sh b/lxqt/build/DOWNLOAD.sh new file mode 100644 index 00000000..0b448be9 --- /dev/null +++ b/lxqt/build/DOWNLOAD.sh @@ -0,0 +1,77 @@ +# +# http://wiki.lxde.org/en/Build_LXQt_From_Source +# + +LXQT=0.11.0 + +# base +DL_BASE=( + https://downloads.lxqt.org/libfm-qt/0.11.1/libfm-qt-0.11.1.tar.xz + https://downloads.lxqt.org/obconf-qt/0.11.0/obconf-qt-0.11.0.tar.xz + https://downloads.lxqt.org/lximage-qt/0.5.0/lximage-qt-0.5.0.tar.xz + https://downloads.lxqt.org/libqtxdg/2.0.0/libqtxdg-2.0.0.tar.xz + https://downloads.lxqt.org/libsysstat/0.3.2/libsysstat-0.3.2.tar.xz + https://downloads.sourceforge.net/pcmanfm/libfm-1.2.4.tar.xz + https://downloads.sourceforge.net/lxde/menu-cache-1.0.2.tar.xz + https://downloads.sourceforge.net/lxde/lxmenu-data-0.1.5.tar.xz +) + +# lxqt +DL_LXQT=( + https://downloads.lxqt.org/lxqt/${LXQT}/liblxqt-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-about-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-admin-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-common-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-config-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-globalkeys-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-notificationd-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-openssh-askpass-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-panel-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-policykit-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-powermanagement-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-qtplugin-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-runner-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-session-${LXQT}.tar.xz + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-sudo-${LXQT}.tar.xz + https://downloads.lxqt.org/pcmanfm-qt/0.11.1/pcmanfm-qt-0.11.1.tar.xz +) + +# extra +# See http://git.lxde.org/gitweb/?a=project_list;pf=lxde +# Deprecated: +#https://github.com/zjes/lxqt-appswitcher/archive/master.zip +DL_EXTRA=( + https://downloads.lxqt.org/compton-conf/0.2.0/compton-conf-0.2.0.tar.xz + https://downloads.lxqt.org/pavucontrol-qt/0.1.0/pavucontrol-qt-0.1.0.tar.xz + https://downloads.lxqt.org/qtermwidget/0.7.0/qtermwidget-0.7.0.tar.xz + https://downloads.lxqt.org/qterminal/0.7.0/qterminal-0.7.0.tar.xz + https://github.com/hyperrealm/libconfig/archive/v1.6.tar.gz +) + +#l10n +DL_L10N=( + https://downloads.lxqt.org/lxqt/${LXQT}/lxqt-l10n-${LXQT}.tar.xz +) + +cd $(dirname $0) +mkdir -p src/{base,lxqt,extra,l10n} +cd src/base + for DLURL in ${DL_BASE[*]} ; do + wget -nv -T 20 --no-clobber --content-disposition $DLURL + done +cd - 1>/dev/null +cd src/lxqt + for DLURL in ${DL_LXQT[*]} ; do + wget -nv -T 20 --no-clobber --content-disposition $DLURL + done +cd - 1>/dev/null +cd src/extra + for DLURL in ${DL_EXTRA[*]} ; do + wget -nv -T 20 --no-clobber --content-disposition $DLURL + done +cd - 1>/dev/null +cd src/l10n + for DLURL in ${DL_L10N[*]} ; do + wget -nv -T 20 --no-clobber --content-disposition $DLURL + done +cd - 1>/dev/null diff --git a/lxqt/build/README.Slackware b/lxqt/build/README.Slackware new file mode 100644 index 00000000..19a212ae --- /dev/null +++ b/lxqt/build/README.Slackware @@ -0,0 +1,126 @@ +LXQT On Slackware +================= + +If you want to install and use LXQT on Slackware, you need more than just +the packages in the lxqt package directory for Slackware 14.2 or -current. +All of the below are also required if you want to compile LXQT yourself. + +Openbox +------- + +LXQT needs a Window Manager, it does not have one itself. LXQT will offer +you a choice of fvwm2, xfwm4, fluxbox on its first start but you can also +install openbox. If you do prefer openbox, get these two packages from my +'slackbuilds' repository, +http://bear.alienbase.nl/mirrors/people/alien/slackbuilds/ : + +obconf +openbox + +Dependencies +------------ + +Openbox is a dependency for compiling obconf-qt but if you are not interested +in using openbox you can skip installing openbox and compiling obconf-qt. + +The real mandatory dependencies are related to Qt5 and the KDE Frameworks, +upon which LXQT was built. +Therefore the following packages should be obtained from my 'ktown'repository, +http://bear.alienbase.nl/mirrors/alien-kde/ below the directory specific to +your Slackware release and architecture. +More specifically from its subdirectories 'deps', 'kde/frameworks', +'kde/plasma' and 'kde/plasma-extra': + +# deps: +libdbusmenu-qt5 +libinput +libxkbcommon +polkit-qt5-1 +qt5 +qt5-webkit +wayland + +# kde/frameworks: +attica-framework +baloo5 +bluez-qt +breeze-icons +extra-cmake-modules +frameworkintegration +kactivities-framework +kactivities-stats +kapidox +karchive +kauth +kbookmarks +kcmutils +kcodecs +kcompletion +kconfig +kconfigwidgets +kcoreaddons +kcrash +kdbusaddons +kdeclarative +kded +kdelibs4support +kdesignerplugin +kdesu +kdewebkit +kdnssd +kdoctools +kemoticons +kfilemetadata5 +kglobalaccel +kguiaddons +khtml +ki18n +kiconthemes +kidletime +kimageformats +kinit +kio +kitemmodels +kitemviews +kjobwidgets +kjs +kjsembed +kmediaplayer +knewstuff +knotifications +knotifyconfig +kpackage +kparts +kpeople +kplotting +kpty +kross +krunner +kservice +ktexteditor +ktextwidgets +kunitconversion +kwallet +kwidgetsaddons +kwindowsystem +kxmlgui +kxmlrpcclient +modemmanager-qt +networkmanager-qt +oxygen-icons5 +plasma-framework +solid +sonnet +threadweaver + +# plasma: +libkscreen2 + +# plasma-extra: +sddm-qt5 + +Finally, you need the following packages from my main slackbuilds repository +at http://bear.alienbase.nl/mirrors/people/alien/slackbuilds/ : + +libstatgrab +muparser diff --git a/lxqt/build/lxqt.SlackBuild b/lxqt/build/lxqt.SlackBuild new file mode 100755 index 00000000..e965c72c --- /dev/null +++ b/lxqt/build/lxqt.SlackBuild @@ -0,0 +1,575 @@ +#!/bin/sh +# Copyright 2014 Eric Hameleers, Eindhoven, NL +# 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 KDE build. + +# To build only a single package group, specify it as $1, like: +# ./lxqt.SlackBuild base +# To build only a single package, specify both the group name +# and the name of the package, like: +# ./lxqt.SlackBuild base:menu-cache +# ./lxqt.SlackBuild lxqt:pcmanfm,lxqt-session + +CLEANUP=${CLEANUP:-"yes"} # clean up build directory 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. + +LXQTGITURI="https://github.com/lxde/lxde-qt" + +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) + ;; + 'xz' ) + PKGRETURN=$(basename $1 .tar.xz) + ;; + *) + PKGRETURN=$(basename $1) + ;; + esac + echo $PKGRETURN +} + +# Set initial variables: +CWD=$(pwd) +TMP=${TMP:-/tmp} + +# 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 +} + +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: + 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 + + # Any source not being built modular (i.e. forgotten to add to modularize)? + for PSRC in $(cat modules/* | grep -v "^ *#" | grep -v "^$"); do + if ! grep -wq "^${PSRC}$" modularize ; then + echo "Not built modular: $PSRC" + RETVAL=1 + fi + done + unset PSRC + + for MODULE 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/$MODULE ]; then + MODBASE=$(basename $(cat $CWD/pkgsrc/$MODULE)) + MODLOC=$(dirname $(cat $CWD/pkgsrc/$MODULE))/ + else + MODBASE=$MODULE + 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 '$MODULE' does not have a matching source tarball ($MODLOC$MODBASE)!" + if [ "$CHECKOUT" = "yes" -o "$CHECKOUT" = "YES" ]; then + echo "Checking out LXQT component at branch '$VERSION'." + git archive --format=tar --prefix {$MODULE}-${VERSION}/ --remote ${LXQTGITURI}/${MODULE}.git v${VERSION} | xz -c > $CWD/src/${MODULE}-${VERSION}.tar.xz + RETVAL=$? + if [ $RETVAL -ne 0 ]; then + echo "Error while checking out '$MODULE' !" + mv $CWD/src/${MODULE}-${VERSION}.tar.xz $CWD/src/${MODULE}-${VERSION}.tar.xz.failed + fi + else + RETVAL=1 + fi + fi + # A missing slack-desc counts as fatal even if the program may end up + # inside the big meta-package. + if [ -z "$(find $CWD/slack-desc -name ${MODULE})" ] ; then + echo "Module '$MODULE' does not have a slack-desc file !" + RETVAL=1 + fi + done + + if [ $RETVAL -eq 0 ]; then + echo "Check complete, build starts in 5 seconds" + sleep 5 + else + exit 1 + fi +} + +# Support function builds one complete module (like 'lxqt'), or +# exactly one package which is part of a module (like 'pcmanfm'): +build_mod_pkg () { + lxqt_module=$1 + lxqt_pkg=$2 + + cd $CWD/modules + + # See if $lxqt_module is a module name like "base": + if [ ! -z "$lxqt_module" ]; then + if [ ! -f "$lxqt_module" ]; then + return + fi + fi + PKG=${SLACK_LXQT_BUILD_DIR}/${lxqt_module}/package-${lxqt_module} + rm -rf $PKG + mkdir -p $PKG + ( for PKGNAME in $(cat $lxqt_module |grep -v "^$" |grep -v "^ *#") ; do + if grep -wq "^${PKGNAME}$" ${CWD}/package-blacklist ; then + 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. 'lxqt-config' and 'lxqt-config-randr' + if [ -f $CWD/pkgsrc/$PKGNAME ]; then + PKGSRC=$(basename $(cat $CWD/pkgsrc/$PKGNAME)) + PKGLOC=$(dirname $(cat $CWD/pkgsrc/$PKGNAME)) + else + PKGSRC=$PKGNAME + PKGLOC="" + fi + lxqt_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$lxqt_src" = "x" ]; then + echo "** Did not find '$PKGSRC' in src" + 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_LXQT_BUILD_DIR/${lxqt_module} + # If $lxqt_pkg is set, we only want to build one package: + if [ ! -z "$lxqt_pkg" ]; then + if [ "$lxqt_pkg" = "$PKGNAME" ]; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_LXQT_BUILD_DIR/${lxqt_module}/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + else + continue + fi + else + echo + echo "Building from source ${lxqt_src}" + echo + fi + if grep -wq "^${PKGNAME}$" ${CWD}/modularize ; then + # Set $PKG to a private dir for the modular package build: + PKG=$SLACK_LXQT_BUILD_DIR/${lxqt_module}/package-$PKGNAME + rm -rf $PKG + mkdir -p $PKG + fi + + # Let's figure out the version number on the modular package: + MODULAR_PACKAGE_VERSION=$(echo $lxqt_src | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + + rm -rf $(pkgbase $lxqt_src) + extract_archive $lxqt_src || exit 1 + cd $(pkgbase $lxqt_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 by default, using custom cmake/autoconf script if needed: + if [ -r $CWD/cmake/${PKGNAME} ]; then + . $CWD/cmake/${PKGNAME} + elif [ -r $CWD/cmake/${lxqt_module} ]; then + . $CWD/cmake/${lxqt_module} + elif [ -r $CWD/autoconf/${PKGNAME} ]; then + . $CWD/autoconf/${PKGNAME} + elif [ -r $CWD/autoconf/${lxqt_module} ]; then + . $CWD/autoconf/${lxqt_module} + else + # This is the default configure script: + . $CWD/cmake/cmake + fi + + make $NUMJOBS || make || exit 1 + make install DESTDIR=$PKG || exit 1 + fi + + # Back to source toplevel builddir, since cmake may have run in a subdir: + cd $SLACK_LXQT_BUILD_DIR/${lxqt_module}/$(pkgbase $lxqt_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* 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: + strip_binaries $PKG + + # 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_LXQT_BUILD_DIR/${lxqt_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_LXQT_BUILD_DIR}/${lxqt_module}/${PKGNAME}-$(echo $MODULAR_PACKAGE_VERSION |tr - _)-${PKGARCH}-${MODBUILD}${TAG}.txz + fi + # We will continue with the fresh packages installed: + upgradepkg --install-new --reinstall ${SLACK_LXQT_BUILD_DIR}/${lxqt_module}/${PKGNAME}-${MODULAR_PACKAGE_VERSION}-${PKGARCH}-${MODBUILD}${TAG}.txz + # Keep MIME database current: + /usr/bin/update-mime-database /usr/share/mime 1>/dev/null 2>/dev/null & + fi + + # Reset $PKG to assume we're building the whole source dir: + PKG=${SLACK_LXQT_BUILD_DIR}/${lxqt_module}/package-${lxqt_module} + + done + + # At this point, we have left the loop to build modular packages. + # We might need to build a package for the "<lxqt_module>", but to + # avoid needlessly repacking if there happens to be a package with + # the same name as "<lxqt_module>", we'll do some checks first. + + # If every package listed in modules/"<lxqt_module>" is also listed + # in the modularize file, then there's no need to make a package + # for "<lxqt_module>": + echo + echo "Searching for packages in ${lxqt_module} that were not built modular:" + cat $CWD/modules/${lxqt_module} | grep -v "^ *#" | grep -v -w "^" | while read checkpackage ; do + if ! grep -wq "^${checkpackage}$" ${CWD}/modularize ; then + # Non-modular package found, so we'll have to build the package below. + # It might already have been built once, but in that case it is likely + # that more things have been added to the package directory since then. + echo "Found non-modular package $checkpackage." + exit 99 + fi + done + + # Exit if everything in "<lxqt_module>" was built modular: + if [ ! $? = 99 ]; then + echo "No non-modular components found in ${lxqt_module}." + echo "Not building catch-all package for ${lxqt_module}." + echo + return + fi + + # If there's no /usr directory in the "<lxqt_module>" package directory, + # then skip it. There's nothing present worth packing up. + if [ ! -d ${SLACK_LXQT_BUILD_DIR}/${lxqt_module}/package-${lxqt_module}/usr ]; then + echo "No /usr directory found in package-${lxqt_module}." + echo "Not building catch-all package for ${lxqt_module}." + echo + return + fi + + # Build a "<lxqt_module>" package for anything that wasn't built modular: + # It's safer to consider these to have binaries in them. ;-) + + # Put up a bit of a black-box warning, in case this was a mistake where + # something was meant to be listed in the modularize file and wasn't: + echo + echo "**************************************************************************" + echo "* Building combined package for non-modular parts of ${lxqt_module}" + echo "**************************************************************************" + echo + + PKGARCH=$ARCH + cd $PKG + + process_man_pages + process_info_pages + no_usr_share_doc + + # If there are post-install things to do for the combined package, + # we do them here. This could be used for things like making a + # VERSION number for a combined package. :-) + if [ -r $CWD/post-install/${lxqt_module}.post-install ]; then + . $CWD/post-install/${lxqt_module}.post-install + fi + mkdir -p $PKG/install + if [ -r $CWD/slack-desc/${lxqt_module} ]; then + cat $CWD/slack-desc/${lxqt_module} > $PKG/install/slack-desc + else + touch $PKG/install/slack-desc-missing + fi + if [ -r $CWD/doinst.sh/${lxqt_module} ]; then + cat $CWD/doinst.sh/${lxqt_module} \ + | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \ + >> $PKG/install/doinst.sh + fi + if [ -r $CWD/build/${lxqt_module} ]; then + SRCDIRBUILD=$(cat $CWD/build/${lxqt_module}) + else + SRCDIRBUILD=$BUILD + fi + if [ -r $CWD/makepkg/${lxqt_module} ]; then + BUILD=$SRCDIRBUILD . $CWD/makepkg/${lxqt_module} + else + /sbin/makepkg -l y -c n ${SLACK_LXQT_BUILD_DIR}/${lxqt_module}/${lxqt_module}-$(echo $VERSION |tr - _)-${PKGARCH}-${SRCDIRBUILD}${TAG}.txz + fi + # We will continue with the fresh packages installed: + upgradepkg --install-new --reinstall ${SLACK_LXQT_BUILD_DIR}/${lxqt_module}/${lxqt_module}-${VERSION}-${PKGARCH}-${SRCDIRBUILD}${TAG}.txz + # Keep MIME database current: + /usr/bin/update-mime-database /usr/share/mime 1>/dev/null 2>/dev/null & + ) +} + +# Process the module queue. Format is: +# module[:subpackage[,subpackage]] [module...] +deterministic_build() { + RET=0 + for ENTRY in $1 ; do + LXQT_MOD=$(echo "$ENTRY": | cut -f1 -d:) + LXQT_PKGS=$(echo "$ENTRY": | cut -f2 -d:) + if [ -z "$LXQT_PKGS" ]; then + echo "** SlackBuild building '$LXQT_MOD'" + build_mod_pkg $LXQT_MOD + let RET=$RET+$? + else + if [ "${LXQT_PKGS: -1}" = "," ]; then + # Last character is a ','. Expand the list with all subsequent packages. + START_PKG=$(echo $LXQT_PKGS |rev |cut -d, -f2 |rev) + MOD_LIST=$(cat modules/$LXQT_MOD |grep -v "^ *#" |grep -v "^$" |tr '\n' ',') + LXQT_PKGS="${LXQT_PKGS}${MOD_LIST/#?*,${START_PKG},/}" + echo "** SlackBuild expanding '$ENTRY' to '$LXQT_MOD:$LXQT_PKGS'" + fi + for LXQT_PKG in $(echo $LXQT_PKGS |tr ',' ' ') ; do + echo "** SlackBuild building '$LXQT_MOD:$LXQT_PKG'" + build_mod_pkg $LXQT_MOD $LXQT_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 ./lxqt.options ] && . ./lxqt.options + +# This avoids compiling a version number into LXQT's .la files: +QTDIR=/usr/lib${LIBDIRSUFFIX}/qt ; export QTDIR + +# Where we are going to do all the hard labour: +SLACK_LXQT_BUILD_DIR=$TMP/lxqt-build +mkdir -p $SLACK_LXQT_BUILD_DIR + +# LXQT build order: +LXQTMODS=" \ + base \ + main \ + data \ + extra \ + l10n \ + " + +# Allow for specification of individual packages to be built: +if [ -z "$1" ]; then + MODQUEUE=$LXQTMODS +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 + echo "** SlackBuild processing module '$module'" + deterministic_build $module + if [ $? = 0 ]; then + # Move the created packages up into the LXQT build directory: + mv ${SLACK_LXQT_BUILD_DIR}/$(echo $module |cut -f1 -d:)/*.t?z ${SLACK_LXQT_BUILD_DIR}/ + if [ "$CLEANUP" = "yes" -o "$CLEANUP" = "YES" ]; then + # Clean out package and build directories: + rm -rf ${SLACK_LXQT_BUILD_DIR}/$(echo $module |cut -f1 -d:) + fi + else + echo "${module} failed to build." + exit 1 + fi + cd - ; +done + +exit 0 + + diff --git a/lxqt/build/lxqt.options b/lxqt/build/lxqt.options new file mode 100644 index 00000000..bd321758 --- /dev/null +++ b/lxqt/build/lxqt.options @@ -0,0 +1,60 @@ +# Set default version/arch/build. Source tarballs with a different +# version will override the default VERSION. You can override BUILD +# by creating a file 'packagename' in the build/ directory, containing +# the desired build number. + +[ -z $VERSION ] && export VERSION=0.11.0 +[ -z $BUILD ] && export BUILD=1 + +[ -z $TAG ] && export TAG=alien + +# Automatically determine the architecture we're building on: +MARCH=$( uname -m ) +if [ -z "$ARCH" ]; then + case "$MARCH" in + i?86) export ARCH=i486 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$MARCH ;; + esac +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" = "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: +if [ -z "$NUMJOBS" ]; then + export NUMJOBS="-j7" +fi + +case "$ARCH" in + arm*) export TARGET=$ARCH-slackware-linux-gnueabi ;; + *) export TARGET=$ARCH-slackware-linux ;; +esac + diff --git a/lxqt/build/modularize b/lxqt/build/modularize new file mode 100644 index 00000000..fc0c495c --- /dev/null +++ b/lxqt/build/modularize @@ -0,0 +1,66 @@ +# If a package is listed here, it will be built apart from the +# usual "grab bag" package that's made from each source directory. +# +# Things to note: +# +# Listing a package here will not cause it to be built. To do that, +# make sure it is added to one of the files in the modules/ directory +# that is built by the main lxqt.SlackBuild script. +# +# If a subpackage name happens to be the same as the "grab bag" package +# that contains it, you need to be a bit careful. Unless everything +# in that collection will be built modular, *do not* list that name +# here! If you do, first the module by that name will be built, and +# then everything that's not modular in that collection will be built +# into a "grab bag" that will replace that first package. +# +# If the goal is to build the most combined packages possible, the +# easiest way to accomplish that is just to move this file out of the +# way and replace it with an empty one before building. + +# base +libqtxdg +liblxqt +lxqt-globalkeys +lxqt-notificationd +libsysstat +libfm-extra +menu-cache +libfm +libfm-qt + +# main +lxqt-panel +pcmanfm-qt +lxqt-session +lxqt-runner +lxqt-qtplugin +lxqt-policykit +lxqt-openssh-askpass +lxqt-power +lxqt-powermanagement +lximage-qt +lxqt-config +lxinput-qt +lxqt-config-randr +lxqt-about +obconf-qt +lxqt-lightdm-greeter +lxqt-sudo +lxqt-admin + +# data +lxqt-common +lxmenu-data + +# extra +libconfig +compton-conf +pavucontrol-qt +qtermwidget +qterminal +lxqt-appswitcher + +# l10n +lxqt-l10n + diff --git a/lxqt/build/noarch b/lxqt/build/noarch new file mode 100644 index 00000000..b7a6de16 --- /dev/null +++ b/lxqt/build/noarch @@ -0,0 +1,7 @@ +# List packages with an $ARCH of "noarch" (i.e. packages +# that contain no binaries) here: + +lxqt-common +lxmenu-data + + diff --git a/lxqt/build/nomake b/lxqt/build/nomake new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/lxqt/build/nomake diff --git a/lxqt/build/package-blacklist b/lxqt/build/package-blacklist new file mode 100644 index 00000000..717e6451 --- /dev/null +++ b/lxqt/build/package-blacklist @@ -0,0 +1,5 @@ +# Enter packages to skip (perhaps because they aren't used on +# this platform) below. Just the package name -- no version +# number is needed. + +lxqt-lightdm-greeter |