diff --git a/.gitignore b/.gitignore index 1e92b82750854f7170b7f265c7d74c107b9f58df..032d25286661c197ad205659135c21b6a4b4209b 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ zsh_completion find-libdeps crossrepomove arch-nspawn +sudoers diff --git a/Makefile b/Makefile index d93fefd664136e2b40fc49e2dbee8a72b899cab3..f8a25f5025b49d0dd205bf0c90d5f24d92f5e27d 100644 --- a/Makefile +++ b/Makefile @@ -67,7 +67,7 @@ BASHCOMPLETION_LINKS = \ archco \ communityco -all: $(BINPROGS) bash_completion zsh_completion +all: $(BINPROGS) bash_completion zsh_completion sudoers edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g" @@ -79,8 +79,15 @@ edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g" @chmod +x "$@" @bash -O extglob -n "$@" +sudoers: sudoers.in + @echo "GEN $@" + @$(RM) "$@" + @m4 -D PREFIX='$(PREFIX)/bin' -D BIN='makechrootpkg $(ARCHBUILD_LINKS)' $@.in > $@ + @chmod a-w "$@" + + clean: - rm -f $(BINPROGS) bash_completion zsh_completion + rm -f $(BINPROGS) sudoers bash_completion zsh_completion install: install -dm0755 $(DESTDIR)$(PREFIX)/bin @@ -95,6 +102,8 @@ install: for l in ${BASHCOMPLETION_LINKS}; do ln -sf devtools $(DESTDIR)/usr/share/bash-completion/completions/$$l; done install -Dm0644 zsh_completion $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools ln -sf archco $(DESTDIR)$(PREFIX)/bin/communityco + install -dm750 $(DESTDIR)/etc/sudoers.d + install -Dm0644 sudoers $(DESTDIR)/etc/sudoers.d/50-devtools uninstall: for f in ${BINPROGS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done @@ -106,6 +115,7 @@ uninstall: rm $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools rm -f $(DESTDIR)$(PREFIX)/bin/communityco rm -f $(DESTDIR)$(PREFIX)/bin/find-libprovides + rm -f $(DESTDIR)$/etc/sudoers.d/50-devtools dist: git archive --format=tar --prefix=devtools-$(V)/ $(V) | gzip -9 > devtools-$(V).tar.gz diff --git a/sudoers.in b/sudoers.in new file mode 100644 index 0000000000000000000000000000000000000000..1d2ca7a05078b8da772d212ebfd42b083b585019 --- /dev/null +++ b/sudoers.in @@ -0,0 +1,9 @@ +define(`prep',dnl +`ifelse(index(`$1', ` '),-1,PREFIX/$1,PREFIX/substr($1,0,index(`$1',` '))`, 'dnl +`$0(substr(`$1', eval(index(`$1',` ')+1)))')'dnl +)dnl +Cmnd_Alias DEVTOOLS = prep(BIN) + +Defaults!DEVTOOLS umask_override + +%devtools ALL=(root) NOPASSWD: DEVTOOLS