You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							215 lines
						
					
					
						
							6.9 KiB
						
					
					
				
			
		
		
	
	
							215 lines
						
					
					
						
							6.9 KiB
						
					
					
				| #!/bin/sh | |
| # --- SDE-COPYRIGHT-NOTE-BEGIN --- | |
| # This copyright note is auto-generated by ./scripts/Create-CopyPatch. | |
| # | |
| # Filename: package/.../java-dirtree/java-conf.in | |
| # Copyright (C) 2008 The OpenSDE Project | |
| # Copyright (C) 2004 - 2006 The T2 SDE Project | |
| # | |
| # More information can be found in the files COPYING and README. | |
| # | |
| # This program is free software; you can redistribute it and/or modify | |
| # it under the terms of the GNU General Public License as published by | |
| # the Free Software Foundation; version 2 of the License. A copy of the | |
| # GNU General Public License can be found in the file COPYING. | |
| # --- SDE-COPYRIGHT-NOTE-END --- | |
|  | |
| # Common java configuration is needed as well. | |
| . $base/package/*/*/java-common-conf.in | |
|  | |
| # Defaults | |
| auto_detect=on | |
| build_type= | |
|  | |
| # Prevent executing normal make and install build steps. | |
| # Java packages have custom make and install. | |
| makeopt= | |
| makeinstopt= | |
|  | |
| # Set variables used for building java sources to there default values. | |
| #  builddocdir - Location where documentation can be found after building. | |
| #  buildjardir - Location where build results (jarfiles) can be found. | |
| #  buildtarget - target(Ant)/goal(Maven) to be used for building. | |
| #  buildfile   - buildfile containing the build rules. | |
| builddocdir=dist/docs | |
| buildjardir=dist | |
| buildtarget=dist | |
| buildfile= | |
|  | |
| # ------------------------------------------------------------------------- | |
| # | |
| # ------------------------------------------------------------------------- | |
| maven1_build() { | |
| 	echo_status "Java buildstyle: Maven (version 1)" | |
|  | |
| 	# Maven 2 needs to be installed to be able to use it. | |
| 	pkgprefix -t maven1 | |
|  | |
| 	# Invoke maven to start building. However, we strictly | |
| 	# forbid downloading dependancies from remote repositories. | |
| 	# All dependancies should be build locally and added to | |
| 	# the local repository. | |
| 	$root/$(pkgprefix bindir maven1)/maven \ | |
| 		-Dmaven.repo.remote.enabled=false \ | |
| 		$mavengoals --pom $1 | |
| } | |
|  | |
| # ------------------------------------------------------------------------- | |
| # | |
| # ------------------------------------------------------------------------- | |
| maven2_build() { | |
| 	echo_status "Java buildstyle: Maven (version 2)" | |
|  | |
| 	# Maven 2 needs to be installed to be able to use it. | |
| 	pkgprefix -t maven | |
|  | |
| 	abort "MAVEN2 building NOT yet implemented." | |
| } | |
|  | |
| # ------------------------------------------------------------------------- | |
| # ant_build: Starts the apache ant build tool. | |
| # | |
| # Besides starting the apache build tool. The results of building are | |
| # gathered and moved to right place. For this two things are considered. | |
| #   dist/docs	for documentation. | |
| #   dist/*.jar  for java jar files/libraries. | |
| # | |
| # IMPORTANT VARIABLES: | |
| #   builddocdir - Location where documentation will be. | |
| #   buildjardir - Location where build result will be. | |
| #   buildtarget - Ant target to be used for building. | |
| # ------------------------------------------------------------------------- | |
| ant_build() { | |
| 	echo_status "Java buildstyle: Apache Ant" | |
|  | |
| 	# Ant needs to be installed to be able to use it. | |
| 	pkgprefix -t apache-ant | |
|  | |
| 	# Invoke Ant to start building. | |
| 	$root/$(pkgprefix bindir apache-ant)/ant -buildfile $1 \ | |
| 		-lib $(pkgprefix libdir java-dirtree) \ | |
| 		$antopt $buildtarget | |
|  | |
| 	# Copy all created jar files to the package libdir. | |
| 	echo "Trying to copy package jar files." | |
| 	if ls $buildjardir/*.jar 2> /dev/null ; then | |
| 		cp -v $buildjardir/*.jar $root/$libdir | |
| 	else | |
| 		# Strange. No jar files available? | |
| 		echo "Package $pkg produces no jar files in $buildjardir/." | |
| 	fi | |
|  | |
| 	# Copy all documentation to the package docdir. | |
| 	echo "Trying to copy package documentaion." | |
| 	tempdir=$builddocdir | |
| 	if [ -d $tempdir ] ; then | |
| 		( cd $tempdir; tar -c * | tar -x -C $root/$docdir ) | |
| 	fi | |
| 	unset tempdir | |
| } | |
|  | |
| # ------------------------------------------------------------------------- | |
| # set_build_type: Sets the java build type. | |
| # | |
| # Sets the java build type to be used for building the current package. | |
| # ------------------------------------------------------------------------- | |
| set_build_type() { | |
| 	local builder_func= | |
|  | |
| 	# Build type can only be set once per package, check if it | |
| 	# has already been set. | |
| 	if [ -n "$build_type" ] ; then | |
| 		echo "Buildtype already set ($build_type), can't set it to '$1'" | |
| 		Abort "java-conf.in: Buildtype can only be set once." | |
| 	fi | |
| 	build_type="$1" | |
|  | |
| 	case "$build_type" in | |
| 		ANT)	builder_func="ant_build ${buildfile:-build.xml}" ;; | |
| 		MAVEN)  todo ;; | |
| 		SCRIPT) todo ;; | |
| 		*)	abort "java-conf.in: Unknown buildtype $1 specified." ;; | |
| 	esac | |
|  | |
| 	# Since the built type is set, auto detection is no longer needed. | |
| 	auto_detect=off | |
|  | |
| 	# Set the inmake hook to use the given builder type. | |
| 	hook_add inmake 5 "$builder_func" | |
| } | |
|  | |
| # Before we continue lets process all command line options. | |
| while [ "$1" ] ; do | |
| 	case "$1" in | |
| 		NO_AUTO_DETECT)		auto_detect=off ; | |
| 					echo_status "Java buildstyle: Autodetect disabled." ;; | |
| 		BUILD_TYPE=*)		set_build_type ${1#*=} ;; | |
| 		BUILD_FILE=*)		buildfile=${1#*=} ;; | |
| 		*)			abort "java-conf.in: Unknown arguments" ;; | |
| 	esac | |
| 	shift | |
| done | |
|  | |
| # Check if at least one of the jdk's is available right now. | |
| if [ -z $JAVA_HOME ]; then | |
| 	# No jdk available, continueing is pointless. | |
| 	abort "At least one of the JDK's need to be installed." | |
| fi | |
|  | |
| # This function determines the maven version to be used on | |
| # the given input file. | |
| # param: pom/project filename | |
| # return: the pom/project file major version number. | |
| detect_maven_version() { | |
| 	# Todo:  look inside the file to determine the version. | |
| 	echo "3" | |
| } | |
|  | |
| # We know how to build Ant, Maven and Maven 2 style projects. | |
| # build and build.sh scripts are ignored on purpose. By controlling | |
| # the build in here we might make it easier to build packages using | |
| # exotic compilers like gcj or jikes. | |
| determine_build_type() { | |
| 	local buildtype= | |
|  | |
| 	# Check if the Ant build.xml file is available. | |
| 	if [ -f build.xml ]; then | |
| 		# Package can be build using Ant. However this might be | |
| 		# overruled by any of the others. | |
| 		buildtype="ANT" | |
| 	fi | |
|  | |
| 	# Check if the Maven pom.xml or project.xml file is available. | |
| 	for mavenfile in pom.xml project.xml; do | |
| 		# Check if the maven file exists | |
| 		if [ -f $mavenfile ]; then | |
| 			# A maven file is available, but what maven | |
| 			# version should be used? The projectfile | |
| 			# version can tell us. | |
| 			pomversion=`detect_maven_version $mavenfile` | |
| 			case "$pomversion" in | |
| 				4*) builder_func="maven2_build $mavenfile" ;; | |
| 				# In all other cases we use maven 1. | |
| 				*) builder_func="maven1_build $mavenfile" ;; | |
| 			esac | |
| 		fi | |
| 	done | |
|  | |
| 	# Check if we have found an appropriate java builder. | |
| 	if [ -n "$buildtype" ]; then | |
| 		# Set the selected build type. | |
| 		set_build_type $buildtype | |
| 	else | |
| 		# Auto detection of the build style resulted into | |
| 		# nothing. So from here on it is up to the package | |
| 		# to decide how to continue building the package. | |
| 		echo_status "Java buildstyle: Unknown buildstyle" | |
| 	fi | |
| } | |
|  | |
| # Check if autodetection of the build process is required. | |
| if [ "$auto_detect" == "on" ] ; then | |
| 	# We use a postpatch hook to determine what kind of build process | |
| 	# is needed. When we know we set the inmake hook appropriately. | |
| 	hook_add postpatch 5 determine_build_type | |
| fi
 | |
| 
 |