--disable-{executable-}profiling cabal-install-1.22.0.0 with ghc-7.6.3

A recent change in cabal-install's command line interface seems not to be compatible with ghc-7.6.3. cabal-install-1.22.0.0 doesn't like --disable-executable-profiling as a command line option any more. (I could only find this related to this change: https://github.com/haskell/cabal/pull/2286) $ cabal install --disable-executable-profiling cabal: unrecognized 'install' option `--disable-executable-profiling' I try --disable-profiling instead. $ cabal install transformers --disable-profiling -j3 Resolving dependencies... Notice: installing into a sandbox located at [snip] Configuring transformers-0.4.2.0... Failed to install transformers-0.4.2.0 Build log [snip]: unrecognized 'configure' option `--disable-profiling' cabal: Error: some packages failed to install: transformers-0.4.2.0 failed during the configure step. The exception was: ExitFailure 1 Using the following versions of cabal and ghc. $ cabal -V cabal-install version 1.22.0.0 using version 1.22.0.0 of the Cabal library $ ghc -V The Glorious Glasgow Haskell Compilation System, version 7.6.3 --disable-profiling works fine with ghc-7.8.3, this is only a problem with 7.6.3. PS: transformers is only a dependency of an executable I am trying to build. But this happens with all the other dependencies as well. -- Ozgur Akgun

I've had this problem as well. I think the issue is that 'cabal' now
expects '--disable-profiling', but if you have a custom Setup.hs, it
can be compiled with an older version of the Cabal library, and then
it expects '--disable-executable-profiling' again. What is the output
of 'ghc-pkg list Cabal'?
I meant to report this issue as well, so thank you for bringing it up.
There's a similar issue for --disable[-library]-coverage. It's not
only this issue that is annoying about it, but also that it makes it
very hard to write wrapper scripts around cabal that use these flags.
Cabal devs, do you think the old flags could be added back, perhaps
with a deprecation warning or something?
Regards,
Erik
On Tue, Jan 13, 2015 at 1:28 PM, Ozgur Akgun
A recent change in cabal-install's command line interface seems not to be compatible with ghc-7.6.3.
cabal-install-1.22.0.0 doesn't like --disable-executable-profiling as a command line option any more. (I could only find this related to this change: https://github.com/haskell/cabal/pull/2286)
$ cabal install --disable-executable-profiling cabal: unrecognized 'install' option `--disable-executable-profiling'
I try --disable-profiling instead.
$ cabal install transformers --disable-profiling -j3 Resolving dependencies... Notice: installing into a sandbox located at [snip] Configuring transformers-0.4.2.0... Failed to install transformers-0.4.2.0 Build log [snip]: unrecognized 'configure' option `--disable-profiling' cabal: Error: some packages failed to install: transformers-0.4.2.0 failed during the configure step. The exception was: ExitFailure 1
Using the following versions of cabal and ghc.
$ cabal -V cabal-install version 1.22.0.0 using version 1.22.0.0 of the Cabal library $ ghc -V The Glorious Glasgow Haskell Compilation System, version 7.6.3
--disable-profiling works fine with ghc-7.8.3, this is only a problem with 7.6.3.
PS: transformers is only a dependency of an executable I am trying to build. But this happens with all the other dependencies as well.
-- Ozgur Akgun
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 13 January 2015 at 13:00, Erik Hesselink
I've had this problem as well. I think the issue is that 'cabal' now expects '--disable-profiling', but if you have a custom Setup.hs, it can be compiled with an older version of the Cabal library, and then it expects '--disable-executable-profiling' again. What is the output of 'ghc-pkg list Cabal'?
I have 3 versions of Cabal as reported by "ghc-pkg list Cabal". Cabal-1.16.0 in the global package db, Cabal-1.18.1 and Cabal-1.20.0.0 in the user db. Do you think I should be hiding the old ones? Ozgur

Already fixed on the 1.22 branch:
https://github.com/haskell/cabal/issues/2313
On Tue, Jan 13, 2015 at 5:13 AM, Ozgur Akgun
On 13 January 2015 at 13:00, Erik Hesselink
wrote: I've had this problem as well. I think the issue is that 'cabal' now expects '--disable-profiling', but if you have a custom Setup.hs, it can be compiled with an older version of the Cabal library, and then it expects '--disable-executable-profiling' again. What is the output of 'ghc-pkg list Cabal'?
I have 3 versions of Cabal as reported by "ghc-pkg list Cabal". Cabal-1.16.0 in the global package db, Cabal-1.18.1 and Cabal-1.20.0.0 in the user db. Do you think I should be hiding the old ones?
Ozgur
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 13 January 2015 at 13:20, Johan Tibell
Already fixed on the 1.22 branch: https://github.com/haskell/cabal/issues/2313
Great, thanks! The fix seems to be allowing the use of the old flag (--disable-executable-profiling). Using the new flag (--disable-profiling) with an older ghc also apparently works, but requires Cabal-1.22.0.0 (as well as cabal-install-1.22.0.0) So I wonder: why doesn't cabal-install-1.22.0.0 require Cabal-1.22.0.0? Ozgur
On Tue, Jan 13, 2015 at 5:13 AM, Ozgur Akgun
wrote: On 13 January 2015 at 13:00, Erik Hesselink
wrote: I've had this problem as well. I think the issue is that 'cabal' now expects '--disable-profiling', but if you have a custom Setup.hs, it can be compiled with an older version of the Cabal library, and then it expects '--disable-executable-profiling' again. What is the output of 'ghc-pkg list Cabal'?
I have 3 versions of Cabal as reported by "ghc-pkg list Cabal". Cabal-1.16.0 in the global package db, Cabal-1.18.1 and Cabal-1.20.0.0 in the user db. Do you think I should be hiding the old ones?
Ozgur
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Ozgur Akgun

On Tue, Jan 13, 2015 at 2:13 PM, Ozgur Akgun
On 13 January 2015 at 13:00, Erik Hesselink
wrote: I've had this problem as well. I think the issue is that 'cabal' now expects '--disable-profiling', but if you have a custom Setup.hs, it can be compiled with an older version of the Cabal library, and then it expects '--disable-executable-profiling' again. What is the output of 'ghc-pkg list Cabal'?
I have 3 versions of Cabal as reported by "ghc-pkg list Cabal". Cabal-1.16.0 in the global package db, Cabal-1.18.1 and Cabal-1.20.0.0 in the user db. Do you think I should be hiding the old ones?
I think you need to install Cabal-1.22 at least, if you want cabal-install 1.22 to work with these flags. That's my suspicion, at least, I haven't thoroughly tested this. If you have 1.22, I think cabal-install will just use that, since it's the newest. If it doesn't, you can try hiding the older ones. Erik

Erik,
On 13 January 2015 at 13:20, Erik Hesselink
I think you need to install Cabal-1.22 at least, if you want cabal-install 1.22 to work with these flags. That's my suspicion, at least, I haven't thoroughly tested this. If you have 1.22, I think cabal-install will just use that, since it's the newest. If it doesn't, you can try hiding the older ones.
I've just tried, and you suspicion is correct! Compiling cabal install with Cabal-1.22.0.0 enables the use of the new flag with the old ghc. To be precise, I ran the following and can use --disable-profiling with ghc-7.6.3 now. $ cabal install cabal-install-1.22.0.0 Cabal-1.22.0.0 Thanks! Ozgur

On 13 January 2015 at 13:43, Ozgur Akgun
To be precise, I ran the following and can use --disable-profiling with ghc-7.6.3 now.
I spoke too early. Weird problem, running `cabal install --disable-profiling -j1` works, but using a higher number of cores I get the same error during cabal configure. Here is what I did. $ ghc -V The Glorious Glasgow Haskell Compilation System, version 7.6.3 $ cabal -V cabal-install version 1.22.0.0 using version 1.22.0.0 of the Cabal library $ cabal install -j3 --disable-profiling mtl Resolving dependencies... Configuring transformers-0.4.2.0... Failed to install transformers-0.4.2.0 Build log [...]: unrecognized 'configure' option `--disable-profiling' cabal: Error: some packages failed to install: mtl-2.2.1 depends on transformers-0.4.2.0 which failed to install. transformers-0.4.2.0 failed during the configure step. The exception was: ExitFailure 1 $ cabal install -j1 --disable-profiling mtl (This works fine.) Am I missing something? Ozgur

I wonder if you have a cached Setup.hs somewhere under ~/.cabal that's out
of date (i.e. uses and older Cabal). You can try -v2 or -v3 to get some
more information. In particular look for mentions of older Cabal versions.
On Tue, Jan 13, 2015 at 5:53 AM, Ozgur Akgun
On 13 January 2015 at 13:43, Ozgur Akgun
wrote: To be precise, I ran the following and can use --disable-profiling with ghc-7.6.3 now.
I spoke too early.
Weird problem, running `cabal install --disable-profiling -j1` works, but using a higher number of cores I get the same error during cabal configure. Here is what I did.
$ ghc -V The Glorious Glasgow Haskell Compilation System, version 7.6.3 $ cabal -V cabal-install version 1.22.0.0 using version 1.22.0.0 of the Cabal library $ cabal install -j3 --disable-profiling mtl Resolving dependencies... Configuring transformers-0.4.2.0... Failed to install transformers-0.4.2.0 Build log [...]: unrecognized 'configure' option `--disable-profiling' cabal: Error: some packages failed to install: mtl-2.2.1 depends on transformers-0.4.2.0 which failed to install. transformers-0.4.2.0 failed during the configure step. The exception was: ExitFailure 1 $ cabal install -j1 --disable-profiling mtl (This works fine.)
Am I missing something?
Ozgur
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 13 January 2015 at 13:59, Johan Tibell
I wonder if you have a cached Setup.hs somewhere under ~/.cabal that's out of date (i.e. uses and older Cabal). You can try -v2 or -v3 to get some more information. In particular look for mentions of older Cabal versions.
This is probably it. With -v3 I see the following in the output. Using Cabal library version 1.20.0.0 Found cached setup executable: $HOME/.cabal/setup-exe-cache/setup-Simple-Cabal-1.20.0.0-x86_64-osx-ghc-7.6.3 $HOME/.cabal/setup-exe-cache/setup-Simple-Cabal-1.20.0.0-x86_64-osx-ghc-7.6.3 Then I rm -rf $HOME/.cabal/setup-exe-cache, but this doesn't seem to help. Using Cabal library version 1.20.0.0 Setup executable not found in the cache. Setup executable needs to be updated, compiling... So it compiles the Setup executable using Cabal-1.20.0.0 again. And now I know why this happens. I had compiled cabal-install using ghc-7.8.3 before. So 7.6.3 doesn't even have Cabal-1.22.0.0 available to it. Compiling cabal-install with ghc-7.6.3 seems to have solved that problem. This is getting a little bit out of hand though, especially for automation. Now I need to figure out what to do for our continuous integration machines so the latest version of cabal-install is useable for multiple ghc versions. In general, should we be compiling cabal-install with each ghc installation separately? Or maybe just the Cabal library? Thanks, -- Ozgur Akgun

On Tue, Jan 13, 2015 at 6:26 AM, Ozgur Akgun
On 13 January 2015 at 13:59, Johan Tibell
wrote: I wonder if you have a cached Setup.hs somewhere under ~/.cabal that's out of date (i.e. uses and older Cabal). You can try -v2 or -v3 to get some more information. In particular look for mentions of older Cabal versions.
This is probably it. With -v3 I see the following in the output.
Using Cabal library version 1.20.0.0 Found cached setup executable:
$HOME/.cabal/setup-exe-cache/setup-Simple-Cabal-1.20.0.0-x86_64-osx-ghc-7.6.3
$HOME/.cabal/setup-exe-cache/setup-Simple-Cabal-1.20.0.0-x86_64-osx-ghc-7.6.3
Then I rm -rf $HOME/.cabal/setup-exe-cache, but this doesn't seem to help.
Using Cabal library version 1.20.0.0 Setup executable not found in the cache. Setup executable needs to be updated, compiling...
So it compiles the Setup executable using Cabal-1.20.0.0 again.
And now I know why this happens. I had compiled cabal-install using ghc-7.8.3 before. So 7.6.3 doesn't even have Cabal-1.22.0.0 available to it. Compiling cabal-install with ghc-7.6.3 seems to have solved that problem.
This is getting a little bit out of hand though, especially for automation. Now I need to figure out what to do for our continuous integration machines so the latest version of cabal-install is useable for multiple ghc versions. In general, should we be compiling cabal-install with each ghc installation separately? Or maybe just the Cabal library?
Thanks,
-- Ozgur Akgun

Chatted a bit with Duncan. cabal-install needs to be prepared to handle
calling older Cabal lib versions. In this case cabal-install needs to check
which Cabal install version was used (or rather, which of the available
versions it wants to use) and then call the setup executable correctly (in
this case not passing --disable-profiling to older Cabals, but instead
using the old flag.)
On Tue, Jan 13, 2015 at 6:31 AM, Johan Tibell
On Tue, Jan 13, 2015 at 6:26 AM, Ozgur Akgun
wrote: On 13 January 2015 at 13:59, Johan Tibell
wrote: I wonder if you have a cached Setup.hs somewhere under ~/.cabal that's out of date (i.e. uses and older Cabal). You can try -v2 or -v3 to get some more information. In particular look for mentions of older Cabal versions.
This is probably it. With -v3 I see the following in the output.
Using Cabal library version 1.20.0.0 Found cached setup executable:
$HOME/.cabal/setup-exe-cache/setup-Simple-Cabal-1.20.0.0-x86_64-osx-ghc-7.6.3
$HOME/.cabal/setup-exe-cache/setup-Simple-Cabal-1.20.0.0-x86_64-osx-ghc-7.6.3
Then I rm -rf $HOME/.cabal/setup-exe-cache, but this doesn't seem to help.
Using Cabal library version 1.20.0.0 Setup executable not found in the cache. Setup executable needs to be updated, compiling...
So it compiles the Setup executable using Cabal-1.20.0.0 again.
And now I know why this happens. I had compiled cabal-install using ghc-7.8.3 before. So 7.6.3 doesn't even have Cabal-1.22.0.0 available to it. Compiling cabal-install with ghc-7.6.3 seems to have solved that problem.
This is getting a little bit out of hand though, especially for automation. Now I need to figure out what to do for our continuous integration machines so the latest version of cabal-install is useable for multiple ghc versions. In general, should we be compiling cabal-install with each ghc installation separately? Or maybe just the Cabal library?
Thanks,
-- Ozgur Akgun

On 13 January 2015 at 14:56, Johan Tibell
Chatted a bit with Duncan. cabal-install needs to be prepared to handle calling older Cabal lib versions. In this case cabal-install needs to check which Cabal install version was used (or rather, which of the available versions it wants to use) and then call the setup executable correctly (in this case not passing --disable-profiling to older Cabals, but instead using the old flag.)
This sounds reasonable. There must be a reason since you are not doing so already, but what is the reason for not requiring Cabal-1.22.0.0 for cabal-install-1.22.0.0 in the first place? Ozgur

Just to separate two things: cabal-install, the executable itself, must be
compiled against a matching Cabal version. An external Setup executable can
be compiled against an older version, if that's all that's available. One
reason that only an old Cabal might be available is that you're using a
cabal-install against some old GHC version you have installed, which
shipped with an old Cabal.
It's a more friendly behavior than saying "you must upgrade Cabal".
On Tue, Jan 13, 2015 at 8:01 AM, Ozgur Akgun
On 13 January 2015 at 14:56, Johan Tibell
wrote: Chatted a bit with Duncan. cabal-install needs to be prepared to handle calling older Cabal lib versions. In this case cabal-install needs to check which Cabal install version was used (or rather, which of the available versions it wants to use) and then call the setup executable correctly (in this case not passing --disable-profiling to older Cabals, but instead using the old flag.)
This sounds reasonable. There must be a reason since you are not doing so already, but what is the reason for not requiring Cabal-1.22.0.0 for cabal-install-1.22.0.0 in the first place?
Ozgur

I see now, thanks for the additional explanation.
Ozgur
On 13 January 2015 at 16:08, Johan Tibell
Just to separate two things: cabal-install, the executable itself, must be compiled against a matching Cabal version. An external Setup executable can be compiled against an older version, if that's all that's available. One reason that only an old Cabal might be available is that you're using a cabal-install against some old GHC version you have installed, which shipped with an old Cabal.
It's a more friendly behavior than saying "you must upgrade Cabal".
On Tue, Jan 13, 2015 at 8:01 AM, Ozgur Akgun
wrote: On 13 January 2015 at 14:56, Johan Tibell
wrote: Chatted a bit with Duncan. cabal-install needs to be prepared to handle calling older Cabal lib versions. In this case cabal-install needs to check which Cabal install version was used (or rather, which of the available versions it wants to use) and then call the setup executable correctly (in this case not passing --disable-profiling to older Cabals, but instead using the old flag.)
This sounds reasonable. There must be a reason since you are not doing so already, but what is the reason for not requiring Cabal-1.22.0.0 for cabal-install-1.22.0.0 in the first place?
participants (3)
-
Erik Hesselink
-
Johan Tibell
-
Ozgur Akgun