Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Richard Purdie <richard.purdie@linuxfoundation.org>
To: Patches and discussions about the oe-core layer
	<openembedded-core@lists.openembedded.org>
Cc: Scott Garman <scott.a.garman@intel.com>
Subject: Re: [PATCH 2/3] useradd.bbclass: new class for managing user/group permissions
Date: Fri, 01 Jul 2011 00:10:25 +0100	[thread overview]
Message-ID: <1309475425.20015.493.camel@rex> (raw)
In-Reply-To: <1db24b664bf6fb292d8a84dd6398e330305f18fd.1309473383.git.scott.a.garman@intel.com>

Hi Scott,

This is looking good, thanks for the changes! I just have some cosmetic
things to tweak before it goes in.

On Thu, 2011-06-30 at 15:39 -0700, Scott Garman wrote:
[...]
> +# Recipe parse-time sanity checks
> +def update_useradd_after_parse(d):
> +	if bb.data.getVar('USERADD_PACKAGES', d) == None:

if not d.getVar('USERADD_PACKAGES', False):

> +		if bb.data.getVar('USERADD_PARAM', d) == None and bb.data.getVar('GROUPADD_PARAM', d) == None:

if not d.getVar('USERADD_PARAM', False) and not d.getVar('GROUPADD_PARAM', False):

> +			raise bb.build.FuncFailed, "%s inherits useradd but doesn't set USERADD_PARAM or GROUPADD_PARAM" % bb.data.getVar('FILE', d)
> +
> +python __anonymous() {
> +	update_useradd_after_parse(d)
> +}
> +
> +# Return a single [GROUP|USER]ADD_PARAM formatted string which includes the
> +# [group|user]add parameters for all packages in this recipe
> +def get_all_cmd_params(d, cmd_type):
> +	import string
> +	
> +	localdata = bb.data.createCopy(d)

No need to use createCopy here since you don't change OVERRIDES or write
to the datastore at all. Just use d directly.

> +	param_type = cmd_type.upper() + "ADD_PARAM_%s"
> +	params = []
> +
> +	pkgs = localdata.getVar('USERADD_PACKAGES', True)
> +	if not pkgs:
> +		pkgs = localdata.getVar('USERADDPN', True)
> +		packages = (localdata.getVar('PACKAGES', True) or "").split()
> +		if packages and pkgs not in packages:
> +			pkgs = packages[0]
> +
> +	for pkg in pkgs.split():
> +		param = localdata.getVar(param_type % pkg, True)
> +		if param:
> +			params.append(param)
> +
> +	return string.join(params, "; ")
> +
> +# Adds the preinst script into generated packages
> +fakeroot python populate_packages_prepend () {
> +	def update_useradd_package(pkg):
> +		bb.debug(1, 'adding user/group calls to preinst for %s' % pkg)
> +		localdata = bb.data.createCopy(d)
> +		overrides = localdata.getVar("OVERRIDES", True)
> +		bb.data.setVar("OVERRIDES", "%s:%s" % (pkg, overrides), localdata)
> +		bb.data.update_data(localdata)
> +
> +		"""
> +		useradd preinst is appended here because pkg_preinst may be
> +		required to execute on the target. Not doing so may cause
> +		useradd preinst to be invoked twice, causing unwanted warnings.
> +		"""

You can just do:

preinst = d.getVar('pkg_preinst_%s' % pkg, True) or d.getVar('pkg_preinst', True)

and ditch all the createCopy/OVERRIDES stuff.

> +		preinst = localdata.getVar('pkg_preinst', True)
> +		if not preinst:
> +			preinst = '#!/bin/sh\n'
> +		preinst += localdata.getVar('useradd_preinst', True)
> +		bb.data.setVar('pkg_preinst_%s' % pkg, preinst, d)
> +
> +	# We add the user/group calls to all packages to allow any package
> +	# to contain files owned by the users/groups defined in the recipe.
> +	# The user/group addition code is careful not to create duplicate
> +	# entries, so this is safe.
> +	pkgs = d.getVar('USERADD_PACKAGES', True)
> +	if pkgs == None:

if not pkgs:

> +		pkgs = d.getVar('USERADDPN', True)
> +		packages = (d.getVar('PACKAGES', True) or "").split()
> +		if not pkgs in packages and packages != []:

if packages and pkgs not in packages:

> +			pkgs = packages[0]
> +	for pkg in pkgs.split():
> +		update_useradd_package(pkg)
> +}

Cheers,

Richard




  reply	other threads:[~2011-06-30 23:14 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-30 22:39 [PATCH 0/3] useradd.bbclass: new class for managing user/group permissions [v2] Scott Garman
2011-06-30 22:39 ` [PATCH 1/3] bitbake.conf: update PSEUDO_PASSWD variable Scott Garman
2011-06-30 23:13   ` Richard Purdie
2011-06-30 22:39 ` [PATCH 2/3] useradd.bbclass: new class for managing user/group permissions Scott Garman
2011-06-30 23:10   ` Richard Purdie [this message]
2011-07-01  4:36     ` Scott Garman
2011-07-01 15:55       ` Richard Purdie
2011-06-30 22:39 ` [PATCH 3/3] useradd-example: example recipe for using inherit useradd Scott Garman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1309475425.20015.493.camel@rex \
    --to=richard.purdie@linuxfoundation.org \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=scott.a.garman@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox