diff options
Diffstat (limited to 'db-functions')
-rw-r--r-- | db-functions | 119 |
1 files changed, 51 insertions, 68 deletions
diff --git a/db-functions b/db-functions index 6aaab98..f78ade8 100644 --- a/db-functions +++ b/db-functions @@ -6,8 +6,7 @@ CARCH=$(. "$(librelib conf.sh)"; load_conf makepkg.conf; echo "$CARCH") # Useful functions UMASK="" set_umask () { - [ "$UMASK" == "" ] && UMASK="$(umask)" - export UMASK + export UMASK="${UMASK:-$(umask)}" umask 002 } @@ -26,7 +25,7 @@ mv_acl() { # set up general environment WORKDIR=$(mktemp -dt "${0##*/}.XXXXXXXXXX") -if [ -n "${SVNUSER}" ]; then +if [[ -n ${SVNUSER} ]]; then setfacl -m u:"${SVNUSER}":rwx "${WORKDIR}" setfacl -m d:u:"${USER}":rwx "${WORKDIR}" setfacl -m d:u:"${SVNUSER}":rwx "${WORKDIR}" @@ -56,7 +55,7 @@ script_lock() { script_unlock() { local LOCKDIR="$TMPDIR/.scriptlock.${0##*/}" - if [ ! -d "$LOCKDIR" ]; then + if [[ ! -d $LOCKDIR ]]; then warning "Script %s was not locked!" "${0##*/}" restore_umask return 1 @@ -76,12 +75,12 @@ cleanup() { for l in "${LOCKS[@]}"; do repo=${l%.*} arch=${l#*.} - if [ -d "$TMPDIR/.repolock.$repo.$arch" ]; then + if [[ -d $TMPDIR/.repolock.$repo.$arch ]]; then msg "Removing left over lock from [%s] (%s)" "$repo" "$arch" repo_unlock "$repo" "$arch" fi done - if [ -d "$TMPDIR/.scriptlock.${0##*/}" ]; then + if [[ -d $TMPDIR/.scriptlock.${0##*/} ]]; then msg "Removing left over lock from %s" "${0##*/}" script_unlock fi @@ -91,7 +90,7 @@ cleanup() { date +%s > "${FTP_BASE}/lastupdate" fi - [ "$1" ] && exit "$1" + [[ -n $1 ]] && exit "$1" } trap abort INT QUIT TERM HUP @@ -109,22 +108,22 @@ repo_lock () { local _owner # This is the lock file used by repo-add and repo-remove - if [ -f "${DBLOCKFILE}" ]; then + if [[ -f ${DBLOCKFILE} ]]; then error "Repo [%s] (%s) is already locked by repo-{add,remove} process %s" "$1" "$2" "$(<"$DBLOCKFILE")" return 1 fi - if [ $# -eq 2 ]; then + if (( $# == 2 )); then _lockblock=true _trial=0 - elif [ $# -eq 3 ]; then + elif (( $# == 3 )); then _lockblock=false _timeout=$3 let _trial=$_timeout/$LOCK_DELAY fi _count=0 - while [ "$_count" -le "$_trial" ] || "$_lockblock" ; do + while (( _count <= _trial )) || "$_lockblock" ; do if ! mkdir "$LOCKDIR" >/dev/null 2>&1 ; then _owner="$(/usr/bin/stat -c %U "$LOCKDIR")" warning "Repo [%s] (%s) is already locked by %s." "$1" "$2" "$_owner" @@ -144,7 +143,7 @@ repo_lock () { repo_unlock () { #repo_unlock <repo-name> <arch> local LOCKDIR="$TMPDIR/.repolock.$1.$2" - if [ ! -d "$LOCKDIR" ]; then + if [[ ! -d $LOCKDIR ]]; then warning "Repo lock [%s] (%s) was not locked!" "$1" "$2" restore_umask return 1 @@ -176,7 +175,7 @@ getpkgbase() { local _base _base="$(_grep_pkginfo "$1" "pkgbase")" - if [ -z "$_base" ]; then + if [[ -z $_base ]]; then getpkgname "$1" else echo "$_base" @@ -187,7 +186,7 @@ issplitpkg() { local _base _base="$(_grep_pkginfo "$1" "pkgbase")" - if [ -z "$_base" ]; then + if [[ -z $_base ]]; then return 1 else return 0 @@ -199,7 +198,7 @@ getpkgname() { local _name _name="$(_grep_pkginfo "$1" "pkgname")" - if [ -z "$_name" ]; then + if [[ -z $_name ]]; then error "Package '%s' has no pkgname in the PKGINFO. Fail!" "$1" exit 1 fi @@ -212,7 +211,7 @@ getpkgver() { local _ver _ver="$(_grep_pkginfo "$1" "pkgver")" - if [ -z "$_ver" ]; then + if [[ -z $_ver ]]; then error "Package '%s' has no pkgver in the PKGINFO. Fail!" "$1" exit 1 fi @@ -224,7 +223,7 @@ getpkgarch() { local _ver _ver="$(_grep_pkginfo "$1" "arch")" - if [ -z "$_ver" ]; then + if [[ -z $_ver ]]; then error "Package '%s' has no arch in the PKGINFO. Fail!" "$1" exit 1 fi @@ -236,7 +235,7 @@ check_packager() { local _packager _packager=$(_grep_pkginfo "$1" "packager") - [[ $_packager && $_packager != 'Unknown Packager' ]] + [[ -n $_packager && $_packager != 'Unknown Packager' ]] } check_buildinfo() { @@ -247,17 +246,17 @@ check_builddir() { local _builddir _builddir=$(_grep_buildinfo "$1" "builddir") - [[ $_builddir && $_builddir = '/build' ]] + [[ -n $_builddir && $_builddir = '/build' ]] } getpkgfile() { - if [[ ${#} -ne 1 ]]; then + if (( $# != 1 )); then error 'No canonical package found!' exit 1 - elif [ ! -f "${1}" ]; then + elif [[ ! -f ${1} ]]; then error "Package %s not found!" "$1" exit 1 - elif [ ! -f "${1}.sig" ]; then + elif [[ ! -f ${1}.sig ]]; then error "Package signature %s not found!" "$1.sig" exit 1 fi @@ -266,34 +265,25 @@ getpkgfile() { } getpkgfiles() { - local f - if [ ! -z "$(printf '%s\n' "${@%\.*}" | sort | uniq -D)" ]; then + local f files + if [[ ! -z "$(printf '%s\n' "${@%\.*}" | sort | uniq -D)" ]]; then error 'Duplicate packages found!' exit 1 fi for f in "$@"; do - if [ ! -f "${f}" ]; then - error "Package %s not found!" "$f" - exit 1 - elif [ ! -f "${f}.sig" ]; then - error "Package signature %s not found!" "$f.sig" - exit 1 - fi + files+=("$(getpkgfile "$f")") || exit 1 done - echo "${@}" + echo "${files[@]}" } check_pkgfile() { local pkgfile=$1 - local pkgname="$(getpkgname "${pkgfile}")" - [ $? -ge 1 ] && return 1 - local pkgver="$(getpkgver "${pkgfile}")" - [ $? -ge 1 ] && return 1 - local pkgarch="$(getpkgarch "${pkgfile}")" - [ $? -ge 1 ] && return 1 + local pkgname="$(getpkgname "${pkgfile}")" || return 1 + local pkgver="$(getpkgver "${pkgfile}")" || return 1 + local pkgarch="$(getpkgarch "${pkgfile}")" || return 1 in_array "${pkgarch}" "${ARCHES[@]}" 'any' || return 1 @@ -306,20 +296,16 @@ check_pkgfile() { check_pkgxbs() { local pkgfile="${1}" - local _pkgbase="$(getpkgbase "${pkgfile}")" - [ $? -ge 1 ] && return 1 - local _pkgname="$(getpkgname "${pkgfile}")" - [ $? -ge 1 ] && return 1 - local _pkgver="$(getpkgver "${pkgfile}")" - [ $? -ge 1 ] && return 1 - local _pkgarch="$(getpkgarch "${pkgfile}")" - [ $? -ge 1 ] && return 1 + local _pkgbase="$(getpkgbase "${pkgfile}")" || return 1 + local _pkgname="$(getpkgname "${pkgfile}")" || return 1 + local _pkgver="$(getpkgver "${pkgfile}")" || return 1 + local _pkgarch="$(getpkgarch "${pkgfile}")" || return 1 local repo="${2}" in_array "${repo}" "${PKGREPOS[@]}" || return 1 local xbsver="$(. "$(xbs releasepath "${_pkgbase}" "${repo}" "${_pkgarch}")/PKGBUILD"; get_full_version "${_pkgname}")" - [ "${xbsver}" == "${_pkgver}" ] || return 1 + [[ "${xbsver}" = "${_pkgver}" ]] || return 1 local xbsnames=($(. "$(xbs releasepath "${_pkgbase}" "${repo}" "${_pkgarch}")/PKGBUILD"; echo "${pkgname[@]}")) in_array "${_pkgname}" "${xbsnames[@]}" || return 1 @@ -352,10 +338,10 @@ check_splitpkgs() { popd >/dev/null for pkgdir in "${WORKDIR}/check_splitpkgs/${repo}"/*/*; do - [ ! -d "${pkgdir}" ] && continue + [[ ! -d ${pkgdir} ]] && continue sort -u "${pkgdir}/staging" -o "${pkgdir}/staging" sort -u "${pkgdir}/xbs" -o "${pkgdir}/xbs" - if [ ! -z "$(comm -13 "${pkgdir}/staging" "${pkgdir}/xbs")" ]; then + if [[ ! -z "$(comm -13 "${pkgdir}/staging" "${pkgdir}/xbs")" ]]; then return 1 fi done @@ -366,17 +352,14 @@ check_splitpkgs() { check_pkgrepos() { local pkgfile=$1 - local pkgname="$(getpkgname "${pkgfile}")" - [ $? -ge 1 ] && return 1 - local pkgver="$(getpkgver "${pkgfile}")" - [ $? -ge 1 ] && return 1 - local pkgarch="$(getpkgarch "${pkgfile}")" - [ $? -ge 1 ] && return 1 + local pkgname="$(getpkgname "${pkgfile}")" || return 1 + local pkgver="$(getpkgver "${pkgfile}")" || return 1 + local pkgarch="$(getpkgarch "${pkgfile}")" || return 1 - [ -f "${FTP_BASE}/${PKGPOOL}/${pkgname}-${pkgver}-${pkgarch}"${PKGEXT} ] && return 1 - [ -f "${FTP_BASE}/${PKGPOOL}/${pkgname}-${pkgver}-${pkgarch}"${PKGEXT}.sig ] && return 1 - [ -f "${FTP_BASE}/${PKGPOOL}/${pkgfile##*/}" ] && return 1 - [ -f "${FTP_BASE}/${PKGPOOL}/${pkgfile##*/}.sig" ] && return 1 + [ -f "${FTP_BASE}/${PKGPOOL}/${pkgname}-${pkgver}-${pkgarch}"${PKGEXTS} ] && return 1 + [ -f "${FTP_BASE}/${PKGPOOL}/${pkgname}-${pkgver}-${pkgarch}"${PKGEXTS}.sig ] && return 1 + [[ -f ${FTP_BASE}/${PKGPOOL}/${pkgfile##*/} ]] && return 1 + [[ -f ${FTP_BASE}/${PKGPOOL}/${pkgfile##*/}.sig ]] && return 1 return 0 } @@ -394,19 +377,19 @@ chk_license() { check_repo_permission() { local repo=$1 - [ ${#PKGREPOS[@]} -eq 0 ] && return 1 - [ -z "${PKGPOOL}" ] && return 1 + (( ${#PKGREPOS[@]} == 0 )) && return 1 + [[ -z "${PKGPOOL}" ]] && return 1 in_array "${repo}" "${PKGREPOS[@]}" || return 1 - [ -w "$FTP_BASE/${PKGPOOL}" ] || return 1 + [[ -w $FTP_BASE/${PKGPOOL} ]] || return 1 local arch for arch in "${ARCHES[@]}"; do local dir="${FTP_BASE}/${repo}/os/${arch}/" - [ -w "${dir}" ] || return 1 - [ -f "${dir}${repo}"${DBEXT} -a ! -w "${dir}${repo}"${DBEXT} ] && return 1 - [ -f "${dir}${repo}"${FILESEXT} -a ! -w "${dir}${repo}"${FILESEXT} ] && return 1 + [[ -w ${dir} ]] || return 1 + [[ -f ${dir}${repo}${DBEXT} && ! -w ${dir}${repo}${DBEXT} ]] && return 1 + [[ -f ${dir}${repo}${FILESEXT} && ! -w ${dir}${repo}${FILESEXT} ]] && return 1 done return 0 @@ -418,7 +401,7 @@ set_repo_permission() { local dbfile="${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT}" local filesfile="${FTP_BASE}/${repo}/os/${arch}/${repo}${FILESEXT}" - if [ -w "${dbfile}" ]; then + if [[ -w ${dbfile} ]]; then local group=$(/usr/bin/stat --printf='%G' "$(dirname "${dbfile}")") chgrp "$group" "${dbfile}" || error "Could not change group of %s to %s" "$dbfile" "$group" chgrp "$group" "${filesfile}" || error "Could not change group of %s to %s" "$filesfile" "$group" @@ -450,7 +433,7 @@ arch_repo_remove() { local pkgs=("${@:3}") local dbfile="${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT}" - if [ ! -f "${dbfile}" ]; then + if [[ ! -f ${dbfile} ]]; then error "No database found at '%s'" "$dbfile" return 1 fi @@ -462,7 +445,7 @@ arch_repo_remove() { } arch_svn() { - if [ -z "${SVNUSER}" ]; then + if [[ -z ${SVNUSER} ]]; then /usr/bin/svn "${@}" else sudo -u "${SVNUSER}" -- /usr/bin/svn --username "${USER}" "${@}" |