summaryrefslogtreecommitdiffstats
path: root/scripts/Dpkg/BuildInfo.pm
blob: 0792659bf4bddd21fc320071d7803bc06320da0c (plain)
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# Copyright © 2016-2022 Guillem Jover <guillem@debian.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

=encoding utf8

=head1 NAME

Dpkg::BuildInfo - handle build information

=head1 DESCRIPTION

The Dpkg::BuildInfo module provides functions to handle the build
information.

=cut

package Dpkg::BuildInfo 1.00;

use strict;
use warnings;

our @EXPORT_OK = qw(
    get_build_env_allowed
);

use Exporter qw(import);

=head1 FUNCTIONS

=over 4

=item @envvars = get_build_env_allowed()

Get an array with the allowed list of environment variables that can affect
the build, but are still not privacy revealing.

=cut

my @env_allowed = (
    # Toolchain.
    qw(
        CC
        CPP
        CXX
        OBJC
        OBJCXX
        PC
        FC
        M2C
        AS
        LD
        AR
        RANLIB
        MAKE
        AWK
        LEX
        YACC
    ),
    # Toolchain flags.
    qw(
        ASFLAGS
        ASFLAGS_FOR_BUILD
        CFLAGS
        CFLAGS_FOR_BUILD
        CPPFLAGS
        CPPFLAGS_FOR_BUILD
        CXXFLAGS
        CXXFLAGS_FOR_BUILD
        OBJCFLAGS
        OBJCFLAGS_FOR_BUILD
        OBJCXXFLAGS
        OBJCXXFLAGS_FOR_BUILD
        DFLAGS
        DFLAGS_FOR_BUILD
        FFLAGS
        FFLAGS_FOR_BUILD
        LDFLAGS
        LDFLAGS_FOR_BUILD
        ARFLAGS
        MAKEFLAGS
    ),
    # Dynamic linker, see ld(1).
    qw(
        LD_LIBRARY_PATH
    ),
    # Locale, see locale(1).
    qw(
        LANG
        LC_ALL
        LC_CTYPE
        LC_NUMERIC
        LC_TIME
        LC_COLLATE
        LC_MONETARY
        LC_MESSAGES
        LC_PAPER
        LC_NAME
        LC_ADDRESS
        LC_TELEPHONE
        LC_MEASUREMENT
        LC_IDENTIFICATION
    ),
    # Build flags, see dpkg-buildpackage(1).
    qw(
        DEB_BUILD_OPTIONS
        DEB_BUILD_PROFILES
    ),
    # DEB_flag_{SET,STRIP,APPEND,PREPEND} will be recorded after being merged
    # with system config and user config.
    # See deb-vendor(1).
    qw(
        DEB_VENDOR
    ),
    # See dpkg(1).
    qw(
        DPKG_ROOT
        DPKG_ADMINDIR
    ),
    # See dpkg-architecture(1).
    qw(
        DPKG_DATADIR
    ),
    # See Dpkg::Vendor(3).
    qw(
        DPKG_ORIGINS_DIR
    ),
    # See dpkg-gensymbols(1).
    qw(
        DPKG_GENSYMBOLS_CHECK_LEVEL
    ),
    # See <https://reproducible-builds.org/specs/source-date-epoch>.
    qw(
        SOURCE_DATE_EPOCH
    ),
);

sub get_build_env_allowed {
    return @env_allowed;
}

=back

=head1 CHANGES

=head2 Version 1.00 (dpkg 1.21.14)

Mark the module as public.

=cut

1;