jonathanstowe / JSON-Marshal

Make JSON from an Object (the opposite of JSON::Unmarshal)
Artistic License 2.0
2 stars 4 forks source link

Could not find JSON::Fast:ver<0.16+> #14

Open melezhik opened 2 years ago

melezhik commented 2 years ago

Hi! Seems JSON-Marshal installation does not load JSON::Fast:

[task run: task.bash - tasks/multi-versions]
[dump code: task.bash]
[1] set -e
[2] 
[3] eval "$(~/.rakubrew/bin/rakubrew init Bash)"
[4] rakubrew download moar-$version
[5] rakubrew switch moar-$version
[6] 
[7] which raku
[8] raku --version
[9] 
[10] cd source/
[11] 
[12] zef install . --deps-only --test-depends --/test
[13] 
[14] /usr/bin/time -o "${cache_root_dir}/${version}_time" \
[15] zef test . && touch "${cache_root_dir}/${version}_ok"
[16] 
[task stdout]
21:36:11 :: Downloading https://rakudo.org/dl/rakudo/rakudo-moar-2022.07-01-linux-x86_64-gcc.tar.gz
21:36:11 :: Extracting
21:36:12 :: Done, moar-2022.07 installed
21:36:13 :: Switching to moar-2022.07
21:36:13 :: /home/worker/.rakubrew/versions/moar-2022.07/bin/raku
21:36:13 :: Welcome to Rakudo™ v2022.07.
21:36:13 :: Implementing the Raku® Programming Language v6.d.
21:36:13 :: Built on MoarVM version 2022.07.
21:36:47 :: ===> Searching for missing dependencies: AttrX::Mooish, Test::Async, Test::META, Test::When
21:37:07 :: ===> Searching for missing dependencies: META6:ver<0.0.24+>, URI, License::SPDX
21:37:07 :: ===> Searching for missing dependencies: JSON::Class:ver<0.0.15+>, JSON::Name, JSON::Class:ver<0.0.14+>
21:37:07 :: ===> Searching for missing dependencies: JSON::Marshal:ver<0.0.23+>, JSON::Unmarshal:ver<0.08+>, JSON::OptIn
21:37:07 :: ===> Installing: JSON::OptIn:ver<0.0.2>:auth<zef:jonathanstowe>
21:37:07 :: ===> Installing: JSON::Name:ver<0.0.7>:auth<zef:jonathanstowe>:api<1.0>
21:37:07 :: ===> Installing: JSON::Marshal:ver<0.0.24>:auth<zef:jonathanstowe>:api<1.0>
21:37:07 :: ===> Install [FAIL] for JSON::Marshal:ver<0.0.24>:auth<zef:jonathanstowe>:api<1.0>: ===SORRY!=== Error while compiling /var/.sparrowdo/env/main/.sparrowdo/source/site#sources/DADA798BF2352A7EF1A131ACE8CB36C2AE6BF63B (JSON::Marshal)
21:37:07 :: Could not find JSON::Fast:ver<0.16+> in:
21:37:07 ::     /home/worker/.rakubrew/versions/moar-2022.07/share/perl6/site
21:37:07 ::     /home/worker/.rakubrew/versions/moar-2022.07/share/perl6/vendor
21:37:07 ::     /home/worker/.rakubrew/versions/moar-2022.07/share/perl6/core
21:37:07 ::     CompUnit::Repository::AbsolutePath<92469008>
21:37:07 ::     CompUnit::Repository::NQP<80995336>
21:37:07 ::     CompUnit::Repository::Perl5<80995376>
21:37:07 :: at /var/.sparrowdo/env/main/.sparrowdo/source/site#sources/DADA798BF2352A7EF1A131ACE8CB36C2AE6BF63B (JSON::Marshal):108

Full log - https://ci.sparrowhub.io/report/1651

Still not sure, b/c this dependency is declared in META6.json

melezhik commented 2 years ago

I updated my test a little bit. So JSON::Fast is not being installed because it's been installed before, now the question why it's not seen in Rakudo paths and it's seen by zef (which does not attempt to install it for that reason)?

[task run: task.bash - tasks/multi-versions]
[dump code: task.bash]
[1] set -e
[2] 
[3] eval "$(~/.rakubrew/bin/rakubrew init Bash)"
[4] rakubrew download moar-$version
[5] rakubrew switch moar-$version
[6] 
[7] which raku
[8] raku --version
[9] 
[10] cd source/
[11] 
[12] zef install --/test JSON::Fast
[13] zef info JSON::Fast
[14] zef install . --deps-only --test-depends --/test
[15] 
[16] /usr/bin/time -o "${cache_root_dir}/${version}_time" \
[17] zef test . && touch "${cache_root_dir}/${version}_ok"
[18] 
[task stdout]
23:43:23 :: Downloading https://rakudo.org/dl/rakudo/rakudo-moar-2022.04-01-linux-x86_64-gcc.tar.gz
23:43:23 :: Extracting
23:43:24 :: Switching to moar-2022.04
23:43:24 :: Done, moar-2022.04 installed
23:43:25 :: Switching to moar-2022.04
23:43:25 :: /home/worker/.rakubrew/versions/moar-2022.04/bin/raku
23:43:25 :: Welcome to Rakudo™ v2022.04.
23:43:25 :: Implementing the Raku® Programming Language v6.d.
23:43:25 :: Built on MoarVM version 2022.04.
23:43:57 :: No reason to proceed. Use --force-install to continue anyway
23:44:06 :: - Info for: JSON::Fast
23:44:06 :: - Identity: JSON::Fast:ver<0.17>:auth<cpan:TIMOTIMO>
23:44:06 :: - Recommended By: Zef::Repository::LocalCache
23:44:06 :: - Installed: Yes
23:44:06 :: Description:     A naive, fast json parser and serializer; drop-in replacement for JSON::Tiny
23:44:06 :: License:     Artistic-2.0
23:44:06 :: Source-url:  git://github.com/timo/json_fast.git
23:44:06 :: Provides: 1 modules
23:44:06 :: Support:
23:44:06 :: #   source: git://github.com/timo/json_fast.git
23:44:06 :: Depends: 1 items
23:44:09 :: ===> Searching for missing dependencies: AttrX::Mooish, Test::Async, Test::META, Test::When
23:45:01 :: ===> Searching for missing dependencies: META6:ver<0.0.24+>, URI, License::SPDX
23:45:01 :: ===> Searching for missing dependencies: JSON::Class:ver<0.0.15+>, JSON::Name, JSON::Class:ver<0.0.14+>
23:45:01 :: ===> Searching for missing dependencies: JSON::OptIn, JSON::Marshal:ver<0.0.23+>, JSON::Unmarshal:ver<0.08+>
23:45:01 :: ===> Installing: Test::Async:ver<0.1.8>:auth<zef:vrurg>:api<0.1.1>
23:45:01 :: ===> Installing: Test::When:ver<1.001009>:auth<zef:raku-community-modules>
23:45:01 :: ===> Installing: JSON::OptIn:ver<0.0.2>:auth<zef:jonathanstowe>
23:45:01 :: ===> Installing: JSON::Name:ver<0.0.7>:auth<zef:jonathanstowe>:api<1.0>
23:45:01 :: ===> Installing: JSON::Marshal:ver<0.0.24>:auth<zef:jonathanstowe>:api<1.0>
23:45:01 :: ===> Install [FAIL] for JSON::Marshal:ver<0.0.24>:auth<zef:jonathanstowe>:api<1.0>: ===SORRY!=== Error while compiling /var/.sparrowdo/env/main/.sparrowdo/source/site#sources/DADA798BF2352A7EF1A131ACE8CB36C2AE6BF63B (JSON::Marshal)
23:45:01 :: Could not find JSON::Fast:ver<0.16+> in:
23:45:01 ::     /home/worker/.rakubrew/versions/moar-2022.04/share/perl6/site
23:45:01 ::     /home/worker/.rakubrew/versions/moar-2022.04/share/perl6/vendor
23:45:01 ::     /home/worker/.rakubrew/versions/moar-2022.04/share/perl6/core
23:45:01 ::     CompUnit::Repository::AbsolutePath<80049560>
23:45:01 ::     CompUnit::Repository::NQP<70845880>
23:45:01 ::     CompUnit::Repository::Perl5<70845920>
23:45:01 :: at /var/.sparrowdo/env/main/.sparrowdo/source/site#sources/DADA798BF2352A7EF1A131ACE8CB36C2AE6BF63B (JSON::Marshal):108

full log is here - https://ci.sparrowhub.io/report/1659

jonathanstowe commented 2 years ago

Well, If it was JSON::Marshal itself causing this then:

root@6e4061a674a5:/# zef install Test::META
===> Searching for: Test::META
===> Updating fez mirror: https://360.zef.pm/
===> Updated fez mirror: https://360.zef.pm/
===> Searching for missing dependencies: META6:ver<0.0.24+>, URI, License::SPDX
===> Updating rea mirror: https://raw.githubusercontent.com/Raku/REA/main/META.json
===> Updated rea mirror: https://raw.githubusercontent.com/Raku/REA/main/META.json
===> Searching for missing dependencies: JSON::Class:ver<0.0.14+>, JSON::Class:ver<0.0.15+>, JSON::Name, JSON::Fast
===> Searching for missing dependencies: JSON::OptIn, JSON::Marshal:ver<0.0.23+>, JSON::Unmarshal:ver<0.08+>
===> Testing: JSON::Fast:ver<0.17>:auth<cpan:TIMOTIMO>
===> Testing [OK] for JSON::Fast:ver<0.17>:auth<cpan:TIMOTIMO>
===> Testing: JSON::OptIn:ver<0.0.2>:auth<zef:jonathanstowe>
===> Testing [OK] for JSON::OptIn:ver<0.0.2>:auth<zef:jonathanstowe>
===> Testing: JSON::Name:ver<0.0.7>:auth<zef:jonathanstowe>:api<1.0>
===> Testing [OK] for JSON::Name:ver<0.0.7>:auth<zef:jonathanstowe>:api<1.0>
===> Testing: JSON::Marshal:ver<0.0.24>:auth<zef:jonathanstowe>:api<1.0>
===> Testing [OK] for JSON::Marshal:ver<0.0.24>:auth<zef:jonathanstowe>:api<1.0>
===> Testing: JSON::Unmarshal:ver<0.11>:auth<zef:raku-community-modules>
===> Testing [OK] for JSON::Unmarshal:ver<0.11>:auth<zef:raku-community-modules>
===> Testing: JSON::Class:ver<0.0.19>:auth<zef:jonathanstowe>:api<1.0>
===> Testing [OK] for JSON::Class:ver<0.0.19>:auth<zef:jonathanstowe>:api<1.0>
===> Testing: META6:ver<0.0.29>:auth<zef:jonathanstowe>:api<1.0>
===> Testing [OK] for META6:ver<0.0.29>:auth<zef:jonathanstowe>:api<1.0>
===> Testing: URI:ver<0.3.5>
===> Testing [OK] for URI:ver<0.3.5>
===> Testing: License::SPDX:ver<3.18.0>:auth<zef:jonathanstowe>:api<1.0>
===> Testing [OK] for License::SPDX:ver<3.18.0>:auth<zef:jonathanstowe>:api<1.0>
===> Testing: Test::META:ver<0.0.19>:auth<zef:jonathanstowe>:api<1.0>
[Test::META] # the following may make some diagnostics from the module itself
===> Testing [OK] for Test::META:ver<0.0.19>:auth<zef:jonathanstowe>:api<1.0>
===> Installing: JSON::Fast:ver<0.17>:auth<cpan:TIMOTIMO>
===> Installing: JSON::OptIn:ver<0.0.2>:auth<zef:jonathanstowe>
===> Installing: JSON::Name:ver<0.0.7>:auth<zef:jonathanstowe>:api<1.0>
===> Installing: JSON::Marshal:ver<0.0.24>:auth<zef:jonathanstowe>:api<1.0>
===> Installing: JSON::Unmarshal:ver<0.11>:auth<zef:raku-community-modules>
===> Installing: JSON::Class:ver<0.0.19>:auth<zef:jonathanstowe>:api<1.0>
===> Installing: META6:ver<0.0.29>:auth<zef:jonathanstowe>:api<1.0>
===> Installing: URI:ver<0.3.5>
===> Installing: License::SPDX:ver<3.18.0>:auth<zef:jonathanstowe>:api<1.0>
===> Installing: Test::META:ver<0.0.19>:auth<zef:jonathanstowe>:api<1.0>

