Commit 59431412 authored by Eric Timmons's avatar Eric Timmons
Browse files

Switch back to gitlab CI

Additionally, make OS support mirror the OS support in official images (Windows
1809 or older and no Ubuntu)
parent 2a3b9255
Pipeline #1978 failed with stages
in 1 minute and 2 seconds
#!/bin/sh
# If the first arg starts with a hyphen, prepend ccl to arguments.
if [ "${1#-}" != "$1" ]; then
set -- ccl "$@"
fi
exec "$@"
FROM ubuntu:focal
LABEL maintainer="etimmons@mit.edu"
ENV CCL_VERSION=1.12
ARG PLATFORM=linuxarm
ARG CCL_SCRIPT=ccl
WORKDIR /usr/local/src/
# hadolint ignore=DL3003,DL3008
RUN set -x \
&& apt-get update \
&& apt-get install -y --no-install-recommends curl ca-certificates build-essential m4 make \
&& curl -L https://github.com/Clozure/ccl/archive/v${CCL_VERSION}.tar.gz > v${CCL_VERSION}.tar.gz \
&& curl -L https://github.com/Clozure/ccl/releases/download/v${CCL_VERSION}/${PLATFORM}.tar.gz > ${PLATFORM}.tar.gz \
&& gunzip ${PLATFORM}.tar.gz \
&& gunzip v${CCL_VERSION}.tar.gz \
&& tar xf v${CCL_VERSION}.tar \
&& mv ccl-${CCL_VERSION} ccl \
&& ( cd ccl && tar xf ../${PLATFORM}.tar && cp scripts/$CCL_SCRIPT /usr/local/bin/ccl && ccl -b -e "(rebuild-ccl :full t)" ) \
&& rm -rf v${CCL_VERSION}.tar ${PLATFORM}.tar \
&& apt-get remove -y curl ca-certificates build-essential m4 make \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /
COPY docker-entrypoint /usr/local/bin/docker-entrypoint
ENTRYPOINT ["docker-entrypoint"]
CMD ["ccl"]
#!/bin/sh
# If the first arg starts with a hyphen, prepend ccl to arguments.
if [ "${1#-}" != "$1" ]; then
set -- ccl "$@"
fi
exec "$@"
# escape=`
FROM mcr.microsoft.com/windows/servercore:ltsc2019
FROM mcr.microsoft.com/windows/servercore:1809
# Switch to powershell and make sure it exits on error
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
......
# escape=`
FROM mcr.microsoft.com/windows/servercore:ltsc2016
# Switch to powershell and make sure it exits on error
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
ENV CCL_VERSION=1.12
RUN $srcurl = ('https://github.com/Clozure/ccl/releases/download/v{0}/ccl-{0}-windowsx86.zip' -f $env:CCL_VERSION); `
Write-Host ('Downloading {0}' -f $srcurl); `
Invoke-WebRequest -Uri $srcurl -OutFile ccl.zip -UserAgent "NativeHost"; `
Write-Host 'Done downloading'; `
$expectedsha256 = 'F1BA6CFF353F6E6E13828F41DC92A723C01766AE38DCFF774905C9E02D59ED04'; `
$actualsha256 = (Get-FileHash ccl.zip -Algorithm sha256).Hash; `
Write-Host ('Verifying sha256 {0} (expected: {1})' -f $actualsha256, $expectedsha256); `
if ($actualsha256 -ne $expectedsha256) { `
Write-Host 'SHA256 check FAILED!'; `
exit 1; `
}; `
Expand-Archive -Force C:\ccl.zip 'C:\Program Files\'; `
rm C:\ccl.zip; `
Add-Content -Path 'C:\Program Files\ccl\ccl.cmd' -Value '@echo off'; `
Add-Content -Path 'C:\Program Files\ccl\ccl.cmd' '\"C:\Program Files\ccl\wx86cl64.exe\"'; `
type 'C:\Program Files\ccl\ccl.cmd'
RUN $machineKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\ControlSet001\Control\Session Manager\Environment\', $true); `
$machinePath = $machineKey.GetValue('PATH', [string]::Empty, 'DoNotExpandEnvironmentNames').ToString(); `
$newPath = ('C:\Program Files\ccl;{0}' -f $machinePath); `
$machineKey.SetValue('PATH', $newPath, 'ExpandString'); `
$machineKey.Close();
CMD ["ccl"]
- [Supported Tags](#org94ff483)
- [Simple Tags](#org06e0e6c)
- [Shared Tags](#orga931b0d)
- [Quick Reference](#orgda4e6aa)
- [What is CCL?](#org02e7535)
- [What's in the image?](#orgc41932e)
- [License](#org5cd0b88)
- [Supported Tags](#org6664acc)
- [Simple Tags](#org11b541d)
- [Shared Tags](#orgb0acb9d)
- [Quick Reference](#orgac66b5e)
- [What is CCL?](#org7e91dd4)
- [What's in the image?](#org0a8eaf9)
- [License](#org7bfb70d)
<a id="org94ff483"></a>
<a id="org6664acc"></a>
# Supported Tags
<a id="org06e0e6c"></a>
<a id="org11b541d"></a>
## Simple Tags
- `1.12-debian-buster`, `1.12-debian`, `debian-buster`, `debian`
- `1.12-debian-stretch`, `debian-stretch`
- `1.12-ubuntu-focal`, `1.12-ubuntu`, `ubuntu-focal`, `ubuntu`
- `1.12-ubuntu-bionic`, `ubuntu-bionic`
- `1.12-windowsservercore-ltsc2019`, `1.12-windowsservercore`, `windowsservercore-ltsc2019`, `windowsservercore`
- `1.12-buster`, `buster`
- `1.12-stretch`, `stretch`
- `1.12-windowsservercore-1809`, `windowsservercore-1809`
- `1.12-windowsservercore-ltsc2016`, `windowsservercore-ltsc2016`
<a id="orga931b0d"></a>
<a id="orgb0acb9d"></a>
## Shared Tags
- **`1.12`:** - `1.12-debian-buster`
- `1.12-windowsservercore-ltsc2019`
- **`latest`:** - `1.12-debian-buster`
- `1.12-windowsservercore-ltsc2019`
- **`1.12`, `latest`:** - `1.12-buster`
- `1.12-windowsservercore-1809`
- `1.12-windowsservercore-ltsc2016`
- **`1.12-windowsservercore`, `windowsservercore`:** - `1.12-windowsservercore-1809`
- `1.12-windowsservercore-ltsc2016`
<a id="orgda4e6aa"></a>
<a id="orgac66b5e"></a>
# Quick Reference
- **CCL Home Page:** [https://ccl.clozure.com/](https://ccl.clozure.com/)
- **Where to file Docker image related issues:** <https://github.com/cl-docker-images/ccl>
- **Where to file Docker image related issues:** <https://gitlab.common-lisp.net/cl-docker-images/ccl>
- **Where to file issues for CCL itself:** [https://github.com/Clozure/ccl/issues](https://github.com/Clozure/ccl/issues)
- **Maintained by:** [Eric Timmons](https://github.com/daewok/docker-ccl/) (i.e., this is not an official CCL image)
- **Maintained by:** [Eric Timmons](https://github.com/daewok) and the [MIT MERS Group](https://mers.csail.mit.edu/) (i.e., this is not an official CCL image)
- **Supported architectures:** `linux/amd64`, `linux/arm/v7`, `windows/amd64`
- **Previously known as:** `daewok/ccl`
<a id="org02e7535"></a>
<a id="org7e91dd4"></a>
# What is CCL?
......@@ -56,16 +55,14 @@ From [CCL's Home Page](https://ccl.clozure.com):
> Clozure CL (often called CCL for short) is a free Common Lisp implementation with a long history. Some distinguishing features of the implementation include fast compilation speed, native threads, a precise, generational, compacting garbage collector, and a convenient foreign-function interface.
<a id="orgc41932e"></a>
<a id="org0a8eaf9"></a>
# What's in the image?
This image contains CCL binaries built from the latest binary releases from the CCL devs for a variety of OSes and architectures.
The general policy for OS support is that images will be built for two versions of supported OSes: either the two most recent versions or the latest LTS and most recent version, as applicable.
<a id="org5cd0b88"></a>
<a id="org7bfb70d"></a>
# License
......
#+TITLE: CCL Docker Images
#+AUTHOR: Eric Timmons
This project contains Dockerfiles for a variety of stock CCL images as well as
CI infrastructure to automatically build and push them.
See [[file:hub-description.org]] for a more detailed description of the images.
* Image Repos
The end goal is to get these images accepted into Docker's official image
program. This drives the current layout of the repo as the official images
program does not allow images to be customized via build args.
Again, similar to the official images program, images are pushed to an arch
specific organization and then pushed to a common organization using Docker
manifests.
* CI
We use a mixture of Travis CI and GitHub Actions to build the images. Travis
is responsible for building all Linux based images and GitHub Actions builds
the Windows based images. The reason for this split is primarily because
Travis provides hosted Arm instances, whereas GitHub currently does not.
Building the images can take a *long* time and can occasionally fail due to
transient conditions outside our control. Given that there are a large number
of images, we want to cache images between builds so we can reuse as much
work as possible. Additionally, we don't want to waste time rebuilding images
that have already been released if the goal is to test changes to the nightly
images. Therefore, the CI jobs follow the following rules:
For jobs run on master, all images are built and pushed to the arch specific
repos with tags ending in =-tmp-master=. Nightly images are then retagged
without the suffix and pushed to the common org using manifests. When a
manual release job is triggered, all non-nightly images are retagged without
the suffix and pushed to the common org using manifests.
For jobs run on a branch starting with =nightly-= only the nightly images are
built and are pushed (if possible) to the arch specific repos with the tag
suffix =-tmp=. These tags are used as potential cache sources when building
on any branch (including master).
For jobs run on any other branch, all images are built and pushed (if
possible) to the arch specific repos with the tag suffix =-tmp=. These tags
are used as potential cache sources when building on any branch (including
master).
This tagging scheme means that multiple non-master branches being developed
on in parallel will stomp on each other's caches. However, for now, that
seems like an acceptable tradeoff when compared to coming up with a more
robust tagging scheme.
** Rebuilding for new base images
CCL does not release on a regular cadence. As such, it is desirable to
occasionally rebuild and re-release images to account for the base image
being updated. Currently, this rebuild happens monthly and only for the
Linux images. Due to Travis CI not allowing cron jobs to have extra
configuration, the only way to distinguish between nightly builds and
rebuilds is by branch name. The stable branch should generally track master
and is the branch which rebuilds happen on.
* Supported Tags
** Simple Tags
+ =1.12-buster=, =buster=
+ =1.12-stretch=, =stretch=
+ =1.12-windowsservercore-1809=, =windowsservercore-1809=
+ =1.12-windowsservercore-ltsc2016=, =windowsservercore-ltsc2016=
** Shared Tags
+ =1.12=, =latest= ::
+ =1.12-buster=
+ =1.12-windowsservercore-1809=
+ =1.12-windowsservercore-ltsc2016=
+ =1.12-windowsservercore=, =windowsservercore= ::
+ =1.12-windowsservercore-1809=
+ =1.12-windowsservercore-ltsc2016=
* Quick Reference
+ CCL Home Page :: [[https://ccl.clozure.com/][https://ccl.clozure.com/]]
+ Where to file Docker image related issues :: [[https://gitlab.common-lisp.net/cl-docker-images/ccl]]
+ Where to file issues for CCL itself :: [[https://github.com/Clozure/ccl/issues][https://github.com/Clozure/ccl/issues]]
+ Maintained by :: [[https://github.com/daewok/docker-ccl/][Eric Timmons]] (i.e., this is not an official CCL image)
+ Maintained by :: [[https://github.com/daewok][Eric Timmons]] and the [[https://mers.csail.mit.edu/][MIT MERS Group]] (i.e., this is not an official CCL image)
+ Supported architectures :: =linux/amd64=, =linux/arm/v7=, =windows/amd64=
* What is CCL?
From [[https://ccl.clozure.com][CCL's Home Page]]:
#+begin_quote
Clozure CL (often called CCL for short) is a free Common Lisp implementation
with a long history. Some distinguishing features of the implementation
include fast compilation speed, native threads, a precise, generational,
compacting garbage collector, and a convenient foreign-function interface.
#+end_quote
* What's in the image?
This image contains CCL binaries built from the latest binary releases from
the CCL devs for a variety of OSes and architectures.
* License
CCL is licensed under the [[https://www.apache.org/licenses/LICENSE-2.0][Apache v2.0]].
The Dockerfiles used to build the images are licensed under BSD-2-Clause.
As with all Docker images, these likely also contain other software which may
be under other licenses (such as Bash, etc from the base distribution, along
with any direct or indirect dependencies of the primary software being
contained).
As for any pre-built image usage, it is the image user's responsibility to
ensure that any use of this image complies with any relevant licenses for all
software contained within.
Maintainers: Eric Timmons <etimmons@mit.edu> (@daewok)
GitRepo: https://gitlab.common-lisp.net/cl-docker-images/ccl.git
# Debian Buster
Tags: 1.12-buster, buster
SharedTags: 1.12, latest
Architectures: amd64, arm32v7
amd64-Directory: images/buster/amd64
arm32v7-Directory: images/buster/arm32v7
# Debian Stretch
Tags: 1.12-stretch, stretch
Architectures: amd64, arm32v7
amd64-Directory: images/stretch/amd64
arm32v7-Directory: images/stretch/arm32v7
# Windows 1809
Tags: 1.12-windowsservercore-1809, windowsservercore-1809
SharedTags: 1.12, latest, windowsservercore, 1.12-windowsservercore
Architectures: windows-amd64
Directory: images/windowsservercore/1809
# Windows LTSC2016
Tags: 1.12-windowsservercore-ltsc2016, windowsservercore-ltsc2016
SharedTags: 1.12, latest, windowsservercore, 1.12-windowsservercore
Architectures: windows-amd64
Directory: images/windowsservercore/ltsc2016
Subproject commit 75ed003d3fdebf97efbcb14a19f870d4e8fc50c8
ARCHES=amd64 arm32v7
DEBIAN_LATEST=buster
DEBIAN_VERSIONS=buster stretch
DEFAULT_LINUX_OS=debian
IMAGE_NAME=ccl
IMAGE_BUILD_NAMESPACE=daewok
IMAGE_TARGET_NAMESPACE=daewok
INCLUDE_WINDOWS_IN_MANIFEST=yes
LATEST_VERSION=1.12
OSES=debian ubuntu windowsservercore
UBUNTU_LATEST=focal
UBUNTU_VERSIONS=focal bionic
WINDOWSSERVERCORE_LATEST=ltsc2019
WINDOWSSERVERCORE_VERSIONS=ltsc2019
#+TITLE: CCL Docker Images
#+AUTHOR: Eric Timmons
* Supported Tags
** Simple Tags
+ =1.12-debian-buster=, =1.12-debian=, =debian-buster=, =debian=
+ =1.12-debian-stretch=, =debian-stretch=
+ =1.12-ubuntu-focal=, =1.12-ubuntu=, =ubuntu-focal=, =ubuntu=
+ =1.12-ubuntu-bionic=, =ubuntu-bionic=
+ =1.12-windowsservercore-ltsc2019=, =1.12-windowsservercore=, =windowsservercore-ltsc2019=, =windowsservercore=
** Shared Tags
+ =1.12= ::
+ =1.12-debian-buster=
+ =1.12-windowsservercore-ltsc2019=
+ =latest= ::
+ =1.12-debian-buster=
+ =1.12-windowsservercore-ltsc2019=
* Quick Reference
+ CCL Home Page :: [[https://ccl.clozure.com/][https://ccl.clozure.com/]]
+ Where to file Docker image related issues :: [[https://github.com/cl-docker-images/ccl]]
+ Where to file issues for CCL itself :: [[https://github.com/Clozure/ccl/issues][https://github.com/Clozure/ccl/issues]]
+ Maintained by :: [[https://github.com/daewok/docker-ccl/][Eric Timmons]] (i.e., this is not an official CCL image)
+ Maintained by :: [[https://github.com/daewok][Eric Timmons]] and the [[https://mers.csail.mit.edu/][MIT MERS Group]] (i.e., this is not an official CCL image)
+ Supported architectures :: =linux/amd64=, =linux/arm/v7=, =windows/amd64=
+ Previously known as :: =daewok/ccl=
* What is CCL?
From [[https://ccl.clozure.com][CCL's Home Page]]:
#+begin_quote
Clozure CL (often called CCL for short) is a free Common Lisp implementation
with a long history. Some distinguishing features of the implementation
include fast compilation speed, native threads, a precise, generational,
compacting garbage collector, and a convenient foreign-function interface.
#+end_quote
* What's in the image?
This image contains CCL binaries built from the latest binary releases from
the CCL devs for a variety of OSes and architectures.
The general policy for OS support is that images will be built for two
versions of supported OSes: either the two most recent versions or the latest
LTS and most recent version, as applicable.
* License
CCL is licensed under the [[https://www.apache.org/licenses/LICENSE-2.0][Apache v2.0]].
The Dockerfiles used to build the images are licensed under BSD-2-Clause.
As with all Docker images, these likely also contain other software which may
be under other licenses (such as Bash, etc from the base distribution, along
with any direct or indirect dependencies of the primary software being
contained).
As for any pre-built image usage, it is the image user's responsibility to
ensure that any use of this image complies with any relevant licenses for all
software contained within.
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