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>
  • Loading branch information...
1 parent 73b980b commit a08ec52dbf5b6c3a2d22ae3d425dfcd67de0fe8a @psychon psychon committed Nov 3, 2011
Showing with 10 additions and 12 deletions.
  1. +6 −6 Makefile.in
  2. +1 −1 man/Makefile.in
  3. +3 −5 modules/Makefile.in
View
12 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)
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
8 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

0 comments on commit a08ec52

Please sign in to comment.