|
@@ -1,45 +1,34 @@
|
|
|
#!/usr/bin/env bash
|
|
|
-package_win32() (
|
|
|
- local NSSM_VERSION="nssm-2.24-101-g897c7ad"
|
|
|
- local NSSM_URL="https://nssm.cc/ci/${NSSM_VERSION}.zip"
|
|
|
- local FFMPEG_VERSION="ffmpeg-4.0.2-win32-static"
|
|
|
- local FFMPEG_URL="https://ffmpeg.zeranoe.com/builds/win32/static/${FFMPEG_VERSION}.zip"
|
|
|
- local ROOT=${1-$DEFAULT_ROOT}
|
|
|
- local OUTPUT_DIR=${2-$DEFAULT_OUTPUT_DIR}
|
|
|
- local PKG_DIR=${3-$DEFAULT_PKG_DIR}
|
|
|
- local ARCHIVE_CMD="zip -r"
|
|
|
- # Package portable build result
|
|
|
- if [ -d ${OUTPUT_DIR} ]; then
|
|
|
- echo -e "${CYAN}Packaging build in '${OUTPUT_DIR}' for `basename "${OUTPUT_DIR}"` to '${PKG_DIR}' with root '${ROOT}'.${NC}"
|
|
|
- local TEMP_DIR="$(mktemp -d)"
|
|
|
- wget ${NSSM_URL} -O ${TEMP_DIR}/nssm.zip
|
|
|
- wget ${FFMPEG_URL} -O ${TEMP_DIR}/ffmpeg.zip
|
|
|
- unzip ${TEMP_DIR}/nssm.zip -d $TEMP_DIR
|
|
|
- cp ${TEMP_DIR}/${NSSM_VERSION}/win32/nssm.exe ${OUTPUT_DIR}/nssm.exe
|
|
|
- unzip ${TEMP_DIR}/ffmpeg.zip -d $TEMP_DIR
|
|
|
- cp ${TEMP_DIR}/${FFMPEG_VERSION}/bin/ffmpeg.exe ${OUTPUT_DIR}/ffmpeg.exe
|
|
|
- cp ${TEMP_DIR}/${FFMPEG_VERSION}/bin/ffprobe.exe ${OUTPUT_DIR}/ffprobe.exe
|
|
|
- rm -r ${TEMP_DIR}
|
|
|
- cp ${ROOT}/deployment/windows/legacy/install-jellyfin.ps1 ${OUTPUT_DIR}/install-jellyfin.ps1
|
|
|
- cp ${ROOT}/deployment/windows/legacy/install.bat ${OUTPUT_DIR}/install.bat
|
|
|
- mkdir -p ${PKG_DIR}
|
|
|
- pushd ${OUTPUT_DIR}
|
|
|
- ${ARCHIVE_CMD} ${ROOT}/${PKG_DIR}/`basename "${OUTPUT_DIR}"`.zip .
|
|
|
- popd
|
|
|
- local EXIT_CODE=$?
|
|
|
- if [ $EXIT_CODE -eq 0 ]; then
|
|
|
- echo -e "${GREEN}[DONE] Packaging build in '${OUTPUT_DIR}' for `basename "${OUTPUT_DIR}"` to '${PKG_DIR}' with root '${ROOT}' complete.${NC}"
|
|
|
- else
|
|
|
- echo -e "${RED}[FAIL] Packaging build in '${OUTPUT_DIR}' for `basename "${OUTPUT_DIR}"` to '${PKG_DIR}' with root '${ROOT}' FAILED.${NC}"
|
|
|
- fi
|
|
|
- else
|
|
|
- echo -e "${RED}[FAIL] Build artifacts do not exist for ${OUTPUT_DIR}. Run build.sh first.${NC}"
|
|
|
- fi
|
|
|
-)
|
|
|
-source ../common.build.sh
|
|
|
|
|
|
-VERSION=`get_version ../..`
|
|
|
+args="${@}"
|
|
|
+declare -a docker_envvars
|
|
|
+for arg in ${args}; do
|
|
|
+ docker_envvars+=("-e ${arg}")
|
|
|
+done
|
|
|
|
|
|
-package_win32 ../.. `pwd`/dist/jellyfin_${VERSION}
|
|
|
+WORKDIR="$( pwd )"
|
|
|
|
|
|
-#TODO setup and maybe change above code to produce the Windows native zip format.
|
|
|
+package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
|
|
+output_dir="${WORKDIR}/pkg-dist"
|
|
|
+current_user="$( whoami )"
|
|
|
+image_name="jellyfin-windows-x86-build"
|
|
|
+
|
|
|
+# Determine if sudo should be used for Docker
|
|
|
+if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
|
|
+ && [[ ! ${EUID:-1000} -eq 0 ]] \
|
|
|
+ && [[ ! ${USER} == "root" ]] \
|
|
|
+ && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
|
|
+ docker_sudo="sudo"
|
|
|
+else
|
|
|
+ docker_sudo=""
|
|
|
+fi
|
|
|
+
|
|
|
+# Prepare temporary package dir
|
|
|
+mkdir -p "${package_temporary_dir}"
|
|
|
+# Set up the build environment Docker image
|
|
|
+${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
|
|
+# Build the DEBs and copy out to ${package_temporary_dir}
|
|
|
+${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
|
|
+# Move the DEBs to the output directory
|
|
|
+mkdir -p "${output_dir}"
|
|
|
+mv "${package_temporary_dir}"/* "${output_dir}"
|