multiple distfiles from multiple sources and with multiple compression types

Rainer Müller raimue at macports.org
Thu Mar 31 09:35:46 PDT 2016


On 2016-03-31 03:16, Ryan Schmidt wrote:
> libmagic should be used to determine the compression format; filename extension should not be used.

Was there ever a case with a .tar.gz that was actually compressed with
bzip2 or something like this? The current approach of 'use_* yes' also
assumes ${extract.suffix} and ${extract.cmd} to match...

Even then, ports could still overwrite the extract phase. We could also
still allow to set an explicit extract.cmd to overwrite the guessed
extract command.

I do not want to complicate this more than needed.

Using magic bytes would even result in wrong results in some cases. For
example for scapy, the distfile is intentionally a polyglot. It is both
a valid shell script and a zip file:

$ file -b /opt/local/var/macports/distfiles/scapy/scapy-2.3.1.zip
POSIX shell script executable (binary data)

Rainer


PS: For the curious, I found the scapy example with the following shell
snippet:

find /opt/local/var/macports/distfiles -type f -exec file -i {} \; \
|perl -nle 'if (/^[a-zA-Z0-9.\/-]+\.(.*): .*\/x-(.*);/) {
  ($m = $2) =~ s/^gzip$/gz/; $m =~ s/^bzip2$/bz2/;
  if ($1 ne $2) { print $_; }
}'


More information about the macports-dev mailing list