Merged postconf script.

pull/431/head
Jussi Pakkanen 9 years ago
commit 5498f16fb3
  1. 6
      mesonbuild/backend/backends.py
  2. 1
      mesonbuild/build.py
  3. 12
      mesonbuild/interpreter.py
  4. 1
      mesonbuild/mesonmain.py
  5. 5
      test cases/common/107 postconf/meson.build
  6. 11
      test cases/common/107 postconf/postconf.py
  7. 5
      test cases/common/107 postconf/prog.c
  8. 1
      test cases/common/107 postconf/raw.dat
  9. 5
      test cases/common/108 postconf with args/meson.build
  10. 13
      test cases/common/108 postconf with args/postconf.py
  11. 5
      test cases/common/108 postconf with args/prog.c
  12. 1
      test cases/common/108 postconf with args/raw.dat

@ -17,6 +17,7 @@ from .. import build
from .. import dependencies
from .. import mesonlib
import json
import subprocess
from ..coredata import MesonException
class InstallData():
@ -435,3 +436,8 @@ class Backend():
cmd.append(i)
cmd = [i.replace('\\', '/') for i in cmd]
return (srcs, ofilenames, cmd)
def run_postconf_scripts(self):
for s in self.build.postconf_scripts:
cmd = s['exe'].get_command() + [self.environment.get_source_dir(), self.environment.get_build_dir()] + s['args']
subprocess.check_call(cmd)

@ -98,6 +98,7 @@ class Build:
self.pot = []
self.subprojects = {}
self.install_scripts = []
self.postconf_scripts = []
self.install_dirs = []
self.dep_manifest_name = None
self.dep_manifest = {}

@ -795,6 +795,7 @@ class MesonMain(InterpreterObject):
'source_root' : self.source_root_method,
'build_root' : self.build_root_method,
'add_install_script' : self.add_install_script_method,
'add_postconf_script' : self.add_postconf_script_method,
'install_dependency_manifest': self.install_dependency_manifest_method,
'project_version': self.project_version_method,
})
@ -810,6 +811,17 @@ class MesonMain(InterpreterObject):
raise InterpreterException('Can not find install script %s.' % scriptbase)
self.build.install_scripts.append(build.InstallScript([scriptfile]))
def add_postconf_script_method(self, args, kwargs):
if len(args) < 1:
raise InterpreterException('Not enough arguments')
check_stringlist(args, 'add_postconf_script arguments must be strings.')
scriptbase = args[0]
search_dir = os.path.join(self.interpreter.environment.source_dir,
self.interpreter.subdir)
exe = dependencies.ExternalProgram(scriptbase, search_dir=search_dir)
extras = args[1:]
self.build.postconf_scripts.append({'exe': exe, 'args': extras})
def current_source_dir_method(self, args, kwargs):
src = self.interpreter.environment.source_dir
sub = self.interpreter.subdir

@ -168,6 +168,7 @@ itself as required.'''
intr.run()
env.dump_coredata()
g.generate(intr)
g.run_postconf_scripts()
dumpfile = os.path.join(env.get_scratch_dir(), 'build.dat')
pickle.dump(b, open(dumpfile, 'wb'))

@ -0,0 +1,5 @@
project('postconf script', 'c')
meson.add_postconf_script('postconf.py')
test('post', executable('prog', 'prog.c'))

@ -0,0 +1,11 @@
#!/usr/bin/env python3
import sys, os
template = '''#pragma once
#define THE_NUMBER {}
'''
data = open(os.path.join(sys.argv[1], 'raw.dat')).readline().strip()
open(os.path.join(sys.argv[2], 'generated.h'), 'w').write(template.format(data))

@ -0,0 +1,5 @@
#include"generated.h"
int main(int argc, char **argv) {
return THE_NUMBER != 9;
}

@ -0,0 +1,5 @@
project('postconf script', 'c')
meson.add_postconf_script('postconf.py', '5', '33')
test('post', executable('prog', 'prog.c'))

@ -0,0 +1,13 @@
#!/usr/bin/env python3
import sys, os
template = '''#pragma once
#define THE_NUMBER {}
#define THE_ARG1 {}
#define THE_ARG2 {}
'''
data = open(os.path.join(sys.argv[1], 'raw.dat')).readline().strip()
open(os.path.join(sys.argv[2], 'generated.h'), 'w').write(template.format(data, sys.argv[3], sys.argv[4]))

@ -0,0 +1,5 @@
#include"generated.h"
int main(int argc, char **argv) {
return THE_NUMBER != 9 || THE_ARG1 != 5 || THE_ARG2 != 33;
}
Loading…
Cancel
Save