On Fri, Jan 22 2021, Bjorn Ketelaars <[email protected]> wrote:
> On Thu 21/01/2021 23:29, Jeremie Courreges-Anglas wrote:
>> On Thu, Jan 21 2021, Stuart Henderson <[email protected]> wrote:
>> > On 2021/01/21 06:43, Bjorn Ketelaars wrote:
>> >> On Wed 20/01/2021 21:42, Jeremie Courreges-Anglas wrote:
>> >> > On Wed, Jan 20 2021, Bjorn Ketelaars <[email protected]> wrote:
>> >> > > (Maintainer timeout)
>> >> > >
>> >> > > ocaml is currently a RDEP for all ports that are build with it. This 
>> >> > > is
>> >> > > unnecessary for a couple of them, i.e. net/unison.
>> >> > 
>> >> > As far as I know, programs written in OCaml should run without the OCaml
>> >> > runtime installed on ${OCAML_NATIVE_ARCHS}, currently i386 and amd64.
>> >> > Except for OCaml programs that make direct use of the OCaml runtime, of
>> >> > course... But the rundep is still needed on non-native archs.
>> >> > 
>> >> > > I would like to
>> >> > > propose the addition of MODOCAML_RUNDEP and MODOCAML_BUILDDEP, which 
>> >> > > are
>> >> > > modelled on python.port.mk.
>> >> > >
>> >> > > Default behaviour is not changed. Setting MODOCAML_RUNDEP=No in a
>> >> > > Makefile excludes ocaml as RDEP.
>> >> > >
>> >> > > OK?
>> >> > 
>> >> > Your diff makes sense I think, but you can't just use it to
>> >> > disable the run-dep in net/unison: you'd break unison installs on
>> >> > non-native archs.
>> >> 
>> >> Oops, I didn't think about the above.
>> >> 
>> >> I will look further for a fitting, clean solution that serves all
>> >> arches.
>> >> 
>> >
>> > Maybe allow MODOCAML_RUNDEP=yes/no/nonative or some similar thing?
>> 
>> Hmm, so "nonative" would be for ports that produce bytecode-only
>> programs, even on native archs?  (No idea how many ports are affected.)
>> We could call it "bytecode" then, that would seem a bit more descriptive
>> than a plain MODOCAML_RUNDEP=Yes in a port Makefile.
>> 
>> And then MODOCAML_RUNDEP=Yes would be useful for ports that always
>> use lang/ocaml programs/files at runtime?
>> 
>> > It would be nice to handle the arch detection in ocaml.port.mk rather
>> > than in any port using this.
>> 
>> Here's the simple diff I had in mind yesterday, on top of Bjorn's diff.
>> It probably helps Bjorn with unison but it would require testing all
>> other OCaml programs, and bumping REVISION for a bunch of them.
>> Maybe not the easiest or safest approach.
>> 
>> I suspect that most people caring about OCaml in ports have thought
>> about this before, hopefully they can share their ideas. :)
>
> I'm not particular fond of testing all other OCaml programs.
>
> What do you think of the diff below; lang/ocaml is added to
> BUILD_DEPENDS and RUN_DEPENDS unless native-code compilation is possible
> *and* the port specifically requests not to.
>
> lang/ocaml is always added in cases of ! ${OCAML_NATIVE_ARCHS}, and
> 'make show=MODOCAML_RUNDEP' would show 'Ignored as native-code
> compilation is not supported on this platform'.
>
>
> diff --git ocaml.port.mk ocaml.port.mk
> index bda7f1fc763..b5e9c863089 100644
> --- ocaml.port.mk
> +++ ocaml.port.mk
> @@ -33,8 +33,27 @@ MODOCAML_OCAMLDOC?=ocamldoc
>  PKG_ARGS+=-Ddynlink=0
>  .endif
>  
> -RUN_DEPENDS +=               lang/ocaml
> -BUILD_DEPENDS +=     lang/ocaml
> +MODOCAML_RUN_DEPENDS=        lang/ocaml
> +MODOCAML_BUILD_DEPENDS=      ${MODOCAML_RUN_DEPENDS}
> +
> +# Add lang/ocaml to BUILD_DEPENDS and RUN_DEPENDS unless native-code
> +# compilation is possible (OCAML_NATIVE_ARCHS) and the port
> +# specifically requests not to.
> +.if ${PROPERTIES:Mocaml_native}
> +MODOCAML_BUILDDEP?=  Yes
> +MODOCAML_RUNDEP?=    Yes
> +.else
> +MODOCAML_BUILDDEP:=  Ignored as native-code compilation is not supported on 
> this platform

You still need ocaml at build time, to build the bytecode and other things.

> +MODOCAML_RUNDEP:=    ${MODOCAML_BUILDDEP}

Should still use ?= I think.

> +.endif
> +
> +.if ${NO_BUILD:L} == no && ${MODOCAML_BUILDDEP:L} != no
> +BUILD_DEPENDS+=              ${MODOCAML_BUILD_DEPENDS}
> +.endif
> +.if ${MODOCAML_RUNDEP:L} != no
> +RUN_DEPENDS+=                ${MODOCAML_RUN_DEPENDS}
> +.endif
> +
>  MAKE_ENV +=          OCAMLFIND_DESTDIR=${DESTDIR}${TRUEPREFIX}/lib/ocaml \
>                       OCAMLFIND_COMMANDS="ocamldoc=${MODOCAML_OCAMLDOC}"
>  

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to