Question regarding Xcode version check
Ryan Schmidt
ryandesign at macports.org
Wed Apr 1 23:28:50 PDT 2009
On Apr 1, 2009, at 20:17, Juan Manuel Palacios wrote:
> Hey Ryan! Believe it or not, I'm still alive ;-)
>
> Today I was putting together a MAMP installation on a Mac at work,
> with our beautiful MacPorts of course, and stumbled on a rather
> annoying glitch, or what at least looks like one. The tiff port has
> the standard check for the minimum Xcode version on Leopard, 3.1.2,
> as introduced by you in r48210; but said check happens at pre-
> extract time, which means port has already wasted time downloading
> the distfile if the target Mac has Xcode < 3.1.2, which was my case
> this time round. Is it possible to move the check up to pre-fetch?
>
> I'm not gonna commit that change just now, one 'cause the port is
> not openmaintainer and, two, 'cause I don't know if pre-fetch was
> explicitly avoided for a reason.
>
> Let me know, thanks! Regards,...
Hi Juan!
This was a deliberate decision, and I'm copying macports-dev on this
answer since I never explained the rationale before, so let me do so
now.
Some of my ports do checks and issue fatal error messages in the pre-
fetch phase. I reserve this for ports which can never be installed on
the given system at all. For example, if you try to install wine on a
PowerPC Mac, or oracle-instantclient on an Intel Mac with Tiger or
earlier. It can't be done. There is no way those ports will ever work
on those systems, so there's no point allowing the user to download
the distfile.
For other ports, like tiff, as you found, and any others where I've
added the Xcode version check, and other ports like pango and cairo
and pure which check the version of other installed ports, the check
is in pre-extract, specifically so that the user can still fetch and
verify the distfile. Most likely, the user wants to install the
software, so after encountering the message that they need to upgrade
their Xcode, they will seek out and download the new Xcode, and then
be able to install the software. I did not want to put the check in
the pre-fetch phase because that would prevent the user from doing
something like "port fetch outdated" or "port fetch some long list of
ports" which the user may want to do if they have a slow network
connection and/or want to download these files unattended. The user
might be annoyed to have left the machine alone for hours while they
expect it to be downloading many ports, only to find when they come
back that it has exited with an error after failing to download only
a few files. Sure, the user won't be able to install this specific
port without downloading the newer Xcode, but they can still install
the others they fetched.
Anyway, not sure if these hypothetical uses actually occur, but that
was why I decided to do it this way.
More information about the macports-dev
mailing list