# make package-recursive acts strange



## x-com (Oct 10, 2013)

Hi folks,

had much to do for the last six months so I took a long time out from FreeBSD. Last week I took the chance of the 9.2 release and installed a fresh FreeBSD. I didn't make any modifications to the ports-tree and -config, just a 
`portsnap fetch extract`
and went on to build some ports. Then I realized the 
`make package-recursive`
command didn't act as it used to in FreeBSD 9.1 when I used it the last time (back in February or so) Some of the depending ports were not build, some where build, but in the work directory which got removed on clean. Has there been some major change on the ports mechanism? I've read the corresponding section in the Handbook, but have not found anything concerning this.

Thanks a lot


----------



## ShelLuser (Oct 10, 2013)

Very recently they introduced the new STAGING system which basically tells a port to put it's contents in a separate (stage) directory which allows end-users other than root to build packages for themselves (because it doesn't require write access in the ports directory itself).

Now, some ports have already adapted whereas others have not. I'm not 100% sure, but I could imagine that it may influence things.

*Edit:* Upper case FILE tags are no longer recognized.


----------



## x-com (Oct 11, 2013)

*that's it*

Thanks ShelLuser,

I found some of the staging directories. I guess I need to alter some config files for the make process or turn of staging somehow.


----------



## x-com (Nov 8, 2013)

*Confusion*

Ok,

I've tried a lot of things, but I have massive problems using ports. I don't know what is going wrong but something is wrong. Building ports using `make package-recursive clean` works partly. Sometimes a package is built but then not installed. For example take math/galculator. The package is built but not installed. During some experiments I had a similar behaviour with lang/gcc48. According to ports(7) the options package and package-recursive should build packages and install them, or am I getting something wrong?

Next problem, after building with the clean option proceeding in building other ports fails at the point when packages for the new ports should be built. For example building x11/xorg and then nvidia-driver fails because the directory someport/work is not found. I guess this is what @ShelLuser was telling about staging. Avoiding the clean option helps but the result is the ports directory growing and growing in size. So I took the chance setting up FreeBSD 9.2 (64 bit) new and migrating directly to PKGNG. I followed the corresponding section in the Handbook and then began building ports again. Now it got really odd. Building packages recursive leads to some ports get build again every time some other port is installed which depends on it. For example building Xorg needs Perl. Everything ok, then building some other port which needs Perl results in Perl being built again, although it is already built and installed.

Setting up FreeBSD 9.1 around January this year and building ports worked like a dream, now the ports system act kind of strange, is someone having the same experience???


----------



## jb_fvwm2 (Nov 8, 2013)

Maybe subscribe to the freebsd-ports mailing list and document fully the next such instance, persons there are usually quick to try to fix issues, so much so that they may not have much time for this forum.


----------



## x-com (Nov 27, 2013)

It's done, at least partly. The origin of this strange behaviour is the file bsd.port.mk . The target "package-recursive" uses `package clean` in line 5703. Changing this to `package NO_INSTALL` restores the old behaviour. But don't forget to either append `clean` to the make command or doing `make clean` after building the port.  I'm guessing that has something to do with ports getting staging support. I hope it may prove useful. 

For my part I'm more relaxed now, knowing that my installation is not corrupt.


----------

