diff --git a/docs/maintainers/vcpkg_from_sourceforge.md b/docs/maintainers/vcpkg_from_sourceforge.md index 823ee82f958..faad0621571 100644 --- a/docs/maintainers/vcpkg_from_sourceforge.md +++ b/docs/maintainers/vcpkg_from_sourceforge.md @@ -4,10 +4,10 @@ Download and extract a project from sourceforge. ## Usage: ```cmake -vcpkg_from_sourceforge( +vcpkg_from_sourceforge( OUT_SOURCE_PATH SOURCE_PATH REPO - [REF <2.1-3>] + [REF <2.1-3>] SHA512 <547b417109332...> FILENAME [DISABLE_SSL] diff --git a/ports/argtable2/CONTROL b/ports/argtable2/CONTROL index 7a953dd145e..6cdb294cfab 100644 --- a/ports/argtable2/CONTROL +++ b/ports/argtable2/CONTROL @@ -1,4 +1,4 @@ Source: argtable2 -Version: 2.13-5 +Version: 2.13-7 Homepage: http://argtable.sourceforge.net Description: Argtable is an ANSI C library for parsing GNU style command line options with a minimum of fuss. diff --git a/ports/cairo/CONTROL b/ports/cairo/CONTROL index cbbe5d3d85b..0eda86fac3f 100644 --- a/ports/cairo/CONTROL +++ b/ports/cairo/CONTROL @@ -1,5 +1,5 @@ Source: cairo -Version: 1.16.0-5 +Version: 1.16.0-6 Homepage: https://cairographics.org Description: Cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System (via both Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB. Build-Depends: zlib, libpng, pixman, freetype, fontconfig diff --git a/ports/cunit/CONTROL b/ports/cunit/CONTROL index 21e97d948be..c5725875f3a 100644 --- a/ports/cunit/CONTROL +++ b/ports/cunit/CONTROL @@ -1,4 +1,4 @@ Source: cunit -Version: 2.1.3-4 +Version: 2.1.3-6 Homepage: https://sourceforge.net/projects/cunit/ Description: CUnit is a lightweight system for writing, administering, and running unit tests in C. It provides C programmers a basic testing functionality with a flexible variety of user interfaces diff --git a/ports/epsilon/CONTROL b/ports/epsilon/CONTROL index 8c829bef3a8..1547a996783 100644 --- a/ports/epsilon/CONTROL +++ b/ports/epsilon/CONTROL @@ -1,5 +1,5 @@ Source: epsilon -Version: 0.9.2-2 +Version: 0.9.2-4 Homepage: https://sourceforge.net/projects/epsilon-project/ Description: EPSILON is an Open Source wavelet image compressor, that is aimed on parallel and robust image processing. Build-Depends: libpopt \ No newline at end of file diff --git a/ports/freeglut/CONTROL b/ports/freeglut/CONTROL index fad233f80ff..452615768f0 100644 --- a/ports/freeglut/CONTROL +++ b/ports/freeglut/CONTROL @@ -1,4 +1,4 @@ Source: freeglut -Version: 3.2.1-2 +Version: 3.2.1-4 Homepage: https://sourceforge.net/projects/freeglut/ Description: Open source implementation of GLUT with source and binary backwards compatibility. diff --git a/ports/freeimage/CONTROL b/ports/freeimage/CONTROL index d7b6a4311b2..36829adc7a5 100644 --- a/ports/freeimage/CONTROL +++ b/ports/freeimage/CONTROL @@ -1,5 +1,5 @@ Source: freeimage -Version: 3.18.0-10 +Version: 3.18.0-12 Build-Depends: zlib, libpng, libjpeg-turbo, tiff, openjpeg, libwebp (!uwp), libraw, jxrlib, openexr Homepage: https://sourceforge.net/projects/freeimage/ Description: Support library for graphics image formats diff --git a/ports/geographiclib/CONTROL b/ports/geographiclib/CONTROL index 18c787c72ae..a1c1aeff643 100644 --- a/ports/geographiclib/CONTROL +++ b/ports/geographiclib/CONTROL @@ -1,4 +1,4 @@ Source: geographiclib -Version: 1.47-patch1-14 +Version: 1.47-patch1-16 Homepage: https://sourceforge.net/projects/geographiclib/ Description: a small set of C++ classes for performing conversions between geographic, UTM, UPS, MGRS, geocentric, and local cartesian coordinates, for gravity (e.g., EGM2008), geoid height, and geomagnetic field (e.g., WMM2010) calculations, and for solving geodesic problems. diff --git a/ports/giflib/CONTROL b/ports/giflib/CONTROL index bb796c97a84..5361fc185a7 100644 --- a/ports/giflib/CONTROL +++ b/ports/giflib/CONTROL @@ -1,4 +1,4 @@ Source: giflib -Version: 5.1.4-4 +Version: 5.1.4-6 Homepage: https://sourceforge.net/projects/giflib/ Description: A library for reading and writing gif images. diff --git a/ports/gsoap/CONTROL b/ports/gsoap/CONTROL index 27c7a8c1bdd..e5901fca747 100644 --- a/ports/gsoap/CONTROL +++ b/ports/gsoap/CONTROL @@ -1,5 +1,5 @@ Source: gsoap -Version: 2.8.102-1 +Version: 2.8.102-4 Build-Depends: curl Homepage: https://sourceforge.net/projects/gsoap2/ Description: The gSOAP toolkit is a C and C++ software development toolkit for SOAP and REST XML Web services and generic C/C++ XML data bindings. diff --git a/ports/healpix/CONTROL b/ports/healpix/CONTROL index a58d6ab6373..629b095ee45 100644 --- a/ports/healpix/CONTROL +++ b/ports/healpix/CONTROL @@ -1,5 +1,5 @@ Source: healpix -Version: 1.12.10-2 +Version: 1.12.10-5 Homepage: http://healpix.sourceforge.net/ Description: HEALPix is an acronym for Hierarchical Equal Area isoLatitude Pixelation of a sphere. Build-Depends: cfitsio diff --git a/ports/irrlicht/CONTROL b/ports/irrlicht/CONTROL index 3207b7ae8c5..e8ff45bdd81 100644 --- a/ports/irrlicht/CONTROL +++ b/ports/irrlicht/CONTROL @@ -1,5 +1,5 @@ Source: irrlicht -Version: 1.8.4-8 +Version: 1.8.4-10 Homepage: http://irrlicht.sourceforge.net Description: Irrlicht lightning fast 3d engine Build-Depends: zlib, libpng, bzip2, libjpeg-turbo diff --git a/ports/itpp/CONTROL b/ports/itpp/CONTROL index 8b1ae770166..2d4fa89005d 100644 --- a/ports/itpp/CONTROL +++ b/ports/itpp/CONTROL @@ -1,4 +1,4 @@ Source: itpp -Version: 4.3.1-3 +Version: 4.3.1-5 Homepage: http://itpp.sourceforge.net Description: IT++ is a C++ library of mathematical, signal processing and communication classes and functions. Its main use is in simulation of communication systems and for performing research in the area of communications. \ No newline at end of file diff --git a/ports/libaiff/CONTROL b/ports/libaiff/CONTROL index 155f5e7d0f9..889511a5cf6 100644 --- a/ports/libaiff/CONTROL +++ b/ports/libaiff/CONTROL @@ -1,4 +1,4 @@ Source: libaiff -Version: 5.0-4 +Version: 5.0-6 Homepage: https://sourceforge.net/projects/aifftools Description: LibAiff is an open-source library, providing C applications transparent read & write operations for Audio Interchange File Format (AIFF) files, with the goal of supporting all of its features diff --git a/ports/libdisasm/CONTROL b/ports/libdisasm/CONTROL index 7ab3231924a..1a09c870ea3 100644 --- a/ports/libdisasm/CONTROL +++ b/ports/libdisasm/CONTROL @@ -1,4 +1,4 @@ Source: libdisasm -Version: 0.23-5 +Version: 0.23-7 Homepage: https://sourceforge.net/projects/bastard Description: x86 Disassembler Library. diff --git a/ports/libmad/CONTROL b/ports/libmad/CONTROL index a044ba76bd4..356ecc65f98 100644 --- a/ports/libmad/CONTROL +++ b/ports/libmad/CONTROL @@ -1,4 +1,4 @@ Source: libmad -Version: 0.15.1-6 +Version: 0.15.1-8 Homepage: http://www.mars.org/home/rob/proj/mpeg/ Description: high-quality MPEG audio decoder diff --git a/ports/libmikmod/CONTROL b/ports/libmikmod/CONTROL index 7344b803794..637052cb263 100644 --- a/ports/libmikmod/CONTROL +++ b/ports/libmikmod/CONTROL @@ -1,5 +1,5 @@ Source: libmikmod -Version: 3.3.11.1-6 +Version: 3.3.11.1-8 Homepage: https://sourceforge.net/projects/mikmod/ Description: Mikmod is a module player and library supporting many formats, including mod, s3m, it, and xm. Build-Depends: openal-soft diff --git a/ports/libnice/CONTROL b/ports/libnice/CONTROL index fcbc522a913..a2f87af5cba 100644 --- a/ports/libnice/CONTROL +++ b/ports/libnice/CONTROL @@ -1,5 +1,5 @@ Source: libnice -Version: 0.1.15-3 +Version: 0.1.15-4 Homepage: https://nice.freedesktop.org Description: Libnice is an implementation of the IETF's Interactive Connectivity Establishment (ICE) standard (RFC 5245) and the Session Traversal Utilities for NAT (STUN) standard (RFC 5389). Build-Depends: glib, openssl diff --git a/ports/libnice/portfile.cmake b/ports/libnice/portfile.cmake index fc58cdc1372..ff09f483722 100644 --- a/ports/libnice/portfile.cmake +++ b/ports/libnice/portfile.cmake @@ -22,7 +22,6 @@ vcpkg_install_cmake() vcpkg_copy_pdbs() -file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) file(COPY ${SOURCE_PATH}/COPYING.LGPL DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) file(COPY ${SOURCE_PATH}/COPYING.MPL DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) -file(RENAME ${CURRENT_PACKAGES_DIR}/share/${PORT}/COPYING ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright) +file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) diff --git a/ports/libsquish/CONTROL b/ports/libsquish/CONTROL index 619a937805f..2e3500478e4 100644 --- a/ports/libsquish/CONTROL +++ b/ports/libsquish/CONTROL @@ -1,4 +1,4 @@ Source: libsquish -Version: 1.15-5 +Version: 1.15-7 Homepage: https://sourceforge.net/projects/libsquish Description: Open source DXT compression library. diff --git a/ports/libusb-win32/CONTROL b/ports/libusb-win32/CONTROL index b10d905198e..24dd02c85fd 100644 --- a/ports/libusb-win32/CONTROL +++ b/ports/libusb-win32/CONTROL @@ -1,5 +1,5 @@ Source: libusb-win32 -Version: 1.2.6.0-4 +Version: 1.2.6.0-6 Homepage: https://sourceforge.net/projects/libusb-win32 Description: Allows user space applications to access many USB device on Windows. Supports: windows \ No newline at end of file diff --git a/ports/libuuid/CONTROL b/ports/libuuid/CONTROL index 3ec19066c9a..5c11b9cac4f 100644 --- a/ports/libuuid/CONTROL +++ b/ports/libuuid/CONTROL @@ -1,5 +1,5 @@ Source: libuuid -Version: 1.0.3-5 +Version: 1.0.3-7 Homepage: https://sourceforge.net/projects/libuuid Description: Universally unique id library Supports: linux|osx \ No newline at end of file diff --git a/ports/libxmp-lite/CONTROL b/ports/libxmp-lite/CONTROL index 45e1069dad1..fd791aa2901 100644 --- a/ports/libxmp-lite/CONTROL +++ b/ports/libxmp-lite/CONTROL @@ -1,4 +1,4 @@ Source: libxmp-lite -Version: 4.4.1-4 +Version: 4.4.1-6 Homepage: https://sourceforge.net/projects/xmp/ Description: Lightweight version of libxmp that supports MOD, S3M, XM and IT modules. diff --git a/ports/mathgl/CONTROL b/ports/mathgl/CONTROL index 4dd6fbb5125..7dc82d3f97d 100644 --- a/ports/mathgl/CONTROL +++ b/ports/mathgl/CONTROL @@ -1,5 +1,5 @@ Source: mathgl -Version: 2.4.3-4 +Version: 2.4.3-6 Description: MathGL is a free library of fast C++ routines for the plotting of the data varied in one or more dimensions Default-Features: opengl, jpeg, png, zlib diff --git a/ports/mp3lame/CONTROL b/ports/mp3lame/CONTROL index bd8a34222ec..5cf9000651d 100644 --- a/ports/mp3lame/CONTROL +++ b/ports/mp3lame/CONTROL @@ -1,4 +1,4 @@ Source: mp3lame -Version: 3.100-1 +Version: 3.100-3 Homepage: http://lame.sourceforge.net/ Description: LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL. diff --git a/ports/opencc/CONTROL b/ports/opencc/CONTROL index b59adc76006..49765c5b9e9 100644 --- a/ports/opencc/CONTROL +++ b/ports/opencc/CONTROL @@ -1,5 +1,5 @@ Source: opencc -Version: 2020-04-26-4 +Version: 2020-04-26-6 Description: A project for conversion between Traditional and Simplified Chinese Homepage: https://github.com/BYVoid/OpenCC Supports: !(arm|arm64|uwp) diff --git a/ports/pcre/CONTROL b/ports/pcre/CONTROL index 97a79426a4b..97dd54c343d 100644 --- a/ports/pcre/CONTROL +++ b/ports/pcre/CONTROL @@ -1,4 +1,4 @@ Source: pcre -Version: 8.44-2 +Version: 8.44-4 Homepage: https://www.pcre.org/ Description: Perl Compatible Regular Expressions diff --git a/ports/pcre/portfile.cmake b/ports/pcre/portfile.cmake index 92926a32f38..903d82a763a 100644 --- a/ports/pcre/portfile.cmake +++ b/ports/pcre/portfile.cmake @@ -1,11 +1,15 @@ set(PCRE_VERSION 8.44) -vcpkg_from_sourceforge( - OUT_SOURCE_PATH SOURCE_PATH - REPO pcre/pcre - REF ${PCRE_VERSION} +vcpkg_download_distfile(ARCHIVE + URLS "https://ftp.pcre.org/pub/pcre/pcre-${PCRE_VERSION}.zip" + "https://downloads.sourceforge.net/project/pcre/pcre/${PCRE_VERSION}/pcre-${PCRE_VERSION}.zip" FILENAME "pcre-${PCRE_VERSION}.zip" SHA512 adddec1236b25ff1c90e73835c2ba25d60a5839cbde2d6be7838a8ec099f7443dede931dc39002943243e21afea572eda71ee8739058e72235a192e4324398f0 +) + +vcpkg_extract_source_archive_ex( + OUT_SOURCE_PATH SOURCE_PATH + ARCHIVE ${ARCHIVE} PATCHES # Fix CMake Deprecation Warning concerning OLD behavior for policy CMP0026 # Suppress MSVC compiler warnings C4703, C4146, C4308, which fixes errors diff --git a/ports/plplot/CONTROL b/ports/plplot/CONTROL index af69724f766..fe5ea0b198d 100644 --- a/ports/plplot/CONTROL +++ b/ports/plplot/CONTROL @@ -1,5 +1,5 @@ Source: plplot -Version: 5.13.0-6 +Version: 5.13.0-8 Build-Depends: freetype, zlib, libpng, bzip2 Description: PLplot is a cross-platform software package for creating scientific plots whose (UTF-8) plot symbols and text are limited in practice only by what Unicode-aware system fonts are installed on a user's computer. diff --git a/ports/podofo/CONTROL b/ports/podofo/CONTROL index e2357fbe824..a6965d832de 100644 --- a/ports/podofo/CONTROL +++ b/ports/podofo/CONTROL @@ -1,5 +1,5 @@ Source: podofo -Version: 0.9.6-9 +Version: 0.9.6-11 Homepage: https://sourceforge.net/projects/podofo/ Description: PoDoFo is a library to work with the PDF file format Build-Depends: zlib, libpng, libjpeg-turbo, tiff, openssl, freetype diff --git a/ports/polyclipping/CONTROL b/ports/polyclipping/CONTROL index 4a46772b2bd..198090cc6f1 100644 --- a/ports/polyclipping/CONTROL +++ b/ports/polyclipping/CONTROL @@ -1,4 +1,4 @@ Source: polyclipping -Version: 6.4.2-2 +Version: 6.4.2-4 Homepage: https://sourceforge.net/projects/polyclipping/ Description: The Clipper library performs clipping and offsetting for both lines and polygons. All four boolean clipping operations are supported - intersection, union, difference and exclusive-or. Polygons can be of any shape including self-intersecting polygons. diff --git a/ports/portmidi/CONTROL b/ports/portmidi/CONTROL index 1fafc6e9f1b..f5518c3e14c 100644 --- a/ports/portmidi/CONTROL +++ b/ports/portmidi/CONTROL @@ -1,5 +1,5 @@ Source: portmidi -Version: 0.217.1-2 +Version: 0.217.1-4 Homepage: https://sourceforge.net/projects/portmedia/ Description: Free, cross-platform, open-source I/O library for MIDI Supports: !uwp \ No newline at end of file diff --git a/ports/rapidxml/CONTROL b/ports/rapidxml/CONTROL index 0bc175e7132..7e119fb705f 100644 --- a/ports/rapidxml/CONTROL +++ b/ports/rapidxml/CONTROL @@ -1,4 +1,4 @@ Source: rapidxml -Version: 1.13-2 +Version: 1.13-4 Homepage: https://sourceforge.net/projects/rapidxml Description: RapidXml is an attempt to create the fastest XML parser possible, while retaining useability, portability and reasonable W3C compatibility. diff --git a/ports/sigslot/CONTROL b/ports/sigslot/CONTROL index d1d9afded71..e785404ebbd 100644 --- a/ports/sigslot/CONTROL +++ b/ports/sigslot/CONTROL @@ -1,3 +1,3 @@ Source: sigslot -Version: 1.0.0-1 +Version: 1.0.0-3 Description: Portable C++ type-safe, thread-safe signal/slot library for ISO C++, Unix/BSD/Linux and Win32. Sigslot allows C++ code to use the signal/slot paradigm made popular by, for example, Qt. diff --git a/ports/tinyxml/CONTROL b/ports/tinyxml/CONTROL index d6c4d6b240c..3a83e411e08 100644 --- a/ports/tinyxml/CONTROL +++ b/ports/tinyxml/CONTROL @@ -1,4 +1,4 @@ Source: tinyxml -Version: 2.6.2-5 +Version: 2.6.2-7 Homepage: https://sourceforge.net/projects/tinyxml Description: A simple, small, minimal, C++ XML parser that can be easily integrating into other programs. diff --git a/ports/wtl/CONTROL b/ports/wtl/CONTROL index 39e78b1d33f..63f618d9b65 100644 --- a/ports/wtl/CONTROL +++ b/ports/wtl/CONTROL @@ -1,4 +1,4 @@ Source: wtl -Version: 10.0-8 +Version: 10.0-10 Homepage: https://sourceforge.net/projects/wtl/ Description: Windows Template Library (WTL) is a C++ library for developing Windows applications and UI components. diff --git a/scripts/cmake/vcpkg_download_distfile.cmake b/scripts/cmake/vcpkg_download_distfile.cmake index 8a8efd205fd..6ad0738039e 100644 --- a/scripts/cmake/vcpkg_download_distfile.cmake +++ b/scripts/cmake/vcpkg_download_distfile.cmake @@ -47,7 +47,7 @@ ## * [fontconfig](https://github.com/Microsoft/vcpkg/blob/master/ports/fontconfig/portfile.cmake) ## * [freetype](https://github.com/Microsoft/vcpkg/blob/master/ports/freetype/portfile.cmake) function(vcpkg_download_distfile VAR) - set(options SKIP_SHA512) + set(options SKIP_SHA512 SILENT_EXIT) set(oneValueArgs FILENAME SHA512) set(multipleValuesArgs URLS HEADERS) cmake_parse_arguments(vcpkg_download_distfile "${options}" "${oneValueArgs}" "${multipleValuesArgs}" ${ARGN}) @@ -171,18 +171,31 @@ function(vcpkg_download_distfile VAR) endforeach(url) endif() - if (NOT download_success) - message(FATAL_ERROR - " \n" - " Failed to download file.\n" - " If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment\n" - " variables to \"https://user:password@your-proxy-ip-address:port/\".\n" - " Otherwise, please submit an issue at https://github.com/Microsoft/vcpkg/issues\n") + if (NOT vcpkg_download_distfile_SILENT_EXIT) + if (NOT download_success) + message(FATAL_ERROR + " \n" + " Failed to download file.\n" + " If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment\n" + " variables to \"https://user:password@your-proxy-ip-address:port/\".\n" + " Otherwise, please submit an issue at https://github.com/Microsoft/vcpkg/issues\n") + else() + test_hash("${download_file_path_part}" "downloaded file" "The file may have been corrupted in transit. This can be caused by proxies. If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment variables to \"https://user:password@your-proxy-ip-address:port/\".\n") + get_filename_component(downloaded_file_dir "${downloaded_file_path}" DIRECTORY) + file(MAKE_DIRECTORY "${downloaded_file_dir}") + file(RENAME ${download_file_path_part} ${downloaded_file_path}) + endif() else() - test_hash("${download_file_path_part}" "downloaded file" "The file may have been corrupted in transit. This can be caused by proxies. If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment variables to \"https://user:password@your-proxy-ip-address:port/\".\n") - get_filename_component(downloaded_file_dir "${downloaded_file_path}" DIRECTORY) - file(MAKE_DIRECTORY "${downloaded_file_dir}") - file(RENAME ${download_file_path_part} ${downloaded_file_path}) + if (NOT download_success) + message(WARNING + " \n" + " Failed to download file.\n") + else() + test_hash("${download_file_path_part}" "downloaded file" "The file may have been corrupted in transit. This can be caused by proxies. If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment variables to \"https://user:password@your-proxy-ip-address:port/\".\n") + get_filename_component(downloaded_file_dir "${downloaded_file_path}" DIRECTORY) + file(MAKE_DIRECTORY "${downloaded_file_dir}") + file(RENAME ${download_file_path_part} ${downloaded_file_path}) + endif() endif() endif() set(${VAR} ${downloaded_file_path} PARENT_SCOPE) diff --git a/scripts/cmake/vcpkg_from_sourceforge.cmake b/scripts/cmake/vcpkg_from_sourceforge.cmake index 4df36a81d59..2584992428f 100644 --- a/scripts/cmake/vcpkg_from_sourceforge.cmake +++ b/scripts/cmake/vcpkg_from_sourceforge.cmake @@ -82,7 +82,8 @@ function(vcpkg_from_sourceforge) else() set(URL_PROTOCOL https:) endif() - set(SOURCEFORGE_HOST ${URL_PROTOCOL}//downloads.sourceforge.net/project) + + set(SOURCEFORGE_HOST ${URL_PROTOCOL}//sourceforge.net/projects) string(FIND ${_vdus_REPO} "/" FOUND_ORG) if (NOT FOUND_ORG EQUAL -1) @@ -94,14 +95,14 @@ function(vcpkg_from_sourceforge) endif() set(ORG_NAME ${ORG_NAME}/) else() - set(REPO_NAME ${_vdus_REPO}) - set(ORG_NAME ) + set(ORG_NAME ${_vdus_REPO}/) + set(REPO_NAME ) endif() if (DEFINED _vdus_REF) - set(URL "${SOURCEFORGE_HOST}/${ORG_NAME}${REPO_NAME}/${_vdus_REF}/${_vdus_FILENAME}") + set(URL "${SOURCEFORGE_HOST}/${ORG_NAME}files/${REPO_NAME}/${_vdus_REF}/${_vdus_FILENAME}") else() - set(URL "${SOURCEFORGE_HOST}/${ORG_NAME}${REPO_NAME}/${_vdus_FILENAME}") + set(URL "${SOURCEFORGE_HOST}/${ORG_NAME}${REPO_NAME}/files/${_vdus_FILENAME}") endif() set(NO_REMOVE_ONE_LEVEL ) @@ -111,12 +112,70 @@ function(vcpkg_from_sourceforge) string(SUBSTRING "${_vdus_SHA512}" 0 10 SANITIZED_REF) + list(APPEND SOURCEFORGE_MIRRORS + cfhcable # United States + pilotfiber # New York, NY + gigenet # Chicago, IL + versaweb # Las Vegas, NV + ayera # Modesto, CA + netactuate # Durham, NC + phoenixnap # Tempe, AZ + astuteinternet # Vancouver, BC + freefr # Paris, France + netcologne # Cologne, Germany + deac-riga # Latvia + excellmedia # Hyderabad, India + iweb # Montreal, QC + jaist # Nomi, Japan + jztkft # Mezotur, Hungary + managedway # Detroit, MI + nchc # Taipei, Taiwan + netix # Bulgaria + ufpr # Curitiba, Brazil + tenet # Wynberg, South Africa + ) + + # Try to use auto-select first + set(DOWNLOAD_URL ${URL}/download) + message(STATUS "Trying auto-select mirror...") vcpkg_download_distfile(ARCHIVE - URLS "${URL}" + URLS "${DOWNLOAD_URL}" SHA512 "${_vdus_SHA512}" FILENAME "${_vdus_FILENAME}" + SILENT_EXIT ) + + if (EXISTS ${ARCHIVE}) + set(download_success 1) + endif() + + if (NOT download_success EQUAL 1) + foreach(SOURCEFORGE_MIRROR ${SOURCEFORGE_MIRRORS}) + set(DOWNLOAD_URL ${URL}/download?use_mirror=${SOURCEFORGE_MIRROR}) + message(STATUS "Trying mirror ${SOURCEFORGE_MIRROR}...") + vcpkg_download_distfile(ARCHIVE + URLS "${DOWNLOAD_URL}" + SHA512 "${_vdus_SHA512}" + FILENAME "${_vdus_FILENAME}" + SILENT_EXIT + ) + + if (EXISTS ${ARCHIVE}) + set(download_success 1) + break() + endif() + endforeach() + endif() + if (NOT download_success) + message(FATAL_ERROR [[ + Couldn't download source from any of the sourceforge mirrors, please check your network. + If you use a proxy, please set the HTTPS_PROXY and HTTP_PROXY environment + variables to "http[s]://user:password@your-proxy-ip-address:port/". + Otherwise, please submit an issue at https://github.com/Microsoft/vcpkg/issues + ]]) + endif() + vcpkg_extract_source_archive_ex( OUT_SOURCE_PATH SOURCE_PATH ARCHIVE "${ARCHIVE}"