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?
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:3.7.0.0
:stack
. Esto construirá un paquete local e lo instalará en la base de datos de paquetes local de tu usuario: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:Después de esto,
stack
debería utilizar la versión personalizada de Cabal al construir.