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 # test that we can handle the '-import' before the sources
390 library Lib4 -import=XercesC lib4/*.cpp
391 apply_pattern component_library library=Lib4
393 pkg =
PackWrap(
"Test", requirements, files={})
395 print 'components', pkg.component_libraries
396 print 'libraries', pkg.libraries
398 assert pkg.component_libraries == set([
'Lib1',
'Lib2',
'Lib3',
'Lib4'])
401 cmakelists = pkg.generate()
404 calls =
getCalls(
"gaudi_add_module", cmakelists)
405 assert len(calls) == 4,
"gaudi_add_module wrong count %d" % len(calls)
408 assert re.match(
r' *Lib1\b', l)
409 assert not re.search(
r'\bPUBLIC_HEADERS\b', l)
410 assert re.search(
r'\bLINK_LIBRARIES +Boost', l)
411 assert re.search(
r'\bINCLUDE_DIRS +Boost', l)
413 assert re.match(
r' *Lib2\b', l)
414 assert not re.search(
r'\bPUBLIC_HEADERS', l)
415 assert re.search(
r'\bLINK_LIBRARIES +Boost +XercesC', l)
416 assert re.search(
r'\bINCLUDE_DIRS +Boost +XercesC', l)
418 assert re.match(
r' *Lib3\b', l)
419 assert not re.search(
r'\bPUBLIC_HEADERS', l)
420 assert re.search(
r'\bLINK_LIBRARIES +Boost', l)
421 assert re.search(
r'\bINCLUDE_DIRS +Boost', l)
423 assert re.match(
r' *Lib4\b', l)
424 assert not re.search(
r'\bPUBLIC_HEADERS', l)
425 assert re.search(
r'\bLINK_LIBRARIES +Boost +XercesC', l)
426 assert re.search(
r'\bINCLUDE_DIRS +Boost +XercesC', l)
436 apply_pattern component_library library=Lib1
438 library Lib2 lib2/*.cpp
439 apply_pattern linker_library library=Lib2
441 library Lib3 lib3/*.cpp
443 library Lib4 lib4/*.cpp
444 apply_pattern linker_library library="Lib4"
447 pkg =
PackWrap(
"Test", requirements, files={})
449 print 'components', pkg.component_libraries
450 print 'linker', pkg.linker_libraries
451 print 'libraries', pkg.libraries
453 assert pkg.component_libraries == set([
'Lib1'])
454 assert pkg.linker_libraries == set([
'Lib2',
'Lib4'])
455 assert len(pkg.libraries) == 4
457 cmakelists = pkg.generate()
460 calls =
getCalls(
"gaudi_add_module", cmakelists)
461 assert len(calls) == 1,
"gaudi_add_module wrong count %d" % len(calls)
464 assert re.match(
r' *Lib1\b', l)
465 assert not re.search(
r'\bPUBLIC_HEADERS\b', l)
467 calls =
getCalls(
"gaudi_add_library", cmakelists)
468 assert len(calls) == 3,
"gaudi_add_module wrong count %d" % len(calls)
471 assert re.match(
r' *Lib2\b', l)
472 assert re.search(
r'\bNO_PUBLIC_HEADERS', l)
475 assert re.match(
r' *Lib3\b', l)
476 assert re.search(
r'\bNO_PUBLIC_HEADERS', l)
479 assert re.match(
r' *Lib4\b', l)
480 assert re.search(
r'\bNO_PUBLIC_HEADERS', l)
487 library TestLib1 ../src/subdir/*.cpp
488 apply_pattern linker_library library=TestLib1
490 library TestLib2 ../tests/src/subdir/*.cpp
491 apply_pattern linker_library library=TestLib2
493 library TestLib3 subdir/*.cpp
494 apply_pattern linker_library library=TestLib3
496 pkg =
PackWrap(
"Test", requirements, files={
'TestIncludes': {}})
498 assert pkg.linker_libraries == set([
'TestLib1',
'TestLib2',
'TestLib3'])
500 cmakelists = pkg.generate()
503 calls =
getCalls(
"gaudi_add_library", cmakelists)
504 assert len(calls) == 3,
"gaudi_add_library wrong count %d" % len(calls)
506 l = calls[0].strip().split()
507 assert l[0] ==
'TestLib1'
508 assert l[1] ==
'src/subdir/*.cpp'
510 l = calls[1].strip().split()
511 assert l[0] ==
'TestLib2'
512 assert l[1] ==
'tests/src/subdir/*.cpp'
514 l = calls[2].strip().split()
515 assert l[0] ==
'TestLib3'
516 assert l[1] ==
'src/subdir/*.cpp'
523 use Boost v* LCG_Interfaces
524 use XercesC v* LCG_Interfaces -no_auto_imports
527 use GaudiUtils * -no_auto_imports
531 apply_pattern component_library library=Lib1
533 library Lib2 *.cpp -import=XercesC
534 apply_pattern component_library library=Lib2
536 library Lib3 *.cpp -import=GaudiUtils
537 apply_pattern component_library library=Lib3
539 pkg =
PackWrap(
"Test", requirements, files={})
541 print 'components', pkg.component_libraries
542 print 'linker', pkg.linker_libraries
543 print 'libraries', pkg.libraries
545 assert pkg.component_libraries == set([
'Lib1',
'Lib2',
'Lib3'])
546 assert len(pkg.libraries) == 3
548 cmakelists = pkg.generate()
551 calls =
getCalls(
"gaudi_add_module", cmakelists)
552 assert len(calls) == 3,
"gaudi_add_module wrong count %d" % len(calls)
554 l = calls[0].strip().split()
555 assert l[0] ==
'Lib1'
556 links = set(l[l.index(
'LINK_LIBRARIES')+1:])
557 assert links == set([
'Boost',
'GaudiKernel'])
559 l = calls[1].strip().split()
560 assert l[0] ==
'Lib2'
561 assert 'LINK_LIBRARIES' in l
562 links = set(l[l.index(
'LINK_LIBRARIES')+1:])
563 assert links == set([
'Boost',
'GaudiKernel',
'XercesC'])
565 l = calls[2].strip().split()
566 assert l[0] ==
'Lib3'
567 assert 'LINK_LIBRARIES' in l
568 links = set(l[l.index(
'LINK_LIBRARIES')+1:])
569 assert links == set([
'Boost',
'GaudiKernel',
'GaudiUtilsLib'])
576 use LHCbKernel * Kernel
577 use SomeSubdir * Hat -no_auto_imports
580 apply_pattern component_library library=Lib1
582 library Lib2 *.cpp -import=SomeSubdir
583 apply_pattern component_library library=Lib2
585 pkg =
PackWrap(
"Test", requirements, files={})
587 print 'components', pkg.component_libraries
588 print 'linker', pkg.linker_libraries
589 print 'libraries', pkg.libraries
591 assert pkg.component_libraries == set([
'Lib1',
'Lib2'])
592 assert len(pkg.libraries) == 2
594 cmakelists = pkg.generate()
597 calls =
getCalls(
"gaudi_add_module", cmakelists)
598 assert len(calls) == 2,
"gaudi_add_module wrong count %d" % len(calls)
600 l = calls[0].strip().split()
601 assert l[0] ==
'Lib1'
602 links = set(l[l.index(
'LINK_LIBRARIES')+1:])
603 assert links == set([
'LHCbKernel'])
605 l = calls[1].strip().split()
606 assert l[0] ==
'Lib2'
607 links = set(l[l.index(
'LINK_LIBRARIES')+1:])
608 assert links == set([
'LHCbKernel',
'SubdirLib'])
618 apply_pattern component_library library=Lib1
620 pkg =
PackWrap(
"Test", requirements, files={})
622 assert pkg.component_libraries == set([
'Lib1'])
623 assert len(pkg.libraries) == 1
625 cmakelists = pkg.generate()
628 calls =
getCalls(
"gaudi_add_module", cmakelists)
629 assert len(calls) == 1,
"gaudi_add_module wrong count %d" % len(calls)
631 l = calls[0].strip().split()
632 assert l[0] ==
'Lib1'
633 assert 'LINK_LIBRARIES' not in l
637 if 'GaudiDummy' in cmt2cmake.cache:
638 del cmt2cmake.cache[
'GaudiDummy']
644 apply_pattern install_more_includes more=Dummy
647 apply_pattern linker_library library=Dummy
649 PackWrap(
"GaudiDummy", requirements, files={
'Dummy':{}})
651 assert cmt2cmake.cache[
'GaudiDummy'][
'libraries'] == [
'Dummy']
652 assert cmt2cmake.cache[
'GaudiDummy'][
'includes'] ==
False
655 if 'GaudiDummy' in cmt2cmake.cache:
656 del cmt2cmake.cache[
'GaudiDummy']
663 use JustHeaders v* Hat
666 apply_pattern linker_library library=Dummy
668 pkg =
PackWrap(
"GaudiDummy", requirements, files={
'Dummy':{}})
670 cmakelists = pkg.generate()
673 calls =
getCalls(
"gaudi_add_library", cmakelists)
674 assert len(calls) == 1,
"gaudi_add_library wrong count %d" % len(calls)
676 l = calls[0].strip().split()
677 assert l[0] ==
'Dummy'
678 assert 'INCLUDE_DIRS' in l
679 links = set(l[l.index(
'INCLUDE_DIRS')+1:])
680 assert links == set([
'JustHeaders',
'Hat/JustHeaders'])
683 if 'GaudiDummy' in cmt2cmake.cache:
684 del cmt2cmake.cache[
'GaudiDummy']
690 apply_pattern install_more_includes more=Dummy
692 PackWrap(
"GaudiDummy", requirements, files={
'Dummy':{}})
694 assert cmt2cmake.cache[
'GaudiDummy'][
'includes'] ==
True
695 assert not cmt2cmake.cache[
'GaudiDummy'][
'libraries']
703 apply_pattern component_library library=Lib1
705 pkg =
PackWrap(
"Test", requirements, files={})
707 cmakelists = pkg.generate()
710 cmakefile = os.path.join(pkg.path,
'CMakeLists.txt')
712 assert os.path.exists(cmakefile)
713 assert open(cmakefile).read() == cmakelists
721 apply_pattern component_library library=Lib1
723 pkg =
PackWrap(
"Test", requirements, files={
'CMakeLists.txt':
'dummy data'})
725 cmakefile = os.path.join(pkg.path,
'CMakeLists.txt')
728 assert open(cmakefile).read() ==
'dummy data'
738 apply_pattern god_headers files=../xml/*.xml
740 pkg =
PackWrap(
"Test", requirements, files={})
742 cmakelists = pkg.generate()
745 calls =
getCalls(
"include", cmakelists)
748 assert l ==
'GaudiObjDesc'
750 calls =
getCalls(
"god_build_headers", cmakelists)
751 assert len(calls) == 1,
"god_build_headers wrong count %d" % len(calls)
754 assert l ==
'xml/*.xml'
761 apply_pattern god_dictionary files=../xml/*.xml
763 pkg =
PackWrap(
"Test", requirements, files={})
765 cmakelists = pkg.generate()
768 calls =
getCalls(
"include", cmakelists)
771 assert l ==
'GaudiObjDesc'
773 calls =
getCalls(
"god_build_dictionary", cmakelists)
774 assert len(calls) == 1,
"god_build_dictionary wrong count %d" % len(calls)
777 assert l ==
'xml/*.xml'
784 use Boost v* LCG_Interfaces
786 apply_pattern god_headers files=../xml/*.xml
787 apply_pattern god_dictionary files=../xml/*.xml
789 pkg =
PackWrap(
"Test", requirements, files={})
791 cmakelists = pkg.generate()
794 calls =
getCalls(
"include", cmakelists)
797 assert l ==
'GaudiObjDesc'
799 calls =
getCalls(
"god_build_headers", cmakelists)
800 assert len(calls) == 1,
"god_build_headers wrong count %d" % len(calls)
802 calls =
getCalls(
"god_build_dictionary", cmakelists)
803 assert len(calls) == 1,
"god_build_dictionary wrong count %d" % len(calls)
805 l = calls[0].strip().split()
806 assert l[0] ==
'xml/*.xml'
807 assert 'LINK_LIBRARIES' in l
808 assert l[l.index(
'LINK_LIBRARIES')+1] ==
'Boost'
809 assert 'INCLUDE_DIRS' in l
810 assert l[l.index(
'INCLUDE_DIRS')+1] ==
'Boost'
817 use Boost v* LCG_Interfaces
820 apply_pattern linker_library library=Lib
822 apply_pattern god_headers files=../xml/*.xml
823 apply_pattern god_dictionary files=../xml/*.xml
825 pkg =
PackWrap(
"Test", requirements, files={})
827 cmakelists = pkg.generate()
830 calls =
getCalls(
"include", cmakelists)
833 assert l ==
'GaudiObjDesc'
835 calls =
getCalls(
"god_build_headers", cmakelists)
836 assert len(calls) == 1,
"god_build_headers wrong count %d" % len(calls)
838 calls =
getCalls(
"gaudi_add_library", cmakelists)
839 assert len(calls) == 1,
"gaudi_add_library wrong count %d" % len(calls)
841 calls =
getCalls(
"god_build_dictionary", cmakelists)
842 assert len(calls) == 1,
"god_build_dictionary wrong count %d" % len(calls)
844 l = calls[0].strip().split()
845 assert l[0] ==
'xml/*.xml'
846 assert 'LINK_LIBRARIES' in l
847 i = l.index(
'LINK_LIBRARIES')+1
848 assert l[i:i+2] == [
'Boost',
'Lib']
849 assert 'INCLUDE_DIRS' in l
850 assert l[l.index(
'INCLUDE_DIRS')+1] ==
'Boost'
852 hdr = cmakelists.find(
'god_build_headers')
853 lib = cmakelists.find(
'gaudi_add_library')
854 dct = cmakelists.find(
'god_build_dictionary')
855 assert hdr < lib
and lib < dct,
"wrong order of calls"
862 apply_pattern god_headers files=../xml/*.xml
863 macro TestObj2Doth_GODflags " -s ../Test/ "
865 pkg =
PackWrap(
"Test", requirements, files={})
867 cmakelists = pkg.generate()
870 calls =
getCalls(
"include", cmakelists)
873 assert l ==
'GaudiObjDesc'
875 calls =
getCalls(
"god_build_headers", cmakelists)
876 assert len(calls) == 1,
"god_build_headers wrong count %d" % len(calls)
878 l = calls[0].strip().split()
879 assert l[0] ==
'xml/*.xml'
880 assert 'DESTINATION' in l
881 assert l[l.index(
'DESTINATION')+1] ==
'Test'
888 apply_pattern god_headers files=../xml/*.xml
889 macro TestObj2Doth_GODflags " -s ../src/ "
891 pkg =
PackWrap(
"Test", requirements, files={})
893 cmakelists = pkg.generate()
896 calls =
getCalls(
"include", cmakelists)
899 assert l ==
'GaudiObjDesc'
901 calls =
getCalls(
"god_build_headers", cmakelists)
902 assert len(calls) == 1,
"god_build_headers wrong count %d" % len(calls)
904 l = calls[0].strip().split()
905 assert l[0] ==
'xml/*.xml'
906 assert 'PRIVATE' in l
907 assert 'DESTINTAION' not in l
914 document customdict TestCustomDict ../dict/TestCustomDict.h
916 apply_pattern god_dictionary files=../xml/*.xml
918 pkg =
PackWrap(
"Test", requirements, files={})
920 cmakelists = pkg.generate()
923 calls =
getCalls(
"include", cmakelists)
926 assert l ==
'GaudiObjDesc'
928 calls =
getCalls(
"god_build_dictionary", cmakelists)
929 assert len(calls) == 1,
"god_build_dictionary wrong count %d" % len(calls)
931 l = calls[0].strip().split()
932 assert l == [
'xml/*.xml',
'EXTEND',
'dict/TestCustomDict.h']
939 use ROOT v* LCG_Interfaces
941 apply_pattern reflex_dictionary \\
943 headerfiles=$(TESTROOT)/dict/TestDict.h \\
944 selectionfile=$(TESTROOT)/dict/TestDict.xml
946 apply_pattern reflex_dictionary \\
948 headerfiles=$(TESTROOT)/dict/Test2Dict.h \\
949 selectionfile=$(TESTROOT)/dict/Test2Dict.xml \\
952 pkg =
PackWrap(
"Test", requirements, files={})
954 cmakelists = pkg.generate()
957 calls =
getCalls(
"gaudi_add_dictionary", cmakelists)
958 assert len(calls) == 2,
"gaudi_add_dictionary wrong count %d" % len(calls)
960 l = calls[0].strip().split()
961 assert l[0:3] == [
'Test',
'dict/TestDict.h',
'dict/TestDict.xml']
962 assert 'LINK_LIBRARIES' in l
963 assert l[l.index(
'LINK_LIBRARIES')+1] ==
'ROOT'
964 assert 'INCLUDE_DIRS' in l
965 assert l[l.index(
'INCLUDE_DIRS')+1] ==
'ROOT'
967 l = calls[1].strip().split()
968 assert l[0:3] == [
'Test2',
'dict/Test2Dict.h',
'dict/Test2Dict.xml']
969 assert 'LINK_LIBRARIES' in l
970 assert l[l.index(
'LINK_LIBRARIES')+1] ==
'ROOT'
971 assert 'INCLUDE_DIRS' in l
972 assert l[l.index(
'INCLUDE_DIRS')+1] ==
'ROOT'
973 assert 'OPTIONS' in l
974 assert l[l.index(
'OPTIONS')+1:] == [
'"-DOPTION"']
982 use ROOT v* LCG_Interfaces
985 apply_pattern component_library library=Test
987 apply_pattern reflex_dictionary \\
989 headerfiles=$(TESTROOT)/dict/TestDict.h \\
990 selectionfile=$(TESTROOT)/dict/TestDict.xml
992 pkg =
PackWrap(
"Test", requirements, files={})
994 cmakelists = pkg.generate()
997 calls =
getCalls(
"gaudi_add_module", cmakelists)
998 assert len(calls) == 1,
"gaudi_add_module wrong count %d" % len(calls)
1000 l = calls[0].strip().split()
1001 assert l[0] ==
'Test'
1003 calls =
getCalls(
"gaudi_add_dictionary", cmakelists)
1004 assert len(calls) == 1,
"gaudi_add_dictionary wrong count %d" % len(calls)
1006 l = calls[0].strip().split()
1007 assert l[0:3] == [
'Test',
'dict/TestDict.h',
'dict/TestDict.xml']
1014 use ROOT v* LCG_Interfaces
1015 use COOL v* LCG_Interfaces -no_auto_imports
1016 use CORAL v* LCG_Interfaces -no_auto_imports
1017 use Boost v* LCG_Interfaces -no_auto_imports
1020 apply_pattern component_library library=Test
1022 apply_pattern reflex_dictionary \\
1024 headerfiles=$(TESTROOT)/dict/TestDict.h \\
1025 selectionfile=$(TESTROOT)/dict/TestDict.xml \\
1026 imports="COOL -import=CORAL -import=Boost"
1028 pkg =
PackWrap(
"Test", requirements, files={})
1030 cmakelists = pkg.generate()
1033 calls =
getCalls(
"gaudi_add_module", cmakelists)
1034 assert len(calls) == 1,
"gaudi_add_module wrong count %d" % len(calls)
1036 l = calls[0].strip().split()
1037 assert l[0] ==
'Test'
1039 calls =
getCalls(
"gaudi_add_dictionary", cmakelists)
1040 assert len(calls) == 1,
"gaudi_add_dictionary wrong count %d" % len(calls)
1042 l = calls[0].strip().split()
1043 assert l[0:3] == [
'Test',
'dict/TestDict.h',
'dict/TestDict.xml']
1044 assert 'INCLUDE_DIRS' in l
1045 i = l.index(
'INCLUDE_DIRS')
1046 assert 'LINK_LIBRARIES' in l
1047 j = l.index(
'LINK_LIBRARIES')
1048 assert set(l[i+1:j]) == set([
'ROOT',
'COOL',
'CORAL',
'Boost'])
1049 assert set(l[j+1:]) == set([
'ROOT',
'COOL',
'CORAL',
'Boost'])
1056 use ROOT v* LCG_Interfaces
1057 use Boost v* LCG_Interfaces
1059 macro_append ROOT_linkopts " -lMathCore"
1060 macro_append Boost_linkopts " $(Boost_linkopts_filesystem)"
1063 pkg =
PackWrap(
"Test", requirements, files={})
1065 cmakelists = pkg.generate()
1068 calls =
getCalls(
"find_package", cmakelists)
1069 assert len(calls) == 2,
"find_package wrong count %d" % len(calls)
1071 l = calls[0].strip().split()
1072 assert l == [
'Boost',
'COMPONENTS',
'filesystem']
1074 l = calls[1].strip().split()
1075 assert l == [
'ROOT',
'COMPONENTS',
'MathCore']
1082 application MyApp1 ../src/app1/*.cpp
1084 application MyApp2 -group=tests ../src/app2/*.cpp
1086 application MyApp3 -check ../src/app3/*.cpp
1088 application MyApp4 ../tests/src/app4.cpp
1090 application MyTestApp app5a.cpp app5b.cpp
1092 pkg =
PackWrap(
"Test", requirements, files={})
1094 cmakelists = pkg.generate()
1097 calls =
getCalls(
"gaudi_add_executable", cmakelists)
1098 assert len(calls) == 5,
"gaudi_add_executable wrong count %d" % len(calls)
1100 l = calls[0].strip().split()
1101 assert l[0] ==
'MyApp1'
1102 assert l[1:] == [
'src/app1/*.cpp']
1104 l = calls[1].strip().split()
1105 assert l[0] ==
'MyApp2'
1106 assert l[1:] == [
'src/app2/*.cpp']
1108 l = calls[2].strip().split()
1109 assert l[0] ==
'MyApp3'
1110 assert l[1:] == [
'src/app3/*.cpp']
1112 l = calls[3].strip().split()
1113 assert l[0] ==
'MyApp4'
1114 assert l[1:] == [
'tests/src/app4.cpp']
1116 l = calls[4].strip().split()
1117 assert l[0] ==
'MyTestApp'
1118 assert l[1:] == [
'src/app5a.cpp',
'src/app5b.cpp']
1121 assert calls == [
'GAUDI_BUILD_TESTS'] * 4
1128 use pygraphics v* LCG_Interfaces -no_auto_imports
1129 use Qt v* LCG_Interfaces -no_auto_imports
1131 apply_pattern install_python_modules
1133 apply_pattern PyQtResource qrc_files=../qt_resources/*.qrc outputdir=../python/Test/QtApp
1134 apply_pattern PyQtUIC ui_files=../qt_resources/*.ui outputdir=../python/Test/QtApp
1135 macro_append Test_python_dependencies " PyQtResource PyQtUIC "
1137 pkg =
PackWrap(
"Test", requirements, files={})
1139 cmakelists = pkg.generate()
1142 calls =
getCalls(
"gen_pyqt_resource", cmakelists)
1143 assert len(calls) == 1,
"gen_pyqt_resource wrong count %d" % len(calls)
1144 l = calls[0].strip().split()
1145 assert l == [
'Test.QtApp.Resources',
'Test/QtApp',
'qt_resources/*.qrc']
1147 calls =
getCalls(
"gen_pyqt_uic", cmakelists)
1148 assert len(calls) == 1,
"gen_pyqt_uic wrong count %d" % len(calls)
1149 l = calls[0].strip().split()
1150 assert l == [
'Test.QtApp.UI',
'Test/QtApp',
'qt_resources/*.ui']
1160 macro TEST "value" \\
1162 apply_pattern component_library library=Test
1164 pkg =
PackWrap(
"Test", requirements, files={})
1166 cmakelists = pkg.generate()
1169 calls =
getCalls(
"gaudi_add_module", cmakelists)
1170 assert len(calls) == 1,
"gaudi_add_module wrong count %d" % len(calls)
1178 use RELAX v* LCG_Interfaces
1180 copy_relax_rootmap dict=CLHEP
1181 copy_relax_rootmap dict=HepMC
1182 copy_relax_rootmap dict=STL
1183 copy_relax_rootmap dict=Math
1185 pkg =
PackWrap(
"Test", requirements, files={})
1187 cmakelists = pkg.generate()
1190 calls =
getCalls(
"find_package", cmakelists)
1191 assert len(calls) == 1,
"find_package wrong count %d" % len(calls)
1193 l = calls[0].strip().split()
1194 assert l == [
'RELAX',
'REQUIRED',
'COMPONENTS',
'CLHEP',
'HepMC',
'STL',
'Math']
1196 calls =
getCalls(
"add_custom_target", cmakelists)
1197 assert len(calls) == 1,
"add_custom_target wrong count %d" % len(calls)
1199 l = calls[0].strip().split()
1200 assert l == [
'RelaxRootmap',
'ALL',
'DEPENDS',
'${rootmapfile}']
1209 use GAUDI GAUDI_v23r4
1213 build_strategy with_installarea
1216 files = {
"LHCbSys": {
"cmt": {
"requirements":
"version v35r2"}}}
1217 proj =
ProjWrap(
"LHCb", proj_cmt, files=files)
1219 cmakelists = proj.generate()
1222 calls =
getCalls(
"find_package", cmakelists)
1223 assert len(calls) == 1,
"find_package wrong count %d" % len(calls)
1225 l = calls[0].strip().split()
1226 assert l == [
'GaudiProject']
1228 calls =
getCalls(
"gaudi_project", cmakelists)
1229 assert len(calls) == 1,
"gaudi_project wrong count %d" % len(calls)
1231 l = calls[0].strip().split()
1232 assert l == [
'LHCb',
'v35r2',
'USE',
'Gaudi',
'v23r4']
1238 files = {
"TestProjectSys": {
"cmt": {
"requirements":
"version v1r0"}},
1239 "Package1": {
"cmt": {
"requirements":
1243 use DtPkg v7r* Another
1248 proj =
ProjWrap(
"TestProject", proj_cmt, files=files)
1250 cmakelists = proj.generate()
1253 calls =
getCalls(
"find_package", cmakelists)
1254 assert len(calls) == 1,
"find_package wrong count %d" % len(calls)
1256 l = calls[0].strip().split()
1257 assert l == [
'GaudiProject']
1259 calls =
getCalls(
"gaudi_project", cmakelists)
1260 assert len(calls) == 1,
"gaudi_project wrong count %d" % len(calls)
1262 l = calls[0].strip().split()
1263 assert l == [
'TestProject',
'v1r0',
'DATA',
1264 'Another/DtPkg',
'VERSION',
'v7r*',
1272 files = {
"TestProjectSys": {
"cmt": {
"requirements":
"version v1r0"}},
1273 "Package1": {
"cmt": {
"requirements":
1279 "Package2": {
"cmt": {
"requirements":
1286 proj =
ProjWrap(
"TestProject", proj_cmt, files=files)
1288 cmakelists = proj.generate()
1291 calls =
getCalls(
"find_package", cmakelists)
1292 assert len(calls) == 1,
"find_package wrong count %d" % len(calls)
1294 l = calls[0].strip().split()
1295 assert l == [
'GaudiProject']
1297 calls =
getCalls(
"gaudi_project", cmakelists)
1298 assert len(calls) == 1,
"gaudi_project wrong count %d" % len(calls)
1300 l = calls[0].strip().split()
1301 assert l == [
'TestProject',
'v1r0',
'DATA',
1309 files = {
"TestProjectSys": {
"cmt": {
"requirements":
"version v1r0"}},
1310 "Package1": {
"cmt": {
"requirements":
1316 "Package2": {
"cmt": {
"requirements":
1321 use DtPkg v1r0 Another
1324 proj =
ProjWrap(
"TestProject", proj_cmt, files=files)
1326 cmakelists = proj.generate()
1329 calls =
getCalls(
"find_package", cmakelists)
1330 assert len(calls) == 1,
"find_package wrong count %d" % len(calls)
1332 l = calls[0].strip().split()
1333 assert l == [
'GaudiProject']
1335 calls =
getCalls(
"gaudi_project", cmakelists)
1336 assert len(calls) == 1,
"gaudi_project wrong count %d" % len(calls)
1338 l = calls[0].strip().split()
1339 assert l == [
'TestProject',
'v1r0',
'DATA',
1340 'Another/DtPkg',
'VERSION',
'v1r0',
1341 'DataPack',
'VERSION',
'v7r*']
1346 project TestProjectHT
1348 use LCGCMT LCGCMT_64a
1350 files = {
"TestProjectHTSys": {
"cmt": {
"requirements":
"version v1r0"}}}
1351 proj =
ProjWrap(
"TestProjectHT", proj_cmt, files=files)
1353 k = repr((
'TestProjectHT',
'v1r0'))
1354 assert k
not in cmt2cmake.cache
1356 toolchain = proj.generateToolchain()
1360 assert len(calls) == 2,
"set wrong count %d" % len(calls)
1362 l = calls[0].strip().split()
1363 assert l == [
'heptools_version',
'64a']
1365 assert k
in cmt2cmake.cache
1366 assert cmt2cmake.cache[k] == {
'heptools':
'64a'}
1371 project TestProjectHT
1373 use BASEPROJECT BASEPROJECT_v1r0
1375 files = {
"TestProjectHTSys": {
"cmt": {
"requirements":
"version v2r0"}}}
1376 proj =
ProjWrap(
"TestProjectHT", proj_cmt, files=files)
1378 k = repr((
'TestProjectHT',
'v2r0'))
1379 assert k
not in cmt2cmake.cache
1381 toolchain = proj.generateToolchain()
1385 assert len(calls) == 2,
"set wrong count %d" % len(calls)
1387 l = calls[0].strip().split()
1388 assert l == [
'heptools_version',
'65']
1390 assert k
in cmt2cmake.cache
1391 assert cmt2cmake.cache[k] == {
'heptools':
'65'}
1396 project TestProjectHT
1398 files = {
"TestProjectHTSys": {
"cmt": {
"requirements":
"version v3r0"}}}
1399 proj =
ProjWrap(
"TestProjectHT", proj_cmt, files=files)
1401 k = repr((
'TestProjectHT',
'v3r0'))
1402 assert k
in cmt2cmake.cache
1404 toolchain = proj.generateToolchain()
1408 assert len(calls) == 2,
"set wrong count %d" % len(calls)
1410 l = calls[0].strip().split()
1411 assert l == [
'heptools_version',
'23']
1413 assert k
in cmt2cmake.cache
1414 assert cmt2cmake.cache[k] == {
'heptools':
'23'}
1419 project TestProjectHT
1421 files = {
"TestProjectHTSys": {
"cmt": {
"requirements":
"version v4r0"}}}
1422 proj =
ProjWrap(
"TestProjectHT", proj_cmt, files=files)
1424 k = repr((
'TestProjectHT',
'v4r0'))
1425 assert k
not in cmt2cmake.cache
1427 toolchain = proj.generateToolchain()
1428 assert toolchain
is None
1430 assert k
not in cmt2cmake.cache
1440 alias MyCommand "Command"
1441 alias pypaw "pyroot -i "
1443 pkg =
PackWrap(
"Test", requirements, files={})
1445 cmakelists = pkg.generate()
1448 calls =
getCalls(
"gaudi_alias", cmakelists)
1449 assert len(calls) == 2
1451 calls = sorted([x.strip().split()
for x
in calls])
1453 assert calls[0] == [
'MyCommand',
'Command'], calls[0]
1455 assert calls[1] == [
'pypaw',
'pyroot',
'-i'], calls[1]
1458 from nose.core
import main