Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

publish a source tarball with version and grammars #1875

Merged
merged 3 commits into from
Mar 29, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 88 additions & 21 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,81 @@
name: Release
on:
# schedule:
# - cron: '0 0 * * *' # midnight UTC

push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
## - release
- '[0-9]+.[0-9]+'
- '[0-9]+.[0-9]+.[0-9]+'

jobs:
fetch-grammars:
name: Fetch Grammars
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3

- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true

- name: Cache cargo registry
uses: actions/cache@v3
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-v2-cargo-registry-

- name: Cache cargo index
uses: actions/cache@v3
with:
path: ~/.cargo/git
key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-v2-cargo-index-

- name: Cache cargo target dir
uses: actions/cache@v3
with:
path: target
key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-v2-cargo-build-target-

- name: Fetch tree-sitter grammars
uses: actions-rs/cargo@v1
env:
HELIX_DISABLE_AUTO_GRAMMAR_BUILD: yes
with:
command: run
args: -- --grammar fetch

- name: Bundle grammars
run: tar cJf grammars.tar.xz -C runtime/grammars/sources .

- uses: actions/upload-artifact@v3
with:
name: grammars
path: grammars.tar.xz

dist:
name: Dist
needs: [fetch-grammars]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false # don't fail other jobs if one fails
matrix:
build: [x86_64-linux, aarch64-linux, x86_64-macos, x86_64-windows] #, x86_64-win-gnu, win32-msvc
build: [x86_64-linux, x86_64-macos, x86_64-windows] #, x86_64-win-gnu, win32-msvc
include:
- build: x86_64-linux
os: ubuntu-20.04
rust: stable
target: x86_64-unknown-linux-gnu
cross: false
- build: aarch64-linux
os: ubuntu-20.04
rust: stable
target: aarch64-unknown-linux-gnu
cross: true
# - build: aarch64-linux
# os: ubuntu-20.04
# rust: stable
# target: aarch64-unknown-linux-gnu
# cross: true
- build: x86_64-macos
os: macos-latest
rust: stable
Expand Down Expand Up @@ -54,6 +103,15 @@ jobs:
- name: Checkout sources
uses: actions/checkout@v3

- name: Download grammars
uses: actions/download-artifact@v2

- name: Move grammars under runtime
if: "!startsWith(matrix.os, 'windows')"
run: |
mkdir -p runtime/grammars/sources
tar xJf grammars/grammars.tar.xz -C runtime/grammars/sources

- name: Install ${{ matrix.rust }} toolchain
uses: actions-rs/toolchain@v1
with:
Expand Down Expand Up @@ -98,6 +156,7 @@ jobs:
else
cp "target/${{ matrix.target }}/release/hx" "dist/"
fi
rm -rf runtime/grammars/sources
cp -r runtime dist

- uses: actions/upload-artifact@v3
Expand All @@ -118,7 +177,7 @@ jobs:
- name: Calculate tag name
run: |
name=dev
if [[ $GITHUB_REF == refs/tags/v* ]]; then
if [[ $GITHUB_REF == refs/tags/* ]]; then
name=${GITHUB_REF:10}
fi
echo ::set-output name=val::$name
Expand All @@ -130,8 +189,13 @@ jobs:
run: |
set -ex

rm -rf tmp
mkdir tmp
source="$(pwd)"
mkdir -p runtime/grammars/sources
tar xJf grammars/grammars.tar.xz -C runtime/grammars/sources
rm -rf grammars

cd "$(mktemp -d)"
mv $source/bins-* .
mkdir dist

for dir in bins-* ; do
Expand All @@ -140,19 +204,22 @@ jobs:
exe=".exe"
fi
pkgname=helix-$TAG-$platform
mkdir tmp/$pkgname
cp LICENSE README.md tmp/$pkgname
mv bins-$platform/runtime tmp/$pkgname/
mv bins-$platform/hx$exe tmp/$pkgname
chmod +x tmp/$pkgname/hx$exe
mkdir $pkgname
cp $source/LICENSE $source/README.md $pkgname
mv bins-$platform/runtime $pkgname/
mv bins-$platform/hx$exe $pkgname
chmod +x $pkgname/hx$exe

if [ "$exe" = "" ]; then
tar cJf dist/$pkgname.tar.xz -C tmp $pkgname
tar cJf dist/$pkgname.tar.xz $pkgname
else
(cd tmp && 7z a -r ../dist/$pkgname.zip $pkgname)
7z a -r dist/$pkgname.zip $pkgname
fi
done

tar cJf dist/helix-$TAG-source.tar.xz -C $source .
mv dist $source/

- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
with:
Expand Down
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
22.03
7 changes: 5 additions & 2 deletions helix-term/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ use helix_loader::grammar::{build_grammars, fetch_grammars};
use std::borrow::Cow;
use std::process::Command;

const VERSION: &str = include_str!("../VERSION");

fn main() {
let git_hash = Command::new("git")
.args(&["rev-parse", "HEAD"])
Expand All @@ -11,8 +13,8 @@ fn main() {
.and_then(|x| String::from_utf8(x.stdout).ok());

let version: Cow<_> = match git_hash {
Some(git_hash) => format!("{} ({})", env!("CARGO_PKG_VERSION"), &git_hash[..8]).into(),
None => env!("CARGO_PKG_VERSION").into(),
Some(git_hash) => format!("{} ({})", VERSION, &git_hash[..8]).into(),
None => VERSION.into(),
};

if std::env::var("HELIX_DISABLE_AUTO_GRAMMAR_BUILD").is_err() {
Expand All @@ -21,6 +23,7 @@ fn main() {
}

println!("cargo:rerun-if-changed=../runtime/grammars/");
println!("cargo:rerun-if-changed=../VERSION");

println!("cargo:rustc-env=VERSION_AND_GIT_HASH={}", version);
}