msimerson / mail-dmarc

Mail::DMARC, a complete DMARC implementation in Perl
Other
33 stars 23 forks source link

Unable to build master from source #159

Closed freddieleeman closed 4 years ago

freddieleeman commented 4 years ago

I have not been able to install this repository using git and the instructions in the INSTALL.md file. After installing all the dependencies mostly by hand using APT and CPANM, because the install_deps script is not able to install a large portion of them, I end up with these errors after running perl Makefile.PL:

# perl Makefile.PL
Checking if your kit is complete...
Looks good
Failed to clean-up 2 metadata. Errors:
Expected a map structure from string or file. (optional_features -> imap_fetch -> prereqs -> runtime -> x_Net::IMAP::Simple) [Validation: 2]
Expected a map structure from string or file. (optional_features -> smtp_sending -> prereqs -> runtime -> x_Net::SMTPS) [Validation: 2]
Expected a map structure from string or file. (optional_features -> smtp_sending -> prereqs -> runtime -> x_Mail::DKIM::PrivateKey) [Validation: 2]
Expected a map structure from string or file. (optional_features -> smtp_sending -> prereqs -> runtime -> x_Mail::DKIM::TextWrap) [Validation: 2]
Expected a map structure from string or file. (optional_features -> smtp_sending -> prereqs -> runtime -> x_Mail::DKIM::Signer) [Validation: 2]
 at /usr/share/perl/5.28/ExtUtils/MM_Any.pm line 1225.
Failed to clean-up 2 metadata. Errors:
Expected a map structure from string or file. (optional_features -> smtp_sending -> prereqs -> runtime -> x_Mail::DKIM::TextWrap) [Validation: 2]
Expected a map structure from string or file. (optional_features -> smtp_sending -> prereqs -> runtime -> x_Mail::DKIM::PrivateKey) [Validation: 2]
Expected a map structure from string or file. (optional_features -> smtp_sending -> prereqs -> runtime -> x_Net::SMTPS) [Validation: 2]
Expected a map structure from string or file. (optional_features -> smtp_sending -> prereqs -> runtime -> x_Mail::DKIM::Signer) [Validation: 2]
Expected a map structure from string or file. (optional_features -> imap_fetch -> prereqs -> runtime -> x_Net::IMAP::Simple) [Validation: 2]

I did manage to get everything working using cpanm, but this doesn't allow me to build and test the latest master.

I have tried multiple Debian and Perl versions using Docker but all end up with the same errors. The Perl:latest docker had the least errors with the install_deps script but I haven't figured out why. The result however, is the same. I'm not very experienced with Perl and have lost way to many hours trying to fix this on my own. What am I doing wrong? Or is there something broken with the install_deps / Makefile.PL scripts?

msimerson commented 4 years ago

I just merged #160, which helps a bunch with installing on apt based systems.

msimerson commented 4 years ago

After the #160 merge, I did:

sudo apt install git
git clone https://github.com/msimerson/mail-dmarc.git
cd mail-dmarc
sudo perl bin/install_deps.pl

and it installed everything except XML::SAX::ParserFactory, Net::Server::HTTP, and Mail::DKIM. I wrapped those up with:

sudo apt install libmail-dkim-perl
sudo apt install libnet-server-perl
sudo apt install libmodule-build-perl
sudo apt install libnet-imap-simple-perl

and then:

$ perl Build.PL 
Created MYMETA.yml and MYMETA.json
Creating new 'Build' script for 'Mail-DMARC' version '1.20191025'
matt@ubuntu:~/mail-dmarc$ ./Build 
Building Mail-DMARC
matt@ubuntu:~/mail-dmarc$ ./Build test
t/00.Dmarc.t ................................. ok    
t/01.Policy.t ................................ ok     
t/03.Base.t .................................. ok    
t/04.PurePerl.t .............................. ok     
t/06.Result.t ................................ ok    
t/09.HTTP.t .................................. ok    
t/10.Report.t ................................ ok   
t/11.Report.Store.t .......................... ok    
t/12.Report.Store.SQL.t ...................... ok     
t/13.Report.Aggregate.t ...................... ok    
t/14.Report.Aggregate.Metadata.t ............. ok    
t/15.Report.Aggregate.Record.t ............... ok    
t/16.Report.Aggregate.Record.Auth_Results.t .. ok    
t/17.Report.Aggregate.Schema.t ............... ok   
t/20.Report.URI.t ............................ ok    
t/21.Report.Send.t ........................... ok   
t/22.Report.Send.SMTP.t ...................... ok    
t/23.Report.Send.HTTP.t ...................... ok   
t/25.Report.Receive.t ........................ ok   
All tests successful.
Files=19, Tests=741,  9 wallclock secs ( 0.11 usr  0.02 sys +  3.87 cusr  0.44 csys =  4.44 CPU)
Result: PASS
matt@ubuntu:~/mail-dmarc$ 
msimerson commented 4 years ago

And the issue with Makefile.PL is fixed now too. A successful 'make test' was had with:

sudo apt install git
git clone https://github.com/msimerson/mail-dmarc.git
cd mail-dmarc
sudo perl bin/install_deps.pl
sudo apt install libmail-dkim-perl libnet-server-perl libnet-imap-simple-perl
sudo apt install make

$ perl Makefile.PL 
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Mail::DMARC
Writing MYMETA.yml and MYMETA.json
$ make test
t/00.Dmarc.t ................................. ok    
t/01.Policy.t ................................ ok     
t/03.Base.t .................................. ok    
t/04.PurePerl.t .............................. ok     
t/06.Result.t ................................ ok    
t/09.HTTP.t .................................. ok    
t/10.Report.t ................................ ok   
t/11.Report.Store.t .......................... ok    
t/12.Report.Store.SQL.t ...................... ok     
t/13.Report.Aggregate.t ...................... ok    
t/14.Report.Aggregate.Metadata.t ............. ok    
t/15.Report.Aggregate.Record.t ............... ok    
t/16.Report.Aggregate.Record.Auth_Results.t .. ok    
t/17.Report.Aggregate.Schema.t ............... ok   
t/20.Report.URI.t ............................ ok    
t/21.Report.Send.t ........................... ok   
t/22.Report.Send.SMTP.t ...................... ok    
t/23.Report.Send.HTTP.t ...................... ok   
t/25.Report.Receive.t ........................ ok   
All tests successful.
Files=19, Tests=741, 11 wallclock secs ( 0.10 usr  0.02 sys +  3.87 cusr  0.54 csys =  4.53 CPU)
Result: PASS
$
freddieleeman commented 4 years ago

Walked through your steps and that works now. The perl Makefile.PL command still fails with the same error though. Does this mean the install.MD needs to be updated? Or is there an issue with the Makefile.PL file?

I will be testing the new master extensively the next couple of days. Aside from the report_error.time error it seems to be running fine so far. I'll keep you updated.

msimerson commented 4 years ago

In your git checkout, do a git pull to fetch the latest. The Makefile.PL file is fixed now.

msimerson commented 4 years ago

Does this mean the install.MD needs to be updated?

Well, back in the 'good old days' one could count on certain things. Like, if Perl is installed, it'll be fully installed. That's no longer the case on several linux distros. Nowadays, Ubuntu doesn't even include make so the good 'ol perl Makefile.PL && make && make test thing won't even work. That's a platform idiosyncrasy and I won't be documenting nonsense like that.

freddieleeman commented 4 years ago

I was already working on my reply before I've seen your update on the Makefile.PL script.

This certainly would make installing the script a lot less difficult for others as well. And hopefully increase adoption :)