| 1 | # Copyright 1999-2004 Gentoo Foundation |
1 | # Copyright 1999-2008 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/mono.eclass,v 1.1.1.1 2005/11/30 09:59:37 chriswhite Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/mono.eclass,v 1.14 2011/03/25 09:43:42 angelos Exp $ |
| 4 | # |
|
|
| 5 | # Author : foser <foser@gentoo.org> |
|
|
| 6 | # |
|
|
| 7 | # mono eclass |
|
|
| 8 | # right now only circumvents a sandbox violation by setting a mono env var |
|
|
| 9 | |
4 | |
|
|
5 | # @ECLASS: mono.eclass |
|
|
6 | # @MAINTAINER: |
|
|
7 | # dotnet@gentoo.org |
|
|
8 | # @BLURB: common settings and functions for mono and dotnet related |
|
|
9 | # packages |
|
|
10 | # @DESCRIPTION: |
|
|
11 | # The mono eclass contains common environment settings that are useful for |
|
|
12 | # dotnet packages. Currently, it provides no functions, just exports |
|
|
13 | # MONO_SHARED_DIR and sets LC_ALL in order to prevent errors during compilation |
|
|
14 | # of dotnet packages. |
|
|
15 | |
|
|
16 | inherit multilib |
| 10 | |
17 | |
| 11 | # >=mono-0.92 versions using mcs -pkg:foo-sharp require shared memory, so we set the |
18 | # >=mono-0.92 versions using mcs -pkg:foo-sharp require shared memory, so we set the |
| 12 | # shared dir to ${T} so that ${T}/.wapi can be used during the install process. |
19 | # shared dir to ${T} so that ${T}/.wapi can be used during the install process. |
| 13 | export MONO_SHARED_DIR=${T} |
20 | export MONO_SHARED_DIR="${T}" |
|
|
21 | |
|
|
22 | # Building mono, nant and many other dotnet packages is known to fail if LC_ALL |
|
|
23 | # variable is not set to C. To prevent this all mono related packages will be |
|
|
24 | # build with LC_ALL=C (see bugs #146424, #149817) |
|
|
25 | export LC_ALL=C |
|
|
26 | |
|
|
27 | # Monodevelop-using applications need this to be set or they will try to create config |
|
|
28 | # files in the user's ~ dir. |
|
|
29 | |
|
|
30 | export XDG_CONFIG_HOME="${T}" |
|
|
31 | |
|
|
32 | # Fix bug 83020: |
|
|
33 | # "Access Violations Arise When Emerging Mono-Related Packages with MONO_AOT_CACHE" |
|
|
34 | |
|
|
35 | unset MONO_AOT_CACHE |
|
|
36 | |
|
|
37 | egacinstall() { |
|
|
38 | use !prefix && has "${EAPI:-0}" 0 1 2 && ED="${D}" |
|
|
39 | gacutil -i "${1}" \ |
|
|
40 | -root "${ED}"/usr/$(get_libdir) \ |
|
|
41 | -gacdir /usr/$(get_libdir) \ |
|
|
42 | -package ${2:-${GACPN:-${PN}}} \ |
|
|
43 | || die "installing ${1} into the Global Assembly Cache failed" |
|
|
44 | } |
|
|
45 | |
|
|
46 | mono_multilib_comply() { |
|
|
47 | use !prefix && has "${EAPI:-0}" 0 1 2 && ED="${D}" |
|
|
48 | local dir finddirs=() mv_command=${mv_command:-mv} |
|
|
49 | if [[ -d "${ED}/usr/lib" && "$(get_libdir)" != "lib" ]] |
|
|
50 | then |
|
|
51 | if ! [[ -d "${ED}"/usr/"$(get_libdir)" ]] |
|
|
52 | then |
|
|
53 | mkdir "${ED}"/usr/"$(get_libdir)" || die "Couldn't mkdir ${ED}/usr/$(get_libdir)" |
|
|
54 | fi |
|
|
55 | ${mv_command} "${ED}"/usr/lib/* "${ED}"/usr/"$(get_libdir)"/ || die "Moving files into correct libdir failed" |
|
|
56 | rm -rf "${ED}"/usr/lib |
|
|
57 | for dir in "${ED}"/usr/"$(get_libdir)"/pkgconfig "${ED}"/usr/share/pkgconfig |
|
|
58 | do |
|
|
59 | |
|
|
60 | if [[ -d "${dir}" && "$(find "${dir}" -name '*.pc')" != "" ]] |
|
|
61 | then |
|
|
62 | pushd "${dir}" &> /dev/null |
|
|
63 | sed -i -r -e 's:/(lib)([^a-zA-Z0-9]|$):/'"$(get_libdir)"'\2:g' \ |
|
|
64 | *.pc \ |
|
|
65 | || die "Sedding some sense into pkgconfig files failed." |
|
|
66 | popd "${dir}" &> /dev/null |
|
|
67 | fi |
|
|
68 | done |
|
|
69 | if [[ -d "${ED}/usr/bin" ]] |
|
|
70 | then |
|
|
71 | for exe in "${ED}/usr/bin"/* |
|
|
72 | do |
|
|
73 | if [[ "$(file "${exe}")" == *"shell script text"* ]] |
|
|
74 | then |
|
|
75 | sed -r -i -e ":/lib(/|$): s:/lib(/|$):/$(get_libdir)\1:" \ |
|
|
76 | "${exe}" || die "Sedding some sense into ${exe} failed" |
|
|
77 | fi |
|
|
78 | done |
|
|
79 | fi |
|
|
80 | |
|
|
81 | fi |
|
|
82 | } |