mirror of
git://slackware.nl/current.git
synced 2024-12-27 09:59:16 +01:00
b6d2c7f5fa
a/efibootmgr-18-x86_64-1.txz: Upgraded. a/grub-2.12-x86_64-16.txz: Rebuilt. Long ago, we began giving all the scripts in /etc/grub.d/ the .new treatment to prevent local customizations from being overwritten with a package upgrade. But, this no longer appears to be a good idea, especially if we're ever going to offer the possibility to automate grub-install and grub-update. So, we are no longer going to preserve the contents of these files when the grub package is upgraded. We *will* however preserve the existing permissions, so you'll be able to turn off scripts that you don't want running, and you'll be able to make new scripts, or make edited and renamed copies of the scripts shipped in this package, so there's no real loss of functionality here. It looks like 40_custom is intended to be locally edited, so we make an exception and do not overwrite that one. d/python-setuptools-74.1.2-x86_64-1.txz: Upgraded. kde/okteta-0.26.17-x86_64-1.txz: Upgraded. l/gobject-introspection-1.80.1-x86_64-2.txz: Rebuilt. Fix running against python-setuptools-74.1.2: [PATCH] giscanner: remove dependency on distutils.msvccompiler. l/python-importlib_metadata-8.5.0-x86_64-1.txz: Upgraded. n/curl-8.10.0-x86_64-1.txz: Upgraded.
264 lines
8.9 KiB
Bash
Executable file
264 lines
8.9 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Copyright 2013, 2016, 2017, 2018, 2019, 2023, 2024 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.
|
|
|
|
# Modified 2016 by Eric Hameleers <alien@slackware.com> for Slackware Live Edition.
|
|
|
|
cd $(dirname $0) ; CWD=$(pwd)
|
|
|
|
PKGNAM=grub
|
|
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
|
# Better to use _ than ~ in the package filenames version:
|
|
PKGVER=$(echo $VERSION | tr '~' '_')
|
|
BUILD=${BUILD:-16}
|
|
|
|
# If you use stack-protector, then grub will not work with legacy BIOS:
|
|
STACKPROTECT=${STACKPROTECT:---enable-stack-protector=no}
|
|
|
|
# Automatically determine the architecture we're building on:
|
|
if [ -z "$ARCH" ]; then
|
|
case "$(uname -m)" in
|
|
i?86) ARCH=i686 ;;
|
|
arm*) readelf /usr/bin/file -A | grep -E -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
|
|
|
|
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
|
|
# the name of the created package would be, and then exit. This information
|
|
# could be useful to other scripts.
|
|
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
|
|
echo "$PKGNAM-$PKGVER-$ARCH-$BUILD.txz"
|
|
exit 0
|
|
fi
|
|
|
|
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
|
|
|
|
if [ "$ARCH" = "i686" ]; then
|
|
SLKCFLAGS="-mtune=generic"
|
|
EFI32_FLAGS=" --with-platform=efi --target=i386 --program-prefix= "
|
|
LIBDIRSUFFIX=""
|
|
elif [ "$ARCH" = "x86_64" ]; then
|
|
SLKCFLAGS="-mtune=generic"
|
|
EFI32_FLAGS=" --with-platform=efi --target=i386 --program-prefix= "
|
|
EFI_FLAGS=" --with-platform=efi --target=x86_64 --program-prefix= "
|
|
LIBDIRSUFFIX="64"
|
|
else
|
|
SLKCFLAGS=""
|
|
LIBDIRSUFFIX=""
|
|
fi
|
|
|
|
# Don't use icecream:
|
|
PATH=$(echo $PATH | sed "s|/usr/libexec/icecc/bin||g" | tr -s : | sed "s/^://g" | sed "s/:$//g")
|
|
|
|
TMP=${TMP:-/tmp}
|
|
PKG=$TMP/package-$PKGNAM
|
|
|
|
rm -rf $PKG
|
|
mkdir -p $TMP $PKG
|
|
|
|
cd $TMP
|
|
rm -rf $PKGNAM-$VERSION
|
|
tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
|
|
cd $PKGNAM-$VERSION || exit 1
|
|
|
|
chown -R root:root .
|
|
find . \
|
|
\( -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 {} \+
|
|
|
|
# Support DejaVuSansMono font (dejavusansmono.pf2) by default:
|
|
cat $CWD/grub.dejavusansmono.gfxterm.font.diff | patch -p1 --verbose || exit 1
|
|
|
|
# Fix alignment error with gcc8:
|
|
cat $CWD/0198-align-struct-efi_variable-better.patch | patch -p1 --verbose || exit 1
|
|
|
|
# Skip processing any files in /etc/grub.d/ that end in .new or .orig:
|
|
cat $CWD/0001-skip-new-and-orig-files-in-etc-grub.d.patch | patch -p1 --verbose || exit 1
|
|
|
|
# From Arch, add a couple more GRUB_COLOR options:
|
|
cat $CWD/0001-00_header-add-GRUB_COLOR_-variables.patch | patch -p1 --verbose || exit 1
|
|
|
|
# Also from Arch, support drop-in config bits in /etc/default/grub.d/:
|
|
cat $CWD/0003-support-dropins-for-default-configuration.patch | patch -p1 --verbose || exit 1
|
|
|
|
# Fix 2.12 release with upstream commit (won't compile otherwise):
|
|
cat $CWD/b835601c7639ed1890f2d3db91900a8506011a8e.patch | patch -p1 --verbose || exit 1
|
|
|
|
# For Slackware, opt-out of having our operating system renamed:
|
|
cat $CWD/10_linux.osname.patch | patch -p1 --verbose || exit 1
|
|
|
|
# Allow defining an initrd fallback name with the
|
|
# GRUB_INITRD_FALLBACK_NAME variable in /etc/default/grub.
|
|
# Commented out by default.
|
|
cat $CWD/0004-initrd_fallback_name.patch | patch -p1 --verbose || exit 1
|
|
|
|
# Support displaying only kernels that are files, only kernels that are
|
|
# symlinks, or both. This is set with the GRUB_DISPLAY_KERNEL_FILETYPES
|
|
# variable in /etc/default/grub:
|
|
cat $CWD/0005-GRUB_DISPLAY_KERNEL_FILETYPES.patch | patch -p1 --verbose || exit 1
|
|
|
|
# Add a warning to the README in /etc/grub.d/ so that users know that the
|
|
# standard files in here will be overwritten with every upgrade:
|
|
cat $CWD/0006-warn-grub.d-overwrites-docs.patch | patch -p1 --verbose || exit 1
|
|
|
|
# Still won't compile. Someday they'll remember how to cut a new release.
|
|
touch grub-core/extra_deps.lst
|
|
|
|
# Regenerate build system to fix dependency on outdated automake:
|
|
autoreconf -vif
|
|
|
|
build_grub() {
|
|
EFI_DO="$*"
|
|
# Configure:
|
|
CFLAGS="$SLKCFLAGS" \
|
|
./configure \
|
|
--prefix=/usr \
|
|
--libdir=/usr/lib${LIBDIRSUFFIX} \
|
|
--sysconfdir=/etc \
|
|
--localstatedir=/var \
|
|
--infodir=/usr/info \
|
|
--mandir=/usr/man \
|
|
--disable-werror \
|
|
--with-dejavufont=/usr/share/fonts/TTF/DejaVuSans.ttf \
|
|
$STACKPROTECT \
|
|
$EFI_DO || exit 1
|
|
|
|
# Build and install:
|
|
make clean || exit 1
|
|
make $NUMJOBS || make || exit 1
|
|
make install DESTDIR=$PKG || exit 1
|
|
|
|
# Clear $EFI_DO :
|
|
unset EFI_DO
|
|
}
|
|
|
|
# Build 32bit and 64bit efi targets if requested:
|
|
if [ -n "$EFI32_FLAGS" ]; then
|
|
build_grub $EFI32_FLAGS || exit 1
|
|
fi
|
|
if [ -n "$EFI_FLAGS" ]; then
|
|
build_grub $EFI_FLAGS || exit 1
|
|
fi
|
|
# Always end with regular build:
|
|
build_grub || exit 1
|
|
|
|
## NOT USED (but we'll leave the file here for now)
|
|
## Add custom 09_slackware_linux config. Thanks to Richard Cranium for the
|
|
## initial version, and Daedra for making it POSIX compliant:
|
|
#cp -a $CWD/09_slackware_linux $PKG/etc/grub.d/09_slackware_linux
|
|
#chown root:root $PKG/etc/grub.d/09_slackware_linux
|
|
#chmod 755 $PKG/etc/grub.d/09_slackware_linux
|
|
|
|
# Preserve files in /etc/grub.d/:
|
|
for file in $PKG/etc/grub.d/*_* ; do
|
|
mv ${file} ${file}.new
|
|
done
|
|
|
|
# Add an update-grub script ala Ubuntu:
|
|
cp -a $CWD/update-grub $PKG/usr/sbin/update-grub
|
|
chown root:root $PKG/usr/sbin/update-grub
|
|
chmod 755 $PKG/usr/sbin/update-grub
|
|
|
|
# Since every other grub command is of the form "grub-{command}", add a symlink
|
|
# so that "grub-update" also works:
|
|
ln -sf update-grub $PKG/usr/sbin/grub-update
|
|
|
|
# Strip binaries:
|
|
( cd $PKG
|
|
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
|
|
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
|
|
)
|
|
|
|
# Put bash-completion file in system directory:
|
|
mkdir -p $PKG/usr/share/bash-completion/completions/
|
|
mv $PKG/etc/bash_completion.d/grub \
|
|
$PKG/usr/share/bash-completion/completions/grub
|
|
rmdir --parents $PKG/etc/bash_completion.d 2>/dev/null
|
|
|
|
# Install default options file:
|
|
mkdir -p $PKG/etc/default/grub.d
|
|
cat $CWD/etc.default.grub > $PKG/etc/default/grub.new
|
|
# Add a hint:
|
|
echo "Files in this directory must end in .cfg to be processed." > $PKG/etc/default/grub.d/README
|
|
|
|
# Create a directory for grub.cfg:
|
|
mkdir -p $PKG/boot/grub
|
|
|
|
# Add fonts, if found on the system:
|
|
FONT_SIZE=${FONT_SIZE:-19}
|
|
if [ -r /usr/share/fonts/TTF/unifont.ttf ]; then
|
|
$PKG/usr/bin/grub-mkfont -o $PKG/usr/share/grub/unifont.pf2 -abv \
|
|
-s $FONT_SIZE /usr/share/fonts/TTF/unifont.ttf
|
|
fi
|
|
if [ -r /usr/share/fonts/TTF/DejaVuSansMono.ttf ]; then
|
|
$PKG/usr/bin/grub-mkfont -o $PKG/usr/share/grub/dejavusansmono.pf2 -abv \
|
|
-s $FONT_SIZE /usr/share/fonts/TTF/DejaVuSansMono.ttf
|
|
fi
|
|
|
|
# Add a documentation directory:
|
|
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
|
|
cp -a \
|
|
AUTHORS BUGS COPYING* INSTALL NEWS README* THANKS TODO \
|
|
$PKG/usr/doc/${PKGNAM}-$VERSION
|
|
|
|
# Compress and if needed symlink the man pages:
|
|
if [ -d $PKG/usr/man ]; then
|
|
( cd $PKG/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
|
|
|
|
# Compress info files, if any:
|
|
if [ -d $PKG/usr/info ]; then
|
|
( cd $PKG/usr/info
|
|
rm -f dir
|
|
gzip -9 *
|
|
)
|
|
fi
|
|
|
|
# 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/${PKGNAM}-$VERSION)
|
|
cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
|
|
touch -r ChangeLog $DOCSDIR/ChangeLog
|
|
fi
|
|
|
|
mkdir -p $PKG/install
|
|
cat $CWD/doinst.sh > $PKG/install/doinst.sh
|
|
cat $CWD/slack-desc > $PKG/install/slack-desc
|
|
|
|
cd $PKG
|
|
/sbin/makepkg -l y -c n $TMP/$PKGNAM-$PKGVER-$ARCH-$BUILD.txz
|
|
|