Skip to content

msvc specific link command#72

Closed
xantares wants to merge 1 commit intoroot-project:masterfrom
xantares:patch-1
Closed

msvc specific link command#72
xantares wants to merge 1 commit intoroot-project:masterfrom
xantares:patch-1

Conversation

@xantares
Copy link
Copy Markdown

these are specific link options to be used only on a msvc host, won't work for a WIN32 mingw target for example

what does it do ? it seems it relinks the PyROOT library, with different options maybe ? isn't it something that could be achieved with cmake in a more generic way, by editing properties or flags ? also it seems its specific to arch ix86

these are specific link options to be used only on a msvc host, won't work for a WIN32 mingw target for example

what does it do ? it seems it relinks the PyROOT library, with different options maybe ? isn't it something that could be achieved with cmake in a cross-platform way ? also it seems its specific to arch ix86
@bellenot
Copy link
Copy Markdown
Member

Thanks! I will apply it. And it is obviously specific to ix86, since x86_64 is not yet supported on Windows

@bellenot
Copy link
Copy Markdown
Member

Thanks! Now applied in git master and v5-34-00-patches

@bellenot bellenot closed this Jul 29, 2015
@xantares
Copy link
Copy Markdown
Author

@bellenot, I'd also like to understand why this command is here as i've got one other PR, #73 that may be related, regarding where to put this python module .pyd

@bellenot
Copy link
Copy Markdown
Member

@xantares How could it be related? there is no /usr or /usr/local on Windows...

@xantares
Copy link
Copy Markdown
Author

@bellenot but there's also a standard site dir, something like <python_prefix>\Lib\site-packages

@bellenot
Copy link
Copy Markdown
Member

@xantares OK, but then this is another issue, not related to WIN32/MSVC (or did I miss something?)

@xantares
Copy link
Copy Markdown
Author

i was wondering why this command was here instead of just setting the .pyd suffix, but I still do not understand bc9ce4e : was it to add -export:initlibPyROOT ? what's the use of ROOTULIBS ?

@bellenot
Copy link
Copy Markdown
Member

@xantares OK, maybe ROOTULIBS is due to copy/paste. Will have to check

@bellenot
Copy link
Copy Markdown
Member

