Unfortunately this requires a bit of trickery with pkg-config to get to
work. The root issue is that the mirage-xen assumes that we use the
default libdir of dune ($out/lib) whereas we install to an OCaml
version-specific site-lib directory. Thus the manually created
pkg-config file makes wrong assumptions (which warrants a patch) and the
.pc file is installed to the wrong location (which is fixed with a mv
invocation).
I should have changed meta.branch in 70e33e3ae3 ("glsurf: use current giflib"),
but I overlooked it.
The bitbucket URL doesn't seem to exist any more, so I've updated the
homepage to the GitLab repository we fetch the sources from.
Fixes: 70e33e3ae3 ("glsurf: use current giflib")
Unfortunately there's no way to get Haxe 4.0 and 4.1 to work with extlib
1.7.8 (not even without the minimal install), so we need to package
1.7.7 again, at least until 1.7.9 (?) brings backwards compatibility
packages, hopefully.
This requires bumping the version of camlimages used by glsurf to a
version that supports current giflib. The most recent versions of
camlimages (even of 4.x) don't support ocaml 4.01 any more, so I've
upgraded to 4.1.2 here, the last version that supports ocaml 4.01 (and
which happily supports current giflib).
* ocamlPackages.janeStreet_0_9_0: join the ocamlPackages fix point
Internal dependencies in the janeStreet sets were always taken from the
own rec attribute set. While this is pretty simple and convenient, it
has the disadvantage that it doesn't play nice with overriding: If you'd
override an attribute in a janeStreet set previously, it would be
changed when referenced directly, but the other packages in that
janeStreet set still would use the original, non-overridden version of
the derivation.
This is easily fixed by passing janeStreet_0_9_0 itself from the fix
point of ocamlPackages and using it to reference the dependencies.
Example showing it now works as expected:
test-overlay.nix:
self: super: {
ocamlPackages = super.ocamlPackages.overrideScope (old: _: {
janeStreet_0_9_0 = old.janeStreet_0_9_0 // {
base = old.janeStreet_0_9_0.base.overrideAttrs (_: {
meta.broken = true;
});
};
});
}
nix-repl> (import ./. {
overlays = [ (import ./test-overlay.nix) ];
}).ocamlPackages.janeStreet_0_9_0.stdio
error: Package ‘ocaml4.10.0-base-0.9.4’ in /home/lukas/src/nix/nixpkgs/pkgs/development/ocaml-modules/janestreet/janePackage.nix:6 is marked as broken, refusing to evaluate.
a) To temporarily allow broken packages, you can use an environment variable
for a single invocation of the nix tools.
$ export NIXPKGS_ALLOW_BROKEN=1
b) For `nixos-rebuild` you can set
{ nixpkgs.config.allowBroken = true; }
in configuration.nix to override this.
c) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
{ allowBroken = true; }
to ~/.config/nixpkgs/config.nix.
* ocamlPackages.janeStreet: take part in fixpoint for OCaml >= 4.08
This change makes overrides to the janeStreet set work as expected by
making the janeStreet set take part in the ocamlPackages fixpoint for
janeStreet 0.14, i. e. OCaml >= 4.08
* ocamlPackages.janeStreet: take part in fixpoint for OCaml == 4.07
This change makes overrides to the janeStreet set work as expected by
making the janeStreet set take part in the ocamlPackages fixpoint for
janeStreet 0.12, i. e. OCaml == 4.07
* ocamlPackages.janeStreet: take part in fixpoint for OCaml < 4.07
This change makes overrides to the janeStreet set work as expected by
making the janeStreet set take part in the ocamlPackages fixpoint for
janeStreet 0.11, i. e. OCaml < 4.07
* ocamlPackages.janeStreet: remove self - super distinction
Previously, we inherited non-janestreet ocaml dependencies from super
and janestreet dependencies from self which always was super.janeStreet.
This behavior is however not really what we want due to liftJaneStreet:
Users and other packages will use ocamlPackages.base etc. instead of
ocamlPackages.janeStreet.base and the like. Consequently they also would
override the top-level attributes which would mean that other janestreet
packages would not pick up on it however.
As a consequence however, overriding ocamlPackages.janeStreet.base
doesn't work. Since this was never possible, I don't think this is an
issue. It is probably a good idea to deprecate that set anyways and
printing a warning when it is used via trace.
janeStreet_0_9_0 is unchanged as the disticniton between self and super
makes sense for it.
Below is an example showing how overriding would work from an user's
perspective:
test-overlay.nix:
self: super: {
ocamlPackages = super.ocamlPackages.overrideScope (old: _: {
base = old.base.overrideAttrs (_: {
meta.broken = true;
});
});
}
nix-repl> (import ./. { overlays = [ (import ./test-overlay.nix) ]; }).ocamlPackages.
stdio
error: Package ‘ocaml4.10.0-base-0.14.0’ in /home/lukas/src/nix/nixpkgs/pkgs/development/ocaml-modules/janestreet/janePackage_0_14.nix:12 is marked as broken, refusing to evaluate.
a) To temporarily allow broken packages, you can use an environment variable
for a single invocation of the nix tools.
$ export NIXPKGS_ALLOW_BROKEN=1
b) For `nixos-rebuild` you can set
{ nixpkgs.config.allowBroken = true; }
in configuration.nix to override this.
c) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
{ allowBroken = true; }
to ~/.config/nixpkgs/config.nix.
This reverts commit 988f5a5910.
The release process for many OCaml packages and in extension mirage
related packages usually entails creating a release in the respective
own repository so a release tarball becomes available and then opening a
PR against ocaml/opam-repository to finalize the release. During this
new issues can be discovered which push the release back.
This happened for mirage-tcpip 6.1.0 several times:
https://github.com/ocaml/opam-repository/pull/18357
Prompting in total 3 different 6.1.0 releases with different hashes
respectively (the hash for ocamlPackages.tcpip.src shouldn't be
reproducible anymore, but we probably have cached the tarball already).
Ultimately the PR to opam-repository was closed to investigate some
failures on opam-repository's CI and the release postponed:
https://github.com/ocaml/opam-repository/pull/18357#issuecomment-808434285
I jumped the gun with the release and updated tcpip in nixpkgs before
tcpip was “properly” released in opam. I usually watch the github
repository of package I maintain for releases and can react pretty
quickly to a release as a result. Most of the time I also check
opam-repository's PRs nowadays for extra context or information, but
when everything seems fine and tests succeed I deem the update alright
to PR to nixpkgs. Being faster than opam was achievable in these cases
and actually seems kind of tantalizing.
In the light of this experience however, we should wait for the opam
PR getting merged at least for some packages that exhibit this behavior
of rereleasing the same version number multiple times to get the release
just right (afaik the 6.1.0 tag pointed to three different revisions for
tcpip). To me this is questionable upstream behavior we just have to deal
with in some way.
Contains vendored in patches from https://github.com/mirage/ocaml-freestanding/pull/93
to make building within nixpkgs simpler. These serve as a makeshift
solution until ocaml-freestanding is released with its overhauled dune
based build system which will also support cross compiling. Upstream has
indicated that they are interested in making it work well with nix as
well.
1.7.8 changed the behavior of the minimal build type (which we are
keeping as the default because opam-repository does it as well): It now
excludes the Base64 module which is prone to namespacing problems.
Since google-drive-ocamlfuse still uses the Base64 module, we need to
override it to use extlib without the minimal build type. 1.7.9 (?)
should make this obsolete as it is planned to split the Base64 module
into a separate package.
Co-authored-by: sternenseemann <sternenseemann@systemli.org>
Enabling tests is not feasible as the test suite takes > 45min (haven't
even run it to completion yet) which is not a good idea in ocamlPackages
where you often have to build from source. Additionally it would require
fetching the git repository since the test suite is not contained in the
release tarball.
Co-authored-by: locallycompact <dan.firth@homotopic.tech>
https://github.com/ocamllabs/ocaml-ctypes/blob/0.18.0/CHANGES.md#ctypes-0180
* ocamlPackages.async_ssl: fix compatibility with ctypes 0.18.0 by using
ctypes.foreign instead of ctypes.foreign.threaded since the distinction
between threaded and unthreaded has been removed in this release.
* libbap: link with -thread so linking ctypes.foreign doesn't fail
https://github.com/BinaryAnalysisPlatform/bap-bindings/issues/18
* ocaml-ng.ocamlPackages_4_07.sodium: patch lib_gen/_tags to also add
the `package(bigarray)` directive since `ctypes.stubs` no longer
propgates that, leading to module not found error.
* ocaml-ng.ocamlPackages_4_{04,05,06,07}.async_ssl: mark as broken: due to
the bigarray-compat dependency, we need dune 2 for ctypes which breaks
compilation of the legacy async_ssl 0.11 version since we can't
upgrade to dune 2 for it since that version doesn't support the legacy
jbuild files.
A bit of a pitfall of // is that it doesn't merge recursively which
often leads to unintended deletion in meta sets: If meta is in args it
is also present in the set right of the // operator which means the
right value is used to replace the left value completely. This throws
away anything extra we've set in the meta set in args.
This is fixed by this comment, allowing the descriptions and broken =
true; set in janestreet/old.nix to propagate to the output meta sets.
* ocamlPackages.git: 3.2.0 -> 3.3.0
* minor fixes to tests (while introducing new failures in the nix
sandbox we have to patch)
* compatibility fixes to commit messages with git fsck and github at the
expense of potentially breaking older ocaml-git managed repositories.
https://github.com/mirage/ocaml-git/releases/tag/3.3.0
* ocamlPackages.irmin: 2.4.0 -> 2.5.1
* irmin-graphql: enable tests as they now work without network
* irmin-layers: tests were removed
* ppx_irmin: tests were removed
Compatibility with git 3.3.0 and improved performance.
https://github.com/mirage/irmin/releases/tag/2.5.0https://github.com/mirage/irmin/releases/tag/2.5.1
* ocamlPackages.{git, irmin}: add myself to maintainers
dune-configurator is no longer necessary.
Also do some minor cleanups like:
* moving bos to checkInputs
* adding rresult to checkInputs
* adding minimumOCamlVersion
* make doCheck conditional to fix evaluation for ocaml < 4.05