Commit 333d1c50 authored by Andrey Filippov's avatar Andrey Filippov

implemented Kostya's correction, added warning

parent 5056d9f8
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
def version_update(path,file,evr): def version_update(path,file,evr):
import os.path import os.path
if not os.path.exists(path+'/'+file): if not os.path.exists(path+'/'+file):
return 0 return "0"
f=open(path+'/'+file) f=open(path+'/'+file)
for line in f: for line in f:
...@@ -24,25 +24,35 @@ def version_update(path,file,evr): ...@@ -24,25 +24,35 @@ def version_update(path,file,evr):
def revision_update(path,file): def revision_update(path,file):
import subprocess, os# , pwd for some reasons pwd.getpwall() show some 3-user default, so read and parse etc/passwd import subprocess, os# , pwd for some reasons pwd.getpwall() show some 3-user default, so read and parse etc/passwd
import getpass # import getpass
pef = None # , preexec_fn=pefuid pef = None # , preexec_fn=pefuid
if (os.getuid() == 0): if (os.getuid() == 0):
bb.warn("Tried to access '"+path+"' as root, demoting to a normal user")
"""
python __anonymous() {
if d.getVar('MY_VARIABLE', True) == "":
bb.warn("MY_VARIABLE is not set. This may lead to unexpected behavior.")
}
"""
#uname = os.getlogin() #uname = os.getlogin()
uname = getpass.getuser() # uname = getpass.getuser()
with open("/etc/passwd") as f: # with open("/etc/passwd") as f:
for line in f: # for line in f:
line = line.strip() # line = line.strip()
a = line.split(':') # a = line.split(':')
if a[0] == uname: # if a[0] == uname:
# pef = preexec_fn=demote(int(a[3]),int(a[2])); # pef = preexec_fn=demote(int(a[3]),int(a[2]));
pef = preexec_fn=demote(int(a[2]),int(a[3])); # pef = preexec_fn=demote(int(a[2]),int(a[3]));
break # break
# Kostya's solution:
st = os.stat(path)
pef = demote(st.st_uid, st.st_gid)
cmd = "cd "+path+"; git rev-list --count $(git log -1 --pretty=format:\"%H\" "+file+")..HEAD" cmd = "cd "+path+"; git rev-list --count $(git log -1 --pretty=format:\"%H\" "+file+")..HEAD"
try: try:
res = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True, preexec_fn=pef) res =str(subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True, preexec_fn=pef))
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
res = "error_"+e.returncode res = "error_"+str(e.returncode)
res = str(int(res)) # res = str(int(res))
res = res.strip(' \t\n\r') res = res.strip(' \t\n\r')
return res return res
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment