blob: a7a0de41b375930b4df9555b015c51803a101463 (
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
#
# @ECLASS: gnome2-live.eclass
# @MAINTAINER:
# gnome@gentoo.org
# @AUTHOR:
# Nirbheek Chauhan <nirbheek@gentoo.org>
# @BLURB: Live ebuild phases for GNOME packages
# @DESCRIPTION:
# Exports additional functions used by live ebuilds written for GNOME packages
# Always to be imported *AFTER* gnome2.eclass
#
inherit autotools gnome2 gnome2-utils libtool git-2
# Stolen from git.eclass
EXPORTED_FUNCTIONS="src_unpack pkg_postinst"
case "${EAPI:-0}" in
2|3|4) EXPORTED_FUNCTIONS="${EXPORTED_FUNCTIONS} src_prepare" ;;
0|1) ;;
*) die "Unknown EAPI, Bug eclass maintainers." ;;
esac
EXPORT_FUNCTIONS ${EXPORTED_FUNCTIONS}
# DEPEND on
# app-text/gnome-doc-utils for gnome-doc-*
# dev-util/gtk-doc for gtkdocize
# dev-util/intltool for intltoolize
# gnome-base/gnome-common for GNOME_COMMON_INIT
DEPEND="${DEPEND}
app-text/gnome-doc-utils
dev-util/gtk-doc
dev-util/intltool
gnome-base/gnome-common
sys-devel/gettext"
# Extra options passed to elibtoolize
ELTCONF=${ELTCONF:-}
# @ECLASS-VARIABLE: GNOME_LIVE_MODULE
# @DESCRIPTION:
# Default git module name is assumed to be the same as the gnome.org module name
# used on ftp.gnome.org. We have GNOME_ORG_MODULE because we inherit gnome.org
: ${GNOME_LIVE_MODULE:="${GNOME_ORG_MODULE}"}
# @ECLASS-VARIABLE: EGIT_REPO_URI
# @DESCRIPTION:
# git URI for the project, uses GNOME_LIVE_MODULE by default
: "${EGIT_REPO_URI:="git://git.gnome.org/${GNOME_LIVE_MODULE}"}"
# @ECLASS-VARIABLE: PATCHES
# @DESCRIPTION:
# Whitespace-separated list of patches to apply after cloning
: ${PATCHES:=""}
# Unset SRC_URI auto-set by gnome2.eclass
SRC_URI=""
# @FUNCTION: gnome2-live_get_var
# @DESCRIPTION:
# Get macro variable values from configure.ac, etc
gnome2-live_get_var() {
local var f
var="$1"
f="$2"
echo $(sed -ne "s/${var}(\(.*\))/\1/p" "${f}" | tr -d '[]')
}
# @FUNCTION: gnome2-live_get_var
# @DESCRIPTION:
# Calls git-2_src_unpack, and unpacks ${A} if required.
# Also calls gnome2-live_src_prepare for older EAPI.
gnome2-live_src_unpack() {
if test -n "${A}"; then
unpack ${A}
fi
git-2_src_unpack
has src_prepare ${EXPORTED_FUNCTIONS} || gnome2-live_src_prepare
}
# @FUNCTION: gnome2-live_src_prepare
# @DESCRIPTION:
# Lots of magic to workaround autogen.sh quirks in various packages
# Creates blank ChangeLog and necessary macro dirs. Runs various autotools
# programs if required, and finally runs eautoreconf.
gnome2-live_src_prepare() {
# Blame git.eclass
cd "${S}"
for i in ${PATCHES}; do
epatch "${i}"
done
# If ChangeLog doesn't exist, maybe it's autogenerated
# Avoid a `dodoc` failure by adding an empty ChangeLog
if ! test -e ChangeLog; then
echo > ChangeLog
fi
# Find and create macro dirs
local macro_dirs=($(gnome2-live_get_var AC_CONFIG_MACRO_DIR configure.*))
for i in "${macro_dirs[@]}"; do
mkdir -p "$i"
done
# We don't run gettextize because that does too much stuff
if grep -qe 'GETTEXT' configure.*; then
# Generate po/Makefile.in.in if it doesn't exist for packages that use
# AM_GNU_GETTEXT and AM_GNU_GETTEXT_VERSION (e.g. media-libs/cogl).
# Logic is inspired by gnome-autogen.sh
if ! grep -qe '^AM_GLIB_GNU_GETTEXT' configure.* &&
grep -qe '^AM_GNU_GETTEXT_VERSION' configure.* &&
[[ -d po && ! -e po/Makefile.in.in && ! -e po/Makefile.am ]]; then
eautopoint --force
fi
local aux_dir=${S}/$(gnome2-live_get_var AC_CONFIG_AUX_DIR configure.*)
mkdir -p "${aux_dir}"
test -e "${aux_dir}/config.rpath" || :> "${aux_dir}/config.rpath"
test -e "${aux_dir}/ABOUT-NLS" || cp "${ROOT}/usr/share/gettext/ABOUT-NLS" "${aux_dir}"
fi
if grep -qe 'GTK_DOC' configure.*; then
ebegin "Running gtkdocize"
gtkdocize
eend $?
fi
if grep -qe 'GNOME_DOC_INIT' configure.*; then
ebegin "Running gnome-doc-common"
gnome-doc-common
eend $?
ebegin "Running gnome-doc-prepare --automake"
gnome-doc-prepare --automake
eend $?
fi
if grep -qe "IT_PROG_INTLTOOL" -e "AC_PROG_INTLTOOL" configure.*; then
if grep -qe "AC_PROG_INTLTOOL" configure.*; then
eqawarn "This package is using deprecated AC_PROG_INTLTOOL macro."
eqawarn "Please fill a bug to the upstream of this package."
fi
ebegin "Running intltoolize --force --automake"
intltoolize --force --automake
eend $?
fi
if test -e m4; then
AT_M4DIR=m4 eautoreconf
else
eautoreconf
fi
# Disable pyc compiling. Doesn't harm if DNE
ln -sf $(type -P true) py-compile
### Keep this in-sync with gnome2.eclass!
# Don't use the session bus address inherited via the environment
# causes test and introspection-building failures
unset DBUS_SESSION_BUS_ADDRESS
# Prevent scrollkeeper access violations
gnome2_omf_fix
# Libtool patching
elibtoolize ${ELTCONF}
}
# @FUNCTION: gnome2_src_unpack
# @DESCRIPTION:
# Defined so that it replaces gnome2_src_unpack in ebuilds that call it
gnome2_src_unpack() {
gnome2-live_src_unpack
}
# @FUNCTION: gnome2_src_prepare
# @DESCRIPTION:
# Defined so that it replaces gnome2_src_prepare in ebuilds that call it
gnome2_src_prepare() {
gnome2-live_src_prepare
}
# @FUNCTION: gnome2-live_pkg_postinst
# @DESCRIPTION:
# Must be run manually for ebuilds that have a custom pkg_postinst
gnome2-live_pkg_postinst() {
ewarn "This is a live ebuild, upstream scms will mostly be UNstable"
ewarn "Do NOT report bugs about this package to Gentoo"
ewarn "Report upstream bugs (with patches if possible) instead."
}
|