Index: head/ports-mgmt/portmaster/Makefile =================================================================== --- head/ports-mgmt/portmaster/Makefile (revision 458880) +++ head/ports-mgmt/portmaster/Makefile (revision 458881) @@ -1,54 +1,54 @@ # $FreeBSD$ PORTNAME= portmaster PORTVERSION= 3.18 -PORTREVISION= 12 +PORTREVISION= 13 CATEGORIES= ports-mgmt MAINTAINER= se@FreeBSD.org COMMENT= Manage your ports without external databases or languages LICENSE= BSD2CLAUSE USE_GITHUB= yes GH_ACCOUNT= freebsd OPTIONS_DEFINE= BASH ZSH OPTIONS_DEFAULT=BASH ZSH PLIST_FILES= sbin/portmaster \ etc/portmaster.rc.sample \ man/man8/portmaster.8.gz BASH_PLIST_FILES= etc/bash_completion.d/portmaster.sh ZSH_PLIST_FILES= share/zsh/site-functions/_portmaster NO_ARCH= yes verify: checksum do-build: .for file in portmaster files/portmaster.rc.sample files/portmaster.8 ${REINPLACE_CMD} -e 's#/usr/local#${LOCALBASE}#g' \ -e 's#%%PKGNAME%%#${PKGNAME}#g' ${WRKSRC}/${file} .endfor do-install: ${INSTALL_SCRIPT} ${WRKSRC}/portmaster \ ${STAGEDIR}${PREFIX}/sbin ${INSTALL_DATA} ${WRKSRC}/files/portmaster.rc.sample \ ${STAGEDIR}${PREFIX}/etc ${INSTALL_MAN} ${WRKSRC}/files/portmaster.8 \ ${STAGEDIR}${MAN8PREFIX}/man/man8 post-install-BASH-on: ${MKDIR} ${STAGEDIR}${PREFIX}/etc/bash_completion.d ${INSTALL_DATA} ${WRKSRC}/files/bash-completions \ ${STAGEDIR}${PREFIX}/etc/bash_completion.d/portmaster.sh post-install-ZSH-on: ${MKDIR} ${STAGEDIR}${PREFIX}/share/zsh/site-functions ${INSTALL_DATA} ${WRKSRC}/files/zsh-completions \ ${STAGEDIR}${PREFIX}/share/zsh/site-functions/_portmaster .include Index: head/ports-mgmt/portmaster/files/patch-portmaster =================================================================== --- head/ports-mgmt/portmaster/files/patch-portmaster (revision 458880) +++ head/ports-mgmt/portmaster/files/patch-portmaster (revision 458881) @@ -1,355 +1,365 @@ --- portmaster.orig 2017-12-21 09:02:44 UTC +++ portmaster @@ -113,13 +113,13 @@ kill_bad_children () { [ "$pid" -gt 25 ] || continue case "$ppid" in 1) case "$command" in - *" progcmd "*) pm_kill $pid ;; + *" $progcmd "*) pm_kill $pid ;; *'make -DBATCH checksum'*|*'/fetch '*|\[sh\]) pm_kill -9 $pid ;; esac ;; *) [ $pgid -eq $mypgid ] || continue [ $pid -eq $PM_PARENT_PID ] && continue case "$command" in - *" progcmd "*) pm_kill $pid ;; + *" $progcmd "*) pm_kill $pid ;; *'make -DBATCH checksum'*|*'/fetch '*|\[sh\]) pm_kill $pid ;; esac ;; esac @@ -333,9 +333,8 @@ pm_mktemp () { fail "mktemp for $1 failed:\n ${pm_mktemp_file#mktemp: }" } pm_unlink () { [ -e "$1" ] && /bin/unlink $1; } -pm_islocked () { [ -n "$1" ] || return 1; - [ -e "$pdb/$1/+IGNOREME" ] && pkg info -e "$1" || - [ `pkg query %k "$1"` -eq "1" ]; } +pm_islocked () { local locked; [ -n "$1" ] && locked=`pkg query %k "$1"` && + [ "$locked" = 1 -o -e "$pdb/$1/+IGNOREME" ]; } # Superuser versions for commands that need root privileges @@ -412,7 +411,7 @@ usage () { echo " [[[--packages|-P]|[--packages-only|-PP]] | [--packages-build]]" echo " [--packages-if-newer] [--delete-build-only] [--always-fetch]" echo " [--local-packagedir=] [--packages-local] [--delete-packages]" - echo " [--no-confirm] [--no-term-title] [--no-index-fetch]" + echo " [--backup-format=] [--no-confirm] [--no-term-title] [--no-index-fetch]" echo " [--index|--index-first|--index-only] [-m ]" echo " [-x ]" echo "$progname [Common flags] " @@ -653,6 +652,10 @@ for var in "$@" ; do export LOCAL_PACKAGEDIR ;; --delete-packages) PM_DELETE_PACKAGES=pm_delete_packages export PM_DELETE_PACKAGES ;; + --backup-format=*) BACKUP_FORMAT=${var#--backup-format=} + export BACKUP_FORMAT ;; + --package-format=*) PACKAGE_FORMAT=${var#--package-format=} + export PACKAGE_FORMAT ;; # --flavor=*) PM_FLAVOR=${var#--flavor=} ;; --update-if-newer) PM_UPDATE_IF_NEWER=pm_update_if_newer export PM_UPDATE_IF_NEWER ;; @@ -1001,6 +1004,25 @@ get_answer_yn () { fi } +validate_flavor () { + local origin=$(dir_part $1) + local flavor=$(flavor_part $1) + local iport="$2" + local dir="$pd/$origin" + + [ -n "$flavor" -a -d "$dir" ] || return + local IFS=' ' + local pkgname=${iport%-*} + local flavors=$(pm_make -C "$dir" -V FLAVORS) + for flavor in $flavors; do + local p=$(pm_make -C "$dir" FLAVOR=$flavor -V PKGNAME) + if [ -n "$p" -a "${p%-*}" = "$pkgname" ]; then + moved_npd="$origin@$flavor" + break + fi + done +} + # Find the new origin for moved ports # Set global variable moved_npd on success # Return values: @@ -1036,6 +1058,7 @@ find_moved_port () { fi ;; ${sf}\|*) moved_npd=${moved#*\|} # New port directory moved_npd=${moved_npd%%\|*} + [ -n $(flavor_part $moved_npd) ] && validate_flavor $moved_npd $iport echo '' echo " ===>>> The $sf port moved to $moved_npd" echo " ===>>> Reason: ${moved##*|}" @@ -1435,16 +1458,14 @@ check_force_multi () { find_new_port () { # Global: new_port - local portdir flavor flavor_option + local portdir flavor [ -n "$new_port" ] && return portdir=$(dir_part "$1") flavor=$(flavor_part "$1") - flavor_option=${flavor:+FLAVOR=$flavor} -# export_flavor $flavor if pm_cd_pd $portdir; then - new_port=`pm_make -V PKGNAME ${flavor_option}` + new_port=`FLAVOR=$flavor pm_make -V PKGNAME` else new_port=`parse_index $portdir name` || fail "No entry for $portdir in $PM_INDEX" @@ -1461,7 +1482,6 @@ check_for_updates () { originflavor=${2:-`origin_from_pdb $iport`} || return 0 flavor=$(flavor_part "$originflavor") export_flavor $flavor - flavor_option=${flavor:+FLAVOR=$flavor} origin=$(dir_part "$originflavor") if [ -n "$PM_INDEX" ]; then @@ -1495,7 +1515,7 @@ check_for_updates () { fail "Cannot cd to port directory: $pd/$origin" fi fi - port_ver=`pm_make $flavor_option -V PKGNAME` + port_ver=`FLAVOR=$flavor pm_make -V PKGNAME` [ -z "$port_ver" ] && fail "Is $pd/$origin/Makefile missing?" elif [ -z "$do_update" -a -z "$skip" -a -z "$PM_INDEX_ONLY" ]; then find_moved_port $origin $iport $nf @@ -1589,25 +1609,28 @@ init_packages () { } pm_pkg_create () { - local pkgdir backup + local pkgdir backup format_option init_packages + [ -z "$BACKUP_FORMAT" -a -n "$PACKAGE_FORMAT" ] && export BACKUP_FORMAT=$PACKAGE_FORMAT if [ "$1" = "$PACKAGES" ]; then for pkgdir in All Latest ${portdir%/*}; do pm_mkdir_s ${PACKAGES}/${pkgdir} || fail "Cannot mkdir -p ${PACKAGES}/${pkgdir}" done pkgdir=${PACKAGES}/All + format_option=${PACKAGE_FORMAT:+-f $PACKAGE_FORMAT} echo "===>>> Creating a package for new version $2" else pkgdir=$1 ; echo '' + format_option=${BACKUP_FORMAT:+-f $BACKUP_FORMAT} echo "===>>> Creating a backup package for old version $2" backup=backup fi pm_cd $pkgdir || fail "Cannot cd into $pkgdir to create a package" - if $PM_SU_CMD pkg create $2; then + if $PM_SU_CMD pkg create $format_option $2; then if [ "$1" = "$pbu" ]; then if [ -n "$BACKUP" ]; then echo " ===>>> Package saved to $1" ; echo '' @@ -1616,15 +1639,14 @@ pm_pkg_create () { NB_DELETE="${NB_DELETE}${pkg} " fi elif [ "$1" = "$PACKAGES" ]; then - local pkg ; pkg=`echo $2.*` + local pkg ; pkg=$2.txz if [ -z "$PM_INDEX_ONLY" ]; then - local latest_link + local pkg_latest_file pm_cd_pd $portdir - latest_link=`pm_make -V LATEST_LINK` - cd ${1}/Latest - $PM_SU_CMD ln -sf ../All/$pkg ${latest_link}.txz + pkg_latest_file=`pm_make -V PKGLATESTFILE` + $PM_SU_CMD install -lr $1/All/$pkg ${pkg_latest_file} fi cd ${1}/${portdir%/*} @@ -1663,14 +1685,16 @@ find_dl_distfiles () { if [ -s "${pdb}/${upg_port}/distfiles" ]; then dist_list="${pdb}/${upg_port}/distfiles" else + local d=$(dir_part $1) # Old method, for now - if pm_cd $pd/$1; then - dist_list=`pm_make_b -V OPTIONSFILE` + if pm_cd $pd/$d; then + dist_list=`pm_make_b -V OPTIONS_FILE` dist_list="${dist_list%options}distfiles" else # The port might have moved, etc.; so take a stab at it, # but do not take a chance with a possibly wrong answer - dist_list="$port_dbdir/${1##*/}/distfiles" + local dd=$(echo "$d" | tr "/" "_") + dist_list="$port_dbdir/${dd##*/}/distfiles" fi [ -s "$dist_list" ] || { unset dist_list ; return 0; } fi @@ -1803,6 +1827,7 @@ set_distfiles_and_subdir () { } delete_stale_distfiles () { + [ -n "$DISTDIR" ] || return # DISTDIR not set because of PM_PACKAGES # Global: distfiles_checked local file answer @@ -1849,6 +1874,7 @@ delete_stale_distfiles () { } delete_all_distfiles () { + [ -n "$DISTDIR" ] || return # DISTDIR not set because of PM_PACKAGES # Global: delete_all DISTDIR local origin rc delete_current @@ -2264,12 +2290,14 @@ make_dep_list () { for dep_type in $*; do case $dep_type in - all-depends-list) - var_opt="$var_opt -V BUILD_DEPENDS -V LIB_DEPENDS -V RUN_DEPENDS" ;; - build-depends-list) - var_opt="$var_opt -V BUILD_DEPENDS -V LIB_DEPENDS" ;; + all-depends-list|build-depends-list) + var_opt="$var_opt -V PKG_DEPENDS -V EXTRACT_DEPENDS \ + -V PATCH_DEPENDS -V FETCH_DEPENDS -V BUILD_DEPENDS -V LIB_DEPENDS" + [ "$dep_type" = all-depends-list ] && var_opt="$var_opt -V RUN_DEPENDS" ;; run-depends-list) - var_opt="$var_opt -V RUN_DEPENDS -V LIB_DEPENDS" ;; + var_opt="$var_opt -V RUN_DEPENDS -V LIB_DEPENDS" ;; + test-depends-list) + var_opt="$var_opt -V TEST_DEPENDS" ;; *) fail "make_dep_list: Unsupported option '$dep_type'" esac @@ -2404,16 +2432,16 @@ dependency_check () { case "$CUR_DEPS" in *:${origin}:*) continue ;; esac if [ -z "$PM_INDEX_ONLY" ]; then - local conflicts glob confl_p dir flavor flavor_opt + local conflicts glob confl_p dir flavor dir=$(dir_part $d_port) flavor=$(flavor_part $d_port) - flavor_opt=${flavor:+FLAVOR=$flavor} conflicts='' if pm_cd "$pd/$dir"; then if grep -ql ^CONFLICTS Makefile ; then - conflicts=`pm_make_b $flavor_opt -V CONFLICTS` - conflicts="$conflicts `pm_make_b $flavor_opt -V CONFLICTS_BUILD`" - conflicts="$conflicts `pm_make_b $flavor_opt -V CONFLICTS_INSTALL`" + conflicts=`FLAVOR=$flavor pm_make_b \ + -V CONFLICTS \ + -V CONFLICTS_BUILD \ + -V CONFLICTS_INSTALL` fi else fail "Cannot cd to $dir" @@ -3104,7 +3132,6 @@ if [ -z "$PM_INDEX_ONLY" ] && ! pm_isdir_pd "$portdir" [ -n "$moved_npd" ] || no_valid_port flavor=$(flavor_part "$moved_npd") export_flavor $flavor -# flavor_option=${flavor:+-m FLAVOR=$flavor} # FLAVOR is exported in the environment pm_isdir_pd "$moved_npd" || no_valid_port [ "$$" -eq "$PM_PARENT_PID" ] && parent_exit @@ -3117,7 +3144,7 @@ iport_from_pkgname () { dir=$(dir_part $1) flavor=$(flavor_part $1) - pkgname=$(make -C "$pd/$dir" -V PKGNAME FLAVOR=$flavor) || return 1 + pkgname=$(FLAVOR=$flavor make -C "$pd/$dir" -V PKGNAME) || return 1 pkg info -x "^${pkgname%-*}"'-[^-]*' 2>/dev/null } @@ -3302,7 +3329,7 @@ pm_cd_pd $portdir if [ -n "$PM_BUILD_ONLY_LIST" ]; then case "$build_only_dl_g" in - *" $pd/$portdir "*) + *" $pd/$portdir "*|*" $portdir "*) [ -n "$PM_PACKAGES_BUILD" ] && PM_PACKAGES_BUILD=doing_build_only_dep [ -n "$PM_DEL_BUILD_ONLY" ] && PM_DEL_BUILD_ONLY=doing_build_only_dep ;; *) [ -n "$PM_PACKAGES_BUILD" ] && PM_PACKAGES_BUILD=pmp_build @@ -3402,31 +3429,19 @@ fetch_package () { } if [ -z "$PACKAGESITE" -a -z "$PM_PACKAGES_LOCAL" ]; then release=`uname -r` + major_rel=${release%.*} + arch=`uname -p` - case "$release" in - [789]\.[0-9]-STABLE|[789]\.[0-9]-PRERELEASE) - release=packages-${release%%\.*}-stable ;; - [789]\.[0-9]-RELEASE*) - release=packages-${release%-RELEASE*}-release ;; - 9\.0-CURRENT*) release=packages-9-current ;; - 10\.0-CURRENT*) release=packages-10-current ;; - 11\.0-CURRENT*) release=packages-11-current ;; - 12\.0-CURRENT*) release=packages-12-current ;; - *RC[0-9]*) release=${release%-RC[0-9]*} - release=packages-${release}-release ;; - *BETA[0-9]*) release=${release%-BETA[0-9]*} - release=packages-${release}-release ;; - esac - sitepath="${PACKAGEROOT:-"http://ftp.freebsd.org"}/pub/FreeBSD/ports/`uname -p`/${release}/" - unset release + sitepath="${PACKAGEROOT:-"http://pkg.freebsd.org"}/FreeBSD:$major_rel:$arch/latest/All/" + unset release major_rel arch else sitepath="${PACKAGESITE%/}" sitepath="${sitepath%Latest}" sitepath="${sitepath%All}" fi - sitepath="${sitepath%/}/${portdir%/*}/" +# sitepath="${sitepath%/}/${portdir%/*}/" # may be required for local packages echo "===>>> Checking package repository for latest available version" @@ -3437,11 +3452,12 @@ fetch_package () { latest_pv=${local_package##*/} fi if [ -z "$latest_pv" -a -z "$PM_INDEX_ONLY" ]; then - s=`pm_make -V LATEST_LINK` - echo "===>>> ... checking: ${LOCAL_PACKAGEDIR}/Latest/${s}.txz" - if [ -r "${LOCAL_PACKAGEDIR}/Latest/${s}.txz" ]; then - local_package=${LOCAL_PACKAGEDIR}/Latest/${s}.txz - latest_pv=`readlink ${LOCAL_PACKAGEDIR}/Latest/${s}.txz` + s=`pm_make -V PKGLATESTFILE` + + echo "===>>> ... checking: ${s}" + if [ -r "${s}" ]; then + local_package=${s} + latest_pv=`readlink ${s}` latest_pv=${latest_pv##*/} else pm_v "===>>> No local package for ${new_port}, attempting fetch" -@@ -3753,6 +3769,7 @@ if [ -z "$use_package" ]; then +@@ -3622,6 +3638,9 @@ pkg_flavor () { + pm_make pretty-flavors-package-names | sed -ne 's!^\([A-Za-z0-9_]*\): *'$pkg'$!\1!p'; + } + export_flavor=$(pkg_flavor $new_port) ++ if [ -n "$HIDE_BUILD" ] && [ -n "$(pm_make -V LICENSE)" ]; then ++ pm_make extract ask-license || fail "make extract ask-license failed for $portdir" ++ fi + eval pm_make build $port_log_args || fail "make build failed for $portdir" + + pm_sv Running make stage +@@ -3753,6 +3772,7 @@ if [ -z "$use_package" ]; then unset np_orphan # Defining NO_DEPENDS ensures that we will control the installation # of the depends, not bsd.port.mk. +# export_flavor $(flavor_part "$portdir") eval pm_make_s -DNO_DEPENDS install $port_log_args || install_failed $new_port else [ -n "$local_package" ] && ppd=${LOCAL_PACKAGEDIR}/All -@@ -3850,7 +3867,7 @@ fi +@@ -3850,7 +3870,7 @@ fi if [ -n "$MAKE_PACKAGE" ]; then if [ -z "$use_package" ]; then echo "===>>> Creating a package for new version $new_port" - pm_make_s -D_OPTIONS_OK package >/dev/null || fail "Package creation of $new_port failed" + pm_make_s -D_OPTIONS_OK ${PACKAGE_FORMAT:+PKG_SUFX=.$PACKAGE_FORMAT} package >/dev/null || fail "Package creation of $new_port failed" echo " ===>>> Package saved to $PACKAGES/All" ; echo '' else pm_pkg_create $PACKAGES $new_port -@@ -3858,6 +3875,7 @@ if [ -n "$MAKE_PACKAGE" ]; then +@@ -3858,6 +3878,7 @@ if [ -n "$MAKE_PACKAGE" ]; then fi if [ -z "$use_package" -a -z "$DONT_POST_CLEAN" ]; then +# export_flavor $(flavor_part $portdir) pm_v "===>>> Running 'make clean' in the background" (pm_make_s clean NOCLEANDEPENDS=ncd2 >/dev/null)& pm_v