class dependentPackageData(object):

    def __init__(self):
        self.package = ""
        self.version = ""
        self.compare = ""

class Package(object):
    def __init__(self, buildarch, basePkg=None):
        self.summary = ""
        self.name = ""
        self.group = ""
        self.license = ""
        self.version = ""
        self.release = ""
        self.buildarch = buildarch
        self.distribution = "Photon"
        self.basePkgName = ""
        self.URL = ""

        self.sources = []
        self.checksums = {}
        self.patches = []
        self.buildrequires = []
        self.buildprovides = []
        self.checkbuildrequires = []
        self.extrabuildrequires = []
        self.buildrequiresnative = []

        self.requires = []
        self.provides = []
        self.obsoletes = []
        self.conflicts = []

        self.descriptionMacro = None
        self.postMacro = None
        self.postunMacro = None
        self.filesMacro = None
        self.packageMacro = None

        if basePkg is not None:
            self.basePkgName = basePkg.name
            self.group = basePkg.group
            self.license = basePkg.license
            self.version = basePkg.version
            self.buildarch = basePkg.buildarch
            self.release = basePkg.release
            self.distribution = basePkg.distribution

    def updatePackageMacro(self, macro):
        if macro.macroName == "%post":
            self.postMacro = macro
        if macro.macroName == "%postun":
            self.postunMacro = macro
        if macro.macroName == "%files":
            self.filesMacro = macro
        if macro.macroName == "%description":
            self.descriptionMacro = macro

class SpecObject(object):
    def __init__(self):
        self.name = ""
        self.version = ""
        self.release = ""
        # map subpackage name to its buildarch
        self.buildarch = {}
        # list of subpackage names
        self.listPackages = []
        # list of subpackage names that have %files section
        self.listRPMPackages = []

        # Next five lists store dependentPackageData objects
        self.buildRequires = []
        self.installRequires = []
        self.checkBuildRequires = []
        self.extraBuildRequires = []
        self.buildRequiresNative = []
        # map subpackage name to list of install requires
        # dependentPackageData objects
        self.installRequiresPackages = {}

        # full spec file name
        self.specFile = ""
        self.listSources = []
        self.checksums = {}
        self.listPatches = []
        self.securityHardening = ""
        self.url = ""
        self.sourceurl = ""
        self.license = ""