[Scons-users] replacing ant with java

Bill Deegan bill at baddogconsulting.com
Wed Oct 19 13:24:56 EDT 2016


Can you pastebin your SConstruct/SConscripts?

Let us see what you're doing thus far so we can see what's causing the
issues you're having.

-Bill

On Tue, Oct 18, 2016 at 6:29 PM, Pierre-Luc Boily <pierreluc.boily at gmail.com
> wrote:

> Hello,
>
> We are in a process to move our Make system / Ant to scons.  So far, we
> succeeded to :
>
>    1. Replace *make *by *scons *to compile C++
>    2. Create *Custom Builders* that compile successfully grammars (we are
>    in speech project)
>    3. Grammars & C++ code compile in parallel
>    4. Make *scons * invoke our ant system to compile multiple Java jar
>    (single threaded)
>
> What failed :
>
>    1. Our java code, compiled with python *call* function (invoking ant)
>    failed in parallel. *(Actually, I am not sure to understand yet why
>    this failed.  Our java dependencies are well written in build.xml..)*
>
> To resolve my problem above, I see two solutions :
>
>    1. Compile our project single threaded
>    2. Or remove ant and replace with scons to compile java.
>
> I am here because I want to be able to do solution two.  Compiling multi
> threaded is really powerful.  So,  before putting too much effort, I have
> couple question regarding compiling java with scons.  I want to be sure
> that what we I want to do is feasible.
>
> *Question 1:*
> Code below is our main *build.xml* file.  As you can see, the xml has
> been written with dependencies.  So, when *ant *is invoke, he knows that
> he has to build *subprojects *first. I am wondering if scons can
> automagically manage this?  My guess is I will probably need a Custom
> Builder to accomplish a task like this.
>
> <!-- Create executable jar -->
>     <target name="create_run_jar" depends="clean, build-subprojects,
> build-project, copy-lib">
>     <echo message="[${ant.project.name}] localroot = ${env.LOCALROOT}"/>
>     <echo message="[${ant.project.name}] dist = ${dist_dir_output}"/>
>     <echo message="[${ant.project.name}] Creating ${ant.project.name} jar
> to ${dist_dir_output}"/>
>     <manifestclasspath property="jar.classpath"
> jarfile="${dist_dir_output}/RulesEngine.jar">
>        <classpath refid="manifest.classpath"/>
>    </manifestclasspath>
>         <jar destfile="${dist_dir_output}/RulesEngine.jar">
>             <manifest>
>                 <attribute name="Main-Class" value="rules_engine.Main"/>
>                 <attribute name="Class-Path" value=". ${jar.classpath}"/>
>             </manifest>
>             <fileset dir="bin"/>
>         </jar>
>     </target>
> <target depends="init" name="build-project">
>         <echo message="[${ant.project.name}] Compiling ${ant.project.name}:
> ${ant.file}"/>
>         <javac
>         debug="true"
>         classpathref="compile.classpath"
>         srcdir="src"
>         destdir="bin"
>         debuglevel="${debuglevel}"
>         source="${source}"
>         target="${target}"
>         includeantruntime="false"
>         nowarn="on" deprecation="true" listfiles="true"
>         verbose="false">
>         <compilerarg value="-Xlint"/>
>         </javac>
>     </target>
> <target name="build-subprojects">
> <echo message="[${ant.project.name}] Building related projects"/>
> <ant antfile="build.xml" dir="${DroolsGenericModel.location}"
> inheritAll="false" target="jar"/>
> <ant antfile="build.xml" dir="${DroolsATCModel.location}"
> inheritAll="false" target="jar"/>
> <ant antfile="build.xml" dir="${DroolsUtils.location}" inheritAll="false"
> target="jar"/>
>         <ant antfile="build.xml" dir="${FaaModel.location}"
> inheritAll="false" target="jar"/>
> <ant antfile="build.xml" dir="${VacModel.location}" inheritAll="false"
> target="jar"/>
> <ant antfile="build.xml" dir="${DroolsClient.location}" inheritAll="false"
> target="jar"/>
> <ant antfile="build.xml" dir="${DroolsFaaUtils.location}"
> inheritAll="false" target="jar"/>
>     </target>
>
>  So, do you think it is feasible to accomplish what is above with scons? (
> I don't want the solution, just tell me Custom Builder needed, or an
> alternative etc etc...)
>
> *Question 2:*
> One of the subproject above, (FaaModel), has a build.xml that generates a
> java file (Commands.java).  One of our java project needs that file.  This
> dependency is written as follow :
>
>     <target name="genCmdIdClass">
>
>     <echo message="[${ant.project.name}] Generating ${enumPath}"/>
>
>     <delete file="${enumPath}"/>
>
>     <exec dir="${basedir}" executable="perl" output="${enumPath}">
>        <arg line="${RulesEngine.location}/../common/header2java.pl"/>
>     <arg line="../../../../../fwk/systemInterface/simnet/src/pbs_api.h"/>
>     <arg line="adacel.model.atc.simulation.faa"/>
>     <arg line="VoiceRecognitionMsgType_en"/>
>     <arg line="${enumName}"/>
>     </exec>
>
>     <sleep seconds="2"/>
>
>     <echo message="[${ant.project.name}] ${enumName} generated"/>
>     </target>
>
>     <target depends="init, genCmdIdClass" name="build-project">
>         <echo message="[${ant.project.name}] Compiling ${ant.project.name}:
> ${ant.file}"/>
>         <javac debug="true" nowarn="off" deprecation="true"
> listfiles="true" debuglevel="${debuglevel}" destdir="bin"
> source="${source}" target="${target}" includeantruntime="false">
>             <src path="src"/>
>         <classpath refid="DroolsModel.classpath"/>
> <compilerarg value="-Xlint"/>
>         </javac>
>     </target>
>
> As you can see, we are expressing a dependency to a file generated by a
> perl script.  Then again, is is possible to accomplish this with scons?  I
> see only one alternatives :
>
>    1. In my SConscript file.
>       1. With scons *Command*, call perl script that generates
>       Commands.java file
>       2. Put as *source *Commands.java when invoking scons *Java*
>
> Is it the way I should accomplish this, or there is another alternative?
>
> *Question 3:*
> Our build.xml file copy jar files. See :
>
> <!-- Copy all required libraries to run the jar -->
> <target name="copy-lib">
> <echo message="Copying required libraries to ${lib.dir}"/>
> <delete dir="${lib.dir}"/>
>         <mkdir dir="${lib.dir}"/>
>
>         <copy file="${common.io.lib}/commons-io-2.4.jar"
> todir="${lib.dir}"/>
>         <copy file="${common.lang.lib}/commons-lang3-3.1.jar"
> todir="${lib.dir}"/>
>         <copy file="${common.collection.lib}/commons-collections4-4.0.jar"
> todir="${lib.dir}"/>
> <copy file="${common.cli.lib}/commons-cli-1.2.jar" todir="${lib.dir}"/>
> <copy file="${junit.lib}/junit-4.8.2.jar" todir="${lib.dir}"/>
> <copy todir="${lib.dir}">
>     <fileset dir="${drools.lib}">
>                 <include name="*.jar"/>
>             </fileset>
>     </copy>
>         <copy file="${dds.lib}/dcpssaj.jar" todir="${lib.dir}"/>
>         <copy file="${jars.lib}/dds-interface.jar" todir="${lib.dir}"/>
> <move file="${DroolsGenericModel.location}/DroolsGenericModel.jar"
> todir="${lib.dir}"/>
> <move file="${DroolsATCModel.location}/DroolsATCModel.jar"
> todir="${lib.dir}"/>
>     <move file="${DroolsUtils.location}/DroolsUtils.jar"
> todir="${lib.dir}"/>
> <move file="${DroolsClient.location}/DroolsClient.jar"
> todir="${lib.dir}"/>
> <copy file="resources/droolsConfig.properties"
> todir="${config_dir_output}" overwrite="true"/>
> </target>
>
> I guess I will do this with *Install*?
>
> *Questions 4:*
>
> Devs here would like to know if there is an integration with Netbeans or
> Eclipse?  I found documentation about visual studio in scons page, but
> nothing about Eclipse and/or java.
> ----------
> Thank you very much
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20161019/6debc4a8/attachment-0001.html>


More information about the Scons-users mailing list