summaryrefslogblamecommitdiff
path: root/src/build/pack.xml
blob: 381d3f1931bc2e55e727ffe48aced12253255f63 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12




                                      
                                                                                                                                                 





                                                                                


                                                                                          









                                                                                
                                                          
                                           

                                                                                        
          
                                                                                                          








                                                                                                                                    
                                                            

                                           
                                          

                


                                                               

                                                           
          
                                                                            
           
 
                                                                 
                                                                     
                                           
                                                                                           
          
                                                                                                                                








                                                                                                                                                          
                                                                       

                                           
                                                     

                
           
  
                                                                 
                                                                  
                                           
                                                                 
                                



                                   
                                    
                                      
                              
                   
                                                                                
                                      

                   
                                                                                                                          








                                                                                                                                                    
                                                                    

                                           
                                                  

                
           













                                                                                       
  
                                                                                                                      






















                                                                                
                                             
                                                     
                                                     
                                                      
                                                   
                                                    

                                                     

           





                                                                                        
                                                               










                                                                  
                                                           
                                  
                                                                                                    


                                                  


                                 
                                                                                                                            


                                                   

           
                                                                               
                                                                                                     


                                           
                                                                                                                     


                                             
                                                                                                                       


                                              
                                                                                                       


                                            

                                                                                                                     

                            
                                                                                                                             
                                                          

                            
 
                                                                                                    

                                                                                            

                                                                                            

                                                                                            

           

                                                                                  
                                         








                                                                             
                                                                                                           
                                                      
                                                           

                                                                 
                                                     




                                                                                      
                                                                                

                                                                                
 
                                                                              
 


                                                                                
 









                                                                                                      
<?xml version="1.0" encoding="UTF-8"?>

<project name="sabbus-pack">

  <description>
    SuperSabbus extension for packaging a distribution. THIS FILE IS NOT STAND-ALONE AND SHOULD ONLY BE USED THROUGH ENTRY POINTS IN SUPERSABBUS.
  </description>
  
<!-- ===========================================================================
PROPERTIES
============================================================================ -->
  
  <property file="${basedir}/build.number.maven"/>
  <!-- the maven stuff requires version.major, version.minor and version.patch properties.
       the "get-scala-revision" script only returns "version.number" -->
  
