slackware-current/source/make_world.sh
Patrick J Volkerding f8225875f6 Fri Jan 8 19:43:46 UTC 2021
a/hwdata-0.343-noarch-1.txz:  Upgraded.
a/kernel-firmware-20210107_060ad8b-noarch-1.txz:  Upgraded.
a/logrotate-3.18.0-x86_64-1.txz:  Upgraded.
a/lvm2-2.03.11-x86_64-1.txz:  Upgraded.
a/mcelog-174-x86_64-1.txz:  Upgraded.
a/plzip-1.9-x86_64-1.txz:  Upgraded.
a/tar-1.33-x86_64-1.txz:  Upgraded.
ap/cups-filters-1.28.7-x86_64-1.txz:  Upgraded.
d/automake-1.16.2-noarch-1.txz:  Upgraded.
  It appears that automake-1.16.3 enforces -gnu at the end of the host string.
  I have no philosophical objection to this, but now's not the time. We'll
  revisit this in the next release cycle.
  Thanks to nobodino and chrisretusn.
d/guile-3.0.5-x86_64-1.txz:  Upgraded.
d/llvm-11.0.1-x86_64-1.txz:  Upgraded.
kde/akonadi-20.12.1-x86_64-1.txz:  Upgraded.
kde/akonadi-calendar-20.12.1-x86_64-1.txz:  Upgraded.
kde/akonadi-calendar-tools-20.12.1-x86_64-1.txz:  Upgraded.
kde/akonadi-contacts-20.12.1-x86_64-1.txz:  Upgraded.
kde/akonadi-import-wizard-20.12.1-x86_64-1.txz:  Upgraded.
kde/akonadi-mime-20.12.1-x86_64-1.txz:  Upgraded.
kde/akonadi-notes-20.12.1-x86_64-1.txz:  Upgraded.
kde/akonadi-search-20.12.1-x86_64-1.txz:  Upgraded.
kde/akonadiconsole-20.12.1-x86_64-1.txz:  Upgraded.
kde/akregator-20.12.1-x86_64-1.txz:  Upgraded.
kde/analitza-20.12.1-x86_64-1.txz:  Upgraded.
kde/ark-20.12.1-x86_64-1.txz:  Upgraded.
kde/artikulate-20.12.1-x86_64-1.txz:  Upgraded.
kde/audiocd-kio-20.12.1-x86_64-1.txz:  Upgraded.
kde/baloo-widgets-20.12.1-x86_64-1.txz:  Upgraded.
kde/blinken-20.12.1-x86_64-1.txz:  Upgraded.
kde/bomber-20.12.1-x86_64-1.txz:  Upgraded.
kde/bovo-20.12.1-x86_64-1.txz:  Upgraded.
kde/calendarsupport-20.12.1-x86_64-1.txz:  Upgraded.
kde/cantor-20.12.1-x86_64-1.txz:  Upgraded.
kde/cervisia-20.12.1-x86_64-1.txz:  Upgraded.
kde/dolphin-20.12.1-x86_64-1.txz:  Upgraded.
kde/dolphin-plugins-20.12.1-x86_64-1.txz:  Upgraded.
kde/dragon-20.12.1-x86_64-1.txz:  Upgraded.
kde/elisa-20.12.1-x86_64-1.txz:  Upgraded.
kde/eventviews-20.12.1-x86_64-1.txz:  Upgraded.
kde/ffmpegthumbs-20.12.1-x86_64-1.txz:  Upgraded.
kde/filelight-20.12.1-x86_64-1.txz:  Upgraded.
kde/granatier-20.12.1-x86_64-1.txz:  Upgraded.
kde/grantlee-editor-20.12.1-x86_64-1.txz:  Upgraded.
kde/grantleetheme-20.12.1-x86_64-1.txz:  Upgraded.
kde/gwenview-20.12.1-x86_64-1.txz:  Upgraded.
kde/incidenceeditor-20.12.1-x86_64-1.txz:  Upgraded.
kde/itinerary-20.12.1-x86_64-1.txz:  Upgraded.
kde/juk-20.12.1-x86_64-1.txz:  Upgraded.
kde/k3b-20.12.1-x86_64-1.txz:  Upgraded.
kde/kaddressbook-20.12.1-x86_64-1.txz:  Upgraded.
kde/kalarm-20.12.1-x86_64-1.txz:  Upgraded.
kde/kalarmcal-20.12.1-x86_64-1.txz:  Upgraded.
kde/kalgebra-20.12.1-x86_64-1.txz:  Upgraded.
kde/kalzium-20.12.1-x86_64-1.txz:  Upgraded.
kde/kamera-20.12.1-x86_64-1.txz:  Upgraded.
kde/kamoso-20.12.1-x86_64-1.txz:  Upgraded.
kde/kanagram-20.12.1-x86_64-1.txz:  Upgraded.
kde/kapman-20.12.1-x86_64-1.txz:  Upgraded.
kde/kapptemplate-20.12.1-x86_64-1.txz:  Upgraded.
kde/kate-20.12.1-x86_64-1.txz:  Upgraded.
kde/katomic-20.12.1-x86_64-1.txz:  Upgraded.
kde/kbackup-20.12.1-x86_64-1.txz:  Upgraded.
kde/kblackbox-20.12.1-x86_64-1.txz:  Upgraded.
kde/kblocks-20.12.1-x86_64-1.txz:  Upgraded.
kde/kbounce-20.12.1-x86_64-1.txz:  Upgraded.
kde/kbreakout-20.12.1-x86_64-1.txz:  Upgraded.
kde/kbruch-20.12.1-x86_64-1.txz:  Upgraded.
kde/kcachegrind-20.12.1-x86_64-1.txz:  Upgraded.
kde/kcalc-20.12.1-x86_64-1.txz:  Upgraded.
kde/kcalutils-20.12.1-x86_64-1.txz:  Upgraded.
kde/kcharselect-20.12.1-x86_64-1.txz:  Upgraded.
kde/kcolorchooser-20.12.1-x86_64-1.txz:  Upgraded.
kde/kcron-20.12.1-x86_64-1.txz:  Upgraded.
kde/kde-dev-scripts-20.12.1-x86_64-1.txz:  Upgraded.
kde/kde-dev-utils-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdebugsettings-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdeconnect-kde-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdeedu-data-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdegraphics-mobipocket-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdegraphics-thumbnailers-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdenetwork-filesharing-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdenlive-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdepim-addons-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdepim-runtime-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdesdk-kioslaves-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdesdk-thumbnailers-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdf-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdialog-20.12.1-x86_64-1.txz:  Upgraded.
kde/kdiamond-20.12.1-x86_64-1.txz:  Upgraded.
kde/keditbookmarks-20.12.1-x86_64-1.txz:  Upgraded.
kde/kfind-20.12.1-x86_64-1.txz:  Upgraded.
kde/kfloppy-20.12.1-x86_64-1.txz:  Upgraded.
kde/kfourinline-20.12.1-x86_64-1.txz:  Upgraded.
kde/kgeography-20.12.1-x86_64-1.txz:  Upgraded.
kde/kget-20.12.1-x86_64-1.txz:  Upgraded.
kde/kgoldrunner-20.12.1-x86_64-1.txz:  Upgraded.
kde/kgpg-20.12.1-x86_64-1.txz:  Upgraded.
kde/khangman-20.12.1-x86_64-1.txz:  Upgraded.
kde/khelpcenter-20.12.1-x86_64-1.txz:  Upgraded.
kde/kidentitymanagement-20.12.1-x86_64-1.txz:  Upgraded.
kde/kig-20.12.1-x86_64-1.txz:  Upgraded.
kde/kigo-20.12.1-x86_64-1.txz:  Upgraded.
kde/killbots-20.12.1-x86_64-1.txz:  Upgraded.
kde/kimagemapeditor-20.12.1-x86_64-1.txz:  Upgraded.
kde/kimap-20.12.1-x86_64-1.txz:  Upgraded.
kde/kio-extras-20.12.1-x86_64-1.txz:  Upgraded.
kde/kio-gdrive-20.12.1-x86_64-1.txz:  Upgraded.
kde/kipi-plugins-20.12.1-x86_64-1.txz:  Upgraded.
kde/kirigami-gallery-20.12.1-x86_64-1.txz:  Upgraded.
kde/kiriki-20.12.1-x86_64-1.txz:  Upgraded.
kde/kiten-20.12.1-x86_64-1.txz:  Upgraded.
kde/kitinerary-20.12.1-x86_64-1.txz:  Upgraded.
kde/kjumpingcube-20.12.1-x86_64-1.txz:  Upgraded.
kde/kldap-20.12.1-x86_64-1.txz:  Upgraded.
kde/kleopatra-20.12.1-x86_64-1.txz:  Upgraded.
kde/klickety-20.12.1-x86_64-1.txz:  Upgraded.
kde/klines-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmag-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmahjongg-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmail-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmail-account-wizard-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmailtransport-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmbox-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmime-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmines-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmix-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmousetool-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmouth-20.12.1-x86_64-1.txz:  Upgraded.
kde/kmplot-20.12.1-x86_64-1.txz:  Upgraded.
kde/knavalbattle-20.12.1-x86_64-1.txz:  Upgraded.
kde/knetwalk-20.12.1-x86_64-1.txz:  Upgraded.
kde/knights-20.12.1-x86_64-1.txz:  Upgraded.
kde/knotes-20.12.1-x86_64-1.txz:  Upgraded.
kde/kolf-20.12.1-x86_64-1.txz:  Upgraded.
kde/kollision-20.12.1-x86_64-1.txz:  Upgraded.
kde/kolourpaint-20.12.1-x86_64-1.txz:  Upgraded.
kde/kompare-20.12.1-x86_64-1.txz:  Upgraded.
kde/konqueror-20.12.1-x86_64-1.txz:  Upgraded.
kde/konquest-20.12.1-x86_64-1.txz:  Upgraded.
kde/konsole-20.12.1-x86_64-1.txz:  Upgraded.
kde/kontact-20.12.1-x86_64-1.txz:  Upgraded.
kde/kontactinterface-20.12.1-x86_64-1.txz:  Upgraded.
kde/kontrast-20.12.1-x86_64-1.txz:  Upgraded.
kde/konversation-20.12.1-x86_64-1.txz:  Upgraded.
kde/kopete-20.12.1-x86_64-1.txz:  Upgraded.
kde/korganizer-20.12.1-x86_64-1.txz:  Upgraded.
kde/kosmindoormap-20.12.1-x86_64-1.txz:  Upgraded.
kde/kpat-20.12.1-x86_64-1.txz:  Upgraded.
kde/kpimtextedit-20.12.1-x86_64-1.txz:  Upgraded.
kde/kpkpass-20.12.1-x86_64-1.txz:  Upgraded.
kde/kpmcore-20.12.1-x86_64-1.txz:  Upgraded.
kde/kpublictransport-20.12.1-x86_64-1.txz:  Upgraded.
kde/kqtquickcharts-20.12.1-x86_64-1.txz:  Upgraded.
kde/krdc-20.12.1-x86_64-1.txz:  Upgraded.
kde/kreversi-20.12.1-x86_64-1.txz:  Upgraded.
kde/krfb-20.12.1-x86_64-1.txz:  Upgraded.
kde/kross-interpreters-20.12.1-x86_64-1.txz:  Upgraded.
kde/kruler-20.12.1-x86_64-1.txz:  Upgraded.
kde/kshisen-20.12.1-x86_64-1.txz:  Upgraded.
kde/ksirk-20.12.1-x86_64-1.txz:  Upgraded.
kde/ksmtp-20.12.1-x86_64-1.txz:  Upgraded.
kde/ksnakeduel-20.12.1-x86_64-1.txz:  Upgraded.
kde/kspaceduel-20.12.1-x86_64-1.txz:  Upgraded.
kde/ksquares-20.12.1-x86_64-1.txz:  Upgraded.
kde/kstars-3.5.1-x86_64-1.txz:  Upgraded.
kde/ksudoku-20.12.1-x86_64-1.txz:  Upgraded.
kde/ksystemlog-20.12.1-x86_64-1.txz:  Upgraded.
kde/kteatime-20.12.1-x86_64-1.txz:  Upgraded.
kde/ktimer-20.12.1-x86_64-1.txz:  Upgraded.
kde/ktnef-20.12.1-x86_64-1.txz:  Upgraded.
kde/ktorrent-20.12.1-x86_64-1.txz:  Upgraded.
kde/ktouch-20.12.1-x86_64-1.txz:  Upgraded.
kde/kturtle-20.12.1-x86_64-1.txz:  Upgraded.
kde/kubrick-20.12.1-x86_64-1.txz:  Upgraded.
kde/kwalletmanager-20.12.1-x86_64-1.txz:  Upgraded.
kde/kwave-20.12.1-x86_64-1.txz:  Upgraded.
kde/kwordquiz-20.12.1-x86_64-1.txz:  Upgraded.
kde/libgravatar-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkcddb-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkcompactdisc-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkdcraw-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkdegames-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkdepim-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkeduvocdocument-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkexiv2-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkgapi-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkipi-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkleo-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkmahjongg-20.12.1-x86_64-1.txz:  Upgraded.
kde/libkomparediff2-20.12.1-x86_64-1.txz:  Upgraded.
kde/libksane-20.12.1-x86_64-1.txz:  Upgraded.
kde/libksieve-20.12.1-x86_64-1.txz:  Upgraded.
kde/libktorrent-20.12.1-x86_64-1.txz:  Upgraded.
kde/lokalize-20.12.1-x86_64-1.txz:  Upgraded.
kde/lskat-20.12.1-x86_64-1.txz:  Upgraded.
kde/mailcommon-20.12.1-x86_64-1.txz:  Upgraded.
kde/mailimporter-20.12.1-x86_64-1.txz:  Upgraded.
kde/marble-20.12.1-x86_64-1.txz:  Upgraded.
kde/markdownpart-20.12.1-x86_64-1.txz:  Upgraded.
kde/mbox-importer-20.12.1-x86_64-1.txz:  Upgraded.
kde/messagelib-20.12.1-x86_64-1.txz:  Upgraded.
kde/minuet-20.12.1-x86_64-1.txz:  Upgraded.
kde/okular-20.12.1-x86_64-1.txz:  Upgraded.
kde/palapeli-20.12.1-x86_64-1.txz:  Upgraded.
kde/parley-20.12.1-x86_64-1.txz:  Upgraded.
kde/partitionmanager-20.12.1-x86_64-1.txz:  Upgraded.
kde/picmi-20.12.1-x86_64-1.txz:  Upgraded.
kde/pim-data-exporter-20.12.1-x86_64-1.txz:  Upgraded.
kde/pim-sieve-editor-20.12.1-x86_64-1.txz:  Upgraded.
kde/pimcommon-20.12.1-x86_64-1.txz:  Upgraded.
kde/poxml-20.12.1-x86_64-1.txz:  Upgraded.
kde/print-manager-20.12.1-x86_64-1.txz:  Upgraded.
kde/rocs-20.12.1-x86_64-1.txz:  Upgraded.
kde/spectacle-20.12.1-x86_64-1.txz:  Upgraded.
kde/step-20.12.1-x86_64-1.txz:  Upgraded.
kde/svgpart-20.12.1-x86_64-1.txz:  Upgraded.
kde/sweeper-20.12.1-x86_64-1.txz:  Upgraded.
kde/umbrello-20.12.1-x86_64-1.txz:  Upgraded.
kde/yakuake-20.12.1-x86_64-1.txz:  Upgraded.
kde/zeroconf-ioslave-20.12.1-x86_64-1.txz:  Upgraded.
l/mozjs78-78.6.1esr-x86_64-1.txz:  Upgraded.
xfce/xfce4-screensaver-4.16.0-x86_64-1.txz:  Upgraded.
2021-01-09 08:59:49 +01:00

