diff options
| -rw-r--r-- | bitbake-dev/ChangeLog | 14 | ||||
| -rw-r--r-- | bitbake-dev/lib/bb/cache.py | 6 | ||||
| -rw-r--r-- | bitbake-dev/lib/bb/cooker.py | 37 | ||||
| -rw-r--r-- | bitbake-dev/lib/bb/fetch/hg.py | 2 | ||||
| -rw-r--r-- | bitbake-dev/lib/bb/fetch/perforce.py | 24 | ||||
| -rw-r--r-- | bitbake-dev/lib/bb/fetch/svn.py | 4 | ||||
| -rw-r--r-- | bitbake-dev/lib/bb/taskdata.py | 15 | ||||
| -rw-r--r-- | bitbake-dev/lib/bb/utils.py | 1 | ||||
| -rw-r--r-- | bitbake/ChangeLog | 14 | ||||
| -rw-r--r-- | bitbake/lib/bb/cache.py | 6 | ||||
| -rw-r--r-- | bitbake/lib/bb/fetch/hg.py | 2 | ||||
| -rw-r--r-- | bitbake/lib/bb/fetch/perforce.py | 24 | ||||
| -rw-r--r-- | bitbake/lib/bb/fetch/svn.py | 4 | ||||
| -rw-r--r-- | bitbake/lib/bb/taskdata.py | 15 | ||||
| -rw-r--r-- | bitbake/lib/bb/utils.py | 1 | 
15 files changed, 117 insertions, 52 deletions
| diff --git a/bitbake-dev/ChangeLog b/bitbake-dev/ChangeLog index 6f068be19f..a2c9d80801 100644 --- a/bitbake-dev/ChangeLog +++ b/bitbake-dev/ChangeLog @@ -154,7 +154,21 @@ Changes in Bitbake 1.9.x:  	  all variable from the environment. If BB_ENV_WHITELIST is set, that whitelist will be  	  used instead of the internal bitbake one. Alternatively, BB_ENV_EXTRAWHITE can be used  	  to extend the internal whitelist. +	- Perforce fetcher fix to use commandline options instead of being overriden by the environment +	- bb.utils.prunedir can cope with symlinks to directoriees without exceptions +	- use @rev when doing a svn checkout +	- Add osc fetcher (from Joshua Lock in Poky)  	- When SRCREV autorevisioning for a recipe is in use, don't cache the recipe +	- Add tryaltconfigs option to control whether bitbake trys using alternative providers +	  to fulfil failed dependencies. It defaults to off, changing the default since this +	  behaviour confuses many users and isn't often useful. +	- Improve lock file function error handling +	- Add username handling to the git fetcher (Robert Bragg) +	- Add support for HTTP_PROXY and HTTP_PROXY_IGNORE variables to the wget fetcher +	- Export more variables to the fetcher commands to allow ssh checkouts and checkouts through  +	  proxies to work better. (from Poky) +	- Also allow user and pswd options in SRC_URIs globally (from Poky) +	- Improve proxy handling when using mirrors (from Poky)  Changes in Bitbake 1.8.0:  	- Release 1.7.x as a stable series diff --git a/bitbake-dev/lib/bb/cache.py b/bitbake-dev/lib/bb/cache.py index 1c87bfa12d..a4a4f47cef 100644 --- a/bitbake-dev/lib/bb/cache.py +++ b/bitbake-dev/lib/bb/cache.py @@ -95,7 +95,11 @@ class Cache:                  bb.msg.note(1, bb.msg.domain.Cache, "Invalid cache found, rebuilding...")                  self.depends_cache = {}          else: -            bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...") +            try: +                os.stat( self.cachefile ) +                bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...") +            except OSError: +                pass      def getVar(self, var, fn, exp = 0):          """ diff --git a/bitbake-dev/lib/bb/cooker.py b/bitbake-dev/lib/bb/cooker.py index 86229799f2..06f3395d7a 100644 --- a/bitbake-dev/lib/bb/cooker.py +++ b/bitbake-dev/lib/bb/cooker.py @@ -88,6 +88,24 @@ class BBCooker:          bb.data.inheritFromOS(self.configuration.data) +        for f in self.configuration.file: +            self.parseConfigurationFile( f ) + +        self.parseConfigurationFile( os.path.join( "conf", "bitbake.conf" ) ) + +        if not self.configuration.cmd: +            self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", self.configuration.data, True) or "build" + +        bbpkgs = bb.data.getVar('BBPKGS', self.configuration.data, True) +        if bbpkgs: +            self.configuration.pkgs_to_build.extend(bbpkgs.split()) + +        # +        # Special updated configuration we use for firing events +        # +        self.configuration.event_data = bb.data.createCopy(self.configuration.data) +        bb.data.update_data(self.configuration.event_data) +          # TOSTOP must not be set or our children will hang when they output          fd = sys.stdout.fileno()          if os.isatty(fd): @@ -105,23 +123,7 @@ class BBCooker:          self.server.register_idle_function(self.runCommands, self)      def parseConfiguration(self): -        # -        # Special updated configuration we use for firing events -        # -        self.configuration.event_data = bb.data.createCopy(self.configuration.data) -        bb.data.update_data(self.configuration.event_data) - -        for f in self.configuration.file: -            self.parseConfigurationFile( f ) -        self.parseConfigurationFile( os.path.join( "conf", "bitbake.conf" ) ) - -        if not self.configuration.cmd: -            self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", self.configuration.data, True) or "build" - -        bbpkgs = bb.data.getVar('BBPKGS', self.configuration.data, True) -        if bbpkgs: -            self.configuration.pkgs_to_build.extend(bbpkgs.split())          # Change nice level if we're asked to          nice = bb.data.getVar("BB_NICE_LEVEL", self.configuration.data, True) @@ -149,6 +151,9 @@ class BBCooker:              self.commandlineAction = ["showVersions"]          elif self.configuration.parse_only:              self.commandlineAction = ["parseFiles"] +        # FIXME - implement +        #elif self.configuration.interactive: +        #    self.interactiveMode()          elif self.configuration.dot_graph:              if self.configuration.pkgs_to_build:                  self.commandlineAction = ["generateDotGraph", self.configuration.pkgs_to_build, self.configuration.cmd] diff --git a/bitbake-dev/lib/bb/fetch/hg.py b/bitbake-dev/lib/bb/fetch/hg.py index 1cd5a8aa5c..b87fd0fbe5 100644 --- a/bitbake-dev/lib/bb/fetch/hg.py +++ b/bitbake-dev/lib/bb/fetch/hg.py @@ -79,7 +79,7 @@ class Hg(Fetch):              host = "/"              ud.host = "localhost" -        if ud.user == None: +        if not ud.user:              hgroot = host + ud.path          else:              hgroot = ud.user + "@" + host + ud.path diff --git a/bitbake-dev/lib/bb/fetch/perforce.py b/bitbake-dev/lib/bb/fetch/perforce.py index b594d2bde2..2fb38b4190 100644 --- a/bitbake-dev/lib/bb/fetch/perforce.py +++ b/bitbake-dev/lib/bb/fetch/perforce.py @@ -67,14 +67,15 @@ class Perforce(Fetch):      doparse = staticmethod(doparse)      def getcset(d, depot,host,user,pswd,parm): +        p4opt = ""          if "cset" in parm:              return parm["cset"];          if user: -            data.setVar('P4USER', user, d) +            p4opt += " -u %s" % (user)          if pswd: -            data.setVar('P4PASSWD', pswd, d) +            p4opt += " -P %s" % (pswd)          if host: -            data.setVar('P4PORT', host, d) +            p4opt += " -p %s" % (host)          p4date = data.getVar("P4DATE", d, 1)          if "revision" in parm: @@ -85,8 +86,8 @@ class Perforce(Fetch):              depot += "@%s" % (p4date)          p4cmd = data.getVar('FETCHCOMMAND_p4', d, 1) -        bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s changes -m 1 %s" % (p4cmd, depot)) -        p4file = os.popen("%s changes -m 1 %s" % (p4cmd,depot)) +        bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s%s changes -m 1 %s" % (p4cmd, p4opt, depot)) +        p4file = os.popen("%s%s changes -m 1 %s" % (p4cmd, p4opt, depot))          cset = p4file.readline().strip()          bb.msg.debug(1, bb.msg.domain.Fetcher, "READ %s" % (cset))          if not cset: @@ -146,14 +147,15 @@ class Perforce(Fetch):          data.update_data(localdata)          # Get the p4 command +        p4opt = ""          if user: -            data.setVar('P4USER', user, localdata) +            p4opt += " -u %s" % (user)          if pswd: -            data.setVar('P4PASSWD', pswd, localdata) +            p4opt += " -P %s" % (pswd)          if host: -            data.setVar('P4PORT', host, localdata) +            p4opt += " -p %s" % (host)          p4cmd = data.getVar('FETCHCOMMAND', localdata, 1) @@ -175,8 +177,8 @@ class Perforce(Fetch):          os.chdir(tmpfile)          bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc) -        bb.msg.note(1, bb.msg.domain.Fetcher, "%s files %s" % (p4cmd, depot)) -        p4file = os.popen("%s files %s" % (p4cmd, depot)) +        bb.msg.note(1, bb.msg.domain.Fetcher, "%s%s files %s" % (p4cmd, p4opt, depot)) +        p4file = os.popen("%s%s files %s" % (p4cmd, p4opt, depot))          if not p4file:              bb.error("Fetch: unable to get the P4 files from %s" % (depot)) @@ -193,7 +195,7 @@ class Perforce(Fetch):              dest = list[0][len(path)+1:]              where = dest.find("#") -            os.system("%s print -o %s/%s %s" % (p4cmd, module,dest[:where],list[0])) +            os.system("%s%s print -o %s/%s %s" % (p4cmd, p4opt, module,dest[:where],list[0]))              count = count + 1          if count == 0: diff --git a/bitbake-dev/lib/bb/fetch/svn.py b/bitbake-dev/lib/bb/fetch/svn.py index 5e5b31b3ad..aead1629b3 100644 --- a/bitbake-dev/lib/bb/fetch/svn.py +++ b/bitbake-dev/lib/bb/fetch/svn.py @@ -114,13 +114,15 @@ class Svn(Fetch):          if command is "info":              svncmd = "%s info %s %s://%s/%s/" % (basecmd, " ".join(options), proto, svnroot, ud.module)          else: +            suffix = ""              if ud.revision:                  options.append("-r %s" % ud.revision) +                suffix = "@%s" % (ud.revision)              elif ud.date:                  options.append("-r {%s}" % ud.date)              if command is "fetch": -                svncmd = "%s co %s %s://%s/%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, ud.module) +                svncmd = "%s co %s %s://%s/%s%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, suffix, ud.module)              elif command is "update":                  svncmd = "%s update %s" % (basecmd, " ".join(options))              else: diff --git a/bitbake-dev/lib/bb/taskdata.py b/bitbake-dev/lib/bb/taskdata.py index 782dfb0b78..64ab032c3c 100644 --- a/bitbake-dev/lib/bb/taskdata.py +++ b/bitbake-dev/lib/bb/taskdata.py @@ -340,7 +340,10 @@ class TaskData:              self.add_provider_internal(cfgData, dataCache, item)          except bb.providers.NoProvider:              if self.abort: -                bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item))) +                if self.get_rdependees_str(item): +                    bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item))) +                else: +                    bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))                  raise              targetid = self.getbuild_id(item)              self.remove_buildtarget(targetid) @@ -358,7 +361,10 @@ class TaskData:              return          if not item in dataCache.providers: -            bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item))) +            if self.get_rdependees_str(item): +                bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item))) +            else: +                bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))              bb.event.fire(bb.event.NoProvider(item, cfgData))              raise bb.providers.NoProvider(item) @@ -536,7 +542,10 @@ class TaskData:                  except bb.providers.NoProvider:                      targetid = self.getbuild_id(target)                      if self.abort and targetid in self.external_targets: -                        bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target))) +                        if self.get_rdependees_str(target): +                            bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target))) +                        else: +                            bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (target))                          raise                      self.remove_buildtarget(targetid)              for target in self.get_unresolved_run_targets(dataCache): diff --git a/bitbake-dev/lib/bb/utils.py b/bitbake-dev/lib/bb/utils.py index 33a0c17650..90ba9ac2e0 100644 --- a/bitbake-dev/lib/bb/utils.py +++ b/bitbake-dev/lib/bb/utils.py @@ -323,7 +323,6 @@ def preserved_envvars_list():          'HOME',          'LANG',          'LOGNAME', -        'OEROOT',          'PATH',          'PWD',          'SESSION_MANAGER', diff --git a/bitbake/ChangeLog b/bitbake/ChangeLog index 2d50c0e364..a053ab839e 100644 --- a/bitbake/ChangeLog +++ b/bitbake/ChangeLog @@ -59,7 +59,20 @@ Changes in BitBake 1.8.x:  	  all variable from the environment. If BB_ENV_WHITELIST is set, that whitelist will be  	  used instead of the internal bitbake one. Alternatively, BB_ENV_EXTRAWHITE can be used  	  to extend the internal whitelist. +	- Perforce fetcher fix to use commandline options instead of being overriden by the environment +	- use @rev when doing a svn checkout +	- Add osc fetcher (from Joshua Lock in Poky)  	- When SRCREV autorevisioning for a recipe is in use, don't cache the recipe +	- Add tryaltconfigs option to control whether bitbake trys using alternative providers +	  to fulfil failed dependencies. It defaults to off, changing the default since this +	  behaviour confuses many users and isn't often useful. +	- Improve lock file function error handling +	- Add username handling to the git fetcher (Robert Bragg) +	- Add support for HTTP_PROXY and HTTP_PROXY_IGNORE variables to the wget fetcher +	- Export more variables to the fetcher commands to allow ssh checkouts and checkouts through  +	  proxies to work better. (from Poky) +	- Also allow user and pswd options in SRC_URIs globally (from Poky) +	- Improve proxy handling when using mirrors (from Poky)  Changes in BitBake 1.8.10:  	- Psyco is available only for x86 - do not use it on other architectures. @@ -104,6 +117,7 @@ Changes in BitBake 1.8.10:  	- Add support for branches in git fetcher (Otavio Salvador, Michael Lauer)  	- Make taskdata and runqueue errors more user friendly  	- Add norecurse and fullpath options to cvs fetcher +	- bb.utils.prunedir can cope with symlinks to directories without exceptions  Changes in Bitbake 1.8.8:  	- Rewrite svn fetcher to make adding extra operations easier  diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py index 1c87bfa12d..a4a4f47cef 100644 --- a/bitbake/lib/bb/cache.py +++ b/bitbake/lib/bb/cache.py @@ -95,7 +95,11 @@ class Cache:                  bb.msg.note(1, bb.msg.domain.Cache, "Invalid cache found, rebuilding...")                  self.depends_cache = {}          else: -            bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...") +            try: +                os.stat( self.cachefile ) +                bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...") +            except OSError: +                pass      def getVar(self, var, fn, exp = 0):          """ diff --git a/bitbake/lib/bb/fetch/hg.py b/bitbake/lib/bb/fetch/hg.py index 1cd5a8aa5c..b87fd0fbe5 100644 --- a/bitbake/lib/bb/fetch/hg.py +++ b/bitbake/lib/bb/fetch/hg.py @@ -79,7 +79,7 @@ class Hg(Fetch):              host = "/"              ud.host = "localhost" -        if ud.user == None: +        if not ud.user:              hgroot = host + ud.path          else:              hgroot = ud.user + "@" + host + ud.path diff --git a/bitbake/lib/bb/fetch/perforce.py b/bitbake/lib/bb/fetch/perforce.py index b594d2bde2..2fb38b4190 100644 --- a/bitbake/lib/bb/fetch/perforce.py +++ b/bitbake/lib/bb/fetch/perforce.py @@ -67,14 +67,15 @@ class Perforce(Fetch):      doparse = staticmethod(doparse)      def getcset(d, depot,host,user,pswd,parm): +        p4opt = ""          if "cset" in parm:              return parm["cset"];          if user: -            data.setVar('P4USER', user, d) +            p4opt += " -u %s" % (user)          if pswd: -            data.setVar('P4PASSWD', pswd, d) +            p4opt += " -P %s" % (pswd)          if host: -            data.setVar('P4PORT', host, d) +            p4opt += " -p %s" % (host)          p4date = data.getVar("P4DATE", d, 1)          if "revision" in parm: @@ -85,8 +86,8 @@ class Perforce(Fetch):              depot += "@%s" % (p4date)          p4cmd = data.getVar('FETCHCOMMAND_p4', d, 1) -        bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s changes -m 1 %s" % (p4cmd, depot)) -        p4file = os.popen("%s changes -m 1 %s" % (p4cmd,depot)) +        bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s%s changes -m 1 %s" % (p4cmd, p4opt, depot)) +        p4file = os.popen("%s%s changes -m 1 %s" % (p4cmd, p4opt, depot))          cset = p4file.readline().strip()          bb.msg.debug(1, bb.msg.domain.Fetcher, "READ %s" % (cset))          if not cset: @@ -146,14 +147,15 @@ class Perforce(Fetch):          data.update_data(localdata)          # Get the p4 command +        p4opt = ""          if user: -            data.setVar('P4USER', user, localdata) +            p4opt += " -u %s" % (user)          if pswd: -            data.setVar('P4PASSWD', pswd, localdata) +            p4opt += " -P %s" % (pswd)          if host: -            data.setVar('P4PORT', host, localdata) +            p4opt += " -p %s" % (host)          p4cmd = data.getVar('FETCHCOMMAND', localdata, 1) @@ -175,8 +177,8 @@ class Perforce(Fetch):          os.chdir(tmpfile)          bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc) -        bb.msg.note(1, bb.msg.domain.Fetcher, "%s files %s" % (p4cmd, depot)) -        p4file = os.popen("%s files %s" % (p4cmd, depot)) +        bb.msg.note(1, bb.msg.domain.Fetcher, "%s%s files %s" % (p4cmd, p4opt, depot)) +        p4file = os.popen("%s%s files %s" % (p4cmd, p4opt, depot))          if not p4file:              bb.error("Fetch: unable to get the P4 files from %s" % (depot)) @@ -193,7 +195,7 @@ class Perforce(Fetch):              dest = list[0][len(path)+1:]              where = dest.find("#") -            os.system("%s print -o %s/%s %s" % (p4cmd, module,dest[:where],list[0])) +            os.system("%s%s print -o %s/%s %s" % (p4cmd, p4opt, module,dest[:where],list[0]))              count = count + 1          if count == 0: diff --git a/bitbake/lib/bb/fetch/svn.py b/bitbake/lib/bb/fetch/svn.py index 5e5b31b3ad..aead1629b3 100644 --- a/bitbake/lib/bb/fetch/svn.py +++ b/bitbake/lib/bb/fetch/svn.py @@ -114,13 +114,15 @@ class Svn(Fetch):          if command is "info":              svncmd = "%s info %s %s://%s/%s/" % (basecmd, " ".join(options), proto, svnroot, ud.module)          else: +            suffix = ""              if ud.revision:                  options.append("-r %s" % ud.revision) +                suffix = "@%s" % (ud.revision)              elif ud.date:                  options.append("-r {%s}" % ud.date)              if command is "fetch": -                svncmd = "%s co %s %s://%s/%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, ud.module) +                svncmd = "%s co %s %s://%s/%s%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, suffix, ud.module)              elif command is "update":                  svncmd = "%s update %s" % (basecmd, " ".join(options))              else: diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py index 782dfb0b78..64ab032c3c 100644 --- a/bitbake/lib/bb/taskdata.py +++ b/bitbake/lib/bb/taskdata.py @@ -340,7 +340,10 @@ class TaskData:              self.add_provider_internal(cfgData, dataCache, item)          except bb.providers.NoProvider:              if self.abort: -                bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item))) +                if self.get_rdependees_str(item): +                    bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item))) +                else: +                    bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))                  raise              targetid = self.getbuild_id(item)              self.remove_buildtarget(targetid) @@ -358,7 +361,10 @@ class TaskData:              return          if not item in dataCache.providers: -            bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item))) +            if self.get_rdependees_str(item): +                bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item))) +            else: +                bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))              bb.event.fire(bb.event.NoProvider(item, cfgData))              raise bb.providers.NoProvider(item) @@ -536,7 +542,10 @@ class TaskData:                  except bb.providers.NoProvider:                      targetid = self.getbuild_id(target)                      if self.abort and targetid in self.external_targets: -                        bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target))) +                        if self.get_rdependees_str(target): +                            bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target))) +                        else: +                            bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (target))                          raise                      self.remove_buildtarget(targetid)              for target in self.get_unresolved_run_targets(dataCache): diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index cc3d03f609..5015779f8d 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py @@ -323,7 +323,6 @@ def preserved_envvars_list():          'HOME',          'LANG',          'LOGNAME', -        'OEROOT',          'PATH',          'PWD',          'SESSION_MANAGER', | 
