Moved raddb/ to use boilermake
authorAlan T. DeKok <aland@freeradius.org>
Tue, 26 Feb 2013 19:58:10 +0000 (14:58 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 26 Feb 2013 20:00:42 +0000 (15:00 -0500)
Makefile
main.mk
raddb/Makefile [deleted file]
raddb/all.mk [new file with mode: 0644]
src/modules/rlm_perl/all.mk.in
src/modules/rlm_python/all.mk.in
src/modules/rlm_ruby/all.mk.in

index 028ee0b..11c6a75 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -21,13 +21,9 @@ export DESTDIR := $(R)
 # And over-ride all of the other magic.
 include scripts/boiler.mk
 
-# These are not yet converted to the new system
-SUBDIRS                = $(wildcard raddb)
-
 .PHONY: test
 test:
        @$(MAKE) -C raddb/certs
-       @$(MAKE) -C src/tests tests
 
 #
 # The $(R) is a magic variable not defined anywhere in this source.
@@ -56,10 +52,6 @@ install.bindir:
 install.sbindir:
        @[ -d $(R)$(sbindir) ] || $(INSTALL) -d -m 755 $(R)$(sbindir)
 
-.PHONY: install.raddbdir
-install.raddbdir:
-       @[ -d $(R)$(raddbdir) ] || $(INSTALL) -d -m 755 $(R)$(raddbdir)
-
 .PHONY: install.dirs
 install.dirs: install.bindir install.sbindir
        @$(INSTALL) -d -m 755   $(R)$(mandir)
@@ -85,9 +77,6 @@ $(R)$(mandir)/%: man/%
 
 install: install.dirs install.share install.man
 
-install:
-       @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common
-
 ifneq ($(RADMIN),)
 ifneq ($(RGROUP),)
 .PHONY: install-chown
@@ -109,20 +98,6 @@ install-chown:
 endif
 endif
 
-.PHONY: common $(SUBDIRS)
-
-#
-#  We need to convert these directories to boilermake!
-#
-all:
-       @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common
-
-common: $(SUBDIRS)
-
-$(SUBDIRS):
-       @echo "Making $(WHAT_TO_MAKE) in $@..."
-       @$(MAKE) $(MFLAGS) -C $@ $(WHAT_TO_MAKE)
-
 distclean: clean
        @rm -f config.cache config.log config.status libtool \
                src/include/radpaths.h src/include/stamp-h \
diff --git a/main.mk b/main.mk
index 666d5b9..69e0f6b 100644 (file)
--- a/main.mk
+++ b/main.mk
@@ -1 +1 @@
-SUBMAKEFILES := src/all.mk scripts/all.mk doc/all.mk
+SUBMAKEFILES := src/all.mk scripts/all.mk doc/all.mk raddb/all.mk
diff --git a/raddb/Makefile b/raddb/Makefile
deleted file mode 100644 (file)
index ab8b083..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-#
-# Makefile
-#
-# Version:      $Id$
-#
-
-include ../Make.inc
-
-#
-#  The list of files to install.
-#
-FILES = acct_users clients.conf dictionary templates.conf \
-       experimental.conf hints huntgroups \
-       preproxy_users proxy.conf radiusd.conf trigger.conf \
-       users README.rst
-
-DEFAULT_SITES = default inner-tunnel
-
-DEFAULT_MODULES = always attr_filter attr_rewrite cache_eap chap checkval \
-               counter cui detail detail.log digest dhcp dynamic_clients eap \
-               echo exec expiration expr files inner-eap linelog logintime \
-               mschap ntlm_auth pap passwd preprocess radutmp realm \
-               replicate soh sradutmp unix utf8 wimax
-
-#
-#      This target is here for local debugging
-#
-all: sites-enabled mods-enabled
-
-.PHONY: sites-enabled
-sites-enabled:
-       @if [ ! -d sites-enabled ]; then \
-               mkdir sites-enabled; \
-       fi
-       @cd sites-enabled/; \
-        for x in $(DEFAULT_SITES); do \
-           if [ ! -f $$x ]; then \
-               ln -s ../sites-available/$$x; \
-           fi; \
-       done
-
-.PHONY: mods-enabled
-mods-enabled:
-       @if [ ! -d mods-enabled ]; then \
-               mkdir mods-enabled; \
-       fi
-       @cd mods-enabled/; \
-        for x in $(DEFAULT_MODULES); do \
-           if [ ! -f $$x ]; then \
-               ln -s ../mods-available/$$x; \
-           fi; \
-       done
-
-install:
-       $(INSTALL) -d -m 750    $(R)$(raddbdir)
-       $(INSTALL) -d -m 750    $(R)$(raddbdir)/sites-available
-       $(INSTALL) -d -m 750    $(R)$(raddbdir)/sites-enabled
-       $(INSTALL) -d -m 750    $(R)$(raddbdir)/mods-available
-       $(INSTALL) -d -m 750    $(R)$(raddbdir)/mods-enabled
-       $(INSTALL) -d -m 750    $(R)$(raddbdir)/policy.d
-       $(INSTALL) -d -m 750    $(R)$(raddbdir)/filter
-       @echo "Creating/updating files in $(R)$(raddbdir)"; \
-       for i in $(FILES) `find sites-available/ mods-available/ policy.d/ filter/ -type f -print | sed 's/.*~//;s/.*#.*//' `; do \
-               [ ! -f $(R)$(raddbdir)/$$i ] && $(INSTALL) -m 640 $$i $(R)$(raddbdir)/$$i; \
-               if [ "`find $$i -newer $(R)$(raddbdir)/$$i`" ]; then \
-                       echo "** $(R)$(raddbdir)/$$i"; \
-                       nt=1; \
-               fi; \
-       done; \
-       if [ "$$nt" ]; then \
-               echo "**";\
-               echo "** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **";\
-               echo "** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **";\
-               echo "**";\
-               echo "** The sample configuration files in `pwd`";\
-               echo "** are newer than those in $(R)$(raddbdir)";\
-               echo "**";\
-               echo "** Please investigate and manually copy (if appropriate) the files listed above.";\
-               echo "**";\
-               echo "** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **";\
-               echo "** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **";\
-       fi
-       chmod 640 $(R)$(raddbdir)/clients.conf
-       if [ ! -d $(R)$(raddbdir)/certs ]; then \
-               $(INSTALL) -d -m 750    $(R)$(raddbdir)/certs; \
-               $(INSTALL) -m 750 certs/bootstrap $(R)$(raddbdir)/certs; \
-               for i in Makefile README xpextensions ca.cnf server.cnf client.cnf; do \
-                       $(INSTALL) -m 640 certs/$$i $(R)$(raddbdir)/certs; \
-               done; \
-               $(MAKE) -C $(R)$(raddbdir)/certs; \
-       fi
-       if [ ! -d $(R)$(raddbdir)/sql ]; then \
-               find sql -name CVS -prune -o -print | \
-                 while read file; do \
-                   if [ -d "$$file" ]; then \
-                     $(INSTALL) -d -m 750 "$(R)$(raddbdir)/$$file"; \
-                   else \
-                     $(INSTALL) -m 640 "$$file" "$(R)$(raddbdir)/$$file"; \
-                   fi; \
-                 done; \
-       fi
-       @cd $(R)$(raddbdir)/sites-enabled/; \
-        for x in $(DEFAULT_SITES); do \
-           if [ ! -f $$x ]; then \
-               ln -s ../sites-available/$$x; \
-           fi; \
-       done
-       @cd $(R)$(raddbdir)/mods-enabled/; \
-        for x in $(DEFAULT_MODULES); do \
-           if [ ! -f $$x ]; then \
-               ln -s ../mods-available/$$x; \
-           fi; \
-       done
-
-clean:
-       @rm -rf *~ $(addprefix sites-enabled/,$(DEFAULT_SITES)) \
-               $(addprefix mods-enabled/,$(DEFAULT_MODULES))
-
-triggers:
-       @grep exec_trigger `find ../src -name "*.c" -print` | grep '"' | sed -e 's/.*,//' -e 's/ *"//' -e 's/");.*//'
diff --git a/raddb/all.mk b/raddb/all.mk
new file mode 100644 (file)
index 0000000..7d5384e
--- /dev/null
@@ -0,0 +1,107 @@
+#
+#  The list of files to install.
+#
+LOCAL_FILES := acct_users clients.conf dictionary templates.conf \
+               experimental.conf hints huntgroups \
+               preproxy_users proxy.conf radiusd.conf trigger.conf \
+               users README.rst
+
+DEFAULT_SITES := default inner-tunnel
+LOCAL_SITES   := $(addprefix raddb/sites-enabled/,$(DEFAULT_SITES))
+
+DEFAULT_MODULES := always attr_filter attr_rewrite cache_eap chap checkval \
+               counter cui detail detail.log digest dhcp dynamic_clients eap \
+               echo exec expiration expr files inner-eap linelog logintime \
+               mschap ntlm_auth pap passwd preprocess radutmp realm \
+               replicate soh sradutmp unix utf8 wimax
+
+LOCAL_MODULES   := $(addprefix raddb/mods-enabled/,$(DEFAULT_MODULES))
+
+LOCAL_CERT_FILES := Makefile bootstrap README xpextensions \
+                   ca.cnf server.cnf client.cnf
+
+RADDB_DIRS := sites-available sites-enabled mods-available mods-enabled \
+               filter policy.d certs
+
+# Installed directories
+INSTALL_RADDB_DIRS := $(R)$(raddbdir)/ $(addprefix $(R)$(raddbdir)/, \
+                       $(RADDB_DIRS) $(shell find raddb/sql -type d -print))
+
+# Grab files from the various subdirectories
+INSTALL_FILES := $(wildcard raddb/sites-available/* raddb/mods-available/*) \
+                $(LOCAL_SITES) $(LOCAL_MODULES) \
+                $(addprefix raddb/,$(LOCAL_FILES)) \
+                $(addprefix raddb/certs/,$(LOCAL_CERT_FILES)) \
+                $(wildcard raddb/policy.d/* raddb/filter/*) \
+                $(shell find raddb/sql -type f -print)
+
+
+# Re-write local files to installed files, filtering out editor backups
+INSTALL_RADDB := $(patsubst raddb/%,$(R)$(raddbdir)/%,\
+                       $(filter-out %~,$(INSTALL_FILES)))
+
+all: $(LOCAL_SITES) $(LOCAL_MODULES)
+
+clean: clean.raddb
+
+install: install.raddb
+
+# Local build rules
+raddb/sites-enabled mods-enabled:
+       @echo MKDIR $@
+       @mkdir -p $@
+
+# Set up the default modules for running in-source builds
+raddb/mods-enabled/%: raddb/mods-available/% | raddb/mods-enabled
+       @echo LN-S $@
+       @cd $(dir $@) && ln -sf ../mods-available/$(notdir $@)
+
+# Set up the default sites for running in-source builds
+raddb/sites-enabled/%: raddb/sites-available/% | raddb/sites-enabled
+       @echo LN-S $@
+       @cd $(dir $@) && ln -sf ../sites-available/$(notdir $@)
+
+# Installation rules for directories.  Note permissions are 750!
+$(INSTALL_RADDB_DIRS):
+       @echo INSTALL $(patsubst $(R)$(raddbdir)%,raddb%,$@)
+       @$(INSTALL) -d -m 750 $@
+
+#  The installed files have ORDER dependencies.  This means that they
+#  will be installed if the target doesn't exist.  And they won't be
+#  installed if the target already exists, even if it is out of date.
+#
+#  This dependency lets us install the server on top of an existing
+#  system, hopefully without breaking anything.
+
+# Installation rules for mods-enabled.  Note ORDER dependencies
+$(R)$(raddbdir)/mods-enabled/%: | $(R)$(raddbdir)/mods-available/%
+       @cd $(dir $@) && ln -sf ../mods-available/$(notdir $@)
+
+# Installation rules for sites-enabled.  Note ORDER dependencies
+$(R)$(raddbdir)/sites-enabled/%: | $(R)$(raddbdir)/sites-available/%
+       @cd $(dir $@) && ln -sf ../mods-available/$(notdir $@)
+
+# Installation rules for plain modules.
+$(R)$(raddbdir)/%: | raddb/%
+       @echo INSTALL $(patsubst $(R)$(raddbdir)/%,raddb/%,$@)
+       @$(INSTALL) -m 640 $(patsubst $(R)$(raddbdir)/%,raddb/%,$@) $@
+
+# Bootstrap is special
+$(R)$(raddbdir)/certs/bootstrap: | raddb/certs/bootstrap
+       @echo INSTALL $(patsubst $(R)$(raddbdir)/%,raddb/%,$@)
+       @$(INSTALL) -m 750 $(patsubst $(R)$(raddbdir)/%,raddb/%,$@) $@
+
+#  List directories before the file targets.
+#  It's not clear why GNU Make doesn't deal well with this.
+install.raddb: $(INSTALL_RADDB_DIRS) $(INSTALL_RADDB)
+
+clean.raddb:
+       @rm -f *~ $(addprefix raddb/sites-enabled/,$(DEFAULT_SITES)) \
+               $(addprefix raddb/mods-enabled/,$(DEFAULT_MODULES))
+
+#
+#  A handy target to find out which triggers are where.
+#  Should only be run by SNMP developers.
+#
+triggers:
+       @grep exec_trigger `find src -name "*.c" -print` | grep '"' | sed -e 's/.*,//' -e 's/ *"//' -e 's/");.*//'
index 874e67c..1089dd1 100644 (file)
@@ -9,8 +9,8 @@ SOURCES         := rlm_perl.c
 SRC_CFLAGS     := @perl_cflags@
 TGT_LDLIBS     := @perl_ldflags@
 
-install: install.raddbdir $(R)$(raddbdir)/example.pl
+install: $(R)$(raddbdir)/example.pl
 
-$(R)$(raddbdir)/example.pl: src/modules/rlm_perl/example.pl
+$(R)$(raddbdir)/example.pl: src/modules/rlm_perl/example.pl | $(R)$(raddbdir)/
        @$(ECHO) INSTALL $(notdir $<)
        @$(INSTALL) -m 755 $< $(R)$(raddbdir)/
index b21cd18..1827739 100644 (file)
@@ -9,8 +9,8 @@ SOURCES         := $(TARGETNAME).c
 TGT_LDLIBS     := @python_ldflags@
 SRC_CFLAGS     := @python_cflags@
 
-install: install.raddbdir $(R)$(raddbdir)/example.py
+install: $(R)$(raddbdir)/example.py
 
-$(R)$(raddbdir)/example.py: src/modules/rlm_python/example.py
+$(R)$(raddbdir)/example.py: src/modules/rlm_python/example.py | $(R)$(raddbdir)/
        @$(ECHO) INSTALL $(notdir $<)
        @$(INSTALL) -m 755 $< $(R)$(raddbdir)/
index 6b8b2dc..f0c4865 100644 (file)
@@ -9,8 +9,8 @@ SOURCES         := $(TARGETNAME).c
 SRC_CFLAGS     := @ruby_cflags@
 TGT_LDLIBS     := @ruby_ldflags@
 
-install: install.raddbdir $(R)$(raddbdir)/example.rb
+install: $(R)$(raddbdir)/example.rb
 
-$(R)$(raddbdir)/example.rb: src/modules/rlm_ruby/example.rb
+$(R)$(raddbdir)/example.rb: src/modules/rlm_ruby/example.rb | $(R)$(raddbdir)/
        @$(ECHO) INSTALL $(notdir $<)
        @$(INSTALL) -m 755 $< $(R)$(raddbdir)/