conda-forge / omniorb-feedstock

A conda-smithy repository for omniorb.
BSD 3-Clause "New" or "Revised" License
0 stars 9 forks source link

Use official windows build #38

Closed beenje closed 1 year ago

beenje commented 1 year ago

Checklist

Drop the cmake build system on Windows. Use the official build with conda posix package instead of cygwin. This fixes #37

I built successfully locally but got some issue depending on the python version (some mix with the python installed with conda and the host env). This MR is to test the build on conda-forge.

I had to:

To build, we have to pass 2 variables (done in bld.bat):

One issue is that the result isn't binary compatible with previous build... At least cpptango needs to be re-compiled. Trying to run an existing TangoTest with this new build raises: The procedure entry point ??1TypeCode_member@CORBA@@QEAA@XZ could not be located in the dynamic link library tango.dll. After recompiling cpptango, I could run TangoTest without recompiling the binary.

I see 2 options:

Looking at packages who need omniorb or omniorb-libs on Windows, only cpptango should be impacted.

See output ``` $ CONDA_SUBDIR=win-64 mamba repoquery whoneeds -c conda-forge omniorb No entries matching "omniorb" found $ CONDA_SUBDIR=win-64 mamba repoquery whoneeds -c conda-forge omniorb-libs Name Version Build Depends Channel ─────────────────────────────────────────────────────────────────────────────────────────────── cpptango 9.3.5 h04899b1_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 cpptango 9.3.5 h04899b1_1 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 cpptango 9.4.0 h643942d_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 cpptango 9.4.0 h643942d_1 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 omniorb 4.2.4 py310h694bffd_6 omniorb-libs 4.2.4 hc7e8586_6 conda-forge/win-64 omniorb 4.2.4 py310ha05212b_6 omniorb-libs 4.2.4 h8b1b97a_6 conda-forge/win-64 omniorb 4.2.4 py37h04d2302_4 omniorb-libs 4.2.4 h8b1b97a_4 conda-forge/win-64 omniorb 4.2.4 py37h04d2302_5 omniorb-libs 4.2.4 h8b1b97a_5 conda-forge/win-64 omniorb 4.2.4 py37h04d2302_6 omniorb-libs 4.2.4 h8b1b97a_6 conda-forge/win-64 omniorb 4.2.4 py37h265e445_5 omniorb-libs 4.2.4 hc7e8586_5 conda-forge/win-64 omniorb 4.2.4 py37h265e445_6 omniorb-libs 4.2.4 hc7e8586_6 conda-forge/win-64 omniorb 4.2.4 py38ha65041e_5 omniorb-libs 4.2.4 hc7e8586_5 conda-forge/win-64 omniorb 4.2.4 py38ha65041e_6 omniorb-libs 4.2.4 hc7e8586_6 conda-forge/win-64 omniorb 4.2.4 py38he5377a8_4 omniorb-libs 4.2.4 h8b1b97a_4 conda-forge/win-64 omniorb 4.2.4 py38he5377a8_5 omniorb-libs 4.2.4 h8b1b97a_5 conda-forge/win-64 omniorb 4.2.4 py38he5377a8_6 omniorb-libs 4.2.4 h8b1b97a_6 conda-forge/win-64 omniorb 4.2.4 py39hb76b349_4 omniorb-libs 4.2.4 h8b1b97a_4 conda-forge/win-64 omniorb 4.2.4 py39hb76b349_5 omniorb-libs 4.2.4 h8b1b97a_5 conda-forge/win-64 omniorb 4.2.4 py39hb76b349_6 omniorb-libs 4.2.4 h8b1b97a_6 conda-forge/win-64 omniorb 4.2.4 py39hf7b6eba_5 omniorb-libs 4.2.4 hc7e8586_5 conda-forge/win-64 omniorb 4.2.4 py39hf7b6eba_6 omniorb-libs 4.2.4 hc7e8586_6 conda-forge/win-64 omniorb 4.2.5 py310h281aaab_3 omniorb-libs 4.2.5 h27dd91c_3 conda-forge/win-64 omniorb 4.2.5 py310h281aaab_4 omniorb-libs 4.2.5 h27dd91c_4 conda-forge/win-64 omniorb 4.2.5 py310h694bffd_0 omniorb-libs 4.2.5 hc7e8586_0 conda-forge/win-64 omniorb 4.2.5 py310h694bffd_1 omniorb-libs 4.2.5 hc7e8586_1 conda-forge/win-64 omniorb 4.2.5 py310h694bffd_2 omniorb-libs 4.2.5 hc7e8586_2 conda-forge/win-64 omniorb 4.2.5 py310ha05212b_0 omniorb-libs 4.2.5 h8b1b97a_0 conda-forge/win-64 omniorb 4.2.5 py310ha05212b_1 omniorb-libs 4.2.5 h8b1b97a_1 conda-forge/win-64 omniorb 4.2.5 py310ha05212b_2 omniorb-libs 4.2.5 h8b1b97a_2 conda-forge/win-64 omniorb 4.2.5 py310he97f525_3 omniorb-libs 4.2.5 hb04206d_3 conda-forge/win-64 omniorb 4.2.5 py310he97f525_4 omniorb-libs 4.2.5 hb04206d_4 conda-forge/win-64 omniorb 4.2.5 py311h40cf3c0_3 omniorb-libs 4.2.5 h27dd91c_3 conda-forge/win-64 omniorb 4.2.5 py311h40cf3c0_4 omniorb-libs 4.2.5 h27dd91c_4 conda-forge/win-64 omniorb 4.2.5 py311haf4ec1b_3 omniorb-libs 4.2.5 hb04206d_3 conda-forge/win-64 omniorb 4.2.5 py311haf4ec1b_4 omniorb-libs 4.2.5 hb04206d_4 conda-forge/win-64 omniorb 4.2.5 py37h04d2302_0 omniorb-libs 4.2.5 h8b1b97a_0 conda-forge/win-64 omniorb 4.2.5 py37h04d2302_1 omniorb-libs 4.2.5 h8b1b97a_1 conda-forge/win-64 omniorb 4.2.5 py37h04d2302_2 omniorb-libs 4.2.5 h8b1b97a_2 conda-forge/win-64 omniorb 4.2.5 py37h265e445_0 omniorb-libs 4.2.5 hc7e8586_0 conda-forge/win-64 omniorb 4.2.5 py37h265e445_1 omniorb-libs 4.2.5 hc7e8586_1 conda-forge/win-64 omniorb 4.2.5 py37h265e445_2 omniorb-libs 4.2.5 hc7e8586_2 conda-forge/win-64 omniorb 4.2.5 py38h78b27f5_3 omniorb-libs 4.2.5 h27dd91c_3 conda-forge/win-64 omniorb 4.2.5 py38h78b27f5_4 omniorb-libs 4.2.5 h27dd91c_4 conda-forge/win-64 omniorb 4.2.5 py38ha1d5d2c_3 omniorb-libs 4.2.5 hb04206d_3 conda-forge/win-64 omniorb 4.2.5 py38ha1d5d2c_4 omniorb-libs 4.2.5 hb04206d_4 conda-forge/win-64 omniorb 4.2.5 py38ha65041e_0 omniorb-libs 4.2.5 hc7e8586_0 conda-forge/win-64 omniorb 4.2.5 py38ha65041e_1 omniorb-libs 4.2.5 hc7e8586_1 conda-forge/win-64 omniorb 4.2.5 py38ha65041e_2 omniorb-libs 4.2.5 hc7e8586_2 conda-forge/win-64 omniorb 4.2.5 py38he5377a8_0 omniorb-libs 4.2.5 h8b1b97a_0 conda-forge/win-64 omniorb 4.2.5 py38he5377a8_1 omniorb-libs 4.2.5 h8b1b97a_1 conda-forge/win-64 omniorb 4.2.5 py38he5377a8_2 omniorb-libs 4.2.5 h8b1b97a_2 conda-forge/win-64 omniorb 4.2.5 py39h0a8b3da_3 omniorb-libs 4.2.5 h27dd91c_3 conda-forge/win-64 omniorb 4.2.5 py39h0a8b3da_4 omniorb-libs 4.2.5 h27dd91c_4 conda-forge/win-64 omniorb 4.2.5 py39ha00b111_3 omniorb-libs 4.2.5 hb04206d_3 conda-forge/win-64 omniorb 4.2.5 py39ha00b111_4 omniorb-libs 4.2.5 hb04206d_4 conda-forge/win-64 omniorb 4.2.5 py39hb76b349_0 omniorb-libs 4.2.5 h8b1b97a_0 conda-forge/win-64 omniorb 4.2.5 py39hb76b349_1 omniorb-libs 4.2.5 h8b1b97a_1 conda-forge/win-64 omniorb 4.2.5 py39hb76b349_2 omniorb-libs 4.2.5 h8b1b97a_2 conda-forge/win-64 omniorb 4.2.5 py39hf7b6eba_0 omniorb-libs 4.2.5 hc7e8586_0 conda-forge/win-64 omniorb 4.2.5 py39hf7b6eba_1 omniorb-libs 4.2.5 hc7e8586_1 conda-forge/win-64 omniorb 4.2.5 py39hf7b6eba_2 omniorb-libs 4.2.5 hc7e8586_2 conda-forge/win-64 pytango 9.3.3 py310ha1fa0db_3 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.3 py37h4e464ee_3 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.3 py38h6aad10e_3 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.3 py39habe816b_3 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.4 py310ha1fa0db_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.4 py37h4e464ee_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.4 py38h6aad10e_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.4 py39habe816b_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.5 py310h235ec21_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.5 py310he5437e6_1 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.5 py37h6b74a72_1 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.5 py37ha060230_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.5 py38hc387ade_1 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.5 py38hfbcecd9_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.5 py39h5a00035_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.5 py39ha440df3_1 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.6 py310h235ec21_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.6 py37ha060230_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.6 py38hfbcecd9_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.3.6 py39h5a00035_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-test 3.4 h2d74725_1 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-test 3.4 h2d74725_2 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-test 3.5 h2d74725_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-test 3.6 h91493d7_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-test 3.6 h91493d7_1 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 cpptango 9.3.6 h4b90b2b_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 cpptango 9.4.1 h643942d_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 cpptango 9.4.1 h7f68e99_1 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 omniorb 4.2.5 py310h281aaab_5 omniorb-libs 4.2.5 h27dd91c_5 conda-forge/win-64 omniorb 4.2.5 py311h40cf3c0_5 omniorb-libs 4.2.5 h27dd91c_5 conda-forge/win-64 omniorb 4.2.5 py38h78b27f5_5 omniorb-libs 4.2.5 h27dd91c_5 conda-forge/win-64 omniorb 4.2.5 py39h0a8b3da_5 omniorb-libs 4.2.5 h27dd91c_5 conda-forge/win-64 pytango 9.4.0 py310hdd9df50_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.4.0 py311h44fd347_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.4.0 py38h07a3158_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.4.0 py39h191c697_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.4.1 py310hdd9df50_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.4.1 py311h44fd347_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.4.1 py38h07a3158_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 pytango 9.4.1 py39h191c697_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-access-control 2.19 h38ca5f0_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-access-control 2.19 h406b9cd_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-database 5.21 h38ca5f0_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-database 5.21 h406b9cd_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-test 3.7 h38ca5f0_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 tango-test 3.7 h406b9cd_0 omniorb-libs >=4.2.5,<4.3.0a0 conda-forge/win-64 ```
conda-forge-webservices[bot] commented 1 year ago

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

