Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Alias (5735)

Alias
  (email not shown publicly)
http://ali.as/

Journal of Alias (5735)

Saturday January 21, 2006
05:37 PM

I hereby offer a reward of a vertical metre of beer...

[ #28427 ]

If you are going to offer a reward for something, I figure why screw around. Make it hard, and make it worth it.

So I'm offering a vertical metre of beer as a reward.

I define this as "A metre high pile of slabs/cartons/crates/24-packs/whatever of your favourite non-rediculously-priced beer"

I've offered it once before. The same reward was posted to anyone that could crack Acme::BadExample and make a released version of perl load it normally, without the use of source filters or needing to patch the perl binary.

After submitting a rejected entry that loaded it, but needed a patch to bleadperl, Jos Boumans eventually won it almost a year later when Perl 5.9.2 was released (negating the need for the patch) and the same entry became a winner :)

So I'm offering a new reward to take it's place. This time around you don't even need to write any code to win it.

A metre of beer, as well as my unending respect, is offered for the following.

--------------------------------------------------------

1. An installation of Perl for Windows.

2. Said Perl must be current or relative new. 5.8.7 or higher.

3. Said installation MUST be in the form of an .msi or equivalent installer, to be installed directly on a fresh Windows intall without additional prerequisites.

4. The installer MUST also install a (legal) compiler (preferably gcc), preconfigured to work normally when installing XS modules from CPAN.

5. The installer should be able to be freely redistributed under normal perl terms and used on a variety of NT-based Windows operating systems equal to or newer than Windows 2000.

