tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Cyclic dependency, please fix



 >> According to the documentation above {} braces should be expanded to
 >> 
 >>     perl:../../devel/completely-different-pkg
 >>     completely-different-pkg:../../devel/completely-different-pkg

> I hope I can explain from my simple point of view:
> Module::Build is a core module of perl-5.10, so depending on perl>=5.10
> would be enough. To give those developers a hint which want to use a
> bug fixed or feature enhanced version, the second dependency is added.
> Maybe it's a dirty trick (I do not understand enough to have a real
> opinion), but it should work.

Maybe I missed something important but all this looks like
something really strange is happining here.

As a 3-rd party software developer I'm really confused.

I understand the above logic but
1) According to the documentation
   pkg_info(1)
       ...
       In addition, csh(1) style {,} alter- nates have been implemented.
       ...
   Nothing more about aboit {aaa,bbb}.
   csh(1) syntax means that '{b,c}d' should be expanded to 'bd cd',
   not to 'bd cd d' and not to 'bd OR cd OR d'.

   pkgsrc guide section 19.1.6 doesn't describe {} semantic at all
   refering reader to pkg_info(1).

   So, curly braces inside DEPENDS/BUILD_DEPENDS are completely
   undocumented.

2) Dependencies listed in DEPENDS and BUILD_DEPENDS consist of two
   parts, PKGBASE/PKGNAME and path to category/package (PKGPATH).

   Following logic you described and description in pkg_info(1)
   pkg{A,B}:../../category/pkg should mean something like

      pkgA:../../category/pkg OR pkgB:../../category/pkg

   But this is not the case. It is expanded EITHER to
      pkgA:../../category/pkg OR pkgB
   or to
      pkgA OR pkgB:../../category/pkg
   or to
      pkgA../../category/pkg OR pkgB:../../category/pkg

   Examples:
     PKGNAME=phpmyadmin-2.11.9.4
     PKGPATH=databases/phpmyadmin
     DEPENDS=php5-mysql{,i}>=4.3.3:../../databases/php-mysql ...

     Here we have pkgA:../../category/pkg OR pkgB case.

     PKGNAME=p5-Module-Build-0.32000
     PKGPATH=devel/p5-Module-Build
     DEPENDS={perl>=5.10,p5-Archive-Tar>=1.08}:../../archivers/p5-Archive-Tar

     Here we have pkgA OR pkgB:../../category/pkg case.

   A) {,} are irregular. The ../../PKGPATH part doesn't mean anything
      useful.

   B) Because ../../PKGPATH part is broken why it is needed then?

   C) Suppose we completely ignore ../../PKGPATH.
      When we can get an information about where our dependencies come from? 

      Given an information about ALL packages in a tree
      (pkg_src_summary) in my distbb I can assign "perl" to
      "lang/perl5". No problem. But how pbulk and original BBF work then?
      How pkg_rolling-replace can resolve package's dependencies?
      AFAIU pkg_rr definitely doesn't analyse entire pkgsrc tree.

3) Is this a new feature? How long ago it appeared?
4) See example in 2). php5-mysqli is not provided at all.
5) For building correct dependencies in my distbb, should I completely
   ignore the A part in xxx{A,B}yyy constructs? If yes, then again where
   can I get ../../correct/pkgpath?

-- 
Best regards, Aleksey Cheusov.


Home | Main Index | Thread Index | Old Index