From 7bb1c73cfaf22d9f2dbc041dcd0114e6322fc89d Mon Sep 17 00:00:00 2001 From: Alad Wenter Date: Sat, 8 Oct 2016 19:34:15 +0200 Subject: libmakepkg: generate all scripts In order for the scripts to be used in testsuites, it is easiest to generate all of them so they are found in the build directory (which may be different to the source directory). Signed-off-by: Alad Wenter Signed-off-by: Allan McRae (cherry picked from commit aca153bfa6b1bcd828f0b35db453bb9fea6a08bf) --- scripts/Makefile.am | 17 ++-- scripts/libmakepkg/util/message.sh | 69 ----------------- scripts/libmakepkg/util/message.sh.in | 69 +++++++++++++++++ scripts/libmakepkg/util/option.sh | 142 ---------------------------------- scripts/libmakepkg/util/option.sh.in | 142 ++++++++++++++++++++++++++++++++++ scripts/libmakepkg/util/util.sh | 85 -------------------- scripts/libmakepkg/util/util.sh.in | 85 ++++++++++++++++++++ scripts/po/POTFILES.in | 2 +- 8 files changed, 306 insertions(+), 305 deletions(-) delete mode 100644 scripts/libmakepkg/util/message.sh create mode 100644 scripts/libmakepkg/util/message.sh.in delete mode 100644 scripts/libmakepkg/util/option.sh create mode 100644 scripts/libmakepkg/util/option.sh.in delete mode 100644 scripts/libmakepkg/util/util.sh create mode 100644 scripts/libmakepkg/util/util.sh.in diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 70f459e2..b83463e6 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -1,6 +1,10 @@ # enforce that all scripts have a --help and --version option AUTOMAKE_OPTIONS = std-options -AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = makepkg-wrapper +AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = \ + makepkg-wrapper \ + pacman-db-upgrade-wrapper \ + pacman-key-wrapper \ + pkgdelta-wrapper SUBDIRS = po @@ -48,11 +52,6 @@ LIBMAKEPKGDIRS = \ tidy \ util -LIBMAKEPKG = \ - libmakepkg/util/message.sh \ - libmakepkg/util/option.sh \ - libmakepkg/util/util.sh - LIBMAKEPKG_IN = \ libmakepkg/lint_package.sh \ libmakepkg/lint_package/build_references.sh \ @@ -93,11 +92,13 @@ LIBMAKEPKG_IN = \ libmakepkg/tidy/upx.sh \ libmakepkg/tidy/zipman.sh \ libmakepkg/util.sh \ + libmakepkg/util/message.sh \ + libmakepkg/util/option.sh \ libmakepkg/util/pkgbuild.sh \ - libmakepkg/util/source.sh + libmakepkg/util/source.sh \ + libmakepkg/util/util.sh LIBMAKEPKG_DIST = \ - $(LIBMAKEPKG) \ $(addsuffix .in, $(LIBMAKEPKG_IN)) COMPLETION_IN = \ diff --git a/scripts/libmakepkg/util/message.sh b/scripts/libmakepkg/util/message.sh deleted file mode 100644 index 341ccf3f..00000000 --- a/scripts/libmakepkg/util/message.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash -# -# message.sh - functions for outputting messages in makepkg -# -# Copyright (c) 2006-2016 Pacman Development Team -# Copyright (c) 2002-2006 by Judd Vinet -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -[[ -n "$LIBMAKEPKG_UTIL_MESSAGE_SH" ]] && return -LIBMAKEPKG_UTIL_MESSAGE_SH=1 - - -colorize() { - # prefer terminal safe colored and bold text when tput is supported - if tput setaf 0 &>/dev/null; then - ALL_OFF="$(tput sgr0)" - BOLD="$(tput bold)" - BLUE="${BOLD}$(tput setaf 4)" - GREEN="${BOLD}$(tput setaf 2)" - RED="${BOLD}$(tput setaf 1)" - YELLOW="${BOLD}$(tput setaf 3)" - else - ALL_OFF="\e[0m" - BOLD="\e[1m" - BLUE="${BOLD}\e[34m" - GREEN="${BOLD}\e[32m" - RED="${BOLD}\e[31m" - YELLOW="${BOLD}\e[33m" - fi - readonly ALL_OFF BOLD BLUE GREEN RED YELLOW -} - -plain() { - local mesg=$1; shift - printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -msg() { - local mesg=$1; shift - printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -msg2() { - local mesg=$1; shift - printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -warning() { - local mesg=$1; shift - printf "${YELLOW}==> $(gettext "WARNING:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} - -error() { - local mesg=$1; shift - printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 -} diff --git a/scripts/libmakepkg/util/message.sh.in b/scripts/libmakepkg/util/message.sh.in new file mode 100644 index 00000000..341ccf3f --- /dev/null +++ b/scripts/libmakepkg/util/message.sh.in @@ -0,0 +1,69 @@ +#!/bin/bash +# +# message.sh - functions for outputting messages in makepkg +# +# Copyright (c) 2006-2016 Pacman Development Team +# Copyright (c) 2002-2006 by Judd Vinet +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +[[ -n "$LIBMAKEPKG_UTIL_MESSAGE_SH" ]] && return +LIBMAKEPKG_UTIL_MESSAGE_SH=1 + + +colorize() { + # prefer terminal safe colored and bold text when tput is supported + if tput setaf 0 &>/dev/null; then + ALL_OFF="$(tput sgr0)" + BOLD="$(tput bold)" + BLUE="${BOLD}$(tput setaf 4)" + GREEN="${BOLD}$(tput setaf 2)" + RED="${BOLD}$(tput setaf 1)" + YELLOW="${BOLD}$(tput setaf 3)" + else + ALL_OFF="\e[0m" + BOLD="\e[1m" + BLUE="${BOLD}\e[34m" + GREEN="${BOLD}\e[32m" + RED="${BOLD}\e[31m" + YELLOW="${BOLD}\e[33m" + fi + readonly ALL_OFF BOLD BLUE GREEN RED YELLOW +} + +plain() { + local mesg=$1; shift + printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + +msg() { + local mesg=$1; shift + printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + +msg2() { + local mesg=$1; shift + printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + +warning() { + local mesg=$1; shift + printf "${YELLOW}==> $(gettext "WARNING:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + +error() { + local mesg=$1; shift + printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} diff --git a/scripts/libmakepkg/util/option.sh b/scripts/libmakepkg/util/option.sh deleted file mode 100644 index 54ba4740..00000000 --- a/scripts/libmakepkg/util/option.sh +++ /dev/null @@ -1,142 +0,0 @@ -#!/bin/bash -# -# option.sh - functions to test if build/packaging options are enabled -# -# Copyright (c) 2009-2016 Pacman Development Team -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -[[ -n "$LIBMAKEPKG_UTIL_OPTION_SH" ]] && return -LIBMAKEPKG_UTIL_OPTION_SH=1 - - -## -# usage : in_opt_array( $needle, $haystack ) -# return : 0 - enabled -# 1 - disabled -# 127 - not found -## -in_opt_array() { - local needle=$1; shift - - local i opt - for (( i = $#; i > 0; i-- )); do - opt=${!i} - if [[ $opt = "$needle" ]]; then - # enabled - return 0 - elif [[ $opt = "!$needle" ]]; then - # disabled - return 1 - fi - done - - # not found - return 127 -} - - -## -# Checks to see if options are present in makepkg.conf or PKGBUILD; -# PKGBUILD options always take precedence. -# -# usage : check_option( $option, $expected_val ) -# return : 0 - matches expected -# 1 - does not match expected -# 127 - not found -## -check_option() { - in_opt_array "$1" ${options[@]} - case $? in - 0) # assert enabled - [[ $2 = y ]] - return ;; - 1) # assert disabled - [[ $2 = n ]] - return - esac - - # fall back to makepkg.conf options - in_opt_array "$1" ${OPTIONS[@]} - case $? in - 0) # assert enabled - [[ $2 = y ]] - return ;; - 1) # assert disabled - [[ $2 = n ]] - return - esac - - # not found - return 127 -} - - -## -# Check if option is present in BUILDENV -# -# usage : check_buildenv( $option, $expected_val ) -# return : 0 - matches expected -# 1 - does not match expected -# 127 - not found -## -check_buildenv() { - in_opt_array "$1" ${BUILDENV[@]} - case $? in - 0) # assert enabled - [[ $2 = "y" ]] - return ;; - 1) # assert disabled - [[ $2 = "n" ]] - return ;; - esac - - # not found - return 127 -} - -## -# Checks to see if options are present in BUILDENV or PKGBUILD; -# PKGBUILD options always take precedence. -# -# usage : check_buildoption( $option, $expected_val ) -# return : 0 - matches expected -# 1 - does not match expected -# 127 - not found -## -check_buildoption() { - in_opt_array "$1" ${options[@]} - case $? in - 0) # assert enabled - [[ $2 = y ]] - return ;; - 1) # assert disabled - [[ $2 = n ]] - return - esac - - in_opt_array "$1" ${BUILDENV[@]} - case $? in - 0) # assert enabled - [[ $2 = y ]] - return ;; - 1) # assert disabled - [[ $2 = n ]] - return - esac - - # not found - return 127 -} diff --git a/scripts/libmakepkg/util/option.sh.in b/scripts/libmakepkg/util/option.sh.in new file mode 100644 index 00000000..54ba4740 --- /dev/null +++ b/scripts/libmakepkg/util/option.sh.in @@ -0,0 +1,142 @@ +#!/bin/bash +# +# option.sh - functions to test if build/packaging options are enabled +# +# Copyright (c) 2009-2016 Pacman Development Team +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +[[ -n "$LIBMAKEPKG_UTIL_OPTION_SH" ]] && return +LIBMAKEPKG_UTIL_OPTION_SH=1 + + +## +# usage : in_opt_array( $needle, $haystack ) +# return : 0 - enabled +# 1 - disabled +# 127 - not found +## +in_opt_array() { + local needle=$1; shift + + local i opt + for (( i = $#; i > 0; i-- )); do + opt=${!i} + if [[ $opt = "$needle" ]]; then + # enabled + return 0 + elif [[ $opt = "!$needle" ]]; then + # disabled + return 1 + fi + done + + # not found + return 127 +} + + +## +# Checks to see if options are present in makepkg.conf or PKGBUILD; +# PKGBUILD options always take precedence. +# +# usage : check_option( $option, $expected_val ) +# return : 0 - matches expected +# 1 - does not match expected +# 127 - not found +## +check_option() { + in_opt_array "$1" ${options[@]} + case $? in + 0) # assert enabled + [[ $2 = y ]] + return ;; + 1) # assert disabled + [[ $2 = n ]] + return + esac + + # fall back to makepkg.conf options + in_opt_array "$1" ${OPTIONS[@]} + case $? in + 0) # assert enabled + [[ $2 = y ]] + return ;; + 1) # assert disabled + [[ $2 = n ]] + return + esac + + # not found + return 127 +} + + +## +# Check if option is present in BUILDENV +# +# usage : check_buildenv( $option, $expected_val ) +# return : 0 - matches expected +# 1 - does not match expected +# 127 - not found +## +check_buildenv() { + in_opt_array "$1" ${BUILDENV[@]} + case $? in + 0) # assert enabled + [[ $2 = "y" ]] + return ;; + 1) # assert disabled + [[ $2 = "n" ]] + return ;; + esac + + # not found + return 127 +} + +## +# Checks to see if options are present in BUILDENV or PKGBUILD; +# PKGBUILD options always take precedence. +# +# usage : check_buildoption( $option, $expected_val ) +# return : 0 - matches expected +# 1 - does not match expected +# 127 - not found +## +check_buildoption() { + in_opt_array "$1" ${options[@]} + case $? in + 0) # assert enabled + [[ $2 = y ]] + return ;; + 1) # assert disabled + [[ $2 = n ]] + return + esac + + in_opt_array "$1" ${BUILDENV[@]} + case $? in + 0) # assert enabled + [[ $2 = y ]] + return ;; + 1) # assert disabled + [[ $2 = n ]] + return + esac + + # not found + return 127 +} diff --git a/scripts/libmakepkg/util/util.sh b/scripts/libmakepkg/util/util.sh deleted file mode 100644 index f9f1c200..00000000 --- a/scripts/libmakepkg/util/util.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/bash -# -# util.sh - general utility functions -# -# Copyright (c) 2006-2016 Pacman Development Team -# Copyright (c) 2002-2006 by Judd Vinet -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -[[ -n "$LIBMAKEPKG_UTIL_UTIL_SH" ]] && return -LIBMAKEPKG_UTIL_UTIL_SH=1 - - -## -# usage : in_array( $needle, $haystack ) -# return : 0 - found -# 1 - not found -## -in_array() { - local needle=$1; shift - local item - for item in "$@"; do - [[ $item = "$needle" ]] && return 0 # Found - done - return 1 # Not Found -} - -# tests if a variable is an array -is_array() { - local v=$1 - local ret=1 - - # this function requires extglob - save current options to restore later - local shellopts=$(shopt -p) - shopt -s extglob - - if [[ $(declare -p "$v") == declare\ -*([[:alnum:]])a*([[:alnum:]])\ * ]]; then - ret=0 - fi - - eval "$shellopts" - return $ret -} - -# Canonicalize a directory path if it exists -canonicalize_path() { - local path="$1"; - - if [[ -d $path ]]; then - ( - cd_safe "$path" - pwd -P - ) - else - printf "%s\n" "$path" - fi -} - -dir_is_empty() { - ( - shopt -s dotglob nullglob - files=("$1"/*) - (( ${#files} == 0 )) - ) -} - -cd_safe() { - if ! cd "$1"; then - error "$(gettext "Failed to change to directory %s")" "$1" - plain "$(gettext "Aborting...")" - exit 1 - fi -} diff --git a/scripts/libmakepkg/util/util.sh.in b/scripts/libmakepkg/util/util.sh.in new file mode 100644 index 00000000..f9f1c200 --- /dev/null +++ b/scripts/libmakepkg/util/util.sh.in @@ -0,0 +1,85 @@ +#!/bin/bash +# +# util.sh - general utility functions +# +# Copyright (c) 2006-2016 Pacman Development Team +# Copyright (c) 2002-2006 by Judd Vinet +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +[[ -n "$LIBMAKEPKG_UTIL_UTIL_SH" ]] && return +LIBMAKEPKG_UTIL_UTIL_SH=1 + + +## +# usage : in_array( $needle, $haystack ) +# return : 0 - found +# 1 - not found +## +in_array() { + local needle=$1; shift + local item + for item in "$@"; do + [[ $item = "$needle" ]] && return 0 # Found + done + return 1 # Not Found +} + +# tests if a variable is an array +is_array() { + local v=$1 + local ret=1 + + # this function requires extglob - save current options to restore later + local shellopts=$(shopt -p) + shopt -s extglob + + if [[ $(declare -p "$v") == declare\ -*([[:alnum:]])a*([[:alnum:]])\ * ]]; then + ret=0 + fi + + eval "$shellopts" + return $ret +} + +# Canonicalize a directory path if it exists +canonicalize_path() { + local path="$1"; + + if [[ -d $path ]]; then + ( + cd_safe "$path" + pwd -P + ) + else + printf "%s\n" "$path" + fi +} + +dir_is_empty() { + ( + shopt -s dotglob nullglob + files=("$1"/*) + (( ${#files} == 0 )) + ) +} + +cd_safe() { + if ! cd "$1"; then + error "$(gettext "Failed to change to directory %s")" "$1" + plain "$(gettext "Aborting...")" + exit 1 + fi +} diff --git a/scripts/po/POTFILES.in b/scripts/po/POTFILES.in index 3ac5a438..36d61f78 100644 --- a/scripts/po/POTFILES.in +++ b/scripts/po/POTFILES.in @@ -46,7 +46,7 @@ scripts/libmakepkg/tidy/staticlibs.sh.in scripts/libmakepkg/tidy/strip.sh.in scripts/libmakepkg/tidy/upx.sh.in scripts/libmakepkg/tidy/zipman.sh.in -scripts/libmakepkg/util/message.sh +scripts/libmakepkg/util/message.sh.in scripts/libmakepkg/util/source.sh.in scripts/library/output_format.sh scripts/library/parseopts.sh -- cgit v1.2.3-70-g09d2