| 1 | ALSA_CARDS= |
|---|
| 2 | ALSA_PCM_PLUGINS='adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol' |
|---|
| 3 | APACHE2_2_DEPEND='=www-servers/apache-2.2*' |
|---|
| 4 | APACHE2_DEPEND='=www-servers/apache-2*' |
|---|
| 5 | APACHE2_MODULES='actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias' |
|---|
| 6 | APACHE_DEPEND=www-servers/apache |
|---|
| 7 | APACHE_VERSION=0 |
|---|
| 8 | ARCH=arm |
|---|
| 9 | ARCH_LIB= |
|---|
| 10 | AT_GNUCONF_UPDATE=no |
|---|
| 11 | AT_M4DIR= |
|---|
| 12 | BYTECOMPFLAGS='-L .' |
|---|
| 13 | CBUILD=armv4tl-softfloat-linux-gnueabi |
|---|
| 14 | CDEFINE_default=__unix__ |
|---|
| 15 | CDEPEND=$'>=dev-db/sqlite-3.4[threadsafe]\n\t>=dev-libs/apr-1.3:1\n\t>=dev-libs/apr-util-1.3:1\n\tdev-libs/expat\n\tsys-libs/zlib\n\tberkdb? ( =sys-libs/db-4* )\n\temacs? ( virtual/emacs )\n\tgnome-keyring? ( dev-libs/glib:2 sys-apps/dbus gnome-base/gnome-keyring )\n\truby? ( >=dev-lang/ruby-1.8.2 )\n\tsasl? ( dev-libs/cyrus-sasl )\n\twebdav-neon? ( >=net-misc/neon-0.28 )\n\twebdav-serf? ( >=net-libs/serf-0.3.0 )' |
|---|
| 16 | CFLAGS='-Os -march=armv4t -pipe -fno-strict-aliasing' |
|---|
| 17 | CFLAGS_default= |
|---|
| 18 | CHOST=armv4tl-softfloat-linux-gnueabi |
|---|
| 19 | CHOST_default=armv4tl-softfloat-linux-gnueabi |
|---|
| 20 | CROSSCOMPILE_OPTS= |
|---|
| 21 | CTARGET_default=armv4tl-softfloat-linux-gnueabi |
|---|
| 22 | CVS_RSH=ssh |
|---|
| 23 | CXXFLAGS='-Os -march=armv4t -pipe -fno-strict-aliasing' |
|---|
| 24 | DEFAULT_ABI=default |
|---|
| 25 | DEFINED_PHASES=' compile config configure install postinst postrm preinst prepare setup test unpack' |
|---|
| 26 | DEPEND=$'>=dev-db/sqlite-3.4[threadsafe]\n\t>=dev-libs/apr-1.3:1\n\t>=dev-libs/apr-util-1.3:1\n\tdev-libs/expat\n\tsys-libs/zlib\n\tberkdb? ( =sys-libs/db-4* )\n\temacs? ( virtual/emacs )\n\tgnome-keyring? ( dev-libs/glib:2 sys-apps/dbus gnome-base/gnome-keyring )\n\truby? ( >=dev-lang/ruby-1.8.2 )\n\tsasl? ( dev-libs/cyrus-sasl )\n\twebdav-neon? ( >=net-misc/neon-0.28 )\n\twebdav-serf? ( >=net-libs/serf-0.3.0 )\n\tctypes-python? ( dev-python/ctypesgen )\n\tdoc? ( app-doc/doxygen )\n\tgnome-keyring? ( dev-util/pkgconfig )\n\tjava? ( >=virtual/jdk-1.5 )\n\tnls? ( sys-devel/gettext )\n\twebdav-neon? ( dev-util/pkgconfig ) apache2? ( =www-servers/apache-2* ) \n\t>=sys-devel/autoconf-2.61 sys-devel/libtool java? ( >=dev-java/java-config-2.1.6 ) dev-lang/perl[-build]' |
|---|
| 27 | DESCRIPTION='Advanced version control system' |
|---|
| 28 | DESTTREE=/usr |
|---|
| 29 | DIROPTIONS=-m0755 |
|---|
| 30 | EAPI=2 |
|---|
| 31 | EBUILD_DEATH_HOOKS=' java-pkg_die' |
|---|
| 32 | ECONF_SOURCE=. |
|---|
| 33 | ELIBC=glibc |
|---|
| 34 | ELIBTOOL_VERSION=2.0.2 |
|---|
| 35 | ELT_APPLIED_PATCHES=' 1.5.10 1.5.6 1.5.26' |
|---|
| 36 | ELT_LTMAIN_SH=/var/tmp/portage/dev-util/subversion-1.6.2/work/subversion-1.6.2/build/ltmain.sh |
|---|
| 37 | ELT_PATCH_DIR=/usr/portage/eclass/ELT-patches |
|---|
| 38 | EMACS=/usr/bin/emacs |
|---|
| 39 | EMACSFLAGS='-batch -q --no-site-file' |
|---|
| 40 | EPATCH_EXCLUDE= |
|---|
| 41 | EPATCH_FORCE=no |
|---|
| 42 | EPATCH_MULTI_MSG='Applying various patches (bugfixes/updates) ...' |
|---|
| 43 | EPATCH_OPTS='-g0 -E --no-backup-if-mismatch' |
|---|
| 44 | EPATCH_SINGLE_MSG= |
|---|
| 45 | EPATCH_SOURCE=/var/tmp/portage/dev-util/subversion-1.6.2/work/patch |
|---|
| 46 | EPATCH_SUFFIX=patch.bz2 |
|---|
| 47 | EXEOPTIONS=-m0755 |
|---|
| 48 | FCFLAGS=' -fno-strict-aliasing' |
|---|
| 49 | FEATURES='distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch' |
|---|
| 50 | FFLAGS=' -fno-strict-aliasing' |
|---|
| 51 | GCC_SPECS= |
|---|
| 52 | HISTFILESIZE=1000 |
|---|
| 53 | HISTSIZE=1000 |
|---|
| 54 | HOMEPAGE=http://subversion.tigris.org/ |
|---|
| 55 | INHERITED='autotools multilib elisp-common portability flag-o-matic python java-utils-2 versionator alternatives bash-completion java-pkg-opt-2 base libtool toolchain-funcs db-use depend.apache eutils perl-module' |
|---|
| 56 | INPUT_DEVICES= |
|---|
| 57 | INSDESTTREE= |
|---|
| 58 | INSOPTIONS=-m0644 |
|---|
| 59 | IUSE='apache2 berkdb ctypes-python debug doc +dso emacs extras gnome-keyring java nls perl python ruby sasl test vim-syntax +webdav-neon webdav-serf apache2 bash-completion elibc_FreeBSD java' |
|---|
| 60 | JAVA_PKG_ALLOW_VM_CHANGE=yes |
|---|
| 61 | JAVA_PKG_BUILD_DEPEND_FILE=/var/tmp/portage/dev-util/subversion-1.6.2/temp/java-pkg-build-depend |
|---|
| 62 | JAVA_PKG_COMPILERS_CONF=/etc/java-config-2/build/compilers.conf |
|---|
| 63 | JAVA_PKG_COMPILER_DIR=/usr/share/java-config-2/compiler |
|---|
| 64 | JAVA_PKG_DEPEND_FILE=/var/tmp/portage/dev-util/subversion-1.6.2/temp/java-pkg-depend |
|---|
| 65 | JAVA_PKG_EXTRA_ENV=/var/tmp/portage/dev-util/subversion-1.6.2/temp/java-pkg-extra-env |
|---|
| 66 | JAVA_PKG_EXTRA_ENV_VARS= |
|---|
| 67 | JAVA_PKG_E_DEPEND='>=dev-java/java-config-2.1.6 ' |
|---|
| 68 | JAVA_PKG_OPTIONAL_DEPEND_FILE=/var/tmp/portage/dev-util/subversion-1.6.2/temp/java-pkg-optional-depend |
|---|
| 69 | JAVA_PKG_OPT_USE=java |
|---|
| 70 | JAVA_PKG_QA_VIOLATIONS=0 |
|---|
| 71 | KERNEL=linux |
|---|
| 72 | KERNEL_ABI=default |
|---|
| 73 | KEYWORDS='alpha amd64 arm hppa ia64 ~ppc ~ppc64 s390 sh sparc x86' |
|---|
| 74 | KV= |
|---|
| 75 | LCD_DEVICES= |
|---|
| 76 | LDFLAGS=-Wl,-O1 |
|---|
| 77 | LDFLAGS_default= |
|---|
| 78 | LIBDIR_default=lib |
|---|
| 79 | LIBOPTIONS=-m0644 |
|---|
| 80 | LICENSE=Subversion |
|---|
| 81 | MODULE_A=subversion-1.6.2.tar.gz |
|---|
| 82 | MULTILIB_ABIS=default |
|---|
| 83 | NETBEANS='apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml' |
|---|
| 84 | PDEPEND=' ' |
|---|
| 85 | PERL_VERSION= |
|---|
| 86 | PORTAGE_COMPRESS_EXCLUDE_SUFFIXES='css gif htm[l]? jp[e]?g js pdf png' |
|---|
| 87 | PREFER_BUILDPL=yes |
|---|
| 88 | PROFILE_ONLY_VARIABLES='ARCH ELIBC KERNEL USERLAND' |
|---|
| 89 | PROPERTIES= |
|---|
| 90 | PROVIDE= |
|---|
| 91 | PYTHONDONTWRITEBYTECODE=1 |
|---|
| 92 | PYTHON_ATOM=dev-lang/python |
|---|
| 93 | PYTHON_DONTCOMPILE=1 |
|---|
| 94 | RDEPEND=$'>=dev-db/sqlite-3.4[threadsafe]\n\t>=dev-libs/apr-1.3:1\n\t>=dev-libs/apr-util-1.3:1\n\tdev-libs/expat\n\tsys-libs/zlib\n\tberkdb? ( =sys-libs/db-4* )\n\temacs? ( virtual/emacs )\n\tgnome-keyring? ( dev-libs/glib:2 sys-apps/dbus gnome-base/gnome-keyring )\n\truby? ( >=dev-lang/ruby-1.8.2 )\n\tsasl? ( dev-libs/cyrus-sasl )\n\twebdav-neon? ( >=net-misc/neon-0.28 )\n\twebdav-serf? ( >=net-libs/serf-0.3.0 )\n\tapache2? ( www-servers/apache[apache2_modules_dav] )\n\tjava? ( >=virtual/jre-1.5 )\n\tnls? ( virtual/libintl )\n\tperl? ( dev-perl/URI ) apache2? ( =www-servers/apache-2* ) bash-completion? (\tapp-admin/eselect ) java? ( >=dev-java/java-config-2.1.6 ) dev-lang/perl[-build]' |
|---|
| 95 | RESTRICT= |
|---|
| 96 | S=/var/tmp/portage/dev-util/subversion-1.6.2/work/subversion-1.6.2 |
|---|
| 97 | SANDBOX_DEBUG=0 |
|---|
| 98 | SANDBOX_DENY=/etc/ld.so.preload |
|---|
| 99 | SANDBOX_PID=17346 |
|---|
| 100 | SANDBOX_PREDICT=/dev/console:/dev/crypto:/dev/random:/proc/self/maps:/var/tmp/portage/dev-util/subversion-1.6.2/homedir |
|---|
| 101 | SANDBOX_READ=/:/dev/shm:/dev/stdin:/var/tmp |
|---|
| 102 | SANDBOX_VERBOSE=1 |
|---|
| 103 | SANDBOX_WRITE=:/dev/console:/dev/fd:/dev/full:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/stderr:/dev/stdout:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/portage/dev-util/subversion-1.6.2/homedir/.bash_history |
|---|
| 104 | SITEETC=/usr/share/emacs/etc |
|---|
| 105 | SITELISP=/usr/share/emacs/site-lisp |
|---|
| 106 | SITE_ARCH= |
|---|
| 107 | SITE_LIB= |
|---|
| 108 | SLOT=0 |
|---|
| 109 | SRC_PREP=no |
|---|
| 110 | SRC_TEST=skip |
|---|
| 111 | SRC_URI=http://subversion.tigris.org/downloads/subversion-1.6.2.tar.bz2 |
|---|
| 112 | SVN_BDB_VERSION=4.6 |
|---|
| 113 | SVN_REPOS_LOC=/var/svn |
|---|
| 114 | TSLIB_TSDEVICE=/dev/input/touchscreen0 |
|---|
| 115 | USE='arm berkdb dso elibc_glibc kernel_linux nls perl python userland_GNU webdav-neon' |
|---|
| 116 | USERLAND=GNU |
|---|
| 117 | VENDOR_ARCH= |
|---|
| 118 | VENDOR_LIB= |
|---|
| 119 | VIDEO_CARDS= |
|---|
| 120 | WANT_AUTOCONF=2.5 |
|---|
| 121 | WANT_AUTOMAKE=none |
|---|
| 122 | WANT_JAVA_CONFIG=2 |
|---|
| 123 | _=PKG_INSTALL_MASK |
|---|
| 124 | _E_DOCDESTTREE_= |
|---|
| 125 | _E_EXEDESTTREE_= |
|---|
| 126 | ___ECLASS_RECUR_MULTILIB=yes |
|---|
| 127 | ___ECLASS_RECUR_TOOLCHAIN_FUNCS=yes |
|---|
| 128 | _pipestatus='0 0' |
|---|
| 129 | conf=subversion-1.6.2-r0 |
|---|
| 130 | perlinfo_done=false |
|---|
| 131 | pm_echovar= |
|---|
| 132 | str='_init_no_apache: entering function' |
|---|
| 133 | ELT_find_ltmain_sh () |
|---|
| 134 | { |
|---|
| 135 | local x=; |
|---|
| 136 | local dirlist=; |
|---|
| 137 | for x in $(find "${S}" -name 'ltmain.sh'); |
|---|
| 138 | do |
|---|
| 139 | dirlist="${dirlist} ${x%/*}"; |
|---|
| 140 | done; |
|---|
| 141 | echo "${dirlist}" |
|---|
| 142 | } |
|---|
| 143 | ELT_libtool_version () |
|---|
| 144 | { |
|---|
| 145 | local ltmain_sh=$1; |
|---|
| 146 | local version=; |
|---|
| 147 | version=$(eval $(grep -e '^[[:space:]]*VERSION=' "${ltmain_sh}"); echo "${VERSION}"); |
|---|
| 148 | [[ -z ${version} ]] && version="0"; |
|---|
| 149 | echo "${version}" |
|---|
| 150 | } |
|---|
| 151 | ELT_try_and_apply_patch () |
|---|
| 152 | { |
|---|
| 153 | local ret=0; |
|---|
| 154 | local file=$1; |
|---|
| 155 | local patch=$2; |
|---|
| 156 | if patch -p0 --dry-run "${file}" "${patch}" >&"${T}/elibtool.log"; then |
|---|
| 157 | einfo " Applying $(basename "$(dirname "${patch}")")-${patch##*/}.patch ..."; |
|---|
| 158 | patch -p0 -g0 --no-backup-if-mismatch "${file}" "${patch}" >&"${T}/elibtool.log"; |
|---|
| 159 | ret=$?; |
|---|
| 160 | export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${patch##*/}"; |
|---|
| 161 | else |
|---|
| 162 | ret=1; |
|---|
| 163 | fi; |
|---|
| 164 | return "${ret}" |
|---|
| 165 | } |
|---|
| 166 | ELT_walk_patches () |
|---|
| 167 | { |
|---|
| 168 | local x=; |
|---|
| 169 | local y=; |
|---|
| 170 | local ret=1; |
|---|
| 171 | local file=$1; |
|---|
| 172 | local patch_set=$2; |
|---|
| 173 | local patch_dir=; |
|---|
| 174 | local rem_int_dep=$3; |
|---|
| 175 | if [[ -n ${patch_set} ]]; then |
|---|
| 176 | if [[ -d ${ELT_PATCH_DIR}/${patch_set} ]]; then |
|---|
| 177 | patch_dir="${ELT_PATCH_DIR}/${patch_set}"; |
|---|
| 178 | else |
|---|
| 179 | return "${ret}"; |
|---|
| 180 | fi; |
|---|
| 181 | for x in $(ls -d "${patch_dir}"/* 2> /dev/null | grep -v 'CVS' | sort -r); |
|---|
| 182 | do |
|---|
| 183 | if [[ -n ${x} && -f ${x} ]]; then |
|---|
| 184 | if [[ -n ${rem_int_dep} ]]; then |
|---|
| 185 | sed -e "s|@REM_INT_DEP@|${rem_int_dep}|g" ${x} > "${T}/$$.rem_int_deps.patch"; |
|---|
| 186 | x="${T}/$$.rem_int_deps.patch"; |
|---|
| 187 | fi; |
|---|
| 188 | if ELT_try_and_apply_patch "${file}" "${x}"; then |
|---|
| 189 | ret=0; |
|---|
| 190 | break; |
|---|
| 191 | fi; |
|---|
| 192 | fi; |
|---|
| 193 | done; |
|---|
| 194 | fi; |
|---|
| 195 | return "${ret}" |
|---|
| 196 | } |
|---|
| 197 | VER_major () |
|---|
| 198 | { |
|---|
| 199 | [[ -z $1 ]] && return 1; |
|---|
| 200 | local VER=$@; |
|---|
| 201 | echo "${VER%%[^[:digit:]]*}" |
|---|
| 202 | } |
|---|
| 203 | VER_micro () |
|---|
| 204 | { |
|---|
| 205 | [[ -z $1 ]] && return 1; |
|---|
| 206 | local VER=$@; |
|---|
| 207 | VER=${VER#*.*.}; |
|---|
| 208 | echo "${VER%%[^[:digit:]]*}" |
|---|
| 209 | } |
|---|
| 210 | VER_minor () |
|---|
| 211 | { |
|---|
| 212 | [[ -z $1 ]] && return 1; |
|---|
| 213 | local VER=$@; |
|---|
| 214 | VER=${VER#*.}; |
|---|
| 215 | echo "${VER%%[^[:digit:]]*}" |
|---|
| 216 | } |
|---|
| 217 | VER_to_int () |
|---|
| 218 | { |
|---|
| 219 | [[ -z $1 ]] && return 1; |
|---|
| 220 | local VER_MAJOR=$(VER_major "$1"); |
|---|
| 221 | local VER_MINOR=$(VER_minor "$1"); |
|---|
| 222 | local VER_MICRO=$(VER_micro "$1"); |
|---|
| 223 | local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO )); |
|---|
| 224 | if [[ ${VER_int} -ge 65536 ]]; then |
|---|
| 225 | echo "${VER_int}"; |
|---|
| 226 | return 0; |
|---|
| 227 | fi; |
|---|
| 228 | echo 1; |
|---|
| 229 | return 1 |
|---|
| 230 | } |
|---|
| 231 | __python_eclass_test () |
|---|
| 232 | { |
|---|
| 233 | __python_version_extract 2.3; |
|---|
| 234 | echo -n "2.3 -> PYVER: $PYVER PYVER_MAJOR: $PYVER_MAJOR"; |
|---|
| 235 | echo " PYVER_MINOR: $PYVER_MINOR PYVER_MICRO: $PYVER_MICRO"; |
|---|
| 236 | __python_version_extract 2.3.4; |
|---|
| 237 | echo -n "2.3.4 -> PYVER: $PYVER PYVER_MAJOR: $PYVER_MAJOR"; |
|---|
| 238 | echo " PYVER_MINOR: $PYVER_MINOR PYVER_MICRO: $PYVER_MICRO"; |
|---|
| 239 | __python_version_extract 2.3.5; |
|---|
| 240 | echo -n "2.3.5 -> PYVER: $PYVER PYVER_MAJOR: $PYVER_MAJOR"; |
|---|
| 241 | echo " PYVER_MINOR: $PYVER_MINOR PYVER_MICRO: $PYVER_MICRO"; |
|---|
| 242 | __python_version_extract 2.4; |
|---|
| 243 | echo -n "2.4 -> PYVER: $PYVER PYVER_MAJOR: $PYVER_MAJOR"; |
|---|
| 244 | echo " PYVER_MINOR: $PYVER_MINOR PYVER_MICRO: $PYVER_MICRO"; |
|---|
| 245 | __python_version_extract 2.5b3; |
|---|
| 246 | echo -n "2.5b3 -> PYVER: $PYVER PYVER_MAJOR: $PYVER_MAJOR"; |
|---|
| 247 | echo " PYVER_MINOR: $PYVER_MINOR PYVER_MICRO: $PYVER_MICRO" |
|---|
| 248 | } |
|---|
| 249 | __python_version_extract () |
|---|
| 250 | { |
|---|
| 251 | local verstr=$1; |
|---|
| 252 | export PYVER_MAJOR=${verstr:0:1}; |
|---|
| 253 | export PYVER_MINOR=${verstr:2:1}; |
|---|
| 254 | if [[ ${verstr:3:1} == . ]]; then |
|---|
| 255 | export PYVER_MICRO=${verstr:4}; |
|---|
| 256 | fi; |
|---|
| 257 | export PYVER="${PYVER_MAJOR}.${PYVER_MINOR}" |
|---|
| 258 | } |
|---|
| 259 | __versionator__test_version_compare () |
|---|
| 260 | { |
|---|
| 261 | __versionator_shopt_toggle on; |
|---|
| 262 | local lt=1 eq=2 gt=3 p q; |
|---|
| 263 | function __versionator__test_version_compare_t () |
|---|
| 264 | { |
|---|
| 265 | version_compare "${1}" "${3}"; |
|---|
| 266 | local r=$?; |
|---|
| 267 | [[ ${r} -eq ${2} ]] || echo "FAIL: ${@} (got ${r} exp ${2})" |
|---|
| 268 | }; |
|---|
| 269 | echo " |
|---|
| 270 | 0 $lt 1 |
|---|
| 271 | 1 $lt 2 |
|---|
| 272 | 2 $gt 1 |
|---|
| 273 | 2 $eq 2 |
|---|
| 274 | 0 $eq 0 |
|---|
| 275 | 10 $lt 20 |
|---|
| 276 | 68 $eq 068 |
|---|
| 277 | 068 $gt 67 |
|---|
| 278 | 068 $lt 69 |
|---|
| 279 | |
|---|
| 280 | 1.0 $lt 2.0 |
|---|
| 281 | 2.0 $eq 2.0 |
|---|
| 282 | 2.0 $gt 1.0 |
|---|
| 283 | |
|---|
| 284 | 1.0 $gt 0.0 |
|---|
| 285 | 0.0 $eq 0.0 |
|---|
| 286 | 0.0 $lt 1.0 |
|---|
| 287 | |
|---|
| 288 | 0.1 $lt 0.2 |
|---|
| 289 | 0.2 $eq 0.2 |
|---|
| 290 | 0.3 $gt 0.2 |
|---|
| 291 | |
|---|
| 292 | 1.2 $lt 2.1 |
|---|
| 293 | 2.1 $gt 1.2 |
|---|
| 294 | |
|---|
| 295 | 1.2.3 $lt 1.2.4 |
|---|
| 296 | 1.2.4 $gt 1.2.3 |
|---|
| 297 | |
|---|
| 298 | 1.2.0 $eq 1.2 |
|---|
| 299 | 1.2.1 $gt 1.2 |
|---|
| 300 | 1.2 $lt 1.2.1 |
|---|
| 301 | |
|---|
| 302 | 1.2b $eq 1.2b |
|---|
| 303 | 1.2b $lt 1.2c |
|---|
| 304 | 1.2b $gt 1.2a |
|---|
| 305 | 1.2b $gt 1.2 |
|---|
| 306 | 1.2 $lt 1.2a |
|---|
| 307 | |
|---|
| 308 | 1.3 $gt 1.2a |
|---|
| 309 | 1.3 $lt 1.3a |
|---|
| 310 | |
|---|
| 311 | 1.0_alpha7 $lt 1.0_beta7 |
|---|
| 312 | 1.0_beta $lt 1.0_pre |
|---|
| 313 | 1.0_pre5 $lt 1.0_rc2 |
|---|
| 314 | 1.0_rc2 $lt 1.0 |
|---|
| 315 | |
|---|
| 316 | 1.0_p1 $gt 1.0 |
|---|
| 317 | 1.0_p1-r1 $gt 1.0_p1 |
|---|
| 318 | |
|---|
| 319 | 1.0_alpha6-r1 $gt 1.0_alpha6 |
|---|
| 320 | 1.0_beta6-r1 $gt 1.0_alpha6-r2 |
|---|
| 321 | |
|---|
| 322 | 1.0_pre1 $lt 1.0-p1 |
|---|
| 323 | |
|---|
| 324 | 1.0p $gt 1.0_p1 |
|---|
| 325 | 1.0r $gt 1.0-r1 |
|---|
| 326 | 1.6.15 $gt 1.6.10-r2 |
|---|
| 327 | 1.6.10-r2 $lt 1.6.15 |
|---|
| 328 | |
|---|
| 329 | " | while read a b c; do |
|---|
| 330 | [[ -z "${a}${b}${c}" ]] && continue; |
|---|
| 331 | __versionator__test_version_compare_t "${a}" "${b}" "${c}"; |
|---|
| 332 | done; |
|---|
| 333 | for q in "alpha beta pre rc=${lt};${gt}" "p r=${gt};${lt}"; |
|---|
| 334 | do |
|---|
| 335 | for p in ${q%%=*}; |
|---|
| 336 | do |
|---|
| 337 | local c=${q##*=}; |
|---|
| 338 | local alt=${c%%;*} agt=${c##*;}; |
|---|
| 339 | __versionator__test_version_compare_t "1.0" $agt "1.0_${p}"; |
|---|
| 340 | __versionator__test_version_compare_t "1.0" $agt "1.0_${p}1"; |
|---|
| 341 | __versionator__test_version_compare_t "1.0" $agt "1.0_${p}068"; |
|---|
| 342 | __versionator__test_version_compare_t "2.0_${p}" $alt "2.0"; |
|---|
| 343 | __versionator__test_version_compare_t "2.0_${p}1" $alt "2.0"; |
|---|
| 344 | __versionator__test_version_compare_t "2.0_${p}068" $alt "2.0"; |
|---|
| 345 | __versionator__test_version_compare_t "1.0_${p}" $eq "1.0_${p}"; |
|---|
| 346 | __versionator__test_version_compare_t "0.0_${p}" $lt "0.0_${p}1"; |
|---|
| 347 | __versionator__test_version_compare_t "666_${p}3" $gt "666_${p}"; |
|---|
| 348 | __versionator__test_version_compare_t "1_${p}7" $lt "1_${p}8"; |
|---|
| 349 | __versionator__test_version_compare_t "1_${p}7" $eq "1_${p}7"; |
|---|
| 350 | __versionator__test_version_compare_t "1_${p}7" $gt "1_${p}6"; |
|---|
| 351 | __versionator__test_version_compare_t "1_${p}09" $eq "1_${p}9"; |
|---|
| 352 | done; |
|---|
| 353 | done; |
|---|
| 354 | for p in "-r" "_p"; |
|---|
| 355 | do |
|---|
| 356 | __versionator__test_version_compare_t "7.2${p}1" $lt "7.2${p}2"; |
|---|
| 357 | __versionator__test_version_compare_t "7.2${p}2" $gt "7.2${p}1"; |
|---|
| 358 | __versionator__test_version_compare_t "7.2${p}3" $gt "7.2${p}2"; |
|---|
| 359 | __versionator__test_version_compare_t "7.2${p}2" $lt "7.2${p}3"; |
|---|
| 360 | done; |
|---|
| 361 | __versionator_shopt_toggle off |
|---|
| 362 | } |
|---|
| 363 | __versionator_shopt_toggle () |
|---|
| 364 | { |
|---|
| 365 | VERSIONATOR_RECURSION=${VERSIONATOR_RECURSION:-0}; |
|---|
| 366 | case "$1" in |
|---|
| 367 | "on") |
|---|
| 368 | if [[ $VERSIONATOR_RECURSION -lt 1 ]]; then |
|---|
| 369 | VERSIONATOR_OLD_EXTGLOB=$(shopt -p extglob); |
|---|
| 370 | shopt -s extglob; |
|---|
| 371 | fi; |
|---|
| 372 | VERSIONATOR_RECURSION=$(( $VERSIONATOR_RECURSION + 1 )) |
|---|
| 373 | ;; |
|---|
| 374 | "off") |
|---|
| 375 | VERSIONATOR_RECURSION=$(( $VERSIONATOR_RECURSION - 1 )); |
|---|
| 376 | if [[ $VERSIONATOR_RECURSION -lt 1 ]]; then |
|---|
| 377 | eval $VERSIONATOR_OLD_EXTGLOB; |
|---|
| 378 | fi |
|---|
| 379 | ;; |
|---|
| 380 | esac; |
|---|
| 381 | return 0 |
|---|
| 382 | } |
|---|
| 383 | _cdrom_locate_file_on_cd () |
|---|
| 384 | { |
|---|
| 385 | local mline=""; |
|---|
| 386 | local showedmsg=0 showjolietmsg=0; |
|---|
| 387 | while [[ -z ${CDROM_ROOT} ]]; do |
|---|
| 388 | local i=0; |
|---|
| 389 | local -a cdset=(${*//:/ }); |
|---|
| 390 | if [[ -n ${CDROM_SET} ]]; then |
|---|
| 391 | cdset=(${cdset[${CDROM_SET}]}); |
|---|
| 392 | fi; |
|---|
| 393 | while [[ -n ${cdset[${i}]} ]]; do |
|---|
| 394 | local dir=$(dirname ${cdset[${i}]}); |
|---|
| 395 | local file=$(basename ${cdset[${i}]}); |
|---|
| 396 | local point= node= fs= foo=; |
|---|
| 397 | while read point node fs foo; do |
|---|
| 398 | [[ " cd9660 iso9660 udf " != *" ${fs} "* ]] && ! [[ ${fs} == "subfs" && ",${opts}," == *",fs=cdfss,"* ]] && continue; |
|---|
| 399 | point=${point//\040/ }; |
|---|
| 400 | [[ ! -d ${point}/${dir} ]] && continue; |
|---|
| 401 | [[ -z $(find "${point}/${dir}" -maxdepth 1 -iname "${file}") ]] && continue; |
|---|
| 402 | export CDROM_ROOT=${point}; |
|---|
| 403 | export CDROM_SET=${i}; |
|---|
| 404 | export CDROM_MATCH=${cdset[${i}]}; |
|---|
| 405 | return; |
|---|
| 406 | done <<< "$(get_mounts)"; |
|---|
| 407 | ((++i)); |
|---|
| 408 | done; |
|---|
| 409 | echo; |
|---|
| 410 | if [[ ${showedmsg} -eq 0 ]]; then |
|---|
| 411 | if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then |
|---|
| 412 | if [[ -z ${CDROM_NAME} ]]; then |
|---|
| 413 | einfo "Please insert+mount the cdrom for ${PN} now !"; |
|---|
| 414 | else |
|---|
| 415 | einfo "Please insert+mount the ${CDROM_NAME} cdrom now !"; |
|---|
| 416 | fi; |
|---|
| 417 | else |
|---|
| 418 | if [[ -z ${CDROM_NAME_1} ]]; then |
|---|
| 419 | einfo "Please insert+mount cd #${CDROM_CURRENT_CD} for ${PN} now !"; |
|---|
| 420 | else |
|---|
| 421 | local var="CDROM_NAME_${CDROM_CURRENT_CD}"; |
|---|
| 422 | einfo "Please insert+mount the ${!var} cdrom now !"; |
|---|
| 423 | fi; |
|---|
| 424 | fi; |
|---|
| 425 | showedmsg=1; |
|---|
| 426 | fi; |
|---|
| 427 | einfo "Press return to scan for the cd again"; |
|---|
| 428 | einfo "or hit CTRL+C to abort the emerge."; |
|---|
| 429 | echo; |
|---|
| 430 | if [[ ${showjolietmsg} -eq 0 ]]; then |
|---|
| 431 | showjolietmsg=1; |
|---|
| 432 | else |
|---|
| 433 | ewarn "If you are having trouble with the detection"; |
|---|
| 434 | ewarn "of your CD, it is possible that you do not have"; |
|---|
| 435 | ewarn "Joliet support enabled in your kernel. Please"; |
|---|
| 436 | ewarn "check that CONFIG_JOLIET is enabled in your kernel."; |
|---|
| 437 | ebeep 5; |
|---|
| 438 | fi; |
|---|
| 439 | read || die "something is screwed with your system"; |
|---|
| 440 | done |
|---|
| 441 | } |
|---|
| 442 | _elibtoolize () |
|---|
| 443 | { |
|---|
| 444 | local opts g=; |
|---|
| 445 | [[ -n $(autotools_check_macro AC_PROG_LIBTOOL AM_PROG_LIBTOOL LT_INIT) ]] || return 0; |
|---|
| 446 | [[ -f GNUmakefile.am || -f Makefile.am ]] && opts="--automake"; |
|---|
| 447 | [[ ${CHOST} == *-darwin* ]] && g=g; |
|---|
| 448 | autotools_run_tool ${LIBTOOLIZE:-${g}libtoolize} "$@" ${opts}; |
|---|
| 449 | eaclocal |
|---|
| 450 | } |
|---|
| 451 | _epatch_assert () |
|---|
| 452 | { |
|---|
| 453 | local _pipestatus=${PIPESTATUS[*]}; |
|---|
| 454 | [[ ${_pipestatus// /} -eq 0 ]] |
|---|
| 455 | } |
|---|
| 456 | _epatch_draw_line () |
|---|
| 457 | { |
|---|
| 458 | [[ -z $1 ]] && set "$(printf "%65s" '')"; |
|---|
| 459 | echo "${1//?/=}" |
|---|
| 460 | } |
|---|
| 461 | _filter-hardened () |
|---|
| 462 | { |
|---|
| 463 | local f; |
|---|
| 464 | for f in "$@"; |
|---|
| 465 | do |
|---|
| 466 | case "${f}" in |
|---|
| 467 | -fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie) |
|---|
| 468 | gcc-specs-pie || continue; |
|---|
| 469 | is-flagq -nopie || append-flags -nopie |
|---|
| 470 | ;; |
|---|
| 471 | -fstack-protector) |
|---|
| 472 | gcc-specs-ssp || continue; |
|---|
| 473 | is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector) |
|---|
| 474 | ;; |
|---|
| 475 | -fstack-protector-all) |
|---|
| 476 | gcc-specs-ssp-to-all || continue; |
|---|
| 477 | is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all) |
|---|
| 478 | ;; |
|---|
| 479 | -fno-strict-overflow) |
|---|
| 480 | gcc-specs-nostrict || continue; |
|---|
| 481 | is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow) |
|---|
| 482 | ;; |
|---|
| 483 | esac; |
|---|
| 484 | done |
|---|
| 485 | } |
|---|
| 486 | _filter-var () |
|---|
| 487 | { |
|---|
| 488 | local f x VAR VAL; |
|---|
| 489 | declare -a new; |
|---|
| 490 | VAR=$1; |
|---|
| 491 | shift; |
|---|
| 492 | eval VAL=\${${VAR}}; |
|---|
| 493 | for f in ${VAL}; |
|---|
| 494 | do |
|---|
| 495 | for x in "$@"; |
|---|
| 496 | do |
|---|
| 497 | [[ ${f} == ${x} ]] && continue 2; |
|---|
| 498 | done; |
|---|
| 499 | eval new\[\${\#new\[@]}]=\${f}; |
|---|
| 500 | done; |
|---|
| 501 | eval export ${VAR}=\${new\[*]} |
|---|
| 502 | } |
|---|
| 503 | _gcc-install-dir () |
|---|
| 504 | { |
|---|
| 505 | echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')" |
|---|
| 506 | } |
|---|
| 507 | _gcc-specs-directive_raw () |
|---|
| 508 | { |
|---|
| 509 | local cc=$(tc-getCC); |
|---|
| 510 | local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}'); |
|---|
| 511 | ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 } |
|---|
| 512 | $1=="*"directive":" { pspec=spec; spec=""; outside=0; next } |
|---|
| 513 | outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next } |
|---|
| 514 | spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next } |
|---|
| 515 | { spec=spec $0 } |
|---|
| 516 | END { print spec }'; |
|---|
| 517 | return 0 |
|---|
| 518 | } |
|---|
| 519 | _gcc-specs-exists () |
|---|
| 520 | { |
|---|
| 521 | [[ -f $(_gcc-install-dir)/$1 ]] |
|---|
| 522 | } |
|---|
| 523 | _init_apache2 () |
|---|
| 524 | { |
|---|
| 525 | debug-print-function $FUNCNAME $*; |
|---|
| 526 | APACHE_VERSION="2"; |
|---|
| 527 | APXS="/usr/sbin/apxs2"; |
|---|
| 528 | APACHE_BIN="/usr/sbin/apache2"; |
|---|
| 529 | APACHE_CTL="/usr/sbin/apache2ctl"; |
|---|
| 530 | APACHE_INCLUDEDIR="/usr/include/apache2"; |
|---|
| 531 | APACHE_BASEDIR="/usr/$(get_libdir)/apache2"; |
|---|
| 532 | APACHE_CONFDIR="/etc/apache2"; |
|---|
| 533 | APACHE_MODULES_CONFDIR="${APACHE_CONFDIR}/modules.d"; |
|---|
| 534 | APACHE_VHOSTS_CONFDIR="${APACHE_CONFDIR}/vhosts.d"; |
|---|
| 535 | APACHE_MODULESDIR="${APACHE_BASEDIR}/modules" |
|---|
| 536 | } |
|---|
| 537 | _init_no_apache () |
|---|
| 538 | { |
|---|
| 539 | debug-print-function $FUNCNAME $*; |
|---|
| 540 | APACHE_VERSION="0" |
|---|
| 541 | } |
|---|
| 542 | _is_flagq () |
|---|
| 543 | { |
|---|
| 544 | local x; |
|---|
| 545 | for x in ${!1}; |
|---|
| 546 | do |
|---|
| 547 | [[ ${x} == $2 ]] && return 0; |
|---|
| 548 | done; |
|---|
| 549 | return 1 |
|---|
| 550 | } |
|---|
| 551 | _unpack_tar () |
|---|
| 552 | { |
|---|
| 553 | if [ "${y}" == "tar" ]; then |
|---|
| 554 | $1 -dc "$srcdir$x" | tar xof -; |
|---|
| 555 | _pipestatus="${PIPESTATUS[*]}"; |
|---|
| 556 | [[ "${_pipestatus// /}" -eq 0 ]] || die "$myfail"; |
|---|
| 557 | else |
|---|
| 558 | $1 -dc "${srcdir}${x}" > ${x%.*} || die "$myfail"; |
|---|
| 559 | fi |
|---|
| 560 | } |
|---|
| 561 | alternatives_auto_makesym () |
|---|
| 562 | { |
|---|
| 563 | local SYMLINK REGEX ALT myregex; |
|---|
| 564 | SYMLINK=$1; |
|---|
| 565 | REGEX=$2; |
|---|
| 566 | if [ "${REGEX:0:1}" != "/" ]; then |
|---|
| 567 | myregex="${SYMLINK%/*}/${REGEX}"; |
|---|
| 568 | else |
|---|
| 569 | myregex=${REGEX}; |
|---|
| 570 | fi; |
|---|
| 571 | ALT="$(for i in $(echo ${ROOT}${myregex}); do echo ${i#${ROOT}}; done | sort -r)"; |
|---|
| 572 | alternatives_makesym ${SYMLINK} ${ALT} |
|---|
| 573 | } |
|---|
| 574 | alternatives_makesym () |
|---|
| 575 | { |
|---|
| 576 | local ALTERNATIVES=""; |
|---|
| 577 | local SYMLINK=""; |
|---|
| 578 | local alt pref; |
|---|
| 579 | SYMLINK=$1; |
|---|
| 580 | pref=$(echo ${ROOT} | sed 's:/$::'); |
|---|
| 581 | shift; |
|---|
| 582 | ALTERNATIVES=$@; |
|---|
| 583 | for alt in ${ALTERNATIVES}; |
|---|
| 584 | do |
|---|
| 585 | if [ -f "${pref}${alt}" ]; then |
|---|
| 586 | if [ "${alt%/*}" = "${SYMLINK%/*}" ]; then |
|---|
| 587 | einfo "Linking ${alt} to ${pref}${SYMLINK} (relative)"; |
|---|
| 588 | ln -sf ${alt##*/} ${pref}${SYMLINK}; |
|---|
| 589 | else |
|---|
| 590 | einfo "Linking ${alt} to ${pref}${SYMLINK} (absolute)"; |
|---|
| 591 | ln -sf ${pref}${alt} ${pref}${SYMLINK}; |
|---|
| 592 | fi; |
|---|
| 593 | break; |
|---|
| 594 | fi; |
|---|
| 595 | done; |
|---|
| 596 | if [ ! -L ${pref}${SYMLINK} ]; then |
|---|
| 597 | ewarn "Unable to establish ${pref}${SYMLINK} symlink"; |
|---|
| 598 | else |
|---|
| 599 | if [ ! -f "`dirname ${pref}${SYMLINK}`/`readlink ${pref}${SYMLINK}`" -a ! -f "`readlink ${pref}${SYMLINK}`" ]; then |
|---|
| 600 | ewarn "Removing dead symlink ${pref}${SYMLINK}"; |
|---|
| 601 | rm -f ${pref}${SYMLINK}; |
|---|
| 602 | fi; |
|---|
| 603 | fi |
|---|
| 604 | } |
|---|
| 605 | alternatives_pkg_postinst () |
|---|
| 606 | { |
|---|
| 607 | if [ -n "${ALTERNATIVES}" -a -n "${SOURCE}" ]; then |
|---|
| 608 | alternatives_makesym ${SOURCE} ${ALTERNATIVES}; |
|---|
| 609 | fi |
|---|
| 610 | } |
|---|
| 611 | alternatives_pkg_postrm () |
|---|
| 612 | { |
|---|
| 613 | if [ -n "${ALTERNATIVES}" -a -n "${SOURCE}" ]; then |
|---|
| 614 | alternatives_makesym ${SOURCE} ${ALTERNATIVES}; |
|---|
| 615 | fi |
|---|
| 616 | } |
|---|
| 617 | append-cflags () |
|---|
| 618 | { |
|---|
| 619 | [[ -z $* ]] && return 0; |
|---|
| 620 | export CFLAGS="${CFLAGS} $*"; |
|---|
| 621 | return 0 |
|---|
| 622 | } |
|---|
| 623 | append-cppflags () |
|---|
| 624 | { |
|---|
| 625 | [[ -z $* ]] && return 0; |
|---|
| 626 | export CPPFLAGS="${CPPFLAGS} $*"; |
|---|
| 627 | return 0 |
|---|
| 628 | } |
|---|
| 629 | append-cxxflags () |
|---|
| 630 | { |
|---|
| 631 | [[ -z $* ]] && return 0; |
|---|
| 632 | export CXXFLAGS="${CXXFLAGS} $*"; |
|---|
| 633 | return 0 |
|---|
| 634 | } |
|---|
| 635 | append-fflags () |
|---|
| 636 | { |
|---|
| 637 | [[ -z $* ]] && return 0; |
|---|
| 638 | export FFLAGS="${FFLAGS} $*"; |
|---|
| 639 | export FCFLAGS="${FCFLAGS} $*"; |
|---|
| 640 | return 0 |
|---|
| 641 | } |
|---|
| 642 | append-flags () |
|---|
| 643 | { |
|---|
| 644 | [[ -z $* ]] && return 0; |
|---|
| 645 | append-cflags "$@"; |
|---|
| 646 | append-cxxflags "$@"; |
|---|
| 647 | append-fflags "$@"; |
|---|
| 648 | return 0 |
|---|
| 649 | } |
|---|
| 650 | append-ldflags () |
|---|
| 651 | { |
|---|
| 652 | [[ -z $* ]] && return 0; |
|---|
| 653 | local flag; |
|---|
| 654 | for flag in "$@"; |
|---|
| 655 | do |
|---|
| 656 | [[ ${flag} == -l* ]] && ewarn "Appending a library link instruction (${flag}); libraries to link to should not be passed through LDFLAGS"; |
|---|
| 657 | done; |
|---|
| 658 | export LDFLAGS="${LDFLAGS} $*"; |
|---|
| 659 | return 0 |
|---|
| 660 | } |
|---|
| 661 | append-lfs-flags () |
|---|
| 662 | { |
|---|
| 663 | [[ -n $@ ]] && die "append-lfs-flags takes no arguments"; |
|---|
| 664 | append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE |
|---|
| 665 | } |
|---|
| 666 | autotools_check_macro () |
|---|
| 667 | { |
|---|
| 668 | [[ -f configure.ac || -f configure.in ]] || return 0; |
|---|
| 669 | local macro; |
|---|
| 670 | for macro in "$@"; |
|---|
| 671 | do |
|---|
| 672 | WANT_AUTOCONF="2.5" autoconf --trace="${macro}" 2> /dev/null; |
|---|
| 673 | done; |
|---|
| 674 | return 0 |
|---|
| 675 | } |
|---|
| 676 | autotools_get_auxdir () |
|---|
| 677 | { |
|---|
| 678 | local auxdir_scan_out; |
|---|
| 679 | auxdir_scan_out=$(autotools_check_macro "AC_CONFIG_AUX_DIR"); |
|---|
| 680 | [[ -n ${auxdir_scan_out} ]] || return 0; |
|---|
| 681 | echo ${auxdir_scan_out} | gawk '($0 !~ /^[[:space:]]*(#|dnl)/) { |
|---|
| 682 | if (match($0, /AC_CONFIG_AUX_DIR:(.*)$/, res)) |
|---|
| 683 | print res[1] |
|---|
| 684 | }' | uniq; |
|---|
| 685 | return 0 |
|---|
| 686 | } |
|---|
| 687 | autotools_get_subdirs () |
|---|
| 688 | { |
|---|
| 689 | local subdirs_scan_out; |
|---|
| 690 | subdirs_scan_out=$(autotools_check_macro "AC_CONFIG_SUBDIRS"); |
|---|
| 691 | [[ -n ${subdirs_scan_out} ]] || return 0; |
|---|
| 692 | echo "${subdirs_scan_out}" | gawk '($0 !~ /^[[:space:]]*(#|dnl)/) { |
|---|
| 693 | if (match($0, /AC_CONFIG_SUBDIRS:(.*)$/, res)) |
|---|
| 694 | print res[1] |
|---|
| 695 | }' | uniq; |
|---|
| 696 | return 0 |
|---|
| 697 | } |
|---|
| 698 | autotools_run_tool () |
|---|
| 699 | { |
|---|
| 700 | if [[ ${EBUILD_PHASE} != "unpack" && ${EBUILD_PHASE} != "prepare" ]]; then |
|---|
| 701 | ewarn "QA Warning: running $1 in ${EBUILD_PHASE} phase"; |
|---|
| 702 | fi; |
|---|
| 703 | [[ ${WANT_AUTOMAKE} == "latest" ]] && export WANT_AUTOMAKE=1.10; |
|---|
| 704 | [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5; |
|---|
| 705 | local STDERR_TARGET="${T}/$1.out"; |
|---|
| 706 | if [[ -e ${STDERR_TARGET} ]]; then |
|---|
| 707 | STDERR_TARGET="${T}/$1-$$.out"; |
|---|
| 708 | fi; |
|---|
| 709 | printf "***** $1 *****\n***** PWD: ${PWD}\n***** $*\n\n" > "${STDERR_TARGET}"; |
|---|
| 710 | ebegin "Running $@"; |
|---|
| 711 | "$@" >> "${STDERR_TARGET}" 2>&1; |
|---|
| 712 | eend $?; |
|---|
| 713 | if [[ $? != 0 && ${NO_FAIL} != 1 ]]; then |
|---|
| 714 | echo; |
|---|
| 715 | eerror "Failed Running $1 !"; |
|---|
| 716 | eerror; |
|---|
| 717 | eerror "Include in your bugreport the contents of:"; |
|---|
| 718 | eerror; |
|---|
| 719 | eerror " ${STDERR_TARGET}"; |
|---|
| 720 | echo; |
|---|
| 721 | die "Failed Running $1 !"; |
|---|
| 722 | fi |
|---|
| 723 | } |
|---|
| 724 | base_src_compile () |
|---|
| 725 | { |
|---|
| 726 | debug-print-function $FUNCNAME "$@"; |
|---|
| 727 | if [ -z "$1" ]; then |
|---|
| 728 | case "${EAPI:-0}" in |
|---|
| 729 | 2) |
|---|
| 730 | base_src_work make |
|---|
| 731 | ;; |
|---|
| 732 | *) |
|---|
| 733 | base_src_work all |
|---|
| 734 | ;; |
|---|
| 735 | esac; |
|---|
| 736 | else |
|---|
| 737 | base_src_work $@; |
|---|
| 738 | fi |
|---|
| 739 | } |
|---|
| 740 | base_src_configure () |
|---|
| 741 | { |
|---|
| 742 | debug-print-function $FUNCNAME "$@"; |
|---|
| 743 | base_src_work configure |
|---|
| 744 | } |
|---|
| 745 | base_src_install () |
|---|
| 746 | { |
|---|
| 747 | debug-print-function $FUNCNAME "$@"; |
|---|
| 748 | [ -z "$1" ] && base_src_install all; |
|---|
| 749 | cd "${S}"; |
|---|
| 750 | while [ "$1" ]; do |
|---|
| 751 | case $1 in |
|---|
| 752 | make) |
|---|
| 753 | debug-print-section make; |
|---|
| 754 | make DESTDIR="${D}" install || die "died running make install, $FUNCNAME:make" |
|---|
| 755 | ;; |
|---|
| 756 | all) |
|---|
| 757 | debug-print-section all; |
|---|
| 758 | base_src_install make |
|---|
| 759 | ;; |
|---|
| 760 | esac; |
|---|
| 761 | shift; |
|---|
| 762 | done |
|---|
| 763 | } |
|---|
| 764 | base_src_prepare () |
|---|
| 765 | { |
|---|
| 766 | debug-print-function $FUNCNAME "$@"; |
|---|
| 767 | base_src_util autopatch |
|---|
| 768 | } |
|---|
| 769 | base_src_unpack () |
|---|
| 770 | { |
|---|
| 771 | debug-print-function $FUNCNAME "$@"; |
|---|
| 772 | if [ -z "$1" ]; then |
|---|
| 773 | case "${EAPI:-0}" in |
|---|
| 774 | 2) |
|---|
| 775 | base_src_util unpack |
|---|
| 776 | ;; |
|---|
| 777 | *) |
|---|
| 778 | base_src_util all |
|---|
| 779 | ;; |
|---|
| 780 | esac; |
|---|
| 781 | else |
|---|
| 782 | base_src_util $@; |
|---|
| 783 | fi |
|---|
| 784 | } |
|---|
| 785 | base_src_util () |
|---|
| 786 | { |
|---|
| 787 | local x; |
|---|
| 788 | debug-print-function $FUNCNAME "$@"; |
|---|
| 789 | cd "${WORKDIR}"; |
|---|
| 790 | while [ "$1" ]; do |
|---|
| 791 | case $1 in |
|---|
| 792 | unpack) |
|---|
| 793 | debug-print-section unpack; |
|---|
| 794 | if [ ! -z "$A" ]; then |
|---|
| 795 | unpack ${A}; |
|---|
| 796 | fi |
|---|
| 797 | ;; |
|---|
| 798 | patch) |
|---|
| 799 | debug-print-section patch; |
|---|
| 800 | cd "${S}"; |
|---|
| 801 | epatch "${FILESDIR}/${P}-gentoo.diff" |
|---|
| 802 | ;; |
|---|
| 803 | autopatch) |
|---|
| 804 | debug-print-section autopatch; |
|---|
| 805 | debug-print "$FUNCNAME: autopatch: PATCHES=$PATCHES, PATCHES1=$PATCHES1"; |
|---|
| 806 | cd "${S}"; |
|---|
| 807 | if [[ ${#PATCHES[@]} -gt 1 ]]; then |
|---|
| 808 | for x in "${PATCHES[@]}"; |
|---|
| 809 | do |
|---|
| 810 | debug-print "$FUNCNAME: autopatch: patching from ${x}"; |
|---|
| 811 | epatch "${x}"; |
|---|
| 812 | done; |
|---|
| 813 | else |
|---|
| 814 | for x in ${PATCHES} ${PATCHES1}; |
|---|
| 815 | do |
|---|
| 816 | debug-print "$FUNCNAME: autopatch: patching from ${x}"; |
|---|
| 817 | epatch "${x}"; |
|---|
| 818 | done; |
|---|
| 819 | fi |
|---|
| 820 | ;; |
|---|
| 821 | all) |
|---|
| 822 | debug-print-section all; |
|---|
| 823 | base_src_util unpack autopatch |
|---|
| 824 | ;; |
|---|
| 825 | esac; |
|---|
| 826 | shift; |
|---|
| 827 | done |
|---|
| 828 | } |
|---|
| 829 | base_src_work () |
|---|
| 830 | { |
|---|
| 831 | debug-print-function $FUNCNAME "$@"; |
|---|
| 832 | cd "${S}"; |
|---|
| 833 | while [ "$1" ]; do |
|---|
| 834 | case $1 in |
|---|
| 835 | configure) |
|---|
| 836 | debug-print-section configure; |
|---|
| 837 | if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then |
|---|
| 838 | econf || die "died running econf, $FUNCNAME:configure"; |
|---|
| 839 | fi |
|---|
| 840 | ;; |
|---|
| 841 | make) |
|---|
| 842 | debug-print-section make; |
|---|
| 843 | if [ -f Makefile ] || [ -f GNUmakefile ] || [ -f makefile ]; then |
|---|
| 844 | emake || die "died running emake, $FUNCNAME:make"; |
|---|
| 845 | fi |
|---|
| 846 | ;; |
|---|
| 847 | all) |
|---|
| 848 | debug-print-section all; |
|---|
| 849 | base_src_work configure make |
|---|
| 850 | ;; |
|---|
| 851 | esac; |
|---|
| 852 | shift; |
|---|
| 853 | done |
|---|
| 854 | } |
|---|
| 855 | bash-completion_pkg_postinst () |
|---|
| 856 | { |
|---|
| 857 | if useq bash-completion; then |
|---|
| 858 | elog "To enable command-line completion for ${PN}, run:"; |
|---|
| 859 | elog; |
|---|
| 860 | elog " eselect bashcomp enable ${BASH_COMPLETION_NAME:-${PN}}"; |
|---|
| 861 | elog; |
|---|
| 862 | elog "to install locally, or"; |
|---|
| 863 | elog; |
|---|
| 864 | elog " eselect bashcomp enable --global ${BASH_COMPLETION_NAME:-${PN}}"; |
|---|
| 865 | elog; |
|---|
| 866 | elog "to install system-wide."; |
|---|
| 867 | fi |
|---|
| 868 | } |
|---|
| 869 | bindnow-flags () |
|---|
| 870 | { |
|---|
| 871 | ewarn "QA: stop using the bindnow-flags function ... simply drop it from your ebuild" |
|---|
| 872 | } |
|---|
| 873 | built_with_use () |
|---|
| 874 | { |
|---|
| 875 | local hidden="no"; |
|---|
| 876 | if [[ $1 == "--hidden" ]]; then |
|---|
| 877 | hidden="yes"; |
|---|
| 878 | shift; |
|---|
| 879 | fi; |
|---|
| 880 | local missing_action="die"; |
|---|
| 881 | if [[ $1 == "--missing" ]]; then |
|---|
| 882 | missing_action=$2; |
|---|
| 883 | shift; |
|---|
| 884 | shift; |
|---|
| 885 | case ${missing_action} in |
|---|
| 886 | true | false | die) |
|---|
| 887 | |
|---|
| 888 | ;; |
|---|
| 889 | *) |
|---|
| 890 | die "unknown action '${missing_action}'" |
|---|
| 891 | ;; |
|---|
| 892 | esac; |
|---|
| 893 | fi; |
|---|
| 894 | local opt=$1; |
|---|
| 895 | [[ ${opt:0:1} = "-" ]] && shift || opt="-a"; |
|---|
| 896 | local PKG=$(best_version $1); |
|---|
| 897 | [[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package"; |
|---|
| 898 | shift; |
|---|
| 899 | local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE; |
|---|
| 900 | local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE; |
|---|
| 901 | if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then |
|---|
| 902 | case ${missing_action} in |
|---|
| 903 | true) |
|---|
| 904 | return 0 |
|---|
| 905 | ;; |
|---|
| 906 | false) |
|---|
| 907 | return 1 |
|---|
| 908 | ;; |
|---|
| 909 | die) |
|---|
| 910 | die "Unable to determine what USE flags $PKG was built with" |
|---|
| 911 | ;; |
|---|
| 912 | esac; |
|---|
| 913 | fi; |
|---|
| 914 | if [[ ${hidden} == "no" ]]; then |
|---|
| 915 | local IUSE_BUILT=($(<"${IUSEFILE}")); |
|---|
| 916 | local expand; |
|---|
| 917 | for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]'); |
|---|
| 918 | do |
|---|
| 919 | if [[ $1 == ${expand}_* ]]; then |
|---|
| 920 | expand=""; |
|---|
| 921 | break; |
|---|
| 922 | fi; |
|---|
| 923 | done; |
|---|
| 924 | if [[ -n ${expand} ]]; then |
|---|
| 925 | if ! has $1 ${IUSE_BUILT[@]#[-+]}; then |
|---|
| 926 | case ${missing_action} in |
|---|
| 927 | true) |
|---|
| 928 | return 0 |
|---|
| 929 | ;; |
|---|
| 930 | false) |
|---|
| 931 | return 1 |
|---|
| 932 | ;; |
|---|
| 933 | die) |
|---|
| 934 | die "$PKG does not actually support the $1 USE flag!" |
|---|
| 935 | ;; |
|---|
| 936 | esac; |
|---|
| 937 | fi; |
|---|
| 938 | fi; |
|---|
| 939 | fi; |
|---|
| 940 | local USE_BUILT=$(<${USEFILE}); |
|---|
| 941 | while [[ $# -gt 0 ]]; do |
|---|
| 942 | if [[ ${opt} = "-o" ]]; then |
|---|
| 943 | has $1 ${USE_BUILT} && return 0; |
|---|
| 944 | else |
|---|
| 945 | has $1 ${USE_BUILT} || return 1; |
|---|
| 946 | fi; |
|---|
| 947 | shift; |
|---|
| 948 | done; |
|---|
| 949 | [[ ${opt} = "-a" ]] |
|---|
| 950 | } |
|---|
| 951 | cdrom_get_cds () |
|---|
| 952 | { |
|---|
| 953 | local cdcnt=0; |
|---|
| 954 | local f=; |
|---|
| 955 | for f in "$@"; |
|---|
| 956 | do |
|---|
| 957 | ((++cdcnt)); |
|---|
| 958 | export CDROM_CHECK_${cdcnt}="$f"; |
|---|
| 959 | done; |
|---|
| 960 | export CDROM_TOTAL_CDS=${cdcnt}; |
|---|
| 961 | export CDROM_CURRENT_CD=1; |
|---|
| 962 | if [[ -n ${CD_ROOT}${CD_ROOT_1} ]]; then |
|---|
| 963 | local var=; |
|---|
| 964 | cdcnt=0; |
|---|
| 965 | while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do |
|---|
| 966 | ((++cdcnt)); |
|---|
| 967 | var="CD_ROOT_${cdcnt}"; |
|---|
| 968 | [[ -z ${!var} ]] && var="CD_ROOT"; |
|---|
| 969 | if [[ -z ${!var} ]]; then |
|---|
| 970 | eerror "You must either use just the CD_ROOT"; |
|---|
| 971 | eerror "or specify ALL the CD_ROOT_X variables."; |
|---|
| 972 | eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables."; |
|---|
| 973 | die "could not locate CD_ROOT_${cdcnt}"; |
|---|
| 974 | fi; |
|---|
| 975 | done; |
|---|
| 976 | export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}}; |
|---|
| 977 | einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"; |
|---|
| 978 | export CDROM_SET=-1; |
|---|
| 979 | for f in ${CDROM_CHECK_1//:/ }; |
|---|
| 980 | do |
|---|
| 981 | ((++CDROM_SET)); |
|---|
| 982 | [[ -e ${CD_ROOT}/${f} ]] && break; |
|---|
| 983 | done; |
|---|
| 984 | export CDROM_MATCH=${f}; |
|---|
| 985 | return; |
|---|
| 986 | fi; |
|---|
| 987 | if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then |
|---|
| 988 | einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}"; |
|---|
| 989 | echo; |
|---|
| 990 | einfo "If you do not have the CD, but have the data files"; |
|---|
| 991 | einfo "mounted somewhere on your filesystem, just export"; |
|---|
| 992 | einfo "the variable CD_ROOT so that it points to the"; |
|---|
| 993 | einfo "directory containing the files."; |
|---|
| 994 | echo; |
|---|
| 995 | einfo "For example:"; |
|---|
| 996 | einfo "export CD_ROOT=/mnt/cdrom"; |
|---|
| 997 | echo; |
|---|
| 998 | else |
|---|
| 999 | if [[ -n ${CDROM_NAME_SET} ]]; then |
|---|
| 1000 | cdcnt=0; |
|---|
| 1001 | while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do |
|---|
| 1002 | ((++cdcnt)); |
|---|
| 1003 | export CDROM_NAME_${cdcnt}="${CDROM_NAME_SET[$((${cdcnt}-1))]}"; |
|---|
| 1004 | done; |
|---|
| 1005 | fi; |
|---|
| 1006 | einfo "This package will need access to ${CDROM_TOTAL_CDS} cds."; |
|---|
| 1007 | cdcnt=0; |
|---|
| 1008 | while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do |
|---|
| 1009 | ((++cdcnt)); |
|---|
| 1010 | var="CDROM_NAME_${cdcnt}"; |
|---|
| 1011 | [[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}"; |
|---|
| 1012 | done; |
|---|
| 1013 | echo; |
|---|
| 1014 | einfo "If you do not have the CDs, but have the data files"; |
|---|
| 1015 | einfo "mounted somewhere on your filesystem, just export"; |
|---|
| 1016 | einfo "the following variables so they point to the right place:"; |
|---|
| 1017 | einfon ""; |
|---|
| 1018 | cdcnt=0; |
|---|
| 1019 | while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do |
|---|
| 1020 | ((++cdcnt)); |
|---|
| 1021 | echo -n " CD_ROOT_${cdcnt}"; |
|---|
| 1022 | done; |
|---|
| 1023 | echo; |
|---|
| 1024 | einfo "Or, if you have all the files in the same place, or"; |
|---|
| 1025 | einfo "you only have one cdrom, you can export CD_ROOT"; |
|---|
| 1026 | einfo "and that place will be used as the same data source"; |
|---|
| 1027 | einfo "for all the CDs."; |
|---|
| 1028 | echo; |
|---|
| 1029 | einfo "For example:"; |
|---|
| 1030 | einfo "export CD_ROOT_1=/mnt/cdrom"; |
|---|
| 1031 | echo; |
|---|
| 1032 | fi; |
|---|
| 1033 | export CDROM_SET=""; |
|---|
| 1034 | export CDROM_CURRENT_CD=0; |
|---|
| 1035 | cdrom_load_next_cd |
|---|
| 1036 | } |
|---|
| 1037 | cdrom_load_next_cd () |
|---|
| 1038 | { |
|---|
| 1039 | local var; |
|---|
| 1040 | ((++CDROM_CURRENT_CD)); |
|---|
| 1041 | unset CDROM_ROOT; |
|---|
| 1042 | var=CD_ROOT_${CDROM_CURRENT_CD}; |
|---|
| 1043 | [[ -z ${!var} ]] && var="CD_ROOT"; |
|---|
| 1044 | if [[ -z ${!var} ]]; then |
|---|
| 1045 | var="CDROM_CHECK_${CDROM_CURRENT_CD}"; |
|---|
| 1046 | _cdrom_locate_file_on_cd ${!var}; |
|---|
| 1047 | else |
|---|
| 1048 | export CDROM_ROOT=${!var}; |
|---|
| 1049 | fi; |
|---|
| 1050 | einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}" |
|---|
| 1051 | } |
|---|
| 1052 | check_license () |
|---|
| 1053 | { |
|---|
| 1054 | local lic=$1; |
|---|
| 1055 | if [ -z "${lic}" ]; then |
|---|
| 1056 | lic="${PORTDIR}/licenses/${LICENSE}"; |
|---|
| 1057 | else |
|---|
| 1058 | if [ -e "${PORTDIR}/licenses/${lic}" ]; then |
|---|
| 1059 | lic="${PORTDIR}/licenses/${lic}"; |
|---|
| 1060 | else |
|---|
| 1061 | if [ -e "${PWD}/${lic}" ]; then |
|---|
| 1062 | lic="${PWD}/${lic}"; |
|---|
| 1063 | else |
|---|
| 1064 | if [ -e "${lic}" ]; then |
|---|
| 1065 | lic="${lic}"; |
|---|
| 1066 | fi; |
|---|
| 1067 | fi; |
|---|
| 1068 | fi; |
|---|
| 1069 | fi; |
|---|
| 1070 | [ ! -f "${lic}" ] && die "Could not find requested license ${lic}"; |
|---|
| 1071 | local l="`basename ${lic}`"; |
|---|
| 1072 | local shopts=$-; |
|---|
| 1073 | local alic; |
|---|
| 1074 | set -o noglob; |
|---|
| 1075 | for alic in ${ACCEPT_LICENSE}; |
|---|
| 1076 | do |
|---|
| 1077 | if [[ ${alic} == ${l} ]]; then |
|---|
| 1078 | set +o noglob; |
|---|
| 1079 | set -${shopts}; |
|---|
| 1080 | return 0; |
|---|
| 1081 | fi; |
|---|
| 1082 | done; |
|---|
| 1083 | set +o noglob; |
|---|
| 1084 | set -$shopts; |
|---|
| 1085 | local licmsg=$(emktemp); |
|---|
| 1086 | cat > ${licmsg} <<-EOF |
|---|
| 1087 | ********************************************************** |
|---|
| 1088 | The following license outlines the terms of use of this |
|---|
| 1089 | package. You MUST accept this license for installation to |
|---|
| 1090 | continue. When you are done viewing, hit 'q'. If you |
|---|
| 1091 | CTRL+C out of this, the install will not run! |
|---|
| 1092 | ********************************************************** |
|---|
| 1093 | |
|---|
| 1094 | EOF |
|---|
| 1095 | |
|---|
| 1096 | cat ${lic} >> ${licmsg}; |
|---|
| 1097 | ${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}"; |
|---|
| 1098 | einfon "Do you accept the terms of this license (${l})? [yes/no] "; |
|---|
| 1099 | read alic; |
|---|
| 1100 | case ${alic} in |
|---|
| 1101 | yes | Yes | y | Y) |
|---|
| 1102 | return 0 |
|---|
| 1103 | ;; |
|---|
| 1104 | *) |
|---|
| 1105 | echo; |
|---|
| 1106 | echo; |
|---|
| 1107 | echo; |
|---|
| 1108 | eerror "You MUST accept the license to continue! Exiting!"; |
|---|
| 1109 | die "Failed to accept license" |
|---|
| 1110 | ;; |
|---|
| 1111 | esac |
|---|
| 1112 | } |
|---|
| 1113 | create_apache_tests_configuration () |
|---|
| 1114 | { |
|---|
| 1115 | cat > "${T}/99_subversion_tests.conf" <<EOF |
|---|
| 1116 | <IfDefine SVN_TESTS> |
|---|
| 1117 | User $(id -un) |
|---|
| 1118 | Group $(id -gn) |
|---|
| 1119 | |
|---|
| 1120 | <Location /svn-test-work/repositories> |
|---|
| 1121 | DAV svn |
|---|
| 1122 | SVNParentPath "${S}/subversion/tests/cmdline/svn-test-work/repositories" |
|---|
| 1123 | AuthzSVNAccessFile "${S}/subversion/tests/cmdline/svn-test-work/authz" |
|---|
| 1124 | AuthType Basic |
|---|
| 1125 | AuthName "Subversion Repository" |
|---|
| 1126 | AuthUserFile "${T}/apache-users" |
|---|
| 1127 | Require valid-user |
|---|
| 1128 | </Location> |
|---|
| 1129 | |
|---|
| 1130 | <Location /svn-test-work/local_tmp/repos> |
|---|
| 1131 | DAV svn |
|---|
| 1132 | SVNPath "${S}/subversion/tests/cmdline/svn-test-work/local_tmp/repos" |
|---|
| 1133 | AuthzSVNAccessFile "${S}/subversion/tests/cmdline/svn-test-work/authz" |
|---|
| 1134 | AuthType Basic |
|---|
| 1135 | AuthName "Subversion Repository" |
|---|
| 1136 | AuthUserFile "${T}/apache-users" |
|---|
| 1137 | Require valid-user |
|---|
| 1138 | </Location> |
|---|
| 1139 | </IfDefine> |
|---|
| 1140 | EOF |
|---|
| 1141 | |
|---|
| 1142 | cat > "${T}/apache-users" <<EOF |
|---|
| 1143 | jrandom:xCGl35kV9oWCY |
|---|
| 1144 | jconstant:xCGl35kV9oWCY |
|---|
| 1145 | EOF |
|---|
| 1146 | |
|---|
| 1147 | } |
|---|
| 1148 | create_ml_includes () |
|---|
| 1149 | { |
|---|
| 1150 | local dest=$1; |
|---|
| 1151 | shift; |
|---|
| 1152 | local basedirs=$(create_ml_includes-listdirs "$@"); |
|---|
| 1153 | create_ml_includes-makedestdirs ${dest} ${basedirs}; |
|---|
| 1154 | local file; |
|---|
| 1155 | for file in $(create_ml_includes-allfiles ${basedirs}); |
|---|
| 1156 | do |
|---|
| 1157 | ( echo "/* Autogenerated by create_ml_includes() in multilib.eclass */"; |
|---|
| 1158 | local dir; |
|---|
| 1159 | for dir in ${basedirs}; |
|---|
| 1160 | do |
|---|
| 1161 | if [[ -f ${D}/${dir}/${file} ]]; then |
|---|
| 1162 | echo ""; |
|---|
| 1163 | local sym=$(create_ml_includes-sym_for_dir ${dir} "$@"); |
|---|
| 1164 | if [[ ${sym/=} != "${sym}" ]]; then |
|---|
| 1165 | echo "#if ${sym}"; |
|---|
| 1166 | else |
|---|
| 1167 | if [[ ${sym::1} == "!" ]]; then |
|---|
| 1168 | echo "#ifndef ${sym:1}"; |
|---|
| 1169 | else |
|---|
| 1170 | echo "#ifdef ${sym}"; |
|---|
| 1171 | fi; |
|---|
| 1172 | fi; |
|---|
| 1173 | echo "# include <$(create_ml_includes-absolute ${dir}/${file})>"; |
|---|
| 1174 | echo "#endif /* ${sym} */"; |
|---|
| 1175 | fi; |
|---|
| 1176 | done ) > "${D}/${dest}/${file}"; |
|---|
| 1177 | done |
|---|
| 1178 | } |
|---|
| 1179 | create_ml_includes-absolute () |
|---|
| 1180 | { |
|---|
| 1181 | local dst="$(create_ml_includes-tidy_path $1)"; |
|---|
| 1182 | dst=(${dst//\// }); |
|---|
| 1183 | local i; |
|---|
| 1184 | for ((i=0; i<${#dst[*]}; i++)) |
|---|
| 1185 | do |
|---|
| 1186 | [ "${dst[i]}" == "include" ] && break; |
|---|
| 1187 | done; |
|---|
| 1188 | local strip_upto=$i; |
|---|
| 1189 | for ((i=strip_upto+1; i<${#dst[*]}-1; i++)) |
|---|
| 1190 | do |
|---|
| 1191 | echo -n ${dst[i]}/; |
|---|
| 1192 | done; |
|---|
| 1193 | echo -n ${dst[i]} |
|---|
| 1194 | } |
|---|
| 1195 | create_ml_includes-allfiles () |
|---|
| 1196 | { |
|---|
| 1197 | local basedir file; |
|---|
| 1198 | for basedir in "$@"; |
|---|
| 1199 | do |
|---|
| 1200 | for file in $(find "${D}"/${basedir} -type f); |
|---|
| 1201 | do |
|---|
| 1202 | echo ${file/${D}\/${basedir}\//}; |
|---|
| 1203 | done; |
|---|
| 1204 | done | sort | uniq |
|---|
| 1205 | } |
|---|
| 1206 | create_ml_includes-listdirs () |
|---|
| 1207 | { |
|---|
| 1208 | local dirs; |
|---|
| 1209 | local data; |
|---|
| 1210 | for data in "$@"; |
|---|
| 1211 | do |
|---|
| 1212 | dirs="${dirs} ${data/*:/}"; |
|---|
| 1213 | done; |
|---|
| 1214 | echo ${dirs:1} |
|---|
| 1215 | } |
|---|
| 1216 | create_ml_includes-makedestdirs () |
|---|
| 1217 | { |
|---|
| 1218 | local dest=$1; |
|---|
| 1219 | shift; |
|---|
| 1220 | local basedirs=$@; |
|---|
| 1221 | dodir ${dest}; |
|---|
| 1222 | local basedir; |
|---|
| 1223 | for basedir in ${basedirs}; |
|---|
| 1224 | do |
|---|
| 1225 | local dir; |
|---|
| 1226 | for dir in $(find "${D}"/${basedir} -type d); |
|---|
| 1227 | do |
|---|
| 1228 | dodir ${dest}/${dir/${D}\/${basedir}/}; |
|---|
| 1229 | done; |
|---|
| 1230 | done |
|---|
| 1231 | } |
|---|
| 1232 | create_ml_includes-sym_for_dir () |
|---|
| 1233 | { |
|---|
| 1234 | local dir=$1; |
|---|
| 1235 | shift; |
|---|
| 1236 | local data; |
|---|
| 1237 | for data in "$@"; |
|---|
| 1238 | do |
|---|
| 1239 | if [[ ${data} == *:${dir} ]]; then |
|---|
| 1240 | echo ${data/:*/}; |
|---|
| 1241 | return 0; |
|---|
| 1242 | fi; |
|---|
| 1243 | done; |
|---|
| 1244 | echo "Shouldn't be here -- create_ml_includes-sym_for_dir $1 $@"; |
|---|
| 1245 | exit 1 |
|---|
| 1246 | } |
|---|
| 1247 | create_ml_includes-tidy_path () |
|---|
| 1248 | { |
|---|
| 1249 | local removed=$1; |
|---|
| 1250 | if [ -n "${removed}" ]; then |
|---|
| 1251 | while [ "${removed}" != "${removed/\/\//\/}" ]; do |
|---|
| 1252 | removed=${removed/\/\//\/}; |
|---|
| 1253 | done; |
|---|
| 1254 | while [ "${removed}" != "${removed//\/.\//\/}" ]; do |
|---|
| 1255 | removed=${removed//\/.\//\/}; |
|---|
| 1256 | done; |
|---|
| 1257 | [ "${removed##*/}" = "." ] && removed=${removed%/*}; |
|---|
| 1258 | while [ "${removed}" != "${removed//\/..\/}" ]; do |
|---|
| 1259 | local p1="${removed%%\/..\/*}"; |
|---|
| 1260 | local p2="${removed#*\/..\/}"; |
|---|
| 1261 | removed="${p1%\/*}/${p2}"; |
|---|
| 1262 | done; |
|---|
| 1263 | [ "${removed##*/}" = ".." ] && removed=${removed%/*/*}; |
|---|
| 1264 | [ "${removed##*/}" = "" ] && removed=${removed%/*}; |
|---|
| 1265 | echo ${removed}; |
|---|
| 1266 | fi |
|---|
| 1267 | } |
|---|
| 1268 | darwintoolize () |
|---|
| 1269 | { |
|---|
| 1270 | ewarn "darwintoolize() is deprecated, please just use elibtoolize()!"; |
|---|
| 1271 | elibtoolize |
|---|
| 1272 | } |
|---|
| 1273 | db_findver () |
|---|
| 1274 | { |
|---|
| 1275 | if [ $# -ne 1 ]; then |
|---|
| 1276 | eerror "Function db_findver needs one argument" 1>&2; |
|---|
| 1277 | eerror "args given:" 1>&2; |
|---|
| 1278 | for f in $@; |
|---|
| 1279 | do |
|---|
| 1280 | eerror " - \"$@\"" 1>&2; |
|---|
| 1281 | done; |
|---|
| 1282 | return 1; |
|---|
| 1283 | fi; |
|---|
| 1284 | PKG="$(best_version $1)"; |
|---|
| 1285 | VER="$(get_version_component_range 1-2 "${PKG/*db-/}")"; |
|---|
| 1286 | if [ -d /usr/include/db$(db_ver_to_slot "$VER") ]; then |
|---|
| 1287 | einfo "Found db version ${VER}" 1>&2; |
|---|
| 1288 | echo -n "$VER"; |
|---|
| 1289 | return 0; |
|---|
| 1290 | else |
|---|
| 1291 | return 1; |
|---|
| 1292 | fi |
|---|
| 1293 | } |
|---|
| 1294 | db_includedir () |
|---|
| 1295 | { |
|---|
| 1296 | if [ $# -eq 0 ]; then |
|---|
| 1297 | VER="$(db_findver sys-libs/db)" || return 1; |
|---|
| 1298 | VER="$(db_ver_to_slot "$VER")"; |
|---|
| 1299 | echo "include version ${VER}" 1>&2; |
|---|
| 1300 | if [ -d "/usr/include/db${VER}" ]; then |
|---|
| 1301 | echo -n "/usr/include/db${VER}"; |
|---|
| 1302 | return 0; |
|---|
| 1303 | else |
|---|
| 1304 | eerror "sys-libs/db package requested, but headers not found" 1>&2; |
|---|
| 1305 | return 1; |
|---|
| 1306 | fi; |
|---|
| 1307 | else |
|---|
| 1308 | for x in $@; |
|---|
| 1309 | do |
|---|
| 1310 | if VER=$(db_findver "=sys-libs/db-${x}*") && [ -d "/usr/include/db$(db_ver_to_slot $VER)" ]; then |
|---|
| 1311 | echo -n "/usr/include/db$(db_ver_to_slot $VER)"; |
|---|
| 1312 | return 0; |
|---|
| 1313 | fi; |
|---|
| 1314 | done; |
|---|
| 1315 | eerror "No suitable db version found"; |
|---|
| 1316 | return 1; |
|---|
| 1317 | fi |
|---|
| 1318 | } |
|---|
| 1319 | db_libname () |
|---|
| 1320 | { |
|---|
| 1321 | if [ $# -eq 0 ]; then |
|---|
| 1322 | VER="$(db_findver sys-libs/db)" || return 1; |
|---|
| 1323 | if [ -e "/usr/$(get_libdir)/libdb-${VER}.so" ]; then |
|---|
| 1324 | echo -n "db-${VER}"; |
|---|
| 1325 | return 0; |
|---|
| 1326 | else |
|---|
| 1327 | eerror "sys-libs/db package requested, but library not found" 1>&2; |
|---|
| 1328 | return 1; |
|---|
| 1329 | fi; |
|---|
| 1330 | else |
|---|
| 1331 | for x in $@; |
|---|
| 1332 | do |
|---|
| 1333 | if VER=$(db_findver "=sys-libs/db-${x}*"); then |
|---|
| 1334 | if [ -e "/usr/$(get_libdir)/libdb-${VER}.so" ]; then |
|---|
| 1335 | echo -n "db-${VER}"; |
|---|
| 1336 | return 0; |
|---|
| 1337 | fi; |
|---|
| 1338 | fi; |
|---|
| 1339 | done; |
|---|
| 1340 | eerror "No suitable db version found" 1>&2; |
|---|
| 1341 | return 1; |
|---|
| 1342 | fi |
|---|
| 1343 | } |
|---|
| 1344 | db_ver_to_slot () |
|---|
| 1345 | { |
|---|
| 1346 | if [ $# -ne 1 ]; then |
|---|
| 1347 | eerror "Function db_ver_to_slot needs one argument" 1>&2; |
|---|
| 1348 | eerror "args given:" 1>&2; |
|---|
| 1349 | for f in $@; |
|---|
| 1350 | do |
|---|
| 1351 | eerror " - \"$@\"" 1>&2; |
|---|
| 1352 | done; |
|---|
| 1353 | return 1; |
|---|
| 1354 | fi; |
|---|
| 1355 | echo -n "${1/.0/}" |
|---|
| 1356 | } |
|---|
| 1357 | delete_all_version_separators () |
|---|
| 1358 | { |
|---|
| 1359 | __versionator_shopt_toggle on; |
|---|
| 1360 | replace_all_version_separators "" "${1}"; |
|---|
| 1361 | __versionator_shopt_toggle off |
|---|
| 1362 | } |
|---|
| 1363 | delete_version_separator () |
|---|
| 1364 | { |
|---|
| 1365 | __versionator_shopt_toggle on; |
|---|
| 1366 | replace_version_separator "${1}" "" "${2}"; |
|---|
| 1367 | __versionator_shopt_toggle off |
|---|
| 1368 | } |
|---|
| 1369 | depend-java-query () |
|---|
| 1370 | { |
|---|
| 1371 | USE="${USE}" /usr/bin/depend-java-query "${@}" |
|---|
| 1372 | } |
|---|
| 1373 | depend.apache_pkg_setup () |
|---|
| 1374 | { |
|---|
| 1375 | debug-print-function $FUNCNAME $*; |
|---|
| 1376 | if [[ "${EBUILD_PHASE}" != "setup" ]]; then |
|---|
| 1377 | die "$FUNCNAME() should be called in pkg_setup()"; |
|---|
| 1378 | fi; |
|---|
| 1379 | local myiuse=${1:-apache2}; |
|---|
| 1380 | if has ${myiuse} ${IUSE}; then |
|---|
| 1381 | if use ${myiuse}; then |
|---|
| 1382 | _init_apache2; |
|---|
| 1383 | else |
|---|
| 1384 | _init_no_apache; |
|---|
| 1385 | fi; |
|---|
| 1386 | fi |
|---|
| 1387 | } |
|---|
| 1388 | dlopen_lib () |
|---|
| 1389 | { |
|---|
| 1390 | if [[ ${CHOST} == *-linux-gnu || ${CHOST} == *-linux-uclibc ]]; then |
|---|
| 1391 | echo "-ldl"; |
|---|
| 1392 | fi |
|---|
| 1393 | } |
|---|
| 1394 | dobashcompletion () |
|---|
| 1395 | { |
|---|
| 1396 | [[ -z "$1" ]] && die "usage: dobashcompletion <file> <new file>"; |
|---|
| 1397 | [[ -z "${BASH_COMPLETION_NAME}" ]] && BASH_COMPLETION_NAME="${2:-${PN}}"; |
|---|
| 1398 | if useq bash-completion; then |
|---|
| 1399 | insinto /usr/share/bash-completion; |
|---|
| 1400 | newins "$1" "${BASH_COMPLETION_NAME}" || die "Failed to install $1"; |
|---|
| 1401 | fi |
|---|
| 1402 | } |
|---|
| 1403 | doicon () |
|---|
| 1404 | { |
|---|
| 1405 | ( local i j ret; |
|---|
| 1406 | insinto /usr/share/pixmaps; |
|---|
| 1407 | for i in "$@"; |
|---|
| 1408 | do |
|---|
| 1409 | if [[ -f ${i} ]]; then |
|---|
| 1410 | doins "${i}"; |
|---|
| 1411 | ((ret+=$?)); |
|---|
| 1412 | else |
|---|
| 1413 | if [[ -d ${i} ]]; then |
|---|
| 1414 | for j in "${i}"/*.png; |
|---|
| 1415 | do |
|---|
| 1416 | doins "${j}"; |
|---|
| 1417 | ((ret+=$?)); |
|---|
| 1418 | done; |
|---|
| 1419 | else |
|---|
| 1420 | ((++ret)); |
|---|
| 1421 | fi; |
|---|
| 1422 | fi; |
|---|
| 1423 | done; |
|---|
| 1424 | exit ${ret} ) |
|---|
| 1425 | } |
|---|
| 1426 | domenu () |
|---|
| 1427 | { |
|---|
| 1428 | ( local i j ret=0; |
|---|
| 1429 | insinto /usr/share/applications; |
|---|
| 1430 | for i in "$@"; |
|---|
| 1431 | do |
|---|
| 1432 | if [[ -f ${i} ]]; then |
|---|
| 1433 | doins "${i}"; |
|---|
| 1434 | ((ret+=$?)); |
|---|
| 1435 | else |
|---|
| 1436 | if [[ -d ${i} ]]; then |
|---|
| 1437 | for j in "${i}"/*.desktop; |
|---|
| 1438 | do |
|---|
| 1439 | doins "${j}"; |
|---|
| 1440 | ((ret+=$?)); |
|---|
| 1441 | done; |
|---|
| 1442 | else |
|---|
| 1443 | ((++ret)); |
|---|
| 1444 | fi; |
|---|
| 1445 | fi; |
|---|
| 1446 | done; |
|---|
| 1447 | exit ${ret} ) |
|---|
| 1448 | } |
|---|
| 1449 | eaclocal () |
|---|
| 1450 | { |
|---|
| 1451 | local aclocal_opts; |
|---|
| 1452 | local amflags_file; |
|---|
| 1453 | for amflags_file in GNUmakefile.am Makefile.am GNUmakefile.in Makefile.in; |
|---|
| 1454 | do |
|---|
| 1455 | [[ -e ${amflags_file} ]] || continue; |
|---|
| 1456 | aclocal_opts=$(sed -n '/^ACLOCAL_AMFLAGS[[:space:]]*=/s:[^=]*=::p' ${amflags_file}); |
|---|
| 1457 | eval aclocal_opts=\"${aclocal_opts}\"; |
|---|
| 1458 | break; |
|---|
| 1459 | done; |
|---|
| 1460 | if [[ -n ${AT_M4DIR} ]]; then |
|---|
| 1461 | for x in ${AT_M4DIR}; |
|---|
| 1462 | do |
|---|
| 1463 | case "${x}" in |
|---|
| 1464 | "-I") |
|---|
| 1465 | |
|---|
| 1466 | ;; |
|---|
| 1467 | *) |
|---|
| 1468 | [[ ! -d ${x} ]] && ewarn "eaclocal: '${x}' does not exist"; |
|---|
| 1469 | aclocal_opts="${aclocal_opts} -I ${x}" |
|---|
| 1470 | ;; |
|---|
| 1471 | esac; |
|---|
| 1472 | done; |
|---|
| 1473 | fi; |
|---|
| 1474 | [[ ! -f aclocal.m4 || -n $(grep -e 'generated.*by aclocal' aclocal.m4) ]] && autotools_run_tool aclocal "$@" ${aclocal_opts} |
|---|
| 1475 | } |
|---|
| 1476 | eant () |
|---|
| 1477 | { |
|---|
| 1478 | debug-print-function ${FUNCNAME} $*; |
|---|
| 1479 | if [[ ${EBUILD_PHASE} = compile ]]; then |
|---|
| 1480 | java-ant-2_src_configure; |
|---|
| 1481 | java-utils-2_src_prepare; |
|---|
| 1482 | fi; |
|---|
| 1483 | if ! hasq java-ant-2 ${INHERITED}; then |
|---|
| 1484 | local msg="You should inherit java-ant-2 when using eant"; |
|---|
| 1485 | java-pkg_announce-qa-violation "${msg}"; |
|---|
| 1486 | fi; |
|---|
| 1487 | local antflags="-Dnoget=true -Dmaven.mode.offline=true -Dbuild.sysclasspath=ignore"; |
|---|
| 1488 | java-pkg_init-compiler_; |
|---|
| 1489 | local compiler="${GENTOO_COMPILER}"; |
|---|
| 1490 | local compiler_env="${JAVA_PKG_COMPILER_DIR}/${compiler}"; |
|---|
| 1491 | local build_compiler="$(source ${compiler_env} 1>/dev/null 2>&1; echo ${ANT_BUILD_COMPILER})"; |
|---|
| 1492 | if [[ "${compiler}" != "javac" && -z "${build_compiler}" ]]; then |
|---|
| 1493 | die "ANT_BUILD_COMPILER undefined in ${compiler_env}"; |
|---|
| 1494 | fi; |
|---|
| 1495 | if [[ ${compiler} != "javac" ]]; then |
|---|
| 1496 | antflags="${antflags} -Dbuild.compiler=${build_compiler}"; |
|---|
| 1497 | local build_compiler_deps="$(source ${JAVA_PKG_COMPILER_DIR}/${compiler} 1>/dev/null 2>&1; echo ${ANT_BUILD_COMPILER_DEPS})"; |
|---|
| 1498 | if [[ -n ${build_compiler_deps} ]]; then |
|---|
| 1499 | antflags="${antflags} -lib $(java-config -p ${build_compiler_deps})"; |
|---|
| 1500 | fi; |
|---|
| 1501 | fi; |
|---|
| 1502 | for arg in "${@}"; |
|---|
| 1503 | do |
|---|
| 1504 | if [[ ${arg} = -lib ]]; then |
|---|
| 1505 | if is-java-strict; then |
|---|
| 1506 | eerror "You should not use the -lib argument to eant because it will fail"; |
|---|
| 1507 | eerror "with JAVA_PKG_STRICT. Please use for example java-pkg_jar-from"; |
|---|
| 1508 | eerror "or ant properties to make dependencies available."; |
|---|
| 1509 | eerror "For ant tasks use WANT_ANT_TASKS or ANT_TASKS from."; |
|---|
| 1510 | eerror "split ant (>=dev-java/ant-core-1.7)."; |
|---|
| 1511 | die "eant -lib is deprecated/forbidden"; |
|---|
| 1512 | else |
|---|
| 1513 | echo "eant -lib is deprecated. Turn JAVA_PKG_STRICT on for"; |
|---|
| 1514 | echo "more info."; |
|---|
| 1515 | fi; |
|---|
| 1516 | fi; |
|---|
| 1517 | done; |
|---|
| 1518 | local want_ant_tasks; |
|---|
| 1519 | for i in ${WANT_ANT_TASKS}; |
|---|
| 1520 | do |
|---|
| 1521 | if [[ ${i} = */*:* ]]; then |
|---|
| 1522 | i=${i#*/}; |
|---|
| 1523 | i=${i%:0}; |
|---|
| 1524 | want_ant_tasks+="${i/:/-} "; |
|---|
| 1525 | else |
|---|
| 1526 | want_ant_tasks+="${i} "; |
|---|
| 1527 | fi; |
|---|
| 1528 | done; |
|---|
| 1529 | ANT_TASKS="${ANT_TASKS:-${want_ant_tasks% }}"; |
|---|
| 1530 | ANT_TASKS="${JAVA_PKG_FORCE_ANT_TASKS:-${ANT_TASKS}}"; |
|---|
| 1531 | ANT_TASKS="${ANT_TASKS:-none}"; |
|---|
| 1532 | if [[ "${ANT_TASKS}" == "all" ]]; then |
|---|
| 1533 | einfo "Using all available ANT_TASKS"; |
|---|
| 1534 | else |
|---|
| 1535 | if [[ "${ANT_TASKS}" == "none" ]]; then |
|---|
| 1536 | einfo "Disabling all optional ANT_TASKS"; |
|---|
| 1537 | else |
|---|
| 1538 | einfo "Using following ANT_TASKS: ${ANT_TASKS}"; |
|---|
| 1539 | fi; |
|---|
| 1540 | fi; |
|---|
| 1541 | export ANT_TASKS; |
|---|
| 1542 | [[ -n ${JAVA_PKG_DEBUG} ]] && antflags="${antflags} --execdebug -debug"; |
|---|
| 1543 | [[ -n ${PORTAGE_QUIET} ]] && antflags="${antflags} -q"; |
|---|
| 1544 | local gcp="${EANT_GENTOO_CLASSPATH}"; |
|---|
| 1545 | local getjarsarg=""; |
|---|
| 1546 | if [[ ${EBUILD_PHASE} = "test" ]]; then |
|---|
| 1547 | antflags="${antflags} -DJunit.present=true"; |
|---|
| 1548 | [[ ${ANT_TASKS} = *ant-junit* ]] && gcp="${gcp} junit"; |
|---|
| 1549 | getjarsarg="--with-dependencies"; |
|---|
| 1550 | fi; |
|---|
| 1551 | local cp; |
|---|
| 1552 | for atom in ${gcp}; |
|---|
| 1553 | do |
|---|
| 1554 | cp="${cp}:$(java-pkg_getjars ${getjarsarg} ${atom})"; |
|---|
| 1555 | done; |
|---|
| 1556 | [[ -n "${EANT_NEEDS_TOOLS}" ]] && cp="${cp}:$(java-config --tools)"; |
|---|
| 1557 | if [[ -n ${cp} ]]; then |
|---|
| 1558 | cp=${cp#:}; |
|---|
| 1559 | [[ -n ${EANT_GENTOO_CLASSPATH_EXTRA} ]] && cp="${cp}:${EANT_GENTOO_CLASSPATH_EXTRA}"; |
|---|
| 1560 | antflags="${antflags} -Dgentoo.classpath=\"${cp}\""; |
|---|
| 1561 | fi; |
|---|
| 1562 | [[ -n ${JAVA_PKG_DEBUG} ]] && echo ant ${antflags} "${@}"; |
|---|
| 1563 | debug-print "Calling ant (GENTOO_VM: ${GENTOO_VM}): ${antflags} ${@}"; |
|---|
| 1564 | ant ${antflags} "${@}" || die "eant failed" |
|---|
| 1565 | } |
|---|
| 1566 | eautoconf () |
|---|
| 1567 | { |
|---|
| 1568 | if [[ ! -f configure.ac && ! -f configure.in ]]; then |
|---|
| 1569 | echo; |
|---|
| 1570 | eerror "No configure.{ac,in} present in '$(pwd | sed -e 's:.*/::')'!"; |
|---|
| 1571 | echo; |
|---|
| 1572 | die "No configure.{ac,in} present!"; |
|---|
| 1573 | fi; |
|---|
| 1574 | autotools_run_tool autoconf "$@" |
|---|
| 1575 | } |
|---|
| 1576 | eautoheader () |
|---|
| 1577 | { |
|---|
| 1578 | [[ -n $(autotools_check_macro "AC_CONFIG_HEADERS") ]] || return 0; |
|---|
| 1579 | NO_FAIL=1 autotools_run_tool autoheader "$@" |
|---|
| 1580 | } |
|---|
| 1581 | eautomake () |
|---|
| 1582 | { |
|---|
| 1583 | local extra_opts; |
|---|
| 1584 | local makefile_name; |
|---|
| 1585 | if [[ -f GNUmakefile.am ]]; then |
|---|
| 1586 | makefile_name="GNUmakefile"; |
|---|
| 1587 | else |
|---|
| 1588 | if [[ -f Makefile.am ]]; then |
|---|
| 1589 | makefile_name="Makefile"; |
|---|
| 1590 | else |
|---|
| 1591 | return 0; |
|---|
| 1592 | fi; |
|---|
| 1593 | fi; |
|---|
| 1594 | if [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name}.in ]]; then |
|---|
| 1595 | local used_automake; |
|---|
| 1596 | local installed_automake; |
|---|
| 1597 | installed_automake=$(automake --version | head -n 1 | sed -e 's:.*(GNU automake) ::'); |
|---|
| 1598 | used_automake=$(head -n 1 < ${makefile_name}.in | sed -e 's:.*by automake \(.*\) from .*:\1:'); |
|---|
| 1599 | if [[ ${installed_automake} != ${used_automake} ]]; then |
|---|
| 1600 | einfo "Automake used for the package (${used_automake}) differs from"; |
|---|
| 1601 | einfo "the installed version (${installed_automake})."; |
|---|
| 1602 | eautoreconf; |
|---|
| 1603 | return 0; |
|---|
| 1604 | fi; |
|---|
| 1605 | fi; |
|---|
| 1606 | [[ -f INSTALL && -f AUTHORS && -f ChangeLog && -f NEWS ]] || extra_opts="${extra_opts} --foreign"; |
|---|
| 1607 | autotools_run_tool automake --add-missing --copy ${extra_opts} "$@" |
|---|
| 1608 | } |
|---|
| 1609 | eautoreconf () |
|---|
| 1610 | { |
|---|
| 1611 | local pwd=$(pwd) x auxdir g=; |
|---|
| 1612 | if [[ -z ${AT_NO_RECURSIVE} ]]; then |
|---|
| 1613 | for x in $(autotools_get_subdirs); |
|---|
| 1614 | do |
|---|
| 1615 | if [[ -d ${x} ]]; then |
|---|
| 1616 | cd "${x}"; |
|---|
| 1617 | AT_NOELIBTOOLIZE="yes" eautoreconf; |
|---|
| 1618 | cd "${pwd}"; |
|---|
| 1619 | fi; |
|---|
| 1620 | done; |
|---|
| 1621 | fi; |
|---|
| 1622 | auxdir=$(autotools_get_auxdir); |
|---|
| 1623 | einfo "Running eautoreconf in '$(pwd)' ..."; |
|---|
| 1624 | [[ -n ${auxdir} ]] && mkdir -p ${auxdir}; |
|---|
| 1625 | eaclocal; |
|---|
| 1626 | [[ ${CHOST} == *-darwin* ]] && g=g; |
|---|
| 1627 | if ${LIBTOOLIZE:-${g}libtoolize} -n --install >&/dev/null; then |
|---|
| 1628 | _elibtoolize --copy --force --install; |
|---|
| 1629 | else |
|---|
| 1630 | _elibtoolize --copy --force; |
|---|
| 1631 | fi; |
|---|
| 1632 | eautoconf; |
|---|
| 1633 | eautoheader; |
|---|
| 1634 | FROM_EAUTORECONF="yes" eautomake ${AM_OPTS}; |
|---|
| 1635 | [[ ${AT_NOELIBTOOLIZE} == "yes" ]] && return 0; |
|---|
| 1636 | S=${pwd} elibtoolize; |
|---|
| 1637 | return 0 |
|---|
| 1638 | } |
|---|
| 1639 | ebeep () |
|---|
| 1640 | { |
|---|
| 1641 | local n; |
|---|
| 1642 | if [[ -z ${EBEEP_IGNORE} ]]; then |
|---|
| 1643 | for ((n=1 ; n <= ${1:-5} ; n++)) |
|---|
| 1644 | do |
|---|
| 1645 | echo -ne "\a"; |
|---|
| 1646 | sleep 0.1 >&/dev/null; |
|---|
| 1647 | sleep 0,1 >&/dev/null; |
|---|
| 1648 | echo -ne "\a"; |
|---|
| 1649 | sleep 1; |
|---|
| 1650 | done; |
|---|
| 1651 | fi |
|---|
| 1652 | } |
|---|
| 1653 | ecvs_clean () |
|---|
| 1654 | { |
|---|
| 1655 | [[ -z $* ]] && set -- .; |
|---|
| 1656 | find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf; |
|---|
| 1657 | find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf |
|---|
| 1658 | } |
|---|
| 1659 | edos2unix () |
|---|
| 1660 | { |
|---|
| 1661 | echo "$@" | xargs sed -i 's/\r$//' |
|---|
| 1662 | } |
|---|
| 1663 | egetent () |
|---|
| 1664 | { |
|---|
| 1665 | case ${CHOST} in |
|---|
| 1666 | *-darwin9) |
|---|
| 1667 | local mytype=$1; |
|---|
| 1668 | [[ "passwd" == $mytype ]] && mytype="Users"; |
|---|
| 1669 | [[ "group" == $mytype ]] && mytype="Groups"; |
|---|
| 1670 | case "$2" in |
|---|
| 1671 | *[!0-9]*) |
|---|
| 1672 | dscl . -read /$mytype/$2 2> /dev/null | grep RecordName |
|---|
| 1673 | ;; |
|---|
| 1674 | *) |
|---|
| 1675 | local mykey="UniqueID"; |
|---|
| 1676 | [[ $mytype == "Groups" ]] && mykey="PrimaryGroupID"; |
|---|
| 1677 | dscl . -search /$mytype $mykey $2 2> /dev/null |
|---|
| 1678 | ;; |
|---|
| 1679 | esac |
|---|
| 1680 | ;; |
|---|
| 1681 | *-darwin*) |
|---|
| 1682 | case "$2" in |
|---|
| 1683 | *[!0-9]*) |
|---|
| 1684 | nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }" |
|---|
| 1685 | ;; |
|---|
| 1686 | *) |
|---|
| 1687 | nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }" |
|---|
| 1688 | ;; |
|---|
| 1689 | esac |
|---|
| 1690 | ;; |
|---|
| 1691 | *-freebsd* | *-dragonfly*) |
|---|
| 1692 | local opts action="user"; |
|---|
| 1693 | [[ $1 == "passwd" ]] || action="group"; |
|---|
| 1694 | if [[ $2 == [[:digit:]]* ]]; then |
|---|
| 1695 | [[ ${action} == "user" ]] && opts="-u" || opts="-g"; |
|---|
| 1696 | fi; |
|---|
| 1697 | pw show ${action} ${opts} "$2" -q |
|---|
| 1698 | ;; |
|---|
| 1699 | *-netbsd* | *-openbsd*) |
|---|
| 1700 | grep "$2:\*:" /etc/$1 |
|---|
| 1701 | ;; |
|---|
| 1702 | *) |
|---|
| 1703 | type -p nscd >&/dev/null && nscd -i "$1"; |
|---|
| 1704 | getent "$1" "$2" |
|---|
| 1705 | ;; |
|---|
| 1706 | esac |
|---|
| 1707 | } |
|---|
| 1708 | egethome () |
|---|
| 1709 | { |
|---|
| 1710 | ent=$(egetent passwd $1); |
|---|
| 1711 | case ${CHOST} in |
|---|
| 1712 | *-darwin* | *-freebsd* | *-dragonfly*) |
|---|
| 1713 | echo ${ent} | cut -d: -f9 |
|---|
| 1714 | ;; |
|---|
| 1715 | *) |
|---|
| 1716 | echo ${ent} | cut -d: -f6 |
|---|
| 1717 | ;; |
|---|
| 1718 | esac |
|---|
| 1719 | } |
|---|
| 1720 | egetshell () |
|---|
| 1721 | { |
|---|
| 1722 | ent=$(egetent passwd "$1"); |
|---|
| 1723 | case ${CHOST} in |
|---|
| 1724 | *-darwin* | *-freebsd* | *-dragonfly*) |
|---|
| 1725 | echo ${ent} | cut -d: -f10 |
|---|
| 1726 | ;; |
|---|
| 1727 | *) |
|---|
| 1728 | echo ${ent} cut -d: -f7 |
|---|
| 1729 | ;; |
|---|
| 1730 | esac |
|---|
| 1731 | } |
|---|
| 1732 | ejavac () |
|---|
| 1733 | { |
|---|
| 1734 | debug-print-function ${FUNCNAME} $*; |
|---|
| 1735 | java-pkg_init-compiler_; |
|---|
| 1736 | local compiler_executable; |
|---|
| 1737 | compiler_executable=$(java-pkg_get-javac); |
|---|
| 1738 | if [[ ${?} != 0 ]]; then |
|---|
| 1739 | eerror "There was a problem determining compiler: ${compiler_executable}"; |
|---|
| 1740 | die "get-javac failed"; |
|---|
| 1741 | fi; |
|---|
| 1742 | local javac_args; |
|---|
| 1743 | javac_args="$(java-pkg_javac-args)"; |
|---|
| 1744 | if [[ ${?} != 0 ]]; then |
|---|
| 1745 | eerror "There was a problem determining JAVACFLAGS: ${javac_args}"; |
|---|
| 1746 | die "java-pkg_javac-args failed"; |
|---|
| 1747 | fi; |
|---|
| 1748 | [[ -n ${JAVA_PKG_DEBUG} ]] && echo ${compiler_executable} ${javac_args} "${@}"; |
|---|
| 1749 | ${compiler_executable} ${javac_args} "${@}" || die "ejavac failed" |
|---|
| 1750 | } |
|---|
| 1751 | ejunit () |
|---|
| 1752 | { |
|---|
| 1753 | debug-print-function ${FUNCNAME} $*; |
|---|
| 1754 | local pkgs; |
|---|
| 1755 | if [[ -f ${JAVA_PKG_DEPEND_FILE} ]]; then |
|---|
| 1756 | for atom in $(cat ${JAVA_PKG_DEPEND_FILE} | tr : ' '); |
|---|
| 1757 | do |
|---|
| 1758 | pkgs=${pkgs},$(echo ${atom} | sed -re "s/^.*@//"); |
|---|
| 1759 | done; |
|---|
| 1760 | fi; |
|---|
| 1761 | local cp=$(java-pkg_getjars --with-dependencies junit${pkgs}); |
|---|
| 1762 | if [[ ${1} = -cp || ${1} = -classpath ]]; then |
|---|
| 1763 | cp="${2}:${cp}"; |
|---|
| 1764 | shift 2; |
|---|
| 1765 | else |
|---|
| 1766 | cp=".:${cp}"; |
|---|
| 1767 | fi; |
|---|
| 1768 | local runner=junit.textui.TestRunner; |
|---|
| 1769 | debug-print "Calling: java -cp \"${cp}\" -Djava.awt.headless=true ${runner} ${@}"; |
|---|
| 1770 | java -cp "${cp}" -Djava.awt.headless=true ${runner} "${@}" || die "Running junit failed" |
|---|
| 1771 | } |
|---|
| 1772 | elibtoolize () |
|---|
| 1773 | { |
|---|
| 1774 | local x=; |
|---|
| 1775 | local y=; |
|---|
| 1776 | local do_portage="no"; |
|---|
| 1777 | local do_reversedeps="no"; |
|---|
| 1778 | local do_only_patches="no"; |
|---|
| 1779 | local do_uclibc="yes"; |
|---|
| 1780 | local deptoremove=; |
|---|
| 1781 | local my_dirlist=; |
|---|
| 1782 | local elt_patches="install-sh ltmain portage relink max_cmd_len sed test tmp cross as-needed"; |
|---|
| 1783 | local start_dir=${PWD}; |
|---|
| 1784 | my_dirlist=$(ELT_find_ltmain_sh); |
|---|
| 1785 | for x in "$@"; |
|---|
| 1786 | do |
|---|
| 1787 | case "${x}" in |
|---|
| 1788 | "--portage") |
|---|
| 1789 | do_portage="yes" |
|---|
| 1790 | ;; |
|---|
| 1791 | "--reverse-deps") |
|---|
| 1792 | do_reversedeps="yes"; |
|---|
| 1793 | elt_patches="${elt_patches} fix-relink" |
|---|
| 1794 | ;; |
|---|
| 1795 | "--patch-only") |
|---|
| 1796 | do_only_patches="yes" |
|---|
| 1797 | ;; |
|---|
| 1798 | "^--remove-internal-dep="*) |
|---|
| 1799 | deptoremove=$(echo "${x}" | sed -e 's|--remove-internal-dep=||'); |
|---|
| 1800 | [[ -n ${deptoremove} ]] && elt_patches="${elt_patches} rem-int-dep" |
|---|
| 1801 | ;; |
|---|
| 1802 | "--shallow") |
|---|
| 1803 | if [[ -f ${S}/ltmain.sh ]]; then |
|---|
| 1804 | my_dirlist=${S}; |
|---|
| 1805 | else |
|---|
| 1806 | my_dirlist=; |
|---|
| 1807 | fi |
|---|
| 1808 | ;; |
|---|
| 1809 | "--no-uclibc") |
|---|
| 1810 | do_uclibc="no" |
|---|
| 1811 | ;; |
|---|
| 1812 | *) |
|---|
| 1813 | eerror "Invalid elibtoolize option: ${x}"; |
|---|
| 1814 | die "elibtoolize called with ${x} ??" |
|---|
| 1815 | ;; |
|---|
| 1816 | esac; |
|---|
| 1817 | done; |
|---|
| 1818 | [[ ${do_uclibc} == "yes" ]] && elt_patches="${elt_patches} uclibc-conf uclibc-ltconf"; |
|---|
| 1819 | [[ ${CHOST} == *"-freebsd"* ]] && elt_patches="${elt_patches} fbsd-conf fbsd-ltconf"; |
|---|
| 1820 | [[ ${CHOST} == *"-darwin"* ]] && elt_patches="${elt_patches} darwin-ltconf darwin-ltmain"; |
|---|
| 1821 | for x in ${my_dirlist}; |
|---|
| 1822 | do |
|---|
| 1823 | local tmp=$(echo "${x}" | sed -e "s|${WORKDIR}||"); |
|---|
| 1824 | export ELT_APPLIED_PATCHES=; |
|---|
| 1825 | export ELT_LTMAIN_SH="${x}/ltmain.sh"; |
|---|
| 1826 | [[ -f ${x}/.elibtoolized ]] && continue; |
|---|
| 1827 | cd ${x}; |
|---|
| 1828 | einfo "Running elibtoolize in: $(echo "/${tmp}" | sed -e 's|//|/|g; s|^/||')"; |
|---|
| 1829 | for y in ${elt_patches}; |
|---|
| 1830 | do |
|---|
| 1831 | local ret=0; |
|---|
| 1832 | case "${y}" in |
|---|
| 1833 | "portage") |
|---|
| 1834 | if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then |
|---|
| 1835 | ELT_walk_patches "${x}/ltmain.sh" "${y}"; |
|---|
| 1836 | ret=$?; |
|---|
| 1837 | fi |
|---|
| 1838 | ;; |
|---|
| 1839 | "rem-int-dep") |
|---|
| 1840 | ELT_walk_patches "${x}/ltmain.sh" "${y}" "${deptoremove}"; |
|---|
| 1841 | ret=$? |
|---|
| 1842 | ;; |
|---|
| 1843 | "fix-relink") |
|---|
| 1844 | if [[ -n $(grep 'inst_prefix_dir' "${x}/ltmain.sh") ]]; then |
|---|
| 1845 | ELT_walk_patches "${x}/ltmain.sh" "${y}"; |
|---|
| 1846 | ret=$?; |
|---|
| 1847 | fi |
|---|
| 1848 | ;; |
|---|
| 1849 | "max_cmd_len") |
|---|
| 1850 | if [[ -n $(grep 'max_cmd_len' "${x}/ltmain.sh") ]]; then |
|---|
| 1851 | ELT_walk_patches "${x}/ltmain.sh" "${y}"; |
|---|
| 1852 | ret=$?; |
|---|
| 1853 | fi |
|---|
| 1854 | ;; |
|---|
| 1855 | "as-needed") |
|---|
| 1856 | ELT_walk_patches "${x}/ltmain.sh" "${y}"; |
|---|
| 1857 | ret=$? |
|---|
| 1858 | ;; |
|---|
| 1859 | "uclibc-conf") |
|---|
| 1860 | if [[ -e ${x}/configure && -n $(grep 'Transform linux' "${x}/configure") ]]; then |
|---|
| 1861 | ELT_walk_patches "${x}/configure" "${y}"; |
|---|
| 1862 | ret=$?; |
|---|
| 1863 | else |
|---|
| 1864 | if [[ ! -e ${x}/configure && -e ${x}/../configure && -n $(grep 'Transform linux' "${x}/../configure") ]]; then |
|---|
| 1865 | ELT_walk_patches "${x}/../configure" "${y}"; |
|---|
| 1866 | ret=$?; |
|---|
| 1867 | fi; |
|---|
| 1868 | fi |
|---|
| 1869 | ;; |
|---|
| 1870 | "uclibc-ltconf") |
|---|
| 1871 | if [[ -s ${x}/ltconfig ]]; then |
|---|
| 1872 | ELT_walk_patches "${x}/ltconfig" "${y}"; |
|---|
| 1873 | ret=$?; |
|---|
| 1874 | fi |
|---|
| 1875 | ;; |
|---|
| 1876 | "fbsd-conf") |
|---|
| 1877 | if [[ -e ${x}/configure && -n $(grep 'version_type=freebsd-' "${x}/configure") ]]; then |
|---|
| 1878 | ELT_walk_patches "${x}/configure" "${y}"; |
|---|
| 1879 | ret=$?; |
|---|
| 1880 | else |
|---|
| 1881 | if [[ ! -e ${x}/configure && -e ${x}/../configure && -n $(grep 'version_type=freebsd-' "${x}/../configure") ]]; then |
|---|
| 1882 | ELT_walk_patches "${x}/../configure" "${y}"; |
|---|
| 1883 | ret=$?; |
|---|
| 1884 | fi; |
|---|
| 1885 | fi |
|---|
| 1886 | ;; |
|---|
| 1887 | "fbsd-ltconf") |
|---|
| 1888 | if [[ -s ${x}/ltconfig ]]; then |
|---|
| 1889 | ELT_walk_patches "${x}/ltconfig" "${y}"; |
|---|
| 1890 | ret=$?; |
|---|
| 1891 | fi |
|---|
| 1892 | ;; |
|---|
| 1893 | "darwin-ltconf") |
|---|
| 1894 | if [[ -s ${x}/ltconfig ]]; then |
|---|
| 1895 | ELT_walk_patches "${x}/ltconfig" "${y}"; |
|---|
| 1896 | ret=$?; |
|---|
| 1897 | fi |
|---|
| 1898 | ;; |
|---|
| 1899 | "install-sh") |
|---|
| 1900 | ELT_walk_patches "${x}/install-sh" "${y}"; |
|---|
| 1901 | ret=$? |
|---|
| 1902 | ;; |
|---|
| 1903 | "cross") |
|---|
| 1904 | if tc-is-cross-compiler; then |
|---|
| 1905 | ELT_walk_patches "${x}/ltmain.sh" "${y}"; |
|---|
| 1906 | ret=$?; |
|---|
| 1907 | fi |
|---|
| 1908 | ;; |
|---|
| 1909 | *) |
|---|
| 1910 | ELT_walk_patches "${x}/ltmain.sh" "${y}"; |
|---|
| 1911 | ret=$? |
|---|
| 1912 | ;; |
|---|
| 1913 | esac; |
|---|
| 1914 | if [[ ${ret} -ne 0 ]]; then |
|---|
| 1915 | case ${y} in |
|---|
| 1916 | "relink") |
|---|
| 1917 | local version=$(ELT_libtool_version "${x}/ltmain.sh"); |
|---|
| 1918 | if [[ -z $(grep 'inst_prefix_dir' "${x}/ltmain.sh") && $(VER_to_int "${version}") -ge $(VER_to_int "1.4.0") ]]; then |
|---|
| 1919 | ewarn " Could not apply relink.patch!"; |
|---|
| 1920 | fi |
|---|
| 1921 | ;; |
|---|
| 1922 | "portage") |
|---|
| 1923 | if [[ ${do_portage} == "yes" ]]; then |
|---|
| 1924 | if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then |
|---|
| 1925 | echo; |
|---|
| 1926 | eerror "Portage patch requested, but failed to apply!"; |
|---|
| 1927 | eerror "Please bug azarah or vapier to add proper patch."; |
|---|
| 1928 | die "Portage patch requested, but failed to apply!"; |
|---|
| 1929 | fi; |
|---|
| 1930 | else |
|---|
| 1931 | if [[ -n $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then |
|---|
| 1932 | :; |
|---|
| 1933 | else |
|---|
| 1934 | local version=$( eval $(grep -e '^[[:space:]]*VERSION=' "${x}/ltmain.sh"); echo "${VERSION}"); |
|---|
| 1935 | echo; |
|---|
| 1936 | eerror "Portage patch failed to apply (ltmain.sh version ${version})!"; |
|---|
| 1937 | eerror "Please bug azarah or vapier to add proper patch."; |
|---|
| 1938 | die "Portage patch failed to apply!"; |
|---|
| 1939 | fi; |
|---|
| 1940 | ELT_APPLIED_PATCHES="portage"; |
|---|
| 1941 | fi |
|---|
| 1942 | ;; |
|---|
| 1943 | "uclibc-"*) |
|---|
| 1944 | [[ ${CHOST} == *"-uclibc" ]] && ewarn " uClibc patch set '${y}' failed to apply!" |
|---|
| 1945 | ;; |
|---|
| 1946 | "fbsd-"*) |
|---|
| 1947 | if [[ ${CHOST} == *"-freebsd"* ]]; then |
|---|
| 1948 | if [[ -z $(grep 'Handle Gentoo/FreeBSD as it was Linux' "${x}/configure" "${x}/../configure" 2>/dev/null) ]]; then |
|---|
| 1949 | eerror " FreeBSD patch set '${y}' failed to apply!"; |
|---|
| 1950 | die "FreeBSD patch set '${y}' failed to apply!"; |
|---|
| 1951 | fi; |
|---|
| 1952 | fi |
|---|
| 1953 | ;; |
|---|
| 1954 | "darwin-"*) |
|---|
| 1955 | [[ ${CHOST} == *"-darwin"* ]] && ewarn " Darwin patch set '${y}' failed to apply!" |
|---|
| 1956 | ;; |
|---|
| 1957 | esac; |
|---|
| 1958 | fi; |
|---|
| 1959 | done; |
|---|
| 1960 | if [[ -z ${ELT_APPLIED_PATCHES} ]]; then |
|---|
| 1961 | if [[ ${do_portage} == "no" && ${do_reversedeps} == "no" && ${do_only_patches} == "no" && ${deptoremove} == "" ]]; then |
|---|
| 1962 | ewarn "Cannot apply any patches, please file a bug about this"; |
|---|
| 1963 | die; |
|---|
| 1964 | fi; |
|---|
| 1965 | fi; |
|---|
| 1966 | [[ -f ${x}/libtool ]] && rm -f "${x}/libtool"; |
|---|
| 1967 | >> "${x}/.elibtoolized"; |
|---|
| 1968 | done; |
|---|
| 1969 | cd "${start_dir}" |
|---|
| 1970 | } |
|---|
| 1971 | elisp-comp () |
|---|
| 1972 | { |
|---|
| 1973 | die "Function elisp-comp is not supported any more, see bug 235442" |
|---|
| 1974 | } |
|---|
| 1975 | elisp-compile () |
|---|
| 1976 | { |
|---|
| 1977 | ebegin "Compiling GNU Emacs Elisp files"; |
|---|
| 1978 | ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@"; |
|---|
| 1979 | eend $? "elisp-compile: batch-byte-compile failed" |
|---|
| 1980 | } |
|---|
| 1981 | elisp-emacs-version () |
|---|
| 1982 | { |
|---|
| 1983 | echo "(princ emacs-version)" > "${T}"/emacs-version.el; |
|---|
| 1984 | ${EMACS} ${EMACSFLAGS} -l "${T}"/emacs-version.el; |
|---|
| 1985 | rm -f "${T}"/emacs-version.el |
|---|
| 1986 | } |
|---|
| 1987 | elisp-install () |
|---|
| 1988 | { |
|---|
| 1989 | local subdir="$1"; |
|---|
| 1990 | shift; |
|---|
| 1991 | ebegin "Installing Elisp files for GNU Emacs support"; |
|---|
| 1992 | ( insinto "${SITELISP}/${subdir}"; |
|---|
| 1993 | doins "$@" ); |
|---|
| 1994 | eend $? "elisp-install: doins failed" |
|---|
| 1995 | } |
|---|
| 1996 | elisp-make-autoload-file () |
|---|
| 1997 | { |
|---|
| 1998 | local f="${1:-${PN}-autoloads.el}"; |
|---|
| 1999 | shift; |
|---|
| 2000 | ebegin "Generating autoload file for GNU Emacs"; |
|---|
| 2001 | sed 's/^FF/\f/' > "${f}" <<-EOF |
|---|
| 2002 | ;;; ${f##*/} --- autoloads for ${P} |
|---|
| 2003 | |
|---|
| 2004 | ;;; Commentary: |
|---|
| 2005 | ;; Automatically generated by elisp-common.eclass |
|---|
| 2006 | ;; DO NOT EDIT THIS FILE |
|---|
| 2007 | |
|---|
| 2008 | ;;; Code: |
|---|
| 2009 | FF |
|---|
| 2010 | ;; Local Variables: |
|---|
| 2011 | ;; version-control: never |
|---|
| 2012 | ;; no-byte-compile: t |
|---|
| 2013 | ;; no-update-autoloads: t |
|---|
| 2014 | ;; End: |
|---|
| 2015 | ;;; ${f##*/} ends here |
|---|
| 2016 | EOF |
|---|
| 2017 | |
|---|
| 2018 | ${EMACS} ${EMACSFLAGS} --eval "(setq make-backup-files nil)" --eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" -f batch-update-autoloads "${@-.}"; |
|---|
| 2019 | eend $? "elisp-make-autoload-file: batch-update-autoloads failed" |
|---|
| 2020 | } |
|---|
| 2021 | elisp-site-file-install () |
|---|
| 2022 | { |
|---|
| 2023 | local sf="${1##*/}" my_pn="${2:-${PN}}" ret; |
|---|
| 2024 | local header=";;; ${PN} site-lisp configuration"; |
|---|
| 2025 | [[ ${sf} == [0-9][0-9]*-gentoo*.el ]] || ewarn "elisp-site-file-install: bad name of site-init file"; |
|---|
| 2026 | sf="${T}/${sf/%-gentoo*.el/-gentoo.el}"; |
|---|
| 2027 | ebegin "Installing site initialisation file for GNU Emacs"; |
|---|
| 2028 | [[ $1 = ${sf} ]] || cp "$1" "${sf}"; |
|---|
| 2029 | sed -i -e "1{:x;/^\$/{n;bx;};/^;.*${PN}/I!s:^:${header}\n\n:;1s:^:\n:;}" -e "s:@SITELISP@:${SITELISP}/${my_pn}:g" -e "s:@SITEETC@:${SITEETC}/${my_pn}:g;\$q" "${sf}"; |
|---|
| 2030 | ( insinto "${SITELISP}/site-gentoo.d"; |
|---|
| 2031 | doins "${sf}" ); |
|---|
| 2032 | ret=$?; |
|---|
| 2033 | rm -f "${sf}"; |
|---|
| 2034 | eend ${ret} "elisp-site-file-install: doins failed" |
|---|
| 2035 | } |
|---|
| 2036 | elisp-site-regen () |
|---|
| 2037 | { |
|---|
| 2038 | local i sf line obsolete; |
|---|
| 2039 | local -a sflist; |
|---|
| 2040 | if [ ! -d "${ROOT}${SITELISP}" ]; then |
|---|
| 2041 | eerror "elisp-site-regen: Directory ${SITELISP} does not exist"; |
|---|
| 2042 | return 1; |
|---|
| 2043 | fi; |
|---|
| 2044 | if [ ! -d "${T}" ]; then |
|---|
| 2045 | eerror "elisp-site-regen: Temporary directory ${T} does not exist"; |
|---|
| 2046 | return 1; |
|---|
| 2047 | fi; |
|---|
| 2048 | einfon "Regenerating site-gentoo.el for GNU Emacs (${EBUILD_PHASE}) ..."; |
|---|
| 2049 | rm -f "${ROOT}${SITELISP}"/00site-gentoo.el; |
|---|
| 2050 | local old_shopts=$(shopt -p nullglob); |
|---|
| 2051 | shopt -s nullglob; |
|---|
| 2052 | for sf in "${ROOT}${SITELISP}"/[0-9][0-9]*-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.d/[0-9][0-9]*.el; |
|---|
| 2053 | do |
|---|
| 2054 | [ -r "${sf}" ] || continue; |
|---|
| 2055 | for ((i=${#sflist[@]}; i>0; i--)) |
|---|
| 2056 | do |
|---|
| 2057 | [[ ${sf##*/} < ${sflist[i-1]##*/} ]] || break; |
|---|
| 2058 | sflist[i]=${sflist[i-1]}; |
|---|
| 2059 | done; |
|---|
| 2060 | sflist[i]=${sf}; |
|---|
| 2061 | [ "${sf%/*}" = "${ROOT}${SITELISP}" ] && obsolete=t; |
|---|
| 2062 | done; |
|---|
| 2063 | eval "${old_shopts}"; |
|---|
| 2064 | cat > "${T}"/site-gentoo.el <<-EOF |
|---|
| 2065 | ;;; site-gentoo.el --- site initialisation for Gentoo-installed packages |
|---|
| 2066 | |
|---|
| 2067 | ;;; Commentary: |
|---|
| 2068 | ;; Automatically generated by elisp-common.eclass |
|---|
| 2069 | ;; DO NOT EDIT THIS FILE |
|---|
| 2070 | |
|---|
| 2071 | ;;; Code: |
|---|
| 2072 | EOF |
|---|
| 2073 | |
|---|
| 2074 | sed '$q' "${sflist[@]}" < /dev/null >> "${T}"/site-gentoo.el; |
|---|
| 2075 | cat >> "${T}"/site-gentoo.el <<-EOF |
|---|
| 2076 | |
|---|
| 2077 | (provide 'site-gentoo) |
|---|
| 2078 | |
|---|
| 2079 | ;; Local Variables: |
|---|
| 2080 | ;; no-byte-compile: t |
|---|
| 2081 | ;; End: |
|---|
| 2082 | ;;; site-gentoo.el ends here |
|---|
| 2083 | EOF |
|---|
| 2084 | |
|---|
| 2085 | if cmp -s "${ROOT}${SITELISP}"/site-gentoo.el "${T}"/site-gentoo.el; then |
|---|
| 2086 | echo " no changes."; |
|---|
| 2087 | else |
|---|
| 2088 | mv "${T}"/site-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.el; |
|---|
| 2089 | echo; |
|---|
| 2090 | einfo "... ${#sflist[@]} site initialisation file(s) included."; |
|---|
| 2091 | fi; |
|---|
| 2092 | if [ "${obsolete}" ]; then |
|---|
| 2093 | echo; |
|---|
| 2094 | while read line; do |
|---|
| 2095 | ewarn "${line}"; |
|---|
| 2096 | done <<-EOF |
|---|
| 2097 | Site-initialisation files of Emacs packages are now installed in |
|---|
| 2098 | /usr/share/emacs/site-lisp/site-gentoo.d/. We strongly recommend |
|---|
| 2099 | that you use app-admin/emacs-updater to rebuild the installed |
|---|
| 2100 | Emacs packages. |
|---|
| 2101 | EOF |
|---|
| 2102 | |
|---|
| 2103 | fi |
|---|
| 2104 | rm -f "${T}"/site-gentoo.el; |
|---|
| 2105 | return 0 |
|---|
| 2106 | } |
|---|
| 2107 | emktemp () |
|---|
| 2108 | { |
|---|
| 2109 | local exe="touch"; |
|---|
| 2110 | [[ $1 == -d ]] && exe="mkdir" && shift; |
|---|
| 2111 | local topdir=$1; |
|---|
| 2112 | if [[ -z ${topdir} ]]; then |
|---|
| 2113 | [[ -z ${T} ]] && topdir="/tmp" || topdir=${T}; |
|---|
| 2114 | fi; |
|---|
| 2115 | if ! type -P mktemp > /dev/null; then |
|---|
| 2116 | local tmp=/; |
|---|
| 2117 | while [[ -e ${tmp} ]]; do |
|---|
| 2118 | tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM}; |
|---|
| 2119 | done; |
|---|
| 2120 | ${exe} "${tmp}" || ${exe} -p "${tmp}"; |
|---|
| 2121 | echo "${tmp}"; |
|---|
| 2122 | else |
|---|
| 2123 | if [[ ${exe} == "touch" ]]; then |
|---|
| 2124 | TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX; |
|---|
| 2125 | else |
|---|
| 2126 | TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX; |
|---|
| 2127 | fi; |
|---|
| 2128 | fi |
|---|
| 2129 | } |
|---|
| 2130 | enewgroup () |
|---|
| 2131 | { |
|---|
| 2132 | case ${EBUILD_PHASE} in |
|---|
| 2133 | unpack | compile | test | install) |
|---|
| 2134 | eerror "'enewgroup()' called from '${EBUILD_PHASE}()' which is not a pkg_* function."; |
|---|
| 2135 | eerror "Package fails at QA and at life. Please file a bug."; |
|---|
| 2136 | die "Bad package! enewgroup is only for use in pkg_* functions!" |
|---|
| 2137 | ;; |
|---|
| 2138 | esac; |
|---|
| 2139 | local egroup="$1"; |
|---|
| 2140 | shift; |
|---|
| 2141 | if [ -z "${egroup}" ]; then |
|---|
| 2142 | eerror "No group specified !"; |
|---|
| 2143 | die "Cannot call enewgroup without a group"; |
|---|
| 2144 | fi; |
|---|
| 2145 | if [[ -n $(egetent group "${egroup}") ]]; then |
|---|
| 2146 | return 0; |
|---|
| 2147 | fi; |
|---|
| 2148 | einfo "Adding group '${egroup}' to your system ..."; |
|---|
| 2149 | local opts=; |
|---|
| 2150 | local egid="$1"; |
|---|
| 2151 | shift; |
|---|
| 2152 | if [ ! -z "${egid}" ]; then |
|---|
| 2153 | if [ "${egid}" -gt 0 ]; then |
|---|
| 2154 | if [ -z "`egetent group ${egid}`" ]; then |
|---|
| 2155 | if [[ "${CHOST}" == *-darwin* ]]; then |
|---|
| 2156 | opts="${opts} ${egid}"; |
|---|
| 2157 | else |
|---|
| 2158 | opts="${opts} -g ${egid}"; |
|---|
| 2159 | fi; |
|---|
| 2160 | else |
|---|
| 2161 | egid="next available; requested gid taken"; |
|---|
| 2162 | fi; |
|---|
| 2163 | else |
|---|
| 2164 | eerror "Groupid given but is not greater than 0 !"; |
|---|
| 2165 | die "${egid} is not a valid GID"; |
|---|
| 2166 | fi; |
|---|
| 2167 | else |
|---|
| 2168 | egid="next available"; |
|---|
| 2169 | fi; |
|---|
| 2170 | einfo " - Groupid: ${egid}"; |
|---|
| 2171 | local eextra="$@"; |
|---|
| 2172 | opts="${opts} ${eextra}"; |
|---|
| 2173 | local oldsandbox="${SANDBOX_ON}"; |
|---|
| 2174 | export SANDBOX_ON="0"; |
|---|
| 2175 | case ${CHOST} in |
|---|
| 2176 | *-darwin*) |
|---|
| 2177 | if [ ! -z "${eextra}" ]; then |
|---|
| 2178 | einfo "Extra options are not supported on Darwin/OS X yet"; |
|---|
| 2179 | einfo "Please report the ebuild along with the info below"; |
|---|
| 2180 | einfo "eextra: ${eextra}"; |
|---|
| 2181 | die "Required function missing"; |
|---|
| 2182 | fi; |
|---|
| 2183 | case ${egid} in |
|---|
| 2184 | *[!0-9]*) |
|---|
| 2185 | for ((egid = 101; egid <= 999; egid++)) |
|---|
| 2186 | do |
|---|
| 2187 | [[ -z $(egetent group ${egid}) ]] && break; |
|---|
| 2188 | done |
|---|
| 2189 | ;; |
|---|
| 2190 | esac; |
|---|
| 2191 | dscl . create /groups/${egroup} gid ${egid}; |
|---|
| 2192 | dscl . create /groups/${egroup} passwd '*' |
|---|
| 2193 | ;; |
|---|
| 2194 | *-freebsd* | *-dragonfly*) |
|---|
| 2195 | case ${egid} in |
|---|
| 2196 | *[!0-9]*) |
|---|
| 2197 | for ((egid = 101; egid <= 999; egid++)) |
|---|
| 2198 | do |
|---|
| 2199 | [[ -z $(egetent group ${egid}) ]] && break; |
|---|
| 2200 | done |
|---|
| 2201 | ;; |
|---|
| 2202 | esac; |
|---|
| 2203 | pw groupadd ${egroup} -g ${egid} || die "enewgroup failed" |
|---|
| 2204 | ;; |
|---|
| 2205 | *-netbsd*) |
|---|
| 2206 | case ${egid} in |
|---|
| 2207 | *[!0-9]*) |
|---|
| 2208 | for ((egid = 101; egid <= 999; egid++)) |
|---|
| 2209 | do |
|---|
| 2210 | [[ -z $(egetent group ${egid}) ]] && break; |
|---|
| 2211 | done |
|---|
| 2212 | ;; |
|---|
| 2213 | esac; |
|---|
| 2214 | groupadd -g ${egid} ${egroup} || die "enewgroup failed" |
|---|
| 2215 | ;; |
|---|
| 2216 | *) |
|---|
| 2217 | groupadd ${opts} ${egroup} || die "enewgroup failed" |
|---|
| 2218 | ;; |
|---|
| 2219 | esac; |
|---|
| 2220 | export SANDBOX_ON="${oldsandbox}" |
|---|
| 2221 | } |
|---|
| 2222 | enewuser () |
|---|
| 2223 | { |
|---|
| 2224 | case ${EBUILD_PHASE} in |
|---|
| 2225 | unpack | compile | test | install) |
|---|
| 2226 | eerror "'enewuser()' called from '${EBUILD_PHASE}()' which is not a pkg_* function."; |
|---|
| 2227 | eerror "Package fails at QA and at life. Please file a bug."; |
|---|
| 2228 | die "Bad package! enewuser is only for use in pkg_* functions!" |
|---|
| 2229 | ;; |
|---|
| 2230 | esac; |
|---|
| 2231 | local euser=$1; |
|---|
| 2232 | shift; |
|---|
| 2233 | if [[ -z ${euser} ]]; then |
|---|
| 2234 | eerror "No username specified !"; |
|---|
| 2235 | die "Cannot call enewuser without a username"; |
|---|
| 2236 | fi; |
|---|
| 2237 | if [[ -n $(egetent passwd "${euser}") ]]; then |
|---|
| 2238 | return 0; |
|---|
| 2239 | fi; |
|---|
| 2240 | einfo "Adding user '${euser}' to your system ..."; |
|---|
| 2241 | local opts=; |
|---|
| 2242 | local euid=$1; |
|---|
| 2243 | shift; |
|---|
| 2244 | if [[ -n ${euid} && ${euid} != -1 ]]; then |
|---|
| 2245 | if [[ ${euid} -gt 0 ]]; then |
|---|
| 2246 | if [[ -n $(egetent passwd ${euid}) ]]; then |
|---|
| 2247 | euid="next"; |
|---|
| 2248 | fi; |
|---|
| 2249 | else |
|---|
| 2250 | eerror "Userid given but is not greater than 0 !"; |
|---|
| 2251 | die "${euid} is not a valid UID"; |
|---|
| 2252 | fi; |
|---|
| 2253 | else |
|---|
| 2254 | euid="next"; |
|---|
| 2255 | fi; |
|---|
| 2256 | if [[ ${euid} == "next" ]]; then |
|---|
| 2257 | for ((euid = 101; euid <= 999; euid++)) |
|---|
| 2258 | do |
|---|
| 2259 | [[ -z $(egetent passwd ${euid}) ]] && break; |
|---|
| 2260 | done; |
|---|
| 2261 | fi; |
|---|
| 2262 | opts="${opts} -u ${euid}"; |
|---|
| 2263 | einfo " - Userid: ${euid}"; |
|---|
| 2264 | local eshell=$1; |
|---|
| 2265 | shift; |
|---|
| 2266 | if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]]; then |
|---|
| 2267 | if [[ ! -e ${ROOT}${eshell} ]]; then |
|---|
| 2268 | eerror "A shell was specified but it does not exist !"; |
|---|
| 2269 | die "${eshell} does not exist in ${ROOT}"; |
|---|
| 2270 | fi; |
|---|
| 2271 | if [[ ${eshell} == */false || ${eshell} == */nologin ]]; then |
|---|
| 2272 | eerror "Do not specify ${eshell} yourself, use -1"; |
|---|
| 2273 | die "Pass '-1' as the shell parameter"; |
|---|
| 2274 | fi; |
|---|
| 2275 | else |
|---|
| 2276 | for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null; |
|---|
| 2277 | do |
|---|
| 2278 | [[ -x ${ROOT}${shell} ]] && break; |
|---|
| 2279 | done; |
|---|
| 2280 | if [[ ${shell} == "/dev/null" ]]; then |
|---|
| 2281 | eerror "Unable to identify the shell to use, proceeding with userland default."; |
|---|
| 2282 | case ${USERLAND} in |
|---|
| 2283 | GNU) |
|---|
| 2284 | shell="/bin/false" |
|---|
| 2285 | ;; |
|---|
| 2286 | BSD) |
|---|
| 2287 | shell="/sbin/nologin" |
|---|
| 2288 | ;; |
|---|
| 2289 | Darwin) |
|---|
| 2290 | shell="/usr/sbin/nologin" |
|---|
| 2291 | ;; |
|---|
| 2292 | *) |
|---|
| 2293 | die "Unable to identify the default shell for userland ${USERLAND}" |
|---|
| 2294 | ;; |
|---|
| 2295 | esac; |
|---|
| 2296 | fi; |
|---|
| 2297 | eshell=${shell}; |
|---|
| 2298 | fi; |
|---|
| 2299 | einfo " - Shell: ${eshell}"; |
|---|
| 2300 | opts="${opts} -s ${eshell}"; |
|---|
| 2301 | local ehome=$1; |
|---|
| 2302 | shift; |
|---|
| 2303 | if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]]; then |
|---|
| 2304 | ehome="/dev/null"; |
|---|
| 2305 | fi; |
|---|
| 2306 | einfo " - Home: ${ehome}"; |
|---|
| 2307 | opts="${opts} -d ${ehome}"; |
|---|
| 2308 | local egroups=$1; |
|---|
| 2309 | shift; |
|---|
| 2310 | if [[ ! -z ${egroups} ]]; then |
|---|
| 2311 | local oldifs=${IFS}; |
|---|
| 2312 | local defgroup="" exgroups=""; |
|---|
| 2313 | export IFS=","; |
|---|
| 2314 | for g in ${egroups}; |
|---|
| 2315 | do |
|---|
| 2316 | export IFS=${oldifs}; |
|---|
| 2317 | if [[ -z $(egetent group "${g}") ]]; then |
|---|
| 2318 | eerror "You must add group ${g} to the system first"; |
|---|
| 2319 | die "${g} is not a valid GID"; |
|---|
| 2320 | fi; |
|---|
| 2321 | if [[ -z ${defgroup} ]]; then |
|---|
| 2322 | defgroup=${g}; |
|---|
| 2323 | else |
|---|
| 2324 | exgroups="${exgroups},${g}"; |
|---|
| 2325 | fi; |
|---|
| 2326 | export IFS=","; |
|---|
| 2327 | done; |
|---|
| 2328 | export IFS=${oldifs}; |
|---|
| 2329 | opts="${opts} -g ${defgroup}"; |
|---|
| 2330 | if [[ ! -z ${exgroups} ]]; then |
|---|
| 2331 | opts="${opts} -G ${exgroups:1}"; |
|---|
| 2332 | fi; |
|---|
| 2333 | else |
|---|
| 2334 | egroups="(none)"; |
|---|
| 2335 | fi; |
|---|
| 2336 | einfo " - Groups: ${egroups}"; |
|---|
| 2337 | local oldsandbox=${SANDBOX_ON}; |
|---|
| 2338 | export SANDBOX_ON="0"; |
|---|
| 2339 | case ${CHOST} in |
|---|
| 2340 | *-darwin*) |
|---|
| 2341 | if [[ -z $@ ]]; then |
|---|
| 2342 | dscl . create /users/${euser} uid ${euid}; |
|---|
| 2343 | dscl . create /users/${euser} shell ${eshell}; |
|---|
| 2344 | dscl . create /users/${euser} home ${ehome}; |
|---|
| 2345 | dscl . create /users/${euser} realname "added by portage for ${PN}"; |
|---|
| 2346 | local oldifs=${IFS}; |
|---|
| 2347 | export IFS=","; |
|---|
| 2348 | for g in ${egroups}; |
|---|
| 2349 | do |
|---|
| 2350 | dscl . merge /groups/${g} users ${euser}; |
|---|
| 2351 | done; |
|---|
| 2352 | export IFS=${oldifs}; |
|---|
| 2353 | else |
|---|
| 2354 | einfo "Extra options are not supported on Darwin yet"; |
|---|
| 2355 | einfo "Please report the ebuild along with the info below"; |
|---|
| 2356 | einfo "eextra: $@"; |
|---|
| 2357 | die "Required function missing"; |
|---|
| 2358 | fi |
|---|
| 2359 | ;; |
|---|
| 2360 | *-freebsd* | *-dragonfly*) |
|---|
| 2361 | if [[ -z $@ ]]; then |
|---|
| 2362 | pw useradd ${euser} ${opts} -c "added by portage for ${PN}" die "enewuser failed"; |
|---|
| 2363 | else |
|---|
| 2364 | einfo " - Extra: $@"; |
|---|
| 2365 | pw useradd ${euser} ${opts} "$@" || die "enewuser failed"; |
|---|
| 2366 | fi |
|---|
| 2367 | ;; |
|---|
| 2368 | *-netbsd*) |
|---|
| 2369 | if [[ -z $@ ]]; then |
|---|
| 2370 | useradd ${opts} ${euser} || die "enewuser failed"; |
|---|
| 2371 | else |
|---|
| 2372 | einfo " - Extra: $@"; |
|---|
| 2373 | useradd ${opts} ${euser} "$@" || die "enewuser failed"; |
|---|
| 2374 | fi |
|---|
| 2375 | ;; |
|---|
| 2376 | *-openbsd*) |
|---|
| 2377 | if [[ -z $@ ]]; then |
|---|
| 2378 | useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} || die "enewuser failed"; |
|---|
| 2379 | else |
|---|
| 2380 | einfo " - Extra: $@"; |
|---|
| 2381 | useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} "$@" || die "enewuser failed"; |
|---|
| 2382 | fi |
|---|
| 2383 | ;; |
|---|
| 2384 | *) |
|---|
| 2385 | if [[ -z $@ ]]; then |
|---|
| 2386 | useradd ${opts} ${euser} -c "added by portage for ${PN}" || die "enewuser failed"; |
|---|
| 2387 | else |
|---|
| 2388 | einfo " - Extra: $@"; |
|---|
| 2389 | useradd ${opts} ${euser} "$@" || die "enewuser failed"; |
|---|
| 2390 | fi |
|---|
| 2391 | ;; |
|---|
| 2392 | esac; |
|---|
| 2393 | if [[ ! -e ${ROOT}/${ehome} ]]; then |
|---|
| 2394 | einfo " - Creating ${ehome} in ${ROOT}"; |
|---|
| 2395 | mkdir -p "${ROOT}/${ehome}"; |
|---|
| 2396 | chown ${euser} "${ROOT}/${ehome}"; |
|---|
| 2397 | chmod 755 "${ROOT}/${ehome}"; |
|---|
| 2398 | fi; |
|---|
| 2399 | export SANDBOX_ON=${oldsandbox} |
|---|
| 2400 | } |
|---|
| 2401 | epatch () |
|---|
| 2402 | { |
|---|
| 2403 | function _epatch_draw_line () |
|---|
| 2404 | { |
|---|
| 2405 | [[ -z $1 ]] && set "$(printf "%65s" '')"; |
|---|
| 2406 | echo "${1//?/=}" |
|---|
| 2407 | }; |
|---|
| 2408 | function _epatch_assert () |
|---|
| 2409 | { |
|---|
| 2410 | local _pipestatus=${PIPESTATUS[*]}; |
|---|
| 2411 | [[ ${_pipestatus// /} -eq 0 ]] |
|---|
| 2412 | }; |
|---|
| 2413 | local PIPE_CMD=""; |
|---|
| 2414 | local STDERR_TARGET="${T}/$$.out"; |
|---|
| 2415 | local PATCH_TARGET="${T}/$$.patch"; |
|---|
| 2416 | local PATCH_SUFFIX=""; |
|---|
| 2417 | local SINGLE_PATCH="no"; |
|---|
| 2418 | local x=""; |
|---|
| 2419 | unset P4CONFIG P4PORT P4USER; |
|---|
| 2420 | if [ "$#" -gt 1 ]; then |
|---|
| 2421 | local m=""; |
|---|
| 2422 | for m in "$@"; |
|---|
| 2423 | do |
|---|
| 2424 | epatch "${m}"; |
|---|
| 2425 | done; |
|---|
| 2426 | return 0; |
|---|
| 2427 | fi; |
|---|
| 2428 | if [ -n "$1" -a -f "$1" ]; then |
|---|
| 2429 | SINGLE_PATCH="yes"; |
|---|
| 2430 | local EPATCH_SOURCE="$1"; |
|---|
| 2431 | local EPATCH_SUFFIX="${1##*\.}"; |
|---|
| 2432 | else |
|---|
| 2433 | if [ -n "$1" -a -d "$1" ]; then |
|---|
| 2434 | if [ "${EPATCH_FORCE}" = "yes" ] && [ -z "${EPATCH_SUFFIX}" ]; then |
|---|
| 2435 | local EPATCH_SOURCE="$1/*"; |
|---|
| 2436 | else |
|---|
| 2437 | local EPATCH_SOURCE="$1/*.${EPATCH_SUFFIX}"; |
|---|
| 2438 | fi; |
|---|
| 2439 | else |
|---|
| 2440 | if [[ ! -d ${EPATCH_SOURCE} ]] || [[ -n $1 ]]; then |
|---|
| 2441 | if [ -n "$1" -a "${EPATCH_SOURCE}" = "${WORKDIR}/patch" ]; then |
|---|
| 2442 | EPATCH_SOURCE="$1"; |
|---|
| 2443 | fi; |
|---|
| 2444 | echo; |
|---|
| 2445 | eerror "Cannot find \$EPATCH_SOURCE! Value for \$EPATCH_SOURCE is:"; |
|---|
| 2446 | eerror; |
|---|
| 2447 | eerror " ${EPATCH_SOURCE}"; |
|---|
| 2448 | eerror " ( ${EPATCH_SOURCE##*/} )"; |
|---|
| 2449 | echo; |
|---|
| 2450 | die "Cannot find \$EPATCH_SOURCE!"; |
|---|
| 2451 | fi; |
|---|
| 2452 | local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}"; |
|---|
| 2453 | fi; |
|---|
| 2454 | fi; |
|---|
| 2455 | case ${EPATCH_SUFFIX##*\.} in |
|---|
| 2456 | xz) |
|---|
| 2457 | PIPE_CMD="xz -dc"; |
|---|
| 2458 | PATCH_SUFFIX="xz" |
|---|
| 2459 | ;; |
|---|
| 2460 | lzma) |
|---|
| 2461 | PIPE_CMD="lzma -dc"; |
|---|
| 2462 | PATCH_SUFFIX="lzma" |
|---|
| 2463 | ;; |
|---|
| 2464 | bz2) |
|---|
| 2465 | PIPE_CMD="bzip2 -dc"; |
|---|
| 2466 | PATCH_SUFFIX="bz2" |
|---|
| 2467 | ;; |
|---|
| 2468 | gz | Z | z) |
|---|
| 2469 | PIPE_CMD="gzip -dc"; |
|---|
| 2470 | PATCH_SUFFIX="gz" |
|---|
| 2471 | ;; |
|---|
| 2472 | ZIP | zip) |
|---|
| 2473 | PIPE_CMD="unzip -p"; |
|---|
| 2474 | PATCH_SUFFIX="zip" |
|---|
| 2475 | ;; |
|---|
| 2476 | *) |
|---|
| 2477 | PIPE_CMD="cat"; |
|---|
| 2478 | PATCH_SUFFIX="patch" |
|---|
| 2479 | ;; |
|---|
| 2480 | esac; |
|---|
| 2481 | if [ "${SINGLE_PATCH}" = "no" ]; then |
|---|
| 2482 | einfo "${EPATCH_MULTI_MSG}"; |
|---|
| 2483 | fi; |
|---|
| 2484 | for x in ${EPATCH_SOURCE}; |
|---|
| 2485 | do |
|---|
| 2486 | if [ -f ${x} ] && ( [ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "${x/_${ARCH}_}" != "${x}" ] || [ "${EPATCH_FORCE}" = "yes" ] ); then |
|---|
| 2487 | local count=0; |
|---|
| 2488 | local popts="${EPATCH_OPTS}"; |
|---|
| 2489 | local patchname=${x##*/}; |
|---|
| 2490 | if [ -n "${EPATCH_EXCLUDE}" ]; then |
|---|
| 2491 | if [ "${EPATCH_EXCLUDE/${patchname}}" != "${EPATCH_EXCLUDE}" ]; then |
|---|
| 2492 | continue; |
|---|
| 2493 | fi; |
|---|
| 2494 | fi; |
|---|
| 2495 | if [ "${SINGLE_PATCH}" = "yes" ]; then |
|---|
| 2496 | if [ -n "${EPATCH_SINGLE_MSG}" ]; then |
|---|
| 2497 | einfo "${EPATCH_SINGLE_MSG}"; |
|---|
| 2498 | else |
|---|
| 2499 | einfo "Applying ${patchname} ..."; |
|---|
| 2500 | fi; |
|---|
| 2501 | else |
|---|
| 2502 | einfo " ${patchname} ..."; |
|---|
| 2503 | fi; |
|---|
| 2504 | echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2505 | echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2506 | if [[ ${PATCH_SUFFIX} != "patch" ]]; then |
|---|
| 2507 | echo -n "PIPE_COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2508 | echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2509 | if ! ( ${PIPE_CMD} ${x} > ${PATCH_TARGET} ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then |
|---|
| 2510 | echo; |
|---|
| 2511 | eerror "Could not extract patch!"; |
|---|
| 2512 | count=5; |
|---|
| 2513 | break; |
|---|
| 2514 | fi; |
|---|
| 2515 | else |
|---|
| 2516 | PATCH_TARGET="${x}"; |
|---|
| 2517 | fi; |
|---|
| 2518 | local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }'); |
|---|
| 2519 | if [[ -n ${abs_paths} ]]; then |
|---|
| 2520 | count=1; |
|---|
| 2521 | echo "NOTE: skipping -p0 due to absolute paths in patch:" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2522 | echo "${abs_paths}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2523 | fi; |
|---|
| 2524 | while [ "${count}" -lt 5 ]; do |
|---|
| 2525 | _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2526 | echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2527 | echo -n "PATCH COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2528 | echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2529 | echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2530 | _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2531 | if ( cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f; |
|---|
| 2532 | _epatch_assert ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then |
|---|
| 2533 | _epatch_draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real; |
|---|
| 2534 | echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real; |
|---|
| 2535 | echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real; |
|---|
| 2536 | echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real; |
|---|
| 2537 | _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real; |
|---|
| 2538 | cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1; |
|---|
| 2539 | _epatch_assert; |
|---|
| 2540 | if [ "$?" -ne 0 ]; then |
|---|
| 2541 | cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2542 | echo; |
|---|
| 2543 | eerror "A dry-run of patch command succeeded, but actually"; |
|---|
| 2544 | eerror "applying the patch failed!"; |
|---|
| 2545 | count=5; |
|---|
| 2546 | fi; |
|---|
| 2547 | rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real; |
|---|
| 2548 | break; |
|---|
| 2549 | fi; |
|---|
| 2550 | count=$((count + 1)); |
|---|
| 2551 | done; |
|---|
| 2552 | if [ "${PATCH_SUFFIX}" != "patch" ]; then |
|---|
| 2553 | rm -f ${PATCH_TARGET}; |
|---|
| 2554 | fi; |
|---|
| 2555 | if [ "${count}" -eq 5 ]; then |
|---|
| 2556 | echo; |
|---|
| 2557 | eerror "Failed Patch: ${patchname} !"; |
|---|
| 2558 | eerror " ( ${PATCH_TARGET} )"; |
|---|
| 2559 | eerror; |
|---|
| 2560 | eerror "Include in your bugreport the contents of:"; |
|---|
| 2561 | eerror; |
|---|
| 2562 | eerror " ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}"; |
|---|
| 2563 | echo; |
|---|
| 2564 | die "Failed Patch: ${patchname}!"; |
|---|
| 2565 | fi; |
|---|
| 2566 | rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}; |
|---|
| 2567 | eend 0; |
|---|
| 2568 | fi; |
|---|
| 2569 | done; |
|---|
| 2570 | if [ "${SINGLE_PATCH}" = "no" ]; then |
|---|
| 2571 | einfo "Done with patching"; |
|---|
| 2572 | fi |
|---|
| 2573 | } |
|---|
| 2574 | epause () |
|---|
| 2575 | { |
|---|
| 2576 | [[ -z ${EPAUSE_IGNORE} ]] && sleep ${1:-5} |
|---|
| 2577 | } |
|---|
| 2578 | epunt_cxx () |
|---|
| 2579 | { |
|---|
| 2580 | local dir=$1; |
|---|
| 2581 | [[ -z ${dir} ]] && dir=${S}; |
|---|
| 2582 | ebegin "Removing useless C++ checks"; |
|---|
| 2583 | local f; |
|---|
| 2584 | find "${dir}" -name configure | while read f; do |
|---|
| 2585 | patch --no-backup-if-mismatch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null; |
|---|
| 2586 | done; |
|---|
| 2587 | eend 0 |
|---|
| 2588 | } |
|---|
| 2589 | esvn_clean () |
|---|
| 2590 | { |
|---|
| 2591 | [[ -z $* ]] && set -- .; |
|---|
| 2592 | find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf |
|---|
| 2593 | } |
|---|
| 2594 | filter-flags () |
|---|
| 2595 | { |
|---|
| 2596 | _filter-hardened "$@"; |
|---|
| 2597 | _filter-var CFLAGS "$@"; |
|---|
| 2598 | _filter-var CPPFLAGS "$@"; |
|---|
| 2599 | _filter-var CXXFLAGS "$@"; |
|---|
| 2600 | _filter-var FFLAGS "$@"; |
|---|
| 2601 | _filter-var FCFLAGS "$@"; |
|---|
| 2602 | return 0 |
|---|
| 2603 | } |
|---|
| 2604 | filter-ldflags () |
|---|
| 2605 | { |
|---|
| 2606 | _filter-var LDFLAGS "$@"; |
|---|
| 2607 | return 0 |
|---|
| 2608 | } |
|---|
| 2609 | filter-lfs-flags () |
|---|
| 2610 | { |
|---|
| 2611 | [[ -n $@ ]] && die "filter-lfs-flags takes no arguments"; |
|---|
| 2612 | filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE |
|---|
| 2613 | } |
|---|
| 2614 | filter-mfpmath () |
|---|
| 2615 | { |
|---|
| 2616 | local orig_mfpmath new_math prune_math; |
|---|
| 2617 | orig_mfpmath=$(get-flag -mfpmath); |
|---|
| 2618 | new_math=$(get-flag mfpmath); |
|---|
| 2619 | new_math=" ${new_math//,/ } "; |
|---|
| 2620 | prune_math=""; |
|---|
| 2621 | for prune_math in "$@"; |
|---|
| 2622 | do |
|---|
| 2623 | new_math=${new_math/ ${prune_math} / }; |
|---|
| 2624 | done; |
|---|
| 2625 | new_math=$(echo ${new_math}); |
|---|
| 2626 | new_math=${new_math// /,}; |
|---|
| 2627 | if [[ -z ${new_math} ]]; then |
|---|
| 2628 | filter-flags ${orig_mfpmath}; |
|---|
| 2629 | else |
|---|
| 2630 | replace-flags ${orig_mfpmath} -mfpmath=${new_math}; |
|---|
| 2631 | fi; |
|---|
| 2632 | return 0 |
|---|
| 2633 | } |
|---|
| 2634 | find_unpackable_file () |
|---|
| 2635 | { |
|---|
| 2636 | local src=$1; |
|---|
| 2637 | if [[ -z ${src} ]]; then |
|---|
| 2638 | src=${DISTDIR}/${A}; |
|---|
| 2639 | else |
|---|
| 2640 | if [[ -e ${DISTDIR}/${src} ]]; then |
|---|
| 2641 | src=${DISTDIR}/${src}; |
|---|
| 2642 | else |
|---|
| 2643 | if [[ -e ${PWD}/${src} ]]; then |
|---|
| 2644 | src=${PWD}/${src}; |
|---|
| 2645 | else |
|---|
| 2646 | if [[ -e ${src} ]]; then |
|---|
| 2647 | src=${src}; |
|---|
| 2648 | fi; |
|---|
| 2649 | fi; |
|---|
| 2650 | fi; |
|---|
| 2651 | fi; |
|---|
| 2652 | [[ ! -e ${src} ]] && return 1; |
|---|
| 2653 | echo "${src}" |
|---|
| 2654 | } |
|---|
| 2655 | fixlocalpod () |
|---|
| 2656 | { |
|---|
| 2657 | find "${D}" -type f -name perllocal.pod -delete; |
|---|
| 2658 | find "${D}" -depth -mindepth 1 -type d -empty -delete |
|---|
| 2659 | } |
|---|
| 2660 | gcc-fullversion () |
|---|
| 2661 | { |
|---|
| 2662 | $(tc-getCC "$@") -dumpversion |
|---|
| 2663 | } |
|---|
| 2664 | gcc-major-version () |
|---|
| 2665 | { |
|---|
| 2666 | gcc-version "$@" | cut -f1 -d. |
|---|
| 2667 | } |
|---|
| 2668 | gcc-micro-version () |
|---|
| 2669 | { |
|---|
| 2670 | gcc-fullversion "$@" | cut -f3 -d. | cut -f1 -d- |
|---|
| 2671 | } |
|---|
| 2672 | gcc-minor-version () |
|---|
| 2673 | { |
|---|
| 2674 | gcc-version "$@" | cut -f2 -d. |
|---|
| 2675 | } |
|---|
| 2676 | gcc-specs-directive () |
|---|
| 2677 | { |
|---|
| 2678 | local directive subdname subdirective; |
|---|
| 2679 | directive="$(_gcc-specs-directive_raw $1)"; |
|---|
| 2680 | while [[ ${directive} == *%\(*\)* ]]; do |
|---|
| 2681 | subdname=${directive/*%\(}; |
|---|
| 2682 | subdname=${subdname/\)*}; |
|---|
| 2683 | subdirective="$(_gcc-specs-directive_raw ${subdname})"; |
|---|
| 2684 | directive="${directive//\%(${subdname})/${subdirective}}"; |
|---|
| 2685 | done; |
|---|
| 2686 | echo "${directive}"; |
|---|
| 2687 | return 0 |
|---|
| 2688 | } |
|---|
| 2689 | gcc-specs-nostrict () |
|---|
| 2690 | { |
|---|
| 2691 | local directive; |
|---|
| 2692 | directive=$(gcc-specs-directive cc1); |
|---|
| 2693 | return $([[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]]) |
|---|
| 2694 | } |
|---|
| 2695 | gcc-specs-now () |
|---|
| 2696 | { |
|---|
| 2697 | local directive; |
|---|
| 2698 | directive=$(gcc-specs-directive link_command); |
|---|
| 2699 | return $([[ "${directive/\{!nonow:}" != "${directive}" ]]) |
|---|
| 2700 | } |
|---|
| 2701 | gcc-specs-pie () |
|---|
| 2702 | { |
|---|
| 2703 | local directive; |
|---|
| 2704 | directive=$(gcc-specs-directive cc1); |
|---|
| 2705 | return $([[ "${directive/\{!nopie:}" != "${directive}" ]]) |
|---|
| 2706 | } |
|---|
| 2707 | gcc-specs-relro () |
|---|
| 2708 | { |
|---|
| 2709 | local directive; |
|---|
| 2710 | directive=$(gcc-specs-directive link_command); |
|---|
| 2711 | return $([[ "${directive/\{!norelro:}" != "${directive}" ]]) |
|---|
| 2712 | } |
|---|
| 2713 | gcc-specs-ssp () |
|---|
| 2714 | { |
|---|
| 2715 | local directive; |
|---|
| 2716 | directive=$(gcc-specs-directive cc1); |
|---|
| 2717 | return $([[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]]) |
|---|
| 2718 | } |
|---|
| 2719 | gcc-specs-ssp-to-all () |
|---|
| 2720 | { |
|---|
| 2721 | local directive; |
|---|
| 2722 | directive=$(gcc-specs-directive cc1); |
|---|
| 2723 | return $([[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]]) |
|---|
| 2724 | } |
|---|
| 2725 | gcc-version () |
|---|
| 2726 | { |
|---|
| 2727 | gcc-fullversion "$@" | cut -f1,2 -d. |
|---|
| 2728 | } |
|---|
| 2729 | gen_usr_ldscript () |
|---|
| 2730 | { |
|---|
| 2731 | local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname); |
|---|
| 2732 | [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/; |
|---|
| 2733 | tc-is-static-only && return; |
|---|
| 2734 | dodir /usr/${libdir}; |
|---|
| 2735 | if [[ $1 == "-a" ]]; then |
|---|
| 2736 | auto=true; |
|---|
| 2737 | shift; |
|---|
| 2738 | dodir /${libdir}; |
|---|
| 2739 | fi; |
|---|
| 2740 | output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p'); |
|---|
| 2741 | [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"; |
|---|
| 2742 | for lib in "$@"; |
|---|
| 2743 | do |
|---|
| 2744 | local tlib; |
|---|
| 2745 | if ${auto}; then |
|---|
| 2746 | lib="lib${lib}${suffix}"; |
|---|
| 2747 | else |
|---|
| 2748 | [[ -r ${ED}/${libdir}/${lib} ]] || continue; |
|---|
| 2749 | fi; |
|---|
| 2750 | case ${CTARGET:-${CHOST}} in |
|---|
| 2751 | *-darwin*) |
|---|
| 2752 | if ${auto}; then |
|---|
| 2753 | tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib}); |
|---|
| 2754 | else |
|---|
| 2755 | tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib}); |
|---|
| 2756 | fi; |
|---|
| 2757 | [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}"; |
|---|
| 2758 | tlib=${tlib##*/}; |
|---|
| 2759 | if ${auto}; then |
|---|
| 2760 | mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die; |
|---|
| 2761 | rm -f "${ED}"/${libdir}/${lib}; |
|---|
| 2762 | fi; |
|---|
| 2763 | install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib}; |
|---|
| 2764 | pushd "${ED}/usr/${libdir}" > /dev/null; |
|---|
| 2765 | ln -snf "../../${libdir}/${tlib}" "${lib}"; |
|---|
| 2766 | popd > /dev/null |
|---|
| 2767 | ;; |
|---|
| 2768 | *-aix* | *-irix* | *-hpux* | *-interix* | *-winnt*) |
|---|
| 2769 | if ${auto}; then |
|---|
| 2770 | mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die; |
|---|
| 2771 | tlib=$(readlink "${ED}"/${libdir}/${lib}); |
|---|
| 2772 | tlib=${tlib##*/}; |
|---|
| 2773 | if [[ -z ${tlib} ]]; then |
|---|
| 2774 | tlib=${lib}; |
|---|
| 2775 | else |
|---|
| 2776 | rm -f "${ED}"/${libdir}/${lib}; |
|---|
| 2777 | fi; |
|---|
| 2778 | else |
|---|
| 2779 | tlib=${lib}; |
|---|
| 2780 | fi; |
|---|
| 2781 | pushd "${ED}/usr/${libdir}" > /dev/null; |
|---|
| 2782 | ln -snf "../../${libdir}/${tlib}" "${lib}"; |
|---|
| 2783 | popd > /dev/null |
|---|
| 2784 | ;; |
|---|
| 2785 | *) |
|---|
| 2786 | if ${auto}; then |
|---|
| 2787 | tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib}); |
|---|
| 2788 | [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}"; |
|---|
| 2789 | mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die; |
|---|
| 2790 | if [[ ${tlib} != ${lib}* ]]; then |
|---|
| 2791 | mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die; |
|---|
| 2792 | fi; |
|---|
| 2793 | rm -f "${ED}"/${libdir}/${lib}; |
|---|
| 2794 | else |
|---|
| 2795 | tlib=${lib}; |
|---|
| 2796 | fi; |
|---|
| 2797 | cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT |
|---|
| 2798 | /* GNU ld script |
|---|
| 2799 | Since Gentoo has critical dynamic libraries in /lib, and the static versions |
|---|
| 2800 | in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we |
|---|
| 2801 | run into linking problems. This "fake" dynamic lib is a linker script that |
|---|
| 2802 | redirects the linker to the real lib. And yes, this works in the cross- |
|---|
| 2803 | compiling scenario as the sysroot-ed linker will prepend the real path. |
|---|
| 2804 | |
|---|
| 2805 | See bug http://bugs.gentoo.org/4411 for more info. |
|---|
| 2806 | */ |
|---|
| 2807 | ${output_format} |
|---|
| 2808 | GROUP ( ${EPREFIX}/${libdir}/${tlib} ) |
|---|
| 2809 | END_LDSCRIPT |
|---|
| 2810 | |
|---|
| 2811 | ;; |
|---|
| 2812 | esac |
|---|
| 2813 | fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}"; |
|---|
| 2814 | done |
|---|
| 2815 | } |
|---|
| 2816 | get-flag () |
|---|
| 2817 | { |
|---|
| 2818 | local f findflag="$1"; |
|---|
| 2819 | for f in ${CFLAGS} ${CXXFLAGS} ${FFLAGS} ${FCFLAGS}; |
|---|
| 2820 | do |
|---|
| 2821 | if [ "${f/${findflag}}" != "${f}" ]; then |
|---|
| 2822 | printf "%s\n" "${f/-${findflag}=}"; |
|---|
| 2823 | return 0; |
|---|
| 2824 | fi; |
|---|
| 2825 | done; |
|---|
| 2826 | return 1 |
|---|
| 2827 | } |
|---|
| 2828 | get_abi_ASFLAGS () |
|---|
| 2829 | { |
|---|
| 2830 | get_abi_var ASFLAGS "$@" |
|---|
| 2831 | } |
|---|
| 2832 | get_abi_CDEFINE () |
|---|
| 2833 | { |
|---|
| 2834 | get_abi_var CDEFINE "$@" |
|---|
| 2835 | } |
|---|
| 2836 | get_abi_CFLAGS () |
|---|
| 2837 | { |
|---|
| 2838 | get_abi_var CFLAGS "$@" |
|---|
| 2839 | } |
|---|
| 2840 | get_abi_CHOST () |
|---|
| 2841 | { |
|---|
| 2842 | get_abi_var CHOST "$@" |
|---|
| 2843 | } |
|---|
| 2844 | get_abi_CTARGET () |
|---|
| 2845 | { |
|---|
| 2846 | get_abi_var CTARGET "$@" |
|---|
| 2847 | } |
|---|
| 2848 | get_abi_FAKE_TARGETS () |
|---|
| 2849 | { |
|---|
| 2850 | get_abi_var FAKE_TARGETS "$@" |
|---|
| 2851 | } |
|---|
| 2852 | get_abi_LDFLAGS () |
|---|
| 2853 | { |
|---|
| 2854 | get_abi_var LDFLAGS "$@" |
|---|
| 2855 | } |
|---|
| 2856 | get_abi_LIBDIR () |
|---|
| 2857 | { |
|---|
| 2858 | get_abi_var LIBDIR "$@" |
|---|
| 2859 | } |
|---|
| 2860 | get_abi_var () |
|---|
| 2861 | { |
|---|
| 2862 | local flag=$1; |
|---|
| 2863 | local abi; |
|---|
| 2864 | if [ $# -gt 1 ]; then |
|---|
| 2865 | abi=${2}; |
|---|
| 2866 | else |
|---|
| 2867 | if [ -n "${ABI}" ]; then |
|---|
| 2868 | abi=${ABI}; |
|---|
| 2869 | else |
|---|
| 2870 | if [ -n "${DEFAULT_ABI}" ]; then |
|---|
| 2871 | abi=${DEFAULT_ABI}; |
|---|
| 2872 | else |
|---|
| 2873 | abi="default"; |
|---|
| 2874 | fi; |
|---|
| 2875 | fi; |
|---|
| 2876 | fi; |
|---|
| 2877 | local var="${flag}_${abi}"; |
|---|
| 2878 | echo ${!var} |
|---|
| 2879 | } |
|---|
| 2880 | get_after_major_version () |
|---|
| 2881 | { |
|---|
| 2882 | __versionator_shopt_toggle on; |
|---|
| 2883 | echo $(get_version_component_range 2- "${1:-${PV}}" ); |
|---|
| 2884 | __versionator_shopt_toggle off |
|---|
| 2885 | } |
|---|
| 2886 | get_all_abis () |
|---|
| 2887 | { |
|---|
| 2888 | local order=""; |
|---|
| 2889 | if [[ -z ${MULTILIB_ABIS} ]]; then |
|---|
| 2890 | echo "default"; |
|---|
| 2891 | return 0; |
|---|
| 2892 | fi; |
|---|
| 2893 | for x in ${MULTILIB_ABIS}; |
|---|
| 2894 | do |
|---|
| 2895 | if [[ ${x} != ${DEFAULT_ABI} ]]; then |
|---|
| 2896 | order="${order:+${order} }${x}"; |
|---|
| 2897 | fi; |
|---|
| 2898 | done; |
|---|
| 2899 | order="${order:+${order} }${DEFAULT_ABI}"; |
|---|
| 2900 | echo ${order}; |
|---|
| 2901 | return 0 |
|---|
| 2902 | } |
|---|
| 2903 | get_all_libdirs () |
|---|
| 2904 | { |
|---|
| 2905 | local libdirs="lib"; |
|---|
| 2906 | local abi; |
|---|
| 2907 | local dir; |
|---|
| 2908 | for abi in ${MULTILIB_ABIS}; |
|---|
| 2909 | do |
|---|
| 2910 | [ "$(get_abi_LIBDIR ${abi})" != "lib" ] && libdirs="${libdirs} $(get_abi_LIBDIR ${abi})"; |
|---|
| 2911 | done; |
|---|
| 2912 | echo "${libdirs}" |
|---|
| 2913 | } |
|---|
| 2914 | get_all_version_components () |
|---|
| 2915 | { |
|---|
| 2916 | __versionator_shopt_toggle on; |
|---|
| 2917 | local ver_str=${1:-${PV}} result result_idx=0; |
|---|
| 2918 | result=(); |
|---|
| 2919 | if [[ "${VERSIONATOR_CACHE_VER_STR}" == "${ver_str}" ]]; then |
|---|
| 2920 | echo ${VERSIONATOR_CACHE_RESULT}; |
|---|
| 2921 | __versionator_shopt_toggle off; |
|---|
| 2922 | return; |
|---|
| 2923 | fi; |
|---|
| 2924 | export VERSIONATOR_CACHE_VER_STR="${ver_str}"; |
|---|
| 2925 | while [[ -n "$ver_str" ]]; do |
|---|
| 2926 | case "${ver_str:0:1}" in |
|---|
| 2927 | [[:digit:]]) |
|---|
| 2928 | result[$result_idx]="${ver_str%%[^[:digit:]]*}"; |
|---|
| 2929 | ver_str="${ver_str##+([[:digit:]])}"; |
|---|
| 2930 | result_idx=$(($result_idx + 1)) |
|---|
| 2931 | ;; |
|---|
| 2932 | [-_.]) |
|---|
| 2933 | result[$result_idx]="${ver_str:0:1}"; |
|---|
| 2934 | ver_str="${ver_str:1}"; |
|---|
| 2935 | result_idx=$(($result_idx + 1)) |
|---|
| 2936 | ;; |
|---|
| 2937 | [[:alpha:]]) |
|---|
| 2938 | local not_match="${ver_str##+([[:alpha:]])*([[:digit:]])}"; |
|---|
| 2939 | result[$result_idx]=${ver_str:0:$((${#ver_str} - ${#not_match}))}; |
|---|
| 2940 | ver_str="${not_match}"; |
|---|
| 2941 | result_idx=$(($result_idx + 1)) |
|---|
| 2942 | ;; |
|---|
| 2943 | *) |
|---|
| 2944 | result[$result_idx]="${ver_str:0:1}"; |
|---|
| 2945 | ver_str="${ver_str:1}"; |
|---|
| 2946 | result_idx=$(($result_idx + 1)) |
|---|
| 2947 | ;; |
|---|
| 2948 | esac; |
|---|
| 2949 | done; |
|---|
| 2950 | export VERSIONATOR_CACHE_RESULT="${result[@]}"; |
|---|
| 2951 | echo ${result[@]}; |
|---|
| 2952 | __versionator_shopt_toggle off |
|---|
| 2953 | } |
|---|
| 2954 | get_bmake () |
|---|
| 2955 | { |
|---|
| 2956 | if [[ ${USERLAND} == *BSD ]]; then |
|---|
| 2957 | echo make; |
|---|
| 2958 | else |
|---|
| 2959 | if [[ ${USERLAND} == "Darwin" ]]; then |
|---|
| 2960 | echo bsdmake; |
|---|
| 2961 | else |
|---|
| 2962 | echo pmake; |
|---|
| 2963 | fi; |
|---|
| 2964 | fi |
|---|
| 2965 | } |
|---|
| 2966 | get_install_abis () |
|---|
| 2967 | { |
|---|
| 2968 | local order=""; |
|---|
| 2969 | if [[ -z ${MULTILIB_ABIS} ]]; then |
|---|
| 2970 | echo "default"; |
|---|
| 2971 | return 0; |
|---|
| 2972 | fi; |
|---|
| 2973 | if [[ ${EMULTILIB_PKG} == "true" ]]; then |
|---|
| 2974 | for x in ${MULTILIB_ABIS}; |
|---|
| 2975 | do |
|---|
| 2976 | if [[ ${x} != "${DEFAULT_ABI}" ]]; then |
|---|
| 2977 | hasq ${x} ${ABI_DENY} || ordera="${ordera} ${x}"; |
|---|
| 2978 | fi; |
|---|
| 2979 | done; |
|---|
| 2980 | hasq ${DEFAULT_ABI} ${ABI_DENY} || order="${ordera} ${DEFAULT_ABI}"; |
|---|
| 2981 | if [[ -n ${ABI_ALLOW} ]]; then |
|---|
| 2982 | local ordera=""; |
|---|
| 2983 | for x in ${order}; |
|---|
| 2984 | do |
|---|
| 2985 | if hasq ${x} ${ABI_ALLOW}; then |
|---|
| 2986 | ordera="${ordera} ${x}"; |
|---|
| 2987 | fi; |
|---|
| 2988 | done; |
|---|
| 2989 | order=${ordera}; |
|---|
| 2990 | fi; |
|---|
| 2991 | else |
|---|
| 2992 | order=${DEFAULT_ABI}; |
|---|
| 2993 | fi; |
|---|
| 2994 | if [[ -z ${order} ]]; then |
|---|
| 2995 | die "The ABI list is empty. Are you using a proper multilib profile? Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package."; |
|---|
| 2996 | fi; |
|---|
| 2997 | echo ${order}; |
|---|
| 2998 | return 0 |
|---|
| 2999 | } |
|---|
| 3000 | get_last_version_component_index () |
|---|
| 3001 | { |
|---|
| 3002 | __versionator_shopt_toggle on; |
|---|
| 3003 | echo $(( $(get_version_component_count "${1:-${PV}}" ) - 1 )); |
|---|
| 3004 | __versionator_shopt_toggle off |
|---|
| 3005 | } |
|---|
| 3006 | get_libdir () |
|---|
| 3007 | { |
|---|
| 3008 | local CONF_LIBDIR; |
|---|
| 3009 | if [ -n "${CONF_LIBDIR_OVERRIDE}" ]; then |
|---|
| 3010 | echo ${CONF_LIBDIR_OVERRIDE}; |
|---|
| 3011 | else |
|---|
| 3012 | get_abi_LIBDIR; |
|---|
| 3013 | fi |
|---|
| 3014 | } |
|---|
| 3015 | get_libdir_override () |
|---|
| 3016 | { |
|---|
| 3017 | if has_multilib_profile; then |
|---|
| 3018 | eerror "get_libdir_override called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org"; |
|---|
| 3019 | exit 1; |
|---|
| 3020 | fi; |
|---|
| 3021 | CONF_LIBDIR="$1"; |
|---|
| 3022 | CONF_LIBDIR_OVERRIDE="$1"; |
|---|
| 3023 | LIBDIR_default="$1" |
|---|
| 3024 | } |
|---|
| 3025 | get_libname () |
|---|
| 3026 | { |
|---|
| 3027 | local libname; |
|---|
| 3028 | local ver=$1; |
|---|
| 3029 | case ${CHOST} in |
|---|
| 3030 | *-cygwin | mingw* | *-mingw*) |
|---|
| 3031 | libname="dll" |
|---|
| 3032 | ;; |
|---|
| 3033 | *-darwin*) |
|---|
| 3034 | libname="dylib" |
|---|
| 3035 | ;; |
|---|
| 3036 | *-aix*) |
|---|
| 3037 | libname="a" |
|---|
| 3038 | ;; |
|---|
| 3039 | *-mint*) |
|---|
| 3040 | libname="irrelevant" |
|---|
| 3041 | ;; |
|---|
| 3042 | *) |
|---|
| 3043 | libname="so" |
|---|
| 3044 | ;; |
|---|
| 3045 | esac; |
|---|
| 3046 | if [[ -z $* ]]; then |
|---|
| 3047 | echo ".${libname}"; |
|---|
| 3048 | else |
|---|
| 3049 | for ver in "$@"; |
|---|
| 3050 | do |
|---|
| 3051 | case ${CHOST} in |
|---|
| 3052 | *-darwin*) |
|---|
| 3053 | echo ".${ver}.${libname}" |
|---|
| 3054 | ;; |
|---|
| 3055 | *-aix*) |
|---|
| 3056 | echo ".${libname}" |
|---|
| 3057 | ;; |
|---|
| 3058 | *-mint*) |
|---|
| 3059 | echo ".${libname}" |
|---|
| 3060 | ;; |
|---|
| 3061 | *) |
|---|
| 3062 | echo ".${libname}.${ver}" |
|---|
| 3063 | ;; |
|---|
| 3064 | esac; |
|---|
| 3065 | done; |
|---|
| 3066 | fi |
|---|
| 3067 | } |
|---|
| 3068 | get_major_version () |
|---|
| 3069 | { |
|---|
| 3070 | __versionator_shopt_toggle on; |
|---|
| 3071 | local c; |
|---|
| 3072 | c=($(get_all_version_components "${1:-${PV}}" )); |
|---|
| 3073 | echo ${c[0]}; |
|---|
| 3074 | __versionator_shopt_toggle off |
|---|
| 3075 | } |
|---|
| 3076 | get_ml_incdir () |
|---|
| 3077 | { |
|---|
| 3078 | local dir=/usr/include; |
|---|
| 3079 | if [[ $# -gt 0 ]]; then |
|---|
| 3080 | incdir=$1; |
|---|
| 3081 | shift; |
|---|
| 3082 | fi; |
|---|
| 3083 | if [[ -z "${MULTILIB_ABIS}" ]]; then |
|---|
| 3084 | echo ${incdir}; |
|---|
| 3085 | return 0; |
|---|
| 3086 | fi; |
|---|
| 3087 | local abi=${ABI-${DEFAULT_ABI}}; |
|---|
| 3088 | if [[ $# -gt 0 ]]; then |
|---|
| 3089 | abi=$1; |
|---|
| 3090 | shift; |
|---|
| 3091 | fi; |
|---|
| 3092 | if [[ -d "${dir}/gentoo-multilib/${abi}" ]]; then |
|---|
| 3093 | echo ${dir}/gentoo-multilib/${abi}; |
|---|
| 3094 | else |
|---|
| 3095 | echo ${dir}; |
|---|
| 3096 | fi |
|---|
| 3097 | } |
|---|
| 3098 | get_mounts () |
|---|
| 3099 | { |
|---|
| 3100 | local point= node= fs= opts= foo=; |
|---|
| 3101 | if [[ $(uname -s) == "Linux" ]]; then |
|---|
| 3102 | while read node point fs opts foo; do |
|---|
| 3103 | echo "${point} ${node} ${fs} ${opts}"; |
|---|
| 3104 | done < /proc/mounts; |
|---|
| 3105 | return; |
|---|
| 3106 | fi; |
|---|
| 3107 | local IFS=' '; |
|---|
| 3108 | LC_ALL=C mount -p | while read node point fs foo; do |
|---|
| 3109 | opts=${fs#* }; |
|---|
| 3110 | fs=${fs%% *}; |
|---|
| 3111 | echo "${point// /\040} ${node// /\040} ${fs%% *} ${opts// /\040}"; |
|---|
| 3112 | done |
|---|
| 3113 | } |
|---|
| 3114 | get_multilibdir () |
|---|
| 3115 | { |
|---|
| 3116 | if has_multilib_profile; then |
|---|
| 3117 | eerror "get_multilibdir called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org"; |
|---|
| 3118 | exit 1; |
|---|
| 3119 | fi; |
|---|
| 3120 | echo ${CONF_MULTILIBDIR:=lib32} |
|---|
| 3121 | } |
|---|
| 3122 | get_version_component_count () |
|---|
| 3123 | { |
|---|
| 3124 | __versionator_shopt_toggle on; |
|---|
| 3125 | local a; |
|---|
| 3126 | a=($(get_version_components "${1:-${PV}}" )); |
|---|
| 3127 | echo ${#a[@]}; |
|---|
| 3128 | __versionator_shopt_toggle off |
|---|
| 3129 | } |
|---|
| 3130 | get_version_component_range () |
|---|
| 3131 | { |
|---|
| 3132 | __versionator_shopt_toggle on; |
|---|
| 3133 | local c v="${2:-${PV}}" range="${1}" range_start range_end i=-1 j=0; |
|---|
| 3134 | c=($(get_all_version_components ${v} )); |
|---|
| 3135 | range_start="${range%-*}"; |
|---|
| 3136 | range_start="${range_start:-1}"; |
|---|
| 3137 | range_end="${range#*-}"; |
|---|
| 3138 | range_end="${range_end:-${#c[@]}}"; |
|---|
| 3139 | while (( j < ${range_start} )); do |
|---|
| 3140 | i=$(($i + 1)); |
|---|
| 3141 | [[ $i -gt ${#c[@]} ]] && __versionator_shopt_toggle off && return; |
|---|
| 3142 | [[ -n "${c[${i}]//[-._]}" ]] && j=$(($j + 1)); |
|---|
| 3143 | done; |
|---|
| 3144 | while (( j <= ${range_end} )); do |
|---|
| 3145 | echo -n ${c[$i]}; |
|---|
| 3146 | [[ $i -gt ${#c[@]} ]] && __versionator_shopt_toggle off && return; |
|---|
| 3147 | [[ -n "${c[${i}]//[-._]}" ]] && j=$(($j + 1)); |
|---|
| 3148 | i=$(($i + 1)); |
|---|
| 3149 | done; |
|---|
| 3150 | __versionator_shopt_toggle off |
|---|
| 3151 | } |
|---|
| 3152 | get_version_components () |
|---|
| 3153 | { |
|---|
| 3154 | __versionator_shopt_toggle on; |
|---|
| 3155 | local c="$(get_all_version_components "${1:-${PV}}")"; |
|---|
| 3156 | c=(${c[@]//[-._]/ }); |
|---|
| 3157 | echo ${c[@]}; |
|---|
| 3158 | __versionator_shopt_toggle off |
|---|
| 3159 | } |
|---|
| 3160 | has_apache () |
|---|
| 3161 | { |
|---|
| 3162 | debug-print-function $FUNCNAME $*; |
|---|
| 3163 | if has_version '>=www-servers/apache-2'; then |
|---|
| 3164 | _init_apache2; |
|---|
| 3165 | else |
|---|
| 3166 | _init_no_apache; |
|---|
| 3167 | fi |
|---|
| 3168 | } |
|---|
| 3169 | has_apache_threads () |
|---|
| 3170 | { |
|---|
| 3171 | debug-print-function $FUNCNAME $*; |
|---|
| 3172 | if ! built_with_use www-servers/apache threads; then |
|---|
| 3173 | return; |
|---|
| 3174 | fi; |
|---|
| 3175 | local myflag="${1:-threads}"; |
|---|
| 3176 | if ! use ${myflag}; then |
|---|
| 3177 | echo; |
|---|
| 3178 | eerror "You need to enable USE flag '${myflag}' to build a thread-safe version"; |
|---|
| 3179 | eerror "of ${CATEGORY}/${PN} for use with www-servers/apache"; |
|---|
| 3180 | die "Need missing USE flag '${myflag}'"; |
|---|
| 3181 | fi |
|---|
| 3182 | } |
|---|
| 3183 | has_apache_threads_in () |
|---|
| 3184 | { |
|---|
| 3185 | debug-print-function $FUNCNAME $*; |
|---|
| 3186 | if ! built_with_use www-servers/apache threads; then |
|---|
| 3187 | return; |
|---|
| 3188 | fi; |
|---|
| 3189 | local myforeign="$1"; |
|---|
| 3190 | local myflag="${2:-threads}"; |
|---|
| 3191 | if ! built_with_use ${myforeign} ${myflag}; then |
|---|
| 3192 | echo; |
|---|
| 3193 | eerror "You need to enable USE flag '${myflag}' in ${myforeign} to"; |
|---|
| 3194 | eerror "build a thread-safe version of ${CATEGORY}/${PN} for use"; |
|---|
| 3195 | eerror "with www-servers/apache"; |
|---|
| 3196 | die "Need missing USE flag '${myflag}' in ${myforeign}"; |
|---|
| 3197 | fi |
|---|
| 3198 | } |
|---|
| 3199 | has_hardened () |
|---|
| 3200 | { |
|---|
| 3201 | ewarn "has_hardened: deprecated, please use gcc-specs-{relro,now}()!" 1>&2; |
|---|
| 3202 | test_version_info Hardened && return 0; |
|---|
| 3203 | [[ -f ${GCC_SPECS} && ${GCC_SPECS} != ${GCC_SPECS/hardened/} ]] |
|---|
| 3204 | } |
|---|
| 3205 | has_m32 () |
|---|
| 3206 | { |
|---|
| 3207 | [ "$(tc-arch)" = "amd64" ] && has_multilib_profile && return 0; |
|---|
| 3208 | local temp=$(emktemp); |
|---|
| 3209 | echo "int main() { return(0); }" > "${temp}".c; |
|---|
| 3210 | MY_CC=$(tc-getCC); |
|---|
| 3211 | ${MY_CC/ .*/} -m32 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1; |
|---|
| 3212 | local ret=$?; |
|---|
| 3213 | rm -f "${temp}".c; |
|---|
| 3214 | [[ ${ret} != 1 ]] && return 0; |
|---|
| 3215 | return 1 |
|---|
| 3216 | } |
|---|
| 3217 | has_m64 () |
|---|
| 3218 | { |
|---|
| 3219 | local temp="$(emktemp)"; |
|---|
| 3220 | echo "int main() { return(0); }" > "${temp}".c; |
|---|
| 3221 | MY_CC=$(tc-getCC); |
|---|
| 3222 | ${MY_CC/ .*/} -m64 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1; |
|---|
| 3223 | local ret=$?; |
|---|
| 3224 | rm -f "${temp}".c; |
|---|
| 3225 | [[ ${ret} != 1 ]] && return 0; |
|---|
| 3226 | return 1 |
|---|
| 3227 | } |
|---|
| 3228 | has_multilib_profile () |
|---|
| 3229 | { |
|---|
| 3230 | [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ] |
|---|
| 3231 | } |
|---|
| 3232 | has_pic () |
|---|
| 3233 | { |
|---|
| 3234 | ewarn "has_pic: deprecated, please use gcc-specs-pie()!" 1>&2; |
|---|
| 3235 | [[ ${CFLAGS/-fPIC} != ${CFLAGS} || ${CFLAGS/-fpic} != ${CFLAGS} ]] || gcc-specs-pie |
|---|
| 3236 | } |
|---|
| 3237 | has_pie () |
|---|
| 3238 | { |
|---|
| 3239 | ewarn "has_pie: deprecated, please use gcc-specs-pie()!" 1>&2; |
|---|
| 3240 | [[ ${CFLAGS/-fPIE} != ${CFLAGS} || ${CFLAGS/-fpie} != ${CFLAGS} ]] || gcc-specs-pie |
|---|
| 3241 | } |
|---|
| 3242 | has_ssp () |
|---|
| 3243 | { |
|---|
| 3244 | ewarn "has_ssp: deprecated, please use gcc-specs-ssp()!" 1>&2; |
|---|
| 3245 | [[ ${CFLAGS/-fstack-protector} != ${CFLAGS} || -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP__) ]] || gcc-specs-ssp |
|---|
| 3246 | } |
|---|
| 3247 | has_ssp_all () |
|---|
| 3248 | { |
|---|
| 3249 | ewarn "has_ssp_all: deprecated, please use gcc-specs-ssp()!" 1>&2; |
|---|
| 3250 | [[ ${CFLAGS/-fstack-protector-all} != ${CFLAGS} || -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP_ALL__) ]] || gcc-specs-ssp-to-all |
|---|
| 3251 | } |
|---|
| 3252 | increment-qa-violations () |
|---|
| 3253 | { |
|---|
| 3254 | let "JAVA_PKG_QA_VIOLATIONS+=1"; |
|---|
| 3255 | export JAVA_PKG_QA_VIOLATIONS |
|---|
| 3256 | } |
|---|
| 3257 | initialize_tests_environment () |
|---|
| 3258 | { |
|---|
| 3259 | [[ "$1" == "local" ]] && base_url="file://${S}/subversion/tests/cmdline" http_library=""; |
|---|
| 3260 | [[ "$1" == "svn" ]] && base_url="svn://127.0.0.1" http_library=""; |
|---|
| 3261 | [[ "$1" == "neon" ]] && base_url="http://127.0.0.1" http_library="neon"; |
|---|
| 3262 | [[ "$1" == "serf" ]] && base_url="http://127.0.0.1" http_library="serf"; |
|---|
| 3263 | [[ "$1" == "svn" ]] && LC_ALL="C" subversion/svnserve/svnserve -dr "subversion/tests/cmdline" --listen-port "${SVN_TEST_SVNSERVE_PORT}" --pid-file "${T}/svnserve.pid"; |
|---|
| 3264 | [[ -n "${SVN_TEST_FSFS_MEMCACHED}" ]] && memcached -dp "${SVN_TEST_FSFS_MEMCACHED_PORT}" -P "${T}/memcached.pid" |
|---|
| 3265 | } |
|---|
| 3266 | is-flag () |
|---|
| 3267 | { |
|---|
| 3268 | is-flagq "$@" && echo true |
|---|
| 3269 | } |
|---|
| 3270 | is-flagq () |
|---|
| 3271 | { |
|---|
| 3272 | [[ -n $2 ]] && die "Usage: is-flag <flag>"; |
|---|
| 3273 | _is_flagq CFLAGS $1 || _is_flagq CXXFLAGS $1 || _is_flagq FFLAGS $1 || _is_flagq FCFLAGS $1 |
|---|
| 3274 | } |
|---|
| 3275 | is-java-strict () |
|---|
| 3276 | { |
|---|
| 3277 | [[ -n ${JAVA_PKG_STRICT} ]]; |
|---|
| 3278 | return $? |
|---|
| 3279 | } |
|---|
| 3280 | is-ldflag () |
|---|
| 3281 | { |
|---|
| 3282 | is-ldflagq "$@" && echo true |
|---|
| 3283 | } |
|---|
| 3284 | is-ldflagq () |
|---|
| 3285 | { |
|---|
| 3286 | [[ -n $2 ]] && die "Usage: is-ldflag <flag>"; |
|---|
| 3287 | _is_flagq LDFLAGS $1 |
|---|
| 3288 | } |
|---|
| 3289 | is-login-disabled () |
|---|
| 3290 | { |
|---|
| 3291 | shell=$(egetshell "$1"); |
|---|
| 3292 | case ${shell} in |
|---|
| 3293 | /bin/false | /usr/bin/false | /sbin/nologin | /usr/sbin/nologin) |
|---|
| 3294 | return 0 |
|---|
| 3295 | ;; |
|---|
| 3296 | *) |
|---|
| 3297 | return 1 |
|---|
| 3298 | ;; |
|---|
| 3299 | esac |
|---|
| 3300 | } |
|---|
| 3301 | is_final_abi () |
|---|
| 3302 | { |
|---|
| 3303 | has_multilib_profile || return 0; |
|---|
| 3304 | local ALL_ABIS=$(get_install_abis); |
|---|
| 3305 | local LAST_ABI=${ALL_ABIS/* /}; |
|---|
| 3306 | [[ ${LAST_ABI} == ${ABI} ]] |
|---|
| 3307 | } |
|---|
| 3308 | java-pkg-opt-2_pkg_preinst () |
|---|
| 3309 | { |
|---|
| 3310 | use ${JAVA_PKG_OPT_USE} && java-utils-2_pkg_preinst |
|---|
| 3311 | } |
|---|
| 3312 | java-pkg-opt-2_pkg_setup () |
|---|
| 3313 | { |
|---|
| 3314 | use ${JAVA_PKG_OPT_USE} && java-pkg_init |
|---|
| 3315 | } |
|---|
| 3316 | java-pkg-opt-2_src_prepare () |
|---|
| 3317 | { |
|---|
| 3318 | use ${JAVA_PKG_OPT_USE} && java-utils-2_src_prepare |
|---|
| 3319 | } |
|---|
| 3320 | java-pkg_addcp () |
|---|
| 3321 | { |
|---|
| 3322 | java-pkg_append_ JAVA_PKG_CLASSPATH "${@}"; |
|---|
| 3323 | java-pkg_do_write_ |
|---|
| 3324 | } |
|---|
| 3325 | java-pkg_announce-qa-violation () |
|---|
| 3326 | { |
|---|
| 3327 | local nodie; |
|---|
| 3328 | if [[ ${1} == "--nodie" ]]; then |
|---|
| 3329 | nodie="true"; |
|---|
| 3330 | shift; |
|---|
| 3331 | fi; |
|---|
| 3332 | echo "Java QA Notice: $@" 1>&2; |
|---|
| 3333 | increment-qa-violations; |
|---|
| 3334 | [[ -z "${nodie}" ]] && is-java-strict && die "${@}" |
|---|
| 3335 | } |
|---|
| 3336 | java-pkg_ant-tasks-depend () |
|---|
| 3337 | { |
|---|
| 3338 | debug-print-function ${FUNCNAME} ${WANT_ANT_TASKS}; |
|---|
| 3339 | if [[ -n "${WANT_ANT_TASKS}" ]]; then |
|---|
| 3340 | local DEP=""; |
|---|
| 3341 | for i in ${WANT_ANT_TASKS}; |
|---|
| 3342 | do |
|---|
| 3343 | if [[ ${i} = ant-* ]]; then |
|---|
| 3344 | DEP="${DEP}dev-java/${i} "; |
|---|
| 3345 | else |
|---|
| 3346 | if [[ ${i} = */*:* ]]; then |
|---|
| 3347 | DEP="${DEP}${i} "; |
|---|
| 3348 | else |
|---|
| 3349 | echo "Invalid atom in WANT_ANT_TASKS: ${i}"; |
|---|
| 3350 | return 1; |
|---|
| 3351 | fi; |
|---|
| 3352 | fi; |
|---|
| 3353 | done; |
|---|
| 3354 | echo ${DEP}; |
|---|
| 3355 | return 0; |
|---|
| 3356 | else |
|---|
| 3357 | return 0; |
|---|
| 3358 | fi |
|---|
| 3359 | } |
|---|
| 3360 | java-pkg_append_ () |
|---|
| 3361 | { |
|---|
| 3362 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3363 | local var="${1}" value="${2}"; |
|---|
| 3364 | if [[ -z "${!var}" ]]; then |
|---|
| 3365 | export ${var}="${value}"; |
|---|
| 3366 | else |
|---|
| 3367 | local oldIFS=${IFS} cur haveit; |
|---|
| 3368 | IFS=':'; |
|---|
| 3369 | for cur in ${!var}; |
|---|
| 3370 | do |
|---|
| 3371 | if [[ ${cur} == ${value} ]]; then |
|---|
| 3372 | haveit="yes"; |
|---|
| 3373 | break; |
|---|
| 3374 | fi; |
|---|
| 3375 | done; |
|---|
| 3376 | [[ -z ${haveit} ]] && export ${var}="${!var}:${value}"; |
|---|
| 3377 | IFS=${oldIFS}; |
|---|
| 3378 | fi |
|---|
| 3379 | } |
|---|
| 3380 | java-pkg_check-jikes () |
|---|
| 3381 | { |
|---|
| 3382 | if hasq jikes ${IUSE}; then |
|---|
| 3383 | java-pkg_announce-qa-violation "deprecated USE flag 'jikes' in IUSE"; |
|---|
| 3384 | fi |
|---|
| 3385 | } |
|---|
| 3386 | java-pkg_check-phase () |
|---|
| 3387 | { |
|---|
| 3388 | local phase=${1}; |
|---|
| 3389 | local funcname=${FUNCNAME[1]}; |
|---|
| 3390 | if [[ ${EBUILD_PHASE} != ${phase} ]]; then |
|---|
| 3391 | local msg="${funcname} used outside of src_${phase}"; |
|---|
| 3392 | java-pkg_announce-qa-violation "${msg}"; |
|---|
| 3393 | fi |
|---|
| 3394 | } |
|---|
| 3395 | java-pkg_check-versioned-jar () |
|---|
| 3396 | { |
|---|
| 3397 | local jar=${1}; |
|---|
| 3398 | if [[ ${jar} =~ ${PV} ]]; then |
|---|
| 3399 | java-pkg_announce-qa-violation "installing versioned jar '${jar}'"; |
|---|
| 3400 | fi |
|---|
| 3401 | } |
|---|
| 3402 | java-pkg_current-vm-matches () |
|---|
| 3403 | { |
|---|
| 3404 | hasq $(java-pkg_get-current-vm) ${@}; |
|---|
| 3405 | return $? |
|---|
| 3406 | } |
|---|
| 3407 | java-pkg_die () |
|---|
| 3408 | { |
|---|
| 3409 | echo "!!! When you file a bug report, please include the following information:" 1>&2; |
|---|
| 3410 | echo "GENTOO_VM=${GENTOO_VM} CLASSPATH=\"${CLASSPATH}\" JAVA_HOME=\"${JAVA_HOME}\"" 1>&2; |
|---|
| 3411 | echo "JAVACFLAGS=\"${JAVACFLAGS}\" COMPILER=\"${GENTOO_COMPILER}\"" 1>&2; |
|---|
| 3412 | echo "and of course, the output of emerge --info" 1>&2 |
|---|
| 3413 | } |
|---|
| 3414 | java-pkg_do_write_ () |
|---|
| 3415 | { |
|---|
| 3416 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3417 | java-pkg_init_paths_; |
|---|
| 3418 | dodir "${JAVA_PKG_SHAREPATH}"; |
|---|
| 3419 | if [[ -n "${JAVA_PKG_CLASSPATH}" || -n "${JAVA_PKG_LIBRARY}" || -f "${JAVA_PKG_DEPEND_FILE}" || -f "${JAVA_PKG_OPTIONAL_DEPEND_FILE}" ]]; then |
|---|
| 3420 | ( echo "DESCRIPTION=\"${DESCRIPTION}\""; |
|---|
| 3421 | echo "GENERATION=\"2\""; |
|---|
| 3422 | echo "SLOT=\"${SLOT}\""; |
|---|
| 3423 | echo "CATEGORY=\"${CATEGORY}\""; |
|---|
| 3424 | echo "PVR=\"${PVR}\""; |
|---|
| 3425 | [[ -n "${JAVA_PKG_CLASSPATH}" ]] && echo "CLASSPATH=\"${JAVA_PKG_CLASSPATH}\""; |
|---|
| 3426 | [[ -n "${JAVA_PKG_LIBRARY}" ]] && echo "LIBRARY_PATH=\"${JAVA_PKG_LIBRARY}\""; |
|---|
| 3427 | [[ -n "${JAVA_PROVIDE}" ]] && echo "PROVIDES=\"${JAVA_PROVIDE}\""; |
|---|
| 3428 | [[ -f "${JAVA_PKG_DEPEND_FILE}" ]] && echo "DEPEND=\"$(cat "${JAVA_PKG_DEPEND_FILE}" | uniq | tr '\n' ':')\""; |
|---|
| 3429 | [[ -f "${JAVA_PKG_OPTIONAL_DEPEND_FILE}" ]] && echo "OPTIONAL_DEPEND=\"$(cat "${JAVA_PKG_OPTIONAL_DEPEND_FILE}" | uniq | tr '\n' ':')\""; |
|---|
| 3430 | echo "VM=\"$(echo ${RDEPEND} ${DEPEND} | sed -e 's/ /\n/g' | sed -n -e '/virtual\/\(jre\|jdk\)/ { p;q }')\""; |
|---|
| 3431 | [[ -f "${JAVA_PKG_BUILD_DEPEND_FILE}" ]] && echo "BUILD_DEPEND=\"$(cat "${JAVA_PKG_BUILD_DEPEND_FILE}" | uniq | tr '\n' ':')\"" ) > "${JAVA_PKG_ENV}"; |
|---|
| 3432 | local target="$(java-pkg_get-target)"; |
|---|
| 3433 | local source="$(java-pkg_get-source)"; |
|---|
| 3434 | [[ -n ${target} ]] && echo "TARGET=\"${target}\"" >> "${JAVA_PKG_ENV}"; |
|---|
| 3435 | [[ -n ${source} ]] && echo "SOURCE=\"${source}\"" >> "${JAVA_PKG_ENV}"; |
|---|
| 3436 | [[ -n ${JAVADOC_PATH} ]] && echo "JAVADOC_PATH=\"${JAVADOC_PATH}\"" >> ${JAVA_PKG_ENV}; |
|---|
| 3437 | [[ -n ${JAVA_SOURCES} ]] && echo "JAVA_SOURCES=\"${JAVA_SOURCES}\"" >> ${JAVA_PKG_ENV}; |
|---|
| 3438 | echo "MERGE_VM=\"${GENTOO_VM}\"" >> "${JAVA_PKG_ENV}"; |
|---|
| 3439 | [[ -n ${GENTOO_COMPILER} ]] && echo "MERGE_COMPILER=\"${GENTOO_COMPILER}\"" >> "${JAVA_PKG_ENV}"; |
|---|
| 3440 | if [[ -n "${JAVA_PKG_EXTRA_ENV_VARS}" ]]; then |
|---|
| 3441 | cat "${JAVA_PKG_EXTRA_ENV}" >> "${JAVA_PKG_ENV}" || die; |
|---|
| 3442 | echo "ENV_VARS=\"$(echo ${JAVA_PKG_EXTRA_ENV_VARS})\"" >> "${JAVA_PKG_ENV}" || die; |
|---|
| 3443 | fi; |
|---|
| 3444 | sed -e "s/=\":/=\"/" -e "s/:\"$/\"/" -i "${JAVA_PKG_ENV}" || die "Did you forget to call java_init ?"; |
|---|
| 3445 | else |
|---|
| 3446 | debug-print "JAVA_PKG_CLASSPATH, JAVA_PKG_LIBRARY, JAVA_PKG_DEPEND_FILE"; |
|---|
| 3447 | debug-print "or JAVA_PKG_OPTIONAL_DEPEND_FILE not defined so can't"; |
|---|
| 3448 | debug-print "write package.env."; |
|---|
| 3449 | fi |
|---|
| 3450 | } |
|---|
| 3451 | java-pkg_doexamples () |
|---|
| 3452 | { |
|---|
| 3453 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3454 | [[ ${#} -lt 1 ]] && die "At least one argument needed"; |
|---|
| 3455 | java-pkg_check-phase install; |
|---|
| 3456 | local dest=/usr/share/doc/${PF}/examples; |
|---|
| 3457 | if [[ ${1} == --subdir ]]; then |
|---|
| 3458 | local dest=${dest}/${2}; |
|---|
| 3459 | dodir ${dest}; |
|---|
| 3460 | shift 2; |
|---|
| 3461 | fi; |
|---|
| 3462 | if [[ ${#} = 1 && -d ${1} ]]; then |
|---|
| 3463 | ( insinto "${dest}"; |
|---|
| 3464 | doins -r ${1}/* ) || die "Installing examples failed"; |
|---|
| 3465 | else |
|---|
| 3466 | ( insinto "${dest}"; |
|---|
| 3467 | doins -r "$@" ) || die "Installing examples failed"; |
|---|
| 3468 | fi |
|---|
| 3469 | } |
|---|
| 3470 | java-pkg_dohtml () |
|---|
| 3471 | { |
|---|
| 3472 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3473 | [[ ${#} -lt 1 ]] && die "At least one argument required for ${FUNCNAME}"; |
|---|
| 3474 | dohtml -f package-list "$@"; |
|---|
| 3475 | java-pkg_recordjavadoc |
|---|
| 3476 | } |
|---|
| 3477 | java-pkg_dojar () |
|---|
| 3478 | { |
|---|
| 3479 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3480 | [[ ${#} -lt 1 ]] && die "At least one argument needed"; |
|---|
| 3481 | java-pkg_check-phase install; |
|---|
| 3482 | java-pkg_init_paths_; |
|---|
| 3483 | dodir ${JAVA_PKG_JARDEST}; |
|---|
| 3484 | local jar; |
|---|
| 3485 | for jar in "${@}"; |
|---|
| 3486 | do |
|---|
| 3487 | local jar_basename=$(basename "${jar}"); |
|---|
| 3488 | java-pkg_check-versioned-jar ${jar_basename}; |
|---|
| 3489 | if [[ -e "${jar}" ]]; then |
|---|
| 3490 | local dest="${D}${JAVA_PKG_JARDEST}/${jar_basename}"; |
|---|
| 3491 | if [[ -e "${dest}" ]]; then |
|---|
| 3492 | ewarn "Overwriting ${dest}"; |
|---|
| 3493 | fi; |
|---|
| 3494 | if [[ ! -L "${jar}" ]]; then |
|---|
| 3495 | is-java-strict && java-pkg_verify-classes "${jar}"; |
|---|
| 3496 | INSDESTTREE="${JAVA_PKG_JARDEST}" doins "${jar}" || die "failed to install ${jar}"; |
|---|
| 3497 | java-pkg_append_ JAVA_PKG_CLASSPATH "${JAVA_PKG_JARDEST}/${jar_basename}"; |
|---|
| 3498 | debug-print "installed ${jar} to ${D}${JAVA_PKG_JARDEST}"; |
|---|
| 3499 | else |
|---|
| 3500 | ln -s "$(readlink "${jar}")" "${D}${JAVA_PKG_JARDEST}/${jar_basename}"; |
|---|
| 3501 | debug-print "${jar} is a symlink, linking accordingly"; |
|---|
| 3502 | fi; |
|---|
| 3503 | else |
|---|
| 3504 | die "${jar} does not exist"; |
|---|
| 3505 | fi; |
|---|
| 3506 | done; |
|---|
| 3507 | java-pkg_do_write_ |
|---|
| 3508 | } |
|---|
| 3509 | java-pkg_dojavadoc () |
|---|
| 3510 | { |
|---|
| 3511 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3512 | local symlink; |
|---|
| 3513 | if [[ ${1} = --symlink ]]; then |
|---|
| 3514 | symlink=${2}; |
|---|
| 3515 | shift 2; |
|---|
| 3516 | fi; |
|---|
| 3517 | local dir="$1"; |
|---|
| 3518 | local dest=/usr/share/doc/${PF}/html; |
|---|
| 3519 | java-pkg_check-phase install; |
|---|
| 3520 | [[ -z "${dir}" ]] && die "Must specify a directory!"; |
|---|
| 3521 | [[ ! -d "${dir}" ]] && die "${dir} does not exist, or isn't a directory!"; |
|---|
| 3522 | if [[ ! -e "${dir}/index.html" ]]; then |
|---|
| 3523 | local msg="No index.html in javadoc directory"; |
|---|
| 3524 | ewarn "${msg}"; |
|---|
| 3525 | is-java-strict && die "${msg}"; |
|---|
| 3526 | fi; |
|---|
| 3527 | if [[ -e ${D}/${dest}/api ]]; then |
|---|
| 3528 | eerror "${dest} already exists. Will not overwrite."; |
|---|
| 3529 | die "${dest}"; |
|---|
| 3530 | fi; |
|---|
| 3531 | local dir_to_install="${dir}"; |
|---|
| 3532 | if [[ "$(basename "${dir}")" != "api" ]]; then |
|---|
| 3533 | dir_to_install="${T}/api"; |
|---|
| 3534 | cp -r "${dir}" "${dir_to_install}" || die "cp failed"; |
|---|
| 3535 | fi; |
|---|
| 3536 | java-pkg_dohtml -r "${dir_to_install}"; |
|---|
| 3537 | dosym ${dest}/api "${JAVA_PKG_SHAREPATH}/api" || die; |
|---|
| 3538 | if [[ -n ${symlink} ]]; then |
|---|
| 3539 | debug-print "symlinking ${dest}/{api,${symlink}}"; |
|---|
| 3540 | dosym ${dest}/{api,${symlink}} || die; |
|---|
| 3541 | fi |
|---|
| 3542 | } |
|---|
| 3543 | java-pkg_dolauncher () |
|---|
| 3544 | { |
|---|
| 3545 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3546 | java-pkg_check-phase install; |
|---|
| 3547 | java-pkg_init_paths_; |
|---|
| 3548 | if [[ ${#} = 0 ]]; then |
|---|
| 3549 | local name="${PN}"; |
|---|
| 3550 | else |
|---|
| 3551 | local name="${1}"; |
|---|
| 3552 | shift; |
|---|
| 3553 | fi; |
|---|
| 3554 | local target="${T}/${name}"; |
|---|
| 3555 | local var_tmp="${T}/launcher_variables_tmp"; |
|---|
| 3556 | local target_dir pre; |
|---|
| 3557 | while [[ -n "${1}" && -n "${2}" ]]; do |
|---|
| 3558 | local var="${1}" value="${2}"; |
|---|
| 3559 | if [[ "${var:0:2}" == "--" ]]; then |
|---|
| 3560 | local var=${var:2}; |
|---|
| 3561 | echo "gjl_${var}=\"${value}\"" >> "${var_tmp}"; |
|---|
| 3562 | local gjl_${var}="${value}"; |
|---|
| 3563 | else |
|---|
| 3564 | if [[ "${var}" == "-into" ]]; then |
|---|
| 3565 | target_dir="${value}"; |
|---|
| 3566 | else |
|---|
| 3567 | if [[ "${var}" == "-pre" ]]; then |
|---|
| 3568 | pre="${value}"; |
|---|
| 3569 | fi; |
|---|
| 3570 | fi; |
|---|
| 3571 | fi; |
|---|
| 3572 | shift 2; |
|---|
| 3573 | done; |
|---|
| 3574 | if [[ -z "${gjl_jar}" && -z "${gjl_main}" ]]; then |
|---|
| 3575 | local cp="${JAVA_PKG_CLASSPATH}"; |
|---|
| 3576 | if [[ "${cp/:}" = "${cp}" && "${cp%.jar}" != "${cp}" ]]; then |
|---|
| 3577 | echo "gjl_jar=\"${JAVA_PKG_CLASSPATH}\"" >> "${var_tmp}"; |
|---|
| 3578 | else |
|---|
| 3579 | local msg="Not enough information to create a launcher given."; |
|---|
| 3580 | msg="${msg} Please give --jar or --main argument to ${FUNCNAME}."; |
|---|
| 3581 | die "${msg}"; |
|---|
| 3582 | fi; |
|---|
| 3583 | fi; |
|---|
| 3584 | echo "#!/bin/bash" > "${target}"; |
|---|
| 3585 | if [[ -n "${pre}" ]]; then |
|---|
| 3586 | if [[ -f "${pre}" ]]; then |
|---|
| 3587 | cat "${pre}" >> "${target}"; |
|---|
| 3588 | else |
|---|
| 3589 | die "-pre specified file '${pre}' does not exist"; |
|---|
| 3590 | fi; |
|---|
| 3591 | fi; |
|---|
| 3592 | echo "gjl_package=${JAVA_PKG_NAME}" >> "${target}"; |
|---|
| 3593 | cat "${var_tmp}" >> "${target}"; |
|---|
| 3594 | rm -f "${var_tmp}"; |
|---|
| 3595 | echo "source /usr/share/java-config-2/launcher/launcher.bash" >> "${target}"; |
|---|
| 3596 | if [[ -n "${target_dir}" ]]; then |
|---|
| 3597 | DESTTREE="${target_dir}" dobin "${target}"; |
|---|
| 3598 | local ret=$?; |
|---|
| 3599 | return ${ret}; |
|---|
| 3600 | else |
|---|
| 3601 | dobin "${target}"; |
|---|
| 3602 | fi |
|---|
| 3603 | } |
|---|
| 3604 | java-pkg_doso () |
|---|
| 3605 | { |
|---|
| 3606 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3607 | java-pkg_check-phase install; |
|---|
| 3608 | [[ ${#} -lt 1 ]] && die "${FUNCNAME} requires at least one argument"; |
|---|
| 3609 | java-pkg_init_paths_; |
|---|
| 3610 | local lib; |
|---|
| 3611 | for lib in "$@"; |
|---|
| 3612 | do |
|---|
| 3613 | if [[ -e "${lib}" ]]; then |
|---|
| 3614 | if [[ ! -L "${lib}" ]]; then |
|---|
| 3615 | INSDESTTREE="${JAVA_PKG_LIBDEST}" INSOPTIONS="${LIBOPTIONS}" doins "${lib}" || die "failed to install ${lib}"; |
|---|
| 3616 | java-pkg_append_ JAVA_PKG_LIBRARY "${JAVA_PKG_LIBDEST}"; |
|---|
| 3617 | debug-print "Installing ${lib} to ${JAVA_PKG_LIBDEST}"; |
|---|
| 3618 | else |
|---|
| 3619 | dosym "$(readlink "${lib}")" "${JAVA_PKG_LIBDEST}/${lib##*/}"; |
|---|
| 3620 | debug-print "${lib} is a symlink, linking accordantly"; |
|---|
| 3621 | fi; |
|---|
| 3622 | else |
|---|
| 3623 | die "${lib} does not exist"; |
|---|
| 3624 | fi; |
|---|
| 3625 | done; |
|---|
| 3626 | java-pkg_do_write_ |
|---|
| 3627 | } |
|---|
| 3628 | java-pkg_dosrc () |
|---|
| 3629 | { |
|---|
| 3630 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3631 | [ ${#} -lt 1 ] && die "At least one argument needed"; |
|---|
| 3632 | java-pkg_check-phase install; |
|---|
| 3633 | [[ ${#} -lt 1 ]] && die "At least one argument needed"; |
|---|
| 3634 | if ! [[ ${DEPEND} = *app-arch/zip* ]]; then |
|---|
| 3635 | local msg="${FUNCNAME} called without app-arch/zip in DEPEND"; |
|---|
| 3636 | java-pkg_announce-qa-violation ${msg}; |
|---|
| 3637 | fi; |
|---|
| 3638 | java-pkg_init_paths_; |
|---|
| 3639 | local zip_name="${PN}-src.zip"; |
|---|
| 3640 | local zip_path="${T}/${zip_name}"; |
|---|
| 3641 | local dir; |
|---|
| 3642 | for dir in "${@}"; |
|---|
| 3643 | do |
|---|
| 3644 | local dir_parent=$(dirname "${dir}"); |
|---|
| 3645 | local dir_name=$(basename "${dir}"); |
|---|
| 3646 | pushd ${dir_parent} > /dev/null || die "problem entering ${dir_parent}"; |
|---|
| 3647 | zip -q -r ${zip_path} ${dir_name} -i '*.java'; |
|---|
| 3648 | local result=$?; |
|---|
| 3649 | if [[ ${result} != 12 && ${result} != 0 ]]; then |
|---|
| 3650 | die "failed to zip ${dir_name}"; |
|---|
| 3651 | fi; |
|---|
| 3652 | popd > /dev/null; |
|---|
| 3653 | done; |
|---|
| 3654 | INSDESTTREE=${JAVA_PKG_SOURCESPATH} doins ${zip_path} || die "Failed to install source"; |
|---|
| 3655 | JAVA_SOURCES="${JAVA_PKG_SOURCESPATH}/${zip_name}"; |
|---|
| 3656 | java-pkg_do_write_ |
|---|
| 3657 | } |
|---|
| 3658 | java-pkg_dowar () |
|---|
| 3659 | { |
|---|
| 3660 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3661 | [[ ${#} -lt 1 ]] && die "At least one argument needed"; |
|---|
| 3662 | java-pkg_check-phase install; |
|---|
| 3663 | java-pkg_init_paths_; |
|---|
| 3664 | local war; |
|---|
| 3665 | for war in $*; |
|---|
| 3666 | do |
|---|
| 3667 | local warpath; |
|---|
| 3668 | if [[ -L "${war}" ]]; then |
|---|
| 3669 | cp "${war}" "${T}"; |
|---|
| 3670 | warpath="${T}$(basename "${war}")"; |
|---|
| 3671 | else |
|---|
| 3672 | if [[ -d "${war}" ]]; then |
|---|
| 3673 | echo "dowar: warning, skipping directory ${war}"; |
|---|
| 3674 | continue; |
|---|
| 3675 | else |
|---|
| 3676 | warpath="${war}"; |
|---|
| 3677 | fi; |
|---|
| 3678 | fi; |
|---|
| 3679 | INSOPTIONS="-m 0644" INSDESTTREE=${JAVA_PKG_WARDEST} doins ${warpath}; |
|---|
| 3680 | done |
|---|
| 3681 | } |
|---|
| 3682 | java-pkg_ensure-dep () |
|---|
| 3683 | { |
|---|
| 3684 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3685 | local limit_to="${1}"; |
|---|
| 3686 | local target_pkg="${2}"; |
|---|
| 3687 | local dev_error=""; |
|---|
| 3688 | local stripped_pkg=$(echo "${target_pkg}" | sed 's/-[0-9]*\(\.[0-9]\)*$//'); |
|---|
| 3689 | debug-print "Matching against: ${stripped_pkg}"; |
|---|
| 3690 | if [[ ${limit_to} != runtime && ! ( "${DEPEND}" =~ "$stripped_pkg" ) ]]; then |
|---|
| 3691 | dev_error="The ebuild is attempting to use ${target_pkg} that is not"; |
|---|
| 3692 | dev_error="${dev_error} declared in DEPEND."; |
|---|
| 3693 | if is-java-strict; then |
|---|
| 3694 | eerror "${dev_error}"; |
|---|
| 3695 | die "${dev_error}"; |
|---|
| 3696 | else |
|---|
| 3697 | if [[ ${BASH_SUBSHELL} = 0 ]]; then |
|---|
| 3698 | eerror "${dev_error}"; |
|---|
| 3699 | elog "Because you have this package installed the package will"; |
|---|
| 3700 | elog "build without problems, but please report this to"; |
|---|
| 3701 | elog "http://bugs.gentoo.org"; |
|---|
| 3702 | fi; |
|---|
| 3703 | fi; |
|---|
| 3704 | fi; |
|---|
| 3705 | if [[ ${limit_to} != build ]]; then |
|---|
| 3706 | if [[ ! ( ${RDEPEND} =~ "${stripped_pkg}" ) ]]; then |
|---|
| 3707 | if [[ ! ( ${PDEPEND} =~ "${stripped_pkg}" ) ]]; then |
|---|
| 3708 | dev_error="The ebuild is attempting to use ${target_pkg},"; |
|---|
| 3709 | dev_error="${dev_error} without specifying --build-only, that is not declared in RDEPEND"; |
|---|
| 3710 | dev_error="${dev_error} or PDEPEND."; |
|---|
| 3711 | if is-java-strict; then |
|---|
| 3712 | eerror "${dev_error}"; |
|---|
| 3713 | die "${dev_error}"; |
|---|
| 3714 | else |
|---|
| 3715 | if [[ ${BASH_SUBSHELL} = 0 ]]; then |
|---|
| 3716 | eerror "${dev_error}"; |
|---|
| 3717 | elog "The package will build without problems, but may fail to run"; |
|---|
| 3718 | elog "if you don't have ${target_pkg} installed, so please report"; |
|---|
| 3719 | elog "this to http://bugs.gentoo.org"; |
|---|
| 3720 | fi; |
|---|
| 3721 | fi; |
|---|
| 3722 | fi; |
|---|
| 3723 | fi; |
|---|
| 3724 | fi |
|---|
| 3725 | } |
|---|
| 3726 | java-pkg_ensure-gcj () |
|---|
| 3727 | { |
|---|
| 3728 | if ! built_with_use sys-devel/gcc gcj; then |
|---|
| 3729 | ewarn; |
|---|
| 3730 | ewarn "You must build gcc with the gcj support to build with gcj"; |
|---|
| 3731 | ewarn; |
|---|
| 3732 | ebeep 5; |
|---|
| 3733 | die "No GCJ support found!"; |
|---|
| 3734 | fi |
|---|
| 3735 | } |
|---|
| 3736 | java-pkg_ensure-no-bundled-jars () |
|---|
| 3737 | { |
|---|
| 3738 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3739 | local bundled_jars=$(java-pkg_find-normal-jars); |
|---|
| 3740 | if [[ -n ${bundled_jars} ]]; then |
|---|
| 3741 | echo "Bundled jars found:"; |
|---|
| 3742 | local jar; |
|---|
| 3743 | for jar in ${bundled_jars}; |
|---|
| 3744 | do |
|---|
| 3745 | echo $(pwd)${jar/./}; |
|---|
| 3746 | done; |
|---|
| 3747 | die "Bundled jars found!"; |
|---|
| 3748 | fi |
|---|
| 3749 | } |
|---|
| 3750 | java-pkg_ensure-test () |
|---|
| 3751 | { |
|---|
| 3752 | if hasq test ${FEATURES} && ! hasq -test ${FEATURES} && hasq test ${IUSE} && ! use test; then |
|---|
| 3753 | eerror "You specified FEATURES=test, but USE=test is needed"; |
|---|
| 3754 | eerror "to pull in the additional dependencies for testing"; |
|---|
| 3755 | die "Need USE=test enabled"; |
|---|
| 3756 | fi |
|---|
| 3757 | } |
|---|
| 3758 | java-pkg_ensure-vm-version-eq () |
|---|
| 3759 | { |
|---|
| 3760 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3761 | if ! java-pkg_is-vm-version-eq $@; then |
|---|
| 3762 | debug-print "VM is not suffient"; |
|---|
| 3763 | eerror "This package requires a Java VM version = $@"; |
|---|
| 3764 | einfo "Please use java-config -S to set the correct one"; |
|---|
| 3765 | die "Active Java VM too old"; |
|---|
| 3766 | fi |
|---|
| 3767 | } |
|---|
| 3768 | java-pkg_ensure-vm-version-ge () |
|---|
| 3769 | { |
|---|
| 3770 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3771 | if ! java-pkg_is-vm-version-ge "$@"; then |
|---|
| 3772 | debug-print "vm is not suffient"; |
|---|
| 3773 | eerror "This package requires a Java VM version >= $@"; |
|---|
| 3774 | einfo "Please use java-config -S to set the correct one"; |
|---|
| 3775 | die "Active Java VM too old"; |
|---|
| 3776 | fi |
|---|
| 3777 | } |
|---|
| 3778 | java-pkg_ensure-vm-version-sufficient () |
|---|
| 3779 | { |
|---|
| 3780 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3781 | if ! java-pkg_is-vm-version-sufficient; then |
|---|
| 3782 | debug-print "VM is not suffient"; |
|---|
| 3783 | eerror "Current Java VM cannot build this package"; |
|---|
| 3784 | einfo "Please use java-config -S to set the correct one"; |
|---|
| 3785 | die "Active Java VM cannot build this package"; |
|---|
| 3786 | fi |
|---|
| 3787 | } |
|---|
| 3788 | java-pkg_expand_dir_ () |
|---|
| 3789 | { |
|---|
| 3790 | pushd "$(dirname "${1}")" > /dev/null 2>&1; |
|---|
| 3791 | pwd; |
|---|
| 3792 | popd > /dev/null 2>&1 |
|---|
| 3793 | } |
|---|
| 3794 | java-pkg_filter-compiler () |
|---|
| 3795 | { |
|---|
| 3796 | JAVA_PKG_FILTER_COMPILER="${JAVA_PKG_FILTER_COMPILER} $@" |
|---|
| 3797 | } |
|---|
| 3798 | java-pkg_find-normal-jars () |
|---|
| 3799 | { |
|---|
| 3800 | local dir=$1; |
|---|
| 3801 | [[ -n "${dir}" ]] || dir="${WORKDIR}"; |
|---|
| 3802 | local found; |
|---|
| 3803 | for jar in $(find "${dir}" -name "*.jar" -type f); |
|---|
| 3804 | do |
|---|
| 3805 | echo "${jar}"; |
|---|
| 3806 | found="true"; |
|---|
| 3807 | done; |
|---|
| 3808 | [[ -n "${found}" ]]; |
|---|
| 3809 | return $? |
|---|
| 3810 | } |
|---|
| 3811 | java-pkg_force-compiler () |
|---|
| 3812 | { |
|---|
| 3813 | JAVA_PKG_FORCE_COMPILER="$@" |
|---|
| 3814 | } |
|---|
| 3815 | java-pkg_func-exists () |
|---|
| 3816 | { |
|---|
| 3817 | declare -F ${1} > /dev/null |
|---|
| 3818 | } |
|---|
| 3819 | java-pkg_get-current-vm () |
|---|
| 3820 | { |
|---|
| 3821 | java-config -f |
|---|
| 3822 | } |
|---|
| 3823 | java-pkg_get-javac () |
|---|
| 3824 | { |
|---|
| 3825 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3826 | local compiler="${GENTOO_COMPILER}"; |
|---|
| 3827 | local compiler_executable; |
|---|
| 3828 | if [[ "${compiler}" = "javac" ]]; then |
|---|
| 3829 | compiler_executable="javac"; |
|---|
| 3830 | else |
|---|
| 3831 | local compiler_env="/usr/share/java-config-2/compiler/${compiler}"; |
|---|
| 3832 | if [[ -f ${compiler_env} ]]; then |
|---|
| 3833 | local old_javac=${JAVAC}; |
|---|
| 3834 | unset JAVAC; |
|---|
| 3835 | compiler_executable="$(source ${compiler_env} 1>/dev/null 2>&1; echo ${JAVAC})"; |
|---|
| 3836 | export JAVAC=${old_javac}; |
|---|
| 3837 | if [[ -z ${compiler_executable} ]]; then |
|---|
| 3838 | echo "JAVAC is empty or undefined in ${compiler_env}"; |
|---|
| 3839 | return 1; |
|---|
| 3840 | fi; |
|---|
| 3841 | if [[ ! -x ${compiler_executable} ]]; then |
|---|
| 3842 | echo "${compiler_executable} doesn't exist, or isn't executable"; |
|---|
| 3843 | return 1; |
|---|
| 3844 | fi; |
|---|
| 3845 | else |
|---|
| 3846 | echo "Could not find environment file for ${compiler}"; |
|---|
| 3847 | return 1; |
|---|
| 3848 | fi; |
|---|
| 3849 | fi; |
|---|
| 3850 | echo ${compiler_executable} |
|---|
| 3851 | } |
|---|
| 3852 | java-pkg_get-jni-cflags () |
|---|
| 3853 | { |
|---|
| 3854 | local flags="-I${JAVA_HOME}/include"; |
|---|
| 3855 | local platform="linux"; |
|---|
| 3856 | use elibc_FreeBSD && platform="freebsd"; |
|---|
| 3857 | flags="${flags} -I${JAVA_HOME}/include/${platform}"; |
|---|
| 3858 | echo ${flags} |
|---|
| 3859 | } |
|---|
| 3860 | java-pkg_get-source () |
|---|
| 3861 | { |
|---|
| 3862 | echo ${JAVA_PKG_WANT_SOURCE:-$(depend-java-query --get-lowest "${DEPEND} ${RDEPEND}")} |
|---|
| 3863 | } |
|---|
| 3864 | java-pkg_get-target () |
|---|
| 3865 | { |
|---|
| 3866 | echo ${JAVA_PKG_WANT_TARGET:-$(depend-java-query --get-lowest "${DEPEND} ${RDEPEND}")} |
|---|
| 3867 | } |
|---|
| 3868 | java-pkg_get-vm-vendor () |
|---|
| 3869 | { |
|---|
| 3870 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3871 | local vm="$(java-pkg_get-current-vm)"; |
|---|
| 3872 | vm="${vm/-*/}"; |
|---|
| 3873 | echo "${vm}" |
|---|
| 3874 | } |
|---|
| 3875 | java-pkg_get-vm-version () |
|---|
| 3876 | { |
|---|
| 3877 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3878 | java-config -g PROVIDES_VERSION |
|---|
| 3879 | } |
|---|
| 3880 | java-pkg_getjar () |
|---|
| 3881 | { |
|---|
| 3882 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3883 | local build_only=""; |
|---|
| 3884 | local virtual=""; |
|---|
| 3885 | local record_jar=""; |
|---|
| 3886 | [[ "${EBUILD_PHASE}" == "test" ]] && build_only="build"; |
|---|
| 3887 | while [[ "${1}" == --* ]]; do |
|---|
| 3888 | if [[ "${1}" = "--build-only" ]]; then |
|---|
| 3889 | build_only="build"; |
|---|
| 3890 | else |
|---|
| 3891 | if [[ "${1}" == "--virtual" ]]; then |
|---|
| 3892 | virtual="true"; |
|---|
| 3893 | else |
|---|
| 3894 | die "java-pkg_getjar called with unknown parameter: ${1}"; |
|---|
| 3895 | fi; |
|---|
| 3896 | fi; |
|---|
| 3897 | shift; |
|---|
| 3898 | done; |
|---|
| 3899 | [[ ${#} -ne 2 ]] && die "${FUNCNAME} takes only two arguments besides --*"; |
|---|
| 3900 | local pkg="${1}" target_jar="${2}" jar; |
|---|
| 3901 | if [[ "${EAPI}" == "1" ]]; then |
|---|
| 3902 | pkg="${pkg//:/-}"; |
|---|
| 3903 | fi; |
|---|
| 3904 | [[ -z ${pkg} ]] && die "Must specify package to get a jar from"; |
|---|
| 3905 | [[ -z ${target_jar} ]] && die "Must specify jar to get"; |
|---|
| 3906 | local error_msg="Could not find classpath for ${pkg}. Are you sure its installed?"; |
|---|
| 3907 | local classpath; |
|---|
| 3908 | classpath=$(java-config --classpath=${pkg}); |
|---|
| 3909 | [[ $? != 0 ]] && die ${error_msg}; |
|---|
| 3910 | java-pkg_ensure-dep "${build_only}" "${pkg}"; |
|---|
| 3911 | if [[ -n "${virtual}" ]]; then |
|---|
| 3912 | if [[ -z "${build_only}" ]]; then |
|---|
| 3913 | java-pkg_record-jar_ "${pkg}"; |
|---|
| 3914 | else |
|---|
| 3915 | java-pkg_record-jar_ --build-only "${pkg}"; |
|---|
| 3916 | fi; |
|---|
| 3917 | record_jar="true"; |
|---|
| 3918 | fi; |
|---|
| 3919 | for jar in ${classpath//:/ }; |
|---|
| 3920 | do |
|---|
| 3921 | if [[ ! -f "${jar}" ]]; then |
|---|
| 3922 | die "Installation problem with jar ${jar} in ${pkg} - is it installed?"; |
|---|
| 3923 | fi; |
|---|
| 3924 | if [[ "$(basename ${jar})" == "${target_jar}" ]]; then |
|---|
| 3925 | if [[ -z "${record_jar}" ]]; then |
|---|
| 3926 | if [[ -z "${build_only}" ]]; then |
|---|
| 3927 | java-pkg_record-jar_ "${pkg}" "${jar}"; |
|---|
| 3928 | else |
|---|
| 3929 | java-pkg_record-jar_ --build-only "${pkg}" "${jar}"; |
|---|
| 3930 | fi; |
|---|
| 3931 | fi; |
|---|
| 3932 | echo "${jar}"; |
|---|
| 3933 | return 0; |
|---|
| 3934 | fi; |
|---|
| 3935 | done; |
|---|
| 3936 | die "Could not find ${target_jar} in ${pkg}"; |
|---|
| 3937 | return 1 |
|---|
| 3938 | } |
|---|
| 3939 | java-pkg_getjars () |
|---|
| 3940 | { |
|---|
| 3941 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3942 | local build_only=""; |
|---|
| 3943 | local deep=""; |
|---|
| 3944 | [[ "${EBUILD_PHASE}" == "test" ]] && build_only="build"; |
|---|
| 3945 | while [[ "${1}" == --* ]]; do |
|---|
| 3946 | if [[ "${1}" = "--build-only" ]]; then |
|---|
| 3947 | build_only="build"; |
|---|
| 3948 | else |
|---|
| 3949 | if [[ "${1}" = "--with-dependencies" ]]; then |
|---|
| 3950 | deep="--with-dependencies"; |
|---|
| 3951 | else |
|---|
| 3952 | die "java-pkg_jar-from called with unknown parameter: ${1}"; |
|---|
| 3953 | fi; |
|---|
| 3954 | fi; |
|---|
| 3955 | shift; |
|---|
| 3956 | done; |
|---|
| 3957 | [[ ${#} -ne 1 ]] && die "${FUNCNAME} takes only one argument besides --*"; |
|---|
| 3958 | local pkgs="${1}"; |
|---|
| 3959 | if [[ "${EAPI}" == "1" ]]; then |
|---|
| 3960 | pkgs="${pkgs//:/-}"; |
|---|
| 3961 | fi; |
|---|
| 3962 | jars="$(java-config ${deep} --classpath=${pkgs})"; |
|---|
| 3963 | [[ $? != 0 ]] && die "java-config --classpath=${pkgs} failed"; |
|---|
| 3964 | debug-print "${pkgs}:${jars}"; |
|---|
| 3965 | for pkg in ${pkgs//,/ }; |
|---|
| 3966 | do |
|---|
| 3967 | java-pkg_ensure-dep "${build_only}" "${pkg}"; |
|---|
| 3968 | done; |
|---|
| 3969 | for pkg in ${pkgs//,/ }; |
|---|
| 3970 | do |
|---|
| 3971 | if [[ -z "${build_only}" ]]; then |
|---|
| 3972 | java-pkg_record-jar_ "${pkg}"; |
|---|
| 3973 | else |
|---|
| 3974 | java-pkg_record-jar_ --build-only "${pkg}"; |
|---|
| 3975 | fi; |
|---|
| 3976 | done; |
|---|
| 3977 | echo "${jars}" |
|---|
| 3978 | } |
|---|
| 3979 | java-pkg_init () |
|---|
| 3980 | { |
|---|
| 3981 | debug-print-function ${FUNCNAME} $*; |
|---|
| 3982 | unset JAVAC; |
|---|
| 3983 | unset JAVA_HOME; |
|---|
| 3984 | java-config --help > /dev/null || { |
|---|
| 3985 | eerror ""; |
|---|
| 3986 | eerror "Can't run java-config --help"; |
|---|
| 3987 | eerror "Have you upgraded python recently but haven't"; |
|---|
| 3988 | eerror "run python-updater yet?"; |
|---|
| 3989 | die "Can't run java-config --help" |
|---|
| 3990 | }; |
|---|
| 3991 | local silence="${SILENCE_JAVA_OPTIONS_WARNING}"; |
|---|
| 3992 | local accept="${I_WANT_GLOBAL_JAVA_OPTIONS}"; |
|---|
| 3993 | if [[ -n ${_JAVA_OPTIONS} && -z ${accept} && -z ${silence} ]]; then |
|---|
| 3994 | ewarn "_JAVA_OPTIONS changes what java -version outputs at least for"; |
|---|
| 3995 | ewarn "sun-jdk vms and and as such break configure scripts that"; |
|---|
| 3996 | ewarn "use it (for example app-office/openoffice) so we filter it out."; |
|---|
| 3997 | ewarn "Use SILENCE_JAVA_OPTIONS_WARNING=true in the environment (use"; |
|---|
| 3998 | ewarn "make.conf for example) to silence this warning or"; |
|---|
| 3999 | ewarn "I_WANT_GLOBAL_JAVA_OPTIONS to not filter it."; |
|---|
| 4000 | fi; |
|---|
| 4001 | if [[ -z ${accept} ]]; then |
|---|
| 4002 | unset _JAVA_OPTIONS; |
|---|
| 4003 | I_WANT_GLOBAL_JAVA_OPTIONS="true"; |
|---|
| 4004 | fi; |
|---|
| 4005 | if java-pkg_func-exists ant_src_unpack; then |
|---|
| 4006 | java-pkg_announce-qa-violation "Using old ant_src_unpack. Should be src_unpack"; |
|---|
| 4007 | fi; |
|---|
| 4008 | java-pkg_init_paths_; |
|---|
| 4009 | java-pkg_switch-vm; |
|---|
| 4010 | PATH=${JAVA_HOME}/bin:${PATH}; |
|---|
| 4011 | java-pkg_check-jikes; |
|---|
| 4012 | export CLASSPATH=; |
|---|
| 4013 | export ANT_TASKS=; |
|---|
| 4014 | export ANT_OPTS=; |
|---|
| 4015 | export ANT_RESPECT_JAVA_HOME= |
|---|
| 4016 | } |
|---|
| 4017 | java-pkg_init-compiler_ () |
|---|
| 4018 | { |
|---|
| 4019 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4020 | if [[ -n ${GENTOO_COMPILER} ]]; then |
|---|
| 4021 | debug-print "GENTOO_COMPILER already set"; |
|---|
| 4022 | return; |
|---|
| 4023 | fi; |
|---|
| 4024 | local compilers; |
|---|
| 4025 | if [[ -z ${JAVA_PKG_FORCE_COMPILER} ]]; then |
|---|
| 4026 | compilers="$(source ${JAVA_PKG_COMPILERS_CONF} 1>/dev/null 2>&1; echo ${COMPILERS})"; |
|---|
| 4027 | else |
|---|
| 4028 | compilers=${JAVA_PKG_FORCE_COMPILER}; |
|---|
| 4029 | fi; |
|---|
| 4030 | debug-print "Read \"${compilers}\" from ${JAVA_PKG_COMPILERS_CONF}"; |
|---|
| 4031 | local compiler; |
|---|
| 4032 | for compiler in ${compilers}; |
|---|
| 4033 | do |
|---|
| 4034 | debug-print "Checking ${compiler}..."; |
|---|
| 4035 | if [[ ${compiler} = "javac" ]]; then |
|---|
| 4036 | debug-print "Found javac... breaking"; |
|---|
| 4037 | export GENTOO_COMPILER="javac"; |
|---|
| 4038 | break; |
|---|
| 4039 | fi; |
|---|
| 4040 | if has ${compiler} ${JAVA_PKG_FILTER_COMPILER}; then |
|---|
| 4041 | if [[ -z ${JAVA_PKG_FORCE_COMPILER} ]]; then |
|---|
| 4042 | einfo "Filtering ${compiler}"; |
|---|
| 4043 | continue; |
|---|
| 4044 | fi; |
|---|
| 4045 | fi; |
|---|
| 4046 | local compiler_env="${JAVA_PKG_COMPILER_DIR}/${compiler}"; |
|---|
| 4047 | if [[ -f ${compiler_env} ]]; then |
|---|
| 4048 | local desired_target="$(java-pkg_get-target)"; |
|---|
| 4049 | local desired_source="$(java-pkg_get-source)"; |
|---|
| 4050 | local supported_target=$(source ${compiler_env} 1>/dev/null 2>&1; echo ${SUPPORTED_TARGET}); |
|---|
| 4051 | if ! has ${desired_target} ${supported_target}; then |
|---|
| 4052 | ewarn "${compiler} does not support -target ${desired_target}, skipping"; |
|---|
| 4053 | continue; |
|---|
| 4054 | fi; |
|---|
| 4055 | if version_is_at_least "${desired_soure}" "1.3"; then |
|---|
| 4056 | local supported_source=$(source ${compiler_env} 1>/dev/null 2>&1; echo ${SUPPORTED_SOURCE}); |
|---|
| 4057 | if ! has ${desired_source} ${supported_source}; then |
|---|
| 4058 | ewarn "${compiler} does not support -source ${desired_source}, skipping"; |
|---|
| 4059 | continue; |
|---|
| 4060 | fi; |
|---|
| 4061 | fi; |
|---|
| 4062 | export GENTOO_COMPILER="${compiler}"; |
|---|
| 4063 | break; |
|---|
| 4064 | else |
|---|
| 4065 | ewarn "Could not find configuration for ${compiler}, skipping"; |
|---|
| 4066 | ewarn "Perhaps it is not installed?"; |
|---|
| 4067 | continue; |
|---|
| 4068 | fi; |
|---|
| 4069 | done; |
|---|
| 4070 | if [[ -z ${GENTOO_COMPILER} ]]; then |
|---|
| 4071 | if [[ -n ${compilers} ]]; then |
|---|
| 4072 | einfo "No suitable compiler found: defaulting to JDK default for compilation"; |
|---|
| 4073 | else |
|---|
| 4074 | :; |
|---|
| 4075 | fi; |
|---|
| 4076 | if java-config -g GENTOO_COMPILER 2> /dev/null; then |
|---|
| 4077 | export GENTOO_COMPILER=$(java-config -g GENTOO_COMPILER); |
|---|
| 4078 | else |
|---|
| 4079 | export GENTOO_COMPILER=javac; |
|---|
| 4080 | fi; |
|---|
| 4081 | else |
|---|
| 4082 | einfo "Using ${GENTOO_COMPILER} for compilation"; |
|---|
| 4083 | fi |
|---|
| 4084 | } |
|---|
| 4085 | java-pkg_init_paths_ () |
|---|
| 4086 | { |
|---|
| 4087 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4088 | local pkg_name; |
|---|
| 4089 | if [[ "$SLOT" == "0" ]]; then |
|---|
| 4090 | JAVA_PKG_NAME="${PN}"; |
|---|
| 4091 | else |
|---|
| 4092 | JAVA_PKG_NAME="${PN}-${SLOT}"; |
|---|
| 4093 | fi; |
|---|
| 4094 | JAVA_PKG_SHAREPATH="${DESTTREE}/share/${JAVA_PKG_NAME}"; |
|---|
| 4095 | JAVA_PKG_SOURCESPATH="${JAVA_PKG_SHAREPATH}/sources/"; |
|---|
| 4096 | JAVA_PKG_ENV="${D}${JAVA_PKG_SHAREPATH}/package.env"; |
|---|
| 4097 | JAVA_PKG_VIRTUALS_PATH="${DESTTREE}/share/java-config-2/virtuals"; |
|---|
| 4098 | JAVA_PKG_VIRTUAL_PROVIDER="${D}/${JAVA_PKG_VIRTUALS_PATH}/${JAVA_PKG_NAME}"; |
|---|
| 4099 | [[ -z "${JAVA_PKG_JARDEST}" ]] && JAVA_PKG_JARDEST="${JAVA_PKG_SHAREPATH}/lib"; |
|---|
| 4100 | [[ -z "${JAVA_PKG_LIBDEST}" ]] && JAVA_PKG_LIBDEST="${DESTTREE}/$(get_libdir)/${JAVA_PKG_NAME}"; |
|---|
| 4101 | [[ -z "${JAVA_PKG_WARDEST}" ]] && JAVA_PKG_WARDEST="${JAVA_PKG_SHAREPATH}/webapps"; |
|---|
| 4102 | debug-print "JAVA_PKG_SHAREPATH: ${JAVA_PKG_SHAREPATH}"; |
|---|
| 4103 | debug-print "JAVA_PKG_ENV: ${JAVA_PKG_ENV}"; |
|---|
| 4104 | debug-print "JAVA_PKG_JARDEST: ${JAVA_PKG_JARDEST}"; |
|---|
| 4105 | debug-print "JAVA_PKG_LIBDEST: ${JAVA_PKG_LIBDEST}"; |
|---|
| 4106 | debug-print "JAVA_PKG_WARDEST: ${JAVA_PKG_WARDEST}" |
|---|
| 4107 | } |
|---|
| 4108 | java-pkg_is-vm-version-eq () |
|---|
| 4109 | { |
|---|
| 4110 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4111 | local needed_version="$@"; |
|---|
| 4112 | [[ -z "${needed_version}" ]] && die "need an argument"; |
|---|
| 4113 | local vm_version="$(java-pkg_get-vm-version)"; |
|---|
| 4114 | vm_version="$(get_version_component_range 1-2 "${vm_version}")"; |
|---|
| 4115 | needed_version="$(get_version_component_range 1-2 "${needed_version}")"; |
|---|
| 4116 | if [[ -z "${vm_version}" ]]; then |
|---|
| 4117 | debug-print "Could not get JDK version from DEPEND"; |
|---|
| 4118 | return 1; |
|---|
| 4119 | else |
|---|
| 4120 | if [[ "${vm_version}" == "${needed_version}" ]]; then |
|---|
| 4121 | debug-print "Detected a JDK(${vm_version}) = ${needed_version}"; |
|---|
| 4122 | return 0; |
|---|
| 4123 | else |
|---|
| 4124 | debug-print "Detected a JDK(${vm_version}) != ${needed_version}"; |
|---|
| 4125 | return 1; |
|---|
| 4126 | fi; |
|---|
| 4127 | fi |
|---|
| 4128 | } |
|---|
| 4129 | java-pkg_is-vm-version-ge () |
|---|
| 4130 | { |
|---|
| 4131 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4132 | local needed_version=$@; |
|---|
| 4133 | local vm_version=$(java-pkg_get-vm-version); |
|---|
| 4134 | if [[ -z "${vm_version}" ]]; then |
|---|
| 4135 | debug-print "Could not get JDK version from DEPEND"; |
|---|
| 4136 | return 1; |
|---|
| 4137 | else |
|---|
| 4138 | if version_is_at_least "${needed_version}" "${vm_version}"; then |
|---|
| 4139 | debug-print "Detected a JDK(${vm_version}) >= ${needed_version}"; |
|---|
| 4140 | return 0; |
|---|
| 4141 | else |
|---|
| 4142 | debug-print "Detected a JDK(${vm_version}) < ${needed_version}"; |
|---|
| 4143 | return 1; |
|---|
| 4144 | fi; |
|---|
| 4145 | fi |
|---|
| 4146 | } |
|---|
| 4147 | java-pkg_is-vm-version-sufficient () |
|---|
| 4148 | { |
|---|
| 4149 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4150 | depend-java-query --is-sufficient "${DEPEND}" > /dev/null; |
|---|
| 4151 | return $? |
|---|
| 4152 | } |
|---|
| 4153 | java-pkg_jar-from () |
|---|
| 4154 | { |
|---|
| 4155 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4156 | local build_only=""; |
|---|
| 4157 | local destdir="."; |
|---|
| 4158 | local deep=""; |
|---|
| 4159 | local virtual=""; |
|---|
| 4160 | local record_jar=""; |
|---|
| 4161 | [[ "${EBUILD_PHASE}" == "test" ]] && build_only="build"; |
|---|
| 4162 | while [[ "${1}" == --* ]]; do |
|---|
| 4163 | if [[ "${1}" = "--build-only" ]]; then |
|---|
| 4164 | build_only="build"; |
|---|
| 4165 | else |
|---|
| 4166 | if [[ "${1}" = "--with-dependencies" ]]; then |
|---|
| 4167 | deep="--with-dependencies"; |
|---|
| 4168 | else |
|---|
| 4169 | if [[ "${1}" = "--virtual" ]]; then |
|---|
| 4170 | virtual="true"; |
|---|
| 4171 | else |
|---|
| 4172 | if [[ "${1}" = "--into" ]]; then |
|---|
| 4173 | destdir="${2}"; |
|---|
| 4174 | shift; |
|---|
| 4175 | else |
|---|
| 4176 | die "java-pkg_jar-from called with unknown parameter: ${1}"; |
|---|
| 4177 | fi; |
|---|
| 4178 | fi; |
|---|
| 4179 | fi; |
|---|
| 4180 | fi; |
|---|
| 4181 | shift; |
|---|
| 4182 | done; |
|---|
| 4183 | local target_pkg="${1}" target_jar="${2}" destjar="${3}"; |
|---|
| 4184 | [[ -z ${target_pkg} ]] && die "Must specify a package"; |
|---|
| 4185 | if [[ "${EAPI}" == "1" ]]; then |
|---|
| 4186 | target_pkg="${target_pkg//:/-}"; |
|---|
| 4187 | fi; |
|---|
| 4188 | [[ -z "${destjar}" ]] && destjar="${target_jar}"; |
|---|
| 4189 | local error_msg="There was a problem getting the classpath for ${target_pkg}."; |
|---|
| 4190 | local classpath; |
|---|
| 4191 | classpath="$(java-config ${deep} --classpath=${target_pkg})"; |
|---|
| 4192 | [[ $? != 0 ]] && die ${error_msg}; |
|---|
| 4193 | if [[ ${target_pkg} = *,* ]]; then |
|---|
| 4194 | for pkg in ${target_pkg//,/ }; |
|---|
| 4195 | do |
|---|
| 4196 | java-pkg_ensure-dep "${build_only}" "${pkg}"; |
|---|
| 4197 | [[ -z "${build_only}" ]] && java-pkg_record-jar_ "${pkg}"; |
|---|
| 4198 | done; |
|---|
| 4199 | record_jar="true"; |
|---|
| 4200 | else |
|---|
| 4201 | java-pkg_ensure-dep "${build_only}" "${target_pkg}"; |
|---|
| 4202 | fi; |
|---|
| 4203 | if [[ -z "${build_only}" && -n "${virtual}" ]]; then |
|---|
| 4204 | java-pkg_record-jar_ "${target_pkg}"; |
|---|
| 4205 | record_jar="true"; |
|---|
| 4206 | fi; |
|---|
| 4207 | pushd ${destdir} > /dev/null || die "failed to change directory to ${destdir}"; |
|---|
| 4208 | local jar; |
|---|
| 4209 | for jar in ${classpath//:/ }; |
|---|
| 4210 | do |
|---|
| 4211 | local jar_name=$(basename "${jar}"); |
|---|
| 4212 | if [[ ! -f "${jar}" ]]; then |
|---|
| 4213 | debug-print "${jar} from ${target_pkg} does not exist"; |
|---|
| 4214 | die "Installation problems with jars in ${target_pkg} - is it installed?"; |
|---|
| 4215 | fi; |
|---|
| 4216 | if [[ -z "${target_jar}" ]]; then |
|---|
| 4217 | [[ -f "${target_jar}" ]] && rm "${target_jar}"; |
|---|
| 4218 | ln -snf "${jar}" || die "Failed to make symlink from ${jar} to ${jar_name}"; |
|---|
| 4219 | if [[ -z "${record_jar}" ]]; then |
|---|
| 4220 | if [[ -z "${build_only}" ]]; then |
|---|
| 4221 | java-pkg_record-jar_ "${target_pkg}" "${jar}"; |
|---|
| 4222 | else |
|---|
| 4223 | java-pkg_record-jar_ --build-only "${target_pkg}" "${jar}"; |
|---|
| 4224 | fi; |
|---|
| 4225 | fi; |
|---|
| 4226 | else |
|---|
| 4227 | if [[ "${jar_name}" == "${target_jar}" ]]; then |
|---|
| 4228 | [[ -f "${destjar}" ]] && rm "${destjar}"; |
|---|
| 4229 | ln -snf "${jar}" "${destjar}" || die "Failed to make symlink from ${jar} to ${destjar}"; |
|---|
| 4230 | if [[ -z "${record_jar}" ]]; then |
|---|
| 4231 | if [[ -z "${build_only}" ]]; then |
|---|
| 4232 | java-pkg_record-jar_ "${target_pkg}" "${jar}"; |
|---|
| 4233 | else |
|---|
| 4234 | java-pkg_record-jar_ --build-only "${target_jar}" "${jar}"; |
|---|
| 4235 | fi; |
|---|
| 4236 | fi; |
|---|
| 4237 | popd > /dev/null; |
|---|
| 4238 | return 0; |
|---|
| 4239 | fi; |
|---|
| 4240 | fi; |
|---|
| 4241 | done; |
|---|
| 4242 | popd > /dev/null; |
|---|
| 4243 | if [[ -z "${target_jar}" ]]; then |
|---|
| 4244 | return 0; |
|---|
| 4245 | else |
|---|
| 4246 | die "Failed to find ${target_jar:-jar} in ${target_pkg}"; |
|---|
| 4247 | fi |
|---|
| 4248 | } |
|---|
| 4249 | java-pkg_jar-list () |
|---|
| 4250 | { |
|---|
| 4251 | if [[ -n "${JAVA_PKG_DEBUG}" ]]; then |
|---|
| 4252 | einfo "Linked Jars"; |
|---|
| 4253 | find "${S}" -type l -name '*.jar' -print0 | xargs -0 -r -n 500 ls -ald | sed -e "s,${WORKDIR},\${WORKDIR},"; |
|---|
| 4254 | einfo "Jars"; |
|---|
| 4255 | find "${S}" -type f -name '*.jar' -print0 | xargs -0 -r -n 500 ls -ald | sed -e "s,${WORKDIR},\${WORKDIR},"; |
|---|
| 4256 | einfo "Classes"; |
|---|
| 4257 | find "${S}" -type f -name '*.class' -print0 | xargs -0 -r -n 500 ls -ald | sed -e "s,${WORKDIR},\${WORKDIR},"; |
|---|
| 4258 | fi |
|---|
| 4259 | } |
|---|
| 4260 | java-pkg_jarfrom () |
|---|
| 4261 | { |
|---|
| 4262 | java-pkg_jar-from "$@" |
|---|
| 4263 | } |
|---|
| 4264 | java-pkg_jarinto () |
|---|
| 4265 | { |
|---|
| 4266 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4267 | JAVA_PKG_JARDEST="${1}" |
|---|
| 4268 | } |
|---|
| 4269 | java-pkg_javac-args () |
|---|
| 4270 | { |
|---|
| 4271 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4272 | local want_source="$(java-pkg_get-source)"; |
|---|
| 4273 | local want_target="$(java-pkg_get-target)"; |
|---|
| 4274 | local source_str="-source ${want_source}"; |
|---|
| 4275 | local target_str="-target ${want_target}"; |
|---|
| 4276 | debug-print "want source: ${want_source}"; |
|---|
| 4277 | debug-print "want target: ${want_target}"; |
|---|
| 4278 | if [[ -z "${want_source}" || -z "${want_target}" ]]; then |
|---|
| 4279 | debug-print "could not find valid -source/-target values for javac"; |
|---|
| 4280 | echo "Could not find valid -source/-target values for javac"; |
|---|
| 4281 | return 1; |
|---|
| 4282 | else |
|---|
| 4283 | if java-pkg_is-vm-version-ge "1.4"; then |
|---|
| 4284 | echo "${source_str} ${target_str}"; |
|---|
| 4285 | else |
|---|
| 4286 | echo "${target_str}"; |
|---|
| 4287 | fi; |
|---|
| 4288 | fi |
|---|
| 4289 | } |
|---|
| 4290 | java-pkg_needs-vm () |
|---|
| 4291 | { |
|---|
| 4292 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4293 | if [[ -n "$(echo ${DEPEND} | sed -e '\:virtual/jdk:!d')" ]]; then |
|---|
| 4294 | return 0; |
|---|
| 4295 | fi; |
|---|
| 4296 | return 1 |
|---|
| 4297 | } |
|---|
| 4298 | java-pkg_newjar () |
|---|
| 4299 | { |
|---|
| 4300 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4301 | local original_jar="${1}"; |
|---|
| 4302 | local new_jar="${2:-${PN}.jar}"; |
|---|
| 4303 | local new_jar_dest="${T}/${new_jar}"; |
|---|
| 4304 | [[ -z ${original_jar} ]] && die "Must specify a jar to install"; |
|---|
| 4305 | [[ ! -f ${original_jar} ]] && die "${original_jar} does not exist or is not a file!"; |
|---|
| 4306 | rm -f "${new_jar_dest}" || die "Failed to remove ${new_jar_dest}"; |
|---|
| 4307 | cp "${original_jar}" "${new_jar_dest}" || die "Failed to copy ${original_jar} to ${new_jar_dest}"; |
|---|
| 4308 | java-pkg_dojar "${new_jar_dest}" |
|---|
| 4309 | } |
|---|
| 4310 | java-pkg_record-jar_ () |
|---|
| 4311 | { |
|---|
| 4312 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4313 | local depend_file="${JAVA_PKG_DEPEND_FILE}"; |
|---|
| 4314 | case "${1}" in |
|---|
| 4315 | "--optional") |
|---|
| 4316 | depend_file="${JAVA_PKG_OPTIONAL_DEPEND_FILE}"; |
|---|
| 4317 | shift |
|---|
| 4318 | ;; |
|---|
| 4319 | "--build-only") |
|---|
| 4320 | depend_file="${JAVA_PKG_BUILD_DEPEND_FILE}"; |
|---|
| 4321 | shift |
|---|
| 4322 | ;; |
|---|
| 4323 | esac; |
|---|
| 4324 | local pkg=${1} jar=${2} append; |
|---|
| 4325 | if [[ -z "${jar}" ]]; then |
|---|
| 4326 | append="${pkg}"; |
|---|
| 4327 | else |
|---|
| 4328 | append="$(basename ${jar})@${pkg}"; |
|---|
| 4329 | fi; |
|---|
| 4330 | echo "${append}" >> "${depend_file}" |
|---|
| 4331 | } |
|---|
| 4332 | java-pkg_recordjavadoc () |
|---|
| 4333 | { |
|---|
| 4334 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4335 | JAVADOC_PATH="$(find ${D}/usr/share/doc/ -name allclasses-frame.html -printf '%h:')"; |
|---|
| 4336 | JAVADOC_PATH="${JAVADOC_PATH//${D}}"; |
|---|
| 4337 | if [[ -n "${JAVADOC_PATH}" ]]; then |
|---|
| 4338 | debug-print "javadocs found in ${JAVADOC_PATH%:}"; |
|---|
| 4339 | java-pkg_do_write_; |
|---|
| 4340 | else |
|---|
| 4341 | debug-print "No javadocs found"; |
|---|
| 4342 | fi |
|---|
| 4343 | } |
|---|
| 4344 | java-pkg_register-ant-task () |
|---|
| 4345 | { |
|---|
| 4346 | local TASKS_DIR="tasks"; |
|---|
| 4347 | while [[ -n "${1}" && -n "${2}" ]]; do |
|---|
| 4348 | local var="${1#--}"; |
|---|
| 4349 | local val="${2}"; |
|---|
| 4350 | if [[ "${var}" == "version" ]]; then |
|---|
| 4351 | TASKS_DIR="tasks-${val}"; |
|---|
| 4352 | else |
|---|
| 4353 | die "Unknown parameter passed to java-pkg_register-ant-tasks: ${1} ${2}"; |
|---|
| 4354 | fi; |
|---|
| 4355 | shift 2; |
|---|
| 4356 | done; |
|---|
| 4357 | local TASK_NAME="${1:-${JAVA_PKG_NAME}}"; |
|---|
| 4358 | dodir /usr/share/ant/${TASKS_DIR}; |
|---|
| 4359 | touch "${D}/usr/share/ant/${TASKS_DIR}/${TASK_NAME}" |
|---|
| 4360 | } |
|---|
| 4361 | java-pkg_register-dependency () |
|---|
| 4362 | { |
|---|
| 4363 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4364 | java-pkg_check-phase install; |
|---|
| 4365 | [[ ${#} -gt 2 ]] && die "${FUNCNAME} takes at most two arguments"; |
|---|
| 4366 | local pkgs="${1}"; |
|---|
| 4367 | local jar="${2}"; |
|---|
| 4368 | [[ -z "${pkgs}" ]] && die "${FUNCNAME} called with no package(s) specified"; |
|---|
| 4369 | if [[ "${EAPI}" == "1" ]]; then |
|---|
| 4370 | pkgs="${pkgs//:/-}"; |
|---|
| 4371 | fi; |
|---|
| 4372 | if [[ -z "${jar}" ]]; then |
|---|
| 4373 | for pkg in ${pkgs//,/ }; |
|---|
| 4374 | do |
|---|
| 4375 | java-pkg_ensure-dep runtime "${pkg}"; |
|---|
| 4376 | java-pkg_record-jar_ "${pkg}"; |
|---|
| 4377 | done; |
|---|
| 4378 | else |
|---|
| 4379 | [[ ${pkgs} == *,* ]] && die "${FUNCNAME} called with both package list and jar name"; |
|---|
| 4380 | java-pkg_ensure-dep runtime "${pkgs}"; |
|---|
| 4381 | java-pkg_record-jar_ "${pkgs}" "${jar}"; |
|---|
| 4382 | fi; |
|---|
| 4383 | java-pkg_do_write_ |
|---|
| 4384 | } |
|---|
| 4385 | java-pkg_register-environment-variable () |
|---|
| 4386 | { |
|---|
| 4387 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4388 | java-pkg_check-phase install; |
|---|
| 4389 | [[ ${#} != 2 ]] && die "${FUNCNAME} takes two arguments"; |
|---|
| 4390 | echo "${1}=\"${2}\"" >> ${JAVA_PKG_EXTRA_ENV}; |
|---|
| 4391 | JAVA_PKG_EXTRA_ENV_VARS="${JAVA_PKG_EXTRA_ENV_VARS} ${1}"; |
|---|
| 4392 | java-pkg_do_write_ |
|---|
| 4393 | } |
|---|
| 4394 | java-pkg_register-optional-dependency () |
|---|
| 4395 | { |
|---|
| 4396 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4397 | java-pkg_check-phase install; |
|---|
| 4398 | [[ ${#} -gt 2 ]] && die "${FUNCNAME} takes at most two arguments"; |
|---|
| 4399 | local pkgs="${1}"; |
|---|
| 4400 | local jar="${2}"; |
|---|
| 4401 | [[ -z "${pkgs}" ]] && die "${FUNCNAME} called with no package(s) specified"; |
|---|
| 4402 | if [[ "${EAPI}" == "1" ]]; then |
|---|
| 4403 | pkgs="${pkgs//:/-}"; |
|---|
| 4404 | fi; |
|---|
| 4405 | if [[ -z "${jar}" ]]; then |
|---|
| 4406 | for pkg in ${pkgs//,/ }; |
|---|
| 4407 | do |
|---|
| 4408 | java-pkg_record-jar_ --optional "${pkg}"; |
|---|
| 4409 | done; |
|---|
| 4410 | else |
|---|
| 4411 | [[ ${pkgs} == *,* ]] && die "${FUNCNAME} called with both package list and jar name"; |
|---|
| 4412 | java-pkg_record-jar_ --optional "${pkgs}" "${jar}"; |
|---|
| 4413 | fi; |
|---|
| 4414 | java-pkg_do_write_ |
|---|
| 4415 | } |
|---|
| 4416 | java-pkg_regjar () |
|---|
| 4417 | { |
|---|
| 4418 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4419 | java-pkg_check-phase install; |
|---|
| 4420 | [[ ${#} -lt 1 ]] && die "at least one argument needed"; |
|---|
| 4421 | java-pkg_init_paths_; |
|---|
| 4422 | local jar jar_dir jar_file; |
|---|
| 4423 | for jar in "${@}"; |
|---|
| 4424 | do |
|---|
| 4425 | if [[ -e "${jar}" || -e "${D}${jar}" ]]; then |
|---|
| 4426 | [[ -d "${jar}" || -d "${D}${jar}" ]] && die "Called ${FUNCNAME} on a directory $*"; |
|---|
| 4427 | is-java-strict && java-pkg_verify-classes "${jar}"; |
|---|
| 4428 | java-pkg_append_ JAVA_PKG_CLASSPATH "${jar#${D}}"; |
|---|
| 4429 | else |
|---|
| 4430 | if [[ ${jar} = *\** ]]; then |
|---|
| 4431 | eerror "The argument ${jar} to ${FUNCNAME}"; |
|---|
| 4432 | eerror "has * in it. If you want it to glob in"; |
|---|
| 4433 | eerror '${D} add ${D} to the argument.'; |
|---|
| 4434 | fi; |
|---|
| 4435 | debug-print "${jar} or ${D}${jar} not found"; |
|---|
| 4436 | die "${jar} does not exist"; |
|---|
| 4437 | fi; |
|---|
| 4438 | done; |
|---|
| 4439 | java-pkg_do_write_ |
|---|
| 4440 | } |
|---|
| 4441 | java-pkg_regso () |
|---|
| 4442 | { |
|---|
| 4443 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4444 | java-pkg_check-phase install; |
|---|
| 4445 | [[ ${#} -lt 1 ]] && die "${FUNCNAME} requires at least one argument"; |
|---|
| 4446 | java-pkg_init_paths_; |
|---|
| 4447 | local lib target_dir; |
|---|
| 4448 | for lib in "$@"; |
|---|
| 4449 | do |
|---|
| 4450 | if [[ -e "${lib}" ]]; then |
|---|
| 4451 | target_dir="$(java-pkg_expand_dir_ ${lib})"; |
|---|
| 4452 | java-pkg_append_ JAVA_PKG_LIBRARY "/${target_dir#${D}}"; |
|---|
| 4453 | else |
|---|
| 4454 | if [[ -e "${D}${lib}" ]]; then |
|---|
| 4455 | target_dir="$(java-pkg_expand_dir_ ${D}${lib})"; |
|---|
| 4456 | java-pkg_append_ JAVA_PKG_LIBRARY "${target_dir}"; |
|---|
| 4457 | else |
|---|
| 4458 | die "${lib} does not exist"; |
|---|
| 4459 | fi; |
|---|
| 4460 | fi; |
|---|
| 4461 | done; |
|---|
| 4462 | java-pkg_do_write_ |
|---|
| 4463 | } |
|---|
| 4464 | java-pkg_set-current-vm () |
|---|
| 4465 | { |
|---|
| 4466 | export GENTOO_VM=${1} |
|---|
| 4467 | } |
|---|
| 4468 | java-pkg_setup-vm () |
|---|
| 4469 | { |
|---|
| 4470 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4471 | export LANG="C" LC_ALL="C"; |
|---|
| 4472 | local vendor="$(java-pkg_get-vm-vendor)"; |
|---|
| 4473 | if [[ "${vendor}" == "sun" ]] && java-pkg_is-vm-version-ge "1.5"; then |
|---|
| 4474 | addpredict "/dev/random"; |
|---|
| 4475 | else |
|---|
| 4476 | if [[ "${vendor}" == "ibm" ]]; then |
|---|
| 4477 | addpredict "/proc/self/maps"; |
|---|
| 4478 | addpredict "/proc/cpuinfo"; |
|---|
| 4479 | else |
|---|
| 4480 | if [[ "${vendor}" == "jrockit" ]]; then |
|---|
| 4481 | addpredict "/proc/cpuinfo"; |
|---|
| 4482 | fi; |
|---|
| 4483 | fi; |
|---|
| 4484 | fi |
|---|
| 4485 | } |
|---|
| 4486 | java-pkg_sointo () |
|---|
| 4487 | { |
|---|
| 4488 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4489 | JAVA_PKG_LIBDEST="${1}" |
|---|
| 4490 | } |
|---|
| 4491 | java-pkg_switch-vm () |
|---|
| 4492 | { |
|---|
| 4493 | debug-print-function ${FUNCNAME} $*; |
|---|
| 4494 | if java-pkg_needs-vm; then |
|---|
| 4495 | if [[ -n "${JAVA_PKG_FORCE_VM}" ]]; then |
|---|
| 4496 | debug-print "JAVA_PKG_FORCE_VM used: ${JAVA_PKG_FORCE_VM}"; |
|---|
| 4497 | export GENTOO_VM="${JAVA_PKG_FORCE_VM}"; |
|---|
| 4498 | else |
|---|
| 4499 | if [[ "${JAVA_PKG_ALLOW_VM_CHANGE}" == "yes" ]]; then |
|---|
| 4500 | debug-print "depend-java-query: NV_DEPEND: ${JAVA_PKG_NV_DEPEND:-${DEPEND}}"; |
|---|
| 4501 | GENTOO_VM="$(depend-java-query --get-vm "${JAVA_PKG_NV_DEPEND:-${DEPEND}}")"; |
|---|
| 4502 | if [[ -z "${GENTOO_VM}" || "${GENTOO_VM}" == "None" ]]; then |
|---|
| 4503 | eerror "Unable to determine VM for building from dependencies:"; |
|---|
| 4504 | echo "NV_DEPEND: ${JAVA_PKG_NV_DEPEND:-${DEPEND}}"; |
|---|
| 4505 | die "Failed to determine VM for building."; |
|---|
| 4506 | else |
|---|
| 4507 | export GENTOO_VM; |
|---|
| 4508 | fi; |
|---|
| 4509 | else |
|---|
| 4510 | java-pkg_ensure-vm-version-sufficient; |
|---|
| 4511 | fi; |
|---|
| 4512 | fi; |
|---|
| 4513 | debug-print "Using: $(java-config -f)"; |
|---|
| 4514 | java-pkg_setup-vm; |
|---|
| 4515 | export JAVA=$(java-config --java); |
|---|
| 4516 | export JAVAC=$(java-config --javac); |
|---|
| 4517 | JAVACFLAGS="$(java-pkg_javac-args)"; |
|---|
| 4518 | if [[ ${?} != 0 ]]; then |
|---|
| 4519 | eerror "There was a problem determining JAVACFLAGS: ${JAVACFLAGS}"; |
|---|
| 4520 | die "java-pkg_javac-args failed"; |
|---|
| 4521 | fi; |
|---|
| 4522 | [[ -n ${JAVACFLAGS_EXTRA} ]] && JAVACFLAGS="${JAVACFLAGS_EXTRA} ${JAVACFLAGS}"; |
|---|
| 4523 | export JAVACFLAGS; |
|---|
| 4524 | export JAVA_HOME="$(java-config -g JAVA_HOME)"; |
|---|
| 4525 | export JDK_HOME=${JAVA_HOME}; |
|---|
| 4526 | java-pkg_append_ LD_LIBRARY_PATH "$(java-config -g LDPATH)"; |
|---|
| 4527 | local tann="${T}/announced-vm"; |
|---|
| 4528 | if [[ -n "${JAVA_PKG_DEBUG}" ]] || [[ ! -f "${tann}" ]]; then |
|---|
| 4529 | einfo "Using: $(java-config -f)"; |
|---|
| 4530 | [[ ! -f "${tann}" ]] && touch "${tann}"; |
|---|
| 4531 | fi; |
|---|
| 4532 | else |
|---|
| 4533 | [[ -n "${JAVA_PKG_DEBUG}" ]] && ewarn "!!! This package inherits java-pkg but doesn't depend on a JDK. -bin or broken dependency!!!"; |
|---|
| 4534 | fi |
|---|
| 4535 | } |
|---|
| 4536 | java-pkg_verify-classes () |
|---|
| 4537 | { |
|---|
| 4538 | local version_verify="/usr/bin/class-version-verify.py"; |
|---|
| 4539 | if [[ ! -x "${version_verify}" ]]; then |
|---|
| 4540 | version_verify="/usr/$(get_libdir)/javatoolkit/bin/class-version-verify.py"; |
|---|
| 4541 | fi; |
|---|
| 4542 | if [[ ! -x "${version_verify}" ]]; then |
|---|
| 4543 | ewarn "Unable to perform class version checks as"; |
|---|
| 4544 | ewarn "class-version-verify.py is unavailable"; |
|---|
| 4545 | ewarn "Please install dev-java/javatoolkit."; |
|---|
| 4546 | return; |
|---|
| 4547 | fi; |
|---|
| 4548 | local target=$(java-pkg_get-target); |
|---|
| 4549 | local result; |
|---|
| 4550 | local log="${T}/class-version-verify.log"; |
|---|
| 4551 | if [[ -n "${1}" ]]; then |
|---|
| 4552 | ${version_verify} -v -t ${target} "${1}" > "${log}"; |
|---|
| 4553 | result=$?; |
|---|
| 4554 | else |
|---|
| 4555 | ebegin "Verifying java class versions (target: ${target})"; |
|---|
| 4556 | ${version_verify} -v -t ${target} -r "${D}" > "${log}"; |
|---|
| 4557 | result=$?; |
|---|
| 4558 | eend ${result}; |
|---|
| 4559 | fi; |
|---|
| 4560 | [[ -n ${JAVA_PKG_DEBUG} ]] && cat "${log}"; |
|---|
| 4561 | if [[ ${result} != 0 ]]; then |
|---|
| 4562 | eerror "Incorrect bytecode version found"; |
|---|
| 4563 | [[ -n "${1}" ]] && eerror "in file: ${1}"; |
|---|
| 4564 | eerror "See ${log} for more details."; |
|---|
| 4565 | die "Incorrect bytecode found"; |
|---|
| 4566 | fi |
|---|
| 4567 | } |
|---|
| 4568 | java-utils-2_pkg_preinst () |
|---|
| 4569 | { |
|---|
| 4570 | if is-java-strict; then |
|---|
| 4571 | if has_version dev-java/java-dep-check; then |
|---|
| 4572 | [[ -e "${JAVA_PKG_ENV}" ]] || return; |
|---|
| 4573 | local output=$(GENTOO_VM= java-dep-check --image "${D}" "${JAVA_PKG_ENV}"); |
|---|
| 4574 | if [[ -n ${output} && has_version < =dev-java/java-dep-check-0.2 ]]; then |
|---|
| 4575 | ewarn "Possibly unneeded dependencies found in package.env:"; |
|---|
| 4576 | for dep in ${output}; |
|---|
| 4577 | do |
|---|
| 4578 | ewarn "\t${dep}"; |
|---|
| 4579 | done; |
|---|
| 4580 | fi; |
|---|
| 4581 | if [[ -n ${output} && has_version > dev-java/java-dep-check-0.2 ]]; then |
|---|
| 4582 | ewarn "${output}"; |
|---|
| 4583 | fi; |
|---|
| 4584 | else |
|---|
| 4585 | eerror "Install dev-java/java-dep-check for dependency checking"; |
|---|
| 4586 | fi; |
|---|
| 4587 | fi |
|---|
| 4588 | } |
|---|
| 4589 | java-utils-2_src_prepare () |
|---|
| 4590 | { |
|---|
| 4591 | [[ ${EBUILD_PHASE} == prepare ]] && java-pkg_func-exists java_prepare && java_prepare; |
|---|
| 4592 | if [[ ! -e "${T}/java-utils-2_src_prepare-run" ]] && is-java-strict; then |
|---|
| 4593 | echo "Searching for bundled jars:"; |
|---|
| 4594 | java-pkg_find-normal-jars || echo "None found."; |
|---|
| 4595 | echo "Searching for bundled classes (no output if none found):"; |
|---|
| 4596 | find "${WORKDIR}" -name "*.class"; |
|---|
| 4597 | echo "Search done."; |
|---|
| 4598 | fi; |
|---|
| 4599 | touch "${T}/java-utils-2_src_prepare-run" |
|---|
| 4600 | } |
|---|
| 4601 | make_desktop_entry () |
|---|
| 4602 | { |
|---|
| 4603 | [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1; |
|---|
| 4604 | local exec=${1}; |
|---|
| 4605 | local name=${2:-${PN}}; |
|---|
| 4606 | local icon=${3:-${PN}}; |
|---|
| 4607 | local type=${4}; |
|---|
| 4608 | local path=${5}; |
|---|
| 4609 | if [[ -z ${type} ]]; then |
|---|
| 4610 | local catmaj=${CATEGORY%%-*}; |
|---|
| 4611 | local catmin=${CATEGORY##*-}; |
|---|
| 4612 | case ${catmaj} in |
|---|
| 4613 | app) |
|---|
| 4614 | case ${catmin} in |
|---|
| 4615 | accessibility) |
|---|
| 4616 | type=Accessibility |
|---|
| 4617 | ;; |
|---|
| 4618 | admin) |
|---|
| 4619 | type=System |
|---|
| 4620 | ;; |
|---|
| 4621 | antivirus) |
|---|
| 4622 | type=System |
|---|
| 4623 | ;; |
|---|
| 4624 | arch) |
|---|
| 4625 | type=Archiving |
|---|
| 4626 | ;; |
|---|
| 4627 | backup) |
|---|
| 4628 | type=Archiving |
|---|
| 4629 | ;; |
|---|
| 4630 | cdr) |
|---|
| 4631 | type=DiscBurning |
|---|
| 4632 | ;; |
|---|
| 4633 | dicts) |
|---|
| 4634 | type=Dictionary |
|---|
| 4635 | ;; |
|---|
| 4636 | doc) |
|---|
| 4637 | type=Documentation |
|---|
| 4638 | ;; |
|---|
| 4639 | editors) |
|---|
| 4640 | type=TextEditor |
|---|
| 4641 | ;; |
|---|
| 4642 | emacs) |
|---|
| 4643 | type=TextEditor |
|---|
| 4644 | ;; |
|---|
| 4645 | emulation) |
|---|
| 4646 | type=Emulator |
|---|
| 4647 | ;; |
|---|
| 4648 | laptop) |
|---|
| 4649 | type=HardwareSettings |
|---|
| 4650 | ;; |
|---|
| 4651 | office) |
|---|
| 4652 | type=Office |
|---|
| 4653 | ;; |
|---|
| 4654 | pda) |
|---|
| 4655 | type=PDA |
|---|
| 4656 | ;; |
|---|
| 4657 | vim) |
|---|
| 4658 | type=TextEditor |
|---|
| 4659 | ;; |
|---|
| 4660 | xemacs) |
|---|
| 4661 | type=TextEditor |
|---|
| 4662 | ;; |
|---|
| 4663 | *) |
|---|
| 4664 | type= |
|---|
| 4665 | ;; |
|---|
| 4666 | esac |
|---|
| 4667 | ;; |
|---|
| 4668 | dev) |
|---|
| 4669 | type="Development" |
|---|
| 4670 | ;; |
|---|
| 4671 | games) |
|---|
| 4672 | case ${catmin} in |
|---|
| 4673 | action | fps) |
|---|
| 4674 | type=ActionGame |
|---|
| 4675 | ;; |
|---|
| 4676 | arcade) |
|---|
| 4677 | type=ArcadeGame |
|---|
| 4678 | ;; |
|---|
| 4679 | board) |
|---|
| 4680 | type=BoardGame |
|---|
| 4681 | ;; |
|---|
| 4682 | emulation) |
|---|
| 4683 | type=Emulator |
|---|
| 4684 | ;; |
|---|
| 4685 | kids) |
|---|
| 4686 | type=KidsGame |
|---|
| 4687 | ;; |
|---|
| 4688 | puzzle) |
|---|
| 4689 | type=LogicGame |
|---|
| 4690 | ;; |
|---|
| 4691 | roguelike) |
|---|
| 4692 | type=RolePlaying |
|---|
| 4693 | ;; |
|---|
| 4694 | rpg) |
|---|
| 4695 | type=RolePlaying |
|---|
| 4696 | ;; |
|---|
| 4697 | simulation) |
|---|
| 4698 | type=Simulation |
|---|
| 4699 | ;; |
|---|
| 4700 | sports) |
|---|
| 4701 | type=SportsGame |
|---|
| 4702 | ;; |
|---|
| 4703 | strategy) |
|---|
| 4704 | type=StrategyGame |
|---|
| 4705 | ;; |
|---|
| 4706 | *) |
|---|
| 4707 | type= |
|---|
| 4708 | ;; |
|---|
| 4709 | esac; |
|---|
| 4710 | type="Game;${type}" |
|---|
| 4711 | ;; |
|---|
| 4712 | gnome) |
|---|
| 4713 | type="Gnome;GTK" |
|---|
| 4714 | ;; |
|---|
| 4715 | kde) |
|---|
| 4716 | type="KDE;Qt" |
|---|
| 4717 | ;; |
|---|
| 4718 | mail) |
|---|
| 4719 | type="Network;Email" |
|---|
| 4720 | ;; |
|---|
| 4721 | media) |
|---|
| 4722 | case ${catmin} in |
|---|
| 4723 | gfx) |
|---|
| 4724 | type=Graphics |
|---|
| 4725 | ;; |
|---|
| 4726 | radio) |
|---|
| 4727 | type=Tuner |
|---|
| 4728 | ;; |
|---|
| 4729 | sound) |
|---|
| 4730 | type=Audio |
|---|
| 4731 | ;; |
|---|
| 4732 | tv) |
|---|
| 4733 | type=TV |
|---|
| 4734 | ;; |
|---|
| 4735 | video) |
|---|
| 4736 | type=Video |
|---|
| 4737 | ;; |
|---|
| 4738 | *) |
|---|
| 4739 | type= |
|---|
| 4740 | ;; |
|---|
| 4741 | esac; |
|---|
| 4742 | type="AudioVideo;${type}" |
|---|
| 4743 | ;; |
|---|
| 4744 | net) |
|---|
| 4745 | case ${catmin} in |
|---|
| 4746 | dialup) |
|---|
| 4747 | type=Dialup |
|---|
| 4748 | ;; |
|---|
| 4749 | ftp) |
|---|
| 4750 | type=FileTransfer |
|---|
| 4751 | ;; |
|---|
| 4752 | im) |
|---|
| 4753 | type=InstantMessaging |
|---|
| 4754 | ;; |
|---|
| 4755 | irc) |
|---|
| 4756 | type=IRCClient |
|---|
| 4757 | ;; |
|---|
| 4758 | mail) |
|---|
| 4759 | type=Email |
|---|
| 4760 | ;; |
|---|
| 4761 | news) |
|---|
| 4762 | type=News |
|---|
| 4763 | ;; |
|---|
| 4764 | nntp) |
|---|
| 4765 | type=News |
|---|
| 4766 | ;; |
|---|
| 4767 | p2p) |
|---|
| 4768 | type=FileTransfer |
|---|
| 4769 | ;; |
|---|
| 4770 | *) |
|---|
| 4771 | type= |
|---|
| 4772 | ;; |
|---|
| 4773 | esac; |
|---|
| 4774 | type="Network;${type}" |
|---|
| 4775 | ;; |
|---|
| 4776 | sci) |
|---|
| 4777 | case ${catmin} in |
|---|
| 4778 | astro*) |
|---|
| 4779 | type=Astronomy |
|---|
| 4780 | ;; |
|---|
| 4781 | bio*) |
|---|
| 4782 | type=Biology |
|---|
| 4783 | ;; |
|---|
| 4784 | calc*) |
|---|
| 4785 | type=Calculator |
|---|
| 4786 | ;; |
|---|
| 4787 | chem*) |
|---|
| 4788 | type=Chemistry |
|---|
| 4789 | ;; |
|---|
| 4790 | elec*) |
|---|
| 4791 | type=Electronics |
|---|
| 4792 | ;; |
|---|
| 4793 | geo*) |
|---|
| 4794 | type=Geology |
|---|
| 4795 | ;; |
|---|
| 4796 | math*) |
|---|
| 4797 | type=Math |
|---|
| 4798 | ;; |
|---|
| 4799 | physics) |
|---|
| 4800 | type=Physics |
|---|
| 4801 | ;; |
|---|
| 4802 | visual*) |
|---|
| 4803 | type=DataVisualization |
|---|
| 4804 | ;; |
|---|
| 4805 | *) |
|---|
| 4806 | type= |
|---|
| 4807 | ;; |
|---|
| 4808 | esac; |
|---|
| 4809 | type="Science;${type}" |
|---|
| 4810 | ;; |
|---|
| 4811 | sys) |
|---|
| 4812 | type="System" |
|---|
| 4813 | ;; |
|---|
| 4814 | www) |
|---|
| 4815 | case ${catmin} in |
|---|
| 4816 | client) |
|---|
| 4817 | type=WebBrowser |
|---|
| 4818 | ;; |
|---|
| 4819 | *) |
|---|
| 4820 | type= |
|---|
| 4821 | ;; |
|---|
| 4822 | esac; |
|---|
| 4823 | type="Network" |
|---|
| 4824 | ;; |
|---|
| 4825 | *) |
|---|
| 4826 | type= |
|---|
| 4827 | ;; |
|---|
| 4828 | esac; |
|---|
| 4829 | fi; |
|---|
| 4830 | if [ "${SLOT}" == "0" ]; then |
|---|
| 4831 | local desktop_name="${PN}"; |
|---|
| 4832 | else |
|---|
| 4833 | local desktop_name="${PN}-${SLOT}"; |
|---|
| 4834 | fi; |
|---|
| 4835 | local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop"; |
|---|
| 4836 | cat > "${desktop}" <<-EOF |
|---|
| 4837 | [Desktop Entry] |
|---|
| 4838 | Version=1.0 |
|---|
| 4839 | Name=${name} |
|---|
| 4840 | Type=Application |
|---|
| 4841 | Comment=${DESCRIPTION} |
|---|
| 4842 | Exec=${exec} |
|---|
| 4843 | TryExec=${exec%% *} |
|---|
| 4844 | Icon=${icon} |
|---|
| 4845 | Categories=${type}; |
|---|
| 4846 | EOF |
|---|
| 4847 | |
|---|
| 4848 | [[ -n ${path} ]] && echo "Path=${path}" >> "${desktop}"; |
|---|
| 4849 | ( insinto /usr/share/applications; |
|---|
| 4850 | doins "${desktop}" ) |
|---|
| 4851 | } |
|---|
| 4852 | make_session_desktop () |
|---|
| 4853 | { |
|---|
| 4854 | [[ -z $1 ]] && eerror "$0: You must specify the title" && return 1; |
|---|
| 4855 | [[ -z $2 ]] && eerror "$0: You must specify the command" && return 1; |
|---|
| 4856 | local title=$1; |
|---|
| 4857 | local command=$2; |
|---|
| 4858 | local desktop=${T}/${wm:-${PN}}.desktop; |
|---|
| 4859 | shift 2; |
|---|
| 4860 | cat > "${desktop}" <<-EOF |
|---|
| 4861 | [Desktop Entry] |
|---|
| 4862 | Name=${title} |
|---|
| 4863 | Comment=This session logs you into ${title} |
|---|
| 4864 | Exec=${command} $* |
|---|
| 4865 | TryExec=${command} |
|---|
| 4866 | Type=XSession |
|---|
| 4867 | EOF |
|---|
| 4868 | |
|---|
| 4869 | ( insinto /usr/share/xsessions; |
|---|
| 4870 | doins "${desktop}" ) |
|---|
| 4871 | } |
|---|
| 4872 | make_wrapper () |
|---|
| 4873 | { |
|---|
| 4874 | local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5; |
|---|
| 4875 | local tmpwrapper=$(emktemp); |
|---|
| 4876 | cat > "${tmpwrapper}" <<EOF |
|---|
| 4877 | #!/bin/sh |
|---|
| 4878 | cd "${chdir:-.}" |
|---|
| 4879 | if [ -n "${libdir}" ] ; then |
|---|
| 4880 | if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then |
|---|
| 4881 | export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}" |
|---|
| 4882 | else |
|---|
| 4883 | export LD_LIBRARY_PATH="${libdir}" |
|---|
| 4884 | fi |
|---|
| 4885 | fi |
|---|
| 4886 | exec ${bin} "\$@" |
|---|
| 4887 | EOF |
|---|
| 4888 | |
|---|
| 4889 | chmod go+rx "${tmpwrapper}"; |
|---|
| 4890 | if [[ -n ${path} ]]; then |
|---|
| 4891 | ( exeinto "${path}"; |
|---|
| 4892 | newexe "${tmpwrapper}" "${wrapper}" ) || die; |
|---|
| 4893 | else |
|---|
| 4894 | newbin "${tmpwrapper}" "${wrapper}" || die; |
|---|
| 4895 | fi |
|---|
| 4896 | } |
|---|
| 4897 | multilib_env () |
|---|
| 4898 | { |
|---|
| 4899 | local CTARGET=${1:-${CTARGET}}; |
|---|
| 4900 | case ${CTARGET} in |
|---|
| 4901 | x86_64*) |
|---|
| 4902 | export CFLAGS_x86=${CFLAGS_x86--m32}; |
|---|
| 4903 | export CHOST_x86=${CTARGET/x86_64/i686}; |
|---|
| 4904 | export CTARGET_x86=${CHOST_x86}; |
|---|
| 4905 | export CDEFINE_x86="__i386__"; |
|---|
| 4906 | export LIBDIR_x86="lib"; |
|---|
| 4907 | export CFLAGS_amd64=${CFLAGS_amd64--m64}; |
|---|
| 4908 | export CHOST_amd64=${CTARGET}; |
|---|
| 4909 | export CTARGET_amd64=${CHOST_amd64}; |
|---|
| 4910 | export CDEFINE_amd64="__x86_64__"; |
|---|
| 4911 | export LIBDIR_amd64="lib64"; |
|---|
| 4912 | export MULTILIB_ABIS="amd64 x86"; |
|---|
| 4913 | export DEFAULT_ABI="amd64" |
|---|
| 4914 | ;; |
|---|
| 4915 | mips64*) |
|---|
| 4916 | export CFLAGS_o32=${CFLAGS_o32--mabi=32}; |
|---|
| 4917 | export CHOST_o32=${CTARGET/mips64/mips}; |
|---|
| 4918 | export CTARGET_o32=${CHOST_o32}; |
|---|
| 4919 | export CDEFINE_o32="_MIPS_SIM == _ABIO32"; |
|---|
| 4920 | export LIBDIR_o32="lib"; |
|---|
| 4921 | export CFLAGS_n32=${CFLAGS_n32--mabi=n32}; |
|---|
| 4922 | export CHOST_n32=${CTARGET}; |
|---|
| 4923 | export CTARGET_n32=${CHOST_n32}; |
|---|
| 4924 | export CDEFINE_n32="_MIPS_SIM == _ABIN32"; |
|---|
| 4925 | export LIBDIR_n32="lib32"; |
|---|
| 4926 | export CFLAGS_n64=${CFLAGS_n64--mabi=64}; |
|---|
| 4927 | export CHOST_n64=${CTARGET}; |
|---|
| 4928 | export CTARGET_n64=${CHOST_n64}; |
|---|
| 4929 | export CDEFINE_n64="_MIPS_SIM == _ABI64"; |
|---|
| 4930 | export LIBDIR_n64="lib64"; |
|---|
| 4931 | export MULTILIB_ABIS="n64 n32 o32"; |
|---|
| 4932 | export DEFAULT_ABI="n32" |
|---|
| 4933 | ;; |
|---|
| 4934 | powerpc64*) |
|---|
| 4935 | export CFLAGS_ppc=${CFLAGS_ppc--m32}; |
|---|
| 4936 | export CHOST_ppc=${CTARGET/powerpc64/powerpc}; |
|---|
| 4937 | export CTARGET_ppc=${CHOST_ppc}; |
|---|
| 4938 | export CDEFINE_ppc="!__powerpc64__"; |
|---|
| 4939 | export LIBDIR_ppc="lib"; |
|---|
| 4940 | export CFLAGS_ppc64=${CFLAGS_ppc64--m64}; |
|---|
| 4941 | export CHOST_ppc64=${CTARGET}; |
|---|
| 4942 | export CTARGET_ppc64=${CHOST_ppc64}; |
|---|
| 4943 | export CDEFINE_ppc64="__powerpc64__"; |
|---|
| 4944 | export LIBDIR_ppc64="lib64"; |
|---|
| 4945 | export MULTILIB_ABIS="ppc64 ppc"; |
|---|
| 4946 | export DEFAULT_ABI="ppc64" |
|---|
| 4947 | ;; |
|---|
| 4948 | s390x*) |
|---|
| 4949 | export CFLAGS_s390=${CFLAGS_s390--m31}; |
|---|
| 4950 | export CHOST_s390=${CTARGET/s390x/s390}; |
|---|
| 4951 | export CTARGET_s390=${CHOST_s390}; |
|---|
| 4952 | export CDEFINE_s390="!__s390x__"; |
|---|
| 4953 | export LIBDIR_s390="lib"; |
|---|
| 4954 | export CFLAGS_s390x=${CFLAGS_s390x--m64}; |
|---|
| 4955 | export CHOST_s390x=${CTARGET}; |
|---|
| 4956 | export CTARGET_s390x=${CHOST_s390x}; |
|---|
| 4957 | export CDEFINE_s390x="__s390x__"; |
|---|
| 4958 | export LIBDIR_s390x="lib64"; |
|---|
| 4959 | export MULTILIB_ABIS="s390x s390"; |
|---|
| 4960 | export DEFAULT_ABI="s390x" |
|---|
| 4961 | ;; |
|---|
| 4962 | sparc*) |
|---|
| 4963 | export CFLAGS_sparc32=${CFLAGS_sparc32}; |
|---|
| 4964 | export CHOST_sparc32=${CTARGET/sparc64/sparc}; |
|---|
| 4965 | export CTARGET_sparc32=${CHOST_sparc32}; |
|---|
| 4966 | export CDEFINE_sparc32="!__arch64__"; |
|---|
| 4967 | export LIBDIR_sparc32="lib"; |
|---|
| 4968 | export CFLAGS_sparc64=${CFLAGS_sparc64--m64}; |
|---|
| 4969 | export CHOST_sparc64=${CTARGET}; |
|---|
| 4970 | export CTARGET_sparc64=${CHOST_sparc64}; |
|---|
| 4971 | export CDEFINE_sparc64="__arch64__"; |
|---|
| 4972 | export LIBDIR_sparc64="lib64"; |
|---|
| 4973 | export MULTILIB_ABIS="${MULTILIB_ABIS-sparc64 sparc32}"; |
|---|
| 4974 | export DEFAULT_ABI="${DEFAULT_ABI-sparc64}" |
|---|
| 4975 | ;; |
|---|
| 4976 | *) |
|---|
| 4977 | export MULTILIB_ABIS="default"; |
|---|
| 4978 | export DEFAULT_ABI="default" |
|---|
| 4979 | ;; |
|---|
| 4980 | esac |
|---|
| 4981 | } |
|---|
| 4982 | multilib_toolchain_setup () |
|---|
| 4983 | { |
|---|
| 4984 | local v vv; |
|---|
| 4985 | export ABI=$1; |
|---|
| 4986 | if [[ ${ABI} != ${DEFAULT_ABI} ]]; then |
|---|
| 4987 | if [[ ${DEFAULT_ABI_SAVED} != "true" ]]; then |
|---|
| 4988 | for v in CHOST CBUILD AS CC CXX LD; |
|---|
| 4989 | do |
|---|
| 4990 | export __abi_saved_${v}="${!v}"; |
|---|
| 4991 | done; |
|---|
| 4992 | export DEFAULT_ABI_SAVED="true"; |
|---|
| 4993 | fi; |
|---|
| 4994 | export CHOST=$(get_abi_CHOST ${DEFAULT_ABI}); |
|---|
| 4995 | export AS="$(tc-getAS) $(get_abi_ASFLAGS)"; |
|---|
| 4996 | export CC="$(tc-getCC) $(get_abi_CFLAGS)"; |
|---|
| 4997 | export CXX="$(tc-getCXX) $(get_abi_CFLAGS)"; |
|---|
| 4998 | export LD="$(tc-getLD) $(get_abi_LDFLAGS)"; |
|---|
| 4999 | export CHOST=$(get_abi_CHOST $1); |
|---|
| 5000 | export CBUILD=$(get_abi_CHOST $1); |
|---|
| 5001 | else |
|---|
| 5002 | if [[ ${DEFAULT_ABI_SAVED} == "true" ]]; then |
|---|
| 5003 | for v in CHOST CBUILD AS CC CXX LD; |
|---|
| 5004 | do |
|---|
| 5005 | vv="__abi_saved_${v}"; |
|---|
| 5006 | export ${v}=${!vv}; |
|---|
| 5007 | done; |
|---|
| 5008 | fi; |
|---|
| 5009 | fi |
|---|
| 5010 | } |
|---|
| 5011 | need_apache () |
|---|
| 5012 | { |
|---|
| 5013 | debug-print-function $FUNCNAME $*; |
|---|
| 5014 | need_apache2 |
|---|
| 5015 | } |
|---|
| 5016 | need_apache2 () |
|---|
| 5017 | { |
|---|
| 5018 | debug-print-function $FUNCNAME $*; |
|---|
| 5019 | DEPEND="${DEPEND} ${APACHE2_DEPEND}"; |
|---|
| 5020 | RDEPEND="${RDEPEND} ${APACHE2_DEPEND}"; |
|---|
| 5021 | _init_apache2 |
|---|
| 5022 | } |
|---|
| 5023 | need_apache2_2 () |
|---|
| 5024 | { |
|---|
| 5025 | debug-print-function $FUNCNAME $*; |
|---|
| 5026 | DEPEND="${DEPEND} ${APACHE2_2_DEPEND}"; |
|---|
| 5027 | RDEPEND="${RDEPEND} ${APACHE2_2_DEPEND}"; |
|---|
| 5028 | _init_apache2 |
|---|
| 5029 | } |
|---|
| 5030 | newicon () |
|---|
| 5031 | { |
|---|
| 5032 | ( insinto /usr/share/pixmaps; |
|---|
| 5033 | newins "$@" ) |
|---|
| 5034 | } |
|---|
| 5035 | newmenu () |
|---|
| 5036 | { |
|---|
| 5037 | ( insinto /usr/share/applications; |
|---|
| 5038 | newins "$@" ) |
|---|
| 5039 | } |
|---|
| 5040 | number_abis () |
|---|
| 5041 | { |
|---|
| 5042 | get_install_abis | wc -w |
|---|
| 5043 | } |
|---|
| 5044 | perl-module_pkg_postinst () |
|---|
| 5045 | { |
|---|
| 5046 | : |
|---|
| 5047 | } |
|---|
| 5048 | perl-module_pkg_postrm () |
|---|
| 5049 | { |
|---|
| 5050 | : |
|---|
| 5051 | } |
|---|
| 5052 | perl-module_pkg_preinst () |
|---|
| 5053 | { |
|---|
| 5054 | ${perlinfo_done} || perlinfo |
|---|
| 5055 | } |
|---|
| 5056 | perl-module_pkg_prerm () |
|---|
| 5057 | { |
|---|
| 5058 | : |
|---|
| 5059 | } |
|---|
| 5060 | perl-module_pkg_setup () |
|---|
| 5061 | { |
|---|
| 5062 | ${perlinfo_done} || perlinfo |
|---|
| 5063 | } |
|---|
| 5064 | perl-module_src_compile () |
|---|
| 5065 | { |
|---|
| 5066 | ${perlinfo_done} || perlinfo; |
|---|
| 5067 | has "${EAPI:-0}" 0 1 && perl-module_src_prep; |
|---|
| 5068 | if [[ -f Build ]]; then |
|---|
| 5069 | ./Build build || die "compilation failed"; |
|---|
| 5070 | else |
|---|
| 5071 | if [[ -f Makefile ]]; then |
|---|
| 5072 | emake OTHERLDFLAGS="${LDFLAGS}" ${mymake} || die "compilation failed"; |
|---|
| 5073 | fi; |
|---|
| 5074 | fi |
|---|
| 5075 | } |
|---|
| 5076 | perl-module_src_configure () |
|---|
| 5077 | { |
|---|
| 5078 | perl-module_src_prep |
|---|
| 5079 | } |
|---|
| 5080 | perl-module_src_install () |
|---|
| 5081 | { |
|---|
| 5082 | local f; |
|---|
| 5083 | ${perlinfo_done} || perlinfo; |
|---|
| 5084 | if [[ -z ${mytargets} ]]; then |
|---|
| 5085 | case "${CATEGORY}" in |
|---|
| 5086 | dev-perl | perl-core) |
|---|
| 5087 | mytargets="pure_install" |
|---|
| 5088 | ;; |
|---|
| 5089 | *) |
|---|
| 5090 | mytargets="install" |
|---|
| 5091 | ;; |
|---|
| 5092 | esac; |
|---|
| 5093 | fi; |
|---|
| 5094 | if [[ -f Build ]]; then |
|---|
| 5095 | ./Build ${mytargets} || die "./Build ${mytargets} failed"; |
|---|
| 5096 | else |
|---|
| 5097 | if [[ -f Makefile ]]; then |
|---|
| 5098 | emake ${myinst} ${mytargets} || die "emake ${myinst} ${mytargets} failed"; |
|---|
| 5099 | fi; |
|---|
| 5100 | fi; |
|---|
| 5101 | if [[ -d "${D}"/usr/share/man ]]; then |
|---|
| 5102 | find "${D}"/usr/share/man -type f -name "*.3pm" -delete; |
|---|
| 5103 | find "${D}"/usr/share/man -depth -type d -empty -delete; |
|---|
| 5104 | fi; |
|---|
| 5105 | fixlocalpod; |
|---|
| 5106 | for f in Change* CHANGES README* ${mydoc}; |
|---|
| 5107 | do |
|---|
| 5108 | [[ -s "${f}" ]] && dodoc ${f}; |
|---|
| 5109 | done; |
|---|
| 5110 | if [[ -d "${D}/${VENDOR_LIB}" ]]; then |
|---|
| 5111 | find "${D}/${VENDOR_LIB}" -type f -a \( -name .packlist -o \( -name '*.bs' -a -empty \) \) -delete; |
|---|
| 5112 | find "${D}/${VENDOR_LIB}" -depth -mindepth 1 -type d -empty -delete; |
|---|
| 5113 | fi; |
|---|
| 5114 | find "${D}" -type f -not -name '*.so' -print0 | while read -rd '' f; do |
|---|
| 5115 | if file "${f}" | grep -q -i " text"; then |
|---|
| 5116 | if grep -q "${D}" "${f}"; then |
|---|
| 5117 | ewarn "QA: File contains a temporary path ${f}"; |
|---|
| 5118 | fi; |
|---|
| 5119 | sed -i -e "s:${D}:/:g" "${f}"; |
|---|
| 5120 | fi; |
|---|
| 5121 | done |
|---|
| 5122 | } |
|---|
| 5123 | perl-module_src_prep () |
|---|
| 5124 | { |
|---|
| 5125 | [[ "${SRC_PREP}" = "yes" ]] && return 0; |
|---|
| 5126 | SRC_PREP="yes"; |
|---|
| 5127 | ${perlinfo_done} || perlinfo; |
|---|
| 5128 | export PERL_MM_USE_DEFAULT=1; |
|---|
| 5129 | export PERL_EXTUTILS_AUTOINSTALL="--skipdeps"; |
|---|
| 5130 | if [[ "${PREFER_BUILDPL}" == "yes" && -f Build.PL ]]; then |
|---|
| 5131 | einfo "Using Module::Build"; |
|---|
| 5132 | perl Build.PL --installdirs=vendor --libdoc= --destdir="${D}" --create_packlist=0 ${myconf} <<< "${pm_echovar}" || die "Unable to build! (are you using USE=\"build\"?)"; |
|---|
| 5133 | else |
|---|
| 5134 | if [[ -f Makefile.PL ]]; then |
|---|
| 5135 | einfo "Using ExtUtils::MakeMaker"; |
|---|
| 5136 | perl Makefile.PL PREFIX=/usr INSTALLDIRS=vendor INSTALLMAN3DIR='none' DESTDIR="${D}" ${myconf} <<< "${pm_echovar}" || die "Unable to build! (are you using USE=\"build\"?)"; |
|---|
| 5137 | fi; |
|---|
| 5138 | fi; |
|---|
| 5139 | if [[ ! -f Build.PL && ! -f Makefile.PL ]]; then |
|---|
| 5140 | einfo "No Make or Build file detected..."; |
|---|
| 5141 | return; |
|---|
| 5142 | fi |
|---|
| 5143 | } |
|---|
| 5144 | perl-module_src_prepare () |
|---|
| 5145 | { |
|---|
| 5146 | if [[ -n ${PATCHES} ]]; then |
|---|
| 5147 | base_src_unpack autopatch; |
|---|
| 5148 | fi; |
|---|
| 5149 | esvn_clean |
|---|
| 5150 | } |
|---|
| 5151 | perl-module_src_test () |
|---|
| 5152 | { |
|---|
| 5153 | if [[ "${SRC_TEST}" == "do" ]]; then |
|---|
| 5154 | ${perlinfo_done} || perlinfo; |
|---|
| 5155 | if [[ -f Build ]]; then |
|---|
| 5156 | ./Build test || die "test failed"; |
|---|
| 5157 | else |
|---|
| 5158 | if [[ -f Makefile ]]; then |
|---|
| 5159 | emake test || die "test failed"; |
|---|
| 5160 | fi; |
|---|
| 5161 | fi; |
|---|
| 5162 | fi |
|---|
| 5163 | } |
|---|
| 5164 | perl-module_src_unpack () |
|---|
| 5165 | { |
|---|
| 5166 | base_src_unpack unpack; |
|---|
| 5167 | has "${EAPI:-0}" 0 1 && perl-module_src_prepare |
|---|
| 5168 | } |
|---|
| 5169 | perlinfo () |
|---|
| 5170 | { |
|---|
| 5171 | perlinfo_done=true; |
|---|
| 5172 | local f version install{site{arch,lib},archlib,vendor{arch,lib}}; |
|---|
| 5173 | for f in version install{site{arch,lib},archlib,vendor{arch,lib}}; |
|---|
| 5174 | do |
|---|
| 5175 | eval "$(perl -V:${f} )"; |
|---|
| 5176 | done; |
|---|
| 5177 | PERL_VERSION=${version}; |
|---|
| 5178 | SITE_ARCH=${installsitearch}; |
|---|
| 5179 | SITE_LIB=${installsitelib}; |
|---|
| 5180 | ARCH_LIB=${installarchlib}; |
|---|
| 5181 | VENDOR_LIB=${installvendorlib}; |
|---|
| 5182 | VENDOR_ARCH=${installvendorarch} |
|---|
| 5183 | } |
|---|
| 5184 | pkg_config () |
|---|
| 5185 | { |
|---|
| 5186 | einfo ">>> Initializing the database in ${ROOT}${SVN_REPOS_LOC} ..."; |
|---|
| 5187 | if [[ -e "${ROOT}${SVN_REPOS_LOC}/repos" ]]; then |
|---|
| 5188 | echo "A Subversion repository already exists and I will not overwrite it."; |
|---|
| 5189 | echo "Delete \"${ROOT}${SVN_REPOS_LOC}/repos\" first if you're sure you want to have a clean version."; |
|---|
| 5190 | else |
|---|
| 5191 | mkdir -p "${ROOT}${SVN_REPOS_LOC}/conf"; |
|---|
| 5192 | einfo ">>> Populating repository directory ..."; |
|---|
| 5193 | "${ROOT}usr/bin/svnadmin" create "${ROOT}${SVN_REPOS_LOC}/repos"; |
|---|
| 5194 | einfo ">>> Setting repository permissions ..."; |
|---|
| 5195 | SVNSERVE_USER="$(. "${ROOT}etc/conf.d/svnserve"; echo "${SVNSERVE_USER}")"; |
|---|
| 5196 | SVNSERVE_GROUP="$(. "${ROOT}etc/conf.d/svnserve"; echo "${SVNSERVE_GROUP}")"; |
|---|
| 5197 | if use apache2; then |
|---|
| 5198 | [[ -z "${SVNSERVE_USER}" ]] && SVNSERVE_USER="apache"; |
|---|
| 5199 | [[ -z "${SVNSERVE_GROUP}" ]] && SVNSERVE_GROUP="apache"; |
|---|
| 5200 | else |
|---|
| 5201 | [[ -z "${SVNSERVE_USER}" ]] && SVNSERVE_USER="svn"; |
|---|
| 5202 | [[ -z "${SVNSERVE_GROUP}" ]] && SVNSERVE_GROUP="svnusers"; |
|---|
| 5203 | enewgroup "${SVNSERVE_GROUP}"; |
|---|
| 5204 | enewuser "${SVNSERVE_USER}" -1 -1 "${SVN_REPOS_LOC}" "${SVNSERVE_GROUP}"; |
|---|
| 5205 | fi; |
|---|
| 5206 | chown -Rf "${SVNSERVE_USER}:${SVNSERVE_GROUP}" "${ROOT}${SVN_REPOS_LOC}/repos"; |
|---|
| 5207 | chmod -Rf go-rwx "${ROOT}${SVN_REPOS_LOC}/conf"; |
|---|
| 5208 | chmod -Rf o-rwx "${ROOT}${SVN_REPOS_LOC}/repos"; |
|---|
| 5209 | fi |
|---|
| 5210 | } |
|---|
| 5211 | pkg_nofetch () |
|---|
| 5212 | { |
|---|
| 5213 | _eapi0_pkg_nofetch "$@" |
|---|
| 5214 | } |
|---|
| 5215 | pkg_postinst () |
|---|
| 5216 | { |
|---|
| 5217 | use emacs && elisp-site-regen; |
|---|
| 5218 | use perl && perl-module_pkg_postinst; |
|---|
| 5219 | if use ctypes-python; then |
|---|
| 5220 | python_mod_compile "$(python_get_sitedir)/csvn/"{.,core,ext}/*.py; |
|---|
| 5221 | fi; |
|---|
| 5222 | elog "Subversion Server Notes"; |
|---|
| 5223 | elog "-----------------------"; |
|---|
| 5224 | elog; |
|---|
| 5225 | elog "If you intend to run a server, a repository needs to be created using"; |
|---|
| 5226 | elog "svnadmin (see man svnadmin) or the following command to create it in"; |
|---|
| 5227 | elog "${SVN_REPOS_LOC}:"; |
|---|
| 5228 | elog; |
|---|
| 5229 | elog " emerge --config =${CATEGORY}/${PF}"; |
|---|
| 5230 | elog; |
|---|
| 5231 | elog "Subversion has multiple server types, take your pick:"; |
|---|
| 5232 | elog; |
|---|
| 5233 | elog " - svnserve daemon: "; |
|---|
| 5234 | elog " 1. Edit /etc/conf.d/svnserve"; |
|---|
| 5235 | elog " 2. Fix the repository permissions (see \"Fixing the repository permissions\")"; |
|---|
| 5236 | elog " 3. Start daemon: /etc/init.d/svnserve start"; |
|---|
| 5237 | elog " 4. Make persistent: rc-update add svnserve default"; |
|---|
| 5238 | elog; |
|---|
| 5239 | elog " - svnserve via xinetd:"; |
|---|
| 5240 | elog " 1. Edit /etc/xinetd.d/svnserve (remove disable line)"; |
|---|
| 5241 | elog " 2. Fix the repository permissions (see \"Fixing the repository permissions\")"; |
|---|
| 5242 | elog " 3. Restart xinetd.d: /etc/init.d/xinetd restart"; |
|---|
| 5243 | elog; |
|---|
| 5244 | elog " - svn over ssh:"; |
|---|
| 5245 | elog " 1. Fix the repository permissions (see \"Fixing the repository permissions\")"; |
|---|
| 5246 | elog " Additionally run:"; |
|---|
| 5247 | elog " groupadd svnusers"; |
|---|
| 5248 | elog " chown -R root:svnusers ${SVN_REPOS_LOC}/repos"; |
|---|
| 5249 | elog " 2. Create an svnserve wrapper in /usr/local/bin to set the umask you"; |
|---|
| 5250 | elog " want, for example:"; |
|---|
| 5251 | elog " #!/bin/bash"; |
|---|
| 5252 | elog " . /etc/conf.d/svnserve"; |
|---|
| 5253 | elog " umask 007"; |
|---|
| 5254 | elog " exec /usr/bin/svnserve \${SVNSERVE_OPTS} \"\$@\""; |
|---|
| 5255 | elog; |
|---|
| 5256 | if use apache2; then |
|---|
| 5257 | elog " - http-based server:"; |
|---|
| 5258 | elog " 1. Edit /etc/conf.d/apache2 to include both \"-D DAV\" and \"-D SVN\""; |
|---|
| 5259 | elog " 2. Create an htpasswd file:"; |
|---|
| 5260 | elog " htpasswd2 -m -c ${SVN_REPOS_LOC}/conf/svnusers USERNAME"; |
|---|
| 5261 | elog " 3. Fix the repository permissions (see \"Fixing the repository permissions\")"; |
|---|
| 5262 | elog " 4. Restart Apache: /etc/init.d/apache2 restart"; |
|---|
| 5263 | elog; |
|---|
| 5264 | fi; |
|---|
| 5265 | elog " Fixing the repository permissions:"; |
|---|
| 5266 | elog " chmod -Rf go-rwx ${SVN_REPOS_LOC}/conf"; |
|---|
| 5267 | elog " chmod -Rf g-w,o-rwx ${SVN_REPOS_LOC}/repos"; |
|---|
| 5268 | elog " chmod -Rf g+rw ${SVN_REPOS_LOC}/repos/db"; |
|---|
| 5269 | elog " chmod -Rf g+rw ${SVN_REPOS_LOC}/repos/locks"; |
|---|
| 5270 | elog; |
|---|
| 5271 | elog "If you intend to use svn-hot-backup, you can specify the number of"; |
|---|
| 5272 | elog "backups to keep per repository by specifying an environment variable."; |
|---|
| 5273 | elog "If you want to keep e.g. 2 backups, do the following:"; |
|---|
| 5274 | elog "echo '# hot-backup: Keep that many repository backups around' > /etc/env.d/80subversion"; |
|---|
| 5275 | elog "echo 'SVN_HOTBACKUP_BACKUPS_NUMBER=2' >> /etc/env.d/80subversion"; |
|---|
| 5276 | elog; |
|---|
| 5277 | elog "Subversion contains support for the use of Memcached"; |
|---|
| 5278 | elog "to cache data of FSFS repositories."; |
|---|
| 5279 | elog "You should install \"net-misc/memcached\", start memcached"; |
|---|
| 5280 | elog "and configure your FSFS repositories, if you want to use this feature."; |
|---|
| 5281 | elog "See the documentation for details."; |
|---|
| 5282 | elog; |
|---|
| 5283 | epause 6; |
|---|
| 5284 | if [[ -n "${CHANGED_BDB_VERSION}" ]]; then |
|---|
| 5285 | ewarn "You upgraded from an older version of Berkeley DB and may experience"; |
|---|
| 5286 | ewarn "problems with your repository. Run the following commands as root to fix it:"; |
|---|
| 5287 | ewarn " db4_recover -h ${SVN_REPOS_LOC}/repos"; |
|---|
| 5288 | ewarn " chown -Rf apache:apache ${SVN_REPOS_LOC}/repos"; |
|---|
| 5289 | fi |
|---|
| 5290 | } |
|---|
| 5291 | pkg_postrm () |
|---|
| 5292 | { |
|---|
| 5293 | use emacs && elisp-site-regen; |
|---|
| 5294 | use perl && perl-module_pkg_postrm; |
|---|
| 5295 | if use ctypes-python; then |
|---|
| 5296 | python_mod_cleanup; |
|---|
| 5297 | fi |
|---|
| 5298 | } |
|---|
| 5299 | pkg_preinst () |
|---|
| 5300 | { |
|---|
| 5301 | if use berkdb && [[ -f "${ROOT}usr/bin/svn" ]]; then |
|---|
| 5302 | OLD_BDB_VERSION="$(scanelf -nq "${ROOT}usr/$(get_libdir)/libsvn_subr-1.so.0" | grep -Eo "libdb-[[:digit:]]+\.[[:digit:]]+" | sed -e "s/libdb-\(.*\)/\1/")"; |
|---|
| 5303 | NEW_BDB_VERSION="$(scanelf -nq "${D}usr/$(get_libdir)/libsvn_subr-1.so.0" | grep -Eo "libdb-[[:digit:]]+\.[[:digit:]]+" | sed -e "s/libdb-\(.*\)/\1/")"; |
|---|
| 5304 | if [[ "${OLD_BDB_VERSION}" != "${NEW_BDB_VERSION}" ]]; then |
|---|
| 5305 | CHANGED_BDB_VERSION="1"; |
|---|
| 5306 | fi; |
|---|
| 5307 | fi |
|---|
| 5308 | } |
|---|
| 5309 | pkg_setup () |
|---|
| 5310 | { |
|---|
| 5311 | if use berkdb; then |
|---|
| 5312 | einfo; |
|---|
| 5313 | if [[ -z "${SVN_BDB_VERSION}" ]]; then |
|---|
| 5314 | SVN_BDB_VERSION="$(db_ver_to_slot "$(db_findver sys-libs/db 2>/dev/null)")"; |
|---|
| 5315 | einfo "SVN_BDB_VERSION variable isn't set. You can set it to enforce using of specific version of Berkeley DB."; |
|---|
| 5316 | fi; |
|---|
| 5317 | einfo "Using: Berkeley DB ${SVN_BDB_VERSION}"; |
|---|
| 5318 | einfo; |
|---|
| 5319 | local apu_bdb_version="$(scanelf -nq "${ROOT}usr/$(get_libdir)/libaprutil-1.so.0" | grep -Eo "libdb-[[:digit:]]+\.[[:digit:]]+" | sed -e "s/libdb-\(.*\)/\1/")"; |
|---|
| 5320 | if [[ -n "${apu_bdb_version}" && "${SVN_BDB_VERSION}" != "${apu_bdb_version}" ]]; then |
|---|
| 5321 | eerror "APR-Util is linked against Berkeley DB ${apu_bdb_version}, but you are trying"; |
|---|
| 5322 | eerror "to build Subversion with support for Berkeley DB ${SVN_BDB_VERSION}."; |
|---|
| 5323 | eerror "Rebuild dev-libs/apr-util or set SVN_BDB_VERSION=\"${apu_bdb_version}\"."; |
|---|
| 5324 | eerror "Aborting to avoid possible run-time crashes."; |
|---|
| 5325 | die "Berkeley DB version mismatch"; |
|---|
| 5326 | fi; |
|---|
| 5327 | fi; |
|---|
| 5328 | depend.apache_pkg_setup; |
|---|
| 5329 | java-pkg-opt-2_pkg_setup; |
|---|
| 5330 | if ! use webdav-neon && ! use webdav-serf; then |
|---|
| 5331 | ewarn; |
|---|
| 5332 | ewarn "WebDAV support is disabled. You need WebDAV to"; |
|---|
| 5333 | ewarn "access repositories through the HTTP protocol."; |
|---|
| 5334 | ewarn; |
|---|
| 5335 | ewarn "WebDAV support needs one of the following USE flags enabled:"; |
|---|
| 5336 | ewarn " webdav-neon webdav-serf"; |
|---|
| 5337 | ewarn; |
|---|
| 5338 | ewarn "You can do this by enabling one of these flags in /etc/portage/package.use:"; |
|---|
| 5339 | ewarn " ${CATEGORY}/${PN} webdav-neon webdav-serf"; |
|---|
| 5340 | ewarn; |
|---|
| 5341 | ebeep; |
|---|
| 5342 | fi; |
|---|
| 5343 | if use test; then |
|---|
| 5344 | elog; |
|---|
| 5345 | elog "\e[31m************************************************************************************************\e[0m"; |
|---|
| 5346 | elog; |
|---|
| 5347 | elog "NOTES ABOUT TESTS"; |
|---|
| 5348 | elog; |
|---|
| 5349 | elog "You can set the following variables to enable testing of some features and configure testing:"; |
|---|
| 5350 | if use webdav-neon || use webdav-serf; then |
|---|
| 5351 | elog " SVN_TEST_APACHE=1 - Enable testing of mod_dav_svn, mod_authz_svn and libsvn_ra_neon / libsvn_ra_serf"; |
|---|
| 5352 | elog " (See \"Testing of mod_dav_svn, mod_authz_svn and libsvn_ra_neon / libsvn_ra_serf\")"; |
|---|
| 5353 | fi; |
|---|
| 5354 | elog " SVN_TEST_SVNSERVE_PORT=integer - Set svnserve port number (Default value: 3690)"; |
|---|
| 5355 | elog " SVN_TEST_FSFS_MEMCACHED=1 - Enable using of Memcached for FSFS repositories"; |
|---|
| 5356 | elog " SVN_TEST_FSFS_MEMCACHED_PORT=integer - Set Memcached port number (Default value: 11211)"; |
|---|
| 5357 | elog " SVN_TEST_FSFS_SHARDING=integer - Enable sharding of FSFS repositories and set default shard size for FSFS repositories"; |
|---|
| 5358 | elog " SVN_TEST_FSFS_PACKING=1 - Enable packing of FSFS repositories"; |
|---|
| 5359 | elog " (SVN_TEST_FSFS_PACKING requires SVN_TEST_FSFS_SHARDING)"; |
|---|
| 5360 | if use ctypes-python || use java || use perl || use python || use ruby; then |
|---|
| 5361 | elog " SVN_TEST_BINDINGS=1 - Enable testing of bindings"; |
|---|
| 5362 | fi; |
|---|
| 5363 | if use java || use perl || use python || use ruby; then |
|---|
| 5364 | elog " (Testing of bindings requires ${CATEGORY}/${PF})"; |
|---|
| 5365 | fi; |
|---|
| 5366 | if use java; then |
|---|
| 5367 | elog " (Testing of JavaHL library requires dev-java/junit:4)"; |
|---|
| 5368 | fi; |
|---|
| 5369 | elog; |
|---|
| 5370 | if ! use webdav-neon && ! use webdav-serf; then |
|---|
| 5371 | elog "\e[31m************************************************************************************************\e[0m"; |
|---|
| 5372 | elog; |
|---|
| 5373 | epause 24; |
|---|
| 5374 | fi; |
|---|
| 5375 | if { |
|---|
| 5376 | use webdav-neon || use webdav-serf |
|---|
| 5377 | } && [[ -n "${SVN_TEST_APACHE}" ]] && ! has_version "${CATEGORY}/${PN}[apache2]"; then |
|---|
| 5378 | die "${CATEGORY}/${PN} must be installed with USE=\"apache2\""; |
|---|
| 5379 | fi; |
|---|
| 5380 | if [[ -n "${SVN_TEST_SVNSERVE_PORT}" ]] && ! ( [[ "$((${SVN_TEST_SVNSERVE_PORT}))" == "${SVN_TEST_SVNSERVE_PORT}" ]] ) >&/dev/null; then |
|---|
| 5381 | die "Value of SVN_TEST_SVNSERVE_PORT must be an integer"; |
|---|
| 5382 | fi; |
|---|
| 5383 | if [[ -n "${SVN_TEST_FSFS_MEMCACHED}" ]] && ! has_version net-misc/memcached; then |
|---|
| 5384 | die "net-misc/memcached must be installed"; |
|---|
| 5385 | fi; |
|---|
| 5386 | if [[ -n "${SVN_TEST_FSFS_MEMCACHED_PORT}" ]] && ! ( [[ "$((${SVN_TEST_FSFS_MEMCACHED_PORT}))" == "${SVN_TEST_FSFS_MEMCACHED_PORT}" ]] ) >&/dev/null; then |
|---|
| 5387 | die "Value of SVN_TEST_FSFS_MEMCACHED_PORT must be an integer"; |
|---|
| 5388 | fi; |
|---|
| 5389 | if [[ -n "${SVN_TEST_FSFS_SHARDING}" ]] && ! ( [[ "$((${SVN_TEST_FSFS_SHARDING}))" == "${SVN_TEST_FSFS_SHARDING}" ]] ) >&/dev/null; then |
|---|
| 5390 | die "Value of SVN_TEST_FSFS_SHARDING must be an integer"; |
|---|
| 5391 | fi; |
|---|
| 5392 | if [[ -n "${SVN_TEST_FSFS_PACKING}" && -z "${SVN_TEST_FSFS_SHARDING}" ]]; then |
|---|
| 5393 | die "SVN_TEST_FSFS_PACKING requires SVN_TEST_FSFS_SHARDING"; |
|---|
| 5394 | fi; |
|---|
| 5395 | if [[ -n "${SVN_TEST_BINDINGS}" ]]; then |
|---|
| 5396 | if { |
|---|
| 5397 | use java || use perl || use python || use ruby |
|---|
| 5398 | } && ! has_version "=${CATEGORY}/${PF}"; then |
|---|
| 5399 | die "${CATEGORY}/${PF} must be installed"; |
|---|
| 5400 | fi; |
|---|
| 5401 | if use java && ! has_version dev-java/junit:4; then |
|---|
| 5402 | die "dev-java/junit:4 must be installed"; |
|---|
| 5403 | fi; |
|---|
| 5404 | fi; |
|---|
| 5405 | fi; |
|---|
| 5406 | append-flags -fno-strict-aliasing; |
|---|
| 5407 | if use debug; then |
|---|
| 5408 | append-cppflags -DSVN_DEBUG -DAP_DEBUG; |
|---|
| 5409 | fi |
|---|
| 5410 | } |
|---|
| 5411 | prep_ml_includes () |
|---|
| 5412 | { |
|---|
| 5413 | if [[ $(number_abis) -gt 1 ]]; then |
|---|
| 5414 | local dir; |
|---|
| 5415 | local dirs; |
|---|
| 5416 | local base; |
|---|
| 5417 | if [[ $# -eq 0 ]]; then |
|---|
| 5418 | dirs=/usr/include; |
|---|
| 5419 | else |
|---|
| 5420 | dirs="$@"; |
|---|
| 5421 | fi; |
|---|
| 5422 | for dir in ${dirs}; |
|---|
| 5423 | do |
|---|
| 5424 | base=${T}/gentoo-multilib/${dir}/gentoo-multilib; |
|---|
| 5425 | mkdir -p "${base}"; |
|---|
| 5426 | [[ -d ${base}/${ABI} ]] && rm -rf "${base}/${ABI}"; |
|---|
| 5427 | mv "${D}/${dir}" "${base}/${ABI}"; |
|---|
| 5428 | done; |
|---|
| 5429 | if is_final_abi; then |
|---|
| 5430 | base=${T}/gentoo-multilib; |
|---|
| 5431 | pushd "${base}"; |
|---|
| 5432 | find . | tar -c -T - -f - | tar -x --no-same-owner -f - -C "${D}"; |
|---|
| 5433 | popd; |
|---|
| 5434 | set --; |
|---|
| 5435 | for dir in ${dirs}; |
|---|
| 5436 | do |
|---|
| 5437 | set -- "$@" "${dir}"; |
|---|
| 5438 | local abi; |
|---|
| 5439 | for abi in $(get_install_abis); |
|---|
| 5440 | do |
|---|
| 5441 | set -- "$@" "$(get_abi_CDEFINE ${abi}):${dir}/gentoo-multilib/${abi}"; |
|---|
| 5442 | done; |
|---|
| 5443 | create_ml_includes "$@"; |
|---|
| 5444 | done; |
|---|
| 5445 | fi; |
|---|
| 5446 | fi |
|---|
| 5447 | } |
|---|
| 5448 | preserve_old_lib () |
|---|
| 5449 | { |
|---|
| 5450 | if [[ ${EBUILD_PHASE} != "preinst" ]]; then |
|---|
| 5451 | eerror "preserve_old_lib() must be called from pkg_preinst() only"; |
|---|
| 5452 | die "Invalid preserve_old_lib() usage"; |
|---|
| 5453 | fi; |
|---|
| 5454 | [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]"; |
|---|
| 5455 | has preserve-libs ${FEATURES} && return 0; |
|---|
| 5456 | local lib dir; |
|---|
| 5457 | for lib in "$@"; |
|---|
| 5458 | do |
|---|
| 5459 | [[ -e ${ROOT}/${lib} ]] || continue; |
|---|
| 5460 | dir=${lib%/*}; |
|---|
| 5461 | dodir ${dir} || die "dodir ${dir} failed"; |
|---|
| 5462 | cp "${ROOT}"/${lib} "${D}"/${lib} || die "cp ${lib} failed"; |
|---|
| 5463 | touch "${D}"/${lib}; |
|---|
| 5464 | done |
|---|
| 5465 | } |
|---|
| 5466 | preserve_old_lib_notify () |
|---|
| 5467 | { |
|---|
| 5468 | if [[ ${EBUILD_PHASE} != "postinst" ]]; then |
|---|
| 5469 | eerror "preserve_old_lib_notify() must be called from pkg_postinst() only"; |
|---|
| 5470 | die "Invalid preserve_old_lib_notify() usage"; |
|---|
| 5471 | fi; |
|---|
| 5472 | has preserve-libs ${FEATURES} && return 0; |
|---|
| 5473 | local lib notice=0; |
|---|
| 5474 | for lib in "$@"; |
|---|
| 5475 | do |
|---|
| 5476 | [[ -e ${ROOT}/${lib} ]] || continue; |
|---|
| 5477 | if [[ ${notice} -eq 0 ]]; then |
|---|
| 5478 | notice=1; |
|---|
| 5479 | ewarn "Old versions of installed libraries were detected on your system."; |
|---|
| 5480 | ewarn "In order to avoid breaking packages that depend on these old libs,"; |
|---|
| 5481 | ewarn "the libraries are not being removed. You need to run revdep-rebuild"; |
|---|
| 5482 | ewarn "in order to remove these old dependencies. If you do not have this"; |
|---|
| 5483 | ewarn "helper program, simply emerge the 'gentoolkit' package."; |
|---|
| 5484 | ewarn; |
|---|
| 5485 | fi; |
|---|
| 5486 | ewarn " # revdep-rebuild --library ${lib##*/}"; |
|---|
| 5487 | done; |
|---|
| 5488 | if [[ ${notice} -eq 1 ]]; then |
|---|
| 5489 | ewarn; |
|---|
| 5490 | ewarn "Once you've finished running revdep-rebuild, it should be safe to"; |
|---|
| 5491 | ewarn "delete the old libraries. Here is a copy & paste for the lazy:"; |
|---|
| 5492 | for lib in "$@"; |
|---|
| 5493 | do |
|---|
| 5494 | ewarn " # rm '${lib}'"; |
|---|
| 5495 | done; |
|---|
| 5496 | fi |
|---|
| 5497 | } |
|---|
| 5498 | python_disable_pyc () |
|---|
| 5499 | { |
|---|
| 5500 | export PYTHONDONTWRITEBYTECODE=1; |
|---|
| 5501 | export PYTHON_DONTCOMPILE=1 |
|---|
| 5502 | } |
|---|
| 5503 | python_enable_pyc () |
|---|
| 5504 | { |
|---|
| 5505 | unset PYTHONDONTWRITEBYTECODE; |
|---|
| 5506 | unset PYTHON_DONTCOMPILE |
|---|
| 5507 | } |
|---|
| 5508 | python_get_libdir () |
|---|
| 5509 | { |
|---|
| 5510 | python_version; |
|---|
| 5511 | echo "/usr/$(get_libdir)/python${PYVER}" |
|---|
| 5512 | } |
|---|
| 5513 | python_get_sitedir () |
|---|
| 5514 | { |
|---|
| 5515 | echo "$(python_get_libdir)/site-packages" |
|---|
| 5516 | } |
|---|
| 5517 | python_makesym () |
|---|
| 5518 | { |
|---|
| 5519 | alternatives_auto_makesym "/usr/bin/python" "python[0-9].[0-9]"; |
|---|
| 5520 | alternatives_auto_makesym "/usr/bin/python2" "python2.[0-9]" |
|---|
| 5521 | } |
|---|
| 5522 | python_mod_cleanup () |
|---|
| 5523 | { |
|---|
| 5524 | local SEARCH_PATH=() myroot src_py; |
|---|
| 5525 | [[ ${EBUILD_PHASE} != postrm ]] && die "${FUNCNAME} should only be run in pkg_postrm()"; |
|---|
| 5526 | myroot="${ROOT%/}"; |
|---|
| 5527 | if (($#)); then |
|---|
| 5528 | SEARCH_PATH=("${@#/}"); |
|---|
| 5529 | SEARCH_PATH=("${SEARCH_PATH[@]/#/$myroot/}"); |
|---|
| 5530 | else |
|---|
| 5531 | SEARCH_PATH=("${myroot}"/usr/lib*/python*/site-packages); |
|---|
| 5532 | fi; |
|---|
| 5533 | for path in "${SEARCH_PATH[@]}"; |
|---|
| 5534 | do |
|---|
| 5535 | einfo "Cleaning orphaned Python bytecode from ${path} .."; |
|---|
| 5536 | find "${path}" -name '*.py[co]' -print0 | while read -rd ''; do |
|---|
| 5537 | src_py="${REPLY%[co]}"; |
|---|
| 5538 | [[ -f "${src_py}" ]] && continue; |
|---|
| 5539 | einfo "Purging ${src_py}[co]"; |
|---|
| 5540 | rm -f "${src_py}"[co]; |
|---|
| 5541 | done; |
|---|
| 5542 | find "${path}" -type d | sort -r | while read -r dir; do |
|---|
| 5543 | rmdir "${dir}" 2> /dev/null; |
|---|
| 5544 | done; |
|---|
| 5545 | done |
|---|
| 5546 | } |
|---|
| 5547 | python_mod_compile () |
|---|
| 5548 | { |
|---|
| 5549 | local f myroot myfiles=(); |
|---|
| 5550 | [[ ${EBUILD_PHASE} != postinst ]] && die "${FUNCNAME} should only be run in pkg_postinst()"; |
|---|
| 5551 | if [[ -n "${PYTHON_OVERRIDE_PYVER}" ]]; then |
|---|
| 5552 | PYVER=${PYTHON_OVERRIDE_PYVER}; |
|---|
| 5553 | else |
|---|
| 5554 | python_version; |
|---|
| 5555 | fi; |
|---|
| 5556 | myroot="${ROOT%/}"; |
|---|
| 5557 | for f in "$@"; |
|---|
| 5558 | do |
|---|
| 5559 | [[ -f "${myroot}/${f}" ]] && myfiles+=("${myroot}/${f}"); |
|---|
| 5560 | done; |
|---|
| 5561 | if ((${#myfiles[@]})); then |
|---|
| 5562 | python${PYVER} ${myroot}/usr/$(get_libdir)/python${PYVER}/py_compile.py "${myfiles[@]}"; |
|---|
| 5563 | python${PYVER} -O ${myroot}/usr/$(get_libdir)/python${PYVER}/py_compile.py "${myfiles[@]}"; |
|---|
| 5564 | else |
|---|
| 5565 | ewarn "No files to compile!"; |
|---|
| 5566 | fi |
|---|
| 5567 | } |
|---|
| 5568 | python_mod_exists () |
|---|
| 5569 | { |
|---|
| 5570 | [[ -n "$1" ]] || die "${FUNCNAME} requires an argument!"; |
|---|
| 5571 | python -c "import $1" > /dev/null 2>&1 |
|---|
| 5572 | } |
|---|
| 5573 | python_mod_optimize () |
|---|
| 5574 | { |
|---|
| 5575 | local myroot mydirs=() myfiles=() myopts=(); |
|---|
| 5576 | [[ ${EBUILD_PHASE} != postinst ]] && die "${FUNCNAME} should only be run in pkg_postinst()"; |
|---|
| 5577 | myroot="${ROOT%/}"; |
|---|
| 5578 | while (($#)); do |
|---|
| 5579 | case $1 in |
|---|
| 5580 | -l | -f | -q) |
|---|
| 5581 | myopts+=("$1") |
|---|
| 5582 | ;; |
|---|
| 5583 | -d | -x) |
|---|
| 5584 | myopts+=("$1" "$2"); |
|---|
| 5585 | shift |
|---|
| 5586 | ;; |
|---|
| 5587 | -*) |
|---|
| 5588 | ewarn "${FUNCNAME}: Ignoring compile option $1" |
|---|
| 5589 | ;; |
|---|
| 5590 | *) |
|---|
| 5591 | if [[ -d "${myroot}"/$1 ]]; then |
|---|
| 5592 | mydirs+=("${myroot}/$1"); |
|---|
| 5593 | else |
|---|
| 5594 | if [[ -f "${myroot}"/$1 ]]; then |
|---|
| 5595 | myfiles+=("$1"); |
|---|
| 5596 | else |
|---|
| 5597 | if [[ -e "${myroot}/$1" ]]; then |
|---|
| 5598 | ewarn "${myroot}/$1 is not a file or directory!"; |
|---|
| 5599 | else |
|---|
| 5600 | ewarn "${myroot}/$1 doesn't exist!"; |
|---|
| 5601 | fi; |
|---|
| 5602 | fi; |
|---|
| 5603 | fi |
|---|
| 5604 | ;; |
|---|
| 5605 | esac; |
|---|
| 5606 | shift; |
|---|
| 5607 | done; |
|---|
| 5608 | if [ -n "${PYTHON_OVERRIDE_PYVER}" ]; then |
|---|
| 5609 | PYVER=${PYTHON_OVERRIDE_PYVER}; |
|---|
| 5610 | else |
|---|
| 5611 | python_version; |
|---|
| 5612 | fi; |
|---|
| 5613 | myopts+=(-q); |
|---|
| 5614 | ebegin "Byte compiling python modules for python-${PYVER} .."; |
|---|
| 5615 | if ((${#mydirs[@]})); then |
|---|
| 5616 | python${PYVER} "${myroot}"/usr/$(get_libdir)/python${PYVER}/compileall.py "${myopts[@]}" "${mydirs[@]}"; |
|---|
| 5617 | python${PYVER} -O "${myroot}"/usr/$(get_libdir)/python${PYVER}/compileall.py "${myopts[@]}" "${mydirs[@]}"; |
|---|
| 5618 | fi; |
|---|
| 5619 | if ((${#myfiles[@]})); then |
|---|
| 5620 | python_mod_compile "${myfiles[@]}"; |
|---|
| 5621 | fi; |
|---|
| 5622 | eend $? |
|---|
| 5623 | } |
|---|
| 5624 | python_need_rebuild () |
|---|
| 5625 | { |
|---|
| 5626 | python_version; |
|---|
| 5627 | export PYTHON_NEED_REBUILD=${PYVER} |
|---|
| 5628 | } |
|---|
| 5629 | python_tkinter_exists () |
|---|
| 5630 | { |
|---|
| 5631 | if ! python -c "import Tkinter" > /dev/null 2>&1; then |
|---|
| 5632 | eerror "You need to recompile python with Tkinter support."; |
|---|
| 5633 | eerror "Try adding: 'dev-lang/python tk'"; |
|---|
| 5634 | eerror "in to /etc/portage/package.use"; |
|---|
| 5635 | echo; |
|---|
| 5636 | die "missing tkinter support with installed python"; |
|---|
| 5637 | fi |
|---|
| 5638 | } |
|---|
| 5639 | python_version () |
|---|
| 5640 | { |
|---|
| 5641 | [[ -n "${PYVER}" ]] && return 0; |
|---|
| 5642 | local tmpstr; |
|---|
| 5643 | python=${python:-/usr/bin/python}; |
|---|
| 5644 | tmpstr="$(${python} -V 2>&1 )"; |
|---|
| 5645 | export PYVER_ALL="${tmpstr#Python }"; |
|---|
| 5646 | __python_version_extract $PYVER_ALL |
|---|
| 5647 | } |
|---|
| 5648 | raw-ldflags () |
|---|
| 5649 | { |
|---|
| 5650 | local x input="$@"; |
|---|
| 5651 | [[ -z ${input} ]] && input=${LDFLAGS}; |
|---|
| 5652 | set --; |
|---|
| 5653 | for x in ${input}; |
|---|
| 5654 | do |
|---|
| 5655 | x=${x#-Wl,}; |
|---|
| 5656 | set -- "$@" ${x//,/ }; |
|---|
| 5657 | done; |
|---|
| 5658 | echo "$@" |
|---|
| 5659 | } |
|---|
| 5660 | replace-cpu-flags () |
|---|
| 5661 | { |
|---|
| 5662 | local newcpu="$#"; |
|---|
| 5663 | newcpu="${!newcpu}"; |
|---|
| 5664 | while [ $# -gt 1 ]; do |
|---|
| 5665 | replace-flags "-march=${1}" "-march=${newcpu}"; |
|---|
| 5666 | replace-flags "-mcpu=${1}" "-mcpu=${newcpu}"; |
|---|
| 5667 | replace-flags "-mtune=${1}" "-mtune=${newcpu}"; |
|---|
| 5668 | shift; |
|---|
| 5669 | done; |
|---|
| 5670 | return 0 |
|---|
| 5671 | } |
|---|
| 5672 | replace-flags () |
|---|
| 5673 | { |
|---|
| 5674 | [[ $# != 2 ]] && echo && eerror "Usage: replace-flags <old flag> <new flag>" && die "replace-flags takes 2 arguments, not $#"; |
|---|
| 5675 | local f fset; |
|---|
| 5676 | declare -a new_CFLAGS new_CXXFLAGS new_FFLAGS new_FCFLAGS; |
|---|
| 5677 | for fset in CFLAGS CXXFLAGS FFLAGS FCFLAGS; |
|---|
| 5678 | do |
|---|
| 5679 | for f in ${!fset}; |
|---|
| 5680 | do |
|---|
| 5681 | [[ ${f} == ${1} ]] && f=${2}; |
|---|
| 5682 | eval new_${fset}\[\${\#new_${fset}\[@]}]=\${f}; |
|---|
| 5683 | done; |
|---|
| 5684 | eval export ${fset}=\${new_${fset}\[*]}; |
|---|
| 5685 | done; |
|---|
| 5686 | return 0 |
|---|
| 5687 | } |
|---|
| 5688 | replace-sparc64-flags () |
|---|
| 5689 | { |
|---|
| 5690 | local SPARC64_CPUS="ultrasparc3 ultrasparc v9"; |
|---|
| 5691 | if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then |
|---|
| 5692 | for x in ${SPARC64_CPUS}; |
|---|
| 5693 | do |
|---|
| 5694 | CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}"; |
|---|
| 5695 | done; |
|---|
| 5696 | else |
|---|
| 5697 | for x in ${SPARC64_CPUS}; |
|---|
| 5698 | do |
|---|
| 5699 | CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}"; |
|---|
| 5700 | done; |
|---|
| 5701 | fi; |
|---|
| 5702 | if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then |
|---|
| 5703 | for x in ${SPARC64_CPUS}; |
|---|
| 5704 | do |
|---|
| 5705 | CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}"; |
|---|
| 5706 | done; |
|---|
| 5707 | else |
|---|
| 5708 | for x in ${SPARC64_CPUS}; |
|---|
| 5709 | do |
|---|
| 5710 | CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}"; |
|---|
| 5711 | done; |
|---|
| 5712 | fi; |
|---|
| 5713 | export CFLAGS CXXFLAGS |
|---|
| 5714 | } |
|---|
| 5715 | replace_all_version_separators () |
|---|
| 5716 | { |
|---|
| 5717 | __versionator_shopt_toggle on; |
|---|
| 5718 | local c; |
|---|
| 5719 | c=($(get_all_version_components "${2:-${PV}}" )); |
|---|
| 5720 | c="${c[@]//[-._]/$1}"; |
|---|
| 5721 | echo ${c// }; |
|---|
| 5722 | __versionator_shopt_toggle off |
|---|
| 5723 | } |
|---|
| 5724 | replace_version_separator () |
|---|
| 5725 | { |
|---|
| 5726 | __versionator_shopt_toggle on; |
|---|
| 5727 | local w i c found=0 v="${3:-${PV}}"; |
|---|
| 5728 | w=${1:-1}; |
|---|
| 5729 | c=($(get_all_version_components ${v} )); |
|---|
| 5730 | if [[ "${w//[[:digit:]]/}" == "${w}" ]]; then |
|---|
| 5731 | for ((i = 0 ; i < ${#c[@]} ; i = $i + 1 )) |
|---|
| 5732 | do |
|---|
| 5733 | if [[ "${c[${i}]}" == "${w}" ]]; then |
|---|
| 5734 | c[${i}]="${2}"; |
|---|
| 5735 | break; |
|---|
| 5736 | fi; |
|---|
| 5737 | done; |
|---|
| 5738 | else |
|---|
| 5739 | for ((i = 0 ; i < ${#c[@]} ; i = $i + 1 )) |
|---|
| 5740 | do |
|---|
| 5741 | if [[ -n "${c[${i}]//[^-._]}" ]]; then |
|---|
| 5742 | found=$(($found + 1)); |
|---|
| 5743 | if [[ "$found" == "${w}" ]]; then |
|---|
| 5744 | c[${i}]="${2}"; |
|---|
| 5745 | break; |
|---|
| 5746 | fi; |
|---|
| 5747 | fi; |
|---|
| 5748 | done; |
|---|
| 5749 | fi; |
|---|
| 5750 | c=${c[@]}; |
|---|
| 5751 | echo ${c// }; |
|---|
| 5752 | __versionator_shopt_toggle off |
|---|
| 5753 | } |
|---|
| 5754 | seq () |
|---|
| 5755 | { |
|---|
| 5756 | local p=$(type -P seq); |
|---|
| 5757 | case $# in |
|---|
| 5758 | 1) |
|---|
| 5759 | min=1 max=$1 step=1 |
|---|
| 5760 | ;; |
|---|
| 5761 | 2) |
|---|
| 5762 | min=$1 max=$2 step=1 |
|---|
| 5763 | ;; |
|---|
| 5764 | 3) |
|---|
| 5765 | min=$1 max=$3 step=$2 |
|---|
| 5766 | ;; |
|---|
| 5767 | *) |
|---|
| 5768 | die "seq called with wrong number of arguments" |
|---|
| 5769 | ;; |
|---|
| 5770 | esac; |
|---|
| 5771 | if [[ -z ${p} ]]; then |
|---|
| 5772 | local reps; |
|---|
| 5773 | if [[ ${step} != 0 ]]; then |
|---|
| 5774 | reps=$(( ($max-$min) / $step +1 )); |
|---|
| 5775 | else |
|---|
| 5776 | reps=0; |
|---|
| 5777 | fi; |
|---|
| 5778 | jot $reps $min $max $step; |
|---|
| 5779 | else |
|---|
| 5780 | "${p}" $min $step $max; |
|---|
| 5781 | fi |
|---|
| 5782 | } |
|---|
| 5783 | setup-allowed-flags () |
|---|
| 5784 | { |
|---|
| 5785 | if [[ -z ${ALLOWED_FLAGS} ]]; then |
|---|
| 5786 | export ALLOWED_FLAGS="-pipe"; |
|---|
| 5787 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune"; |
|---|
| 5788 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all"; |
|---|
| 5789 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking -fno-strict-overflow"; |
|---|
| 5790 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time"; |
|---|
| 5791 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+"; |
|---|
| 5792 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident"; |
|---|
| 5793 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -W* -w"; |
|---|
| 5794 | fi; |
|---|
| 5795 | ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all -fno-strict-aliasing -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer"; |
|---|
| 5796 | ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt -m*-toc -D* -U*"; |
|---|
| 5797 | export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks"; |
|---|
| 5798 | return 0 |
|---|
| 5799 | } |
|---|
| 5800 | src_compile () |
|---|
| 5801 | { |
|---|
| 5802 | einfo; |
|---|
| 5803 | einfo "Building of core of Subversion"; |
|---|
| 5804 | einfo; |
|---|
| 5805 | emake local-all || die "Building of core of Subversion failed"; |
|---|
| 5806 | if use ctypes-python; then |
|---|
| 5807 | einfo; |
|---|
| 5808 | einfo "Building of Subversion Ctypes Python bindings"; |
|---|
| 5809 | einfo; |
|---|
| 5810 | emake ctypes-python || die "Building of Subversion Ctypes Python bindings failed"; |
|---|
| 5811 | fi; |
|---|
| 5812 | if use python; then |
|---|
| 5813 | einfo; |
|---|
| 5814 | einfo "Building of Subversion SWIG Python bindings"; |
|---|
| 5815 | einfo; |
|---|
| 5816 | emake swig_pydir="$(python_get_sitedir)/libsvn" swig_pydir_extra="$(python_get_sitedir)/svn" swig-py || die "Building of Subversion SWIG Python bindings failed"; |
|---|
| 5817 | fi; |
|---|
| 5818 | if use perl; then |
|---|
| 5819 | einfo; |
|---|
| 5820 | einfo "Building of Subversion SWIG Perl bindings"; |
|---|
| 5821 | einfo; |
|---|
| 5822 | emake -j1 swig-pl || die "Building of Subversion SWIG Perl bindings failed"; |
|---|
| 5823 | fi; |
|---|
| 5824 | if use ruby; then |
|---|
| 5825 | einfo; |
|---|
| 5826 | einfo "Building of Subversion SWIG Ruby bindings"; |
|---|
| 5827 | einfo; |
|---|
| 5828 | emake swig-rb || die "Building of Subversion SWIG Ruby bindings failed"; |
|---|
| 5829 | fi; |
|---|
| 5830 | if use java; then |
|---|
| 5831 | einfo; |
|---|
| 5832 | einfo "Building of Subversion JavaHL library"; |
|---|
| 5833 | einfo; |
|---|
| 5834 | emake -j1 JAVAC_FLAGS="$(java-pkg_javac-args) -encoding iso8859-1" javahl || die "Building of Subversion JavaHL library failed"; |
|---|
| 5835 | fi; |
|---|
| 5836 | if use emacs; then |
|---|
| 5837 | einfo; |
|---|
| 5838 | einfo "Compilation of Emacs modules"; |
|---|
| 5839 | einfo; |
|---|
| 5840 | elisp-compile contrib/client-side/emacs/{dsvn,psvn,vc-svn}.el doc/svn-doc.el doc/tools/svnbook.el || die "Compilation of Emacs modules failed"; |
|---|
| 5841 | fi; |
|---|
| 5842 | if use extras; then |
|---|
| 5843 | einfo; |
|---|
| 5844 | einfo "Building of contrib and tools"; |
|---|
| 5845 | einfo; |
|---|
| 5846 | emake contrib || die "Building of contrib failed"; |
|---|
| 5847 | emake tools || die "Building of tools failed"; |
|---|
| 5848 | fi; |
|---|
| 5849 | if use doc; then |
|---|
| 5850 | einfo; |
|---|
| 5851 | einfo "Building of Subversion HTML documentation"; |
|---|
| 5852 | einfo; |
|---|
| 5853 | doxygen doc/doxygen.conf || die "Building of Subversion HTML documentation failed"; |
|---|
| 5854 | if use java; then |
|---|
| 5855 | einfo; |
|---|
| 5856 | einfo "Building of Subversion JavaHL library HTML documentation"; |
|---|
| 5857 | einfo; |
|---|
| 5858 | emake doc-javahl || die "Building of Subversion JavaHL library HTML documentation failed"; |
|---|
| 5859 | fi; |
|---|
| 5860 | fi |
|---|
| 5861 | } |
|---|
| 5862 | src_configure () |
|---|
| 5863 | { |
|---|
| 5864 | local myconf; |
|---|
| 5865 | if use python || use perl || use ruby; then |
|---|
| 5866 | myconf+=" --with-swig"; |
|---|
| 5867 | else |
|---|
| 5868 | myconf+=" --without-swig"; |
|---|
| 5869 | fi; |
|---|
| 5870 | if use java; then |
|---|
| 5871 | if use test && [[ -n "${SVN_TEST_BINDINGS}" ]]; then |
|---|
| 5872 | myconf+=" --with-junit=/usr/share/junit-4/lib/junit.jar"; |
|---|
| 5873 | else |
|---|
| 5874 | myconf+=" --without-junit"; |
|---|
| 5875 | fi; |
|---|
| 5876 | fi; |
|---|
| 5877 | econf --libdir="/usr/$(get_libdir)" $(use_with apache2 apxs "${APXS}") $(use_with berkdb berkeley-db "db.h:/usr/include/db${SVN_BDB_VERSION}::db-${SVN_BDB_VERSION}") $(use_with ctypes-python ctypesgen /usr) $(use_enable dso runtime-module-search) $(use_with gnome-keyring) $(use_enable java javahl) $(use_with java jdk "${JAVA_HOME}") $(use_enable nls) $(use_with sasl) $(use_with webdav-neon neon) $(use_with webdav-serf serf /usr) ${myconf} --with-apr=/usr/bin/apr-1-config --with-apr-util=/usr/bin/apu-1-config --disable-experimental-libtool --without-jikes --enable-local-library-preloading --disable-mod-activation --disable-neon-version-check --with-sqlite=/usr |
|---|
| 5878 | } |
|---|
| 5879 | src_install () |
|---|
| 5880 | { |
|---|
| 5881 | einfo; |
|---|
| 5882 | einfo "Installation of core of Subversion"; |
|---|
| 5883 | einfo; |
|---|
| 5884 | emake -j1 DESTDIR="${D}" local-install || die "Installation of core of Subversion failed"; |
|---|
| 5885 | if use ctypes-python; then |
|---|
| 5886 | einfo; |
|---|
| 5887 | einfo "Installation of Subversion Ctypes Python bindings"; |
|---|
| 5888 | einfo; |
|---|
| 5889 | emake DESTDIR="${D}" install-ctypes-python || die "Installation of Subversion Ctypes Python bindings failed"; |
|---|
| 5890 | fi; |
|---|
| 5891 | if use python; then |
|---|
| 5892 | einfo; |
|---|
| 5893 | einfo "Installation of Subversion SWIG Python bindings"; |
|---|
| 5894 | einfo; |
|---|
| 5895 | emake -j1 DESTDIR="${D}" swig_pydir="$(python_get_sitedir)/libsvn" swig_pydir_extra="$(python_get_sitedir)/svn" install-swig-py || die "Installation of Subversion SWIG Python bindings failed"; |
|---|
| 5896 | fi; |
|---|
| 5897 | if use perl; then |
|---|
| 5898 | einfo; |
|---|
| 5899 | einfo "Installation of Subversion SWIG Perl bindings"; |
|---|
| 5900 | einfo; |
|---|
| 5901 | emake -j1 DESTDIR="${D}" INSTALLDIRS="vendor" install-swig-pl || die "Installation of Subversion SWIG Perl bindings failed"; |
|---|
| 5902 | fixlocalpod; |
|---|
| 5903 | find "${D}" "(" -name .packlist -o -name "*.bs" ")" -print0 | xargs -0 rm -fr; |
|---|
| 5904 | fi; |
|---|
| 5905 | if use ruby; then |
|---|
| 5906 | einfo; |
|---|
| 5907 | einfo "Installation of Subversion SWIG Ruby bindings"; |
|---|
| 5908 | einfo; |
|---|
| 5909 | emake -j1 DESTDIR="${D}" install-swig-rb || die "Installation of Subversion SWIG Ruby bindings failed"; |
|---|
| 5910 | fi; |
|---|
| 5911 | if use java; then |
|---|
| 5912 | einfo; |
|---|
| 5913 | einfo "Installation of Subversion JavaHL library"; |
|---|
| 5914 | einfo; |
|---|
| 5915 | emake -j1 DESTDIR="${D}" install-javahl || die "Installation of Subversion JavaHL library failed"; |
|---|
| 5916 | java-pkg_regso "${D}"usr/$(get_libdir)/libsvnjavahl*.so; |
|---|
| 5917 | java-pkg_dojar "${D}"usr/$(get_libdir)/svn-javahl/svn-javahl.jar; |
|---|
| 5918 | rm -fr "${D}"usr/$(get_libdir)/svn-javahl/*.jar; |
|---|
| 5919 | fi; |
|---|
| 5920 | if use apache2; then |
|---|
| 5921 | dodir "${APACHE_MODULES_CONFDIR}"; |
|---|
| 5922 | cat > "${D}${APACHE_MODULES_CONFDIR}"/47_mod_dav_svn.conf <<EOF |
|---|
| 5923 | <IfDefine SVN> |
|---|
| 5924 | LoadModule dav_svn_module modules/mod_dav_svn.so |
|---|
| 5925 | <IfDefine SVN_AUTHZ> |
|---|
| 5926 | LoadModule authz_svn_module modules/mod_authz_svn.so |
|---|
| 5927 | </IfDefine> |
|---|
| 5928 | |
|---|
| 5929 | # Example configuration: |
|---|
| 5930 | #<Location /svn/repos> |
|---|
| 5931 | # DAV svn |
|---|
| 5932 | # SVNPath ${SVN_REPOS_LOC}/repos |
|---|
| 5933 | # AuthType Basic |
|---|
| 5934 | # AuthName "Subversion repository" |
|---|
| 5935 | # AuthUserFile ${SVN_REPOS_LOC}/conf/svnusers |
|---|
| 5936 | # Require valid-user |
|---|
| 5937 | #</Location> |
|---|
| 5938 | </IfDefine> |
|---|
| 5939 | EOF |
|---|
| 5940 | |
|---|
| 5941 | fi |
|---|
| 5942 | dobashcompletion tools/client-side/bash_completion subversion; |
|---|
| 5943 | rm -f tools/client-side/bash_completion; |
|---|
| 5944 | newbin tools/backup/hot-backup.py svn-hot-backup; |
|---|
| 5945 | rm -fr tools/backup; |
|---|
| 5946 | if use perl; then |
|---|
| 5947 | dobin contrib/client-side/svn_load_dirs/svn_load_dirs.pl; |
|---|
| 5948 | fi; |
|---|
| 5949 | rm -f contrib/client-side/svn_load_dirs/svn_load_dirs.pl; |
|---|
| 5950 | newinitd "${FILESDIR}"/svnserve.initd svnserve; |
|---|
| 5951 | if use apache2; then |
|---|
| 5952 | newconfd "${FILESDIR}"/svnserve.confd svnserve; |
|---|
| 5953 | else |
|---|
| 5954 | newconfd "${FILESDIR}"/svnserve.confd2 svnserve; |
|---|
| 5955 | fi; |
|---|
| 5956 | insinto /etc/xinetd.d; |
|---|
| 5957 | newins "${FILESDIR}"/svnserve.xinetd svnserve; |
|---|
| 5958 | dodoc CHANGES COMMITTERS README; |
|---|
| 5959 | dohtml www/hacking.html; |
|---|
| 5960 | dodoc tools/xslt/svnindex.{css,xsl}; |
|---|
| 5961 | rm -fr tools/xslt; |
|---|
| 5962 | if use vim-syntax; then |
|---|
| 5963 | insinto /usr/share/vim/vimfiles/syntax; |
|---|
| 5964 | doins contrib/client-side/vim/svn.vim; |
|---|
| 5965 | fi; |
|---|
| 5966 | rm -f contrib/client-side/vim/svn.vim; |
|---|
| 5967 | if use emacs; then |
|---|
| 5968 | elisp-install ${PN} contrib/client-side/emacs/{dsvn,psvn}.{el,elc} doc/svn-doc.{el,elc} doc/tools/svnbook.{el,elc} || die "Installation of Emacs modules failed"; |
|---|
| 5969 | elisp-install ${PN}/compat contrib/client-side/emacs/vc-svn.{el,elc} || die "Installation of Emacs modules failed"; |
|---|
| 5970 | touch "${D}${SITELISP}/${PN}/compat/.nosearch"; |
|---|
| 5971 | elisp-site-file-install "${FILESDIR}/70svn-gentoo.el" || die "Installation of Emacs site-init file failed"; |
|---|
| 5972 | fi; |
|---|
| 5973 | rm -fr contrib/client-side/emacs; |
|---|
| 5974 | if use extras; then |
|---|
| 5975 | einfo; |
|---|
| 5976 | einfo "Installation of contrib and tools"; |
|---|
| 5977 | einfo; |
|---|
| 5978 | cat > 80subversion-extras <<EOF |
|---|
| 5979 | PATH=/usr/$(get_libdir)/subversion/bin |
|---|
| 5980 | ROOTPATH=/usr/$(get_libdir)/subversion/bin |
|---|
| 5981 | EOF |
|---|
| 5982 | |
|---|
| 5983 | doenvd 80subversion-extras; |
|---|
| 5984 | emake DESTDIR="${D}" contribdir="/usr/$(get_libdir)/subversion/bin" install-contrib || die "Installation of contrib failed"; |
|---|
| 5985 | emake DESTDIR="${D}" toolsdir="/usr/$(get_libdir)/subversion/bin" install-tools || die "Installation of tools failed"; |
|---|
| 5986 | find contrib tools "(" -name "*.bat" -o -name "*.in" -o -name ".libs" ")" -print0 | xargs -0 rm -fr; |
|---|
| 5987 | rm -fr contrib/client-side/svn-push; |
|---|
| 5988 | rm -fr contrib/server-side/svnstsw; |
|---|
| 5989 | rm -fr tools/client-side/svnmucc; |
|---|
| 5990 | rm -fr tools/server-side/{svn-populate-node-origins-index,svnauthz-validate}*; |
|---|
| 5991 | rm -fr tools/{buildbot,dev,diff,po}; |
|---|
| 5992 | insinto /usr/share/${PN}; |
|---|
| 5993 | doins -r contrib tools; |
|---|
| 5994 | fi; |
|---|
| 5995 | if use doc; then |
|---|
| 5996 | einfo; |
|---|
| 5997 | einfo "Installation of Subversion HTML documentation"; |
|---|
| 5998 | einfo; |
|---|
| 5999 | dohtml doc/doxygen/html/* || die "Installation of Subversion HTML documentation failed"; |
|---|
| 6000 | insinto /usr/share/doc/${PF}; |
|---|
| 6001 | doins -r notes; |
|---|
| 6002 | ecompressdir /usr/share/doc/${PF}/notes; |
|---|
| 6003 | if use java; then |
|---|
| 6004 | java-pkg_dojavadoc doc/javadoc; |
|---|
| 6005 | fi; |
|---|
| 6006 | fi |
|---|
| 6007 | } |
|---|
| 6008 | src_prepare () |
|---|
| 6009 | { |
|---|
| 6010 | epatch "${FILESDIR}/${PN}-1.6.0-disable_linking_against_unneeded_libraries.patch"; |
|---|
| 6011 | epatch "${FILESDIR}/${P}-fix_undefined_references.patch"; |
|---|
| 6012 | epatch "${FILESDIR}/${P}-local_library_preloading.patch"; |
|---|
| 6013 | chmod +x build/transform_libtool_scripts.sh || die "chmod failed"; |
|---|
| 6014 | if ! use test; then |
|---|
| 6015 | sed -i -e "s/\(BUILD_RULES=.*\) bdb-test\(.*\)/\1\2/g" -e "s/\(BUILD_RULES=.*\) test\(.*\)/\1\2/g" configure.ac; |
|---|
| 6016 | fi; |
|---|
| 6017 | eautoconf; |
|---|
| 6018 | elibtoolize |
|---|
| 6019 | } |
|---|
| 6020 | src_test () |
|---|
| 6021 | { |
|---|
| 6022 | local fs_type fs_types ra_type ra_types options failed_tests; |
|---|
| 6023 | fs_types="fsfs"; |
|---|
| 6024 | use berkdb && fs_types+=" bdb"; |
|---|
| 6025 | ra_types="local svn"; |
|---|
| 6026 | if [[ -n "${SVN_TEST_APACHE}" ]]; then |
|---|
| 6027 | use webdav-neon && ra_types+=" neon"; |
|---|
| 6028 | use webdav-serf && ra_types+=" serf"; |
|---|
| 6029 | fi; |
|---|
| 6030 | [[ -z "${SVN_TEST_SVNSERVE_PORT}" ]] && SVN_TEST_SVNSERVE_PORT="3690"; |
|---|
| 6031 | if [[ -n "${SVN_TEST_FSFS_MEMCACHED}" ]]; then |
|---|
| 6032 | [[ -z "${SVN_TEST_FSFS_MEMCACHED_PORT}" ]] && SVN_TEST_FSFS_MEMCACHED_PORT="11211"; |
|---|
| 6033 | sed -e "/\[memcached-servers\]/akey = 127.0.0.1:${SVN_TEST_FSFS_MEMCACHED_PORT}" -i subversion/tests/tests.conf; |
|---|
| 6034 | fi; |
|---|
| 6035 | if [[ -n "${SVN_TEST_FSFS_SHARDING}" ]]; then |
|---|
| 6036 | options+=" FSFS_SHARDING=${SVN_TEST_FSFS_SHARDING}"; |
|---|
| 6037 | fi; |
|---|
| 6038 | if [[ -n "${SVN_TEST_FSFS_PACKING}" ]]; then |
|---|
| 6039 | options+=" FSFS_PACKING=1"; |
|---|
| 6040 | fi; |
|---|
| 6041 | for ra_type in ${ra_types}; |
|---|
| 6042 | do |
|---|
| 6043 | for fs_type in ${fs_types}; |
|---|
| 6044 | do |
|---|
| 6045 | [[ "${ra_type}" == "local" && "${fs_type}" == "bdb" ]] && continue; |
|---|
| 6046 | einfo; |
|---|
| 6047 | einfo "\e[1;34mTesting of ra_${ra_type} + $(echo ${fs_type} | tr '[:lower:]' '[:upper:]')\e[0m"; |
|---|
| 6048 | einfo; |
|---|
| 6049 | initialize_tests_environment ${ra_type}; |
|---|
| 6050 | emake check FS_TYPE="${fs_type}" BASE_URL="${base_url}" HTTP_LIBRARY="${http_library}" CLEANUP="1" ${options} || failed_tests="1"; |
|---|
| 6051 | terminate_tests_environment ${ra_type}; |
|---|
| 6052 | mv tests.log tests-ra_${ra_type}-${fs_type}.log; |
|---|
| 6053 | done; |
|---|
| 6054 | done; |
|---|
| 6055 | unset base_url http_library; |
|---|
| 6056 | if [[ -n "${SVN_TEST_BINDINGS}" ]]; then |
|---|
| 6057 | local swig_lingua swig_linguas; |
|---|
| 6058 | local -A linguas; |
|---|
| 6059 | if use ctypes-python; then |
|---|
| 6060 | einfo; |
|---|
| 6061 | einfo "\e[1;34mTesting of Subversion Ctypes Python bindings\e[0m"; |
|---|
| 6062 | einfo; |
|---|
| 6063 | emake check-ctypes-python || failed_tests="1"; |
|---|
| 6064 | fi; |
|---|
| 6065 | use perl && swig_linguas+=" pl"; |
|---|
| 6066 | use python && swig_linguas+=" py"; |
|---|
| 6067 | use ruby && swig_linguas+=" rb"; |
|---|
| 6068 | linguas[pl]="Perl"; |
|---|
| 6069 | linguas[py]="Python"; |
|---|
| 6070 | linguas[rb]="Ruby"; |
|---|
| 6071 | for swig_lingua in ${swig_linguas}; |
|---|
| 6072 | do |
|---|
| 6073 | einfo; |
|---|
| 6074 | einfo "\e[1;34mTesting of Subversion SWIG ${linguas[${swig_lingua}]} bindings\e[0m"; |
|---|
| 6075 | einfo; |
|---|
| 6076 | emake check-swig-${swig_lingua} || failed_tests="1"; |
|---|
| 6077 | done; |
|---|
| 6078 | if use java; then |
|---|
| 6079 | einfo; |
|---|
| 6080 | einfo "\e[1;34mTesting of Subversion JavaHL library\e[0m"; |
|---|
| 6081 | einfo; |
|---|
| 6082 | emake check-javahl || failed_tests="1"; |
|---|
| 6083 | fi; |
|---|
| 6084 | fi; |
|---|
| 6085 | if [[ -n "${failed_tests}" ]]; then |
|---|
| 6086 | ewarn; |
|---|
| 6087 | ewarn "\e[1;31mSome tests failed\e[0m"; |
|---|
| 6088 | ewarn; |
|---|
| 6089 | ebeep 12; |
|---|
| 6090 | fi |
|---|
| 6091 | } |
|---|
| 6092 | src_unpack () |
|---|
| 6093 | { |
|---|
| 6094 | if use test && { |
|---|
| 6095 | use webdav-neon || use webdav-serf |
|---|
| 6096 | }; then |
|---|
| 6097 | create_apache_tests_configuration; |
|---|
| 6098 | elog; |
|---|
| 6099 | elog "Testing of mod_dav_svn, mod_authz_svn and libsvn_ra_neon / libsvn_ra_serf:"; |
|---|
| 6100 | elog " If you want to test mod_dav_svn, mod_authz_svn and libsvn_ra_neon / libsvn_ra_serf,"; |
|---|
| 6101 | elog " ensure that ${CATEGORY}/${PN} is installed with USE=\"apache2\","; |
|---|
| 6102 | elog " copy \"${T}/99_subversion_tests.conf\""; |
|---|
| 6103 | elog " to \"/etc/apache2/modules.d\" directory, add definitions of DAV, SVN, SVN_AUTHZ"; |
|---|
| 6104 | elog " and SVN_TESTS to APACHE2_OPTS variable in \"/etc/conf.d/apache2\" configuration file,"; |
|---|
| 6105 | elog " (re)start Apache and run \`SVN_TEST_APACHE=1 emerge ${CATEGORY}/${PN}\`."; |
|---|
| 6106 | elog; |
|---|
| 6107 | elog "\e[31m************************************************************************************************\e[0m"; |
|---|
| 6108 | elog; |
|---|
| 6109 | if [[ -z "${SVN_TEST_APACHE}" ]]; then |
|---|
| 6110 | ebeep 6; |
|---|
| 6111 | epause 18; |
|---|
| 6112 | else |
|---|
| 6113 | if [[ ! -f "/etc/apache2/modules.d/99_subversion_tests.conf" ]]; then |
|---|
| 6114 | die "/etc/apache2/modules.d/99_subversion_tests.conf doesn't exist"; |
|---|
| 6115 | fi; |
|---|
| 6116 | if ! cmp -s "${T}/99_subversion_tests.conf" "/etc/apache2/modules.d/99_subversion_tests.conf"; then |
|---|
| 6117 | die "/etc/apache2/modules.d/99_subversion_tests.conf mismatch"; |
|---|
| 6118 | fi; |
|---|
| 6119 | epause 24; |
|---|
| 6120 | fi; |
|---|
| 6121 | fi; |
|---|
| 6122 | unpack ${A} |
|---|
| 6123 | } |
|---|
| 6124 | strip-flags () |
|---|
| 6125 | { |
|---|
| 6126 | local x y flag NEW_CFLAGS NEW_CXXFLAGS NEW_FFLAGS NEW_FCFLAGS; |
|---|
| 6127 | setup-allowed-flags; |
|---|
| 6128 | local NEW_CFLAGS=""; |
|---|
| 6129 | local NEW_CXXFLAGS=""; |
|---|
| 6130 | local NEW_FFLAGS=""; |
|---|
| 6131 | local NEW_FCFLAGS=""; |
|---|
| 6132 | if has ~$(tc-arch) ${ACCEPT_KEYWORDS}; then |
|---|
| 6133 | ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}"; |
|---|
| 6134 | fi; |
|---|
| 6135 | set -f; |
|---|
| 6136 | for x in ${CFLAGS}; |
|---|
| 6137 | do |
|---|
| 6138 | for y in ${ALLOWED_FLAGS}; |
|---|
| 6139 | do |
|---|
| 6140 | flag=${x%%=*}; |
|---|
| 6141 | if [ "${flag%%${y}}" = "" ]; then |
|---|
| 6142 | NEW_CFLAGS="${NEW_CFLAGS} ${x}"; |
|---|
| 6143 | break; |
|---|
| 6144 | fi; |
|---|
| 6145 | done; |
|---|
| 6146 | done; |
|---|
| 6147 | for x in ${CXXFLAGS}; |
|---|
| 6148 | do |
|---|
| 6149 | for y in ${ALLOWED_FLAGS}; |
|---|
| 6150 | do |
|---|
| 6151 | flag=${x%%=*}; |
|---|
| 6152 | if [ "${flag%%${y}}" = "" ]; then |
|---|
| 6153 | NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}"; |
|---|
| 6154 | break; |
|---|
| 6155 | fi; |
|---|
| 6156 | done; |
|---|
| 6157 | done; |
|---|
| 6158 | for x in ${FFLAGS}; |
|---|
| 6159 | do |
|---|
| 6160 | for y in ${ALLOWED_FLAGS}; |
|---|
| 6161 | do |
|---|
| 6162 | flag=${x%%=*}; |
|---|
| 6163 | if [ "${flag%%${y}}" = "" ]; then |
|---|
| 6164 | NEW_FFLAGS="${NEW_FFLAGS} ${x}"; |
|---|
| 6165 | break; |
|---|
| 6166 | fi; |
|---|
| 6167 | done; |
|---|
| 6168 | done; |
|---|
| 6169 | for x in ${FCFLAGS}; |
|---|
| 6170 | do |
|---|
| 6171 | for y in ${ALLOWED_FLAGS}; |
|---|
| 6172 | do |
|---|
| 6173 | flag=${x%%=*}; |
|---|
| 6174 | if [ "${flag%%${y}}" = "" ]; then |
|---|
| 6175 | NEW_FCFLAGS="${NEW_FCFLAGS} ${x}"; |
|---|
| 6176 | break; |
|---|
| 6177 | fi; |
|---|
| 6178 | done; |
|---|
| 6179 | done; |
|---|
| 6180 | if [ "${CFLAGS/-O}" != "${CFLAGS}" -a "${NEW_CFLAGS/-O}" = "${NEW_CFLAGS}" ]; then |
|---|
| 6181 | NEW_CFLAGS="${NEW_CFLAGS} -O2"; |
|---|
| 6182 | fi; |
|---|
| 6183 | if [ "${CXXFLAGS/-O}" != "${CXXFLAGS}" -a "${NEW_CXXFLAGS/-O}" = "${NEW_CXXFLAGS}" ]; then |
|---|
| 6184 | NEW_CXXFLAGS="${NEW_CXXFLAGS} -O2"; |
|---|
| 6185 | fi; |
|---|
| 6186 | if [ "${FFLAGS/-O}" != "${FFLAGS}" -a "${NEW_FFLAGS/-O}" = "${NEW_FFLAGS}" ]; then |
|---|
| 6187 | NEW_FFLAGS="${NEW_FFLAGS} -O2"; |
|---|
| 6188 | fi; |
|---|
| 6189 | if [ "${FCFLAGS/-O}" != "${FCFLAGS}" -a "${NEW_FCFLAGS/-O}" = "${NEW_FCFLAGS}" ]; then |
|---|
| 6190 | NEW_FCFLAGS="${NEW_FCFLAGS} -O2"; |
|---|
| 6191 | fi; |
|---|
| 6192 | set +f; |
|---|
| 6193 | export CFLAGS="${NEW_CFLAGS}"; |
|---|
| 6194 | export CXXFLAGS="${NEW_CXXFLAGS}"; |
|---|
| 6195 | export FFLAGS="${NEW_FFLAGS}"; |
|---|
| 6196 | export FCFLAGS="${NEW_FCFLAGS}"; |
|---|
| 6197 | return 0 |
|---|
| 6198 | } |
|---|
| 6199 | strip-linguas () |
|---|
| 6200 | { |
|---|
| 6201 | local ls newls nols; |
|---|
| 6202 | if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then |
|---|
| 6203 | local op=$1; |
|---|
| 6204 | shift; |
|---|
| 6205 | ls=$(find "$1" -name '*.po' -exec basename {} .po ';'); |
|---|
| 6206 | shift; |
|---|
| 6207 | local d f; |
|---|
| 6208 | for d in "$@"; |
|---|
| 6209 | do |
|---|
| 6210 | if [[ ${op} == "-u" ]]; then |
|---|
| 6211 | newls=${ls}; |
|---|
| 6212 | else |
|---|
| 6213 | newls=""; |
|---|
| 6214 | fi; |
|---|
| 6215 | for f in $(find "$d" -name '*.po' -exec basename {} .po ';'); |
|---|
| 6216 | do |
|---|
| 6217 | if [[ ${op} == "-i" ]]; then |
|---|
| 6218 | hasq ${f} ${ls} && newls="${newls} ${f}"; |
|---|
| 6219 | else |
|---|
| 6220 | hasq ${f} ${ls} || newls="${newls} ${f}"; |
|---|
| 6221 | fi; |
|---|
| 6222 | done; |
|---|
| 6223 | ls=${newls}; |
|---|
| 6224 | done; |
|---|
| 6225 | else |
|---|
| 6226 | ls="$@"; |
|---|
| 6227 | fi; |
|---|
| 6228 | nols=""; |
|---|
| 6229 | newls=""; |
|---|
| 6230 | for f in ${LINGUAS}; |
|---|
| 6231 | do |
|---|
| 6232 | if hasq ${f} ${ls}; then |
|---|
| 6233 | newls="${newls} ${f}"; |
|---|
| 6234 | else |
|---|
| 6235 | nols="${nols} ${f}"; |
|---|
| 6236 | fi; |
|---|
| 6237 | done; |
|---|
| 6238 | [[ -n ${nols} ]] && ewarn "Sorry, but ${PN} does not support the LINGUAS:" ${nols}; |
|---|
| 6239 | export LINGUAS=${newls:1} |
|---|
| 6240 | } |
|---|
| 6241 | strip-unsupported-flags () |
|---|
| 6242 | { |
|---|
| 6243 | export CFLAGS=$(test-flags-CC ${CFLAGS}); |
|---|
| 6244 | export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS}); |
|---|
| 6245 | export FFLAGS=$(test-flags-F77 ${FFLAGS}); |
|---|
| 6246 | export FCFLAGS=$(test-flags-FC ${FCFLAGS}) |
|---|
| 6247 | } |
|---|
| 6248 | tc-arch () |
|---|
| 6249 | { |
|---|
| 6250 | tc-ninja_magic_to_arch portage "$@" |
|---|
| 6251 | } |
|---|
| 6252 | tc-arch-kernel () |
|---|
| 6253 | { |
|---|
| 6254 | tc-ninja_magic_to_arch kern "$@" |
|---|
| 6255 | } |
|---|
| 6256 | tc-endian () |
|---|
| 6257 | { |
|---|
| 6258 | local host=$1; |
|---|
| 6259 | [[ -z ${host} ]] && host=${CTARGET:-${CHOST}}; |
|---|
| 6260 | host=${host%%-*}; |
|---|
| 6261 | case ${host} in |
|---|
| 6262 | alpha*) |
|---|
| 6263 | echo big |
|---|
| 6264 | ;; |
|---|
| 6265 | arm*b*) |
|---|
| 6266 | echo big |
|---|
| 6267 | ;; |
|---|
| 6268 | arm*) |
|---|
| 6269 | echo little |
|---|
| 6270 | ;; |
|---|
| 6271 | cris*) |
|---|
| 6272 | echo little |
|---|
| 6273 | ;; |
|---|
| 6274 | hppa*) |
|---|
| 6275 | echo big |
|---|
| 6276 | ;; |
|---|
| 6277 | i?86*) |
|---|
| 6278 | echo little |
|---|
| 6279 | ;; |
|---|
| 6280 | ia64*) |
|---|
| 6281 | echo little |
|---|
| 6282 | ;; |
|---|
| 6283 | m68*) |
|---|
| 6284 | echo big |
|---|
| 6285 | ;; |
|---|
| 6286 | mips*l*) |
|---|
| 6287 | echo little |
|---|
| 6288 | ;; |
|---|
| 6289 | mips*) |
|---|
| 6290 | echo big |
|---|
| 6291 | ;; |
|---|
| 6292 | powerpc*) |
|---|
| 6293 | echo big |
|---|
| 6294 | ;; |
|---|
| 6295 | s390*) |
|---|
| 6296 | echo big |
|---|
| 6297 | ;; |
|---|
| 6298 | sh*b*) |
|---|
| 6299 | echo big |
|---|
| 6300 | ;; |
|---|
| 6301 | sh*) |
|---|
| 6302 | echo little |
|---|
| 6303 | ;; |
|---|
| 6304 | sparc*) |
|---|
| 6305 | echo big |
|---|
| 6306 | ;; |
|---|
| 6307 | x86_64*) |
|---|
| 6308 | echo little |
|---|
| 6309 | ;; |
|---|
| 6310 | *) |
|---|
| 6311 | echo wtf |
|---|
| 6312 | ;; |
|---|
| 6313 | esac |
|---|
| 6314 | } |
|---|
| 6315 | tc-export () |
|---|
| 6316 | { |
|---|
| 6317 | local var; |
|---|
| 6318 | for var in "$@"; |
|---|
| 6319 | do |
|---|
| 6320 | [[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'"; |
|---|
| 6321 | eval tc-get${var} > /dev/null; |
|---|
| 6322 | done |
|---|
| 6323 | } |
|---|
| 6324 | tc-getAR () |
|---|
| 6325 | { |
|---|
| 6326 | tc-getPROG AR ar "$@" |
|---|
| 6327 | } |
|---|
| 6328 | tc-getAS () |
|---|
| 6329 | { |
|---|
| 6330 | tc-getPROG AS as "$@" |
|---|
| 6331 | } |
|---|
| 6332 | tc-getBUILD_CC () |
|---|
| 6333 | { |
|---|
| 6334 | local v; |
|---|
| 6335 | for v in CC_FOR_BUILD BUILD_CC HOSTCC; |
|---|
| 6336 | do |
|---|
| 6337 | if [[ -n ${!v} ]]; then |
|---|
| 6338 | export BUILD_CC=${!v}; |
|---|
| 6339 | echo "${!v}"; |
|---|
| 6340 | return 0; |
|---|
| 6341 | fi; |
|---|
| 6342 | done; |
|---|
| 6343 | local search=; |
|---|
| 6344 | if [[ -n ${CBUILD} ]]; then |
|---|
| 6345 | search=$(type -p ${CBUILD}-gcc); |
|---|
| 6346 | search=${search##*/}; |
|---|
| 6347 | fi; |
|---|
| 6348 | search=${search:-gcc}; |
|---|
| 6349 | export BUILD_CC=${search}; |
|---|
| 6350 | echo "${search}" |
|---|
| 6351 | } |
|---|
| 6352 | tc-getCC () |
|---|
| 6353 | { |
|---|
| 6354 | tc-getPROG CC gcc "$@" |
|---|
| 6355 | } |
|---|
| 6356 | tc-getCPP () |
|---|
| 6357 | { |
|---|
| 6358 | tc-getPROG CPP cpp "$@" |
|---|
| 6359 | } |
|---|
| 6360 | tc-getCXX () |
|---|
| 6361 | { |
|---|
| 6362 | tc-getPROG CXX g++ "$@" |
|---|
| 6363 | } |
|---|
| 6364 | tc-getF77 () |
|---|
| 6365 | { |
|---|
| 6366 | tc-getPROG F77 f77 "$@" |
|---|
| 6367 | } |
|---|
| 6368 | tc-getFC () |
|---|
| 6369 | { |
|---|
| 6370 | tc-getPROG FC gfortran "$@" |
|---|
| 6371 | } |
|---|
| 6372 | tc-getGCJ () |
|---|
| 6373 | { |
|---|
| 6374 | tc-getPROG GCJ gcj "$@" |
|---|
| 6375 | } |
|---|
| 6376 | tc-getLD () |
|---|
| 6377 | { |
|---|
| 6378 | tc-getPROG LD ld "$@" |
|---|
| 6379 | } |
|---|
| 6380 | tc-getNM () |
|---|
| 6381 | { |
|---|
| 6382 | tc-getPROG NM nm "$@" |
|---|
| 6383 | } |
|---|
| 6384 | tc-getOBJCOPY () |
|---|
| 6385 | { |
|---|
| 6386 | tc-getPROG OBJCOPY objcopy "$@" |
|---|
| 6387 | } |
|---|
| 6388 | tc-getPROG () |
|---|
| 6389 | { |
|---|
| 6390 | local var=$1; |
|---|
| 6391 | local prog=$2; |
|---|
| 6392 | if [[ -n ${!var} ]]; then |
|---|
| 6393 | echo "${!var}"; |
|---|
| 6394 | return 0; |
|---|
| 6395 | fi; |
|---|
| 6396 | local search=; |
|---|
| 6397 | [[ -n $3 ]] && search=$(type -p "$3-${prog}"); |
|---|
| 6398 | [[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}"); |
|---|
| 6399 | [[ -n ${search} ]] && prog=${search##*/}; |
|---|
| 6400 | export ${var}=${prog}; |
|---|
| 6401 | echo "${!var}" |
|---|
| 6402 | } |
|---|
| 6403 | tc-getRANLIB () |
|---|
| 6404 | { |
|---|
| 6405 | tc-getPROG RANLIB ranlib "$@" |
|---|
| 6406 | } |
|---|
| 6407 | tc-getSTRIP () |
|---|
| 6408 | { |
|---|
| 6409 | tc-getPROG STRIP strip "$@" |
|---|
| 6410 | } |
|---|
| 6411 | tc-is-cross-compiler () |
|---|
| 6412 | { |
|---|
| 6413 | return $([[ ${CBUILD:-${CHOST}} != ${CHOST} ]]) |
|---|
| 6414 | } |
|---|
| 6415 | tc-is-softfloat () |
|---|
| 6416 | { |
|---|
| 6417 | case ${CTARGET} in |
|---|
| 6418 | bfin* | h8300*) |
|---|
| 6419 | echo "only" |
|---|
| 6420 | ;; |
|---|
| 6421 | *) |
|---|
| 6422 | [[ ${CTARGET//_/-} == *-softfloat-* ]] && echo "yes" || echo "no" |
|---|
| 6423 | ;; |
|---|
| 6424 | esac |
|---|
| 6425 | } |
|---|
| 6426 | tc-is-static-only () |
|---|
| 6427 | { |
|---|
| 6428 | local host=${CTARGET:-${CHOST}}; |
|---|
| 6429 | return $([[ ${host} == *-mint* ]]) |
|---|
| 6430 | } |
|---|
| 6431 | tc-ninja_magic_to_arch () |
|---|
| 6432 | { |
|---|
| 6433 | function ninj () |
|---|
| 6434 | { |
|---|
| 6435 | [[ ${type} == "kern" ]] && echo $1 || echo $2 |
|---|
| 6436 | }; |
|---|
| 6437 | local type=$1; |
|---|
| 6438 | local host=$2; |
|---|
| 6439 | [[ -z ${host} ]] && host=${CTARGET:-${CHOST}}; |
|---|
| 6440 | case ${host} in |
|---|
| 6441 | alpha*) |
|---|
| 6442 | echo alpha |
|---|
| 6443 | ;; |
|---|
| 6444 | arm*) |
|---|
| 6445 | echo arm |
|---|
| 6446 | ;; |
|---|
| 6447 | avr*) |
|---|
| 6448 | ninj avr32 avr |
|---|
| 6449 | ;; |
|---|
| 6450 | bfin*) |
|---|
| 6451 | ninj blackfin bfin |
|---|
| 6452 | ;; |
|---|
| 6453 | cris*) |
|---|
| 6454 | echo cris |
|---|
| 6455 | ;; |
|---|
| 6456 | hppa*) |
|---|
| 6457 | ninj parisc hppa |
|---|
| 6458 | ;; |
|---|
| 6459 | i?86*) |
|---|
| 6460 | if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -lt $(KV_to_int 2.6.24) || ${host} == *freebsd* ]]; then |
|---|
| 6461 | echo i386; |
|---|
| 6462 | else |
|---|
| 6463 | echo x86; |
|---|
| 6464 | fi |
|---|
| 6465 | ;; |
|---|
| 6466 | ia64*) |
|---|
| 6467 | echo ia64 |
|---|
| 6468 | ;; |
|---|
| 6469 | m68*) |
|---|
| 6470 | echo m68k |
|---|
| 6471 | ;; |
|---|
| 6472 | mips*) |
|---|
| 6473 | echo mips |
|---|
| 6474 | ;; |
|---|
| 6475 | nios2*) |
|---|
| 6476 | echo nios2 |
|---|
| 6477 | ;; |
|---|
| 6478 | nios*) |
|---|
| 6479 | echo nios |
|---|
| 6480 | ;; |
|---|
| 6481 | powerpc*) |
|---|
| 6482 | if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]] && [[ ${type} == "kern" ]]; then |
|---|
| 6483 | echo powerpc; |
|---|
| 6484 | else |
|---|
| 6485 | if [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]] && [[ ${type} == "kern" ]]; then |
|---|
| 6486 | if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then |
|---|
| 6487 | echo powerpc; |
|---|
| 6488 | else |
|---|
| 6489 | echo ppc; |
|---|
| 6490 | fi; |
|---|
| 6491 | else |
|---|
| 6492 | if [[ ${host} == powerpc64* ]]; then |
|---|
| 6493 | echo ppc64; |
|---|
| 6494 | else |
|---|
| 6495 | if [[ ${PROFILE_ARCH} == "ppc64" ]]; then |
|---|
| 6496 | ninj ppc64 ppc; |
|---|
| 6497 | else |
|---|
| 6498 | echo ppc; |
|---|
| 6499 | fi; |
|---|
| 6500 | fi; |
|---|
| 6501 | fi; |
|---|
| 6502 | fi |
|---|
| 6503 | ;; |
|---|
| 6504 | s390*) |
|---|
| 6505 | echo s390 |
|---|
| 6506 | ;; |
|---|
| 6507 | sh64*) |
|---|
| 6508 | ninj sh64 sh |
|---|
| 6509 | ;; |
|---|
| 6510 | sh*) |
|---|
| 6511 | echo sh |
|---|
| 6512 | ;; |
|---|
| 6513 | sparc64*) |
|---|
| 6514 | ninj sparc64 sparc |
|---|
| 6515 | ;; |
|---|
| 6516 | sparc*) |
|---|
| 6517 | [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc |
|---|
| 6518 | ;; |
|---|
| 6519 | vax*) |
|---|
| 6520 | echo vax |
|---|
| 6521 | ;; |
|---|
| 6522 | x86_64*) |
|---|
| 6523 | if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.24) ]]; then |
|---|
| 6524 | echo x86; |
|---|
| 6525 | else |
|---|
| 6526 | ninj x86_64 amd64; |
|---|
| 6527 | fi |
|---|
| 6528 | ;; |
|---|
| 6529 | *) |
|---|
| 6530 | echo unknown |
|---|
| 6531 | ;; |
|---|
| 6532 | esac |
|---|
| 6533 | } |
|---|
| 6534 | terminate_tests_environment () |
|---|
| 6535 | { |
|---|
| 6536 | [[ "$1" == "svn" ]] && kill "$(<"${T}/svnserve.pid")"; |
|---|
| 6537 | [[ -n "${SVN_TEST_FSFS_MEMCACHED}" ]] && kill "$(<"${T}/memcached.pid")" |
|---|
| 6538 | } |
|---|
| 6539 | test-flag-CC () |
|---|
| 6540 | { |
|---|
| 6541 | test-flag-PROG "CC" "$1" |
|---|
| 6542 | } |
|---|
| 6543 | test-flag-CXX () |
|---|
| 6544 | { |
|---|
| 6545 | test-flag-PROG "CXX" "$1" |
|---|
| 6546 | } |
|---|
| 6547 | test-flag-F77 () |
|---|
| 6548 | { |
|---|
| 6549 | test-flag-PROG "F77" "$1" |
|---|
| 6550 | } |
|---|
| 6551 | test-flag-FC () |
|---|
| 6552 | { |
|---|
| 6553 | test-flag-PROG "FC" "$1" |
|---|
| 6554 | } |
|---|
| 6555 | test-flag-PROG () |
|---|
| 6556 | { |
|---|
| 6557 | local comp=$1; |
|---|
| 6558 | local flags="$2"; |
|---|
| 6559 | [[ -z ${comp} || -z ${flags} ]] && return 1; |
|---|
| 6560 | local PROG=$(tc-get${comp}); |
|---|
| 6561 | ${PROG} ${flags} -S -o /dev/null -xc /dev/null > /dev/null 2>&1 |
|---|
| 6562 | } |
|---|
| 6563 | test-flags () |
|---|
| 6564 | { |
|---|
| 6565 | test-flags-CC "$@" |
|---|
| 6566 | } |
|---|
| 6567 | test-flags-CC () |
|---|
| 6568 | { |
|---|
| 6569 | test-flags-PROG "CC" "$@" |
|---|
| 6570 | } |
|---|
| 6571 | test-flags-CXX () |
|---|
| 6572 | { |
|---|
| 6573 | test-flags-PROG "CXX" "$@" |
|---|
| 6574 | } |
|---|
| 6575 | test-flags-F77 () |
|---|
| 6576 | { |
|---|
| 6577 | test-flags-PROG "F77" "$@" |
|---|
| 6578 | } |
|---|
| 6579 | test-flags-FC () |
|---|
| 6580 | { |
|---|
| 6581 | test-flags-PROG "FC" "$@" |
|---|
| 6582 | } |
|---|
| 6583 | test-flags-PROG () |
|---|
| 6584 | { |
|---|
| 6585 | local comp=$1; |
|---|
| 6586 | local flags; |
|---|
| 6587 | local x; |
|---|
| 6588 | shift; |
|---|
| 6589 | [[ -z ${comp} ]] && return 1; |
|---|
| 6590 | x=""; |
|---|
| 6591 | for x in "$@"; |
|---|
| 6592 | do |
|---|
| 6593 | test-flag-${comp} "${x}" && flags="${flags}${flags:+ }${x}"; |
|---|
| 6594 | done; |
|---|
| 6595 | echo "${flags}"; |
|---|
| 6596 | [[ -n ${flags} ]] |
|---|
| 6597 | } |
|---|
| 6598 | test_flag () |
|---|
| 6599 | { |
|---|
| 6600 | ewarn "test_flag: deprecated, please use test-flags()!" 1>&2; |
|---|
| 6601 | test-flags-CC "$@" |
|---|
| 6602 | } |
|---|
| 6603 | test_version_info () |
|---|
| 6604 | { |
|---|
| 6605 | if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then |
|---|
| 6606 | return 0; |
|---|
| 6607 | else |
|---|
| 6608 | return 1; |
|---|
| 6609 | fi |
|---|
| 6610 | } |
|---|
| 6611 | treecopy () |
|---|
| 6612 | { |
|---|
| 6613 | dest=${!#}; |
|---|
| 6614 | files_count=$#; |
|---|
| 6615 | while (( $# > 1 )); do |
|---|
| 6616 | dirstruct=$(dirname "$1"); |
|---|
| 6617 | mkdir -p "${dest}/${dirstruct}"; |
|---|
| 6618 | cp -pPR "$1" "${dest}/${dirstruct}"; |
|---|
| 6619 | shift; |
|---|
| 6620 | done |
|---|
| 6621 | } |
|---|
| 6622 | uclibctoolize () |
|---|
| 6623 | { |
|---|
| 6624 | ewarn "uclibctoolize() is deprecated, please just use elibtoolize()!"; |
|---|
| 6625 | elibtoolize |
|---|
| 6626 | } |
|---|
| 6627 | unpack_makeself () |
|---|
| 6628 | { |
|---|
| 6629 | local src_input=${1:-${A}}; |
|---|
| 6630 | local src=$(find_unpackable_file "${src_input}"); |
|---|
| 6631 | local skip=$2; |
|---|
| 6632 | local exe=$3; |
|---|
| 6633 | [[ -z ${src} ]] && die "Could not locate source for '${src_input}'"; |
|---|
| 6634 | local shrtsrc=$(basename "${src}"); |
|---|
| 6635 | echo ">>> Unpacking ${shrtsrc} to ${PWD}"; |
|---|
| 6636 | if [[ -z ${skip} ]]; then |
|---|
| 6637 | local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}'); |
|---|
| 6638 | local skip=0; |
|---|
| 6639 | exe=tail; |
|---|
| 6640 | case ${ver} in |
|---|
| 6641 | 1.5.* | 1.6.0-nv) |
|---|
| 6642 | skip=$(grep -a ^skip= "${src}" | cut -d= -f2) |
|---|
| 6643 | ;; |
|---|
| 6644 | 2.0 | 2.0.1) |
|---|
| 6645 | skip=$(grep -a ^' 'tail "${src}" | awk '{print $2}' | cut -b2-) |
|---|
| 6646 | ;; |
|---|
| 6647 | 2.1.1) |
|---|
| 6648 | skip=$(grep -a ^offset= "${src}" | awk '{print $2}' | cut -b2-); |
|---|
| 6649 | let skip="skip + 1" |
|---|
| 6650 | ;; |
|---|
| 6651 | 2.1.2) |
|---|
| 6652 | skip=$(grep -a ^offset= "${src}" | awk '{print $3}' | head -n 1); |
|---|
| 6653 | let skip="skip + 1" |
|---|
| 6654 | ;; |
|---|
| 6655 | 2.1.3) |
|---|
| 6656 | skip=`grep -a ^offset= "${src}" | awk '{print $3}'`; |
|---|
| 6657 | let skip="skip + 1" |
|---|
| 6658 | ;; |
|---|
| 6659 | 2.1.4 | 2.1.5) |
|---|
| 6660 | skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1); |
|---|
| 6661 | skip=$(head -n ${skip} "${src}" | wc -c); |
|---|
| 6662 | exe="dd" |
|---|
| 6663 | ;; |
|---|
| 6664 | *) |
|---|
| 6665 | eerror "I'm sorry, but I was unable to support the Makeself file."; |
|---|
| 6666 | eerror "The version I detected was '${ver}'."; |
|---|
| 6667 | eerror "Please file a bug about the file ${shrtsrc} at"; |
|---|
| 6668 | eerror "http://bugs.gentoo.org/ so that support can be added."; |
|---|
| 6669 | die "makeself version '${ver}' not supported" |
|---|
| 6670 | ;; |
|---|
| 6671 | esac; |
|---|
| 6672 | debug-print "Detected Makeself version ${ver} ... using ${skip} as offset"; |
|---|
| 6673 | fi; |
|---|
| 6674 | case ${exe} in |
|---|
| 6675 | tail) |
|---|
| 6676 | exe="tail -n +${skip} '${src}'" |
|---|
| 6677 | ;; |
|---|
| 6678 | dd) |
|---|
| 6679 | exe="dd ibs=${skip} skip=1 obs=1024 conv=sync if='${src}'" |
|---|
| 6680 | ;; |
|---|
| 6681 | *) |
|---|
| 6682 | die "makeself cant handle exe '${exe}'" |
|---|
| 6683 | ;; |
|---|
| 6684 | esac; |
|---|
| 6685 | local tmpfile=$(emktemp); |
|---|
| 6686 | eval ${exe} 2> /dev/null | head -c 512 > "${tmpfile}"; |
|---|
| 6687 | local filetype=$(file -b "${tmpfile}"); |
|---|
| 6688 | case ${filetype} in |
|---|
| 6689 | *tar\ archive*) |
|---|
| 6690 | eval ${exe} | tar --no-same-owner -xf - |
|---|
| 6691 | ;; |
|---|
| 6692 | bzip2*) |
|---|
| 6693 | eval ${exe} | bzip2 -dc | tar --no-same-owner -xf - |
|---|
| 6694 | ;; |
|---|
| 6695 | gzip*) |
|---|
| 6696 | eval ${exe} | tar --no-same-owner -xzf - |
|---|
| 6697 | ;; |
|---|
| 6698 | compress*) |
|---|
| 6699 | eval ${exe} | gunzip | tar --no-same-owner -xf - |
|---|
| 6700 | ;; |
|---|
| 6701 | *) |
|---|
| 6702 | eerror "Unknown filetype \"${filetype}\" ?"; |
|---|
| 6703 | false |
|---|
| 6704 | ;; |
|---|
| 6705 | esac; |
|---|
| 6706 | _pipestatus="${PIPESTATUS[*]}"; |
|---|
| 6707 | [[ "${_pipestatus// /}" -eq 0 ]] || die "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})" |
|---|
| 6708 | } |
|---|
| 6709 | unpack_pdv () |
|---|
| 6710 | { |
|---|
| 6711 | local src=$(find_unpackable_file "$1"); |
|---|
| 6712 | local sizeoff_t=$2; |
|---|
| 6713 | [[ -z ${src} ]] && die "Could not locate source for '$1'"; |
|---|
| 6714 | [[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :("; |
|---|
| 6715 | local shrtsrc=$(basename "${src}"); |
|---|
| 6716 | echo ">>> Unpacking ${shrtsrc} to ${PWD}"; |
|---|
| 6717 | local metaskip=$(tail -c ${sizeoff_t} "${src}" | hexdump -e \"%i\"); |
|---|
| 6718 | local tailskip=$(tail -c $((${sizeoff_t}*2)) "${src}" | head -c ${sizeoff_t} | hexdump -e \"%i\"); |
|---|
| 6719 | local metafile=$(emktemp); |
|---|
| 6720 | tail -c +$((${metaskip}+1)) "${src}" > "${metafile}"; |
|---|
| 6721 | local datafile=$(tail -c +$((${metaskip}+1)) "${src}" | strings | head -n 1); |
|---|
| 6722 | datafile=$(basename "${datafile}"); |
|---|
| 6723 | local tmpfile=$(emktemp); |
|---|
| 6724 | tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c 512 > ${tmpfile}; |
|---|
| 6725 | local iscompressed=$(file -b "${tmpfile}"); |
|---|
| 6726 | if [[ ${iscompressed:0:8} == "compress" ]]; then |
|---|
| 6727 | iscompressed=1; |
|---|
| 6728 | mv ${tmpfile}{,.Z}; |
|---|
| 6729 | gunzip ${tmpfile}; |
|---|
| 6730 | else |
|---|
| 6731 | iscompressed=0; |
|---|
| 6732 | fi; |
|---|
| 6733 | local istar=$(file -b "${tmpfile}"); |
|---|
| 6734 | if [[ ${istar:0:9} == "POSIX tar" ]]; then |
|---|
| 6735 | istar=1; |
|---|
| 6736 | else |
|---|
| 6737 | istar=0; |
|---|
| 6738 | fi; |
|---|
| 6739 | if [ ${iscompressed} -eq 1 ]; then |
|---|
| 6740 | if [ ${istar} -eq 1 ]; then |
|---|
| 6741 | tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar -xzf -; |
|---|
| 6742 | else |
|---|
| 6743 | tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | gzip -dc > ${datafile}; |
|---|
| 6744 | fi; |
|---|
| 6745 | else |
|---|
| 6746 | if [ ${istar} -eq 1 ]; then |
|---|
| 6747 | tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar --no-same-owner -xf -; |
|---|
| 6748 | else |
|---|
| 6749 | tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) > ${datafile}; |
|---|
| 6750 | fi; |
|---|
| 6751 | fi; |
|---|
| 6752 | true |
|---|
| 6753 | } |
|---|
| 6754 | use_doc () |
|---|
| 6755 | { |
|---|
| 6756 | use doc && echo ${@:-javadoc} |
|---|
| 6757 | } |
|---|
| 6758 | validate_desktop_entries () |
|---|
| 6759 | { |
|---|
| 6760 | if [[ -x /usr/bin/desktop-file-validate ]]; then |
|---|
| 6761 | einfo "Checking desktop entry validity"; |
|---|
| 6762 | local directories=""; |
|---|
| 6763 | for d in /usr/share/applications $@; |
|---|
| 6764 | do |
|---|
| 6765 | [[ -d ${D}${d} ]] && directories="${directories} ${D}${d}"; |
|---|
| 6766 | done; |
|---|
| 6767 | if [[ -n ${directories} ]]; then |
|---|
| 6768 | for FILE in $(find ${directories} -name "*\.desktop" -not -path '*.hidden*' | sort -u 2>/dev/null); |
|---|
| 6769 | do |
|---|
| 6770 | local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | sed -e "s|error: ||" -e "s|${FILE}:|--|g" ); |
|---|
| 6771 | [[ -n $temp ]] && elog ${temp/--/${FILE/${D}/}:}; |
|---|
| 6772 | done; |
|---|
| 6773 | fi; |
|---|
| 6774 | echo ""; |
|---|
| 6775 | else |
|---|
| 6776 | einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo."; |
|---|
| 6777 | fi |
|---|
| 6778 | } |
|---|
| 6779 | version_compare () |
|---|
| 6780 | { |
|---|
| 6781 | __versionator_shopt_toggle on; |
|---|
| 6782 | local ver_a=${1} ver_b=${2} parts_a parts_b cur_idx_a=0 cur_idx_b=0; |
|---|
| 6783 | parts_a=($(get_all_version_components "${ver_a}" )); |
|---|
| 6784 | parts_b=($(get_all_version_components "${ver_b}" )); |
|---|
| 6785 | local inf_loop=0; |
|---|
| 6786 | while true; do |
|---|
| 6787 | inf_loop=$(( ${inf_loop} + 1 )); |
|---|
| 6788 | [[ ${inf_loop} -gt 20 ]] && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]"; |
|---|
| 6789 | local cur_tok_a=${parts_a[${cur_idx_a}]}; |
|---|
| 6790 | local cur_tok_b=${parts_b[${cur_idx_b}]}; |
|---|
| 6791 | if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then |
|---|
| 6792 | cur_idx_a=$(( ${cur_idx_a} + 1 )); |
|---|
| 6793 | [[ ${parts_a[${cur_idx_a}]} == "." ]] && cur_idx_a=$(( ${cur_idx_a} + 1 )); |
|---|
| 6794 | else |
|---|
| 6795 | cur_tok_a=""; |
|---|
| 6796 | fi; |
|---|
| 6797 | if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]]; then |
|---|
| 6798 | cur_idx_b=$(( ${cur_idx_b} + 1 )); |
|---|
| 6799 | [[ ${parts_b[${cur_idx_b}]} == "." ]] && cur_idx_b=$(( ${cur_idx_b} + 1 )); |
|---|
| 6800 | else |
|---|
| 6801 | cur_tok_b=""; |
|---|
| 6802 | fi; |
|---|
| 6803 | [[ -z ${cur_tok_a} ]] && [[ -z ${cur_tok_b} ]] && break; |
|---|
| 6804 | cur_tok_a=${cur_tok_a##+(0)}; |
|---|
| 6805 | cur_tok_b=${cur_tok_b##+(0)}; |
|---|
| 6806 | [[ -z ${cur_tok_a} ]] && cur_tok_a=0; |
|---|
| 6807 | [[ -z ${cur_tok_b} ]] && cur_tok_b=0; |
|---|
| 6808 | [[ ${cur_tok_a} -lt ${cur_tok_b} ]] && __versionator_shopt_toggle off && return 1; |
|---|
| 6809 | [[ ${cur_tok_a} -gt ${cur_tok_b} ]] && __versionator_shopt_toggle off && return 3; |
|---|
| 6810 | done; |
|---|
| 6811 | local letter_a=; |
|---|
| 6812 | letter_a=${parts_a[${cur_idx_a}]}; |
|---|
| 6813 | if [[ ${#letter_a} -eq 1 ]] && [[ -z ${letter_a/[a-z]} ]]; then |
|---|
| 6814 | cur_idx_a=$(( ${cur_idx_a} + 1 )); |
|---|
| 6815 | else |
|---|
| 6816 | letter_a="@"; |
|---|
| 6817 | fi; |
|---|
| 6818 | local letter_b=; |
|---|
| 6819 | letter_b=${parts_b[${cur_idx_b}]}; |
|---|
| 6820 | if [[ ${#letter_b} -eq 1 ]] && [[ -z ${letter_b/[a-z]} ]]; then |
|---|
| 6821 | cur_idx_b=$(( ${cur_idx_b} + 1 )); |
|---|
| 6822 | else |
|---|
| 6823 | letter_b="@"; |
|---|
| 6824 | fi; |
|---|
| 6825 | [[ ${letter_a} < ${letter_b} ]] && __versionator_shopt_toggle off && return 1; |
|---|
| 6826 | [[ ${letter_a} > ${letter_b} ]] && __versionator_shopt_toggle off && return 3; |
|---|
| 6827 | local suffix rule part r_lt r_gt; |
|---|
| 6828 | for rule in "alpha=1" "beta=1" "pre=1" "rc=1" "p=3" "r=3"; |
|---|
| 6829 | do |
|---|
| 6830 | suffix=${rule%%=*}; |
|---|
| 6831 | r_lt=${rule##*=}; |
|---|
| 6832 | [[ ${r_lt} -eq 1 ]] && r_gt=3 || r_gt=1; |
|---|
| 6833 | local suffix_a=; |
|---|
| 6834 | for part in ${parts_a[@]}; |
|---|
| 6835 | do |
|---|
| 6836 | [[ ${part#${suffix}} != ${part} ]] && [[ -z ${part##${suffix}*([[:digit:]])} ]] && suffix_a=${part#${suffix}}0; |
|---|
| 6837 | done; |
|---|
| 6838 | local suffix_b=; |
|---|
| 6839 | for part in ${parts_b[@]}; |
|---|
| 6840 | do |
|---|
| 6841 | [[ ${part#${suffix}} != ${part} ]] && [[ -z ${part##${suffix}*([[:digit:]])} ]] && suffix_b=${part#${suffix}}0; |
|---|
| 6842 | done; |
|---|
| 6843 | [[ -z ${suffix_a} ]] && [[ -z ${suffix_b} ]] && continue; |
|---|
| 6844 | [[ -z ${suffix_a} ]] && __versionator_shopt_toggle off && return ${r_gt}; |
|---|
| 6845 | [[ -z ${suffix_b} ]] && __versionator_shopt_toggle off && return ${r_lt}; |
|---|
| 6846 | suffix_a=${suffix_a##+(0)}; |
|---|
| 6847 | suffix_a=${suffix_a:-0}; |
|---|
| 6848 | suffix_b=${suffix_b##+(0)}; |
|---|
| 6849 | suffix_b=${suffix_b:-0}; |
|---|
| 6850 | [[ ${suffix_a} -lt ${suffix_b} ]] && __versionator_shopt_toggle off && return 1; |
|---|
| 6851 | [[ ${suffix_a} -gt ${suffix_b} ]] && __versionator_shopt_toggle off && return 3; |
|---|
| 6852 | done; |
|---|
| 6853 | __versionator_shopt_toggle off; |
|---|
| 6854 | return 2 |
|---|
| 6855 | } |
|---|
| 6856 | version_is_at_least () |
|---|
| 6857 | { |
|---|
| 6858 | __versionator_shopt_toggle on; |
|---|
| 6859 | local want_s="$1" have_s="${2:-${PVR}}" r; |
|---|
| 6860 | version_compare "${want_s}" "${have_s}"; |
|---|
| 6861 | r=$?; |
|---|
| 6862 | case $r in |
|---|
| 6863 | 1 | 2) |
|---|
| 6864 | __versionator_shopt_toggle off; |
|---|
| 6865 | return 0 |
|---|
| 6866 | ;; |
|---|
| 6867 | 3) |
|---|
| 6868 | __versionator_shopt_toggle off; |
|---|
| 6869 | return 1 |
|---|
| 6870 | ;; |
|---|
| 6871 | *) |
|---|
| 6872 | __versionator_shopt_toggle off; |
|---|
| 6873 | die "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]" |
|---|
| 6874 | ;; |
|---|
| 6875 | esac; |
|---|
| 6876 | __versionator_shopt_toggle off |
|---|
| 6877 | } |
|---|
| 6878 | version_sort () |
|---|
| 6879 | { |
|---|
| 6880 | __versionator_shopt_toggle on; |
|---|
| 6881 | local items= left=0; |
|---|
| 6882 | items=($@); |
|---|
| 6883 | while [[ ${left} -lt ${#items[@]} ]]; do |
|---|
| 6884 | local lowest_idx=${left}; |
|---|
| 6885 | local idx=$(( ${lowest_idx} + 1 )); |
|---|
| 6886 | while [[ ${idx} -lt ${#items[@]} ]]; do |
|---|
| 6887 | version_compare "${items[${lowest_idx}]}" "${items[${idx}]}"; |
|---|
| 6888 | [[ $? -eq 3 ]] && lowest_idx=${idx}; |
|---|
| 6889 | idx=$(( ${idx} + 1 )); |
|---|
| 6890 | done; |
|---|
| 6891 | local tmp=${items[${lowest_idx}]}; |
|---|
| 6892 | items[${lowest_idx}]=${items[${left}]}; |
|---|
| 6893 | items[${left}]=${tmp}; |
|---|
| 6894 | left=$(( ${left} + 1 )); |
|---|
| 6895 | done; |
|---|
| 6896 | echo ${items[@]}; |
|---|
| 6897 | __versionator_shopt_toggle off |
|---|
| 6898 | } |
|---|
| 6899 | want_apache () |
|---|
| 6900 | { |
|---|
| 6901 | debug-print-function $FUNCNAME $*; |
|---|
| 6902 | want_apache2 "$@" |
|---|
| 6903 | } |
|---|
| 6904 | want_apache2 () |
|---|
| 6905 | { |
|---|
| 6906 | debug-print-function $FUNCNAME $*; |
|---|
| 6907 | local myiuse=${1:-apache2}; |
|---|
| 6908 | IUSE="${IUSE} ${myiuse}"; |
|---|
| 6909 | DEPEND="${DEPEND} ${myiuse}? ( ${APACHE2_DEPEND} )"; |
|---|
| 6910 | RDEPEND="${RDEPEND} ${myiuse}? ( ${APACHE2_DEPEND} )" |
|---|
| 6911 | } |
|---|
| 6912 | want_apache2_2 () |
|---|
| 6913 | { |
|---|
| 6914 | debug-print-function $FUNCNAME $*; |
|---|
| 6915 | local myiuse=${1:-apache2}; |
|---|
| 6916 | IUSE="${IUSE} ${myiuse}"; |
|---|
| 6917 | DEPEND="${DEPEND} ${myiuse}? ( ${APACHE2_2_DEPEND} )"; |
|---|
| 6918 | RDEPEND="${RDEPEND} ${myiuse}? ( ${APACHE2_2_DEPEND} )" |
|---|
| 6919 | } |
|---|
| 6920 | declare -x ALSA_CARDS="" |
|---|
| 6921 | declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" |
|---|
| 6922 | declare -x APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" |
|---|
| 6923 | declare -x ARCH="arm" |
|---|
| 6924 | declare -x CBUILD="armv4tl-softfloat-linux-gnueabi" |
|---|
| 6925 | declare -x CDEFINE_default="__unix__" |
|---|
| 6926 | declare -x CFLAGS="-Os -march=armv4t -pipe -fno-strict-aliasing" |
|---|
| 6927 | declare -x CFLAGS_default="" |
|---|
| 6928 | declare -x CHOST="armv4tl-softfloat-linux-gnueabi" |
|---|
| 6929 | declare -x CHOST_default="armv4tl-softfloat-linux-gnueabi" |
|---|
| 6930 | declare -x CROSSCOMPILE_OPTS="" |
|---|
| 6931 | declare -x CTARGET_default="armv4tl-softfloat-linux-gnueabi" |
|---|
| 6932 | declare -x CVS_RSH="ssh" |
|---|
| 6933 | declare -x CXXFLAGS="-Os -march=armv4t -pipe -fno-strict-aliasing" |
|---|
| 6934 | declare -x DEFAULT_ABI="default" |
|---|
| 6935 | declare -x DESTTREE="/usr" |
|---|
| 6936 | declare -x DIROPTIONS="-m0755" |
|---|
| 6937 | declare -x EAPI="2" |
|---|
| 6938 | declare -x ELIBC="glibc" |
|---|
| 6939 | declare -x ELT_APPLIED_PATCHES=" 1.5.10 1.5.6 1.5.26" |
|---|
| 6940 | declare -x ELT_LTMAIN_SH="/var/tmp/portage/dev-util/subversion-1.6.2/work/subversion-1.6.2/build/ltmain.sh" |
|---|
| 6941 | declare -x EXEOPTIONS="-m0755" |
|---|
| 6942 | declare -x FCFLAGS=" -fno-strict-aliasing" |
|---|
| 6943 | declare -x FEATURES="distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch" |
|---|
| 6944 | declare -x FFLAGS=" -fno-strict-aliasing" |
|---|
| 6945 | declare -x GCC_SPECS="" |
|---|
| 6946 | declare -x HISTFILESIZE="1000" |
|---|
| 6947 | declare -x HISTSIZE="1000" |
|---|
| 6948 | declare -x INHERITED="autotools multilib elisp-common portability flag-o-matic python java-utils-2 versionator alternatives bash-completion java-pkg-opt-2 base libtool toolchain-funcs db-use depend.apache eutils perl-module" |
|---|
| 6949 | declare -x INPUT_DEVICES="" |
|---|
| 6950 | declare -x INSDESTTREE="" |
|---|
| 6951 | declare -x INSOPTIONS="-m0644" |
|---|
| 6952 | declare -x KERNEL="linux" |
|---|
| 6953 | declare -x KERNEL_ABI="default" |
|---|
| 6954 | declare -x KEYWORDS="alpha amd64 arm hppa ia64 ~ppc ~ppc64 s390 sh sparc x86" |
|---|
| 6955 | declare -x KV="" |
|---|
| 6956 | declare -x LCD_DEVICES="" |
|---|
| 6957 | declare -x LDFLAGS="-Wl,-O1" |
|---|
| 6958 | declare -x LDFLAGS_default="" |
|---|
| 6959 | declare -x LIBDIR_default="lib" |
|---|
| 6960 | declare -x LIBOPTIONS="-m0644" |
|---|
| 6961 | declare -x LICENSE="Subversion" |
|---|
| 6962 | declare -x MULTILIB_ABIS="default" |
|---|
| 6963 | declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" |
|---|
| 6964 | declare -x PORTAGE_COMPRESS_EXCLUDE_SUFFIXES="css gif htm[l]? jp[e]?g js pdf png" |
|---|
| 6965 | declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC KERNEL USERLAND" |
|---|
| 6966 | declare -x PROPERTIES="" |
|---|
| 6967 | declare -x PROVIDE="" |
|---|
| 6968 | declare -x PYTHONDONTWRITEBYTECODE="1" |
|---|
| 6969 | declare -x PYTHON_DONTCOMPILE="1" |
|---|
| 6970 | declare -x RESTRICT="" |
|---|
| 6971 | declare -x S="/var/tmp/portage/dev-util/subversion-1.6.2/work/subversion-1.6.2" |
|---|
| 6972 | declare -x SANDBOX_DEBUG="0" |
|---|
| 6973 | declare -x SANDBOX_DENY="/etc/ld.so.preload" |
|---|
| 6974 | declare -x SANDBOX_PID="17346" |
|---|
| 6975 | declare -x SANDBOX_PREDICT="/dev/console:/dev/crypto:/dev/random:/proc/self/maps:/var/tmp/portage/dev-util/subversion-1.6.2/homedir" |
|---|
| 6976 | declare -x SANDBOX_READ="/:/dev/shm:/dev/stdin:/var/tmp" |
|---|
| 6977 | declare -x SANDBOX_VERBOSE="1" |
|---|
| 6978 | declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/stderr:/dev/stdout:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/portage/dev-util/subversion-1.6.2/homedir/.bash_history" |
|---|
| 6979 | declare -x SLOT="0" |
|---|
| 6980 | declare -x TSLIB_TSDEVICE="/dev/input/touchscreen0" |
|---|
| 6981 | declare -x USE="arm berkdb dso elibc_glibc kernel_linux nls perl python userland_GNU webdav-neon" |
|---|
| 6982 | declare -x USERLAND="GNU" |
|---|
| 6983 | declare -x VIDEO_CARDS="" |
|---|
| 6984 | declare -x WANT_AUTOCONF="2.5" |
|---|
| 6985 | declare -x WANT_AUTOMAKE="none" |
|---|
| 6986 | declare -x WANT_JAVA_CONFIG="2" |
|---|
| 6987 | declare -x _E_DOCDESTTREE_="" |
|---|
| 6988 | declare -x _E_EXEDESTTREE_="" |
|---|