Call for Help: need script for patching ports tree, building with poudriere
Torsten Zuehlsdorff
mailinglists at toco-domains.de
Mon Nov 23 15:14:25 UTC 2015
Hello Ricky,
>> Thank you very much for your script!
>>
>> I took a short look at it and have some questions/suggestions:
>>
>> Line 119/120: There you're burning an if. I have more skill in bash
>> than in sh - but is there no negation possible?
>
> Honestly, the main reason I started this is to just see what I could
> do. Feedback is most appreciated as improving my skills is one of my
> goals here. Bash and sh are extremely similar, this is most likely
> lack of knowledge on my part. Do you mind explaining further?
That is a good attitude :) I am doing this also just to get in touch
with something new and learn.
As a professional trainer there is a trick in learning: whenever a
question arises - by yourself or by another person: take the chance and
look for it. So you will remember the answer much better. :)
If you need a programming-mentor for this project feel free to contact
me off-list.
To answer my own question, yes there is
You wrote:
===
if [ -d "${PORTSDIR}" ]; then
else
===
Which directly skips the if condition without doing something.
Rewrite it with:
===
if ! [ -d "${PORTSDIR}" ]; then
===
This will test if the dir is non existent - exactly what you want! :)
>> Line 162: BUILD_LIST="`(cat ${PATCH_FILE} | grep -o '^Index:[ ].*'
>> | sed 's/Index: // ; s/Mk.*// ; s/Tools.*// ; s/Templates.*// ;
>> s/Keywords.*//' | grep -o -e '.*\/.*\/' | sed 's/.*\/.*\/files\/$//
>> ; s/\/$//' | sort | awk '!a[$0]++')`"
>>
>> This line is relative complicated. Is there any reason not to let
>> svn do the work? Like: BUILD_LIST="`${SVN} status | grep -o -e
>> '.*\/.*\/' | awk '{ print $2 }'`> Your way is faster (and more
>> accurate, since i'm currently too short on time), but the other way
>> would allow applying multiple patches and manual changes without
>> any problems. But i'm not sure if this is really needed.
>
> Using the diff file instead of svn is of course faster because there
> has much less data to go through. I was considering adding multiple
> diff support. Going to take a closer look at this. Do you think its
> more important to focus on the diff file or the port tree for
> generating a build list?
That is a hard question. I asked for svn because i am from Germany and
facing often problems with umlauts. My lastname is "Zühlsdorff" but i
rewrite it for non-german person and programs to "Zuehlsdorff". Sounds
the same, means the same.
Back to the core of the question: encoding problems.
Can you guarantee that cat and sed work correctly on files with for
example an "ü" or containing something like '合気道'? ;)
Using svn avoids this problem, because in the portstree you could not
find filenames with such characters.
An additional though: you are assuming that everything is fine with the
input. It accepts all tracks of my music folder without any hestination
as a patch-file. ;) Okay, patching fails - but i tries hard and the new
versions provides much binary trash through the "cat" after failing.
I don't believe we must make it bullet proof. Here we need some input
from Craig about the way and environment the script will be used in.
> The main reason I didn't want to use the
> port tree, at least in my case, is because I have so many ports that
> are not sync'd with the current FreeBSD tree.
Okay, but therefore you added the PORTSDIR variable?
>> Line 201: svn revert -R would do the same, both of our approaches
>> have a problem: the ignore for example added files.
>
> Yeah, I agree. This is a big problem with added patchfiles. I added a
> "Hard Revert" (-R) option that I was considering making make the
> default that should fix this problem. Can you check and see if it
> does for you?
I will check this.
> I know some people maybe weary of the rm -rf command,
> It is also why I added so many checks on a properly set port tree. Do
> you think it would be better to just do this "Hard Revert" and remove
> the other option? Thanks for the feedback!
The revert option should do what they say: reverting. The technical
details are the second step. As a rule of thumb: do not lie. When you
claim to revert do this. If this needs an rm than do the rm.
> I'v already started
> working on 0.0.2! I just finished adding better failed patch output.
> Going to also add a option to override the scripts portsdir, and add
> support for multiple diff files, and take another look at my
> BUILD_LIST to make it simpler. Keep the feed back coming please! =]
That are great news :)
One last question: is there any reason you choose this license? The
FreeBSD license contains just the first 2 paragraphs which makes
redistribution much easier. Especially paragraph 3 makes you script for
example incompatible with the GNU licensed programs.
https://www.freebsd.org/copyright/freebsd-license.html
Greetings,
Torsten
More information about the freebsd-testing
mailing list