@xantares In fact it is needed on Windows to force import of some symbols. It is used in v5-34-00-patches, but forgotten in master (since master doesn't build yet on Windows).

@xantares
Copy link
Copy Markdown
Author

and what about the hard-wired link command ?

@bellenot
Copy link
Copy Markdown
Member

No idea, I'll have to check with CMake/Python expert when he'll be back from vacation, but we are talking about #73, right?

@xantares
Copy link
Copy Markdown
Author

yeah, i wasn't sure if changing the install destination of the PyROOT target would affect this .pyd too, because you relink it to libPyROOT.pyd somehow and reinstall it to CMAKE_INSTALL_BINDIR, and it seemed like overly-complicated to just set the .pyd suffix.

@bellenot bellenot assigned peremato and unassigned bellenot Jul 31, 2015
guitargeek added a commit to guitargeek/root that referenced this pull request Mar 7, 2026
For small unit tests like the RooFit pythonization tests, the overhead
of starting the Python interpreter is dominant. That means the tests
should not be too granular. I think testing the RooFit pythonizations
with separate Python executions at the level of the different RooFit
classes was indeed too granular. Therefore, this commit suggests to have
a single RooFit pythonization unit test.

Running the unit tests before (single thread):
```txt
Test project /home/rembserj/code/root/root_build/bindings/pyroot/pythonizations/test
      Start 64: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabscollection
 1/14 Test root-project#64: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabscollection .......   Passed    1.09 sec
      Start 65: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabspdf-fitto
 2/14 Test root-project#65: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabspdf-fitto ........   Passed    1.13 sec
      Start 66: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabsreal-ploton
 3/14 Test root-project#66: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabsreal-ploton ......   Passed    1.14 sec
      Start 67: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooarglist
 4/14 Test root-project#67: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooarglist .............   Passed    0.93 sec
      Start 68: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roocmdarg
 5/14 Test root-project#68: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roocmdarg ..............   Passed    0.95 sec
      Start 69: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodatahist-numpy
 6/14 Test root-project#69: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodatahist-numpy ......   Passed    1.32 sec
      Start 70: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodatahist-ploton
 7/14 Test root-project#70: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodatahist-ploton .....   Passed    1.09 sec
      Start 71: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodataset
 8/14 Test root-project#71: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodataset .............   Passed    1.03 sec
      Start 72: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodataset-numpy
 9/14 Test root-project#72: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodataset-numpy .......   Passed    1.70 sec
      Start 73: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooglobalfunc
10/14 Test root-project#73: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooglobalfunc ..........   Passed    1.21 sec
      Start 74: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roojsonfactorywstool
11/14 Test root-project#74: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roojsonfactorywstool ...   Passed    1.40 sec
      Start 75: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roolinkedlist
12/14 Test root-project#75: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roolinkedlist ..........   Passed    0.87 sec
      Start 76: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roosimultaneous
13/14 Test root-project#76: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roosimultaneous ........   Passed    1.09 sec
      Start 77: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooworkspace
14/14 Test root-project#77: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooworkspace ...........   Passed    1.21 sec

100% tests passed, 0 tests failed out of 14

Label Time Summary:
python                 =  16.16 sec*proc (14 tests)
python_runtime_deps    =   3.02 sec*proc (2 tests)

Total Test time (real) =  16.17 sec
```

With this commit:
```txt
Test project /home/rembserj/code/root/root_build/bindings/pyroot/pythonizations/test
    Start 64: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit
1/1 Test root-project#64: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit ...   Passed    3.27 sec

100% tests passed, 0 tests failed out of 1

Label Time Summary:
python    =   3.27 sec*proc (1 test)

Total Test time (real) =   3.27 sec
```
guitargeek added a commit that referenced this pull request Mar 7, 2026
For small unit tests like the RooFit pythonization tests, the overhead
of starting the Python interpreter is dominant. That means the tests
should not be too granular. I think testing the RooFit pythonizations
with separate Python executions at the level of the different RooFit
classes was indeed too granular. Therefore, this commit suggests to have
a single RooFit pythonization unit test.

Running the unit tests before (single thread):
```txt
Test project /home/rembserj/code/root/root_build/bindings/pyroot/pythonizations/test
      Start 64: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabscollection
 1/14 Test #64: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabscollection .......   Passed    1.09 sec
      Start 65: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabspdf-fitto
 2/14 Test #65: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabspdf-fitto ........   Passed    1.13 sec
      Start 66: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabsreal-ploton
 3/14 Test #66: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooabsreal-ploton ......   Passed    1.14 sec
      Start 67: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooarglist
 4/14 Test #67: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooarglist .............   Passed    0.93 sec
      Start 68: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roocmdarg
 5/14 Test #68: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roocmdarg ..............   Passed    0.95 sec
      Start 69: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodatahist-numpy
 6/14 Test #69: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodatahist-numpy ......   Passed    1.32 sec
      Start 70: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodatahist-ploton
 7/14 Test #70: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodatahist-ploton .....   Passed    1.09 sec
      Start 71: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodataset
 8/14 Test #71: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodataset .............   Passed    1.03 sec
      Start 72: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodataset-numpy
 9/14 Test #72: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roodataset-numpy .......   Passed    1.70 sec
      Start 73: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooglobalfunc
10/14 Test #73: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooglobalfunc ..........   Passed    1.21 sec
      Start 74: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roojsonfactorywstool
11/14 Test #74: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roojsonfactorywstool ...   Passed    1.40 sec
      Start 75: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roolinkedlist
12/14 Test #75: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roolinkedlist ..........   Passed    0.87 sec
      Start 76: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roosimultaneous
13/14 Test #76: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-roosimultaneous ........   Passed    1.09 sec
      Start 77: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooworkspace
14/14 Test #77: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit-rooworkspace ...........   Passed    1.21 sec

100% tests passed, 0 tests failed out of 14

Label Time Summary:
python                 =  16.16 sec*proc (14 tests)
python_runtime_deps    =   3.02 sec*proc (2 tests)

Total Test time (real) =  16.17 sec
```

With this commit:
```txt
Test project /home/rembserj/code/root/root_build/bindings/pyroot/pythonizations/test
    Start 64: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit
1/1 Test #64: pyunittests-bindings-pyroot-pythonizations-pyroot-roofit ...   Passed    3.27 sec

100% tests passed, 0 tests failed out of 1

Label Time Summary:
python    =   3.27 sec*proc (1 test)

Total Test time (real) =   3.27 sec
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants