[nmap]Fix build error. (#7811)

* [nmap]Fix build error.

* [nmap]Use msvc project to build.

* [nmap]Re-fix ssize_t and fix linux build.

* [nmap]Delete useless file.
This commit is contained in:
JackBoosY 2019-08-28 05:50:15 +08:00 committed by Curtis J Bezault
parent ef30526658
commit 24049959f2
7 changed files with 2146 additions and 221 deletions

View File

@ -1,4 +1,4 @@
Source: nmap
Version: 7.70
Build-Depends: winpcap, lua, openssl, python2, libssh2
Version: 7.70-1
Build-Depends: winpcap (windows), libpcap (!windows), lua, openssl, python2 (windows), libssh2, zlib, pcre
Description: A library for scanning network ports.

View File

@ -1,24 +0,0 @@
#!/usr/bin/bash
set -e
export PATH=/usr/bin:$PATH
# Export HTTP(S)_PROXY as http(s)_proxy:
if [ "$HTTP_PROXY" ]; then
export http_proxy=$HTTP_PROXY
fi
if [ "$HTTPS_PROXY" ]; then
export https_proxy=$HTTPS_PROXY
fi
PATH_TO_BUILD_DIR="`cygpath "$1"`"
PATH_TO_SRC_DIR="`cygpath "$2"`"
PATH_TO_PACKAGE_DIR="`cygpath "$3"`"
# Note: $4 is extra configure options
cd "$PATH_TO_BUILD_DIR"
echo "=== CONFIGURING ==="
echo "building nmap package $PATH_TO_SRC_DIR"
"$PATH_TO_SRC_DIR/configure" CC=cl.exe LD=link.exe CXX=lc.exe "--prefix=$PATH_TO_PACKAGE_DIR" $4
echo "=== BUILDING ==="
make -j6
echo "=== INSTALLING ==="
make install

View File

@ -1,75 +0,0 @@
--- a/configure 2017-11-01 23:55:49.000000000 +0100
+++ b/configure 2019-03-05 03:35:21.753268300 +0100
@@ -5989,13 +5989,13 @@
# use_openssl="yes" given explicitly in next 2 rules to avoid adding lib to $LIBS
if test "$use_openssl" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BIO_int_ctrl in -lcrypto" >&5
-$as_echo_n "checking for BIO_int_ctrl in -lcrypto... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BIO_int_ctrl in -llibeay32" >&5
+$as_echo_n "checking for BIO_int_ctrl in -llibeay32... " >&6; }
if ${ac_cv_lib_crypto_BIO_int_ctrl+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypto $LIBS"
+LIBS="-llibeay32 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6030,23 +6030,23 @@
else
use_openssl="no"
if test "$with_openssl" = "yes"; then
- as_fn_error $? "OpenSSL was explicitly requested but libcrypto was not found. Try the --with-openssl=DIR argument to give the location of OpenSSL or run configure with --without-openssl." "$LINENO" 5
+ as_fn_error $? "OpenSSL was explicitly requested but libeay32 was not found. Try the --with-openssl=DIR argument to give the location of OpenSSL or run configure with --without-openssl." "$LINENO" 5
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed to find libcrypto so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument" >&5
-$as_echo "$as_me: WARNING: Failed to find libcrypto so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed to find libeay32 so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument" >&5
+$as_echo "$as_me: WARNING: Failed to find libeay32 so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument" >&2;}
fi
fi
if test "$use_openssl" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssl" >&5
-$as_echo_n "checking for SSL_new in -lssl... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssleay32" >&5
+$as_echo_n "checking for SSL_new in -lssleay32... " >&6; }
if ${ac_cv_lib_ssl_SSL_new+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lssl -lcrypto $LIBS"
+LIBS="-lssleay32 -llibeay32 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6090,13 +6090,13 @@
fi
if test "$use_openssl" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_PKEY_get1_EC_KEY in -lcrypto" >&5
-$as_echo_n "checking for EVP_PKEY_get1_EC_KEY in -lcrypto... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_PKEY_get1_EC_KEY in -llibeay32" >&5
+$as_echo_n "checking for EVP_PKEY_get1_EC_KEY in -llibeay32... " >&6; }
if ${ac_cv_lib_crypto_EVP_PKEY_get1_EC_KEY+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypto $LIBS"
+LIBS="-llibeay32 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6144,7 +6144,7 @@
$as_echo "#define HAVE_OPENSSL 1" >>confdefs.h
- OPENSSL_LIBS="-lssl -lcrypto"
+ OPENSSL_LIBS="-lssleay32 -llibeay32"
else
trace_no_use="$trace_no_use openssl"
fi

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,39 @@
diff --git a/libdnet-stripped/include/dnet_winconfig.h b/libdnet-stripped/include/dnet_winconfig.h
index e41907c..82bc595 100644
--- a/libdnet-stripped/include/dnet_winconfig.h
+++ b/libdnet-stripped/include/dnet_winconfig.h
@@ -277,7 +277,7 @@ int strlcpy(char *, const char *, int);
char *strsep(char **, const char *);
#endif
-#define snprintf _snprintf
+//#define snprintf _snprintf
/* Without this, Windows will give us all sorts of crap about using functions
like strcpy() even if they are done safely */
diff --git a/nbase/nbase.h b/nbase/nbase.h
index 0ecd9bc..c0eb395 100644
--- a/nbase/nbase.h
+++ b/nbase/nbase.h
@@ -359,7 +359,7 @@ extern "C" int vsnprintf (char *, size_t, const char *, va_list);
#define putenv _putenv
#if !defined(__GNUC__)
-#define snprintf _snprintf
+//#define snprintf _snprintf
#endif
#define strcasecmp _stricmp
diff --git a/nse_libssh2.cc b/nse_libssh2.cc
index bf721b6..1fafe7f 100644
--- a/nse_libssh2.cc
+++ b/nse_libssh2.cc
@@ -58,7 +58,7 @@ struct ssh_userdata {
#if defined(_MSC_VER) && _MSC_VER < 1900
-#define snprintf c99_snprintf
+//#define snprintf c99_snprintf
#define vsnprintf c99_vsnprintf
__inline int c99_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap) {

View File

@ -0,0 +1,16 @@
diff --git a/libdnet-stripped/include/dnet/os.h b/libdnet-stripped/include/dnet/os.h
index 55a21b9..544ebd8 100644
--- a/libdnet-stripped/include/dnet/os.h
+++ b/libdnet-stripped/include/dnet/os.h
@@ -23,7 +23,11 @@
typedef u_short uint16_t;
typedef u_int uint32_t;
# ifndef __CYGWIN__
+#ifdef _WIN64
+ typedef __int64 ssize_t;
+#else
typedef long ssize_t;
+#endif
# endif
#else
# include <sys/param.h>

View File

@ -1,134 +1,117 @@
include(vcpkg_common_functions)
# nmap is a tools, so ignor POST_CHECK
SET(VCPKG_POLICY_EMPTY_PACKAGE enabled)
vcpkg_download_distfile(ARCHIVE
URLS "https://nmap.org/dist/nmap-7.70.tar.bz2"
FILENAME "nmap-7.70.tar.bz2"
SHA512 084c148b022ff6550e269d976d0077f7932a10e2ef218236fe13aa3a70b4eb6506df03329868fc68cb3ce78e4360b200f5a7a491d3145028fed679ef1c9ecae5
)
vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE ${ARCHIVE}
REF ${SQLITE_VERSION}
)
vcpkg_extract_source_archive(${ARCHIVE})
vcpkg_apply_patches(
SOURCE_PATH ${SOURCE_PATH}
PATCHES
${CMAKE_CURRENT_LIST_DIR}/detect-crypto-library.patch
)
if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
vcpkg_acquire_msys(MSYS_ROOT PACKAGES perl gcc diffutils make)
else()
vcpkg_acquire_msys(MSYS_ROOT PACKAGES diffutils make)
endif()
set(BASH ${MSYS_ROOT}/usr/bin/bash.exe)
set(ENV{INCLUDE} "${CURRENT_INSTALLED_DIR}/include;$ENV{INCLUDE}")
set(ENV{LIB} "${CURRENT_INSTALLED_DIR}/lib;$ENV{LIB}")
set(_csc_PROJECT_PATH nmap)
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
set(ENV{LIBPATH} "$ENV{LIBPATH};$ENV{_WKITS10}references\\windows.foundation.foundationcontract\\2.0.0.0\\;$ENV{_WKITS10}references\\windows.foundation.universalapicontract\\3.0.0.0\\")
set(OPTIONS "${OPTIONS} --disable-programs --enable-cross-compile --target-os=win32 --arch=${VCPKG_TARGET_ARCHITECTURE}")
set(OPTIONS "${OPTIONS} --extra-cflags=-DWINAPI_FAMILY=WINAPI_FAMILY_APP --extra-cflags=-D_WIN32_WINNT=0x0A00")
if (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
vcpkg_find_acquire_program(GASPREPROCESSOR)
foreach(GAS_PATH ${GASPREPROCESSOR})
get_filename_component(GAS_ITEM_PATH ${GAS_PATH} DIRECTORY)
set(ENV{PATH} "$ENV{PATH};${GAS_ITEM_PATH}")
endforeach(GAS_PATH)
elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
else()
message(FATAL_ERROR "Unsupported architecture")
endif()
endif()
set(OPTIONS "--with-openssl=${VCPKG_ROOT_DIR}/installed/x64-windows/bin/ --with-libssh2=${VCPKG_ROOT_DIR}/installed/x64-windows/bin/")
message(STATUS "Building Options: ${OPTIONS}")
set(OPTIONS_DEBUG "") # Note: --disable-optimizations can't be used due to http://ffmpeg.org/pipermail/libav-user/2013-March/003945.html
set(OPTIONS_RELEASE "")
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
set(OPTIONS "${OPTIONS} --disable-static --enable-shared")
if (VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
set(OPTIONS "${OPTIONS} --extra-ldflags=-APPCONTAINER --extra-ldflags=WindowsApp.lib")
endif()
endif()
message(STATUS "Building Options: ${OPTIONS}")
message(STATUS "Building ${_csc_PROJECT_PATH} for Release")
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
vcpkg_execute_required_process(
COMMAND ${BASH} --noprofile --norc "${CMAKE_CURRENT_LIST_DIR}\\build.sh"
"${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" # BUILD DIR
"${SOURCE_PATH}" # SOURCE DIR
"${CURRENT_PACKAGES_DIR}" # PACKAGE DIR
"${OPTIONS} ${OPTIONS_RELEASE}"
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
LOGNAME build-${TARGET_TRIPLET}-rel
)
message(STATUS "Building ${_csc_PROJECT_PATH} for Debug")
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
vcpkg_execute_required_process(
COMMAND ${BASH} --noprofile --norc "${CMAKE_CURRENT_LIST_DIR}\\build.sh"
"${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg" # BUILD DIR
"${SOURCE_PATH}" # SOURCE DIR
"${CURRENT_PACKAGES_DIR}/debug" # PACKAGE DIR
"${OPTIONS} ${OPTIONS_DEBUG}"
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
LOGNAME build-${TARGET_TRIPLET}-dbg
)
file(GLOB DEF_FILES ${CURRENT_PACKAGES_DIR}/lib/*.def ${CURRENT_PACKAGES_DIR}/debug/lib/*.def)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
set(LIB_MACHINE_ARG /machine:ARM)
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(LIB_MACHINE_ARG /machine:x86)
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(LIB_MACHINE_ARG /machine:x64)
else()
message(FATAL_ERROR "Unsupported target architecture")
endif()
foreach(DEF_FILE ${DEF_FILES})
get_filename_component(DEF_FILE_DIR "${DEF_FILE}" DIRECTORY)
get_filename_component(DEF_FILE_NAME "${DEF_FILE}" NAME)
string(REGEX REPLACE "-[0-9]*\\.def" ".lib" OUT_FILE_NAME "${DEF_FILE_NAME}")
file(TO_NATIVE_PATH "${DEF_FILE}" DEF_FILE_NATIVE)
file(TO_NATIVE_PATH "${DEF_FILE_DIR}/${OUT_FILE_NAME}" OUT_FILE_NATIVE)
message(STATUS "Generating ${OUT_FILE_NATIVE}")
vcpkg_execute_required_process(
COMMAND lib.exe /def:${DEF_FILE_NATIVE} /out:${OUT_FILE_NATIVE} ${LIB_MACHINE_ARG}
WORKING_DIRECTORY ${CURRENT_PACKAGES_DIR}
LOGNAME libconvert-${TARGET_TRIPLET}
if(VCPKG_TARGET_IS_WINDOWS)
vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE ${ARCHIVE}
PATCHES
fix-snprintf.patch
fix-ssize_t.patch
fix-msvc-prj.patch
)
endforeach()
file(GLOB EXP_FILES ${CURRENT_PACKAGES_DIR}/lib/*.exp ${CURRENT_PACKAGES_DIR}/debug/lib/*.exp)
file(GLOB LIB_FILES ${CURRENT_PACKAGES_DIR}/bin/*.lib ${CURRENT_PACKAGES_DIR}/debug/bin/*.lib)
file(GLOB EXE_FILES ${CURRENT_PACKAGES_DIR}/bin/*.exe ${CURRENT_PACKAGES_DIR}/debug/bin/*.exe)
set(FILES_TO_REMOVE ${EXP_FILES} ${LIB_FILES} ${DEF_FILES} ${EXE_FILES})
list(LENGTH FILES_TO_REMOVE FILES_TO_REMOVE_LEN)
if(FILES_TO_REMOVE_LEN GREATER 0)
file(REMOVE ${FILES_TO_REMOVE})
list(APPEND DEL_PROJS "libpcap" "libpcre" "libssh2" "libz")
foreach (DEL_PROJ ${DEL_PROJS})
file(REMOVE_RECURSE ${SOURCE_PATH}/${DEL_PROJ})
endforeach()
# Clear
vcpkg_execute_required_process(
COMMAND "devenv.exe"
"nmap.sln"
/Clean
WORKING_DIRECTORY ${SOURCE_PATH}/mswin32
)
# Uprade
message(STATUS "Upgrade solution...")
vcpkg_execute_required_process(
COMMAND "devenv.exe"
"nmap.sln"
/Upgrade
WORKING_DIRECTORY ${SOURCE_PATH}/mswin32
LOGNAME upgrade-Packet-${TARGET_TRIPLET}
)
# Build
vcpkg_build_msbuild(
PROJECT_PATH ${SOURCE_PATH}/mswin32/nmap.vcxproj
PLATFORM ${MSBUILD_PLATFORM}
USE_VCPKG_INTEGRATION
)
# Install
if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL Release)
file(INSTALL ${SOURCE_PATH}/mswin32/Release/nmap.exe
${SOURCE_PATH}/mswin32/Release/nmap.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/tools)
endif()
if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL Debug)
file(INSTALL ${SOURCE_PATH}/mswin32/Debug/nmap.exe
${SOURCE_PATH}/mswin32/Debug/nmap.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/tools)
endif()
else()
foreach(BUILD_TYPE rel dbg)
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${BUILD_TYPE})
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${BUILD_TYPE})
# Since nmap makefile has strong relationshop with codes, copy codes to obj path
vcpkg_extract_source_archive(${ARCHIVE} ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${BUILD_TYPE})
endforeach()
set(OPTIONS --without-nmap-update --with-openssl=${CURRENT_INSTALLED_DIR} --with-libssh2=${CURRENT_INSTALLED_DIR} --with-libz=${CURRENT_INSTALLED_DIR} --with-libpcre=${CURRENT_INSTALLED_DIR})
message(STATUS "Building Options: ${OPTIONS}")
if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL Release)
message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/nmap-7.70)
vcpkg_execute_required_process(
COMMAND "./configure" ${OPTIONS}
WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
LOGNAME config-${TARGET_TRIPLET}-rel
)
message(STATUS "Building ${TARGET_TRIPLET}-rel")
vcpkg_execute_required_process(
COMMAND make
WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
LOGNAME build-${TARGET_TRIPLET}-rel
)
message(STATUS "Installing ${TARGET_TRIPLET}-rel")
file(INSTALL ${SOURCE_PATH_RELEASE}/nmap DESTINATION ${CURRENT_PACKAGES_DIR}/tools)
endif()
if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL Debug)
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
set(SOURCE_PATH_DEBUG ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/nmap-7.70)
vcpkg_execute_required_process(
COMMAND "./configure" ${OPTIONS}
WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
LOGNAME config-${TARGET_TRIPLET}-dbg
)
message(STATUS "Building ${TARGET_TRIPLET}-dbg")
vcpkg_execute_required_process(
COMMAND make
WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
LOGNAME build-${TARGET_TRIPLET}-dbg
)
message(STATUS "Installing ${TARGET_TRIPLET}-dbg")
file(INSTALL ${SOURCE_PATH_RELEASE}/nmap DESTINATION ${CURRENT_PACKAGES_DIR}/debug/tools)
endif()
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/nmap-7.70)
endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
vcpkg_copy_pdbs()
# Handle copyright
# TODO: Examine build log and confirm that this license matches the build output
file(RENAME ${CURRENT_PACKAGES_DIR}/COPYING ${CURRENT_PACKAGES_DIR}/copyright)
file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)