0

I am currently trying - unsuccessfully to install perl PDL as I would like to automate some of my data analysis and graphics generation.

Unfortunately I seem unable to even install the necessary modules without issue, let alone create a small script to deal with my data files.

I have some rudementary experience with Perl but Nothing fancy and am using Windows 10 x64.

Initially I went for the x64 strawberry perl v5.24 installation, followed by ppm installations of Astro::FITS::Header, Convert::UU, OpenGL and PDL - as instructed here http://pdl.perl.org/?page=install. However, there were issues with the installation of Inline::C and after trying the example listed on page 5 of the PDL_Book_Latest http://sourceforge.net/projects/pdl/files/PDL/2.4.10/PDL-Book-20120205.pdf/download there wasn't any image appearing, nor image file in any location I could think to search. Back to Google and still no luck finding any information on the source of this issue so I decided to go back to square one and use an older version in the hopes that it would be more well documented.

So, uninstallation of strawberry perl through Windows installed programs dialog, deletion of strawberry folder and registry entries containing "strawberry". Then a new installation of perl, with the Padre IDE, v5.14 - maybe some debugging fonctionality will help pinpoint the errors. Started installing the same modules (Astro::FITS::Header, Convert::UU, OpenGL, PGPLOT). Astro and Convert worked fine, but the OpenGL started throwing errors about ExtUtils::F77 which I am apparently missing after a few more hours searching. I go to install this module and it keeps giving errors about 'gfortan' being an unknown command... It was my understanding that the idea of PDL was to avoid fortran and C, and I have found next to no information about this installation problem so far.

So i decided to try an alternative approach. I installed the ppm module from cpan and repeated the initial installation process through the ppm command. This time i get:

"Unknown element 'PROVIDE' found inside SOFTPKG. at C:/Dwimperl/perl/site/lib/PPM.pm line 1462."

So my question is as follows:

Am I missing some critical step in the installation process? Is my system just handing this really badly, and if so is there any sort of possible work around? Is the fact that I tried two different versions liable to create path issues that could be at the root of this problem?

Could anyone provide an alternative and preferably not too complex route to install PDL with a given perl installation on Windows 10?

EDIT 1:

Here is the code for the error I got trying to install Inline::C, an apparent pre-requisite for PDL

code deleted to make space for updates...

EDIT 3:

I reinstalled GnuWin32 in the directory specified by PATH, rather that changing PATH, and the tried the installation again. Inline::C gave the same 'diff' and 'rm' errors. So i ran "cpanm --notest 'package'" to install Inline::C and then PDL, both said they were successful. However, even using '--notest' cpanm could not install OpenGL and PGPLOT.

The final objectif is to be able to produce graphics using the fonctions from PGPLOT: for example

# use PDL;
# use PDL::Graphics::PGPLOT;
# imag(sin(rvals(200,200)+1));

yet this doesn't work of course if PGPLOT can't install.

EDIT 4:

Tried the fix found by @Dr.Avalange at sourceforge https://sourceforge.net/p/pogl/bugs/26/ and noticed that I seem to have multiple copies of this file.

Here

Is this normal...?

EDIT 5: So i uninstalled perl, deleted any lingering files I could find in %APPDATA%, %USERPROFILE% and C:/DWIM, and then ran ccleaner just in case I missed anything.

I then downloaded Strawberry perl 5.24.1 x64 for Windows and installed it.

After this, I ran 'cpanm Astro::FITS::Header', cpanm 'Convert-UU' and 'cpanm OpenGL' as per http://pdl.perl.org/?page=install. This all worked fine. Then I ran 'cpanm PDL' which installed Inline, Pegex, Win32::Mutex and Module::Compile dependencies. However, if had the same error with Inline::C that you mentioned previously.

I already had GetGnuWin32 installed before so not sure why this isn't working. The Windows 'Path' environment (not PATH - this doesn't exist according to the advaced system dialogue) is noted as

%USERPROFILE%\AppData\Local\Microsoft\WindowsApps; In this directory I have the folder GetGnuWin32 which should have installed all the packages from the link you provided, unless there is a supplementary step that I missed to install this correctly? So I redownloaded the DiffUtils setup and ran that, installing to \programfiles(x86) (default option). I then reran 'cpanm PDL'.

I still get the same 'diff' error message. So is DiffUtils, not installing properly? (I did close and re-open the commandline between tries and after the installation)

EDIT 6:

So after installing PDL and PGPLOT with --notest I tried to run the following test and it failed. See below

C:\Windows\system32>perldl
perlDL shell v1.357
 PDL comes with ABSOLUTELY NO WARRANTY. For details, see the file
 'COPYING' in the PDL distribution. This is free software and you
 are welcome to redistribute it under certain conditions, see
 the same file for details.
ReadLines, NiceSlice, MultiLines  enabled
Reading PDL/default.pdl...
Found docs database C:/Strawberry/perl/site/lib/PDL/pdldoc.db
Type 'help' for online help
Type 'demo' for online demos
Loaded PDL v2.017 (supports bad values)

