Verified Commit 8135d3bc authored by Hans-Nikolai Viessmann's avatar Hans-Nikolai Viessmann
Browse files

add primary idea

parent 02f0a733
*.deb filter=lfs diff=lfs merge=lfs -text
SaC Packages
============
In this repository we store packages associated with the SaC projects.
In this repository we store packages associated with the SaC projects using Git LFS.
We achieve two advantages from this,
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 current listing via https://sac-home.org is
not very easy to look through, and has caused 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 here.
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.
Process
-------
As we are using containers to build our packages we do the following, there are a few ways
that we can get the built packages into this LFS repository:
* we commit them directly (possible race-condition as jobs may push at same time):
1. build packages in pipeline
2. in cloned packages repo, place packages in correct directory, and push
3. when pipeline completes, signal this repo to run pipeline
4. this pipeline will look at git history since last tag, get all new files, generate
URLs, and create a new tag and associate a release message with the new files.
* we capture the assets via GitLab Pipeline/Job API:
1. build packages in pipeline
2. when pipeline completes, signal this repo to run pipeline
3. this pipeline will call API to get _latest_ completed jobs from `sac2c` repo, and
retrieve all the build artifacts.
4. We then generate URLs, and create a new tag and associate a release message with the
new files.
Access LFS packages via HTTP(S)
-------------------------------
As far as I know, there is no GitLab API to retrieve this value, however the LFS objects are
treated as standard assets within the GitLab WebUI, meaning there is a consistent semantic URL
for each object: `https://gitlab.science.ru.nl/sac-group/sac-packages/raw/master/<path in repo>`
Given this, it is straightforward to associate a SaC release with a GitLab tracked release page.
Package Repository
==================
This directory contains the SaC Programming Language compiler, `sac2c`,
distributable binaries for different operating systems.
We have two release type at the moment, _major releases_ and _weekly-bleedying-edge
releases_. Of these we package two variants, the _BASIC_ and _FULL_; here we only
depend on libuuid and libhwloc, whereas the latter also depends upon a recent
version of CUDA.
Currently support are:
* Debian/Ubuntu (DEB): versions Wheezy and Jessie (approx. 14.04 and 16.04
respectively)
* RHEL/Fedora (RPM): versions 6 and 7
* MacOS (Pkg): version 10.12
Additionally, we generate a .tar.gz distribution for `*UNIX` systems for local
installs (_i.e._ in one's home directory).
Though the compiler is complete, it is of great benefit to additionally install
the standard library package. This can be found on our [GitHub][stdlib] page.
If there are any problems, please email <info AT sac-home DOT org>.
[stdlib]: https://github.com/SacBase/Stdlib
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment