"build" refers to Inline creating a module in _Inline (like h2xs) and making it at use/BEGIN time (perl Makefile.PL/make install), before your program runs, ex
$ perl def.pl
validate Stage
Starting Build Preprocess Stage
get_maps Stage
Finished Build Preprocess Stage
Starting Build Parse Stage
Finished Build Parse Stage
Starting Build Glue 1 Stage
Finished Build Glue 1 Stage
Starting Build Glue 2 Stage
Finished Build Glue 2 Stage
Starting Build Glue 3 Stage
Finished Build Glue 3 Stage
Starting Build Compile Stage
Starting "perl Makefile.PL" Stage
Writing Makefile for def_pl_38b1
Writing MYMETA.yml and MYMETA.json
Finished "perl Makefile.PL" Stage
Starting "make" Stage
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe C:\perl\site\5.14
+.1\lib\ExtUtils\xsubpp -typemap "C:\perl\5.14.1\l
ib\ExtUtils\typemap" def_pl_38b1.xs > def_pl_38b1.xsc && C:\perl\5.14
+.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtil
s::Command -e mv -- def_pl_38b1.xsc def_pl_38b1.c
gcc -c -I"D:/soInline" -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -
+DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_S
YS -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"0.00\"
+ -DXS_VERSION=\"0.00\" "-IC:\perl\5.14.1\lib\MSW
in32-x86-multi-thread\CORE" def_pl_38b1.c
Running Mkbootstrap for def_pl_38b1 ()
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtils::Comma
+nd -e chmod -- 644 def_pl_38b1.bs
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtils::Mksym
+lists \
-e "Mksymlists('NAME'=>\"def_pl_38b1\", 'DLBASE' => 'def_pl_38b1'
+, 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS'
=> { }, 'DL_VARS' => []);"
dlltool --def def_pl_38b1.def --output-exp dll.exp
g++ -o blib\arch\auto\def_pl_38b1\def_pl_38b1.dll -Wl,--base-file -Wl,
+dll.base -mdll -s -L"c:\perl\5.14.1\lib\MSWin32-x8
6-multi-thread\CORE" -L"C:\MinGW\lib" def_pl_38b1.o C:\perl\5.14.1\l
+ib\MSWin32-x86-multi-thread\CORE\libperl514.a -lmo
ldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -l
+shell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2
_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 dll.exp
dlltool --def def_pl_38b1.def --base-file dll.base --output-exp dll.ex
+p
g++ -o blib\arch\auto\def_pl_38b1\def_pl_38b1.dll -mdll -s -L"c:\perl\
+5.14.1\lib\MSWin32-x86-multi-thread\CORE" -L"C:\Mi
nGW\lib" def_pl_38b1.o C:\perl\5.14.1\lib\MSWin32-x86-multi-thread\C
+ORE\libperl514.a -lmoldname -lkernel32 -luser32 -l
gdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -l
+netapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -
lodbc32 -lodbccp32 -lcomctl32 dll.exp
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtils::Comma
+nd -e chmod -- 755 blib\arch\auto\def_pl_38b1\def_
pl_38b1.dll
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtils::Comma
+nd -e cp -- def_pl_38b1.bs blib\arch\auto\def_pl_3
8b1\def_pl_38b1.bs
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtils::Comma
+nd -e chmod -- 644 blib\arch\auto\def_pl_38b1\def_
pl_38b1.bs
Finished "make" Stage
Starting "make install" Stage
Files found in blib\arch: installing files in blib\lib into architectu
+re dependent library tree
Installing D:\soInline\_Inline\lib\auto\def_pl_38b1\def_pl_38b1.bs
Installing D:\soInline\_Inline\lib\auto\def_pl_38b1\def_pl_38b1.dll
Finished "make install" Stage
Starting Cleaning Up Stage
Finished Cleaning Up Stage
Finished Build Compile Stage
SV = IV(0x99aa48) at 0x99aa4c
REFCNT = 1
FLAGS = (PADMY,IOK,pIOK)
IV = 123
SV = IV(0x99aa48) at 0x99aa4c
REFCNT = 1
FLAGS = (PADMY,IOK,pIOK)
IV = 1
$ perl notdef.pl
validate Stage
Starting Build Preprocess Stage
get_maps Stage
Finished Build Preprocess Stage
Starting Build Parse Stage
Finished Build Parse Stage
Starting Build Glue 1 Stage
Finished Build Glue 1 Stage
Starting Build Glue 2 Stage
Finished Build Glue 2 Stage
Starting Build Glue 3 Stage
Finished Build Glue 3 Stage
Starting Build Compile Stage
Starting "perl Makefile.PL" Stage
Writing Makefile for modSV
Writing MYMETA.yml and MYMETA.json
Finished "perl Makefile.PL" Stage
Starting "make" Stage
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe C:\perl\site\5.14
+.1\lib\ExtUtils\xsubpp -typemap "C:\perl\5.14.1\l
ib\ExtUtils\typemap" modSV.xs > modSV.xsc && C:\perl\5.14.1\bin\MSWin
+32-x86-multi-thread\perl.exe -MExtUtils::Command -
e mv -- modSV.xsc modSV.c
gcc -c -I"D:/soInline" -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -
+DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_S
YS -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"0.00\"
+ -DXS_VERSION=\"0.00\" "-IC:\perl\5.14.1\lib\MSW
in32-x86-multi-thread\CORE" modSV.c
Running Mkbootstrap for modSV ()
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtils::Comma
+nd -e chmod -- 644 modSV.bs
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtils::Mksym
+lists \
-e "Mksymlists('NAME'=>\"modSV\", 'DLBASE' => 'modSV', 'DL_FUNCS'
+ => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL
_VARS' => []);"
dlltool --def modSV.def --output-exp dll.exp
g++ -o blib\arch\auto\modSV\modSV.dll -Wl,--base-file -Wl,dll.base -md
+ll -s -L"c:\perl\5.14.1\lib\MSWin32-x86-multi-thre
ad\CORE" -L"C:\MinGW\lib" modSV.o C:\perl\5.14.1\lib\MSWin32-x86-mul
+ti-thread\CORE\libperl514.a -lmoldname -lkernel32
-luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -l
+oleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm
-lversion -lodbc32 -lodbccp32 -lcomctl32 dll.exp
dlltool --def modSV.def --base-file dll.base --output-exp dll.exp
g++ -o blib\arch\auto\modSV\modSV.dll -mdll -s -L"c:\perl\5.14.1\lib\M
+SWin32-x86-multi-thread\CORE" -L"C:\MinGW\lib" mod
SV.o C:\perl\5.14.1\lib\MSWin32-x86-multi-thread\CORE\libperl514.a -
+lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -
lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -l
+ws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32
-lcomctl32 dll.exp
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtils::Comma
+nd -e chmod -- 755 blib\arch\auto\modSV\modSV.dll
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtils::Comma
+nd -e cp -- modSV.bs blib\arch\auto\modSV\modSV.bs
C:\perl\5.14.1\bin\MSWin32-x86-multi-thread\perl.exe -MExtUtils::Comma
+nd -e chmod -- 644 blib\arch\auto\modSV\modSV.bs
Finished "make" Stage
Starting "make install" Stage
Files found in blib\arch: installing files in blib\lib into architectu
+re dependent library tree
Installing D:\soInline\_Inline\lib\auto\modSV\modSV.bs
Installing D:\soInline\_Inline\lib\auto\modSV\modSV.dll
Finished "make install" Stage
Starting Cleaning Up Stage
Finished Cleaning Up Stage
Finished Build Compile Stage
SV = IV(0xc39248) at 0xc3924c
REFCNT = 1
FLAGS = (PADMY,IOK,pIOK)
IV = 123
SV = IV(0xc39248) at 0xc3924c
REFCNT = 1
FLAGS = (PADMY,IOK,pIOK)
IV = 1
subsequent runs don't "build"
unless the c-source changes
The resulting directory structure $ tree -f -a _Inline
_Inline
|-- _Inline/build
| `-- _Inline/build/modSV
| |-- _Inline/build/modSV/INLINE.h
| |-- _Inline/build/modSV/MYMETA.json
| |-- _Inline/build/modSV/MYMETA.yml
| |-- _Inline/build/modSV/Makefile
| |-- _Inline/build/modSV/Makefile.PL
| |-- _Inline/build/modSV/blib
| | |-- _Inline/build/modSV/blib/arch
| | | |-- _Inline/build/modSV/blib/arch/.exists
| | | `-- _Inline/build/modSV/blib/arch/auto
| | | `-- _Inline/build/modSV/blib/arch/auto/modSV
| | | |-- _Inline/build/modSV/blib/arch/auto/modSV/.
+exists
| | | |-- _Inline/build/modSV/blib/arch/auto/modSV/m
+odSV.bs
| | | `-- _Inline/build/modSV/blib/arch/auto/modSV/m
+odSV.dll
| | |-- _Inline/build/modSV/blib/bin
| | | `-- _Inline/build/modSV/blib/bin/.exists
| | |-- _Inline/build/modSV/blib/lib
| | | |-- _Inline/build/modSV/blib/lib/.exists
| | | `-- _Inline/build/modSV/blib/lib/auto
| | | `-- _Inline/build/modSV/blib/lib/auto/modSV
| | | `-- _Inline/build/modSV/blib/lib/auto/modSV/.e
+xists
| | |-- _Inline/build/modSV/blib/man1
| | | `-- _Inline/build/modSV/blib/man1/.exists
| | |-- _Inline/build/modSV/blib/man3
| | | `-- _Inline/build/modSV/blib/man3/.exists
| | `-- _Inline/build/modSV/blib/script
| | `-- _Inline/build/modSV/blib/script/.exists
| |-- _Inline/build/modSV/dll.base
| |-- _Inline/build/modSV/dll.exp
| |-- _Inline/build/modSV/modSV.bs
| |-- _Inline/build/modSV/modSV.c
| |-- _Inline/build/modSV/modSV.def
| |-- _Inline/build/modSV/modSV.o
| |-- _Inline/build/modSV/modSV.xs
| |-- _Inline/build/modSV/modSV_def.old
| `-- _Inline/build/modSV/pm_to_blib
|-- _Inline/config-MSWin32-x86-multi-thread-5.014001
`-- _Inline/lib
`-- _Inline/lib/auto
|-- _Inline/lib/auto/def_pl_38b1
| |-- _Inline/lib/auto/def_pl_38b1/def_pl_38b1.bs
| |-- _Inline/lib/auto/def_pl_38b1/def_pl_38b1.dll
| `-- _Inline/lib/auto/def_pl_38b1/def_pl_38b1.inl
|-- _Inline/lib/auto/def_pl_4ff5
| |-- _Inline/lib/auto/def_pl_4ff5/def_pl_4ff5.bs
| |-- _Inline/lib/auto/def_pl_4ff5/def_pl_4ff5.dll
| `-- _Inline/lib/auto/def_pl_4ff5/def_pl_4ff5.inl
`-- _Inline/lib/auto/modSV
|-- _Inline/lib/auto/modSV/.packlist
|-- _Inline/lib/auto/modSV/modSV.bs
|-- _Inline/lib/auto/modSV/modSV.dll
`-- _Inline/lib/auto/modSV/modSV.inl
18 directories, 35 files
The _Inline/build directory usually gets cleaned up, but not for notdef.pl
notdef.pl also NAME's the module, so its name doesn't change, but def.pl doesn't NAME the module, so a name is derived from the filename (def.pl) and the md5 sum of the c-source code
Now, can two copies of notdef.pl run simultaneously? Lets see
First cleanup $ rm -rfv _Inline
And one copy will trip over the other and die , the other will continue normally
Now I'm not sure what scenario davido is talking about in the OP, but I hope this helps
FWIW, def.pl/notdef.pl are derived from XS: returning a 64-bit unsigned int?/Re: Inline::C with multiple *.c
| [reply] [d/l] [select] |