Hello, Here's another major iteration of user/group package implementation proposal. There were some major design changes, so probably best to review from scratch.
Notable changes in user.eclass: - Darwin support has been removed. It is unused and has been broken for a long time. - Support for *BSD remains as it is working and we can test those platforms easily (it's needed for Gentoo/FBSD). - esetshell counterpart to egetshell has been added. - egetusername and egetgroupname utility functions for UID/GID→name conversion have been added. - egetcomment and esetcomment functions for passwd comment field have been added. - egetgroups and esetgroups functions for getting and altering group membership have been added. Notable changes common to both acct-* eclasses: - ACCT_*_NAME internal variables has been added for readability and possible future extension (to avoid using PN to mean user/group name). - Detecting UID/GID mismatch or conflict for ACCT_*_ENFORCE_ID has been fixed to work correctly. It no longer fails if the user/group exists already with the correct UID/GID, and now fails if it exists with another UID/GID. Notable changes in acct-user.eclass: - ACCT_USER_GROUPS is now obligatory. After all, there is no well-defined concept of user without a primary group. - Account locking (on removal) and unlocking (on reinstall) is now supported. On Linux and FreeBSD it uses both password locking (which should lock the account if sysadmin set any password for it) and expiration (which locks access completely). Also shell is forced to nologin for locked accounts. - Account home directory, shell and group memberships are now updated on install. This is needed for unlocking but will also help clean up bad previous designs (see: 'git' user). - The comment for newly created accounts is now set from DESCRIPTION, making it possible to properly describe account purposes. On removal, the removal date is appended to the comment. Please review. I'll send a GLEP update too shortly. -- Best regards, Michał Górny Michał Górny (19): user.eclass: Remove dead/broken Darwin support user.eclass: NetBSD has 'getent' user.eclass: Do not create user-group automatically user.eclass: Prevent automated home creation in useradd user.eclass: Support disabling home directory creation user.eclass: Support forcing specified UID/GID user.eclass: Die if no free UID/GID is found user.eclass: Factor out finding nologin into separate function user.eclass: Introduce esetshell user.eclass: Introduce eget{user,group}name user.eclass: Also permit using functions in pkg_*rm phases user.eclass: Support getting & setting comment field user.eclass: Introduce e{get,set}groups acct-group.eclass: A new eclass to maintain group accounts acct-user.eclass: A new eclass to maintain user accounts acct-user.eclass: Supporting locking & unlocking accounts acct-group/ftp: Add 'ftp' group (GID 21) acct-user/ftp: Add 'ftp' user (UID 21) net-ftp/ftpbase: Utilize {group,user}/ftp acct-group/ftp/ftp-0.ebuild | 8 + acct-group/ftp/metadata.xml | 5 + acct-user/ftp/ftp-0.ebuild | 13 + acct-user/ftp/metadata.xml | 5 + eclass/acct-group.eclass | 124 ++++++++ eclass/acct-user.eclass | 376 ++++++++++++++++++++++++ eclass/user.eclass | 387 ++++++++++++++++++++----- net-ftp/ftpbase/ftpbase-0.01-r3.ebuild | 39 +++ profiles/categories | 2 + 9 files changed, 890 insertions(+), 69 deletions(-) create mode 100644 acct-group/ftp/ftp-0.ebuild create mode 100644 acct-group/ftp/metadata.xml create mode 100644 acct-user/ftp/ftp-0.ebuild create mode 100644 acct-user/ftp/metadata.xml create mode 100644 eclass/acct-group.eclass create mode 100644 eclass/acct-user.eclass create mode 100644 net-ftp/ftpbase/ftpbase-0.01-r3.ebuild -- 2.22.0.rc3