While authoring vcpkg_from_git to authenticated servers documentation,
@JavierMatosD and I discovered some failure modes that are not clear in
the output.
Example with REF set to a branch name:
```console
The port under test is:
vcpkg_from_git(
OUT_SOURCE_PATH out
URL https://github.com/microsoft/vcpkg
REF 2024.01.12
)
========== BEFORE ===============
Computing installation plan...
The following packages will be built and installed:
test-port:x64-windows@1 -- D:\test\test-port
Detecting compiler hash for triplet x64-windows...
Installing 1/1 test-port:x64-windows@1...
Building test-port:x64-windows@1...
-- Installing port from location: D:\test\test-port
-- Fetching https://github.com/microsoft/vcpkg 2024.01.12...
CMake Error at scripts/cmake/vcpkg_from_git.cmake:141 (message):
unable to rev-parse 2024.01.12 after fetching git repository
Call Stack (most recent call first):
D:/test/test-port/portfile.cmake:1 (vcpkg_from_git)
scripts/ports.cmake:170 (include)
error: building test-port:x64-windows failed with: BUILD_FAILED
Elapsed time to handle test-port:x64-windows: 1.8 s
Please ensure you're using the latest port files with `git pull` and `vcpkg update`.
Then check for known issues at:
https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+test-port
You can submit a new issue at:
https://github.com/microsoft/vcpkg/issues/new?title=[test-port]+Build+error+on+x64-windows&body=Copy+issue+body+from+D%3A%2Fvcpkg2%2Finstalled%2Fvcpkg%2Fissue_body.md
========== AFTER ================
Computing installation plan...
The following packages will be built and installed:
test-port:x64-windows@1 -- D:\test\test-port
Detecting compiler hash for triplet x64-windows...
Installing 1/1 test-port:x64-windows@1...
Building test-port:x64-windows@1...
-- Installing port from location: D:\test\test-port
-- Fetching https://github.com/microsoft/vcpkg 2024.01.12...
CMake Error at scripts/cmake/vcpkg_from_git.cmake:142 (message):
After fetching 2024.01.12, the target ref 2024.01.12 appears inaccessible.
A common cause of this failure is setting REF to a named branch or tag
rather than a commit SHA. REF must be a commit SHA. If the git server
does not advertise commit SHAs (uploadpack.allowReachableSHA1InWant is
false), you can set FETCH_REF to a named branch in which the desired commit
SHA is in the history. For example, you may be able to fix this error by
changing "REF 2024.01.12" to "REF a-commit-sha FETCH_REF 2024.01.12". (git
rev-parse 2024.01.12 failed)
Call Stack (most recent call first):
D:/test/test-port/portfile.cmake:1 (vcpkg_from_git)
scripts/ports.cmake:170 (include)
error: building test-port:x64-windows failed with: BUILD_FAILED
Elapsed time to handle test-port:x64-windows: 1.9 s
Please ensure you're using the latest port files with `git pull` and `vcpkg update`.
Then check for known issues at:
https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+test-port
You can submit a new issue at:
https://github.com/microsoft/vcpkg/issues/new?title=[test-port]+Build+error+on+x64-windows&body=Copy+issue+body+from+D%3A%2Fvcpkg%2Finstalled%2Fvcpkg%2Fissue_body.md
```
Example with REF ste to a branch name with FETCH_REF set:
```console
PS D:\test> run-test
The following packages are not installed:
test-port:x64-windows
The following packages are not installed:
test-port:x64-windows
The port under test is:
vcpkg_from_git(
OUT_SOURCE_PATH out
URL https://github.com/microsoft/vcpkg
REF 2024.01.12
FETCH_REF master
)
========== BEFORE ===============
Computing installation plan...
The following packages will be built and installed:
test-port:x64-windows@1 -- D:\test\test-port
Detecting compiler hash for triplet x64-windows...
Installing 1/1 test-port:x64-windows@1...
Building test-port:x64-windows@1...
-- Installing port from location: D:\test\test-port
-- Fetching https://github.com/microsoft/vcpkg master...
CMake Error at scripts/cmake/vcpkg_from_git.cmake:141 (message):
unable to rev-parse 2024.01.12 after fetching git repository
Call Stack (most recent call first):
D:/test/test-port/portfile.cmake:1 (vcpkg_from_git)
scripts/ports.cmake:170 (include)
error: building test-port:x64-windows failed with: BUILD_FAILED
Elapsed time to handle test-port:x64-windows: 1.6 s
Please ensure you're using the latest port files with `git pull` and `vcpkg update`.
Then check for known issues at:
https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+test-port
You can submit a new issue at:
https://github.com/microsoft/vcpkg/issues/new?title=[test-port]+Build+error+on+x64-windows&body=Copy+issue+body+from+D%3A%2Fvcpkg2%2Finstalled%2Fvcpkg%2Fissue_body.md
========== AFTER ================
Computing installation plan...
The following packages will be built and installed:
test-port:x64-windows@1 -- D:\test\test-port
Detecting compiler hash for triplet x64-windows...
Installing 1/1 test-port:x64-windows@1...
Building test-port:x64-windows@1...
-- Installing port from location: D:\test\test-port
-- Fetching https://github.com/microsoft/vcpkg master...
CMake Error at scripts/cmake/vcpkg_from_git.cmake:138 (message):
After fetching master, the target ref 2024.01.12 appears inaccessible. A
common cause of this failure is setting REF to a named branch or tag rather
than a commit SHA. REF must be a commit SHA. (git rev-parse 2024.01.12
failed)
Call Stack (most recent call first):
D:/test/test-port/portfile.cmake:1 (vcpkg_from_git)
scripts/ports.cmake:170 (include)
error: building test-port:x64-windows failed with: BUILD_FAILED
Elapsed time to handle test-port:x64-windows: 1.5 s
Please ensure you're using the latest port files with `git pull` and `vcpkg update`.
Then check for known issues at:
https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+test-port
You can submit a new issue at:
https://github.com/microsoft/vcpkg/issues/new?title=[test-port]+Build+error+on+x64-windows&body=Copy+issue+body+from+D%3A%2Fvcpkg%2Finstalled%2Fvcpkg%2Fissue_body.md
```
---------
Co-authored-by: Thomas1664 <46387399+Thomas1664@users.noreply.github.com>
Pass `share/pkgconfig` instead of `debug/share/pkgconfig`: The `share`
location is for config-independent data.
Integrate `CURRENT_PACKAGES_DIR` locations.
Change the function interface to take a CONFIG parameter instead of
prefix list (suggested below).
Use `z_vcpkg_setup_pkgconfig_path` also for `vcpkg_fixup_pkgconfig`
(which already had proper handling of `CURRENT_PACKAGES_DIR` and
`share`).
Remove redundant trailing slash.
Extend unit test.
Fixes consuming `wayland-protocols` and similar.
Reason:
```
-- Adjusting original rpath of: '/mnt/e/all/vcpkg/installed/x64-linux-release/lib/pkgconfig/../../lib/intel64/'
-- Fixed rpath in: '/mnt/e/all/vcpkg/packages/numpy_x64-linux-release/lib/python3.11/site-packages/numpy/linalg/lapack_lite.cpython-311-x86_64-linux-gnu.so' ('$ORIGIN:$ORIGIN/../../../../:$ORIGIN/../../../../intel64/')
```
needed `$ORIGIN/../../../../intel64/` in there which came from a pc file
via `-Wl,-rpath='${libdir}'`
---------
Co-authored-by: Osyotr <Osyotr@users.noreply.github.com>
* Limit CI
* Update msys2
* Declare msys packages for pkgconfig and fortran...
... with explicit DEPS and PROVIDES, instead of using DIRECT_PACKAGES.
This change makes it possible to notice changed dependencies
in `vcpkg-ci-msys2` update checks. (Current case: zstd.)
It also enables reuse of general declarations from `vcpkg_acquire_msys`
in specialized cases (`vpckg_find_fortran`).
Last not least, using the the Z_DECLARE_EXTRA_PACKAGES_COMMAND
simplifies the implementation of `vcpkg-ci-msys2`, in particular for
checks across platform boundaries.
* Revert "Limit CI"
* Fix lib suffix matching
* Preserve flags when transforming standard libs
* Use separate_arguments
* Fix transform
* [vcpkg_configure_make] Fix SKIP_CONFIGURE
* Update linker flags
* Update linker flags
* Fix regex substitution
* Restore full CI
* Reuse configure's linker flags setup
* Handle ldflags separately from linker flags
* Factor out common definitions
* Control docdir and mandir for debug
* Use vcpkg_list APPEND
* Don't pass -avoid-version into configure
* Restore lost escaping
* Copy --target from LDFLAGS to CC/CXX
* Consolidate macros into one function
* Elaborate ABI flags
* Elaborate flag processing
* Update warnings for embedded space
* Update windows tool path fixup
* [libudns] No cross builds
* [vcpkg_find_acquire_program] Add VSCLANG
Find VS's clang without fallback to the giant LLVM download.
* [gmp] Update CCAS setup
* [nettle] Update CCAS setup
* Fix VSCLANG
* WIP
* Restore processing of isysroot
* [nettle] Fix assembler option
* [liburing] Adjust
* Variable name changes
* Remove redundant separate arguments
* Move -m32/-m64 to ABI flags
* Unify ABIFLAGS spelling
* CI
* Revert VSCLANG
* Use GNU Make to build autotools ports on FreeBSD (microsoft/vcpkg#32282)
* Fix flag removal
* Drop separation of ABI flags
* Handle '-arch=...'
* Revert "Control docdir and mandir for debug"
This reverts commit d8293a1997.
* [icu] Pass uwp option to pkgdata
* Restore old osx flags hook
* Add triplet variable to make libtool pass --target to linker
---------
Co-authored-by: Schaich, Alonso <alonsoschaich@fastmail.fm>
* Extract vcpkg_extract_archive from vcpkg_find_acquire_program.
* Extract vcpkg_download_sourceforge from vcpkg_from_sourceforge.
This allows vcpkg_find_acquire_program to download from SourceForge without needing to temporarily change _VCPKG_EDITABLE.
* Use whether a URI is known for an entity to decide whether to downloads it rather than checking a separate supported_on_unix boolean.
* Add unparsed arguments check to vcpkg_extract_archive
* [vcpkg_configure_make] fix case sensitive comparison in PATH system dir search
* Fixes after code review
---------
Co-authored-by: Victor NIVET <vnivet@invoke.fr>
Don't enforce a hardcoded nesting limit as these limits are enforced by
GitLab itself and may change in the future. Furthermore I believe that
users can be trusted to successfully copy'n'paste the path portion of an
URL. Therefore we just require that the assumptions of our
implementation hold, i.e. that we can convert the repo path to a CMake
list by replacing `/` with `;` and that there is a repository name.
The current error message matching attempt is too strict as the error
message occasionally spells out the extension (i.e. `mt.exe` instead of
`mt`).
Co-authored-by: Monica <liuyumei01@beyondsoft.com>
* [python3] Update to 3.11.3
* Force set PythonForBuild on windows
* Set LD_LIBRARY_PATH on unix
* Always use vcpkg_find_acquire_program(PYTHON3) on windows
* Remove LD_LIBRARY_PATH shenanigans
* [vtk] Parse python version from include folder
* Fix static builds on windows
* Pass --with-build-python on unix
* [omniorb] Fix python version in patch
* Resurrect rpath patch
* [python3] fix usage
* [gobject-introspection] don't hardcode python version
* Update vcpkg_find_aquire_program(PYTHON3)
This is also required for gobject-introspection
* [paraview] don't hardcode python version
* [vtk-dicom] don't hardcode python version
* Update python in vcpkgTools.xml
* Fix host arch detection in vcpkg_find_acquire_program(PYTHON3)
* [libpq] Don't hardcode python version
* [shiva] Don't pass python variables
* [vcpkg-get-python-packages] Delete unused file, update hardcoded python version
* [python3] update to 3.11.4
* [omniorb] Use PREPEND in vcpkg_add_to_path
So that python from vcpkg is picked before system python
* libpq quickfix
* re-fix libpq
* fix vcpkg-get-python-packages
* Make windows 7 patch compatible with unix builds
* Copy pyd files to bin
Also fixes copying files that do not belong to current build tree
* Fix static builds
* Speculatively fix osx regression
* Fix omniorb on unix
* [gobject-introspection] fix windows builds
* [vtk] Update vendored copy of mpi4py for python 3.11 support
* [mdl-sdk] Fix python
* [gobject-introspection] fix the fix of a fix...
* Update versions
* Undo changes in gobject-introspection and vcpkg_find_aquire_program(PYTHON3)
---------
Co-authored-by: root <root@DESKTOP-UIPL9V8>
* scripts/msys => scripts/cmake
The "msys" directory looked like a "maintainer help" directory (like scripts/boost is) so it wasn't included in standalone distributions of vcpkg.
It seems like the correct fix for this is just to move it into the scripts/cmake directory.
* [vcpkg-ci-msys2] Add clangarm64 support
UCRT binaries for ARM64, built with clang.
* [vcpkg_find_acquire_program(PKGCONFIG)] Switch to pkgconf, add arm64
* CI
* [vcpkg-ci-msys2] New test port for msys2 freshness
* Add features for script updates
* Remove duplicate libbz2 entry
* Automatically update all msys packages, add autoconf-wrapper
* Update primary URL and mirrors
* Follow repo renames
* Fix dependencies of 'file'
* Resolve dependencies at runtime
Don't require msys2 packages to be order from dependent to independent.
This allows to directly use the packages official dependencies, even
if they contain cycles.
It also allows to maintain a stable alphabetical order of the package
declarations, even if the dependencies change over time. This helps to
avoid duplicate declaration.
* Fix updating
* [gettext] Preset more MSVC checks
* Update msys2 packages
* gettext fixes
* CI
* Simplify: Remove update-critical
Desired changes can be picked in git gui etc..
* PKGCONFIG moved
---------
Co-authored-by: Monica <v-liumonica@microsoft.com>
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
* [vcpkg-cmake-get-vars] Call 'project' early
System variables like 'APPLE' or 'ANDROID' aren't set before 'project()'.
* Get Android variables
* [openssl] Ensure that compiler is reached via 'PATH'
* Fix Android configuration
* Add 'tools' feature
* Update versions
* [openssl] Initialize android with vcpkg settings
* [openssl] Really don't build apps
* [vcpkg-cmake-get-vars] Update android vars
* [libpq] Pass openssl version from pkgconfig
* [vcpkg-cmake-get-vars] Update android vars
* [vcpkg-cmake-get-vars] Report generator
* [vcpkg-cmake-get-vars] Escape all output
* Transfer cmake-get-vars fixes
* Transfer cmake-get-vars extra flags
* no-asm for android-arm w/o neon
* [vcpkg_configure_make] Unquote as needed
Toolchain flags are passed into make via environment variables (e.g.
CFLAGS) and expanded by Makefiles regardless of quotes. And even vcm's
internal handling isn't prepared for these quotes. So we must remove
the early. This doesn't interfere with properly escaped quotes.
* Re-add lost 'project', amends 4cf7caaa
* [openssl] Fix emscripten