summaryrefslogtreecommitdiffstats
path: root/build/directive4.py
blob: 2a49f3028dc139e521b79079ed8a68ca6fb972f5 (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
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Imports
from __future__ import print_function, unicode_literals
from collections import OrderedDict

import os
import sys
import json

# Sanity check
if not len(sys.argv) > 1:
    print("Incorrect number of arguments")
    sys.exit(1)

# Vars
listConfigure = sys.argv[1:]
listConfig = []
strBrandingDirectory = ""

# Build a list of set configure variables
for _value in listConfigure:
    _splitString = _value.split("=")

    if _splitString[1] == "1":
        listConfig += [ _splitString[0] ]
    elif _splitString[0] == "MOZ_BRANDING_DIRECTORY":
        strBrandingDirectory = _splitString[1]

# Only applies if using Official Branding or specific branding directories
if ('MOZ_OFFICIAL_BRANDING' in listConfig) or (strBrandingDirectory.endswith("branding/official")) or (strBrandingDirectory.endswith("branding/unstable")):
    # Applies to Pale Moon and Basilisk
    if ('MC_BASILISK' in listConfig) or ('MC_PALEMOON' in listConfig):
        # Define a list of system libs
        listSystemLibs = [
            'MOZ_SYSTEM_LIBEVENT',
            'MOZ_SYSTEM_NSS',
            'MOZ_SYSTEM_NSPR',
            'MOZ_SYSTEM_JPEG',
            'MOZ_SYSTEM_ZLIB',
            'MOZ_SYSTEM_BZ2',
            'MOZ_SYSTEM_PNG',
            'MOZ_SYSTEM_LIBVPX',
            'MOZ_SYSTEM_SQLITE',
            'MOZ_SYSTEM_JEMALLOC'
        ]
        
        # Iterate through system libs and output 1 to DIRECTIVE4 if any are found
        for _value in listSystemLibs:
            if _value in listConfig:
                sys.stdout.write("1")
                sys.exit(1)

    # Applies only to Pale Moon
    if 'MC_PALEMOON' in listConfig:
        # Define a list of configure features that are in violation of Official branding
        listFeatureViolations = [
            'MOZ_SANDBOX',
            'MOZ_WEBRTC'
        ]
        
        # Iterate through features and output 1 to DIRECTIVE4 if any violations are found
        for _value in listFeatureViolations:
            if _value in listConfig:
                sys.stdout.write("1")
                sys.exit(1)

# Exit outputting nothing to DIRECTIVE4 being empty because there are no violations
sys.exit(0)