# Copyright 2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit cmake DESCRIPTION="Library manager for C/C++ (tool only)" HOMEPAGE="https://github.com/microsoft/vcpkg-tool https://vcpkg.io/en/index.html" # Split with parameter expansion, not `read <<<`: a here-string needs a temp # file, which the sandboxed depend phase (metadata) cannot create (bug #978846). format-date() { local input="$1" local year="${input%%.*}" rest="${input#*.}" local month="${rest%%.*}" day="${rest##*.}" printf '%04d-%02d-%02d' "$year" "$month" "$day" } MY_PV="$(format-date "${PV}")" SRC_URI="https://github.com/microsoft/${PN}/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz" S="${WORKDIR}/${PN}-${MY_PV}" LICENSE="MIT" SLOT="0" KEYWORDS="~amd64" IUSE="test" RESTRICT="!test? ( test )" DEPEND="dev-libs/libfmt:= net-misc/curl" RDEPEND="${DEPEND} app-arch/zip" BDEPEND="dev-util/cmakerc" src_prepare() { # Bump the ancient cmake_minimum_required in the e2e-port test fixtures so the # cmake eclass < 3.10 QA scan stays quiet. Match them all rather than a fixed # list, since upstream keeps adding such ports. find azure-pipelines/e2e-ports -name CMakeLists.txt \ -exec sed -i -e 's/cmake_minimum_required(VERSION 3\.7\.2)/cmake_minimum_required(VERSION 3.10)/' {} + || die cmake_src_prepare } src_configure() { local preset value local mycmakeargs=( "-DBUILD_TESTING=$(usex test)" -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DBUILD_SHARED_LIBS=OFF -DVCPKG_BUILD_TLS12_DOWNLOADER=OFF -DVCPKG_DEPENDENCY_CMAKERC=ON -DVCPKG_DEPENDENCY_EXTERNAL_FMT=ON -DVCPKG_LIBCURL_DLSYM=OFF -DVCPKG_DEVELOPMENT_WARNINGS=OFF -DVCPKG_EMBED_GIT_SHA=OFF -DVCPKG_OFFICIAL_BUILD=ON -DVCPKG_WARNINGS_AS_ERRORS=OFF -DCMAKE_DISABLE_PRECOMPILE_HEADERS=OFF ) for preset in VCPKG_ARTIFACTS_SHA VCPKG_BASE_VERSION VCPKG_STANDALONE_BUNDLE_SHA; do value=$(awk -F '"' -v key="${preset}" '$2 == key { print $4; exit }' \ CMakePresets.json) || die [[ -n ${value} ]] || die "missing ${preset} in CMakePresets.json" mycmakeargs+=( "-D${preset}=${value}" ) done cmake_src_configure } pkg_postinst() { einfo einfo 'To use vcpkg you need to have a copy of https://github.com/microsoft/vcpkg' einfo 'or another root somewhere and point to it with the VCPKG_ROOT environment' einfo 'variable or by passing --vcpkg-root=.' einfo }