es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Construyendo CEPH en macOS 10.15 (Catalina): Problema con CMake: Se han especificado más de un archivo de entrada

Estoy tratando de construir CEPH Pacific (16.x) en MacOS para poder montar un clúster de CEPH. Después de resolver muchos problemas y brechas en la documentación oficial, actualmente me encuentro atascado en un error que no puedo resolver.

Durante la compilación, se produce el siguiente error:

[  9%] Construction de l'objet ASM src/common/CMakeFiles/crc32.dir/__/isa-l/crc/crc32_iscsi_00.asm.o
/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk: fatal: se especificaron más de un archivo de entrada: /Users/codebaard/dev/ceph/src/isa-l/crc/crc32_iscsi_00.asm

make[2]: *** [src/common/CMakeFiles/crc32.dir/__/isa-l/crc/crc32_iscsi_00.asm.o] Error 1
make[1]: *** [src/common/CMakeFiles/crc32.dir/all] Error 2
make: *** [all] Error 2

Mis investigaciones me llevaron a concluir que es un problema con las versiones de CMake superiores a 3.19.x, que aparentemente establecen algunas banderas incorrectas con NASM, lo que provoca esta anomalía durante la compilación. La solución sencilla sería utilizar CMake 3.18.4, que supuestamente no tiene este error. Sin embargo, esto no ayudó en mi caso.
En realidad, la línea que presumiblemente causa el error está en (ceph-repository): /src/common/CMakeLists.txt: 211:

if(HAVE_NASM_X64)
    set(CMAKE_ASM_FLAGS "-i ${PROJECT_SOURCE_DIR}/src/isa-l/include/ ${CMAKE_ASM_FLAGS}")
    list(APPEND crc32_srcs
      ${PROJECT_SOURCE_DIR}/src/isa-l/crc/crc32_iscsi_00.asm
      crc32c_intel_fast_zero_asm.s)
endif(HAVE_NASM_X64)

Si comento esta sección, el error desaparece, lo que confirma mi teoría, pero luego falla el enlazador debido a la falta de binarios, probablemente de este paso.

Entonces la pregunta es: ¿alguien tiene alguna idea de qué está ocurriendo aquí? Y si es así, ¿cómo podría ser una solución?

Esto sería un hito importante, ya que no hay fuentes reales en Internet sobre cómo hacer que ceph funcione en MacOS y me encantaría ver un uso más extendido.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basado en el mensaje de error, parece que el problema podría estar relacionado con la versión de CMake que se está utilizando para compilar CEPH Pacific (16.x) en MacOS. Parece que las versiones de CMake >3.19.x podrían establecer algunas banderas con NASM de forma incorrecta, lo que resulta en este error durante la compilación.

    Una posible solución sería utilizar una versión anterior de CMake, como la 3.18.4. Sin embargo, esto no funcionó en este caso.

    Al observar el archivo CMakeLists.txt en /src/common/CMakeLists.txt:211, parece que el problema podría estar relacionado con los comandos set() y list(APPEND) utilizados con la bandera HAVE_NASM_X64. Comentar esta sección parece hacer que el error desaparezca, pero esto resulta en la falta de binarios y errores de enlazador subsiguientes.

    Una posible solución sería investigar las banderas que están configuradas por la versión más nueva de CMake y ver si hay una forma de modificarlas para que funcionen en MacOS. Otra solución potencial podría ser intentar compilar CEPH Pacific en un sistema operativo diferente, como Linux o FreeBSD, donde ya se ha compilado y montado con éxito en un clúster CEPH.

Comments are closed.