Commit graph

60 commits

Author SHA1 Message Date
joerg
e1659a7b56 Try to work around the mess called useradd on Linux. On Red Hat derived
distributions, useradd will create the home directory by default and
there is support for an option to disable that. Other Linux
distrubutions either lack the option in login.defs or the support for
-M. As workaround look for the option and if it is set, force -M.
Tested by Jens Rehsack. Addresses PR 40737.
2009-03-08 19:39:03 +00:00
joerg
6daf419fa5 Create users with -M. On Linux this gives the same behavior as NetBSD's
useradd without -M, e.g. allows creation of users without home
directory. Tested on RHEL4. From Jens Rehsack.
2009-02-02 19:54:22 +00:00
wiz
7bb527e6f7 Fix a longstanding bug in the pkginstall infrastructure: incomplete
support for creating empty files as CONF_FILES.

The usual way is to add
CONF_FILES= /dev/null /some/file

However, some parts of the infrastructure check if the "source" is a
file -- this fails for /dev/null obviously (other parts accept
character devices already).

Fix this. Will follow up with PKGREVISION bumps for affected packages.

Ok during freeze: agc@
2008-09-25 14:01:46 +00:00
jlam
4e56d99aca Automatically add ${GAMES_USER} and ${GAMES_GROUP} to PKG_USERS and
PKG_GROUPS when SETGIDGAMES == yes.
2008-03-04 06:51:41 +00:00
jlam
26a6bb9ac4 + Conditionally add GAMES_USER and GAMES_GROUP to the platform *.mk
files.  These variables are currently usable if ${SETGIDGAME} == yes.
  These variables should be used when describing ownership of files
  and directories to the pkginstall framework, e.g.

	SPECIAL_PERMS=	bin/foogame ${GAMES_USER} ${GAMES_GROUP} 2555

+ Rename SETGID_GAME_PERMS to SETGID_GAMES_PERMS because the default
  group name is "games".

+ Define SETGID_GAMES_PERMS in terms of GAMES_USER and GAMES_GROUP so
  that these names are protected from the normal flow of unprivileged.mk.
  This fixes the +INSTALL scripts in "user-destdir" packages to
  correctly refer to the games:games instead of the user:group of the
  user that built the packages.
2008-03-04 06:45:33 +00:00
jlam
810c83eb14 Use ${GAMEMODE} and not hardcoded 2755. 2008-03-04 05:55:42 +00:00
jlam
80ac108053 Add SETGID_GAME_PERMS convenience definition that defaults to owner=game,
group=game, mode=0775.
2008-03-04 05:11:18 +00:00
rillig
93cc59aaae Reverted my last change. I was completely wrong. The real fault reported
in PR 37905 is exactly what I wanted to prevent using this check: A
configuration file was mentioned via CONF_FILES but does not exist in
the PLIST.
2008-01-29 19:18:26 +00:00
rillig
1b87d175f8 Disabled the check for missing example configuration files, since
according to PR 37905, it gets called too early.
2008-01-29 19:14:45 +00:00
rillig
ddf74e4220 Replaced unreadable code with readable code by doing a little
substitution.
2008-01-23 14:46:33 +00:00
rillig
aa66ac5ffb Replaced _PKG_SILENT and _PKG_DEBUG with RUN, after making sure that the
additional error checking won't break anything that isn't intended to
break.
2008-01-23 14:12:32 +00:00
heinz
79a03c3697 In the CHECK-PERMS case, moved test of exit code one line up, so the
removal of tmpdir does not overwrite the exit code to be tested.
2008-01-04 21:50:27 +00:00
rillig
173c29312a Added information about the interface to this file, which can be queried
with "bmake show-all-pkginstall".
2007-12-13 11:10:42 +00:00
rillig
2e6521f63c Print an understandable error message if the number of arguments for
CONF_FILES, CONF_FILES_PERMS, REQD_FILES, REQD_FILES_PERMS is wrong.

NB: The code doesn't read like "shift 5 || error_out" since NetBSD's
shell exits if a shift fails in this case, instead of just reporting an
error.

Fixes PR 37489.

I didn't fix the code in pkglint (which was suggested in the PR) since
it seems too complicated to me. There is no support for a
"MultipleShellWords" data type by now, and pkglint would have to know
that SETUID_ROOT_PERMS is of type "ThreeShellWords: Username, Groupname,
Filemode". That's too much work and doesn't look nicely.
2007-12-06 22:03:22 +00:00
rillig
8589bb73de The last change didn't receive enough testing. Now it is ok to have
/dev/null as an example file, and the proper file names are checked.
2007-11-23 11:50:19 +00:00
rillig
42b63489d3 After a package is installed, make sure that the example files for
CONF_FILES and similar exist, since the pkginstall framework skips them
silently, which is not a good idea.

