Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Feb 2008 12:59:32 -0800
From:      "Yen-Ming Lee" <leeym@leeym.com>
To:        "Anton Berezin" <tobez@tobez.org>
Cc:        ports@freebsd.org, perl@freebsd.org
Subject:   Re: Port dependencies on p5-Test-*
Message-ID:  <759236930802271259o5bc025d5s5117987ab54e2c77@mail.gmail.com>
In-Reply-To: <759236930802270859y2d5014ccvc01caa3b043ff429@mail.gmail.com>
References:  <86zltpzrxt.fsf@ds4.des.no> <759236930802242324o614598d1i1a8ca3cc8c12478c@mail.gmail.com> <86prulibf4.fsf@ds4.des.no> <759236930802250245j646f5be5k8382bedbfb2a7c1e@mail.gmail.com> <868x19i6ky.fsf@ds4.des.no> <759236930802251702h694c4f5bn2c7c87c7c47c7cc@mail.gmail.com> <86zltnsxap.fsf@ds4.des.no> <759236930802261046h216da59fv2bfdd616f601c325@mail.gmail.com> <86ablmr94j.fsf@ds4.des.no> <759236930802270859y2d5014ccvc01caa3b043ff429@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Sorry to quote a lot from my previous mail.
I had one wrong statement so I have to repeat the example to correct it.

2008/2/27, Yen-Ming Lee <leeym@leeym.com>:
>  For example, module A said it needs module B, C, D, E in Makefile,
>  among them, B, C are needed for run and D, E are needed for tests.
>  Also B and D are in core already, so the only module needed is C.
>  Makefile.PL will looks like this (comments are added to explain the
>  problem details, module authors may not do so):
>
>  use ExtUtils::MakeMaker;
>  WriteMakefile
>  (
>           'NAME' => 'A',
>           'VERSION_FROM' => 'A.pm',
>           'PREREQ_PM' => {
>                            'B' => '0.3',   # for run, in core
>                            'C' => '0',     # for run, not in core
>                            'D' => '0',     # for test, in core
>                            'E' => '0.5'   # for test, not in core
>            }
>  );
>
>  So the port maintainer should put the following knobs in port Makefile
>
>  PERL_DEPENDS=   \
>        www/p5-B>=0.3 \
>        devel/p5-C>=0
>
>  PERL_TEST_DEPENDS= \
>        textproc/p5-D \
>        devel/p5-E>=0.5
>
>  In this case, how can a port maintainer figure out that which ones
>  should be in PERL_DEPENDS and which ones should be in
>  PERL_TEST_DEPENDS based on the module's Makefile? so... two scenarios
>
>  - the port maintainer put everything in PERL_DEPENDS, bsd.perl.mk
>  figures our that B, D are in core so put C, E in BUILD_DEPENDS and
>  RUN_DEPENSD, so we will still build the ports we don't need, in this
>  case they are E and its dependencies.
>
>  - the port maintainer responsibly scan all modules installed and put
>  B, C, D in PERL_DEPENDS and E in PERL_TEST_DEPENDS, so we can skip the
>  one(s) needed for tests.

My bad. It should be B, C in PERL_DEPENDS and D, E in PERL_TEST_DEPENDS.

>  Since you want to avoid "building a bunch ports we don't need" and
>  prefer the latter scenario, port maintainers need to scan the modules
>  entirely to figure out which ones are really needed. Also users will
>  get some warning messages for the missing dependencies (the ones for
>  tests) during the build though it build anyway.
>

Let me pick a vivid example, www/p5-Jifty, which is maintained by tobez@.
Sorry, tobez@, I'm not against you, just want to make sure that you want us
(p5-* port maintainers) to do so. I really have no problem if you want it,
but I hope that other p5-* port maintainers will follow the same way.

p5-Jifty has 76 dependencies directly and 207 dependencies totally. Now all
of the direct dependencies are in BUILD_DEPENDS and
RUN_DEPENDS=BUILD_DEPENDS. It's the worst cases described by des@ in the
first mail of this thread. The module authors just put everything in
Makefile.PL, so you have to scan all the modules installed.

Some of the dependencies are for run, we really need them and should put
them in PERL_DEPENDS, then bsd.perl.mk will check their versions with the
ones in cores, and put the missing ones in BUILD_DEPENDS and RUN_DEPENDS;
some of the dependencies are for tests only, we should put them in
PERL_TEST_DEPENDS so only the developers with P5PORTER set will bring them
into the check process and put them in BUILD_DEPENDS if needed. All the
others are rescued from hell and will happily build the port without them.

Here comes the problem: please tell us how to figure out which ones should
be in PERL_DEPENDS and which ones should be in PERL_TEST_DEPENDS.

I, a lame p5-* ports maintainer, spent more than two hours to write the
script, scan and test again and again, and finally found that five of them
are only needed for tests. Be careful, not the five ones starting with Test::*.
Furthermore, only three out of the five ones are in Makefile now,
which means we don't cover all modules needed for tests yet.

I think you must have some easier way to scan the dependencies.

Thanks and regards,
--
Yen-Ming Lee <leeym@leeym.com>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?759236930802271259o5bc025d5s5117987ab54e2c77>