From be5be38ee053b1ee45b9cede26c73f27c3f79e20 Mon Sep 17 00:00:00 2001 From: "Lucas C. Villa Real" Date: Sun, 11 Dec 2016 12:55:26 -0200 Subject: When multiple RPM files are provided and --app-name is given, then merge all the files into the same entry under /Programs. When multiple RPM files are provided and --app-name is not set, then each RPM file is installed under its own entry under /Programs. The target directories are chosen based on information extracted from the RPM files. --- bin/InstallPackage-RPM | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) (limited to 'bin') diff --git a/bin/InstallPackage-RPM b/bin/InstallPackage-RPM index 7ed233b..4e8c250 100755 --- a/bin/InstallPackage-RPM +++ b/bin/InstallPackage-RPM @@ -321,6 +321,29 @@ function deduce_program_name() { echo $name } +function prepare_program_entry() { + local rpmfile="$1" + + if [ ${#rpmfiles[@]} -gt 1 ] && Is_Entry "app-name" && [ ! -z "$programname" ] + then + # We have already prepared this program's entry on /Programs + return + fi + if Is_Entry "app-name" + then programname=$(Entry "app-name") + else programname="$(deduce_program_name $rpmfile)" + fi + if Is_Entry "version-number" + then programversion=$(Entry "version-number") + else programversion=$(printf "%s_%s" $(rpminfo --version "$rpmfile") $(rpminfo --release "$rpmfile")) + fi + + # Prepare /Programs tree and update program name (PrepareProgram may have changed its case) + PrepareProgram -t "$programname" "$programversion" + programname=$(ls $goboPrograms/ | grep -i "^${programname}$") + target="$goboPrograms/$programname/$programversion" +} + ### Operation ################################################################# Is_Writable "${goboPrograms}" || Verify_Superuser @@ -337,32 +360,25 @@ do rpmfiles+=( "$(readlink -f ${entry})" ) done -if Is_Entry "app-name" -then programname=$(Entry "app-name") -else programname="$(deduce_program_name ${rpmfiles[0]})" -fi -if Is_Entry "version-number" -then programversion=$(Entry "version-number") -else programversion=$(printf "%s_%s" $(rpminfo --version "${rpmfiles[0]}") $(rpminfo --release "${rpmfiles[0]}")) -fi - -PrepareProgram -t "$programname" "$programversion" - -# Update program name (PrepareProgram may have changed its case) -programname=$(ls $goboPrograms/ | grep -i "^${programname}$") -target="$goboPrograms/$programname/$programversion" +# These will be set by prepare_program_entry() +unset programname +unset programversion +unset target # Installation pipeline -Quiet pushd "$target" || Die "Could not enter $target" for rpmfile in "${rpmfiles[@]}" do Log_Normal "Processing $rpmfile" + prepare_program_entry "$rpmfile" + Quiet pushd "$target" || Die "Could not enter $target" + uncompress_rpm "$rpmfile" flatten_rpm "$rpmfile" populate_resources "$rpmfile" populate_dependencies "$rpmfile" + + Quiet popd done -Quiet popd # Symlinking if [ $(Entry "symlink") = "no" ] -- cgit v1.1