Add a _noccache option to enforce turning off ccache.

In addition, disable `CONFIG_GCC_PLUGINS` when ccache is used as it's disruptive, and tweak ccache sloppiness with safe values.
Those changes combined are giving us near 100% cache hit rate on hot cache.
This commit is contained in:
Tk-Glitch 2020-04-02 15:27:26 +02:00
parent d3eaca62ea
commit 4ce0d0e67f
6 changed files with 27 additions and 3 deletions

View File

@ -262,6 +262,9 @@ prepare() {
sed -i -e 's/CONFIG_LZ4_COMPRESS=m/CONFIG_LZ4_COMPRESS=y/' ./.config sed -i -e 's/CONFIG_LZ4_COMPRESS=m/CONFIG_LZ4_COMPRESS=y/' ./.config
sed -i -e 's/CONFIG_LZ4HC_COMPRESS=m/CONFIG_LZ4HC_COMPRESS=y/' ./.config sed -i -e 's/CONFIG_LZ4HC_COMPRESS=m/CONFIG_LZ4HC_COMPRESS=y/' ./.config
sed -i -e 's/CONFIG_RCU_BOOST_DELAY=500/CONFIG_RCU_BOOST_DELAY=0/' ./.config sed -i -e 's/CONFIG_RCU_BOOST_DELAY=500/CONFIG_RCU_BOOST_DELAY=0/' ./.config
if [ "$_noccache" != "true" ] && pacman -Qq ccache &> /dev/null; then
sed -i -e 's/CONFIG_GCC_PLUGINS=y/# CONFIG_GCC_PLUGINS is not set/' ./.config
fi
# Inject cpuopts options # Inject cpuopts options
echo "# CONFIG_MK8SSE3 is not set" >> ./.config echo "# CONFIG_MK8SSE3 is not set" >> ./.config
@ -844,8 +847,10 @@ build() {
fi fi
# ccache # ccache
if pacman -Qq ccache &> /dev/null; then if [ "$_noccache" != "true" ] && pacman -Qq ccache &> /dev/null; then
export PATH="/usr/lib/ccache/bin/:$PATH" export PATH="/usr/lib/ccache/bin/:$PATH"
export CCACHE_SLOPPINESS="file_macro,locale,time_macros"
export CCACHE_NOHASHDIR="true"
msg2 'ccache was found and will be used' msg2 'ccache was found and will be used'
fi fi

View File

@ -23,6 +23,9 @@ _OPTIPROFILE=""
# Set to true to bypass makepkg.conf and use all available threads for compilation. False will respect your makepkg.conf options. # Set to true to bypass makepkg.conf and use all available threads for compilation. False will respect your makepkg.conf options.
_force_all_threads="false" _force_all_threads="false"
# Set to true to prevent ccache from being used and set CONFIG_GCC_PLUGINS=y (which needs to be disabled for ccache to work properly)
_noccache="false"
# Set to true to use modprobed db to clean config from unneeded modules. Speeds up compilation considerably. Requires root - https://wiki.archlinux.org/index.php/Modprobed-db # Set to true to use modprobed db to clean config from unneeded modules. Speeds up compilation considerably. Requires root - https://wiki.archlinux.org/index.php/Modprobed-db
# !!!! Make sure to have a well populated db !!!! - Leave empty to be asked about it at build time # !!!! Make sure to have a well populated db !!!! - Leave empty to be asked about it at build time
_modprobeddb="false" _modprobeddb="false"

View File

@ -268,6 +268,9 @@ prepare() {
sed -i -e 's/# CONFIG_CMDLINE_BOOL is not set/CONFIG_CMDLINE_BOOL=y/' ./.config sed -i -e 's/# CONFIG_CMDLINE_BOOL is not set/CONFIG_CMDLINE_BOOL=y/' ./.config
echo "CONFIG_CMDLINE=\"${_custom_commandline}\"" >> ./.config echo "CONFIG_CMDLINE=\"${_custom_commandline}\"" >> ./.config
echo "# CONFIG_CMDLINE_OVERRIDE is not set" >> ./.config echo "# CONFIG_CMDLINE_OVERRIDE is not set" >> ./.config
if [ "$_noccache" != "true" ] && pacman -Qq ccache &> /dev/null; then
sed -i -e 's/CONFIG_GCC_PLUGINS=y/# CONFIG_GCC_PLUGINS is not set/' ./.config
fi
if [ "$_font_autoselect" != "false" ]; then if [ "$_font_autoselect" != "false" ]; then
sed -i -e 's/CONFIG_FONT_TER16x32=y/# CONFIG_FONT_TER16x32 is not set\nCONFIG_FONT_AUTOSELECT=y/' ./.config sed -i -e 's/CONFIG_FONT_TER16x32=y/# CONFIG_FONT_TER16x32 is not set\nCONFIG_FONT_AUTOSELECT=y/' ./.config
@ -896,8 +899,10 @@ build() {
fi fi
# ccache # ccache
if pacman -Qq ccache &> /dev/null; then if [ "$_noccache" != "true" ] && pacman -Qq ccache &> /dev/null; then
export PATH="/usr/lib/ccache/bin/:$PATH" export PATH="/usr/lib/ccache/bin/:$PATH"
export CCACHE_SLOPPINESS="file_macro,locale,time_macros"
export CCACHE_NOHASHDIR="true"
msg2 'ccache was found and will be used' msg2 'ccache was found and will be used'
fi fi

View File

@ -23,6 +23,9 @@ _OPTIPROFILE=""
# Set to true to bypass makepkg.conf and use all available threads for compilation. False will respect your makepkg.conf options. # Set to true to bypass makepkg.conf and use all available threads for compilation. False will respect your makepkg.conf options.
_force_all_threads="true" _force_all_threads="true"
# Set to true to prevent ccache from being used and set CONFIG_GCC_PLUGINS=y (which needs to be disabled for ccache to work properly)
_noccache="false"
# Set to true to use modprobed db to clean config from unneeded modules. Speeds up compilation considerably. Requires root - https://wiki.archlinux.org/index.php/Modprobed-db # Set to true to use modprobed db to clean config from unneeded modules. Speeds up compilation considerably. Requires root - https://wiki.archlinux.org/index.php/Modprobed-db
# !!!! Make sure to have a well populated db !!!! - Leave empty to be asked about it at build time # !!!! Make sure to have a well populated db !!!! - Leave empty to be asked about it at build time
_modprobeddb="false" _modprobeddb="false"

View File

@ -274,6 +274,9 @@ prepare() {
sed -i -e 's/# CONFIG_CMDLINE_BOOL is not set/CONFIG_CMDLINE_BOOL=y/' ./.config sed -i -e 's/# CONFIG_CMDLINE_BOOL is not set/CONFIG_CMDLINE_BOOL=y/' ./.config
echo "CONFIG_CMDLINE=\"${_custom_commandline}\"" >> ./.config echo "CONFIG_CMDLINE=\"${_custom_commandline}\"" >> ./.config
echo "# CONFIG_CMDLINE_OVERRIDE is not set" >> ./.config echo "# CONFIG_CMDLINE_OVERRIDE is not set" >> ./.config
if [ "$_noccache" != "true" ] && pacman -Qq ccache &> /dev/null; then
sed -i -e 's/CONFIG_GCC_PLUGINS=y/# CONFIG_GCC_PLUGINS is not set/' ./.config
fi
if [ "$_font_autoselect" != "false" ]; then if [ "$_font_autoselect" != "false" ]; then
sed -i -e 's/CONFIG_FONT_TER16x32=y/# CONFIG_FONT_TER16x32 is not set\nCONFIG_FONT_AUTOSELECT=y/' ./.config sed -i -e 's/CONFIG_FONT_TER16x32=y/# CONFIG_FONT_TER16x32 is not set\nCONFIG_FONT_AUTOSELECT=y/' ./.config
@ -902,8 +905,10 @@ build() {
fi fi
# ccache # ccache
if pacman -Qq ccache &> /dev/null; then if [ "$_noccache" != "true" ] && pacman -Qq ccache &> /dev/null; then
export PATH="/usr/lib/ccache/bin/:$PATH" export PATH="/usr/lib/ccache/bin/:$PATH"
export CCACHE_SLOPPINESS="file_macro,locale,time_macros"
export CCACHE_NOHASHDIR="true"
msg2 'ccache was found and will be used' msg2 'ccache was found and will be used'
fi fi

View File

@ -23,6 +23,9 @@ _OPTIPROFILE=""
# Set to true to bypass makepkg.conf and use all available threads for compilation. False will respect your makepkg.conf options. # Set to true to bypass makepkg.conf and use all available threads for compilation. False will respect your makepkg.conf options.
_force_all_threads="true" _force_all_threads="true"
# Set to true to prevent ccache from being used and set CONFIG_GCC_PLUGINS=y (which needs to be disabled for ccache to work properly)
_noccache="false"
# Set to true to use modprobed db to clean config from unneeded modules. Speeds up compilation considerably. Requires root - https://wiki.archlinux.org/index.php/Modprobed-db # Set to true to use modprobed db to clean config from unneeded modules. Speeds up compilation considerably. Requires root - https://wiki.archlinux.org/index.php/Modprobed-db
# !!!! Make sure to have a well populated db !!!! - Leave empty to be asked about it at build time # !!!! Make sure to have a well populated db !!!! - Leave empty to be asked about it at build time
_modprobeddb="false" _modprobeddb="false"