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 dependencies
from .. import mesonlib from .. import mesonlib
import json import json
import subprocess
from ..coredata import MesonException from ..coredata import MesonException
class InstallData(): class InstallData():
@ -435,3 +436,8 @@ class Backend():
cmd.append(i) cmd.append(i)
cmd = [i.replace('\\', '/') for i in cmd] cmd = [i.replace('\\', '/') for i in cmd]
return (srcs, ofilenames, 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.pot = []
self.subprojects = {} self.subprojects = {}
self.install_scripts = [] self.install_scripts = []
self.postconf_scripts = []
self.install_dirs = [] self.install_dirs = []
self.dep_manifest_name = None self.dep_manifest_name = None
self.dep_manifest = {} self.dep_manifest = {}

@ -795,6 +795,7 @@ class MesonMain(InterpreterObject):
'source_root' : self.source_root_method, 'source_root' : self.source_root_method,
'build_root' : self.build_root_method, 'build_root' : self.build_root_method,
'add_install_script' : self.add_install_script_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, 'install_dependency_manifest': self.install_dependency_manifest_method,
'project_version': self.project_version_method, 'project_version': self.project_version_method,
}) })
@ -810,6 +811,17 @@ class MesonMain(InterpreterObject):
raise InterpreterException('Can not find install script %s.' % scriptbase) raise InterpreterException('Can not find install script %s.' % scriptbase)
self.build.install_scripts.append(build.InstallScript([scriptfile])) 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): def current_source_dir_method(self, args, kwargs):
src = self.interpreter.environment.source_dir src = self.interpreter.environment.source_dir
sub = self.interpreter.subdir sub = self.interpreter.subdir

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