python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / top-level / emscripten-packages.nix
blobd5f820d0d60b9a9c2e843e719c38ddfa04d18aa3
1 { pkgs }:
3 with pkgs;
5 # emscripten toolchain abstraction for nix
6 # https://github.com/NixOS/nixpkgs/pull/16208
8 rec {
9   json_c = (pkgs.json_c.override {
10     stdenv = pkgs.emscriptenStdenv;
11   }).overrideDerivation
12     (old: {
13       nativeBuildInputs = [ pkg-config cmake ];
14       propagatedBuildInputs = [ zlib ];
15       configurePhase = ''
16         HOME=$TMPDIR
17         mkdir -p .emscriptencache
18         export EM_CACHE=$(pwd)/.emscriptencache
19         emcmake cmake . $cmakeFlags -DCMAKE_INSTALL_PREFIX=$out -DCMAKE_INSTALL_INCLUDEDIR=$dev/include
20       '';
21       checkPhase = ''
22         echo "================= testing json_c using node ================="
24         echo "Compiling a custom test"
25         set -x
26         emcc -O2 -s EMULATE_FUNCTION_POINTER_CASTS=1 tests/test1.c \
27           `pkg-config zlib --cflags` \
28           `pkg-config zlib --libs` \
29           -I . \
30           libjson-c.a \
31           -o ./test1.js
33         echo "Using node to execute the test which basically outputs an error on stderr which we grep for"
34         ${pkgs.nodejs}/bin/node ./test1.js
36         set +x
37         if [ $? -ne 0 ]; then
38           echo "test1.js execution failed -> unit test failed, please fix"
39           exit 1;
40         else
41           echo "test1.js execution seems to work! very good."
42         fi
43         echo "================= /testing json_c using node ================="
44       '';
45     });
47   libxml2 = (pkgs.libxml2.override {
48     stdenv = emscriptenStdenv;
49     pythonSupport = false;
50   }).overrideDerivation
51     (old: {
52       propagatedBuildInputs = [ zlib ];
53       nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ pkg-config ];
55       # just override it with nothing so it does not fail
56       autoreconfPhase = "echo autoreconfPhase not used...";
57       configurePhase = ''
58         HOME=$TMPDIR
59         mkdir -p .emscriptencache
60         export EM_CACHE=$(pwd)/.emscriptencache
61         emconfigure ./configure --prefix=$out --without-python
62       '';
63       checkPhase = ''
64         echo "================= testing libxml2 using node ================="
66         echo "Compiling a custom test"
67         set -x
68         emcc -O2 -s EMULATE_FUNCTION_POINTER_CASTS=1 xmllint.o \
69         ./.libs/libxml2.a `pkg-config zlib --cflags` `pkg-config zlib --libs` -o ./xmllint.test.js \
70         --embed-file ./test/xmlid/id_err1.xml
72         echo "Using node to execute the test which basically outputs an error on stderr which we grep for"
73         ${pkgs.nodejs}/bin/node ./xmllint.test.js --noout test/xmlid/id_err1.xml 2>&1 | grep 0bar
75         set +x
76         if [ $? -ne 0 ]; then
77           echo "xmllint unit test failed, please fix this package"
78           exit 1;
79         else
80           echo "since there is no stupid text containing 'foo xml:id' it seems to work! very good."
81         fi
82         echo "================= /testing libxml2 using node ================="
83       '';
84     });
86   xmlmirror = pkgs.buildEmscriptenPackage rec {
87     pname = "xmlmirror";
88     version = "unstable-2016-06-05";
90     buildInputs = [ libtool gnumake libxml2 nodejs openjdk json_c ];
91     nativeBuildInputs = [ pkg-config zlib autoconf automake ];
93     src = pkgs.fetchgit {
94       url = "https://gitlab.com/odfplugfest/xmlmirror.git";
95       rev = "4fd7e86f7c9526b8f4c1733e5c8b45175860a8fd";
96       sha256 = "1jasdqnbdnb83wbcnyrp32f36w3xwhwp0wq8lwwmhqagxrij1r4b";
97     };
99     configurePhase = ''
100       rm -f fastXmlLint.js*
101       # a fix for ERROR:root:For asm.js, TOTAL_MEMORY must be a multiple of 16MB, was 234217728
102       # https://gitlab.com/odfplugfest/xmlmirror/issues/8
103       sed -e "s/TOTAL_MEMORY=234217728/TOTAL_MEMORY=268435456/g" -i Makefile.emEnv
104       # https://github.com/kripken/emscripten/issues/6344
105       # https://gitlab.com/odfplugfest/xmlmirror/issues/9
106       sed -e "s/\$(JSONC_LDFLAGS) \$(ZLIB_LDFLAGS) \$(LIBXML20_LDFLAGS)/\$(JSONC_LDFLAGS) \$(LIBXML20_LDFLAGS) \$(ZLIB_LDFLAGS) /g" -i Makefile.emEnv
107       # https://gitlab.com/odfplugfest/xmlmirror/issues/11
108       sed -e "s/-o fastXmlLint.js/-s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]' -o fastXmlLint.js/g" -i Makefile.emEnv
109       mkdir -p .emscriptencache
110       export EM_CACHE=$(pwd)/.emscriptencache
111     '';
113     buildPhase = ''
114       HOME=$TMPDIR
115       make -f Makefile.emEnv
116     '';
118     outputs = [ "out" "doc" ];
120     installPhase = ''
121       mkdir -p $out/share
122       mkdir -p $doc/share/${pname}
124       cp Demo* $out/share
125       cp -R codemirror-5.12 $out/share
126       cp fastXmlLint.js* $out/share
127       cp *.xsd $out/share
128       cp *.js $out/share
129       cp *.xhtml $out/share
130       cp *.html $out/share
131       cp *.json $out/share
132       cp *.rng $out/share
133       cp README.md $doc/share/${pname}
134     '';
135     checkPhase = ''
136     '';
137   };
139   zlib = (pkgs.zlib.override {
140     stdenv = pkgs.emscriptenStdenv;
141   }).overrideDerivation
142     (old: {
143       nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ pkg-config ];
144       # we need to reset this setting!
145       NIX_CFLAGS_COMPILE="";
146       dontStrip = true;
147       outputs = [ "out" ];
148       buildPhase = ''
149         emmake make
150       '';
151       installPhase = ''
152         emmake make install
153       '';
154       checkPhase = ''
155         echo "================= testing zlib using node ================="
157         echo "Compiling a custom test"
158         set -x
159         emcc -O2 -s EMULATE_FUNCTION_POINTER_CASTS=1 test/example.c -DZ_SOLO \
160         -L. libz.a -I . -o example.js
162         echo "Using node to execute the test"
163         ${pkgs.nodejs}/bin/node ./example.js
165         set +x
166         if [ $? -ne 0 ]; then
167           echo "test failed for some reason"
168           exit 1;
169         else
170           echo "it seems to work! very good."
171         fi
172         echo "================= /testing zlib using node ================="
173       '';
175       postPatch = pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
176         substituteInPlace configure \
177           --replace '/usr/bin/libtool' 'ar' \
178           --replace 'AR="libtool"' 'AR="ar"' \
179           --replace 'ARFLAGS="-o"' 'ARFLAGS="-r"'
180       '';
181     });