Commit Graph

129 Commits

Author SHA1 Message Date
Doug Barton
c9bb666937 Make it more clear in the docs that -a is not compatible with -iFU,
and enforce this in the code. Apparently a lot of users mistakenly
combine -a with these flags and are then mystified that no changes
were made.

While I'm here, fix a trailing space in mergemaster.8
2010-03-14 05:22:46 +00:00
Doug Barton
a68c7fa928 Make -U once again honor -D after my change to consolidate setting
of MTREEDB with DESTDIR.

PR:		bin/143089
Submitted by:	Anton Yuzhaninov <citrin@citrin.ru>
2010-01-22 17:17:47 +00:00
Ruslan Ermilov
aa4a335bae Use the newly brought %U macro. 2010-01-15 16:01:22 +00:00
Doug Barton
bc1b4f78f9 Oops, deleted one line too many. Add back the null case for IGNORE_MOTD 2010-01-15 04:09:22 +00:00
Doug Barton
705b2d5389 Now that we've officially arrived at FreeBSD 9, remove the IGNORE_MOTD
compat shim as advertised. This change should not be MFC'ed.
2010-01-15 03:56:48 +00:00
Doug Barton
f94a6780d9 Update copyright date
Update delete_temproot() to include the error message if it fails,
and clean up the places where it's called.

If there are no files left in temproot when the comparison is done
delete it without prompting. This should make "automated" runs of
mergemaster without -a a little easier.

Document the new behavior in the man page.
2010-01-08 00:05:10 +00:00
Doug Barton
15768c780a If we are using -p it does not make any sense to even create the
MTREENEW file since it will never be used.
2009-12-31 04:07:13 +00:00
Doug Barton
3dbee1749a It's not necessary to include both Op and Fl for command line options
included in the text, so use only the latter.

Clarify that using -U doesn't make sense in combination with -a
2009-12-30 23:26:29 +00:00
Doug Barton
6fb3661e8f Document the DELETE_STALE_RC_FILES option introduced in r201291. This is
an "rc file only" option by design.

While I'm here, update the comments in the example rc file to indicate
which command line options they relate to, and correct the defaults
for a couple of options.
2009-12-30 23:16:14 +00:00
Doug Barton
8d54ee3c0b Add some patches contributed by jhb:
1. Don't prompt the user for "-U but no db" error if we're using -a
2. Add an option to delete stale rc.d files automatically if the user
has DELETE_STALE_RC_FILES in their rc file. Lack of command line option
for this is not an oversight.
3. Add []'s around the terminal $ for the $FreeBSD$ test for -F

For one bug raised by jhb I did a more thorough solution:
There were a lot of things that "snuck in" between the end of the test
for -r and the start of the comparison. One of them is the creation of
the mtree db, as pointed out by jhb. Fix this problem more thoroughly
by moving the end of the test down to where it should/used to be, right
before the comparison. As a result, indent the interloping code to match.
2009-12-30 23:14:03 +00:00
Doug Barton
d90331f910 Fix a problem with how mergemaster handles the hard links for /.cshrc
and /.profile. The problem is that install(1) will unlink the old file
before it installs the new one, which means that in the best case we
have to compare the changes for the old file twice.

So, change the logic to first test to see if the link exists, then
install the file. Then if the link was there and we're using -i, just
create the link in /root and be done with it. Otherwise display the
message to the user and give them the option.

Because we are now sorting things before doing the comparison we can
know conclusively that the files in / should be the sources, and the
files in /root will be the targets, so adjust the paths accordingly.

While I'm here, split a too-long error message into two lines and
just return at the end of handling these files instead of setting
the variable that says "do nothing" and then returning at the end
of the function anyway.
2009-12-19 05:20:26 +00:00
Doug Barton
98e47f9dfe Fix an indentation issue, no functional changes 2009-12-19 01:32:34 +00:00
Doug Barton
bdeda2817b In the places where find is used that the user may see the results,
first pipe it to sort so that order of processing will be deterministic
and like things will be grouped together.
2009-12-19 01:30:45 +00:00
Doug Barton
1b2aeedc64 Over time things that used to be files/directories/links can change
to something else. So add code to detect when things don't match and
give the user choices about how to fix it.

If we're using -P and something in the above check needs to be moved
we need to have the directory there for it, so create it at the
beginning and delete empty versions of it at the end.

The case where something used to be a file or link and now is supposed
to be a directory (e.g., /etc/security) is especially dangerous, so
make failure to install a necessary directory in $DESTDIR a fatal error.
2009-12-12 02:19:41 +00:00
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
2c6cc4a433 1. Update for new -F option from r189992.
2. Sort the command line options to match how they are displayed
in usage()
3. Change references to cvs to the more generic "version control system"
and remove the .Xr for cvs
4. Consistently use ".Op Fl" to refer to command line options in the text.
5. Only use the apostrophe to indicate possession.
6. Add FREEBSD_ID (-F) to the list of variables in the example rc,
and change the DIFF_OPTIONS example to -Bb since -F now covers it.
2009-03-18 21:55:08 +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
74983dbff9 Add a note to the -m option indicating that you should now specify src/
instead of src/etc.
2009-01-02 22:24:12 +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
25e3d9a0e5 General Improvements
====================
1. List the command line options in a more standard way
2. Improve the explanations of some of the arguments (-A, -D)
3. Add ARCHSTRING and MTREEDB to the example rc file
4. Re-sort some of the examples according to the existing distinction
of "has a command line version" vs. "does not have a command line version"

Document changes for r186678
===========================
1. /usr/src/etc -> /usr/src where needed [1]
2. Add IGNORE_FILES to the example rc [2] (and remove IGNORE_MOTD)
3. Update the EXIT STATUS section for [3] and [4]

Update Copyright and .Dd accordingly

PR:		bin/96528 [1]
Submitted by:	ru [1]
PR:		bin/106642 [2]
Submitted by:	Henrik Brix Andersen <henrik@brixandersen.dk>
PR:		bin/122282 [3]
Submitted by:	Eygene Ryabinkin <rea-fbsd@codelabs.ru> [3]
PR:		bin/108183 [4]
Submitted by:	Riccardo Torrini <riccardo@torrini.org> [4]
2009-01-01 12:09:57 +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
Doug Barton
b4b04f194f Document the AUTO_UPGRADE (-U) knob for .mergemasterrc
Submitted by:	mezz
No Cookie For:	gordon  :)
2008-06-11 18:54:06 +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
92d4750b38 Add missed SYNOPSIS flag for auto upgrade.
Submitted by:	marck at rinet dot ru
2006-04-30 22:09:47 +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
Giorgos Keramidas
0e0fe87a70 Point to the right path under www.freebsd.org/doc for the Handbook
section on "make world".  The old link still works fine, but all the
hyperlinks of the referenced document are broken; the same links
work find if /doc/en_US.ISO8859-1 is used instead of plain /doc to
reach the online Handbook copy.
2005-07-20 12:50:49 +00:00
Ruslan Ermilov
36a142c455 Expand contractions. 2005-02-13 23:45:54 +00:00
Ruslan Ermilov
59a3c79da6 Sort sections. 2005-01-18 20:02:45 +00:00
Ruslan Ermilov
a866e17077 Added the EXIT STATUS section where appropriate. 2005-01-17 07:44:44 +00:00
Ruslan Ermilov
07bfccd71e Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +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