blob: ab5439c63d1acf3cd6f3af2aaa6b86da02b19ddc [file] [log] [blame]
***************************************************************************
*
* README.build.win32
*
* Authors: 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
Bulding an OpenSSL version
Compiling binaries
==================
Requirements
------------
-Windows NT/2000/XP
-MSVC++ 6.0 SP5
-ActivePerl 5.8.2 build 808
-gnu_regex.exe (0.12) - http://people.delphiforums.com/gjc/gnu_regex.html
-Platform SDK
-MSYS / MinGW -or- tar.exe and gzip.exe
-win32/dist folder from MAIN in CVS
Building the main binaries
--------------------------
Note: All shell steps are using the Window CMD prompt unless otherwise stated.
Part 1
------
1. Extract source. The location will be referenced as (source dir)
2. Delete c:\usr if it exists and rename Net-SNMP.dll in your %windir% if you
have it already (to ensure Perl tests are using the compiled DLL)
3. Apply any required patches
4. Remove the example MIB files:
Edit win32\net-snmp\agent\mib_module_config.h and change the following lines:
#define USING_EXAMPLES_UCDDEMOPUBLIC_MODULE 1
#define USING_EXAMPLES_EXAMPLE_MODULE 1
to:
#undef USING_EXAMPLES_UCDDEMOPUBLIC_MODULE
#undef USING_EXAMPLES_EXAMPLE_MODULE
5. cd (source dir)\win32
6. Run build.bat
7. Set to the following:
Net-SNMP build and install options
==================================
1. OpenSSL support: disabled
2. Platform SDK support: enabled ***
3. Install path: c:/usr
4. Install after build: enabled
5. Perl modules: enabled ***
6. Install perl modules: disabled
7. Quiet build (logged): enabled
8. Debug mode: disabled
9. IPv6 transports: disabled
10. winExtDLL agent (requires SDK): disabled
11. Link type: dynamic ***
12. Install development files enabled ***
F. Finished - start build
Q. Quit - abort build
Select option to set / toggle:
8. F to start the build and verify everything was built ok
9. Delete any generated config files from c:\usr\snmp\persist
Part 2 - Compiling winExtDLL
----------------------------
10. Run build.bat and set to the following:
Net-SNMP build and install options
==================================
1. OpenSSL support: disabled
2. Platform SDK support: enabled ***
3. Install path: c:/usr
4. Install after build: disabled ***
5. Perl modules: disabled
6. Install perl modules: disabled
7. Quiet build (logged): enabled
8. Debug mode: disabled
9. IPv6 transports: disabled
10. winExtDLL agent (requires SDK): enabled ***
11. Link type: dynamic ***
12. Install development files disabled
F. Finished - start build
Q. Quit - abort build
Select option to set / toggle:
11. F to start the build and verify everything was built ok
12. Copy the new binary:
copy bin\release\snmpd.exe c:\usr\bin\snmpd-winExtDLL.exe
13. Test each binary by running each one with -DwinExtDLL. Make sure only the
winExtDLL version has debug output.
14. Delete any generated config files from c:\usr\snmp\persist
Part 3 - Creating the Perl package
----------------------------------
1. cd (source dir)
cd perl
2. nmake ppd
3. Open an MSYS shell (unless you have tar.exe and gzip.exe)
4. cd (source dir)
cd perl
5. tar cvf NetSNMP.tar blib; gzip --best NetSNMP.tar
6. Open a Windows command prompt (CMD) and cd (source dir)\perl
7. ren Bundle-NetSNMP.ppd NetSNMP.ppd
8. Modify NetSNMP.ppd to look like the following. Change the
VERSION="x,x,x,x" line to the correct values. Do NOT change
* lines in the original file.
<SOFTPKG NAME="NetSNMP" VERSION="5,4,1,0">
<TITLE>Net-SNMP</TITLE>
<ABSTRACT>Object Oriented Interface to Net-SNMP</ABSTRACT>
<AUTHOR></AUTHOR>
<IMPLEMENTATION>
* <OS NAME="MSWin32" />
* <ARCHITECTURE NAME="MSWin32-x86-multi-thread-5.8" />
<CODEBASE HREF="x86/NetSNMP.tar.gz" />
</IMPLEMENTATION>
</SOFTPKG>
9. Copy the win32\dist folder from trunk to the win32 folder of the extracted source.
10. Create base directories:
md "c:\usr\docs"
md "c:\usr\perl"
md "c:\usr\perl\x86"
md "c:\usr\temp"
12. Copy files:
cd (source dir)
copy COPYING "c:\usr\docs"
copy win32\dist\README.txt "c:\usr"
copy win32\dist\scripts\net-snmp-perl-test.pl "c:\usr\bin"
copy perl\NetSNMP.ppd "c:\usr\Perl"
copy perl\NetSNMP.tar.gz "c:\usr\Perl\x86"
12. 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 (Mozilla 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 three sections above: 'Compiling binaries', 'Compiling
HTMLHelp file' and 'Combining the binaries and HTMLHelp files'. Net-SNMP
should be located in c:\usr.
2. Copy the following files to c:\usr:
cd (source dir)
copy win32\dist\installer\SetEnVar.nsi c:\usr\
copy win32\dist\installer\net-snmp.nsi c:\usr\
copy win32\dist\installer\Add2Path.nsi c:\usr\
copy win32\dist\installer\net-snmp-header1.bmp c:\usr\
3. Create the following empty files:
echo . > c:\usr\registeragent.bat
echo . > c:\usr\unregisteragent.bat
echo . > c:\usr\registertrapd.bat
echo . > c:\usr\unregistertrapd.bat
echo . > c:\usr\etc\snmp\snmp.conf
4. Edit the following variables in c:\usr\net-snmp.nsi:
PRODUCT_MAJ_VERSION
PRODUCT_MIN_VERSION
PRODUCT_REVISION
PRODUCT_EXE_VERSION
For example, for 5.1.2:
PRODUCT_MAJ_VERSION "5"
PRODUCT_MIN_VERSION "1"
PRODUCT_REVISION "2"
PRODUCT_EXE_VERSION "1"
The generated filename would be: net-snmp-5.1.2-1.win32.exe
PRODUCT_EXE_VERSION is usually 1 unless the binary package is re-released
due to packaging issues. For pre releases, include the pre-release version
in PRODUCT_REVISION. For example, for 5.1.2 pre2 use:
PRODUCT_MAJ_VERSION "5"
PRODUCT_MIN_VERSION "1"
PRODUCT_REVISION "2.pre2"
PRODUCT_EXE_VERSION "1"
This will ensure the version number is visible during installation.
The generated filename would be: net-snmp-5.1.2.pre2-1.win32.exe
5. Launch the 'Nullsoft Install System (NSIS 2.0)'
6. Select 'MakeNSISW (compiler interface)'
7. Click File - Load Script
8. Select c:\usr\net-snmp.nsi
9. You should now have a c:\usr\Net-SNMP-x.x.x-x.exe binary installer
package
10. Test the package
11. Compare the directory contents of the compiled folder with the installed
folder to ensure there are no missing MIB files etc. Modify net-snmp.nsi
and rebuild if required.
12. Create a .zip file of c:\usr for archive purposes.
Bulding an OpenSSL version
==========================
Requirements
------------
-OpenSSL binary from http://www.slproweb.com/products/Win32OpenSSL.html
1. 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.
2. Move c:\usr c:\usr.temp
3. Re-build the binary by following the steps in the section 'Building the
main binaries' except enable OpenSSL (both regular and WinExtDLL). Also
follow the Perl steps to create a new tar file etc.
4. Copy contents of c:\usr to c:\usr.temp
5. Delete c:\usr
6. Move c:\usr.temp c:\usr
7. Update the BUILD INFORMATION section of c:\usr\README.txt to include the SSL
info and the filename.
8. Update the version stamp in c:\usr\net-snmp.nsi to include -ssl. Example:
For example, for 5.3.0:
PRODUCT_MAJ_VERSION "5"
PRODUCT_MIN_VERSION "3"
PRODUCT_REVISION "0-ssl"
PRODUCT_EXE_VERSION "1"
The generated filename would be: net-snmp-5.3.0-ssl-1.win32.exe
9. Also in c:\usr\net-snmp.nsi, change:
!define OPENSSL_REQUIRED "0"
to
!define OPENSSL_REQUIRED "1"
10. Launch the 'Nullsoft Install System (NSIS 2.0)'
11. Select 'MakeNSISW (compiler interface)'
12. Click File - Load Script
13. Select c:\usr\net-snmp.nsi
14. You should now have a c:\usr\Net-SNMP-x.x.x-x.exe binary installer
package
15. Test the package
16. Compare the directory contents of the compiled folder with the installed
folder to ensure there are no missing MIB files etc. Modify net-snmp.nsi
and rebuild if required.
17. Create a .zip file of c:\usr for archive purposes.