#######################################################################
# Create IPS packages for Solaris 11                                  #
#######################################################################

# Parameters:
# SOURCE_BASE: Directory for source files
#   example: /share/builds/integration/security/SECURITY_3_12_3
# SOLARIS_VERSION: version of Solaris
#   example: 5.11
# SOLARIS_BRANCH: build/branch of Solaris
#   example: 0.172.0.0.0.0.0
# NSS_VERSION, NSPR_VERSION, JSS_VERSION: version for NSS, NSPR, JSS
#   example: 3.12.3

PKG_LIST = nspr nss nssu nssc nsprh nssh jss aclg \
	nssold nssuold aclgold \
	SUNWpr SUNWprd SUNWtls SUNWtlsd SUNWtlsu SUNWjss SUNWaclg

# Non project specific definitions
CURDIR_ABS = $(shell pwd)
OBJDIR = obj
REPODIR = $(OBJDIR)/repo
PKGDIR_ABS = $(CURDIR_ABS)/$(PKGDIR)
SRC_S32=$(SOURCE_BASE)/SunOS5.11_OPT.OBJ
SRC_S64=$(SOURCE_BASE)/SunOS5.11_64_OPT.OBJ
SRC_X32=$(SOURCE_BASE)/SunOS5.11_i86pc_OPT.OBJ
SRC_X64=$(SOURCE_BASE)/SunOS5.11_i86pc_64_OPT.OBJ
JSS_JAR_DIR=$(SOURCE_BASE)
SRC_INC=$(SRC_S32)/include
ZIP_FILE = $(OBJDIR)/sic_team.zip
ALL_PKGS = $(addsuffix .pkg,$(PKG_LIST))

# Default location and version for ACL
ifndef ACL_DIR
	ACL_DIR=/net/jesbuild.us.oracle.com/export/builds/components/acl/1.0.4/common
endif
ifndef ACL_VERSION
	ACL_VERSION=1.0.4
endif

all: buildpkg

$(OBJDIR):
	mkdir -p $@

$(REPODIR):
	@echo "Creating repository $(REPODIR)"
	pkgrepo create $(REPODIR)
	pkgrepo -s $(REPODIR) add-publisher nss

clean:
	rm -rf $(OBJDIR)
	
%.p5m: %.p5t
	@echo "Creating package $* manifest"
	sed \
	  -e 's|%SRC_DIR%|$(CURDIR_ABS)|g' \
	  -e 's|%NSPR_VERSION%|$(NSPR_VERSION)|g' \
	  -e 's|%NSS_VERSION%|$(NSS_VERSION)|g' \
	  -e 's|%JSS_VERSION%|$(JSS_VERSION)|g' \
	  -e 's|%ACL_VERSION%|$(ACL_VERSION)|g' \
	  -e 's|%SOLARIS_VERSION%|$(SOLARIS_VERSION)|g' \
	  -e 's|%SOLARIS_BRANCH%|$(SOLARIS_BRANCH)|g' \
	  -e 's|%INC_DIR%|$(SRC_INC)|g' \
	  -e 's|%LIB_S32_DIR%|$(SRC_S32)/lib|g' \
	  -e 's|%LIB_S64_DIR%|$(SRC_S64)/lib|g' \
	  -e 's|%LIB_X32_DIR%|$(SRC_X32)/lib|g' \
	  -e 's|%LIB_X64_DIR%|$(SRC_X64)/lib|g' \
	  -e 's|%BIN_S32_DIR%|$(SRC_S32)/bin|g' \
	  -e 's|%BIN_S64_DIR%|$(SRC_S64)/bin|g' \
	  -e 's|%BIN_X32_DIR%|$(SRC_X32)/bin|g' \
	  -e 's|%BIN_X64_DIR%|$(SRC_X64)/bin|g' \
	  -e 's|%JSS_JAR_DIR%|$(JSS_JAR_DIR)|g' \
	  -e 's|%SRC_S32%|$(SRC_S32)|g' \
	  -e 's|%ACL_DIR%|$(ACL_DIR)|g' \
	  $< > $(OBJDIR)/$@
	
%.pkg: %.p5m
	@echo "Publishing the package $* to the repository $(REPODIR)"
	pkgsend -s $(REPODIR) publish --fmri-in-manifest $(OBJDIR)/$<
	touch $(OBJDIR)/$@	
	
buildpkg: $(OBJDIR) $(REPODIR) $(ALL_PKGS)
	@echo "Zipping the repo for delivery to Solaris"
	cd $(REPODIR) && zip -r $(PKGDIR_ABS)/$(ZIP_FILE) *
	@echo "The zip file is $(ZIP_FILE)"
	
