Subject: [bug#44269] [PATCH] gnu: Add eosio-cdt.

From: Jesse Eisses <[email-masked]>
Date: Tue, 17 Nov 2020 09:20:32 +0100

Thanks for the feedback

As there are changes made to LLVM and libcxx for eosio-cdt I think we
have to compile them. These large dependencies are included as git
submodules though, so I will try to put them in separate packages.

The comments are clear; I'm working on an updated patch :)

- Jesse

Op di 10 nov. 2020 om 21:22 schreef Marius Bakke <[email-masked]>:
>
> [email-masked] writes:
>
> > Hi all!
> >
> > This is my first patch, I hope I'm doing it correctly.
>
> Cool, welcome!
>
> The patch is lacking a proper commit message, but looks pretty good
> overall.  Some comments follow.
>
> > The patch below adds the Contract Development Toolkit (compiler) for smart
> > contracts on the EOS blockchain. I also have a package for EOS itself that is
> > a bit more involved, so I'll submit separately.
> >
> > Total package size is 607MB of which self is 329MB. It takes a while to
> > compile (about an hour on my i7 laptop).
>
> I suppose some of that time is because of the bundled LLVM, libcxx,
> etc.  Do you know if it's possible to remove those, or at least build
> them separately?
>
> > diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
> > index 4397cf8ba8..0e661c4b56 100644
> > --- a/gnu/packages/finance.scm
> > +++ b/gnu/packages/finance.scm
>
> Can you also add your name to the list of authors at the top of the file?
>
> > @@ -59,6 +59,7 @@
> >    #:use-module (gnu packages compression)
> >    #:use-module (gnu packages crypto)
> >    #:use-module (gnu packages curl)
> > +  #:use-module (gnu packages cmake)
>
> I believe this import is unused.
>
> [...]
>
> > +(define-public eosio-cdt
> > +  (package
> > +    (name "eosio-cdt")
> > +    (version "1.7.0")
> > +    (source
> > +     (origin
> > +       (method git-fetch)
> > +       (uri (git-reference (url "https://github.com/EOSIO/eosio.cdt")
> > +                           (commit (string-append "v" version))
> > +                           (recursive? #t)))
> > +       (sha256
> > +        (base32
> > +         "1mrc8dn7sf086456c63rlha4j3fh0g1a59dbd6in6nyhan712xps"))
> > +       (file-name (git-file-name name version))))
> > +    (build-system cmake-build-system)
> > +    (native-inputs
> > +     `(("git" ,git)
>
> It looks like the git dependency comes from
> "modules/ClangExternalProject.txt".  Though I don't see it being used.
> Can you try to substitute* out the "find_package(Git ...)" statement and
> see if it's possible to make it work without it?
>
> It's not uncommon that build scripts look for git even when it's not
> strictly needed.  By removing the dependency we avoid needlessly
> rebuilding this package every time git is updated.
>
> > +       ("doxygen" ,doxygen)
> > +       ("pkg-config" ,pkg-config)
> > +       ("curl" ,curl)))
> > +    (inputs
> > +     `(("gmp" ,gmp)
> > +       ("openssl" ,openssl)
> > +       ("python" ,python-3)))
> > +    (arguments
> > +     `(#:build-type "Release"))
>
> Is there a particular reason to use a "Release" build here (as opposed
> to the default "RelWithDebInfo")?  Guix is a hackers distro, and
> debugging symbols are nice.  :-)
>
> > +    (home-page "https://developers.eos.io/manuals/eosio.cdt/latest/index")
> > +    (synopsis "EOSIO.CDT is a suite of tools used to build EOSIO contracts")
>
> Just "Suite of tools to build EOSIO contracts".
>
> Otherwise the patch looks great.  Can you send an updated version?