brechtsanders / xlsxio

XLSX I/O - C library for reading and writing .xlsx files
MIT License
396 stars 112 forks source link

It tries to find `minizip` when it should find `minizip-ng` #126

Open playgithub opened 5 months ago

playgithub commented 5 months ago

On arch linux, there no cmake file for the lib minizip to be found by find_package.

So minizip-ng is used instead, PKGBUILD as below installs xlsxio successfully

PKGBUILD

pkgname=xlsxio
pkgver="0.2"
pkgrel=1
pkgdesc="C library for reading and writing .xlsx files"
arch=('x86_64')
provides=('xlsxio')
url=https://github.com/brechtsanders/xlsxio
license=('MIT')
depends=('expat' 'minizip-ng')
makedepends=('cmake>=3.20' 'git' 'openssl')
source=("$pkgname-$pkgver"::"git+ssh://github.com/brechtsanders/xlsxio.git")
sha256sums=('SKIP')
install_prefix=/usr/local

build() {
    cd "$pkgname-$pkgver"

    cmake -S . \
          -B out \
          -DCMAKE_BUILD_TYPE=Release \
          -DBUILD_EXAMPLES=OFF \
          -DBUILD_STATIC=OFF \
          -DBUILD_TOOLS=OFF \
          -DWITH_MINIZIP_NG=ON \
          -DMINIZIP_NG_SUFFIX="-ng"

    cmake --build out -j 12
}

package() {
    cd "$pkgname-$pkgver"
    DESTDIR="$pkgdir/" cmake --install out --prefix="$install_prefix"
}

But when tries to use the lib in cmake, it fails:

find_package(xlsxio REQUIRED CONFIG)

error msg:

[cmake] CMake Error at /usr/share/cmake/Modules/CMakeFindDependencyMacro.cmake:76 (find_package):
[cmake]   Could not find a package configuration file provided by "minizip" with any
[cmake]   of the following names:
[cmake] 
[cmake]     minizipConfig.cmake
[cmake]     minizip-config.cmake

Dig a little, /usr/local/cmake/xlsxio-config.cmake still finds minizip instead of minizip-ng:

INCLUDE(CMakeFindDependencyMacro)
IF (OFF)
  FIND_DEPENDENCY(LibZip)
ELSE()
  FIND_DEPENDENCY(minizip CONFIG)
ENDIF()
IF ()
  FIND_PATH(EXPAT_INCLUDE_DIR NAMES expat.h NO_DEFAULT_PATH PATHS ${EXPAT_DIR}/include ${EXPAT_DIR})
  FIND_LIBRARY(EXPAT_LIBRARIES NAMES expat libexpat NO_DEFAULT_PATH PATHS ${EXPAT_DIR}/lib ${EXPAT_DIR})
ELSE()
  FIND_DEPENDENCY(EXPAT)
ENDIF()

IF(OFF)
  IF()
    FIND_LIBRARY(EXPATW_LIBRARIES NAMES expatw libexpatw NO_DEFAULT_PATH PATHS ${EXPAT_DIR}/lib ${EXPAT_DIR})
  ELSE()
    FIND_LIBRARY(EXPATW_LIBRARIES NAMES expatw)
  ENDIF()
ENDIF()

INCLUDE("${CMAKE_CURRENT_LIST_DIR}/xlsxioTargets.cmake")
brechtsanders commented 5 months ago

Did you try to build against minizip-ng 4.0.4 from https://github.com/zlib-ng/minizip-ng/releases ?

playgithub commented 5 months ago

Did you try to build against minizip-ng 4.0.4 from https://github.com/zlib-ng/minizip-ng/releases ?

No, the version is already 4.0.4 in archlinux official repo.

$ pacman -Ss minizip-ng
extra/minizip-ng 4.0.4-1
    Fork of the popular zip manipulation library found in the zlib distribution