beenje commented 1 year ago

@conda-forge-admin, please rerender

beenje commented 1 year ago

Only Python 3.11 build succeeded on Windows... Other failed with:


../../../bin/x86_win32/oidlwrapper.exe -gnuwin32 -T -bcxx -Wbh=.hh -Wbs=SK.cc -p../../../src/lib/omniORB/python3 -I../../../idl -Wbdebug -Wba -p../../../src/lib/omniORB/python3 -I../../../idl -Wbdebug -v -ComniORB4 ../../../idl/Naming.idl
Python path configuration:
  PYTHONHOME = (not set)
  PYTHONPATH = 'D:\bld\omniorb_1681904925966\_h_env;'
  program name = 'python'
  isolated = 0
  environment = 1
  user site = 0
  import site = 1
  sys._base_executable = 'D:\\bld\\omniorb_1681904925966\\work\\bin\\x86_win32\\omniidl.exe'
  sys.base_prefix = 'D:\\bld\\omniorb_1681904925966\\_h_env'
  sys.base_exec_prefix = 'D:\\bld\\omniorb_1681904925966\\_h_env'
  sys.executable = 'D:\\bld\\omniorb_1681904925966\\work\\bin\\x86_win32\\omniidl.exe'
  sys.prefix = 'D:\\bld\\omniorb_1681904925966\\_h_env'
  sys.exec_prefix = 'D:\\bld\\omniorb_1681904925966\\_h_env'
  sys.path = [
    'D:\\bld\\omniorb_1681904925966\\_h_env',
    '',
    'D:\\bld\\omniorb_1681904925966\\_h_env\\python38.zip',
    'D:\\bld\\omniorb_1681904925966\\work\\bin\\x86_win32',
  ]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00000518 (most recent call first):
