From 5688c8498f178feb364afdb714f580b295e983a0 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 29 Oct 2009 18:25:27 -0400 Subject: rework rvs plugin build process, it's way more elegant now --- rvs/main.mk.in | 71 ++++++++++++++---------------------- rvs/plugins/Makefile | 42 ++++++++++++++++++++++ rvs/plugins/filedata/info.mk | 2 ++ rvs/plugins/filedata/main.mk.in | 78 ---------------------------------------- rvs/plugins/files/info.mk | 2 ++ rvs/plugins/files/main.mk.in | 78 ---------------------------------------- rvs/plugins/main.mk.in | 79 +++++++++++++++++++++++++++++++++++++++++ rvs/plugins/users/info.mk | 2 ++ rvs/plugins/users/main.mk.in | 78 ---------------------------------------- rvs/wrapper/TODO | 14 +++++--- 10 files changed, 163 insertions(+), 283 deletions(-) create mode 100644 rvs/plugins/Makefile create mode 100644 rvs/plugins/filedata/info.mk delete mode 100644 rvs/plugins/filedata/main.mk.in create mode 100644 rvs/plugins/files/info.mk delete mode 100644 rvs/plugins/files/main.mk.in create mode 100644 rvs/plugins/main.mk.in create mode 100644 rvs/plugins/users/info.mk delete mode 100644 rvs/plugins/users/main.mk.in 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 . 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 . + +# 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/filedata/main.mk.in b/rvs/plugins/filedata/main.mk.in deleted file mode 100644 index 1a04b33..0000000 --- a/rvs/plugins/filedata/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 . - -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/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 . - -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/main.mk.in b/rvs/plugins/main.mk.in new file mode 100644 index 0000000..ed5dca8 --- /dev/null +++ b/rvs/plugins/main.mk.in @@ -0,0 +1,79 @@ +#!/usr/bin/make -f +#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 +# 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 . + +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/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 . - -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! -- cgit v1.2.3