diff --git a/xbps-src b/xbps-src
index fa677084ce0..77969af84a1 100755
--- a/xbps-src
+++ b/xbps-src
@@ -836,6 +836,7 @@ case "$XBPS_TARGET" in
         read_pkg ignore-problems
         for sub_name in $subpackages; do
             if [ $sub_name = $XBPS_TARGET_PKG ]; then
+                . ${XBPS_COMMONDIR}/environment/setup-subpkg/subpkg.sh
                 ${sub_name}_package
             fi
         done
@@ -859,6 +860,7 @@ case "$XBPS_TARGET" in
         read_pkg ignore-problems
         for sub_name in $subpackages; do
             if [ $sub_name = $XBPS_TARGET_PKG ]; then
+                . ${XBPS_COMMONDIR}/environment/setup-subpkg/subpkg.sh
                 ${sub_name}_package
             fi
         done
@@ -886,6 +888,34 @@ case "$XBPS_TARGET" in
                 fi # The trailing space gets stripped before printing anyway
         done
         ;;
+    dbulk-dump)
+        read_pkg
+        for x in pkgname version revision; do
+            printf '%s: %s\n' "$x" "${!x}"
+        done
+        for x in hostmakedepends makedepends depends; do
+            arr=(${!x})
+            if [[ ${#arr} -gt 0 ]]; then
+                printf '%s:\n' "$x"
+                printf ' %s\n' "${arr[@]}"
+            fi
+        done
+        if [[ $subpackages ]]; then
+            printf 'subpackages:\n'
+            for x in ${subpackages}; do
+                . ${XBPS_COMMONDIR}/environment/setup-subpkg/subpkg.sh
+                ${x}_package
+                printf ' %s\n' "$x"
+                for x in depends; do
+                    arr=(${!x})
+                    if [[ ${#arr} -gt 0 ]]; then
+                        printf '  %s:\n' "$x"
+                        printf '   %s\n' "${arr[@]}"
+                    fi
+                done
+            done
+        fi
+        ;;
     show-options)
         read_pkg ignore-problems
         show_pkg_build_options