| *************************************************************************** |
| * |
| * 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 references 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. Link type: static |
| |
| 11. 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. Modify files as explained in README.win32 section 'Running Net-SNMP as |
| a replacement for the Microsoft SNMP service' - 'Compiling Net-SNMP with |
| the winExtDLL extension (MSVC)'. |
| |
| 11. 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. Link type: static |
| |
| 11. Install development files disabled |
| |
| F. Finished - start build |
| Q. Quit - abort build |
| |
| Select option to set / toggle: |
| |
| 12. F to start the build and verify everything was built ok |
| |
| 13. Copy the new binary: |
| |
| copy bin\release\snmpd.exe c:\usr\bin\snmpd-winExtDLL.exe |
| |
| 14. Test each binary by running each one with -DwinExtDLL. Make sure only the |
| winExtDLL version has debug output. |
| |
| |
| 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,2,0,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. Create base directories: |
| |
| md "c:\usr\docs" |
| md "c:\usr\perl" |
| md "c:\usr\perl\x86" |
| md "c:\usr\temp" |
| |
| 10. 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" |
| |
| 11. 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. Be sure to undo the winExtDLL |
| changes before starting by copying a fresh net-snmp-config.h.in and |
| netsnmpmibssdk.dsp. |
| |
| 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. 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. |
| |