Differences between revisions 30 and 31
Revision 30 as of 2015-03-16 16:57:58
Size: 7586
Editor: markt
Comment: Update tc-native version
Revision 31 as of 2015-03-19 15:55:37
Size: 7586
Editor: markt
Comment: Update openssl version to 1.0.1m
Deletions are marked like this. Additions are marked like this.
Line 72: Line 72:
Unpack the OpenSSL 1.0.1l source distribution in this directory ({{{C:\tomcat-native-1.1.x\native\srclib\openssl}}}). Unpack the OpenSSL 1.0.1m source distribution in this directory ({{{C:\tomcat-native-1.1.x\native\srclib\openssl}}}).
Line 103: Line 103:
mkdir \deps-x86\openssl-1.0.1l\include
mkdir \deps-x86\openssl-1.0.1l\lib
mkdir \deps-x86\openssl-1.0.1m\include
mkdir \deps-x86\openssl-1.0.1m\lib
Line 116: Line 116:
xcopy /E openssl\inc32 \deps-x86\openssl-1.0.1l\include\
xcopy /E openssl\inc32 \deps-x64\openssl-1.0.1l\include\
xcopy /E openssl\inc32 \deps-i64\openssl-1.0.1l\include\
xcopy /E openssl\inc32 \deps-x86\openssl-1.0.1m\include\
xcopy /E openssl\inc32 \deps-x64\openssl-1.0.1m\include\
xcopy /E openssl\inc32 \deps-i64\openssl-1.0.1m\include\
Line 120: Line 120:
copy openssl\out32-x86\*.lib \deps-x86\openssl-1.0.1l\lib\
copy openssl\out32-x64\*.lib \deps-x64\openssl-1.0.1l\lib\
copy openssl\out32-i64\*.lib \deps-i64\openssl-1.0.1l\lib\
copy openssl\out32-x86\*.lib \deps-x86\openssl-1.0.1m\lib\
copy openssl\out32-x64\*.lib \deps-x64\openssl-1.0.1m\lib\
copy openssl\out32-i64\*.lib \deps-i64\openssl-1.0.1m\lib\
Line 128: Line 128:
nmake -f NMAKEMakefile WITH_APR=C:\deps-x86\apr-1.5.1 WITH_OPENSSL=C:\deps-x86\openssl-1.0.1l APR_DECLARE_STATIC=1 ENABLE_OCSP=1 nmake -f NMAKEMakefile WITH_APR=C:\deps-x86\apr-1.5.1 WITH_OPENSSL=C:\deps-x86\openssl-1.0.1m APR_DECLARE_STATIC=1 ENABLE_OCSP=1
Line 130: Line 130:
nmake -f NMAKEMakefile WITH_APR=C:\deps-x86\apr-1.5.1 WITH_OPENSSL=C:\deps-x86\openssl-1.0.1l APR_DECLARE_STATIC=1 nmake -f NMAKEMakefile WITH_APR=C:\deps-x86\apr-1.5.1 WITH_OPENSSL=C:\deps-x86\openssl-1.0.1m APR_DECLARE_STATIC=1
Line 133: Line 133:
nmake -f NMAKEMakefile WITH_APR=C:\deps-x64\apr-1.5.1 WITH_OPENSSL=C:\deps-x64\openssl-1.0.1l APR_DECLARE_STATIC=1 ENABLE_OCSP=1 nmake -f NMAKEMakefile WITH_APR=C:\deps-x64\apr-1.5.1 WITH_OPENSSL=C:\deps-x64\openssl-1.0.1m APR_DECLARE_STATIC=1 ENABLE_OCSP=1
Line 135: Line 135:
nmake -f NMAKEMakefile WITH_APR=C:\deps-x64\apr-1.5.1 WITH_OPENSSL=C:\deps-x64\openssl-1.0.1l APR_DECLARE_STATIC=1 nmake -f NMAKEMakefile WITH_APR=C:\deps-x64\apr-1.5.1 WITH_OPENSSL=C:\deps-x64\openssl-1.0.1m APR_DECLARE_STATIC=1
Line 138: Line 138:
nmake -f NMAKEMakefile WITH_APR=C:\deps-i64\apr-1.5.1 WITH_OPENSSL=C:\deps-i64\openssl-1.0.1l APR_DECLARE_STATIC=1 ENABLE_OCSP=1 nmake -f NMAKEMakefile WITH_APR=C:\deps-i64\apr-1.5.1 WITH_OPENSSL=C:\deps-i64\openssl-1.0.1m APR_DECLARE_STATIC=1 ENABLE_OCSP=1
Line 140: Line 140:
nmake -f NMAKEMakefile WITH_APR=C:\deps-i64\apr-1.5.1 WITH_OPENSSL=C:\deps-i64\openssl-1.0.1l APR_DECLARE_STATIC=1 nmake -f NMAKEMakefile WITH_APR=C:\deps-i64\apr-1.5.1 WITH_OPENSSL=C:\deps-i64\openssl-1.0.1m APR_DECLARE_STATIC=1

Building the Tomcat Native Connector binaries for Windows

