Sebastien Marie <sema...@kapouay.eu.org> writes: > Hi, > > So I wrote a module for > managing dependencies via sysutils/opam (lang/haxe work by thfr@ was > also a reason for it).
Below is lang/haxe converted to use sysutils/opam (tarball attached, and diff from your previous work). I tried to limit the change to sysutils/opam usage. Please note that I am not pushing lang/haxe to use (new and hypothetic) sysutils/opam module. It was mostly an exercice for me to see how the module would copte with lang/haxe. So comments would be helpful. To be noticed: - the patching of luv-0.5.12 is explicit. the upstream tarball is fetched and patched by ports infrastructure - sysutils/opam added to MODULES - pre-build dance is replaced by CONFIGURE_STYLE += opam - the opam repository used for dependencies resolution is MODOPAM_REPO_COMMIT = e25af452e64b0bd6672dce5f38d878780362341d MODOPAM_REPO_NAME = haxe-opam-${V} MODOPAM_REPO_COMMIT is mostly cosmetic (it could be removed), but ensure reproductibility across "make modopam-repository" usages. MODOPAM_REPO_NAME is used for the directory name. I kept the same as original diff (with tar.bz2 in distfiles). - the size of the tarball of opam repository vs opamroot is 37Mo -> 8 Mo - the opamroot helper is replaced by "modopam-repository" target from the module. - "opam install" time is lot more quick to start. it is due that opam repository is a stripped version (to only contains the required dependencies). so opam took almost no time to resolve the dependency chain and decide which version to build and in which order. diff --git a/lang/haxe/Makefile b/lang/haxe/Makefile index cd62211d81..22b23739a8 100644 --- a/lang/haxe/Makefile +++ b/lang/haxe/Makefile @@ -9,8 +9,12 @@ f1f18201e5c0479cb5adf5f6028788b37f37b730 \ extra/haxelib_src/hx3compat #MIT +LUV_V = 0.5.12 +SITES.luv = https://github.com/aantron/luv/releases/download/${LUV_V}/ +DISTFILES.luv = luv-${LUV_V}.tar.gz + SITES.opamroot = https://thfr.info/distfiles/ -DISTFILES.opamroot = haxe-opamroot-${V}.tar.bz2 +DISTFILES.opamroot = haxe-opam-${V}.tar.bz2 CATEGORIES = lang devel HOMEPAGE = https://haxe.org @@ -22,7 +26,8 @@ WANTLIB += c m mbedcrypto mbedtls mbedx509 neko pcre2-8 pthread uv z -MODULES = lang/ocaml +MODULES = lang/ocaml \ + sysutils/opam BUILD_DEPENDS = devel/dune \ devel/p5-IPC-System-Simple \ @@ -37,37 +42,19 @@ lang/nekovm \ security/polarssl -MAKE_ENV += OPAMROOT=${WRKDIR}/opamroot USE_GMAKE = Yes CFLAGS += -I${LOCALBASE}/include \ -L${LOCALBASE}/lib -pre-build: - env OPAMROOT=${WRKDIR}/opamroot opam pin add haxe ${WRKSRC} \ - --kind=path --no-action - env OPAMROOT=${WRKDIR}/opamroot opam pin add luv.0.5.12 \ - ${WRKDIR}/opamroot/default/.opam-switch/sources/luv.0.5.12 \ - --kind=path --no-action - env OPAMROOT=${WRKDIR}/opamroot LUV_USE_SYSTEM_LIBUV=yes opam \ - install --deps-only --yes --inplace-build -v haxe - -# opamroot-helper: -# Helper target to get initial ocaml dependencies and package in -# /tmp/haxe-opamroot-${V}.tar.bz2. May need to add additional missing -# packages. See `$ opam help install` for syntax. Any patched opam -# packages need to be pinned to their source directory, otherwise they -# will be overwritten (see `$ opam help pin`). -# Needs opam and bzip2; run after `make patch`. Press `5` when prompted -# to skip adjusting ~/.profile. - -opamroot-helper: - mkdir /tmp/opamroot - env OPAMROOT=/tmp/opamroot opam init - env OPAMROOT=/tmp/opamroot opam pin add haxe ${WRKSRC} \ - --kind=path --no-action - OPAMROOT=/tmp/opamroot opam install haxe --deps-only \ - --download-only --recursive --verbose - tar jcf /tmp/haxe-opamroot-${V}.tar.bz2 -C /tmp opamroot +MODOPAM_REPO_COMMIT = e25af452e64b0bd6672dce5f38d878780362341d +MODOPAM_REPO_NAME = haxe-opam-${V} + +CONFIGURE_STYLE += opam + +MAKE_ENV += LUV_USE_SYSTEM_LIBUV=yes + +post-extract: + mv ${WRKDIR}/luv-${LUV_V}/ ${WRKSRC} .include <bsd.port.mk> diff --git a/lang/haxe/distinfo b/lang/haxe/distinfo index 3c3406d35c..e967f19460 100644 --- a/lang/haxe/distinfo +++ b/lang/haxe/distinfo @@ -1,8 +1,10 @@ SHA256 (HaxeFoundation-haxe-4.3.6.tar.gz) = 0WkLbQQxKl+yBdksqi9IyWDLfwhKGCVN7kIic+vWrac= SHA256 (HaxeFoundation-haxelib-f17fffa97554b1bdba37750e3418051f017a5bc2.tar.gz) = sGk8vw0KpX7/3VaqdZeS4BSFn4Q8o9Kkq8jxnYo2yb4= -SHA256 (haxe-opamroot-4.3.6.tar.bz2) = XuN6dbrQ9pmrVb4TPhcsfViSwyzUx/ts1zC6J1TfW00= +SHA256 (haxe-opam-4.3.6.tar.bz2) = S38y/GyxXcIaRvJKonCZdPGHT66jqpf5k5S+5fYEn6Y= SHA256 (haxefoundation-hx3compat-f1f18201e5c0479cb5adf5f6028788b37f37b730.tar.gz) = 0QDeX2BsGFMDce7YOrrMHCCCZtslz+L6w4d0MDU6by4= +SHA256 (luv-0.5.12.tar.gz) = dp9qCIYqSdROIAQ+Jw73F3vMe7hnkDe8BgZWImNMVsA= SIZE (HaxeFoundation-haxe-4.3.6.tar.gz) = 8027390 SIZE (HaxeFoundation-haxelib-f17fffa97554b1bdba37750e3418051f017a5bc2.tar.gz) = 365126 -SIZE (haxe-opamroot-4.3.6.tar.bz2) = 36884113 +SIZE (haxe-opam-4.3.6.tar.bz2) = 8158746 SIZE (haxefoundation-hx3compat-f1f18201e5c0479cb5adf5f6028788b37f37b730.tar.gz) = 26695 +SIZE (luv-0.5.12.tar.gz) = 817528 diff --git a/lang/haxe/patches/patch-luv-0_5_12_src_c_luv_c_type_descriptions_ml b/lang/haxe/patches/patch-luv-0_5_12_src_c_luv_c_type_descriptions_ml new file mode 100644 index 0000000000..61b4484b53 --- /dev/null +++ b/lang/haxe/patches/patch-luv-0_5_12_src_c_luv_c_type_descriptions_ml @@ -0,0 +1,14 @@ +Index: luv-0.5.12/src/c/luv_c_type_descriptions.ml +--- luv-0.5.12/src/c/luv_c_type_descriptions.ml.orig ++++ luv-0.5.12/src/c/luv_c_type_descriptions.ml +@@ -736,8 +736,8 @@ struct + let canonname = constant "AI_CANONNAME" int + let numerichost = constant "AI_NUMERICHOST" int + let numericserv = constant "AI_NUMERICSERV" int +- let v4mapped = constant "AI_V4MAPPED" int +- let all = constant "AI_ALL" int ++ let v4mapped = constant "0" int ++ let all = constant "0" int + let addrconfig = constant "AI_ADDRCONFIG" int + end + end Regards. -- Sebastien Marie
haxe.tgz
Description: Binary data