1Shipwright(3) User Contributed Perl Documentation Shipwright(3)
2
3
4
5 new
7 Shipwright - Best Practical Builder
8
10 $ export SHIPWRIGHT_SHIPYARD=fs:/tmp/fs
11 $ shipwright create
12 # import will take a while, enjoy your coffee!
13 $ shipwright import cpan:Jifty
14 $ cd /tmp/fs
15 $ ./bin/shipwright-builder --install-base /tmp/jifty
16
17 one liner doing the same thing:
18 $ shipwright-generate cpan:Jifty | perl - --install-base /tmp/jifty
19
21 Why use Shipwright?
22 Most software packages depend on other bits of software in order to
23 avoid code repetition. This may result in pain when attempting to
24 install the software, due to the maze of dependencies, especially for
25 large projects with many dependencies.
26
27 Shipwright is a tool to help you bundle your software with all its
28 dependencies, regardless of whether they are CPAN modules or non-Perl
29 modules from elsewhere. Shipwright makes the bundle work easy.
30
31 Introduction
32 If this is your first time using Shipwright,
33 Shipwright::Manual::Tutorial is probably a better place to start.
34
35 Design
36 The idea of Shipwright is simple:
37
38 sources shipwright factory
39 --------------------- ------------------------
40 | all the separate | import | shipyard | build
41 | sources | =====> | | ====>
42 --------------------- ------------------------
43
44 vessel (final product)
45 ----------------------------------------------
46 | all packages installed with smart wrappers |
47 ----------------------------------------------
48
49 What's in a shipyard
50 shipyard after initialization
51
52 After initializing a shipyard, the files in the repository are:
53
54 bin/
55 # used for building, installing and testing
56 shipwright-builder
57 # a utility for doing things such as updating the build order
58 shipwright-utility
59
60 etc/
61 # wrapper for installed bin files, mainly for optimizing the
62 environment
63 shipwright-script-wrapper
64 # wrapper for installed perl scripts
65 shipwright-perl-wrapper
66 # source files you can `source', for tcsh and bash, respectively.
67 # both will be installed to tools/
68 shipwright-source-tcsh, shipwright-source-bash
69 # utility which will be installed to tools/
70 shipwright-utility
71 # set env bat for windows
72 shipwright-windows-setenv.bat
73
74 inc/ # modules for shipwright itself
75
76 sources/ # all the sources live here
77
78 scripts/ # all the build scripts and dependency hints live here
79
80 shipwright/
81
82 # branches note, see L<Shipwright::Manual::UsingBranches>
83 branches.yml
84 # flags note, see L<Shipwright::Manual::UsingFlags>
85 flags.yml
86 # test failures note
87 known_test_failures.yml
88 # cpan dists' module => name map
89 map.yml
90 # the actual build order
91 order.yml
92 # reference count note
93 refs.yml
94 # non-cpan dists' name => url map
95 source.yml
96 # sources' version
97 version.yml
98
99 t/
100 # will run this if with --only-test when build
101 test
102
103 shipyard after import
104
105 After importing, say cpan:Acme::Hello, both the sources and scripts
106 directories will have a `cpan-Acme-Hello' directory.
107
108 Under scripts/cpan-Acme-Hello there are two files: 'build' and
109 'require.yml'.
110
111 build
112
113 configure: %%PERL%% %%MODULE_BUILD_BEFORE_BUILD_PL%% Build.PL
114 --install_base=%%INSTALL_BASE%% --install_path
115 lib=%%INSTALL_BASE%%/lib/perl5 --install_path
116 arch=%%INSTALL_BASE%%/lib/perl5 make: %%PERL%%
117 %%MODULE_BUILD_BEFORE_BUILD%% Build test: %%PERL%%
118 %%MODULE_BUILD_BEFORE_BUILD%% Build test install: %%PERL%%
119 %%MODULE_BUILD_BEFORE_BUILD%% Build install clean: %%PERL%%
120 %%MODULE_BUILD_BEFORE_BUILD%% Build realclean
121
122 Each line is of `type: command' format, and the command is executed
123 line by line (which is also true for t/test).
124
125 See Shipwright::Manual::CustomizeBuild for more information on
126 customizing the build process for dists.
127
128 require.yml
129
130 build_requires: {}
131
132 conflicts: {}
133
134 recommends:
135 cpan-Locale-Maketext-Lexicon:
136 version: 0.15 requires: {}
137
138 This file details the hints needed in order for Shipwright to create
139 the right build order.
140
141 vessel
142
143 After the cmd `./bin/shipwright-builder --install-base /tmp/vessel`, we
144 have a new directory structure which we call a vessel(/tmp/vessel).
145
147 Shipwright::Manual
148
150 sunnavy "<sunnavy@bestpractical.com>"
151
153 Shipwright is Copyright 2007-2015 Best Practical Solutions, LLC.
154
155 This program is free software; you can redistribute it and/or modify it
156 under the same terms as Perl itself.
157
158
159
160perl v5.32.0 2020-07-28 Shipwright(3)