Note: AutoLoader not enabled ('use PDL::AutoLoader' recommended)

                                                                                                                        pdl> use PDL::Graphics//PLplot
Unknown regexp modifier "/P" at (eval 62) line 4, at end of line
Unknown regexp modifier "/L" at (eval 62) line 4, at end of line
Unknown regexp modifier "/t" at (eval 62) line 4, at end of line
BEGIN not safe after errors--compilation aborted at (eval 62) line 5, <DATA> line 207.

                                                                                                                        pdl> use PDL::Graphics::PLplot
Can't locate PDL/Graphics/PLplot.pm in @INC (you may need to install the PDL::Graphics::PLplot module) (@INC contains: C:/Strawberry/perl/site/lib/MSWin32-x64-multi-thread C:/Strawberry/perl/site/lib C:/Strawberry/perl/vendor/lib C:/Strawberry/perl/lib .) at (eval 72) line 5.
BEGIN failed--compilation aborted

                                                                                                                        pdl> use PDL

                                                                                                                        pdl> use lib 'C:/Strawberry/perl/site/lib/PDL/Graphics'

                                                                                                                        pdl> use PGPLOT

                                                                                                                        pdl> use PDL::Graphics::PGPLOT

                                                                                                                        pdl> imag(sin(rvals(200,200)+1))
Undefined subroutine &PDL::Graphics::PGPLOT::pgqinf called at C:/Strawberry/perl/site/lib/PDL/Graphics/PGPLOT.pm line 408, <DATA> line 90.

                                                                                                                        pdl> exit

C:\Windows\system32>cpanm PDL::Graphics::PGPLOT::pgqinf
! Finding PDL::Graphics::PGPLOT::pgqinf on cpanmetadb failed.
! Finding PDL::Graphics::PGPLOT::pgqinf () on mirror http://www.cpan.org failed.
! Couldn't find module or a distribution PDL::Graphics::PGPLOT::pgqinf

C:\Windows\system32>cpan PDL::Graphics::PGPLOT::pgqinf
Loading internal null logger. Install Log::Log4perl for logging messages
CPAN: CPAN::SQLite loaded ok (v0.211)
Database was generated on Thu, 13 Apr 2017 13:49:14 GMT


C:\Windows\system32>

There was already a directory problem but I managed to point it in th right direction I had thought. Also tried installing the PLplot 'cpanm' said the installation was successful but there is no .pm file, only a .pd in another directory and so the use PDL::Graphics::PLplot fails as there is no .pm file to find.

EDIT: 7 So retrying ppm install http://www.sisyphusion.tk/ppm/PGPLOT.ppd seemed to work this time as the links int he explanation you provided are no longer in use http://www.kalinabears.com.au/w32perl/pgplot-5.2.2-mingw32.tar.bz2 http://jrfonseca.home.dyndns.org/projects/gnu-win32/software/ported/patches/pgplot-5.2.2-mingw32.diff.gz And while this seemed to work, there are no traces of the files that were listed as necessary for the installation, unless they were just for this specific method?

pgplot/bin/cpgplot.dll
pgplot/bin/pgplot.dll
pgplot/bin/grfont.dat
pgplot/include/cpgplot.h
pgplot/lib/cpgplot.a
pgplot/lib/pgplot.a

finally, trying the example again gives the following; no errors, but no image either...

Microsoft Windows [version 10.0.14393]
(c) 2016 Microsoft Corporation. Tous droits réservés.

C:\Windows\system32>perldl
perlDL shell v1.357
 PDL comes with ABSOLUTELY NO WARRANTY. For details, see the file
 'COPYING' in the PDL distribution. This is free software and you
 are welcome to redistribute it under certain conditions, see
 the same file for details.
ReadLines, NiceSlice, MultiLines  enabled
Reading PDL/default.pdl...
Found docs database C:/Strawberry/perl/site/lib/PDL/pdldoc.db
Type 'help' for online help
Type 'demo' for online demos
Loaded PDL v2.017 (supports bad values)

Note: AutoLoader not enabled ('use PDL::AutoLoader' recommended)

pdl> use PDL

pdl> use PDL::Graphics::PGPLOT

pdl> imag(rvals(200,200)+1)
 %PGPLOT, Unable to read font file: grfont.dat
 %PGPLOT, Use environment variable PGPLOT_FONT to specify the location of the PGPLOT grfont.dat file.
Displaying 200 x 200 image from 1 to 142.421356201172, using 240 colors (16-255)...

pdl> $ENV{PGPLOT_FONT} = "C:/Strawberry/perl/site/lib/PGPLOT/pgplot_supp"

pdl> imag(rvals(200,200)+1)
Displaying 200 x 200 image from 1 to 142.421356201172, using 240 colors (16-255)...

pdl>
NzFrancis
  • 13
  • 7