For example I just installed dovecot, and there was neither a
configuration file installed nor a message that a configuration file
exists at all.
2007-11-23 11:36:19 +00:00
rillig
3eba70a2da Rewrote the comments on REQD_FILES to be accessible via "bmake help". 2007-10-10 11:42:36 +00:00
rillig
996a2bf60c typo 2007-10-09 11:31:46 +00:00
heinz
e62c70c5d2 Fixed typos in comments. 2007-09-16 14:40:57 +00:00
joerg
d0f3b7006b Do not check that RCD_SCRIPTS_SRC.foo exists, assume so.
This unbreaks DESTDIR installation for mail/spamassassin,
when extract and install phase are part of the same make run.
2007-08-23 12:30:30 +00:00
jlam
21129d3f69 Don't bother using environment variables to pass info the shlib-type
shell script.  Just specify everything on the command line.  Also,
since shlib-type is a plain-old shell script with no bells and whistles,
we can safely run it with "sh" and not "${SH}", which is necessary
because "${SH}" isn't defined at this point.
2007-08-02 16:00:33 +00:00
jlam
4dde9bc3a4 Move the +SHLIBS generation code back into the pkginstall module. In the
plist module, it was being "defined" too late, and the pkginstall module
never created any +SHLIBS scripts.  Sidestep the tools problems with
SHLIB_TYPE by pretending they don't exist (for now).

XXX SHLIB_TYPE needs to be re-thought or removed altogether.
2007-07-27 18:37:35 +00:00
jlam
9bb51d11c7 Putting bsd.pkginstall.mk under bsd.tools.mk was a bad idea -- the
former set several USE_TOOLS lines that were being missed by bsd.tools.mk.

Rearrange the +SHLIBS code so that bsd.tools.mk can now be included
after bsd.pkginstall.mk again.  The +SHLIBS code has now been moved
over to the plist module, which is so far the repository for all of
the shlib-type handling.

This should fix the problem with fonts handling being broken.
2007-07-23 15:23:46 +00:00
jlam
b07ac962c6 Reversed file descriptors 1 and 2... time for a coffee break... 2007-07-18 18:55:56 +00:00
jlam
e11696b2dd Ignore the result of the ldconfig command. 2007-07-18 18:53:18 +00:00
jlam
e586cdd924 PKG_METADATADIR is the *second* argument. 2007-07-18 18:46:12 +00:00
jlam
681069ad5f Add missing definition for "$ACTION", which is the first argument to the
+SHLIBS script.
2007-07-18 18:43:05 +00:00
jlam
2d76049e1e Add back a facility to rebuild the run-time library search paths database
on platforms that need it.

XXX Right now, if the platform needs it, then it runs for every package.
XXX This needs to be fixed to only run for packages that install shared
XXX libraries.

* Move mk/plist/shlib-type to mk/scripts.

* Move definition of SHLIB_TYPE from mk/plist/plist.mk to bsd.pkg.mk.

* Move inclusion of bsd.pkginstall.mk below bsd.tools.mk so that it
  can use SHLIB_TYPE.  This is necessary because SHLIB_TYPE's value
  is the result of evaluating a command, and the command needs "TOOL"
  definitions provided by bsd.tools.mk.
2007-07-18 18:01:02 +00:00
jlam
83f1c3afae * Add a user-settable variable to tune the default verbosity of the
+INSTALL and +DEINSTALL scripts:

  PKGINSTALL_VERBOSE
	A list of scriptlets that will be verbose and output a message
	noting the actions taken.

	* "all" is a special value that implies all of the other items
	* "fonts" for +FONTS
	* "info-files" for +INFO_FILES

	Default value: "all" for PKG_DEVELOPERs, empty otherwise.

* Be "one-liner brief" when doing the default actions.  For example,
  the info files output now looks like:

	gmake-3.81: registering info file /usr/pkg/info/make.info

  We retain the current verbosity for the CHECK-* actions.
