neversaint has asked for the wisdom of the Perl Monks concerning the following question:

Dear Masters,
I wanted to install Pugs in my local directory via CPAN shell. Now I have two versions of ghc callable from any location in my shell.
[neversaint@voyager ~]$ ghc ghc-6.2.1: no input files Usage: For basic information, try the `--help' option. [neversaint@voyager ~]$ ghc-6.4.1 ghc-6.4.1: no input files Usage: For basic information, try the `--help' option.
Now since Pugs needed version 6.4
cpan> install pugs [snip] *** Cannot find GHC 6.4 or above from path (we have 6.2.1). *** Please install a newer version from http://haskell.org/ghc/. Running make test Make had some problems, maybe interrupted? Won't test Running make install Make had some problems, maybe interrupted? Won't install cpan>
How can I make CPAN shell call the correct version of GHC-6.4.1 ?

---
neversaint and everlastingly indebted.......

Replies are listed 'Best First'.
Re: Installing Pugs via CPAN shell (How to call specific ghc version)
by Corion (Patriarch) on Oct 18, 2006 at 09:54 UTC

    The "bug"/undocumented feature/behaviour is in the Pugs distribution, in the subroutine assert_ghc:

    sub assert_ghc { my $self = shift; my $ghc = $self->can_run($ENV{GHC} || ( 'ghc' . $Config{_exe} ) ); ...

    It tries to find the ghc executable, or whatever you export in your environment as GHC. So in theory, the installation should work for you if you do:

    GHC=`which ghc-6.4.1` export GHC cpan Pugs
      Corion,

      Thanks for the pointer. Now my machine can recognize the latest GHC. But I still encounter such problem. Any idea why?
      Writing Makefile for Span Writing Makefile for Test Writing Makefile for Test::Builder Writing Makefile for Text::Glob Writing Makefile for Tree Writing Makefile for URI Writing Makefile for WTemplate Writing Makefile for Perl6::Pugs *** Enter 'make' to build Pugs. If compilation is too slow, consider using 'make unoptimized' instead. cp lib/pugs/hack.pod /home/neversaint/.cpan/build/Perl6-Pugs-6.2.9/bli +b/lib/pugs/hack.pod cp lib/Perl6/Pugs.pm /home/neversaint/.cpan/build/Perl6-Pugs-6.2.9/bli +b/lib/Perl6/Pugs.pm cp lib/pugs/run.pod /home/neversaint/.cpan/build/Perl6-Pugs-6.2.9/blib +/lib/pugs/run.pod cp lib/Inline/Pugs.pm /home/neversaint/.cpan/build/Perl6-Pugs-6.2.9/bl +ib/lib/Inline/Pugs.pm cp lib/Perl6/MakeMaker.pm /home/neversaint/.cpan/build/Perl6-Pugs-6.2. +9/blib/lib/Perl6/MakeMaker.pm /usr/bin/perl -Iinc -Iutil -MPugsConfig -e "PugsConfig->write_config_m +odule" > src/Pugs/Config.hs /home/neversaint/.ghc/bin/ghc-6.4.1 -O0 -o src/gen_prelude src/gen_pre +lude.hs /home/neversaint/.ghc/bin/hsc2hs-6.4.1 -Isrc/syck src/Data/Yaml/Syck +.hsc make: /home/neversaint/.ghc/bin/hsc2hs-6.4.1: Command not found make: *** [src/Data/Yaml/Syck.hs] Error 127 make: *** Waiting for unfinished jobs.... /usr/bin/make -j3 -- NOT OK Running make test Can't test without successful make Running make install make had returned bad status, install seems impossible


      ---
      neversaint and everlastingly indebted.......

        The output is fairly clear:

        make: /home/neversaint/.ghc/bin/hsc2hs-6.4.1: Command not found

        So, there seems to be no file under the name /home/neversaint/.ghc/bin/hsc2hs-6.4.1, or the file is not executable. Most likely your installation of ghc is not complete or that tool needs to be built manually. I'm no expert in compiling and installing Pugs, so I recommend you take your problems to the maintainers of Pugs.

        wild guess, since I don't know about your environment and I'm also not proficient in building pugs... Seems like ghc is living in ~/.ghc/bin. You've set
        GHC=`which ghc-6.4.1` export GHC cpan Pugs

        according to Corion's advice. Now the building system is looking for hsc2hs-6.4.1 - provide it. Look for hsc2hs in ~/.ghc/bin and make a symlink to it as hsc2hs-6.4.1

        Or undefine the environment variable GHC and prepend your haskell directory to your path: PATH=~/.ghc/bin:$PATH so that the right haskell compiler is found (and the plain hsc2hs). Hope that's close to accurate and helpful ;-)

        --shmem

        _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                      /\_¯/(q    /
        ----------------------------  \__(m.====·.(_("always off the crowd"))."·
        ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
        make: /home/neversaint/.ghc/bin/hsc2hs-6.4.1: Command not found make: *** src/Data/Yaml/Syck.hs Error 127

        I got this same error when trying to build it manually. I fiddled around and finally gave up.

        I was going to ask when the version of Perl6 will be ready that builds as easily and well as Perl5, based just on 'c'.


        I'm not really a human, but I play one on earth. Cogito ergo sum a bum