On 11. Dec 2013, at 21:58 , Ryan Schmidt <[email protected]> wrote:

> 
> On Dec 11, 2013, at 01:33, [email protected] wrote:
> 
>> Revision
>> 114592
>> Author
>> [email protected]
>> Date
>> 2013-12-10 23:33:11 -0800 (Tue, 10 Dec 2013)
>> Log Message
>> 
>> be more intractable in the search for the worksrcdir
>> Modified Paths
>> 
>>      • trunk/dports/_resources/port1.0/group/github-1.0.tcl
>> Diff
>> 
>> Modified: trunk/dports/_resources/port1.0/group/github-1.0.tcl (114591 => 
>> 114592)
>> 
>> --- trunk/dports/_resources/port1.0/group/github-1.0.tcl     2013-12-11 
>> 02:08:31 UTC (rev 114591)
>> +++ trunk/dports/_resources/port1.0/group/github-1.0.tcl     2013-12-11 
>> 07:33:11 UTC (rev 114592)
>> 
>> @@ -78,14 +78,19 @@
>> 
>>     distname                ${github.project}-${github.version}
>> 
>>     fetch.ignore_sslcert    yes
>> 
>> 
>> 
>> +    # if worksrcpath does not exist, try to guess the directory that should 
>> be and rename it
>> 
>>     post-extract {
>> 
>>         if {![file exists ${worksrcpath}] && \
>> 
>>                 ${fetch.type} eq "standard" && \
>> 
>>                 ${master_sites} eq ${github.master_sites} && \
>> 
>>                 [llength ${distfiles}] > 0 && \
>> 
>> -                [llength [glob -nocomplain ${workpath}/*]] > 0 && \
>> -                [file isdirectory [glob ${workpath}/*]]} {
>> -            move [glob ${workpath}/*] ${worksrcpath}
>> 
>> +                [llength [glob -nocomplain ${workpath}/*]] > 0} {
>> +            foreach item [glob ${workpath}/*] {
>> +                if {[file isdirectory ${item}]} {
>> +                    move ${item} ${worksrcpath}
>> +                    break
>> +                }
>> +            }
> 
> Where were you running into problems with this?
> 

When combining with the OCaml port-group: It creates a wrapper-tool required 
just for installation which it puts in "${workpath}/ocamlfind”. This file is 
then found by the ${workpath}/* expression and is tried to be renamed to 
${worksrcpath} along with the real source-directory — which of course fails.

> The goal here is to not have to specify the git revision in the portfile. So, 
> for example, the Readown port specifies "github.setup suminb readown 1.0.5” 
> and this makes it downloads a tarball from 
> https://github.com/suminb/readown/tarball/1.0.5 but it extracts to a 
> directory called suminb-readown-9cf4ef5. Since I don’t want maintainers using 
> the github portgroup to have to specify revisions like “9cf4ef5” each time 
> they want to update a port, I introduced this magic into the portgroup that 
> renames it to the common worksrcdir.
> 
> But this magic has proved problematic in many cases, needing this now rather 
> lengthy list of exceptions, and even so it’s still doesn’t work in all cases.
> 
> Since the directory name that’s extracted is always 
> ${github.project}-${github.author}-[a-z0-9]+ how about we check if there’s a 
> directory matching that and rename that? That might reduce the number of 
> checks we need to do and remove more opportunities for problems.
> 
> Also, it should probably rename to ${distname}, not ${worksrcpath}, which I 
> think should finally solve the misfeature that ports using the github 
> portgroup were not allowed to override worksrcpath and had to instead 
> override configure.dir and build.dir.
> 


I’m not quite sure about the github naming magic — could someone please check 
the attached patch if the glob-pattern will always match the name of the 
toplevel-directory? (works for me)

Attachment: github-1.0.tcl.diff
Description: Binary data

_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to