Skip to content

Commit

Permalink
Better documentation for binary origins (#1546)
Browse files Browse the repository at this point in the history
* Document binary origins

* Test for explicit binary origin
  • Loading branch information
mosteo authored Feb 16, 2024
1 parent 9b2b79a commit 2f3a217
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 0 deletions.
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
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

0 comments on commit 2f3a217

Please sign in to comment.