Add nix as a build system
* Dynamically linked executables (ligo-bin) * Statically linked executables (ligo-static) * Docker (ligo-docker) * deb package (ligo-deb) * webide (ligo-editor) * webide docker (ligo-editor-docker) * website (ligo-website)
This commit is contained in:
parent
d0d495ccce
commit
edb3fce642
164
.gitlab-ci.yml
164
.gitlab-ci.yml
@ -15,6 +15,8 @@ stages:
|
|||||||
- ide-build
|
- ide-build
|
||||||
- ide-e2e-test
|
- ide-e2e-test
|
||||||
- ide-deploy
|
- ide-deploy
|
||||||
|
- nix
|
||||||
|
- nix-push
|
||||||
|
|
||||||
# TODO provide sensible CI for master
|
# TODO provide sensible CI for master
|
||||||
dont-merge-to-master:
|
dont-merge-to-master:
|
||||||
@ -42,6 +44,7 @@ dont-merge-to-master:
|
|||||||
- build-and-package-ubuntu-18-04
|
- build-and-package-ubuntu-18-04
|
||||||
- build-and-package-ubuntu-19-10
|
- build-and-package-ubuntu-19-10
|
||||||
before_script:
|
before_script:
|
||||||
|
- export COMMIT_DATE="$(git show --no-patch --format=%ci)"
|
||||||
- export TERM=dumb
|
- export TERM=dumb
|
||||||
- scripts/install_native_dependencies.sh
|
- scripts/install_native_dependencies.sh
|
||||||
- scripts/install_opam.sh # TODO: or scripts/install_build_environment.sh ?
|
- scripts/install_opam.sh # TODO: or scripts/install_build_environment.sh ?
|
||||||
@ -85,6 +88,7 @@ dont-merge-to-master:
|
|||||||
before_script:
|
before_script:
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
# rsync is needed by opam to sync a package installed from a local directory with the copy in ~/.opam
|
# rsync is needed by opam to sync a package installed from a local directory with the copy in ~/.opam
|
||||||
|
- export COMMIT_DATE="$(git show --no-patch --format=%ci)"
|
||||||
- export TERM=dumb
|
- export TERM=dumb
|
||||||
- scripts/install_native_dependencies.sh
|
- scripts/install_native_dependencies.sh
|
||||||
- scripts/install_opam.sh # TODO: or scripts/install_build_environment.sh ?
|
- scripts/install_opam.sh # TODO: or scripts/install_build_environment.sh ?
|
||||||
@ -117,6 +121,7 @@ build-current-docker-image:
|
|||||||
- build-and-package-debian-10
|
- build-and-package-debian-10
|
||||||
<<: *docker
|
<<: *docker
|
||||||
script:
|
script:
|
||||||
|
- export COMMIT_DATE="$(git show --no-patch --format=%ci)"
|
||||||
- sh scripts/build_docker_image.sh next
|
- sh scripts/build_docker_image.sh next
|
||||||
- sh scripts/test_cli.sh
|
- sh scripts/test_cli.sh
|
||||||
only:
|
only:
|
||||||
@ -281,3 +286,162 @@ deploy-handoff:
|
|||||||
rules:
|
rules:
|
||||||
- if: '$CI_COMMIT_REF_NAME == "dev"'
|
- if: '$CI_COMMIT_REF_NAME == "dev"'
|
||||||
when: always
|
when: always
|
||||||
|
|
||||||
|
|
||||||
|
##### The following jobs will replace the ones above! #####
|
||||||
|
# TODO: add jobs for deploying the website, build a docker image and deploy it
|
||||||
|
|
||||||
|
.prepare_nix: &prepare_nix
|
||||||
|
image: nixos/nix:latest
|
||||||
|
before_script:
|
||||||
|
- nix-env -f channel:nixos-unstable -iA gnutar gitMinimal cachix
|
||||||
|
- export COMMIT_DATE="$(git show --no-patch --format=%ci)"
|
||||||
|
- echo "sandbox = true" > /etc/nix/nix.conf
|
||||||
|
# A temporary caching solution
|
||||||
|
- cachix use balsoft
|
||||||
|
# TODO Don't upload everything, use a post-build-hook to only upload what can't be substituted
|
||||||
|
- cachix push -w balsoft &
|
||||||
|
|
||||||
|
# The binary produced is useless by itself
|
||||||
|
binary-nix:
|
||||||
|
stage: nix
|
||||||
|
<<: *prepare_nix
|
||||||
|
only:
|
||||||
|
- merge_requests
|
||||||
|
- dev
|
||||||
|
- /^.*-run-dev$/
|
||||||
|
script:
|
||||||
|
- nix-build nix -A ligo-bin
|
||||||
|
|
||||||
|
doc-nix:
|
||||||
|
stage: nix
|
||||||
|
<<: *prepare_nix
|
||||||
|
only:
|
||||||
|
- merge_requests
|
||||||
|
- dev
|
||||||
|
- /^.*-run-dev$/
|
||||||
|
script:
|
||||||
|
- nix-build nix -A ligo-doc
|
||||||
|
- cp -Lr result/share/doc result-doc
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- result-doc
|
||||||
|
|
||||||
|
test-nix:
|
||||||
|
stage: nix
|
||||||
|
<<: *prepare_nix
|
||||||
|
only:
|
||||||
|
- merge_requests
|
||||||
|
- dev
|
||||||
|
- /^.*-run-dev$/
|
||||||
|
script:
|
||||||
|
- nix-build nix -A ligo-coverage
|
||||||
|
- cp -Lr result/share/coverage result-coverage
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- result-coverage
|
||||||
|
|
||||||
|
# FIXME For some reason, e2e tests can't build on CI.
|
||||||
|
.webide-e2e-nix:
|
||||||
|
stage: nix
|
||||||
|
<<: *prepare_nix
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- tools/webide/**
|
||||||
|
when: always
|
||||||
|
- if: '$CI_COMMIT_REF_NAME =~ /^(dev|.*-run-dev)$/ && $CI_PROJECT_PATH == "ligolang/ligo"'
|
||||||
|
when: always
|
||||||
|
script:
|
||||||
|
- nix-build nix -A ligo-editor.e2e
|
||||||
|
|
||||||
|
docker-nix:
|
||||||
|
stage: nix
|
||||||
|
only:
|
||||||
|
- merge_requests
|
||||||
|
- dev
|
||||||
|
- /^.*-run-dev$/
|
||||||
|
<<: *prepare_nix
|
||||||
|
script:
|
||||||
|
- nix-build nix -A ligo-docker
|
||||||
|
- cp -L result ligo.tar.gz
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- ligo.tar.gz
|
||||||
|
|
||||||
|
docker-push-nix:
|
||||||
|
stage: nix-push
|
||||||
|
<<: *docker
|
||||||
|
dependencies:
|
||||||
|
- docker-nix
|
||||||
|
needs:
|
||||||
|
- docker-nix
|
||||||
|
rules:
|
||||||
|
# Only deploy docker when from the dev branch AND on the canonical ligolang/ligo repository
|
||||||
|
- if: '$CI_COMMIT_REF_NAME =~ /^(dev|.*-run-dev)$/ && $CI_PROJECT_PATH == "ligolang/ligo"'
|
||||||
|
when: always
|
||||||
|
script:
|
||||||
|
- echo ${LIGO_REGISTRY_PASSWORD} | docker login -u ${LIGO_REGISTRY_USER} --password-stdin
|
||||||
|
- docker load -i=./ligo.tar.gz
|
||||||
|
- export LIGO_REGISTRY_FULL_NAME=${LIGO_REGISTRY_IMAGE_BUILD:-ligolang/ligo}:$(if test "$CI_COMMIT_REF_NAME" = "dev"; then echo next-nix; else echo next-attempt-nix; fi)
|
||||||
|
- docker tag ligo "${LIGO_REGISTRY_FULL_NAME}"
|
||||||
|
- docker push "${LIGO_REGISTRY_FULL_NAME}"
|
||||||
|
|
||||||
|
webide-docker-nix:
|
||||||
|
stage: nix
|
||||||
|
only:
|
||||||
|
- merge_requests
|
||||||
|
- dev
|
||||||
|
- /^.*-run-dev$/
|
||||||
|
<<: *prepare_nix
|
||||||
|
script:
|
||||||
|
- nix-build nix -A ligo-editor-docker
|
||||||
|
- cp -L result webide.tar.gz
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- webide.tar.gz
|
||||||
|
|
||||||
|
|
||||||
|
webide-push-nix:
|
||||||
|
stage: nix-push
|
||||||
|
<<: *docker
|
||||||
|
dependencies:
|
||||||
|
- webide-docker-nix
|
||||||
|
needs:
|
||||||
|
- webide-docker-nix
|
||||||
|
rules:
|
||||||
|
# Only deploy docker when from the dev branch AND on the canonical ligolang/ligo repository
|
||||||
|
- if: '$CI_COMMIT_REF_NAME =~ /^(dev|.*-run-dev)$/ && $CI_PROJECT_PATH == "ligolang/ligo"'
|
||||||
|
when: always
|
||||||
|
script:
|
||||||
|
- echo "${CI_BUILD_TOKEN}" | docker login -u gitlab-ci-token --password-stdin registry.gitlab.com
|
||||||
|
- docker load -i=./webide.tar.gz
|
||||||
|
- docker tag ligo-editor "${WEBIDE_IMAGE_NAME}:nix${CI_COMMIT_SHORT_SHA}"
|
||||||
|
- docker push "${WEBIDE_IMAGE_NAME}:nix${CI_COMMIT_SHORT_SHA}"
|
||||||
|
|
||||||
|
static-binary-nix:
|
||||||
|
stage: nix
|
||||||
|
<<: *prepare_nix
|
||||||
|
only:
|
||||||
|
- dev
|
||||||
|
- /^.*-run-dev$/
|
||||||
|
script:
|
||||||
|
- nix-build nix -A ligo-static
|
||||||
|
# Check that the binary is truly static and has 0 dependencies
|
||||||
|
- test $(nix-store -q --references ./result | wc -l) -eq 0
|
||||||
|
- cp -Lr result/bin result-static
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- result-static
|
||||||
|
|
||||||
|
website-nix:
|
||||||
|
stage: nix
|
||||||
|
<<: *prepare_nix
|
||||||
|
only:
|
||||||
|
- dev
|
||||||
|
- /^.*-run-dev$/
|
||||||
|
script:
|
||||||
|
- nix-build nix -A ligo-website
|
||||||
|
- cp -Lr result/ result-website
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- result-website
|
||||||
|
@ -2,7 +2,11 @@ ARG target
|
|||||||
FROM ocaml/opam2:${target}
|
FROM ocaml/opam2:${target}
|
||||||
|
|
||||||
ARG ci_job_id
|
ARG ci_job_id
|
||||||
|
ARG ci_commit_sha
|
||||||
|
ARG commit_date
|
||||||
ENV CI_JOB_ID=$ci_job_id
|
ENV CI_JOB_ID=$ci_job_id
|
||||||
|
ENV CI_COMMIT_SHA=$ci_commit_sha
|
||||||
|
ENV COMMIT_DATE=$commit_date
|
||||||
|
|
||||||
RUN opam switch 4.07 && eval $(opam env)
|
RUN opam switch 4.07 && eval $(opam env)
|
||||||
|
|
||||||
|
17
gitlab-pages/website/package-lock.json
generated
17
gitlab-pages/website/package-lock.json
generated
@ -1,6 +1,8 @@
|
|||||||
{
|
{
|
||||||
"requires": true,
|
"name": "ligo-website",
|
||||||
|
"version": "0.0.1",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ligolang/docusaurus-theme-compact-ligo-ide": {
|
"@ligolang/docusaurus-theme-compact-ligo-ide": {
|
||||||
"version": "file:../../tools/compact-webide/packages/docusaurus-theme-compact-ligo-ide",
|
"version": "file:../../tools/compact-webide/packages/docusaurus-theme-compact-ligo-ide",
|
||||||
@ -1660,7 +1662,12 @@
|
|||||||
"debug": {
|
"debug": {
|
||||||
"version": "2.6.9",
|
"version": "2.6.9",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ms": "2.0.0"
|
"@nodelib/fs.stat": "^2.0.2",
|
||||||
|
"@nodelib/fs.walk": "^1.2.3",
|
||||||
|
"glob-parent": "^5.1.0",
|
||||||
|
"merge2": "^1.3.0",
|
||||||
|
"micromatch": "^4.0.2",
|
||||||
|
"picomatch": "^2.2.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"decamelize": {
|
"decamelize": {
|
||||||
@ -2017,10 +2024,8 @@
|
|||||||
"fill-range": {
|
"fill-range": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"requires": {
|
"requires": {
|
||||||
"extend-shallow": "^2.0.1",
|
"@docusaurus/types": "^2.0.0-alpha.50",
|
||||||
"is-number": "^3.0.0",
|
"sitemap": "^3.2.2"
|
||||||
"repeat-string": "^1.6.1",
|
|
||||||
"to-regex-range": "^2.1.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"find-up": {
|
"find-up": {
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
{
|
{
|
||||||
|
"name": "ligo-website",
|
||||||
|
"version": "0.0.1",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "docusaurus start --host 0.0.0.0 --port 3000",
|
"start": "docusaurus start --host 0.0.0.0 --port 3000",
|
||||||
"build": "docusaurus build",
|
"build": "docusaurus build",
|
||||||
|
9
nix/default.nix
Normal file
9
nix/default.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{ sources ? import ./sources.nix }@args:
|
||||||
|
let pkgs = import ./pkgs.nix args;
|
||||||
|
in {
|
||||||
|
inherit (pkgs)
|
||||||
|
ligo ligo-tests ligo-doc ligo-coverage
|
||||||
|
ligo-bin ligo-static ligo-docker ligo-deb
|
||||||
|
ligo-editor ligo-editor-docker
|
||||||
|
ligo-website;
|
||||||
|
}
|
10
nix/docker.nix
Normal file
10
nix/docker.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{ dockerTools, writeShellScriptBin, runCommand, mcpp, bash, coreutils, ligo, name ? "ligo" }:
|
||||||
|
let
|
||||||
|
tmp = runCommand "tmp" {} "mkdir -p $out/tmp";
|
||||||
|
in
|
||||||
|
dockerTools.buildLayeredImage {
|
||||||
|
inherit name;
|
||||||
|
tag = "latest";
|
||||||
|
contents = [ ligo tmp bash ];
|
||||||
|
config.Entrypoint = name;
|
||||||
|
}
|
71
nix/ligo-editor.nix
Normal file
71
nix/ligo-editor.nix
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
{ stdenv, lib, mkYarnPackage, nodejs, python2, ligo-bin, coreutils
|
||||||
|
, writeShellScriptBin, makeFontsConf, buildEnv, rsync, sources
|
||||||
|
, chromium ? null }:
|
||||||
|
let
|
||||||
|
yarnLock = ../tools/webide/yarn.lock;
|
||||||
|
|
||||||
|
installPhase = "mkdir $out; cp -Lr node_modules $out/node_modules";
|
||||||
|
|
||||||
|
server = mkYarnPackage {
|
||||||
|
name = "webide-server";
|
||||||
|
src = ../tools/webide/packages/server;
|
||||||
|
buildPhase = ''
|
||||||
|
cp ${../tools/webide/tsconfig.json} tsconfig.json
|
||||||
|
yarn --offline run build
|
||||||
|
rm node_modules/server/server
|
||||||
|
'';
|
||||||
|
doCheck = true;
|
||||||
|
checkPhase = "DATA_DIR=/tmp LIGO_CMD=${ligo-bin}/bin/ligo yarn --offline jest";
|
||||||
|
distPhase = "true";
|
||||||
|
inherit yarnLock installPhase;
|
||||||
|
};
|
||||||
|
client = mkYarnPackage rec {
|
||||||
|
name = "webide-client";
|
||||||
|
src = ../tools/webide/packages/client;
|
||||||
|
buildPhase = ''
|
||||||
|
export EXAMPLES_DIR=${../src/test/examples}
|
||||||
|
yarn --offline run build
|
||||||
|
rm node_modules/client/client
|
||||||
|
find deps/client/build -type f -exec sed -r "s,/nix/store/[a-z0-9]{32}-[^/]*,$out,g" -i '{}' \;
|
||||||
|
'';
|
||||||
|
distPhase = "true";
|
||||||
|
installPhase = "mkdir $out; cp -Lr deps/client/build $out";
|
||||||
|
inherit yarnLock;
|
||||||
|
# Downloads node-sass from the official github repo
|
||||||
|
# Uncomment the commented lines if you wish to build it from source
|
||||||
|
yarnPreBuild = "export SASS_BINARY_PATH=${sources.node-sass-bin}";
|
||||||
|
/* ''
|
||||||
|
mkdir -p "$HOME/.node-gyp/${nodejs.version}"
|
||||||
|
echo 9 > "$HOME/.node-gyp/${nodejs.version}/installVersion"
|
||||||
|
ln -sfv "${nodejs}/include" "$HOME/.node-gyp/${nodejs.version}"
|
||||||
|
'';
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
e2e = mkYarnPackage rec {
|
||||||
|
name = "webide-e2e";
|
||||||
|
src = ../tools/webide/packages/e2e;
|
||||||
|
# Provide puppeteer with chromium, since it can't download it inside the nix sandbox.
|
||||||
|
# Also, since we override nodejs in our overlays, import chromium from pure nixpkgs to avoid a rebuild
|
||||||
|
buildPhase = ''
|
||||||
|
export HOME="$(pwd)"
|
||||||
|
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
|
||||||
|
export PUPPETEER_EXECUTABLE_PATH=${(import (import ./sources.nix).nixpkgs {}).chromium.outPath}/bin/chromium
|
||||||
|
${ligo-editor}/bin/ligo-editor &
|
||||||
|
export API_HOST=http://localhost:8080
|
||||||
|
export FONTCONFIG_FILE=${makeFontsConf { fontDirectories = [ ]; }}
|
||||||
|
yarn --offline jest
|
||||||
|
'';
|
||||||
|
distPhase = "true";
|
||||||
|
installPhase = "touch $out";
|
||||||
|
inherit yarnLock;
|
||||||
|
};
|
||||||
|
|
||||||
|
ligo-editor = writeShellScriptBin "ligo-editor" ''
|
||||||
|
set -e
|
||||||
|
LIGO_CMD=${ligo-bin}/bin/ligo \
|
||||||
|
STATIC_ASSETS=${client} \
|
||||||
|
DATA_DIR=/tmp \
|
||||||
|
${nodejs}/bin/node ${server}/node_modules/server/dist/src/index.js
|
||||||
|
'';
|
||||||
|
in ligo-editor // { inherit e2e; }
|
18
nix/ligo-website.nix
Normal file
18
nix/ligo-website.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{ buildNpmPackage, writeShellScriptBin, yarn, linkFarm, nodejs-slim, python2
|
||||||
|
, ligo-doc, ligo-deb, ligo-static }:
|
||||||
|
buildNpmPackage {
|
||||||
|
src = ../gitlab-pages/website;
|
||||||
|
npmBuild = "npm run build";
|
||||||
|
preBuild = ''
|
||||||
|
cp -r ${../gitlab-pages/docs} $NIX_BUILD_TOP/docs
|
||||||
|
chmod 700 -R $NIX_BUILD_TOP/docs
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
cp -Lr build $out
|
||||||
|
cp -r ${ligo-deb}/* $out/deb
|
||||||
|
mkdir -p $out/bin/linux
|
||||||
|
cp -r ${ligo-static}/bin/ligo $out/bin/linux/ligo
|
||||||
|
cp -r ${ligo-doc}/share/doc $out/odoc
|
||||||
|
'';
|
||||||
|
extraEnvVars.nativeBuildInputs = [ python2 ];
|
||||||
|
}
|
9
nix/mac-overlay.nix
Normal file
9
nix/mac-overlay.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
oself: osuper:
|
||||||
|
let
|
||||||
|
fixHardeningWarning = pkg: pkg.overrideAttrs (_: {
|
||||||
|
hardeningDisable = [ "strictoverflow" ];
|
||||||
|
});
|
||||||
|
in
|
||||||
|
{
|
||||||
|
hacl = fixHardeningWarning osuper.hacl;
|
||||||
|
}
|
5
nix/nodejs-overlay.nix
Normal file
5
nix/nodejs-overlay.nix
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
self: super: {
|
||||||
|
nodejs = super.nodejs-12_x;
|
||||||
|
nodePackages = super.nodePackages_12_x;
|
||||||
|
nodejs-slim = super.nodejs-slim-12_x;
|
||||||
|
}
|
140
nix/ocaml-overlay.nix
Normal file
140
nix/ocaml-overlay.nix
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
{ sources ? import ./sources.nix
|
||||||
|
, CI_COMMIT_SHA ? builtins.getEnv "CI_COMMIT_SHA"
|
||||||
|
, COMMIT_DATE ? builtins.getEnv "COMMIT_DATE" }:
|
||||||
|
self: super:
|
||||||
|
let
|
||||||
|
opam-nix = import sources.opam-nix (import sources.nixpkgs { });
|
||||||
|
inherit (import sources."gitignore.nix" { inherit (self) lib; })
|
||||||
|
gitignoreSource;
|
||||||
|
filterOut = xs:
|
||||||
|
self.lib.cleanSourceWith {
|
||||||
|
filter = p: type: !(builtins.elem (builtins.baseNameOf p) xs);
|
||||||
|
src = gitignoreSource ../.;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
ocamlPackages = self.ocaml-ng.ocamlPackages_4_07.overrideScope'
|
||||||
|
(builtins.foldl' self.lib.composeExtensions (_: _: { }) [
|
||||||
|
(opam-nix.traverseOPAMRepo' sources.opam-repository)
|
||||||
|
(opam-nix.traverseOPAMRepo sources.tezos-opam-repository)
|
||||||
|
(opam-nix.callOPAMPackage (filterOut [
|
||||||
|
".git"
|
||||||
|
".gitlab-ci.yml"
|
||||||
|
".gitignore"
|
||||||
|
"nix"
|
||||||
|
"docker"
|
||||||
|
"tools"
|
||||||
|
"gitlab-pages"
|
||||||
|
]))
|
||||||
|
(oself: osuper: {
|
||||||
|
ocamlfind = oself.findlib;
|
||||||
|
lablgtk = null;
|
||||||
|
lwt = oself.lwt4;
|
||||||
|
|
||||||
|
conf-gmp = self.gmp;
|
||||||
|
conf-libev = self.libev;
|
||||||
|
conf-hidapi = self.hidapi;
|
||||||
|
conf-pkg-config = self.pkg-config;
|
||||||
|
|
||||||
|
bigstring = osuper.bigstring.overrideAttrs (_: { doCheck = false; });
|
||||||
|
xmldiff = osuper.xmldiff.overrideAttrs (_: { src = sources.xmldiff; });
|
||||||
|
getopt = osuper.getopt.overrideAttrs (_: { configurePhase = "true"; });
|
||||||
|
|
||||||
|
ipaddr = osuper.ipaddr.versions."4.0.0";
|
||||||
|
conduit = osuper.conduit.versions."2.1.0";
|
||||||
|
conduit-lwt-unix = osuper.conduit-lwt-unix.versions."2.0.2";
|
||||||
|
cohttp-lwt-unix = osuper.cohttp-lwt-unix.versions."2.4.0";
|
||||||
|
cohttp-lwt = osuper.cohttp-lwt.versions."2.4.0";
|
||||||
|
macaddr = osuper.macaddr.versions."4.0.0";
|
||||||
|
ocaml-migrate-parsetree =
|
||||||
|
osuper.ocaml-migrate-parsetree.versions."1.4.0";
|
||||||
|
ppx_tools_versioned = osuper.ppx_tools_versioned.versions."5.2.3";
|
||||||
|
bisect_ppx = osuper.bisect_ppx.versions."2.0.0".overrideAttrs (_: {
|
||||||
|
src = builtins.fetchTarball
|
||||||
|
"https://github.com/aantron/bisect_ppx/archive/02dfb10188033a26d07d23480c2bc44a3a670357.tar.gz";
|
||||||
|
});
|
||||||
|
|
||||||
|
proto-alpha-utils = osuper.proto-alpha-utils.overrideAttrs (oa: rec {
|
||||||
|
buildInputs = oa.buildInputs
|
||||||
|
++ [ oself.tezos-protocol-006-PsCARTHA-parameters ];
|
||||||
|
propagatedBuildInputs = buildInputs;
|
||||||
|
});
|
||||||
|
tezos-protocol-compiler = osuper.tezos-protocol-compiler.overrideAttrs
|
||||||
|
(oa: rec {
|
||||||
|
buildInputs = oa.buildInputs ++ [ oself.pprint ];
|
||||||
|
propagatedBuildInputs = buildInputs;
|
||||||
|
});
|
||||||
|
|
||||||
|
ligo = self.buildEnv {
|
||||||
|
name = "ligo";
|
||||||
|
paths = with oself; [
|
||||||
|
ligo-out.out
|
||||||
|
ligo-tests
|
||||||
|
ligo-doc
|
||||||
|
ligo-coverage
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
ligo-out = osuper.ligo.overrideAttrs (oa: {
|
||||||
|
name = "ligo-out";
|
||||||
|
inherit CI_COMMIT_SHA COMMIT_DATE;
|
||||||
|
buildInputs = oa.buildInputs
|
||||||
|
++ [ oself.UnionFind oself.Preprocessor ];
|
||||||
|
nativeBuildInputs = oa.nativeBuildInputs
|
||||||
|
++ [ self.buildPackages.rakudo ];
|
||||||
|
});
|
||||||
|
ligo-tests = osuper.ligo.overrideAttrs (oa: {
|
||||||
|
name = "ligo-tests";
|
||||||
|
src = filterOut [
|
||||||
|
".git"
|
||||||
|
".gitlab-ci.yml"
|
||||||
|
".gitignore"
|
||||||
|
"nix"
|
||||||
|
"docker"
|
||||||
|
"tools"
|
||||||
|
];
|
||||||
|
outputs = [ "out" ];
|
||||||
|
buildPhase = "dune runtest";
|
||||||
|
nativeBuildInputs = oa.nativeBuildInputs
|
||||||
|
++ [ self.buildPackages.rakudo ];
|
||||||
|
installPhase = "mkdir $out";
|
||||||
|
});
|
||||||
|
ligo-doc = osuper.ligo.overrideAttrs (oa: {
|
||||||
|
name = "ligo-doc";
|
||||||
|
buildInputs = oa.buildInputs
|
||||||
|
++ [ oself.odoc oself.tezos-protocol-updater ];
|
||||||
|
outputs = [ "out" ];
|
||||||
|
buildPhase = "dune build @doc";
|
||||||
|
nativeBuildInputs = oa.nativeBuildInputs
|
||||||
|
++ [ self.buildPackages.rakudo ];
|
||||||
|
installPhase =
|
||||||
|
"mkdir $out; cp -r _build/default/_doc/_html/ $out/doc";
|
||||||
|
});
|
||||||
|
ligo-coverage = oself.ligo-tests.overrideAttrs (oa: {
|
||||||
|
name = "ligo-coverage";
|
||||||
|
nativeBuildInputs = oa.nativeBuildInputs
|
||||||
|
++ [ self.buildPackages.rakudo ];
|
||||||
|
buildPhase = ''
|
||||||
|
# Needed for coverage and nothing else
|
||||||
|
mkdir -p $out/share/coverage
|
||||||
|
echo "Coverage:"
|
||||||
|
BISECT_ENABLE=yes dune runtest --force
|
||||||
|
bisect-ppx-report html -o $out/share/coverage/all --title="LIGO overall test coverage"
|
||||||
|
bisect-ppx-report summary --per-file
|
||||||
|
echo "Test coverage:"
|
||||||
|
BISECT_ENABLE=yes dune runtest src/test --force
|
||||||
|
bisect-ppx-report html -o $out/share/coverage/ligo --title="LIGO test coverage"
|
||||||
|
bisect-ppx-report summary --per-file
|
||||||
|
echo "Doc coverage:"
|
||||||
|
BISECT_ENABLE=yes dune build @doc-test --force
|
||||||
|
bisect-ppx-report html -o $out/share/coverage/docs --title="LIGO doc coverage"
|
||||||
|
bisect-ppx-report summary --per-file
|
||||||
|
echo "CLI test coverage:"
|
||||||
|
BISECT_ENABLE=yes dune runtest src/bin/expect_tests
|
||||||
|
bisect-ppx-report html -o $out/share/coverage/cli --title="CLI test coverage"
|
||||||
|
bisect-ppx-report summary --per-file
|
||||||
|
'';
|
||||||
|
installPhase = "true";
|
||||||
|
});
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}
|
46
nix/packageDeb.nix
Normal file
46
nix/packageDeb.nix
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{ stdenv, lib, writeTextFile, ligo-static, dpkg }:
|
||||||
|
let
|
||||||
|
project = "ligo";
|
||||||
|
version = "0.0.0";
|
||||||
|
revision = lib.commitIdFromGitRepo ../.git;
|
||||||
|
pkgArch = "amd64";
|
||||||
|
bin = "${ligo-static}/bin/ligo";
|
||||||
|
pkgName = "${project}_0ubuntu${version}-${revision}_${pkgArch}";
|
||||||
|
depends = "";
|
||||||
|
maintainer = "ligolang ligolang.org";
|
||||||
|
description = "A friendly Smart Contract Language for Tezos";
|
||||||
|
|
||||||
|
writeControlFile = writeTextFile {
|
||||||
|
name = "control";
|
||||||
|
text = ''
|
||||||
|
Package: ${project}
|
||||||
|
Version: ${version}-${revision}
|
||||||
|
Priority: optional
|
||||||
|
Architecture: ${pkgArch}
|
||||||
|
Depends: ${depends}
|
||||||
|
Maintainer: ${maintainer}
|
||||||
|
Description: ${project}
|
||||||
|
${description}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
|
name = "${pkgName}.deb";
|
||||||
|
|
||||||
|
nativeBuildInputs = [ dpkg ];
|
||||||
|
|
||||||
|
phases = "packagePhase";
|
||||||
|
|
||||||
|
packagePhase = ''
|
||||||
|
mkdir ${pkgName}
|
||||||
|
mkdir -p ${pkgName}/usr/local/bin
|
||||||
|
cp ${bin} ${pkgName}/usr/local/bin/${project}
|
||||||
|
|
||||||
|
mkdir ${pkgName}/DEBIAN
|
||||||
|
cp ${writeControlFile} ${pkgName}/DEBIAN/control
|
||||||
|
|
||||||
|
dpkg-deb --build ${pkgName}
|
||||||
|
mkdir -p $out
|
||||||
|
cp ${name} $out/
|
||||||
|
'';
|
||||||
|
}
|
33
nix/pkgs.nix
Normal file
33
nix/pkgs.nix
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{ sources ? import ./sources.nix }:
|
||||||
|
let
|
||||||
|
ocaml-overlay = import ./ocaml-overlay.nix { inherit sources; };
|
||||||
|
static-overlay = import ./static-overlay.nix pkgs;
|
||||||
|
mac-overlay = import ./mac-overlay.nix;
|
||||||
|
nodejs-overlay = import ./nodejs-overlay.nix;
|
||||||
|
pkgs = import sources.nixpkgs {
|
||||||
|
overlays = [ ocaml-overlay nodejs-overlay ]
|
||||||
|
++ (if builtins.currentSystem == "x86_64-darwin"
|
||||||
|
then [ mac-overlay ]
|
||||||
|
else [ ]);
|
||||||
|
};
|
||||||
|
separateBinary = pkg:
|
||||||
|
pkgs.runCommandNoCC "${pkg.name}-bin" { }
|
||||||
|
"mkdir -p $out/bin; cp -Lr ${pkg}/ligo $out/bin";
|
||||||
|
|
||||||
|
nix-npm-buildpackage = pkgs.callPackage sources.nix-npm-buildpackage { };
|
||||||
|
in pkgs.extend (self: super: {
|
||||||
|
inherit (self.ocamlPackages) ligo ligo-out ligo-tests ligo-doc ligo-coverage;
|
||||||
|
ligo-bin = separateBinary self.ligo-out.bin;
|
||||||
|
ligo-docker = self.callPackage ./docker.nix { ligo = self.ligo-bin; };
|
||||||
|
ligo-deb = self.callPackage ./packageDeb.nix { };
|
||||||
|
ligo-editor = self.callPackage ./ligo-editor.nix { inherit sources; };
|
||||||
|
ligo-editor-docker = self.callPackage ./docker.nix {
|
||||||
|
ligo = self.ligo-editor;
|
||||||
|
name = "ligo-editor";
|
||||||
|
};
|
||||||
|
ligo-website = self.callPackage ./ligo-website.nix {
|
||||||
|
inherit (nix-npm-buildpackage) buildNpmPackage;
|
||||||
|
};
|
||||||
|
ligo-static = self.pkgsMusl.ligo-bin;
|
||||||
|
pkgsMusl = super.pkgsMusl.extend static-overlay;
|
||||||
|
})
|
87
nix/sources.json
Normal file
87
nix/sources.json
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"gitignore.nix": {
|
||||||
|
"branch": "master",
|
||||||
|
"description": "Nix function for filtering local git sources",
|
||||||
|
"homepage": "",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "2ced4519f865341adcb143c5d668f955a2cb997f",
|
||||||
|
"sha256": "0fc5bgv9syfcblp23y05kkfnpgh3gssz6vn24frs8dzw39algk2z",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/hercules-ci/gitignore.nix/archive/2ced4519f865341adcb143c5d668f955a2cb997f.tar.gz",
|
||||||
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
|
},
|
||||||
|
"nix-npm-buildpackage": {
|
||||||
|
"branch": "balsoft/local-deps",
|
||||||
|
"description": "Build nix packages that use npm/yarn",
|
||||||
|
"homepage": "",
|
||||||
|
"owner": "serokell",
|
||||||
|
"repo": "nix-npm-buildpackage",
|
||||||
|
"rev": "14d03b37cd421b281835ae245b6cbf5b84c26e80",
|
||||||
|
"sha256": "13lz138rcy2vfd13sa4l2r4y5nx7v5pslxfy1vdq2phpmnn9j9yb",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/serokell/nix-npm-buildpackage/archive/14d03b37cd421b281835ae245b6cbf5b84c26e80.tar.gz",
|
||||||
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"branch": "nixos-unstable",
|
||||||
|
"description": "Pinned Nixpkgs tree (master follows nixos-unstable-small, only tags have stable history)",
|
||||||
|
"homepage": "",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs-channels",
|
||||||
|
"rev": "3320a06049fc259e87a2bd98f4cd42f15f746b96",
|
||||||
|
"sha256": "1g5l186d5xh187vdcpfsz1ff8s749949c1pclvzfkylpar09ldkl",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/nixos/nixpkgs-channels/archive/3320a06049fc259e87a2bd98f4cd42f15f746b96.tar.gz",
|
||||||
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
|
},
|
||||||
|
"node-sass-bin": {
|
||||||
|
"sha256": "0dl91l414na44h090cgghd06q0j2whlj9h98im2qb9823glq7xff",
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://github.com/sass/node-sass/releases/download/v4.12.0/linux-x64-64_binding.node",
|
||||||
|
"url_template": "https://github.com/sass/node-sass/releases/download/v<version>/linux-x64-64_binding.node",
|
||||||
|
"version": "4.12.0"
|
||||||
|
},
|
||||||
|
"opam-nix": {
|
||||||
|
"branch": "master",
|
||||||
|
"description": "A handy nix library to package OCaml software from OPAM repositories",
|
||||||
|
"homepage": null,
|
||||||
|
"owner": "balsoft",
|
||||||
|
"repo": "opam-nix",
|
||||||
|
"rev": "75ad75c18b8d80d82c13dc30c3b8d70960b1b441",
|
||||||
|
"sha256": "0mcr32f5i71diysvpblbvgdnx2pdymwjb9nxz5gbcsib3vdg2p83",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/balsoft/opam-nix/archive/75ad75c18b8d80d82c13dc30c3b8d70960b1b441.tar.gz",
|
||||||
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
|
},
|
||||||
|
"opam-repository": {
|
||||||
|
"branch": "master",
|
||||||
|
"description": "Main public package repository for OPAM, the source package manager of OCaml.",
|
||||||
|
"homepage": "https://opam.ocaml.org",
|
||||||
|
"owner": "ocaml",
|
||||||
|
"repo": "opam-repository",
|
||||||
|
"rev": "d67e70b40203a6a1c77ccb2edbe136c1509a73a3",
|
||||||
|
"sha256": "1yphw9xcss284p51qnml5jvfs4mhjcjgdka3wk25q0437zdzqj4n",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/ocaml/opam-repository/archive/d67e70b40203a6a1c77ccb2edbe136c1509a73a3.tar.gz",
|
||||||
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
|
},
|
||||||
|
"tezos-opam-repository": {
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "https://gitlab.com/ligolang/tezos-opam-repository",
|
||||||
|
"rev": "dfc46bd895b070bd89028a7ad98741d05ec684df",
|
||||||
|
"type": "git"
|
||||||
|
},
|
||||||
|
"xmldiff": {
|
||||||
|
"branch": "master",
|
||||||
|
"description": "Diffs on XML trees",
|
||||||
|
"homepage": "http://zoggy.github.io/xmldiff",
|
||||||
|
"owner": "zoggy",
|
||||||
|
"repo": "xmldiff",
|
||||||
|
"rev": "5873df80c1ba8c79287dc42e5008fac14cefffed",
|
||||||
|
"sha256": "0b92j9j2xdd2gyi9bgp39w0w1lkp0vc2rxq6wx6xdfvvklpprgb4",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/zoggy/xmldiff/archive/5873df80c1ba8c79287dc42e5008fac14cefffed.tar.gz",
|
||||||
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
|
}
|
||||||
|
}
|
134
nix/sources.nix
Normal file
134
nix/sources.nix
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
# This file has been generated by Niv.
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
#
|
||||||
|
# The fetchers. fetch_<type> fetches specs of type <type>.
|
||||||
|
#
|
||||||
|
|
||||||
|
fetch_file = pkgs: spec:
|
||||||
|
if spec.builtin or true then
|
||||||
|
builtins_fetchurl { inherit (spec) url sha256; }
|
||||||
|
else
|
||||||
|
pkgs.fetchurl { inherit (spec) url sha256; };
|
||||||
|
|
||||||
|
fetch_tarball = pkgs: spec:
|
||||||
|
if spec.builtin or true then
|
||||||
|
builtins_fetchTarball { inherit (spec) url sha256; }
|
||||||
|
else
|
||||||
|
pkgs.fetchzip { inherit (spec) url sha256; };
|
||||||
|
|
||||||
|
fetch_git = spec:
|
||||||
|
builtins.fetchGit { url = spec.repo; inherit (spec) rev ref; };
|
||||||
|
|
||||||
|
fetch_builtin-tarball = spec:
|
||||||
|
builtins.trace
|
||||||
|
''
|
||||||
|
WARNING:
|
||||||
|
The niv type "builtin-tarball" will soon be deprecated. You should
|
||||||
|
instead use `builtin = true`.
|
||||||
|
|
||||||
|
$ niv modify <package> -a type=tarball -a builtin=true
|
||||||
|
''
|
||||||
|
builtins_fetchTarball { inherit (spec) url sha256; };
|
||||||
|
|
||||||
|
fetch_builtin-url = spec:
|
||||||
|
builtins.trace
|
||||||
|
''
|
||||||
|
WARNING:
|
||||||
|
The niv type "builtin-url" will soon be deprecated. You should
|
||||||
|
instead use `builtin = true`.
|
||||||
|
|
||||||
|
$ niv modify <package> -a type=file -a builtin=true
|
||||||
|
''
|
||||||
|
(builtins_fetchurl { inherit (spec) url sha256; });
|
||||||
|
|
||||||
|
#
|
||||||
|
# Various helpers
|
||||||
|
#
|
||||||
|
|
||||||
|
# The set of packages used when specs are fetched using non-builtins.
|
||||||
|
mkPkgs = sources:
|
||||||
|
let
|
||||||
|
sourcesNixpkgs =
|
||||||
|
import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) {};
|
||||||
|
hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
|
||||||
|
hasThisAsNixpkgsPath = <nixpkgs> == ./.;
|
||||||
|
in
|
||||||
|
if builtins.hasAttr "nixpkgs" sources
|
||||||
|
then sourcesNixpkgs
|
||||||
|
else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then
|
||||||
|
import <nixpkgs> {}
|
||||||
|
else
|
||||||
|
abort
|
||||||
|
''
|
||||||
|
Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
|
||||||
|
add a package called "nixpkgs" to your sources.json.
|
||||||
|
'';
|
||||||
|
|
||||||
|
# The actual fetching function.
|
||||||
|
fetch = pkgs: name: spec:
|
||||||
|
|
||||||
|
if ! builtins.hasAttr "type" spec then
|
||||||
|
abort "ERROR: niv spec ${name} does not have a 'type' attribute"
|
||||||
|
else if spec.type == "file" then fetch_file pkgs spec
|
||||||
|
else if spec.type == "tarball" then fetch_tarball pkgs spec
|
||||||
|
else if spec.type == "git" then fetch_git spec
|
||||||
|
else if spec.type == "builtin-tarball" then fetch_builtin-tarball spec
|
||||||
|
else if spec.type == "builtin-url" then fetch_builtin-url spec
|
||||||
|
else
|
||||||
|
abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
|
||||||
|
|
||||||
|
# Ports of functions for older nix versions
|
||||||
|
|
||||||
|
# a Nix version of mapAttrs if the built-in doesn't exist
|
||||||
|
mapAttrs = builtins.mapAttrs or (
|
||||||
|
f: set: with builtins;
|
||||||
|
listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))
|
||||||
|
);
|
||||||
|
|
||||||
|
# fetchTarball version that is compatible between all the versions of Nix
|
||||||
|
builtins_fetchTarball = { url, sha256 }@attrs:
|
||||||
|
let
|
||||||
|
inherit (builtins) lessThan nixVersion fetchTarball;
|
||||||
|
in
|
||||||
|
if lessThan nixVersion "1.12" then
|
||||||
|
fetchTarball { inherit url; }
|
||||||
|
else
|
||||||
|
fetchTarball attrs;
|
||||||
|
|
||||||
|
# fetchurl version that is compatible between all the versions of Nix
|
||||||
|
builtins_fetchurl = { url, sha256 }@attrs:
|
||||||
|
let
|
||||||
|
inherit (builtins) lessThan nixVersion fetchurl;
|
||||||
|
in
|
||||||
|
if lessThan nixVersion "1.12" then
|
||||||
|
fetchurl { inherit url; }
|
||||||
|
else
|
||||||
|
fetchurl attrs;
|
||||||
|
|
||||||
|
# Create the final "sources" from the config
|
||||||
|
mkSources = config:
|
||||||
|
mapAttrs (
|
||||||
|
name: spec:
|
||||||
|
if builtins.hasAttr "outPath" spec
|
||||||
|
then abort
|
||||||
|
"The values in sources.json should not have an 'outPath' attribute"
|
||||||
|
else
|
||||||
|
spec // { outPath = fetch config.pkgs name spec; }
|
||||||
|
) config.sources;
|
||||||
|
|
||||||
|
# The "config" used by the fetchers
|
||||||
|
mkConfig =
|
||||||
|
{ sourcesFile ? ./sources.json
|
||||||
|
, sources ? builtins.fromJSON (builtins.readFile sourcesFile)
|
||||||
|
, pkgs ? mkPkgs sources
|
||||||
|
}: rec {
|
||||||
|
# The sources, i.e. the attribute set of spec name to spec
|
||||||
|
inherit sources;
|
||||||
|
|
||||||
|
# The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
|
||||||
|
inherit pkgs;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); }
|
24
nix/static-overlay.nix
Normal file
24
nix/static-overlay.nix
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
native: self: super:
|
||||||
|
let dds = x: x.overrideAttrs (o: { dontDisableStatic = true; });
|
||||||
|
in {
|
||||||
|
buildPackages = super.buildPackages // { inherit (native) rakudo; };
|
||||||
|
ocaml = self.ocaml-ng.ocamlPackages_4_07.ocaml;
|
||||||
|
libev = dds super.libev;
|
||||||
|
libusb = self.libusb1;
|
||||||
|
systemd = self.eudev;
|
||||||
|
libusb1 = dds (super.libusb1.override {
|
||||||
|
enableSystemd = true;
|
||||||
|
});
|
||||||
|
gdb = null;
|
||||||
|
hidapi = dds (super.hidapi.override { systemd = self.eudev; });
|
||||||
|
glib = (super.glib.override { libselinux = null; }).overrideAttrs
|
||||||
|
(o: { mesonFlags = o.mesonFlags ++ [ "-Dselinux=disabled" ]; });
|
||||||
|
eudev = dds (super.eudev.overrideAttrs
|
||||||
|
(o: { nativeBuildInputs = o.nativeBuildInputs ++ [ super.gperf ]; }));
|
||||||
|
gmp = dds (super.gmp);
|
||||||
|
ocamlPackages = super.ocamlPackages.overrideScope' (self: super: {
|
||||||
|
ligo-out = super.ligo-out.overrideAttrs (_: {
|
||||||
|
patches = [ ./static.patch ];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
12
nix/static.patch
Normal file
12
nix/static.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff --git a/src/bin/dune b/src/bin/dune
|
||||||
|
index 162963b4b..29dfa5191 100644
|
||||||
|
--- a/src/bin/dune
|
||||||
|
+++ b/src/bin/dune
|
||||||
|
@@ -34,5 +34,6 @@
|
||||||
|
(preprocess
|
||||||
|
(pps ppx_let ppx_blob bisect_ppx --conditional)
|
||||||
|
)
|
||||||
|
- (flags (:standard -open Simple_utils))
|
||||||
|
+ (flags (:standard -open Simple_utils)
|
||||||
|
+ -ccopt -static -cclib "-lgmp")
|
||||||
|
)
|
@ -9,4 +9,6 @@ export LIGO_REGISTRY_IMAGE_BASE_NAME="ligolang/ligo"
|
|||||||
# ligo_incrementing-id_commit-hash
|
# ligo_incrementing-id_commit-hash
|
||||||
export CI_JOB_ID="0"
|
export CI_JOB_ID="0"
|
||||||
export CI_COMMIT_SHORT_SHA="$(git rev-parse --short HEAD)"
|
export CI_COMMIT_SHORT_SHA="$(git rev-parse --short HEAD)"
|
||||||
|
export CI_COMMIT_SHA="$(git rev-parse HEAD)"
|
||||||
|
export COMMIT_DATE="$(git show --no-patch --format=%ci)"
|
||||||
export LIGO_DIST_DIR="./dist"
|
export LIGO_DIST_DIR="./dist"
|
||||||
|
@ -15,6 +15,8 @@ target_os_version="$3"
|
|||||||
dist="$LIGO_DIST_DIR"
|
dist="$LIGO_DIST_DIR"
|
||||||
version="$(echo $CI_JOB_ID)-$(echo $CI_COMMIT_SHORT_SHA)"
|
version="$(echo $CI_JOB_ID)-$(echo $CI_COMMIT_SHORT_SHA)"
|
||||||
ci_job_id="$CI_JOB_ID"
|
ci_job_id="$CI_JOB_ID"
|
||||||
|
ci_commit_sha="$CI_COMMIT_SHA"
|
||||||
|
commit_date="$COMMIT_DATE"
|
||||||
|
|
||||||
# Image names for building & packaging
|
# Image names for building & packaging
|
||||||
target="$target_os-$target_os_version"
|
target="$target_os-$target_os_version"
|
||||||
|
@ -2,12 +2,7 @@ open Cmdliner
|
|||||||
open Trace
|
open Trace
|
||||||
open Cli_helpers
|
open Cli_helpers
|
||||||
|
|
||||||
let version =
|
let version = Version.version
|
||||||
Format.asprintf
|
|
||||||
"Rolling release\nHash: %s\nDate: %s\nCI job id: %s"
|
|
||||||
Version.hash
|
|
||||||
Version.commit_date
|
|
||||||
Version.job_id
|
|
||||||
|
|
||||||
let main =
|
let main =
|
||||||
let man =
|
let man =
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
(action (with-stdout-to
|
(action (with-stdout-to
|
||||||
version.ml
|
version.ml
|
||||||
(run "sh" "-c"
|
(run "sh" "-c"
|
||||||
"printf 'let hash = \"%s\"\nlet commit_date = \"%s\"\nlet job_id = \"%s\"\n' \"$(git rev-parse HEAD)\" \"$(git show --no-patch --format=%ci)\" \"${CI_JOB_ID}\""))))
|
"printf 'let version = \"Rolling Release\nCommit SHA1: %s\nCommit Date: %s\"' \"${CI_COMMIT_SHA}\" \"${COMMIT_DATE}\""))))
|
||||||
|
|
||||||
(executable
|
(executable
|
||||||
(name runligo)
|
(name runligo)
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
(library
|
(library
|
||||||
(name adt_generator)
|
(name adt_generator)
|
||||||
(public_name ligo.adt_generator)
|
(public_name ligo.adt_generator)
|
||||||
(libraries
|
(libraries)
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
(executable
|
(executable
|
||||||
(name test_adt_generator)
|
(name test_adt_generator)
|
||||||
(public_name ligo.test_adt_generator)
|
|
||||||
(libraries adt_generator simple-utils)
|
(libraries adt_generator simple-utils)
|
||||||
(preprocess
|
(preprocess
|
||||||
(pps ppx_let bisect_ppx --conditional)
|
(pps ppx_let bisect_ppx --conditional)
|
||||||
|
@ -34,7 +34,10 @@
|
|||||||
|
|
||||||
gtag("config", "UA-153751765-1");
|
gtag("config", "UA-153751765-1");
|
||||||
</script>
|
</script>
|
||||||
<script src="https://www.tezbridge.com/plugin.js"></script>
|
<script
|
||||||
|
src="https://www.tezbridge.com/plugin.js"
|
||||||
|
onerror="console.warn('Failed to load tezbridge; assuming this is a test and we dont need it.'); window.tezbridge = {}"
|
||||||
|
></script>
|
||||||
<title>LIGO Playground</title>
|
<title>LIGO Playground</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -52,6 +52,8 @@ exports.API_ROOT = `${exports.API_HOST}/api`;
|
|||||||
exports.fetchExamples = async () => (await fetch(`${exports.API_HOST}/static/examples/list`)).json();
|
exports.fetchExamples = async () => (await fetch(`${exports.API_HOST}/static/examples/list`)).json();
|
||||||
|
|
||||||
exports.runCommandAndGetOutputFor = async (command, endpoint) => {
|
exports.runCommandAndGetOutputFor = async (command, endpoint) => {
|
||||||
|
page.on('console', msg => console.log('PAGE LOG:', msg.text()));
|
||||||
|
|
||||||
await page.click('#configure-tab');
|
await page.click('#configure-tab');
|
||||||
await exports.sleep(1000);
|
await exports.sleep(1000);
|
||||||
|
|
||||||
|
2
vendors/Preprocessor/Preprocessor.opam
vendored
2
vendors/Preprocessor/Preprocessor.opam
vendored
@ -8,7 +8,7 @@ authors : "Christian Rinderknecht"
|
|||||||
license : "MIT"
|
license : "MIT"
|
||||||
homepage : "https://gitlab.com/ligolang/Preprocessor"
|
homepage : "https://gitlab.com/ligolang/Preprocessor"
|
||||||
bug-reports : "https://gitlab.com/ligolang/ligo-utils/issues"
|
bug-reports : "https://gitlab.com/ligolang/ligo-utils/issues"
|
||||||
depends : ["dune" "base" "ocaml" "simple-utils"]
|
depends : ["dune" "base" "ocaml" "simple-utils" "bisect_ppx" "menhir" "getopt"]
|
||||||
build : [
|
build : [
|
||||||
[ "sh" "-c" "printf 'let version = \"%s\"' \"$(git describe --always --dirty --abbrev=0)\" > Version.ml" ]
|
[ "sh" "-c" "printf 'let version = \"%s\"' \"$(git describe --always --dirty --abbrev=0)\" > Version.ml" ]
|
||||||
[ "dune" "build" "-p" name "-j" jobs ]
|
[ "dune" "build" "-p" name "-j" jobs ]
|
||||||
|
Loading…
Reference in New Issue
Block a user