demeter
demeter copied to clipboard
installation issue due to "t -> ." symlink in "t"-folder
During following the "installation from source" instructions [1] I experienced an error at step 3.
Step 3 says: run
perl ./Build.PL
I got:
<PATH>/demeter/t/t is a recursive symbolic link at /usr/lib64/perl5/5.20.2/File/Find.pm line 431.
Removing the symlink I could continue/finish the installation without problems. Is this symlink needed?
[1] http://bruceravel.github.io/demeter/pods/installation.pod.html
@dkriegner, the warning message is correct. It is, indeed, a recursive symlink, which I use as a convenience when working with the test suite.
I am surprised by your result, though. I've never seen that one before. In fact, I just made a fresh clone on the Ubuntu machine I am sitting at, ran perl ./Build.PL
, and did not see it.
What kind of computer are you using?
In any case, as far as i can remember, you can safely remove the symlink and carry on. Doing so (as far as I can remember!) won't even affect the ./Build test
step.
By the way, if you have any comments or suggestions for the installation instructions, please let me know. I find that a particularly hard document to write given that I understand the code so well. It is hard to myself in the shoes of someone coming to it for the first time.
I am on:
# uname -a
Linux 4.3.0-sabayon #1 SMP Wed Dec 16 22:02:39 UTC 2015 x86_64 Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz GenuineIntel GNU/Linux
# perl -v
This is perl 5, version 20, subversion 2 (v5.20.2) built for x86_64-linux-thread-multi
(with 27 registered patches, see perl -V for more detail)
let me know if you need more info.
Otherwise the instructions are fine from my perspective. Except of few smaller problems with dependencies of dependencies (e.g. [1]) the only thing I realized was a broken link in this paragraph:
In a section below (see "Installing Demeter without root privileges") instructions are given for installation without root privileges. All the instructions are the same, once you do an additional preparatory step.
the anchor http://bruceravel.github.io/demeter/pods/installation.pod.html#quot_Installing_Demeter_without_root is missing.
[1] https://rt.cpan.org/Public/Bug/Display.html?id=63095
@bruceravel Actually I should highlight that this was not a warning, but the only output I got! Only after removing the symlink I could get any output from the build script! If the symlink is only needed on your testing machine I think you should consider removing it from the repo.
Yes, "error" not "warning". Gotcha.
Valid point about the symlink. Simply removing the symlink is almost certainly the right thing to do. Still, it would be nice to understand the cause.
What does your machine say for
perl -e 'use File::Find; print $File::Find::VERSION, $/'
And thanks for pointing out the broken link.
Except of few smaller problems with dependencies of dependencies (e.g. [1])
[1] https://rt.cpan.org/Public/Bug/Display.html?id=63095
Happily, that particular problem will be going away entirely soon. That dependence was needed for the documentation system. I am in the middle of a complete rewrite of the document -- using sphinx instead of something home-brewed.
$ perl -e 'use File::Find; print $File::Find::VERSION, $/'
1.27
Weird. Same as mine. I'm confused....
I think the problem originates in this module
$ perl -e 'use ExtUtils::Manifest; print $ExtUtils::Manifest::VERSION, $/'
1.70
see:
$ perl -Mdiagnostics Build.PL
Uncaught exception from user code:
<PATH>/demeter/t/t is a recursive symbolic link at /usr/lib64/perl5/5.20.2/File/Find.pm line 431.
File::Find::Follow_SymLink("<PATH>/demeter/t/t") called at /usr/lib64/perl5/5.20.2/File/Find.pm line 980
File::Find::_find_dir_symlnk(HASH(0x56210a111400), "<PATH>/demeter", ".") called at /usr/lib64/perl5/5.20.2/File/Find.pm line 566
File::Find::_find_opt(HASH(0x56210a111400), ".") called at /usr/lib64/perl5/5.20.2/File/Find.pm line 1081
File::Find::find(HASH(0x56210a111400), ".") called at /usr/lib64/perl5/vendor_perl/5.20.2/ExtUtils/Manifest.pm line 202
ExtUtils::Manifest::manifind(undef) called at /usr/lib64/perl5/vendor_perl/5.20.2/ExtUtils/Manifest.pm line 290
ExtUtils::Manifest::_check_files() called at /usr/lib64/perl5/vendor_perl/5.20.2/ExtUtils/Manifest.pm line 223
ExtUtils::Manifest::manicheck() called at /usr/lib64/perl5/vendor_perl/5.20.2/Module/Build/Base.pm line 1972
Module::Build::Base::check_manifest(DemeterBuilder=HASH(0x562108f85340)) called at /usr/lib64/perl5/vendor_perl/5.20.2/Module/Build/Base.pm line 39
Module::Build::Base::new("DemeterBuilder", "module_name", "Demeter", "create_readme", 0, "license", "artistic", "dist_author", "Bruce Ravel <http://bruceravel.github.io/home>", ...) called at Build.PL line 55
the problematic call to find is
find({wanted => $wanted, follow_fast => 1},
$Is_MacOS ? ":" : ".");
where follow_fast is set, which changed somewhere between 1.63 and 1.70
Apparently sometime between 1.65 and 1.70. I have 1.65 on my machine. Now it's understood and clearly an upstream issue that I have to live with.
Anyway, I removed the symlink and fixed a couple of other small bugs. See 63f2e1c
Thank you very much for looking into this. It is pretty uncommon that someone does the footwork to track down a problem for me. I am pleasantly surprised and quite grateful.
Cheers, B