aboutsummaryrefslogtreecommitdiff
path: root/src/recipes/use-current-kernel.sh
diff options
context:
space:
mode:
authorSlack Coder <slackcoder@server.ky>2024-06-10 14:28:02 -0500
committerSlack Coder <slackcoder@server.ky>2024-06-10 14:33:13 -0500
commite5ad4e9c76a40013346ff7aef982450c0e00deef (patch)
treee5ff5205ed731221900c1f3166ec3196585a8bc1 /src/recipes/use-current-kernel.sh
parentb4538dfc0a1ec88b42399dd79f28aafe26d1ed90 (diff)
downloadslack-autoupdate-e5ad4e9c76a40013346ff7aef982450c0e00deef.tar.xz
Simplify slack-autoupdateHEADmaster
Reduce the lines of code by using bash functions to remove repetition. The functions define the different packages sources to check with the expected format given as comment in the file. It will be now to add and remove package sources.
Diffstat (limited to 'src/recipes/use-current-kernel.sh')
-rw-r--r--src/recipes/use-current-kernel.sh156
1 files changed, 78 insertions, 78 deletions
diff --git a/src/recipes/use-current-kernel.sh b/src/recipes/use-current-kernel.sh
index 50b08e7..6673bfb 100644
--- a/src/recipes/use-current-kernel.sh
+++ b/src/recipes/use-current-kernel.sh
@@ -1,92 +1,92 @@
-# Download kernel updates from Slackware Current for a stable release.
-#
-# For this to work, make sure the kernel packages are blacklisted in
-# /etc/slackpkg/blacklist.
-#
-# kernel-generic.*
-# kernel-huge.*
-# kernel-modules.*
-# kernel-source.*
-#
-# This script uses an unusual pattern for running commands on exit, similar to
-# Golang's defer. These will not be run when the script is stopped with
-# Control+c.
-#
-# D="[command]; $D"; trap "$D" EXIT
-#
+slackware_current_kernel_source() {
+ # Download kernel updates from Slackware Current for a stable release.
+ #
+ # For this to work, make sure the kernel packages are blacklisted in
+ # /etc/slackpkg/blacklist.
+ #
+ # kernel-generic.*
+ # kernel-huge.*
+ # kernel-modules.*
+ # kernel-source.*
+ #
+ # This script uses an unusual pattern for running commands on exit, similar to
+ # Golang's defer. These will not be run when the script is stopped with
+ # Control+c.
+ #
+ # D="[command]; $D"; trap "$D" EXIT
+ #
-echo "Checking kernel updates from Slackware Current (slackpkg)..."
+ local staging_dir="$1"
+ local update_info="$2"
-# Get Slackware version.
-source /etc/os-release
+ # Get the system's Slackware version.
+ source /etc/os-release
-SOURCE=$(sed -n '
- # Remove leading and trailing blanks
- s/^[[:blank:]]*//
- s/[[:blank:]]*$//
- # Only one token is allowed per line
- /[[:blank:]]/d
- # A single solidus should end the URI
- s,[/]*$,/,
- # Print the lines beginning with one of the URI schemes we look for
- \@^file://@p
- \@^cdrom://@p
- \@^local://@p
- \@^https\{0,1\}://@p
- \@^ftps\{0,1\}://@p' /etc/slackpkg/mirrors)
-SOURCE="$(echo $SOURCE | sed "s/-$VERSION/-current/")"
+ local mirror=$(sed -n '
+ # Remove leading and trailing blanks
+ s/^[[:blank:]]*//
+ s/[[:blank:]]*$//
+ # Only one token is allowed per line
+ /[[:blank:]]/d
+ # A single solidus should end the URI
+ s,[/]*$,/,
+ # Print the lines beginning with one of the URI schemes we look for
+ \@^file://@p
+ \@^cdrom://@p
+ \@^local://@p
+ \@^https\{0,1\}://@p
+ \@^ftps\{0,1\}://@p' /etc/slackpkg/mirrors)
+ mirror="$(echo $mirror | sed "s/-$VERSION/-current/")"
-yes y | slackpkg -mirror="$SOURCE" -batch=on -default_answer=yes update
-D="yes | slackpkg -batch=on -default_answer=yes update"; trap "$D" EXIT
+ yes y | slackpkg -mirror="$mirror" -batch=on -default_answer=yes update
+ D="yes | slackpkg -batch=on -default_answer=yes update"; trap "$D" EXIT
-PACKAGE_UPDATES="$(mktemp /tmp/slack-autoupdate.XXXXXX)"
-D="rm -f ${PACKAGE_UPDATES}; $D"; trap "$D" EXIT
+ local package_updates="$(mktemp /tmp/slack-autoupdate.XXXXXX)"
+ D="rm -f ${package_updates}; $D"; trap "$D" EXIT
-mv /etc/slackpkg/blacklist /etc/slackpkg/blacklist.orig
-touch /etc/slackpkg/blacklist
-D="mv -f /etc/slackpkg/blacklist.orig /etc/slackpkg/blacklist; $D"; trap "$D" EXIT
+ mv /etc/slackpkg/blacklist /etc/slackpkg/blacklist.orig
+ touch /etc/slackpkg/blacklist
+ D="mv -f /etc/slackpkg/blacklist.orig /etc/slackpkg/blacklist; $D"; trap "$D" EXIT
-OUTPUT="$(slackpkg -batch=on -default_answer=n upgrade kernel)" || exit_code="$?"
-if [ $exit_code -ne 0 ] && [ $exit_code -ne 20 ] && [ $exit_code -ne 100 ]; then
+ local output="$(slackpkg -batch=on -default_answer=n upgrade kernel)" || exit_code="$?"
# slackpkg has several safe exit codes.
- exit exit_code
-fi
+ if [ $exit_code -ne 0 ] && [ $exit_code -ne 20 ] && [ $exit_code -ne 100 ]; then
+ exit exit_code
+ fi
-echo "$OUTPUT" \
- | grep "\.t.z$" \
- | tee "$PACKAGE_UPDATES"
-if [ ! -s "$PACKAGE_UPDATES" ]; then
- # No updates
- exit 0
-fi
+ echo "$output" \
+ | grep "\.t.z$" \
+ | tee "$package_updates"
+ if [ ! -s "$package_updates" ]; then
+ # No updates
+ exit 0
+ fi
-while read PKG; do
- PKG_URL="$(
- grep "${PKG}$" /var/lib/slackpkg/CHECKSUMS.md5 \
- | tr -s ' ' \
- | cut -f 2 -d ' '
- )" || exit "$?"
+ while read PKG; do
+ PKG_URL="$(
+ grep "${PKG}$" /var/lib/slackpkg/CHECKSUMS.md5 \
+ | tr -s ' ' \
+ | cut -f 2 -d ' '
+ )" || exit "$?"
- wget \
- --directory-prefix="$STAGING_DIR" \
- "${SOURCE}${PKG_URL}" \
- "${SOURCE}${PKG_URL}.asc" \
- || exit 1
-done <"$PACKAGE_UPDATES"
+ wget \
+ --directory-prefix="$STAGING_DIR" \
+ "${mirror}${PKG_URL}" \
+ "${mirror}${PKG_URL}.asc" \
+ || exit 1
+ done <"$package_updates"
-if ! gpg2 --verify-files "$STAGING_DIR"/kernel-*.asc; then
- echo "gpg verification failed"
- exit 1
-fi
+ if ! gpg2 --verify-files "$STAGING_DIR"/kernel-*.asc; then
+ echo "gpg verification failed"
+ exit 1
+ fi
-(
- # Redirect this subshell's standard output to info file.
- exec 1>>"$UPDATE_INFO"
+ (
+ # Redirect this subshell's standard output to info file.
+ exec 1>>"$update_info"
- echo "## Slackware current kernel updates"
- echo
- while read PKG; do
- echo " - $PKG"
- done <"$PACKAGE_UPDATES"
- echo
-)
+ while read PKG; do
+ echo " - $PKG"
+ done <"$package_updates"
+ )
+}