1 from tempfile
import mkdtemp
7 os.environ[
'CMT2CMAKECACHE'] =
'test.cache'
8 if os.path.exists(
'test.cache'):
9 os.remove(
'test.cache')
15 cmt2cmake.cache[
'GaudiKernel'] = {
'libraries': [
'GaudiKernel'],
17 cmt2cmake.cache[
'GaudiUtils'] = {
'libraries': [
'GaudiUtilsLib'],
19 cmt2cmake.cache[
'LHCbKernel'] = {
'libraries': [
'LHCbKernel'],
21 cmt2cmake.cache[
'SomeSubdir'] = {
'libraries': [
'SubdirLib'],
23 cmt2cmake.cache[
'JustHeaders'] = {
'libraries': [],
25 cmt2cmake.cache[repr((
'Baseproject',
'v1r0'))] = {
'heptools':
'65'}
26 cmt2cmake.cache[repr((
'TestProjectHT',
'v3r0'))] = {
'heptools':
'23'}
29 cmt2cmake.data_packages = set([
'DataPack',
'Another/DtPkg',
'SpecialThing'])
37 Create a directory structure from the content of files.
39 @param files: a dictionary or list of pairs mapping a filename to the content
40 if the content is a dictionary, recurse
41 @param rootdir: base directory
43 if type(files)
is dict:
47 if not os.path.exists(rootdir):
51 for filename, data
in files:
52 filename = os.path.join(rootdir, filename)
53 if type(data)
is dict:
56 d = os.path.dirname(filename)
57 if not os.path.exists(d):
59 f = open(filename,
"w")
66 Helper class to test the Package.
68 def __init__(self, name, requirements, files=None):
71 files[
"cmt/requirements"] = requirements
74 rootdir = os.path.join(self.
tmpdir, name)
77 super(PackWrap, self).
__init__(rootdir)
80 shutil.rmtree(self.
tmpdir, ignore_errors=
False)
84 Helper class to test the Project.
86 def __init__(self, name, proj_cmt, files=None):
89 files[
"cmt/project.cmt"] = proj_cmt
92 rootdir = os.path.join(self.
tmpdir, name)
95 super(ProjWrap, self).
__init__(rootdir)
98 shutil.rmtree(self.
tmpdir, ignore_errors=
False)
103 extracts the arguments to all the calls to a cmake function
105 exp = re.compile(
r'\b{0}\s*\(([^)]*)\)'.
format(function), flags=re.MULTILINE)
106 return [m.group(1)
for m
in exp.finditer(cmakelists)]
114 buildDir({
'NoPackage': {
'a_file.txt':
None}}, d)
117 assert False,
'bad package not recognized'
126 package ThisIsAPackage
129 branches cmt branches are ignored
130 macro test parsing of \\
133 pkg =
PackWrap(
"ThisIsAPackage", requirements)
135 cmakelists = pkg.generate()
138 calls =
getCalls(
"gaudi_subdir", cmakelists)
139 assert calls,
"gaudi_subdir not called"
140 assert len(calls) == 1,
"gaudi_subdir called more than once"
142 args = calls[0].strip().split()
143 assert args == [
"ThisIsAPackage",
"v123r456"], args
154 use GaudiCoreSvc v* # comment
155 use GaudiUtils * -no_auto_imports
157 use LHCbKernel v* Kernel
159 pkg =
PackWrap(
"Test", requirements)
161 cmakelists = pkg.generate()
164 calls =
getCalls(
"gaudi_depends_on_subdirs", cmakelists)
165 assert calls,
"gaudi_depends_on_subdirs not called"
169 args.update(call.strip().split())
170 expected = set([
'GaudiKernel',
'GaudiAlg',
'GaudiCoreSvc',
171 'GaudiUtils',
'Kernel/LHCbKernel'])
172 assert args == expected
181 pkg =
PackWrap(
"Test", requirements)
183 cmakelists = pkg.generate()
186 calls =
getCalls(
"gaudi_depends_on_subdirs", cmakelists)
187 assert not calls,
"gaudi_depends_on_subdirs called"
195 use Boost v* LCG_Interfaces
196 use Python v* LCG_Interfaces
197 use XercesC v* LCG_Interfaces -no_auto_imports
199 pkg =
PackWrap(
"Test", requirements)
201 cmakelists = pkg.generate()
204 expected = set([
'Boost',
'XercesC'])
206 calls =
getCalls(
"find_package", cmakelists)
207 assert calls,
"find_pacakge not called"
208 assert len(calls) == len(expected)
212 args.add(call.strip().split()[0])
214 assert args == expected
218 #============================================================================
222 # Structure, i.e. directories to process.
223 #============================================================================
224 branches cmt doc Tell1Kernel
227 #============================================================================
230 apply_pattern install_more_includes more=Tell1Kernel
232 pkg =
PackWrap(
"Tell1Kernel", requirements, files={
"Tell1Kernel/hdr.h":
None})
234 cmakelists = pkg.generate()
237 calls =
getCalls(
"gaudi_install_headers", cmakelists)
242 args.update(call.strip().split())
243 expected = set([
'Tell1Kernel'])
244 assert args == expected
251 apply_pattern install_python_modules
253 pkg =
PackWrap(
"Test", requirements, files={
"python/Test/__init__.py":
None})
255 cmakelists = pkg.generate()
258 calls =
getCalls(
"gaudi_install_python_modules", cmakelists)
266 macro TestConfUserModules "Test.CustomModule1 Test.CustomModule2"
268 apply_pattern install_python_modules
270 pkg =
PackWrap(
"Test", requirements, files={
"python/Test/__init__.py":
None})
272 cmakelists = pkg.generate()
275 calls =
getCalls(
"gaudi_install_python_modules", cmakelists)
278 calls =
getCalls(
"set_property", cmakelists)
280 args = calls[0].strip().split()
281 assert args == [
'DIRECTORY',
'PROPERTY',
'CONFIGURABLE_USER_MODULES',
'Test.CustomModule1',
'Test.CustomModule2'], args
288 apply_pattern install_scripts
290 pkg =
PackWrap(
"Test", requirements, files={
"scripts/someScript":
None})
292 cmakelists = pkg.generate()
295 calls =
getCalls(
"gaudi_install_scripts", cmakelists)
305 pkg =
PackWrap(
"Test", requirements, files={
"tests/qmtest/test.qms/a_test.qmt":
None})
307 cmakelists = pkg.generate()
310 calls =
getCalls(
"gaudi_add_test", cmakelists)
311 assert calls,
"no test added"
312 assert len(calls) == 1,
"gaudi_add_test called more than once"
314 args = calls[0].strip().split()
315 assert args == [
"QMTest",
"QMTEST"]
322 library TestLib lib/*.cpp
323 apply_pattern linker_library library=TestLib
325 library TestComp component/*.cpp
326 apply_pattern component_library library=TestComp
328 library TestTestLib test/lib/*.cpp -group=tests
329 apply_pattern linker_library library=TestTestLib
331 library TestTestComp test/component/*.cpp -group=tests
332 apply_pattern component_library library=TestTestComp
334 apply_pattern install_more_includes more=TestIncludes
336 pkg =
PackWrap(
"Test", requirements, files={
'TestIncludes': {}})
338 print 'components', pkg.component_libraries
339 print 'linker', pkg.linker_libraries
340 print 'libraries', pkg.libraries
342 assert pkg.component_libraries == set([
'TestComp',
'TestTestComp'])
343 assert pkg.linker_libraries == set([
'TestLib',
'TestTestLib'])
346 cmakelists = pkg.generate()
349 calls =
getCalls(
"gaudi_add_library", cmakelists)
350 assert len(calls) == 2,
"gaudi_add_library wrong count %d" % len(calls)
352 assert re.match(
r' *TestLib\b', l)
353 assert re.search(
r'\bPUBLIC_HEADERS +TestIncludes', l)
355 assert re.match(
r' *TestTestLib\b', l)
356 assert re.search(
r'\bPUBLIC_HEADERS +TestIncludes', l)
357 assert re.search(
r'\bLINK_LIBRARIES +TestLib', l)
359 calls =
getCalls(
"gaudi_add_module", cmakelists)
360 assert len(calls) == 2,
"gaudi_add_module wrong count %d" % len(calls)
363 assert re.match(
r' *TestComp\b', l)
364 assert not re.search(
r'\bPUBLIC_HEADERS\b', l)
365 assert re.search(
r'\bLINK_LIBRARIES +TestLib', l)
367 assert re.match(
r' *TestTestComp\b', l)
368 assert not re.search(
r'\bPUBLIC_HEADERS', l)
369 assert re.search(
r'\bLINK_LIBRARIES +TestLib +TestTestLib', l)
376 use Boost v* LCG_Interfaces
377 use XercesC v* LCG_Interfaces -no_auto_imports
379 library Lib1 lib1/*.cpp
380 apply_pattern component_library library=Lib1
382 library Lib2 lib2/*.cpp -import=XercesC
383 apply_pattern component_library library=Lib2
385 # We do not use variables
386 library Lib3 lib3/*.cpp a_variable=some_value
387 apply_pattern component_library library=Lib3
389 pkg =
PackWrap(
"Test", requirements, files={})
391 print 'components', pkg.component_libraries
392 print 'libraries', pkg.libraries
394 assert pkg.component_libraries == set([
'Lib1',
'Lib2',
'Lib3'])
397 cmakelists = pkg.generate()
400 calls =
getCalls(
"gaudi_add_module", cmakelists)
401 assert len(calls) == 3,
"gaudi_add_module wrong count %d" % len(calls)
404 assert re.match(
r' *Lib1\b', l)
405 assert not re.search(
r'\bPUBLIC_HEADERS\b', l)
406 assert re.search(
r'\bLINK_LIBRARIES +Boost', l)
407 assert re.search(
r'\bINCLUDE_DIRS +Boost', l)
409 assert re.match(
r' *Lib2\b', l)
410 assert not re.search(
r'\bPUBLIC_HEADERS', l)
411 assert re.search(
r'\bLINK_LIBRARIES +Boost +XercesC', l)
412 assert re.search(
r'\bINCLUDE_DIRS +Boost +XercesC', l)
414 assert re.match(
r' *Lib3\b', l)
415 assert not re.search(
r'\bPUBLIC_HEADERS', l)
416 assert re.search(
r'\bLINK_LIBRARIES +Boost', l)
417 assert re.search(
r'\bINCLUDE_DIRS +Boost', l)
427 apply_pattern component_library library=Lib1
429 library Lib2 lib2/*.cpp
430 apply_pattern linker_library library=Lib2
432 library Lib3 lib3/*.cpp
434 library Lib4 lib4/*.cpp
435 apply_pattern linker_library library="Lib4"
438 pkg =
PackWrap(
"Test", requirements, files={})
440 print 'components', pkg.component_libraries
441 print 'linker', pkg.linker_libraries
442 print 'libraries', pkg.libraries
444 assert pkg.component_libraries == set([
'Lib1'])
445 assert pkg.linker_libraries == set([
'Lib2',
'Lib4'])
446 assert len(pkg.libraries) == 4
448 cmakelists = pkg.generate()
451 calls =
getCalls(
"gaudi_add_module", cmakelists)
452 assert len(calls) == 1,
"gaudi_add_module wrong count %d" % len(calls)
455 assert re.match(
r' *Lib1\b', l)
456 assert not re.search(
r'\bPUBLIC_HEADERS\b', l)
458 calls =
getCalls(
"gaudi_add_library", cmakelists)
459 assert len(calls) == 3,
"gaudi_add_module wrong count %d" % len(calls)
462 assert re.match(
r' *Lib2\b', l)
463 assert re.search(
r'\bNO_PUBLIC_HEADERS', l)
466 assert re.match(
r' *Lib3\b', l)
467 assert re.search(
r'\bNO_PUBLIC_HEADERS', l)
470 assert re.match(
r' *Lib4\b', l)
471 assert re.search(
r'\bNO_PUBLIC_HEADERS', l)
478 library TestLib1 ../src/subdir/*.cpp
479 apply_pattern linker_library library=TestLib1
481 library TestLib2 ../tests/src/subdir/*.cpp
482 apply_pattern linker_library library=TestLib2
484 library TestLib3 subdir/*.cpp
485 apply_pattern linker_library library=TestLib3
487 pkg =
PackWrap(
"Test", requirements, files={
'TestIncludes': {}})
489 assert pkg.linker_libraries == set([
'TestLib1',
'TestLib2',
'TestLib3'])
491 cmakelists = pkg.generate()
494 calls =
getCalls(
"gaudi_add_library", cmakelists)
495 assert len(calls) == 3,
"gaudi_add_library wrong count %d" % len(calls)
497 l = calls[0].strip().split()
498 assert l[0] ==
'TestLib1'
499 assert l[1] ==
'src/subdir/*.cpp'
501 l = calls[1].strip().split()
502 assert l[0] ==
'TestLib2'
503 assert l[1] ==
'tests/src/subdir/*.cpp'
505 l = calls[2].strip().split()
506 assert l[0] ==
'TestLib3'
507 assert l[1] ==
'src/subdir/*.cpp'
514 use Boost v* LCG_Interfaces
515 use XercesC v* LCG_Interfaces -no_auto_imports
518 use GaudiUtils * -no_auto_imports
522 apply_pattern component_library library=Lib1
524 library Lib2 *.cpp -import=XercesC
525 apply_pattern component_library library=Lib2
527 library Lib3 *.cpp -import=GaudiUtils
528 apply_pattern component_library library=Lib3
530 pkg =
PackWrap(
"Test", requirements, files={})
532 print 'components', pkg.component_libraries
533 print 'linker', pkg.linker_libraries
534 print 'libraries', pkg.libraries
536 assert pkg.component_libraries == set([
'Lib1',
'Lib2',
'Lib3'])
537 assert len(pkg.libraries) == 3
539 cmakelists = pkg.generate()
542 calls =
getCalls(
"gaudi_add_module", cmakelists)
543 assert len(calls) == 3,
"gaudi_add_module wrong count %d" % len(calls)
545 l = calls[0].strip().split()
546 assert l[0] ==
'Lib1'
547 links = set(l[l.index(
'LINK_LIBRARIES')+1:])
548 assert links == set([
'Boost',
'GaudiKernel'])
550 l = calls[1].strip().split()
551 assert l[0] ==
'Lib2'
552 assert 'LINK_LIBRARIES' in l
553 links = set(l[l.index(
'LINK_LIBRARIES')+1:])
554 assert links == set([
'Boost',
'GaudiKernel',
'XercesC'])
556 l = calls[2].strip().split()
557 assert l[0] ==
'Lib3'
558 assert 'LINK_LIBRARIES' in l
559 links = set(l[l.index(
'LINK_LIBRARIES')+1:])
560 assert links == set([
'Boost',
'GaudiKernel',
'GaudiUtilsLib'])
567 use LHCbKernel * Kernel
568 use SomeSubdir * Hat -no_auto_imports
571 apply_pattern component_library library=Lib1
573 library Lib2 *.cpp -import=SomeSubdir
574 apply_pattern component_library library=Lib2
576 pkg =
PackWrap(
"Test", requirements, files={})
578 print 'components', pkg.component_libraries
579 print 'linker', pkg.linker_libraries
580 print 'libraries', pkg.libraries
582 assert pkg.component_libraries == set([
'Lib1',
'Lib2'])
583 assert len(pkg.libraries) == 2
585 cmakelists = pkg.generate()
588 calls =
getCalls(
"gaudi_add_module", cmakelists)
589 assert len(calls) == 2,
"gaudi_add_module wrong count %d" % len(calls)
591 l = calls[0].strip().split()
592 assert l[0] ==
'Lib1'
593 links = set(l[l.index(
'LINK_LIBRARIES')+1:])
594 assert links == set([
'LHCbKernel'])
596 l = calls[1].strip().split()
597 assert l[0] ==
'Lib2'
598 links = set(l[l.index(
'LINK_LIBRARIES')+1:])
599 assert links == set([
'LHCbKernel',
'SubdirLib'])
609 apply_pattern component_library library=Lib1
611 pkg =
PackWrap(
"Test", requirements, files={})
613 assert pkg.component_libraries == set([
'Lib1'])
614 assert len(pkg.libraries) == 1
616 cmakelists = pkg.generate()
619 calls =
getCalls(
"gaudi_add_module", cmakelists)
620 assert len(calls) == 1,
"gaudi_add_module wrong count %d" % len(calls)
622 l = calls[0].strip().split()
623 assert l[0] ==
'Lib1'
624 assert 'LINK_LIBRARIES' not in l
628 if 'GaudiDummy' in cmt2cmake.cache:
629 del cmt2cmake.cache[
'GaudiDummy']
635 apply_pattern install_more_includes more=Dummy
638 apply_pattern linker_library library=Dummy
640 PackWrap(
"GaudiDummy", requirements, files={
'Dummy':{}})
642 assert cmt2cmake.cache[
'GaudiDummy'][
'libraries'] == [
'Dummy']
643 assert cmt2cmake.cache[
'GaudiDummy'][
'includes'] ==
False
646 if 'GaudiDummy' in cmt2cmake.cache:
647 del cmt2cmake.cache[
'GaudiDummy']
654 use JustHeaders v* Hat
657 apply_pattern linker_library library=Dummy
659 pkg =
PackWrap(
"GaudiDummy", requirements, files={
'Dummy':{}})
661 cmakelists = pkg.generate()
664 calls =
getCalls(
"gaudi_add_library", cmakelists)
665 assert len(calls) == 1,
"gaudi_add_library wrong count %d" % len(calls)
667 l = calls[0].strip().split()
668 assert l[0] ==
'Dummy'
669 assert 'INCLUDE_DIRS' in l
670 links = set(l[l.index(
'INCLUDE_DIRS')+1:])
671 assert links == set([
'JustHeaders',
'Hat/JustHeaders'])
674 if 'GaudiDummy' in cmt2cmake.cache:
675 del cmt2cmake.cache[
'GaudiDummy']
681 apply_pattern install_more_includes more=Dummy
683 PackWrap(
"GaudiDummy", requirements, files={
'Dummy':{}})
685 assert cmt2cmake.cache[
'GaudiDummy'][
'includes'] ==
True
686 assert not cmt2cmake.cache[
'GaudiDummy'][
'libraries']
694 apply_pattern component_library library=Lib1
696 pkg =
PackWrap(
"Test", requirements, files={})
698 cmakelists = pkg.generate()
701 cmakefile = os.path.join(pkg.path,
'CMakeLists.txt')
703 assert os.path.exists(cmakefile)
704 assert open(cmakefile).read() == cmakelists
712 apply_pattern component_library library=Lib1
714 pkg =
PackWrap(
"Test", requirements, files={
'CMakeLists.txt':
'dummy data'})
716 cmakefile = os.path.join(pkg.path,
'CMakeLists.txt')
719 assert open(cmakefile).read() ==
'dummy data'
729 apply_pattern god_headers files=../xml/*.xml
731 pkg =
PackWrap(
"Test", requirements, files={})
733 cmakelists = pkg.generate()
736 calls =
getCalls(
"include", cmakelists)
739 assert l ==
'GaudiObjDesc'
741 calls =
getCalls(
"god_build_headers", cmakelists)
742 assert len(calls) == 1,
"god_build_headers wrong count %d" % len(calls)
745 assert l ==
'xml/*.xml'
752 apply_pattern god_dictionary files=../xml/*.xml
754 pkg =
PackWrap(
"Test", requirements, files={})
756 cmakelists = pkg.generate()
759 calls =
getCalls(
"include", cmakelists)
762 assert l ==
'GaudiObjDesc'
764 calls =
getCalls(
"god_build_dictionary", cmakelists)
765 assert len(calls) == 1,
"god_build_dictionary wrong count %d" % len(calls)
768 assert l ==
'xml/*.xml'
775 use Boost v* LCG_Interfaces
777 apply_pattern god_headers files=../xml/*.xml
778 apply_pattern god_dictionary files=../xml/*.xml
780 pkg =
PackWrap(
"Test", requirements, files={})
782 cmakelists = pkg.generate()
785 calls =
getCalls(
"include", cmakelists)
788 assert l ==
'GaudiObjDesc'
790 calls =
getCalls(
"god_build_headers", cmakelists)
791 assert len(calls) == 1,
"god_build_headers wrong count %d" % len(calls)
793 calls =
getCalls(
"god_build_dictionary", cmakelists)
794 assert len(calls) == 1,
"god_build_dictionary wrong count %d" % len(calls)
796 l = calls[0].strip().split()
797 assert l[0] ==
'xml/*.xml'
798 assert 'LINK_LIBRARIES' in l
799 assert l[l.index(
'LINK_LIBRARIES')+1] ==
'Boost'
800 assert 'INCLUDE_DIRS' in l
801 assert l[l.index(
'INCLUDE_DIRS')+1] ==
'Boost'
808 use Boost v* LCG_Interfaces
811 apply_pattern linker_library library=Lib
813 apply_pattern god_headers files=../xml/*.xml
814 apply_pattern god_dictionary files=../xml/*.xml
816 pkg =
PackWrap(
"Test", requirements, files={})
818 cmakelists = pkg.generate()
821 calls =
getCalls(
"include", cmakelists)
824 assert l ==
'GaudiObjDesc'
826 calls =
getCalls(
"god_build_headers", cmakelists)
827 assert len(calls) == 1,
"god_build_headers wrong count %d" % len(calls)
829 calls =
getCalls(
"gaudi_add_library", cmakelists)
830 assert len(calls) == 1,
"gaudi_add_library wrong count %d" % len(calls)
832 calls =
getCalls(
"god_build_dictionary", cmakelists)
833 assert len(calls) == 1,
"god_build_dictionary wrong count %d" % len(calls)
835 l = calls[0].strip().split()
836 assert l[0] ==
'xml/*.xml'
837 assert 'LINK_LIBRARIES' in l
838 i = l.index(
'LINK_LIBRARIES')+1
839 assert l[i:i+2] == [
'Boost',
'Lib']
840 assert 'INCLUDE_DIRS' in l
841 assert l[l.index(
'INCLUDE_DIRS')+1] ==
'Boost'
843 hdr = cmakelists.find(
'god_build_headers')
844 lib = cmakelists.find(
'gaudi_add_library')
845 dct = cmakelists.find(
'god_build_dictionary')
846 assert hdr < lib
and lib < dct,
"wrong order of calls"
853 apply_pattern god_headers files=../xml/*.xml
854 macro TestObj2Doth_GODflags " -s ../Test/ "
856 pkg =
PackWrap(
"Test", requirements, files={})
858 cmakelists = pkg.generate()
861 calls =
getCalls(
"include", cmakelists)
864 assert l ==
'GaudiObjDesc'
866 calls =
getCalls(
"god_build_headers", cmakelists)
867 assert len(calls) == 1,
"god_build_headers wrong count %d" % len(calls)
869 l = calls[0].strip().split()
870 assert l[0] ==
'xml/*.xml'
871 assert 'DESTINATION' in l
872 assert l[l.index(
'DESTINATION')+1] ==
'Test'
879 apply_pattern god_headers files=../xml/*.xml
880 macro TestObj2Doth_GODflags " -s ../src/ "
882 pkg =
PackWrap(
"Test", requirements, files={})
884 cmakelists = pkg.generate()
887 calls =
getCalls(
"include", cmakelists)
890 assert l ==
'GaudiObjDesc'
892 calls =
getCalls(
"god_build_headers", cmakelists)
893 assert len(calls) == 1,
"god_build_headers wrong count %d" % len(calls)
895 l = calls[0].strip().split()
896 assert l[0] ==
'xml/*.xml'
897 assert 'PRIVATE' in l
898 assert 'DESTINTAION' not in l
905 document customdict TestCustomDict ../dict/TestCustomDict.h
907 apply_pattern god_dictionary files=../xml/*.xml
909 pkg =
PackWrap(
"Test", requirements, files={})
911 cmakelists = pkg.generate()
914 calls =
getCalls(
"include", cmakelists)
917 assert l ==
'GaudiObjDesc'
919 calls =
getCalls(
"god_build_dictionary", cmakelists)
920 assert len(calls) == 1,
"god_build_dictionary wrong count %d" % len(calls)
922 l = calls[0].strip().split()
923 assert l == [
'xml/*.xml',
'EXTEND',
'dict/TestCustomDict.h']
930 use ROOT v* LCG_Interfaces
932 apply_pattern reflex_dictionary \\
934 headerfiles=$(TESTROOT)/dict/TestDict.h \\
935 selectionfile=$(TESTROOT)/dict/TestDict.xml
937 apply_pattern reflex_dictionary \\
939 headerfiles=$(TESTROOT)/dict/Test2Dict.h \\
940 selectionfile=$(TESTROOT)/dict/Test2Dict.xml \\
943 pkg =
PackWrap(
"Test", requirements, files={})
945 cmakelists = pkg.generate()
948 calls =
getCalls(
"gaudi_add_dictionary", cmakelists)
949 assert len(calls) == 2,
"gaudi_add_dictionary wrong count %d" % len(calls)
951 l = calls[0].strip().split()
952 assert l[0:3] == [
'Test',
'dict/TestDict.h',
'dict/TestDict.xml']
953 assert 'LINK_LIBRARIES' in l
954 assert l[l.index(
'LINK_LIBRARIES')+1] ==
'ROOT'
955 assert 'INCLUDE_DIRS' in l
956 assert l[l.index(
'INCLUDE_DIRS')+1] ==
'ROOT'
958 l = calls[1].strip().split()
959 assert l[0:3] == [
'Test2',
'dict/Test2Dict.h',
'dict/Test2Dict.xml']
960 assert 'LINK_LIBRARIES' in l
961 assert l[l.index(
'LINK_LIBRARIES')+1] ==
'ROOT'
962 assert 'INCLUDE_DIRS' in l
963 assert l[l.index(
'INCLUDE_DIRS')+1] ==
'ROOT'
964 assert 'OPTIONS' in l
965 assert l[l.index(
'OPTIONS')+1:] == [
'"-DOPTION"']
973 use ROOT v* LCG_Interfaces
976 apply_pattern component_library library=Test
978 apply_pattern reflex_dictionary \\
980 headerfiles=$(TESTROOT)/dict/TestDict.h \\
981 selectionfile=$(TESTROOT)/dict/TestDict.xml
983 pkg =
PackWrap(
"Test", requirements, files={})
985 cmakelists = pkg.generate()
988 calls =
getCalls(
"gaudi_add_module", cmakelists)
989 assert len(calls) == 1,
"gaudi_add_module wrong count %d" % len(calls)
991 l = calls[0].strip().split()
992 assert l[0] ==
'Test'
994 calls =
getCalls(
"gaudi_add_dictionary", cmakelists)
995 assert len(calls) == 1,
"gaudi_add_dictionary wrong count %d" % len(calls)
997 l = calls[0].strip().split()
998 assert l[0:3] == [
'Test',
'dict/TestDict.h',
'dict/TestDict.xml']
1005 use ROOT v* LCG_Interfaces
1006 use COOL v* LCG_Interfaces -no_auto_imports
1007 use CORAL v* LCG_Interfaces -no_auto_imports
1008 use Boost v* LCG_Interfaces -no_auto_imports
1011 apply_pattern component_library library=Test
1013 apply_pattern reflex_dictionary \\
1015 headerfiles=$(TESTROOT)/dict/TestDict.h \\
1016 selectionfile=$(TESTROOT)/dict/TestDict.xml \\
1017 imports="COOL -import=CORAL -import=Boost"
1019 pkg =
PackWrap(
"Test", requirements, files={})
1021 cmakelists = pkg.generate()
1024 calls =
getCalls(
"gaudi_add_module", cmakelists)
1025 assert len(calls) == 1,
"gaudi_add_module wrong count %d" % len(calls)
1027 l = calls[0].strip().split()
1028 assert l[0] ==
'Test'
1030 calls =
getCalls(
"gaudi_add_dictionary", cmakelists)
1031 assert len(calls) == 1,
"gaudi_add_dictionary wrong count %d" % len(calls)
1033 l = calls[0].strip().split()
1034 assert l[0:3] == [
'Test',
'dict/TestDict.h',
'dict/TestDict.xml']
1035 assert 'INCLUDE_DIRS' in l
1036 i = l.index(
'INCLUDE_DIRS')
1037 assert 'LINK_LIBRARIES' in l
1038 j = l.index(
'LINK_LIBRARIES')
1039 assert set(l[i+1:j]) == set([
'ROOT',
'COOL',
'CORAL',
'Boost'])
1040 assert set(l[j+1:]) == set([
'ROOT',
'COOL',
'CORAL',
'Boost'])
1047 use ROOT v* LCG_Interfaces
1048 use Boost v* LCG_Interfaces
1050 macro_append ROOT_linkopts " -lMathCore"
1051 macro_append Boost_linkopts " $(Boost_linkopts_filesystem)"
1054 pkg =
PackWrap(
"Test", requirements, files={})
1056 cmakelists = pkg.generate()
1059 calls =
getCalls(
"find_package", cmakelists)
1060 assert len(calls) == 2,
"find_package wrong count %d" % len(calls)
1062 l = calls[0].strip().split()
1063 assert l == [
'Boost',
'COMPONENTS',
'filesystem']
1065 l = calls[1].strip().split()
1066 assert l == [
'ROOT',
'COMPONENTS',
'MathCore']
1073 application MyApp1 ../src/app1/*.cpp
1075 application MyApp2 -group=tests ../src/app2/*.cpp
1077 application MyApp3 -check ../src/app3/*.cpp
1079 application MyApp4 ../tests/src/app4.cpp
1081 application MyTestApp app5a.cpp app5b.cpp
1083 pkg =
PackWrap(
"Test", requirements, files={})
1085 cmakelists = pkg.generate()
1088 calls =
getCalls(
"gaudi_add_executable", cmakelists)
1089 assert len(calls) == 5,
"gaudi_add_executable wrong count %d" % len(calls)
1091 l = calls[0].strip().split()
1092 assert l[0] ==
'MyApp1'
1093 assert l[1:] == [
'src/app1/*.cpp']
1095 l = calls[1].strip().split()
1096 assert l[0] ==
'MyApp2'
1097 assert l[1:] == [
'src/app2/*.cpp']
1099 l = calls[2].strip().split()
1100 assert l[0] ==
'MyApp3'
1101 assert l[1:] == [
'src/app3/*.cpp']
1103 l = calls[3].strip().split()
1104 assert l[0] ==
'MyApp4'
1105 assert l[1:] == [
'tests/src/app4.cpp']
1107 l = calls[4].strip().split()
1108 assert l[0] ==
'MyTestApp'
1109 assert l[1:] == [
'src/app5a.cpp',
'src/app5b.cpp']
1112 assert calls == [
'GAUDI_BUILD_TESTS'] * 4
1119 use pygraphics v* LCG_Interfaces -no_auto_imports
1120 use Qt v* LCG_Interfaces -no_auto_imports
1122 apply_pattern install_python_modules
1124 apply_pattern PyQtResource qrc_files=../qt_resources/*.qrc outputdir=../python/Test/QtApp
1125 apply_pattern PyQtUIC ui_files=../qt_resources/*.ui outputdir=../python/Test/QtApp
1126 macro_append Test_python_dependencies " PyQtResource PyQtUIC "
1128 pkg =
PackWrap(
"Test", requirements, files={})
1130 cmakelists = pkg.generate()
1133 calls =
getCalls(
"gen_pyqt_resource", cmakelists)
1134 assert len(calls) == 1,
"gen_pyqt_resource wrong count %d" % len(calls)
1135 l = calls[0].strip().split()
1136 assert l == [
'Test.QtApp.Resources',
'Test/QtApp',
'qt_resources/*.qrc']
1138 calls =
getCalls(
"gen_pyqt_uic", cmakelists)
1139 assert len(calls) == 1,
"gen_pyqt_uic wrong count %d" % len(calls)
1140 l = calls[0].strip().split()
1141 assert l == [
'Test.QtApp.UI',
'Test/QtApp',
'qt_resources/*.ui']
1151 macro TEST "value" \\
1153 apply_pattern component_library library=Test
1155 pkg =
PackWrap(
"Test", requirements, files={})
1157 cmakelists = pkg.generate()
1160 calls =
getCalls(
"gaudi_add_module", cmakelists)
1161 assert len(calls) == 1,
"gaudi_add_module wrong count %d" % len(calls)
1169 use RELAX v* LCG_Interfaces
1171 copy_relax_rootmap dict=CLHEP
1172 copy_relax_rootmap dict=HepMC
1173 copy_relax_rootmap dict=STL
1174 copy_relax_rootmap dict=Math
1176 pkg =
PackWrap(
"Test", requirements, files={})
1178 cmakelists = pkg.generate()
1181 calls =
getCalls(
"find_package", cmakelists)
1182 assert len(calls) == 1,
"find_package wrong count %d" % len(calls)
1184 l = calls[0].strip().split()
1185 assert l == [
'RELAX',
'REQUIRED',
'COMPONENTS',
'CLHEP',
'HepMC',
'STL',
'Math']
1187 calls =
getCalls(
"add_custom_target", cmakelists)
1188 assert len(calls) == 1,
"add_custom_target wrong count %d" % len(calls)
1190 l = calls[0].strip().split()
1191 assert l == [
'RelaxRootmap',
'ALL',
'DEPENDS',
'${rootmapfile}']
1200 use GAUDI GAUDI_v23r4
1204 build_strategy with_installarea
1207 files = {
"LHCbSys": {
"cmt": {
"requirements":
"version v35r2"}}}
1208 proj =
ProjWrap(
"LHCb", proj_cmt, files=files)
1210 cmakelists = proj.generate()
1213 calls =
getCalls(
"find_package", cmakelists)
1214 assert len(calls) == 1,
"find_package wrong count %d" % len(calls)
1216 l = calls[0].strip().split()
1217 assert l == [
'GaudiProject']
1219 calls =
getCalls(
"gaudi_project", cmakelists)
1220 assert len(calls) == 1,
"gaudi_project wrong count %d" % len(calls)
1222 l = calls[0].strip().split()
1223 assert l == [
'LHCb',
'v35r2',
'USE',
'Gaudi',
'v23r4']
1229 files = {
"TestProjectSys": {
"cmt": {
"requirements":
"version v1r0"}},
1230 "Package1": {
"cmt": {
"requirements":
1234 use DtPkg v7r* Another
1239 proj =
ProjWrap(
"TestProject", proj_cmt, files=files)
1241 cmakelists = proj.generate()
1244 calls =
getCalls(
"find_package", cmakelists)
1245 assert len(calls) == 1,
"find_package wrong count %d" % len(calls)
1247 l = calls[0].strip().split()
1248 assert l == [
'GaudiProject']
1250 calls =
getCalls(
"gaudi_project", cmakelists)
1251 assert len(calls) == 1,
"gaudi_project wrong count %d" % len(calls)
1253 l = calls[0].strip().split()
1254 assert l == [
'TestProject',
'v1r0',
'DATA',
1255 'Another/DtPkg',
'VERSION',
'v7r*',
1263 files = {
"TestProjectSys": {
"cmt": {
"requirements":
"version v1r0"}},
1264 "Package1": {
"cmt": {
"requirements":
1270 "Package2": {
"cmt": {
"requirements":
1277 proj =
ProjWrap(
"TestProject", proj_cmt, files=files)
1279 cmakelists = proj.generate()
1282 calls =
getCalls(
"find_package", cmakelists)
1283 assert len(calls) == 1,
"find_package wrong count %d" % len(calls)
1285 l = calls[0].strip().split()
1286 assert l == [
'GaudiProject']
1288 calls =
getCalls(
"gaudi_project", cmakelists)
1289 assert len(calls) == 1,
"gaudi_project wrong count %d" % len(calls)
1291 l = calls[0].strip().split()
1292 assert l == [
'TestProject',
'v1r0',
'DATA',
1300 files = {
"TestProjectSys": {
"cmt": {
"requirements":
"version v1r0"}},
1301 "Package1": {
"cmt": {
"requirements":
1307 "Package2": {
"cmt": {
"requirements":
1312 use DtPkg v1r0 Another
1315 proj =
ProjWrap(
"TestProject", proj_cmt, files=files)
1317 cmakelists = proj.generate()
1320 calls =
getCalls(
"find_package", cmakelists)
1321 assert len(calls) == 1,
"find_package wrong count %d" % len(calls)
1323 l = calls[0].strip().split()
1324 assert l == [
'GaudiProject']
1326 calls =
getCalls(
"gaudi_project", cmakelists)
1327 assert len(calls) == 1,
"gaudi_project wrong count %d" % len(calls)
1329 l = calls[0].strip().split()
1330 assert l == [
'TestProject',
'v1r0',
'DATA',
1331 'Another/DtPkg',
'VERSION',
'v1r0',
1332 'DataPack',
'VERSION',
'v7r*']
1337 project TestProjectHT
1339 use LCGCMT LCGCMT_64a
1341 files = {
"TestProjectHTSys": {
"cmt": {
"requirements":
"version v1r0"}}}
1342 proj =
ProjWrap(
"TestProjectHT", proj_cmt, files=files)
1344 k = repr((
'TestProjectHT',
'v1r0'))
1345 assert k
not in cmt2cmake.cache
1347 toolchain = proj.generateToolchain()
1351 assert len(calls) == 2,
"set wrong count %d" % len(calls)
1353 l = calls[0].strip().split()
1354 assert l == [
'heptools_version',
'64a']
1356 assert k
in cmt2cmake.cache
1357 assert cmt2cmake.cache[k] == {
'heptools':
'64a'}
1362 project TestProjectHT
1364 use BASEPROJECT BASEPROJECT_v1r0
1366 files = {
"TestProjectHTSys": {
"cmt": {
"requirements":
"version v2r0"}}}
1367 proj =
ProjWrap(
"TestProjectHT", proj_cmt, files=files)
1369 k = repr((
'TestProjectHT',
'v2r0'))
1370 assert k
not in cmt2cmake.cache
1372 toolchain = proj.generateToolchain()
1376 assert len(calls) == 2,
"set wrong count %d" % len(calls)
1378 l = calls[0].strip().split()
1379 assert l == [
'heptools_version',
'65']
1381 assert k
in cmt2cmake.cache
1382 assert cmt2cmake.cache[k] == {
'heptools':
'65'}
1387 project TestProjectHT
1389 files = {
"TestProjectHTSys": {
"cmt": {
"requirements":
"version v3r0"}}}
1390 proj =
ProjWrap(
"TestProjectHT", proj_cmt, files=files)
1392 k = repr((
'TestProjectHT',
'v3r0'))
1393 assert k
in cmt2cmake.cache
1395 toolchain = proj.generateToolchain()
1399 assert len(calls) == 2,
"set wrong count %d" % len(calls)
1401 l = calls[0].strip().split()
1402 assert l == [
'heptools_version',
'23']
1404 assert k
in cmt2cmake.cache
1405 assert cmt2cmake.cache[k] == {
'heptools':
'23'}
1410 project TestProjectHT
1412 files = {
"TestProjectHTSys": {
"cmt": {
"requirements":
"version v4r0"}}}
1413 proj =
ProjWrap(
"TestProjectHT", proj_cmt, files=files)
1415 k = repr((
'TestProjectHT',
'v4r0'))
1416 assert k
not in cmt2cmake.cache
1418 toolchain = proj.generateToolchain()
1419 assert toolchain
is None
1421 assert k
not in cmt2cmake.cache
1425 from nose.core
import main