#
# 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            ?= 07af21d9e116414b74152dc812cc980ca2c4c0a5
export TRELLIS_CONTROL_VERSION ?= fe1274b0a7a2f6eaefd6266b0e2cf193875cc14c
export TRELLIS_T3_VERSION      ?= 4.0.0
export UP4_VERSION             ?= 187763c2ab0e68cf085e44cab0d5b67e09aa9b6b
export FABRIC_TNA_VERSION      ?= 126aba949906ca828812ec321d6163d00c37170c
