From a08ec52dbf5b6c3a2d22ae3d425dfcd67de0fe8a Mon Sep 17 00:00:00 2001 From: Uli Schlachter Date: Thu, 3 Nov 2011 08:54:23 +0100 Subject: [PATCH] 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 --- Makefile.in | 12 ++++++------ man/Makefile.in | 2 +- modules/Makefile.in | 8 +++----- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Makefile.in b/Makefile.in index 1171c8f3..3b3078ba 100644 --- a/Makefile.in +++ b/Makefile.in @@ -103,11 +103,11 @@ src/%.o: src/%.cpp Makefile $(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 '{}' \; @@ -119,7 +119,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) diff --git a/man/Makefile.in b/man/Makefile.in index 3f88f05b..145d14f0 100644 --- a/man/Makefile.in +++ b/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: diff --git a/modules/Makefile.in b/modules/Makefile.in index 18490e90..faecfdf1 100644 --- a/modules/Makefile.in +++ b/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 ; \ @@ -116,8 +115,7 @@ clean: rm -rf $(CLEAN) %.o: %.cpp Makefile - @mkdir -p .depend - @mkdir -p extra + @mkdir -p .depend extra $(E) Building $(if $(filter %extra/,$(dir $<)),extra )module $(notdir $(basename $@))... $(Q)$(CXX) $(MODFLAGS) -c -o $@ $< $($(notdir $(basename $@))CXXFLAGS) -MMD -MF .depend/$(notdir $@).dep