[100496] trunk/dports/math/slepc/Portfile
Mark Moll
mmoll at rice.edu
Tue Dec 18 07:47:25 PST 2012
On Dec 18, 2012, at 1:51 AM, Ryan Schmidt <ryandesign at macports.org> wrote:
> On Dec 14, 2012, at 08:23, mmoll at macports.org wrote:
>
>> Revision: 100496
>> https://trac.macports.org/changeset/100496
>> Author: mmoll at macports.org
>> Date: 2012-12-14 06:23:42 -0800 (Fri, 14 Dec 2012)
>> Log Message:
>> -----------
>> math/slepc: version bump, use conflicts_build port group, simplify check for fortran lib
>>
>> Modified Paths:
>> --------------
>> trunk/dports/math/slepc/Portfile
>
>
>> variant arpack description {compile with ARPACK support} {
>> pre-fetch {
>> if {![file exists ${prefix}/lib/libparpack.a]} {
>> - return -code error "Please install the openmpi variant of arpack first."
>> + ui_error "Please install the openmpi or mpich2 variant of arpack first."
>> }
>> }
>
> Note that while "ui_error" prints the error message to the screen, it does not end processing the port. If you want the port to exit here, which I think you do, then you need "return -code error" like you had before.
Yes, done that. I was under the impression that ui_error would do the same as “return -code error” and do some other things.
> We also have the active_variants 1.1 portgroup but I'm not sure if it has provisions for requiring either/or variants. I think it's just designed to unconditionally require a variant.
Right, that’s why I didn’t use it. Of course, I could add a +mpi variant that is automatically enabled if either +openmpi or +mpich2 is enabled, but that seems kind of ugly.
>
>> # This is a rather fragile way to figure out where the fortran library can be
>> # found that is needed to link against libparpack.a:
>> - if {[file exists ${prefix}/lib/gcc46]} {
>> - set fortrandir ${prefix}/lib/gcc46
>> - } else {
>> - if {[file exists ${prefix}/lib/gcc45]} {
>> - set fortrandir ${prefix}/lib/gcc45
>> - } else {
>> - if {[file exists ${prefix}/lib/gcc44]} {
>> - set fortrandir ${prefix}/lib/gcc44
>> - } else {
>> - if {[file exists ${prefix}/lib/gcc43]} {
>> - set fortrandir ${prefix}/lib/gcc43
>> - } else {
>> - if {[file exists ${prefix}/lib/gcc42]} {
>> - set fortrandir ${prefix}/lib/gcc42
>> - } else {
>> - if {[file exists ${prefix}/lib/g95]} {
>> - set fortrandir ${prefix}/lib/g95
>> - } else {
>> - return -code error "Please install a fortran compiler by installing one of the following ports: gcc42, gcc43, gcc44, gcc45, gcc46, or g95."
>> - }
>> - }
>> - }
>> - }
>> + set fortrandirs {g95 gcc42 gcc43 gcc44 gcc45 gcc46 gcc47 gcc48}
>> + set fortrandir ""
>> + foreach dir ${fortrandirs} {
>> + if {[file exists ${prefix}/lib/${dir}]} {
>> + set fortrandir ${prefix}/lib/${dir}
>> }
>> }
>> + if {${fortrandir} == ""} {
>> + ui_error "Please install a fortran compiler by installing one of the following ports:\n\tgcc42, gcc43, gcc44, gcc45, gcc46, gcc47, gcc48, or g95."
>> + }
>
> Same here: "return -code error" should be used instead of—or in addition to—"ui_error". I typically write only short sentence fragments with "return -code error" (since MacPorts will take up half the line with its own output), and if I have more to say, I write some complete sentences in "ui_error" calls before that.
>
> For example from the conflicts_build portgroup:
>
>
> if {${subport} == ${badport}} {
> ui_error "${subport} cannot be built while another version of ${badport} is active."
> ui_error "Please deactivate the existing copy of ${badport} and try again."
> } else {
> ui_error "${subport} cannot be built while ${badport} is active."
> ui_error "Please deactivate ${badport} and try again."
> ui_error "You can reactivate ${badport} again later."
> }
> return -code error "${badport} is active"
Thanks for that suggestion. Done.
--
Mark Moll
More information about the macports-dev
mailing list