new package: gn (#7290)

This commit is contained in:
YAKSH BARIYA 2021-09-03 23:16:03 +05:30 committed by GitHub
parent cddd8017a3
commit 2d38944910
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 117 additions and 0 deletions

View File

@ -55,6 +55,10 @@ source "$TERMUX_SCRIPTDIR/scripts/build/termux_download.sh"
# shellcheck source=scripts/build/setup/termux_setup_ghc.sh
source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_ghc.sh"
# Utility function for setting up GN toolchain.
# shellcheck source=scripts/build/setup/termux_setup_gn.sh
source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_gn.sh"
# Utility function for golang-using packages to setup a go toolchain.
# shellcheck source=scripts/build/setup/termux_setup_golang.sh
source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_golang.sh"

View File

@ -0,0 +1,11 @@
--- ./build/gen.py.orig 2021-08-09 14:54:18.428308993 +0530
+++ ./build/gen.py 2021-08-09 14:55:03.628308976 +0530
@@ -785,6 +785,8 @@
executables['gn']['libs'].extend(static_libraries.keys())
executables['gn_unittests']['libs'].extend(static_libraries.keys())
+ del executables['gn_unittests']
+
WriteGenericNinja(path, static_libraries, executables, cxx, ar, ld,
platform, host, options, cflags, ldflags,
libflags, include_dirs, libs)

50
packages/gn/build.sh Executable file
View File

@ -0,0 +1,50 @@
TERMUX_PKG_HOMEPAGE=https://gn.googlesource.com/gn
TERMUX_PKG_DESCRIPTION="Meta-build system that generates build files for Ninja"
TERMUX_PKG_LICENSE="BSD 3-Clause"
TERMUX_PKG_MAINTAINER="Yaksh Bariya <yakshbari4@gmail.com>"
# While updating commit hash here also update it in
# termux_setup_gn
_COMMIT=69ec4fca1fa69ddadae13f9e6b7507efa0675263
TERMUX_PKG_VERSION=0.1
TERMUX_PKG_RECOMMENDS="ninja"
TERMUX_PKG_SKIP_SRC_EXTRACT=true
TERMUX_PKG_BUILD_IN_SRC=true
termux_step_get_source() {
TERMUX_PKG_SRCURL=https://gn.googlesource.com/gn/+archive/$_COMMIT.tar.gz
# Prevent caching of builds
rm -rf $TERMUX_PKG_SRCDIR
# FIXME: We would like to enable checksums when downloading
# tar files, but they change each time as the tar metadata
# differs: https://github.com/google/gitiles/issues/84
GN_TARFILE=$TERMUX_PKG_CACHEDIR/gn_$_COMMIT.tar.gz
test ! -f $GN_TARFILE && termux_download \
$TERMUX_PKG_SRCURL \
$GN_TARFILE \
SKIP_CHECKSUM
mkdir -p $TERMUX_PKG_SRCDIR
tar xf $GN_TARFILE -C $TERMUX_PKG_SRCDIR
}
termux_step_configure() {
./build/gen.py \
--no-last-commit-position \
--no-static-libstdc++
cat <<- EOF > ./out/last_commit_position.h
#ifndef OUT_LAST_COMMIT_POSITION_H_
#define OUT_LAST_COMMIT_POSITION_H_
#define LAST_COMMIT_POSITION_NUM ${TERMUX_PKG_VERSION##0.}
#define LAST_COMMIT_POSITION "${TERMUX_PKG_VERSION}"
#endif // OUT_LAST_COMMIT_POSITION_H_
EOF
}
termux_step_make() {
termux_setup_ninja
ninja -C out/
}
termux_step_make_install() {
install -Dm755 -t $TERMUX_PREFIX/bin out/gn
}

View File

@ -0,0 +1,52 @@
termux_setup_gn() {
termux_setup_ninja
local GN_COMMIT=69ec4fca1fa69ddadae13f9e6b7507efa0675263
local GN_TARFILE=$TERMUX_COMMON_CACHEDIR/gn_$GN_COMMIT.tar.gz
local GN_SOURCE=https://gn.googlesource.com/gn/+archive/$GN_COMMIT.tar.gz
if [ "${TERMUX_PACKAGES_OFFLINE-false}" = "true" ]; then
GN_FOLDER=$TERMUX_SCRIPTDIR/build-tools/gn-$GN_COMMIT
else
GN_FOLDER=$TERMUX_COMMON_CACHEDIR/gn-$GN_COMMIT
fi
if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then
if [ ! -d "$GN_FOLDER" ]; then
# FIXME: We would like to enable checksums when downloading
# tar files, but they change each time as the tar metadata
# differs: https://github.com/google/gitiles/issues/84
termux_download \
$GN_SOURCE \
$GN_TARFILE \
SKIP_CHECKSUM
mkdir -p $GN_FOLDER
tar xf $GN_TARFILE -C $GN_FOLDER
local LAST_PWD=$(pwd)
cd $GN_FOLDER
(
unset CC CXX CFLAGS CXXFLAGS LD LDFLAGS AR AS CPP OBJCOPY OBJDUMP RANLIB READELF STRIP
./build/gen.py \
--no-last-commit-position
cat <<-EOF >./out/last_commit_position.h
#ifndef OUT_LAST_COMMIT_POSITION_H_
#define OUT_LAST_COMMIT_POSITION_H_
#define LAST_COMMIT_POSITION_NUM 1
#define LAST_COMMIT_POSITION "${GN_COMMIT}"
#endif // OUT_LAST_COMMIT_POSITION_H_
EOF
ninja -C out/
)
cd $LAST_PWD
fi
export PATH=$GN_FOLDER/out:$PATH
else
if [ "$(dpkg-query -W -f '${db:Status-Status}\n' gn 2>/dev/null)" != "installed" ]; then
echo "Package 'gn' is not installed."
echo "You can install it with"
echo
echo " pkg install gn"
echo
exit 1
fi
fi
}