[ccache] Configuration file plan
Owen Mann
owen-javanet at rcn.com
Wed Apr 6 15:25:28 MDT 2011
FWIW, it sounds pretty sexy to me! :-)
Question: for an NFS-mounted cache, wouldn't different users' CCACHE_MAXxxxx values conflict? It seems to me it's better as a one-time or per-cache setting. I can definitely see how it would have value in a single-user setup, though.
---- Original message ----
>Date: Wed, 06 Apr 2011 22:12:55 +0200
>From: ccache-bounces at lists.samba.org (on behalf of Joel Rosdahl <joel at rosdahl.net>)
>Subject: [ccache] Configuration file plan
>To: ccache list <ccache at lists.samba.org>
>
>Hi,
>
>I would like to improve ccache's configurability. As you know, configuration of
>ccache is today done by setting a bunch of environment variables, but that's
>becoming increasingly messy; there are currently 24 CCACHE_* variables in the
>development version of ccache. I think it's time to move settings to a
>configuration file while keeping the ability to override configuration by
>setting environment variables.
>
>I actually envision two configuration files:
>
>- <sysconfdir>/ccache.conf (typically /etc/ccache.conf)
>- <ccachedir>/ccache.conf (typically $HOME/.ccache/ccache.conf)
>
>ccache reads both (if they exist) each time it's run. Settings then have the
>following priority:
>
>1. Environment variables.
>2. <ccachedir>/ccache.conf
>3. <sysconfdir>/ccache.conf
>4. Compile-time defaults.
>
>This means that:
>
>- The administrator can choose default settings for the system by editing
> <sysconfdir>/ccache.conf.
>- The user can override the system settings with his/her own default settings
> by editing <ccachedir>/ccache.conf. (If <ccachedir> is shared by several
> users, the settings are of course also shared.)
>- The user can override the default settings temporarily by setting environment
> variables.
>- It's backwards compatible with the existing environment variables.
>
>I expect that the overhead of reading the configuration file(s) will be
>negligible.
>
>The "max files" and "max size" settings (set by command-line options
>-F/--max-files and -M/--max-size) are today stored in the "stats" files in the
>cache, but these will find a much better place in <ccachedir>/ccache.conf.
>
>I think the configuration file syntax should be a simple text format like this:
>
> # A comment.
> key = value
>
>No quotes around strings (at least not mandatory). Whitespace is trimmed at the
>beginning and end of values.
>
>Mapping between environment variables and keys in the configuration files:
>
> Environment variable Config key Type Default Note
> -----------------------------------------------------------------------
> CCACHE_BASEDIR base_dir string "" [1]
> CCACHE_CC compiler string "" [2]
> CCACHE_COMPILERCHECK compiler_check string mtime
> CCACHE_COMPRESS compression boolean false
> CCACHE_CPP2 run_second_cpp boolean false
> CCACHE_DETECT_SHEBANG detect_shebang boolean false
> CCACHE_DIR cache_dir string $HOME/.ccache
> CCACHE_DIRECT direct_mode boolean true
> CCACHE_DISABLE disable boolean false
> CCACHE_EXTENSION cpp_extension string "" [3]
> CCACHE_EXTRAFILES extra_files_to_hash string ""
> CCACHE_HARDLINK hard_link boolean false
> CCACHE_HASHDIR hash_dir boolean false
> CCACHE_LOGFILE log_file string "" [4]
>NEW CCACHE_MAXFILES max_files integer 0 [5]
>NEW CCACHE_MAXSIZE max_size integer 1G [6]
> CCACHE_NLEVELS cache_dir_levels integer 2
> CCACHE_PATH path string "" [7]
> CCACHE_PREFIX prefix_command string "" [8]
> CCACHE_READONLY read_only boolean false
> CCACHE_RECACHE recache boolean false
> CCACHE_SLOPPINESS sloppiness string ""
> CCACHE_STATS stats boolean true
> CCACHE_TEMPDIR temporary_dir string "" [9]
> CCACHE_UMASK umask integer - [10]
> CCACHE_UNIFY unify boolean false
>
>String and integer settings are handled in a straight-forward manner, but
>boolean settings are a bit special for backward-compatibility reasons:
>
> - A boolean CCACHE_FOO set to any value (even the empty string) means true;
> unset means false.
> - For each boolean CCACHE_FOO, there is also a CCACHE_NOFOO with the inverse
> logic. CCACHE_FOO (if set) has higher priority than CCACHE_NOFOO. (Some
> settings are quite silly in their NO variant, but I think it's worth it for
> consistency.)
> - The possible values of a boolean setting in the configuration file are
> spelled "true" and "false".
>
>$VARIABLE and ${VARIABLE} references will be expanded as expected in variables
>that specify paths.
>
>Notes:
>
>[1] The empty string means "don't rewrite absolute paths".
>[2] The empty string means find compiler from the command line.
>[3] The empty string means auto-detect.
>[4] The empty string means no logging.
>[5] New setting corresponding to the old -F command-line option. 0 means
> unlimited.
>[6] New setting corresponding to the old -M command-line option. 0 means
> unlimited. Suffix G, M or K may be used; default suffix: G.
>[7] The empty string means use the normal PATH.
>[8] The empty string means no prefix.
>[9] The empty string means "use <cache_dir>/tmp".
>[10] Not set means "don't change the umask". The integer is interpreted as an
> octal number.
>
>New command-line options to ccache:
>
> -o, --set-option=K=V set configuration setting K to V
> -p, --print-config print current configuration settings
>
>The -F and -M command-line options will update the configuration file instead
>of the stats file (and those entries in the stats files will become obsolete).
>
>What do you think? Comments are welcome!
>
>-- Joel
>_______________________________________________
>ccache mailing list
>ccache at lists.samba.org
>https://lists.samba.org/mailman/listinfo/ccache
More information about the ccache
mailing list