The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/distrobuilder/pull/229
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Add the simple downloader and template for [Apertis OS](https://images.apertis.org/) -- Debian's derivative.
From 44317dd2c18ae10be28b3d51156719186123393c Mon Sep 17 00:00:00 2001 From: Denis Pynkin <denis.pyn...@collabora.com> Date: Sat, 31 Aug 2019 03:21:53 +0300 Subject: [PATCH 1/2] Add Apertis OS downloader Simple downloader which relies to "https" URL schema. Signed-off-by: Denis Pynkin <denis.pyn...@collabora.com> --- doc/source.md | 1 + shared/definition.go | 1 + sources/apertis-http.go | 59 +++++++++++++++++++++++++++++++++++++++++ sources/source.go | 2 ++ 4 files changed, 63 insertions(+) create mode 100644 sources/apertis-http.go diff --git a/doc/source.md b/doc/source.md index de68a6c..e9af1ae 100644 --- a/doc/source.md +++ b/doc/source.md @@ -22,6 +22,7 @@ It needs to be one of * alpinelinux-http * alt-http +* apertis-http * archlinux-http * centos-http * debootstrap diff --git a/shared/definition.go b/shared/definition.go index ceae83e..5699c20 100644 --- a/shared/definition.go +++ b/shared/definition.go @@ -255,6 +255,7 @@ func (d *Definition) Validate() error { validDownloaders := []string{ "alpinelinux-http", "alt-http", + "apertis-http", "archlinux-http", "centos-http", "debootstrap", diff --git a/sources/apertis-http.go b/sources/apertis-http.go new file mode 100644 index 0000000..0bd8ef1 --- /dev/null +++ b/sources/apertis-http.go @@ -0,0 +1,59 @@ +package sources + +import ( + "errors" + "fmt" + "net/url" + "path/filepath" + + lxd "github.com/lxc/lxd/shared" + + "github.com/lxc/distrobuilder/shared" +) + +// ApertisHTTP represents the Apertis downloader. +type ApertisHTTP struct{} + +// NewApertisHTTP creates a new ApertisHTTP instance. +func NewApertisHTTP() *ApertisHTTP { + return &ApertisHTTP{} +} + +// Run downloads the tarball and unpacks it. +func (s *ApertisHTTP) Run(definition shared.Definition, rootfsDir string) error { + architecture := definition.Image.Architecture + release := definition.Image.Release + variant := definition.Image.Variant + serial := definition.Image.Serial + + // https://images.apertis.org/daily/v2020dev0/20190830.0/amd64/minimal/ospack_v2020dev0-amd64-minimal_20190830.0.tar.gz + baseURL := fmt.Sprintf("%s/%s", + definition.Source.URL, definition.Source.Variant) + baseURL = fmt.Sprintf("%s/%s/%s/%s/%s/", + baseURL, release, serial, architecture, variant) + fname := fmt.Sprintf("ospack_%s-%s-%s_%s.tar.gz", + release, architecture, variant, serial) + + url, err := url.Parse(baseURL) + if err != nil { + return err + } + + // Force gpg checks when using http + if url.Scheme != "https" { + return errors.New("Only HTTPS server is supported") + } + + fpath, err := shared.DownloadHash(definition.Image, baseURL+fname, "", nil) + if err != nil { + return err + } + + // Unpack + err = lxd.Unpack(filepath.Join(fpath, fname), rootfsDir, false, false, nil) + if err != nil { + return err + } + + return nil +} diff --git a/sources/source.go b/sources/source.go index b2ea519..fce32c5 100644 --- a/sources/source.go +++ b/sources/source.go @@ -14,6 +14,8 @@ func Get(name string) Downloader { return NewAlpineLinuxHTTP() case "alt-http": return NewALTHTTP() + case "apertis-http": + return NewApertisHTTP() case "archlinux-http": return NewArchLinuxHTTP() case "centos-http": From 827d4cc842839c83d0fdcf2720528504de8e73d9 Mon Sep 17 00:00:00 2001 From: Denis Pynkin <denis.pyn...@collabora.com> Date: Sat, 31 Aug 2019 04:59:03 +0300 Subject: [PATCH 2/2] Add Apertis example Config allows to download and start all Apertis variants, however for proper work need to start container in privileged mode. Signed-off-by: Denis Pynkin <denis.pyn...@collabora.com> --- doc/examples/apertis | 64 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 doc/examples/apertis diff --git a/doc/examples/apertis b/doc/examples/apertis new file mode 100644 index 0000000..d8ae95e --- /dev/null +++ b/doc/examples/apertis @@ -0,0 +1,64 @@ +image: + distribution: Apertis + description: Apertis {{ image.architecture }} {{ image.variant }} {{ image.release }} {{ image.serial }} + release: 18.12 + variant: minimal + serial: 18.12.0 + expiry: 30d + architecture: amd64 + +source: + downloader: apertis-http + url: https://images.apertis.org + variant: release + +targets: + lxc: + create-message: | + You just created an {{ image.distribution }} container (release={{ image.release }}, arch={{ image.architecture }}) + + config: + - type: all + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/debian.common.conf + + - type: user + before: 5 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/debian.userns.conf + + - type: all + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/common.conf + + - type: user + after: 4 + content: |- + lxc.include = LXC_TEMPLATE_CONFIG/userns.conf + + - type: all + content: |- + lxc.arch = {{ image.architecture_personality }} + +files: + - path: /etc/hostname + generator: hostname + + - path: /etc/hosts + generator: hosts + + - path: /etc/machine-id + generator: remove + + +packages: + manager: apt + update: false + cleanup: false + +environment: + variables: + - key: TMPDIR + set: false
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel