#
# Copyright 2020-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# Released tags, commits hash, branches and reviews / pull requests.

# The APPNAME targets defined in the Makefile will download the repo and will try to checkout
# the APPNAME_VERSION defined here, using the following methods in order:
# (1) Checkout local source code (local branch not yet pushed);
# (2) Fetch from Gerrit/Github (pending review in the form of refs/changes/... or pending pull request);
#
# The APPNAME-build targets will try to build with the given version, using the following sources in order:
# (1) Download from Maven central (for released versions or snapshots);
# (2) Checkout Local source code (local branch not yet pushed);
# (3) Fetch from Gerrit/Github (pending review in the form of refs/changes/... or pending pull request);

export ONOS_VERSION            ?= 283e217508b46d002f9e4640ea62cd7a63334a8c
export TRELLIS_CONTROL_VERSION ?= a3989be6892ec25e99a2caf7b63ea4226dfda39d
export TRELLIS_T3_VERSION      ?= 4fd3b46d76d1738c3d69d5fdc56603ac77fbfdc0
export UP4_VERSION             ?= 9c1d8a29c905eeafb1e5fba71ecd8434fec255e1
export FABRIC_TNA_VERSION      ?= 3523df3f8392a40c4cc837300e00fcf788403d82
