commit: 1b456bef3c706d1cc9e26bc237a5bbba365e2907 Author: Benda Xu <heroxbd <AT> gentoo <DOT> org> AuthorDate: Thu Oct 6 04:29:20 2016 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Thu Oct 6 04:47:19 2016 +0000 URL: https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=1b456bef
meta.sh also use configuration file, create movl wrapper script. README | 22 +++---------------- java-ebuilder.conf | 7 ++++++ maven.conf | 2 ++ scripts/meta.sh | 11 +++++----- scripts/movl | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 80 insertions(+), 24 deletions(-) diff --git a/README b/README index e74f482..febc04d 100644 --- a/README +++ b/README @@ -1,23 +1,7 @@ Java team tool for semi-automatic creation of ebuilds from pom.xml. -Use example: +1. Edit /etc/java-ebuilder.conf to add the artifact you want to MAVEN_ARTS, separated by space. -1. Generate cache of java related packages from portage tree. -java-ebuilder --refresh-cache -t /usr/portage - -2. Find corresponding maven groupId, artifactId and version in the cache. -cd $HOME/.java-ebuilder -mv cache cache.raw0 -( echo 1.0; tail -n +2 cache.raw0 | parallel -j -2 scripts/meta.sh; ) > cache.0 - -3. Generate cache of java related packages from java overaly. -java-ebuilder --refresh-cache -t /var/lib/layman/java - -4. Find corresponding maven groupId, artifactId and version in the cache. -cd $HOME/.java-ebuilder -mv cache cache.raw1 -( echo 1.0; tail -n +2 cache.raw1 | parallel -j -2 scripts/meta.sh; ) > cache.1 - -5. Create ebuild recursively. -script/tree.sh org.apache.spark:spark-core_2.11:2.0.0 +2. Run `movl build` +To start over, run `movl clean` first. diff --git a/java-ebuilder.conf b/java-ebuilder.conf new file mode 100644 index 0000000..1bf7e33 --- /dev/null +++ b/java-ebuilder.conf @@ -0,0 +1,7 @@ +PORTDIR=/usr/portage +PORTAGE_TMPDIR=/var/tmp +# JAVA_OVERLAY_DIR=/var/lib/layman/java +POMDIR=/var/lib/java-ebuilder/poms +MAVEN_OVERLAY_DIR=/var/lib/java-ebuilder/maven +CACHEDIR=/var/lib/java-ebuilder/cache +# MAVEN_ARTS="org.apache.spark:spark-core_2.11:2.0.0" diff --git a/maven.conf b/maven.conf new file mode 100644 index 0000000..7621417 --- /dev/null +++ b/maven.conf @@ -0,0 +1,2 @@ +[maven] +location = /var/lib/java-ebuilder/maven diff --git a/scripts/meta.sh b/scripts/meta.sh index 4917098..10c317f 100755 --- a/scripts/meta.sh +++ b/scripts/meta.sh @@ -2,15 +2,15 @@ # read in cache from java-ebuilder and find out the groupId, # artifactId and version. -# cache is by default at $HOME/.java-ebuilder/cache # example: # ( echo 1.0; tail -n +2 cache | parallel -j -2 meta.sh; ) > cache.1 +source /etc/java-ebuilder.conf pkg=$(awk -F ":" '{print $1"/"$2"-"$3}' <<< $1) spkg=$(cut -d: -f2 <<< $1) sver=$(cut -d: -f3 <<< $1) case ${spkg} in - guava) + guava) echo $1:com.google.guava:${spkg}:${sver%%-*} exit 0 ;; @@ -70,6 +70,7 @@ case ${spkg} in exit 0 esac +touch bebd bpom grep -q ${pkg} <bebd <bpom && exit 0 ebd=$(equery w ${pkg} 2>/dev/null) @@ -81,13 +82,13 @@ fi # java-utils-2.eclass:java-pkg_needs-vm() export JAVA_PKG_NV_DEPEND="nothing" -if ! ebuild ${ebd} unpack >/dev/null 2>&1; then +if ! ebuild "${ebd}" unpack >/dev/null 2>&1; then echo $1:${pkg} >> bebd exit 0 fi bad_pom="yes" -for subd in /dev/shm/portage/${pkg}/work/*; do +for subd in "${PORTAGE_TMPDIR}"/portage/${pkg}/work/*; do [[ -f ${subd}/pom.xml ]] || continue bad_pom="" pushd ${subd} > /dev/null @@ -107,4 +108,4 @@ if [[ -n "${bad_pom}" ]]; then echo $1:${pkg} >> bpom fi -ebuild ${ebd} clean >/dev/null 2>&1 +ebuild "${ebd}" clean >/dev/null 2>&1 diff --git a/scripts/movl b/scripts/movl new file mode 100755 index 0000000..c2f7c0d --- /dev/null +++ b/scripts/movl @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +source /etc/java-ebuilder.conf + +clean-maven() { + rm -f "${CACHEDIR}"/maven-cache + rm -rf "${MAVEN_OVERLAY_DIR}"/app-maven +} + +clean-pom() { + rm -f "${POMDIR}"/*.pom +} + +clean-cache() { + rm -f "${CACHEDIR}"/cache.{raw,}{0,1} + rm -f "${CACHEDIR}"/b{ebd,pom} +} + +clean() { + clean-cache + clean-pom + clean-maven +} + +build() { + if [[ ! -f "${CACHEDIR}"/cache.0 ]]; then + # 1. Generate cache of java related packages from portage tree. + [[ -f "${CACHEDIR}"/cache.raw0 ]] || \ + java-ebuilder --refresh-cache -t "${PORTDIR}" --cache-file "${CACHEDIR}"/cache.raw0 + + # 2. Find corresponding maven groupId, artifactId and version in the cache. + pushd "${CACHEDIR}" > /dev/null + ( echo 1.0; tail -n +2 cache.raw0 | parallel -j -1 /usr/lib/java-ebuilder/meta.sh; ) > cache.0 + popd > /dev/null + fi + + # do the same to java overlay + if [[ ! -f "${CACHEDIR}"/cache.1 ]]; then + if [[ -n "${JAVA_OVERLAY_DIR}" ]]; then + [[ -f "${CACHEDIR}"/cache.raw1 ]] || \ + java-ebuilder --refresh-cache -t "${JAVA_OVERLAY_DIR}" --cache-file "${CACHEDIR}"/cache.raw1 + pushd "${CACHEDIR}" > /dev/null + tail -n +2 cache.raw1 | parallel -j -1 scripts/meta.sh > cache.1 + popd > /dev/null + else + touch "${CACHEDIR}"/cache.1 + fi + fi + + for M in ${MAVEN_ARTS}; do + /usr/lib/java-ebuilder/tree.sh ${M} + done +} + +if [[ $# -gt 0 ]]; then + funcs=$@ +else + funcs=build +fi + +for func in ${funcs}; do + ${func} +done