conda-forge / hdbpp-es-feedstock

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

Requires old cppTango version 9.4.2 #5

Closed t-b closed 1 month ago

t-b commented 1 month ago

Solution to issue cannot be found in the documentation.

Issue

(hdbpp) ~/miniforge3/envs/hdbpp/bin  $ conda install hdbpp-es 
Channels:
 - conda-forge
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/firma/miniforge3/envs/hdbpp

  added / updated specs:
    - hdbpp-es

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    cpptango-9.4.2             |       hd7a31c2_1         2.2 MB  conda-forge
    hdbpp-es-2.2.0             |       h7d02227_1         186 KB  conda-forge
    libhdbpp-2.2.0             |       h2b977a6_0          22 KB  conda-forge
    libhdbpp-timescale-2.3.0   |       h9022560_0         228 KB  conda-forge
    omniorb-libs-4.2.5         |       h6bbaf85_7         2.1 MB  conda-forge
    ------------------------------------------------------------
                                           Total:         4.7 MB

The following NEW packages will be INSTALLED:

  hdbpp-es           conda-forge/linux-64::hdbpp-es-2.2.0-h7d02227_1 
  libhdbpp           conda-forge/linux-64::libhdbpp-2.2.0-h2b977a6_0 

The following packages will be DOWNGRADED:

  cpptango                                 9.5.0-h6a15873_1 --> 9.4.2-hd7a31c2_1 
  libhdbpp-timescale                       2.3.0-h338dcce_0 --> 2.3.0-h9022560_0 
  omniorb-libs                             4.3.1-h1933689_2 --> 4.2.5-h6bbaf85_7 

Proceed ([y]/n)? n

Installed packages

# packages in environment at /home/firma/miniforge3/envs/hdbpp:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
ca-certificates           2024.7.4             hbcca054_0    conda-forge
cpptango                  9.5.0                h6a15873_1    conda-forge
fmt                       9.1.0                h924138e_0    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
krb5                      1.19.3               h08a2579_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libgcc                    14.1.0               h77fa898_1    conda-forge
libgcc-ng                 14.1.0               h69a702a_1    conda-forge
libgomp                   14.1.0               h77fa898_1    conda-forge
libhdbpp-timescale        2.3.0                h338dcce_0    conda-forge
libjpeg-turbo             3.0.0                hd590300_1    conda-forge
libpq                     13.8                 he2d8382_0    conda-forge
libpqxx                   6.4.5                h9c3ff4c_0    conda-forge
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libstdcxx                 14.1.0               hc0a3c3a_1    conda-forge
libstdcxx-ng              14.1.0               h4852527_1    conda-forge
libzlib                   1.3.1                h4ab18f5_1    conda-forge
ncurses                   6.5                  he02047a_1    conda-forge
omniorb-libs              4.3.1                h1933689_2    conda-forge
openssl                   3.1.6                h4ab18f5_0    conda-forge
readline                  8.2                  h8228510_1    conda-forge
spdlog                    1.12.0               h5743cc6_0    conda-forge
zeromq                    4.3.5                h59595ed_1    conda-forge
zstd                      1.5.6                ha6fb4c9_0    conda-forge

Environment info

active environment : hdbpp
    active env location : /home/firma/miniforge3/envs/hdbpp
            shell level : 2
       user config file : /home/firma/.condarc
 populated config files : /home/firma/miniforge3/.condarc
          conda version : 24.7.1
    conda-build version : not installed
         python version : 3.10.14.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=haswell
                          __conda=24.7.1=0
                          __glibc=2.36=0
                          __linux=6.1.0=0
                          __unix=0=0
       base environment : /home/firma/miniforge3  (writable)
      conda av data dir : /home/firma/miniforge3/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : /home/firma/miniforge3/pkgs
                          /home/firma/.conda/pkgs
       envs directories : /home/firma/miniforge3/envs
                          /home/firma/.conda/envs
               platform : linux-64
             user-agent : conda/24.7.1 requests/2.31.0 CPython/3.10.14 Linux/6.1.0-23-amd64 debian/12.6 glibc/2.36 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.8
                UID:GID : 1000:1000
             netrc file : None
           offline mode : False
beenje commented 1 month ago