1 Answers1

2

After translating from French I can see that you don't have diff in your system. Either install diff (part of gnu32: http://gnuwin32.sourceforge.net/) or just skip the tests. See also:

https://github.com/ingydotnet/inline-c-pm/issues/60

With Strawberry 5.24.1 simply type the following from the command prompt:

cpanm --notest PDL

or if you want to watch everything that's going on:

cpanm -v --notest PDL

This will take some time to run.

Dr.Avalanche
  • 1,944
  • 2
  • 28
  • 37
  • So i downloaded GetGnuWin32-0.6.3 and installed that to C:/GnuWin23. Reran cpan -f Inline::C and and still getting the same 'diff' and 'rm' unknown command error. Is there a specific install location I should have chosen or do I need to undate the PATH variables? – NzFrancis Apr 12 '17 at 09:53
  • Also, PGPLOT and OpenGL are failing as well, is there possibly Something wrong with my installation? I've never had this much trouble correctly installing a module before.... – NzFrancis Apr 12 '17 at 10:04
  • @NzFrancis hi, you need to add the path these programs got installed into, to the Windows PATH environment variable (look here: https://www.java.com/en/download/help/path.xml). If you do it with the UI then you need to close and start a new command prompt before the changes will take effect. Please note that `cpanm` is much faster than `cpan` and also note that I suggest trying with `--notest`. These modules are complex and rely on third party tools. I can only answer specific questions – Dr.Avalanche Apr 12 '17 at 10:13
  • Thanks for your help so far. I changed the installation directory to match the PATH directory but still getting the same error, and even using '--notest' am still unable to install OpenGL and PGPLOT. See EDIT 3. – NzFrancis Apr 12 '17 at 11:56
  • @NzFrancis Regarding OpenGL, there's a fix here: https://sourceforge.net/p/pogl/bugs/26/ – Dr.Avalanche Apr 12 '17 at 12:46
  • @NzFrancis Also, I'm running a modern strawberry, you're running an old DMIM perl, your results will be different from mine since there's lots of changes. Specifically use the same version, use `cpanm` – Dr.Avalanche Apr 12 '17 at 12:49
  • I tried the fix, copied replaced my files and ran cpanm again, got the same error message, maybe as you say it is too old a version. – NzFrancis Apr 12 '17 at 13:58
  • @NzFrancis lots of changes over the years. No problems on my setup. – Dr.Avalanche Apr 12 '17 at 14:00
  • Ok, well tomorrow maybe it would be Worth my Rolling forward again and getting a later version - and another IDE perhaps. Is Windows uninstall a reliable method for cleaning out a perl installation in your opinion or are more drastic means required? – NzFrancis Apr 12 '17 at 14:06
  • 1
    Uninstall, delete any left over files, if you've altered your PATH change it. Strawberry is best results on Windows. Padre can be installed by cpanm. All this seems to work better under linux, so maybe consider a Virtual Machine/dual boot. – Dr.Avalanche Apr 12 '17 at 14:09
  • Ok, i'll try that tomorrow then and let you know how it works out. What version of strawberry do you use and is it x32 or x64 - just so I can more exactly copy your set-up and hence advice? – NzFrancis Apr 12 '17 at 14:18
  • I run 5.24.1 64bit – Dr.Avalanche Apr 12 '17 at 14:20
  • So I restarted the process and it seemed to be going well until the Inline::C installation with still doesn't work. And installing diff doesn't seem to change anything, or else the .exe doesn't create the right pointers and I need to do Something else so that cmd can recognise it... log file has been added to the question. – NzFrancis Apr 13 '17 at 09:05
  • I could just not test, as you suggested before, but does that mean some functionality will be lost? could it prevent me from being able to edit, display and then save image files from the imput data files? – NzFrancis Apr 13 '17 at 09:06
  • @NzFrancis I doubt it. Install with `cpanm --notest` then try some examples yourself, this will be much quicker (less time wasted) than trying to work around known problems. – Dr.Avalanche Apr 13 '17 at 09:09
  • I see what you mean. So I added the PDL module with --notest. 'cpanm OpenGL' said it was already up to date. Running 'cpanm PGPLOT' results in an error: ''dmake.exe: Error code 129, while making 'PGPLOT.o''' (taken from build.log file) but 'cpanm PDL::Graphics::PGPLOT' returns a 'this module is up to date'. Yet when I run a PGPLOT test code it gives the error described in my latest edit. – NzFrancis Apr 13 '17 at 14:04
  • Follow the win32 instructions: https://metacpan.org/source/KGB/PGPLOT-2.21/INSTALL-Win32 – Dr.Avalanche Apr 13 '17 at 15:33
  • The linked provided for the .dll and other files are no longer in use. I did find an alternative distribution i believe, here but don't quite understand how to go about following these instructions as there is no `Makefile.pl` to use, or installers that I can see. – NzFrancis Apr 14 '17 at 09:51