Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion ports/azure-macro-utils-c/CONTROL
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Source: azure-macro-utils-c
Version: 2020-06-17-1
Version: 2020-06-17
Port-Version: 2
Description: A library of macros for the Azure IoT SDK Suite

Feature: public-preview
Expand Down
8 changes: 4 additions & 4 deletions ports/azure-macro-utils-c/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,18 @@ if("public-preview" IN_LIST FEATURES)
OUT_SOURCE_PATH SOURCE_PATH
REPO Azure/azure-macro-utils-c
REF 7523af934fc4d9423111e358f49b19314ec9c3e3
SHA512 b53765096654fff9c5670004e4e107bffa81dd07e63eeac687c9e2b7e5ea2e1f26b6ae025c05c45f5c28152a457922f08c7f8d3303fa4d3b9194c34ba59533d5
SHA512 441d2420be319195ef50d0b03028e44c470adedc316dc338245cbc51ec2e78863cb42a9665d84a628056d212927abb5aeaf5c489e7c36b5257b16a28b3652e6e
HEAD_REF master
FILE_DISAMBIGUATOR 1
)
else()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO Azure/azure-macro-utils-c
REF 5926caf4e42e98e730e6d03395788205649a3ada
SHA512 97621f276657af976c4022c9600540ecae2287b3b386b9e097d661828a62c120348d354b3f86f3ef4d49f3c54830887662d3910ed5cec4a634949fa389b4ad55
SHA512 8f9fd02012202db6cff5b647edbc8332a2c03963e80182a630af6a884f23df96b8e24d60e5412bfc2a0a7f43240a54f9597040aa28a9d3e1566755e1d52aac62
HEAD_REF master
FILE_DISAMBIGUATOR 1
)
endif()

Expand All @@ -36,5 +38,3 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR
configure_file(${SOURCE_PATH}/LICENSE ${CURRENT_PACKAGES_DIR}/share/azure-macro-utils-c/copyright COPYONLY)

vcpkg_copy_pdbs()


