I'm trying to use ant to build Sharp Zaurus .ipk files  Essentially, an .ipk
is a packaged application that contains program files organized in a
particular directory structure that has been tarred and compressed.

The issue that I have is that ant's builtin gzip task does not seem to
behave the same has gnu's gzip.

Here is my script:

<project name="ipk" default="ipk" basedir="."/>
   <target name="ipk" depends="clean, prepare">
       <tar tarfile="control.tar" basedir="." includes="control" />
       <gzip src="control.tar" zipfile="control.tar.gz"/>
       <tar tarfile="data.tar" basedir="home"/>
       <gzip src="data.tar" zipfile="data.tar.gz"/>
       <tar tarfile="dcr.tar" basedir="." includes="control.tar.gz,
data.tar.gz"/>
       <gzip src="dcr.tar" zipfile="myapp-evm_1.0_arm.ipk"/>
   </target>
</project>

The result of running this script and running the equivalent shell script on
linux follows:

ant (using <gzip> task):
  10240 control.tar
    234 control.tar.gz  <---
1966080 data.tar
1759789 data.tar.gz
1760855 dcr-evm_1.0_arm.ipk
1771520 dcr.tar

sh (using cygwin gzip):
  10240 control.tar
    238 control.tar.gz  <--- 4 bytes more than ant!
2007040 data.tar
1758520 data.tar.gz
1759180 dcr-evm_1.0_arm.ipk
1761280 dcr.tar

Notice that the control.tar is the same between the shell and ant versions,
but that the control.tar.gz built by the shell, is slightly larger, by 4
bytes. This is why I believe that the <gzip> task of ant is slightly
different than the gnu version used by cygwin and linux.

The file that is eventually created, dcr-evm_1.0_arm.ipk, is then fed to the
following command on the Zaurus upon installation:

        if gzip -dc $filename | tar -xOf - ./control.tar.gz | gzip -dc - |
tar -xf - -C $IPKG_TMP/$pkg/control; then

This command peforms the following:
1. decompress the ipkg to standard out
2. untar the control.tar.gz from standard in to standard out
3. decompress control.tar.gz from standard in to standard out
4. untar control from standard in to the directory $IPKG_TMP/$pkg/control
5. Check the status and abort if anything screws up

Basically, the command is failing at step 2 above, trying to untar
control.tar.gz from standard in. When I run this command on linux, I get the
following error:
tar: ./control.tar.gz: Not found in archive
tar: Error exit delayed from previous errors

gzip: stdin: unexpected end of file

Another interesting note is that if I run the steps individually using
temporary files and not pipes, then linux happily decompresses and untars
control from the ant built ipk!!! It appears that the combination of an ant
built ipk and the use of pipes on the zaurus to perform the initial
decompression is the problem, but since I cannot change the
ipkg_install_file script on the Zaurus, I'm stuck...

This would really be cool to get working, any ideas are appreciated!







--
To unsubscribe, e-mail:   <mailto:ant-user-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-user-help@;jakarta.apache.org>

Reply via email to