broken libgit2 package in nixpkgs - Imported target "libgit2::libgit2package" includes non-existent path in its INTERFACE_INCLUDE_DIRECTORIES

Abierto
#7,293 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
c, cmake
Área
build-system

Línea de trabajo

Comienza con el package.nix de nixpkgs enlazado y compara sus salidas con libgit2Targets.cmake en la ruta dev store indicada. Reproduce el ejemplo de CMakeLists.txt del issue y verifica después que el destino libgit2::libgit2package generado haga referencia a la salida que contiene los headers y se configure correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

i guess this is a downstream bug in nixpkgs
but maybe someone here cares to fix it

i can use libgit2 via pkg-config

CMakeLists.txt - using libgit2 via pkg-config
cmake_minimum_required(VERSION 3.20)
project(git-file-times-project LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBGIT2 REQUIRED libgit2)

add_executable(git-file-times
    src/main.cpp
)

target_include_directories(git-file-times PRIVATE
    ${LIBGIT2_INCLUDE_DIRS}
)

target_link_directories(git-file-times PRIVATE
    ${LIBGIT2_LIBRARY_DIRS}
)

target_link_libraries(git-file-times PRIVATE
    ${LIBGIT2_LIBRARIES}
)

target_compile_options(git-file-times PRIVATE
    ${LIBGIT2_CFLAGS_OTHER}
)

but i cannot use libgit2 via cmake targets

CMakeLists.txt - using libgit2 via cmake targets
cmake_minimum_required(VERSION 3.20)
project(git-file-times-project LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

find_package(libgit2 REQUIRED)

add_executable(git-file-times
    src/main.cpp
)

target_link_libraries(git-file-times PRIVATE
    libgit2::libgit2package
)

when i try to use libgit2 via cmake targets
cmake throws

CMake Error in CMakeLists.txt:
  Imported target "libgit2::libgit2package" includes non-existent path

    "/nix/store/ic7b9ni4f81807835k9cw3jb0ak31cpg-libgit2-1.9.2/include"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.

/nix/store/n4912v5kzbc9bicq3pi865kdmhzdngxa-libgit2-1.9.2-dev/lib/cmake/libgit2/libgit2Targets.cmake

# The installation prefix configured by this project.
set(_IMPORT_PREFIX "/nix/store/ic7b9ni4f81807835k9cw3jb0ak31cpg-libgit2-1.9.2")

# Create imported target libgit2::libgit2package
add_library(libgit2::libgit2package SHARED IMPORTED)

set_target_properties(libgit2::libgit2package PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
  INTERFACE_LINK_LIBRARIES "/nix/store/wbyqkb1vpm41s4jb8pv0i9h4jv08xdrv-openssl-3.6.1/lib/libssl.so;/nix/store/wbyqkb1vpm41s4jb8pv0i9h4jv08xdrv-openssl-3.6.1/lib/libcrypto.so;/nix/store/rqm937a4rpsa6qdb86slfjkvm7h4wjd5-llhttp-9.3.1/lib/libllhttp.so;/nix/store/khhzkpj9169ydnyg7jjrjx7s5ygdkcas-pcre2-10.46/lib/libpcre2-8.so;/nix/store/9lzm6krq5ikzbqbmazbh5jmzwph99rz3-libssh2-1.11.1/lib/libssh2.so;/nix/store/ixhlv41i2wpl84xgjcks061dz4yssbg3-zlib-1.3.2/lib/libz.so;rt"
)

_IMPORT_PREFIX should be the dev output of libgit2
/nix/store/n4912v5kzbc9bicq3pi865kdmhzdngxa-libgit2-1.9.2-dev

the dev output of libgit2 contains the header files

$ ls /nix/store/n4912v5kzbc9bicq3pi865kdmhzdngxa-libgit2-1.9.2-dev/include/
git2  git2.h

the main output of libgit2 contains only the git2 executable

$ find /nix/store/ic7b9ni4f81807835k9cw3jb0ak31cpg-libgit2-1.9.2 -type f
/nix/store/ic7b9ni4f81807835k9cw3jb0ak31cpg-libgit2-1.9.2/bin/git2
shell.nix
{ pkgs ? import <nixpkgs> {} }:
with pkgs;
mkShell {
  buildInputs = [
    cmake
    pkg-config
    libgit2
    # for libgit2
    openssl
    pcre2
    zlib
  ];
}

this is different from #7062

Lenguaje dominante
C
Estrellas
10.6k
Forks
2.7k
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de libgit2/libgit2

Todos los issues de libgit2/libgit2

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.