better error messages are far better. OK phessler@
On 2013 Feb 14 (Thu) at 20:38:02 +0000 (+0000), Miod Vallat wrote: :This is what happens when install(1) is used to install files on a :read-only filesystem: : :# mount -u -o ro /usr :# cd /usr/src :# make build :cd /usr/src/share/mk && exec make install :install -c -o root -g bin -m 444 bsd.README bsd.dep.mk bsd.lib.mk bsd.man.mk bsd.nls.mk bsd.obj.mk bsd.own.mk bsd.port.arch.mk bsd.port.mk bsd.port.subdir.mk bsd.prog.mk bsd.regress.mk bsd.subdir.mk bsd.sys.mk sys.mk bsd.lkm.mk bsd.xconf.mk bsd.xorg.mk /usr/share/mk :install: /usr/share/mk/bsd.README: File exists :*** Error 71 in share/mk (Makefile:13 'install') :*** Error 1 in /usr/src (Makefile:78 'build') :# : :Not really helpful. With the diff below, I will now get: : :install: /usr/share/mk/bsd.README: Read-only file system : :which helps figuring out what is wrong. : :Miod : :Index: xinstall.c :=================================================================== :RCS file: /cvs/src/usr.bin/xinstall/xinstall.c,v :retrieving revision 1.52 :diff -u -p -r1.52 xinstall.c :--- xinstall.c 14 Sep 2012 00:00:29 -0000 1.52 :+++ xinstall.c 14 Feb 2013 20:32:21 -0000 :@@ -639,8 +639,10 @@ create_newfile(char *path, struct stat * : /* It is ok for the target file not to exist. */ : if (rename(path, backup) < 0 && errno != ENOENT) : err(EX_OSERR, "rename: %s to %s (errno %d)", path, backup, errno); :- } else :- (void)unlink(path); :+ } else { :+ if (unlink(path) < 0 && errno != ENOENT) :+ err(EX_OSERR, "%s", path); :+ } : : return(open(path, O_CREAT | O_RDWR | O_EXCL, S_IRUSR | S_IWUSR)); : } : -- To err is human, to forgive is Not Company Policy.