312 lines
14 KiB
Bash
Executable file

#!/bin/bash
# Copyright 2018 Patrick J. Volkerding, Sebeka, Minnesota, 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.
# make_world for Slackware: rebuilds all the SlackBuild scripts that are
# listed in the given build list.
# Each line needs to look like (for example, and without beginning with "# "):
# a/grep/grep.SlackBuild
# For x11/KDE packages, you may specify a specific package to be built using
# the arguments understood by the SlackBuild. For example:
# kde/kde.SlackBuild kdelibs:kdelibs
# Any line beginning with "#" will be skipped.
# WARNING: This script has the potential to mess up your system.
# It is not recommended to run this on a production machine.
# This script is meant to be used on a fully installed and updated system.
# Using it on a partially installed system may result in broken packages,
# packages with missing features, or build failures. If there are circular
# dependencies, more than one build may be needed to get a correct package.
#
# Slackware is not Gentoo.
# For Amusement Purposes Only.
# Not all SlackBuilds are compatible with this script. In order for a build
# script to work, it needs these features:
# 1) cd into the script directory when run i.e.: cd $(dirname $0) ; CWD=$(pwd)
# 2) Handle $TMP properly (less of an issue if you don't change $TMP)
# 3) Support output package name reporting with PRINT_PACKAGE_NAME=yes
cd $(dirname $0) ; CWD=$(pwd)
# Some SlackBuilds do not work (yet) with a different $TMP setting.
TMP=${TMP:-/tmp}
export TMP
# Where the SlackBuild script puts the built package (i.e., $TMP).
OUTPUT_LOCATION=${OUTPUT_LOCATION:-$TMP}
# Used for logs and lock files.
LOGDIR=$TMP/make_world
# Lockfiles. You might need to purge these before restarting a build.
mkdir -p $LOGDIR/lock
# Set a custom Slackware source directory. By default we assume we are already
# in the source directory.
SLACKWARE_SOURCE_DIRECTORY=${SLACKWARE_SOURCE_DIRECTORY:-}
if [ ! -z "$SLACKWARE_SOURCE_DIRECTORY" ]; then
# Make sure this ends in '/':
if [ ! "$(echo $SLACKWARE_SOURCE_DIRECTORY | rev | cut -b 1)" = "/" ]; then
SLACKWARE_SOURCE_DIRECTORY="${SLACKWARE_SOURCE_DIRECTORY}/"
fi
fi
# To wipe build directories and package creation directories after each
# package is built, set this to anything other than "no". You might need
# to use this if you're short on build space. NOTE: if you use this
# feature, you can NOT run more than one copy of this script at the same
# time! It will wipe build trees for other packages before they can finish.
# Otherwise, file locking is used and you may run as many parallel copies
# of this script as you think will help to speed things along.
WIPE_AFTER_BUILD=${WIPE_AFTER_BUILD:-no}
# This variable is used to tell x11.SlackBuild not to use upgradepkg on the
# built package since this script already does that:
UPGRADE_PACKAGES=${UPGRADE_PACKAGES:-"no"}
export UPGRADE_PACKAGES
# This variable is used to tell kde.SlackBuild not to use upgradepkg on the
# built package since this script already does that:
UPGRADE=${UPGRADE:-"no"}
export UPGRADE
# Be kind, don't hit control-c! If you do, you might leave broken packages,
# logfiles, and locks in $TMP that will cause problems for you later. If you're
# not in a huge hurry to quit, create this file (replace with $TMP if needed):
# /tmp/make_world/lock/abort
# This will cause all instances of make_world.sh to exit when they complete the
# task they are working on.
rm -f $LOGDIR/lock/abort
BUILDLIST=${BUILDLIST:-$LOGDIR/buildlist}
if [ ! -r $BUILDLIST -a ! -r ${BUILDLIST}.lock ]; then
# The buildlist does not exist, so attempt to create one that builds
# everything except for the kernels (the kernel scripts are not compatible
# with make_world.sh, mostly because of the need to reboot the new kernel).
touch ${BUILDLIST} ${BUILDLIST}.lock
echo "Generating list of packages to build in ${BUILDLIST}..."
for script in ${SLACKWARE_SOURCE_DIRECTORY}*/*/*.SlackBuild ; do
# Only add the script if the SlackBuild name matches the directory name:
if [ "$(basename $(echo $script | cut -f 1 -d ' ') .SlackBuild)" = "$(echo $(dirname $(echo $script | cut -f 1 -d ' ')) | rev | cut -f 1 -d / | rev)" ]; then
if [ "$uname -m)" = "x86_64" -a "$(basename $(echo $script | cut -f 1 -d ' '))" = "isapnptools.SlackBuild" ]; then
# Don't try to build isapnptools on x86_64.
continue
fi
echo $script >> $BUILDLIST
fi
done
if [ -r ${SLACKWARE_SOURCE_DIRECTORY}kde/kde.SlackBuild ]; then
echo "${SLACKWARE_SOURCE_DIRECTORY}kde/kde.SlackBuild" >> $BUILDLIST
fi
rm -f ${BUILDLIST}.lock
# Set GEN_LIST_ONLY=yes if you'd like to exit after generating a build list.
# You might want to do this to comment some build scripts out first, or if
# you'd like to sort it into a "magic build order". ;-) This script is pretty
# good at just brute-forcing things, though (with a few runs).
if [ "$GEN_LIST_ONLY" = "yes" ]; then
echo "Generated ${BUILDLIST}. Exiting."
exit 0
fi
fi
if [ -r ${BUILDLIST}.lock ]; then
echo -n "Waiting for ${BUILDLIST}.lock to be removed..."
while [ 0 ]; do
if [ ! -r ${BUILDLIST}.lock ]; then
break
fi
sleep 5
done
echo " done."
fi
echo "Using buildlist $BUILDLIST."
# To use shuffle mode (build packages in a random order each time through),
# pass SHUFFLE=yes (or anything other than "no") to this script.
SHUFFLE=${SHUFFLE:-no}
if [ "$SHUFFLE" = "no" ]; then
SHUF=cat
else
SHUF=shuf
fi
# To keep repeating the build list, set $REPEAT to anything other than "no":
REPEAT=${REPEAT:-no}
# To always rebuild a SlackBuild even if already built packages are found, set
# FORCE_BUILD=yes:
FORCE_BUILD=${FORCE_BUILD:-no}
# Function to do the build:
do_build() {
if [ "$HAVE_GLOBAL_LOCK" = "true" ]; then
# Wait for other builds to complete
echo -n "have global lock, waiting for other builds to complete... "
while [ 0 ]; do
sleep 5
if ! /bin/ls $LOGDIR/lock/*.lock 1> /dev/null 2> /dev/null ; then
echo -n "done, continuing... "
break
fi
done
fi
# If we're trying again, we don't want to leave a failure log in the logs
# directory. But save it just in case...
if [ -r $LOGDIR/$(basename $(echo $buildscript | cut -f 1 -d ' ')).log.failed ]; then
mkdir -p $LOGDIR/faillog-backups
mv $LOGDIR/$(basename $(echo $buildscript | cut -f 1 -d ' ')).log.failed $LOGDIR/faillog-backups
fi
$buildscript &> $LOGDIR/$(basename $(echo $buildscript | cut -f 1 -d ' ')).log
if [ ! $? = 0 ]; then
# Exit code from SlackBuild indicated an error:
echo "$(PRINT_PACKAGE_NAME=foo $buildscript | head -n 1) failed to build."
mv $LOGDIR/$(basename $(echo $buildscript | cut -f 1 -d ' ')).log $LOGDIR/$(basename $(echo $buildscript | cut -f 1 -d ' ')).log.failed
elif [ ! -r $OUTPUT_LOCATION/$(PRINT_PACKAGE_NAME=foo $buildscript | head -n 1) ]; then
# No error code returned from SlackBuild, but the package(s) were not found.
# Possibly the SlackBuild doesn't honor $TMP, and a non-/tmp $TMP variable was set?
echo "$(PRINT_PACKAGE_NAME=foo $buildscript | head -n 1) failed to build."
mv $LOGDIR/$(basename $(echo $buildscript | cut -f 1 -d ' ')).log $LOGDIR/$(basename $(echo $buildscript | cut -f 1 -d ' ')).log.failed
else
# Figure out a progress report to include with the successful build message:
cat $BUILDLIST | grep -v "^$" | grep -v "^#" | sort | uniq | cut -f 1 -d ' ' | rev | cut -f 1 -d / | rev > $LOGDIR/tmp-pkgs-to-build.$$
# OK, we don't know if every *.log is actually finished if we're running
# more than one make_world.sh, but whatever. It's an estimate.
/bin/ls $LOGDIR/*.log | rev | cut -f 2,3 -d . | cut -f 1 -d / | rev > $LOGDIR/tmp-pkgs-built-or-building.$$
NUMTOTAL="$(cat $LOGDIR/tmp-pkgs-to-build.$$ | wc -l)"
NUMBUILT="$(grep -x -f $LOGDIR/tmp-pkgs-built-or-building.$$ $LOGDIR/tmp-pkgs-to-build.$$ | wc -l)"
rm -f $LOGDIR/tmp-pkgs-to-build.$$ $LOGDIR/tmp-pkgs-built-or-building.$$
echo "$(PRINT_PACKAGE_NAME=foo $buildscript | head -n 1) built successfully ($NUMBUILT/$NUMTOTAL)."
for package in $(PRINT_PACKAGE_NAME=foo $buildscript) ; do
upgradepkg --install-new --reinstall $OUTPUT_LOCATION/$package > /dev/null 2>&1
done
# The post-build cleanup is pretty sloppy. It will not clean up all of
# the build-related residue, and it may possibly delete some things that
# this script did not put there. It's also not compatible with running
# more than one copy of make_world.sh simultaneously.
# Think more than twice before using this.
if [ ! "$WIPE_AFTER_BUILD" = "no" ]; then
( cd $TMP
rm -f configure CMakeLists.txt
for findconfigure in */configure ; do
rm -rf "$(dirname $findconfigure)"
done
for findautogen in */autogen.sh ; do
rm -rf "$(dirname $findautogen)"
done
for findcmake in */CMakeLists.txt ; do
rm -rf "$(dirname $findcmake)"
done
for findmake in */Makefile ; do
rm -rf "$(dirname $findmake)"
done
for findmeson in */meson.build ; do
rm -rf "$(dirname $findmeson)"
done
for findpython in */setup.py ; do
rm -rf "$(dirname $findpython)"
done
rm -rf package-*
)
fi
fi
}
# Main loop:
while [ 0 ]; do
# Skip any blank lines or lines in the buildlist that begin with #:
cat $BUILDLIST | grep -v "^$" | grep -v "^#" | $SHUF | while read buildscript ; do
if [ -r $LOGDIR/lock/abort ]; then
echo "Exiting (abort requested)."
exit 0
fi
# If there's a global lock, we have to wait for it to be released:
if [ -r $LOGDIR/lock/lock.global ]; then
HELD_BY="$(cat $LOGDIR/lock/lock.global)"
echo -n "Waiting for global lock release (held by ${HELD_BY})... "
while [ 0 ]; do
sleep 10
if [ ! -r $LOGDIR/lock/lock.global ]; then
echo "released."
break
fi
if [ ! "${HELD_BY}" = "$(cat $LOGDIR/lock/lock.global)" ]; then
HELD_BY="$(cat $LOGDIR/lock/lock.global)"
echo
echo -n "Waiting for global lock release (held by ${HELD_BY})... "
fi
done
fi
echo -n "Working on $buildscript... "
if [ -r $OUTPUT_LOCATION/$(PRINT_PACKAGE_NAME=foo $buildscript | head -n 1) -a $FORCE_BUILD = no ]; then
echo "skipping because built package(s) were found."
continue
fi
# Use flock to only allow one instance of this script to work on a given
# SlackBuild script at a time. If the SlackBuild is already locked, we'll
# just move on to the next one. Yes, you can run more than one copy of this
# script at the same time to speed things up!
#
# See if we need a global lock. Some SlackBuilds are disruptive and other
# builds should not take place until they have completed. For example, perl
# removes itself from the system during the build. Assume that we need a
# global lock for any package that uses removepkg, upgradepkg, slacktrack,
# or trackbuild. Also, you may add the identifier REQUIRE_GLOBAL_LOCK
# anywhere in a SlackBuild script to make it require the global lock.
HAVE_GLOBAL_LOCK=false
if grep -q -e removepkg -e upgradepkg -e slacktrack -e trackbuild -e REQUIRE_GLOBAL_LOCK $(dirname $(echo $buildscript | cut -f 1 -d ' '))/$(basename $(echo $buildscript | cut -f 1 -d ' ')) ; then
# pkgtools, x11, and KDE all trigger the detection above, but none of them
# really need the global lock. So only request the lock if the build
# script is not one of those.
if ! echo "$(basename $(echo $buildscript | cut -f 1 -d ' '))" | grep -q -x -e pkgtools.SlackBuild -e x11.SlackBuild -e kde.SlackBuild ; then
HAVE_GLOBAL_LOCK=true
fi
fi
if [ "$HAVE_GLOBAL_LOCK" = "true" ]; then
( flock 9 || exit 11
echo $(basename $(echo $buildscript | cut -f 1 -d ' ')) >> $LOGDIR/lock/lock.global
do_build
) 9> $LOGDIR/lock/lock.global
# Remove lock file:
rm -f $LOGDIR/lock/lock.global
else
( flock -n 9 || exit 11
do_build
) 9> $LOGDIR/lock/$(basename $(echo $buildscript | cut -f 1 -d ' ')).lock
if [ $? = 11 ]; then
echo "skipping (locked by another make_world.sh instance)."
continue
fi
# Remove lock file:
rm -f $LOGDIR/lock/$(basename $(echo $buildscript | cut -f 1 -d ' ')).lock
fi
done
if [ "$REPEAT" = "no" ]; then
break
else
# Figure out if we skipped everything and exit REPEAT mode if we did:
cat $BUILDLIST | grep -v "^$" | grep -v "^#" | sort | uniq | cut -f 1 -d ' ' | rev | cut -f 1 -d / | rev > $LOGDIR/tmp-pkgs-to-build.$$
/bin/ls $LOGDIR/*.log | rev | cut -f 2,3 -d . | cut -f 1 -d / | rev > $LOGDIR/tmp-pkgs-built-or-building.$$
NUMTOTAL="$(cat $LOGDIR/tmp-pkgs-to-build.$$ | wc -l)"
NUMBUILT="$(grep -x -f $LOGDIR/tmp-pkgs-built-or-building.$$ $LOGDIR/tmp-pkgs-to-build.$$ | wc -l)"
rm -f $LOGDIR/tmp-pkgs-to-build.$$ $LOGDIR/tmp-pkgs-built-or-building.$$
if [ "$NUMTOTAL" = "$NUMBUILT" ]; then
echo "All packages have been built ($NUMBUILT/$NUMTOTAL). Exiting."
break
else
echo "Repeating BUILDLIST since some packages are not built yet ($NUMBUILT/$NUMTOTAL complete)."
fi
fi
done