Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Swoops down and creates your Perl 6 project Makefile for you

tree: b113b10d27

Fetching latest commit…

Cannot retrieve the latest commit at this time

== Unobtrusive Forinsecal Organizer

The abduction story is typical, and doesn't hold any elements of surprise
for people well-versed in encounters with our gray-skinned 'friends'. Perhaps
the only odd detail is that in my case, they weren't after my livestock or my
bodily fluids, but they really wanted to collect all the old ways of
configuring Perl 6 projects. Collect them and *destroy* them. Blast them out
of existence.

In return, they handed me a small hand-held device with the letters 'ufo' on
the side. From now on -- they told me -- whenever I would fall back to my
primitively human urge to create a Makefile, I would just activate the

% ufo

...and it would create the Makefile for me, using 'ambient information'. So
normally you'd probably do

% ufo && make

to build your project.

When they told me this, they had already beamed me up to their vessel and
treated me to the best sirloin steak I've *ever* tasted, period. I was a little
tipsy from the excellent wine, too, but not to the point of being drunk. Entire
galaxies swooped past outside the ship's windows like they do in exceedingly
bad movies. I peered at the device.

'Ok, um,' I began. 'It's important that the modules be built in a certain
order, sort of like a dependency order, you know. Otherwise the build process
will be unnecessarily slow because of re-parses. See what I mean?'

They looked at me pityingly, like you'd look at a pre-schooler who wants to
know all about quantum computing.

'Yes. The build order will be optimized. Try not to think too much, it's
not good for you.'

'If I'm a module developer, do I commit the generated Makefile?'

'No. The Makefile cannot be distributed. It is tailor-made for your local
absolute paths.'

I asked them why they had come all the way here to our planet to help us with
Perl 6 project Makefiles. They looked knowingly at each other, and then went
into a sort of song-and-dance act, which they really must have rehearsed
beforehand, 'cause they suddenly had all these special clothes and top hats and
canes and stuff. As if the situation wasn't unusual enough already, having five
or six gray ones dress up as Fred Astaire and do a dance number... it was
taxing on my poor human senses. From what I caught of the lyrics, which was
full of bad ET clichés, they had travelled many of 'our Earth years' to make
sure that we live up to our 'destiny as a species' using our 'full potential'.
Apparently -- and here I confess that my memory is a bit vague -- this wouldn't
be possible if we held on to our old way of configuring Makefiles.

Having no other question, I was beamed back to an isolated cow pasture not
far from where I live. Somehow I knew that my task was now to locate the
remaining 'Makefile.PL' and 'Configure' files and their brethren, and convince
others to remove them so that humanity could finally unshackle itself from its
archaic technology.

And no-one would believe that my story was anything but a dream.
Except that I still carry this small device they gave me...


My friend Ingy, who has lots of prior experience with alien technology, wrote
this little cheatsheet to help other humans use the device:

    % ufo                      # (re)write the Makefile
    % make                     # compile your Perl 6 libraries to PIR
    % make all                 # ditto
    % make build               # ditto
    % make test                # run your unit tests
    % make loudtest            # like test, but do not supress the TAP output
    % make timetest            # like loudtest, but with timings
    % make install             # install your source/PIR (no need to sudo)
    % PREFIX=somewhere/else make -e install # install somewhere else
    % make clean               # clean up leftovers
    % make distclean           # make clean and remove the Makefile
    % make purge               # ditto
    % ufo && make test install purge # do it all and leave no trace

== Repositories that still use human technology

* benchmark --, lib/ and
* grampa -- Configure, lib/ and
* io-prompt --, lib/ and
* Perl6-Term--ANSIColor --, lib/ and
* statistics-lite -- Makefile.PL and
* Vector -- Configure, lib/ and
* web -- Configure, lib/ and
* yarn --, lib/ and
Something went wrong with that request. Please try again.