From 1c7ed42093c5935e3958584ed98a2b03466a0023 Mon Sep 17 00:00:00 2001 From: CryptoManiac Date: Tue, 13 Oct 2015 20:51:00 +0300 Subject: [PATCH] Remove UPNP support & do some cleanup. Actually, UPnP is not so useful nowadays. Being combined with recent security issues this seems suitable reason for removal of UPnP support. Maybe we should consider implementation of port mapping support through developing a separate utility for that purpose. http://talosintel.com/reports/TALOS-2015-0035/ --- MSVC/build-helpers/buildminiupnpc.bat | 28 --- MSVC/build-helpers/miniupnpc.vcxproj | 168 ------------------ MSVC/build-helpers/miniupnpc.vcxproj.filters | 99 ----------- MSVC/libcommon/libcommon.vcxproj | 8 +- MSVC/mynovacoin/mynovacoin.vcxproj | 24 ++-- MSVC/mynovacoinqt/mynovacoinqt.vcxproj | 24 ++-- contrib/debian/control | 1 - contrib/gentoo/novacoin-0.5.0.ebuild | 12 +-- contrib/gitian-descriptors/README | 31 ---- contrib/gitian-descriptors/boost-win32.yml | 38 ---- contrib/gitian-descriptors/deps-win32.yml | 71 -------- contrib/gitian-descriptors/gitian-win32.yml | 74 -------- contrib/gitian-descriptors/gitian.yml | 56 ------ contrib/gitian-descriptors/qt-win32.yml | 54 ------ contrib/gitian-downloader/bluematt-key.pgp | Bin 4113 -> 0 bytes contrib/gitian-downloader/devrandom-key.pgp | Bin 2213 -> 0 bytes contrib/gitian-downloader/gavinandresen-key.pgp | Bin 1176 -> 0 bytes contrib/gitian-downloader/laanwj-key.pgp | 28 --- contrib/gitian-downloader/linux-download-config | 38 ---- contrib/gitian-downloader/luke-jr-key.pgp | Bin 5467 -> 0 bytes contrib/gitian-downloader/richardsmith-key.gpg | 52 ------ contrib/gitian-downloader/scottnadal-key.gpg | 52 ------ contrib/gitian-downloader/sipa-key.pgp | Bin 108922 -> 0 bytes contrib/gitian-downloader/sunnyking-key.gpg | 52 ------ contrib/gitian-downloader/tcatm-key.pgp | Bin 1554 -> 0 bytes contrib/gitian-downloader/win32-download-config | 38 ---- contrib/initscripts/bsd/novacoin | 2 +- doc/build-msw.txt | 16 +-- doc/build-osx.txt | 2 +- doc/build-unix.txt | 27 +--- ...lding novacoin-qt for android under Windows.txt | 1 - ...ilding novacoind and novacoinqt under Linux.txt | 8 +- ...oind and novacoinqt under Windows with MSVC.txt | 14 +-- ...ind and novacoinqt under Windows with MinGW.txt | 38 ++--- ...ompiling_building Windows binary under Unix.txt | 68 +------- doc/readme-qt.rst | 28 +--- doc/tor.md | 2 +- novacoin-qt.pro | 19 -- src/init.cpp | 13 +-- src/main.h | 6 - src/makefile.bsd | 9 - src/makefile.linux-mingw | 18 +-- src/makefile.mingw | 12 -- src/makefile.osx | 13 -- src/makefile.unix | 9 - src/net.cpp | 178 -------------------- src/net.h | 3 - src/qt/bitcoinstrings.cpp | 2 - src/qt/forms/aboutdialog.ui | 2 +- src/qt/forms/optionsdialog.ui | 10 - src/qt/locale/bitcoin_en.ts | 26 +--- src/qt/locale/bitcoin_ru.ts | 24 +--- src/qt/locale/bitcoin_uk.ts | 24 +--- src/qt/optionsdialog.cpp | 6 - src/qt/optionsmodel.cpp | 9 - src/qt/optionsmodel.h | 1 - 56 files changed, 73 insertions(+), 1465 deletions(-) delete mode 100644 MSVC/build-helpers/buildminiupnpc.bat delete mode 100644 MSVC/build-helpers/miniupnpc.vcxproj delete mode 100644 MSVC/build-helpers/miniupnpc.vcxproj.filters delete mode 100644 contrib/gitian-descriptors/README delete mode 100644 contrib/gitian-descriptors/boost-win32.yml delete mode 100644 contrib/gitian-descriptors/deps-win32.yml delete mode 100644 contrib/gitian-descriptors/gitian-win32.yml delete mode 100644 contrib/gitian-descriptors/gitian.yml delete mode 100644 contrib/gitian-descriptors/qt-win32.yml delete mode 100644 contrib/gitian-downloader/bluematt-key.pgp delete mode 100644 contrib/gitian-downloader/devrandom-key.pgp delete mode 100644 contrib/gitian-downloader/gavinandresen-key.pgp delete mode 100644 contrib/gitian-downloader/laanwj-key.pgp delete mode 100644 contrib/gitian-downloader/linux-download-config delete mode 100644 contrib/gitian-downloader/luke-jr-key.pgp delete mode 100644 contrib/gitian-downloader/richardsmith-key.gpg delete mode 100644 contrib/gitian-downloader/scottnadal-key.gpg delete mode 100644 contrib/gitian-downloader/sipa-key.pgp delete mode 100644 contrib/gitian-downloader/sunnyking-key.gpg delete mode 100644 contrib/gitian-downloader/tcatm-key.pgp delete mode 100644 contrib/gitian-downloader/win32-download-config diff --git a/MSVC/build-helpers/buildminiupnpc.bat b/MSVC/build-helpers/buildminiupnpc.bat deleted file mode 100644 index 9b52b33..0000000 --- a/MSVC/build-helpers/buildminiupnpc.bat +++ /dev/null @@ -1,28 +0,0 @@ -@ECHO ON -cd c:\MyProjects\Deps\miniupnpc -if %errorlevel% NEQ 0 goto ERRORCLEANUP -copy miniupnpcstrings.h.in miniupnpcstrings.h -cd C:\MyProjects\Deps\miniupnpc\msvc -if %errorlevel% NEQ 0 goto ERRORCLEANUP -set VisualStudioVersion=11.0 -copy C:\MyProjects\Deps\build-helpers\miniupnpc.vcxproj . /Y -if %errorlevel% NEQ 0 goto ERRORCLEANUP -call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\vcvars32.bat" -msbuild.exe miniupnpc.vcxproj /t:clean /p:Configuration="Release" /p:Platform="Win32" -msbuild.exe miniupnpc.vcxproj /t:clean /p:Configuration="Debug" /p:Platform="Win32" -msbuild.exe miniupnpc.vcxproj /p:Configuration="Release" /p:Platform="Win32" -msbuild.exe miniupnpc.vcxproj /p:Configuration="Debug" /p:Platform="Win32" -REM -REM now clean and build 64 bit -call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86_amd64 -msbuild.exe miniupnpc.vcxproj /t:clean /p:Configuration="Release" /p:Platform="x64" -msbuild.exe miniupnpc.vcxproj /t:clean /p:Configuration="Debug" /p:Platform="x64" -msbuild.exe miniupnpc.vcxproj /p:Configuration="Release" /p:Platform="x64" -msbuild.exe miniupnpc.vcxproj /p:Configuration="Debug" /p:Platform="x64" -echo All finished! -pause -goto EOF -:ERRORCLEANUP -echo Something went wrong, please check the directories in this batch file! -pause -:EOF \ No newline at end of file diff --git a/MSVC/build-helpers/miniupnpc.vcxproj b/MSVC/build-helpers/miniupnpc.vcxproj deleted file mode 100644 index 81d7bf3..0000000 --- a/MSVC/build-helpers/miniupnpc.vcxproj +++ /dev/null @@ -1,168 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {D28CE435-CB33-4BAE-8A52-C6EF915956F5} - miniupnpc - Win32Proj - - - - StaticLibrary - v110 - Unicode - true - - - StaticLibrary - v110 - Unicode - true - - - StaticLibrary - v110 - Unicode - - - StaticLibrary - v110 - Unicode - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>11.0.61030.0 - - - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - - - - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - - - - - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;STATICLIB;DEBUG;%(PreprocessorDefinitions) - false - Default - MultiThreadedDebug - - Level1 - ProgramDatabase - false - true - - - - - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;STATICLIB;DEBUG;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebug - - - Level1 - ProgramDatabase - false - - - - - MaxSpeed - false - _CRT_SECURE_NO_WARNINGS;WIN32;STATICLIB;%(PreprocessorDefinitions) - MultiThreaded - false - - Level1 - ProgramDatabase - false - false - - - - - MaxSpeed - false - _CRT_SECURE_NO_WARNINGS;WIN32;STATICLIB;%(PreprocessorDefinitions) - MultiThreaded - false - - - Level1 - ProgramDatabase - false - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/MSVC/build-helpers/miniupnpc.vcxproj.filters b/MSVC/build-helpers/miniupnpc.vcxproj.filters deleted file mode 100644 index 50979f0..0000000 --- a/MSVC/build-helpers/miniupnpc.vcxproj.filters +++ /dev/null @@ -1,99 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Fichiers sources - - - Fichiers sources - - - Fichiers sources - - - Fichiers sources - - - Fichiers sources - - - Fichiers sources - - - Fichiers sources - - - Fichiers sources - - - Fichiers sources - - - Fichiers sources - - - Fichiers sources - - - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - Fichiers d%27en-tête - - - \ No newline at end of file diff --git a/MSVC/libcommon/libcommon.vcxproj b/MSVC/libcommon/libcommon.vcxproj index 89e4c13..a85c9bf 100644 --- a/MSVC/libcommon/libcommon.vcxproj +++ b/MSVC/libcommon/libcommon.vcxproj @@ -163,7 +163,7 @@ NotUsing Level1 Disabled - MINIUPNP_STATICLIB;STATICLIB;USE_UPNP;_CRT_SECURE_NO_WARNINGS;UNICODE;WIN32;_SCL_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0501;HAVE_WORKING_BOOST_SLEEP_FOR;NOMINMAX;USE_LEVELDB;USE_IPV6=1;BOOST_SPIRIT_THREADSAFE;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + STATICLIB;_CRT_SECURE_NO_WARNINGS;UNICODE;WIN32;_SCL_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0501;HAVE_WORKING_BOOST_SLEEP_FOR;NOMINMAX;USE_LEVELDB;USE_IPV6=1;BOOST_SPIRIT_THREADSAFE;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) ..\include;..\..\..\Deps;..\..\..\deps\openssl-1.0.2\inc32;..\..\..\src\leveldb\helpers\memenv;..\..\src\leveldb\helpers;..\..\src\leveldb\include;..\..\..\deps\db-6.0.20\build_windows;..\..\..\deps\boost_1_57_0;..\..\..\deps\boost_1_57_0\boost;.\GeneratedFiles;.\GeneratedFiles\$(ConfigurationName);.\;%(AdditionalIncludeDirectories) ProgramDatabase true @@ -185,7 +185,7 @@ Level1 Disabled - MINIUPNP_STATICLIB;STATICLIB;USE_UPNP;_CRT_SECURE_NO_WARNINGS;UNICODE;WIN32;_WIN32;_SCL_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0501;HAVE_WORKING_BOOST_SLEEP_FOR;NOMINMAX;USE_LEVELDB;USE_IPV6=1;BOOST_SPIRIT_THREADSAFE;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + STATICLIB;_CRT_SECURE_NO_WARNINGS;UNICODE;WIN32;_WIN32;_SCL_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0501;HAVE_WORKING_BOOST_SLEEP_FOR;NOMINMAX;USE_LEVELDB;USE_IPV6=1;BOOST_SPIRIT_THREADSAFE;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) ..\include;..\..\..\Deps;..\..\..\deps\openssl-1.0.2\inc32;..\..\..\src\leveldb\helpers\memenv;..\..\src\leveldb\helpers;..\..\src\leveldb\include;..\..\..\deps\db-6.0.20\build_windows;..\..\..\deps\boost_1_57_0;..\..\..\deps\boost_1_57_0\boost;.\GeneratedFiles;.\GeneratedFiles\$(ConfigurationName);.\;%(AdditionalIncludeDirectories) ProgramDatabase true @@ -207,7 +207,7 @@ MaxSpeed true true - MINIUPNP_STATICLIB;STATICLIB;USE_UPNP;_CRT_SECURE_NO_WARNINGS;UNICODE;WIN32;_SCL_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0501;HAVE_WORKING_BOOST_SLEEP_FOR;NOMINMAX;USE_LEVELDB;USE_IPV6=1;BOOST_SPIRIT_THREADSAFE;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + STATICLIB;_CRT_SECURE_NO_WARNINGS;UNICODE;WIN32;_SCL_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0501;HAVE_WORKING_BOOST_SLEEP_FOR;NOMINMAX;USE_LEVELDB;USE_IPV6=1;BOOST_SPIRIT_THREADSAFE;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) ..\include;..\..\..\deps\;..\..\..\deps\openssl-1.0.2\inc32;..\..\..\src\leveldb\helpers\memenv;..\..\src\leveldb\helpers;..\..\src\leveldb\include;..\..\..\deps\db-6.0.20\build_windows;..\..\..\deps\boost_1_57_0;..\..\..\deps\boost_1_57_0\boost;.\GeneratedFiles;.\GeneratedFiles\$(ConfigurationName);.\;%(AdditionalIncludeDirectories) MultiThreaded false @@ -231,7 +231,7 @@ MaxSpeed true true - MINIUPNP_STATICLIB;STATICLIB;USE_UPNP;_CRT_SECURE_NO_WARNINGS;UNICODE;WIN32;_SCL_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0501;HAVE_WORKING_BOOST_SLEEP_FOR;NOMINMAX;USE_LEVELDB;USE_IPV6=1;BOOST_SPIRIT_THREADSAFE;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + STATICLIB;_CRT_SECURE_NO_WARNINGS;UNICODE;WIN32;_SCL_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0501;HAVE_WORKING_BOOST_SLEEP_FOR;NOMINMAX;USE_LEVELDB;USE_IPV6=1;BOOST_SPIRIT_THREADSAFE;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) ..\include;..\..\..\Deps;..\..\..\deps\openssl-1.0.2\inc32;..\..\..\src\leveldb\helpers\memenv;..\..\src\leveldb\helpers;..\..\src\leveldb\include;..\..\..\deps\db-6.0.20\build_windows;..\..\..\deps\boost_1_57_0;..\..\..\deps\boost_1_57_0\boost;.\GeneratedFiles;.\GeneratedFiles\$(ConfigurationName);.\;%(AdditionalIncludeDirectories) MultiThreaded false diff --git a/MSVC/mynovacoin/mynovacoin.vcxproj b/MSVC/mynovacoin/mynovacoin.vcxproj index f933154..3e9f2ff 100644 --- a/MSVC/mynovacoin/mynovacoin.vcxproj +++ b/MSVC/mynovacoin/mynovacoin.vcxproj @@ -86,7 +86,7 @@ - USE_UPNP;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) ..\include;..\..\src\leveldb\include;..\..\..\deps\openssl-1.0.2\inc32;..\..\..\deps\db-6.0.20\build_windows;..\..\..\deps\boost_1_57_0;..\..\..\deps\boost_1_57_0\boost;.\GeneratedFiles;.\GeneratedFiles\$(ConfigurationName);.\;%(AdditionalIncludeDirectories) Disabled ProgramDatabase @@ -100,14 +100,14 @@ Console $(OutDir)\$(ProjectName).exe - ..\..\..\Deps\miniupnpc\msvc\Debug;..\..\..\Deps\db-6.0.20\build_windows\Win32\Static Debug;..\..\..\deps\boost_1_57_0\stage\lib;..\..\..\deps\openssl-1.0.2\out32.dbg;$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) - iphlpapi.lib;miniupnpc.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;winspool.lib;ssleay32.lib;libeay32.lib;libdb60sd.lib;Shlwapi.lib;%(AdditionalDependencies) + ..\..\..\Deps\db-6.0.20\build_windows\Win32\Static Debug;..\..\..\deps\boost_1_57_0\stage\lib;..\..\..\deps\openssl-1.0.2\out32.dbg;$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) + iphlpapi.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;winspool.lib;ssleay32.lib;libeay32.lib;libdb60sd.lib;Shlwapi.lib;%(AdditionalDependencies) true - USE_UPNP;UNICODE;WIN32;_WIN32;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + UNICODE;WIN32;_WIN32;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) ..\include;..\..\src\leveldb\include;..\..\..\Deps\openssl-1.0.2\inc32;..\..\..\Deps\db-6.0.20\build_windows;..\..\..\Deps\boost_1_57_0;..\..\..\Deps\boost_1_57_0\boost;.\GeneratedFiles;.\GeneratedFiles\$(ConfigurationName);.\;%(AdditionalIncludeDirectories) Disabled ProgramDatabase @@ -121,14 +121,14 @@ Console $(OutDir)\$(ProjectName).exe - ..\..\..\Deps\miniupnpc\msvc\x64\Debug;..\..\..\Deps\db-6.0.20\build_windows\x64\Static Debug;..\..\..\Deps\boost_1_57_0\stage\lib\x64;..\..\..\Deps\openssl-1.0.2\out64.dbg;$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) - iphlpapi.lib;miniupnpc.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;winspool.lib;ssleay32.lib;libeay32.lib;libdb60sd.lib;Shlwapi.lib;%(AdditionalDependencies) + ..\..\..\Deps\db-6.0.20\build_windows\x64\Static Debug;..\..\..\Deps\boost_1_57_0\stage\lib\x64;..\..\..\Deps\openssl-1.0.2\out64.dbg;$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) + iphlpapi.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;winspool.lib;ssleay32.lib;libeay32.lib;libdb60sd.lib;Shlwapi.lib;%(AdditionalDependencies) true - USE_UPNP;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) ..\include;..\..\src\leveldb\include;..\..\..\deps\openssl-1.0.2\inc32;..\..\..\deps\db-6.0.20\build_windows;..\..\..\deps\boost_1_57_0;..\..\..\deps\boost_1_57_0\boost;.\GeneratedFiles;.\GeneratedFiles\$(ConfigurationName);.\;%(AdditionalIncludeDirectories) ProgramDatabase MultiThreaded @@ -145,14 +145,14 @@ Console $(OutDir)\$(ProjectName).exe - ..\..\..\deps\miniupnpc\msvc\Release;..\..\..\deps\db-6.0.20\build_windows\Win32\Static Release;..\..\..\deps\boost_1_57_0\stage\lib;..\..\..\deps\openssl-1.0.2\out32;%(AdditionalLibraryDirectories) - miniupnpc.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;winspool.lib;ssleay32.lib;libeay32.lib;libdb60s.lib;Shlwapi.lib;iphlpapi.lib;%(AdditionalDependencies) + ..\..\..\deps\db-6.0.20\build_windows\Win32\Static Release;..\..\..\deps\boost_1_57_0\stage\lib;..\..\..\deps\openssl-1.0.2\out32;%(AdditionalLibraryDirectories) + kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;winspool.lib;ssleay32.lib;libeay32.lib;libdb60s.lib;Shlwapi.lib;iphlpapi.lib;%(AdditionalDependencies) true - USE_UPNP;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) ..\include;..\..\src\leveldb\include;..\..\..\Deps\openssl-1.0.2\inc32;..\..\..\Deps\db-6.0.20\build_windows;..\..\..\Deps\boost_1_57_0;..\..\..\Deps\boost_1_57_0\boost;.\GeneratedFiles;.\GeneratedFiles\$(ConfigurationName);.\;%(AdditionalIncludeDirectories) ProgramDatabase MultiThreaded @@ -169,8 +169,8 @@ Console $(OutDir)\$(ProjectName).exe - ..\..\..\Deps\miniupnpc\msvc\x64\Release;..\..\..\Deps\db-6.0.20\build_windows\x64\Static Release;..\..\..\Deps\boost_1_57_0\stage\lib\x64;..\..\..\Deps\openssl-1.0.2\out64;%(AdditionalLibraryDirectories) - iphlpapi.lib;miniupnpc.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;winspool.lib;ssleay32.lib;libeay32.lib;libdb60s.lib;Shlwapi.lib;%(AdditionalDependencies) + ..\..\..\Deps\db-6.0.20\build_windows\x64\Static Release;..\..\..\Deps\boost_1_57_0\stage\lib\x64;..\..\..\Deps\openssl-1.0.2\out64;%(AdditionalLibraryDirectories) + iphlpapi.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;winspool.lib;ssleay32.lib;libeay32.lib;libdb60s.lib;Shlwapi.lib;%(AdditionalDependencies) true diff --git a/MSVC/mynovacoinqt/mynovacoinqt.vcxproj b/MSVC/mynovacoinqt/mynovacoinqt.vcxproj index 3220bdf..d8f70c9 100644 --- a/MSVC/mynovacoinqt/mynovacoinqt.vcxproj +++ b/MSVC/mynovacoinqt/mynovacoinqt.vcxproj @@ -103,7 +103,7 @@ Sync $(IntDir) Disabled - USE_UPNP;UNICODE;WIN32;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_GUI;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + UNICODE;WIN32;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_GUI;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) false MultiThreadedDebug true @@ -113,8 +113,8 @@ 4100 - libcommon.lib;leveldb.lib;miniupnpc.lib;iphlpapi.lib;ssleay32.lib;libeay32.lib;lib-qrcode.lib;libdb60sd.lib;Shlwapi.lib;%(AdditionalDependencies);ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;qwindowsd.lib;Qt5PlatformSupportD.lib;qtaccessiblewidgetsd.lib;qgenericbearerd.lib;qnativewifibearerd.lib;qddsd.lib;qicnsd.lib;qicod.lib;qjp2d.lib;qmngd.lib;qsvgd.lib;qtgad.lib;qtiffd.lib;qwbmpd.lib;qwebpd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib - ..\..\..\deps\miniupnpc\msvc\debug;..\..\..\deps\boost_1_57_0\stage\lib;..\..\..\Deps\qrencode-win32\vc8\Debug;..\..\..\Deps\db-6.0.20\build_windows\Win32\Static Debug;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\lib;..\..\..\deps\openssl-1.0.2\out32.dbg;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\accessible;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\bearer;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\platforms;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\imageformats;$(SolutionDir)$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) + libcommon.lib;leveldb.lib;iphlpapi.lib;ssleay32.lib;libeay32.lib;lib-qrcode.lib;libdb60sd.lib;Shlwapi.lib;%(AdditionalDependencies);ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;qwindowsd.lib;Qt5PlatformSupportD.lib;qtaccessiblewidgetsd.lib;qgenericbearerd.lib;qnativewifibearerd.lib;qddsd.lib;qicnsd.lib;qicod.lib;qjp2d.lib;qmngd.lib;qsvgd.lib;qtgad.lib;qtiffd.lib;qwbmpd.lib;qwebpd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib + ..\..\..\deps\boost_1_57_0\stage\lib;..\..\..\Deps\qrencode-win32\vc8\Debug;..\..\..\Deps\db-6.0.20\build_windows\Win32\Static Debug;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\lib;..\..\..\deps\openssl-1.0.2\out32.dbg;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\accessible;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\bearer;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\platforms;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\imageformats;$(SolutionDir)$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) true @@ -157,7 +157,7 @@ C:\MyProjects\Deps\qt-everywhere-opensource-src-5.3.2\qtbase\bin\moc.exe C:\MyPr Sync $(IntDir) Disabled - USE_UPNP;UNICODE;WIN32;_WIN32;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_GUI;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + UNICODE;WIN32;_WIN32;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_GUI;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) false MultiThreadedDebug true @@ -167,8 +167,8 @@ C:\MyProjects\Deps\qt-everywhere-opensource-src-5.3.2\qtbase\bin\moc.exe C:\MyPr 4100 - libcommon.lib;leveldb.lib;miniupnpc.lib;iphlpapi.lib;ssleay32.lib;libeay32.lib;lib-qrcode.lib;libdb60sd.lib;Shlwapi.lib;%(AdditionalDependencies);ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;qwindowsd.lib;Qt5PlatformSupportD.lib;qtaccessiblewidgetsd.lib;qgenericbearerd.lib;qnativewifibearerd.lib;qddsd.lib;qicnsd.lib;qicod.lib;qjp2d.lib;qmngd.lib;qsvgd.lib;qtgad.lib;qtiffd.lib;qwbmpd.lib;qwebpd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib - ..\..\..\deps\miniupnpc\msvc\x64\debug;..\..\..\deps\boost_1_57_0\stage\lib\x64;..\..\..\Deps\qrencode-win32\vc8\x64\Debug;..\..\..\Deps\db-6.0.20\build_windows\x64\Static Debug;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\lib;..\..\..\deps\openssl-1.0.2\out64.dbg;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\accessible;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\bearer;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\platforms;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\imageformats;$(SolutionDir)$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) + libcommon.lib;leveldb.lib;iphlpapi.lib;ssleay32.lib;libeay32.lib;lib-qrcode.lib;libdb60sd.lib;Shlwapi.lib;%(AdditionalDependencies);ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;qwindowsd.lib;Qt5PlatformSupportD.lib;qtaccessiblewidgetsd.lib;qgenericbearerd.lib;qnativewifibearerd.lib;qddsd.lib;qicnsd.lib;qicod.lib;qjp2d.lib;qmngd.lib;qsvgd.lib;qtgad.lib;qtiffd.lib;qwbmpd.lib;qwebpd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib + ..\..\..\deps\boost_1_57_0\stage\lib\x64;..\..\..\Deps\qrencode-win32\vc8\x64\Debug;..\..\..\Deps\db-6.0.20\build_windows\x64\Static Debug;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\lib;..\..\..\deps\openssl-1.0.2\out64.dbg;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\accessible;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\bearer;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\platforms;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\imageformats;$(SolutionDir)$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) true @@ -211,7 +211,7 @@ C:\MyProjects\Deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\bin\moc.exe C:\M Sync $(IntDir) Full - USE_UPNP;UNICODE;WIN32;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_GUI;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + UNICODE;WIN32;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_GUI;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) false $(IntDir)vc$(PlatformToolsetVersion).pdb MultiThreaded @@ -228,8 +228,8 @@ C:\MyProjects\Deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\bin\moc.exe C:\M 4100 - miniupnpc.lib;iphlpapi.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ssleay32.lib;libeay32.lib;lib-qrcode.lib;libdb60s.lib;Shlwapi.lib;%(AdditionalDependencies);ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;qtmain.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Network.lib;qwindows.lib;Qt5PlatformSupport.lib;qtaccessiblewidgets.lib;qgenericbearer.lib;qnativewifibearer.lib;qdds.lib;qicns.lib;qico.lib;qjp2.lib;qmng.lib;qsvg.lib;qtga.lib;qtiff.lib;qwbmp.lib;qwebp.lib;libcommon.lib;leveldb.lib - ..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\lib;..\..\..\deps\openssl-1.0.2\out32.dbg;..\..\..\deps\openssl-1.0.2\out32;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\accessible;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\bearer;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\platforms;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\imageformats;..\..\..\deps\miniupnpc\msvc\release\;..\..\..\deps\boost_1_57_0\stage\lib;..\..\..\Deps\qrencode-win32\vc8\Release\;..\..\..\Deps\db-6.0.20\build_windows\Win32\Static Release;$(SolutionDir)$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) + iphlpapi.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ssleay32.lib;libeay32.lib;lib-qrcode.lib;libdb60s.lib;Shlwapi.lib;%(AdditionalDependencies);ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;qtmain.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Network.lib;qwindows.lib;Qt5PlatformSupport.lib;qtaccessiblewidgets.lib;qgenericbearer.lib;qnativewifibearer.lib;qdds.lib;qicns.lib;qico.lib;qjp2.lib;qmng.lib;qsvg.lib;qtga.lib;qtiff.lib;qwbmp.lib;qwebp.lib;libcommon.lib;leveldb.lib + ..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\lib;..\..\..\deps\openssl-1.0.2\out32.dbg;..\..\..\deps\openssl-1.0.2\out32;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\accessible;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\bearer;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\platforms;..\..\..\deps\qt-everywhere-opensource-src-5.3.2\qtbase\plugins\imageformats;..\..\..\deps\boost_1_57_0\stage\lib;..\..\..\Deps\qrencode-win32\vc8\Release\;..\..\..\Deps\db-6.0.20\build_windows\Win32\Static Release;$(SolutionDir)$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true false @@ -269,7 +269,7 @@ C:\MyProjects\Deps\qt-everywhere-opensource-src-5.3.2\qtbase\bin\moc.exe C:\MyPr Sync $(IntDir) Full - USE_UPNP;UNICODE;WIN32;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_GUI;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) + UNICODE;WIN32;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_GUI;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;USE_LEVELDB;USE_IPV6=1;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;USE_SSE2;%(PreprocessorDefinitions) false $(IntDir)vc$(PlatformToolsetVersion).pdb MultiThreaded @@ -285,8 +285,8 @@ C:\MyProjects\Deps\qt-everywhere-opensource-src-5.3.2\qtbase\bin\moc.exe C:\MyPr 4100 - miniupnpc.lib;iphlpapi.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ssleay32.lib;libeay32.lib;lib-qrcode.lib;libdb60s.lib;Shlwapi.lib;%(AdditionalDependencies);ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;qtmain.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Network.lib;qwindows.lib;Qt5PlatformSupport.lib;qtaccessiblewidgets.lib;qgenericbearer.lib;qnativewifibearer.lib;qdds.lib;qicns.lib;qico.lib;qjp2.lib;qmng.lib;qsvg.lib;qtga.lib;qtiff.lib;qwbmp.lib;qwebp.lib;libcommon.lib;leveldb.lib - ..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\lib;..\..\..\deps\openssl-1.0.2\out64;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\accessible;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\bearer;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\platforms;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\imageformats;..\..\..\deps\miniupnpc\msvc\x64\release\;..\..\..\deps\boost_1_57_0\stage\lib\x64;..\..\..\Deps\qrencode-win32\vc8\x64\Release\;..\..\..\Deps\db-6.0.20\build_windows\x64\Static Release;$(SolutionDir)$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) + iphlpapi.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ssleay32.lib;libeay32.lib;lib-qrcode.lib;libdb60s.lib;Shlwapi.lib;%(AdditionalDependencies);ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;qtmain.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Network.lib;qwindows.lib;Qt5PlatformSupport.lib;qtaccessiblewidgets.lib;qgenericbearer.lib;qnativewifibearer.lib;qdds.lib;qicns.lib;qico.lib;qjp2.lib;qmng.lib;qsvg.lib;qtga.lib;qtiff.lib;qwbmp.lib;qwebp.lib;libcommon.lib;leveldb.lib + ..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\lib;..\..\..\deps\openssl-1.0.2\out64;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\accessible;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\bearer;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\platforms;..\..\..\deps\qt-everywhere-opensource-src-5.3.2-64\qtbase\plugins\imageformats;..\..\..\deps\boost_1_57_0\stage\lib\x64;..\..\..\Deps\qrencode-win32\vc8\x64\Release\;..\..\..\Deps\db-6.0.20\build_windows\x64\Static Release;$(SolutionDir)$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true false diff --git a/contrib/debian/control b/contrib/debian/control index 3052355..e752219 100644 --- a/contrib/debian/control +++ b/contrib/debian/control @@ -10,7 +10,6 @@ Build-Depends: debhelper, libdb++-dev, libssl-dev, pkg-config, - libminiupnpc8-dev, libboost-filesystem-dev, libboost-program-options-dev, libboost-thread-dev, diff --git a/contrib/gentoo/novacoin-0.5.0.ebuild b/contrib/gentoo/novacoin-0.5.0.ebuild index 0330b37..1271774 100644 --- a/contrib/gentoo/novacoin-0.5.0.ebuild +++ b/contrib/gentoo/novacoin-0.5.0.ebuild @@ -13,7 +13,7 @@ SRC_URI="https://github.com/${PN}-project/${PN}/archive/nvc-v${PV}.tar.gz -> ${P LICENSE="MIT" SLOT="0" KEYWORDS="~amd64 ~x86" -IUSE="+dbus -ipv6 kde +qrcode +upnp" +IUSE="+dbus -ipv6 kde +qrcode" RDEPEND=" dev-libs/boost[threads(+)] @@ -21,9 +21,6 @@ RDEPEND=" qrcode? ( media-gfx/qrencode ) - upnp? ( - net-libs/miniupnpc - ) sys-libs/db:$(db_ver_to_slot "${DB_VER}")[cxx] dev-qt/qtgui:4 dbus? ( @@ -36,7 +33,6 @@ DEPEND="${RDEPEND} >=dev-libs/openssl-0.9.8g >=sys-libs/db-4.8.30 >=dev-libs/boost-1.37 - >=net-libs/miniupnpc-1.6 " DOCS="doc/translation_process.md" @@ -70,12 +66,6 @@ src_configure() { OPTS=() use dbus && OPTS+=("USE_DBUS=1") - if use upnp; then - OPTS+=("USE_UPNP=1") - else - OPTS+=("USE_UPNP=-") - fi - use ipv6 || OPTS+=("USE_IPV6=-") OPTS+=("BDB_INCLUDE_PATH=$(db_includedir "${DB_VER}")") diff --git a/contrib/gitian-descriptors/README b/contrib/gitian-descriptors/README deleted file mode 100644 index a2d902e..0000000 --- a/contrib/gitian-descriptors/README +++ /dev/null @@ -1,31 +0,0 @@ -Gavin's notes on getting gitian builds up and running: - -You need the right hardware: you need a 64-bit-capable CPU with hardware virtualization support (Intel VT-x or AMD-V). Not all modern CPUs support hardware virtualization. - -You probably need to enable hardware virtualization in your machine's BIOS. - -You need to be running a recent version of 64-bit-Ubuntu, and you need to install several prerequisites: - sudo apt-get install apache2 git apt-cacher-ng python-vm-builder qemu-kvm - -Sanity checks: - sudo service apt-cacher-ng status # Should return apt-cacher-ng is running - ls -l /dev/kvm # Should show a /dev/kvm device - -Once you've got the right hardware and software: - - git clone git://github.com/bitcoin/bitcoin.git - git clone git://github.com/devrandom/gitian-builder.git - mkdir gitian-builder/inputs - wget 'http://miniupnp.tuxfamily.org/files/download.php?file=miniupnpc-1.6.tar.gz' -O gitian-builder/inputs/miniupnpc-1.6.tar.gz - - cd gitian-builder - bin/make-base-vm --arch i386 - bin/make-base-vm --arch amd64 - cd .. - - # To build - cd bitcoin - git pull - cd ../gitian-builder - git pull - ./bin/gbuild --commit bitcoin=HEAD ../bitcoin/contrib/gitian.yml diff --git a/contrib/gitian-descriptors/boost-win32.yml b/contrib/gitian-descriptors/boost-win32.yml deleted file mode 100644 index 61ea50e..0000000 --- a/contrib/gitian-descriptors/boost-win32.yml +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: "boost" -suites: -- "lucid" -architectures: -- "i386" -packages: -- "mingw32" -- "faketime" -- "zip" -reference_datetime: "2011-01-30 00:00:00" -remotes: [] -files: -- "boost_1_47_0.tar.bz2" -script: | - TMPDIR="$HOME/tmpdir" - mkdir -p $TMPDIR/bin/$GBUILD_BITS $TMPDIR/include - tar xjf boost_1_47_0.tar.bz2 - cd boost_1_47_0 - echo "using gcc : 4.4 : i586-mingw32msvc-g++ - : - i586-mingw32msvc-windres - i586-mingw32msvc-ar - -frandom-seed=boost1 - ;" > user-config.jam - ./bootstrap.sh --without-icu - ./bjam toolset=gcc target-os=windows threadapi=win32 threading=multi variant=release link=static --user-config=user-config.jam --without-mpi --without-python -sNO_BZIP2=1 -sNO_ZLIB=1 --layout=tagged --build-type=complete $MAKEOPTS stage - for lib in chrono date_time exception filesystem graph iostreams math_c99f math_c99l math_c99 math_tr1f math_tr1l math_tr1 prg_exec_monitor program_options random regex serialization signals system test_exec_monitor thread_win32 unit_test_framework wave wserialization; do - mkdir $lib - (cd $lib ; ar xf ../stage/lib/libboost_${lib}-mt-s.a) - mv $lib $TMPDIR/bin/$GBUILD_BITS - done - cp -a boost $TMPDIR/include - cd $TMPDIR - export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 - export FAKETIME=$REFERENCE_DATETIME - zip -r boost-win32-1.47.0-gitian.zip * - cp boost-win32-1.47.0-gitian.zip $OUTDIR diff --git a/contrib/gitian-descriptors/deps-win32.yml b/contrib/gitian-descriptors/deps-win32.yml deleted file mode 100644 index 62b67ee..0000000 --- a/contrib/gitian-descriptors/deps-win32.yml +++ /dev/null @@ -1,71 +0,0 @@ ---- -name: "bitcoin-deps" -suites: -- "lucid" -architectures: -- "i386" -packages: -- "mingw32" -- "git-core" -- "zip" -- "faketime" -- "wine" -reference_datetime: "2011-01-30 00:00:00" -remotes: [] -files: -- "openssl-1.0.1b.tar.gz" -- "db-4.8.30.NC.tar.gz" -- "miniupnpc-1.6.tar.gz" -- "zlib-1.2.7.tar.gz" -- "libpng-1.5.12.tar.gz" -- "qrencode-3.2.0.tar.bz2" -script: | - # - export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 - export FAKETIME=$REFERENCE_DATETIME - export TZ=UTC - # - tar xzf openssl-1.0.1b.tar.gz - cd openssl-1.0.1b - ./Configure --cross-compile-prefix=i586-mingw32msvc- mingw - make - cd .. - # - tar xzf db-4.8.30.NC.tar.gz - cd db-4.8.30.NC/build_unix - ../dist/configure --enable-mingw --enable-cxx --host=i586-mingw32msvc CFLAGS="-I/usr/i586-mingw32msvc/include" - make $MAKEOPTS - cd ../.. - # - tar xzf miniupnpc-1.6.tar.gz - cd miniupnpc-1.6 - sed 's/dllwrap -k --driver-name gcc/$(DLLWRAP) -k --driver-name $(CC)/' -i Makefile.mingw - sed 's|wingenminiupnpcstrings $< $@|./wingenminiupnpcstrings $< $@|' -i Makefile.mingw - make -f Makefile.mingw DLLWRAP=i586-mingw32msvc-dllwrap CC=i586-mingw32msvc-gcc AR=i586-mingw32msvc-ar - cd .. - mv miniupnpc-1.6 miniupnpc - # - tar xzf zlib-1.2.7.tar.gz - cd zlib-1.2.7 - make -f win32/Makefile.gcc PREFIX=i586-mingw32msvc- $MAKEOPTS - cd .. - # - tar xzf libpng-1.5.12.tar.gz - cd libpng-1.5.12 - ./configure -disable-shared CC=i586-mingw32msvc-cc AR=i586-mingw32msvc-ar STRIP=i586-mingw32msvc-strip RANLIB=i586-mingw32msvc-ranlib OBJDUMP=i586-mingw32msvc-objdump LD=i586-mingw32msvc-ld LDFLAGS="-L../zlib-1.2.7/" CFLAGS="-I../zlib-1.2.7/" - make $MAKEOPTS - cd .. - # - tar xjf qrencode-3.2.0.tar.bz2 - cd qrencode-3.2.0 - ./configure CC=i586-mingw32msvc-cc AR=i586-mingw32msvc-ar STRIP=i586-mingw32msvc-strip RANLIB=i586-mingw32msvc-ranlib OBJDUMP=i586-mingw32msvc-objdump LD=i586-mingw32msvc-ld png_LIBS="../libpng-1.5.12/.libs/libpng15.a ../zlib-1.2.7/libz.a" png_CFLAGS="-I../libpng-1.5.12" - make $MAKEOPTS - cd .. - # - zip -r $OUTDIR/ppcoin-deps-0.0.1.zip \ - $(ls qrencode-*/{qrencode.h,.libs/libqrencode.{,l}a} | sort) \ - $(ls db-*/build_unix/{libdb_cxx.a,db.h,db_cxx.h,libdb.a,.libs/libdb_cxx-?.?.a} | sort) \ - $(find openssl-* -name '*.a' -o -name '*.h' | sort) \ - $(find miniupnpc -name '*.h' -o -name 'libminiupnpc.a' | sort) - # Kill wine processes as gitian won't figure out we are done otherwise - killall wineserver services.exe explorer.exe winedevice.exe diff --git a/contrib/gitian-descriptors/gitian-win32.yml b/contrib/gitian-descriptors/gitian-win32.yml deleted file mode 100644 index 8e9e635..0000000 --- a/contrib/gitian-descriptors/gitian-win32.yml +++ /dev/null @@ -1,74 +0,0 @@ ---- -name: "ppcoin" -suites: -- "lucid" -architectures: -- "i386" -packages: -- "mingw32" -- "git-core" -- "unzip" -- "nsis" -- "faketime" -reference_datetime: "2011-01-30 00:00:00" -remotes: -- "url": "https://github.com/ppcoin/ppcoin.git" - "dir": "ppcoin" -files: -- "qt-win32-4.7.4-gitian.zip" -- "boost-win32-1.47.0-gitian.zip" -- "ppcoin-deps-0.0.1.zip" -script: | - # - mkdir $HOME/qt - cd $HOME/qt - unzip ../build/qt-win32-4.7.4-gitian.zip - cd $HOME/build/ - export PATH=$PATH:$HOME/qt/bin/ - # - mkdir boost_1_47_0 - cd boost_1_47_0 - mkdir -p stage/lib - unzip ../boost-win32-1.47.0-gitian.zip - cd bin/$GBUILD_BITS - for lib in *; do - i586-mingw32msvc-ar rc ../../stage/lib/libboost_${lib}-mt-s.a $lib/*.o - i586-mingw32msvc-ranlib ../../stage/lib/libboost_${lib}-mt-s.a - done - cd ../.. - mv include/boost . - cd .. - # - unzip ppcoin-deps-0.0.1.zip - # - find -type f | xargs touch --date="$REFERENCE_DATETIME" - # - cd ppcoin - mkdir -p $OUTDIR/src - git archive HEAD | tar -x -C $OUTDIR/src - cp $OUTDIR/src/doc/README_windows.txt $OUTDIR/readme.txt - cp $OUTDIR/src/COPYING $OUTDIR/license.txt - export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 - export FAKETIME=$REFERENCE_DATETIME - export TZ=UTC - $HOME/qt/src/bin/qmake -spec unsupported/win32-g++-cross MINIUPNPC_LIB_PATH=$HOME/build/miniupnpc MINIUPNPC_INCLUDE_PATH=$HOME/build/ BDB_LIB_PATH=$HOME/build/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=$HOME/build/db-4.8.30.NC/build_unix BOOST_LIB_PATH=$HOME/build/boost_1_47_0/stage/lib BOOST_INCLUDE_PATH=$HOME/build/boost_1_47_0 BOOST_LIB_SUFFIX=-mt-s BOOST_THREAD_LIB_SUFFIX=_win32-mt-s OPENSSL_LIB_PATH=$HOME/build/openssl-1.0.1b OPENSSL_INCLUDE_PATH=$HOME/build/openssl-1.0.1b/include QRENCODE_LIB_PATH=$HOME/build/qrencode-3.2.0/.libs QRENCODE_INCLUDE_PATH=$HOME/build/qrencode-3.2.0 INCLUDEPATH=$HOME/build DEFINES=BOOST_THREAD_USE_LIB BITCOIN_NEED_QT_PLUGINS=1 QMAKE_LRELEASE=lrelease QMAKE_CXXFLAGS=-frandom-seed=ppcoin QMAKE_LFLAGS=-frandom-seed=ppcoin USE_BUILD_INFO=1 - make $MAKEOPTS - cp release/ppcoin-qt.exe $OUTDIR/ - # - cd src - export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 - export FAKETIME=$REFERENCE_DATETIME - export TZ=UTC - make -f makefile.linux-mingw $MAKEOPTS DEPSDIR=$HOME/build ppcoind.exe USE_UPNP=1 DEBUGFLAGS="-frandom-seed=ppcoin" - i586-mingw32msvc-strip ppcoind.exe - mkdir $OUTDIR/daemon - cp ppcoind.exe $OUTDIR/daemon - cd .. - mkdir nsis - git archive HEAD | tar -x -C nsis - cd nsis/src - mkdir ../release - cp ../../release/* ../release/ - cp ../../src/*.exe . - makensis ../share/setup.nsi - cp ../share/ppcoin-*-win32-setup.exe $OUTDIR/ diff --git a/contrib/gitian-descriptors/gitian.yml b/contrib/gitian-descriptors/gitian.yml deleted file mode 100644 index 6693eef..0000000 --- a/contrib/gitian-descriptors/gitian.yml +++ /dev/null @@ -1,56 +0,0 @@ ---- -name: "ppcoin" -suites: -- "lucid" -architectures: -- "i386" -- "amd64" -packages: -- "libdb4.8++-dev" -- "qt4-qmake" -- "libqt4-dev" -- "libboost-system-dev" -- "libboost-filesystem-dev" -- "libboost-program-options-dev" -- "libboost-thread-dev" -- "libssl-dev" -- "git-core" -- "unzip" -- "pkg-config" -- "libpng12-dev" -reference_datetime: "2011-01-30 00:00:00" -remotes: -- "url": "https://github.com/ppcoin/ppcoin.git" - "dir": "ppcoin" -files: -- "miniupnpc-1.6.tar.gz" -- "qrencode-3.2.0.tar.bz2" -script: | - INSTDIR="$HOME/install" - export LIBRARY_PATH="$INSTDIR/lib" - # - tar xzf miniupnpc-1.6.tar.gz - cd miniupnpc-1.6 - INSTALLPREFIX=$INSTDIR make $MAKEOPTS install - cd .. - # - tar xjf qrencode-3.2.0.tar.bz2 - cd qrencode-3.2.0 - ./configure --prefix=$INSTDIR --enable-static --disable-shared - make $MAKEOPTS install - cd .. - # - cd ppcoin - mkdir -p $OUTDIR/src - git archive HEAD | tar -x -C $OUTDIR/src - cp $OUTDIR/src/doc/README $OUTDIR - cp $OUTDIR/src/COPYING $OUTDIR - cd src - make -f makefile.unix STATIC=1 OPENSSL_INCLUDE_PATH="$INSTDIR/include" OPENSSL_LIB_PATH="$INSTDIR/lib" $MAKEOPTS ppcoind USE_UPNP=1 DEBUGFLAGS= - mkdir -p $OUTDIR/bin/$GBUILD_BITS - install -s ppcoind $OUTDIR/bin/$GBUILD_BITS - # - cd .. - qmake INCLUDEPATH="$INSTDIR/include" LIBS="-L$INSTDIR/lib" RELEASE=1 - make $MAKEOPTS - install ppcoin-qt $OUTDIR/bin/$GBUILD_BITS diff --git a/contrib/gitian-descriptors/qt-win32.yml b/contrib/gitian-descriptors/qt-win32.yml deleted file mode 100644 index 6eb76b2..0000000 --- a/contrib/gitian-descriptors/qt-win32.yml +++ /dev/null @@ -1,54 +0,0 @@ ---- -name: "qt" -suites: -- "lucid" -architectures: -- "i386" -packages: -- "mingw32" -- "zip" -- "faketime" -reference_datetime: "2011-01-30 00:00:00" -remotes: [] -files: -- "qt-everywhere-opensource-src-4.7.4.tar.gz" -script: | - INSTDIR="$HOME/qt/" - mkdir $INSTDIR - SRCDIR="$INSTDIR/src/" - mkdir $SRCDIR - # - tar xzf qt-everywhere-opensource-src-4.7.4.tar.gz - cd qt-everywhere-opensource-src-4.7.4 - sed 's/$TODAY/2011-01-30/' -i configure - sed 's/i686-pc-mingw32-/i586-mingw32msvc-/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix 's|QMAKE_CFLAGS\t\t= -pipe|QMAKE_CFLAGS\t\t= -pipe -isystem /usr/i586-mingw32msvc/include/ -frandom-seed=qtbuild|' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed 's/QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads/QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed 's/QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads/QMAKE_LFLAGS_EXCEPTIONS_ON = -lmingwthrd/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix 's/QMAKE_MOC\t\t= i586-mingw32msvc-moc/QMAKE_MOC\t\t= moc/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix 's/QMAKE_RCC\t\t= i586-mingw32msvc-rcc/QMAKE_RCC\t\t= rcc/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix 's/QMAKE_UIC\t\t= i586-mingw32msvc-uic/QMAKE_UIC\t\t= uic/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - # ar adds timestamps to every object file included in the static library - # providing -D as ar argument is supposed to solve it, but doesn't work as qmake strips off the arguments and adds -M to pass a script... - # which somehow cannot be combined with other flags. - # use faketime only for ar, as it confuses make/qmake into hanging sometimes - sed --posix "s|QMAKE_LIB\t\t= i586-mingw32msvc-ar -ru|QMAKE_LIB\t\t= $HOME/ar -Dr|" -i mkspecs/unsupported/win32-g++-cross/qmake.conf - echo '#!/bin/bash' > $HOME/ar - echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> $HOME/ar - echo 'i586-mingw32msvc-ar "$@"' >> $HOME/ar - chmod +x $HOME/ar - #export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 - export FAKETIME=$REFERENCE_DATETIME - export TZ=UTC - ./configure -prefix $INSTDIR -confirm-license -release -opensource -static -no-qt3support -xplatform unsupported/win32-g++-cross -no-multimedia -no-audio-backend -no-phonon -no-phonon-backend -no-declarative -no-script -no-scripttools -no-javascript-jit -no-webkit -no-svg -no-xmlpatterns -no-sql-sqlite -no-nis -no-cups -no-iconv -no-dbus -no-gif -no-libtiff -opengl no -nomake examples -nomake demos -nomake docs - find . -name *.prl | xargs -l sed 's|/\.||' -i - find . -name *.prl | xargs -l sed 's|/$||' -i - make $MAKEOPTS install - cp -a bin $SRCDIR/ - cd $INSTDIR - find . -name *.prl | xargs -l sed 's|/$||' -i - #sed 's|QMAKE_PRL_LIBS.*|QMAKE_PRL_LIBS = -lQtDeclarative -lQtScript -lQtSvg -lQtSql -lQtXmlPatterns -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtNetwork -lQtCore -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32|' -i imports/Qt/labs/particles/qmlparticlesplugin.prl - - # as zip stores file timestamps, use faketime to intercept stat calls to set dates for all files to reference date - export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 - zip -r $OUTDIR/qt-win32-4.7.4-gitian.zip * diff --git a/contrib/gitian-downloader/bluematt-key.pgp b/contrib/gitian-downloader/bluematt-key.pgp deleted file mode 100644 index fb6d9eb28423d2c8ece89179f8e67ae06fa6dc13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4113 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 diff --git a/contrib/gitian-downloader/gavinandresen-key.pgp b/contrib/gitian-downloader/gavinandresen-key.pgp deleted file mode 100644 index f81f44e874707837c13446858db2fed14ad5c501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1176 zcmV;J1ZVr10ipyd+BPOXG1ZrDpv%iXyY*~=|+SlmVRJ2@d|5G=3lw%C&g;j0KvRW zG0RVD!3nRuh%R)pia&~L1FEOGx;eXR*K` zu*WO05N?XC!C+-X<8ovFvIpC&fxEyfX(2{j!G#JZ7?CU%mrw)$TSGNqq(L>S_EMhm z>C$tB193UkB)z)vhMWgbGCTvPxP}Kfdx0GIl8t06ZPII(&3kQCzEXv7#M)%vPj{EY zcen(gIU`UxU-nd2`Gon+|B_0Ff*@;+F`bIwREZv?xbmc4=-PL2hJnWpib2AUtPbc4=;5Ze((0b7gKoXKi6=Y%XJO zZ9a%*1QQVg044HzfCdW*2nPcK1Qh}Z0|XWV0|5da0Rk6*0162Z zb%-P{zBtpUe6IkY$jlON2g&-~!PtabhH%KRx;RqM0G%3)n>ot_(%$#C+gXU@atMHu zy_C5E4FpWQvb7Kh0Lyf?4-i~4^f3$`ga{Ay5*wreKf>2lV6ywp8d}7ENW=D%ux6^* zfe_#szOQ3V{y*tz7?DrDyfq@LWFCHCr%@-(h(6PCP!Kw9x74URPC$@TblGE?^C!T- zq8)?0%b0~_Ytjnul$QnT9RS<*D5dmu1n$x{uRAV*zh*N+8p9}Ho%Pe)*0 zMnEdZ`oH?%L4~7A1F_aQ|8Rcjri-TI9EL4W#QMcIXrNTVrH)rvOHg%{!T`G$1?>8K zRy|m)M}%VOrUsN$>#AQvZnPq$teX`yY;D;>tsyDHK5Qtj#S?asN{)W{exHw@bhzOU z9^1V{J3(+Kj{pM&2mgPBEamX!SrHwdYa^4uCaz(-f7?+0M)V2mw#6{WkHkn8b1R-^ zYDL+eN?p#i&&iBy&Go@UU6MyD*c7YSQ3wLLX`?CdU~}FpEb`VEVP6+=?&FSbCm=k@ z&d1&vM(f=F5d18_%WVyD>j@@JhkmOlWQELtPqF$CFI z6&Wk2#X|#%!_kOO1Q-zl01pKMOuVwS0vikk2`>HzfB*^!5Os(oFTOa_s4)oupKEmm q7ky6Gg$kN{t|V0xiYY!|8vvlVg5(~9gx$G(luB9`Z;BnEL2B3d)*1@{ diff --git a/contrib/gitian-downloader/laanwj-key.pgp b/contrib/gitian-downloader/laanwj-key.pgp deleted file mode 100644 index 5592951..0000000 --- a/contrib/gitian-downloader/laanwj-key.pgp +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: SKS 1.1.0 - -mQENBE5UtMEBCADOUz2i9l/D8xYINCmfUDnxi+DXvX5LmZ39ZdvsoE+ugO0SRRGdIHEFO2is -0xezX50wXu9aneb+tEqM0BuiLo6VxaXpxrkxHpr6c4jf37SkE/H0qsi/txEUp7337y3+4HMG -lUjiuh802I72p1qusjsKBnmnnR0rwNouTcoDmGUDh7jpKCtzFv+2TR2dRthJn7vmmjq3+bG6 -PYfqoFY1yHrAGT1lrDBULZsQ/NBLI2+J4oo2LYv3GCq8GNnzrovqvTvui50VSROhLrOe58o2 -shE+sjQShAy5wYkPt1R1fQnpfx+5vf+TPnkxVwRb3h5GhCp0YL8XC/BXsd5vM4KlVH2rABEB -AAG0K1dsYWRpbWlyIEouIHZhbiBkZXIgTGFhbiA8bGFhbndqQGdtYWlsLmNvbT6JATgEEwEC -ACIFAk5UtMECGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHSBCwEjRsmmy6YIAK09 -buNXyYQrJBsX16sXxEhx5QPKyF3uHJDFJv66SdnpvIkNoznsaPiRJkbTANop93FZmaGa6wVn -zGDiz7jPA8Dpxx5aAYPhIT+zPJAdXWM3wJ/Gio9besRNzniai8Lwi5MZ9R/5yFGBobm6/AcN -4sUoqA3NSV2U3I29R0Vwlzo8GVtmyi9ENSi6Oo7AcXNTRt69cxW4nAHkB+amwwDJlcAb31ex -bogYXPhScwqQZixRr+JBkKxBjkTXXnQypT4KI5SegYwQVYfyiZmDP7UHKe/u6pSKKbVphLg8 -xLB5spcXse8/a2+onrbNlw6y8TXiJ++Z54PE7zztWTXf2huakeG5AQ0ETlS0wQEIAMNO3OkP -xoPRKWzBLcI7JRITAW+HNaLTq3uN2+4WxA57DEjbL9EDoAv+7wTkDAL40f0T+xiu6GJcLFjw -GJZu/tYu7+mErHjrdo+K4suCQt7w5EXCBvOLjhW4tyYMzNx8hP+oqzOW9iEC+6VV91+DYeqt -EkJuyVXOI4vzBlTw8uGow8aMMsCq8XVvKUZFTPsjGl197Q5B3A+ZOFCR8xqiqdPjuz6MglVV -oFdDNu3EZn8zkGsQlovXoE9ndVeVzx/XMNmsxFaMYsReUs253RIf1FEfgExID0fg2OnyLCjS -2iFW1RgajS+/saIkKl+N1iuMzJA7wMAM0plhRueOG0MtZSsAEQEAAYkBHwQYAQIACQUCTlS0 -wQIbDAAKCRB0gQsBI0bJpmsDB/4waenn2CvSHXyomykfpwf5lMte1V5LvH3z5R2LY+1NopRv -LSz3iC39x69XWiTbhywDfgafnGPW4pWBOff2/bu5/A6z1Hnan1vyrRRD/hx1uMJ7S6q+bIvZ -iVIg1p0jH6tdIIhwX3cydhdRZHo7e9oSMgOUWsr6Ar59NRo9CENwGPE4U61HXfOnxWdrFWoA -XdwZczBeLxmUy6Vo6sKqv+gE4bqrtAM0sY/MsQ9cU95x+52ox/sq44lQMwd3ZBYUP7B1qbHI -hZSZuch6MLi5scLPeau0ZvCaljiaMeivP5+x0gWPRs0kI+9sZxInbqvrsJ6oOBJM3xYGhtn1 -zZ7qmZR7 -=si/k ------END PGP PUBLIC KEY BLOCK----- diff --git a/contrib/gitian-downloader/linux-download-config b/contrib/gitian-downloader/linux-download-config deleted file mode 100644 index aef614d..0000000 --- a/contrib/gitian-downloader/linux-download-config +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: bitcoin -urls: -- http://bitcoin.org/bitcoin-latest-linux-gitian.zip -rss: -- url: http://sourceforge.net/api/file/index/project-id/244765/mtime/desc/limit/100/rss - xpath: //item/link/text() - pattern: bitcoin-\d+.\d+.\d+-linux-gitian.zip -signers: - 0A82509767C7D4A5D14DA2301AE1D35043E08E54: - weight: 40 - name: BlueMatt - key: bluematt - BF6273FAEF7CC0BA1F562E50989F6B3048A116B5: - weight: 40 - name: Devrandom - key: devrandom - E463A93F5F3117EEDE6C7316BD02942421F4889F: - weight: 40 - name: Luke-Jr - key: luke-jr - D762373D24904A3E42F33B08B9A408E71DAAC974: - weight: 40 - name: "Pieter Wuille" - key: sipa - 77E72E69DA7EE0A148C06B21B34821D4944DE5F7: - weight: 40 - name: tcatm - key: tcatm - 01CDF4627A3B88AAE4A571C87588242FBE38D3A8: - weight: 40 - name: "Gavin Andresen" - key: gavinandresen - 71A3B16735405025D447E8F274810B012346C9A6: - weight: 40 - name: "Wladimir J. van der Laan" - key: laanwj -minimum_weight: 120 diff --git a/contrib/gitian-downloader/luke-jr-key.pgp b/contrib/gitian-downloader/luke-jr-key.pgp deleted file mode 100644 index c40917d78c512ac13414b0d9e92c59f57e6a9c77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5467 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 CBINY| diff --git a/contrib/gitian-downloader/sunnyking-key.gpg b/contrib/gitian-downloader/sunnyking-key.gpg deleted file mode 100644 index 16b2a40..0000000 --- a/contrib/gitian-downloader/sunnyking-key.gpg +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.10 (GNU/Linux) - -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 -KIjGheFAFTRFLgBmol4= -=Qxzm ------END PGP PUBLIC KEY BLOCK----- diff --git a/contrib/gitian-downloader/tcatm-key.pgp b/contrib/gitian-downloader/tcatm-key.pgp deleted file mode 100644 index baaec76b8c656a04beb4a91155dff40658c87bd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1554 zcmaLXdpOez7zgm}=ej6sb1Pa#8IlSy8m4eWF6A1DTv~I_jFQVZ%x!YXHIs5;lv2b&au>j&AO;b^5AaZw zS_2#|)T*hrzK+H*LHsz!|6K?Ku&VUx#NdeA@N5NXFT>aIOjxF zy4whds0=Oq(@2 zz5C0o8+C^w{_b)@?4r`gwi%FXMnpT2F%#BQYsG;hiPIg))5Y|!x1ZJex)A$MiNNX( zq6&=I<&6kZI1wW|8o{H$=I*P|T^9^$R+XKtQ`SnvhEOJ;uhQjn2CWkmj_^7`Aa3c- z8Zs}@d#(_b{reL%xnIYqQg<&4Shq?0ZMJt4#E_eu1;rw?zks%bLEvhXHQt|~VCQuq z&A-#OrVqAfk)-lg}vy7 zYs{BAGW}t+Bct766}J4~uIL-c)@4fnX~wI?{tt{!6ZM`1wc=GKOA;;?`>n3icWB0G zn*||8j}j?7(5Ob(-PQ-uJThqd2@S1uW*w1X-|9A4-%6Qux^GMLljXjQ)sN@kpv?VO z)UkLWhmj->gnz;q!4owp@2yD~e{+z0Gz?Wg#-nKk+Qh}dVfq|kPnBUdp-;hvz)x2t zD?{SnDzor5MGJ>X13OouOQ(XXjf?e%bQ%eENi%61!fX|rVS*-fUgk}jZXdQS*=pu7 zn*l%)vEtxtnsfe78h_1@2}w%6!25|yQBmC1DEcXumbL82v@a7>)Mz3#h|4L`WPlN(+95yvu#{C!>gm(Nv!S*Yv%^(qS9*ha8g`_+-5KMB1k7w}O?nKX_$dgx0zKT> zsK@?(;%%efAn>h*Z*5Z>_ERN@VpIEg)VY;7&-da56_Nt)d)n(s{^moqKbzg#(kvLW z_g3p9;|WwT=QceTow#FuTvuyb#6|7txyOiS%w#V=}?{wnLKuU3K z)LKWy{tfcIT~3<;zL)*5y45%&9BU728+bn0YHD;;MHsu8*-lKYQs(yGsc3#7XH3FF z)6ZNg<)%-4Jo9KihD(yQ2p@45F;h{7b%utDjKt-eDI`%@T2fxC!k6(j540(SjvdEY z&4sPj$l9*nt{0{Ksm2XXNloeRVl7wfZyz{W@(szDaGi^F^8SE`Mg86EWbj@=+3$sw z5CVQYJU~ud2m(0|CjFY5huQFyjG2;4Ye>`;Or>jAW`VBfSSCzgV_T@{G&oZG zMZ&q+CGm;Gb?Vy`__|_oh6ILLkb2J~@O-;TLScpzuRgCrq~`N8>#L#y{$+GFo~DN* zIi%T&4(?=Dgd6kV_SqzM&HYCc@^&t@&q)T@niB6VT*F0pG7n11dnBi@v SyHEabV7`Cld{4j= 0.91.8) but it is not going to be installed @@ -18,7 +18,7 @@ libclutter-1.0-0 : Depends: libcogl-pango15 (>= 1.15.8) but it is not going to b sudo apt-get install libglew-dev libcheese7 libcheese-gtk23 libclutter-gst-2.0-0 libcogl15 libclutter-gtk-1.0-0 libclutter-1.0-0 xserver-xorg-input-all openSUSE(проверено на версии 13.2): - sudo zypper install git gcc gcc-c++ libqt4-devel boost-devel libopenssl-devel libdb-4_8-devel libminiupnpc-devel libqrencode3 + sudo zypper install git gcc gcc-c++ libqt4-devel boost-devel libopenssl-devel libdb-4_8-devel libqrencode3 После того, как установка завершалась, можно клонировать Novacoin репозитарий @@ -27,10 +27,10 @@ openSUSE(проверено на версии 13.2): и наконец, скомпилировать свой клиент cd novacoin - qmake USE_UPNP=1 USE_O3=1 USE_ASM=1 (если хотите LevelDB, то USE_LEVELDB=1) + qmake USE_O3=1 USE_ASM=1 (если хотите LevelDB, то USE_LEVELDB=1) make cd src - make -f makefile.unix USE_UPNP=1 USE_O3=1 USE_ASM=1 (если хотите LevelDB, то USE_LEVELDB=1) + make -f makefile.unix USE_O3=1 USE_ASM=1 (если хотите LevelDB, то USE_LEVELDB=1) strip novacoind Команды выше компилируют бинарные файлы с динамической линковкой, если вы хотите со статической линковкой и ваш дистрибутив содержит статические библиотеки(.a , а не .so), то добавьте: diff --git a/doc/building novacoind and novacoinqt under Windows with MSVC.txt b/doc/building novacoind and novacoinqt under Windows with MSVC.txt index 24a2aef..44b9e91 100644 --- a/doc/building novacoind and novacoinqt under Windows with MSVC.txt +++ b/doc/building novacoind and novacoinqt under Windows with MSVC.txt @@ -62,17 +62,7 @@ C:\MyProjects\Deps\db-6.0.20\build_windows\x64\Static Debug\libdb60sd.lib cd C:\MyProjects\Deps\build-helpers buildboost.bat -2.4 Miniupnpc --Скачайте http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.8.20131209.tar.gz --Распакуйте miniupnpc-1.8.20131209.tar.gz с помощью 7z. (Распаковать нужно 2 раза, нажмите на файле miniupnpc-1.8.20131209.tar.gz левой кнопкой мыши и выберите 7-Zip, затем Распаковать здесь. Появится файл miniupnpc-1.8.20131209.tar. С ним аналогично, левая кнопка мыши -> 7-Zip -> Распаковать здесь. Появится папка miniupnpc-1.8.20131209. --Переименуйте папку в miniupnpc. --Если вам нужна поддержка Windows XP, то откройте файл miniupnpc.c и добавьте после всех инклудов #undef IF_NAMESIZE --Откройте командную строку Windows и выполните следующий код: - -cd C:\MyProjects\Deps\build-helpers -buildminiupnpc.bat - -2.5 qrencode +2.4 qrencode -Скачайте http://qrencode-win32.googlecode.com/archive/681f2ea7a41f919486d9932b3352a2e6920e1cb9.zip -Распакуйте -Откройте командную строку Windows и выполните следующий код: @@ -80,7 +70,7 @@ buildminiupnpc.bat cd C:\MyProjects\Deps\build-helpers buildqrcode.bat -2.6 Qt 5 +2.5 Qt 5 -Скачайте http://download.qt-project.org/official_releases/qt/5.3/5.3.2/single/qt-everywhere-opensource-src-5.3.2.7z -Распакуйте в C:\MyProjects\Deps -Если вам нужна поддержка 64 bit, то переименуйте папку qt-everywhere-opensource-src-5.3.2 в qt-everywhere-opensource-src-5.3.2-64 diff --git a/doc/building novacoind and novacoinqt under Windows with MinGW.txt b/doc/building novacoind and novacoinqt under Windows with MinGW.txt index df61439..885b7fb 100644 --- a/doc/building novacoind and novacoinqt under Windows with MinGW.txt +++ b/doc/building novacoind and novacoinqt under Windows with MinGW.txt @@ -68,15 +68,7 @@ cd C:\deps\boost_1_57_0\ bootstrap.bat mingw b2 --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread toolset=gcc variant=release link=static threading=multi runtime-link=static stage -2.4 Miniupnpc --Скачайте http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.9.20150206.tar.gz --Распакуйте miniupnpc-1.9.20150206.tar.gz с помощью 7z. (Распаковать нужно 2 раза, нажмите на файле miniupnpc-1.9.20150206.tar.gz левой кнопкой мыши и выберите 7-Zip, затем Распаковать здесь. Появится файл miniupnpc-1.9.20150206.tar. С ним аналогично, левая кнопка мыши -> 7-Zip -> Распаковать здесь. Появится папка miniupnpc-1.9.20150206. Переименуйте её в miniupnpc. --Откройте командную строку Windows, и выполните следующий код: - -cd C:\deps\miniupnpc -mingw32-make -f Makefile.mingw init upnpc-static - -2.5 qrencode +2.4 qrencode -Скачайте http://download.sourceforge.net/libpng/libpng-1.6.15.tar.gz?download -Распакуйте -Откройте MinGw shell (C:\MinGW\msys\1.0\msys.bat) и выполните следующий код: @@ -99,7 +91,7 @@ configure --enable-static --disable-shared --without-tools make -2.6 Qt 5 и Qt 4 +2.5 Qt 5 и Qt 4 Библиотеки Qt будем хранить в папке C:\Qt Для ускорения компиляции вместо mingw32-make @@ -158,7 +150,6 @@ mingw32-make 3.2 Собираем novacoind -Перейдите в папку C:\MyProjects\novacoin-master\src -Откройте файл makefile.mingw в текстовом редакторе.(При написании инструкции использовался WordPad) --Поменяйте USE_UPNP:=0 на USE_UPNP:=1 -Добавьте строчку USE_ASM:=1 -Поменяйте текущие INCLUDEPATHS, LIBPATHS, LIBS на: @@ -174,7 +165,6 @@ INCLUDEPATHS= \ LIBPATHS= \ -L"$(CURDIR)/leveldb" \ -L"/c/deps/boost_1_57_0/stage/lib" \ - -L"/c/deps/miniupnpc" \ -L"/c/deps/db-6.0.20/build_unix" \ -L"/c/deps/openssl-1.0.2" @@ -251,8 +241,6 @@ BDB_INCLUDE_PATH=C:/deps/db-6.0.20/build_unix BDB_LIB_PATH=C:/deps/db-6.0.20/build_unix OPENSSL_INCLUDE_PATH=C:/deps/openssl-1.0.2/include OPENSSL_LIB_PATH=C:/deps/openssl-1.0.2 -MINIUPNPC_INCLUDE_PATH=C:/deps/ -MINIUPNPC_LIB_PATH=C:/deps/miniupnpc QRENCODE_INCLUDE_PATH=C:/deps/qrencode-3.4.4 QRENCODE_LIB_PATH=C:/deps/qrencode-3.4.4/.libs @@ -284,7 +272,7 @@ Qt5 + транзакционный индекс BDB set PATH=%PATH%;C:\Qt\5.4.0\bin cd C:\MyProjects\novacoin-master -qmake "USE_UPNP=1" "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro +qmake "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro mingw32-make -f Makefile.Release @@ -292,21 +280,21 @@ Qt5 + транзакционный индекс LevelDB set PATH=%PATH%;C:\Qt\5.4.0\bin cd C:\MyProjects\novacoin-master -qmake "USE_UPNP=1" "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro +qmake "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro mingw32-make -f Makefile.Release Qt4 + транзакционный индекс BDB set PATH=%PATH%;C:\Qt\4.8.6\bin cd C:\MyProjects\novacoin-master -qmake "USE_UPNP=1" "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro +qmake "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro mingw32-make -f Makefile.Release Qt4 + транзакционный индекс LevelDB set PATH=%PATH%;C:\Qt\4.8.6\bin cd C:\MyProjects\novacoin-master -qmake "USE_UPNP=1" "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro +qmake "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro mingw32-make -f Makefile.Release @@ -360,9 +348,7 @@ make 2.3 Так же как 32 bit, только распаковка в C:\deps\x64 и команда cd C:\deps\boost_1_57_0\ меняется на cd C:\deps\x64\boost_1_57_0\ -2.4 Так же как 32 bit, только распаковка в C:\deps\x64 и заменить cd C:\deps\miniupnpc на cd C:\deps\x64\miniupnpc - -2.5 Часть с libpng так же как 32 bit, только распаковка в C:\deps\x64 +2.4 Часть с libpng так же как 32 bit, только распаковка в C:\deps\x64 Затем -Скачайте http://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz -Распакуйте в C:\deps\x64 @@ -378,7 +364,7 @@ configure --enable-static --disable-shared --without-tools make -2.6 Qt 5 и Qt 4 +2.5 Qt 5 и Qt 4 Библиотеки Qt будем хранить в папке C:\Qt Для ускорения компиляции вместо mingw32-make @@ -481,7 +467,7 @@ Qt5 + транзакционный индекс BDB set PATH=%PATH%;C:\Qt\5.4.0-x64\bin cd C:\MyProjects\novacoin-master -qmake "USE_UPNP=1" "USE_IPV6=1" "USE_ASM=1" novacoin-qt64.pro +qmake "USE_IPV6=1" "USE_ASM=1" novacoin-qt64.pro mingw32-make -f Makefile.Release @@ -489,21 +475,21 @@ Qt5 + транзакционный индекс LevelDB set PATH=%PATH%;C:\Qt\5.4.0-x64\bin cd C:\MyProjects\novacoin-master -qmake "USE_UPNP=1" "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt64.pro +qmake "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt64.pro mingw32-make -f Makefile.Release Qt4 + транзакционный индекс BDB set PATH=%PATH%;C:\Qt\4.8.6-x64\bin cd C:\MyProjects\novacoin-master -qmake "USE_UPNP=1" "USE_IPV6=1" "USE_ASM=1" novacoin-qt64.pro +qmake "USE_IPV6=1" "USE_ASM=1" novacoin-qt64.pro mingw32-make -f Makefile.Release Qt4 + транзакционный индекс LevelDB set PATH=%PATH%;C:\Qt\4.8.6-x64\bin cd C:\MyProjects\novacoin-master -qmake "USE_UPNP=1" "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt64.pro +qmake "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt64.pro mingw32-make -f Makefile.Release Если всё сделано правильно, то файл novacoin-qt.exe будет находится в папке C:\MyProjects\novacoin-master\release diff --git a/doc/crosscompiling_building Windows binary under Unix.txt b/doc/crosscompiling_building Windows binary under Unix.txt index 7a48736..54bc8c9 100644 --- a/doc/crosscompiling_building Windows binary under Unix.txt +++ b/doc/crosscompiling_building Windows binary under Unix.txt @@ -66,59 +66,7 @@ libz.a libdb.a libdb_cxx.a -2.5) Miniupnpc --Скачайте http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.9.20150206.tar.gz --Распакуйте в домашнюю папку --Переименуйте папку miniupnpc-1.9.20150206 в miniupnpc --Перейдите в папку miniupnpc и создайте файл miniupnpcstrings.h --Напишите в нём: - -#ifndef MINIUPNPCSTRINGS_H_INCLUDED -#define MINIUPNPCSTRINGS_H_INCLUDED - -#define OS_STRING "MSWindows/6.1.7601" -#define MINIUPNPC_VERSION_STRING "1.9" - -#if 0 -/* according to "UPnP Device Architecture 1.0" */ -#define UPNP_VERSION_STRING "UPnP/1.0" -#else -/* according to "UPnP Device Architecture 1.1" */ -#define UPNP_VERSION_STRING "UPnP/1.1" -#endif - -#endif - -и сохраните файл --Откройте файл Makefile.mingw --Измените строку 7: -измените - CC = gcc -на - CC=$(CROSS)gcc - --Удалите строки с 67 по 73 - -wingenminiupnpcstrings: wingenminiupnpcstrings.o - -wingenminiupnpcstrings.o: wingenminiupnpcstrings.c - -miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings - wingenminiupnpcstrings $< $@ - --Сохраните файл - --Откройте терминал - - export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH - make CROSS=i686-w64-mingw32.static- -f Makefile.mingw init upnpc-static - - -Проверка, что установка Miniupnpc прошла успешно: -В папке miniupnpc должен появиться файл libminiupnpc.a - - -2.6) qrencode +2.5) qrencode -Скачайте http://download.sourceforge.net/libpng/libpng-1.6.15.tar.gz?download -Распакуйте в домашнюю папку -Откройте терминал @@ -150,7 +98,7 @@ libpng.a в папке /home/<ваше имя>/qrencode-3.4.4/.libs должен быть файл: libqrencode.a -2.7 Qt 5 и Qt 4 +2.6 Qt 5 и Qt 4 Qt 4 -Откройте терминал @@ -198,7 +146,6 @@ Using Qt version 5.4.0 in /home/<ваше имя>/mxe/usr/i686-w64-mingw32.stati -Вставьте CC=$(CROSS)gcc CXX=$(CROSS)g++ --Поменяйте USE_UPNP:=0 на USE_UPNP:=1 -Добавьте строчку USE_ASM:=1 -Поменяйте текущие INCLUDEPATHS, LIBPATHS, LIBS на: @@ -213,7 +160,6 @@ INCLUDEPATHS= \ LIBPATHS= \ -L"$(CURDIR)/leveldb" \ -L"/home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/lib" \ - -L"/home/<ваше имя>/miniupnpc" \ -L"/home/<ваше имя>/db-6.0.20/build_unix" \ LIBS= \ @@ -301,8 +247,6 @@ BDB_INCLUDE_PATH=/home/<ваше имя>/db-6.0.20/build_unix BDB_LIB_PATH=//home/<ваше имя>/db-6.0.20/build_unix OPENSSL_INCLUDE_PATH=/home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/include OPENSSL_LIB_PATH=/home/<ваше имя>/mxe/usr/i686-w64-mingw32.static/lib -MINIUPNPC_INCLUDE_PATH=/home/<ваше имя>/ -MINIUPNPC_LIB_PATH=/home/<ваше имя>/miniupnpc QRENCODE_INCLUDE_PATH=/home/<ваше имя>/qrencode-3.4.4 QRENCODE_LIB_PATH=/home/<ваше имя>/qrencode-3.4.4/.libs @@ -344,28 +288,28 @@ Qt4 + транзакционный индекс LevelDB export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH cd /home/<ваше имя>/novacoin -i686-w64-mingw32.static-qmake-qt4 "USE_UPNP=1" "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro +i686-w64-mingw32.static-qmake-qt4 "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro make -j n -f Makefile.Release (вместо n количество ядер вашего процессора, которые вы хотите выделить под сборку) Qt4 + транзакционный индекс BDB export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH cd /home/<ваше имя>/novacoin -i686-w64-mingw32.static-qmake-qt4 "USE_UPNP=1" "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro +i686-w64-mingw32.static-qmake-qt4 "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro make -j n -f Makefile.Release (вместо n количество ядер вашего процессора, которые вы хотите выделить под сборку) Qt5 + транзакционный индекс LevelDB export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH cd /home/<ваше имя>/novacoin -i686-w64-mingw32.static-qmake-qt5 "USE_UPNP=1" "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro +i686-w64-mingw32.static-qmake-qt5 "USE_IPV6=1" "USE_LEVELDB=1" "USE_ASM=1" novacoin-qt.pro make -j n -f Makefile.Release (вместо n количество ядер вашего процессора, которые вы хотите выделить под сборку) Qt5 + транзакционный индекс BDB export PATH=/home/<ваше имя>/mxe/usr/bin:$PATH cd /home/<ваше имя>/novacoin -i686-w64-mingw32.static-qmake-qt5 "USE_UPNP=1" "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro +i686-w64-mingw32.static-qmake-qt5 "USE_IPV6=1" "USE_ASM=1" novacoin-qt.pro make -j n -f Makefile.Release (вместо n количество ядер вашего процессора, которые вы хотите выделить под сборку) diff --git a/doc/readme-qt.rst b/doc/readme-qt.rst index 73be0c8..955bcfa 100644 --- a/doc/readme-qt.rst +++ b/doc/readme-qt.rst @@ -26,7 +26,7 @@ for Ubuntu >= 12.04 (please read the 'Berkely DB version warning' below): apt-get install qt4-qmake libqt4-dev build-essential libboost-dev libboost-system-dev \ libboost-filesystem-dev libboost-program-options-dev libboost-thread-dev \ - libssl-dev libdb++-dev libminiupnpc-dev + libssl-dev libdb++-dev then execute the following: @@ -71,7 +71,7 @@ Mac OS X :: sudo port selfupdate - sudo port install boost db48 miniupnpc + sudo port install boost db48 - Open the .pro file in Qt Creator and build as normal (cmd-B) @@ -118,30 +118,6 @@ If you're using clang compiler then you need to unroll macroses before compiling No additional external dependencies required. Note that only x86, x86_64 and ARM processors are supported. -UPNnP port forwarding ---------------------- - -To use UPnP for port forwarding behind a NAT router (recommended, as more connections overall allow for a faster and more stable novacoin experience), pass the following argument to qmake: - -:: - - qmake "USE_UPNP=1" - -(in **Qt Creator**, you can find the setting for additional qmake arguments under "Projects" -> "Build Settings" -> "Build Steps", then click "Details" next to **qmake**) - -This requires miniupnpc for UPnP port mapping. It can be downloaded from -http://miniupnp.tuxfamily.org/files/. UPnP support is not compiled in by default. - -Set USE_UPNP to a different value to control this: - -+------------+--------------------------------------------------------------------------+ -| USE_UPNP=- | no UPnP support, miniupnpc not required; | -+------------+--------------------------------------------------------------------------+ -| USE_UPNP=0 | (the default) built with UPnP, support turned off by default at runtime; | -+------------+--------------------------------------------------------------------------+ -| USE_UPNP=1 | build with UPnP support turned on by default at runtime. | -+------------+--------------------------------------------------------------------------+ - Notification support for recent (k)ubuntu versions --------------------------------------------------- diff --git a/doc/tor.md b/doc/tor.md index 2f8d4dc..2cc7f24 100644 --- a/doc/tor.md +++ b/doc/tor.md @@ -76,7 +76,7 @@ specify: ./novacoind ... -discover -and open port 7777 on your firewall (or use -upnp). +and open port 7777 on your firewall. If you only want to use Tor to reach onion addresses, but not use it as a proxy for normal IPv4/IPv6 communication, use: diff --git a/novacoin-qt.pro b/novacoin-qt.pro index 2ff97c5..25f6bc5 100644 --- a/novacoin-qt.pro +++ b/novacoin-qt.pro @@ -26,8 +26,6 @@ CONFIG += static #BDB_LIB_PATH=C:/deps/db-6.0.20/build_unix #OPENSSL_INCLUDE_PATH=C:/deps/openssl-1.0.1j/include #OPENSSL_LIB_PATH=C:/deps/openssl-1.0.1j -#MINIUPNPC_INCLUDE_PATH=C:/deps/ -#MINIUPNPC_LIB_PATH=C:/deps/miniupnpc #QRENCODE_INCLUDE_PATH=C:/deps/qrencode-3.4.4 #QRENCODE_LIB_PATH=C:/deps/qrencode-3.4.4/.libs @@ -55,23 +53,6 @@ QMAKE_LFLAGS *= -fstack-protector-all --param ssp-buffer-size=1 win32:QMAKE_LFLAGS *= -Wl,--dynamicbase -Wl,--nxcompat win32:QMAKE_LFLAGS += -static-libgcc -static-libstdc++ -# use: qmake "USE_UPNP=1" ( enabled by default; default) -# or: qmake "USE_UPNP=0" (disabled by default) -# or: qmake "USE_UPNP=-" (not supported) -# miniupnpc (http://miniupnp.free.fr/files/) must be installed for support -contains(USE_UPNP, -) { - message(Building without UPNP support) -} else { - message(Building with UPNP support) - count(USE_UPNP, 0) { - USE_UPNP=1 - } - DEFINES += USE_UPNP=$$USE_UPNP STATICLIB MINIUPNP_STATICLIB - INCLUDEPATH += $$MINIUPNPC_INCLUDE_PATH - LIBS += $$join(MINIUPNPC_LIB_PATH,,-L,) -lminiupnpc - win32:LIBS += -liphlpapi -} - # use: qmake "USE_DBUS=1" contains(USE_DBUS, 1) { message(Building with DBUS (Freedesktop notifications) support) diff --git a/src/init.cpp b/src/init.cpp index 36837ad..dd34f91 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -263,13 +263,6 @@ std::string HelpMessage() " -bantime= " + _("Number of seconds to keep misbehaving peers from reconnecting (default: 86400)") + "\n" + " -maxreceivebuffer= " + _("Maximum per-connection receive buffer, *1000 bytes (default: 5000)") + "\n" + " -maxsendbuffer= " + _("Maximum per-connection send buffer, *1000 bytes (default: 1000)") + "\n" + -#ifdef USE_UPNP -#if USE_UPNP - " -upnp " + _("Use UPnP to map the listening port (default: 1 when listening)") + "\n" + -#else - " -upnp " + _("Use UPnP to map the listening port (default: 0)") + "\n" + -#endif -#endif " -detachdb " + _("Detach block and address databases. Increases shutdown time (default: 0)") + "\n" + #ifdef DB_LOG_IN_MEMORY @@ -421,7 +414,6 @@ bool AppInit2() if (!GetBoolArg("-listen", true)) { // do not map ports or try to retrieve public IP when not listening (pointless) - SoftSetBoolArg("-upnp", false); SoftSetBoolArg("-discover", false); } @@ -668,13 +660,10 @@ bool AppInit2() fNoListen = !GetBoolArg("-listen", true); fDiscover = GetBoolArg("-discover", true); fNameLookup = GetBoolArg("-dns", true); -#ifdef USE_UPNP - fUseUPnP = GetBoolArg("-upnp", USE_UPNP); -#endif } else { // Don't listen, discover addresses or search for nodes if IPv4 and IPv6 networking is disabled. fNoListen = true; - fDiscover = fNameLookup = fUseUPnP = false; + fDiscover = fNameLookup = false; SoftSetBoolArg("-irc", false); SoftSetBoolArg("-dnsseed", false); } diff --git a/src/main.h b/src/main.h index 4992041..c7784cc 100644 --- a/src/main.h +++ b/src/main.h @@ -54,12 +54,6 @@ static const unsigned int LOCKTIME_THRESHOLD = 500000000; // Tue Nov 5 00:53:20 // Maximum number of script-checking threads allowed static const int MAX_SCRIPTCHECK_THREADS = 16; -#ifdef USE_UPNP -static const int fHaveUPnP = true; -#else -static const int fHaveUPnP = false; -#endif - static const uint256 hashGenesisBlock("0x00000a060336cbb72fe969666d337b87198b1add2abaa59cca226820b32933a4"); static const uint256 hashGenesisBlockTestNet("0x000c763e402f2436da9ed36c7286f62c3f6e5dbafce9ff289bd43d7459327eb"); diff --git a/src/makefile.bsd b/src/makefile.bsd index 62e2b91..873e753 100644 --- a/src/makefile.bsd +++ b/src/makefile.bsd @@ -2,7 +2,6 @@ # Distributed under the MIT/X11 software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. -USE_UPNP:=0 USE_LEVELDB:=0 USE_IPV6:=1 @@ -34,14 +33,6 @@ LIBS += \ -l crypto \ -l execinfo -ifndef USE_UPNP - override USE_UPNP = - -endif -ifneq (${USE_UPNP}, -) - LIBS += -l miniupnpc - DEFS += -DUSE_UPNP=$(USE_UPNP) -endif - ifneq (${USE_IPV6}, -) DEFS += -DUSE_IPV6=$(USE_IPV6) endif diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw index ccd5d40..1f89ee9 100644 --- a/src/makefile.linux-mingw +++ b/src/makefile.linux-mingw @@ -13,15 +13,12 @@ DEPSDIR:=/usr/$(TARGET_PLATFORM)-w64-mingw32 BOOST_LIB_PATH:=$(DEPSDIR)/boost_1_57_0/stage/lib BDB_LIB_PATH:=$(DEPSDIR)/db-6.0.20.NC/build_unix -MINIUPNPC_LIB_PATH:=$(DEPSDIR)/miniupnpc-1.9 OPENSSL_LIB_PATH:=$(DEPSDIR)/openssl-1.0.1h BOOST_INCLUDE_PATH:=$(DEPSDIR)/boost_1_57_0 BDB_INCLUDE_PATH:=$(DEPSDIR)/db-6.0.20.NC/build_unix -MINIUPNPC_INCLUDE_PATH:=$(DEPSDIR) OPENSSL_INCLUDE_PATH:=$(DEPSDIR)/openssl-1.0.1h/include -USE_UPNP:=0 USE_LEVELDB:=0 USE_IPV6:=1 @@ -30,14 +27,12 @@ INCLUDEPATHS= \ -I"$(CURDIR)"/obj \ -I"$(BOOST_INCLUDE_PATH)" \ -I"$(BDB_INCLUDE_PATH)" \ - -I"$(OPENSSL_INCLUDE_PATH)" \ - -I"$(MINIUPNPC_INCLUDE_PATH)" + -I"$(OPENSSL_INCLUDE_PATH)" LIBPATHS= \ -L"$(BOOST_LIB_PATH)" \ -L"$(BDB_LIB_PATH)" \ - -L"$(OPENSSL_LIB_PATH)" \ - -L"$(MINIUPNPC_LIB_PATH)" + -L"$(OPENSSL_LIB_PATH)" LIBS= \ -l boost_system-mt \ @@ -67,15 +62,6 @@ DEBUGFLAGS=-g CFLAGS=$(xOPT_LEVEL) -msse2 -w -Wall -Wextra -Wno-ignored-qualifiers -Wformat -Wformat-security -Wno-unused-parameter $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -static-libgcc -static-libstdc++ -ifndef USE_UPNP - override USE_UPNP = - -endif -ifneq (${USE_UPNP}, -) - LIBPATHS += -L"$(DEPSDIR)/miniupnpc" - LIBS += -l miniupnpc -l iphlpapi - DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP) -endif - ifneq (${USE_IPV6}, -) DEFS += -DUSE_IPV6=$(USE_IPV6) endif diff --git a/src/makefile.mingw b/src/makefile.mingw index cac4d9d..7152101 100644 --- a/src/makefile.mingw +++ b/src/makefile.mingw @@ -2,7 +2,6 @@ # Distributed under the MIT/X11 software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. -USE_UPNP:=0 USE_LEVELDB:=0 CC=gcc @@ -22,7 +21,6 @@ INCLUDEPATHS= \ LIBPATHS= \ -L"$(CURDIR)/leveldb" \ -L"/c/deps/boost_1_57_0/stage/lib" \ - -L"/c/deps/miniupnpc" \ -L"/c/deps/db-6.0.20/build_unix" \ -L"/c/deps/openssl-1.0.2" @@ -54,16 +52,6 @@ DEBUGFLAGS=-g CFLAGS=-mthreads $(xOPT_LEVEL) -msse2 -w -Wall -Wextra -Wno-ignored-qualifiers -Wformat -Wformat-security -Wno-unused-parameter $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware -static -ifndef USE_UPNP - override USE_UPNP = - -endif -ifneq (${USE_UPNP}, -) - INCLUDEPATHS += -I"C:\miniupnpc-1.6-mgw" - LIBPATHS += -L"C:\miniupnpc-1.6-mgw" - LIBS += -l miniupnpc -l iphlpapi - DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP) -DMINIUPNP_STATICLIB -endif - ifneq (${USE_IPV6}, -) DEFS += -DUSE_IPV6=$(USE_IPV6) endif diff --git a/src/makefile.osx b/src/makefile.osx index 94d20fb..70ded54 100644 --- a/src/makefile.osx +++ b/src/makefile.osx @@ -19,7 +19,6 @@ LIBPATHS= \ -L"$(DEPSDIR)/lib" \ -L"$(DEPSDIR)/lib/db48" -USE_UPNP:=0 USE_LEVELDB:=0 USE_IPV6:=1 @@ -102,18 +101,6 @@ OBJS= \ obj/noui.o \ obj/kernel.o -ifndef USE_UPNP - override USE_UPNP = - -endif -ifneq (${USE_UPNP}, -) - DEFS += -DUSE_UPNP=$(USE_UPNP) -ifdef STATIC - LIBS += $(DEPSDIR)/lib/libminiupnpc.a -else - LIBS += -lminiupnpc -endif -endif - ifneq (${USE_IPV6}, -) DEFS += -DUSE_IPV6=$(USE_IPV6) endif diff --git a/src/makefile.unix b/src/makefile.unix index 34ed1a3..bea34d8 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -2,7 +2,6 @@ # Distributed under the MIT/X11 software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. -USE_UPNP:=0 USE_LEVELDB:=0 USE_IPV6:=1 @@ -34,14 +33,6 @@ LIBS += \ -l ssl \ -l crypto -ifndef USE_UPNP - override USE_UPNP = - -endif -ifneq (${USE_UPNP}, -) - LIBS += -l miniupnpc - DEFS += -DUSE_UPNP=$(USE_UPNP) -endif - ifneq (${USE_IPV6}, -) DEFS += -DUSE_IPV6=$(USE_IPV6) endif diff --git a/src/net.cpp b/src/net.cpp index aa2d768..d409949 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -16,13 +16,6 @@ #include #endif -#ifdef USE_UPNP -#include -#include -#include -#include -#endif - using namespace std; using namespace boost; @@ -32,9 +25,6 @@ void ThreadMessageHandler2(void* parg); void ThreadSocketHandler2(void* parg); void ThreadOpenConnections2(void* parg); void ThreadOpenAddedConnections2(void* parg); -#ifdef USE_UPNP -void ThreadMapPort2(void* parg); -#endif void ThreadDNSAddressSeed2(void* parg); // Fix for ancient MinGW versions, that don't have defined these in ws2tcpip.h. @@ -58,7 +48,6 @@ struct LocalServiceInfo { // bool fClient = false; bool fDiscover = true; -bool fUseUPnP = false; uint64_t nLocalServices = (fClient ? 0 : NODE_NETWORK); static CCriticalSection cs_mapLocalHost; static map mapLocalHost; @@ -945,164 +934,6 @@ void ThreadSocketHandler2(void* parg) } } - - - - - - - - -#ifdef USE_UPNP -void ThreadMapPort(void* parg) -{ - // Make this thread recognisable as the UPnP thread - RenameThread("novacoin-UPnP"); - - try - { - vnThreadsRunning[THREAD_UPNP]++; - ThreadMapPort2(parg); - vnThreadsRunning[THREAD_UPNP]--; - } - catch (std::exception& e) { - vnThreadsRunning[THREAD_UPNP]--; - PrintException(&e, "ThreadMapPort()"); - } catch (...) { - vnThreadsRunning[THREAD_UPNP]--; - PrintException(NULL, "ThreadMapPort()"); - } - printf("ThreadMapPort exited\n"); -} - -void ThreadMapPort2(void* parg) -{ - printf("ThreadMapPort started\n"); - - std::string port = strprintf("%u", GetListenPort()); - const char * multicastif = 0; - const char * minissdpdpath = 0; - struct UPNPDev * devlist = 0; - char lanaddr[64]; - -#ifndef UPNPDISCOVER_SUCCESS - /* miniupnpc 1.5 */ - devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0); -#else - /* miniupnpc 1.6 */ - int error = 0; - devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0, 0, &error); -#endif - - struct UPNPUrls urls; - struct IGDdatas data; - int r; - - r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)); - if (r == 1) - { - if (fDiscover) { - char externalIPAddress[40]; - r = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, externalIPAddress); - if(r != UPNPCOMMAND_SUCCESS) - printf("UPnP: GetExternalIPAddress() returned %d\n", r); - else - { - if(externalIPAddress[0]) - { - printf("UPnP: ExternalIPAddress = %s\n", externalIPAddress); - AddLocal(CNetAddr(externalIPAddress), LOCAL_UPNP); - } - else - printf("UPnP: GetExternalIPAddress failed.\n"); - } - } - - string strDesc = "NovaCoin " + FormatFullVersion(); -#ifndef UPNPDISCOVER_SUCCESS - /* miniupnpc 1.5 */ - r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, - port.c_str(), port.c_str(), lanaddr, strDesc.c_str(), "TCP", 0); -#else - /* miniupnpc 1.6 */ - r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, - port.c_str(), port.c_str(), lanaddr, strDesc.c_str(), "TCP", 0, "0"); -#endif - - if(r!=UPNPCOMMAND_SUCCESS) - printf("AddPortMapping(%s, %s, %s) failed with code %d (%s)\n", - port.c_str(), port.c_str(), lanaddr, r, strupnperror(r)); - else - printf("UPnP Port Mapping successful.\n"); - int i = 1; - while (true) - { - if (fShutdown || !fUseUPnP) - { - r = UPNP_DeletePortMapping(urls.controlURL, data.first.servicetype, port.c_str(), "TCP", 0); - printf("UPNP_DeletePortMapping() returned : %d\n", r); - freeUPNPDevlist(devlist); devlist = 0; - FreeUPNPUrls(&urls); - return; - } - if (i % 600 == 0) // Refresh every 20 minutes - { -#ifndef UPNPDISCOVER_SUCCESS - /* miniupnpc 1.5 */ - r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, - port.c_str(), port.c_str(), lanaddr, strDesc.c_str(), "TCP", 0); -#else - /* miniupnpc 1.6 */ - r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype, - port.c_str(), port.c_str(), lanaddr, strDesc.c_str(), "TCP", 0, "0"); -#endif - - if(r!=UPNPCOMMAND_SUCCESS) - printf("AddPortMapping(%s, %s, %s) failed with code %d (%s)\n", - port.c_str(), port.c_str(), lanaddr, r, strupnperror(r)); - else - printf("UPnP Port Mapping successful.\n");; - } - Sleep(2000); - i++; - } - } else { - printf("No valid UPnP IGDs found\n"); - freeUPNPDevlist(devlist); devlist = 0; - if (r != 0) - FreeUPNPUrls(&urls); - while (true) - { - if (fShutdown || !fUseUPnP) - return; - Sleep(2000); - } - } -} - -void MapPort() -{ - if (fUseUPnP && vnThreadsRunning[THREAD_UPNP] < 1) - { - if (!NewThread(ThreadMapPort, NULL)) - printf("Error: ThreadMapPort(ThreadMapPort) failed\n"); - } -} -#else -void MapPort() -{ - // Intentionally left blank. -} -#endif - - - - - - - - - // DNS seeds // Each pair gives a source name and a seed name. // The first name is used as information source for addrman. @@ -1892,12 +1723,6 @@ void StartNode(void* parg) if (!NewThread(ThreadDNSAddressSeed, NULL)) printf("Error: NewThread(ThreadDNSAddressSeed) failed\n"); - // Map ports with UPnP - if (!fUseUPnP) - printf("UPNP port mapping is disabled\n"); - else - MapPort(); - // Get addresses from IRC and advertise ours if (!GetBoolArg("-irc", true)) printf("IRC seeding disabled\n"); @@ -1966,9 +1791,6 @@ bool StopNode() if (vnThreadsRunning[THREAD_MESSAGEHANDLER] > 0) printf("ThreadMessageHandler still running\n"); if (vnThreadsRunning[THREAD_RPCLISTENER] > 0) printf("ThreadRPCListener still running\n"); if (vnThreadsRunning[THREAD_RPCHANDLER] > 0) printf("ThreadsRPCServer still running\n"); -#ifdef USE_UPNP - if (vnThreadsRunning[THREAD_UPNP] > 0) printf("ThreadMapPort still running\n"); -#endif if (vnThreadsRunning[THREAD_DNSSEED] > 0) printf("ThreadDNSAddressSeed still running\n"); if (vnThreadsRunning[THREAD_ADDEDCONNECTIONS] > 0) printf("ThreadOpenAddedConnections still running\n"); if (vnThreadsRunning[THREAD_DUMPADDRESS] > 0) printf("ThreadDumpAddresses still running\n"); diff --git a/src/net.h b/src/net.h index 369cead..56c7b2f 100644 --- a/src/net.h +++ b/src/net.h @@ -54,7 +54,6 @@ enum LOCAL_NONE, // unknown LOCAL_IF, // address a local interface listens on LOCAL_BIND, // address explicit bound to - LOCAL_UPNP, // address reported by UPnP LOCAL_IRC, // address reported by IRC (deprecated) LOCAL_HTTP, // address reported by whatismyip.com and similar LOCAL_MANUAL, // address explicitly specified (-externalip=) @@ -107,7 +106,6 @@ enum threadId THREAD_OPENCONNECTIONS, THREAD_MESSAGEHANDLER, THREAD_RPCLISTENER, - THREAD_UPNP, THREAD_DNSSEED, THREAD_ADDEDCONNECTIONS, THREAD_DUMPADDRESS, @@ -121,7 +119,6 @@ enum threadId extern bool fClient; extern bool fDiscover; -extern bool fUseUPnP; extern uint64_t nLocalServices; extern uint64_t nLocalHostNonce; extern CAddress addrSeenByPeer; diff --git a/src/qt/bitcoinstrings.cpp b/src/qt/bitcoinstrings.cpp index 9b44e9a..ac1b52c 100644 --- a/src/qt/bitcoinstrings.cpp +++ b/src/qt/bitcoinstrings.cpp @@ -162,8 +162,6 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Unknown network specified in -onlynet: '%s'") QT_TRANSLATE_NOOP("bitcoin-core", "Upgrade wallet to latest format"), QT_TRANSLATE_NOOP("bitcoin-core", "Usage:"), QT_TRANSLATE_NOOP("bitcoin-core", "Use OpenSSL (https) for JSON-RPC connections"), -QT_TRANSLATE_NOOP("bitcoin-core", "Use UPnP to map the listening port (default: 0)"), -QT_TRANSLATE_NOOP("bitcoin-core", "Use UPnP to map the listening port (default: 1 when listening)"), QT_TRANSLATE_NOOP("bitcoin-core", "Use proxy to reach tor hidden services (default: same as -proxy)"), QT_TRANSLATE_NOOP("bitcoin-core", "Use the test network"), QT_TRANSLATE_NOOP("bitcoin-core", "Username for JSON-RPC connections"), diff --git a/src/qt/forms/aboutdialog.ui b/src/qt/forms/aboutdialog.ui index 960743d..2f776d6 100644 --- a/src/qt/forms/aboutdialog.ui +++ b/src/qt/forms/aboutdialog.ui @@ -111,7 +111,7 @@ Copyright © 2012-2015 The NovaCoin developers IBeamCursor - <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Main icon was designed by VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). This product also includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>) and UPnP software written by Thomas Bernard(<a href="mailto:miniupnp@free.fr"><span style=" text-decoration: underline; color:#0000ff;">miniupnp@free.fr</span></a>).</p><p><br/></p></body></html> + <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Main icon was designed by VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). This product also includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>).</p><p><br/></p></body></html> true diff --git a/src/qt/forms/optionsdialog.ui b/src/qt/forms/optionsdialog.ui index 8d5779c..8edfa60 100644 --- a/src/qt/forms/optionsdialog.ui +++ b/src/qt/forms/optionsdialog.ui @@ -121,16 +121,6 @@ - - - Automatically open the NovaCoin client port on the router. This only works when your router supports UPnP and it is enabled. - - - Map port using &UPnP - - - - Connect to the NovaCoin network through a SOCKS proxy (e.g. when connecting through Tor). diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index 11e30ee..8faa68a 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -28,12 +28,12 @@ Copyright © 2012-2015 The NovaCoin developers - <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Main icon was designed by VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). This product also includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>) and UPnP software written by Thomas Bernard(<a href="mailto:miniupnp@free.fr"><span style=" text-decoration: underline; color:#0000ff;">miniupnp@free.fr</span></a>).</p><p><br/></p></body></html> + <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Main icon was designed by VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). This product also includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>).</p><p><br/></p></body></html> - <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>) and UPnP software written by Thomas Bernard(<a href="mailto:miniupnp@free.fr"><span style=" text-decoration: underline; color:#0000ff;">miniupnp@free.fr</span></a>).</p></body></html> - <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>) and UPnP software written by Thomas Bernard(<a href="mailto:miniupnp@free.fr"><span style=" text-decoration: underline; color:#0000ff;">miniupnp@free.fr</span></a>).</p></body></html> + <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>).</p></body></html> + <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>).</p></body></html> @@ -2003,16 +2003,6 @@ Reduce the number of addresses involved in the address creation. &Network - - Automatically open the NovaCoin client port on the router. This only works when your router supports UPnP and it is enabled. - Automatically open the NovaCoin client port on the router. This only works when your router supports UPnP and it is enabled. - - - - Map port using &UPnP - Map port using &UPnP - - Connect to the NovaCoin network through a SOCKS proxy (e.g. when connecting through Tor). Connect to the NovaCoin network through a SOCKS proxy (e.g. when connecting through Tor). @@ -4369,16 +4359,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Use OpenSSL (https) for JSON-RPC connections - - Use UPnP to map the listening port (default: 0) - Use UPnP to map the listening port (default: 0) - - - - Use UPnP to map the listening port (default: 1 when listening) - Use UPnP to map the listening port (default: 1 when listening) - - Use proxy to reach tor hidden services (default: same as -proxy) Use proxy to reach tor hidden services (default: same as -proxy) diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts index 1ab3290..89275bb 100644 --- a/src/qt/locale/bitcoin_ru.ts +++ b/src/qt/locale/bitcoin_ru.ts @@ -28,8 +28,8 @@ Copyright © 2012-2015 The NovaCoin developers - <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Main icon was designed by VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). This product also includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>) and UPnP software written by Thomas Bernard(<a href="mailto:miniupnp@free.fr"><span style=" text-decoration: underline; color:#0000ff;">miniupnp@free.fr</span></a>).</p><p><br/></p></body></html> - <html><head/><body><p><br/>Это экспериментальная программа.</p><p>Распространяется на правах лицензии MIT/X11, см. файл license.txt или <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Иконка приложения разработана VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). Этот продукт также включает ПО, разработанное OpenSSL Project для использования в OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) и криптографическое ПО, написанное Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>) и ПО для работы с UPnP, написанное Thomas Bernard (<a href="mailto:miniupnp@free.fr"><span style=" text-decoration: underline; color:#0000ff;">miniupnp@free.fr</span></a>).</p></body></html> + <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Main icon was designed by VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). This product also includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>).</p><p><br/></p></body></html> + <html><head/><body><p><br/>Это экспериментальная программа.</p><p>Распространяется на правах лицензии MIT/X11, см. файл license.txt или <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Иконка приложения разработана VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). Этот продукт также включает ПО, разработанное OpenSSL Project для использования в OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) и криптографическое ПО, написанное Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>).</p></body></html> @@ -2005,16 +2005,6 @@ Reduce the number of addresses involved in the address creation. &Сеть - - Automatically open the NovaCoin client port on the router. This only works when your router supports UPnP and it is enabled. - Автоматически открыть порт для NovaCoin-клиента на роутере. Работает только если Ваш роутер поддерживает UPnP, и данная функция включена. - - - - Map port using &UPnP - Пробросить порт через &UPnP - - Connect to the NovaCoin network through a SOCKS proxy (e.g. when connecting through Tor). Подключаться к сети NovaCoin через прокси SOCKS (например, при подключении через Tor). @@ -4375,16 +4365,6 @@ If the file does not exist, create it with owner-readable-only file permissions. Использовать OpenSSL (https) для подключений JSON-RPC - - Use UPnP to map the listening port (default: 0) - Использовать UPnP для проброса порта (по умолчанию: 0) - - - - Use UPnP to map the listening port (default: 1 when listening) - Использовать UPnP для проброса порта (по умолчанию: 1, если используется прослушивание) - - Use proxy to reach tor hidden services (default: same as -proxy) Использовать прокси для скрытых сервисов tor(по умолчанию: тот же, что и в -proxy) diff --git a/src/qt/locale/bitcoin_uk.ts b/src/qt/locale/bitcoin_uk.ts index 117af52..6634540 100644 --- a/src/qt/locale/bitcoin_uk.ts +++ b/src/qt/locale/bitcoin_uk.ts @@ -28,8 +28,8 @@ Copyright © 2012-2015 The NovaCoin developers - <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Main icon was designed by VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). This product also includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>) and UPnP software written by Thomas Bernard(<a href="mailto:miniupnp@free.fr"><span style=" text-decoration: underline; color:#0000ff;">miniupnp@free.fr</span></a>).</p><p><br/></p></body></html> - <html><head/><body><p><br/>Це програмне забезпечення є експериментальним.</p><p>Поширюється за ліцензією MIT/X11, додаткова інформація міститься у файлі COPYING та за адресою <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Піктограму програми розробили VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). Крім того, цей продукт також включає в себе програмне забезпечення, розроблене в рамках проекту OpenSSL (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>), криптографічне програмне забезпечення, написане Еріком Янгом (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>), та функції для роботи з UPnP, написані Томасом Бернардом (<a href="mailto:miniupnp@free.fr"><span style=" text-decoration: underline; color:#0000ff;">miniupnp@free.fr</span></a>).</p></body></html> + <html><head/><body><p><br/>This is experimental software.</p><p>Distributed under the MIT/X11 software license, see the accompanying file COPYING or <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Main icon was designed by VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). This product also includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>) and cryptographic software written by Eric Young (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>).</p><p><br/></p></body></html> + <html><head/><body><p><br/>Це програмне забезпечення є експериментальним.</p><p>Поширюється за ліцензією MIT/X11, додаткова інформація міститься у файлі COPYING та за адресою <br/><a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a>.</p><p>Піктограму програми розробили VisualPharm.com (<a href="mailto:team@visualpharm.com"><span style=" text-decoration: underline; color:#0000ff;">team@visualpharm.com</span></a>). Крім того, цей продукт також включає в себе програмне забезпечення, розроблене в рамках проекту OpenSSL (<a href="http://www.openssl.org/"><span style=" text-decoration: underline; color:#0000ff;">http://www.openssl.org/</span></a>), криптографічне програмне забезпечення, написане Еріком Янгом (<a href="mailto:eay@cryptsoft.com"><span style=" text-decoration: underline; color:#0000ff;">eay@cryptsoft.com</span></a>).</p></body></html> @@ -2008,16 +2008,6 @@ Reduce the number of addresses involved in the address creation. &Мережа - - Automatically open the NovaCoin client port on the router. This only works when your router supports UPnP and it is enabled. - Автоматично відкривати порт для клієнту новакоін на роутері. Працює лише якщо ваш роутер підтримує UPnP і ця функція увімкнена. - - - - Map port using &UPnP - Відображення порту через &UPnP - - Connect to the NovaCoin network through a SOCKS proxy (e.g. when connecting through Tor). Підключення до мережі через SOCKS5 проксі (напр. при підключенні через Tor). @@ -4396,16 +4386,6 @@ If the file does not exist, create it with owner-readable-only file permissions. - - Use UPnP to map the listening port (default: 0) - Намагатись використовувати UPnP для відображення порту, що прослуховується, на роутері (типово: 0) - - - - Use UPnP to map the listening port (default: 1 when listening) - Намагатись використовувати UPnP для відображення порту, що прослуховується на роутері (типово: 1 коли прослуховується) - - Use proxy to reach tor hidden services (default: same as -proxy) Використовувати окремий проксі для з'єднання з учасниками через приховані сервіси Tor (типово: так само, як -proxy) diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index 4fc9ab8..79e8260 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -30,10 +30,6 @@ OptionsDialog::OptionsDialog(QWidget *parent) : ui->setupUi(this); /* Network elements init */ -#ifndef USE_UPNP - ui->mapPortUpnp->setEnabled(false); -#endif - ui->proxyIp->setEnabled(false); ui->proxyPort->setEnabled(false); ui->proxyPort->setValidator(new QIntValidator(1, 65535, this)); @@ -158,8 +154,6 @@ void OptionsDialog::setMapper() mapper->addMapping(ui->detachDatabases, OptionsModel::DetachDatabases); /* Network */ - mapper->addMapping(ui->mapPortUpnp, OptionsModel::MapPortUPnP); - mapper->addMapping(ui->connectSocks, OptionsModel::ProxyUse); mapper->addMapping(ui->proxyIp, OptionsModel::ProxyIP); mapper->addMapping(ui->proxyPort, OptionsModel::ProxyPort); diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index 56e1df4..7a84ef2 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -78,8 +78,6 @@ void OptionsModel::Init() // These are shared with core Bitcoin; we want // command-line options to override the GUI settings: - if (settings.contains("fUseUPnP")) - SoftSetBoolArg("-upnp", settings.value("fUseUPnP").toBool()); if ( !(settings.value("fTorOnly").toBool() && settings.contains("addrTor")) ) { if (settings.contains("addrProxy") && settings.value("fUseProxy").toBool()) SoftSetArg("-proxy", settings.value("addrProxy").toString().toStdString()); @@ -123,8 +121,6 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const return QVariant(GUIUtil::GetStartOnSystemStartup()); case MinimizeToTray: return QVariant(fMinimizeToTray); - case MapPortUPnP: - return settings.value("fUseUPnP", GetBoolArg("-upnp", true)); case MinimizeOnClose: return QVariant(fMinimizeOnClose); case ProxyUse: @@ -201,11 +197,6 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in fMinimizeToTray = value.toBool(); settings.setValue("fMinimizeToTray", fMinimizeToTray); break; - case MapPortUPnP: - fUseUPnP = value.toBool(); - settings.setValue("fUseUPnP", fUseUPnP); - MapPort(); - break; case MinimizeOnClose: fMinimizeOnClose = value.toBool(); settings.setValue("fMinimizeOnClose", fMinimizeOnClose); diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h index 3a27427..e3d2cae 100644 --- a/src/qt/optionsmodel.h +++ b/src/qt/optionsmodel.h @@ -19,7 +19,6 @@ public: enum OptionID { StartAtStartup, // bool MinimizeToTray, // bool - MapPortUPnP, // bool MinimizeOnClose, // bool ProxyUse, // bool ProxyIP, // QString -- 1.7.1