berberman / arch-hs

Distribute hackage packages to archlinux
MIT License
19 stars 4 forks source link

Support SubLibraries #16

Closed berberman closed 4 years ago

berberman commented 4 years ago

When running arch-hs with target haskell-ci:

$ arch-hs haskell-ci
...
  🛑 Runtime Error: Unable to find [haskell-ci-internal]

haskell-ci doesn't have condLibrary, but condSubLibraries with a suffix -internal of its component name instead. arch-hs currently is unable to handle such situation, and what it exactly does is to just ignore them. I checked the entire hackage, and found that only few packages have sub-libraries. Hence, supporting this will be in low priority.

berberman commented 4 years ago

In https://github.com/berberman/arch-hs/commit/ab443c942fc17f7d2fa63b042f702e0c31939d39, arch-hs will not try to find the cabal file for a sub-library anymore. This output of running with haskell-ci is:

  ⓘ Loading hackage...
  ⓘ Loading community.db...
  ⓘ Start running...
  ⓘ Solved target:
Cabal                                                                                  ✔ [community]
Diff                                                                                   ✔ [community]
HsYAML                                                                                 ✔ [community]
QuickCheck                                                                             ✔ [community]
ShellCheck                                                                             ✔ [community]
StateVar                                                                               ✔ [community]
aeson                                                                                  ✔ [community]
ansi-terminal                                                                          ✔ [community]
ansi-wl-pprint                                                                         ✔ [community]
assoc                                                                                  ✔ [community]
attoparsec                                                                             ✔ [community]
base-compat                                                                            ✔ [community]
base-compat-batteries                                                                  ✔ [community]
base-orphans                                                                           ✔ [community]
base16-bytestring                                                                      ✔ [community]
bifunctors                                                                             ✔ [community]
binary                                                                                 ✔ [community]
binary-instances                                                                       ✔ [community]
binary-orphans                                                                         ✔ [community]
bytestring                                                                             ✔ [community]
cabal-install-parsers                                                                  ✘
 ├─Cabal [Lib,cabal-parsers-golden :: Test,cabal-parsers-index :: Test]                ✔ [community]
 ├─aeson [Lib]                                                                         ✔ [community]
 ├─ansi-terminal [cabal-parsers-golden :: Test]                                        ✔ [community]
 ├─base16-bytestring [Lib]                                                             ✔ [community]
 ├─binary [Lib]                                                                        ✔ [community]
 ├─binary-instances [Lib]                                                              ✔ [community]
 ├─bytestring [Lib,cabal-parsers-golden :: Test]                                       ✔ [community]
 ├─cabal-install-parsers [cabal-parsers-golden :: Test,cabal-parsers-index :: Test]    ✘
 ├─containers [Lib,cabal-parsers-golden :: Test,cabal-parsers-index :: Test]           ✔ [community]
 ├─cryptohash-sha256 [Lib]                                                             ✔ [community]
 ├─deepseq [Lib]                                                                       ✔ [community]
 ├─directory [Lib,cabal-parsers-golden :: Test]                                        ✔ [community]
 ├─filepath [Lib,cabal-parsers-golden :: Test]                                         ✔ [community]
 ├─lukko [Lib]                                                                         ✔ [community]
 ├─network-uri [Lib]                                                                   ✔ [community]
 ├─parsec [Lib]                                                                        ✔ [community]
 ├─pretty [Lib,cabal-parsers-golden :: Test]                                           ✔ [community]
 ├─tar [Lib]                                                                           ✔ [community]
 ├─tasty [cabal-parsers-golden :: Test,cabal-parsers-index :: Test]                    ✔ [community]
 ├─tasty-golden [cabal-parsers-golden :: Test]                                         ✔ [community]
 ├─tasty-hunit [cabal-parsers-index :: Test]                                           ✔ [community]
 ├─text [Lib]                                                                          ✔ [community]
 ├─time [Lib]                                                                          ✔ [community]
 ├─transformers [Lib]                                                                  ✔ [community]
 └─tree-diff [cabal-parsers-golden :: Test]                                            ✔ [community]
case-insensitive                                                                       ✔ [community]
colour                                                                                 ✔ [community]
comonad                                                                                ✔ [community]
containers                                                                             ✔ [community]
contravariant                                                                          ✔ [community]
cryptohash-sha256                                                                      ✔ [community]
data-fix                                                                               ✔ [community]
deepseq                                                                                ✔ [community]
directory                                                                              ✔ [community]
distributive                                                                           ✔ [community]
dlist                                                                                  ✔ [community]
exceptions                                                                             ✔ [community]
filepath                                                                               ✔ [community]
generic-lens-lite                                                                      ✘
 └─generic-lens-lite [example :: Test]                                                 ✘
