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

Better documentation for binary origins #1546

Merged
merged 2 commits into from
Feb 16, 2024
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
13 changes: 13 additions & 0 deletions doc/catalog-format-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,12 @@ static, i.e. they cannot depend on the context.
several crates from the same repository (sometimes referred to as a
*monorepo*).

- `binary`: optional (defauts to false) boolean used to design the origin
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can disable implicit detection then?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will require editing all binary releases in the index. We are due for an index version bump with the 2.0 release, so that would be a good moment.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would make things more clear for everyone I think.

as binary. Binary origins are not compiled and can use dynamic
expressions to narrow down the platform to which they apply. An origin
using a dynamic expression is implicitly tagged as binary; see the
example below.

Examples of origin tables:

```toml
Expand All @@ -479,6 +485,13 @@ static, i.e. they cannot depend on the context.
subdir = "examples"
```

```toml
# A binary origin denoting a compiler
[origin."case(os)".linux."case(host-arch)".x86-64]
url = "https://github.com/alire-project/GNAT-FSF-builds/releases/download/gnat-12.1.0-1/gnat-x86_64-linux-12.1.0-1.tar.gz"
hashes = ["sha256:df1f36b306359d528799b1de8629a793523347a90c9d4b72efd23c62a7279555"]
```

- `available`: optional dynamic boolean expression. If it evaluates to
`false`, the package is not available for the current platform.

Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
description = "\"Hello, world!\" demonstration project"
name = "hello_world"
version = "0.1.0"
licenses = "GPL-3.0-only"
maintainers = ["[email protected]"]
maintainers-logins = ["mylogin"]

[origin]
url = "../../../crates/libhello_1.0.0.tgz"
hashes = ["sha256:c17d6ce87c6997c5f68ea4bfe6134c318073fed38ec0f81ccb1ae2bfdcc0187a"]
binary = true
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
version = "1.1"
37 changes: 37 additions & 0 deletions testsuite/tests/index/origin-binary-explicit/test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
"""
Test that origins explicitly marked as binary are interpreted as such, even if
they do not use a dynamic expression.
"""

from glob import glob
import os
from drivers import builds
from drivers.alr import alr_config_dir, alr_with, run_alr, init_local_crate
from drivers.asserts import assert_match
from drivers.helpers import contents

# Check basic loading
p = run_alr('show', 'hello_world')
assert "Origin: binary archive" in p.out, \
"Unexpected output: " + p.out

init_local_crate()
alr_with("hello_world")
run_alr("build")

# Check deployment location
if builds.are_shared():
# Build dir of a binary crate should not exist, as it is used directly from
# its download location
assert len(glob(f"{builds.path()}/hello_world*")) ==0 , \
"Unexpected build dir: " + str(contents(builds.path()))
else:
# Config should not have been generated for a binary crate during build
assert os.path.exists(os.path.join("alire", "cache", "dependencies",
"hello_world_0.1.0_c17d6ce8"))
assert not os.path.exists(os.path.join("alire", "cache", "dependencies",
"hello_world_0.1.0_c17d6ce8",
"config")), \
"Unexpected config dir: " + str(contents("alire"))

print('SUCCESS')
5 changes: 5 additions & 0 deletions testsuite/tests/index/origin-binary-explicit/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
driver: python-script
build_mode: both
indexes:
my_index:
in_fixtures: false
Loading