pkgsrc-Users archive

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

Re: Detecting OS-provided software on Linux



On Sat, Jan 25, 2014 at 20:53:59 +0000, Jonathan Perkin wrote:
> * On 2014-01-24 at 21:23 GMT, Iain Morgan wrote:
> 
> > As a trivial example, I built lang/go using pkgsrc on an RHEL 6.5
> > system. To satisfy dependencies, pkgsrc had to install pax, bash, and
> > perl; all of which were already on the system and the names were
> > comparable to what pkgsrc used.
> 
> So, these are all handled by the tools infrastructure.  We usually try
> to find native versions of pax and bash and will use them if
> available, perl we usually prefer from pkgsrc as it's rather more
> complicated.
> 
> Taking them one at a time:
> 
>  - pax is due to it being missing from mk/tools/tools.Linux.mk, and so
>    pkgsrc will always use the pkgsrc version as it has no knowledge of
>    a possible builtin.  Due to the inconsistencies in Linux
>    distributions, what we should add in that file is:
> 
>      .if exists(/bin/pax)
>      TOOLS_PLATFORM.pax?=     /bin/pax
>      .elif exists(/usr/bin/pax)
>      TOOLS_PLATFORM.pax?=     /usr/bin/pax
>      .endif
> 
>    You could try adding this, doing a 'bmake clean clean-depends' and
>    trying again

Thanks, doing this fixed the pax issue. Knowing about the
tools.linux.mik file should help with similar issues.

> 
>  - bash is odd, as that is in the tools file for Linux and it is
>    pretty much guaranteed that /bin/bash will exist on a Linux system,
>    so I'm not sure why that's being pulled in.  I don't see any
>    version checks where it would pull in the pkgsrc version if the
>    builtin one is too old, so it would be interesting to debug this
>    case.

Indeed, tools.Linux.mk unconditionally sets TOOLS_PLATFROM.bash. The
version installed by pkgsrc is 4.2 whereas the system-provided one is
4.1.2,

> 
>  - to use the native perl, you can set
> 
>      TOOLS_PLATFORM.perl=  /path/to/perl 
> 
>    in your mk.conf and it will be used anywhere perl is required as a
>    build tool.  It won't however be used if building any package which
>    has a runtime requirement on perl, we don't support that.
> 
> Generally, you can use TOOLS_PLATFORM.x= /path/to/x in your mk.conf to
> override what pkgsrc will use, but we'd like to integrate any fixes
> such as pax to provide a better user experience by default.

Certainly, I'll post any additional changes once I've had a bit more
time to evaluate a more realistic set of software builds.

> 
> > In another case, I built xlockmore and found that pkgsrc installed
> > 107 packages to satisfy dependencies. I expect that the majority of
> > those dependencies were already satisfied by native packages, and at
> > least some of them matched the names used by pkgsrc.
> 
> When building from source directly onto the target machine in
> question, you will get a lot of build dependencies installed.  The way
> to avoid this is to build separately in a chroot or a different
> machine and then install binary packages on each machine which
> requires them.
> 
> There are various ways of achieving this, and we can provide further
> information on them if necessary.
> 
> Regards,
> 
> -- 
> Jonathan Perkin  -  Joyent, Inc.  -  www.joyent.com

Thanks for the help!

-- 
Iain Morgan


Home | Main Index | Thread Index | Old Index