-
Notifications
You must be signed in to change notification settings - Fork 0
/
alienfile
78 lines (66 loc) · 1.92 KB
/
alienfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
use alienfile;
use Path::Tiny qw( path );
use File::Which qw( which );
use Env qw( @PATH );
# The go package for NetBSD does not put go in the path for some reason
unshift @PATH, '/usr/pkg/go118/bin' if $^O eq 'netbsd' && -d '/usr/pkg/go118/bin' && ! which 'go';
configure {
requires 'Path::Tiny';
requires 'File::Which';
};
plugin 'Probe::CommandLine' => (
command => 'ghostunnel',
args => '--version',
);
share {
my $asset_name;
my $cpu = meta->prop->{platform}->{cpu}->{arch}->{name};
if($^O eq 'linux' && $cpu eq 'x86_64')
{
$asset_name = 'ghostunnel-linux-amd64';
}
elsif($^O eq 'darwin' && $cpu eq 'x86_64')
{
$asset_name = 'ghostunnel-darwin-amd64';
}
elsif($^O eq 'darwin' && $cpu eq 'aarch64')
{
$asset_name = 'ghostunnel-darwin-arm64';
}
elsif($^O eq 'MSWin32' && $cpu eq 'x86_64')
{
$asset_name = 'ghostunnel-windows-amd64';
}
undef $asset_name if $ENV{ALIEN_GHOSTUNNEL_SOURCE};
plugin 'Download::GitHub' => (
github_user => 'ghostunnel',
github_repo => 'ghostunnel',
$asset_name ? (asset => 1, asset_name => qr/^$asset_name$/, asset_format => 'f') : (),
);
if($asset_name)
{
my $exe = "ghostunnel";
$exe .= ".exe" if $^O eq 'MSWin32';
my @build = (
'%{make_path} %{.install.prefix}/bin',
"%{cp} %{.install.extract}/$asset_name %{.install.prefix}/bin/$exe",
);
push @build, "chmod +x %{.install.prefix}/bin/$exe" unless $^O eq 'MSWin32';
build \@build;
}
elsif(my $go = which('go'))
{
plugin 'Build::Make' => 'umake';
Alien::Build->log("no binary for your platform must build from source");
build [
'%{make} ghostunnel',
'%{make_path} %{.install.prefix}/bin',
'%{cp} %{.install.extract}/ghostunnel %{.install.prefix}/bin/ghostunnel',
];
}
else
{
Alien::Build->log("no binary for your platform and no Go compiler");
die "no binary for your platform and no Go compiler";
}
};