[114592] trunk/dports/_resources/port1.0/group/github-1.0.tcl

"Markus W. Weißmann" mww at macports.org
Wed Dec 11 23:55:15 PST 2013


On 11. Dec 2013, at 21:58 , Ryan Schmidt <ryandesign at macports.org> wrote:

> 
> On Dec 11, 2013, at 01:33, mww at macports.org wrote:
> 
>> Revision
>> 114592
>> Author
>> mww at macports.org
>> 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)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: github-1.0.tcl.diff
Type: application/octet-stream
Size: 884 bytes
Desc: not available
URL: <https://lists.macosforge.org/pipermail/macports-dev/attachments/20131212/ded779d3/attachment.obj>


More information about the macports-dev mailing list