aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-02-08 21:29:02 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-02-08 21:29:02 +0200
commitcdf99fa3be509bf895c96da7c7ccb46d8dd0b2b0 (patch)
treef1411bb61a3de37708f442a9e4a0885b0e68c6a9
parent9ad292165924bdf8927551d3fdc960066dc3ec41 (diff)
downloadmeson-cdf99fa3be509bf895c96da7c7ccb46d8dd0b2b0.zip
meson-cdf99fa3be509bf895c96da7c7ccb46d8dd0b2b0.tar.gz
meson-cdf99fa3be509bf895c96da7c7ccb46d8dd0b2b0.tar.bz2
Fix dependency info.
-rwxr-xr-xbuilder_install.py17
-rwxr-xr-xdepfixer.py3
-rwxr-xr-xgenerators.py7
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)