summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /eclass/java-pkg-simple.eclass
downloadgentoo-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.eclass209
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
+# ------------------------------------------------------------------------------