Andy So making it POSIX compliant was actually relatively easy and is now committed.
I haven't attempted to do anything wrt class path caching yet Rob On 13/03/2014 09:41, "Rob Vesse" <[email protected]> wrote: >Andy > >The problem is for me on OS X the current methodology is completely >broken, without my changes make_classpath_mvn generates the following: > >/Users/rvesse/Documents/apache-jena/trunk/jena-arq//classes:/Users/rvesse/ >D >ocuments/apache-jena/trunk/jena-arq//../jena-core/classes:/Users/rvesse/.m >2 >/repository/src/main/java:/Users/rvesse/.m2/repository/src/main/resources: >/ >Users/rvesse/.m2/repository/src/test/java:/Users/rvesse/.m2/repository/src >/ >test/resources:/Users/rvesse/.m2/repository/org.eclipse.jdt.launching.JRE_ >C >ONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE- >1 >.6:/Users/rvesse/.m2/repository/org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER >: >/Users/rvesse/.m2/repository/target/classes > >Which doesn't even really contain valid locations for the Jena class files >let alone for any dependencies. > > >I appreciate point 1 that dependency:build-classpath is slow (what isn't >with maven?) The caching approach may be useful, I assume you write out >to a temporary file since you can't rely on exported variables persisting >since users are unlikely to source the scripts? > >Re: point 2 what are the dash equivalents of what I've done then? I don't >know what the syntax differences between bash and dash are nor do I have >an ubuntu machine/VM to easily test on (well I could spin up an EC2 VM but >not knowing dash wouldn't help me that much) > >Rob > >On 12/03/2014 18:04, "Andy Seaborne" <[email protected]> wrote: > >>Rob - two problems: >> >>1/ There was reason behind the madness :-) dependency:build-classpath >>is very slow. >> >>Startup goes from under 1s to 7s on my machine for simple: >> >> time bin/sparql --version >> >>That's why there's the .classpath hack >> >>Fuseki keeps a cache of the classpath calculated - maybe that will work >>for both of us. >> >>2/ /bin/sh does not have [[, pushd and other things >>They are bashisms. >> >>On Ubuntu sh is a strict Bourne shall (dash to be exact) >> >> Andy >> >>On 12/03/14 15:13, [email protected] wrote: >>> Author: rvesse >>> Date: Wed Mar 12 15:13:28 2014 >>> New Revision: 1576775 >>> >>> URL: http://svn.apache.org/r1576775 >>> Log: >>> Improve make_classpath_mvn to take advantage of mvn and the >>>dependency:build-classpath goal where possible instead of relying on the >>>.classpath file search approach which can fail horribly depending on >>>what is in the .classpath file (certainly it fails horribly on OS X) >>> >>> Modified: >>> jena/trunk/jena-arq/bin/make_classpath_mvn >>> >>> Modified: jena/trunk/jena-arq/bin/make_classpath_mvn >>> URL: >>>http://svn.apache.org/viewvc/jena/trunk/jena-arq/bin/make_classpath_mvn? >>>r >>>ev=1576775&r1=1576774&r2=1576775&view=diff >>> >>>======================================================================== >>>= >>>===== >>> --- jena/trunk/jena-arq/bin/make_classpath_mvn (original) >>> +++ jena/trunk/jena-arq/bin/make_classpath_mvn Wed Mar 12 15:13:28 2014 >>> @@ -17,30 +17,39 @@ >>> >>> DIRROOT="$1" >>> >>> -if [ "$DIRROOT" = "" ] >>> -then >>> +if [ "$DIRROOT" = "" ]; then >>> echo "No directory given" 1>&2 >>> exit 1 >>> - fi >>> - >>> -M2_REPO="${M2_REPO:-$HOME/.m2/repository}" ; >>> -X=$(perl -ne 'next unless /\spath="M2_REPO([^"]*)"/s ; print >>>"$1","\n"' $DIRROOT/.classpath) >>> +fi >>> >>> SEP=':' >>> CP=${CP:-} >>> >>> -for x in $X >>> -do >>> - [ "$CP" != "" ] && CP="${CP}${SEP}" >>> - CP="$CP$M2_REPO$x" >>> -done >>> +which mvn > /dev/null >>> +HAS_MAVEN=$? >>> +if [[ -e "$DIRROOT/pom.xml" && $HAS_MAVEN -eq 0 ]]; then >>> + # Take advantage of maven dependency plugin >>> + MVN_OUTPUT_PATTERN="(^\[INFO\])" >>> + pushd $DIRROOT >/dev/null >>> + MVN_CP=`mvn dependency:build-classpath | egrep -v >>>${MVN_OUTPUT_PATTERN}` >>> + popd >/dev/null >>> + CP="${CP}${SEP}${MVN_CP}" >>> +else >>> + # Use the crude method >>> + M2_REPO="${M2_REPO:-$HOME/.m2/repository/}" ; >>> + X=$(perl -ne 'next unless /\spath="$M2_REPO([^"]*)"/s ; print >>>"$1","\n"' $DIRROOT/.classpath) >>> + >>> + for x in $X >>> + do >>> + [ "$CP" != "" ] && CP="${CP}${SEP}" >>> + CP="$CP$M2_REPO$x" >>> + done >>> +fi >>> >>> -if [ -e "$DIRROOT/classes" ] >>> -then >>> +if [ -e "$DIRROOT/classes" ]; then >>> CP="$DIRROOT/../jena-core/classes${SEP}$CP" >>> CP="$DIRROOT/classes${SEP}$CP" >>> -elif [ -e "$DIRROOT/target/classes" ] >>> -then >>> +elif [ -e "$DIRROOT/target/classes" ]; then >>> CP="$DIRROOT/target/classes{SEP}$CP" >>> fi >>> >>> >>> >> > > > >
