Commit Graph

73 Commits

Author SHA1 Message Date
Doug Barton
044823bee6 Simplify handling of MTREEFILE relative to DESTDIR
Make the message about a missing MTREEFILE combined with -U
more informative
2009-12-11 23:03:35 +00:00
Doug Barton
119d24adab 1. Update the message that prints out for -U when the mtree database does
not exist to let the user know that it will be created for the next run.

2. Delete more stuff we're not going to use from the temproot prior to
creating the mtree database to dramatically reduce its size (162K -> 37K).

3. We've been deleting the zero-size files from temproot for a long time
now, so remove the spurious "-size +0" from the find command in the
comparison loop, and remove what is now a really stale comment.
2009-06-09 20:20:08 +00:00
Doug Barton
1b855ebe6c Enhance the safety of the -U option:
1. In several places make sure that the mtree database is not empty using
the -s argument to test instead of -f. (I thought I'd already changed this,
but obviously not.)
2. When deriving the list of changed files use a colon-delimited list.
3. If the list of changed files is empty, unset the variable, and test
for a non-empty CHANGED in diff_loop() before entering that routine.

Enhance the speed of the -U option by using an internal case statement
instead of echoing the variable to an external grep for every file.

Fix indentation on one line.
2009-05-16 22:22:31 +00:00
Doug Barton
7d7a10d261 Add -L to the mtree invocation to chase symbolic links that are present
in "Service jails."

Submitted by:	Jeremie Le Hen <jeremie@le-hen.org>
2009-05-16 21:32:09 +00:00
Doug Barton
86780e2538 Don't tempt svn to expand the example $FreeBSD strings 2009-03-23 14:42:41 +00:00
Doug Barton
eeba625052 Add a new -F option to automatically install files that differ
only by version control Id strings
2009-03-18 21:51:11 +00:00
Doug Barton
e81879a123 1. Clean up usage() output a bit by grouping options that take an argument
2. Fix a comment to refer to the right loop
2009-03-13 08:48:33 +00:00
Doug Barton
3fdabc0de1 When using the -D option:
1. The new mtree file should be created in the "host" system /tmp
2. The existing mtree file in the "host" system should not be deleted

Submitted by:	scf
2009-03-13 07:34:05 +00:00
Doug Barton
e2af94387b Instead of using obj and all targets which are not cross-build aware,
use _obj and everything which are.

Submitted by:	ru
2009-01-04 20:59:23 +00:00
Doug Barton
42a168ce61 Simplify the code a little by moving the working part of
ARCHSTRING into the new MM_MAKE variable.

We only need to check for the presence of the target of $PAGER
if that variable is actually set. [1]

Pointed out by:	Steve Kargl <sgk@troutmask.apl.washington.edu> [1]
2009-01-02 07:25:30 +00:00
Doug Barton
e0e184799c Only check for 'nodev' in fstab if that file exists
Submitted by:	sam
2009-01-02 00:37:59 +00:00
Doug Barton
a740208973 For IGNORE_FILES delete the version in the TEMPROOT, not the base.
Submitted by:	clemens fischer <ino-news@spotteswoode.dnsalias.org>
2009-01-02 00:02:14 +00:00
Doug Barton
e14387c0bf Maintenance and updates
=======================
1. Various improvements to the mtree (-U) feature:
a. Seperate the notion of directory and file (user can override db path)
b. Only check for the existence of the mtree file if -U is set
c. Use mktemp to create the new version of the file
d. More safely install the new file
e. Standardize error messages a bit
2. Remove the last of the MAKEDEV stuff (RIP)

New Features
============
1. Switch to using the top level (e.g., /usr/src) Makefile, and specify
that we should use the *.mk files from the source directory instead of
the installed versions. [1][2] This allows easier cross builds and
simplifies (or in some cases permits) upgrading.
2. Check for the deprecated 'nodev' option in /etc/fstab [3]
3. Add support for the IGNORE_FILES variable [4] and deprecate IGNORE_MOTD
accordingly.
4. Before installing a file check to make sure that the target does not
already exist as a directory [5]
5. Check to be sure that the file installed and error out if not