60 changes: 38 additions & 22 deletions scripts/cmake/vcpkg_from_github.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@
## ### AUTHORIZATION_TOKEN
## A token to be passed via the Authorization HTTP header as "token ${AUTHORIZATION_TOKEN}".
##
## ### FILE_DISAMBIGUATOR
## A token to uniquely identify the resulting filename if the SHA512 changes even though a git ref does not, to avoid stepping on the same file name.
##
## ## Notes:
## At least one of `REF` and `HEAD_REF` must be specified, however it is preferable for both to be present.
##
Expand All @@ -66,7 +69,7 @@
## * [ms-gsl](https://github.com/Microsoft/vcpkg/blob/master/ports/ms-gsl/portfile.cmake)
## * [beast](https://github.com/Microsoft/vcpkg/blob/master/ports/beast/portfile.cmake)
function(vcpkg_from_github)
set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 HEAD_REF GITHUB_HOST AUTHORIZATION_TOKEN)
set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 HEAD_REF GITHUB_HOST AUTHORIZATION_TOKEN FILE_DISAMBIGUATOR)
set(multipleValuesArgs PATCHES)
# parse parameters such that semicolons in options arguments to COMMAND don't get erased
cmake_parse_arguments(PARSE_ARGV 0 _vdud "" "${oneValueArgs}" "${multipleValuesArgs}")
Expand All @@ -91,8 +94,8 @@ function(vcpkg_from_github)
set(GITHUB_HOST https://github.com)
set(GITHUB_API_URL https://api.github.com)
else()
set(GITHUB_HOST ${_vdud_GITHUB_HOST})
set(GITHUB_API_URL ${_vdud_GITHUB_HOST}/api/v3)
set(GITHUB_HOST "${_vdud_GITHUB_HOST}")
set(GITHUB_API_URL "${_vdud_GITHUB_HOST}/api/v3")
endif()

if(DEFINED _vdud_AUTHORIZATION_TOKEN)
Expand All @@ -101,17 +104,17 @@ function(vcpkg_from_github)
set(HEADERS)
endif()

string(REGEX REPLACE ".*/" "" REPO_NAME ${_vdud_REPO})
string(REGEX REPLACE "/.*" "" ORG_NAME ${_vdud_REPO})
string(REGEX REPLACE ".*/" "" REPO_NAME "${_vdud_REPO}")
string(REGEX REPLACE "/.*" "" ORG_NAME "${_vdud_REPO}")

macro(set_TEMP_SOURCE_PATH BASE BASEREF)
set(TEMP_SOURCE_PATH "${BASE}/${REPO_NAME}-${BASEREF}")
if(NOT EXISTS ${TEMP_SOURCE_PATH})
if(NOT EXISTS "${TEMP_SOURCE_PATH}")
# Sometimes GitHub strips a leading 'v' off the REF.
string(REGEX REPLACE "^v" "" REF ${BASEREF})
string(REPLACE "/" "-" REF ${REF})
string(REGEX REPLACE "^v" "" REF "${BASEREF}")
string(REPLACE "/" "-" REF "${REF}")
set(TEMP_SOURCE_PATH "${BASE}/${REPO_NAME}-${REF}")
if(NOT EXISTS ${TEMP_SOURCE_PATH})
if(NOT EXISTS "${TEMP_SOURCE_PATH}")
message(FATAL_ERROR "Could not determine source path: '${BASE}/${REPO_NAME}-${BASEREF}' does not exist")
endif()
endif()
Expand All @@ -130,10 +133,17 @@ function(vcpkg_from_github)

string(REPLACE "/" "-" SANITIZED_REF "${_vdud_REF}")

set(downloaded_file_name "${ORG_NAME}-${REPO_NAME}-${SANITIZED_REF}")
if (_vdud_FILE_DISAMBIGUATOR)
set(downloaded_file_name "${downloaded_file_name}-${_vdud_FILE_DISAMBIGUATOR}")
endif()

set(downloaded_file_name "${downloaded_file_name}.tar.gz")

vcpkg_download_distfile(ARCHIVE
URLS "${GITHUB_HOST}/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_REF}.tar.gz"
SHA512 "${_vdud_SHA512}"
FILENAME "${ORG_NAME}-${REPO_NAME}-${SANITIZED_REF}.tar.gz"
FILENAME "${downloaded_file_name}"
${HEADERS}
)

Expand All @@ -151,37 +161,43 @@ function(vcpkg_from_github)
# The following is for --head scenarios
set(URL "${GITHUB_HOST}/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_HEAD_REF}.tar.gz")
string(REPLACE "/" "-" SANITIZED_HEAD_REF "${_vdud_HEAD_REF}")
set(downloaded_file_name "${ORG_NAME}-${REPO_NAME}-${SANITIZED_HEAD_REF}.tar.gz")
set(downloaded_file_name "${ORG_NAME}-${REPO_NAME}-${SANITIZED_HEAD_REF}")
if (_vdud_FILE_DISAMBIGUATOR)
set(downloaded_file_name "${downloaded_file_name}-${_vdud_FILE_DISAMBIGUATOR}")
endif()

set(downloaded_file_name "${downloaded_file_name}.tar.gz")

set(downloaded_file_path "${DOWNLOADS}/${downloaded_file_name}")

if(_VCPKG_NO_DOWNLOADS)
if(NOT EXISTS ${downloaded_file_path} OR NOT EXISTS ${downloaded_file_path}.version)
if(NOT EXISTS "${downloaded_file_path}" OR NOT EXISTS "${downloaded_file_path}.version")
message(FATAL_ERROR "Downloads are disabled, but '${downloaded_file_path}' does not exist.")
endif()
message(STATUS "Using cached ${downloaded_file_path}")
else()
if(EXISTS ${downloaded_file_path})
if(EXISTS "${downloaded_file_path}")
message(STATUS "Purging cached ${downloaded_file_path} to fetch latest (use --no-downloads to suppress)")
file(REMOVE ${downloaded_file_path})
file(REMOVE "${downloaded_file_path}")
endif()
if(EXISTS ${downloaded_file_path}.version)
file(REMOVE ${downloaded_file_path}.version)
if(EXISTS "${downloaded_file_path}.version")
file(REMOVE "${downloaded_file_path}.version")
endif()
if(EXISTS ${CURRENT_BUILDTREES_DIR}/src/head)
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/src/head)
if(EXISTS "${CURRENT_BUILDTREES_DIR}/src/head")
file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/src/head")
endif()

# Try to download the file and version information from github.
vcpkg_download_distfile(ARCHIVE_VERSION
URLS "${GITHUB_API_URL}/repos/${ORG_NAME}/${REPO_NAME}/git/refs/heads/${_vdud_HEAD_REF}"
FILENAME ${downloaded_file_name}.version
FILENAME "${downloaded_file_name}.version"
SKIP_SHA512
${HEADERS}
)

vcpkg_download_distfile(ARCHIVE
URLS ${URL}
FILENAME ${downloaded_file_name}
FILENAME "${downloaded_file_name}"
SKIP_SHA512
${HEADERS}
)
Expand All @@ -196,15 +212,15 @@ function(vcpkg_from_github)
# exports VCPKG_HEAD_VERSION to the caller. This will get picked up by ports.cmake after the build.
# When multiple vcpkg_from_github's are used after each other, only use the version from the first (hopefully the primary one).
if(NOT DEFINED VCPKG_HEAD_VERSION)
set(VCPKG_HEAD_VERSION ${_version} PARENT_SCOPE)
set(VCPKG_HEAD_VERSION "${_version}" PARENT_SCOPE)
endif()

vcpkg_extract_source_archive_ex(
SKIP_PATCH_CHECK
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE "${downloaded_file_path}"
REF "${SANITIZED_HEAD_REF}"
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/src/head
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/src/head"
PATCHES ${_vdud_PATCHES}
)
set(${_vdud_OUT_SOURCE_PATH} "${SOURCE_PATH}" PARENT_SCOPE)
Expand Down