Permalink
Browse files

Don't use "mkdir" during install

lahwran just showed up on irc and told us that he installed znc, but znc failed
to find any modules. The reason for this was his umask 077 which means that
"make install" installed stuff so that only root can access it.

The solution is do use "install -d" since that makes sure to ignore the
currently set umask.

However, google finds results which say that "install -d" might mess with stuff
of pre-existing directories when it shouldn't, so we must first test if the
directory already exists before calling install. Obviously, this makes our
Makefile a lot more readable. :-(

I didn't have time to test this properly, so stuff might break.

Signed-off-by: Uli Schlachter <psychon@znc.in>

Conflicts:

	modules/Makefile.in
  • Loading branch information...
1 parent d082c47 commit 094d6f358a9ef0f5cd611c19f9826a1f7ba5b2fc @psychon psychon committed Nov 3, 2011
Showing with 9 additions and 10 deletions.
  1. +6 −6 Makefile.in
  2. +1 −1 man/Makefile.in
  3. +2 −3 modules/Makefile.in
View
12 Makefile.in
@@ -102,11 +102,11 @@ distclean: clean
$(Q)$(CXX) $(CXXFLAGS) -c -o $@ $< -MMD -MF .depend/$@.dep
install: znc $(LIBZNC)
- mkdir -p $(DESTDIR)$(bindir)
- mkdir -p $(DESTDIR)$(includedir)/znc
- mkdir -p $(DESTDIR)$(PKGCONFIGDIR)
- mkdir -p $(DESTDIR)$(MODDIR)
- mkdir -p $(DESTDIR)$(DATADIR)
+ test -d $(DESTDIR)$(bindir) || $(INSTALL) -d $(DESTDIR)$(bindir)
+ test -d $(DESTDIR)$(includedir)/znc || $(INSTALL) -d $(DESTDIR)$(includedir)/znc
+ test -d $(DESTDIR)$(PKGCONFIGDIR) || $(INSTALL) -d $(DESTDIR)$(PKGCONFIGDIR)
+ test -d $(DESTDIR)$(MODDIR) || $(INSTALL) -d $(DESTDIR)$(MODDIR)
+ test -d $(DESTDIR)$(DATADIR) || $(INSTALL) -d $(DESTDIR)$(DATADIR)
cp -R $(srcdir)/webskins $(DESTDIR)$(DATADIR)
find $(DESTDIR)$(DATADIR)/webskins -type d -exec chmod 0755 '{}' \;
find $(DESTDIR)$(DATADIR)/webskins -type f -exec chmod 0644 '{}' \;
@@ -118,7 +118,7 @@ install: znc $(LIBZNC)
$(INSTALL_DATA) znc.pc $(DESTDIR)$(PKGCONFIGDIR)
@$(MAKE) -C modules install DESTDIR=$(DESTDIR);
if test -n "$(LIBZNC)"; then \
- mkdir -p $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \
+ test -d $(DESTDIR)$(LIBZNCDIR) || $(INSTALL) -d $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \
$(INSTALL_PROGRAM) $(LIBZNC) $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \
fi
@$(MAKE) -C man install DESTDIR=$(DESTDIR)
View
2 man/Makefile.in
@@ -34,7 +34,7 @@ clean:
-rm -f $(MAN1)
install: $(MAN1)
- mkdir -p $(DESTDIR)$(mandir)/man1
+ test -d $(DESTDIR)$(mandir)/man1 || $(INSTALL) -d $(DESTDIR)$(mandir)/man1
$(INSTALL_DATA) $(MAN1) $(DESTDIR)$(mandir)/man1
uninstall:
View
5 modules/Makefile.in
@@ -101,10 +101,9 @@ install: all install_datadir
install_datadir:
rm -rf $(DESTDIR)$(DATADIR)/modules
- mkdir -p $(DESTDIR)$(MODDIR)
- mkdir -p $(DESTDIR)$(DATADIR)/modules
+ test -d $(DESTDIR)$(MODDIR) || $(INSTALL) -d $(DESTDIR)$(MODDIR)
+ test -d $(DESTDIR)$(DATADIR)/modules || $(INSTALL) -d $(DESTDIR)$(DATADIR)/modules
rm -rf $(DESTDIR)$(MODDIR)/*.so
- mkdir -p $(DESTDIR)$(DATADIR)/modules
cp -R $(srcdir)/data/* $(DESTDIR)$(DATADIR)/modules
if test "@EXTRA@" = "yes" ; then \
cp -R $(srcdir)/extra/data/* $(DESTDIR)$(DATADIR)/modules ; \

0 comments on commit 094d6f3

Please sign in to comment.