summaryrefslogtreecommitdiffstats
path: root/bin/save-ebuild-env.sh
blob: 23e7aaa6a5231431f881a1e6250cc0d4d3f504a1 (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
#!/bin/bash
# Copyright 1999-2011 Gentoo Foundation
# 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_DOCDESTTREE_ _E_EXEDESTTREE_ \
			PORTAGE_DOCOMPRESS PORTAGE_DOCOMPRESS_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 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 ; do
		unset -f default_$x _eapi{0,1,2,3,4}_$x
	done
	unset x

	unset -f assert assert_sigpipe_ok dump_trace die diefunc \
		quiet_mode vecho elog_base eqawarn elog \
		esyslog einfo einfon ewarn eerror ebegin _eend eend KV_major \
		KV_minor KV_micro KV_to_int get_KV unset_colors set_colors 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 \
		keepdir unpack strip_duplicate_slashes econf einstall \
		dyn_setup dyn_unpack dyn_clean into insinto exeinto docinto \
		insopts diropts exeopts libopts docompress \
		abort_handler abort_prepare abort_configure abort_compile \
		abort_test abort_install dyn_prepare dyn_configure \
		dyn_compile dyn_test dyn_install \
		dyn_preinst dyn_pretend dyn_help debug-print debug-print-function \
		debug-print-section helpers_die inherit EXPORT_FUNCTIONS \
		nonfatal register_success_hook remove_path_entry \
		save_ebuild_env filter_readonly_variables preprocess_ebuild_env \
		set_unless_changed unset_unless_changed source_all_bashrcs \
		ebuild_main ebuild_phase ebuild_phase_with_hooks \
		_ebuild_arg_to_phase _ebuild_phase_funcs default \
		_hasg _hasgq _unpack_tar \
		${QA_INTERCEPTORS}

	# portage config variables and variables set directly by portage
	unset ACCEPT_LICENSE BAD BRACKET BUILD_PREFIX COLS \
		DISTCC_DIR DISTDIR DOC_SYMLINKS_DIR \
		EBUILD_FORCE_TEST EBUILD_MASTER_PID \
		ECLASS_DEPTH ENDCOL FAKEROOTKEY \
		GOOD HILITE HOME \
		LAST_E_CMD LAST_E_LEN LD_PRELOAD MISC_FUNCTIONS_ARGS MOPREFIX \
		NOCOLOR NORMAL PKGDIR PKGUSE PKG_LOGDIR PKG_TMPDIR \
		PORTAGE_BASHRCS_SOURCED PORTAGE_COMPRESS_EXCLUDE_SUFFIXES \
		PORTAGE_NONFATAL PORTAGE_QUIET \
		PORTAGE_SANDBOX_DENY PORTAGE_SANDBOX_PREDICT \
		PORTAGE_SANDBOX_READ PORTAGE_SANDBOX_WRITE PREROOTPATH \
		QA_INTERCEPTORS \
		RC_DEFAULT_INDENT RC_DOT_PATTERN RC_ENDCOL RC_INDENTATION  \
		ROOT ROOTPATH RPMDIR TEMP TMP TMPDIR USE_EXPAND \
		WARN 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
	)
}