[Nut-upsdev] How to build NUT Windows Port
Denis Serov
intrudo at outlook.com
Sun Apr 10 19:06:09 UTC 2016
Hello!
A few weeks ago I have successfully built "Windows-v2.6.5-7" branch under MinGW. So, I decided to write document described all important issues and necessary steps. Here it is.
Notes:
1. I used Hyper-V virtual machine with Windows 2008R2 Standard Edition Server Core with Service Pack 1 installed. There is no Microsoft Visual Studio nor Platform SDK installation.
2. Some steps in this documents are related to Server Core only. Moreover, different operations can be performed by different ways. And remember: it is just draft document.
3. I do not know how original version of NUT for Windows has been built. It seems that some steps were very custom. Moreover, some libraries in original version are obsolete. I have tried to use the latest versions of software and libraries when possible, but I think that there are no problems with the elder ones.
4. I didn't test all compiled binaries and setup, just replaced some executable files (nut.exe, upsmon.exe, upsd.exe) in original installation and everything works fine.
5. I used some hard-coded file system paths in the document. If you will use other ones, please keep in mind that you need to modify the commands and patches which I have described.
Any feedback would be very nice!
Thanks,
Denis
HOW TO BUILD NUT WINDOWS PORT
=============================
1. MINGW INSTALLATION
---------------------
Download MinGW network setup.
URL: https://sourceforge.net/projects/mingw
File: mingw-get-setup.exe
Version: 0.6.2-beta-20131004-1
Run the setup and install MinGW into "C:\MinGW" directory with selected "Install
support for graphical user interface" option. After installation of core files,
deploy additional packages via MinGW Installation Manager:
- mingw-developer-toolkit
- mingw32-base
- mingw32-gcc-g++
- mingw-base
NOTES
You will need to execute different commands in Windows Command Prompt to
build NUT. Windows Command Prompt "cmd.exe" must be started with full
administrator access token (Run as administrator).
Hereinafter [cmd] marker means execution of one or more commands in
Windows Command Prompt environment.
Normalize MinGW and SYS installations:
[cmd]
C:\MinGW\msys\1.0\postinstall\pi.bat
Accept all the questions and enter "C:/MinGW" value as MinGW installation.
The normalization will create new mount point "/mingw" to "C:/MinGW" directory
in "C:\MinGW\msys\1.0\etc\fstab" file. It is highly recommended to check the
content of "fstab" file to be sure that everything has been done properly.
Modify PATH-environment variable for MinGW binaries:
[cmd]
setx Path "%Path%;C:\MinGW\bin" /M
NOTES
You have to start MinGW Shell with full administrator access token and only
under MINGW32 environment. Being stared under MSYS environment, the
different errors may occur during NUT building. To start MinGW Shell you
should use "C:\MinGW\msys\1.0\msys.bat" batch file. Please, keep in mind,
that title of opened window must be "MINGW32:~", not "MSYS:~".
Hereinafter [shell] marker means execution of one or more commands in MinGW
shell under MINGW32 environment.
2. PYTHON INSTALLATION
----------------------
Download Python for Windows.
URL: https://www.python.org/downloads
File: python-2.7.11.msi
Version: 2.7.11
NOTES
Do not try to build Python from official sources, they do not support MinGW.
Moreover, do not install nonofficial Python packages for MinGW, because this
manual takes into account the specific of Python for Windows.
Run the setup:
[cmd]
msiexec.exe /i python-2.7.11.msi
Select "C:\Python26" as target directory and install all setup features except
the following ones:
- pip
- Test suite
Modify PATH-environment variable for Python binaries:
[cmd]
setx Path "%Path%;C:\Python27" /M
Add mount point to Python installation:
[shell]
mount C:/Python27 /python
3. WIX INSTALLATION
--------------------
Download WIX binaries.
URL: https://wix.codeplex.com/releases
File: wix310-binaries.zip
Version: 3.10.2
NOTES
Do not download WIX setup because it requires Microsoft Visual Studio.
Unpack the binaries into "C:\Wix" directory.
Install .NET Framework 2.0 (x64, x86):
[cmd]
dism /online /enable-feature /featurename:NetFx2-ServerCore
dism /online /enable-feature /featurename:NetFx2-ServerCore-WOW64
Modify PATH-environment variable for WIX binaries:
[cmd]
setx Path "%Path%;C:\Wix" /M
4. DDK INSTALLATION
-------------------
Download Windows Driver Kit.
URL: https://www.microsoft.com/en-us/download/details.aspx?id=11800
File: GRMWDK_EN_7600_1.ISO
Version: 7.1.0
Install WDK into "C:\WinDDK" directory with the following selected features:
- Build environment
- Tools
5. UNZIP INSTALLATION
---------------------
Install unzip package:
[shell]
mingw-get install msys-unzip
6. PKG-CONFIG INSTALLATION
--------------------------
Download pkg-config sources.
URL: https://www.freedesktop.org/wiki/Software/pkg-config
File: pkg-config-0.29.1.tar.gz
Version: 0.29.1
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\pkg-config-0.29.1"
directory and install pkg-config:
[shell]
cd /home/Administrator/pkg-config-0.29.1
./configure --prefix=/mingw --with-internal-glib
make
make install
7. CPPUNIT INSTALLATION
-----------------------
Download cppunit sources.
URL: https://sourceforge.net/projects/cppunit
File: cppunit-1.12.1.tar.gz
Version: 1.12.1
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\cppunit-1.12.1"
directory and install cppunit:
[shell]
cd /home/Administrator/cppunit-1.12.1
./configure --prefix=/mingw
make
make install
8. REGEX INSTALLATION
---------------------
Download regex sources.
URL: https://sourceforge.net/projects/mingw/files/MSYS/Base/regex/regex-1.20090805-2
File: regex-1.20090805-2-msys-1.0.13-src.tar.lzma
Version: 1.0.13
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\regex-1.0.13"
directory and install regex:
[shell]
cd /home/Administrator/regex-1.0.13
./configure --prefix=/mingw
make
make install
9. LIBXML INSTALLATION
----------------------
Download libxml sources.
URL: http://www.xmlsoft.org/downloads.html
File: libxml2-sources-2.9.3.tar.gz
Version: 2.9.3
NOTES
Do not try to build libxml from different sources or to install precompiled
binaries. Most of them are incompatible with MinGW: xmlcatalog and xmllint
programs will not work properly and will be regularly crashed (even MinGW
version https://sourceforge.net/projects/mingw/files/MSYS/Extension/libxml2).
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\libxml2-2.7.6-1"
directory.
Patch "configure" file:
BEGIN
--- configure 2016-04-01 14:53:06 -0700
+++ configure-new 2016-04-01 14:43:29 -0700
@@ -15088,7 +15088,7 @@
if test "$PYTHON" != ""
then
PYTHON_VERSION=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_version())"`
- PYTHON_INCLUDES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_inc())"`
+# PYTHON_INCLUDES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_inc())"`
# does not work as it produce a /usr/lib/python path instead of/usr/lib64/python
#
# PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib())"`
END
Install libxml:
[shell]
cd /home/Administrator/libxml2-2.7.6-1
./configure --prefix=/mingw –with-python=/python
make
make install
10. LIBXSLT INSTALLATION
-----------------------
Download libxslt sources.
URL: http://xmlsoft.org/libxslt/downloads.html
File: libxslt-1.1.28.zip
Version: 1.1.28
NOTES
You need to install libxslt by the same reasons as libxml: official MinGW
version of xsltproc program works improperly.
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\libxslt-1.1.28"
directory and install libxslt:
[shell]
cd /home/Administrator/libxslt-1.1.28
autogen.sh
./configure --prefix=/mingw --with-python=/python
make
make install
11. ZLIB INSTALLATION
--------------------
Download zlib sources.
URL: https://sourceforge.net/projects/mingw/files/MinGW/Extension/zlib
File: zlib-1.2.7-1-mingw32-src.tar.lzma
Version: 1.2.7-1
NOTES
Installation of zlib library is optinal. If this step is skipped, you
should not use "--with-zlib" switch during configure and have to remove
"libz-1.dll" file from WIX project "NUT-Installer.xml" (described below).
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\zlib-1.2.8"
directory.
Patch "win32/makefile.gcc" file:
BEGIN
--- makefile.gcc 2012-05-02 20:17:59 -0700
+++ makefile-new.gcc 2016-04-03 12:48:45 -0700
@@ -30,7 +30,7 @@
# the DLL name should be changed from "zlib1.dll".
STATICLIB = libz.a
-SHAREDLIB = zlib1.dll
+SHAREDLIB = libz-1.dll
IMPLIB = libz.dll.a
#
@@ -64,7 +64,7 @@
INSTALL = $(CP)
RM = rm -f
-prefix ?= /usr/local
+prefix ?= /mingw
exec_prefix = $(prefix)
OBJS = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \
END
Install zlib:
[shell]
cd /home/Administrator/zlib-1.2.8
make -fwin32/Makefile.gcc
cp libz-1.dll /mingw/bin/
cp zlib.h /mingw/include/
cp libz.a /mingw/lib/
cp libz.dll.a /mingw/lib/
12. NEON INSTALLATION
---------------------
Download neon sources.
URL: http://www.webdav.org/neon
File: neon-0.30.1.tar.gz
Version: 0.30.1
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\neon-0.30.1"
directory and install neon:
[shell]
cd /home/Administrator/neon-0.30.1
autogen.sh
./configure --prefix=/mingw –enable-shared
make
make install
13. NET-SNMP INSTALLATION
-------------------------
Download net-snmp sources.
URL: http://www.net-snmp.org/download.html
File: net-snmp-5.7.3.zip
Version: 5.7.3
NOTES
It is not possible to build shared version of net-snmp library by default.
It seems that original setup of NUT for Windows 2.6.5-7 contains
"libnetsnmp-30.dll" library what has been compiled manually. So, we need
the same trick.
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\net-snmp-5.7.3"
directory and install net-snmp:
[shell]
cd /home/Administrator/net-snmp-5.7.3
./configure --prefix=/mingw --with-zlib --with-mibdirs=/mingw/share/snmp/mibs --with-mib-modules="agentx disman/event-mib" --disable-embedded-perl --without-perl-modules
make
cd snmplib
make LDFLAGS="-no-undefined -lws2_32 -lregex -Xlinker --ignore-unresolved-symbol=_app_name_long"
cd ..
make install
14. LIBUSB INSTALLATION
-----------------------
Download libusb binaries.
URL: https://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/1.2.6.0
File: libusb-win32-bin-1.2.6.0.zip
Version: 1.2.6
Unpack the binaries into "C:\MinGW\msys\1.0\home\Administrator\libusb-1.2.6.0"
directory and copy files:
[cmd]
xcopy C:\MinGW\msys\1.0\home\Administrator\libusb-1.2.6.0\include\lusb0_usb.h C:\MinGW\include\usb.h
xcopy C:\MinGW\msys\1.0\home\Administrator\libusb-1.2.6.0\lib\gcc\libusb.a C:\MinGW\lib\libusb.a
15. ASCIIDOC INSTALLATION
-------------------------
Download asciidoc binaries.
URL: http://lrn.no-ip.info/other/mingw/mingw32/asciidoc/8.6.8-1
File: asciidoc-8.6.8-1-mingw32-bin.tar.lzma
Version: 8.6.8-1
Unpack the binaries into "C:\MinGW\msys\1.0\home\Administrator\asciidoc-8.6.8-1"
directory.
Patch "bin/a2x" file:
BEGIN
--- a2x 2016-03-27 13:22:51 -0700
+++ a2x-new 2012-09-26 20:43:33 -0700
@@ -40,7 +40,7 @@
ENV = None
# External executables.
-ASCIIDOC = 'asciidoc.'
+ASCIIDOC = 'asciidoc.py'
XSLTPROC = 'xsltproc'
DBLATEX = 'dblatex' # pdf generation.
FOP = 'fop' # pdf generation (--fop option).
@@ -489,7 +489,7 @@
self.asciidoc_opts += ' --doctype %s' % self.doctype
for attr in self.attributes:
self.asciidoc_opts += ' --attribute "%s"' % attr
-# self.xsltproc_opts += ' --nonet'
+ self.xsltproc_opts += ' --nonet'
if self.verbose:
self.asciidoc_opts += ' --verbose'
self.dblatex_opts += ' -V'
@@ -650,7 +650,6 @@
self.to_docbook()
docbook_file = self.dst_path('.xml')
xhtml_file = self.dst_path('.html')
+ xhtml_file = xhtml_file.replace(r'C:', '')
opts = '%s --output "%s"' % (self.xsltproc_opts, xhtml_file)
exec_xsltproc(self.xsl_stylesheet(), docbook_file, self.destination_dir, opts)
src_dir = os.path.dirname(self.asciidoc_file)
END
Copy the files:
[cmd]
xcopy /E C:\MinGW\msys\1.0\home\Administrator\asciidoc-8.6.8-1\*.* C:\MinGW\
16. DOCBOOK-XML INSTALLATION
----------------------------
Download docbook-xml sources.
URL: http://lrn.no-ip.info/other/mingw/mingw32/docbook-xml/4.5-1
File: docbook-xml-4.5-1-mingw32-src.tar.lzma
Version: 4.5-1
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\docbook-xml-4.5-1"
directory and install docbook-xml:
[shell]
cd /home/Administrator/docbook-xml-4.5-1
pkgbuild.sh
cp -r inst/mingw/* /mingw/
cd /mingw/var/lib/mingw-get/scripts
docbook-xml-4.5-1-post-install.sh
Patch "/mingw/etc/xml/catalog" file:
BEGIN
--- catalog 2016-04-02 01:59:08 -0700
+++ catalog-new 2016-04-02 02:00:24 -0700
@@ -3,9 +3,9 @@
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<delegateSystem systemIdStartString="http://docbook.org/xml/" catalog="./docbook-xml.xml"/>
<delegateSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/" catalog="./docbook-xml.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/ELEMENTS DocBook" catalog="./docbook-xml.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/DTD DocBook XML" catalog="./docbook-xml.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/DTD XML Exchange Table Model 19990315" catalog="./docbook-xml.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/ENTITIES DocBook" catalog="./docbook-xml.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/DTD DocBook CALS Table Model" catalog="./docbook-xml.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/ELEMENTS DocBook" catalog="./docbook-xml.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/DTD DocBook XML" catalog="./docbook-xml.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/DTD XML Exchange Table Model 19990315" catalog="./docbook-xml.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/ENTITIES DocBook" catalog="./docbook-xml.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/DTD DocBook CALS Table Model" catalog="./docbook-xml.xml"/>
</catalog>
END
Patch "/mingw/etc/xml/docbook-xml.xml" file:
BEGIN
--- docbook-xml.xml 2016-04-02 01:59:09 -0700
+++ docbook-xml-new.xml 2016-04-02 02:00:41 -0700
@@ -3,13 +3,13 @@
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<delegateSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
<delegateSystem systemIdStartString="http://docbook.org/xml/4.5/docbookx.dtd" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/ELEMENTS DocBook Information Pool V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/ENTITIES DocBook Additional General Entities V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/ENTITIES DocBook Notations V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/ENTITIES DocBook Character Entities V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/ELEMENTS DocBook XML HTML Tables V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/DTD DocBook XML V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/ELEMENTS DocBook Document Hierarchy V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/DTD DocBook CALS Table Model V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
- <delegatePublic publicIdStartString="-/C:/MinGW/msys/1.0/OASIS/DTD XML Exchange Table Model 19990315/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/ELEMENTS DocBook Information Pool V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/ENTITIES DocBook Additional General Entities V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/ENTITIES DocBook Notations V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/ENTITIES DocBook Character Entities V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/ELEMENTS DocBook XML HTML Tables V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/DTD DocBook XML V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/ELEMENTS DocBook Document Hierarchy V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/DTD DocBook CALS Table Model V4.5/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
+ <delegatePublic publicIdStartString="-//OASIS/DTD XML Exchange Table Model 19990315/EN" catalog="../../share/xml/docbook/schema/dtd/4.5/catalog.xml"/>
</catalog>
END
17. DOCBOOK-XLS INSTALLATION
----------------------------
Download docbook-xls sources.
URL: http://lrn.no-ip.info/other/mingw/mingw32/docbook-xsl/1.76.1-2
File: docbook-xsl-1.76.1-2-mingw32-src.tar.lzma
Version: 1.76.1-2
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\docbook-xsl-1.76.1-2"
directory and install docbook-xls:
[shell]
cd /home/Administrator/docbook-xsl-1.76.1-2
pkgbuild.sh
cp -r inst/mingw/* /mingw/
cd /mingw/var/lib/mingw-get/scripts
docbook-xsl-1.76.1-2-post-install.sh
18. NUT BUILD
-------------
Download NUT Windows Port sources.
URL: https://github.com/networkupstools/nut/tree/Windows-v2.6.5-7
File: nut-Windows-v2.6.5-7.zip
Version: 2.6.5-7
NOTES:
It looks like the original binaries of NUT for Windows 2.6.5-7 were built
using MinGW environment with Microsoft Platform SDK installed. The sources
have included file "wspiapi.h" which is not presented in MinGW installation
but exists in Microsoft Platform SDK. This include is not required and
must be removed.
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\nut-2.6.5-7"
directory.
Patch "m4/nut_check_libneon.m4" file:
BEGIN
--- nut_check_libneon.m4 2015-12-29 01:00:17 -0800
+++ nut_check_libneon-new.m4 2016-04-03 04:31:44 -0700
@@ -52,7 +52,7 @@
dnl check if neon is usable
AC_CHECK_HEADERS(ne_xmlreq.h, [nut_have_neon=yes], [nut_have_neon=no], [AC_INCLUDES_DEFAULT])
- AC_CHECK_FUNCS(ne_xml_dispatch_request, [], [nut_have_neon=no])
+ dnl AC_CHECK_FUNCS(ne_xml_dispatch_request, [], [nut_have_neon=no])
if test "${nut_have_neon}" = "yes"; then
dnl Check for connect timeout support in library (optional)
END
Patch "client/upsclient.c" file:
BEGIN
--- upsclient.c 2015-12-29 01:00:17 -0800
+++ upsclient-new.c 2016-04-02 02:26:45 -0700
@@ -45,7 +45,6 @@
/* Those 2 files for support of getaddrinfo, getnameinfo and freeaddrinfo
on Windows 2000 and older versions */
#include <ws2tcpip.h>
-#include <wspiapi.h>
/* This override network system calls to adapt to Windows specificity */
#define W32_NETWORK_CALL_OVERRIDE
#include "wincompat.h"
END
Patch "server/upsd.c" file:
BEGIN
--- upsd.c 2015-12-29 01:00:17 -0800
+++ upsd-new.c 2016-04-02 02:28:24 -0700
@@ -36,7 +36,6 @@
/* Those 2 files for support of getaddrinfo, getnameinfo and freeaddrinfo
on Windows 2000 and older versions */
#include <ws2tcpip.h>
-#include <wspiapi.h>
/* This override network system calls to adapt to Windows specificity */
#define W32_NETWORK_CALL_OVERRIDE
#include "wincompat.h"
END
Patch "tools/nut-scanner/nutscan-ip.c" file:
BEGIN
--- nutscan-ip.c 2015-12-29 01:00:17 -0800
+++ nutscan-ip-new.c 2016-04-02 02:29:54 -0700
@@ -28,7 +28,6 @@
/* Those 2 files for support of getaddrinfo, getnameinfo and freeaddrinfo
on Windows 2000 and older versions */
#include <ws2tcpip.h>
-#include <wspiapi.h>
#define AI_NUMERICSERV NI_NUMERICSERV
#include "wincompat.h"
#endif
END
Patch "tools/nut-scanner/scan_xml_http.c" file:
BEGIN
--- scan_xml_http.c 2015-12-29 01:00:17 -0800
+++ scan_xml_http-new.c 2016-04-02 02:31:11 -0700
@@ -33,7 +33,6 @@
/* Those 2 files for support of getaddrinfo, getnameinfo and freeaddrinfo
on Windows 2000 and older versions */
#include <ws2tcpip.h>
-#include <wspiapi.h>
#endif
#include <string.h>
END
Build NUT:
[shell]
cd /home/Administrator/nut-2.6.5-7
autogen.sh
./configure --with-doc=html-single CPPFLAGS="-DWINVER=0x0501 -D_WIN32_WINNT=0x0501"
export XML_CATALOG_FILES=/mingw/etc/xml/catalog
make
cd /docs/man
make html-man
19. LIBWDI INSTALLATION
-----------------------
Download libwdi sources.
URL: https://sourceforge.net/projects/libwdi/files/releases
File: libwdi-1.2.5.tar.gz
Version: 1.2.5
Unpack the sources into "C:\MinGW\msys\1.0\home\Administrator\libwdi-1.2.5"
directory.
Copy "wdi-simple.c" file from NUT sources directory:
[shell]
cd /home/administrator/libwdi-1.2.5
cp /home/Administrator/nut-2.6.5-7/scripts/Windows/DriverInstaller/wdi-simple.c examples/
Patch "msvc/config.h" file:
BEGIN
--- config.h 2016-01-22 09:50:46 -0800
+++ config-new.h 2016-04-02 13:34:35 -0700
@@ -21,26 +21,26 @@
* match your WinUSB redist directrories
*/
#ifndef DDK_DIR
-#define DDK_DIR "C:/Program Files (x86)/Windows Kits/10"
+#define DDK_DIR "C:/WinDDK/7600.16385.1"
#endif
/* DDK WDF coinstaller version */
-#define WDF_VER 1011
+#define WDF_VER 1009
/* CoInstaller subdirectory for WinUSB redist files ("winusb" or "wdf") */
-#define COINSTALLER_DIR "wdf"
+#define COINSTALLER_DIR "winusb"
/* 64bit subdirectory for WinUSB redist files ("x64" or "amd64") */
-#define X64_DIR "x64"
+#define X64_DIR "amd64"
/* embed libusb0 driver files from the following location */
#ifndef LIBUSB0_DIR
-#define LIBUSB0_DIR "D:/libusb-win32"
+#define LIBUSB0_DIR "C:/MinGW/msys/1.0/home/Administrator/libusb-1.2.6.0"
#endif
/* embed libusbK driver files from the following location */
#ifndef LIBUSBK_DIR
-#define LIBUSBK_DIR "D:/libusbK/bin"
+// #define LIBUSBK_DIR "D:/libusbK/bin"
#endif
/* embed user defined driver files from the following location */
END
Patch "libwdi/.msvc/libwdi_sources" file:
BEGIN
--- libwdi_sources 2016-01-22 09:50:46 -0800
+++ libwdi_sources-new 2016-04-02 13:36:07 -0700
@@ -9,7 +9,7 @@
USE_MSVCRT=1
INCLUDES=..\msvc;$(DDK_INC_PATH)
-C_DEFINES = $(C_DEFINES) /DDDKBUILD $(DLL_DEFINES)
+C_DEFINES = $(C_DEFINES) /DDDKBUILD /DCALG_SHA_256=0x0000800C $(DLL_DEFINES)
LINKER_FLAGS=/ignore:4006
# naked calls to 'build' ignores SOURCELIBS => we can't create a static lib
END
Patch "examples/.msvc/wdi-simple_sources" file:
BEGIN
--- wdi-simple_sources 2016-01-22 09:50:46 -0800
+++ wdi-simple_sources-new 2016-04-02 13:51:09 -0700
@@ -4,13 +4,13 @@
UMENTRY=main
!IFNDEF MSC_WARNING_LEVEL
-MSC_WARNING_LEVEL=/W3
+MSC_WARNING_LEVEL=/W1
!ENDIF
USE_MSVCRT=1
-INCLUDES=..\msvc;..\libwdi;$(DDK_INC_PATH)
-C_DEFINES = $(C_DEFINES) /DDDKBUILD
+INCLUDES=..\msvc;..\libwdi;C:\MinGW\msys\1.0\home\Administrator\nut-2.6.5-7\include;C:\MinGW\msys\1.0\home\Administrator\nut-2.6.5-7\tools\nut-scanner;$(DDK_INC_PATH)
+C_DEFINES = $(C_DEFINES) /Dbool=int /Dtrue=1 /Dfalse=0 /DDDKBUILD
TARGETLIBS=$(SDK_LIB_PATH)\kernel32.lib \
$(SDK_LIB_PATH)\user32.lib \
END
Patch "examples/.msvc/zadic_sources" file:
BEGIN
--- zadic_sources 2016-01-22 09:50:46 -0800
+++ zadic_sources-new 2016-04-02 13:45:08 -0700
@@ -4,7 +4,7 @@
UMENTRY=main
!IFNDEF MSC_WARNING_LEVEL
-MSC_WARNING_LEVEL=/W3
+MSC_WARNING_LEVEL=/W1
!ENDIF
USE_MSVCRT=1
END
Build libwdi:
[cmd]
C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1 free WXP
cd C:\MinGW\msys\1.0\home\Administrator\libwdi-1.2.5
ddk_build.cmd
20. NUT SETUP BUILD
-------------------
Build NUT setup:
[cmd]
cd C:\MinGW\msys\1.0\home\Administrator\nut-2.6.5-7\scripts\Windows\Installer
xcopy C:\MinGW\msys\1.0\home\Administrator\libwdi-1.2.5\examples\wdi-simple.exe ImageFiles\Others\
xcopy C:\MinGW\bin\pthreadGC2.dll ImageFiles\Others\
xcopy C:\MinGW\bin\libexpat-1.dll ImageFiles\Others\
xcopy C:\MinGW\bin\libiconv-2.dll ImageFiles\Others\
xcopy C:\MinGW\bin\libintl-8.dll ImageFiles\Others\
xcopy C:\MinGW\bin\libgcc_s_dw2-1.dll ImageFiles\Others\
xcopy C:\MinGW\bin\libltdl-7.dll ImageFiles\Others\
xcopy C:\MinGW\bin\libneon-27.dll ImageFiles\Others\
xcopy C:\MinGW\bin\libnetsnmp-30.dll ImageFiles\Others\
xcopy C:\MinGW\bin\libregex-1.dll ImageFiles\Others\
xcopy C:\MinGW\bin\libxml2-2.dll ImageFiles\Others\
xcopy C:\MinGW\bin\libz-1.dll ImageFiles\Others\
Patch "NUT-Installer.xml" file:
BEGIN
--- NUT-Installer.xml 2015-12-29 01:00:17 -0800
+++ NUT-Installer-new.xml 2016-04-08 13:38:48 -0700
@@ -1221,6 +1221,9 @@
<Component Id="libz_1.dll" Guid="9F8DFF6E-95D8-4084-83AA-9304D1E72BA1">
<File Id="libz_1.dll" Name="libz-1.dll" Source="ImageFiles\others\libz-1.dll" />
</Component>
+ <Component Id="libxml2_2.dll" Guid="595F6CD3-8158-4F2C-BE97-F7304590253B">
+ <File Id="libxml2_2.dll" Name="libxml2-2.dll" Source="ImageFiles\others\libxml2-2.dll" />
+ </Component>
<Component Id="apcsmart.exe" Guid="BEDE6095-3FAF-49C4-8AF4-8F0A2EDB8EAE">
<File Id="apcsmart.exe" Name="apcsmart.exe" Source="..\..\..\drivers\.libs\apcsmart.exe" />
</Component>
@@ -1837,6 +1840,7 @@
<ComponentRef Id="libiconv_2.dll" />
<ComponentRef Id="libintl_8.dll" />
<ComponentRef Id="libz_1.dll" />
+ <ComponentRef Id="libxml2_2.dll" />
<ComponentRef Id="libneon_27.dll" />
<ComponentRef Id="libnetsnmp_30.dll" />
<ComponentRef Id="apcsmart.exe" />
END
Build NUT setup:
[cmd]
cd C:\MinGW\msys\1.0\home\Administrator\nut-2.6.5-7\scripts\Windows\Installer
BuildInstaller.bat
"NUT-Installer.msi" file should be created. Check file "log.txt" for errors.
More information about the Nut-upsdev
mailing list