BuildOptions.pm 716 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package Dpkg::BuildOptions;
  2. use strict;
  3. use warnings;
  4. sub parse {
  5. my ($env) = @_;
  6. $env ||= $ENV{DEB_BUILD_OPTIONS};
  7. unless ($env) { return {}; }
  8. my %opts;
  9. while ($env =~ s/(noopt|nostrip|nocheck),?//i) {
  10. $opts{lc $1} = '';
  11. }
  12. while ($env =~ s/(parallel)=(-?\d+),?//i) {
  13. $opts{lc $1} = $2;
  14. }
  15. return \%opts;
  16. }
  17. sub set {
  18. my ($opts, $overwrite) = @_;
  19. $overwrite = 1 if not defined($overwrite);
  20. my $env = $overwrite ? '' : $ENV{DEB_BUILD_OPTIONS}||'';
  21. if ($env) { $env .= ',' }
  22. while (my ($k, $v) = each %$opts) {
  23. if ($v) {
  24. $env .= "$k=$v,";
  25. } else {
  26. $env .= "$k,";
  27. }
  28. }
  29. $ENV{DEB_BUILD_OPTIONS} = $env if $env;
  30. return $env;
  31. }
  32. 1;