PR:		bin/96528 [1]
Submitted by:	ru [1]
PR:		bin/129639 [2]
Submitted by:	sam [2]
PR:		bin/122282 [3]
Submitted by:	Eygene Ryabinkin <rea-fbsd@codelabs.ru> [3]
PR:		bin/106642 [4]
Submitted by:	Henrik Brix Andersen <henrik@brixandersen.dk> [4]
PR:		bin/108183 [5]
Submitted by:	Riccardo Torrini <riccardo@torrini.org> [5]
2009-01-01 11:41:13 +00:00
Doug Barton
3c501d0fb6 Revert 184781, 184804, and 184832 (automatic installation of files
that differ only by VCS Id) for the following reasons:
1. It was added without my consent, review, or even a heads up
2. It is something that I've repeatedly said I do not want, and certainly
do not want as the default
3. It is poorly implemented (much too complex, produces false positives
e.g., /etc/mail/helpfile)

Given that this is a situation that comes up very infrequently (usually
only for a major version upgrade) and can usually be handled simply
enough on a one-off basis, I will once again point out that I think
this is a Bad Idea. I would be willing to consider a better implementation
as an option that is off by default.
2009-01-01 10:55:26 +00:00
Maxim Sobolev
335a351231 No need to run rm ${COMPFILE} after mm_install() - mm_install()
does it for us.
2008-11-11 02:13:21 +00:00
Maxim Sobolev
333b8b2fa0 Improve on 184781 - instead of ignoring the file when the only difference
is CVS Id, replace the old one with the new one automatically. While I
don't see much difference, some people think it's somehow better that way.
2008-11-09 23:44:32 +00:00
Maxim Sobolev
ed61c72f45 Ignore files that only differ in CVS Id tag.
MFC after:	2 weeks
2008-11-09 07:58:23 +00:00
Bjoern A. Zeeb
2e598474fa Remove ISDN4BSD (I4B) from HEAD as it is not MPSAFE and
parts relied on the now removed NET_NEEDS_GIANT.
Most of I4B has been disconnected from the build
since July 2007 in HEAD/RELENG_7.

This is what was removed:
- configuration in /etc/isdn
- examples
- man pages
- kernel configuration
- sys/i4b (drivers, layers, include files)
- user space tools
- i4b support from ppp
- further documentation

Discussed with: rwatson, re
2008-05-26 10:40:09 +00:00
Doug Barton
f29fe35ae8 In the following scenario:
1. Start mergemaster
2. Interrupt it
3. < Somehow the temproot directory disappears >
4. mergemaster -r
Many bad things can happen, especially if the -i option is in use.

Therefore, add a check to make sure it still exists before we start
comparing files.

Brought to my attention by:
PR:		bin/40538
Submitted by:	Cyrille Lefevre <cyrille.lefevre@laposte.net>
2007-12-21 19:34:26 +00:00
Gordon Tetlow
55a5ff0140 Add auto upgrade capability to mergemaster.
An mtree description of all non-zero files that make
distribution installs (only size and md5) is built from the
temproot.  When the user completes a mergemaster run, the
mtree description file gets installed into /var/db for
safe-keeping.

When the user then decides to do a subsequent upgrade (with
the -U flag), the existing mtree description from /var/db
is called into service looking for files that are different in
DESTDIR. This is stashed away until a file that would normally
end up prompting the user to look at changes is encountered.
Since there are no user modified changes, the new file is
installed without bothering the user.

Looked at by:	dougb
MFC after:	6 weeks
2006-04-29 18:21:43 +00:00
Robert Watson
344c91d1b2 Add a -A argument to mergemaster to allow explicitly specifying an
architecture to pass through to the underlying makefiles.  This is
quite useful when building on an i386 box to populate an amd64 NFS
root.

