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/.m2
/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
>>
>>
>>
>




Reply via email to