README.md 4.3 KB
Newer Older
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
1 2 3
SaC Packages
============

Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
4 5
In this repository we store packages associated with the SaC projects using Git LFS.

6
We currently creates packages for:
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
7

8 9 10
- RHEL 6, RHEL 7
- Ubuntu 16.04, Ubuntu 18.04
- Linux generic (based on ArchLinux)
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
11
- MacOS 10.14+ (Universal binary, works on Intel and ARM systems)
12 13 14

To get the latest packages, checkout the [release page](https://gitlab.science.ru.nl/sac-group/sac-packages/-/releases).

15 16
NOTE: all files are SHA256 checksummed, see the `checksums.txt` file to confirm.

17 18 19 20 21 22 23 24 25 26 27 28 29
## Things to be aware of

### Package variants

We provide two types of packages variants, _basic_ and _full_.

Basic package
- package excludes special features, like the GPU backend or advanced multi-threading scheduling.
- makes use of minimal external dependencies: `gcc`, `libc`, `uuid-lib`.

Full package
- package includes GPU backend and advanced multi-threading scheduling.
- more external dependencies: `gcc`, `libc`, `uuid-lib`, `hwloc`, `cuda`[^1]
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
30

31 32
**We suggest that you use the _basic_ package variant, unless you are sure you
need CUDA.**
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
33

34
### Externally-maintained packages
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
35

36 37 38
We also have some user-contributed packages — as these are packages outwith the
project, we can not provide any support on these. Please communicate with the
package maintainers directly.
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
39

40 41 42
| OS | External Link |
| --- | --- |
| ArchLinux | via [sac-compiler-weekly](https://aur.archlinux.org/packages/sac-compiler-weekly) and [sac-stdlib-weekly](https://aur.archlinux.org/packages/sac-stdlib-weekly)
43

Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
44 45 46 47 48 49 50 51 52
### Latest Link

We also provide a _latest link_ to the packages within the `latest/` directory. These link
to latest versions of packages per distribution, though they can also refer only to the latest
stable version.

Users can link to these, it is especially useful in the context of continous integration and
testing systems.

53 54 55 56 57
### Alternative Packages

Sometimes, we create *special* releases which **are not** for general use. These alternative packages
can be found under `packages/alternative`.

58
## Installation
59

60
### Linux generic package
61

62 63 64 65
The contents of this package can be installed anywhere on your system (this is
particularly useful if you do not have root permission!). Upon open the archive,
you will find a README file and an install script (`install.sh`). Please read
the README on how to use the install script.
66

67
## Further Information
68

69
### Repository Directory Scheme
70

71
Packages are stored under `packages`, using the following directory structure scheme:
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
72

73 74 75
```
packages/<release type>/<platform>/<version>/<variant>/...pkgs...
```
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
76

77 78 79 80 81
release type
: we have two release types, _release_ and _weekly_. The first indicates a stable
package that could be using in production solution, and the latter is unstable. In practice
we don't release many _release_ packages as the compiler is constantly in flux. That being
said we try to ensure that the _weekly_ package is functional.
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
82

83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
platform
: we create packages for different platforms

version
: We use semantic versioning, but additionally store the commit count (since the
last version change) and the release number. Using `1.3.2-256-1` as an example,
`1.3.2` is the version number which has `256` new commits on top and has been
packages/release only once (e.g. `1`).

variant
: We provide two types of packages variants, *basic* and *full*.

## FAQ

### Why store the package here?

1. we are able to associate each package release/build with a new Git commit, which means
   we can build a history of each release.
2. easier to access/find a given release. Our previous listing via https://sac-home.org was
   not very easy to look through, and did cause users to be confused. Unfortunately we do
   create a few different releases for many different platforms and so per build we have 10+
   packages. These are listed with previously created packages, thus making it difficult to
   gain an overview there.
3. We can mark releases as having problems/known-issues, so that users are better informed
   about what release is more likely to work for them.
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
108

Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
109 110 111 112 113 114 115
### How are changelog details created?

Mostly by hand using the following:
```sh
git log --pretty=%s --merges --decorate <REF>..HEAD | cut -f3 -d' ' | sed "s/'//g"
```

116
## Footnotes
Hans-Nikolai Viessmann's avatar
Hans-Nikolai Viessmann committed
117

118 119
[^1]: CUDA must be installed as per the recommended guidelines of the distribution. Our packages
      are built using docker containers provided by NVIDIA, look there for their installation procedure.