2007-07-12 19:41:46 +00:00
jlam
c616c5fb10 On second thought, maybe the rest of the world's software isn't as
well-audited as NetBSD's /usr/bin/su.  Change the default
SETUID_ROOT_PERMS to 4511 to raise the bar slightly on finding
vulnerabilities in setuid-root binaries.
2007-06-15 22:04:33 +00:00
jlam
ac27702398 Change the default setuid-root permissions from 4711 to 4555. This
strips off the write bit for root and gets rid of the unnecessary lack
of read permissions for "group" and "other".  Inspired by /usr/bin/su
on NetBSD.
2007-06-15 14:46:02 +00:00
jlam
bfa6395385 Document PKG_SYSCONFDIR_PERMS, which has existed for quite some time. 2007-06-15 14:14:36 +00:00
rillig
49052c55cc Added keywords for SPECIAL_PERMS, so it is found by
"bmake help topic=setuid".
2007-03-13 09:43:59 +00:00
joerg
24f2398eb9 ... and quote the $ for subst so that ${RM} ends up in the final file. 2007-01-24 14:33:50 +00:00
joerg
62b0e7af34 *blush* Fix variable substituation to not substitute the same string
twice.
2007-01-24 13:26:26 +00:00
rillig
9802f825b9 Reformatted the documentation of INFO_DIR to make it suitable for "make
help".
2007-01-02 17:15:24 +00:00
joerg
f3ec0636be Add fonts magic for TrueType and Type1 fonts.
XXX Do we want to prefer mkfontscale on other installations as well?
2007-01-02 11:47:26 +00:00
obache
bee48189f3 Relative $infodir is allowed, so if it's relative, add ${PREFIX}. 2006-12-29 07:06:31 +00:00
martti
e2610fb8c8 Remove trailing tabs. 2006-12-15 13:15:06 +00:00
martti
2cc4216d5e Remove trailing spaces. 2006-12-15 12:46:23 +00:00
joerg
8e79aa8c40 Rename _INSTALL_ROOT_USER to REAL_ROOT_USER. Use it as default for
SETUID_ROOT_PERMS.
2006-11-05 15:10:08 +00:00
joerg
7bf4961562 RC scripts should be installed relative to DESTDIR as well. 2006-11-05 14:51:24 +00:00
ben
4c1456124a Linux shadow-utils provides a useradd that fails when creating a home
directory under a base directory hat does not exist.  Add workaround
to ensure that the base directory does exist.  This addresses PR#34779
2006-10-12 23:10:55 +00:00
joerg
7545d135e6 - Compute CHEKCK_FILES filter on the entries requested and keep it
as tight as possible. Files we don't handle shouldn't be skipped.
- fonts.alias is not created automatically, so don't remove it.
- create fonts.encoding with mkfontdir using -e X11_ENCODINGSDIR.
  On platforms not following the X11R6 loayout this might need to
  be overriden.
- Fix type1inst calls.
- Modify packages which installed fonts.alias before to actually
  include it in the PLIST and bump the revisions accordingly.
- Modify xorg-fonts* packages to use FONTS_DIRS.* to build indices
  at run time.

Discussed with wiz and jlam.
2006-09-22 21:53:56 +00:00
jlam
fa2d895a21 Be more conservative and avoid possible shell implementation differences
by not using `...` inside ${...#...}.
2006-07-19 22:26:26 +00:00
jlam
034c5b9566 Add messages noting when the PRE-INSTALL and POST-INSTALL actions are run. 2006-07-19 18:05:35 +00:00
wiz
7288c31942 Fix grammar in messages. From David A. Holland in PR 33975. 2006-07-11 13:28:32 +00:00
jlam
b8d23232b8 Flatten out recursive makes into a single re-invocation of make by
introducing the concept of a "barrier".  We separate the user-invokable
targets into ones that must happen before the barrier, and ones that
must happen after the barrier.  The ones that happen after the barrier
are run in a sub-make process.  In this case, the targets that must
be run after the barrier are from the "wrapper" step and beyond.  We
rewrite the various "flow" targets, e.g. wrapper, configure, build,
etc., so that they of the right form to use the barrier target.

This now completely removes the concept of PKG_PHASE from pkgsrc.  It
is replaced with the concept of "before" and "after" the barrier, and
this state can be checked by testing for the existence of the barrier
cookie file.  Because we've removed most of the recursive makes, there
is now nowhere to hook the PKG_ERROR_HANDLER.* commands, so remove
them for now.

As part of this commit, put back the logic that conditionalized the
sources for the various cookie files.  Because the sources are all
"phony" targets, they were always run, regardless of whether or not
the cookie file already existed.  Now, if a cookie file exists, then
that entire phase associated with that cookie file is skipped.

Lastly, fix a thinko in configure/bsd.configure.mk where setting
NO_CONFIGURE in a package Makefile would manage to skip the "wrapper"
step altogether.  Fix this by correctly noting "wrapper" and not
"patch" as the preceding step to "configure".
2006-07-05 22:21:02 +00:00
jlam
e31200b87c Refactor configure, build, test and wrapper phases out of bsd.pkg.mk
and into their own directories.  Also do some cleanups with build/_build
and pkginstall -- we get rid of _build and simply run pkginstall as
part of the "build" target.

Introduce a new mechanism to handle varying directory depths under
${WRKSRC} in which we find files to override, e.g. configure, config.*,
libtool, etc.  OVERRIDE_DIRDEPTH is a package-settable variable that
specifies how far under ${WRKSRC} the various targets should look,
and it defaults to "2".  We preserve the
meaning of the various *_OVERRIDE variables, so if they are defined,
then their values supersede the OVERRIDE_DIRDEPTH mechanism.

devel/tla will need to specially set OVERRIDE_DIRDEPTH to 3 (see log
for revision 1.1857 for bsd.pkg.mk -- to be done in a separate commit.
2006-07-05 06:09:15 +00:00
jlam
e811379bc2 Pluralize INSTALL_TEMPLATE and DEINSTALL_TEMPLATE variable names as per
the pkglint warning:

    As {INSTALL,DEINSTALL}_TEMPLATE is modified using "+=", its name
    should indicate plural.

This does make the variables a bit more suggestive of the fact that they
hold lists of values.
2006-06-15 22:13:58 +00:00