Closed ysangkok closed 2 years ago
@ysangkok If you can demonstrate that the ftp-client-0.5.1.4
tests pass when built with bytestring >= 0.11
, I can make a revision.
@sjakobi
Using the following cabal.project:
packages: .
source-repository-package
location: git@github.com:tfausak/hs-memory.git
tag: 3cf661a8a9a8ac028df77daa88e8d65c55a3347a
type: git
source-repository-package
location: git@github.com:TomMD/foundation.git
tag: 0bb195e1fea06d144dafc5af9a0ff79af0a5f4a0
type: git
subdir: basement
source-repository-package
location: git@github.com:josephcsible/cryptonite.git
tag: 3b081e3ad027b0550fc87f171dffecbb20dedafe
type: git
testing with an additional constraint passes:
% cabal test --constraint='tasty-hspec<1.2'
Resolving dependencies...
Build profile: -w ghc-8.6.5 -O1
In order, the following will be built (use -v for more details):
- tasty-hspec-1.1.6 (lib) (requires download & build)
- ftp-client-0.5.1.4 (test:ftp-client-test) (configuration changed)
Downloading tasty-hspec-1.1.6
Downloaded tasty-hspec-1.1.6
Starting tasty-hspec-1.1.6 (lib)
Building tasty-hspec-1.1.6 (lib)
Installing tasty-hspec-1.1.6 (lib)
Completed tasty-hspec-1.1.6 (lib)
Configuring test suite 'ftp-client-test' for ftp-client-0.5.1.4..
Preprocessing test suite 'ftp-client-test' for ftp-client-0.5.1.4..
Building test suite 'ftp-client-test' for ftp-client-0.5.1.4..
[1 of 1] Compiling Main ( test/test.hs, /home/janus/flipstone/ftp-client/ftp-client/dist-newstyle/build/x86_64-linux/ghc-8.6.5/ftp-client-0.5.1.4/t/ftp-client-test/build/ftp-client-test/ftp-client-test-tmp/Main.o ) [Test.Tasty.Hspec changed]
Linking /home/janus/flipstone/ftp-client/ftp-client/dist-newstyle/build/x86_64-linux/ghc-8.6.5/ftp-client-0.5.1.4/t/ftp-client-test/build/ftp-client-test/ftp-client-test ...
Running 1 test suites...
Test suite ftp-client-test: RUNNING...
Test suite ftp-client-test: PASS
Test suite logged to:
/home/janus/flipstone/ftp-client/ftp-client/dist-newstyle/build/x86_64-linux/ghc-8.6.5/ftp-client-0.5.1.4/t/ftp-client-test/test/ftp-client-0.5.1.4-ftp-client-test.log
1 of 1 test suites (1 of 1 test cases) passed.
But using the newest tasty-hspec (which ftp-client allows), it fails because of a missing reexport of hspec
and similar functions from package hspec
in tasty-hspec
.
So if the trustees prefer, they could constrain tasty-hspec to <1.2
.
It can be made to build on the newest tasty-hspec using the following patch (which I will now submit upstream):
commit 907845a45333783c861af83564cd9f35694c295d (refs/stash)
Merge: 7329084 d49ce3e
Author: Janus Troelsen <janus@flipstone.com>
Date: Fri Dec 17 10:13:05 2021 -0600
WIP on master: 7329084 Stack upgrade
diff --cc ftp-client/ftp-client.cabal
index a6f30e9,a6f30e9..57172b5
--- a/ftp-client/ftp-client.cabal
+++ b/ftp-client/ftp-client.cabal
@@@ -35,6 -35,6 +35,7 @@@ test-suite ftp-client-tes
, tasty >= 1.2.3
, tasty-hspec >= 1.1.5.1
, ftp-client
++ , hspec
ghc-options: -threaded -rtsopts -with-rtsopts=-N
default-language: Haskell2010
diff --cc ftp-client/test/test.hs
index b416130,b416130..b7cf900
--- a/ftp-client/test/test.hs
+++ b/ftp-client/test/test.hs
@@@ -2,6 -2,6 +2,7 @@@ import Data.ByteString (ByteString
import qualified Data.ByteString.Char8 as C
import Test.Tasty
import Test.Tasty.Hspec
++import Test.Hspec
import Network.FTP.Client hiding (Success)
import qualified Network.FTP.Client as F
import Control.Monad.IO.Class
@ysangkok Thanks! Did you ensure that bytestring >= 0.11
is used though? I don't see a relevant constraint.
@sjakobi I have redone the test with this additional bytestring constraint and GHC 8.10:
% cabal test --constraint='tasty-hspec<1.2' --constraint='bytestring>=0.11'
Resolving dependencies...
Build profile: -w ghc-8.10.7 -O1
In order, the following will be built (use -v for more details):
- basement-0.0.12 (lib) (requires build)
- bytestring-0.11.1.0 (lib) (requires build)
[...]
/home/janus/flipstone/ftp-client/ftp-client/dist-newstyle/build/x86_64-linux/ghc-8.10.7/ftp-client-0.5.1.4/t/ftp-client-test/test/ftp-client-0.5.1.4-ftp-client-test.log
1 of 1 test suites (1 of 1 test cases) passed.
Alright. I've made the revision: https://hackage.haskell.org/package/ftp-client-0.5.1.4/revisions/
@sjakobi I just noticed that my test methodology was wrong, because I should have added all the constraints from the Hackage when building ftp-client from Git source. This caused me not to notice that attoparsec also needed bumping.
I have tested the bump of attoparsec
of the cabal get
'ed sources, and if attoparsec is also bumped, this final revision bump indeed allows it to be used on my GHC 9.2 project: https://github.com/mr/ftp-client/issues/23#issuecomment-996902294
Can this also be done now or should I just wait a few weeks and file to take over the package? In any case, thanks a lot for your help.
I've bumped the attoparsec
bound too: https://hackage.haskell.org/package/ftp-client-0.5.1.4/revisions/
TBH, this feels a bit too much. Why some from-git memory
, foundation
and cryptonite
versions? Why can't ftp-client
be used from git version until then?
18 days, you are inpatient. @mr doesn't seem to be active on github (see https://github.com/mr), @sjakobi please send an email to that you made a revision. Maybe an email would been enough in the first place.
I don't think in this case GitHub comment is enough. The maintainer doesn't seem to be using GitHub that much. I think our policy is to lax by allowing to shout on GitHub (people do disable, or simple ignore GitHub notifications).
Also
Trustees are expected to use this power judiciously and make sure they understand the packages involved and their APIs. In the first instance they should get maintainers to make changes.
I don't think that was done.
Also https://matrix.hackage.haskell.org/#/package/ftp-client shows dependencies failures with GHC-7.10.3. These shouldn't been fixed as well, IMHO. (there isn't an install plan with GHC-7.10.3 and bytestring-0.11
, and hopefully won't ever be in the future, as if ftp-client
uses internals of bytestring, then the PatternSynonym compat won't work).
I'd like trustees to be very conservative when considering relaxing bounds.
With all due respect, I disagree with the above. In this case it seems like relaxing bounds was done with enough diligence, and the attempt to get a response from the maintainer was sufficient.
@phadej I don't think an email is necessary. @mr was active on GitHub in September, merging https://github.com/mr/reactive-banana-gi-gtk/pull/7 only 12 days after it was created. https://github.com/mr/ftp-client/watchers indicates that she'll receive notifications about https://github.com/mr/ftp-client/issues/22 and https://github.com/mr/ftp-client/issues/23.
Trustees are expected to use this power judiciously and make sure they understand the packages involved and their APIs. In the first instance they should get maintainers to make changes.
I don't think that was done.
I'll try to be more careful next time, although I don't see any harm inflicted by the revisions I have published.
Also https://matrix.hackage.haskell.org/#/package/ftp-client shows dependencies failures with GHC-7.10.3. These shouldn't been fixed as well, IMHO. (there isn't an install plan with GHC-7.10.3 and
bytestring-0.11
, and hopefully won't ever be in the future, as ifftp-client
uses internals of bytestring, then the PatternSynonym compat won't work).
I wasn't aware of the build failure with GHC-7.10.3 and I don't understand how it's related to this issue. Feel free to fix it yourself.
I'd like trustees to be very conservative when considering relaxing bounds.
I think that conservatism with respect to relaxing bounds would only increase the pain of upgrading dependencies. And AFAIK bad revisions can easily be fixed by follow-up revisions.
Then I kindly request
(in the future) maintainers should be able to explicitly indicate whether trustees are able to relax constraints for their package
part of the policy to be implemented soon, I don't want relaxations happen to my packages in such short time frames. Only restricting revisions when there is a build failure evidence. I have reasons to hold some revisions, which are well over 20 or so days.
@phadej wrote:
I don't want relaxations happen to my packages in such short time frames.
In general, I agree, 18 days is clearly a time span where one could be away on holiday etc.
However, in the given case, a relaxation was already due for 1 year, since bytestring-0.11 came out in September 2020. I think in such cases it is justified that trustees act to get a stuck package unstuck.
Then I kindly request
(in the future) maintainers should be able to explicitly indicate whether trustees are able to relax constraints for their package
part of the policy to be implemented soon,
I'd rather want to move in the opposite direction, to include in a hackage-upload a pledge to maintain. That would give hackage trustees a stronger backing of their work in cases where maintenance is neglected. Including maintenance imperatives would make hackage more a community place. It would pay respect to the fact that there are people depending on package and they suffer if it is neglected.
Such maintenance imperatives would be soft ("should"), but their presence makes it clear there is a duty, and if it is neglected, then it is justified that others step in.
One could object that if someone shares code on hackage, it is already an act of benevolence and grace, and no duties should derive from that. I'd like to argue that this is not the whole story: By getting users, you also build a name and fame, you get items to list in your CV etc., the usual social payback...
@phadej wrote:
Also matrix.hackage.haskell.org/#/package/ftp-client shows dependencies failures with GHC-7.10.3. These shouldn't been fixed as well, IMHO.
Yes, these should be investigated. Unfortunately, matrix.hackage
does not show a log for when dependencies failed to build.
On my machine, build with GHC 7.10.3 succeeds using the following plan:
base-4.8.2.0
bytestring-0.10.12.1
connection-0.3.1
containers-0.6.5.1
network-3.1.0.1
transformers-0.5.6.2
attoparsec-0.14.3
exceptions-0.10.4
However, in the given case, a relaxation was already due for 1 year, since bytestring-0.11 came out in September 2020. I
But wasn't included with any GHC release (EDIT: until recently in GHC-9.2, released october 29 this year), and therefore weren't in Stackage snapshot to date (nightly is on GHC-9.0 atm, and mr seems to use stack). I'd argue that people could simply be still unaware of bytestring-0.11
.
Yes, these should be investigated.
I did already.
Hello, I have noticed that ftp-client on Hackage doesn't allow bytestring v0.11.
But in it's repo, it does actually allow it. I have been told on IRC that Stack may have inserted this upper bound automatically on upload.
I have reported the issue on ftp-client's issue tracker but Megan Robinson hasn't replied for 18 days: https://github.com/mr/ftp-client/issues/22
So I'd really appreciate it if a trustee could bump make a revision to allow bytestring v0.11. This fixes the build of our project on GHC 9.2. I can dig into why exactly v0.10 is excluded for me, if you'd like me to.
The repo sources do build on GHC 9.2 as they are.
Happy holidays!