Skip to content
This repository was archived by the owner on Nov 13, 2024. It is now read-only.

Commit 2af8d1f

Browse files
authored
Support binaryen version_98, plus other improvements (#15)
1 parent 8347471 commit 2af8d1f

File tree

1,921 files changed

+880157
-102
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,921 files changed

+880157
-102
lines changed

.github/workflows/pipeline.yml

Lines changed: 60 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,59 +6,76 @@ on:
66

77
jobs:
88

9-
build:
10-
name: build
11-
runs-on: ubuntu-20.04
9+
nix:
10+
name: nix-${{ matrix.os }}
11+
runs-on: ${{ matrix.os }}
12+
strategy:
13+
fail-fast: false
14+
matrix:
15+
os:
16+
- ubuntu-20.04
17+
- macos-10.15
1218
steps:
1319

14-
- name: setup-haskell
15-
uses: actions/setup-haskell@main
16-
with:
17-
stack-version: 2.3.3
18-
enable-stack: true
19-
stack-no-global: true
20-
21-
- name: setup-binaryen
22-
run: |
23-
curl \
24-
-o /tmp/binaryen.deb \
25-
http://deb.debian.org/debian/pool/main/b/binaryen/binaryen_97-1_amd64.deb
26-
sudo dpkg -i /tmp/binaryen.deb
27-
rm /tmp/binaryen.deb
28-
2920
- name: checkout
3021
uses: actions/checkout@v2
3122

32-
- name: build
23+
- name: setup-nix
24+
uses: cachix/install-nix-action@v11
25+
with:
26+
nix_path: nixpkgs=./nix/nixpkgs.nix
27+
28+
- name: setup-cachix
29+
uses: cachix/cachix-action@master
30+
with:
31+
name: asterius
32+
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
33+
34+
- name: test
3335
run: |
34-
stack test
36+
nix run -f . --arg systemBinaryen true -i binaryen.components.tests.test -c test
37+
nix run -f . --arg systemBinaryen false -i binaryen.components.tests.test -c test
3538
36-
sdist:
37-
name: sdist
38-
runs-on: ubuntu-20.04
39+
cabal-windows:
40+
name: cabal-windows
41+
runs-on: windows-2019
3942
steps:
4043

44+
- name: checkout
45+
uses: actions/checkout@v2
46+
4147
- name: setup-haskell
4248
uses: actions/setup-haskell@main
4349
with:
4450
ghc-version: 8.10.2
4551
cabal-version: 3.2.0.0
4652

47-
- name: setup-binaryen
53+
- name: test
4854
run: |
49-
curl \
50-
-o /tmp/binaryen.deb \
51-
http://deb.debian.org/debian/pool/main/b/binaryen/binaryen_97-1_amd64.deb
52-
sudo dpkg -i /tmp/binaryen.deb
53-
rm /tmp/binaryen.deb
55+
C:\msys64\msys2_shell.cmd -mingw64 -defterm -full-path -here -no-start -c "cabal v2-run binaryen:test"
56+
57+
sdist:
58+
name: sdist
59+
runs-on: ubuntu-20.04
60+
steps:
5461

5562
- name: checkout
5663
uses: actions/checkout@v2
5764

65+
- name: setup-nix
66+
uses: cachix/install-nix-action@v11
67+
with:
68+
nix_path: nixpkgs=./nix/nixpkgs.nix
69+
70+
- name: setup-cachix
71+
uses: cachix/cachix-action@master
72+
with:
73+
name: asterius
74+
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
75+
5876
- name: sdist
5977
run: |
60-
cabal check
61-
cabal v2-sdist all
78+
nix-shell --pure --run "cabal check && cabal v2-sdist all"
6279
6380
- name: upload-artifact
6481
uses: actions/upload-artifact@v2
@@ -71,26 +88,23 @@ jobs:
7188
runs-on: ubuntu-20.04
7289
steps:
7390

74-
- name: setup-haskell
75-
uses: actions/setup-haskell@main
76-
with:
77-
ghc-version: 8.10.2
78-
cabal-version: 3.2.0.0
79-
80-
- name: setup-binaryen
81-
run: |
82-
curl \
83-
-o /tmp/binaryen.deb \
84-
http://deb.debian.org/debian/pool/main/b/binaryen/binaryen_97-1_amd64.deb
85-
sudo dpkg -i /tmp/binaryen.deb
86-
rm /tmp/binaryen.deb
87-
8891
- name: checkout
8992
uses: actions/checkout@v2
9093

94+
- name: setup-nix
95+
uses: cachix/install-nix-action@v11
96+
with:
97+
nix_path: nixpkgs=./nix/nixpkgs.nix
98+
99+
- name: setup-cachix
100+
uses: cachix/cachix-action@master
101+
with:
102+
name: asterius
103+
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
104+
91105
- name: haddock
92106
run: |
93-
cabal v2-haddock --haddock-for-hackage --haddock-hyperlink-source --haddock-quickjump all
107+
nix-shell --pure --run "cabal v2-haddock --flags=system-binaryen --extra-include-dirs=\$binaryenIncludeDir --extra-lib-dirs=\$binaryenLibDir --haddock-for-hackage --haddock-hyperlink-source --haddock-quickjump all"
94108
95109
- name: upload-artifact
96110
uses: actions/upload-artifact@v2

README.md

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,44 @@ API][binaryen-api].
88

