[vlc-devel] [PATCH] extras/package/apple: Add support for prebuilt contribs

Marvin Scholz epirat07 at gmail.com
Fri Oct 4 14:22:42 CEST 2019


---
 extras/package/apple/build.sh | 76 ++++++++++++++++++++++++++++++-----
 1 file changed, 65 insertions(+), 11 deletions(-)

diff --git a/extras/package/apple/build.sh b/extras/package/apple/build.sh
index 81e77aba5f..7f4ab3b402 100755
--- a/extras/package/apple/build.sh
+++ b/extras/package/apple/build.sh
@@ -53,7 +53,7 @@ readonly VLC_BUILD_DIR=$(pwd)
 # Whether verbose output is enabled or not
 VLC_SCRIPT_VERBOSE=0
 # Architecture of the host (OS that the result will run on)
-VLC_HOST_ARCH=x86_64
+VLC_HOST_ARCH="x86_64"
 # Host platform information
 VLC_HOST_PLATFORM=
 VLC_HOST_TRIPLET=
@@ -80,6 +80,15 @@ VLC_APPLE_SDK_PATH=
 # SDK version
 # Set in the validate_sdk_name function
 VLC_APPLE_SDK_VERSION=
+# Indicated if prebuilt contribs package
+# should be created
+VLC_MAKE_PREBUILT_CONTRIBS=0
+# Indicates that prebuit contribs should be
+# used instead of building the contribs from source
+VLC_USE_PREBUILT_CONTRIBS=0
+# User-provided URL from where to fetch contribs, empty
+# for the default chosen by contrib system
+VLC_PREBUILT_CONTRIBS_URL=${VLC_PREBUILT_CONTRIBS_URL:-""}
 
 ##########################################################
 #                    Helper functions                    #
@@ -88,11 +97,19 @@ VLC_APPLE_SDK_VERSION=
 # Print command line usage
 usage()
 {
-    echo "Usage: $VLC_SCRIPT_NAME [--arch=ARCH]"
-    echo " --arch=ARCH    architecture to build for"
+    echo "Usage: $VLC_SCRIPT_NAME [options]"
+    echo " --arch=ARCH    Architecture to build for"
     echo "                  (i386|x86_64|armv7|armv7s|arm64)"
-    echo " --sdk=SDK      name of the SDK to build with (see 'xcodebuild -showsdks')"
-    echo " --help         print this help"
+    echo " --sdk=SDK      Name of the SDK to build with (see 'xcodebuild -showsdks')"
+    echo " --help         Print this help"
+    echo ""
+    echo "Advanced options:"
+    echo " --package-contribs        Create a prebuilt contrib package"
+    echo " --with-prebuilt-contribs  Use prebuilt contribs instead of building"
+    echo "                           them from source"
+    echo "Environment variables:"
+    echo " VLC_PREBUILT_CONTRIBS_URL  URL to fetch the prebuilt contrib archive"
+    echo "                            from when --with-prebuilt-contribs is used"
 }
 
 # Print error message and terminate script with status 1
@@ -309,6 +326,15 @@ do
         --sdk=*)
             VLC_APPLE_SDK_NAME="${1#--sdk=}"
             ;;
+        --package-contribs)
+            VLC_MAKE_PREBUILT_CONTRIBS=1
+            ;;
+        --with-prebuilt-contribs)
+            VLC_USE_PREBUILT_CONTRIBS=1
+            ;;
+        VLC_PREBUILT_CONTRIBS_URL=*)
+            VLC_PREBUILT_CONTRIBS_URL="${1#VLC_PREBUILT_CONTRIBS_URL=}"
+            ;;
         *)
             echo >&2 "ERROR: Unrecognized option '$1'"
             usage
@@ -318,13 +344,22 @@ do
     shift
 done
 
+# Validate arguments
+if [ "$VLC_MAKE_PREBUILT_CONTRIBS" -gt "0" ] && 
+   [ "$VLC_USE_PREBUILT_CONTRIBS" -gt "0" ]; then
+    echo >&2 "ERROR: The --package-contribs and --with-prebuilt-contribs options"
+    echo >&2 "       can not be used together."
+    usage
+    exit 1
+fi
+
 # Check for some required tools before proceeding
 check_tool xcrun
 
 # TODO: Better command to get SDK name if none is set:
 # xcodebuild -sdk $(xcrun --show-sdk-path) -version | awk -F '[()]' '{ print $2; exit; }'
 # Aditionally a lot more is reported by this command, so this needs some more
-# awk parsing or something to get other values with just only query.
+# awk parsing or something to get other values with just one query.
 
 # Validate given SDK name
 validate_sdk_name "$VLC_APPLE_SDK_NAME"
@@ -401,8 +436,11 @@ echo ""
 ##########################################################
 #                     Contribs build                     #
 ##########################################################
-
-echo "Building contribs for $VLC_HOST_ARCH"
+if [ "$VLC_USE_PREBUILT_CONTRIBS" -gt "0" ]; then
+    echo "Fetching prebuilt contribs"
+else
+    echo "Building contribs for $VLC_HOST_ARCH"
+fi
 
 # For contribs set flag to error on partial availability
 set_host_envvars "-Werror=partial-availability"
@@ -436,10 +474,26 @@ mkdir -p "$VLC_CONTRIB_INSTALL_DIR"
     "${VLC_CONTRIB_OPTIONS[@]}" \
 || abort_err "Bootstrapping contribs failed"
 
-$MAKE list
+if [ "$VLC_USE_PREBUILT_CONTRIBS" -gt "0" ]; then
+    # Fetch prebuilt contribs
+    if [ -z "$VLC_PREBUILT_CONTRIBS_URL" ]; then
+        $MAKE prebuilt || abort_err "Fetching prebuilt contribs failed"
+    else
+        $MAKE prebuilt PREBUILT_URL="$VLC_PREBUILT_CONTRIBS_URL" \
+            || abort_err "Fetching prebuilt contribs from ${VLC_PREBUILT_CONTRIBS_URL} failed"
+    fi
+else
+    # Print list of contribs that will be built
+    $MAKE list
+
+    # Build contribs
+    $MAKE || abort_err "Building contribs failed"
 
-# Build contribs
-$MAKE || abort_err "Building contribs failed"
+    # Make prebuilt contribs package
+    if [ "$VLC_MAKE_PREBUILT_CONTRIBS" -gt "0" ]; then
+        $MAKE package || abort_err "Creating prebuilt contribs package failed"
+    fi
+fi
 
 echo ""
 
-- 
2.20.1 (Apple Git-117)



More information about the vlc-devel mailing list