Forráskód Böngészése

Test containerized apt download

bryan 3 napja
szülő
commit
5770c407a0
1 módosított fájl, 55 hozzáadás és 1 törlés
  1. 55 1
      installJRMC

+ 55 - 1
installJRMC

@@ -636,6 +636,7 @@ install_mc_repo() {
           repo_file="/etc/apt/sources.list.d/jriver.sources"
         fi
 
+        # Remove old repo
         old_repo_files=(
           "/etc/apt/sources.list.d/jriver.list"
           "/etc/apt/sources.list.d/jriver-beta.list"
@@ -748,6 +749,59 @@ acquire_deb() {
   ((found)) && [[ -f $MC_DEB ]]
 }
 
+acquire_deb_new() {
+  debug "Running: ${FUNCNAME[0]}"
+  declare -g MC_SOURCE
+  local fname
+
+  [[ -d $OUTPUT_DIR/SOURCES ]] || execute mkdir -p "$OUTPUT_DIR/SOURCES"
+
+  # Usually JRiver excludes the release number from the filename
+  # but in some cases (test builds) it may be included
+  if [[ $MC_RELEASE -gt 1 ]]; then
+    fname="MediaCenter-$MC_VERSION-$MC_RELEASE-$MC_ARCH.deb"
+  else
+    fname="MediaCenter-$MC_VERSION-$MC_ARCH.deb"
+  fi
+
+  declare -g MC_DEB="$OUTPUT_DIR/SOURCES/$fname"
+
+  # If deb file already exists, skip download
+  if [[ -f $MC_DEB ]]; then
+    if [[ $(stat -c%s "$MC_DEB") -lt 10000000 ]]; then
+      echo "Removing existing DEB under 10MB: $MC_DEB"
+      execute rm "$MC_DEB"
+    else
+      echo "Using existing DEB: $MC_DEB"
+      # Use dummy source since we don't know where it came from
+      # TODO could attach source tag to filename
+      MC_SOURCE="https://files.jriver-cdn.com/mediacenter/channels/v$MC_MVERSION/latest/$fname"
+      return 0
+    fi
+  fi
+
+  # Define the repositories to search
+  cnt=$(buildah from --quiet alpine:edge) &&
+  buildah run "$cnt" -- sh -c '
+    apk add apt &>/dev/null
+    mkdir -p /download
+    cat <<-EOF > /etc/apt/sources.list.d/jriver.sources
+			Types: deb
+			URIs: https://dist.jriver.com/latest/mediacenter/
+			Suites: '"$MC_REPO"'
+			Components: main
+			Architectures: amd64 armhf arm64
+		EOF
+    apt update --allow-insecure-repositories &>/dev/null
+    cd /download
+    apt download "mediacenter'"$MC_MVERSION"'"' &&
+  buildah copy "$cnt" /download/MediaCenter-"$MC_VERSION"*.deb "$OUTPUT_DIR/SOURCES/" &&
+  buildah rm "$cnt"
+
+  # Return if the download was successful
+  ((found)) && [[ -f $MC_DEB ]]
+}
+
 # @description Creates a SPEC file and builds the RPM from the source DEB using rpmbuild
 build_rpm() {
   debug "Running: ${FUNCNAME[0]}"
@@ -1720,7 +1774,7 @@ main() {
   fi
 
   if ((BUILD_SWITCH)) && [[ $ID != "arch" ]]; then
-    acquire_deb || { err "Could not download Media Center DEB package"; return 1; }
+    acquire_deb_new || { err "Could not download Media Center DEB package"; return 1; }
 
     if [[ $BUILD_TARGET =~ centos|fedora|suse || $CREATEREPO_TARGET =~ centos|fedora|suse ]]; then
       install_package dpkg rpm-build