Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Jan 2010 10:50:54 -0800
From:      Doug Barton <dougb@FreeBSD.org>
To:        =?ISO-8859-1?Q?Francisco_de_Borja_L=F3pez_R=EDo?= <borja@pexego.es>
Cc:        ports@freebsd.org
Subject:   Re: New port: finance/openerp-web
Message-ID:  <4B5F398E.5060500@FreeBSD.org>
In-Reply-To: <20100126174903.b144472f.borja@pexego.es>
References:  <20100120165147.666592ef.borja@pexego.es>	<20100120212640.GE6618@lonesome.com>	<7be7a2801001201600j5c772267na6dea944334618be@mail.gmail.com>	<20100121093649.7867d810.borja@pexego.es>	<20100121095114.12bab6af.borja@pexego.es>	<4B5BEDB1.8080308@FreeBSD.org> <20100126174903.b144472f.borja@pexego.es>

next in thread | previous in thread | raw e-mail | index | archive | help
On 01/26/10 08:49, Francisco de Borja López Río wrote:
> On Sat, 23 Jan 2010 22:50:25 -0800
> Doug Barton<dougb@freebsd.org>  wrote:
>
>> On 01/21/10 00:51, Francisco de Borja López Río wrote:
>>>
>>> Sorry, I forgot to add the attachments in my previous email.
>>>
>>> These are both the rc.d script and the default configuration file I've
>>> been using with the current openerp-server port for some time.
>>
>> A few notes on the rc.d script.
>>
>> 1. The name of the file, PROVIDE, and $name should all match. Perhaps
>> openerpd, or even erpd?
>
> If there is no limitation on that, it should be
> openerp-web/openerp-server (for the web and server scripts
> respectively). Let me try if it works with the -

I don't think it will work with the -, and generally simpler/shorter is 
better. I personally would rather see just openerp and openerpd, but I 
won't object to whatever you come up with as long as the 3 things are 
the same for each of the scripts.

>> 2. There are quite a few examples of "/usr/local" in there (which is
>> fine for a running script), please remember to s#/usr/local#%%PREFIX%%#g
>> for the port.
>
> mmm, I've been taking a look at the rc.d scripts in my servers, and all
> of them have those absolute paths.
>
> Did you mean to set %%PREFIX%% in the rc file, or did you mean to
> generate the rc.d script dinamically when installing the port?

Look at the files in the ports tree for those and you should see what I 
mean. Also see the porter's handbook link I posted regarding how to use 
rc.d stuff in your port.

>> 3. The pidfile= should come after load_rc_config, and should look like
>> this:
>> pidfile="${<name>_pidfile:-/var/run/openerp-server/openerp-server.pid}"
>> (substitute<name>  of course). Or, consider not allowing the user to
>> change the location of the pidfile unless there is a good reason to do so.
>
> mmm I do something similar to that,

Yes, I saw what you did. :)  It's overly complicated and IIRC won't 
actually work if the user tries to set ${name}_pidfile in rc.conf. OTOH, 
what I suggested will definitely work, and is simpler.

Generally however it's not necessary to allow the user to change the 
location of the pidfile unless there is a compelling reason to do so.

> I don't remember exactly where (probably somewhere in the porters
> handbook), but I've read that the order is not a problem (using
> openerpserver_pidfile before setting it) (IIRC)

If you can find the reference please report it, since it's not accurate. 
You cannot access the values of any of the ${name}_* variables until 
after load_rc_config.

>> 4. I'm not quite sure what eval "${rcvar}=\${${rcvar}:-'NO'}" is
>> supposed to accomplish, but if it's "set ${name}_enable to NO by
>> default" it's too clever by half. :)  Take a look at
>> http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/rc-scripts.html
>> for other ways to simplify the default variable assignments (as well as
>> some other pointers).
>
> I got that from this article:
>
> http://www.freebsd.org/doc/en_US.ISO8859-1/articles/rc-scripting/rcng-confdummy.html
>
> (check point 3) Perhaps it is not needed tough.

Ok, I'll add that to the list of doc bugs. :)  Much better (in the sense 
of easier to read, easier to maintain, etc.) to just use the default 
variable assignment method in the porter's handbook.

>> 5. Just doing 'touch foo' is always cheaper than testing its existence
>> first (although it's a micro-optimization) and there is no reason to
>> test existence anyway. Same goes with the 'mkdir -p'.
>
> mmm, you are right, but if you try to create a directory that already
> exist, a message about the already-existing directory will appear
> (blabla File exists).

You really need to test the things I suggested, and preferably read the 
man pages to educate yourself about these topics. (Hint: I said 'mkdir 
-p', not 'mkdir')

>> 6. Instead of `dirname blah` you should use ${blah%/*} for two reasons,
>> first dirname(1) is in /usr/bin, and may not be available at boot, and
>> two there is no reason to use it in a shell script when the variable
>> substitution is cheaper and easier.
>
> I got the dirname idea from the milter-bogom port rc.d script. It
> seemed reasonable for me ;).

Ok, thanks, I'll run a check for that too when I have more time. One of 
the reasons that I am so pedantic about doing the rc.d scripts right the 
first time is that bad code gets copied over and over again.

> Anyway, with variable substitution you meant, for example, setting a
> variable for the directory where the pidfile will be saved, then use
> that variable when creating the pidfile variable?

Nope. Test what I wrote.

blah=/one/two/three
echo ${blah%/*}

This one is what I would consider an "intermediate" level shell 
scripting technique, which is why I am spelling it out for you in more 
detail, but seriously, when someone gives you suggestions, try them. 
It's the easiest way to learn. :)

>> 7. You named your substitute stop_cmd "${name}_poststop" which is
>> confusing, and I'm not sure why it's necessary. If you're afraid that
>> rc.d isn't going to actually stop the process for some reason we should
>> address that. If you feel that you absolutely must have a safety belt
>> for this make it a real stop_postcmd.
>
> Typo, it should be _stop (will be fixed in just a matter of minutes :D,
> thnx for the report)

I'm glad you caught the typo, but you still haven't answered my 
question. Why do you need to redefine the _stop method?

>> I realize that these are a lot of notes, but don't worry ... it's easy
>> to see that a lot of thought and creativity went into this, which is why
>> I'm taking the time to try and help improve it.
>
> That's exactly what I want, I'm working in more scripts and stuff, so
> learning some basic stuff before going any further is always a good
> thing.

In that case I'm glad to help, and glad to put in a little more of my 
precious time than usual. :)

> I've found some more issues while using more and more the port and the
> scripts, for example, the openerp-server port should create a new
> account _openerp (to use my rc.d script properly) and the openerp-web
> port should check if the user exist and, if not, create it (useful for
> servers that will serve the web client, connecting to a remote openerp
> server).

Actually the port itself should create the user, we generally don't have 
rc.d scripts do that. If the sysadmin wants a different user than the 
default it's up to them to configure that before starting the service.

> I'm working on improved versions of the script, will send them soon to
> the list.
>
> Thnk you a lot Doug
>
> (And thnx for the portmaster tool too! ;D)

heh, you're welcome.


Doug

-- 

	Improve the effectiveness of your Internet presence with
	a domain name makeover!    http://SupersetSolutions.com/

	Computers are useless. They can only give you answers.
			-- Pablo Picasso




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B5F398E.5060500>