##
# $Id$
##
# Metadata for RPM/TAR makefile targets
##
# See src/api/Makefile.am for guidance on setting API_ values
##
  Meta:		1
  Name:		slurm
  Major:	14
  Minor:	03
  Micro:	11
  Version:	14.03.11
  Release:	1

##
#  When changing API_CURRENT update src/common/slurm_protocol_common.h
#  with a new SLURM_PROTOCOL_VERSION signifing the old one and the version
#  it was so the slurmdbd can continue to send the old protocol version.
#  In src/common/slurm_protocol_util.c check_header_version(),
#  and _get_slurm_version()
#  need to be updated also when changes are added also.
#
#  NOTE: The API version can not be the same as the Slurm version above.  The
#        version in the code is referenced as a uint16_t which if 1312 was the
#        API_CURRENT it would go over the limit.  So keep is a relatively
#        small number.
##
  API_CURRENT:	27
  API_AGE:	0
  API_REVISION:	0
