From 0f4e89c26bf72d4314bf7b7f5feac72917bfbec2 Mon Sep 17 00:00:00 2001 From: EnumDev Date: Fri, 3 Apr 2026 20:04:53 +0300 Subject: [PATCH] Switch to new download format and update package scripts --- pkg.info | 23 +++++++-- post_install.sh | 13 +++-- post_remove.sh | 13 +++-- post_update.sh | 10 ++++ .../avoid-incompatible-pointer-types.patch | 48 +++++++++++++++++++ source.sh | 28 ++++++----- 6 files changed, 107 insertions(+), 28 deletions(-) create mode 100644 post_update.sh create mode 100644 source-files/avoid-incompatible-pointer-types.patch diff --git a/pkg.info b/pkg.info index 1ece245..8699ff1 100644 --- a/pkg.info +++ b/pkg.info @@ -1,11 +1,24 @@ name: zsh description: A powerful interactive shell -version: 5.9 -revision: 2 +version: "5.9" +revision: 3 url: https://www.zsh.org/ license: custom +maintainers: + - enumdev@enumerated.dev architecture: any -keep: ["etc/zsh/"] -make_depends: ["texinfo","libcap","gdbm","libcap"] -provides: ["sh"] type: source +keep: + - etc/zsh/ +make_depends: + - texinfo + - libcap + - gdbm + - libcap +provides: + - sh +downloads: + - url: https://downloads.sourceforge.net/project/zsh/zsh/${BPM_PKG_VERSION}/zsh-${BPM_PKG_VERSION}.tar.xz + extract_to: ${BPM_SOURCE} + extract_strip_components: 1 + checksum: 9b8d1ecedd5b5e81fbf1918e876752a7dd948e05c1a0dba10ab863842d45acd5 diff --git a/post_install.sh b/post_install.sh index ed0dae4..473d17c 100644 --- a/post_install.sh +++ b/post_install.sh @@ -1,7 +1,10 @@ -#!/bin/bash +#!/bin/sh -SHELL="/bin/zsh" +SHELLS="/bin/zsh /usr/bin/zsh" -if ! grep "${SHELL}" "$BPM_ROOT"/etc/shells; then - echo "${SHELL}" | tee -a "$BPM_ROOT"/etc/shells -fi +for _shell in $SHELLS; do + if ! grep -q "^${_shell}\$" /etc/shells; then + echo "Adding '$_shell' to /etc/shells..." + echo "$_shell" | tee -a /etc/shells 1>/dev/null + fi +done diff --git a/post_remove.sh b/post_remove.sh index 3ee42de..201617b 100644 --- a/post_remove.sh +++ b/post_remove.sh @@ -1,7 +1,10 @@ -#!/bin/bash +#!/bin/sh -SHELL="/bin/zsh" +SHELLS="/bin/zsh /usr/bin/zsh" -if grep "${SHELL}" "$BPM_ROOT"/etc/shells; then - sed -i "\|${SHELL}|d" "$BPM_ROOT"/etc/shells -fi +for _shell in $SHELLS; do + if grep -q "^${_shell}\$" /etc/shells; then + echo "Removing '$_shell' from /etc/shells..." + sed -i "\|^${_shell}\$|d" /etc/shells + fi +done diff --git a/post_update.sh b/post_update.sh new file mode 100644 index 0000000..473d17c --- /dev/null +++ b/post_update.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +SHELLS="/bin/zsh /usr/bin/zsh" + +for _shell in $SHELLS; do + if ! grep -q "^${_shell}\$" /etc/shells; then + echo "Adding '$_shell' to /etc/shells..." + echo "$_shell" | tee -a /etc/shells 1>/dev/null + fi +done diff --git a/source-files/avoid-incompatible-pointer-types.patch b/source-files/avoid-incompatible-pointer-types.patch new file mode 100644 index 0000000..1a9d32d --- /dev/null +++ b/source-files/avoid-incompatible-pointer-types.patch @@ -0,0 +1,48 @@ +From 4c89849c98172c951a9def3690e8647dae76308f Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Fri, 8 Dec 2023 21:58:07 +0100 +Subject: [PATCH] 52383: Avoid incompatible pointer types in terminfo global + variable checks + +--- + configure.ac | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 2a8221e1f..2871dcb7c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1768,27 +1768,27 @@ if test x$zsh_cv_path_term_header != xnone; then + fi + + AC_MSG_CHECKING(if boolcodes is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = boolcodes; puts(*test);]])],[AC_DEFINE(HAVE_BOOLCODES) boolcodes=yes],[boolcodes=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)boolcodes; puts(*test);]])],[AC_DEFINE(HAVE_BOOLCODES) boolcodes=yes],[boolcodes=no]) + AC_MSG_RESULT($boolcodes) + + AC_MSG_CHECKING(if numcodes is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = numcodes; puts(*test);]])],[AC_DEFINE(HAVE_NUMCODES) numcodes=yes],[numcodes=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)numcodes; puts(*test);]])],[AC_DEFINE(HAVE_NUMCODES) numcodes=yes],[numcodes=no]) + AC_MSG_RESULT($numcodes) + + AC_MSG_CHECKING(if strcodes is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = strcodes; puts(*test);]])],[AC_DEFINE(HAVE_STRCODES) strcodes=yes],[strcodes=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)strcodes; puts(*test);]])],[AC_DEFINE(HAVE_STRCODES) strcodes=yes],[strcodes=no]) + AC_MSG_RESULT($strcodes) + + AC_MSG_CHECKING(if boolnames is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = boolnames; puts(*test);]])],[AC_DEFINE(HAVE_BOOLNAMES) boolnames=yes],[boolnames=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)boolnames; puts(*test);]])],[AC_DEFINE(HAVE_BOOLNAMES) boolnames=yes],[boolnames=no]) + AC_MSG_RESULT($boolnames) + + AC_MSG_CHECKING(if numnames is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = numnames; puts(*test);]])],[AC_DEFINE(HAVE_NUMNAMES) numnames=yes],[numnames=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)numnames; puts(*test);]])],[AC_DEFINE(HAVE_NUMNAMES) numnames=yes],[numnames=no]) + AC_MSG_RESULT($numnames) + + AC_MSG_CHECKING(if strnames is available) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = strnames; puts(*test);]])],[AC_DEFINE(HAVE_STRNAMES) strnames=yes],[strnames=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)strnames; puts(*test);]])],[AC_DEFINE(HAVE_STRNAMES) strnames=yes],[strnames=no]) + AC_MSG_RESULT($strnames) + + dnl There are apparently defective terminal library headers on some diff --git a/source.sh b/source.sh index d494775..924cc25 100644 --- a/source.sh +++ b/source.sh @@ -2,14 +2,11 @@ # BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE # BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT -DOWNLOAD="https://sourceforge.net/projects/zsh/files/zsh/${BPM_PKG_VERSION}/zsh-${BPM_PKG_VERSION}.tar.xz/download" -FILENAME="${DOWNLOAD##*/}" - # The prepare function is executed in the root of the temp directory -# This function is used for downloading files and putting them into the correct location +# This function is used for putting downloaded files to the correct location or applying patches prepare() { - wget "$DOWNLOAD" - tar -xvf "$FILENAME" --strip-components=1 -C "$BPM_SOURCE" + cd "$BPM_SOURCE" + patch -Np1 -i "$BPM_WORKDIR"/avoid-incompatible-pointer-types.patch } # The build function is executed in the source directory @@ -28,19 +25,24 @@ build() { # The check function is executed in the source directory # This function is used to run tests to verify the package has been compiled correctly check() { - make check + HOME="$BPM_WORKDIR" make check } # The package function is executed in the source directory # This function is used to move the compiled files into the output directory package() { make DESTDIR="$BPM_OUTPUT" install - mkdir -p "$BPM_OUTPUT"/usr/share/{info,doc/zs + + # Install package documentation make DESTDIR="$BPM_OUTPUT" infodir=/usr/share/info install.info make DESTDIR="$BPM_OUTPUT" htmldir=/usr/share/doc/zsh/html install.html - mkdir -p "$BPM_OUTPUT"/usr/share/doc/zsh/ - install -v -m644 zsh.{html,txt} Etc/FAQ "$BPM_OUTPUT"/usr/share/doc/zsh - install -Dm 644 ../zprofile "$BPM_OUTPUT"/etc/zsh/zprofile - install -Dm 644 ../zshrc "$BPM_OUTPUT"/etc/zsh/zshrc - install -Dm 644 LICENCE "$BPM_OUTPUT"/usr/share/licenses/zsh/COPYING + install -m644 zsh.{html,txt} Etc/FAQ -t "$BPM_OUTPUT"/usr/share/doc/zsh + + # Install default zsh config files + install -d "$BPM_OUTPUT"/etc/zsh + install -m644 "$BPM_WORKDIR"/zprofile "$BPM_OUTPUT"/etc/zsh/zprofile + install -m644 "$BPM_WORKDIR"/zshrc "$BPM_OUTPUT"/etc/zsh/zshrc + + # Install package license + install -Dm644 "$BPM_SOURCE"/LICENCE "$BPM_OUTPUT"/usr/share/licenses/zsh/COPYING }