diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 13:49:04 -0700 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 17:38:18 -0700 |
commit | 56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch) | |
tree | 3f91093cdb475e565ae857f1c5a7fd339e2d781e /eclass/java-pkg-simple.eclass | |
download | gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2 gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip |
proj/gentoo: Initial commit
This commit represents a new era for Gentoo:
Storing the gentoo-x86 tree in Git, as converted from CVS.
This commit is the start of the NEW history.
Any historical data is intended to be grafted onto this point.
Creation process:
1. Take final CVS checkout snapshot
2. Remove ALL ChangeLog* files
3. Transform all Manifests to thin
4. Remove empty Manifests
5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
5.1. Do not touch files with -kb/-ko keyword flags.
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests
X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project
X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration
X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn
X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration
X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'eclass/java-pkg-simple.eclass')
-rw-r--r-- | eclass/java-pkg-simple.eclass | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/eclass/java-pkg-simple.eclass b/eclass/java-pkg-simple.eclass new file mode 100644 index 000000000000..d5309bb105be --- /dev/null +++ b/eclass/java-pkg-simple.eclass @@ -0,0 +1,209 @@ +# Eclass for simple bare-source Java packages +# +# Copyright (c) 2004-2015, Gentoo Foundation +# +# Licensed under the GNU General Public License, v2 +# +# $Id$ + +inherit java-utils-2 + +if ! has java-pkg-2 ${INHERITED}; then + eerror "java-pkg-simple eclass can only be inherited AFTER java-pkg-2" +fi + +# ----------------------------------------------------------------------------- +# @eclass-begin +# @eclass-summary Eclass for Java sources without build instructions +# +# This class is intended to build pure Java packages from Java sources +# without the use of any build instructions shipped with the sources. +# There is no support for resources besides the generated class files, +# or for generating source files, or for controlling the META-INF of +# the resulting jar, although these issues may be addressed by an +# ebuild by putting corresponding files into the target directory +# before calling the src_compile function of this eclass. +# ----------------------------------------------------------------------------- + +EXPORT_FUNCTIONS src_compile src_install + +# We are only interested in finding all java source files, wherever they may be. +S="${WORKDIR}" + +# ----------------------------------------------------------------------------- +# @variable-external JAVA_GENTOO_CLASSPATH +# @variable-default "" +# +# Comma or space separated list of java packages to include in the +# class path. The packages will also be registered as runtime +# dependencies of this new package. Dependencies will be calculated +# transitively. See "java-config -l" for appropriate package names. +# ----------------------------------------------------------------------------- +# JAVA_GENTOO_CLASSPATH + +# ----------------------------------------------------------------------------- +# @variable-external JAVA_CLASSPATH_EXTRA +# @variable-default "" +# +# Extra list of colon separated path elements to be put on the +# classpath when compiling sources. +# ----------------------------------------------------------------------------- +# JAVA_CLASSPATH_EXTRA + +# ----------------------------------------------------------------------------- +# @variable-external JAVA_SRC_DIR +# @variable-default "" +# +# Directories relative to ${S} which contain the sources of the +# application. The default of "" will be treated mostly as ${S} +# itself. For the generated source package (if source is listed in +# ${JAVA_PKG_IUSE}), it is important that these directories are +# actually the roots of the corresponding source trees. +# ----------------------------------------------------------------------------- +# JAVA_SRC_DIR + +# ----------------------------------------------------------------------------- +# @variable-external JAVA_ENCODING +# @variable-default UTF-8 +# +# The character encoding used in the source files +# ----------------------------------------------------------------------------- +: ${JAVA_ENCODING:=UTF-8} + +# ----------------------------------------------------------------------------- +# @variable-external JAVAC_ARGS +# @variable-default "" +# +# Additional arguments to be passed to javac +# ----------------------------------------------------------------------------- +# JAVAC_ARGS + +# ----------------------------------------------------------------------------- +# @variable-external JAVADOC_ARGS +# @variable-default "" +# +# Additional arguments to be passed to javadoc +# ----------------------------------------------------------------------------- +# JAVADOC_ARGS + +# ----------------------------------------------------------------------------- +# @variable-external JAVA_JAR_FILENAME +# @variable-default ${PN}.jar +# +# The name of the jar file to create and install +# ----------------------------------------------------------------------------- +: ${JAVA_JAR_FILENAME:=${PN}.jar} + +# ------------------------------------------------------------------------------ +# @eclass-src_compile +# +# src_compile for simple bare source java packages. Finds all *.java +# sources in ${JAVA_SRC_DIR}, compiles them with the classpath +# calculated from ${JAVA_GENTOO_CLASSPATH}, and packages the resulting +# classes to ${JAVA_JAR_FILENAME}. +# +# variables: +# JAVA_GENTOO_CLASSPATH - list java packages to put on the classpath. +# JAVA_ENCODING - encoding of source files, used by javac and javadoc +# JAVA_SRC_DIR - directories containing source files, relative to ${S} +# JAVAC_ARGS - additional arguments to be passed to javac +# JAVADOC_ARGS - additional arguments to be passed to javadoc +# ------------------------------------------------------------------------------ +java-pkg-simple_src_compile() { + local sources=sources.lst classes=target/classes apidoc=target/api + + # gather sources + find ${JAVA_SRC_DIR:-*} -name \*.java > ${sources} + mkdir -p ${classes} || die "Could not create target directory" + + # compile + local classpath="${JAVA_CLASSPATH_EXTRA}" dependency + for dependency in ${JAVA_GENTOO_CLASSPATH}; do + classpath="${classpath}:$(java-pkg_getjars ${dependency})" \ + || die "getjars failed for ${dependency}" + done + while [[ $classpath = *::* ]]; do classpath="${classpath//::/:}"; done + classpath=${classpath%:} + classpath=${classpath#:} + debug-print "CLASSPATH=${classpath}" + java-pkg-simple_verbose-cmd \ + ejavac -d ${classes} -encoding ${JAVA_ENCODING} \ + ${classpath:+-classpath ${classpath}} ${JAVAC_ARGS} \ + @${sources} + + # javadoc + if has doc ${JAVA_PKG_IUSE} && use doc; then + mkdir -p ${apidoc} + java-pkg-simple_verbose-cmd \ + ejavadoc -d ${apidoc} \ + -encoding ${JAVA_ENCODING} -docencoding UTF-8 -charset UTF-8 \ + ${classpath:+-classpath ${classpath}} ${JAVADOC_ARGS:- -quiet} \ + @${sources} || die "javadoc failed" + fi + + # package + local jar_args="cf ${JAVA_JAR_FILENAME}" + if [[ -e ${classes}/META-INF/MANIFEST.MF ]]; then + jar_args="cfm ${JAVA_JAR_FILENAME} ${classes}/META-INF/MANIFEST.MF" + fi + java-pkg-simple_verbose-cmd \ + jar ${jar_args} -C ${classes} . || die "jar failed" +} + +# ------------------------------------------------------------------------------ +# @eclass-src_install +# +# src_install for simple single jar java packages. Simply packages the +# contents from the target directory and installs it as +# ${JAVA_JAR_FILENAME}. If the file target/META-INF/MANIFEST.MF exists, +# it is used as the manifest of the created jar. +# ------------------------------------------------------------------------------ +java-pkg-simple_src_install() { + local sources=sources.lst classes=target/classes apidoc=target/api + + # main jar + java-pkg-simple_verbose-cmd \ + java-pkg_dojar ${JAVA_JAR_FILENAME} + + # javadoc + if has doc ${JAVA_PKG_IUSE} && use doc; then + java-pkg-simple_verbose-cmd \ + java-pkg_dojavadoc ${apidoc} + fi + + # dosrc + if has source ${JAVA_PKG_IUSE} && use source; then + local srcdirs="" + if [[ ${JAVA_SRC_DIR} ]]; then + local parent child + for parent in ${JAVA_SRC_DIR}; do + for child in ${parent}/*; do + srcdirs="${srcdirs} ${child}" + done + done + else + # take all directories actually containing any sources + srcdirs="$(cut -d/ -f1 ${sources} | sort -u)" + fi + java-pkg-simple_verbose-cmd \ + java-pkg_dosrc ${srcdirs} + fi +} + +# ------------------------------------------------------------------------------ +# @internal-function java-pkg-simple_verbose-cmd +# +# Print a command before executing it. To give user some feedback +# about what is going on, where the time is being spent, and also to +# help debugging ebuilds. +# +# @param $@ - command to be called and its arguments +# ------------------------------------------------------------------------------ +java-pkg-simple_verbose-cmd() { + echo "$*" + "$@" +} + +# ------------------------------------------------------------------------------ +# @eclass-end +# ------------------------------------------------------------------------------ |