# The [Gentoo Science Project](https://wiki.gentoo.org/wiki/Project:Science) Repository
[![pkgcheck](https://github.com/gentoo/sci/workflows/pkgcheck/badge.svg)](https://github.com/gentoo/sci/actions?query=workflow%3Apkgcheck)
[![repoman](https://github.com/gentoo/sci/workflows/repoman/badge.svg)](https://github.com/gentoo/sci/actions?query=workflow%3Arepoman)
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](https://github.com/gentoo/sci#guide)
[![chat on freenode](https://img.shields.io/badge/chat-on%20freenode-brightgreen.svg)](https://webchat.freenode.net/#gentoo-science)
**This is an official mirror of the Gentoo Science [ebuild repository](https://wiki.gentoo.org/wiki/Ebuild_repository), containing numerous scientific software packages.**
*See [Project:Science](https://wiki.gentoo.org/wiki/Project:Science) for more information on the project.*
|
### Contents
1. [Installation](#install)
- [Manual](#install-manual)
- [Layman](#install-layman)
2. [Usage](#usage)
3. [Contributing](#contributing)
|
## Installation
### Manual Install
As per the current [Portage specifications](https://dev.gentoo.org/~zmedico/portage/doc/man/portage.5.html), ebuild repositories (a.k.a. overlays) can be managed via file collections under `/etc/portage/repos.conf/`, via the new [plug-in sync system](https://wiki.gentoo.org/wiki/Project:Portage/Sync).
To enable the overlay without the need for additional software, you first need to have `git` installed:
```console
emerge --ask --verbose dev-vcs/git
````
Then you need to add the science repository configuration by downloading the [science.conf](metadata/science.conf) file:
```console
wget https://gitweb.gentoo.org/proj/sci.git/plain/metadata/science.conf \
-O /etc/portage/repos.conf/science
```
### Manual Uninstall
To uninstall the overlay, simply run:
```console
rm /etc/portage/repos.conf/science
rm /var/db/repos/science -rf
```
### Layman Install
You can also install the overlay via the [layman](https://wiki.gentoo.org/wiki/Layman) overlay manager.
```console
emerge --ask --verbose app-portage/layman
layman --add science
```
### Layman Uninstall
To delete the overlay, run:
```console
layman --delete science
```
### Using Packages from `::science`
To start using the overlay you now only need to get the newest files, via:
```console
emerge --sync science
```
To be able to install `::science` packages you need to make sure that you are accepting the `~${ARCH}` keyword for your respective architecture. This may already be the case globally on your system, and you can check whether this is the case by running:
```console
grep "~$(portageq envvar ARCH)" /etc/portage/make.conf
```
If the above returns empty, you will need to instruct Portage to accept `~${ARCH}` packages.
This can be done for `::science` specifically:
```console
mkdir -p /etc/portage/package.accept_keywords
printf '*/*::science ~%s' "$(portageq envvar ARCH)" >> /etc/portage/package.accept_keywords/science
```
If the above fails with `mkdir: cannot create directory ‘/etc/portage/package.accept_keywords’: File exists` this means you are using a file and not a directory, and you can instead run:
```console
printf '*/*::science ~%s' "$(portageq envvar ARCH)" >> /etc/portage/package.accept_keywords
```
Alternatively, and *only if you know what you are doing*, you can accept `~${ARCH}` packages globally:
```console
printf 'ACCEPT_KEYWORDS="~%s"' "$(portageq envvar ARCH)" >> /etc/portage/make.conf
```
The downside of this approach is potentially higher instability, the advantage is that often `::science` packages require `~${ARCH}` packages from `::gentoo` as well.
## Contributing
*If you fork, we will merge!*
We welcome new contributors and are happy to include new packages.
### Areas to contribute
- [Current open issues](https://github.com/gentoo/sci/issues)
- [Current open bugs](https://bugs.gentoo.org/buglist.cgi?no_redirect=1&quicksearch=[science+overlay])
- EAPI 6 (or 5) ebuilds which need updating
```
find . -type f -name "*.ebuild" ! \( -wholename "*.git*" -o -wholename "*profile*" -o -wholename "*metadata*" \) | while read ff; do grep -lRE "EAPI.*6" /dev/null $ff; done
```
### Resources
For a brief introduction please see our [contributing guide](CONTRIBUTING.md). Further helpful resources are:
- Gentoo Developers Manual - https://devmanual.gentoo.org/ (taking precedence over any other information found here)
- Contributing to Gentoo - https://wiki.gentoo.org/wiki/Contributing_to_Gentoo
Additionally, please make sure to add the Science Project as an additional maintainer to any new packages you submit. For an example, take a look at the metadata for the [Numba](dev-python/numba) package - [dev-python/numba/metadata.xml](dev-python/numba/metadata.xml)
## Support
You can ask for help on [Freenode IRC](https://www.gentoo.org/get-involved/irc-channels/) in [**#gentoo-science**](http://webchat.freenode.net/?channels=gentoo-science).
Alternatively you can report bugs on the [GitHub issues page](https://github.com/gentoo/sci/issues).