Skip to content

add gn gen

add gn gen #36

Workflow file for this run

name: build-v8
on:
schedule:
# запуск ежегодно (в 00:00, 15-го января, независимо от дня недели)
- cron: "0 0 15 1 *"
push:
# запуск только при пуше в мастер
branches:
- "master"
# запуск, если изменился код пакета или пайплайна
paths:
- ".github/workflows/**/*"
jobs:
build-v8:
runs-on: ubuntu-latest
timeout-minutes: 120
steps:
- uses: actions/checkout@v3
- name: install gclient
run: |
git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
PATH=$GITHUB_WORKSPACE/depot_tools:$PATH
gclient
- name: download v8
run: |
mkdir v8-src && cd v8-src
PATH=$GITHUB_WORKSPACE/depot_tools:$PATH
fetch v8
- name: sync v8
run: |
cd v8-src/v8
PATH=$GITHUB_WORKSPACE/depot_tools:$PATH
gclient sync
- name: build v8
run: |
PATH=$GITHUB_WORKSPACE/depot_tools:$PATH
cd v8-src/v8
echo "v8_use_external_startup_data = false" > ./build/args/tv-args.gn
echo 'import("//build/args/custom.gn")' > out/x64.release/args.gn
gn gen out/x64.release
./build/install-build-deps.sh
./tools/dev/gm.py x64.release.check
- name: get needed files for debian package
run: |
cd ./v8-src/v8/out/x64.release
mkdir -p "$GITHUB_WORKSPACE/v8js/topvisor/v8js"
cp \
d8 \
libchrome_zlib.so \
libchrome_zlib.so.TOC \
libc++.so \
libicuuc.so \
libicuuc.so.TOC \
libthird_party_abseil-cpp_absl.so \
libthird_party_abseil-cpp_absl.so.TOC \
libthird_party_icu_icui18n.so \
libthird_party_icu_icui18n.so.TOC \
libv8_libbase.so \
libv8_libbase.so.TOC \
libv8_libplatform.so \
libv8_libplatform.so.TOC \
libv8.so \
libv8.so.TOC \
v8_build_config.json \
--target-directory "$GITHUB_WORKSPACE/v8js/topvisor/v8js"
- name: define v8 version
id: definingV8Version
run: |
v8Version="$($GITHUB_WORKSPACE/v8js/topvisor/v8js/d8 <<< "console.log('hi');" | head -n 1 | awk '{ print $3 }' | awk -F'.' '{ print $1,$2 }' | tr ' ' '.')"
arch="$(awk '{ if ($1 ~ "Architecture:") { print $2 } }' "$GITHUB_WORKSPACE/v8js/DEBIAN/control")"
echo "v8Version=$v8Version" >> $GITHUB_OUTPUT
echo "arch=$arch" >> $GITHUB_OUTPUT
- name: build debian package
run: |
v8Version=${{ steps.definingV8Version.outputs.v8Version }}
arch=${{ steps.definingV8Version.outputs.arch }}
sed -i "s/^Version:.*/Version: $v8Version/g" "$GITHUB_WORKSPACE/v8js/DEBIAN/control"
dpkg-deb --build v8js
mv v8js.deb v8js.$v8Version.$arch.deb
- name: upload artifacts to release
env:
GH_TOKEN: ${{ github.token }}
run: |
v8Version=${{ steps.definingV8Version.outputs.v8Version }}
arch=${{ steps.definingV8Version.outputs.arch }}
# скачать список тегов
git fetch --tags origin
revlist="$(git rev-list --tags --max-count=1)"
# взять последний тег
if [ -z "$revlist" ]; then
latestVersion="v1.0.0"
else
latestVersion="$(git describe --tags "$revlist")"
fi
# вычислить новый тег
latestVersionPrefix="$(awk -F'.' '{ $NF=""; print }' <<< "$latestVersion" | tr " " ".")"
latestMinorVersion="$(sed "s/$latestVersionPrefix//g" <<< "$latestVersion")"
newMinorVersion=$(( $latestMinorVersion + 1 ))
newVersion="$latestVersionPrefix$newMinorVersion"
gh release create "$newVersion" ./v8js.$v8Version.$arch.deb