Dear maintainer,
I have noticed that most time of 'make index' on my system takes a grep for
libssl.
The following is done while 'make index' was running.
$ ps axww | grep libssl
23119 p1 IN+ 0:00,00 sh -c grep -l -r "^lib/libssl.so." "/var/db/pkg" |
while read contents; do sslprefix=`grep "[EMAIL PROTECTED] " "${contents}" |
/usr/bin/head -n 1`; if test "${sslprefix}" = "@cwd /usr/local" ; then echo
"${contents}"; break; fi; done
23124 p1 DN+ 0:00,84 grep -l -r ^lib/libssl.so. /var/db/pkg
23125 p1 IN+ 0:00,00 sh -c grep -l -r "^lib/libssl.so." "/var/db/pkg" |
while read contents; do sslprefix=`grep "[EMAIL PROTECTED] " "${contents}" |
/usr/bin/head -n 1`; if test "${sslprefix}" = "@cwd /usr/local" ; then echo
"${contents}"; break; fi; done
24555 p1 IN+ 0:00,00 sh -c grep -l -r "^lib/libssl.so." "/var/db/pkg" |
while read contents; do sslprefix=`grep "[EMAIL PROTECTED] " "${contents}" |
/usr/bin/head -n 1`; if test "${sslprefix}" = "@cwd /usr/local" ; then echo
"${contents}"; break; fi; done
24556 p1 DN+ 0:00,41 grep -l -r ^lib/libssl.so. /var/db/pkg
24557 p1 IN+ 0:00,00 sh -c grep -l -r "^lib/libssl.so." "/var/db/pkg" |
while read contents; do sslprefix=`grep "[EMAIL PROTECTED] " "${contents}" |
/usr/bin/head -n 1`; if test "${sslprefix}" = "@cwd /usr/local" ; then echo
"${contents}"; break; fi; done
So I looked through some Mk stuff, and tryed to optimize it. Since I do not
know any magic of bsd.*.mk, I did just a simple test. And with the below shown
patch the time is only 1500 s, while with the original version the time is more
than 15000 s. I guess the time depens very much on number of installed ports,
I have about 1300.
The resulting INDEX* files are identical.
I should confess I do not understand how my patch works. I expected to see a
file /usr/ports/.openssl_installed or /tmp/index_something/.openssl_installed
or similar, but could not see it... But I hope this patch will inspire you
to do something really working.
[EMAIL PROTECTED]:/usr/ports 22:08:17 $ sudo time nice make index
Generating INDEX-7 - please wait..Warning: Duplicate INDEX entry:
apr-gdbm-db42-1.3.2
Warning: Duplicate INDEX entry: mod_rpaf-ap2-0.6
Done.
1503.11 real 988.23 user 116.09 sys
[EMAIL PROTECTED]:/usr/ports 22:33:49 $ diff -u Mk/bsd.openssl.mk.orig
Mk/bsd.openssl.mk
--- Mk/bsd.openssl.mk.orig 2008-05-18 01:34:41.000000000 +0300
+++ Mk/bsd.openssl.mk 2008-07-22 22:07:31.000000000 +0300
@@ -121,11 +121,15 @@
exists(${DESTDIR}/${LOCALBASE}/lib/libcrypto.so)
# find installed port and use it for dependency
PKG_DBDIR?= ${DESTDIR}/var/db/pkg
+.if exists(${WRKDIR}/.openssl_installed)
+OPENSSL_INSTALLED!= cat ${WRKDIR}/.openssl_installed
+.else
OPENSSL_INSTALLED!= grep -l -r "^lib/libssl.so." "${PKG_DBDIR}" | \
while read contents; do \
sslprefix=`grep "[EMAIL PROTECTED] "
"$${contents}" | ${HEAD} -n 1`; \
if test "$${sslprefix}" = "@cwd ${LOCALBASE}" ;
then \
- echo "$${contents}"; break; fi; done
+ echo "$${contents}" | tee
${WRKDIR}/.openssl_installed; break; fi; done
+.endif
OPENSSL_PORT!= grep "[EMAIL PROTECTED] ORIGIN:" "${OPENSSL_INSTALLED}"
| ${CUT} -d : -f 2
OPENSSL_SHLIBFILE!= grep "^lib/libssl.so." "${OPENSSL_INSTALLED}"
OPENSSL_SHLIBVER?= ${OPENSSL_SHLIBFILE:E}
Without the patch:
[EMAIL PROTECTED]:/usr/ports 22:43:24 $ sudo time nice make index
Generating INDEX-7 - please wait..Warning: Duplicate INDEX entry:
apr-gdbm-db42-1.3.2
Warning: Duplicate INDEX entry: mod_rpaf-ap2-0.6
Done.
15216.17 real 1045.99 user 261.20 sys
--
V. Chukharev
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "[EMAIL PROTECTED]"