# ==============================================================================
# portsreinstall library script
# - Wrappers for hiding version differences in the Ports/Packages system -
-# Copyright (C) 2013 Mamoru Sakaue, MwGhennndo, All Rights Reserved.
+# Copyright (C) 2013-2014 Mamoru Sakaue, MwGhennndo, All Rights Reserved.
# This software is distributed under the 2-Clause BSD License.
# ==============================================================================
PKGSYS_AVR_REFETCH_TIMES_PER_SITE=1 # Average number (integer) of retrials for retrieving package or distfiles per mirror site
PKGSYS_AVR_REFETCH_TIMES_FOR_CHKSUMERR=2 # Number (integer) of retrials for check sum error in retrieving a package
+# ============= Check implementation of the ports tree =============
+pkgsys_chk_ports_tree_implementation ()
+{
+ local var tmp_work
+ if [ ! -d "${PORTSDIR}" ]
+ then
+ message_echo "ERROR: Ports directory ${PORTSDIR} is not found." >&2
+ exit 1
+ fi
+ if [ ! -e "${PORTSDIR}/Makefile" -o ! -e "${PORTSDIR}/Mk/bsd.port.mk" ]
+ then
+ message_echo "ERROR: Ports tree ${PORTSDIR} is missing, broken or incompatible." >&2
+ exit 1
+ fi
+}
+
# ============= System defined value for the ports/packages =============
pkgsys_sysvar ()
{
[ -d "${PKGREPOSITORY}" ] || mkdir -p "${PKGREPOSITORY}"
if [ -e "${PKGREPOSITORY}/$pkg.tbz" ]
then
- fetchedMD5=`md5 "${PKGREPOSITORY}/$pkg.tbz" | sed -E "s/^[^=]*=[[:space:]]*(.*)/\1/"`
- if [ "x$fetchedMD5" = "x$validMD5" ]
+ if [ -e "${PKGREPOSITORY}/$pkg.md5=$validMD5.tbz" ]
+ then
+ fetchedMD5=`md5 "${PKGREPOSITORY}/$pkg.md5=$validMD5.tbz" | sed -E "s/^[^=]*=[[:space:]]*(.*)/\1/"`
+ [ "x$fetchedMD5" = "x$validMD5" ] || rm "${PKGREPOSITORY}/$pkg.md5=$fetchedMD5.tbz"
+ fi
+ if [ -e "${PKGREPOSITORY}/$pkg.md5=$validMD5.tbz" ]
then
- needs_fetch=no
+ ln -f "${PKGREPOSITORY}/$pkg.md5=$fetchedMD5.tbz" "${PKGREPOSITORY}/$pkg.tbz"
else
- mv "${PKGREPOSITORY}/$pkg.tbz" "${PKGREPOSITORY}/$pkg.md5=$fetchedMD5.tbz"
+ fetchedMD5=`md5 "${PKGREPOSITORY}/$pkg.tbz" | sed -E "s/^[^=]*=[[:space:]]*(.*)/\1/"`
+ if [ "x$fetchedMD5" = "x$validMD5" ]
+ then
+ needs_fetch=no
+ else
+ mv "${PKGREPOSITORY}/$pkg.tbz" "${PKGREPOSITORY}/$pkg.md5=$fetchedMD5.tbz"
+ fi
fi
fi
if [ $needs_fetch = yes ]
# }
pkg_info_qoX ()
{
- pkg info -qoX "$@" 2> /dev/null
+ pkg info -qox "$@" 2> /dev/null
}
pkg_info_qO ()
{
origin=$1
tmppkg=${TMPDIR}/pkgsys_pkg_info_qO_init::pkg
origin_regexp=`str_escape_regexp "$origin"`
- { sed -n -E "/[[:space:]]$origin_regexp$/p" "${DBDIR}/installed_ports:pkg_vs_origin.tbl" 2> /dev/null || :; } \
- | cut -f 1 > $tmppkg
+ sed -n -E "/[[:space:]]$origin_regexp$/p" "${DBDIR}/installed_ports:pkg_vs_origin.tbl" 2> /dev/null \
+ | cut -f 1 > $tmppkg || :
npkgs=`wc -l < $tmppkg`
if [ $npkgs -gt 0 ]
then
shift
expr "x$glob" : '^x-' > /dev/null 2>&1 && continue
glob_regexp=`str_convert_portsglob_to_regexp_pattern "$glob"`
- if expr "$glob" : '[^/][^/]*\/[^/][^/]*$' > /dev/null 2>&1
+ if expr "$glob" : '.*/' > /dev/null 2>&1
then
grep -E "$glob_regexp" "$origlist" 2>&1 || :
{
cut -f 2 "${DBDIR}/installed_ports:pkg_vs_origin.tbl" 2> /dev/null
} | grep -E "$glob_regexp" 2>&1 || :
else
- if expr "$glob" : '^[a-z][a-zA-Z0-9+-]*[a-zA-Z0-9+]$' > /dev/null 2>&1 && \
+ if expr "$glob" : '^[a-z][a-zA-Z0-9_.+-]*[a-zA-Z0-9_.+]$' > /dev/null 2>&1 && \
[ `expr "$glob" : '.*-[0-9]' 2>&1` -eq 0 ]
then
glob_regexp2=`expr "$glob_regexp" : '\(.*\)\$$' 2>&1`'-[0-9]'
sed -n ${index}p "$origlist"
done || :
glob_regexp2=`expr "$glob_regexp" : '\(.*\)\$$' 2>&1`'[[:space:]]'
- { sed -n -E "/$glob_regexp2/p" "${DBDIR}/installed_ports:pkg_vs_origin.tbl" 2> /dev/null || :; } \
- | cut -f 2
+ sed -n -E "/$glob_regexp2/p" "${DBDIR}/installed_ports:pkg_vs_origin.tbl" 2> /dev/null \
+ | cut -f 2 || :
pkg_info_qoX "$glob_regexp" || :
fi
done | sort -u
glob_pattern=$1
{
pkgsys_eval_ports_glob "$glob_pattern" 2> /dev/null || :
- echo "$glob_pattern" | grep '^[a-z][a-z]*/[a-zA-Z0-9_+-][a-zA-Z0-9_+-]*$' || :
+ echo "$glob_pattern" | grep '^[a-z][a-z]*/[a-zA-Z0-9_.+-][a-zA-Z0-9_.+-]*$' || :
} | grep -v -e '^$' | sort -u
}