<no Python frame>
PYTHONPATH=%PREFIX%;
%SRC_DIR%\bin\x86_win32\omniidl -T -bcxx -Wbh=.hh -Wbs=SK.cc -p..\..\..\src\lib\omniORB\python3 -I..\..\..\idl -Wbdebug -Wba -p..\..\..\src\lib\omniORB\python3 -I..\..\..\idl -Wbdebug -v -ComniORB4 ..\..\..\idl\Naming.idl
make[2]: *** [omniORB4/Naming.hh] Error 1

Looks like some python path is missing... More debugging to do.

Update. PYTHONPATH I passed in bld.bat was incorrect. Fixed.

t-b commented 1 year ago

Regarding the ABI incompatibility. This is a problem which others should have as well or? What is the standard conda procedure? On linux you would go from package name libabcd" tolibabcd1and makelibabcd1conflict withlibabcd` (very rough summary).

beenje commented 1 year ago

Regarding the ABI incompatibility. This is a problem which others should have as well or? What is the standard conda procedure? On linux you would go from package name libabcd" tolibabcd1and makelibabcd1conflict withlibabcd` (very rough summary).

conda handles that differently. In the recipe you specify how a package is compatible using:

      run_exports:
        - {{ pin_subpackage('omniorb-libs', max_pin='x.x') }}

maxp_pin could be x or x.x.x depending on the package. max_pin='x.x' means that if you compile a package with omniorb-libs 4.2.5, it will add the run requirement omniorb-libs >=4.2.5,<4.3.0a0.

This is what we have today. If we switch to omniorb 4.3, there is no issue. Problem here is that this PR introduces a new way to build omniorb that breaks ABI compatibility with the same version (just a different build number). It's not really supposed to happen.

t-b commented 1 year ago

It's not really supposed to happen.

In that case I'd just merge it and recompile cppTango.

We are close to getting omniORB 4.3 support in cppTango but that will only be in a released version starting from 10/2023.

ajoubertza commented 1 year ago

Great work, @beenje!

I also think we should merge this and rebuild cpptango. The whoneeds query shows that only cpptango is affected on Windows, and we (Tango Controls Community) want this issue fixed for Tango Controls on Windows.

beenje commented 1 year ago

Thanks for the feedback @t-b and @ajoubertza . Merging!