99
## Versioning
1010

11-
Binaryen evolves fast and can introduce C API changes in every release. Before
12-
building the Haskell bindings, please check the Binaryen version and make sure
11+
Starting from `0.0.5.0`, we bundle the C++ sources of `binaryen` with this
12+
package, so the package can be built and used as long as the C++ toolchain is
13+
present in the build environment. The `system-binaryen` Cabal flag defaults to
14+
`False`, but it can be manually enabled to link against the system-wide
15+
`binaryen` library and avoid building the bundled C++ library.
16+
17+
| Haskell bindings version | Bundled Binaryen version |
18+
| ------------------------ | ------------------------ |
19+
| 0.0.5.\* | version_98 |
20+
21+
Older versions of this package links against the system-wide `binaryen` library,
22+
so before building the package, please check the Binaryen version and make sure
1323
it's no less than the minimum version listed below.
1424

1525
| Haskell bindings version | Minimum Binaryen version |
16-
|--------------------------|--------------------------|
17-
| 0.0.1.* | version_91 |
18-
| 0.0.2.* | version_94 |
19-
| 0.0.3.* | version_96 |
20-
| 0.0.4.* | version_97 |
21-
26+
| ------------------------ | ------------------------ |
27+
| 0.0.1.\* | version_91 |
28+
| 0.0.2.\* | version_94 |
29+
| 0.0.3.\* | version_96 |
30+
| 0.0.4.\* | version_97 |
2231

2332
## How to build
2433

25-
This package relies on the system-provided Binaryen library. As long as that's
26-
available, a simple `stack build` or `cabal build` command should work.
34+
A simple `stack build` or `cabal build` command should work.
35+
36+
For Windows `cabal` users: run the build in a msys2 mingw64 shell.
2737

28-
`Nix`-based build is also supported. Install [Stack][stack] and [Nix][nix].
29-
Then,
38+
[`nix`][nix]-based build is also supported:
3039

3140
```shell
32-
$ stack --nix build
41+
$ nix-shell --pure --run "cabal v2-run binaryen:test"
42+
$ nix-shell --pure --run "cabal v2-run binaryen:test --flags=system-binaryen --extra-include-dirs=\$binaryenIncludeDir --extra-lib-dirs=\$binaryenLibDir"
3343
```
3444

45+
Use the [`asterius`][cachix-asterius] Cachix bucket for reusing binary cache
46+
built on CI.
47+
3548
[binaryen]: https://github.com/WebAssembly/binaryen
3649
[binaryen-api]: https://github.com/WebAssembly/binaryen/blob/master/src/binaryen-c.h
50+
[cachix-asterius]: https://app.cachix.org/cache/asterius
3751
[nix]: https://nixos.org/nix
38-
[stack]: https://docs.haskellstack.org/en/stable/README

Setup.hs

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)