diff --git a/cdist/conf/type/__package_apt/gencode-remote b/cdist/conf/type/__package_apt/gencode-remote index 79c0d9d3..769a024b 100755 --- a/cdist/conf/type/__package_apt/gencode-remote +++ b/cdist/conf/type/__package_apt/gencode-remote @@ -101,10 +101,26 @@ if [ ! -f /var/cache/apt/pkgcache.bin ] || [ "\$( stat --format %Y /var/cache/ap then echo apt-get $apt_opts update > /dev/null 2>&1 || true fi EOF - if [ -n "$version" ]; then - name="${name}=${version}" + if [ -f "$__object/parameter/source" ]; then + source_path="$(cat "$__object/parameter/source")" + tempfile="$($__remote_exec $__target_host "mktemp -t cidst.XXXXX.${source_path##*/}")" + + # IPv6 fix + if echo "${__target_host}" | grep -q -E '^[0-9a-fA-F:]+$' + then + my_target_host="[${__target_host}]" + else + my_target_host="${__target_host}" + fi + $__remote_copy "$source_path" "${my_target_host}:$tempfile" + + echo "$aptget $recommendsparam install $tempfile" + else + if [ -n "$version" ]; then + name="${name}=${version}" + fi + echo "$aptget $recommendsparam install $target_release '$name'" fi - echo "$aptget $recommendsparam install $target_release '$name'" echo "installed" >> "$__messages_out" ;; absent) diff --git a/cdist/conf/type/__package_apt/man.rst b/cdist/conf/type/__package_apt/man.rst index 4e6101a5..e97c2d52 100644 --- a/cdist/conf/type/__package_apt/man.rst +++ b/cdist/conf/type/__package_apt/man.rst @@ -38,6 +38,11 @@ version The version of the package to install. Default is to install the version chosen by the local package manager. +source + Source dpkg package to upload an install (instead of fetching + from the repositories). Dependencies will be collected and installed + from the usual sources though. + BOOLEAN PARAMETERS ------------------ diff --git a/cdist/conf/type/__package_apt/parameter/optional b/cdist/conf/type/__package_apt/parameter/optional index d6674f95..0ab71c80 100644 --- a/cdist/conf/type/__package_apt/parameter/optional +++ b/cdist/conf/type/__package_apt/parameter/optional @@ -2,3 +2,4 @@ name version state target-release +source