Updated Branches: refs/heads/trunk 00d09b7b2 -> c4b0eac2d
SQOOP-949: Allow Sqoop to build on Windows OS (Ahmed El Baz via Jarek Jarcec Cecho) Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/c4b0eac2 Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/c4b0eac2 Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/c4b0eac2 Branch: refs/heads/trunk Commit: c4b0eac2d0bd954d1c6cae2db158124908fbf055 Parents: 00d09b7 Author: Jarek Jarcec Cecho <[email protected]> Authored: Sat Apr 13 11:26:28 2013 -0700 Committer: Jarek Jarcec Cecho <[email protected]> Committed: Sat Apr 13 11:26:28 2013 -0700 ---------------------------------------------------------------------- build.xml | 90 ++++++++++++++++++++------- src/scripts/create-tool-scripts.cmd | 57 +++++++++++++++++ src/scripts/tool-script.cmd.template | 26 ++++++++ src/scripts/write-version-info.cmd | 96 +++++++++++++++++++++++++++++ 4 files changed, 247 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sqoop/blob/c4b0eac2/build.xml ---------------------------------------------------------------------- diff --git a/build.xml b/build.xml index 8ac3872..e356ba6 100644 --- a/build.xml +++ b/build.xml @@ -258,6 +258,17 @@ <property name="java.security.krb5.kdc" value="kdc0.ox.ac.uk:kdc1.ox.ac.uk"/> + <condition property="windows"> + <os family="windows" /> + </condition> + + <condition property="skip-real-docs"> + <or> + <isset property="docs.uptodate" /> + <os family="windows" /> + </or> + </condition> + <if> <isset property="sqoop.test.msserver.connector.factory"/> <then> @@ -326,12 +337,25 @@ <!-- generate the version information class. --> <target name="gen-version" depends="init"> - <exec executable="${script.src.dir}/write-version-info.sh" - dir="${basedir}" failonerror="true"> - <arg value="${build.dir}" /> - <arg value="${version}" /> - <arg value="${git.hash}" /> - </exec> + <if> + <equals arg1="${windows}" arg2="true" /> + <then> + <exec executable="${script.src.dir}/write-version-info.cmd" + dir="${basedir}" failonerror="true"> + <arg value="${build.dir}" /> + <arg value="${version}" /> + <arg value="${git.hash}" /> + </exec> + </then> + <else> + <exec executable="${script.src.dir}/write-version-info.sh" + dir="${basedir}" failonerror="true"> + <arg value="${build.dir}" /> + <arg value="${version}" /> + <arg value="${git.hash}" /> + </exec> + </else> + </if> </target> <!-- Compile core classes for the project --> @@ -421,21 +445,43 @@ the wrapper scripts to invoke each of these. --> <mkdir dir="${build.bin.dir}" /> - <java classname="com.cloudera.sqoop.Sqoop" - fork="true" - failonerror="true" - output="${build.dir}/tools-list" - error="/dev/null"> - <jvmarg value="-Dhadoop.security.log.file=./build/security-audit.log" /> - <arg value="help" /> - <classpath refid="compile.classpath"/> - </java> - <exec executable="${script.src.dir}/create-tool-scripts.sh" - dir="${basedir}" failonerror="true"> - <arg value="${build.bin.dir}" /> - <arg value="${script.src.dir}/tool-script.sh.template" /> - <arg value="${build.dir}/tools-list" /> - </exec> + <if> + <equals arg1="${windows}" arg2="true" /> + <then> + <java classname="com.cloudera.sqoop.Sqoop" + fork="true" + failonerror="true" + output="${build.dir}/tools-list" + error="NUL"> + <jvmarg value="-Dhadoop.security.log.file=./build/security-audit.log" /> + <arg value="help" /> + <classpath refid="compile.classpath"/> + </java> + <exec executable="${script.src.dir}/create-tool-scripts.cmd" + dir="${basedir}" failonerror="true"> + <arg value="${build.bin.dir}" /> + <arg value="${script.src.dir}/tool-script.cmd.template" /> + <arg value="${build.dir}/tools-list" /> + </exec> + </then> + <else> + <java classname="com.cloudera.sqoop.Sqoop" + fork="true" + failonerror="true" + output="${build.dir}/tools-list" + error="/dev/null"> + <jvmarg value="-Dhadoop.security.log.file=./build/security-audit.log" /> + <arg value="help" /> + <classpath refid="compile.classpath"/> + </java> + <exec executable="${script.src.dir}/create-tool-scripts.sh" + dir="${basedir}" failonerror="true"> + <arg value="${build.bin.dir}" /> + <arg value="${script.src.dir}/tool-script.sh.template" /> + <arg value="${build.dir}/tools-list" /> + </exec> + </else> + </if> </target> <target name="package" @@ -935,7 +981,7 @@ <target name="docs" depends="real-docs,relnotes,javadoc" description="Build documentation"/> - <target name="real-docs" depends="docs-uptodate,init" unless="docs.uptodate"> + <target name="real-docs" depends="docs-uptodate,init" unless="skip-real-docs"> <exec executable="make" failonerror="true"> <arg value="-C" /> <arg value="${basedir}/src/docs" /> http://git-wip-us.apache.org/repos/asf/sqoop/blob/c4b0eac2/src/scripts/create-tool-scripts.cmd ---------------------------------------------------------------------- diff --git a/src/scripts/create-tool-scripts.cmd b/src/scripts/create-tool-scripts.cmd new file mode 100644 index 0000000..0ba79a1 --- /dev/null +++ b/src/scripts/create-tool-scripts.cmd @@ -0,0 +1,57 @@ +@echo off +rem +rem Copyright 2011 The Apache Software Foundation +rem +rem Licensed to the Apache Software Foundation (ASF) under one +rem or more contributor license agreements. See the NOTICE file +rem distributed with this work for additional information +rem regarding copyright ownership. The ASF licenses this file +rem to you under the Apache License, Version 2.0 (the +rem "License"); you may not use this file except in compliance +rem with the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. + +setlocal EnableDelayedExpansion + +set outdir=%1 +set template=%2 +set toollistfile=%3 + +rem Count the number of lines in the toollist file +set lineCount=0 +FOR /F "tokens=*" %%A in (%toollistfile%) do ( + set /A lineCount=!lineCount! + 1 +) +set /A lastCommand=%lineCount% - 1 + +rem Create a tool-script for each tool +set currentLine=0 +FOR /F "tokens=*" %%A in (%toollistfile%) do ( + call :parseCommand SUBCOMMANDMARKER %%A +) + +rem For each line in the template file, replace token [1], with token [2] +rem and write the updated script as the target tool script +:parseCommand +if %currentLine% GTR 1 if %currentLine% LSS %lastCommand% ( + rem Get the script name for the current tool + set toolScriptTarget=%outdir%\sqoop-%2.cmd + + rem Replace the source token with target token, and write the result to + rem target script + for /f "tokens=*" %%i in (%template%) do ( + set line=%%i + echo !line:%1=%2!>> !toolScriptTarget! + ) +) +set /A currentLine=%currentLine%+1 +goto :eof + +endlocal \ No newline at end of file http://git-wip-us.apache.org/repos/asf/sqoop/blob/c4b0eac2/src/scripts/tool-script.cmd.template ---------------------------------------------------------------------- diff --git a/src/scripts/tool-script.cmd.template b/src/scripts/tool-script.cmd.template new file mode 100644 index 0000000..16ea73d --- /dev/null +++ b/src/scripts/tool-script.cmd.template @@ -0,0 +1,26 @@ +@echo off +:: Licensed to the Apache Software Foundation (ASF) under one or more +:: contributor license agreements. See the NOTICE file distributed with +:: this work for additional information regarding copyright ownership. +:: The ASF licenses this file to You 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. + +setlocal + +set prgm=%~f0 +set bin=%~dp0 +if "%bin:~-1%" == "\" ( + set bin=%bin:~0,-1% +) + +call "%bin%\sqoop.cmd" SUBCOMMANDMARKER %* http://git-wip-us.apache.org/repos/asf/sqoop/blob/c4b0eac2/src/scripts/write-version-info.cmd ---------------------------------------------------------------------- diff --git a/src/scripts/write-version-info.cmd b/src/scripts/write-version-info.cmd new file mode 100644 index 0000000..247f5f3 --- /dev/null +++ b/src/scripts/write-version-info.cmd @@ -0,0 +1,96 @@ +@echo off +rem +rem Copyright 2011 The Apache Software Foundation +rem +rem Licensed to the Apache Software Foundation (ASF) under one +rem or more contributor license agreements. See the NOTICE file +rem distributed with this work for additional information +rem regarding copyright ownership. The ASF licenses this file +rem to you under the Apache License, Version 2.0 (the +rem "License"); you may not use this file except in compliance +rem with the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. +rem +rem Arguments are: +rem path to the root of the build directory +rem the version number +rem the git hash of the current checkout. If empty, auto-detect. +rem +rem e.g., $ write-version-info.cmd ./build/ 1.0.0 + +set buildroot=%1 +set version=%2 +set specifiedgithash=%3 + +set outputdir=%buildroot%\src\com\cloudera\sqoop +set outputfile=%outputdir%\SqoopVersion.java + +set newoutputdir=%buildroot%\src\org\apache\sqoop +set newoutputfile=%newoutputdir%\SqoopVersion.java + +set signature=%specifiedgithash% +if "%signature%"=="" ( + FOR /F "tokens=*" %%X IN ( + '"git log -1 --pretty=format:%%H"' + ) DO SET signature=%%X +) + +set host=%COMPUTERNAME% +set compiledate=%date%-%time% + +mkdir %outputdir% + +( + echo.// generated by src/scripts/write-version-info.cmd + echo.package com.cloudera.sqoop; + echo. + echo./** + echo. * @deprecated use org.apache.sqoop.SqoopVersion instead + echo. * @see org.apache.sqoop.SqoopVersion + echo. */ + echo.public final class SqoopVersion extends org.apache.sqoop.SqoopVersion { + echo. public SqoopVersion^(^) { + echo. super^(^); + echo. } + echo. public static final String VERSION = + echo. org.apache.sqoop.SqoopVersion.VERSION; + echo. public static final String GIT_HASH = + echo. org.apache.sqoop.SqoopVersion.GIT_HASH; + echo. public static final String COMPILE_USER = + echo. org.apache.sqoop.SqoopVersion.COMPILE_USER; + echo. public static final String COMPILE_DATE = + echo. org.apache.sqoop.SqoopVersion.COMPILE_DATE; + echo.} +) > %outputfile% + +mkdir %newoutputdir% + +( + echo.// generated by src/scripts/write-version-info.cmd + echo.package org.apache.sqoop; + echo. + echo.public class SqoopVersion { + echo. public SqoopVersion^(^) { + echo. } + echo. + echo. public static final String VERSION="%version%"; + echo. public static final String GIT_HASH="%signature%"; + echo. public static final String COMPILE_USER="%USER%"; + echo. public static final String COMPILE_DATE="%compiledate%"; + echo. + echo. @Override + echo. public String toString^(^) { + echo. return "Sqoop " + VERSION + "\n" + echo. + "git commit id " + GIT_HASH + "\n" + echo. + "Compiled by " + COMPILE_USER + echo. + " on " + COMPILE_DATE + "\n"; + echo. } + echo.} +) > %newoutputfile%
