diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-08 21:29:02 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-08 21:29:02 +0200 |
commit | cdf99fa3be509bf895c96da7c7ccb46d8dd0b2b0 (patch) | |
tree | f1411bb61a3de37708f442a9e4a0885b0e68c6a9 | |
parent | 9ad292165924bdf8927551d3fdc960066dc3ec41 (diff) | |
download | meson-cdf99fa3be509bf895c96da7c7ccb46d8dd0b2b0.zip meson-cdf99fa3be509bf895c96da7c7ccb46d8dd0b2b0.tar.gz meson-cdf99fa3be509bf895c96da7c7ccb46d8dd0b2b0.tar.bz2 |
Fix dependency info.
-rwxr-xr-x | builder_install.py | 17 | ||||
-rwxr-xr-x | depfixer.py | 3 | ||||
-rwxr-xr-x | generators.py | 7 |
3 files changed, 21 insertions, 6 deletions
diff --git a/builder_install.py b/builder_install.py index 4f2a295..354ef49 100755 --- a/builder_install.py +++ b/builder_install.py @@ -14,11 +14,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys, pickle, os, shutil +import sys, pickle, os, shutil, subprocess class InstallData(): - def __init__(self): + def __init__(self, depfixer, dep_prefix): self.targets = [] + self.depfixer = depfixer + self.dep_prefix = dep_prefix def do_install(datafilename): ifile = open(datafilename, 'rb') @@ -28,9 +30,18 @@ def do_install(datafilename): outdir = t[1] fname = os.path.split(fullfilename)[1] outname = os.path.join(outdir, fname) - print('Copying %s to %s' % (fname, outdir)) + print('Installing %s to %s' % (fname, outdir)) os.makedirs(outdir, exist_ok=True) shutil.copyfile(fullfilename, outname) + shutil.copystat(fullfilename, outname) + p = subprocess.Popen([d.depfixer, outname, d.dep_prefix], stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + (stdo, stde) = p.communicate() + if p.returncode != 0: + print('Could not fix dependency info.\n') + print('Stdout:\n%s\n' % stdo.decode()) + print('Stderr:\n%s\n' % stde.decode()) + sys.exit(1) if __name__ == '__main__': if len(sys.argv) != 2: diff --git a/depfixer.py b/depfixer.py index bdc9035..2d64c0a 100755 --- a/depfixer.py +++ b/depfixer.py @@ -63,7 +63,8 @@ class Elf(): def parse_header(self): self.e_ident = struct.unpack('16s', self.bf.read(16))[0] if self.e_ident[1:4] != b'ELF': - raise RuntimeError('File "%s" is not an ELF file.' % self.bfile) + print('File "%s" is not an ELF file.' % self.bfile) + sys.exit(0) self.e_type = struct.unpack('h', self.bf.read(2))[0] self.e_machine = struct.unpack('h', self.bf.read(2))[0] self.e_version = struct.unpack('i', self.bf.read(4))[0] diff --git a/generators.py b/generators.py index 5100453..535e9fe 100755 --- a/generators.py +++ b/generators.py @@ -171,8 +171,10 @@ class NinjaGenerator(Generator): self.generate_install_data(outfile, install_data) def generate_install_data(self, outfile, install_data_file): + depfixer = os.path.join(self.get_script_root(), 'depfixer.py') + prefix = self.environment.get_prefix() - d = InstallData() + d = InstallData(depfixer, './') # Fixme libdir = os.path.join(prefix, self.environment.get_libdir()) bindir = os.path.join(prefix, self.environment.get_bindir()) @@ -305,7 +307,8 @@ class NinjaGenerator(Generator): pass def generate_ending(self, outfile): - build = 'build all: phony %s\n' % ' '.join(self.build.get_targets().keys()) + targetlist = [self.get_target_filename(t) for t in self.build.get_targets().values()] + build = 'build all: phony %s\n' % ' '.join(targetlist) default = 'default all\n\n' outfile.write(build) outfile.write(default) |