Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document how dependencies are updated #9

Open
1 of 2 tasks
he-sk opened this issue Mar 28, 2022 · 1 comment
Open
1 of 2 tasks

Document how dependencies are updated #9

he-sk opened this issue Mar 28, 2022 · 1 comment
Assignees
Labels
documentation Improvements or additions to documentation LowPriority

Comments

@he-sk
Copy link
Contributor

he-sk commented Mar 28, 2022

Description

Currently, there are three places where the current version of dependencies is updated.

  1. The SHA stored in the git commit that is updated with git pull in the submodule folder. This is currently https://github.com/microsoft/vcpkg/tree/daa7215f3d68c2a2f2e18c398cb73dab63cda829 from 2022-02-23. It was last changed in c8b2937.

  2. The SHA value stored under buildin-baseline in https://github.com/nebulastream/nebulastream-dependencies/blob/master/vcpkg.json. This is currently https://github.com/microsoft/vcpkg/tree/69d5556d0d8c105f75055326cef346546e40e615 from 2021-09-17. This was added in 6529549.

  3. A short SHA stored as an entry in branch in .gitmodules. This is currently https://github.com/microsoft/vcpkg/tree/bd7fc2c from 2021-08-19. It was added in 35c7a2b.

Place 3 (branch in .gitmodules) is most likely a bug. The Github documentation [1] states that this value is only picked up when the --remote option is used for git submodule update, which we do not do. Also, it has to be a branch name and not a hash value. Indeed, the following command fails.

$ LC_ALL=C git submodule update --init --recursive --remote
fatal: Needed a single revision
fatal: Unable to find current origin/bd7fc2c revision in submodule path 'vcpkg'

According to [2], place 2 (buildin-baseline) makes sense if we use versioning in vcpkg.json, i.e., use dependency versions that are either older or newer as the baseline. However, we do not do this, so place 1 (just the committed version under vcpkg) would be simpler. Moreover, if we use a version in 2 that is newer than the version in 1, then vcpkg install fails, e.g.:

$ ./manual-build.sh arm64-osx
Chosen triplet: arm64-osx-nes
ARM64 detected, using system binaries...
Downloading vcpkg-macos...
Error: No version entry for apr at version 1.7.0#7. This may be fixed by updating vcpkg to the latest master via `git pull`.
Available versions:
    1.7.0#6
    1.7.0#5
    1.7.0#4
    1.7.0#3
    1.7.0#2
    1.7.0-1
    1.7.0
    1.6.5-3
    1.6.5-2
    1.6.5-1
    1.6.5
    1.6.3
    1.6.2-1
    1.6.2
    1.5.2

...

[1] https://www.git-scm.com/docs/git-submodule
[2] https://devblogs.microsoft.com/cppblog/take-control-of-your-vcpkg-dependencies-with-versioning-support/

Acceptance criteria

  • Create consensus on the update procedure
  • Document the update procedure in the README.md file
@he-sk he-sk self-assigned this Mar 28, 2022
@VenturaDelMonte VenturaDelMonte added the documentation Improvements or additions to documentation label Mar 30, 2022
@he-sk
Copy link
Contributor Author

he-sk commented Mar 30, 2022

Reason to use baseline: use a vcpkg version that is newer than the baseline.

  • baseline contains working set of dependencies
  • commit contains up-to-date version of vcpkg which fixes some build issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation LowPriority
Projects
None yet
Development

No branches or pull requests

2 participants