From 6da11532282ec2a481ad227088713140b8d6de0a Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Sat, 24 Nov 2012 14:56:30 +0000 Subject: Add a target to generate relocatable snapshots --- (limited to 'devbot') diff --git a/devbot/config.py b/devbot/config.py index aabacb3..07fc753 100644 --- a/devbot/config.py +++ b/devbot/config.py @@ -1,5 +1,6 @@ import json import os +import tempfile from devbot import distro @@ -38,6 +39,10 @@ class Module: def get_build_dir(self): return os.path.join(build_dir, self.name) +def _ensure_dir(dir): + if not os.path.exists(dir): + os.mkdir(dir) + def set_config_dir(dir): global config_dir config_dir = dir @@ -46,7 +51,31 @@ def set_logs_dir(dir): global logs_dir logs_dir = dir -def set_install_dir(dir): +def _get_real_install_dir(dir, relocatable): + real_prefix_path = os.path.join(dir, "real_prefix") + + if os.path.exists(real_prefix_path): + with open(real_prefix_path) as f: + install_dir = f.read() + elif relocatable: + tmp_dir = tempfile.mkdtemp(prefix="sugar-build") + install_dir = os.path.join(tmp_dir, "install") + with open(real_prefix_path, "w") as f: + f.write(install_dir) + else: + return dir + + tmp_dir = os.path.dirname(install_dir) + if not os.path.exists(tmp_dir): + os.mkdir(tmpdir) + + if os.path.islink(install_dir): + os.remove(install_dir) + os.symlink(dir, install_dir) + + return install_dir + +def set_install_dir(dir, relocatable=False): global system_lib_dir global install_dir global devbot_dir @@ -55,9 +84,17 @@ def set_install_dir(dir): global etc_dir global lib_dir - install_dir = dir + _ensure_dir(dir) + + install_dir = _get_real_install_dir(dir, relocatable) + devbot_dir = os.path.join(install_dir, "devbot") + _ensure_dir(devbot_dir) + share_dir = os.path.join(install_dir, "share") + _ensure_dir(share_dir) + _ensure_dir(os.path.join(share_dir, "aclocal")) + bin_dir = os.path.join(install_dir, "bin") etc_dir = os.path.join(install_dir, "etc") @@ -70,11 +107,15 @@ def set_install_dir(dir): def set_source_dir(dir): global source_dir + source_dir = dir + _ensure_dir(source_dir) def set_build_dir(dir): global build_dir + build_dir = dir + _ensure_dir(build_dir) def set_commands_dir(dir): global commands_dir diff --git a/devbot/environ.py b/devbot/environ.py index 12140b7..b1a0453 100644 --- a/devbot/environ.py +++ b/devbot/environ.py @@ -4,7 +4,6 @@ import os from devbot import config def setup(): - _setup_dirs() _setup_gconf() _setup_variables() @@ -76,13 +75,3 @@ def _setup_gconf(): os.environ["GCONF_SCHEMA_INSTALL_SOURCE"] = \ "xml:merged:" + os.path.join(gconf_dir, "gconf.xml.defaults") - -def _setup_dirs(): - for dir in [config.source_dir, - config.install_dir, - config.build_dir, - config.share_dir, - config.devbot_dir, - os.path.join(config.share_dir, "aclocal")]: - if not os.path.exists(dir): - os.mkdir(dir) -- cgit v0.9.1