1Inline-FAQ(3)         User Contributed Perl Documentation        Inline-FAQ(3)
2
3
4

NAME

6       Inline-FAQ - The Inline FAQ
7

DESCRIPTION

9       Welcome to the official Inline FAQ. In this case, FAQ means:
10
11           Formerly Answered Questions
12
13       This is a collection of old, long-winded emails that myself and others
14       have sent to the Inline mailing list. (inline@perl.org) They have been
15       reviewed and edited for general Inline edification. Some of them may be
16       related to a specific language. They are presented here in a tradi‐
17       tional FAQ layout.
18

General Inline

20       Since there is only a handful of content so far, all FAQs are currently
21       under this heading.
22
23       How disposable is a .Inline or _Inline directory?
24
25       I probably need to be more emphatic about the roll of _Inline/ cache
26       directories. Since they are created automatically, they are completely
27       disposable. I delete them all the time. And it is fine to have a dif‐
28       ferent one for each project. In fact as long as you don't have
29       ~/.Inline/ defined, Inline will create a new ./_Inline directory. You
30       can move that to ./.Inline and it will continue to work if you want to
31       give it more longevity and hide it from view. There is a long compli‐
32       cated list of rules about how [_.]Inline/ directories are used/created.
33       But it was designed to give you the most flexibility/ease-of-use. Never
34       be afraid to nuke 'em. They'll just pop right back next time. :)
35
36       Whatever happened to the SITE_INSTALL option?
37
38       SITE_INSTALL is gone. I was going to leave it in and change the seman‐
39       tics, but thought it better to remove it, so people wouldn't try to use
40       it the old way. There is now _INSTALL_ (but you're not supposed to know
41       that :). It works magically through the use of Inline::MakeMaker. I
42       explained this earlier but it's worth going through again because it's
43       the biggest change for 0.40. Here's how to 'permanently' install an
44       Inline extension (Inline based module) with 0.40:
45
46           1) Create a module with Inline.
47           2) Test it using the normal/local _Inline/ cache.
48           3) Create a Makefile.PL (like the one produced by h2xs)
49           4) Change 'use ExtUtils::MakeMaker' to 'use Inline::MakeMaker'
50           5) Change your 'use Inline C => DATA' to 'use Inline C => DATA => NAME
51              => Foo => VERSION => 1.23'
52           6) Make sure NAME matches your package name ('Foo'), or begins with
53              'Foo::'.
54           7) Make sure VERSION matches $Foo::VERSION. This must be a string (not a
55              number) matching /^\d\.\d\d$/
56           8) Do the perl/make/test/install dance (thanks binkley :)
57
58       With Inline 0.41 (or thereabouts) you can skip steps 3 & 4, and just
59       say 'perl -MInline=INSTALL ./Foo.pm'. This will work for non-Inline
60       modules too. It will become the defacto standard (since there is no
61       easy standard) way of installing a Perl module. It will allow Make‐
62       file.PL parameters 'perl -MInline=INSTALL ./Foo.pm - PRE‐
63       FIX=/home/ingy/perl' and things like that. It will also make use of a
64       MANIFEST if you provide one.
65
66       How do I create a binary distribution using Inline?
67
68       I've figured out how to create and install a PPM binary distribution;
69       with or without distributing the C code! And I've decided to share it
70       with all of you :)
71
72       NOTE: Future versions of Inline will make this process a one line com‐
73       mand. But for now just use this simple recipe.
74
75       ---
76
77       The Inline 0.40 distribution comes with a sample extension module
78       called Math::Simple. Theoretically you could distribute this module on
79       CPAN. It has all the necessary support for installation. You can find
80       it in Inline-0.40/modules/Math/Simple/. Here are the steps for convert‐
81       ing this into a binary distribution *without* C source code.
82
83       NOTE: The recipient of this binary distribution will need to have the
84       PPM.pm module installed. This module requires a lot of other CPAN mod‐
85       ules. ActivePerl (available for Win32, Linux, and Solaris) has all of
86       these bundled. While ActivePerl isn't required, it makes things (a lot)
87       easier.
88
89       1) cd Inline-0.40/Math/Simple/
90
91       2) Divide Simple.pm into two files:
92
93           ---8<--- (Simple.pm)
94           package Math::Simple;
95           use strict;
96           require Exporter;
97           @Math::Simple::ISA = qw(Exporter);
98           @Math::Simple::EXPORT = qw(add subtract);
99           $Math::Simple::VERSION = '1.23';
100
101           use Inline (C => 'src/Simple.c' =>
102                       NAME => 'Math::Simple',
103                       VERSION => '1.23',
104                      );
105           1;
106           ---8<---
107           ---8<--- (src/Simple.c)
108           int add (int x, int y) {
109               return x + y;
110           }
111
112           int subtract (int x, int y) {
113               return x - y;
114           }
115           ---8<---
116
117       So now you have the Perl in one file and the C in the other. The C code
118       must be in a subdirectory.
119
120       3) Note that I also changed the term 'DATA' to the name of the C file.
121       This will work just as if the C were still inline.
122
123       4) Run 'perl Makefile.PL'
124
125       5) Run 'make test'
126
127       6) Get the MD5 key from 'blib/arch/auto/Math/Simple/Simple.inl'
128
129       7) Edit 'blib/lib/Math/Simple.pm'. Change 'src/Simple.c' to
130       '02c61710cab5b659efc343a9a830aa73' (the MD5 key)
131
132       8) Run 'make ppd'
133
134       9) Edit 'Math-Simple.ppd'. Fill in AUTHOR and ABSTRACT if you wish.
135       Then change:
136
137           <CODEBASE HREF="" />
138
139       to
140
141           <CODEBASE HREF="Math-Simple.tar.gz" />
142
143       10) Run:
144
145           tar cvf Math-Simple.tar blib
146           gzip --best Math-Simple.tar
147
148       11) Run:
149
150           tar cvf Math-Simple-1.23.tar Math-Simple.ppd Math-Simple.tar.gz
151           gzip --best Math-Simple-1.23.tar
152
153       12) Distribute Math-Simple-1.23.tar.gz with the following instructions:
154
155       A) Run:
156
157           gzip -d Math-Simple-1.23.tar.gz
158           tar xvzf Math-Simple-1.23.tar
159
160       B) Run 'ppm install Math-Simple.ppd'
161
162       C) Delete Math-Simple.tar and Math-Simple.ppd.
163
164       D) Test with:
165
166           perl -MMath::Simple -le 'print add(37, 42)'
167
168       ---
169
170       That's it. The process should also work with zip instead of tar, but I
171       haven't tried it.
172
173       The recipient of the binary must have Perl built with a matching archi‐
174       tecture. Luckily, ppm will catch this.
175
176       For a binary dist *with* C source code, simply omit steps 2, 3, 6, and
177       7.
178
179       If this seems too hard, then in a future version you should be able to
180       just type:
181
182           make ppm
183
184
185
186perl v5.8.8                       2002-10-28                     Inline-FAQ(3)
Impressum