hashable                                                                               ✔ [community]
haskell-ci                                                                             ✘
 ├─Cabal [haskell-ci-internal :: SubLibs]                                              ✔ [community]
 ├─Diff [golden :: Test]                                                               ✔ [community]
 ├─HsYAML [haskell-ci-internal :: SubLibs]                                             ✔ [community]
 ├─ShellCheck [haskell-ci-internal :: SubLibs]                                         ✔ [community]
 ├─aeson [haskell-ci-internal :: SubLibs]                                              ✔ [community]
 ├─ansi-terminal [golden :: Test]                                                      ✔ [community]
 ├─base-compat [golden :: Test,haskell-ci-internal :: SubLibs]                         ✔ [community]
 ├─bytestring [golden :: Test,haskell-ci-internal :: SubLibs]                          ✔ [community]
 ├─cabal-install-parsers [haskell-ci-internal :: SubLibs]                              ✘
 ├─containers [haskell-ci-internal :: SubLibs]                                         ✔ [community]
 ├─deepseq [haskell-ci-internal :: SubLibs]                                            ✔ [community]
 ├─directory [golden :: Test,haskell-ci-internal :: SubLibs]                           ✔ [community]
 ├─exceptions [haskell-ci-internal :: SubLibs]                                         ✔ [community]
 ├─filepath [golden :: Test,haskell-ci-internal :: SubLibs]                            ✔ [community]
 ├─generic-lens-lite [haskell-ci-internal :: SubLibs]                                  ✘
 ├─haskell-ci-internal [haskell-ci :: Exe,golden :: Test]                              ✘
 ├─lattices [haskell-ci-internal :: SubLibs]                                           ✘
 ├─mtl [haskell-ci-internal :: SubLibs]                                                ✔ [community]
 ├─network-uri [haskell-ci-internal :: SubLibs]                                        ✔ [community]
 ├─optparse-applicative [haskell-ci-internal :: SubLibs]                               ✔ [community]
 ├─parsec [haskell-ci-internal :: SubLibs]                                             ✔ [community]
 ├─pretty [haskell-ci-internal :: SubLibs]                                             ✔ [community]
 ├─process [haskell-ci-internal :: SubLibs]                                            ✔ [community]
 ├─tasty [golden :: Test]                                                              ✔ [community]
 ├─tasty-golden [golden :: Test]                                                       ✔ [community]
 ├─temporary [haskell-ci-internal :: SubLibs]                                          ✔ [community]
 ├─text [haskell-ci-internal :: SubLibs]                                               ✔ [community]
 ├─transformers [golden :: Test,haskell-ci-internal :: SubLibs]                        ✔ [community]
 └─unordered-containers [haskell-ci-internal :: SubLibs]                               ✔ [community]
integer-logarithms                                                                     ✔ [community]
lattices                                                                               ✘
 ├─QuickCheck [Lib,test :: Test]                                                       ✔ [community]
 ├─base-compat [Lib,test :: Test]                                                      ✔ [community]
 ├─containers [Lib,test :: Test]                                                       ✔ [community]
 ├─deepseq [Lib]                                                                       ✔ [community]
 ├─hashable [Lib]                                                                      ✔ [community]
 ├─integer-logarithms [Lib]                                                            ✔ [community]
 ├─lattices [test :: Test]                                                             ✘
 ├─quickcheck-instances [test :: Test]                                                 ✔ [community]
 ├─semigroupoids [Lib]                                                                 ✔ [community]
 ├─tagged [Lib]                                                                        ✔ [community]
 ├─tasty [test :: Test]                                                                ✔ [community]
 ├─tasty-quickcheck [test :: Test]                                                     ✔ [community]
 ├─transformers [Lib,test :: Test]                                                     ✔ [community]
 ├─universe-base [Lib,test :: Test]                                                    ✘
 ├─universe-reverse-instances [Lib,test :: Test]                                       ✘
 └─unordered-containers [Lib,test :: Test]                                             ✔ [community]
lukko                                                                                  ✔ [community]
mtl                                                                                    ✔ [community]
network-uri                                                                            ✔ [community]
optparse-applicative                                                                   ✔ [community]
parsec                                                                                 ✔ [community]
pretty                                                                                 ✔ [community]
primitive                                                                              ✔ [community]
process                                                                                ✔ [community]
random                                                                                 ✔ [community]
regex-base                                                                             ✔ [community]
regex-tdfa                                                                             ✔ [community]
scientific                                                                             ✔ [community]
semigroupoids                                                                          ✔ [community]
splitmix                                                                               ✔ [community]
stm                                                                                    ✔ [community]
strict                                                                                 ✔ [community]
tagged                                                                                 ✔ [community]
tar                                                                                    ✔ [community]
template-haskell                                                                       ✔ [community]
temporary                                                                              ✔ [community]
text                                                                                   ✔ [community]
text-binary                                                                            ✔ [community]
th-abstraction                                                                         ✔ [community]
these                                                                                  ✔ [community]
time                                                                                   ✔ [community]
time-compat                                                                            ✔ [community]
transformers-compat                                                                    ✔ [community]
universe-base                                                                          ✘
 ├─QuickCheck [tests :: Test]                                                          ✔ [community]
 ├─containers [Lib,tests :: Test]                                                      ✔ [community]
 ├─tagged [Lib]                                                                        ✔ [community]
 ├─transformers [Lib]                                                                  ✔ [community]
 └─universe-base [tests :: Test]                                                       ✘
universe-reverse-instances                                                             ✘
 ├─containers [Lib]                                                                    ✔ [community]
 └─universe-base [Lib]                                                                 ✘
unix                                                                                   ✔ [community]
unordered-containers                                                                   ✔ [community]
uuid-types                                                                             ✔ [community]
vector                                                                                 ✔ [community]
vector-binary-instances                                                                ✔ [community]

  ⓘ Recommended package order (from topological sort):
1. universe-reverse-instances
2. universe-base
3. lattices
4. generic-lens-lite
5. cabal-install-parsers
6. haskell-ci

  ⓘ Detected flags from targets (their values will keep default unless you specify):
haskell-ci
    ⚐ shellcheck:
      description:
      default: True
      isManual: True

However, the current implementation is a little bit bad in performance, and function cabalToPkgBuild can't remove sub-libraries from the depends array in PKGBUILD.