Head nod:	dougb
MFC after:	1 week
2006-02-04 18:24:06 +00:00
Doug Barton
1adffac42b Change the default for deleting stale files from yes (which violates
the general principle that mm should do nothing by default) to no.

PR:		bin/85449
Submitted by:	Kevin Oberman <oberman@es.net>
2005-12-21 08:59:22 +00:00
Doug Barton
4c1e476ea1 In the case where /etc/rc.d/ is empty, do not bogusly ask the user if
they want to delete '*'. It turns out that there is one valid case where
this might happen, installing to an empty DESTDIR.

Patch submitted by:	schweikh
2004-03-07 10:10:19 +00:00
Ruslan Ermilov
3a6849a6e8 Set MAKEOBJDIRPREFIX in the environment, like God intended. This
only worked because src/Makefile.inc1 is wrapped by src/Makefile.

Silence from:	dougb
2004-03-06 15:03:21 +00:00
Doug Barton
d71c565b9c mergemaster -p (pre-world) doesn't populate /etc/rc.d, which led to a
false positive for every file according to the new stale rc.d checker.

Friendly reminder by:	dhw
2004-01-04 22:02:04 +00:00
Doug Barton
b256b34ac1 * Update copyright
* Delete a trailing space
* Add a 'stale /etc/rc.d file checker', offer to delete any stale
files for the user.
2004-01-01 23:41:37 +00:00
Doug Barton
27d5ecc317 Use the actual build target (all), since relying on the build as a
side effect of the distribution target was apparently just good luck
all these years.

Submitted by:	ru
2003-08-04 10:23:45 +00:00
Doug Barton
f3fff89357 Preserve directory structure in PRESERVED_FILES_DIR to avoid
filename collisions.

Submitted by:	des
2003-05-03 06:35:19 +00:00
Doug Barton
6203d02c6a rc.sendmail should not have been removed yet.
Don't include it in the rcOG removal prompt.
2003-05-02 11:07:58 +00:00
Doug Barton
1317aed784 * Add a -P (Preserve) option, which saves a copy of files that you replace.
The idea for this option came from Marc Schneiders <marc@schneiders.org>

* I've been meaning to remove the code that checked for the existence of
/etc/sysconfig for a while now, since that file was last seen in 2.2.2.

* Replace the above with a check for elements of the old rc system.
Offer to move these files out of DESTDIR/etc for the user's convenience.
2003-05-02 06:26:23 +00:00
Doug Barton
5750fb86d7 Put back the deletion of TEMPROOT/etc/passwd.
Noticed by: maxim
2003-03-05 12:42:08 +00:00
Doug Barton
40a392599f Better handle the recent (desirable) change to create login.conf.db at
install time, and make sure to catch any future .db files as well.
2003-03-05 08:20:55 +00:00
Doug Barton
1d825c58fb * Update copyright year.
* Give back one line of ws when showing a diff.
  This was requested by several.
* Un-quote DIFF_FLAG, and add DIFF_OPTIONS. This will allow the user to
  do more creative things in a mergemaster rc file. Un-quoting is necessary
  in order to handle things like CVS Id tags that look like shell variables.
* Simplify terminal width determination.

