mirror of
https://github.com/jellyfin/jellyfin-media-player.git
synced 2025-02-18 12:57:49 +00:00
Move to use the same FetchDependencies as we have in PMS
This can give us faster deps downloading since they can be locally cached.
This commit is contained in:
parent
7d0b1dcc8a
commit
fc9737dbac
@ -4,13 +4,22 @@ option(DISABLE_BUNDLED_DEPS "Disable the bundled deps on certain platforms" OFF)
|
||||
include(FetchDependencies)
|
||||
|
||||
if(APPLE AND NOT DISABLE_BUNDLED_DEPS)
|
||||
download_deps("plexmediaplayer-dependencies" dir DEPS_HASH)
|
||||
download_deps(
|
||||
"plexmediaplayer-dependencies"
|
||||
ARTIFACTNAME konvergo-depends
|
||||
DIRECTORY dir
|
||||
)
|
||||
message("dependencies are: ${dir}")
|
||||
set(DEFAULT_ROOT ${dir})
|
||||
endif(APPLE AND NOT DISABLE_BUNDLED_DEPS)
|
||||
|
||||
if(WIN32)
|
||||
download_deps("plexmediaplayer-windows-dependencies" dir DEPS_HASH)
|
||||
download_deps(
|
||||
"plexmediaplayer-windows-dependencies"
|
||||
DIRECTORY dir
|
||||
ARTIFACTNAME konvergo-depends-windows
|
||||
ARCHSTR mingw32-x86_64
|
||||
)
|
||||
message("dependencies are: ${dir}")
|
||||
set(DEFAULT_ROOT "${dir}")
|
||||
endif(WIN32)
|
||||
@ -37,4 +46,4 @@ if(WIN32)
|
||||
SHOW_PROGRESS
|
||||
EXPECTED_HASH SHA1=d3b4f70d6542fa42c8edd2b9b93fd0916bf20f07
|
||||
TLS_VERIFY OFF)
|
||||
endif(WIN32)
|
||||
endif(WIN32)
|
||||
|
@ -1,103 +1,120 @@
|
||||
set(DEP_DIR ${CMAKE_BINARY_DIR}/dependencies)
|
||||
include(CMakeParseArguments)
|
||||
|
||||
set(DEPENDENCY_CACHE_DIR ${CMAKE_SOURCE_DIR}/Dependencies CACHE PATH "Cache downloaded deps in this directory")
|
||||
set(DEPENDENCY_UNTAR_DIR ${CMAKE_BINARY_DIR}/dependencies CACHE PATH "Where to untar deps")
|
||||
|
||||
if(APPLE)
|
||||
set(OS "darwin")
|
||||
set(ARCHSTR "darwin-x86_64")
|
||||
elseif(WIN32)
|
||||
set(OS "windows")
|
||||
set(OS "windows-i386")
|
||||
set(ARCHSTR "windows-i386")
|
||||
elseif(UNIX)
|
||||
set(OS "linux")
|
||||
endif()
|
||||
set(ARCHSTR ${PLEX_BUILD_TYPE})
|
||||
endif(APPLE)
|
||||
|
||||
# note that hardcoding the ARCH here is not correct.
|
||||
set(ARCHSTR "${OS}-x86_64")
|
||||
|
||||
function(download_deps depname dirpath dephash)
|
||||
file(MAKE_DIRECTORY ${DEP_DIR})
|
||||
function(get_content_of_url)
|
||||
set(ARGS URL CONTENT_VAR FILENAME)
|
||||
cmake_parse_arguments(CU "" "${ARGS}" "" ${ARGN})
|
||||
if(NOT DEFINED CU_FILENAME)
|
||||
get_filename_component(CU_FILENAME ${CU_URL} NAME)
|
||||
endif(NOT DEFINED CU_FILENAME)
|
||||
|
||||
message(STATUS "Downloading ${depname}.hash.txt...")
|
||||
file(
|
||||
DOWNLOAD "https://nightlies.plex.tv/directdl/plex-dependencies/${depname}/latest/hash.txt" ${DEP_DIR}/${depname}-hash.txt
|
||||
STATUS HASH_STATUS
|
||||
)
|
||||
list(GET HASH_STATUS 0 SUCCESS)
|
||||
if(NOT EXISTS ${DEPENDENCY_CACHE_DIR}/${CU_FILENAME})
|
||||
message(STATUS "Downloading ${CU_URL} to ${CU_FILENAME}...")
|
||||
|
||||
if(SUCCESS EQUAL 0)
|
||||
file(STRINGS ${DEP_DIR}/${depname}-hash.txt DEP_HASH LIMIT_COUNT 1)
|
||||
file(
|
||||
DOWNLOAD ${CU_URL} ${DEPENDENCY_CACHE_DIR}/${CU_FILENAME}
|
||||
STATUS DL_STATUS
|
||||
)
|
||||
|
||||
if(depname STREQUAL plexmediaplayer-qt)
|
||||
set(DEP_DIRNAME "konvergo-qt-${ARCHSTR}-release-${DEP_HASH}")
|
||||
elseif(depname STREQUAL plexmediaplayer-dependencies)
|
||||
set(DEP_DIRNAME "konvergo-depends-${ARCHSTR}-release-${DEP_HASH}")
|
||||
elseif(depname STREQUAL plexmediaplayer-windows-dependencies)
|
||||
set(ARCHSTR "mingw32-x86_64")
|
||||
set(DEP_DIRNAME "konvergo-depends-windows-${ARCHSTR}-release-${DEP_HASH}")
|
||||
else()
|
||||
set(DEP_DIRNAME "${depname}-${ARCHSTR}-release-${DEP_HASH}")
|
||||
list(GET DL_STATUS 0 SUCCESS)
|
||||
if(NOT SUCCESS EQUAL 0)
|
||||
message(FATAL_ERROR "Failed to download ${CU_URL}")
|
||||
endif(NOT SUCCESS EQUAL 0)
|
||||
|
||||
endif(NOT EXISTS ${DEPENDENCY_CACHE_DIR}/${CU_FILENAME})
|
||||
|
||||
file(STRINGS ${DEPENDENCY_CACHE_DIR}/${CU_FILENAME} CVAR LIMIT_COUNT 1)
|
||||
set(${CU_CONTENT_VAR} ${CVAR} PARENT_SCOPE)
|
||||
endfunction(get_content_of_url)
|
||||
|
||||
function(download_deps DD_NAME)
|
||||
set(ARGS DIRECTORY BUILD_NUMBER ARTIFACTNAME VARIANT DEPHASH ARCHSTR)
|
||||
cmake_parse_arguments(DD "" "${ARGS}" "" ${ARGN})
|
||||
|
||||
if(NOT DEFINED DD_VARIANT)
|
||||
set(DD_VARIANT "release")
|
||||
endif(NOT DEFINED DD_VARIANT)
|
||||
|
||||
if(NOT DEFINED DD_ARTIFACTNAME)
|
||||
set(DD_ARTIFACTNAME ${DD_NAME})
|
||||
endif(NOT DEFINED DD_ARTIFACTNAME)
|
||||
|
||||
if(NOT DEFINED DD_BUILD_NUMBER)
|
||||
set(DD_BUILD_NUMBER "latest")
|
||||
endif(NOT DEFINED DD_BUILD_NUMBER)
|
||||
|
||||
if(NOT DEFINED DD_ARCHSTR)
|
||||
set(DD_ARCHSTR ${ARCHSTR})
|
||||
endif(NOT DEFINED DD_ARCHSTR)
|
||||
|
||||
set(BASE_URL "https://nightlies.plex.tv/directdl/plex-dependencies/${DD_NAME}/${DD_BUILD_NUMBER}")
|
||||
set(DEP_DIR ${DEPENDENCY_UNTAR_DIR}/${DD_ARCHSTR}-${DD_NAME}/${DD_BUILD_NUMBER}/)
|
||||
|
||||
set(HASH_FILENAME ${DD_NAME}-${DD_BUILD_NUMBER}-hash.txt)
|
||||
get_content_of_url(URL ${BASE_URL}/hash.txt CONTENT_VAR DEP_HASH FILENAME ${HASH_FILENAME})
|
||||
|
||||
message(STATUS "Dependency hash is: ${DEP_HASH}")
|
||||
|
||||
set(DEP_DIRNAME "${DD_ARTIFACTNAME}-${DD_ARCHSTR}-${DD_VARIANT}-${DEP_HASH}")
|
||||
set(DEP_FILENAME ${DEP_DIRNAME}.tbz2)
|
||||
|
||||
set(${DD_DIRECTORY} ${DEP_DIR}/${DEP_DIRNAME} PARENT_SCOPE)
|
||||
set(${DD_DEP_HASH} ${DEP_HASH} PARENT_SCOPE)
|
||||
|
||||
set(DEP_URL "${BASE_URL}/${DEP_FILENAME}")
|
||||
get_content_of_url(URL ${DEP_URL}.sha.txt CONTENT_VAR CONTENT_HASH)
|
||||
|
||||
if(NOT EXISTS ${DEP_DIR}/${DEP_DIRNAME})
|
||||
message(STATUS "Clearing out old dependencies ...")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory ${DEPENDENCY_UNTAR_DIR}/${DD_ARCHSTR}-${DD_NAME})
|
||||
file(MAKE_DIRECTORY ${DEP_DIR})
|
||||
|
||||
message(STATUS "Downloading ${DEP_FILENAME}...")
|
||||
|
||||
file(
|
||||
DOWNLOAD ${DEP_URL} ${DEPENDENCY_CACHE_DIR}/${DEP_FILENAME}
|
||||
SHOW_PROGRESS
|
||||
STATUS DEP_STATUS
|
||||
)
|
||||
|
||||
list(GET DEP_STATUS 0 DEP_SUCCESS)
|
||||
|
||||
if(NOT DEP_SUCCESS EQUAL 0)
|
||||
message(FATAL_ERROR "Failed to download ${DEP_URL}")
|
||||
endif()
|
||||
|
||||
set(DEP_FILENAME ${DEP_DIRNAME}.tbz2)
|
||||
set(DEP_URL "https://nightlies.plex.tv/directdl/plex-dependencies/${depname}/latest/${DEP_FILENAME}")
|
||||
message(STATUS "Unpacking ${DEP_FILENAME}...")
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E tar xjf ${DEPENDENCY_CACHE_DIR}/${DEP_FILENAME}
|
||||
WORKING_DIRECTORY ${DEP_DIR}
|
||||
)
|
||||
if(APPLE)
|
||||
message(STATUS "Fixing install library names...")
|
||||
execute_process(
|
||||
COMMAND ${PROJECT_SOURCE_DIR}/scripts/darwin/fix-install-names.py ${DEP_DIR}/${DEP_DIRNAME}
|
||||
WORKING_DIRECTORY ${DEP_DIR}
|
||||
)
|
||||
message(STATUS "Done")
|
||||
endif(APPLE)
|
||||
|
||||
set(${dirpath} ${DEP_DIR}/${DEP_DIRNAME} PARENT_SCOPE)
|
||||
set(${dephash} ${DEP_HASH} PARENT_SCOPE)
|
||||
if(EXISTS ${DEP_DIR}/${DEP_DIRNAME}/etc)
|
||||
message(STATUS "Removing etc in dependency bundle")
|
||||
file(REMOVE_RECURSE ${DEP_DIR}/${DEP_DIRNAME}/etc)
|
||||
endif(EXISTS ${DEP_DIR}/${DEP_DIRNAME}/etc)
|
||||
|
||||
if(NOT EXISTS ${DEP_DIR}/${DEP_DIRNAME})
|
||||
message(STATUS "Downloading ${DEP_FILENAME}.sha.txt...")
|
||||
file(DOWNLOAD ${DEP_URL}.sha.txt ${DEP_DIR}/${DEP_FILENAME}.sha.txt STATUS SHA_STATUS)
|
||||
|
||||
list(GET SHA_STATUS 0 SHASUCCESS)
|
||||
|
||||
if(SHASUCCESS EQUAL 0)
|
||||
file(STRINGS ${DEP_DIR}/${DEP_FILENAME}.sha.txt CONTENT_HASH_RAW LIMIT_COUNT 1)
|
||||
string(SUBSTRING ${CONTENT_HASH_RAW} 0 40 CONTENT_HASH)
|
||||
|
||||
message(STATUS "Downloading ${DEP_FILENAME}...")
|
||||
|
||||
file(
|
||||
DOWNLOAD ${DEP_URL} ${DEP_DIR}/${DEP_FILENAME}
|
||||
EXPECTED_HASH SHA1=${CONTENT_HASH}
|
||||
SHOW_PROGRESS
|
||||
STATUS DEP_STATUS
|
||||
)
|
||||
|
||||
list(GET DEP_STATUS 0 DEP_SUCCESS)
|
||||
|
||||
if(NOT DEP_SUCCESS EQUAL 0)
|
||||
message(FATAL_ERROR "Failed to download ${DEP_URL}")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${DEP_DIR}/${DEP_DIRNAME})
|
||||
message(STATUS "Unpacking ${DEP_FILENAME}...")
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E tar xjf ${DEP_DIR}/${DEP_FILENAME}
|
||||
WORKING_DIRECTORY ${DEP_DIR}
|
||||
)
|
||||
if(APPLE)
|
||||
message(STATUS "Fixing install library names...")
|
||||
execute_process(
|
||||
COMMAND ${PROJECT_SOURCE_DIR}/scripts/fix-install-names.py ${DEP_DIR}/${DEP_DIRNAME}
|
||||
WORKING_DIRECTORY ${DEP_DIR}
|
||||
)
|
||||
message(STATUS "Done")
|
||||
endif(APPLE)
|
||||
if(WIN32 AND EXISTS ${DEP_DIR}/${DEP_DIRNAME}/bin/mpv-1.def)
|
||||
message(STATUS "Fixing mpv.lib...")
|
||||
execute_process(
|
||||
COMMAND LIB /def:bin\\mpv-1.def /out:lib\\mpv.lib /MACHINE:X64
|
||||
WORKING_DIRECTORY ${DEP_DIR}/${DEP_DIRNAME}
|
||||
)
|
||||
endif(WIN32 AND EXISTS ${DEP_DIR}/${DEP_DIRNAME}/bin/mpv-1.def)
|
||||
endif()
|
||||
else(SHASUCCESS EQUAL 0)
|
||||
list(GET SHA_STATUS 1 SHAERROR)
|
||||
message(FATAL_ERROR "Failed to download ${DEP_FILENAME}.sha.txt error: ${SHAERROR}")
|
||||
endif(SHASUCCESS EQUAL 0)
|
||||
else(NOT EXISTS ${DEP_DIR}/${DEP_DIRNAME})
|
||||
message(STATUS "Directory ${DEP_DIR}/${DEP_DIRNAME} already exists, remove it to redownload")
|
||||
endif(NOT EXISTS ${DEP_DIR}/${DEP_DIRNAME})
|
||||
|
||||
else(SUCCESS EQUAL 0)
|
||||
list(GET HASH_STATUS 1 HASHERROR)
|
||||
message(FATAL_ERROR "Failed to download ${depname}.hash.txt error: ${HASHERROR}")
|
||||
endif(SUCCESS EQUAL 0)
|
||||
endfunction(download_deps depname)
|
||||
endfunction(download_deps DD_NAME)
|
||||
|
@ -1,7 +1,12 @@
|
||||
|
||||
include(FetchDependencies)
|
||||
if(NOT IS_DIRECTORY ${QTROOT})
|
||||
download_deps("plexmediaplayer-qt" dir QT_DEPS_HASH)
|
||||
download_deps(
|
||||
"plexmediaplayer-qt"
|
||||
DIRECTORY dir
|
||||
DEPHASH QT_DEPS_HASH
|
||||
ARTIFACTNAME konvergo-qt
|
||||
)
|
||||
set(QTROOT ${dir})
|
||||
endif()
|
||||
list(APPEND CMAKE_FIND_ROOT_PATH ${QTROOT})
|
||||
|
Loading…
x
Reference in New Issue
Block a user