blob: 7a84bdf4c6390e0ee9147b1b2e982d78bcd04209 [file] [log] [blame]
<project name="Signing_Targets" >
<property name="archiveName" value="eclipse-master-${buildId}.zip" />
<property name="signingArchive" value="${buildDirectory}/${buildLabel}/${archiveName}" />
<target name="createSigningArchive" >
<zip zipfile="${signingArchive}" basedir="${p2.repo}" />
</target>
<target name="signMasterFeature">
<property name="packtmp" value="${buildDirectory}/packtmp" />
<property name="stagingDirectoryOutput" value="/home/data/httpd/download-staging.priv/eclipse/e4/${buildId}-out" />
<property name="stagingDirectory" value="/home/data/httpd/download-staging.priv/eclipse/e4" />
<property name="outputFile" value="${stagingDirectoryOutput}/${archiveName}" />
<mkdir dir="${packtmp}" />
<!--update pack.properties to exclude Orbit bundles from being signed and packed -->
<!--<antcall target="updatePackProperties" /> -->
<move file="${signingArchive}" tofile="${packtmp}/${archiveName}" />
<!--push drop to staging directory-->
<echo message="push drop to staging directory" />
<condition property="signcopy" value="cp">
<equals arg1="${hudson}" arg2="true" />
</condition>
<property name="signcopy" value="scp" />
<condition property="signexec" value="/bin/bash">
<equals arg1="${hudson}" arg2="true" />
</condition>
<property name="signexec" value="ssh" />
<condition property="signUser" value="">
<equals arg1="${hudson}" arg2="true" />
</condition>
<property name="signUser" value="pwebster@" />
<condition property="signhost" value="">
<equals arg1="${hudson}" arg2="true" />
</condition>
<property name="signhost" value="build.eclipse.org" />
<condition property="signdelimiter" value="">
<equals arg1="${hudson}" arg2="true" />
</condition>
<property name="signdelimiter" value=":" />
<condition property="signquote" value="">
<equals arg1="${hudson}" arg2="true" />
</condition>
<property name="signquote" value="&quot;" />
<condition property="signpoll" value="ls">
<equals arg1="${hudson}" arg2="true" />
</condition>
<property name="signpoll" value="ssh" />
<exec dir="${packtmp}" executable="${signcopy}" output="signing.txt">
<arg line="${archiveName} ${signUser}${signhost}${signdelimiter}${stagingDirectory}" />
</exec>
<exec dir="${buildDirectory}" executable="${signexec}" output="signing.txt" append="true">
<arg line=" ${signUser}${signhost} /bin/chmod ugo+rw ${stagingDirectory}/${archiveName}" />
</exec>
<!--invoke sign script and wait-->
<echo message="invoke sign script and wait" />
<exec dir="." executable="${signexec}" output="signing.txt" append="true">
<arg line=" ${signUser}${signhost} ${signquote}/usr/local/bin/sign ${stagingDirectory}/${archiveName} nomail ${stagingDirectoryOutput}${signquote}" />
</exec>
<!--Wait for build to be available -->
<condition property="signpollline" value="${stagingDirectoryOutput}/${archiveName}">
<equals arg1="${hudson}" arg2="true" />
</condition>
<property name="signpollline" value="${signhost} ${signquote}cd ${stagingDirectoryOutput};ls ${archiveName}${signquote}" />
<antcall target="waitForChangedAttribs">
<param name="signpoll" value="${signpoll}" />
<param name="signpollline" value="${signpollline}" />
</antcall>
<!--copy zip back to build machine -->
<sleep minutes="2" />
<echo message="copy zip back to build machine" />
<exec dir="." executable="${signcopy}" output="signing.txt" append="true">
<arg line=" ${signUser}${signhost}${signdelimiter}${stagingDirectory}/${buildId}-out/${archiveName} ${buildDirectory}/${buildLabel}" />
</exec>
<antcall target="deletetempsigningfiles" />
</target>
<target name="deletetempsigningfiles" unless="hudson">
<echo message="delete temp files on build.eclipse.org" />
<property name="signdeleteline" value="${signUser}${signhost} ${signquote}/bin/rm -rf ${stagingDirectory}/${buildId}-out ${stagingDirectory}/${archiveName}${signquote}" />
<exec dir="." executable="${signexec}" output="signing.txt" append="true">
<arg line="${signdeleteline}" />
</exec>
</target>
<target name="waitForChangedAttribs" unless="attribs.changed">
<antcall target="compareAttribs" inheritAll="false">
<param name="originalAttribs" value="${originalAttribs}" />
<param name="signpoll" value="${signpoll}" />
</antcall>
</target>
<target name="compareAttribs">
<!--poll file for change in attributes-->
<exec dir="${buildDirectory}" executable="${signpoll}" outputProperty="polledAttribs">
<arg line="${signpollline}" />
</exec>
<echo message="original: ${originalAttribs}" />
<condition property="attribChanged">
<and>
<not>
<contains string="${polledAttribs}" substring="Permission denied, please try again." casesensitive="no" />
</not>
<not>
<contains string="${polledAttribs}" substring="Host key verification failed." casesensitive="no" />
</not>
<not>
<contains string="${polledAttribs}" substring="Connection closed by UNKNOWN" casesensitive="no" />
</not>
<or>
<not>
<contains string="${polledAttribs}" substring="No such file or directory" casesensitive="no" />
</not>
<contains string="${polledAttribs}" substring="bash: line 0: cd:" casesensitive="no" />
</or>
</and>
</condition>
<echo message="polled: ${polledAttribs}" />
<antcall target="writeDiffResult" />
<sleep seconds="120" />
<available property="attribs.changed" file="${buildDirectory}/attribDiff.txt" />
<antcall target="waitForChangedAttribs" />
</target>
<target name="writeDiffResult" if="attribChanged">
<echo message="original: ${originalAttribs}" file="${buildDirectory}/attribDiff.txt" />
<echo message="new: ${polledAttribs}" file="${buildDirectory}/attribDiff.txt" append="true" />
</target>
<target name="updatePackProperties">
<!--exclude pre-built Orbit bundles from being signed and packed-->
<property name="packproperties" value="${buildDirectory}/updatePackProperties.txt" />
<generateExcludeList mapFile="${buildDirectory}/maps/e4/releng/org.eclipse.e4.ui.releng/maps/orbit.map" outputFile="${packproperties}" />
<loadfile property="pack.properties" srcFile="${packproperties}" />
<delete file="${packproperties}" failonerror="false" />
<replace file="${builder}/pack.properties" token="@excludejars@" value="${pack.properties}" />
<!-- add pack.properties file that specifies effort level -->
<exec dir="${builder}" executable="zip">
<arg line="-r ${signingArchive} pack.properties" />
</exec>
</target>
</project>