{
which -a pkg | grep -v '^/usr/sbin/pkg$' | grep -q '/sbin/pkg$'
}
+ pkg_info_Ea ()
+ {
+ pkg info -qa 2> /dev/null
+ }
pkg_info_qoa ()
{
pkg info -qoa 2> /dev/null
{
pkg info -Ex "$@" 2> /dev/null
}
+ pkg_info_qL ()
+ {
+ pkg info -ql "$@" 2> /dev/null
+ }
+ pkg_check_sanity ()
+ {
+ local pkg
+ pkg=$1
+ pkg check -s "$pkg" 2> /dev/null
+ }
pkg_info_gen_pkg_origin_table ()
{
pkg query -g '%n-%v\t%o' \* 2> /dev/null > ${DBDIR}/installed_ports:pkg_vs_origin.tbl
{
:
}
+ pkg_info_Ea ()
+ {
+ pkg_info -Ea 2> /dev/null
+ }
pkg_info_qoa ()
{
pkg_info -qoa 2> /dev/null
{
pkg_info -Ex "$@" 2> /dev/null
}
+ pkg_info_qL ()
+ {
+ pkg_info -qL "$@" 2> /dev/null
+ }
+ pkg_check_sanity ()
+ {
+ local pkg
+ pkg=$1
+ pkg_info -qg "$pkg" 2> /dev/null
+ }
pkg_info_gen_pkg_origin_table ()
{
pkg_info -aE 2> /dev/null | while read pkg
done < $tmp_evaluated
}
-# ============= Get conflicting packages of a port =============
-pkgsys_get_conflicting_pkgs ()
+# ============= Get glob patterns of conflicting packages of a port =============
+pkgsys_get_conflicting_pkgs_patterns ()
{
- local origin mode conflicts
+ local mode origin conflicts
mode=$1
origin=$2
conflicts=`database_query_get_makevar_val "$origin" CONFLICTS`
conflicts=$conflicts' '`database_query_get_makevar_val "$origin" CONFLICTS_INSTALL`
;;
esac
- pkg_info_Eg $conflicts > ${TMPDIR}/pkgsys_get_conflicting_pkgs::conflicts || :
- cat "${TMPDIR}/pkgsys_get_conflicting_pkgs::conflicts"
- [ `wc -l < ${TMPDIR}/pkgsys_get_conflicting_pkgs::conflicts` -gt 0 ]
+ echo "$conflicts"
}
+
+# ============= Get conflicting installed packages of a port =============
+pkgsys_get_conflicting_installed_pkgs ()
+{
+ local mode origin tmp_conflicts
+ mode=$1
+ origin=$2
+ tmp_conflicts=${TMPDIR}/pkgsys_get_conflicting_installed_pkgs::conflicts
+ pkg_info_Eg `pkgsys_get_conflicting_pkgs_patterns "$mode" "$origin"` > $tmp_conflicts || :
+ cat "$tmp_conflicts"
+ [ `wc -l < $tmp_conflicts` -gt 0 ]
+}
+
+# ============= Check whether a package conflicts with a port =============
+pkgsys_chk_conflict_by_a_pkg ()
+{
+ local mode origin pkg tmp_conflicts_ptn
+ mode=$1
+ origin=$2
+ pkg=$2
+ tmp_conflicts_ptn=${TMPDIR}/pkgsys_chk_conflict_by_a_pkg::conflicts_ptn
+ pkgsys_get_conflicting_pkgs_patterns "$mode" "$origin" \
+ | str_convert_glob_to_regexp_pattern > $tmp_conflicts_ptn
+ echo "$pkg" | grep -q -E -f "$tmp_conflicts_ptn"
+}
+
+# ============= Check whether installed files are lost or broken for a package =============
+pkgsys_sanitychk_pkgcontents ()
+{
+ local pkg tmp_sanity origin
+ pkg=$1
+ tmp_sanity=${TMPDIR}/pkgsys_sanitychk_pkgcontents:sanity
+ pkg_check_sanity "$pkg" > $tmp_sanity || :
+ [ `wc -l < $tmp_sanity` -eq 0 ] && return
+ origin=`pkg_info_qo "$pkg"`
+ if [ $opt_batch_mode = no ]
+ then
+ message_echo "[$pkg ($origin)]"
+ sed 's/^/ /' "$tmp_sanity"
+ message_echo
+ else
+ pkg_replace=`str_escape_replaceval "$pkg"`
+ origin_replace=`str_escape_replaceval "$origin"`
+ sed "s/^/$pkg_replace\\\\$origin_replace\\\\/" "$tmp_sanity" | tr '\\' '\t'
+ fi
+ return 1
+}