# HG changeset patch # User Robert McIntyre # Date 1357715377 0 # Node ID e056798af879fcab19f9a4c2ab211993c35ed2e4 # Parent 389f8678f1d8cbfb67006fe3dfab022db93380c1 fixing problem with shell interpretation. diff -r 389f8678f1d8 -r e056798af879 defaults/Makefile --- a/defaults/Makefile Wed Jan 09 05:11:10 2013 +0000 +++ b/defaults/Makefile Wed Jan 09 07:09:37 2013 +0000 @@ -1,5 +1,7 @@ +#all: +# g++ -I/usr/include hg-wrapper.cpp -o hg-wrapper + all: - g++ -I/usr/include hg-wrapper.cpp -o hg-wrapper - chmod +s hg-wrapper + gcc -I/usr/include -lpipeline hg-wrapper.c -o hg-wrapper clean: rm hg-wrapper diff -r 389f8678f1d8 -r e056798af879 defaults/hg-wrapper.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/defaults/hg-wrapper.c Wed Jan 09 07:09:37 2013 +0000 @@ -0,0 +1,14 @@ +#include + + +main( int argc, char ** argv){ + pipecmd* p = pipecmd_new("hg"); + + int i; + for(i = 1; i < argc; i++){ + pipecmd_arg(p, argv[i]); + } + + pipecmd_exec(p); + +} diff -r 389f8678f1d8 -r e056798af879 defaults/hg-wrapper.cpp --- a/defaults/hg-wrapper.cpp Wed Jan 09 05:11:10 2013 +0000 +++ b/defaults/hg-wrapper.cpp Wed Jan 09 07:09:37 2013 +0000 @@ -12,5 +12,6 @@ input[0] = std::string("hg"); std::string command = boost::algorithm::join(input, " "); setreuid(geteuid(), geteuid()); + setregid(getegid(), getegid()); return system(command.c_str()); } diff -r 389f8678f1d8 -r e056798af879 defaults/hg-wrapper.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/defaults/hg-wrapper.pl Wed Jan 09 07:09:37 2013 +0000 @@ -0,0 +1,7 @@ +#!/usr/bin/perl -wT + +$ENV{"PATH"} = "/usr/bin"; +delete @ENV{qw(IFS CDPATH ENV BASH_ENV PATH)}; + +unshift(@ARGV, "hg"); +exec(@ARGV); diff -r 389f8678f1d8 -r e056798af879 defaults/profile --- a/defaults/profile Wed Jan 09 05:11:10 2013 +0000 +++ b/defaults/profile Wed Jan 09 07:09:37 2013 +0000 @@ -28,6 +28,6 @@ export HGEDITOR="emacs" -alias hg="~/.hg-wrapper" +alias hg="~/.hg-wrapper --config ui.username=`whoami`" -PS1="\[$(tput setaf 3)\][\u \w] # \[$(tput sgr0)\]" +PS1="\[$(tput setaf 3)\][\u \w] % \[$(tput sgr0)\]" diff -r 389f8678f1d8 -r e056798af879 org/pkg.org --- a/org/pkg.org Wed Jan 09 05:11:10 2013 +0000 +++ b/org/pkg.org Wed Jan 09 07:09:37 2013 +0000 @@ -51,6 +51,13 @@ > removed > +the root-level mercurial repository is owned by +hg-commiter:hg-wheel, where hg-committer is the +user for which the "hg" alise for each package +user is setuid. +high level users can be added to hg-heel to +administer the root-level mercurial repsitory, +which will allow them to do things like hg log, hg +purge, etc. - diff -r 389f8678f1d8 -r e056798af879 src/pkg.pl --- a/src/pkg.pl Wed Jan 09 05:11:10 2013 +0000 +++ b/src/pkg.pl Wed Jan 09 07:09:37 2013 +0000 @@ -74,16 +74,27 @@ @pkg_add_install_cmd = ("gpasswd", "--add", $pkg_name, "install"); -sub execute{print "\t@_\n"; system(@_) and die $!;} - - @pkg_link_bashrc_cmd = ("install", "-g", $pkg_name, "-o", $pkg_name, "/pkg/defaults/.profile", "$pkg_home/.profile"); @pkg_copy_hg_wrapper_cmd = - (install, "-g", "users", "-o", "r", - "-m", "4777", "/pkg/defaults/.hg-wrapper", $pkg_home); + (install, "-g", "hg-wheel", "-o", "hg-committer", + "-m", "6111", "/pkg/defaults/.hg-wrapper", $pkg_home); + +$pkg_hgrc = "[ui]\n\ +username = $pkg_name\n\ +[extensions]\n\ +hgext.purge =\n"; + +$pkg_hgrc_filename = "$pkg_home/.hgrc"; + +@pkg_set_hgrc_user_cmd = + ("chown", "$pkg_name:$pkg_name", $pkg_hgrc_filename); + + +sub execute{print "\t@_\n"; system(@_) and die $!;} + #determine if the user already exists: `id $pkg_name 2>/dev/null`; @@ -107,13 +118,15 @@ execute(@pkg_link_bashrc_cmd); execute(@pkg_copy_hg_wrapper_cmd); +# print "Create ~/.hgrc\n"; +# open(HGRC, ">$pkg_hgrc_filename") or die $!; +# select HGRC; +# print $pkg_hgrc; +# close(HGRC); + +# select(STDOUT); +# print "Set permissions on ~/.hgrc.\n"; +# execute(@pkg_set_hgrc_user_cmd); + print "Change user.\n"; execute(@pkg_switch_cmd); - - - - - - - - diff -r 389f8678f1d8 -r e056798af879 src/set-repository-perms.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/set-repository-perms.sh Wed Jan 09 07:09:37 2013 +0000 @@ -0,0 +1,5 @@ +groupadd --force hg-wheel +gpasswd --add hg-committer hg-wheel +gpasswd --add r hg-wheel +chown -Rv hg-committer:hg-wheel /.hg +chmod -Rv g+wrx /.hg