mirror of https://github.com/Genymobile/scrcpy
Improve prebuilt system
This aims to fix two issues with the previous implementation: 1. the whole content of downloaded archives were extracted, while only few files are necessary; 2. the archives were extracted in the prebuild-deps/ directory as is. As a consequence of (2), the actual directory name relied on the root directory of the archive. For adb, this root directory was always "platform-tools", so when bumping the adb version, the target directory already existed and the dependency was not upgraded (the old one had to be removed manually). Expose common function to download a file and check its checksum, but let the custom script for each dependency extract only the needed files and reorganize the content if necessary.pull/3016/head
parent
eaba613633
commit
38cdcdda50
@ -1,4 +1 @@
|
|||||||
*
|
/data
|
||||||
!/.gitignore
|
|
||||||
!/Makefile
|
|
||||||
!/prepare-dep
|
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
.PHONY: prepare-win32 prepare-win64 \
|
|
||||||
prepare-ffmpeg-win32 \
|
|
||||||
prepare-ffmpeg-win64 \
|
|
||||||
prepare-sdl2 \
|
|
||||||
prepare-adb
|
|
||||||
|
|
||||||
prepare-win32: prepare-sdl2 prepare-ffmpeg-win32 prepare-adb
|
|
||||||
prepare-win64: prepare-sdl2 prepare-ffmpeg-win64 prepare-adb
|
|
||||||
|
|
||||||
# Use old FFmpeg version for win32, there are no new prebuilts
|
|
||||||
prepare-ffmpeg-win32:
|
|
||||||
@./prepare-dep https://github.com/Genymobile/scrcpy/releases/download/v1.16/ffmpeg-4.3.1-win32-shared.zip \
|
|
||||||
357af9901a456f4dcbacd107e83a934d344c9cb07ddad8aaf80612eeab7d26d2 \
|
|
||||||
ffmpeg-4.3.1-win32-shared
|
|
||||||
@./prepare-dep https://github.com/Genymobile/scrcpy/releases/download/v1.16/ffmpeg-4.3.1-win32-dev.zip \
|
|
||||||
230efb08e9bcf225bd474da29676c70e591fc94d8790a740ca801408fddcb78b \
|
|
||||||
ffmpeg-4.3.1-win32-dev
|
|
||||||
ln -sf ../ffmpeg-4.3.1-win32-dev/include ffmpeg-4.3.1-win32-shared/
|
|
||||||
|
|
||||||
prepare-ffmpeg-win64:
|
|
||||||
@./prepare-dep https://github.com/GyanD/codexffmpeg/releases/download/5.0/ffmpeg-5.0-full_build-shared.7z \
|
|
||||||
e5900f6cecd4c438d398bd2fc308736c10b857cd8dd61c11bcfb05bff5d1211a \
|
|
||||||
ffmpeg-5.0-full_build-shared
|
|
||||||
|
|
||||||
prepare-sdl2:
|
|
||||||
@./prepare-dep https://libsdl.org/release/SDL2-devel-2.0.20-mingw.tar.gz \
|
|
||||||
38094d82a857d6c62352e5c5cdec74948c5b4d25c59cbd298d6d233568976bd1 \
|
|
||||||
SDL2-2.0.20
|
|
||||||
|
|
||||||
prepare-adb:
|
|
||||||
@./prepare-dep https://dl.google.com/android/repository/platform-tools_r31.0.3-windows.zip \
|
|
||||||
0f4b8fdd26af2c3733539d6eebb3c2ed499ea1d4bb1f4e0ecc2d6016961a6e24 \
|
|
||||||
platform-tools
|
|
@ -0,0 +1,22 @@
|
|||||||
|
PREBUILT_DATA_DIR=data
|
||||||
|
|
||||||
|
checksum() {
|
||||||
|
local file="$1"
|
||||||
|
local sum="$2"
|
||||||
|
echo "$file: verifying checksum..."
|
||||||
|
echo "$sum $file" | sha256sum -c
|
||||||
|
}
|
||||||
|
|
||||||
|
get_file() {
|
||||||
|
local url="$1"
|
||||||
|
local file="$2"
|
||||||
|
local sum="$3"
|
||||||
|
if [[ -f "$file" ]]
|
||||||
|
then
|
||||||
|
echo "$file: found"
|
||||||
|
else
|
||||||
|
echo "$file: not found, downloading..."
|
||||||
|
wget "$url" -O "$file"
|
||||||
|
fi
|
||||||
|
checksum "$file" "$sum"
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
DIR=$(dirname ${BASH_SOURCE[0]})
|
||||||
|
cd "$DIR"
|
||||||
|
. common
|
||||||
|
mkdir -p "$PREBUILT_DATA_DIR"
|
||||||
|
cd "$PREBUILT_DATA_DIR"
|
||||||
|
|
||||||
|
DEP_DIR=platform-tools-31.0.3
|
||||||
|
|
||||||
|
FILENAME=platform-tools_r31.0.3-windows.zip
|
||||||
|
SHA256SUM=0f4b8fdd26af2c3733539d6eebb3c2ed499ea1d4bb1f4e0ecc2d6016961a6e24
|
||||||
|
|
||||||
|
if [[ -d "$DEP_DIR" ]]
|
||||||
|
then
|
||||||
|
echo "$DEP_DIR" found
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
get_file "https://dl.google.com/android/repository/$FILENAME" \
|
||||||
|
"$FILENAME" "$SHA256SUM"
|
||||||
|
|
||||||
|
mkdir "$DEP_DIR"
|
||||||
|
cd "$DEP_DIR"
|
||||||
|
|
||||||
|
ZIP_PREFIX=platform-tools
|
||||||
|
unzip "../$FILENAME" \
|
||||||
|
"$ZIP_PREFIX"/AdbWinApi.dll \
|
||||||
|
"$ZIP_PREFIX"/AdbWinUsbApi.dll \
|
||||||
|
"$ZIP_PREFIX"/adb.exe
|
||||||
|
mv "$ZIP_PREFIX"/* .
|
||||||
|
rmdir "$ZIP_PREFIX"
|
@ -1,61 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
url="$1"
|
|
||||||
sum="$2"
|
|
||||||
dir="$3"
|
|
||||||
|
|
||||||
checksum() {
|
|
||||||
local file="$1"
|
|
||||||
local sum="$2"
|
|
||||||
echo "$file: verifying checksum..."
|
|
||||||
echo "$sum $file" | sha256sum -c
|
|
||||||
}
|
|
||||||
|
|
||||||
get_file() {
|
|
||||||
local url="$1"
|
|
||||||
local file="$2"
|
|
||||||
local sum="$3"
|
|
||||||
if [[ -f "$file" ]]
|
|
||||||
then
|
|
||||||
echo "$file: found"
|
|
||||||
else
|
|
||||||
echo "$file: not found, downloading..."
|
|
||||||
wget "$url" -O "$file"
|
|
||||||
fi
|
|
||||||
checksum "$file" "$sum"
|
|
||||||
}
|
|
||||||
|
|
||||||
extract() {
|
|
||||||
local file="$1"
|
|
||||||
echo "Extracting $file..."
|
|
||||||
if [[ "$file" == *.zip ]]
|
|
||||||
then
|
|
||||||
unzip -q "$file"
|
|
||||||
elif [[ "$file" == *.tar.gz ]]
|
|
||||||
then
|
|
||||||
tar xf "$file"
|
|
||||||
elif [[ "$file" == *.7z ]]
|
|
||||||
then
|
|
||||||
7z x "$file"
|
|
||||||
else
|
|
||||||
echo "Unsupported file: $file"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
get_dep() {
|
|
||||||
local url="$1"
|
|
||||||
local sum="$2"
|
|
||||||
local dir="$3"
|
|
||||||
local file="${url##*/}"
|
|
||||||
if [[ -d "$dir" ]]
|
|
||||||
then
|
|
||||||
echo "$dir: found"
|
|
||||||
else
|
|
||||||
echo "$dir: not found"
|
|
||||||
get_file "$url" "$file" "$sum"
|
|
||||||
extract "$file"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
get_dep "$url" "$sum" "$dir"
|
|
@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
DIR=$(dirname ${BASH_SOURCE[0]})
|
||||||
|
cd "$DIR"
|
||||||
|
. common
|
||||||
|
mkdir -p "$PREBUILT_DATA_DIR"
|
||||||
|
cd "$PREBUILT_DATA_DIR"
|
||||||
|
|
||||||
|
DEP_DIR=ffmpeg-win32-4.3.1
|
||||||
|
|
||||||
|
FILENAME_SHARED=ffmpeg-4.3.1-win32-shared.zip
|
||||||
|
SHA256SUM_SHARED=357af9901a456f4dcbacd107e83a934d344c9cb07ddad8aaf80612eeab7d26d2
|
||||||
|
|
||||||
|
FILENAME_DEV=ffmpeg-4.3.1-win32-dev.zip
|
||||||
|
SHA256SUM_DEV=230efb08e9bcf225bd474da29676c70e591fc94d8790a740ca801408fddcb78b
|
||||||
|
|
||||||
|
if [[ -d "$DEP_DIR" ]]
|
||||||
|
then
|
||||||
|
echo "$DEP_DIR" found
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
get_file "https://github.com/Genymobile/scrcpy/releases/download/v1.16/$FILENAME_SHARED" \
|
||||||
|
"$FILENAME_SHARED" "$SHA256SUM_SHARED"
|
||||||
|
get_file "https://github.com/Genymobile/scrcpy/releases/download/v1.16/$FILENAME_DEV" \
|
||||||
|
"$FILENAME_DEV" "$SHA256SUM_DEV"
|
||||||
|
|
||||||
|
mkdir "$DEP_DIR"
|
||||||
|
cd "$DEP_DIR"
|
||||||
|
|
||||||
|
ZIP_PREFIX_SHARED=ffmpeg-4.3.1-win32-shared
|
||||||
|
unzip "../$FILENAME_SHARED" \
|
||||||
|
"$ZIP_PREFIX_SHARED"/bin/avutil-56.dll \
|
||||||
|
"$ZIP_PREFIX_SHARED"/bin/avcodec-58.dll \
|
||||||
|
"$ZIP_PREFIX_SHARED"/bin/avformat-58.dll \
|
||||||
|
"$ZIP_PREFIX_SHARED"/bin/swresample-3.dll \
|
||||||
|
"$ZIP_PREFIX_SHARED"/bin/swscale-5.dll
|
||||||
|
|
||||||
|
ZIP_PREFIX_DEV=ffmpeg-4.3.1-win32-dev
|
||||||
|
unzip "../$FILENAME_DEV" \
|
||||||
|
"$ZIP_PREFIX_DEV/include/*"
|
||||||
|
|
||||||
|
mv "$ZIP_PREFIX_SHARED"/* .
|
||||||
|
mv "$ZIP_PREFIX_DEV"/* .
|
||||||
|
rmdir "$ZIP_PREFIX_SHARED" "$ZIP_PREFIX_DEV"
|
@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
DIR=$(dirname ${BASH_SOURCE[0]})
|
||||||
|
cd "$DIR"
|
||||||
|
. common
|
||||||
|
mkdir -p "$PREBUILT_DATA_DIR"
|
||||||
|
cd "$PREBUILT_DATA_DIR"
|
||||||
|
|
||||||
|
DEP_DIR=ffmpeg-win64-5.0
|
||||||
|
|
||||||
|
FILENAME=ffmpeg-5.0-full_build-shared.7z
|
||||||
|
SHA256SUM=e5900f6cecd4c438d398bd2fc308736c10b857cd8dd61c11bcfb05bff5d1211a
|
||||||
|
|
||||||
|
if [[ -d "$DEP_DIR" ]]
|
||||||
|
then
|
||||||
|
echo "$DEP_DIR" found
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
get_file "https://github.com/GyanD/codexffmpeg/releases/download/5.0/$FILENAME" \
|
||||||
|
"$FILENAME" "$SHA256SUM"
|
||||||
|
|
||||||
|
mkdir "$DEP_DIR"
|
||||||
|
cd "$DEP_DIR"
|
||||||
|
|
||||||
|
ZIP_PREFIX=ffmpeg-5.0-full_build-shared
|
||||||
|
7z x "../$FILENAME" \
|
||||||
|
"$ZIP_PREFIX"/bin/avutil-57.dll \
|
||||||
|
"$ZIP_PREFIX"/bin/avcodec-59.dll \
|
||||||
|
"$ZIP_PREFIX"/bin/avformat-59.dll \
|
||||||
|
"$ZIP_PREFIX"/bin/swresample-4.dll \
|
||||||
|
"$ZIP_PREFIX"/bin/swscale-6.dll \
|
||||||
|
"$ZIP_PREFIX"/include
|
||||||
|
mv "$ZIP_PREFIX"/* .
|
||||||
|
rmdir "$ZIP_PREFIX"
|
@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
DIR=$(dirname ${BASH_SOURCE[0]})
|
||||||
|
cd "$DIR"
|
||||||
|
. common
|
||||||
|
mkdir -p "$PREBUILT_DATA_DIR"
|
||||||
|
cd "$PREBUILT_DATA_DIR"
|
||||||
|
|
||||||
|
DEP_DIR=SDL2-2.0.20
|
||||||
|
|
||||||
|
FILENAME=SDL2-devel-2.0.20-mingw.tar.gz
|
||||||
|
SHA256SUM=38094d82a857d6c62352e5c5cdec74948c5b4d25c59cbd298d6d233568976bd1
|
||||||
|
|
||||||
|
if [[ -d "$DEP_DIR" ]]
|
||||||
|
then
|
||||||
|
echo "$DEP_DIR" found
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
get_file "https://libsdl.org/release/$FILENAME" "$FILENAME" "$SHA256SUM"
|
||||||
|
|
||||||
|
mkdir "$DEP_DIR"
|
||||||
|
cd "$DEP_DIR"
|
||||||
|
|
||||||
|
TAR_PREFIX="$DEP_DIR" # root directory inside the tar has the same name
|
||||||
|
tar xf "../$FILENAME" --strip-components=1 \
|
||||||
|
"$TAR_PREFIX"/i686-w64-mingw32/bin/SDL2.dll \
|
||||||
|
"$TAR_PREFIX"/i686-w64-mingw32/include/ \
|
||||||
|
"$TAR_PREFIX"/i686-w64-mingw32/lib/ \
|
||||||
|
"$TAR_PREFIX"/x86_64-w64-mingw32/bin/SDL2.dll \
|
||||||
|
"$TAR_PREFIX"/x86_64-w64-mingw32/include/ \
|
||||||
|
"$TAR_PREFIX"/x86_64-w64-mingw32/lib/ \
|
Loading…
Reference in New Issue