spack/var/spack/repos/spack_repo/builtin/packages/sccache/package.py
Harmen Stoppels b932c14008
builtin: use api v2.0 and update dir structure (#49275)
* Bump the package API of the `builtin` repo to `v2.0`
* Move `var/spack/repos/builtin` -> `var/spack/repos/spack_repo/builtin`
* Move test repos `var/spack/repos/{builtin.mock,tutorial,...}` -> `var/spack/test_repos/`
* Update package dir names to v2 format (`-` -> `_` etc)
* Change absolute imports `from spack.pkg.builtin.my_pkg ...` to relative imports `from ..my_pkg.package ...`

Users who have a repo on top of builtin should change imports from

```python
from spack.pkg.builtin.my_pkg import MyPkg
```

to

```python
from spack_repo.builtin.packages.my_pkg.package import MyPkg
```

and can configure their editors with

```
PYTHONPATH=$spack/lib/spack:$spack/var/spack/repos
```

[skip-verify-checksums]
2025-05-06 12:05:44 +02:00

66 lines
2.0 KiB
Python

# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
import re
import spack.build_systems
import spack.build_systems.cargo
from spack.package import *
class Sccache(CargoPackage):
"""Sccache is a ccache-like tool. It is used as a compiler wrapper and avoids
compilation when possible. Sccache has the capability to utilize caching in
remote storage environments, including various cloud storage options, or
alternatively, in local storage."""
homepage = "https://github.com/mozilla/sccache"
url = "https://github.com/mozilla/sccache/archive/refs/tags/v0.8.2.tar.gz"
tags = ["build-tools"]
executables = [r"^sccache$", r"^sscache-dist$"]
license("Apache-2.0", checked_by="pranav-sivaraman")
version("0.8.2", sha256="2b3e0ef8902fe7bcdcfccf393e29f4ccaafc0194cbb93681eaac238cdc9b94f8")
depends_on("rust@1.75:", when="@0.8.2:")
depends_on("rust@1.70:", when="@0.7.7:")
depends_on("rust@1.67.1:") # for 0.6/0.7.1 and newer, but may work for even older versions.
depends_on("pkgconfig", type="build", when="platform=linux")
depends_on("openssl", when="platform=linux")
variant(
"dist-server",
default=False,
description="Enables the sccache-dist binary",
when="platform=linux",
)
@classmethod
def determine_version(cls, exe):
output = Executable(exe)("--version", output=str, error=str)
match = re.match(r"sccache (\S+)", output)
return match.group(1) if match else None
@classmethod
def determine_variants(cls, exes, version_str):
if any(os.path.basename(path) == "sccache-dist" for path in exes):
return "+dist-server"
else:
return "~dist-server"
class CargoBuilder(spack.build_systems.cargo.CargoBuilder):
@property
def build_args(self):
if self.spec.satisfies("+dist-server"):
return ["--features=dist-server"]
return []