diff --git a/data/chroot.rc b/data/chroot.rc new file mode 100644 index 0000000..8bf4924 --- /dev/null +++ b/data/chroot.rc @@ -0,0 +1,6 @@ +#!/bin/bash + +env-update &>/dev/null +source /etc/profile +PS1="\[\033[0;40;0;33m\]\H \W #\[\033[0m\] " + diff --git a/pym/cl_fill_builder.py b/pym/cl_fill_builder.py index 16636d7..d382eb8 100644 --- a/pym/cl_fill_builder.py +++ b/pym/cl_fill_builder.py @@ -113,11 +113,13 @@ class fillVars(object, glob_attr): else: return cacheDir + reChroot = re.compile("^_=.*bin/chroot$",re.S) + def isChroot(self,pid): """Recursive detect chroot mode""" if not os.access('/proc/%d/environ'%pid,R_OK): return False - if filter(lambda x:x=="_=/bin/chroot", + if filter(self.reChroot.match, open('/proc/%d/environ'%pid,'r').read().split('\x00')): return True else: diff --git a/scripts/cl-builder b/scripts/cl-builder index 498ea57..966e382 100644 --- a/scripts/cl-builder +++ b/scripts/cl-builder @@ -63,7 +63,7 @@ mountres() { runchroot() { touch $EMERGELOG watching & 2>/dev/null - chroot $BUILDER /bin/bash --rcfile /usr/calculate/install/config/chroot.rc + chroot $BUILDER /bin/bash --rcfile /usr/share/calculate/config/chroot.rc WATCHINGPID=`ps axo pid,cmd | sed -nr "s|^\s*([0-9]+)\s+${TAILEMERGELOG}.*|\1|p"` [ "${WATCHINGPID}" ] && kill -9 $WATCHINGPID &>/dev/null $REMOUNT &>/dev/null diff --git a/setup.py b/setup.py index 271b59e..b29b760 100755 --- a/setup.py +++ b/setup.py @@ -1,9 +1,9 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# setup.py --- Setup script for calculate-builder +# setup.py --- Setup script for calculate-client -# Copyright 2010 Calculate Ltd. http://www.calculate-linux.org +#Copyright 2010 Calculate Ltd. http://www.calculate-linux.org # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,15 +19,19 @@ import os import stat -from distutils.core import setup, Extension +from distutils.core import setup from distutils.command.install_data import install_data + +__app__ = "calculate-builder" +__version__ = "2.2.0.0" + data_files = [] var_data_files = [] -share_calculate_dir = "/usr/share/calculate" data_dirs_share = ['i18n'] +share_calculate_dir = "/usr/share/calculate" def __scanDir(scanDir, prefix, replace_dirname, dirData, flagDir=False): @@ -50,7 +54,7 @@ def __scanDir(scanDir, prefix, replace_dirname, dirData, flagDir=False): scanDir = os.path.join(prefix,scanDir) dirData.append((scanDir, files)) for sDir in dirs: - __scanDir(sDir, prefix, replace_dirname,dirData, True) + __scanDir(sDir, prefix, replace_dirname, dirData, True) return dirData def create_data_files(data_dirs, prefix="", replace_dirname=""): @@ -61,11 +65,41 @@ def create_data_files(data_dirs, prefix="", replace_dirname=""): data_files += __scanDir(data_dir, prefix, replace_dirname, data) return data_files -data_files += create_data_files (data_dirs_share, share_calculate_dir) + +data_files += create_data_files(data_dirs_share, share_calculate_dir) +data_files += [('/usr/share/calculate/config', ['data/chroot.rc',])] + +class cl_install_data(install_data): + def run (self): + install_data.run(self) + data_file = [] + fileNames = map(lambda x: os.path.split(x[0])[1], data_file) + listNames = map(lambda x: filter(lambda y: y, x[0].split("/")),data_file) + data_find = {} + for i in range(len(fileNames)): + listNames[i].reverse() + data_find[fileNames[i]] =[listNames[i],data_file[i][1]] + + for path in self.get_outputs(): + nameFile = os.path.split(path)[1] + if nameFile in data_find.keys(): + data = data_find[nameFile][0] + mode = data_find[nameFile][1] + flagFound = True + iMax = len(data) + pathFile = path + for i in range(iMax): + if data[i] != os.path.split(pathFile)[1]: + flagFound = False + break + pathFile = os.path.split(pathFile)[0] + if flagFound: + os.chmod(path, mode) + setup( - name = 'calculate-builder', - version = "2.2.0", + name = __app__, + version = __version__, description = "Calculate Linux builder", author = "Calculate Ltd.", author_email = "support@calculate.ru", @@ -74,6 +108,6 @@ setup( package_dir = {'calculate-builder': "."}, packages = ['calculate-builder.pym'], data_files = data_files, - scripts=["./scripts/cl-kernel", - "./scripts/cl-builder"] + scripts=["./scripts/cl-kernel","./scripts/cl-builder"], + cmdclass={'install_data': cl_install_data}, )