Short version: you can install hdbpp-es=2.2.0 and cpptango=9.5.0 if you specify it.

Longer version:

Issue is linked to libhdbpp-timescale. If you only install hdbpp-es, it will use cppantgo 9.5 by default:

$ mamba create -n hdbpp --dry-run hdbpp-es

  + cpptango                9.5.0  h6a15873_1   conda-forge/linux-64        2MB
  + hdbpp-es                2.2.0  h7c9bab5_1   conda-forge/linux-64      190kB
...
  + omniorb-libs            4.3.2  h4e5c506_3   conda-forge/linux-64        2MB
  + openssl                 3.3.1  hb9d3cd8_3   conda-forge/linux-64        3MB

If you add libhdbpp-timescale, you have to specify the cpptango you want:

$ mamba create -n hdbpp --dry-run hdbpp-es  cpptango=9.5.0 libhdbpp-timescale

  + cpptango                   9.5.0  h6a15873_1   conda-forge/linux-64        2MB
  + hdbpp-es                   2.2.0  h7c9bab5_0   conda-forge/linux-64      190kB
  + omniorb-libs               4.3.1  h1933689_2   conda-forge/linux-64        2MB
  + openssl                    3.1.6  h4ab18f5_0   conda-forge/linux-64        3MB

What doesn't work is to install hdbpp-es-dbg as well:

$ mamba create -n hdbpp --dry-run hdbpp-es  cpptango=9.5.0 libhdbpp-timescale hdbpp-es-dbg

  └─ hdbpp-es-dbg 2.2.0 would require
│     └─ hdbpp-es 2.2.0 h7c9bab5_1, which requires
│        └─ omniorb-libs >=4.3.2,<4.4.0a0  with the potential options
│           ├─ omniorb-libs 4.3.2 would require
│           │  └─ openssl >=3.2.0,<4.0a0 , which can be installed;
│           ├─ omniorb-libs 4.3.2 would require
│           │  └─ openssl >=3.2.1,<4.0a0 , which can be installed;
│           └─ omniorb-libs 4.3.2 would require
│              └─ openssl >=3.3.1,<4.0a0 , which can be installed;
└─ libhdbpp-timescale   is uninstallable because it requires
   └─ libpqxx >=6.4.5,<6.5.0a0 , which requires
      └─ libpq >=13.2,<14.0a0  but there are no viable options
         ├─ libpq [13.2|13.3] would require
         │  └─ openssl >=1.1.1k,<1.1.2a , which conflicts with any installable versions previously reported;
         ├─ libpq [13.3|13.5] would require
         │  └─ openssl >=1.1.1l,<1.1.2a , which conflicts with any installable versions previously reported;
         ├─ libpq 13.5 would require
         │  └─ openssl >=3.0.0,<3.2.0a0 , which conflicts with any installable versions previously reported;
         ├─ libpq 13.8 would require
         │  └─ openssl >=1.1.1q,<1.1.2a , which conflicts with any installable versions previously reported;
         └─ libpq 13.8 would require
            └─ openssl >=3.0.5,<3.2.0a0 , which conflicts with any installable versions previously reported.

hdbpp-es-dbg is only available in the build 1 that was compiled with omniorb-libs 4.3.2, which requires openssl >=3.3.1.

libhdbpp-timescale depends on libpq that requires openssl <3.2.0a0.

When you want to install hdbpp-es and libhdbpp-timescale together, the solver will give higher priority to the latest build of hdbpp-es. There are 3 variants of this build (for cpptango 9.3, 9.4 and 9.5). As the 9.5 one isn't compatible due to openssl, it selects 9.4.

If you force cpptango=9.5, it will use the build 0 that was compiled with omniorb 4.3.1 and openssl 3.1.

There were issues with Postgres and openssl 3.2: https://github.com/conda-forge/postgresql-feedstock/issues/178 This has been fixed but only for newer versions.

As we force libpqxx to 6.4 in the libhdbpp-timescale recipe, I don't think we will solve this. We will have to rebuild libhdbpp-timescale with a newer version of libpqxx. That might require changes in the project. I will create an issue.

t-b commented 1 month ago

Thanks Benjamin for the analysis. I'll use the workarounds.