use alienfile; plugin 'Probe::GnuWin32' => ( registry_key_regex => qr/^flex/i, exe_name => 'flex', exe_match => qr/flex/, exe_version => qr/version ([0-9\.]+)/, ); plugin 'Probe::CommandLine' => ( command => 'flex', args => ['--version'], match => qr/flex/, version => qr/([0-9\.]+)/, ); share { requires 'Alien::bison' => '0.11'; requires 'Alien::m4' => '0.08'; plugin 'Download' => ( url => 'https://github.com/westes/flex/files/981163/flex-2.6.4.tar.gz', version => qr/^flex-([0-9\.]+)\.tar\.gz$/, ); plugin 'Extract' => 'tar.gz'; patch [ '%{patch} -p1 < %{.install.patch}/flex-2.6.4.diff' ]; plugin 'Build::Autoconf' => (); requires 'Path::Tiny' => 0; build [ sub { log 'touch doc/flex.1'; Path::Tiny->new('doc/flex.1')->touch, }, '%{configure} --disable-maintainer-mode', '%{make}', '%{make} install', ]; gather sub { my($build) = @_; if(`flex --version` =~ /([0-9\.]+)/) { $build->runtime_prop->{version} = $1; } else { $build->runtime_prop->{version} ||= 'unknown'; } }; }