Portfile Workflow Advice

Sean Farley sean at macports.org
Tue Jan 15 11:43:33 PST 2013


On Tue, Jan 15, 2013 at 1:28 PM, Bradley Giesbrecht
<pixilla at macports.org> wrote:
>
> On Jan 15, 2013, at 11:17 AM, Sean Farley wrote:
>
>> On Tue, Jan 15, 2013 at 12:03 PM, Bradley Giesbrecht
>> <pixilla at macports.org> wrote:
>>>
>>> On Jan 15, 2013, at 9:48 AM, Sean Farley wrote:
>>>
>>>> On Mon, Jan 14, 2013 at 2:18 AM, rod <rod at pu-gh.com> wrote:
>>>>> Hi!
>>>>>
>>>>> I've been finding developing and especially updating Portfiles a bit tricky
>>>>> and error prone, so have been writing some tools for myself to help with
>>>>> this...
>>>>>
>>>>> https://github.com/rodnaph/pearl
>>>>> https://github.com/rodnaph/ghsum
>>>>
>>>> Neato.
>>>>
>>>>> But while submitting the second via Trac it was pointed out you can do this
>>>>> already with Macports...
>>>>>
>>>>> $> port -d checksum
>>>>>
>>>>> So I was wondering what tools everyone else uses to create and update their
>>>>> Portfiles?  Are all the utilities provided through the "port" tool and I'm
>>>>> just missing them?  Or are there other utilities (like
>>>>> https://trac.macports.org/browser/users/ryandesign/scripts/portcheckup) that
>>>>> are available to help?
>>>>>
>>>>> Any links/tips appreciated, and I'd be especially interested if someone
>>>>> could describe their workflow too.
>>>>
>>>> I'm pretty new here, so take my advice with a grain of salt :-) My
>>>> workflow consists of using mercurial instead of subversion but that is
>>>> personal preference. I see you're on github, so you might have seen
>>>> the macports git repo already but just in case you haven't,
>>>>
>>>> git://git.macports.org/macports/trunk.git
>>>>
>>>> and for those that prefer mercurial,
>>>>
>>>> https://bitbucket.org/seanfarley/macports
>>>>
>>>> As for common tasks such as changing the checksum, I have gotten by so
>>>> far with using `port -v <command>` to fail at the extraction phase and
>>>> tell me the checksum. Also, I use codesearch (already in macports)
>>>> through emacs with this script,
>>>>
>>>> https://github.com/abingham/codesearch.el
>>>
>>> I do this a lot, adjusting the first grep with "-B" and "-A" flags: (in the example I am searching for where to install the AUTHORS file)
>>> $ echo $MP_SVNDPORTS
>>> /opt/local/var/macports/sources/svn.macports.org/trunk/dports
>>> $ find $MP_SVNDPORTS -maxdepth 3 -name Portfile -exec echo {} \; -exec grep -E -- "AUTHORS" {} \; | grep -B1 -v -E "/Portfile"
>>>
>>> This has worked for me for a long while, though I wouldn't mind something nicer. Maybe an sqlite registry query?
>>
>> For me, this command takes:
>>
>> $ time find $MP/dports -maxdepth 3 -name Portfile -exec echo {} \;
>> -exec grep -E -- "AUTHORS" {} \; | grep -B1 -v -E "/Portfile"
>>
>> real 1m2.393s
>> user 0m18.293s
>> sys 0m19.905s
>>
>> For csearch, it is a shorter command and takes:
>>
>> $ time csearch -f Portfile AUTHORS
>>
>> real 0m0.019s
>> user 0m0.010s
>> sys 0m0.006s
>>
>> Plus, it has an emacs interface ^_^
>
> I don't seem to have csearch on my system. Where/how do I get it?

`port install codesearch` :-) You'll need to index your 'projects' (or
just macports, if you prefer) before being able search, of course. For
me, that was easy enough because all my projects are located in
~/projects. Therefore,

$ cindex ~/projects

As long as I don't want to add any other locations for codesearch to
index, then I can just run

$ cindex

with no options and it will update the current paths in its own
database. After this runs (which for me takes 7~30 seconds), you can
run,

$ time csearch -f Portfile AUTHORS

>>>> so that I can easily search for how other ports do common tasks. With
>>>> all of that being said, I still have questions of my own:
>>>>
>>>> 1) The gap between Trac and the mailing lists is huge. Sometimes there
>>>> are long discussion on Trac that I completely miss since they don't
>>>> happen on the mailing list. My question is how could we close this
>>>> gap?
>>>
>>> Do you subscribe to these lists?
>>> macports-tickets at lists.macosforge.org
>>> macports-changes at lists.macosforge.org
>>
>> Fair enough. I initially wanted to keep my inbox volume low but I
>> guess there's no way around that :-(
>
> I use Mail.app's "SMART MAILBOXES" and ignore my inbox. I scan the subjects of the tickets and changes smart mailboxes, read those that interest me and mass "flag as read" the rest.

This is actually what I meant by "processing." For me, even what you
describe requires too much thinking on my part. Or maybe I just need
more coffee :-)


More information about the macports-dev mailing list