aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Sinigardi <stesinigardi@hotmail.com>2021-04-29 19:45:10 +0200
committerGitHub <noreply@github.com>2021-04-29 10:45:10 -0700
commit58678a961f63f2a2121c90c8fd9b6423c42a46b4 (patch)
tree92eeb91e882bd1961f52413c59bea182427b538e
parent2a61223ac027bb0e35495b3a1e8e201f8504797b (diff)
downloadvcpkg-58678a961f63f2a2121c90c8fd9b6423c42a46b4.tar.gz
vcpkg-58678a961f63f2a2121c90c8fd9b6423c42a46b4.zip
[darknet] fix opencv features, add compatibility with VS16.9 (#15942)
* [darknet] fix opencv features colliding one with the others * update yolov4-tiny sha512 * move to manifest file * format manifest file and fix some inconsistencies * [darknet] fix references * Update ports/darknet/vcpkg.json * Update versions/d-/darknet.json * apply review suggestions * [darknet] fix references * Apply suggestions from code review Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com> * format as requested by CI * [darknet] update refs * [darknet] bugfix Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com> Co-authored-by: Billy Robert ONeal III <bion@microsoft.com>
-rw-r--r--ports/darknet/CONTROL46
-rw-r--r--ports/darknet/portfile.cmake126
-rw-r--r--ports/darknet/vcpkg.json115
-rw-r--r--scripts/ci.baseline.txt2
-rw-r--r--versions/baseline.json2
-rw-r--r--versions/d-/darknet.json5
6 files changed, 143 insertions, 153 deletions
diff --git a/ports/darknet/CONTROL b/ports/darknet/CONTROL
deleted file mode 100644
index e23b761d0..000000000
--- a/ports/darknet/CONTROL
+++ /dev/null
@@ -1,46 +0,0 @@
-Source: darknet
-Version: 2021-01-21
-Description: Darknet is an open source neural network framework written in C and CUDA. You only look once (YOLO) is a state-of-the-art, real-time object detection system, best example of darknet functionalities.
-Build-Depends: pthreads, stb
-
-Feature: cuda
-Build-Depends: cuda
-Description: Build darknet with support for CUDA
-
-Feature: cudnn
-Build-Depends: darknet[cuda], cudnn
-Description: Build darknet with support for CUDNN
-
-Feature: opencv-base
-Build-Depends: opencv[ffmpeg]
-Description: Build darknet with support for OpenCV
-
-Feature: opencv-cuda
-Build-Depends: opencv[ffmpeg], opencv[cuda]
-Description: Build darknet with support for a CUDA-enabled OpenCV
-
-Feature: opencv2-base
-Build-Depends: opencv2[ffmpeg]
-Description: Build darknet with support for OpenCV3
-
-Feature: opencv2-cuda
-Build-Depends: opencv2[ffmpeg], opencv2[cuda]
-Description: Build darknet with support for a CUDA-enabled OpenCV3
-
-Feature: opencv3-base
-Build-Depends: opencv3[ffmpeg]
-Description: Build darknet with support for OpenCV3
-
-Feature: opencv3-cuda
-Build-Depends: opencv3[ffmpeg], opencv3[cuda]
-Description: Build darknet with support for a CUDA-enabled OpenCV3
-
-Feature: weights
-Description: Download pre-built weights for test
-
-Feature: weights-train
-Description: Download pre-built weights for training
-
-Feature: full
-Build-Depends: darknet[opencv-cuda], darknet[cudnn], darknet[weights], darknet[weights-train]
-Description: Build darknet fully-featured
diff --git a/ports/darknet/portfile.cmake b/ports/darknet/portfile.cmake
index 3f3df1190..e3c876450 100644
--- a/ports/darknet/portfile.cmake
+++ b/ports/darknet/portfile.cmake
@@ -1,22 +1,28 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO AlexeyAB/darknet
- REF 00d578e327c22638ea12e73c4efb74c798c08de5
- SHA512 ef2d46fab670759e9c22d0233b60192bfe47669e29d2ec1e020a77dfaf09894a93160c11de070bc39d86109dd2a37ca7172fbb081809b1ea2783207a6e385b2c
+ REF 91efb7c7f6c00a4616ed58735f7c670908d0a849
+ SHA512 7f6187f8ccc89295daf7b15288bae0bf53638970422ced80a4a755e2b4765cda36f532ebc5c32a28804a2ed0ac6375e9a8f7449a9002e1b373378635a54f2c96
HEAD_REF master
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
cuda ENABLE_CUDA
- opencv-base ENABLE_OPENCV
- opencv2-base ENABLE_OPENCV
- opencv3-base ENABLE_OPENCV
- opencv-cuda ENABLE_OPENCV
- opencv2-cuda ENABLE_OPENCV
- opencv3-cuda ENABLE_OPENCV
cudnn ENABLE_CUDNN
)
+#do not move following features to vcpkg_check_features because they break themselves: one off will turn off the others even if true
+set(ENABLE_OPENCV FALSE)
+set(ENABLE_OPENCV_WITH_CUDA FALSE)
+if ("opencv-base" IN_LIST FEATURES OR "opencv2-base" IN_LIST FEATURES OR "opencv3-base" IN_LIST FEATURES)
+ set(ENABLE_OPENCV TRUE)
+endif()
+if ("opencv-cuda" IN_LIST FEATURES OR "opencv2-cuda" IN_LIST FEATURES OR "opencv3-cuda" IN_LIST FEATURES)
+ set(ENABLE_OPENCV TRUE)
+ set(ENABLE_OPENCV_WITH_CUDA TRUE)
+endif()
+
if ("cuda" IN_LIST FEATURES)
if (NOT VCPKG_CMAKE_SYSTEM_NAME AND NOT ENV{CUDACXX})
#CMake looks for nvcc only in PATH and CUDACXX env vars for the Ninja generator. Since we filter path on vcpkg and CUDACXX env var is not set by CUDA installer on Windows, CMake cannot find CUDA when using Ninja generator, so we need to manually enlight it if necessary (https://gitlab.kitware.com/cmake/cmake/issues/19173). Otherwise we could just disable Ninja and use MSBuild, but unfortunately CUDA installer does not integrate with some distributions of MSBuild (like the ones inside Build Tools), making CUDA unavailable otherwise in those cases, which we want to avoid
@@ -24,72 +30,6 @@ if ("cuda" IN_LIST FEATURES)
endif()
endif()
-if("weights" IN_LIST FEATURES)
- vcpkg_download_distfile(YOLOV4-TINY_WEIGHTS
- URLS "https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights"
- FILENAME "darknet-cache/yolov4-tiny.weights"
- SHA512 804ca2ab8e3699d31c95bf773d22f901f186703487c7945f30dc2dbb808094793362cb6f5da5cd0b4b83f820c8565a3cba22fafa069ee6ca2a925677137d95f4
- )
- vcpkg_download_distfile(YOLOV4_WEIGHTS
- URLS "https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights"
- FILENAME "darknet-cache/yolov4.weights"
- SHA512 77f779c58df67975b187cfead99c1e62d72c57e76c3715e35b97a1c7aba1c7b092be97ffb17907099543ac3957085a0fe9688df4a653ea62dfe8322afca53e40
- )
- vcpkg_download_distfile(YOLOV3-TINY-PRN_WEIGHTS
- URLS "https://drive.google.com/u/0/uc?id=18yYZWyKbo4XSDVyztmsEcF9B_6bxrhUY&export=download"
- FILENAME "darknet-cache/yolov3-tiny-prn.weights"
- SHA512 0be26786103866868751bb8c5cc0b5147b3e8528d0cf5b387f5aefc72807fd7f1bf8049d5b0a47e9b4445d34e773ea8e3abc95330edb2a3ecd6103e158df2677
- )
- vcpkg_download_distfile(YOLOV3_WEIGHTS
- URLS "https://pjreddie.com/media/files/yolov3.weights"
- FILENAME "darknet-cache/yolov3.weights"
- SHA512 293c70e404ff0250d7c04ca1e5e053fc21a78547e69b5b329d34f25981613e59b982d93fff2c352915ef7531d6c3b02a9b0b38346d05c51d6636878d8883f2c1
- )
- vcpkg_download_distfile(YOLOV3-OPENIMAGES_WEIGHTS
- URLS "https://pjreddie.com/media/files/yolov3-openimages.weights"
- FILENAME "darknet-cache/yolov3-openimages.weights"
- SHA512 616e90057946c9588d045cff6ec36b63254660af4377201dc02642e798d62f392e8f3cdb5b10a1c4bcbe5c056e690275dca35b68db7fd802783a0c6bbd959ba8
- )
- vcpkg_download_distfile(YOLOV2_WEIGHTS
- URLS "https://pjreddie.com/media/files/yolov2.weights"
- FILENAME "darknet-cache/yolov2.weights"
- SHA512 5271da2dd2da915172ddd034c8e894877e7066051f105ae82e25e185a2b4e4157d2b9514653c23780e87346f2b20df6363018b7e688aba422e2dacf1d2fbf6ab
- )
- vcpkg_download_distfile(YOLOV3-TINY_WEIGHTS
- URLS "https://pjreddie.com/media/files/yolov3-tiny.weights"
- FILENAME "darknet-cache/yolov3-tiny.weights"
- SHA512 981a56459515f727bb7b3d3341b95f4117499b6726eab2798e1c3e524de1ee8ed0d954c11b27bbbb926da2cc955526a194eddf69c55d65923994ab2e8af07042
- )
- vcpkg_download_distfile(YOLOV2-TINY_WEIGHTS
- URLS "https://pjreddie.com/media/files/yolov2-tiny.weights"
- FILENAME "darknet-cache/yolov2-tiny.weights"
- SHA512 f0857a7a02cf4322354d288c9afa0b87321b23082b719bc84ea64e2f3556cc1fafeb836ee5bf9fb6dcf448839061b93623a067dfde7afa1338636865ea88989a
- )
-endif()
-
-if("weights-train" IN_LIST FEATURES)
- vcpkg_download_distfile(YOLOV4-TINY-CONV-29
- URLS "https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.conv.29"
- FILENAME "darknet-cache/yolov4-tiny.conv.29"
- SHA512 318e47f4bdf43b7f4eff8f3669bc9ba66cd7bd8ffb31df5bc1978682c85fec8e63a8349958022fd933cc676cbf5241953f2181bf4d1789f7cf9d371e012e3e49
- )
- vcpkg_download_distfile(YOLOV4-CONV-137
- URLS "https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.conv.137"
- FILENAME "darknet-cache/yolov4.conv.137"
- SHA512 d146a61762bf6ef91deb6c627ede475f63b3975fbeeb1ff5e0949470b29be8fc28ee81280041937e7ded49679276fbabacdb92d02fa246cc622853633fd3d992
- )
- vcpkg_download_distfile(DARKNET53-CONV-74
- URLS "https://pjreddie.com/media/files/darknet53.conv.74"
- FILENAME "darknet-cache/darknet53.conv.74"
- SHA512 8983e1c129e2d6e8e3da0cc0781ecb7a07813830ef5a87c24b53100df6a5f23db6c6e6a402aec78025a93fe060b75d1958f1b8f7439a04b54a3f19c81e2ae99b
- )
- vcpkg_download_distfile(DARKNET19-448-CONV-23
- URLS "https://pjreddie.com/media/files/darknet19_448.conv.23"
- FILENAME "darknet-cache/darknet19_448.conv.23"
- SHA512 8016f5b7ddc15c5d7dad231592f5351eea65f608ebdb204f545034dde904e11962f693080dfeb5a4510e7b71bdda151a9121ba0f8a243018d680f01b1efdbd31
- )
-endif()
-
#make sure we don't use any integrated pre-built library nor any unnecessary CMake module
file(REMOVE_RECURSE ${SOURCE_PATH}/3rdparty)
file(REMOVE ${SOURCE_PATH}/cmake/Modules/FindPThreads_windows.cmake)
@@ -103,24 +43,18 @@ vcpkg_configure_cmake(
OPTIONS ${FEATURE_OPTIONS}
-DINSTALL_BIN_DIR:STRING=bin
-DINSTALL_LIB_DIR:STRING=lib
+ -DENABLE_OPENCV:BOOL=${ENABLE_OPENCV}
+ -DENABLE_OPENCV_WITH_CUDA:BOOL=${ENABLE_OPENCV_WITH_CUDA}
)
vcpkg_install_cmake()
-
-file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/darknet${VCPKG_TARGET_EXECUTABLE_SUFFIX})
-file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/uselib${VCPKG_TARGET_EXECUTABLE_SUFFIX})
-if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/bin/uselib_track${VCPKG_TARGET_EXECUTABLE_SUFFIX})
- file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/uselib_track${VCPKG_TARGET_EXECUTABLE_SUFFIX})
-endif()
-file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/${PORT})
-file(RENAME ${CURRENT_PACKAGES_DIR}/bin/darknet${VCPKG_TARGET_EXECUTABLE_SUFFIX} ${CURRENT_PACKAGES_DIR}/tools/${PORT}/darknet${VCPKG_TARGET_EXECUTABLE_SUFFIX})
-file(RENAME ${CURRENT_PACKAGES_DIR}/bin/uselib${VCPKG_TARGET_EXECUTABLE_SUFFIX} ${CURRENT_PACKAGES_DIR}/tools/${PORT}/uselib${VCPKG_TARGET_EXECUTABLE_SUFFIX})
-if(EXISTS ${CURRENT_PACKAGES_DIR}/bin/uselib_track${VCPKG_TARGET_EXECUTABLE_SUFFIX})
- file(RENAME ${CURRENT_PACKAGES_DIR}/bin/uselib_track${VCPKG_TARGET_EXECUTABLE_SUFFIX} ${CURRENT_PACKAGES_DIR}/tools/${PORT}/uselib_track${VCPKG_TARGET_EXECUTABLE_SUFFIX})
+vcpkg_copy_tools(AUTO_CLEAN TOOL_NAMES darknet uselib)
+if ("opencv-cuda" IN_LIST FEATURES OR "opencv3-cuda" IN_LIST FEATURES)
+ vcpkg_copy_tools(AUTO_CLEAN TOOL_NAMES uselib_track)
endif()
+
file(COPY ${SOURCE_PATH}/cfg DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
file(COPY ${SOURCE_PATH}/data DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
-vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT})
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
@@ -131,22 +65,6 @@ vcpkg_fixup_cmake_targets()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+file(INSTALL ${SOURCE_PATH}/scripts/download_weights.ps1 DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT}/scripts)
+message(STATUS "To download weight files, please go to ${CURRENT_INSTALLED_DIR}/tools/${PORT}/scripts and run ./download_weights.ps1")
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
-
-if("weights" IN_LIST FEATURES)
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov4-tiny.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov4.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov3-tiny-prn.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov3-openimages.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov3.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov2.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov3-tiny.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov2-tiny.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
-endif()
-
-if("weights-train" IN_LIST FEATURES)
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov4-tiny.conv.29 DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov4.conv.137 DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/darknet53.conv.74 DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/darknet19_448.conv.23 DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
-endif()
diff --git a/ports/darknet/vcpkg.json b/ports/darknet/vcpkg.json
new file mode 100644
index 000000000..30caffb7f
--- /dev/null
+++ b/ports/darknet/vcpkg.json
@@ -0,0 +1,115 @@
+{
+ "name": "darknet",
+ "version-date": "2021-04-16",
+ "description": "Darknet is an open source neural network framework written in C and CUDA. You only look once (YOLO) is a state-of-the-art, real-time object detection system, best example of darknet functionalities.",
+ "homepage": "https://github.com/alexeyab/darknet",
+ "dependencies": [
+ "pthreads",
+ "stb"
+ ],
+ "features": {
+ "cuda": {
+ "description": "Build darknet with support for CUDA",
+ "dependencies": [
+ "cuda"
+ ]
+ },
+ "cudnn": {
+ "description": "Build darknet with support for cuDNN",
+ "dependencies": [
+ "cuda",
+ "cudnn"
+ ]
+ },
+ "full": {
+ "description": "Build darknet fully featured",
+ "dependencies": [
+ {
+ "name": "darknet",
+ "features": [
+ "cuda",
+ "cudnn",
+ "opencv-cuda"
+ ]
+ }
+ ]
+ },
+ "opencv-base": {
+ "description": "Build darknet with support for latest version of OpenCV",
+ "dependencies": [
+ {
+ "name": "opencv",
+ "features": [
+ "contrib",
+ "dnn",
+ "ffmpeg"
+ ]
+ }
+ ]
+ },
+ "opencv-cuda": {
+ "description": "Build darknet with support for latest version of CUDA-enabled OpenCV",
+ "dependencies": [
+ {
+ "name": "opencv",
+ "features": [
+ "contrib",
+ "cuda",
+ "dnn",
+ "ffmpeg"
+ ]
+ }
+ ]
+ },
+ "opencv2-base": {
+ "description": "Build darknet with support for OpenCV2",
+ "dependencies": [
+ {
+ "name": "opencv2",
+ "features": [
+ "ffmpeg"
+ ]
+ }
+ ]
+ },
+ "opencv2-cuda": {
+ "description": "Build darknet with support for CUDA-enabled OpenCV2",
+ "dependencies": [
+ {
+ "name": "opencv2",
+ "features": [
+ "cuda",
+ "ffmpeg"
+ ]
+ }
+ ]
+ },
+ "opencv3-base": {
+ "description": "Build darknet with support for OpenCV3",
+ "dependencies": [
+ {
+ "name": "opencv3",
+ "features": [
+ "contrib",
+ "dnn",
+ "ffmpeg"
+ ]
+ }
+ ]
+ },
+ "opencv3-cuda": {
+ "description": "Build darknet with support for CUDA-enabled OpenCV3",
+ "dependencies": [
+ {
+ "name": "opencv3",
+ "features": [
+ "contrib",
+ "cuda",
+ "dnn",
+ "ffmpeg"
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt
index 08e0fb086..20863873e 100644
--- a/scripts/ci.baseline.txt
+++ b/scripts/ci.baseline.txt
@@ -177,8 +177,6 @@ cudnn:arm-uwp=fail
cudnn:x64-uwp=fail
cudnn:x64-windows-static=fail
cudnn:x86-windows=fail
-darknet:arm64-windows=fail
-darknet:arm-uwp=fail
# Since pipeline cannot automatically install dbghelp dependency, skip this detection
dbghelp:arm-uwp=skip
dbghelp:arm64-windows=skip
diff --git a/versions/baseline.json b/versions/baseline.json
index 67d5f314a..7e6abced9 100644
--- a/versions/baseline.json
+++ b/versions/baseline.json
@@ -1565,7 +1565,7 @@
"port-version": 0
},
"darknet": {
- "baseline": "2021-01-21",
+ "baseline": "2021-04-16",
"port-version": 0
},
"darts-clone": {
diff --git a/versions/d-/darknet.json b/versions/d-/darknet.json
index 89f7d3ced..a0c29f80e 100644
--- a/versions/d-/darknet.json
+++ b/versions/d-/darknet.json
@@ -1,6 +1,11 @@
{
"versions": [
{
+ "git-tree": "b8aea30f123c47f5be294829fbfac4d9e8c1295d",
+ "version-date": "2021-04-16",
+ "port-version": 0
+ },
+ {
"git-tree": "05bdc42da8656bf1acf80d6f3f821dff045c7b72",
"version-string": "2021-01-21",
"port-version": 0