This page describes the process for building the Windows Native Connector for Windows. This is the native part of the APR/Native connector.

The instructions on this page reference specific versions of numerous tools and dependencies. The versions referenced on this page are known to work. Other versions may work. Where information is available on the suitability (or otherwise) of alternative versions it is provided. All installations use default settings unless explicitly noted otherwise. Non-default settings in italics are provided for completeness but are believed not to impact on the success of the build process. Non-default settings in standard type may, or may not, impact the success of the build process.

Hardware

Known working configurations include:

  1. VMware virtual machine
    • 60GB HDD

    • 2 processors

    • 2GB RAM

    • No USB

    • No sound

    • Bridged networking

  2. Others TBD

Operating System

Known working configurations include:

  1. Windows 7
    • Static IP address

    • 1600x1200 screen resolution

    • UTC timezone

    • Install VMware Tools
    • Apply all updates

  2. Others TBD

Build tools

  1. Mladen's Custom Microsoft Compiler Toolkit Compilation
    • Git for windows (http://git-scm.com/) 1.9.4-20140611

    • https://github.com/mturk/cmsc (cb6be932c8c95a46262a64a89e68aae620dfdcee)

      • Windows SDK
        • No documentation
        • No samples
        • Complete set of developer tools
      • Windows DDK
        • Build environments
        • Tools
      • Compile as per <cmsc-root>/tools/README.txt

      • Install Perl as per <cmsc-root>/tools/README.txt

    • TortoiseSVN (http://tortoisesvn.net/) 1.8.7 64-bit

    • 7-Zip 9.20 64-bit
    • JDK 1.7.0_71 64-bit
  2. Others TBD

Building

While tcnative itself needs to be built last, we unpack it first because there are some patches in the tcnative source distribution that will need to be applied to both APR and OpenSSL.

c:
cd \
svn co https://svn.apache.org/repos/asf/tomcat/native/branches/1.1.x/ tomcat-native-1.1.x
cd tomcat-native-1.1.x\native\srclib\apr

Unpack APR 1.5.1 source distribution in this directory (C:\tomcat-native-1.1.x\native\srclib\apr).

Apply the apr-enable-ipv6.patch. Note that the patch will apply but depending on exactly which revision you are working with an offset may be required of ~6 lines.

c:\cmsc\setenv.bat /x86
nmake -f NMAKEMakefile BUILD_CPU=x86 APR_DECLARE_STATIC=1

c:\cmsc\setenv.bat /x64
nmake -f NMAKEMakefile BUILD_CPU=x64 APR_DECLARE_STATIC=1

c:\cmsc\setenv.bat /i64
nmake -f NMAKEMakefile BUILD_CPU=i64 APR_DECLARE_STATIC=1

cd ..\openssl

Unpack the OpenSSL 1.0.1m source distribution in this directory (C:\tomcat-native-1.1.x\native\srclib\openssl).

Apply openssl-msvcrt.patch

c:\cmsc\setenv.bat /x86
perl Configure VC-WIN32
ms\do_nasm
nmake -f ms\nt.mak
move out32 out32-x86

c:\cmsc\setenv.bat /x64
perl Configure VC-WIN64A
ms\do_win64a
nmake -f ms\nt.mak clean
nmake -f ms\nt.mak
move out32 out32-x64

c:\cmsc\setenv.bat /i64
perl Configure VC-WIN64I
ms\do_win64i
nmake -f ms\nt.mak clean
nmake -f ms\nt.mak
move out32 out32-i64

Keeping the various libraries in versioned directories saves having to rebuild them next time if the version remains unchanged.

cd ..

mkdir \deps-x86\apr-1.5.1\include
mkdir \deps-x86\apr-1.5.1\lib
mkdir \deps-x86\openssl-1.0.1m\include
mkdir \deps-x86\openssl-1.0.1m\lib
xcopy /E \deps-x86 \deps-x64\
xcopy /E \deps-x86 \deps-i64\

xcopy /E apr\include \deps-x86\apr-1.5.1\include\
xcopy /E apr\include \deps-x64\apr-1.5.1\include\
xcopy /E apr\include \deps-i64\apr-1.5.1\include\

copy apr\WINXP_X86_LIB_RELEASE\apr-1.lib \deps-x86\apr-1.5.1\lib
copy apr\WINXP_X64_LIB_RELEASE\apr-1.lib \deps-x64\apr-1.5.1\lib
copy apr\WINXP_I64_LIB_RELEASE\apr-1.lib \deps-i64\apr-1.5.1\lib

xcopy /E openssl\inc32 \deps-x86\openssl-1.0.1m\include\
xcopy /E openssl\inc32 \deps-x64\openssl-1.0.1m\include\
xcopy /E openssl\inc32 \deps-i64\openssl-1.0.1m\include\

copy openssl\out32-x86\*.lib \deps-x86\openssl-1.0.1m\lib\
copy openssl\out32-x64\*.lib \deps-x64\openssl-1.0.1m\lib\
copy openssl\out32-i64\*.lib \deps-i64\openssl-1.0.1m\lib\

cd ..
SET JAVA_HOME=C:\Program Files\Java\jdk1.7.0_71

c:\cmsc\setenv.bat /x86
nmake -f NMAKEMakefile WITH_APR=C:\deps-x86\apr-1.5.1 WITH_OPENSSL=C:\deps-x86\openssl-1.0.1m APR_DECLARE_STATIC=1 ENABLE_OCSP=1
move WINXP_X86_DLL_RELEASE WINXP_X86_OCSP_DLL_RELEASE
nmake -f NMAKEMakefile WITH_APR=C:\deps-x86\apr-1.5.1 WITH_OPENSSL=C:\deps-x86\openssl-1.0.1m APR_DECLARE_STATIC=1

c:\cmsc\setenv.bat /x64
nmake -f NMAKEMakefile WITH_APR=C:\deps-x64\apr-1.5.1 WITH_OPENSSL=C:\deps-x64\openssl-1.0.1m APR_DECLARE_STATIC=1 ENABLE_OCSP=1
move WINXP_X64_DLL_RELEASE WINXP_X64_OCSP_DLL_RELEASE
nmake -f NMAKEMakefile WITH_APR=C:\deps-x64\apr-1.5.1 WITH_OPENSSL=C:\deps-x64\openssl-1.0.1m APR_DECLARE_STATIC=1

c:\cmsc\setenv.bat /i64
nmake -f NMAKEMakefile WITH_APR=C:\deps-i64\apr-1.5.1 WITH_OPENSSL=C:\deps-i64\openssl-1.0.1m APR_DECLARE_STATIC=1 ENABLE_OCSP=1
move WINXP_I64_DLL_RELEASE WINXP_I64_OCSP_DLL_RELEASE
nmake -f NMAKEMakefile WITH_APR=C:\deps-i64\apr-1.5.1 WITH_OPENSSL=C:\deps-i64\openssl-1.0.1m APR_DECLARE_STATIC=1

Tomcat Native Connector DLLs may then be found in C:\tomcat-native-1.1.x\native\WINXP_*_[OCSP_]DLL_RELEASE

Construct the binary distributions

set VER=1.1.33
mkdir tomcat-native-%VER%-win32-bin
copy ..\LICENSE tomcat-native-%VER%-win32-bin\
copy ..\NOTICE tomcat-native-%VER%-win32-bin\
copy ..\README.txt tomcat-native-%VER%-win32-bin\
copy srclib\VERSIONS tomcat-native-%VER%-win32-bin\
mkdir tomcat-native-%VER%-win32-bin\bin
mkdir tomcat-native-%VER%-win32-bin\bin\i64
mkdir tomcat-native-%VER%-win32-bin\bin\x64
copy srclib\openssl\out32-x86\openssl.exe tomcat-native-%VER%-win32-bin\bin
xcopy /E tomcat-native-%VER%-win32-bin tomcat-native-%VER%-ocsp-win32-bin\
copy WINXP_X86_DLL_RELEASE\tcnative-1.dll tomcat-native-%VER%-win32-bin\bin
copy WINXP_X86_OCSP_DLL_RELEASE\tcnative-1.dll tomcat-native-%VER%-ocsp-win32-bin\bin
copy WINXP_X86_DLL_RELEASE\tcnative-1-src.pdb tomcat-native-%VER%-win32-bin\bin
copy WINXP_X86_OCSP_DLL_RELEASE\tcnative-1-src.pdb tomcat-native-%VER%-ocsp-win32-bin\bin
copy WINXP_I64_DLL_RELEASE\tcnative-1.dll tomcat-native-%VER%-win32-bin\bin\i64
copy WINXP_I64_OCSP_DLL_RELEASE\tcnative-1.dll tomcat-native-%VER%-ocsp-win32-bin\bin\i64
copy WINXP_X64_DLL_RELEASE\tcnative-1.dll tomcat-native-%VER%-win32-bin\bin\x64
copy WINXP_X64_OCSP_DLL_RELEASE\tcnative-1.dll tomcat-native-%VER%-ocsp-win32-bin\bin\x64

set PATH=%PATH%;%JAVA_HOME%\bin
cd tomcat-native-%VER%-win32-bin
jar -cMf ..\tomcat-native-%VER%-win32-bin.zip *
cd ..\tomcat-native-%VER%-ocsp-win32-bin
jar -cMf ..\tomcat-native-%VER%-ocsp-win32-bin.zip *

The Windows binary distributions may then be found in C:\tomcat-native-1.1.x\native\

These need to be signed and hashed before uploading for the release vote.

Beware of typos in the name and contents of hash files for OCSP binaries ("ocsp" vs "oscp"). Such typos happened.

A correct example:

tomcat-native-1.1.32-ocsp-win32-bin.zip.md5

0b0e1e4c77b9b7051fc2c751b70d2880 *tomcat-native-1.1.32-ocsp-win32-bin.zip

tomcat-native-1.1.32-ocsp-win32-bin.zip.sha1

b47f96dd3153d002a529e881b6b8f524cd6e321c *tomcat-native-1.1.32-ocsp-win32-bin.zip

BuildTcNativeWin (last edited 2015-03-19 15:55:37 by markt)