Suggestions related to ignoring the CVS Id's were taken from several, with
dillon and gad providing particularly helpful feedback.
2003-02-05 11:09:21 +00:00
Matthew Dillon
f959d23788 Backout last commit by request. 2003-01-28 18:44:40 +00:00
Matthew Dillon
c3342fe141 Commit simple mergemaster changes to make the UI more deterministic
(far easier to use) by limiting the initial display to the size of the
window.
2003-01-25 19:12:06 +00:00
Poul-Henning Kamp
0398919dc7 Don't use NO_MAKEDEV* option, its the default now. 2002-10-22 15:04:32 +00:00
Doug Barton
0aed4a4c3f Suppress spurious warning messages about rm -rf TEMPROOT failing
before chflags, and exit non-zero if the old TEMPROOT dir
can't be deleted for whatever reason.
2002-08-05 08:47:52 +00:00
Doug Barton
6ba81e778e Fix a couple DESTDIR related problems. Credit for the "Only in" section
goes to James <James_Bond_79@yahoo.com>, and Cyrille Lefevre
<cyrille.lefevre@laposte.net>. The make variables problem was found
by jon.
2002-08-05 01:03:12 +00:00
Doug Barton
3a33dac41f * Handle all flags, not just schg
* Make chflags -R more efficient by deleting everything we can first
2002-06-30 18:47:57 +00:00
Doug Barton
a85eac0492 Add 'chflags -R noschg' to the deletion process for the TEMPROOT
directory so that /var/empty, and any other such items that are
added in the future can be deleted effectively.
2002-06-26 14:14:07 +00:00
Doug Barton
30d6b8e113 Go back to taking the user's umask into account. Thanks to Alfred for
hatching the idea of using dc, and Giorgos (keramida) for incubating it.

This also reverses most of the previous commit which took out or
modified the text about umask stuff.
2002-06-10 07:16:42 +00:00
Doug Barton
d50489bc95 * Use the new stat(1) to get mode information from the files we
are installing.
* Since this means that for now we can't accomodate non-standard
umask's, warn the user accordingly.
* Convert the "press enter to continue" prompt into a function.
2002-06-06 20:38:22 +00:00
Doug Barton
aaa8b7ff8c Actually accept the default argument to SCREEN_WIDTH.
Submitted by:	brian
2002-05-28 07:25:44 +00:00
Doug Barton
b3559845fb * Add some niceties to make the -p option quieter, and better behaved
* Take a simple idea about setting the screen width using stty (for sdiff's
purposes) thoughtfully suggested by Joerg to an absurd conclusion.
2002-05-04 22:45:12 +00:00
Doug Barton
3e9d29b012 Solve the problem of spuriously comparing files that were created
in the ${TEMPROOT}/usr/obj directory by deleting them first.
2002-04-08 10:30:44 +00:00
Doug Barton
13c801713d Improve grep'ing for variables in make.conf and rc.conf*.
Thanks to cjc for the idea.
2002-02-25 04:52:56 +00:00
Doug Barton
d7b94dc447 * Add a feature to do a "pre {build|install}world" check of (so far)
master.passwd, group, and make.conf
* Add a feature to check variables in rc.conf[.local] to their
counterparts in /etc/defaults/rc.conf after a run
* Twiddle whitespace a little
* Change some "[ -f file ] && rm file" to "rm -f file"
2002-02-24 10:22:14 +00:00
Doug Barton
f6694187c2 * Update (c)
* Fix a problem with files that have no CVS $Id's. Thanks to naddy for
spotting this one. It wasn't a _huge_ problem since almost all the files
we install (except motd) have one, but still, it's a bug.
* Add a divider between diff outputs, which is helpful both for logs,
and for giving a good visual clue for diffs that are smaller than
$LINES. Another helpful suggestion from Gary W. Swearingen, swear@blarg.net.
2002-02-12 09:54:56 +00:00
Doug Barton
e4a9231de9 Hopefully squish the problem of mm creating sendmail files in
the source tree once and for all.

Pointed out by: A cast of thousands

Reviewed by:	asmodai
2001-08-07 06:22:12 +00:00
Doug Barton
31e58c1713 Work around the problem in RELENG_4 where the file doesn't actually
exist, and therefore mm_install is returning the "fail" value of
the test instead of the "success" value for install.

This change is a no-op on HEAD, but since the only harm on RELENG_4
ATM is a spurious warning it can follow the usual MFC practice.

Submitted by:	A cast of thousands :-/
2001-06-20 07:15:38 +00:00