blob: b373379f54886029e94e13c99a2c5d2e7f5adf69 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
pkgname=escrcpy
pkgver=3.3.1
_electronversion=42
_nodeversion=24
pkgrel=1
pkgdesc="Display and control your Android device graphically with scrcpy.使用图形化的 Scrcpy 显示和控制您的 Android 设备"
arch=(
'aarch64'
'x86_64'
)
url="https://escrcpy.viarotel.eu.org/"
_ghurl="https://github.com/viarotel-org/escrcpy"
license=('MIT')
conflicts=("${pkgname}")
depends=(
"electron${_electronversion}"
'gnirehtet'
'scrcpy'
'android-tools'
)
makedepends=(
'gendesk'
'npm'
'nvm'
'pnpm'
'git'
'jq'
)
source=(
"${pkgname}-${pkgver}::git+${_ghurl}#tag=v${pkgver}"
"${pkgname}.sh"
)
sha256sums=('f529232a6f082b95a6da7adade3996e262015796ac934fef08255f1e8231cac4'
'cebedc3391cbab6d43f37fbf3a87ddaad16597cb5ea487a4d55b1f478d810082')
_ensure_local_nvm() {
local NVM_DIR="${srcdir}/.nvm"
source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
nvm install "${_nodeversion}"
nvm use "${_nodeversion}"
}
_get_project_dir() {
local d
while IFS= read -r d; do
find "$d" -name "package.json" ! -path "*/node_modules/*" 2>/dev/null | grep -q . && { echo "$d"; return; }
done < <(find "${srcdir}" -maxdepth 1 -mindepth 1 -type d ! -name '.*')
}
_get_app_dir() {
find "${srcdir}" -type f -name "resources.pak" -print 2>/dev/null | while read f; do [ -d "${f%/*}/resources" ] && echo "${f%/*}" && break; done
}
_set_build_env() {
export ELECTRON_DIST="/usr/lib/electron${_electronversion}"
export ELECTRON_OVERRIDE_DIST_PATH="${ELECTRON_DIST}"
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
export ELECTRON_BUILDER_OFFLINE=true
export SYSTEM_ELECTRON_VERSION="$(electron${_electronversion} -v | sed 's/^v//')"
export HOME="${srcdir}/.home"
export XDG_CACHE_HOME="${HOME}/.cache"
export XDG_CONFIG_HOME="${HOME}/.config"
export XDG_DATA_HOME="${HOME}/.local/share"
export XDG_STATE_HOME="${HOME}/.local/state"
export PNPM_HOME="${HOME}/.pnpm/bin"
export pnpm_config_cache_dir="${HOME}/.pnpm_cache"
export pnpm_config_store_dir="${HOME}/.pnpm_store"
export pnpm_config_global_dir="${HOME}/.pnpm/global"
export pnpm_config_state_dir="${HOME}/.pnpm/state"
export pnpm_config_node_linker=hoisted
export pnpm_config_minimum_release_age=0
export pnpm_config_update_notifier=false
export COREPACK_NPM_REGISTRY="${COREPACK_NPM_REGISTRY:-${NPM_CONFIG_REGISTRY:-https://registry.npmjs.org}}"
export COREPACK_HOME="${HOME}/.corepack"
mkdir -p "${HOME}" "${PNPM_HOME}" "${pnpm_config_cache_dir}" "${pnpm_config_store_dir}" "${pnpm_config_global_dir}" "${pnpm_config_state_dir}" "${COREPACK_HOME}"
export PATH="${PNPM_HOME}:${PATH}"
local _pnpmver=""
local _pkgjson="$(_get_project_dir)/package.json"
if [ -f "${_pkgjson}" ]; then
_pnpmver="$(grep -o '"packageManager"[^,]*' "${_pkgjson}" 2>/dev/null | grep -oE 'pnpm@[^"+]+' | head -n1 | sed 's/^pnpm@//')"
if [ -z "${_pnpmver}" ]; then
_pnpmver="$(grep -oE '"pnpm"[[:space:]]*:[[:space:]]*"[^"]+"' "${_pkgjson}" 2>/dev/null | grep -oE '[0-9][0-9.]*' | head -n1)"
fi
fi
if [ -n "${_pnpmver}" ]; then
npm install -g "pnpm@${_pnpmver}" --prefix "${HOME}/.pnpm" \
--registry "${COREPACK_NPM_REGISTRY}"
fi
}
_get_electron_version() {
_elec_ver=$(find "$(_get_project_dir)" -name "package.json" ! -path "*/node_modules/*" -print \
| xargs -I{} jq -r '(.devDependencies.electron // .dependencies.electron) // empty' {} 2>/dev/null \
| grep -oE '[0-9]+' | head -1)
[[ -z "${_elec_ver}" ]] && return 1
(( _elec_ver == _electronversion )) && c=32 || c=31
echo -e "Electron version: \033[1;${c}m${_elec_ver}$([[ $c -eq 31 ]] && echo " (expected ${_electronversion})")\033[0m"
}
prepare() {
cd "$(_get_project_dir)"
_get_electron_version
sed -i -e "
s/@electronversion@/${_electronversion}/g
s/@appname@/${pkgname}/g
s/@runname@/app.asar/g
" "${srcdir}/${pkgname}.sh"
gendesk -q -f -n \
--pkgname="${pkgname}" \
--pkgdesc="${pkgdesc}" \
--categories="Utility" \
--name="${pkgname}" \
--exec="${pkgname} %U"
_ensure_local_nvm
_set_build_env
find desktop/{electron,src} -type f -exec sed -i "s/process.resourcesPath/\"\/usr\/lib\/${pkgname}\"/g" {} \;
jq --arg ver "${SYSTEM_ELECTRON_VERSION}" '.devDependencies.electron = $ver' package.json > package.json.tmp && mv package.json.tmp package.json
ln -sf "/usr/share/scrcpy/scrcpy-server" desktop/electron/resources/extra/common/scrcpy/scrcpy-server
ln -sf "/usr/share/scrcpy/scrcpy-server" desktop/electron/resources/extra/common/wscrcpy/scrcpy-server
case "${CARCH}" in
aarch64) _arch="linux-arm64" ;;
x86_64) _arch="linux-x64" ;;
esac
_extra="desktop/electron/resources/extra/${_arch}"
ln -sf "/usr/bin/adb" "${_extra}/scrcpy/adb"
ln -sf "/usr/bin/fastboot" "${_extra}/scrcpy/fastboot"
ln -sf "/usr/bin/scrcpy" "${_extra}/scrcpy/scrcpy"
ln -sf "/usr/share/scrcpy/scrcpy-server" "${_extra}/scrcpy/scrcpy-server"
[[ "${CARCH}" == "x86_64" ]] && ln -sf "/usr/bin/gnirehtet" "${_extra}/gnirehtet/gnirehtet"
[[ "${CARCH}" == "aarch64" ]] && ln -sf "/usr/bin/adb" "${_extra}/scrcpy/scrcpy"
export NODE_ENV=development
pnpm install
}
build() {
cd "$(_get_project_dir)"
_ensure_local_nvm
_set_build_env
export NODE_ENV=production
for pkg in packages/*; do
[[ -d "${pkg}" ]] && (cd "${pkg}" && pnpm build)
done
cd desktop
pnpm build
pnpm -c exec "electron-builder --linux dir -c.electronDist=${ELECTRON_DIST} --config electron-builder.config.js"
}
package() {
install -Dm755 "${srcdir}/${pkgname}.sh" "${pkgdir}/usr/bin/${pkgname}"
install -Dm755 -d "${pkgdir}/usr/lib/${pkgname}"
local _app_dir="$(_get_app_dir)"
rm -rf "${_app_dir}/resources/default_app.asar"
cp -a "${_app_dir}/resources/." "${pkgdir}/usr/lib/${pkgname}/"
install -Dm755 -d "${pkgdir}/usr/lib/${pkgname}/lib"
ln -sf "/usr/lib/${pkgname}/app.asar.unpacked/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3" \
"${pkgdir}/usr/lib/${pkgname}/lib/libvips-cpp.so.8.17.3"
install -Dm644 "${srcdir}/${pkgname}-${pkgver}/${pkgname}.desktop" -t "${pkgdir}/usr/share/applications"
install -Dm644 "${srcdir}/${pkgname}-${pkgver}/desktop/electron/resources/build/logo.png" "${pkgdir}/usr/share/pixmaps/${pkgname}.png"
install -Dm644 "${srcdir}/${pkgname}-${pkgver}/LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}"
}
|