Shipwri...zeBuild(3)
π Shipwright::Manual::CustomizeBuild π
okay so bestie, welcome to section 3 of the User Contributed Perl Documentation β yes we're in the big kid manual pages now, and this one is all about CustomizeBuild, which is exactly what it sounds like. customizing the build. slay.
β¨ NAME β¨
Shipwright::Manual::CustomizeBuild β literally just: how do you customize the build method for a source? that's the whole vibe. π
πΈ DESCRIPTION πΈ
so rn there are two ways to build a source, and you gotta pick your fighter:
- through a perl script,
scripts/foo/build.plβ this one lets you do heavy customization, like full main character energy, go wild π - or using a list of tagged commands,
scripts/foo/buildβ simpler, but lowkey less customizable π¦
and here's the tea: scripts/foo/build.pl has higher precedence. so if both scripts/foo/build.pl and scripts/foo/build exist, the .pl one wins. periodt. no debate.
π§ build.pl
when you execute build.pl for the source foo, your current working directory will be dists/foo. noted. that's just where you live now.
the script gets run with a list of arguments, and the format is designed to be easily extracted with Getopt::Long (iykyk).
--install-base=sβ the base directory where the vessel is to be built to. like, where it's gonna end up living. π e.g."--install-base '/tmp/test-xxxxxx/test'"--flags=sβ a list of flags, joined by comma. (peepShipwright::Manual::UsingFlagsfor more info, bestie.) e.g."--flags default,mysql"--skip-testβ whether to skip running tests or not. do we test? or do we β¨ not β¨--forceβ if any test fails, whether to go on or just die. bold choice honestly π--cleanβ if run with this argument, the script should do the"clean"work instead of the"install"work. switching careers.
π¦ build
this one is a text file. every line should either be blank or follow the format "type: command". the command gets executed line by line, and the current working directory for building the source foo will be dists/foo β same address as before, we don't move.
in a normal build script, you'll see these types of commands: configure, make, install, clean, and sometimes test. their functions should be self-explanatory for anyone familiar with building perl modules. (and if you're not familiar yet, bestie, you will be. we believe in you π«Ά)
four template substitutions are available for use in the command: "%%PERL%%", "%%PERL_ARCHNAME%%", "%%INSTALL_BASE%%" and "%%MAKE%%". these can be used in cases where the path to perl, the perl archname (e.g. 'i486-linux-gnu-thread-multi'), the base install path or make command are needed β since they are not known beforehand or need to choose one later. basically they're the mystery boxes you fill in at runtime π¦β¨
and there are two special types: "test" and "clean".
β test
if executed with --skip-test, this command won't be executed. if executed with --force, even if this command fails the build will continue. resilient queen. π
π clean
if executed with --clean, all commands will be skipped except this one. it's the only one invited to the party. π
π SEE ALSO π
ShipwrightShipwright::Manual
π AUTHORS π
sunnavy <sunnavy@bestpractical.com> π
π LICENCE AND COPYRIGHT π
Shipwright is Copyright 2007-2015 Best Practical Solutions, LLC.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
okay that's the whole page bestie, you ate that. go build something iconic. π β¨
and that's a wrap from perl v5.42.0, dated 2025-07-25 β this manual page said what it said and then dipped. bye babes ππ¦π
π¦ where this page comes from
- fedora 43: perl-Shipwright 2.4.42-24.fc43 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms