yayguru 9940fd53d6
Update build.md
Spanish Translation
2025-02-13 16:31:55 +01:00

9.0 KiB

Construir Codex

Tabla de Contenidos

Opcional

Prerrequisitos

Para construir nim-codex, es necesario instalar las herramientas de desarrollo y que sean accesibles en el sistema operativo.

Las instrucciones siguientes corresponden aproximadamente a las configuraciones ambientales en el flujo de trabajo CI de nim-codex CI workflow y se sabe que funcionan.

Otros enfoques pueden ser viables. En macOS, algunos usuarios pueden preferir MacPorts o Homebrew. En Windows, en lugar de usar MSYS2, algunos usuarios pueden preferir instalar herramientas de desarrollo con winget, Scoop, o Chocolatey, o descargar instaladores para, por ejemplo, Make y CMake, mientras que de otro modo confían en las herramientas de desarrollo oficiales de Windows. ¡Las contribuciones de la comunidad a estos documentos y a nuestro sistema de construcción son bienvenidas!

Rust

La implementación actual del circuito de prueba de conocimiento cero de Codex requiere la instalación de rust v1.79.0 o superior. Asegúrate de instalarlo para tu sistema operativo y agregarlo a la ruta de tu terminal de tal manera que el comando cargo --version dé una versión compatible.

Linux

[¡ATENCION!] Las compilaciones de Linux actualmente requieren gcc ≤ 13. Si esta no es una opción en tu system, sistema, puedes intentar construir dentro de Docker como una solución alternativa.

Los comandos del administrador de paquetes pueden requerir sudo dependiendo de la configuración del sistema operativo.

En una instalación básica de Debian (o una distribución derivada de Debian, como Ubuntu), ejecuta

apt-get update && apt-get install build-essential cmake curl git rustc cargo

Las distribuciones que no son Debian tienen diferentes administradores de paquetes: apk, dnf, pacman, rpm, yum, etc.

Por ejemplo, en una instalación básica de Fedora, ejecuta

dnf install @development-tools cmake gcc-c++ rust cargo

En caso de que su distribución no proporcione la versión requerida de rust, podemos instalarla utilizando rustup

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh -s -- --default-toolchain=1.79.0 -y

. "$HOME/.cargo/env"

Ten en cuenta que actualmente no podrás construir Codex con gcc 14. Para verificar que tienes una versión compatible, ejecuta:

gcc --version

Si obtienes un número que comienza con 14 (p.j. 14.2.0), entonces necesitas degradar o probar una solución alternativa como construir dentro de Docker.

macOS

Instala las Herramientas de Línea de Comandos de Xcode abriendo una terminal y ejecutando

xcode-select --install

Instala Homebrew (brew) y en una nueva terminal ejecuta

brew install bash cmake rust

Comprueba que PATH está configurado correctamente

which bash cmake

# /usr/local/bin/bash
# /usr/local/bin/cmake

Windows + MSYS2

*Las siguientes instrucciones asumen que el sistema operativo es Windows de 64 bits y que el hardware o la máquina virtual es compatible con x86-64 *

Descarga y ejecuta el instalador desde msys2.org.

Inicia un entorno MSYS2. Generalmente se recomienda UCRT64: desde el menú Inicio de Windows selecciona MSYS2 MinGW UCRT x64.

Asumiendo un entorno UCRT64, en Bash ejecuta

pacman -Suy
pacman -S base-devel git unzip mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-rust

Deberíamos degradar GCC a la versión 13 [^gcc-14]

pacman -U --noconfirm \
  https://repo.msys2.org/mingw/ucrt64/mingw-w64-ucrt-x86_64-gcc-13.2.0-6-any.pkg.tar.zst \
  https://repo.msys2.org/mingw/ucrt64/mingw-w64-ucrt-x86_64-gcc-libs-13.2.0-6-any.pkg.tar.zst

Opcional: Integración del Terminal de VSCode

Puedes vincular el terminal MSYS2-UCRT64 a VSCode modificando el archivo de configuración como se muestra a continuación. Archivo: C:/Users/<username>/AppData/Roaming/Code/User/settings.json

