Commit graph

75 commits

Author SHA1 Message Date
khorben
727ba708e4 Introduce a new SYSCONFBASE variable (defaults to /etc)
This is part 1 to support additional platforms with the RC scripts provided in
pkgsrc, in privileged as well as in unprivileged mode, including on NetBSD
(with part 2 in pkgtools/rc.subr).

This variable is meant to point to the configuration directory of the base
system (as opposed to pkgsrc's own prefix) when it should be used by pkgsrc in
special cases (e.g. installing RC scripts), or to point to the existing
PKG_SYSCONFBASE directory otherwise (e.g. for any unprivileged bootstrap).
This teaches pkgsrc where the RC scripts should be installed, and more
importantly, where the local copy of rc.subr can be expected. Part 3 will
progressively update each and every RC script to substitute this path as
expected.

No functional changes are intended in privileged mode without a bootstrap. The
only variable affected by this change directly is RCD_SCRIPTS_DIR, which
currently remains with the same default of /etc/rc.d, and can be overridden as
before.

When bootstrapping, SYSCONFBASE also remains with the existing default when no
prefix is set or is "/usr/pkg" or "/usr"; it is set to $prefix/etc otherwise. It
can be specified specifically with --sysconfbase if necessary.

Existing installations or bootstraps are not affected, as this change needs
setting SYSCONFBASE in the corresponding $sysconfdir/mk.conf to have an impact.

Tested in privileged and unprivileged modes on NetBSD/amd64, and unprivileged
mode on Darwin/amd64; submitted for review on tech-pkg@.
2021-05-30 23:41:05 +00:00
rillig
3e147f8edf mk/pkginstall: fix output of show-all-pkginstall 2020-05-09 16:48:57 +00:00
rillig
538c9b877c mk/pkginstall/files: allow spaces in configuration file names
Fixes PR pkg/42191.
2020-02-11 01:59:30 +00:00
rillig
858c6cfd69 mk/misc: make configuration for show-all targets more configurable
Up to now, there was a central list of variable name patterns that
defined whether a variable was printed as a sorted list, as a list or as
a single value.

Now each variable group decides on its own which of the variables are
printed in which way, using the usual glob patterns. This is more
flexible since different files sometimes differ in their naming
conventions.

Two variable groups are added: license (for everything related to
LICENSE) and go (for lang/go).
2018-11-30 18:38:19 +00:00
prlw1
5c827f6f0e Essentially from OBATA Akio in private mail, June 2015:
Introduce Icon Theme cache handling framework

Icon Theme cache files are used by GTK+ and maintained with the
gtk-update-icon-cache tool.  Each Icon Theme package duplicates
its own maintainance scripts: only the specified icon theme directory
differs.  With this framework, if packages have ICON_THEMES=yes,
associated icon themes will be detected and their cache files will
be maintained automatically.

Change cache handling behaviour as follows:
* Icon theme caches will be updated if either gtk2+ or gtk3+
  gtk-update-icon-cache tool is available.
* With installation of gtk2+ package, not only hicolor icon theme but
  also any other icon theme cache files will be updated.
* Prevent removal of icon caches at deinstall, gtk3+ may be installed and
  using them.
* Ditto with gtk3+, gtk2+ may not be installed now, so caches must be
  maintained by gtk3+.
2017-06-14 16:23:09 +00:00
jlam
b47434aa08 SHLIB_TYPE definition has moved to bsd.prefs.mk. 2017-06-01 13:29:18 +00:00
jaapb
5b9387d7eb Two fixes to the ocaml-findlib-register pkginstall fragment:
- set a sensible default for OCAML_FINDLIB_DIRS (and factorise out
  OCAML_SITELIBDIR)
- make it possible not to register any directory by setting
  OCAML_FINDLIB_REGISTER to no
2016-06-17 08:53:42 +00:00
jaapb
02746ce69d Added a ${RUN} to the UNPACK line for the ocaml-findlib-register script 2016-04-12 16:01:06 +00:00
jaapb
e712e0e4d8 Added a pkginstall fragment that takes over from ocaml-findlib-register (a
script included in the ocaml-findlib package) and removes the need to call
said script explicitly from PLIST.

Packages that use findlib will now automatically add directories that are
in OCAML_FINDLIB_DIRS (set by default to $(OCAML_SITELIBDIR)/${PKGBASE})
to the file ${PREFIX}/lib/ocaml/ld.conf. This behaviour can be disabled by
undefining OCAML_FINDLIB_REGISTER.
2016-04-12 15:52:29 +00:00
joerg
639d5b402f Remove support for USE_DESTDIR=no. 2016-04-10 15:58:02 +00:00
joerg
738c342050 Adjust USRGROUP_PHASE handling for USE_DESTDIR=no removal. Update
documentation to reflect the pre-install option.
2016-04-10 15:33:42 +00:00
leot
aff1d75674 Fix a typo in a comment. 2015-11-08 03:21:46 +00:00
dholland
78c137ddf2 Construct rc.d scripts in a subdirectory of WRKDIR (.rc.d/) instead of
right in it, to avoid name conflicts. PR 39271.
2015-08-10 05:41:10 +00:00
wiz
35c16540aa Fix typo in comment. 2015-02-24 09:46:09 +00:00
wiz
627d407a75 Remove pkg_views support, second part: infrastructure. 2014-12-30 15:13:19 +00:00
joerg
a96412f45e Retire PKGINSTALL_VERBOSE, split it into independent variables
FONTS_VERBOSE and INFO_FILES_VERBOSE.
2014-10-12 23:44:32 +00:00
joerg
c6e1b83d1b Simplify PKG_DEVELOPER checks. 2014-10-12 23:39:17 +00:00
jperkin
b3106a0b77 Add initial support for alternative init systems.
This commit introduces an INIT_SYSTEM variable which will determine the
type of init system to be used on the target system, supporting "rc.d"
at this time.

The pkginstall infrastructure is changed to only install RCD_SCRIPTS if
INIT_SYSTEM is set to "rc.d", and PLIST entries for rc.d scripts are
now handled automatically based on RCD_SCRIPTS.
2014-03-11 13:45:07 +00:00
wiz
304b30e8af Add GAMES_GROUP GAMES_USER GAMEDATAMODE GAMEDIRMODE GAMEMODE to BUILD_DEFS. 2012-07-09 21:56:38 +00:00
wiz
934f098ead Move USE_GAMESGROUP and SETGIDGAME defaults out of mk.conf, where they
don't belong (package-setable, not user-setable).
2012-07-09 15:44:06 +00:00
abs
fc3bada41a Introduce PKGSRC_SETENV, defaulting to SETENV. Can be set to ${SETENV} -i
to santise environment
2011-09-08 20:17:15 +00:00
dholland
dfc53f692a Revert unintended hunk in previous commit. (caught by wiz, thanks) 2011-04-30 23:58:29 +00:00
dholland
f7498956be typo in comment 2011-04-30 21:58:37 +00:00
bad
89f715edf7 I'm fed up with having to waste time because PKG_DEVELOPER is "special" and
can't be disabled by setting it to "no" like the other variables.
Besides, flavor/pkg/metadata.mk has been expecting for a long time that "no"
is a valid value.

Make PKG_DEVELOPER DWIM.
2010-08-24 19:08:28 +00:00
dholland
4424b4c08b Begin cleanup of setgid game infrastructure.
* Introduce USE_GAMESGROUP, which causes the games user and group to
be made available.

 * Retain SETGIDGAME as an alias for USE_GAMESGROUP. Describe it as
deprecated.

 * Always define GAMES_USER, GAMES_GROUP, GAMEMODE, GAMEDIRMODE, and
GAMEDATAMODE, regardless of whether USE_GAMESGROUP is turned on or not.

 * Define these variables in defaults/mk.conf instead of separately in
every platform/*.mk file. The definitions used to be the same for each
of these platforms anyway, except for some where they were randomly
missing or commented out for no clear reason, leading to broken game
packages.

 * Handle all these variables properly when unprivileged.

 * Update the comments/documentation for these variables.

 * Describe GAMEOWN and GAMEGRP as deprecated. These need to be
retained as aliases for GAMES_USER and GAMES_GROUP respectively for
supporting packages that use bsd.*.mk but should otherwise not be
used.

 * Add GAMEDATA_PERMS and GAMEDIR_PERMS using GAMEDATAMODE and
GAMEDIRMODE respectively.

 * Fix a bug I noticed that was improperly mixing the "games" group
and "games" user.

Things this does *not* do:

 - get rid of GAMES_USER, for which there should ultimately be no need.

 - move the declaration/documentation/default value of USE_GAMESGROUP
to a suitable place. (It is currently where SETGIDGAME was, which is
suboptimal.)

 - touch any of the games, all of which need updating with at least
s/SETGIDGAME/USE_GAMESGROUP/ and probably more.

 - update the guide to explain how to handle games properly.

Also, it would be nice if using GAMES_GROUP without setting
USE_GAMESGROUP=yes caused an error but as far as I know there isn't
any particularly good way to arrange this right now.

Note that these changes may alter the build/install behavior of broken
game packages, e.g. some may silently become setgid when they weren't
before or things like that. If you run into any of this file a PR.

While one might arguably bump the PKGREVISION of all games or other
packages using any of these variables as a precaution, that seems like
a bad idea. Instead, I think I will be bumping each game once it
itself has been fixed up to do everything the right way.
2010-07-08 04:57:36 +00:00
joerg
66cab93c7e Allow pre-install for USERGROUP_PHASE. This is intended for
PKG_DESTDIR_SUPPORT=destdir packages, that don't otherwise need the
user/group during build.

Export USERGROUP_PHASE for the sake of pbulk.
2010-06-15 19:23:55 +00:00
jmmv
356178f94b Previous change breaks platforms with need_ksh. Reported by joerg@.
Let's revert it for now and think about a way to proceed with this idea
later.
2010-05-07 14:29:36 +00:00
jmmv
f7027e7ba1 Use shells(8) from sysutils/etcutils to update /etc/shells instead of
hardcoding the logic into the pkginstall scripts.  As discussed in
tech-pkg@.

Note: The current pkginstall/shell code is overly complicated.  It looks
like it can be simplified but, at the moment, given that I do not understand
the need for such complexity, I'm just doing this tiny change.

Note 2: The ability to update /etc/services, which was also discussed, will
come later once this change proves to be stable.
2010-05-07 12:00:36 +00:00
rillig
c9b5181017 Clarified the documentation. 2010-03-10 15:01:42 +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
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
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