defining dependencies for ports

Gerard Seibert gerard at seibercom.net
Mon Jul 17 16:33:39 UTC 2006


mike wrote:

> Alex Zbyslaw wrote:
> > Owen G wrote:
> >
> >> You are aware that there exists
> >> 1. ports = source = must be compiled = "make install" (as above)
> >> 2. packages = executable packages = precompiled = "pkgadd -r . . ."
> >>
> >>  
> >>
> > Whilst your description of ports and packages is correct...
> >
> >> So unless you're running a custom kernel, there's no advantage of ports
> >> over packages.
> >>
> > ...this is not.
> >
> > Ports are useful :
> >
> >   1) For any package with multiple compile-time options (e.g. apache) 
> > where *you* want to choose those options rather than be stuck with the 
> > ones the *package* was compiled with (c.f. Linux rpms)
> >
> >   2) If you want to be as up-to-date as possible - packages take time 
> > to pre-compile and can lag the ports tree a little
> >
> >   3) If require the source code (for maintaining local patches; 
> > because another port or some other local software needs it)
> >
> > I'm not aware that a custom kernel has any relevance whatsoever.  
> > Perhaps you meant "unless you have used some cpu-specific compile flag 
> > in make.conf" but I don't think even that would make a difference.
> >
> > Also, ports and packages are managed much more easily with a tool like 
> > portupgrade or portmanager.  I prefer the former because it has never 
> > core-dumped on me, and feels more robust and well maintained.
> >
> > If you have multiple machines you keep in sync, then portupgrade -p or 
> > pkg_create -b can be used to create local packages with *your* 
> > compile-time options that other local machines can use.
> >
> > --Alex
> 
> Thanks for the responses.  This is /exactly/ why I'm using ports instead 
> of packages, because I want to have things compiled with my options.  
> However, the reason for my original post was that I'm having a hard time 
> customizing this, for java/Eclipse specifically.  I try "make config" 
> but it doesn't show anything.  So how do I go about cutting out or 
> changing some of the dependencies that I don't want if there are no 
> OPTIONS defined? 
> 
> And I can't find where these dependencies are even defined in this 
> case.  I grep everything in /usr/ports/java/eclipse and don't see 
> references to most of the dependencies.  Where are they defined if not 
> in the BUILD_DEPENDS, etc. variables of the Makefile?
> 
> thanks again.  I'm learning a lot in this process.

Check out the java/eclipse Makefile. It has build options in it that are
configurable. You can do that either by entering them on the command
line, or by placing them in the /etc/make.conf file like this:

# java/eclipse section
.if $(.CURDIR:M*/java/eclipse)
# Your options are placed here.
# I usually place them one per line for easier reading
.endif

I like the /etc/make.conf option myself since I do not have to remember
to enter the options if I update the port. Also, both portupgrade and
portmanager will honor any instructions in the /etc/make.conf file.
Unlike Mike, I prefer 'portmanager' since it seems to do a more through
update of a ports dependencies, etc., but that is just my opinion.

Ciao

-- 
Gerard Seibert
gerard at seibercom.net



More information about the freebsd-questions mailing list