aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-02-08 21:07:53 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-02-08 21:07:53 +0200
commit9ad292165924bdf8927551d3fdc960066dc3ec41 (patch)
treea0116e2eb17b87b85fcceb3531e7826e797839c1
parentc5b3d913a3cbadbef0f378968db7711d82920295 (diff)
downloadmeson-9ad292165924bdf8927551d3fdc960066dc3ec41.zip
meson-9ad292165924bdf8927551d3fdc960066dc3ec41.tar.gz
meson-9ad292165924bdf8927551d3fdc960066dc3ec41.tar.bz2
Can install targets.
-rwxr-xr-xbuilder_install.py15
-rwxr-xr-xgenerators.py17
2 files changed, 25 insertions, 7 deletions
diff --git a/builder_install.py b/builder_install.py
index a31c133..4f2a295 100755
--- a/builder_install.py
+++ b/builder_install.py
@@ -14,16 +14,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-import sys, pickle
+import sys, pickle, os, shutil
class InstallData():
- def __init__(self, src_dir, build_dir):
- self.src_dir = src_dir
- self.build_dir = build_dir
+ def __init__(self):
+ self.targets = []
def do_install(datafilename):
ifile = open(datafilename, 'rb')
d = pickle.load(ifile)
+ for t in d.targets:
+ fullfilename = t[0]
+ outdir = t[1]
+ fname = os.path.split(fullfilename)[1]
+ outname = os.path.join(outdir, fname)
+ print('Copying %s to %s' % (fname, outdir))
+ os.makedirs(outdir, exist_ok=True)
+ shutil.copyfile(fullfilename, outname)
if __name__ == '__main__':
if len(sys.argv) != 2:
diff --git a/generators.py b/generators.py
index 9f468fa..5100453 100755
--- a/generators.py
+++ b/generators.py
@@ -171,9 +171,20 @@ class NinjaGenerator(Generator):
self.generate_install_data(outfile, install_data)
def generate_install_data(self, outfile, install_data_file):
- #d['source_dir'] = self.environment.get_source_dir()
- #d['build_dir'] = self.environment.get_build_dir()
- d = InstallData(self.environment.get_source_dir(), self.environment.get_build_dir())
+ prefix = self.environment.get_prefix()
+ d = InstallData()
+ libdir = os.path.join(prefix, self.environment.get_libdir())
+ bindir = os.path.join(prefix, self.environment.get_bindir())
+
+ for tmp in self.build.get_targets().items():
+ (name, t) = tmp
+ if t.should_install():
+ if isinstance(t, interpreter.Executable):
+ outdir = bindir
+ else:
+ outdir = libdir
+ i = [os.path.join(self.environment.get_build_dir(), self.get_target_filename(t)), outdir]
+ d.targets.append(i)
ofile = open(install_data_file, 'wb')
pickle.dump(d, ofile)