/usr/ports symlink + make search

Tom Alsberg alsbergt at cs.huji.ac.il
Tue Jun 15 08:32:41 GMT 2004

With the new ports/Mk/bsd.port.subdir.mk, make search (seems like a
quite revamped awk script, relative to the old one) checks the second
field of INDEX to be the same as `pwd` (eventually, through awk -v
there=$here, here=`pwd`)...

That breaks when /usr/ports is a symbolic link to somewhere else
(e.g. we have the ports in a centralized location, /usr/ports is a
symlink to /r+d/ports, and it is read only - work is done in
$WRKDIRPREFIX set to a writeable location).

That's because obviously when in /usr/ports `pwd` will give the target
of the symlink which is different than the 2nd field in INDEX (which
is /usr/ports), and thus the entry will be skipped.  INDEX is
automatically updated from cvsup, so it's not a good idea to globally
substitute in it.

My solution to it was to remove that check from the awk script:

--- Mk/bsd.port.subdir.mk.orig     Thu Jun 10 10:30:19 2004
+++ Mk/bsd.port.subdir.mk  Tue Jun 15 11:30:45 2004
@@ -377,8 +377,6 @@
            } \
          } \
          { \
-           if ($$2 !~ there) \
-             next; \
            for (i in parms) \
              if ($$i !~ parms[i]) \
                next; \

I'm not sure why this check is necessary (it's all in ports, after
all), but anyway it causes some trouble and might need to be refined.

Of course if I change bsd.port.subdir.mk I again have to update it
everytime it is updated by cvsup, so that's also suboptimal.

  -- Tom

  Tom Alsberg - hacker (being the best description fitting this space)
  Web page:	http://www.cs.huji.ac.il/~alsbergt/
DISCLAIMER:  The above message does not even necessarily represent what
my fingers have typed on the keyboard, save anything further.

More information about the freebsd-ports mailing list