Commit | Line | Data |
---|---|---|
1479465f GJ |
1 | # Copyright © 2012 Guillem Jover <guillem@debian.org> |
2 | # | |
3 | # This program is free software; you can redistribute it and/or modify | |
4 | # it under the terms of the GNU General Public License as published by | |
5 | # the Free Software Foundation; either version 2 of the License, or | |
6 | # (at your option) any later version. | |
7 | # | |
8 | # This program is distributed in the hope that it will be useful, | |
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | # GNU General Public License for more details. | |
12 | # | |
13 | # You should have received a copy of the GNU General Public License | |
14 | # along with this program. If not, see <https://www.gnu.org/licenses/>. | |
15 | ||
16 | package Dpkg::Build::Env; | |
17 | ||
18 | use strict; | |
19 | use warnings; | |
20 | ||
21 | our $VERSION = '0.01'; | |
22 | ||
23 | my %env_modified = (); | |
24 | my %env_accessed = (); | |
25 | ||
26 | =encoding utf8 | |
27 | ||
28 | =head1 NAME | |
29 | ||
30 | Dpkg::Build::Env - track build environment | |
31 | ||
32 | =head1 DESCRIPTION | |
33 | ||
34 | The Dpkg::Build::Env module is used by dpkg-buildflags to track the build | |
35 | environment variables being used and modified. | |
36 | ||
37 | =head1 FUNCTIONS | |
38 | ||
39 | =over 4 | |
40 | ||
41 | =item $bf->set($varname, $value) | |
42 | ||
43 | Update the build environment variable $varname with value $value. Record | |
44 | it as being accessed and modified. | |
45 | ||
46 | =cut | |
47 | ||
48 | sub set { | |
49 | my ($varname, $value) = @_; | |
50 | $env_modified{$varname} = 1; | |
51 | $env_accessed{$varname} = 1; | |
52 | $ENV{$varname} = $value; | |
53 | } | |
54 | ||
55 | =item $bf->get($varname) | |
56 | ||
57 | Get the build environment variable $varname value. Record it as being | |
58 | accessed. | |
59 | ||
60 | =cut | |
61 | ||
62 | sub get { | |
63 | my $varname = shift; | |
64 | $env_accessed{$varname} = 1; | |
65 | return $ENV{$varname}; | |
66 | } | |
67 | ||
68 | =item $bf->has($varname) | |
69 | ||
70 | Return a boolean indicating whether the environment variable exists. | |
71 | Record it as being accessed. | |
72 | ||
73 | =cut | |
74 | ||
75 | sub has { | |
76 | my $varname = shift; | |
77 | $env_accessed{$varname} = 1; | |
78 | return exists $ENV{$varname}; | |
79 | } | |
80 | ||
81 | =item @list = $bf->list_accessed() | |
82 | ||
83 | Returns a list of all environment variables that have been accessed. | |
84 | ||
85 | =cut | |
86 | ||
87 | sub list_accessed { | |
88 | my @list = sort keys %env_accessed; | |
89 | return @list; | |
90 | } | |
91 | ||
92 | =item @list = $bf->list_modified() | |
93 | ||
94 | Returns a list of all environment variables that have been modified. | |
95 | ||
96 | =cut | |
97 | ||
98 | sub list_modified { | |
99 | my @list = sort keys %env_modified; | |
100 | return @list; | |
101 | } | |
102 | ||
103 | =back | |
104 | ||
105 | =head1 CHANGES | |
106 | ||
107 | =head2 Version 0.xx | |
108 | ||
109 | This is a private module. | |
110 | ||
111 | =cut | |
112 | ||
113 | 1; |