diff options
author | Lucas C. Villa Real <lucasvr@gmail.com> | 2016-12-11 12:55:26 -0200 |
---|---|---|
committer | Lucas C. Villa Real <lucasvr@gmail.com> | 2016-12-11 12:55:26 -0200 |
commit | be5be38ee053b1ee45b9cede26c73f27c3f79e20 (patch) | |
tree | 424fe1488c83ffbb45e6249de01a35c0b270b9bd | |
parent | 4516b577c112a40ada781fe3fa6ee3c94278b9bf (diff) | |
download | ThirdPartyInstallers-be5be38ee053b1ee45b9cede26c73f27c3f79e20.tar.xz |
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.
-rwxr-xr-x | bin/InstallPackage-RPM | 48 |
1 files changed, 32 insertions, 16 deletions
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" ] |