# Standards are great! Everyone has their own. In an effort to standardize licensing
# names, common-licenses will use the SPDX standard license names. In order to not
# break the non-standardized license names that we find in LICENSE, we'll set
# up a bunch of VarFlags to accommodate non-SPDX license names.
#
# We should really discuss standardizing this field, but that's a longer term goal.
# For now, we can do this and it should grab the most common LICENSE naming variations.
#
# We should NEVER have a GPL/LGPL without a version!!!!
# Any mapping to MPL/LGPL/GPL should be fixed

# AGPL variations
SPDXLICENSEMAP[AGPL-3] = "AGPL-3.0"
SPDXLICENSEMAP[AGPLv3] = "AGPL-3.0"
SPDXLICENSEMAP[AGPLv3.0] = "AGPL-3.0"

# GPL variations
SPDXLICENSEMAP[GPL-1] = "GPL-1.0"
SPDXLICENSEMAP[GPLv1] = "GPL-1.0"
SPDXLICENSEMAP[GPLv1.0] = "GPL-1.0"
SPDXLICENSEMAP[GPL-2] = "GPL-2.0"
SPDXLICENSEMAP[GPLv2] = "GPL-2.0"
SPDXLICENSEMAP[GPLv2.0] = "GPL-2.0"
SPDXLICENSEMAP[GPL-3] = "GPL-3.0"
SPDXLICENSEMAP[GPLv3] = "GPL-3.0"
SPDXLICENSEMAP[GPLv3.0] = "GPL-3.0"

#LGPL variations
SPDXLICENSEMAP[LGPLv2] = "LGPL-2.0"
SPDXLICENSEMAP[LGPLv2.0] = "LGPL-2.0"
SPDXLICENSEMAP[LGPL2.1] = "LGPL-2.1"
SPDXLICENSEMAP[LGPLv2.1] = "LGPL-2.1"
SPDXLICENSEMAP[LGPLv3] = "LGPL-3.0"

#MPL variations
SPDXLICENSEMAP[MPL-1] = "MPL-1.0"
SPDXLICENSEMAP[MPLv1] = "MPL-1.0"
SPDXLICENSEMAP[MPLv1.1] = "MPL-1.1"
SPDXLICENSEMAP[MPLv2] = "MPL-2.0"

#MIT variations
SPDXLICENSEMAP[MIT-X] = "MIT"
SPDXLICENSEMAP[MIT-style] = "MIT"

#Openssl variations
SPDXLICENSEMAP[openssl] = "OpenSSL"

#PSF variations
SPDXLICENSEMAP[PSF] = "PSF-2.0"
SPDXLICENSEMAP[PSFv2] = "PSF-2.0"

#Python variations
SPDXLICENSEMAP[Python-2] = "Python-2.0"

#Apache variations
SPDXLICENSEMAP[Apachev2] = "Apache-2.0"
SPDXLICENSEMAP[Apache-2] = "Apache-2.0"

#Artistic variations
SPDXLICENSEMAP[Artisticv1] = "Artistic-1.0"
SPDXLICENSEMAP[Artistic-1] = "Artistic-1.0"

#Academic variations
SPDXLICENSEMAP[AFL-2] = "AFL-2.0"
SPDXLICENSEMAP[AFL-1] = "AFL-1.2"
SPDXLICENSEMAP[AFLv2] = "AFL-2.0"
SPDXLICENSEMAP[AFLv1] = "AFL-1.2"

#CDDL variations
SPDXLICENSEMAP[CDDLv1] = "CDDL-1.0"
SPDXLICENSEMAP[CDDL-1] = "CDDL-1.0"

#Other variations
SPDXLICENSEMAP[EPLv1.0] = "EPL-1.0"

#Silicon Graphics variations
SPDXLICENSEMAP[SGIv1] = "SGI-1"

# Additional license directories. Add your custom licenses directories this path.
# LICENSE_PATH += "${COREBASE}/custom-licenses"

# Set if you want the license.manifest copied to the image
#COPY_LIC_MANIFEST = "1"

# If you want the pkg licenses copied over as well you must set
# both COPY_LIC_MANIFEST and COPY_LIC_DIRS
#COPY_LIC_DIRS = "1"

## SPDX temporary directory
SPDX_TEMP_DIR = "${WORKDIR}/spdx_temp"
SPDX_MANIFEST_DIR = "/home/yocto/fossology_scans"

## SPDX Format info
SPDX_VERSION = "SPDX-1.1"
DATA_LICENSE = "CC0-1.0"

## Fossology scan information
# You can set option to control if the copyright information will be skipped
# during the identification process.
#
# FOSS_NO_COPYRIGHT = "true"
#   NO copyright will be processed. That means only license information will be
#   identified and output to SPDX file
# FOSS_NO_COPYRIGHT = "false"
#   Copyright will be identified and output to SPDX file along with license
#   information. The process will take more time than not processing copyright
#   information.
#

FOSS_NO_COPYRIGHT = "true"

# A option defined as[FOSS_RECURSIVE_UNPACK] in ./meta/conf/licenses.conf. is
# used to control if FOSSology server need recursively unpack tar.gz file which
# is sent from do_spdx task.
#
# FOSS_RECURSIVE_UNPACK = "false":
#    FOSSology server does NOT recursively unpack. In the current release, this
#    is the default choice because recursively unpack will not necessarily break
#    down original compressed files.
# FOSS_RECURSIVE_UNPACK = "true":
#    FOSSology server recursively unpack components.
#

FOSS_RECURSIVE_UNPACK = "false"

# An option defined as [FOSS_FULL_SPDX] in ./meta/conf/licenses.conf is used to
# control what kind of SPDX output to get from the FOSSology server.
#
# FOSS_FULL_SPDX = "true":
#   Tell FOSSology server to return full SPDX output, like if the program was
#   run from the command line. This is needed in order to get license refs for
#   the full package rather than individual files only.
#
# FOSS_FULL_SPDX = "false":
#   Tell FOSSology to only process license information for files. All package
#   license tags in the report will be "NOASSERTION"
#

FOSS_FULL_SPDX = "true"

# FOSSologySPDX instance server. http://localhost/repo is the default
# installation location for FOSSology.
#
# For more information on FOSSologySPDX commandline:
#   https://github.com/spdx-tools/fossology-spdx/wiki/Fossology-SPDX-Web-API
#

FOSS_BASE_URL = "http://localhost/repo/?mod=spdx_license_once"
FOSS_SERVER = "${FOSS_BASE_URL}&fullSPDXFlag=${FOSS_FULL_SPDX}&noCopyright=${FOSS_NO_COPYRIGHT}&recursiveUnpack=${FOSS_RECURSIVE_UNPACK}"

FOSS_WGET_FLAGS = "-qO - --no-check-certificate --timeout=0"