wouldn't work, so I'm a bit confused. It's the same if the JSON::Fast is installed first.

Could you try this with an additional zef update prior to trying to install any of the modules?

jonathanstowe commented 2 years ago

Even testing this with a rakudo installed by rakubrew as you are doing it works fine so I'm stumped.

Is it possible that there is something in your META6.json that is causing this?

melezhik commented 2 years ago

I have no other ideas rather than thinking it's zef issue. For some reasons zef refuses to install JSON::Fast:ver<0.16+> dependency even though it's declared in JSON::Marhsal - https://github.com/jonathanstowe/JSON-Marshal/blob/master/META6.json#L32

Even cleaning of zef cache does not help (rm -rf ~/.zef)

[task run: task.bash - tasks/multi-versions]
[dump code: task.bash]
[1] set -e
[2] 
[3] curl -sL https://rakudo.org/dl/rakudo/rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz \
[4] -o rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz
[5] tar -xzf rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz          
[6] eval "$(rakudo-moar-$version-01-linux-x86_64-gcc/scripts/set-env.sh)"
[7] 
[8] which raku
[9] which zef
[10] raku --version
[11] zef --version
[12] 
[13] cd source/
[14] rm -rf ~/.zef/
[15] zef update 
[16] #zef install --/test JSON::Fast
[17] zef install . --deps-only --test-depends --/test
[18] 
[19] /usr/bin/time -o "${cache_root_dir}/${version}_time" \
[20] zef test . && touch "${cache_root_dir}/${version}_ok"
[21] 
[task stdout]
16:40:48 ::                            Adding Rakudo to PATH
16:40:48 ::                           =======================
16:40:48 :: 
16:40:48 :: Paths successfully added.
16:40:48 :: 
16:40:48 :: ================================================================================
16:40:48 ::  =========                                                             __   __
16:40:48 ::   ||_|_||                =============================                (  \,/  )
16:40:48 ::   || # ||                 Welcome to the Raku Console                  \_ O _/
16:40:48 ::   || # ||                =============================                 (_/ \_)
16:40:48 :: 
16:40:48 :: This console has all the tools available you need to get started using Raku.
16:40:48 :: 
16:40:48 :: Rakudo provides an interactive command line interpreter (a so called Read Eval
16:40:48 :: Print Loop, REPL for short) you can use to quickly try out pieces of Raku code.
16:40:48 :: Start it by typing:
16:40:48 :: 
16:40:48 ::     raku
16:40:48 :: 
16:40:48 :: If you already have a Raku program in a file, you can run it by typing:
16:40:48 :: 
16:40:48 ::     raku path/to/my/program.raku
16:40:48 :: 
16:40:48 :: To install additional modules you can use the Zef module manager:
16:40:48 :: 
16:40:48 ::     zef install Some::Module
16:40:48 :: 
16:40:48 :: https://rakudo.org/           - The home of this implementation of Raku.
16:40:48 :: https://raku.land/            - Go here to browse for Raku modules.
16:40:48 :: https://docs.raku.org/        - The Raku documentation.
16:40:48 :: https://web.libera.chat/#raku - The Raku user chat. Talk to us!
16:40:48 :: 
16:40:48 ::                               Happy hacking!
16:40:48 :: 
16:40:48 :: ================================================================================
16:40:48 :: 
16:40:48 :: /var/.sparrowdo/env/main/.sparrowdo/rakudo-moar-2022.04-01-linux-x86_64-gcc/bin/raku
16:40:48 :: /var/.sparrowdo/env/main/.sparrowdo/rakudo-moar-2022.04-01-linux-x86_64-gcc/share/perl6/site/bin/zef
16:40:48 :: Welcome to Rakudo™ v2022.04.
16:40:48 :: Implementing the Raku® Programming Language v6.d.
16:40:48 :: Built on MoarVM version 2022.04.
16:41:08 :: v0.14.4
16:41:26 :: ===> Searching for missing dependencies: AttrX::Mooish, Test::Async, Test::META, Test::When
16:41:45 :: ===> Searching for missing dependencies: META6:ver<0.0.24+>, URI, License::SPDX
16:41:45 :: ===> Searching for missing dependencies: JSON::Class:ver<0.0.15+>, JSON::Name, JSON::Class:ver<0.0.14+>
16:41:45 :: ===> Searching for missing dependencies: JSON::OptIn, JSON::Marshal:ver<0.0.23+>, JSON::Unmarshal:ver<0.08+>
16:41:45 :: ===> Installing: JSON::OptIn:ver<0.0.2>:auth<zef:jonathanstowe>
16:41:45 :: ===> Installing: JSON::Name:ver<0.0.7>:auth<zef:jonathanstowe>:api<1.0>
16:41:45 :: ===> Installing: JSON::Marshal:ver<0.0.24>:auth<zef:jonathanstowe>:api<1.0>
16:41:45 :: ===> Install [FAIL] for JSON::Marshal:ver<0.0.24>:auth<zef:jonathanstowe>:api<1.0>: ===SORRY!=== Error while compiling /var/.sparrowdo/env/main/.sparrowdo/source/site#sources/DADA798BF2352A7EF1A131ACE8CB36C2AE6BF63B (JSON::Marshal)
16:41:45 :: Could not find JSON::Fast:ver<0.16+> in:
16:41:45 ::     /var/.sparrowdo/env/main/.sparrowdo/rakudo-moar-2022.04-01-linux-x86_64-gcc/share/perl6/site
16:41:45 ::     /var/.sparrowdo/env/main/.sparrowdo/rakudo-moar-2022.04-01-linux-x86_64-gcc/share/perl6/vendor
16:41:45 ::     /var/.sparrowdo/env/main/.sparrowdo/rakudo-moar-2022.04-01-linux-x86_64-gcc/share/perl6/core
16:41:45 ::     CompUnit::Repository::AbsolutePath<72194632>
16:41:45 ::     CompUnit::Repository::NQP<62987368>
16:41:45 ::     CompUnit::Repository::Perl5<62987408>
16:41:45 :: at /var/.sparrowdo/env/main/.sparrowdo/source/site#sources/DADA798BF2352A7EF1A131ACE8CB36C2AE6BF63B (JSON::Marshal):

Full log here - https://ci.sparrowhub.io/report/1669

melezhik commented 2 years ago

I ended up adding zef install --/test JSON::Fast --force-install as workaround ... 😔

https://ci.sparrowhub.io/report/1670

melezhik commented 2 years ago

looks like a rakudo bug? https://github.com/ugexe/zef/issues/479#issuecomment-1310627890

melezhik commented 2 years ago

cc @ugexe

melezhik commented 2 years ago

@ugexe @jonathanstowe looks like zef install --/deps-only --/test -to=home fix this issue - https://ci.sparrowhub.io/report/1944 , the key point here is to use -to=home in this case zef sees JSON::Fast perviously in home for another version of Rakudo, this seems like a hack, however I don't know better solution. Maybe I need to fill a bug into zef or Rakudo with the full explanation of all the steps ...