{
    ...
    "terminal.integrated.profiles.windows": {
      ...
      "MSYS2-UCRT64": {
        "path": "C:\\msys64\\usr\\bin\\bash.exe",
        "args": [
          "--login",
          "-i"
        ],
        "env": {
          "MSYSTEM": "UCRT64",
          "CHERE_INVOKING": "1",
          "MSYS2_PATH_TYPE": "inherit"
        }
      }
    }
}

Otros

Es posible que nim-codex pueda ser construido y ejecutado en otras plataformas soportadas por el lenguaje Nim : familia BSD, versiones antiguas de Windows, etc. No ha habido suficiente experimentación con nim-codex en tales plataformas, por lo que no se proporcionan instrucciones. ¡Las contribuciones de la comunidad a estos documentos y a nuestro sistema de construcción son bienvenidas!

Repositorio

En Bash ejecuta

git clone https://github.com/codex-storage/nim-codex.git repos/nim-codex && cd repos/nim-codex

nim-codex utiliza el nimbus-build-system, así que a continuación ejecuta

make update

Este paso puede tardar un tiempo en completarse porque por defecto construye el compilador de Nim.

Para ver más salida de make pasa V=1. Esto funciona para todos los objetivos de make en proyectos que utilizan el nimbus-build-system

make V=1 update

Ejecutable

En Bash ejecuta

make

El objetivo make predeterminado crea el ejecutable build/codex.

Herramientas

Herramienta de descarga de circuitos

Para construir la herramienta de descarga de circuitos ubicada en tools/cirdl ejecuta:

make cirdl

Ejemplo de uso

Consulta las instrucciones en la Guía de Inicio Rápido.

Pruebas

En Bash ejecuta

make test

testAll

Prerrequisitos

Para ejecutar las pruebas de integración, se requiere un nodo de prueba de Ethereum. Sigue estas instrucciones para configurarlo.

Windows (haz esto antes de 'Todas las plataformas')
  1. Descarga e instala Visual Studio 2017 o más nuevo. (¡No VSCode!). En la descripción general de Workloads, habilita Desktop development with C++. ( https://visualstudio.microsoft.com )
Todas las plataformas
  1. Instala NodeJS (probado con v18.14.0), considera usar NVM como administrador de versiones. Node Version Manager (nvm)
  2. Abre una terminal
  3. Ve a la carpeta vendor/codex-contracts-eth: cd /<git-root>/vendor/codex-contracts-eth/
  4. npm install -> Debería completarse con el número de paquetes añadidos y una descripción general de las vulnerabilidades conocidas.
  5. npm test -> Debería mostrar los resultados de las pruebas. Puede tardar un minuto.

Antes de que se inicien las pruebas de integración, debes iniciar el nodo de prueba de Ethereum manualmente.

  1. Abre una terminal
  2. Ve a la carpeta vendor/codex-contracts-eth: cd /<git-root>/vendor/codex-contracts-eth/
  3. npm start -> Esto debería iniciar Hardhat, y mostrar una serie de claves más un mensaje de advertencia.

Ejecutar

El objetivo testAll ejecuta las mismas pruebas que make test y también ejecuta pruebas para los contratos Ethereum de nim-codex, así como un conjunto básico de pruebas de integración.

Para ejecutar make testAll.

Usa una nueva terminal para ejecutar:

make testAll

Construyendo Dentro de Docker

Para el caso específico de las distribuciones de Linux que se entregan con gcc 14 y una degradación a 13 no es posible/deseable, la construcción dentro de un contenedor Docker y la extracción de los binarios copiando o montando sigue siendo una opción; por ejemplo:

# Clona el repositorio original.
git clone https://github.com/codex-storage/nim-codex

# Construye dentro de docker
docker build -t codexstorage/nim-codex:latest -f nim-codex/docker/codex.Dockerfile nim-codex

# Extrae el ejecutable
docker create --name=codex-build codexstorage/nim-codex:latest
docker cp codex-build:/usr/local/bin/codex ./codex
docker cp codex-build:/usr/local/bin/cirdl ./cirdl

y voilà, deberías tener los binarios disponibles en la carpeta actual.