Skip to content

Commit 658d67e

Browse files
committed
Initial commit
0 parents  commit 658d67e

3 files changed

Lines changed: 180 additions & 0 deletions

File tree

.github/workflows/main.yaml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
name: build docker image
3+
4+
on:
5+
pull_request:
6+
branches:
7+
- main
8+
push:
9+
branches:
10+
- main
11+
12+
jobs:
13+
docker-image-build:
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: read
17+
packages: write
18+
attestations: write
19+
id-token: write
20+
strategy:
21+
fail-fast: false
22+
matrix:
23+
image:
24+
- ubuntu-2204-lts
25+
gap-branch:
26+
- master
27+
- stable-4.13
28+
- stable-4.12
29+
platform:
30+
- linux/amd64
31+
- linux/arm/v7
32+
- linux/arm64
33+
34+
steps:
35+
- name: 👨‍💻 git -- checkout
36+
uses: actions/checkout@v4
37+
38+
- name: 🐬 docker -- metadata
39+
id: meta
40+
uses: docker/metadata-action@v5
41+
with:
42+
images: |
43+
name=ghcr.io/${{ github.repository }}
44+
tags: |
45+
type=ref,event=branch
46+
type=ref,event=pr
47+
type=semver,pattern={{version}}
48+
type=semver,pattern={{major}}.{{minor}}
49+
50+
- name: 📦 docker -- login to ghcr-registry
51+
uses: docker/login-action@v3
52+
with:
53+
registry: ghcr.io
54+
username: ${{ github.actor }}
55+
password: ${{ secrets.GITHUB_TOKEN }}
56+
57+
- name: 💻 quemu -- setup
58+
uses: docker/setup-qemu-action@v3
59+
60+
- name: 🐬 docker -- setup buildx
61+
uses: docker/setup-buildx-action@v3
62+
63+
- name: 🐬 docker -- build and push
64+
uses: docker/build-push-action@v5
65+
with:
66+
context: ./src/dockerfiles/${{ matrix.image }}
67+
file: ./src/dockerfiles/${{ matrix.image }}/Dockerfile
68+
platforms: ${{ matrix.platform }}
69+
push: ${{ github.event_name != 'pull_request' }}
70+
tags: ${{ steps.meta.outputs.tags }}
71+
labels: ${{ steps.meta.outputs.labels }}
72+
cache-from: type=gha
73+
cache-to: type=gha,mode=max`
74+
build-args: |
75+
PLATFORM=${{ matrix.platform }}

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
## gap-containers
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
ARG PLATFORM="linux/arm64"
2+
3+
## {{{
4+
ARG GAP_VERSION="4.13.1"
5+
## }}}
6+
7+
## {{{
8+
ARG GAP_USER_USERNAME="gap"
9+
ARG GAP_USER_GROUPNAME="gap"
10+
ARG GAP_USER_UID=1000
11+
ARG GAP_USER_GID=1000
12+
ARG GAP_USER_SHELL="/bin/bash"
13+
ARG GAP_USER_HOMEDIR="/opt/gap"
14+
## }}}
15+
16+
## {{{
17+
ARG GAP_DOWNLOAD_TARBALL_NAME="gap-${GAP_VERSION}.tar.gz"
18+
ARG GAP_DOWNLOAD_URL="https://github.com/gap-system/gap/releases/download/v${GAP_VERSION}/${GAP_DOWNLOAD_TARBALL_NAME}"
19+
## }}}
20+
21+
22+
23+
24+
FROM --platform=${PLATFORM} ubuntu:22.04 AS base
25+
ARG GAP_USER_GID
26+
ARG GAP_USER_GROUPNAME
27+
ARG GAP_USER_UID
28+
ARG GAP_USER_USERNAME
29+
ARG GAP_USER_HOMEDIR
30+
31+
RUN cat > /etc/apt/apt.conf.d/99norecommend <<EOF
32+
APT::Install-Recommends "0";
33+
APT::Install-Suggests "0";
34+
EOF
35+
36+
RUN groupadd --system --gid ${GAP_USER_GID} ${GAP_USER_GROUPNAME} && \
37+
useradd --system --gid ${GAP_USER_GID} --home-dir ${GAP_USER_HOMEDIR} --create-home ${GAP_USER_USERNAME}
38+
39+
40+
FROM base AS build
41+
ARG GAP_VERSION
42+
ARG GAP_DOWNLOAD_URL
43+
ARG GAP_DOWNLOAD_TARBALL_NAME
44+
ARG GAP_USER_HOMEDIR
45+
ARG GAP_USER_USERNAME
46+
ARG GAP_USER_GROUPNAME
47+
48+
RUN apt-get update --yes && \
49+
apt-get install --no-install-recommends --quiet --yes \
50+
4ti2 \
51+
pari-gp \
52+
autoconf \
53+
build-essential \
54+
libcdd-dev \
55+
libcurl4-openssl-dev \
56+
libfplll-dev \
57+
libgmp-dev \
58+
libmpc-dev \
59+
libmpfi-dev \
60+
libmpfr-dev \
61+
libncurses-dev \
62+
libreadline-dev \
63+
libzmq3-dev \
64+
singular \
65+
zlib1g-dev
66+
67+
USER ${GAP_USER_USERNAME}
68+
WORKDIR ${GAP_USER_HOMEDIR}
69+
ADD --chown=${GAP_USER_USERNAME}:${GAP_USER_GROUPNAME} ${GAP_DOWNLOAD_URL} ./
70+
RUN tar -xzf ${GAP_DOWNLOAD_TARBALL_NAME}
71+
72+
WORKDIR "./gap-${GAP_VERSION}"
73+
RUN ./configure && \
74+
MAKEFLAGS=-j8 make
75+
76+
FROM base AS result
77+
ARG GAP_VERSION
78+
ARG GAP_USER_HOMEDIR
79+
ARG GAP_USER_USERNAME
80+
ARG GAP_USER_GROUPNAME
81+
82+
ENV PATH="${GAP_USER_HOMEDIR}/gap-${GAP_VERSION}/:${PATH}"
83+
ENV LD_LIBRARY_PATH="${GAP_USER_HOMEDIR}/gap-${GAP_VERSION}/lib"
84+
85+
RUN apt-get update --yes && \
86+
apt-get install --no-install-recommends --quiet --yes \
87+
4ti2 \
88+
libcdd0d \
89+
libcurl4 \
90+
libgmp10 \
91+
libmpc3 \
92+
libmpfi0 \
93+
libmpfr6 \
94+
libncurses5 \
95+
libreadline8 \
96+
libzmq5 \
97+
pari-gp \
98+
singular \
99+
zlib1g
100+
101+
USER ${GAP_USER_USERNAME}
102+
COPY --chown=${GAP_USER_USERNAME}:${GAP_USER_GROUPNAME} --from=build "${GAP_USER_HOMEDIR}/gap-${GAP_VERSION}/" "${GAP_USER_HOMEDIR}/gap-${GAP_VERSION}//"
103+
104+
CMD [ "bash" ]

0 commit comments

Comments
 (0)