Notificaciones de passwords de la autoridad de certificación firmada por CMake Ninja Git

Version corta:

Estoy usando CMake y Ninja con una dependencia externa en un repository git que requiere un aviso de contraseña. (El código fuente debe estar seguro).

Al build usando Makefiles, puedo usar la request de contraseña y todo continúa.

Con Ninja se bloquea en:

-- Build files have been written to: /path/to/project/hello_cpp/build/sqlite3-download [1/9] Creating directories for 'sqlite3-download' Enter PEM pass phrase: 

Mi pregunta:

¿Cómo hago que Ninja me permita ingresar la contraseña?

Versión larga

Los siguientes son los pasos que he tomado y el context de la pregunta.

He creado SQLite3 CMake Library como un ejercicio de aprendizaje sobre cómo crear una biblioteca CMake.

También creé Hello CPP como ejercicio de aprendizaje para build una plataforma cruzada de proyecto C ++ y configurar una plantilla de proyecto.

Logré que las dependencies externas funcionaran a través del DownloadProject CMake Module de Craig Scott .

 include(DownloadProject) download_project(PROJ sqlite3 GIT_REPOSITORY "https://github.com/dexata/sqlite3-cmake.git" GIT_TAG master ) add_subdirectory(${sqlite3_SOURCE_DIR} ${sqlite3_BINARY_DIR}) target_link_libraries(helloworld_lib_target sqlite3) get_property(sqlite3_inc_dir TARGET sqlite3 PROPERTY INCLUDE_DIRECTORIES) 

También he escrito la siguiente respuesta a ¿Cómo puedo hacer que Git acepte un certificate autofirmado?

Así que estoy bastante consciente de las características de security de git autoguiado. Tenemos la restricción actual de que nuestra única connection es a través de https para acceder a nuestra instancia de git. Incluso si permitimos el acceso de ssh, todavía tenemos la política de security de que la key privada tiene una contraseña y, por lo tanto, Ninja aún necesita permitir indicaciones interactivas.

Como dije antes, funciona con Makefiles pero estoy tratando de hacerlo funcionar para Ninja .

Su ayuda es apreciada por adelantado.

Todavía puede usar ssh con keys privadas que tienen passwords. Use algo como ssh-agent y ssh-add para que solo tenga que ingresar su contraseña una vez para el shell actual (es decir, antes de iniciar la compilation) y luego su compilation no solicitará ninguna contraseña.

Si está bloqueado para usar https y necesita ingresar una contraseña, puede intentar agregar las diversas opciones USES_TERMINAL_... en su llamada a download_project() . Creo que USES_TERMINAL_DOWNLOAD y USES_TERMINAL_UPDATE deberían ser todo lo que necesitas. Estas opciones están documentadas en el module ExternalProject y el download_project() pasa por todas las opciones que no reconoce a la llamada subyacente a ExternalProject_Add() . La documentation indica que esto le da acceso a Ninja a la terminal, por lo que tal vez tendrá la oportunidad de ingresar la contraseña.

Sin embargo, tener que ingresar su contraseña para cada compilation rápidamente resulta tedioso y hace que las comstackciones de CI automatizadas sean bastante difíciles. Recomiendo encarecidamente que considere la alternativa de SSH, que normalmente se integra bien con los sistemas de CI y es mucho más conveniente para el desarrollo diario.