6. Once installed, Perl MUST be able to install modules direct from CPAN using the CPAN shell. (The installer doesn't need to preconfigured CPAN.pm) This also includes XS-based modules.

Clarification:
6b. CPAN MUST work in an Firewall/NAT/ADSL-type environments WITH passive-level FTP, but without full bidirection FTP, due to the sheer volume of Windows hosts in this situation. A solution which only works on public IPs is not enough. See below for details.

7. A build script or some form of build instructions should be provided, such that any other presumed-competant sysadmin should be able to replicate the process for newer Perl or Windows releases.

8. There is NOT an expectation that everything be your own work, you may (legally) use any other project as a base or mercilessly (legally) steal code, as long as the above conditions are met.

9. The winner is defined as the first person to post a working URL to the installer in a bottom-level comment below, and emails me to say they completed it. The winner may be an individual, a syndicate or even an entire PerlMongers group.

--------------------------------------------------------

That's it. I just want a Windows Perl installer that works and can install XS modules from CPAN normally, as we might expect from a Linux install.

I don't need or want a full blown ActiveState replacement with a ton of modules precompiled and bundled in, in fact I'd prefer it it JUST had the default Perl install only.

And that's it... you don't need to code, you just need to know or work out how to build Perl on Windows, set up a compiler and then from that build an installer.

I want to start bulk testing modules on Win32. And I need a stock Perl install that I can just run an installer to get, and that will work. It doesn't seem that hard, but I've watched it now defeat a number of good sysadmins and developers.

If anyone has comments that might give clues to the contestants, I'd love to hear them.

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • indigo perl seems to have most of what you want. it is a single file install, can load modules from cpan (via a gui or console so i imagine it can be scripted) and can compile source modules (i assume xs) but it needs devstudio. the owner is a good guy (a friend i have met at yapc's) and may be able to help you package gcc in it so you can get what you want.

    http://www.indigostar.com/indigoperl.htm#GUI%20Package%20Manager [indigostar.com]

    uri

    ps. did i say how much i hate web interfaces for text stuff like replies to blo

  • I think PXPerl (http://pxperl.com/ [pxperl.com]) comes very close. CPAN.pm even comes preconfigured, it just works out of the box. I've tried it with the MinGW compiler, and modules like DBI and DBD::SQLite, as well as Data::Dumper::Streamer, all compile and test alright. That is: those XS modules that are standalone. The next step is modules that require external libraries... :-/

    If this, in your opinion, a winner, then I'd prefer the price to go to the person that is responsible PXPerl and that isn't me.
    • I've been watching PXPerl for a while, and it's bloody close.

      But unfortunately the original author has gone AWOL and not been heard from in 2 months.

      It currently fails points 4 and 7.

      If someone can fix that so that the compiler stuff all installs as well, the reward is yours to allocate as you see fit. The PXPerl author certainly isn't around to claim the prize at the moment...
      • The PXPerl website explains what is happening. The author is a student and is rather busy at the moment. I would rather see someone step in to help kick PXPerl over the top. It is *really* close.
  • For me I'd like to see point 2 be Perl 5.6.1 or higher. There are still a lot of Perl apps out there running 5.6.1 for various reasons. I still get emails from people who find my CPAN testers reports asking about installing modules on Windows for 5.6.1.

  • Here's my attempt at a straightforward installer which I believe meets your requirements without inventing a whole new distribution of perl or gcc:
      http://stennie.org/camelpack/ [stennie.org]

    I picked one combination (and listed some alternatives considered) but the approach should be easily adaptable and maintainable.

    Cheers,
    Stephen
    • I managed to get it to compile after adding the ISX Download DLL files to the same directory as the camelpack.iss file.

      During installation, I only checked the mingw installation, to save some time.
      Installation failed, it couldn't find the file it thought it had downloaded to the tmp directory.

      I tried to uninstall, that failed with
      'an attempt was made to expand the "app" constant but Setup didn't create the "app" dir'
      so the program (listed as "2006.1" in add/remove programs) is still there.

      Exactly how did yo
      • Hey fireartist .. thx for your feedback, I'll test this out. Looks like I may have messed up the uninstall options on the uploaded version. There's no actual app to remove at the moment (it's calling other installers, which have their own uninstallers) .. so there shouldn't be an add/remove entry.

        Regarding inno/isx, I installed:
          - Innosetup
          - IStool
          - IStool download DLL .. then did any compiling/editing via ISTool. fwiw, ISTool seemed to have the download DLL properly registered wit
        • FYI, have uploaded a corrected version with the "uninstall" options removed.

          If you need to remove a bogus uninstall entry, the path in regedit to delete is:

          HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{2C936648 -0116-46EA-9398-49258B6325C3}

          Cheers,
          Stephen

    • Since my Microsoft Action Pack just arrived, I'm setting up a fresh installation of XP inside a new, clean, virtual image. I should have a confirmation of rejection in a few hours.
    • OK, having had time to install it, here's an official report card.

      1. Pass

      2. Pass

      3. Pass (with comment)

      While I'm a bit iffy about not having the other installers embedded, it did work just fine, and since the goal is to install from CPAN, requiring a network connection for the installation isn't unreasonable. So Pass.

      4. Pass

      5. Pass

      6. Fail (with comment)

      Running the installation inside the image worked, but the CPAN.pm first-time configuration process failed utterly. After 2 hours of debugging and 4 new RT bug
      • After talking with fireartist regarding vanillaPerl, it would appear that with the new Windows firewall + other reasons there's no way we'd ever want FTP to _not_ use passive.

        So the recommendation is to set FTP_PASSIVE=1 at the system level in.

        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

      • OK, have updated the installer to set FTP_PASSIVE by default; please retest.

        Cheers,
        Stephen
  • Just as an alternative to stennie's above, here's one that uses a built-from-source perl, rather than ActiveState's
    (I don't like that I can't distribute PAR-built exe's built using AS's perl unless I get written permission)

    You'll need this zip file: http://www.fireartist.com/tmp/vanillaPerl5.8.7.zip [fireartist.com] (41.5 KB)

    Unzip the file in c:\ it'll create a folder named c:\vanillaPerl5.8.7
    Just follow the instructions in c:\vanillaPerl5.8.7\build\installer.txt

    This is a very basic installation including perl5.8.7,

    • I've updated both the files - it now sets the PATH during install and uninstall.
      • For the benefit of the other contestants, at time of writing, vanillaPerl is a FAIL. I'm in discussion with the author, so I'll just summarise.

        - Doesn't set FTP_PASSIVE=1
        - gzip.exe crashes
        - Other minor CPAN.pm issues that might be fixed by the above being corrected.

        So at this time the contest is still open, with no winner, but two contestants closing in on the prize!
    • A perl-level issue to be aware of is: you can't use cpan to upgrade a core module such as CPAN or File::Spec because MSWindows won't let a .dll file be overwritten while it's in use. (I know there's people are looking at this issue).

      Its not a perl level issue at all. On win32 you can't delete open files. Period. Any installer will end up confronting this issue. Its the reason for the dreaded "you must reboot your machine" messages that are so well known in the Windows world.

      Some install techniques on

      • Thanks for the clarification ++

        Maybe CPAN / M::B could get round it, if libwin32 is installed, by adding a registry entry in the relevant 'run once' key, and asking the user to reboot.

        I'd personally find it quite amusing seeing cpan say "installation finished, please reboot to continue"!

        I suppose a problem would be if it happens when installing a prerequisite. Would it be sufficient for cpan to say, "please reboot, then run 'install Foo' again", rather than try to remember the state it was in?
  • BTW While we're looking at alternative Perl distributions for Win32, do not overlook niPerl [numeninest.com]. There's some interesting work that's been done, there, including the alternative GUI builder tool.