summaryrefslogtreecommitdiff
path: root/dev-lang/ccc/ccc-6.5.9.001.ebuild
blob: de88e573e95e0681d37c41e32667587c4d992c4c (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
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/ccc/ccc-6.5.9.001.ebuild,v 1.7 2007/07/02 14:39:33 peper Exp $

inherit eutils rpm

IUSE="doc"

DESCRIPTION="Compaq's C compiler for the Alpha platform"
HOMEPAGE="ftp://ftp.compaq.com/pub/products/C-Cxx/linux/"

SRC_URI="ccc-6.5.9.001-6.alpha.rpm"

S=${WORKDIR}
LICENSE="PLDSPv2"
SLOT="0"
KEYWORDS="-* ~alpha"
RESTRICT="fetch strip mirror"

DEPEND="sys-devel/gcc-config
	app-arch/rpm2targz
	>=sys-apps/sed-4
	>=app-shells/bash-2.05b"
RDEPEND="dev-libs/libots
	>=dev-libs/libcpml-5.2.01"

ccc_release="${PV}-6"

src_unpack() {
	# convert rpm into tar archive
	local ccc_rpm="ccc-${ccc_release}.alpha.rpm"

	rpm_src_unpack ${ccc_rpm}

	find "${S}"/usr -type d -exec chmod a+rx {} \;

	# patch up config script to sort gcc-lib paths last.  Thanks to
	# Marc Giger for sorting this out
	epatch ${FILESDIR}/create-comp-config.patch
	epatch ${FILESDIR}/probe_linux.patch

	# remove unwanted documentation
	if ! use doc > /dev/null; then
		einfo "Removing unwanted documentation (USE=\"-doc\")..."
		rm -rf usr/doc
	fi

	# Patch create-comp-config.sh to work with gcc-3.x
	# (06 Feb 2004 agriffis)
	sed -i -e 's/gcc -v -V \$GCC_VER/gcc -V $GCC_VER -v/' \
		usr/lib/compaq/ccc-${ccc_release}/alpha-linux/bin/create-comp-config.sh

	# man pages are in the wrong place
	einfo "Reorganising man structure..."
	rm -rf usr/man
	mkdir usr/share
	mv usr/lib/compaq/ccc-${ccc_release}/alpha-linux/man usr/share

	if use doc > /dev/null; then
		einfo "Reorganising documentation..."
		mv usr/doc usr/share
	fi
}

src_install() {
	# move files over
	mv usr "${D}" || die "ccc installation failed"

	# prep docs
	prepalldocs
}

pkg_config () {
	einfo "Attempting configuration of ccc"
	# NOTE: _must_ hide distcc, ccache, etc during this step
	PATH=/bin:/usr/bin:/sbin:/usr/sbin \
		/usr/lib/compaq/ccc-${ccc_release}/alpha-linux/bin/create-comp-config.sh \
		ccc-${ccc_release} ${gcc_libs_path}
	echo

	# fix up lib paths - bug #15719, comment 6
	einfo "Copying crtbegin/crtend from gcc"
	local gcc_libs_path="`gcc-config --get-lib-path`"
	if [[ $? != 0 || ! -d "${gcc_libs_path}" ]]; then
		die "gcc-config returned an invalid library path (${gcc_libs_path})"
	else
		rm -f /usr/lib/compaq/ccc-${ccc_release}/alpha-linux/bin/crt{begin,end}.o
		cp ${gcc_libs_path}/crt{begin,end}.o \
			/usr/lib/compaq/ccc-${ccc_release}/alpha-linux/bin
		assert "Failed to copy crtbegin/crtend.o from ${gcc_libs_path}"
	fi

	# add gcc-lib path to ccc's search path
	# check man ccc for file format info.
#	einfo "Configuring ccc to observe gcc library path and include paths"
#	printf '%s %s %s\n' \
#		"-L${gcc_libs_path}" \
#		" -SysIncDir /usr/lib/compaq/ccc-${ccc_releasei%*-1}/alpha-linux/include" \
#		" -SysIncDir /usr/include/linux" \
#		> /usr/lib/compaq/ccc-${ccc_release%*-1}/alpha-linux/bin/comp.config
#	einfo "Additional paths can be set by users using \$DEC_CCC variable."

	einfo "ccc has been configured, you can now use it as usual."
}

pkg_postinst () {
	elog "ccc has been merged successfully, the EULA"
	elog "is available in"
	elog
	elog "/usr/lib/compaq/ccc-${ccc_release}/alpha-linux/bin/LICENSE.txt"
	elog
	if use doc >/dev/null; then
		elog "You can also view the compiler documentation"
		elog "in /usr/share/doc/ccc-${PV}"
	fi

	ewarn
	ewarn "You _MUST_ now run:"
	ewarn "emerge --config =${CATEGORY}/${PF}"
	ewarn "to complete the installation"
	ewarn
}