summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <luke@HP-dv6426us-u904.(none)>2009-10-29 18:25:27 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2015-06-26 00:30:18 -0600
commit5688c8498f178feb364afdb714f580b295e983a0 (patch)
tree54e4d6570774cfc56f15ae6176018a9f0d705538
parent83befb03851266035094f99f9c31fc7524c9e74a (diff)
rework rvs plugin build process, it's way more elegant now
-rw-r--r--rvs/main.mk.in71
-rw-r--r--rvs/plugins/Makefile42
-rw-r--r--rvs/plugins/filedata/info.mk2
-rw-r--r--rvs/plugins/files/info.mk2
-rw-r--r--rvs/plugins/files/main.mk.in78
-rw-r--r--rvs/plugins/main.mk.in (renamed from rvs/plugins/filedata/main.mk.in)5
-rw-r--r--rvs/plugins/users/info.mk2
-rw-r--r--rvs/plugins/users/main.mk.in78
-rw-r--r--rvs/wrapper/TODO14
9 files changed, 87 insertions, 207 deletions
diff --git a/rvs/main.mk.in b/rvs/main.mk.in
index 5bb6990..b311089 100644
--- a/rvs/main.mk.in
+++ b/rvs/main.mk.in
@@ -1,39 +1,26 @@
#!/usr/bin/make -f
name = @name@
-ver = 0.8r58
-# Copyright (C) 2009 Luke Shumaker
-#
-# This file is part of rvs.
-#
-# rvs is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2, or (at your option) any later version.
-#
-# rvs is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with rvs; see the file COPYING.
-# If not, write to the Free Software Foundation,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ver = 0.9
+# Copyright (C) 2009 Luke Shumaker
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; see the file COPYING.
+# If not, see <http://www.gnu.org/licenses>.
export rvs = $(name)
-# plugins ##########################################################
-plugins = $(patsubst $(srcdir)/plugins/%,%, \
- $(shell find $(srcdir)/plugins/* -maxdepth 0 -type d))
-
-build-plugins = $(addprefix p-,$(plugins))
-install-plugins = $(addprefix install-p-,$(plugins))
-uninstall-plugins = $(addprefix uninstall-p-,$(plugins))
-clean-plugins = $(addprefix clean-p-,$(plugins))
-distclean-plugins = $(addprefix distclean-p-,$(plugins))
-dist-plugins = $(addprefix dist-p-,$(plugins))
-
-# phony targets ####################################################
-all : wrapper $(build-plugins)
+# phony targets ######################################################
+all : wrapper p-build
.SUFFIXES :
VPATH = $(srcdir)
filelist = \
@@ -45,29 +32,29 @@ filelist = \
HACKING \
README \
$(patsubst $(srcdir)/%,%,$(shell find $(srcdir)/*/* -type f))
-# install ##########################################################
+# install ############################################################
-install : install-wrapper libexec $(install-plugins)
+install : install-wrapper libexec p-install
# $(libexecdir)/rvs/*
libexec : $(libexecdir)/$(rvs)/plugins
$(libexecdir)/$(rvs)/plugins : $(libexecdir)/$(rvs)
$(TOUCH) $@
-# uninstall ########################################################
+# uninstall ##########################################################
uninstall :
$(RM) $(bindir)/$(rvs)
$(RM) -r $(libexecdir)/$(rvs)
-# clean ############################################################
+# clean ##############################################################
clean : $(clean-plugins) clean-wrapper
distclean : clean $(distclean-plugins) distclean-wrapper
$(RM) Makefile
-# wrapper ##########################################################
+# wrapper ############################################################
wrapper : build-wrapper
build-wrapper : wrapper/ wrapper/Makefile; $(MAKE) -C $<
@@ -79,17 +66,11 @@ dist-wrapper : wrapper/ wrapper/Makefile; $(MAKE) -C $< dist
install-wrapper : wrapper/ wrapper/Makefile wrapper; $(MAKE) -C $< install
$(RVS) : install-wrapper
-# plugins ##########################################################
+# plugins ############################################################
-install-p-% : plugins/% plugins/%/Makefile p-% libexec $(RVS)
- $(MAKE) -C $< install
-p-% : plugins/% plugins/%/Makefile ; $(MAKE) -C $<
-uninstall-p-% : plugins/% plugins/%/Makefile ; $(MAKE) -C $< uninstall
-clean-p-% : plugins/% plugins/%/Makefile ; $(MAKE) -C $< clean
-distclean-p-% : plugins/% plugins/%/Makefile ; $(MAKE) -C $< distclean
-dist-p-% : plugins/% plugins/%/Makefile ; $(MAKE) -C $< dist
+p-% : plugins/Makefile ; $(MAKE) -C plugins $*
-# implicit rules ###################################################
+# implicit rules #####################################################
$(libexecdir)/$(rvs) :
$(MKDIR) $@
diff --git a/rvs/plugins/Makefile b/rvs/plugins/Makefile
new file mode 100644
index 0000000..53ebc17
--- /dev/null
+++ b/rvs/plugins/Makefile
@@ -0,0 +1,42 @@
+#!/usr/bin/make -f
+name=rvs plugins
+#version='1.0'
+# Copyright (C) 2009 Luke Shumaker
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; see the file COPYING.
+# If not, see <http://www.gnu.org/licenses>.
+
+# programs
+SHELL = /bin/sh
+
+# variables
+mods = $(patsubst ./%,%,$(shell find ./* -maxdepth 0 -type d))
+
+.PHONY : all
+all : build
+
+.PHONY : install build
+install : $(addprefix install-,$(mods))
+build : $(addprefix build-,$(mods))
+
+.SECONDARY:
+
+%/main.mk : main.mk %/; cp $< $@
+
+complete-% : %/ %/main.mk
+build-% : %/ complete-% %/main.mk; $(MAKE) -C $<
+install-% : %/ complete-% %/main.mk; $(MAKE) -C $< install
+clean-% : %/ complete-% %/main.mk; $(MAKE) -C $< clean
+distclean-% : %/ complete-% %/main.mk; $(MAKE) -C $< distclean
+
diff --git a/rvs/plugins/filedata/info.mk b/rvs/plugins/filedata/info.mk
new file mode 100644
index 0000000..77643cd
--- /dev/null
+++ b/rvs/plugins/filedata/info.mk
@@ -0,0 +1,2 @@
+name = filedata
+ver = 0.9
diff --git a/rvs/plugins/files/info.mk b/rvs/plugins/files/info.mk
new file mode 100644
index 0000000..d7ccb97
--- /dev/null
+++ b/rvs/plugins/files/info.mk
@@ -0,0 +1,2 @@
+name = files
+ver = 0.9
diff --git a/rvs/plugins/files/main.mk.in b/rvs/plugins/files/main.mk.in
deleted file mode 100644
index 1a04b33..0000000
--- a/rvs/plugins/files/main.mk.in
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/make -f
-name=filedata
-ver=0.9
-# Copyright (C) 2009 Luke Shumaker
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; see the file COPYING.
-# If not, see <http://www.gnu.org/licenses>.
-
-rvs = @name@
-id = $(name)-$(ver)
-
-# phony targets ####################################################
-all : $(name)
-.PHONY : $(name) install uninstall clean distclean dist
-.SUFFIXES :
-
-# build ############################################################
-mysrcdir = $(srcdir)/plugins/$(name)
-myoutdir = out
-
-srcFiles = $(filter-out %/Makefile.in,$(shell find $(mysrcdir)/ -type f))
-
-shSrcFiles = $(filter %.sh,$(srcFiles))
-shOutFiles = $(patsubst $(mysrcdir)/%,$(myoutdir)/%,$(basename $(shSrcFiles)))
-
-$(name) : $(myoutdir) $(shOutFiles) $(myoutdir)/plugin.conf
-
-$(myoutdir)/plugin.conf : $(mysrcdir)/plugin.conf
- $(INSTALL_DATA) $< $@
-
-# (un)install ######################################################
-
-install : all
- $(RVS) install $(name)-$(ver) $(myoutdir)
-
-uninstall :
- $(RVS) uninstall $(name)
-
-# clean ############################################################
-
-clean :
-
-distclean : clean
- $(RM) Makefile
- $(RM) -r out
-
-# implicit rules ###################################################
-
-b := @
-# build shell scripts
-$(myoutdir)/% : $(mysrcdir)/%.sh $(myoutdir)
- $(INSTALL_PROGRAM) $< $@
- $(SED) -i \
- -e 's/$bSHELL@/$(subst /,\/,$(SHELL))/g' \
- -e 's/$blibexecdir@/$(subst /,\/,$(libexecdir))/g' \
- -e 's/$bID@/$(subst /,\/,$(id))/g' \
- $@
-
-plugin.conf : plugin.conf.in
- $(SED) \
- -e 's/$bname@/$(subst /,\/,$(name))/g' \
- -e 's/$bver@/$(subst /,\/,$(ver))/g' \
- $< > $@
-
-$(DESTDIR)$(libexecdir)/$(rvs) $(myoutdir) :
- $(MKDIR) $@
-
diff --git a/rvs/plugins/filedata/main.mk.in b/rvs/plugins/main.mk.in
index 1a04b33..ed5dca8 100644
--- a/rvs/plugins/filedata/main.mk.in
+++ b/rvs/plugins/main.mk.in
@@ -1,6 +1,7 @@
#!/usr/bin/make -f
-name=filedata
-ver=0.9
+#name=rvs plugin Makefile
+#ver=0.9
+include info.mk # this contains the actuall name/version for the plugin
# Copyright (C) 2009 Luke Shumaker
#
# This program is free software; you can redistribute it and/or
diff --git a/rvs/plugins/users/info.mk b/rvs/plugins/users/info.mk
new file mode 100644
index 0000000..8289128
--- /dev/null
+++ b/rvs/plugins/users/info.mk
@@ -0,0 +1,2 @@
+name = users
+ver = 0.9
diff --git a/rvs/plugins/users/main.mk.in b/rvs/plugins/users/main.mk.in
deleted file mode 100644
index 1a04b33..0000000
--- a/rvs/plugins/users/main.mk.in
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/make -f
-name=filedata
-ver=0.9
-# Copyright (C) 2009 Luke Shumaker
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; see the file COPYING.
-# If not, see <http://www.gnu.org/licenses>.
-
-rvs = @name@
-id = $(name)-$(ver)
-
-# phony targets ####################################################
-all : $(name)
-.PHONY : $(name) install uninstall clean distclean dist
-.SUFFIXES :
-
-# build ############################################################
-mysrcdir = $(srcdir)/plugins/$(name)
-myoutdir = out
-
-srcFiles = $(filter-out %/Makefile.in,$(shell find $(mysrcdir)/ -type f))
-
-shSrcFiles = $(filter %.sh,$(srcFiles))
-shOutFiles = $(patsubst $(mysrcdir)/%,$(myoutdir)/%,$(basename $(shSrcFiles)))
-
-$(name) : $(myoutdir) $(shOutFiles) $(myoutdir)/plugin.conf
-
-$(myoutdir)/plugin.conf : $(mysrcdir)/plugin.conf
- $(INSTALL_DATA) $< $@
-
-# (un)install ######################################################
-
-install : all
- $(RVS) install $(name)-$(ver) $(myoutdir)
-
-uninstall :
- $(RVS) uninstall $(name)
-
-# clean ############################################################
-
-clean :
-
-distclean : clean
- $(RM) Makefile
- $(RM) -r out
-
-# implicit rules ###################################################
-
-b := @
-# build shell scripts
-$(myoutdir)/% : $(mysrcdir)/%.sh $(myoutdir)
- $(INSTALL_PROGRAM) $< $@
- $(SED) -i \
- -e 's/$bSHELL@/$(subst /,\/,$(SHELL))/g' \
- -e 's/$blibexecdir@/$(subst /,\/,$(libexecdir))/g' \
- -e 's/$bID@/$(subst /,\/,$(id))/g' \
- $@
-
-plugin.conf : plugin.conf.in
- $(SED) \
- -e 's/$bname@/$(subst /,\/,$(name))/g' \
- -e 's/$bver@/$(subst /,\/,$(ver))/g' \
- $< > $@
-
-$(DESTDIR)$(libexecdir)/$(rvs) $(myoutdir) :
- $(MKDIR) $@
-
diff --git a/rvs/wrapper/TODO b/rvs/wrapper/TODO
index 7c38b44..b1ab1d9 100644
--- a/rvs/wrapper/TODO
+++ b/rvs/wrapper/TODO
@@ -1,11 +1,17 @@
#! /bin/less
-* actually launch the plugins
* plugin-run.h:
the function _plugin_sh_mktemp() is an ugly hack, it exists
- because a) it is secure b) it is easier to write a hack using
- methods I understand, than learn those I don't c) point b
- especially when I just want to get it working.
+ because
+ a) it is secure
+ b) it is easier to write a hack using methods I understand,
+ than learn those I don't
+ c) point `b' especially when I just want to get it working.
+ d) point `b' especially since I think I coded it in
+ studyhall one day, which means I didn't have internet
+ access (no glibc documenation).
+* everything:
+ with plugin commands, have arg1 be a file to write output to
~ Luke Shumaker
Happy Hacking!