навеянно
http://www.bsdportal.ru/viewtopic.php?p=69652
простейшее использование distcc ccache.
make -C /usr/ports/sysutils/bsdadminscripts/ install
make -C /usr/ports/devel/distcc install
make -C /usr/ports/devel/ccache install
cp /usr/local/share/bsdadminscripts/buildflags.mk /etc/make.confпосле этого, нам больше не понадобиться файл /etc/make.conf никогда. все настройки для исходников конфигурируються в /usr/local/etc/buildflags.conf
cp /usr/local/etc/buildflags.conf.sample /usr/local/etc/buildflags.confнастройка distcc и ccache показана уважаемым fidaj очень хорошо по ссылке выше по этому я её опущу.
приведу пример /usr/local/etc/buildflags.conf
как видно из примера, в конфиге легко обходяться те порты, которые не могут собираться паралельно или с какими-то общими опциями.
так-же каждому отдельному порту или целой котегории можно назначить свои, особые настройки.
cat /usr/local/etc/buildflags.conf
#
# Dear bsdadminscripts user, beware for this example is a copy of my
# very own buildflags.conf and I'm of a rather experimental nature when it
# comes to building software. There are things done here that are definitely
# not supported or recommended.
#
# Also note that this file is shared over NFS and thus certain machine
# specific settings are left in the make.conf(5) file.
#
# If some of the variables used here don't make sense to you, search for them
# in the buildflags.mk(1), ports(7), make.conf(5) or in the file
# /usr/ports/Mk/bsd.port.mk.
#
# Apart from that, I hope the syntax is easy enough to understand with
# the help of the buildflags.conf(1) manual page.
#
# - Dominic Fandrey <kamikaze@bsdforen.de>
#
# ---< configure buildworld/buildkernel >--------------------------------------
/usr/src | /usr/src/*{
USE_DISTCC=yes
USE_CCACHE=yes
THREADS= 3
# Don't clean.
NO_CLEAN
}
# ---< configure ports >-------------------------------------------------------
/usr/ports/*{
# Clustering
FORCE_MAKE_JOBS= yes
MAKE_JOBS_NUMBER= 16
USE_DISTCC=yes
USE_CCACHE=yes
# Common settings that are applied to all ports in hope to do some good.
WITHOUT_ARTS
#--------------------------------------------------------------------------
CPUTYPE=i686
CFLAGS= -O2 -pipe -funroll-loops -s -frename-registers -ffast-math -fprofile-use -fpeel-loops -fvpt -ftracer -fomit-frame-pointer
CXXFLAGS= -O2 -pipe -funroll-loops -s -frename-registers -felide-constructors
DOC_LANG= en_US.ISO8859-1 ru_RU.KOI8-R
FORCE_PKG_REGISTER= yes
INSTALL_AS_INFOUNZIP= yes
#--------------------------------------------------------------------------
#WITH_IPV6
WITH_CPUFLAGS
WITH_OPT_PPRO
WITH_OPTIMIZED_CFLAGS
FETCH_ARGS= -ApRrF
# Prefer German mirrors.
MASTER_SORT_REGEX= ://([^/]*\.de[\./]|de\.)
# Keep interactive ports from annoying me without turning the
# config dialogues off.
.if ! target(config*)
BATCH
.endif
# Do not build these.
*/editors/openoffice.org*{IGNORE}
# это список портов котрым явно запрещаем собираться с каими-то опциями.
#
*/archivers/p7zip {!FORCE_MAKE_JOBS !CXXFLAGS !CXXFLAGS !CFLAGS}
*/audio/cdparanoia {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/audio/libsndfile {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/audio/nas {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/converters/libiconv {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/devel/autoconf261 {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/devel/boost-python {!USE_CCACHE !USE_DISTCC !CXXFLAGS !CFLAGS}
*/devel/doxygen {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/devel/gperf {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/devel/libthai {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/devel/nasm {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/devel/ncurses {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/devel/ORBit2 {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/devel/physfs {!USE_CCACHE !USE_DISTCC !CXXFLAGS !CFLAGS}
*/devel/pth {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/dns/libidn {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/editors/vim {!FORCE_MAKE_JOBS !USE_CCACHE !CXXFLAGS !CFLAGS}
*/games/ultimatestunts {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/graphics/libafterimage {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/graphics/libart_lgpl {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/lang/ruby18 {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/multimedia/ffmpeg {!USE_CCACHE !USE_DISTCC !CXXFLAGS !CFLAGS}
*/multimedia/gpac-libgpac {!USE_DISTCC !CXXFLAGS !CFLAGS}
*/multimedia/mplayer {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/multimedia/mencoder {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/print/ghostscript* {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/print/scribus {!USE_CCACHE !USE_DISTCC !CXXFLAGS !CFLAGS}
*/print/xdvik {!USE_CCACHE !USE_DISTCC !CXXFLAGS !CFLAGS}
*/security/libgpg-error {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/security/nss {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/science/hdf5 {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/textproc/exempi {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/graphics/poppler {!FORCE_MAKE_JOBS !CXXFLAGS !CFLAGS}
*/security/libgcrypt {!FORCE_MAKE_JOBS !USE_CCACHE !USE_DISTCC !CXXFLAGS !CFLAGS}
*/x11/libXp {!FORCE_MAKE_JOBS !USE_CCACHE !USE_DISTCC}
*/print/freetype2 {!USE_CCACHE !USE_DISTCC}
*/x11/liboldX {!FORCE_MAKE_JOBS !USE_DISTCC}
*/x11/libXTrap {!FORCE_MAKE_JOBS !USE_DISTCC}
*/devel/gobject-introspection {!FORCE_MAKE_JOBS !USE_DISTCC}
*/sysutils/polkit {!USE_CCACHE !USE_DISTCC}
*/graphics/jasper {!USE_CCACHE !USE_DISTCC !CXXFLAGS !CFLAGS}
*/x11-toolkits/gtk20 {!FORCE_MAKE_JOBS !USE_CCACHE !USE_DISTCC}
*/audio/flac {!USE_CCACHE !USE_DISTCC}
*/audio/speex {!USE_CCACHE !USE_DISTCC}
*/devel/libgtop {!FORCE_MAKE_JOBS !USE_CCACHE !USE_DISTCC}
*/x11/libgnome {!FORCE_MAKE_JOBS !USE_CCACHE !USE_DISTCC}
# Other build flags.
*/audio/linux-alsa-lib {USE_LINUX=yes !OVERRIDE_LINUX_BASE_PORT}
*/devel/freetype2 {WITH_LCD_FILTERING}
*/devel/subversion {WITHOUT_BDB}
*/mail/thunderbird-i18n{
WITHOUT_SWITCHER
THUNDERBIRD_I18N= ru
}
#--------------------------------------------------------------------------
*/databases/* {
CFLAGS= -O1 -pipe -s
CXXFLAGS= -O1 -pipe -s
!FORCE_MAKE_JOBS
!USE_CCACHE
!USE_DISTCC
}
*/lang/* {
CFLAGS= -O2 -pipe -s
CXXFLAGS= -O2 -pipe -s
}
*/x11-drivers/* {
CFLAGS= -O2 -pipe -s
CXXFLAGS= -O2 -pipe -s
}
}
# -----------------------------------------------------------------------------
с этим конфигом собереться Xorg и gnome2.
если какой-то пакет не сможет собраться
например сообщение вида
===> Compilation failed unexpectedly.
You have chosen to use multiple make jobs (parallelization) for all ports.
This port was not tested for this setting. Please remove FORCE_MAKE_JOBS and
retry the build before reporting the failure to the maintainer.
*** Error code 1
Stop in /usr/ports/x11/libgnome.
*** Error code 1
, его просто нужно добавить в /usr/local/etc/buildflags.conf с отключенными опциями, например для порта /x11/libgnome
*/x11/libgnome {!FORCE_MAKE_JOBS !USE_CCACHE !USE_DISTCC}