# Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-lang/mono/mono-1.0.5-r5.ebuild,v 1.5 2006/01/09 22:09:07 mr_bones_ Exp $ inherit eutils mono flag-o-matic debug MCS_P=${P/mono/mcs} MCS_S=${WORKDIR}/${MCS_P} DESCRIPTION="Mono runtime and class libraries, a C# compiler/interpreter" HOMEPAGE="http://www.go-mono.com/" SRC_URI="http://www.go-mono.com/archive/${PV}/${P}.tar.gz http://www.go-mono.com/archive/${PV}/${MCS_P}.tar.gz" LICENSE="|| ( GPL-2 LGPL-2 X11 )" SLOT="0" KEYWORDS="x86 ppc" IUSE="nptl" DEPEND="virtual/libc >=dev-libs/glib-2.0 >=dev-libs/icu-2.6.1 !=sys-devel/gcc-3.3.5 ppc? ( >=sys-libs/glibc-2.3.3_pre20040420 )" RDEPEND="${DEPEND} dev-util/pkgconfig dev-libs/libxml2" src_unpack() { unpack ${A} epatch ${FILESDIR}/${MCS_P}-pathfix.diff # Disable installing the precompiled mcs/classlibs sed -i "s: runtime : :" ${S}/Makefile.in # Fix the path for the jay man page sed -i "s:man/man1:share/man/man1:" ${MCS_S}/jay/Makefile # Ugly sed to replace windows path with *nix equivalent for file in $(find ${MCS_S}/nunit20 -name AssemblyInfo.cs) do sed -i "s:\.\.\\\\\\\\:../:g" "${file}" done # Fix MONO_CFG_DIR for signing sed -i \ "s:^\t\(MONO_PATH.*)\):\tMONO_CFG_DIR='${D}/etc/' \1:" \ ${MCS_S}/build/library.make # add our own little in-place mcs script echo "${S}/mono/mini/mono ${S}/runtime/mcs.exe \"\$@\" " > ${S}/runtime/mcs chmod +x ${S}/runtime/mcs echo "${S}/mono/mini/mono ${S}/runtime/monoresgen.exe \"\$@\" " > ${S}/runtime/monoresgen chmod +x ${S}/runtime/monoresgen PATH="${S}/runtime:${PATH}" MONO_CFG_DIR='${D}/etc/' export PATH export MONO_CFG_DIR } src_compile() { strip-flags local myconf="--with-sigaltstack=yes" if use nptl then myconf="${myconf} --with-tls=__thread" sed -i "s: -fexceptions::" ${S}/libgc/configure.host else myconf="${myconf} --with-tls=pthread" fi econf ${myconf} || die emake -j1 || die "mono runtime compilation failure" cd ${S} ln -s ../runtime ${WORKDIR}/${P}/runtime/lib # Now that we have a valid config for lib mappings, put them # in our temporary config directory. dodir /etc/mono cp ${S}/data/{config,machine.config} ${D}/etc/mono/ cd ${MCS_S} echo "prefix=${S}/runtime" > build/config.make echo "MONO_PATH=${S}/runtime/net_1_1" >> build/config.make echo "BOOTSTRAP_MCS=${S}/runtime/mcs" >> build/config.make echo "RUNTIME=${S}/mono/mini/mono \${RUNTIME_FLAGS}" >> build/config.make echo "PATH=${S}/runtime:${PATH}" >> build/config.make echo "export PATH" >> build/config.make echo "export MONO_PATH" >> build/config.make emake -j1 PLATFORM=linux || die "mcs compiler compilation failure" echo "prefix=/usr" >> build/config.make } src_install() { make DESTDIR=${D} install || die dodoc AUTHORS ChangeLog NEWS README docinto docs dodoc docs/* docinto libgc dodoc libgc/ChangeLog cd ${MCS_S} make PLATFORM=linux DESTDIR=${D} install || die docinto mcs dodoc AUTHORS README* ChangeLog INSTALL.txt docinto mcs/docs dodoc docs/*.txt # Remove some extraneous tools cd ${D}/usr/bin rm {CorCompare,EnumCheck,GenerateDelegate,ictool,IFaceDisco}.exe rm nunit-console.exe # Don't install the gmcs wrapper script, as we don't install the 2.0 # profile stuff on mono-1.0.x rm gmcs # init script exeinto /etc/init.d ; newexe ${FILESDIR}/dotnet.init dotnet insinto /etc/conf.d ; newins ${FILESDIR}/dotnet.conf dotnet } pkg_postinst() { echo einfo "If you want to avoid typing ' program.exe'" einfo "you can configure your runtime in /etc/conf.d/dotnet" einfo "Use /etc/init.d/dotnet to register your runtime" echo }