##
## These variables are printed with a standard 'emerge info' in
## portage as of 2.0.51-r5. They are sorted regardless of order here.
##
ACCEPT_KEYWORDS
CFLAGS
CBUILD
CHOST
CONFIG_PROTECT
CONFIG_PROTECT_MASK
CPPFLAGS
CTARGET
CXXFLAGS
DISTDIR
FEATURES
FFLAGS
GENTOO_MIRRORS
INSTALL_MASK
LANG
LC_ALL
LINGUAS
LDFLAGS
MAKEOPTS
PORTAGE_COMPRESS
PORTAGE_COMPRESS_FLAGS
PORTAGE_CONFIGROOT
PORTAGE_TMPDIR
PORTDIR
PORTDIR_OVERLAY
SYNC
USE
PORTAGE_RSYNC_OPTS
PORTAGE_RSYNC_EXTRA_OPTS
