aboutsummaryrefslogtreecommitdiff
blob: 3a2560aabffa346850df4cec005e76e04206c544 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/usr/bin/env bash
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

# @FUNCTION: __save_ebuild_env
# @DESCRIPTION:
# echo the current environment to stdout, filtering out redundant info.
#
# --exclude-init-phases causes pkg_nofetch and src_* phase functions to
# be excluded from the output. These function are not needed for installation
# or removal of the packages, and can therefore be safely excluded.
#
__save_ebuild_env() {
	(
	if has --exclude-init-phases $* ; then
		unset S __E_DESTTREE __E_INSDESTTREE __E_DOCDESTTREE __E_EXEDESTTREE \
			PORTAGE_DOCOMPRESS_SIZE_LIMIT PORTAGE_DOCOMPRESS \
			PORTAGE_DOCOMPRESS_SKIP PORTAGE_DOSTRIP PORTAGE_DOSTRIP_SKIP
		if [[ -n ${PYTHONPATH} &&
			${PYTHONPATH%%:*} -ef ${PORTAGE_PYM_PATH} ]] ; then
			if [[ ${PYTHONPATH} == *:* ]] ; then
				export PYTHONPATH=${PYTHONPATH#*:}
			else
				unset PYTHONPATH
			fi
		fi
	fi

	# misc variables inherited from the calling environment
	unset COLORTERM DISPLAY EDITOR LESS LESSOPEN LOGNAME LS_COLORS PAGER \
		TERM TERMCAP USER ftp_proxy http_proxy https_proxy no_proxy

	# other variables inherited from the calling environment
	unset CVS_RSH ECHANGELOG_USER GPG_AGENT_INFO \
	SSH_AGENT_PID SSH_AUTH_SOCK STY WINDOW XAUTHORITY

	# CCACHE and DISTCC config
	unset ${!CCACHE_*} ${!DISTCC_*}

	# There's no need to bloat environment.bz2 with internally defined
	# functions and variables, so filter them out if possible.

	for x in pkg_setup pkg_nofetch src_unpack src_prepare src_configure \
		src_compile src_test src_install pkg_preinst pkg_postinst \
		pkg_prerm pkg_postrm pkg_config pkg_info pkg_pretend ; do
		unset -f default_${x} __eapi{0,1,2,3,4}_${x}
	done
	unset x

	unset -f assert __assert_sigpipe_ok \
		__dump_trace die \
		__quiet_mode __vecho __elog_base eqawarn elog \
		einfo einfon ewarn eerror ebegin __eend eend KV_major \
		KV_minor KV_micro KV_to_int get_KV has \
		__has_phase_defined_up_to \
		hasv hasq __qa_source __qa_call \
		addread addwrite adddeny addpredict __sb_append_var \
		use usev useq has_version portageq \
		best_version use_with use_enable register_die_hook \
		unpack __strip_duplicate_slashes econf einstall \
		__dyn_setup __dyn_unpack __dyn_clean \
		into insinto exeinto docinto \
		insopts diropts exeopts libopts docompress dostrip \
		__abort_handler __abort_prepare __abort_configure __abort_compile \
		__abort_test __abort_install __dyn_prepare __dyn_configure \
		__dyn_compile __dyn_test __dyn_install \
		__dyn_pretend __dyn_help \
		debug-print debug-print-function \
		debug-print-section __helpers_die inherit EXPORT_FUNCTIONS \
		nonfatal register_success_hook \
		__hasg __hasgq \
		__save_ebuild_env __set_colors __filter_readonly_variables \
		__preprocess_ebuild_env \
		__repo_attr __source_all_bashrcs \
		__ebuild_main __ebuild_phase __ebuild_phase_with_hooks \
		__ebuild_arg_to_phase __ebuild_phase_funcs default \
		__unpack_tar __unset_colors \
		__source_env_files __try_source __check_bash_version \
		__bashpid __start_distcc \
		__eqaquote __eqatag \
		${QA_INTERCEPTORS}

	___eapi_has_usex && unset -f usex

	# Clear out the triple underscore namespace as it is reserved by the PM.
	while IFS=' ' read -r _ _ REPLY; do
		if [[ ${REPLY} == ___* ]]; then
			unset -f "${REPLY}"
		fi
	done < <(declare -F)
	unset -v REPLY "${!___@}"

	# portage config variables and variables set directly by portage
	unset ACCEPT_LICENSE BUILD_PREFIX COLS \
		DISTDIR DOC_SYMLINKS_DIR \
		EBUILD_FORCE_TEST EBUILD_MASTER_PID \
		ECLASS_DEPTH ENDCOL FAKEROOTKEY \
		HOME \
		LAST_E_CMD LAST_E_LEN LD_PRELOAD MISC_FUNCTIONS_ARGS MOPREFIX \
		NOCOLOR NO_COLOR PKGDIR PKGUSE PKG_LOGDIR PKG_TMPDIR \
		PORTAGE_BASHRC_FILES PORTAGE_BASHRCS_SOURCED \
		PORTAGE_COLOR_BAD PORTAGE_COLOR_BRACKET PORTAGE_COLOR_ERR \
		PORTAGE_COLOR_GOOD PORTAGE_COLOR_HILITE PORTAGE_COLOR_INFO \
		PORTAGE_COLOR_LOG PORTAGE_COLOR_NORMAL PORTAGE_COLOR_QAWARN \
		PORTAGE_COLOR_WARN \
		PORTAGE_COMPRESS PORTAGE_COMPRESS_EXCLUDE_SUFFIXES \
		PORTAGE_DOHTML_UNWARNED_SKIPPED_EXTENSIONS \
		PORTAGE_DOHTML_UNWARNED_SKIPPED_FILES \
		PORTAGE_DOHTML_WARN_ON_SKIPPED_FILES \
		PORTAGE_NONFATAL PORTAGE_QUIET \
		PORTAGE_SANDBOX_DENY PORTAGE_SANDBOX_PREDICT \
		PORTAGE_SANDBOX_READ PORTAGE_SANDBOX_WRITE \
		PORTAGE_SOCKS5_PROXY PREROOTPATH \
		QA_INTERCEPTORS \
		RC_DEFAULT_INDENT RC_DOT_PATTERN RC_ENDCOL RC_INDENTATION  \
		ROOT ROOTPATH RPMDIR TEMP TMP TMPDIR USE_EXPAND \
		XARGS _RC_GET_KV_CACHE

	# user config variables
	unset DOC_SYMLINKS_DIR INSTALL_MASK PKG_INSTALL_MASK

	declare -p
	declare -fp
	if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
		export
	fi
	)
}