mirror of
https://github.com/termux/termux-packages.git
synced 2025-05-31 12:52:11 +00:00
159 lines
7.2 KiB
Bash
159 lines
7.2 KiB
Bash
TERMUX_PKG_HOMEPAGE=https://github.com/microsoft/vscode
|
|
TERMUX_PKG_DESCRIPTION="Visual Studio Code - OSS"
|
|
TERMUX_PKG_LICENSE="MIT"
|
|
TERMUX_PKG_MAINTAINER="@termux-user-repository"
|
|
TERMUX_PKG_VERSION="1.100.2"
|
|
TERMUX_PKG_REVISION=3
|
|
TERMUX_PKG_SRCURL=git+https://github.com/microsoft/vscode
|
|
TERMUX_PKG_GIT_BRANCH="$TERMUX_PKG_VERSION"
|
|
TERMUX_PKG_DEPENDS="electron-for-code-oss, libx11, libxkbfile, libsecret, ripgrep"
|
|
TERMUX_PKG_BUILD_DEPENDS="electron-headers-for-code-oss"
|
|
TERMUX_PKG_ANTI_BUILD_DEPENDS="electron-for-code-oss"
|
|
TERMUX_PKG_BUILD_IN_SRC=true
|
|
TERMUX_PKG_NO_STATICSPLIT=true
|
|
TERMUX_PKG_NO_STRIP=true
|
|
TERMUX_PKG_HOSTBUILD=true
|
|
# Chromium doesn't support i686 on Linux.
|
|
TERMUX_PKG_EXCLUDED_ARCHES="i686"
|
|
TERMUX_PKG_AUTO_UPDATE=true
|
|
TERMUX_PKG_UPDATE_TAG_TYPE="latest-release-tag"
|
|
TERMUX_PKG_ON_DEVICE_BUILD_NOT_SUPPORTED=true
|
|
|
|
_setup_nodejs_20() {
|
|
local NODEJS_VERSION=20.19.1
|
|
local NODEJS_FOLDER=${TERMUX_PKG_CACHEDIR}/build-tools/nodejs-${NODEJS_VERSION}
|
|
|
|
if [ ! -x "$NODEJS_FOLDER/bin/node" ]; then
|
|
mkdir -p "$NODEJS_FOLDER"
|
|
local NODEJS_TAR_FILE=$TERMUX_PKG_TMPDIR/nodejs-$NODEJS_VERSION.tar.xz
|
|
termux_download https://nodejs.org/dist/v${NODEJS_VERSION}/node-v${NODEJS_VERSION}-linux-x64.tar.xz \
|
|
"$NODEJS_TAR_FILE" \
|
|
b6c4cedfc81fc544b9993bc8a3628b5c0aa7a169fbaa293460abc0418d0fabb6
|
|
tar -xf "$NODEJS_TAR_FILE" -C "$NODEJS_FOLDER" --strip-components=1
|
|
fi
|
|
export PATH="$NODEJS_FOLDER/bin:$PATH"
|
|
}
|
|
|
|
termux_step_post_get_source() {
|
|
# Ensure that code-oss supports node 20
|
|
local _node_version=$(cat .nvmrc | cut -d. -f1 -)
|
|
if [ "$_node_version" != 20 ]; then
|
|
termux_error_exit "Version mismatch: Expected 20, got $_node_version."
|
|
fi
|
|
|
|
# Check whether the prebuilt electron version matches the electron version from package.json
|
|
local _electron_verion="$(jq -r '.devDependencies.electron' $TERMUX_PKG_SRCDIR/package.json)"
|
|
local _header_version="$(. $TERMUX_SCRIPTDIR/x11-packages/electron-host-tools-for-code-oss/build.sh; echo $TERMUX_PKG_VERSION)"
|
|
if [ "$_electron_verion" != "$_header_version" ]; then
|
|
termux_error_exit "Version mismatch: version in package.json is $_electron_verion, prebuilt electron version $_header_version."
|
|
fi
|
|
|
|
# Use custom node-native-keymap
|
|
local _native_keymap_verion="$(jq -r ".dependencies.\"native-keymap\"" package.json | cut -d'^' -f2)"
|
|
local _native_keymap_src_url="https://registry.npmjs.org/native-keymap/-/native-keymap-$_native_keymap_verion.tgz"
|
|
local _native_keymap_sha256sum="SKIP_CHECKSUM"
|
|
local _native_keymap_path="$TERMUX_PKG_CACHEDIR/$(basename $_native_keymap_src_url)"
|
|
termux_download $_native_keymap_src_url $_native_keymap_path $_native_keymap_sha256sum
|
|
mkdir -p $TERMUX_PKG_SRCDIR/node-native-keymap-src
|
|
tar -xf $_native_keymap_path -C $TERMUX_PKG_SRCDIR/node-native-keymap-src --strip-components=1
|
|
|
|
# Replace package.json
|
|
jq ".dependencies.\"native-keymap\" = \"file:./node-native-keymap-src\"" package.json > package.json.tmp && mv package.json.tmp package.json
|
|
}
|
|
|
|
termux_step_host_build() {
|
|
_setup_nodejs_20
|
|
export DISABLE_V8_COMPILE_CACHE=1
|
|
(unset PREFIX prefix
|
|
npm install node-gyp)
|
|
export PATH="$TERMUX_PKG_HOSTBUILD_DIR/node_modules/.bin:$PATH"
|
|
}
|
|
|
|
termux_step_configure() {
|
|
_setup_nodejs_20
|
|
export PATH="$TERMUX_PKG_HOSTBUILD_DIR/node_modules/.bin:$PATH"
|
|
}
|
|
|
|
termux_step_make() {
|
|
unset PREFIX prefix
|
|
|
|
if [ $TERMUX_ARCH = "arm" ]; then
|
|
export NPM_CONFIG_ARCH=arm
|
|
CODE_ARCH=armhf
|
|
elif [ $TERMUX_ARCH = "x86_64" ]; then
|
|
export NPM_CONFIG_ARCH=x64
|
|
CODE_ARCH=x64
|
|
elif [ $TERMUX_ARCH = "aarch64" ]; then
|
|
export NPM_CONFIG_ARCH=arm64
|
|
CODE_ARCH=arm64
|
|
else
|
|
termux_error_exit "Unsupported arch: $TERMUX_ARCH"
|
|
fi
|
|
export npm_config_arch=$NPM_CONFIG_ARCH
|
|
export npm_config_nodedir=$TERMUX_PREFIX/lib/code-oss/node_headers
|
|
|
|
export CXX="$CXX -v -L$TERMUX_PREFIX/lib"
|
|
|
|
export DISABLE_V8_COMPILE_CACHE=1
|
|
npm install
|
|
npm run gulp vscode-linux-$CODE_ARCH-min
|
|
}
|
|
|
|
termux_step_make_install() {
|
|
mkdir -p $TERMUX_PREFIX/lib/code-oss
|
|
|
|
# Copy resources
|
|
rm -rf $TERMUX_PREFIX/lib/code-oss/resources/
|
|
mkdir -p $TERMUX_PREFIX/lib/code-oss/resources/
|
|
cp -r --no-preserve=ownership --preserve=mode package-build-root/VSCode-linux-$CODE_ARCH/resources/* $TERMUX_PREFIX/lib/code-oss/resources/
|
|
|
|
# Install the start script
|
|
mkdir -p $TERMUX_PREFIX/lib/code-oss/bin
|
|
cp package-build-root/VSCode-linux-$CODE_ARCH/bin/code-oss $TERMUX_PREFIX/lib/code-oss/bin/code-oss
|
|
sed -i "s|/usr/bin|$TERMUX_PREFIX/bin|g
|
|
s|/usr/share/code-oss|$TERMUX_PREFIX/lib/code-oss|g
|
|
s|/proc/version|/dev/null|g" $TERMUX_PREFIX/lib/code-oss/bin/code-oss
|
|
chmod +x $TERMUX_PREFIX/lib/code-oss/bin/code-oss
|
|
|
|
# Replace ripgrep
|
|
ln -sfr $TERMUX_PREFIX/bin/rg $TERMUX_PREFIX/lib/code-oss/resources/app/node_modules/@vscode/ripgrep/bin/rg
|
|
|
|
# Install appdata and desktop file
|
|
sed -i "s|@@NAME_SHORT@@|Code|g
|
|
s|@@NAME_LONG@@|Code - OSS|g
|
|
s|@@NAME@@|code-oss|g
|
|
s|@@ICON@@|com.visualstudio.code.oss|g
|
|
s|@@EXEC@@|$TERMUX_PREFIX/bin/code-oss|g
|
|
s|@@LICENSE@@|MIT|g" resources/linux/code{.appdata.xml,-workspace.xml,.desktop,-url-handler.desktop}
|
|
install -Dm600 resources/linux/code.appdata.xml $TERMUX_PREFIX/share/metainfo/code-oss.appdata.xml
|
|
install -Dm600 resources/linux/code-workspace.xml $TERMUX_PREFIX/share/mime/packages/code-oss.workspace.xml
|
|
install -Dm600 resources/linux/code.desktop $TERMUX_PREFIX/share/applications/code-oss.desktop
|
|
install -Dm600 resources/linux/code-url-handler.desktop $TERMUX_PREFIX/share/applications/code-oss-url-handler.desktop
|
|
install -Dm600 package-build-root/VSCode-linux-$CODE_ARCH/resources/app/resources/linux/code.png $TERMUX_PREFIX/share/pixmaps/com.visualstudio.code.oss.png
|
|
|
|
# Install binaries to $PREFIX/bin
|
|
ln -sfr $TERMUX_PREFIX/lib/code-oss/bin/code-oss $TERMUX_PREFIX/bin/code-oss
|
|
ln -sfr $TERMUX_PREFIX/bin/code-oss $TERMUX_PREFIX/bin/code
|
|
ln -sfr $TERMUX_PREFIX/bin/code-oss $TERMUX_PREFIX/bin/vscode
|
|
|
|
# Install shell completions
|
|
cp resources/completions/bash/code resources/completions/bash/code-oss
|
|
cp resources/completions/bash/code resources/completions/bash/vscode
|
|
cp resources/completions/zsh/_code resources/completions/zsh/_code-oss
|
|
cp resources/completions/zsh/_code resources/completions/zsh/_vscode
|
|
sed -i 's|@@APPNAME@@|code|g' resources/completions/{bash/code,zsh/_code}
|
|
sed -i 's|@@APPNAME@@|vscode|g' resources/completions/{bash/vscode,zsh/_vscode}
|
|
sed -i 's|@@APPNAME@@|code-oss|g' resources/completions/{bash/code-oss,zsh/_code-oss}
|
|
install -Dm600 resources/completions/bash/code $TERMUX_PREFIX/share/bash-completion/completions/code
|
|
install -Dm600 resources/completions/zsh/_code $TERMUX_PREFIX/share/zsh/site-functions/_code
|
|
install -Dm600 resources/completions/bash/vscode $TERMUX_PREFIX/share/bash-completion/completions/vscode
|
|
install -Dm600 resources/completions/zsh/_vscode $TERMUX_PREFIX/share/zsh/site-functions/_vscode
|
|
install -Dm600 resources/completions/bash/code-oss $TERMUX_PREFIX/share/bash-completion/completions/code-oss
|
|
install -Dm600 resources/completions/zsh/_code-oss $TERMUX_PREFIX/share/zsh/site-functions/_code-oss
|
|
|
|
# Install license files
|
|
mkdir -p $TERMUX_PREFIX/share/doc/code-oss
|
|
cp package-build-root/VSCode-linux-$CODE_ARCH/resources/app/LICENSE.txt $TERMUX_PREFIX/share/doc/code-oss/LICENSE
|
|
cp package-build-root/VSCode-linux-$CODE_ARCH/resources/app/ThirdPartyNotices.txt $TERMUX_PREFIX/share/doc/code-oss/ThirdPartyNotices.txt
|
|
}
|