blob: 1925fb7dfa74885104a2449563b981a635782d72 [file] [log] [blame]
***************************************************************************
*
* README.build.win32
*
* Author: Alex Burger <alex_b@users.sourceforge.net>
*
*
***************************************************************************
Introduction
============
This README outlines the steps required to create a binary release for
Windows using Microsoft Visual Studio and the NullSoft installer.
There are four sections:
Compiling binaries
Compiling HTMLHelp file
Combining the binaries and HTMLHelp files
Bulding a NullSoft installer package
Compiling binaries
==================
Requirements
------------
32-bit binary:
-Windows XP 32-bit SP2 or higher
-Microsoft Visual Studio 2008 SP1 with Platform SDK and latest updates from Microsoft
including updates to the redistributable components
-ActivePerl 5.10
-MSYS / MinGW -or- tar.exe and gzip.exe
-win32/dist folder from MAIN in CVS
-OpenSSL binary and library files from http://www.slproweb.com/products/Win32OpenSSL.html
64-bit binary:
-Windows 7 64-bit
-Microsoft Visual Studio 2008 SP1 with Platform SDK and latest updates from Microsoft
including updates to the redistributable components. Also need are the 64-bit compiler options.
-ActivePerl 5.10 (64-bit)
-MSYS / MinGW -or- tar.exe and gzip.exe
-win32/dist folder from MAIN in CVS
-OpenSSL 64-bit binary and library files from http://www.slproweb.com/products/Win32OpenSSL.html
Building the main binaries
--------------------------
Note: All shell steps are using the Window CMD prompt unless otherwise stated.
Part 1
------
1. Install pre-requisites:
MSVC 2008:
Include the Platform SDK and for 64-bit, make sure the 64-bit compiler is installed
(not included by default).
Latest updates from Microsoft to ensure the redistributable DLLs have the latest
security fixes.
ActivePerl:
For 64-bit, make sure you install the 64-bit version otherwise compiling will fail.
MSYS / MinGW:
Needed for tar command in build-binary.bat/pl.
OpenSSL:
Install the OpenSSL binary, header and library files as explained in
'Using a pre-compiled version' of the 'Microsoft Visual C++ - Building with
OpenSSL' section of README.win32. For 64-bit, make sure you install the 64-bit
version otherwise compiling will fail.
2. Extract source. The location will be referenced as (source dir)
3. Delete c:\usr if it exists.
4. Apply any required patches
5. cd (source dir)\win32\dist
6. Run build-binary.bat.
If c:\usr already exists, it will stop with an error.
If %windir%\system32\netsnmp.dll exists, it will ask if it can be deleted. Answer yes.
7. At a high level, the following will be completed:
a) Get package version from Unix configure script for use in the Perl module and NSIS
installer package.
b) Build the applications and Perl modules with OpenSSL enabled and winExtDLL disabled
c) Build the applications and Perl modules with OpenSSL enabled and winExtDLL enabled
d) Build the applications and Perl modules with OpenSSL disabled and winExtDLL disabled
e) Build the applications and Perl modules with OpenSSL disabled and winExtDLL enabled
f) Copy distribution files (readme, batch files etc)
g) Copy NSIS installer script and update the version stamp
8. Copy the following to c:\usr\bin:
64-bit:
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\amd64\Microsoft.VC90.CRT\*.*
32-bit:
C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*
Note: Copy the files directly to the folder. If you copy the folder, the binaries won't
run on Windows 2000.
9. Verify that the binaries created are linked to the correct MSVC 2008 redistribution that was
copied in the previous step.
Right-click msvcr90.dll, properties, Details. Check the product version.
Example: 9.00.30729.4148
cd \usr\bin
mt.exe -inputresource:snmpget.exe;#1 -out:extracted.manifest
type extracted.manifest
Example:
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1"
10. Update the BUILD INFORMATION section of c:\usr\README.txt
Compiling HTMLHelp file
=======================
This section outlines the steps required to build a Windows HTML Help file
based on the Net-SNMP man pages, README files, Perldoc documentation etc.
Requirements
------------
-Linux (or similar) with:
-man (man page viewer)
-tidy (HTML tidy - http://tidy.sourceforge.net)
-Perl
-perldoc
-man2html3.0.1.tar.gz (http://search.cpan.org/~ehood/man2html3.0.1/)
Note: Most Linux distributions come with man2html as part of the man rpm
package which is not the same as man2html from man2html3.0.1.tar.gz.
All that is needed from man2html3.0.1.tar.gz is the man2html script.
You do not need to do a complete install (make/make install) but you
do need to make sure the script is configured correctly by setting the
man command line switches etc for the OS from inside of the script.
-Windows with:
-HTML Help Workshop (Search msdn.microsoft.com for 'html help workshop download')
Convert documents to html
-------------------------
Note: The following steps are completed using Linux.
Note: A temporary location of /tmp/net-snmp is used.
1. Extract Net-SNMP source and cd (source dir)
2. cd (source dir)
3. cp perl/SNMP/README README.perl
4. Remove older copies of converted files:
rm -R -f /tmp/net-snmp
5. Build Net-SNMP man pages:
./configure --prefix=c:/usr; make sedscript; cd man;make; cd ..
6. Install only the man files to /temp/net-snmp:
cd man; make install prefix=/tmp/net-snmp; cd ..
7. Go to the scripts folder and make sure all the scripts are executable:
cd (source dir)
cd win32/dist/scripts; chmod +x *
8. Edit these files and make sure the paths are correct in the OPTIONS
section. Also ensure the list of README files and Perl modules
are correct in readme2html and poddir2html.
mandir2html
readme2html
poddir2html
Note: mandir2html will process ALL man pages in c:\temp\net-snmp while
readme2html and poddir2html will only process files listed in the
script. If new man pages are added or removed, the Table of
Contents (toc.hhc) and project file (Net-SNMP.hhp) need to be
updated by hand.
9. Run each script to generate the .html files:
./mandir2html; ./readme2html; ./poddir2html
Note: There will be many warnings from tidy which can be ignored.
10. Verify each converted file to ensure all the links are correct. The files
are located in /tmp/net-snmp/html by default. In some instances, URLs may be
split across two lines such as the Variables link at the bottom of
/tmp/net-snmp/html/man8-snmptrapd.8.html.
11. If new man pages are added or removed, the Table of Contents (Net-SNMP.hhc) and
project file (Net-SNMP.hhp) need to be updated by hand.
12. Convert EXAMPLE.conf.win32 to html:
./txt2html ../../EXAMPLE.conf.win32 | tidy > /tmp/net-snmp/html/EXAMPLE.conf.win32.html
Build Net-SNMP.chm
------------------
Note: The following steps are completed using Windows.
Note: A temporary location of c:\temp\net-snmp is used.
1. Transfer /tmp/net-snmp/html from Linux to c:\temp\net-snmp\html
2. Grab the FAQ from the web site, strip out the includes and save as
c:\temp\net-snmp\html\FAQ.html and run:
tidy -asxhtml -m c:\temp\net-snmp\html\FAQ.html
3. Grab the Devloper FAQ from the web site, strip out the includes and save as
c:\temp\net-snmp\html\Developer_FAQ.html and run:
tidy -asxhtml -m c:\temp\net-snmp\html\Developer_FAQ.html
4. Copy the following files to c:\temp\net-snmp\html:
cd (source dir)
copy "win32\dist\htmlhelp\Configuration_Overview.html" c:\temp\net-snmp\html\
copy "win32\dist\htmlhelp\Help_Caveats.html" c:\temp\net-snmp\html\
copy "win32\dist\htmlhelp\Introduction.html" c:\temp\net-snmp\html\
copy "win32\dist\htmlhelp\Net-SNMP.hhc" c:\temp\net-snmp\html\
copy "win32\dist\htmlhelp\Net-SNMP.hhp" c:\temp\net-snmp\html\
copy "win32\dist\htmlhelp\net-snmp-4.2-800.jpg" c:\temp\net-snmp\html\
copy "win32\dist\htmlhelp\snmp.conf.win32.html" c:\temp\net-snmp\html\
copy "win32\dist\htmlhelp\snmpd.conf.win32.html" c:\temp\net-snmp\html\
copy "win32\dist\htmlhelp\snmptrapd.conf.win32.html" c:\temp\net-snmp\html\
5. New configuration options may be available in the new release of
Net-SNMP, so the *.conf.win32.html files should be updated.
Create a text file with all the configuration options for snmpd and
snmptrapd using:
cd win32\bin\release (folder of *Windows* compiled Net-SNMP)
snmptrapd -H 2> c:\temp\net-snmp\html\snmptrapd.options
snmpd -H 2> c:\temp\net-snmp\html\snmpd.options
Update these files using an HTML editor (Nvu etc):
c:\temp\net-snmp\html\snmp.conf.win32.html
c:\temp\net-snmp\html\snmpd.conf.win32.html
c:\temp\net-snmp\html\snmptrapd.conf.win32.html
Only add the relevent section to each file from the .options files
created above, ensure the font is set to fixed width.
Tidy each file using tidy under Windows (or transfer to Linux and tidy
using Linux):
tidy -asxhtml -m c:\temp\net-snmp\html\snmptrapd.conf.win32.html
tidy -asxhtml -m c:\temp\net-snmp\html\snmpd.conf.win32.html
tidy -asxhtml -m c:\temp\net-snmp\html\snmp.conf.win32.html
6. Edit c:\temp\net-snmp\html\Net-SNMP.hhp and update the version for the
'Title' variable.
7. Run HTML Workshop
8. Open c:\temp\net-snmp\html\Net-SNMP.hhp
9. Click File - Compile
10. Select 'C:\temp\net-snmp\html\Net-SNMP.hhp' as the filename
11. Click Compile
12. You should now have a c:\temp\net-snmp\html\Net-SNMP.chm file.
13. Launch the file and ensure every content item displays the correct page.
Combining the binaries and HTMLHelp files
=========================================
1. Copy the HTML Help file to c:\usr\docs:
copy c:\temp\Net-SNMP\html\Net-SNMP.chm c:\usr\docs\
Bulding a NullSoft installer package
====================================
Requirements
------------
-Windows
-Nullsoft Scriptable Install System 2.0 - http://nsis.sourceforge.net/home/
1. Complete the sections above.
2. Launch the 'Nullsoft Install System (NSIS 2.0)'
3. Select 'MakeNSISW (compiler interface)'
4. Click File - Load Script
5. Select c:\usr\net-snmp.nsi
6. You should now have a c:\usr\Net-SNMP-x.x.x-x.exe binary installer
package
7. Test the package:
Perform the basic tests below on the following platforms:
32-bit package:
Windows 2000
Windows XP 32-bit
64-bit package:
Windows 7 64-bit
Tests:
a) Installation with WinExtDLL and SSL
b) Configure snmpd to allow a query
c) Install snmpd and snmptrapd services
d) Stop the Microsoft SNMP service and start both Net-SNMP services
e) snmpwalk -v 1 -c public localhost system
f) Install Perl modules
g) Launch net-snmp-perl-test.pl
8. Compare the directory contents of the compiled folder with the installed
folder to ensure there are no missing MIB files etc. If there are missing
files, modify net-snmp.nsi and rebuild if required and update net-snmp.nsi
etc in SVN.
9. Create a .zip file of c:\usr for archive purposes.