<!-- ===========================================================================
MAIN DISTRIBUTION PACKAGING
============================================================================ -->
  
  <target name="pack-archives.start">
    <mkdir dir="${dists.dir}/archives"/>
  </target>
  
  <target name="pack-archives.tar" depends="pack-archives.start">
    <tar destfile="${dists.dir}/archives/${dist.name}.tar"
         compression="none" longfile="gnu">
      <tarfileset dir="${dist.dir}" prefix="${dist.name}" includes="bin/**" mode="755"/>
      <tarfileset dir="${dist.dir}" prefix="${dist.name}" excludes="bin/**"/>
    </tar>
    <gzip src="${dists.dir}/archives/${dist.name}.tar" destfile="${dists.dir}/archives/${dist.name}.tgz"/>
    <if>
      <not><equals arg1="${archives.skipxz}" arg2="true" /></not>
      <then>
        <exec executable="xz" failifexecutionfails="false">
          <arg line="-k -9e -S .xz ${dists.dir}/archives/${dist.name}.tar"/>
        </exec>
        <move file="${dists.dir}/archives/${dist.name}.tar.xz" tofile="${dists.dir}/archives/${dist.name}.txz" failonerror="false"/>
      </then>
    </if>
    <delete file="${dists.dir}/archives/${dist.name}.tar" />
    <checksum fileext=".md5">
      <fileset dir="${dists.dir}/archives">
        <include name="${dist.name}.t?z"/>
      </fileset>
    </checksum>
  </target>
  
  <target name="pack-archives.zip" depends="pack-archives.tar">
    <zip destfile="${dists.dir}/archives/${dist.name}.zip">
      <zipfileset prefix="${dist.name}" dir="${dist.dir}"/>
    </zip>
    <checksum file="${dists.dir}/archives/${dist.name}.zip" fileext=".md5"/>
  </target>

  <target name="pack-devel-docs.tar" depends="pack-archives.zip">
    <tar destfile="${dists.dir}/archives/${dist.name}-devel-docs.tar"
         compression="none" longfile="gnu">
      <tarfileset dir="${dist.dir}/doc/scala-devel-docs" prefix="${dist.name}-devel-docs"/>
    </tar>
    <gzip src="${dists.dir}/archives/${dist.name}-devel-docs.tar" destfile="${dists.dir}/archives/${dist.name}-devel-docs.tgz"/>
    <if>
      <not><equals arg1="${archives.skipxz}" arg2="true" /></not>
      <then>
        <exec executable="xz" failifexecutionfails="false">
          <arg line="-k -9e -S .xz ${dists.dir}/archives/${dist.name}-devel-docs.tar"/>
        </exec>
        <move file="${dists.dir}/archives/${dist.name}-devel-docs.tar.xz" tofile="${dists.dir}/archives/${dist.name}-devel-docs.txz" failonerror="false"/>
      </then>
    </if>
    <delete file="${dists.dir}/archives/${dist.name}-devel-docs.tar" />
    <checksum fileext=".md5">
      <fileset dir="${dists.dir}/archives">
        <include name="${dist.name}-devel-docs.t?z"/>
      </fileset>
    </checksum>
  </target>
  
  <target name="pack-archives.src" depends="pack-devel-docs.tar">
    <tar destfile="${dists.dir}/archives/${dist.name}-sources.tar"
         compression="none" longfile="gnu">
      <tarfileset dir="${basedir}" prefix="${dist.name}-sources">
        <exclude name="bin/**"/>
        <exclude name="build/**"/>
        <exclude name="debian/**"/>
        <exclude name="dists/**"/>
        <exclude name="logs/**"/>
        <exclude name="sandbox/**"/>
        <exclude name="test/partest"/>
        <exclude name=".git"/>
      </tarfileset>
      <tarfileset dir="${basedir}" prefix="${dist.name}-sources" filemode="755">
        <include name="test/partest"/>
      </tarfileset>
    </tar>
    <gzip src="${dists.dir}/archives/${dist.name}-sources.tar" destfile="${dists.dir}/archives/${dist.name}-sources.tgz"/>
    <if>
      <not><equals arg1="${archives.skipxz}" arg2="true" /></not>
      <then>
        <exec executable="xz" failifexecutionfails="false">
          <arg line="-k -9e -S .xz ${dists.dir}/archives/${dist.name}-sources.tar"/>
        </exec>
        <move file="${dists.dir}/archives/${dist.name}-sources.tar.xz" tofile="${dists.dir}/archives/${dist.name}-sources.txz" failonerror="false"/>
      </then>
    </if>
    <delete file="${dists.dir}/archives/${dist.name}-sources.tar" />
    <checksum fileext=".md5">
      <fileset dir="${dists.dir}/archives">
        <include name="${dist.name}-sources.t?z"/>
      </fileset>
    </checksum>
  </target>

  <target name="pack-archives.latest.unix" depends="pack-archives.src" unless="os.win">
    <symlink link="${dists.dir}/archives/scala-latest-sources.tgz"
             resource="${dists.dir}/archives/scala-${version.number}-sources.tgz"
             overwrite="yes"/>
  </target>

  <target name="pack-archives.latest.win" depends="pack-archives.src" if="os.win">
    <copy tofile="${dists.dir}/archives/scala-latest-sources.tgz">
      <fileset dir="${dists.dir}/archives">
         <include name="scala-${version.number}-sources.tgz"/>
      </fileset>
    </copy>
  </target>
  
  <target name="pack-archives.done" depends="pack-archives.src, pack-archives.latest.win, pack-archives.latest.unix"/>

  <target name="pack-maven.start">
    <mkdir dir="${dists.dir}/maven/${version.number}"/>
  </target>

  <target name="pack-maven.libs" depends="pack-maven.start">
    <macrodef name="mvn-copy-lib">
      <attribute name="mvn.artifact.name"/>
      <sequential>
        <mkdir dir="${dists.dir}/maven/${version.number}/@{mvn.artifact.name}"/>
        <copy todir="${dists.dir}/maven/${version.number}/@{mvn.artifact.name}">
          <fileset dir="${dist.dir}/lib/">
            <filename name="@{mvn.artifact.name}.jar"/>
          </fileset>
          <fileset dir="${src.dir}/build/maven/">
            <filename name="@{mvn.artifact.name}-pom.xml"/>
          </fileset>
          <fileset dir="${dist.dir}/src/">
            <filename name="@{mvn.artifact.name}-src.jar"/>
          </fileset>
        </copy>
      </sequential>
    </macrodef>
    <mvn-copy-lib mvn.artifact.name="jline"/>
    <mvn-copy-lib mvn.artifact.name="scala-library"/>
    <mvn-copy-lib mvn.artifact.name="scala-reflect"/>
    <mvn-copy-lib mvn.artifact.name="scala-compiler"/>
    <mvn-copy-lib mvn.artifact.name="scala-swing"/>
    <mvn-copy-lib mvn.artifact.name="scala-actors"/>
    <mvn-copy-lib mvn.artifact.name="scala-partest"/>
    <mvn-copy-lib mvn.artifact.name="scalap"/>
  </target>

  <target name="pack-maven.plugins" depends="pack-maven.start">
    <macrodef name="mvn-copy-plugin">
      <attribute name="mvn.artifact.name"/>
      <sequential>
        <mkdir dir="${dists.dir}/maven/${version.number}/plugins/@{mvn.artifact.name}"/>
        <copy todir="${dists.dir}/maven/${version.number}/plugins/@{mvn.artifact.name}">
          <fileset dir="${dist.dir}/misc/scala-devel/plugins/">
            <filename name="@{mvn.artifact.name}.jar"/>
          </fileset>
          <fileset dir="${src.dir}/build/maven/">
            <filename name="@{mvn.artifact.name}-plugin-pom.xml"/>
          </fileset>
        </copy>
      </sequential>
    </macrodef>
    <mvn-copy-plugin mvn.artifact.name="continuations"/>
  </target>

  <target name="pack-maven.srcs" depends="pack-maven.libs">
    <!-- Add missing src jars. -->
    <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/jline/jline-src.jar"
         basedir="${src.dir}/jline/src/main/java">
      <include name="**/*"/>
    </jar>


    <!-- Continuations plugin -->
    <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/plugins/continuations/continuations-src.jar"
         basedir="${src.dir}/continuations/plugin">
      <include name="**/*"/>
    </jar>
  </target>

  <target name="pack-maven.docs" depends="pack-maven.libs, pack-maven.plugins">
    <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/jline/jline-docs.jar"
         basedir="${build-docs.dir}/jline">
      <include name="**/*"/>
    </jar>
    <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/scala-library/scala-library-docs.jar"
         basedir="${build-docs.dir}/library">
      <include name="**/*"/>
    </jar>
    <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/scala-compiler/scala-compiler-docs.jar"
         basedir="${build-docs.dir}/compiler">
      <include name="**/*"/>
    </jar>
    <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/scalap/scalap-docs.jar"
         basedir="${build-docs.dir}/scalap">
      <include name="**/*"/>
    </jar>
    <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/scala-partest/scala-partest-docs.jar"
         basedir="${build-docs.dir}/partest">
      <include name="**/*"/>
    </jar>
    <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/plugins/continuations/continuations-docs.jar"
         basedir="${build-docs.dir}/continuations-plugin">
      <include name="**/*"/>
    </jar>

    <!-- TODO - Scala swing and actors should maybe have thier own jar, but creating it is SLOW. -->
    <copy tofile="${dists.dir}/maven/${version.number}/scala-swing/scala-swing-docs.jar"
          file="${dists.dir}/maven/${version.number}/scala-library/scala-library-docs.jar"/>
    <copy tofile="${dists.dir}/maven/${version.number}/scala-actors/scala-actors-docs.jar"
          file="${dists.dir}/maven/${version.number}/scala-library/scala-library-docs.jar"/>
    <copy tofile="${dists.dir}/maven/${version.number}/scala-reflect/scala-reflect-docs.jar"
          file="${dists.dir}/maven/${version.number}/scala-library/scala-library-docs.jar"/>
  </target>

  <target name="pack-maven.latest.unix" depends="pack-maven.docs" unless="os.win">
    <symlink link="${dists.dir}/maven/latest"
             resource="${version.number}"
             overwrite="yes"/>
  </target>

  <target name="pack-maven.latest.win" depends="pack-maven.docs" if="os.win">
    <copy todir="${dists.dir}/maven/latest">
      <fileset dir="${dists.dir}/maven/${version.number}"/>
    </copy>
  </target>

  <target name="pack-maven.scripts" depends="pack-maven.latest.unix,pack-maven.latest.win,pack-maven.srcs">
    <copy todir="${dists.dir}/maven/${version.number}"
          file="${lib-ant.dir}/maven-ant-tasks-2.1.1.jar"/>
    <copy tofile="${dists.dir}/maven/${version.number}/build.xml"
          file="${src.dir}/build/maven/maven-deploy.xml"/>
    <!-- export properties for use when deploying -->
    <echoproperties destfile="${dists.dir}/maven/${version.number}/build.properties"/>
  </target>

  <target name="pack-maven.done" depends="pack-maven.scripts"/>

<!-- ===========================================================================
MISCELLANEOUS
============================================================================ -->

  <target name="pack-all.done" depends="pack-archives.done, pack-maven.done"/>

<!-- ===========================================================================
MISCELLANEOUS
============================================================================ -->

  <target name="graph.init">
    <echo message="${basedir}/lib/ant/vizant.jar"/>
    <taskdef name="vizant" classname="vizant.Vizant" classpath="${basedir}/../../lib/ant/vizant.jar"/>
  </target>
  
  <target name="graph.pack" depends="graph.init">
    <vizant antfile="${ant.file}" outfile="${ant.project.name}.dot"/>
  </target>
  
</project>