Page MenuHomeFreeBSD

include: Delete stale symlinks using find(1) instead of a shell loop.
ClosedPublic

Authored by arichardson on Dec 15 2020, 4:00 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Oct 24, 9:28 PM
Unknown Object (File)
Oct 1 2024, 2:56 AM
Unknown Object (File)
Sep 29 2024, 6:06 AM
Unknown Object (File)
Sep 27 2024, 10:07 AM
Unknown Object (File)
Sep 23 2024, 8:27 PM
Unknown Object (File)
Sep 23 2024, 8:21 AM
Unknown Object (File)
Sep 22 2024, 9:55 AM
Unknown Object (File)
Sep 22 2024, 12:18 AM
Subscribers
None

Details

Summary

This reduces the number of processes spawned during make includes from 2536
to 2442.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

arichardson created this revision.
bdrewery added inline comments.
include/Makefile
277–281

There's a similar check in copies. Both are dealing with a symlinked dir (here) or header (there) switching to a file by choice of committers. If INCSLINKS or the mtree change we could get into trouble. Or someone might be switching from make symlinks to default make copies on the destdir. I think we need to keep this as a seatbelt for _any_ incremental build in WORLDTMP, or install to DESTDIR.

It could probably be more efficient with a find but getting all the arguments to there without going over the command line arg max is tricky.

This revision now requires changes to proceed.Dec 16 2020, 10:03 PM
include/Makefile
277–281

like find ${LDIRS} ${LSUBDIRS} machine ${_MARCHS} crypto -maxdepth 1 -mindepth 1 -type l -delete (-depth 1 is slower for some reason). I was wanting to give an xargs example but bmake just passes it all to sh -c anyway so it doesn't help avoid the problem.

arichardson added inline comments.
include/Makefile
277–281

Yes, much better! Included in updated version. However, in this case it needs to be maxdepth 0, and 1 below.

arichardson marked an inline comment as done.

Use find(1)

arichardson retitled this revision from Stop checking whether `make includes` target directories are symlinks to include: Delete stale symlinks using find(1) instead of a shell loop..Dec 22 2020, 2:32 PM
arichardson edited the summary of this revision. (Show Details)
arichardson added inline comments.
include/Makefile
288

-print is not necessary here, but I think it could be helpful since it shows the files that have been deleted.

I think this looks ok.

This revision was not accepted when it landed; it landed in state Needs Review.Jan 19 2021, 9:38 PM
This revision was automatically updated to reflect the committed changes.