Skip to content

Commit

Permalink
switch build-script for dockerimages to codegen
Browse files Browse the repository at this point in the history
  • Loading branch information
Emilgardis committed Jun 25, 2022
1 parent 703fc7c commit 1efbfba
Show file tree
Hide file tree
Showing 10 changed files with 411 additions and 36 deletions.
2 changes: 0 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ version = "0.2.2"
edition = "2021"
include = [
"src/**/*",
"docker/Dockerfile.*",
"docker/*.sh",
"docs/*.md",
"Cargo.toml",
"Cargo.lock",
Expand Down
30 changes: 1 addition & 29 deletions src/build.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use std::env;
use std::error::Error;
use std::fs::File;
use std::io::{self, Write};
use std::io::Write;
use std::path::PathBuf;
use std::process::Command;

Expand All @@ -23,11 +23,6 @@ fn main() {
.unwrap()
.write_all(commit_info().as_bytes())
.unwrap();

File::create(out_dir.join("docker-images.rs"))
.unwrap()
.write_all(docker_images().as_bytes())
.unwrap();
}

fn commit_info() -> String {
Expand Down Expand Up @@ -60,26 +55,3 @@ fn commit_date() -> Result<String, Some> {
Err(Some {})
}
}

fn docker_images() -> String {
let mut images = String::from("[");
let mut dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap());
dir.push("docker");

let dir = dir.read_dir().unwrap();
let mut paths = dir.collect::<io::Result<Vec<_>>>().unwrap();
paths.sort_by_key(|e| e.path());

for entry in paths {
let path = entry.path();
let file_name = path.file_name().unwrap().to_str().unwrap();
if file_name.starts_with("Dockerfile.") {
images.push('"');
images.push_str(&file_name.replacen("Dockerfile.", "", 1));
images.push_str("\", ");
}
}

images.push(']');
images
}
11 changes: 9 additions & 2 deletions src/docker/image.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,13 @@ pub struct ImageArchitecture {
pub target: TargetTriple,
}

impl ImageArchitecture {
pub const X86_64_UNKNOWN_LINUX_GNU: Self =
ImageArchitecture::from_target(TargetTriple::X86_64UnknownLinuxGnu);
pub const AARCH64_UNKNOWN_LINUX_GNU: Self =
ImageArchitecture::from_target(TargetTriple::Aarch64UnknownLinuxGnu);
}

impl TryFrom<&str> for ImageArchitecture {
type Error = <Self as std::str::FromStr>::Err;

Expand Down Expand Up @@ -150,9 +157,9 @@ pub enum Os {
}
impl ImageArchitecture {
#[track_caller]
pub fn from_target(target: TargetTriple) -> Self {
pub const fn from_target(target: TargetTriple) -> Self {
match target {
TargetTriple::Other(t) => todo!("not implemented for {t:?}, yet"),
TargetTriple::Other(_) => todo!(),
TargetTriple::X86_64AppleDarwin => ImageArchitecture {
architecture: Architecture::Amd64,
os: Os::Darwin,
Expand Down
9 changes: 9 additions & 0 deletions src/docker/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ mod custom;
mod engine;
mod image;
mod local;
mod provided_images;
pub mod remote;
mod shared;

pub use self::engine::*;
pub use self::provided_images::PROVIDED_IMAGES;
pub use self::shared::*;

pub use image::{Architecture, Image, ImageArchitecture, Os as DockerOs, PossibleImage};
Expand All @@ -17,6 +19,13 @@ use crate::cargo::CargoMetadata;
use crate::errors::*;
use crate::{Config, Target};

#[derive(Debug)]
pub struct ProvidedImage {
pub name: &'static str,
pub platforms: &'static [ImageArchitecture],
pub sub: Option<&'static str>,
}

#[allow(clippy::too_many_arguments)] // TODO: refactor
pub fn run(
engine: &Engine,
Expand Down
281 changes: 281 additions & 0 deletions src/docker/provided_images.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,281 @@
#![doc = "*** AUTO-GENERATED, do not touch. Run `cargo xtask codegen` to update ***"]
use super::{ImageArchitecture, ProvidedImage};

#[rustfmt::skip]
pub static PROVIDED_IMAGES: &[ProvidedImage] = &[
ProvidedImage {
name: "x86_64-apple-darwin",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "x86_64-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "x86_64-unknown-linux-musl",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "x86_64-pc-windows-msvc",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "x86_64-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: Some("centos")
},
ProvidedImage {
name: "aarch64-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "arm-unknown-linux-gnueabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "arm-unknown-linux-gnueabihf",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "armv7-unknown-linux-gnueabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "armv7-unknown-linux-gnueabihf",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "thumbv7neon-unknown-linux-gnueabihf",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "i586-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "i686-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "mips-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "mipsel-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "mips64-unknown-linux-gnuabi64",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "mips64el-unknown-linux-gnuabi64",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "mips64-unknown-linux-muslabi64",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "mips64el-unknown-linux-muslabi64",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "powerpc-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "powerpc64-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "powerpc64le-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "riscv64gc-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "s390x-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "sparc64-unknown-linux-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "aarch64-unknown-linux-musl",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "arm-unknown-linux-musleabihf",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "arm-unknown-linux-musleabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "armv5te-unknown-linux-gnueabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "armv5te-unknown-linux-musleabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "armv7-unknown-linux-musleabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "armv7-unknown-linux-musleabihf",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "i586-unknown-linux-musl",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "i686-unknown-linux-musl",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "mips-unknown-linux-musl",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "mipsel-unknown-linux-musl",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "aarch64-linux-android",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "arm-linux-androideabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "armv7-linux-androideabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "thumbv7neon-linux-androideabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "i686-linux-android",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "x86_64-linux-android",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "x86_64-pc-windows-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "i686-pc-windows-gnu",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "wasm32-unknown-emscripten",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "x86_64-unknown-dragonfly",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "i686-unknown-freebsd",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "x86_64-unknown-freebsd",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "x86_64-unknown-netbsd",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "sparcv9-sun-solaris",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "x86_64-sun-solaris",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "thumbv6m-none-eabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "thumbv7em-none-eabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "thumbv7em-none-eabihf",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
ProvidedImage {
name: "thumbv7m-none-eabi",
platforms: &[ImageArchitecture::X86_64_UNKNOWN_LINUX_GNU],
sub: None
},
];
Loading

0 comments on commit 1efbfba

Please sign in to comment.