From 4d12729aa4026229e4e118b924cc3b1c75ca214b Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 17 Jun 2016 20:09:33 -0400 Subject: write setuid, move things around --- Makefile | 59 +++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 24 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 4ddef29..3a546fe 100644 --- a/Makefile +++ b/Makefile @@ -34,14 +34,15 @@ CGO_CPPFLAGS = $(CPPFLAGS) -U_FORTIFY_SOURCE CGO_CFLAGS = $(CFLAGS) -O0 -Wno-unused-parameter CGO_ENABLED = 1 -at.subdirs += src/lukeshu.com/git/go/libnslcd.git/proto +at.subdirs += go/lukeshu.com/git/go/libnslcd.git/proto -scripts = $(filter-out common.rb common.rb.in,$(notdir $(wildcard $(srcdir)/scripts/*))) common.rb +programs = setuid nshd-tester nshd common.rb +scripts = $(filter-out %.c %.o $(programs) common.rb common.rb.in,$(notdir $(wildcard $(srcdir)/bin/*))) std.gen_files += LICENSE.lgpl-2.1.txt LICENSE.gpl-2.txt LICENSE.apache-2.0.txt -std.out_files += bin/cmd-nshd nshd.service nshd.sysusers scripts/common.rb test/runner -std.sys_files += $(addprefix $(bindir)/,nshd $(scripts)) $(systemunitdir)/nshd.socket $(systemunitdir)/nshd.service $(sysusersdir)/nshd.conf $(conf_file) $(shadow_file) -std.clean_files += test/*.o pkg/ .tmp* .var* $(_out) +std.out_files += $(addprefix bin/,$(programs)) nshd.service nshd.sysusers +std.sys_files += $(addprefix $(bindir)/,$(programs) $(scripts)) $(systemunitdir)/nshd.socket $(systemunitdir)/nshd.service $(sysusersdir)/nshd.conf $(conf_file) $(shadow_file) +std.clean_files += bin/*.o .gopath/ .tmp* .var* $(_out) $(srcdir)/LICENSE.lgpl-2.1.txt: $(NET) curl https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt > $@ @@ -52,39 +53,44 @@ $(srcdir)/LICENSE.apache-2.0.txt: $(NET) $(srcdir)/LICENSE.wtfpl-2.txt: $(NET) curl http://www.wtfpl.net/txt/copying/ > $@ -_gen += src/lukeshu.com/git/go/libnslcd.git/proto/server/interface_backend.go -_gen += src/lukeshu.com/git/go/libnslcd.git/proto/server/func_handlerequest.go -_gen += src/lukeshu.com/git/go/libnslcd.git/proto/server/type_nilbackend.go -_out += src/parabola_hackers/users.go -_out += src/parabola_hackers/passwords.go -_out += src/cmd-nshd/main.go -$(outdir)/bin/%-nshd: $(call golang.src,$(srcdir)) $(_gen) $(_out) - $(call golang.install,$(topsrcdir),cmd-nshd) +_gen += go/lukeshu.com/git/go/libnslcd.git/proto/server/interface_backend.go +_gen += go/lukeshu.com/git/go/libnslcd.git/proto/server/func_handlerequest.go +_gen += go/lukeshu.com/git/go/libnslcd.git/proto/server/type_nilbackend.go +_out += go/parabola_hackers/users.go +_out += go/parabola_hackers/passwords.go +_out += go/cmd-nshd/main.go +$(outdir)/bin/nshd: \ +$(outdir)/bin/%: $(outdir)/.gopath/bin/cmd-% + cp -T $< $@ +$(outdir)/.gopath/src: $(golang.var) + rm -rf -- $(@D) + mkdir $(@D) + ln -sr $(topsrcdir)/go $@ + touch $@ +$(outdir)/.gopath/bin/cmd-nshd: $(call golang.src,$(outdir)/.gopath) $(_gen) $(_out) + $(call golang.install,$(topoutdir)/.gopath,cmd-nshd) $(outdir)/%.o: $(srcdir)/%.c $(var)CC $(var)CPPFLAGS $(var)CFLAGS $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(filter-out $(var)%,$^) +$(outdir)/bin/nshd-tester $(outdir)/bin/setuid: \ $(outdir)/%: $(outdir)/%.o $(var)CC $(var)LDFLAGS $(CC) $(LDFLAGS) -o $@ $(filter-out $(var)%,$^) $(outdir)/%: $(srcdir)/%.in < $< sed $(foreach v,$(patsubst $(var)%,%,$(filter $(var)%,$^)), -e 's|@$v@|$($v)|g' ) > $@ +$(outdir)/bin/setuid: -ldl $(outdir)/nshd.service: $(var)user $(var)bindir $(outdir)/nshd.sysusers: $(var)user -$(outdir)/scripts/common.rb: $(var)conf_file -$(outdir)/src/cmd-nshd/main.go: $(var)conf_file -$(outdir)/src/parabola_hackers/users.go: $(var)bindir -$(outdir)/src/parabola_hackers/passwords.go: $(var)shadow_file +$(outdir)/bin/common.rb: $(var)conf_file +$(outdir)/go/cmd-nshd/main.go: $(var)conf_file +$(outdir)/go/parabola_hackers/users.go: $(var)bindir +$(outdir)/go/parabola_hackers/passwords.go: $(var)shadow_file -$(DESTDIR)$(bindir)/%: $(outdir)/bin/cmd-% - $(NORMAL_INSTALL) - install -TDm755 $< $@ -$(DESTDIR)$(bindir)/%: $(srcdir)/scripts/% +# Patterns +$(DESTDIR)$(bindir)/%: $(outdir)/bin/% $(NORMAL_INSTALL) install -TDm755 $< $@ -$(DESTDIR)$(bindir)/common.rb: $(srcdir)/scripts/common.rb - $(NORMAL_INSTALL) - install -TDm644 $< $@ $(DESTDIR)$(systemunitdir)/%.socket: $(outdir)/%.socket $(NORMAL_INSTALL) install -TDm644 $< $@ @@ -94,6 +100,11 @@ $(DESTDIR)$(systemunitdir)/%.service: $(outdir)/%.service $(DESTDIR)$(sysusersdir)/%.conf: $(outdir)/%.sysusers $(NORMAL_INSTALL) install -TDm644 $< $@ + +# Specific files +$(DESTDIR)$(bindir)/common.rb: $(srcdir)/bin/common.rb + $(NORMAL_INSTALL) + install -TDm644 $< $@ $(DESTDIR)$(conf_file): $(srcdir)/parabola-hackers.yml $(NORMAL_INSTALL) install -TDm644 $< $@ -- cgit v1.2.2