forked from rosa/hakurei
internal/rosa/perl: Makefile.PL helper
This can be invoked from azalea. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -7,6 +7,9 @@ import (
|
||||
"hakurei.app/internal/pkg"
|
||||
)
|
||||
|
||||
// Perl is the perl interpreter used by [MakeMakerHelper].
|
||||
var Perl = H("perl")
|
||||
|
||||
// newViaPerlModuleBuild installs a perl module via Build.PL.
|
||||
func (t Toolchain) newViaPerlModuleBuild(
|
||||
name, version string,
|
||||
@@ -54,6 +57,51 @@ func init() {
|
||||
})
|
||||
}
|
||||
|
||||
// MakeMakerHelper is the [Perl] MakeMaker helper.
|
||||
type MakeMakerHelper struct {
|
||||
// Whether to skip the check target.
|
||||
SkipCheck bool
|
||||
}
|
||||
|
||||
// extra returns perl.
|
||||
func (*MakeMakerHelper) extra(int) P { return P{Perl, Make} }
|
||||
|
||||
// wantsChmod returns true.
|
||||
func (*MakeMakerHelper) wantsChmod() bool { return true }
|
||||
|
||||
// wantsWrite returns true.
|
||||
func (*MakeMakerHelper) wantsWrite() bool { return true }
|
||||
|
||||
// scriptEarly is a noop.
|
||||
func (*MakeMakerHelper) scriptEarly() string { return "" }
|
||||
|
||||
// createDir returns false.
|
||||
func (*MakeMakerHelper) createDir() bool { return false }
|
||||
|
||||
// wantsDir returns the zero value.
|
||||
func (*MakeMakerHelper) wantsDir() string { return "" }
|
||||
|
||||
// script generates Makefile.PL-based build and test commands.
|
||||
func (attr *MakeMakerHelper) script(t Toolchain, _ string) string {
|
||||
if attr == nil {
|
||||
attr = new(MakeMakerHelper)
|
||||
}
|
||||
|
||||
script := `perl Makefile.PL \
|
||||
PREFIX=/system
|
||||
make \
|
||||
` + jobsFlagE
|
||||
if !attr.SkipCheck && t.opts&OptSkipCheck == 0 {
|
||||
script += `
|
||||
make \
|
||||
` + jobsFlagE + ` \
|
||||
test
|
||||
`
|
||||
}
|
||||
script += "make DESTDIR=/work install\n"
|
||||
return script
|
||||
}
|
||||
|
||||
// newViaPerlMakeMaker installs a perl module via Makefile.PL.
|
||||
func (t Toolchain) newViaPerlMakeMaker(
|
||||
name, version string,
|
||||
@@ -62,22 +110,8 @@ func (t Toolchain) newViaPerlMakeMaker(
|
||||
extra ...ArtifactH,
|
||||
) pkg.Artifact {
|
||||
return t.NewPackage("perl-"+name, version, source, &PackageAttr{
|
||||
// uses source tree as scratch space
|
||||
Writable: true,
|
||||
Chmod: true,
|
||||
EnterSource: true,
|
||||
|
||||
Patches: patches,
|
||||
}, &MakeHelper{
|
||||
OmitDefaults: true,
|
||||
InPlace: true,
|
||||
|
||||
ConfigureName: "perl Makefile.PL",
|
||||
Configure: []KV{
|
||||
{"PREFIX", "/system"},
|
||||
},
|
||||
Check: []string{"test"},
|
||||
}, slices.Concat(extra, P{
|
||||
}, (*MakeMakerHelper)(nil), slices.Concat(extra, P{
|
||||
Perl,
|
||||
})...)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user