aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucas C. Villa Real <lucasvr@gmail.com>2016-12-11 12:55:26 -0200
committerLucas C. Villa Real <lucasvr@gmail.com>2016-12-11 12:55:26 -0200
commitbe5be38ee053b1ee45b9cede26c73f27c3f79e20 (patch)
tree424fe1488c83ffbb45e6249de01a35c0b270b9bd
parent4516b577c112a40ada781fe3fa6ee3c94278b9bf (diff)
downloadThirdPartyInstallers-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-xbin/InstallPackage-RPM48
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" ]