Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 757381 | Differences between
and this patch

Collapse All | Expand All

(-)a/scripts/bootstrap-prefix.sh (-10 / +72 lines)
Lines 91-96 efetch() { Link Here
91
	return 0
91
	return 0
92
}
92
}
93
93
94
darwin_symlink_sdk() {
95
	# setup MacOSX.sdk symlink for GCC/clang, this should probably be
96
	# managed using an eselect module in the future
97
	rm -f "${ROOT}/MacOSX.sdk"
98
	local SDKPATH=$(xcrun --show-sdk-path --sdk macosx)
99
	local SDKVERSION=$(xcrun --show-sdk-version --sdk macosx)
100
	( cd ${ROOT} && ln -s "${SDKPATH}" MacOSX.sdk )
101
	einfo "using system sources (${SDKVERSION}) from: ${SDKPATH}"
102
}
103
104
darwin_include_paths() {
105
	local SDKPATH="${ROOT}/MacOSX.sdk"
106
	export C_INCLUDE_PATH="${SDKPATH}/usr/include"
107
108
	# we require command line tools. This allows stage2 to progress.
109
	export CPLUS_INCLUDE_PATH="/Library/Developer/CommandLineTools/usr/include/c++/v1:${C_INCLUDE_PATH}"
110
}
111
94
configure_cflags() {
112
configure_cflags() {
95
	export CPPFLAGS="-I${ROOT}/tmp/usr/include"
113
	export CPPFLAGS="-I${ROOT}/tmp/usr/include"
96
	
114
	
Lines 241-247 configure_toolchain() { Link Here
241
						sys-libs/libcxx"
259
						sys-libs/libcxx"
242
					CC=clang
260
					CC=clang
243
					CXX=clang++
261
					CXX=clang++
262
					# sys-devel/binutils-apple requires sys-libs/tapi, but we
263
					# cannot build it first. so, stage2 needs to bootstrap it.
264
					#linker="sys-libs/tapi sys-devel/binutils-apple"
244
					linker=sys-devel/binutils-apple
265
					linker=sys-devel/binutils-apple
266
					if [[ ! -d /usr/include ]]; then
267
						darwin_symlink_sdk
268
						darwin_include_paths
269
					fi
245
					;;
270
					;;
246
				*"Apple LLVM version "*)
271
				*"Apple LLVM version "*)
247
					vers=${ccvers#*Apple LLVM version }
272
					vers=${ccvers#*Apple LLVM version }
Lines 504-516 bootstrap_setup() { Link Here
504
	esac
529
	esac
505
530
506
	if [[ ${DARWIN_USE_GCC} == 1 ]] ; then
531
	if [[ ${DARWIN_USE_GCC} == 1 ]] ; then
507
		# setup MacOSX.sdk symlink for GCC, this should probably be
532
		darwin_symlink_sdk
508
		# managed using an eselect module in the future
509
		rm -f "${ROOT}"/MacOSX.sdk
510
		local SDKPATH=$(xcrun --show-sdk-path --sdk macosx)
511
		( cd "${ROOT}" && ln -s "${SDKPATH}" MacOSX.sdk )
512
		einfo "using system sources from ${SDKPATH}"
513
514
		# amend profile, to use gcc one
533
		# amend profile, to use gcc one
515
		profile="${profile}/gcc"
534
		profile="${profile}/gcc"
516
	fi
535
	fi
Lines 1332-1337 bootstrap_libressl() { Link Here
1332
		https://ftp.openbsd.org/pub/OpenBSD/LibreSSL
1351
		https://ftp.openbsd.org/pub/OpenBSD/LibreSSL
1333
}
1352
}
1334
1353
1354
bootstrap_libtapi() {
1355
	# grab the libtapi headers (which are actually compiled headers)
1356
	# but link with libtapi.dylib from CommaandLineTools
1357
1358
	local PN PV A S
1359
	PN=libtapi
1360
	PV=1000.10.8_1
1361
	rev=${CHOST##*darwin}
1362
	A=${PN}-${PV}.darwin_${rev}.x86_64.tbz2
1363
	einfo "Bootstrapping ${A%-*} (link to system dylib)"
1364
1365
	efetch "http://packages.macports.org/libtapi/${A}"
1366
1367
	einfo "Unpacking ${A%-*}"
1368
	S="${PORTAGE_TMPDIR}/${PN}-${PV}"
1369
	rm -rf "${S}"
1370
	mkdir -p "${S}"
1371
	cd "${S}"
1372
	bzip2 -dc "${DISTDIR}/${A}" | tar -xf - || return 1
1373
	cp -r opt/local/include/tapi "${ROOT}"/tmp/usr/include || return 1
1374
1375
	# to link with this lib, pass '-client_name ld' in LDFLAGS
1376
	ln -s /Library/Developer/CommandLineTools/usr/lib/libtapi.dylib "${ROOT}"/tmp/usr/lib
1377
}
1378
1335
bootstrap_stage_host_gentoo() {
1379
bootstrap_stage_host_gentoo() {
1336
	if ! is-rap ; then
1380
	if ! is-rap ; then
1337
		einfo "Shortcut only supports prefix-standalone, but we are bootstrapping"
1381
		einfo "Shortcut only supports prefix-standalone, but we are bootstrapping"
Lines 1736-1743 bootstrap_stage2() { Link Here
1736
	[[ ${CHOST} == *-solaris* ]] && echo "=dev-libs/libffi-3.3_rc0" \
1780
	[[ ${CHOST} == *-solaris* ]] && echo "=dev-libs/libffi-3.3_rc0" \
1737
		>> "${ROOT}"/tmp/etc/portage/package.mask
1781
		>> "${ROOT}"/tmp/etc/portage/package.mask
1738
1782
1739
	# unlock GCC on Darwin for DARWIN_USE_GCC bootstraps
1783
	# unlock Darwin builds for GCC and clang bootstraps
1740
	if [[ ${DARWIN_USE_GCC} == 1 ]] ; then
1784
	if [[ -d "${ROOT}/MacOSX.sdk" ]] ; then
1741
		rm -f "${ROOT}"/tmp/MacOSX.sdk
1785
		rm -f "${ROOT}"/tmp/MacOSX.sdk
1742
		( cd "${ROOT}"/tmp && ln -s ../MacOSX.sdk )
1786
		( cd "${ROOT}"/tmp && ln -s ../MacOSX.sdk )
1743
	fi
1787
	fi
Lines 1746-1753 bootstrap_stage2() { Link Here
1746
	# unless we only build the buildtool, bug #603012
1790
	# unless we only build the buildtool, bug #603012
1747
	echo "dev-util/cmake -server" >> "${ROOT}"/tmp/etc/portage/package.use
1791
	echo "dev-util/cmake -server" >> "${ROOT}"/tmp/etc/portage/package.use
1748
1792
1793
	# rhash (dep of cmake) configure can't find the openssl/libressl.
1794
	# ssl use flag allows RHash to "use optimized algorithms"
1795
	# but RHash will work fine without, so disable during bootstrap.
1796
	echo "app-crypt/rhash -ssl" >> "${ROOT}"/tmp/etc/portage/package.use
1797
1749
	emerge_pkgs --nodeps "${pkgs[@]}" || return 1
1798
	emerge_pkgs --nodeps "${pkgs[@]}" || return 1
1750
1799
1800
	if [[ ${CHOST} == *-darwin* ]]; then
1801
		# libtapi.dylib is needed to build the binutils-apple linker,
1802
		# but building sys-libs/tapi requires llvm to be installed
1803
		# because it uses llvm.eclass which checks for which version
1804
		# of llvm is installed. Also, building libtapi includes
1805
		# re-building the sources of llvm & clang to get some internal
1806
		# binaries that don't get installed, but we haven't installed
1807
		# the llvm deps yet. So, we can't install tapi via portage yet.
1808
		[[ ${DARWIN_USE_GCC} == 1 ]] \
1809
			|| [[ -f "${ROOT}"/tmp/usr/lib/libtapi.dylib ]] \
1810
			|| (bootstrap_libtapi) || return 1
1811
	fi
1812
1751
	# Debian multiarch supported by RAP needs ld to support sysroot.
1813
	# Debian multiarch supported by RAP needs ld to support sysroot.
1752
	EXTRA_ECONF=$(rapx --with-sysroot=/) \
1814
	EXTRA_ECONF=$(rapx --with-sysroot=/) \
1753
	emerge_pkgs --nodeps ${linker} || return 1
1815
	emerge_pkgs --nodeps ${linker} || return 1
Lines 2836-2842 EOF Link Here
2836
	export CHOST=$(portageq envvar CHOST)
2898
	export CHOST=$(portageq envvar CHOST)
2837
2899
2838
	# after stage1 and stage2 we should have a bash of our own, which
2900
	# after stage1 and stage2 we should have a bash of our own, which
2839
	# is preferably over the host-provided one, because we know it can
2901
	# is preferable over the host-provided one, because we know it can
2840
	# deal with the bash-constructs we use in stage3 and onwards
2902
	# deal with the bash-constructs we use in stage3 and onwards
2841
	hash -r
2903
	hash -r
2842
2904

Return to bug 757381