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.

Instalando una versión personalizada de Cabal y utilizándolo para Stack.

Estoy tratando de construir una pila frente a una versión personalizada de Cabal. Para eso, primero intenté instalar mi versión de Cabal personalizada desde el árbol de git modificado, a través de cabal install --project-file=cabal.project.release --lib Cabal, produciendo la siguiente salida recortada:


[...]
Resolviendo dependencias...
Perfil de construcción: -w ghc-8.10.5 -O1
En orden, se construirán los siguientes componentes (usar -v para más detalles):
- Cabal-3.7.0.0 (lib) (requiere construcción)
Comenzando Cabal-3.7.0.0 (lib)
Construyendo Cabal-3.7.0.0 (lib)
Instalando Cabal-3.7.0.0 (lib)
Completado Cabal-3.7.0.0 (lib)

Después intenté instalar Stack. Sin embargo, al construir, observé que en lugar de usar mi versión modificada 3.7.0.0 de Cabal del sistema anterior, se utiliza la versión 3.2.1.0:


[...]
stack > configure (lib + exe)
[1 de 2] Compilando Main ( /home/max/stack/Setup.hs, /home/max/stack/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/setup/Main.o )
[2 de 2] Compilando StackSetupShim ( /home/max/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /home/max/stack/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/setup/StackSetupShim.o )
Generando enlace /home/max/stack/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/setup/setup ...
Configurando stack-2.7.4...

Al consultar la versión de cabal que tengo instalada, obtengo:


$ cabal list --installed Cabal
* Cabal
Sinopsis: Un marco para empaquetar software Haskell
Versión disponible predeterminada: 3.6.2.0
Versiones instaladas: 3.2.1.0
Página principal: http://www.haskell.org/cabal/
Licencia: BSD3

Parece que la instalación de mi versión modificada 3.7.0.0 de Cabal no tuvo éxito. ¿Hay alguna forma de instalar una biblioteca de Cabal personalizada y usarla en un proyecto diferente, como por ejemplo, al construir Stack?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de instalar una biblioteca personalizada de Cabal y usarla en un proyecto diferente. En lugar de usar cabal install, puedes construir e instalar la versión personalizada de Cabal desde la fuente utilizando los siguientes pasos:

    1. Clona el repositorio de Cabal desde Github:
    git clone https://github.com/haskell/cabal.git
    
    1. Cambia al branch/tag que corresponda a la versión de Cabal que desees usar. Por ejemplo, si deseas usar la versión 3.7.0.0, puedes cambiar al tag 3.7.0.0:
    cd cabal
    git checkout tags/3.7.0.0
    
    1. Construye e instala Cabal utilizando stack. Esto construirá un paquete local e lo instalará en la base de datos de paquetes local de tu usuario:
    stack install Cabal
    

    Después de esto, puedes verificar que la versión personalizada de Cabal ha sido instalada ejecutando cabal list --installed Cabal nuevamente. Debería mostrar la versión que acabas de instalar (por ejemplo, 3.7.0.0).

    Para usar la versión personalizada de Cabal al construir stack, necesitas decirle a stack que utilice la base de datos de paquetes local en lugar de la global. Puedes hacer esto agregando lo siguiente a tu archivo stack.yaml:

    package-indices:
    - ~/.stack/indices/Hackage
    - ~/.stack/indices/HaskellStackStackage
    - ~/.stack/indices/local
    

    Después de esto, stack debería utilizar la versión personalizada de Cabal al construir.

Comments are closed.