summaryrefslogtreecommitdiffstats
path: root/bootstrap/generated-dists
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/generated-dists')
-rw-r--r--bootstrap/generated-dists/Vagrantfile98
-rw-r--r--bootstrap/generated-dists/centos7/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/centos7/bootstrap.sh120
-rwxr-xr-xbootstrap/generated-dists/centos7/locale.sh55
-rw-r--r--bootstrap/generated-dists/centos7/packages.yml100
-rw-r--r--bootstrap/generated-dists/centos8s/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/centos8s/bootstrap.sh125
-rwxr-xr-xbootstrap/generated-dists/centos8s/locale.sh55
-rw-r--r--bootstrap/generated-dists/centos8s/packages.yml105
-rw-r--r--bootstrap/generated-dists/debian11-32bit/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/debian11-32bit/bootstrap.sh117
-rwxr-xr-xbootstrap/generated-dists/debian11-32bit/locale.sh55
-rw-r--r--bootstrap/generated-dists/debian11-32bit/packages.yml102
-rw-r--r--bootstrap/generated-dists/debian11/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/debian11/bootstrap.sh117
-rwxr-xr-xbootstrap/generated-dists/debian11/locale.sh55
-rw-r--r--bootstrap/generated-dists/debian11/packages.yml102
-rw-r--r--bootstrap/generated-dists/debian12-32bit/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/debian12-32bit/bootstrap.sh117
-rwxr-xr-xbootstrap/generated-dists/debian12-32bit/locale.sh55
-rw-r--r--bootstrap/generated-dists/debian12-32bit/packages.yml102
-rw-r--r--bootstrap/generated-dists/debian12/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/debian12/bootstrap.sh117
-rwxr-xr-xbootstrap/generated-dists/debian12/locale.sh55
-rw-r--r--bootstrap/generated-dists/debian12/packages.yml102
-rw-r--r--bootstrap/generated-dists/fedora39/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/fedora39/bootstrap.sh126
-rwxr-xr-xbootstrap/generated-dists/fedora39/locale.sh55
-rw-r--r--bootstrap/generated-dists/fedora39/packages.yml111
-rw-r--r--bootstrap/generated-dists/opensuse155/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/opensuse155/bootstrap.sh119
-rwxr-xr-xbootstrap/generated-dists/opensuse155/locale.sh55
-rw-r--r--bootstrap/generated-dists/opensuse155/packages.yml101
-rw-r--r--bootstrap/generated-dists/ubuntu1804-32bit/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/ubuntu1804-32bit/bootstrap.sh117
-rwxr-xr-xbootstrap/generated-dists/ubuntu1804-32bit/locale.sh55
-rw-r--r--bootstrap/generated-dists/ubuntu1804-32bit/packages.yml102
-rw-r--r--bootstrap/generated-dists/ubuntu1804/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/ubuntu1804/bootstrap.sh117
-rwxr-xr-xbootstrap/generated-dists/ubuntu1804/locale.sh55
-rw-r--r--bootstrap/generated-dists/ubuntu1804/packages.yml102
-rw-r--r--bootstrap/generated-dists/ubuntu2004/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/ubuntu2004/bootstrap.sh117
-rwxr-xr-xbootstrap/generated-dists/ubuntu2004/locale.sh55
-rw-r--r--bootstrap/generated-dists/ubuntu2004/packages.yml102
-rw-r--r--bootstrap/generated-dists/ubuntu2204/Dockerfile29
-rwxr-xr-xbootstrap/generated-dists/ubuntu2204/bootstrap.sh118
-rwxr-xr-xbootstrap/generated-dists/ubuntu2204/locale.sh55
-rw-r--r--bootstrap/generated-dists/ubuntu2204/packages.yml103
49 files changed, 3767 insertions, 0 deletions
diff --git a/bootstrap/generated-dists/Vagrantfile b/bootstrap/generated-dists/Vagrantfile
new file mode 100644
index 0000000..2c6468d
--- /dev/null
+++ b/bootstrap/generated-dists/Vagrantfile
@@ -0,0 +1,98 @@
+
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+
+Vagrant.configure("2") do |config|
+ config.ssh.insert_key = false
+
+
+ config.vm.define "centos7" do |v|
+ v.vm.box = "centos/7"
+ v.vm.hostname = "centos7"
+ v.vm.provision :shell, path: "centos7/bootstrap.sh"
+ v.vm.provision :shell, path: "centos7/locale.sh"
+ end
+
+ config.vm.define "centos8s" do |v|
+ v.vm.box = "centos/stream8"
+ v.vm.hostname = "centos8s"
+ v.vm.provision :shell, path: "centos8s/bootstrap.sh"
+ v.vm.provision :shell, path: "centos8s/locale.sh"
+ end
+
+ config.vm.define "debian11" do |v|
+ v.vm.box = "debian/bullseye64"
+ v.vm.hostname = "debian11"
+ v.vm.provision :shell, path: "debian11/bootstrap.sh"
+ v.vm.provision :shell, path: "debian11/locale.sh"
+ end
+
+ config.vm.define "debian11-32bit" do |v|
+ v.vm.box = "debian/bullseye32"
+ v.vm.hostname = "debian11-32bit"
+ v.vm.provision :shell, path: "debian11-32bit/bootstrap.sh"
+ v.vm.provision :shell, path: "debian11-32bit/locale.sh"
+ end
+
+ config.vm.define "debian12" do |v|
+ v.vm.box = "debian/bookworm64"
+ v.vm.hostname = "debian12"
+ v.vm.provision :shell, path: "debian12/bootstrap.sh"
+ v.vm.provision :shell, path: "debian12/locale.sh"
+ end
+
+ config.vm.define "debian12-32bit" do |v|
+ v.vm.box = "debian/bookworm32"
+ v.vm.hostname = "debian12-32bit"
+ v.vm.provision :shell, path: "debian12-32bit/bootstrap.sh"
+ v.vm.provision :shell, path: "debian12-32bit/locale.sh"
+ end
+
+ config.vm.define "fedora39" do |v|
+ v.vm.box = "fedora/39-cloud-base"
+ v.vm.hostname = "fedora39"
+ v.vm.provision :shell, path: "fedora39/bootstrap.sh"
+ v.vm.provision :shell, path: "fedora39/locale.sh"
+ end
+
+ config.vm.define "opensuse155" do |v|
+ v.vm.box = "opensuse/openSUSE-15.5-x86_64"
+ v.vm.hostname = "opensuse155"
+ v.vm.provision :shell, path: "opensuse155/bootstrap.sh"
+ v.vm.provision :shell, path: "opensuse155/locale.sh"
+ end
+
+ config.vm.define "ubuntu1804" do |v|
+ v.vm.box = "ubuntu/bionic64"
+ v.vm.hostname = "ubuntu1804"
+ v.vm.provision :shell, path: "ubuntu1804/bootstrap.sh"
+ v.vm.provision :shell, path: "ubuntu1804/locale.sh"
+ end
+
+ config.vm.define "ubuntu1804-32bit" do |v|
+ v.vm.box = "ubuntu/bionic32"
+ v.vm.hostname = "ubuntu1804-32bit"
+ v.vm.provision :shell, path: "ubuntu1804-32bit/bootstrap.sh"
+ v.vm.provision :shell, path: "ubuntu1804-32bit/locale.sh"
+ end
+
+ config.vm.define "ubuntu2004" do |v|
+ v.vm.box = "ubuntu/focal64"
+ v.vm.hostname = "ubuntu2004"
+ v.vm.provision :shell, path: "ubuntu2004/bootstrap.sh"
+ v.vm.provision :shell, path: "ubuntu2004/locale.sh"
+ end
+
+ config.vm.define "ubuntu2204" do |v|
+ v.vm.box = "ubuntu/jammy64"
+ v.vm.hostname = "ubuntu2204"
+ v.vm.provision :shell, path: "ubuntu2204/bootstrap.sh"
+ v.vm.provision :shell, path: "ubuntu2204/locale.sh"
+ end
+
+
+end
diff --git a/bootstrap/generated-dists/centos7/Dockerfile b/bootstrap/generated-dists/centos7/Dockerfile
new file mode 100644
index 0000000..a11c4db
--- /dev/null
+++ b/bootstrap/generated-dists/centos7/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM centos:7
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/centos7/bootstrap.sh b/bootstrap/generated-dists/centos7/bootstrap.sh
new file mode 100755
index 0000000..fd86761
--- /dev/null
+++ b/bootstrap/generated-dists/centos7/bootstrap.sh
@@ -0,0 +1,120 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+yum update -y
+yum install -y epel-release
+yum install -y yum-plugin-copr
+yum copr enable -y sergiomb/SambaAD
+yum update -y
+
+yum install -y \
+ "@Development Tools" \
+ acl \
+ attr \
+ autoconf \
+ avahi-devel \
+ bind-utils \
+ binutils \
+ bison \
+ ccache \
+ chrpath \
+ compat-gnutls37-devel \
+ compat-gnutls37-utils \
+ crypto-policies-scripts \
+ cups-devel \
+ curl \
+ dbus-devel \
+ docbook-dtds \
+ docbook-style-xsl \
+ flex \
+ gawk \
+ gcc \
+ gdb \
+ git \
+ glib2-devel \
+ glibc-common \
+ gpgme-devel \
+ gzip \
+ hostname \
+ htop \
+ jansson-devel \
+ jq \
+ keyutils-libs-devel \
+ krb5-devel \
+ krb5-server \
+ krb5-workstation \
+ lcov \
+ libacl-devel \
+ libarchive-devel \
+ libattr-devel \
+ libblkid-devel \
+ libbsd-devel \
+ libcap-devel \
+ libicu-devel \
+ libpcap-devel \
+ libtasn1-devel \
+ libtasn1-tools \
+ libtirpc-devel \
+ libunwind-devel \
+ libuuid-devel \
+ libxslt \
+ lmdb \
+ lmdb-devel \
+ make \
+ mingw64-gcc \
+ ncurses-devel \
+ openldap-devel \
+ pam-devel \
+ patch \
+ perl-Archive-Tar \
+ perl-ExtUtils-MakeMaker \
+ perl-Parse-Yapp \
+ perl-Test-Base \
+ perl-core \
+ perl-generators \
+ perl-interpreter \
+ pkgconfig \
+ popt-devel \
+ procps-ng \
+ psmisc \
+ python3-libsemanage \
+ python3-policycoreutils \
+ python36 \
+ python36-cryptography \
+ python36-devel \
+ python36-dns \
+ python36-gpg \
+ python36-iso8601 \
+ python36-markdown \
+ python36-pyasn1 \
+ python36-requests \
+ python36-setproctitle \
+ quota-devel \
+ readline-devel \
+ redhat-lsb \
+ rng-tools \
+ rpcgen \
+ rsync \
+ sed \
+ sudo \
+ systemd-devel \
+ tar \
+ tree \
+ wget \
+ which \
+ xfsprogs-devel \
+ xz \
+ yum-utils \
+ zlib-devel
+
+yum clean all
+
+if [ ! -f /usr/bin/python3 ]; then
+ ln -sf /usr/bin/python3.6 /usr/bin/python3
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/centos7/locale.sh b/bootstrap/generated-dists/centos7/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/centos7/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/centos7/packages.yml b/bootstrap/generated-dists/centos7/packages.yml
new file mode 100644
index 0000000..2234baf
--- /dev/null
+++ b/bootstrap/generated-dists/centos7/packages.yml
@@ -0,0 +1,100 @@
+---
+packages:
+ - "@Development Tools"
+ - acl
+ - attr
+ - autoconf
+ - avahi-devel
+ - bind-utils
+ - binutils
+ - bison
+ - ccache
+ - chrpath
+ - compat-gnutls37-devel
+ - compat-gnutls37-utils
+ - crypto-policies-scripts
+ - cups-devel
+ - curl
+ - dbus-devel
+ - docbook-dtds
+ - docbook-style-xsl
+ - flex
+ - gawk
+ - gcc
+ - gdb
+ - git
+ - glib2-devel
+ - glibc-common
+ - gpgme-devel
+ - gzip
+ - hostname
+ - htop
+ - jansson-devel
+ - jq
+ - keyutils-libs-devel
+ - krb5-devel
+ - krb5-server
+ - krb5-workstation
+ - lcov
+ - libacl-devel
+ - libarchive-devel
+ - libattr-devel
+ - libblkid-devel
+ - libbsd-devel
+ - libcap-devel
+ - libicu-devel
+ - libpcap-devel
+ - libtasn1-devel
+ - libtasn1-tools
+ - libtirpc-devel
+ - libunwind-devel
+ - libuuid-devel
+ - libxslt
+ - lmdb
+ - lmdb-devel
+ - make
+ - mingw64-gcc
+ - ncurses-devel
+ - openldap-devel
+ - pam-devel
+ - patch
+ - perl-Archive-Tar
+ - perl-ExtUtils-MakeMaker
+ - perl-Parse-Yapp
+ - perl-Test-Base
+ - perl-core
+ - perl-generators
+ - perl-interpreter
+ - pkgconfig
+ - popt-devel
+ - procps-ng
+ - psmisc
+ - python3-libsemanage
+ - python3-policycoreutils
+ - python36
+ - python36-cryptography
+ - python36-devel
+ - python36-dns
+ - python36-gpg
+ - python36-iso8601
+ - python36-markdown
+ - python36-pyasn1
+ - python36-requests
+ - python36-setproctitle
+ - quota-devel
+ - readline-devel
+ - redhat-lsb
+ - rng-tools
+ - rpcgen
+ - rsync
+ - sed
+ - sudo
+ - systemd-devel
+ - tar
+ - tree
+ - wget
+ - which
+ - xfsprogs-devel
+ - xz
+ - yum-utils
+ - zlib-devel \ No newline at end of file
diff --git a/bootstrap/generated-dists/centos8s/Dockerfile b/bootstrap/generated-dists/centos8s/Dockerfile
new file mode 100644
index 0000000..3b5a681
--- /dev/null
+++ b/bootstrap/generated-dists/centos8s/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM quay.io/centos/centos:stream8
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/centos8s/bootstrap.sh b/bootstrap/generated-dists/centos8s/bootstrap.sh
new file mode 100755
index 0000000..4b2c62c
--- /dev/null
+++ b/bootstrap/generated-dists/centos8s/bootstrap.sh
@@ -0,0 +1,125 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+yum update -y
+yum install -y dnf-plugins-core
+yum install -y epel-release
+
+yum -v repolist all
+yum config-manager --set-enabled powertools -y
+
+yum update -y
+
+yum install -y \
+ --setopt=install_weak_deps=False \
+ "@Development Tools" \
+ acl \
+ attr \
+ autoconf \
+ avahi-devel \
+ bind-utils \
+ binutils \
+ bison \
+ ccache \
+ chrpath \
+ crypto-policies-scripts \
+ cups-devel \
+ curl \
+ dbus-devel \
+ docbook-dtds \
+ docbook-style-xsl \
+ flex \
+ gawk \
+ gcc \
+ gdb \
+ git \
+ glib2-devel \
+ glibc-common \
+ glibc-langpack-en \
+ glusterfs-api-devel \
+ glusterfs-devel \
+ gnutls-devel \
+ gnutls-utils \
+ gpgme-devel \
+ gzip \
+ hostname \
+ htop \
+ jansson-devel \
+ jq \
+ keyutils-libs-devel \
+ krb5-devel \
+ krb5-server \
+ krb5-workstation \
+ libacl-devel \
+ libarchive-devel \
+ libattr-devel \
+ libblkid-devel \
+ libbsd-devel \
+ libcap-devel \
+ libcephfs-devel \
+ libicu-devel \
+ libpcap-devel \
+ libtasn1-devel \
+ libtasn1-tools \
+ libtirpc-devel \
+ libunwind-devel \
+ libuuid-devel \
+ libxslt \
+ lmdb \
+ lmdb-devel \
+ make \
+ mingw64-gcc \
+ ncurses-devel \
+ openldap-devel \
+ pam-devel \
+ patch \
+ perl \
+ perl-Archive-Tar \
+ perl-ExtUtils-MakeMaker \
+ perl-Parse-Yapp \
+ perl-Test-Simple \
+ perl-generators \
+ perl-interpreter \
+ pkgconfig \
+ popt-devel \
+ procps-ng \
+ psmisc \
+ python3 \
+ python3-cryptography \
+ python3-devel \
+ python3-dns \
+ python3-gpg \
+ python3-iso8601 \
+ python3-libsemanage \
+ python3-markdown \
+ python3-policycoreutils \
+ python3-pyasn1 \
+ python3-requests \
+ python3-setproctitle \
+ quota-devel \
+ readline-devel \
+ redhat-lsb \
+ rng-tools \
+ rpcgen \
+ rpcsvc-proto-devel \
+ rsync \
+ sed \
+ sudo \
+ systemd-devel \
+ tar \
+ tracker-devel \
+ tree \
+ wget \
+ which \
+ xfsprogs-devel \
+ xz \
+ yum-utils \
+ zlib-devel
+
+yum clean all \ No newline at end of file
diff --git a/bootstrap/generated-dists/centos8s/locale.sh b/bootstrap/generated-dists/centos8s/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/centos8s/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/centos8s/packages.yml b/bootstrap/generated-dists/centos8s/packages.yml
new file mode 100644
index 0000000..f416dea
--- /dev/null
+++ b/bootstrap/generated-dists/centos8s/packages.yml
@@ -0,0 +1,105 @@
+---
+packages:
+ - "@Development Tools"
+ - acl
+ - attr
+ - autoconf
+ - avahi-devel
+ - bind-utils
+ - binutils
+ - bison
+ - ccache
+ - chrpath
+ - crypto-policies-scripts
+ - cups-devel
+ - curl
+ - dbus-devel
+ - docbook-dtds
+ - docbook-style-xsl
+ - flex
+ - gawk
+ - gcc
+ - gdb
+ - git
+ - glib2-devel
+ - glibc-common
+ - glibc-langpack-en
+ - glusterfs-api-devel
+ - glusterfs-devel
+ - gnutls-devel
+ - gnutls-utils
+ - gpgme-devel
+ - gzip
+ - hostname
+ - htop
+ - jansson-devel
+ - jq
+ - keyutils-libs-devel
+ - krb5-devel
+ - krb5-server
+ - krb5-workstation
+ - libacl-devel
+ - libarchive-devel
+ - libattr-devel
+ - libblkid-devel
+ - libbsd-devel
+ - libcap-devel
+ - libcephfs-devel
+ - libicu-devel
+ - libpcap-devel
+ - libtasn1-devel
+ - libtasn1-tools
+ - libtirpc-devel
+ - libunwind-devel
+ - libuuid-devel
+ - libxslt
+ - lmdb
+ - lmdb-devel
+ - make
+ - mingw64-gcc
+ - ncurses-devel
+ - openldap-devel
+ - pam-devel
+ - patch
+ - perl
+ - perl-Archive-Tar
+ - perl-ExtUtils-MakeMaker
+ - perl-Parse-Yapp
+ - perl-Test-Simple
+ - perl-generators
+ - perl-interpreter
+ - pkgconfig
+ - popt-devel
+ - procps-ng
+ - psmisc
+ - python3
+ - python3-cryptography
+ - python3-devel
+ - python3-dns
+ - python3-gpg
+ - python3-iso8601
+ - python3-libsemanage
+ - python3-markdown
+ - python3-policycoreutils
+ - python3-pyasn1
+ - python3-requests
+ - python3-setproctitle
+ - quota-devel
+ - readline-devel
+ - redhat-lsb
+ - rng-tools
+ - rpcgen
+ - rpcsvc-proto-devel
+ - rsync
+ - sed
+ - sudo
+ - systemd-devel
+ - tar
+ - tracker-devel
+ - tree
+ - wget
+ - which
+ - xfsprogs-devel
+ - xz
+ - yum-utils
+ - zlib-devel \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian11-32bit/Dockerfile b/bootstrap/generated-dists/debian11-32bit/Dockerfile
new file mode 100644
index 0000000..d0133bd
--- /dev/null
+++ b/bootstrap/generated-dists/debian11-32bit/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM registry-1.docker.io/i386/debian:11
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian11-32bit/bootstrap.sh b/bootstrap/generated-dists/debian11-32bit/bootstrap.sh
new file mode 100755
index 0000000..82d2705
--- /dev/null
+++ b/bootstrap/generated-dists/debian11-32bit/bootstrap.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+export DEBIAN_FRONTEND=noninteractive
+apt-get -y update
+
+apt-get -y install \
+ acl \
+ apt-utils \
+ attr \
+ autoconf \
+ bind9utils \
+ binutils \
+ bison \
+ build-essential \
+ ccache \
+ chrpath \
+ codespell \
+ curl \
+ debhelper \
+ dnsutils \
+ docbook-xml \
+ docbook-xsl \
+ flex \
+ gcc \
+ gdb \
+ git \
+ glusterfs-common \
+ gnutls-bin \
+ gzip \
+ heimdal-multidev \
+ hostname \
+ htop \
+ jq \
+ krb5-config \
+ krb5-kdc \
+ krb5-user \
+ lcov \
+ libacl1-dev \
+ libarchive-dev \
+ libattr1-dev \
+ libavahi-common-dev \
+ libblkid-dev \
+ libbsd-dev \
+ libcap-dev \
+ libcephfs-dev \
+ libcups2-dev \
+ libdbus-1-dev \
+ libglib2.0-dev \
+ libgnutls28-dev \
+ libgpgme11-dev \
+ libicu-dev \
+ libjansson-dev \
+ libjs-jquery \
+ libkeyutils-dev \
+ libkrb5-dev \
+ libldap2-dev \
+ liblmdb-dev \
+ libncurses5-dev \
+ libpam0g-dev \
+ libparse-yapp-perl \
+ libpcap-dev \
+ libpopt-dev \
+ libreadline-dev \
+ libsystemd-dev \
+ libtasn1-bin \
+ libtasn1-dev \
+ libtracker-sparql-2.0-dev \
+ libunwind-dev \
+ liburing-dev \
+ lmdb-utils \
+ locales \
+ lsb-release \
+ make \
+ mawk \
+ mingw-w64 \
+ patch \
+ perl \
+ perl-modules \
+ pkg-config \
+ procps \
+ psmisc \
+ python3 \
+ python3-cryptography \
+ python3-dbg \
+ python3-dev \
+ python3-dnspython \
+ python3-gpg \
+ python3-iso8601 \
+ python3-markdown \
+ python3-pexpect \
+ python3-pyasn1 \
+ python3-requests \
+ python3-setproctitle \
+ rng-tools \
+ rsync \
+ sed \
+ shellcheck \
+ sudo \
+ tar \
+ tree \
+ uuid-dev \
+ wget \
+ xfslibs-dev \
+ xsltproc \
+ xz-utils \
+ zlib1g-dev
+
+apt-get -y autoremove
+apt-get -y autoclean
+apt-get -y clean \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian11-32bit/locale.sh b/bootstrap/generated-dists/debian11-32bit/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/debian11-32bit/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian11-32bit/packages.yml b/bootstrap/generated-dists/debian11-32bit/packages.yml
new file mode 100644
index 0000000..dab6a93
--- /dev/null
+++ b/bootstrap/generated-dists/debian11-32bit/packages.yml
@@ -0,0 +1,102 @@
+---
+packages:
+ - acl
+ - apt-utils
+ - attr
+ - autoconf
+ - bind9utils
+ - binutils
+ - bison
+ - build-essential
+ - ccache
+ - chrpath
+ - codespell
+ - curl
+ - debhelper
+ - dnsutils
+ - docbook-xml
+ - docbook-xsl
+ - flex
+ - gcc
+ - gdb
+ - git
+ - glusterfs-common
+ - gnutls-bin
+ - gzip
+ - heimdal-multidev
+ - hostname
+ - htop
+ - jq
+ - krb5-config
+ - krb5-kdc
+ - krb5-user
+ - lcov
+ - libacl1-dev
+ - libarchive-dev
+ - libattr1-dev
+ - libavahi-common-dev
+ - libblkid-dev
+ - libbsd-dev
+ - libcap-dev
+ - libcephfs-dev
+ - libcups2-dev
+ - libdbus-1-dev
+ - libglib2.0-dev
+ - libgnutls28-dev
+ - libgpgme11-dev
+ - libicu-dev
+ - libjansson-dev
+ - libjs-jquery
+ - libkeyutils-dev
+ - libkrb5-dev
+ - libldap2-dev
+ - liblmdb-dev
+ - libncurses5-dev
+ - libpam0g-dev
+ - libparse-yapp-perl
+ - libpcap-dev
+ - libpopt-dev
+ - libreadline-dev
+ - libsystemd-dev
+ - libtasn1-bin
+ - libtasn1-dev
+ - libtracker-sparql-2.0-dev
+ - libunwind-dev
+ - liburing-dev
+ - lmdb-utils
+ - locales
+ - lsb-release
+ - make
+ - mawk
+ - mingw-w64
+ - patch
+ - perl
+ - perl-modules
+ - pkg-config
+ - procps
+ - psmisc
+ - python3
+ - python3-cryptography
+ - python3-dbg
+ - python3-dev
+ - python3-dnspython
+ - python3-gpg
+ - python3-iso8601
+ - python3-markdown
+ - python3-pexpect
+ - python3-pyasn1
+ - python3-requests
+ - python3-setproctitle
+ - rng-tools
+ - rsync
+ - sed
+ - shellcheck
+ - sudo
+ - tar
+ - tree
+ - uuid-dev
+ - wget
+ - xfslibs-dev
+ - xsltproc
+ - xz-utils
+ - zlib1g-dev \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian11/Dockerfile b/bootstrap/generated-dists/debian11/Dockerfile
new file mode 100644
index 0000000..90a961f
--- /dev/null
+++ b/bootstrap/generated-dists/debian11/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM debian:11
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian11/bootstrap.sh b/bootstrap/generated-dists/debian11/bootstrap.sh
new file mode 100755
index 0000000..82d2705
--- /dev/null
+++ b/bootstrap/generated-dists/debian11/bootstrap.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+export DEBIAN_FRONTEND=noninteractive
+apt-get -y update
+
+apt-get -y install \
+ acl \
+ apt-utils \
+ attr \
+ autoconf \
+ bind9utils \
+ binutils \
+ bison \
+ build-essential \
+ ccache \
+ chrpath \
+ codespell \
+ curl \
+ debhelper \
+ dnsutils \
+ docbook-xml \
+ docbook-xsl \
+ flex \
+ gcc \
+ gdb \
+ git \
+ glusterfs-common \
+ gnutls-bin \
+ gzip \
+ heimdal-multidev \
+ hostname \
+ htop \
+ jq \
+ krb5-config \
+ krb5-kdc \
+ krb5-user \
+ lcov \
+ libacl1-dev \
+ libarchive-dev \
+ libattr1-dev \
+ libavahi-common-dev \
+ libblkid-dev \
+ libbsd-dev \
+ libcap-dev \
+ libcephfs-dev \
+ libcups2-dev \
+ libdbus-1-dev \
+ libglib2.0-dev \
+ libgnutls28-dev \
+ libgpgme11-dev \
+ libicu-dev \
+ libjansson-dev \
+ libjs-jquery \
+ libkeyutils-dev \
+ libkrb5-dev \
+ libldap2-dev \
+ liblmdb-dev \
+ libncurses5-dev \
+ libpam0g-dev \
+ libparse-yapp-perl \
+ libpcap-dev \
+ libpopt-dev \
+ libreadline-dev \
+ libsystemd-dev \
+ libtasn1-bin \
+ libtasn1-dev \
+ libtracker-sparql-2.0-dev \
+ libunwind-dev \
+ liburing-dev \
+ lmdb-utils \
+ locales \
+ lsb-release \
+ make \
+ mawk \
+ mingw-w64 \
+ patch \
+ perl \
+ perl-modules \
+ pkg-config \
+ procps \
+ psmisc \
+ python3 \
+ python3-cryptography \
+ python3-dbg \
+ python3-dev \
+ python3-dnspython \
+ python3-gpg \
+ python3-iso8601 \
+ python3-markdown \
+ python3-pexpect \
+ python3-pyasn1 \
+ python3-requests \
+ python3-setproctitle \
+ rng-tools \
+ rsync \
+ sed \
+ shellcheck \
+ sudo \
+ tar \
+ tree \
+ uuid-dev \
+ wget \
+ xfslibs-dev \
+ xsltproc \
+ xz-utils \
+ zlib1g-dev
+
+apt-get -y autoremove
+apt-get -y autoclean
+apt-get -y clean \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian11/locale.sh b/bootstrap/generated-dists/debian11/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/debian11/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian11/packages.yml b/bootstrap/generated-dists/debian11/packages.yml
new file mode 100644
index 0000000..dab6a93
--- /dev/null
+++ b/bootstrap/generated-dists/debian11/packages.yml
@@ -0,0 +1,102 @@
+---
+packages:
+ - acl
+ - apt-utils
+ - attr
+ - autoconf
+ - bind9utils
+ - binutils
+ - bison
+ - build-essential
+ - ccache
+ - chrpath
+ - codespell
+ - curl
+ - debhelper
+ - dnsutils
+ - docbook-xml
+ - docbook-xsl
+ - flex
+ - gcc
+ - gdb
+ - git
+ - glusterfs-common
+ - gnutls-bin
+ - gzip
+ - heimdal-multidev
+ - hostname
+ - htop
+ - jq
+ - krb5-config
+ - krb5-kdc
+ - krb5-user
+ - lcov
+ - libacl1-dev
+ - libarchive-dev
+ - libattr1-dev
+ - libavahi-common-dev
+ - libblkid-dev
+ - libbsd-dev
+ - libcap-dev
+ - libcephfs-dev
+ - libcups2-dev
+ - libdbus-1-dev
+ - libglib2.0-dev
+ - libgnutls28-dev
+ - libgpgme11-dev
+ - libicu-dev
+ - libjansson-dev
+ - libjs-jquery
+ - libkeyutils-dev
+ - libkrb5-dev
+ - libldap2-dev
+ - liblmdb-dev
+ - libncurses5-dev
+ - libpam0g-dev
+ - libparse-yapp-perl
+ - libpcap-dev
+ - libpopt-dev
+ - libreadline-dev
+ - libsystemd-dev
+ - libtasn1-bin
+ - libtasn1-dev
+ - libtracker-sparql-2.0-dev
+ - libunwind-dev
+ - liburing-dev
+ - lmdb-utils
+ - locales
+ - lsb-release
+ - make
+ - mawk
+ - mingw-w64
+ - patch
+ - perl
+ - perl-modules
+ - pkg-config
+ - procps
+ - psmisc
+ - python3
+ - python3-cryptography
+ - python3-dbg
+ - python3-dev
+ - python3-dnspython
+ - python3-gpg
+ - python3-iso8601
+ - python3-markdown
+ - python3-pexpect
+ - python3-pyasn1
+ - python3-requests
+ - python3-setproctitle
+ - rng-tools
+ - rsync
+ - sed
+ - shellcheck
+ - sudo
+ - tar
+ - tree
+ - uuid-dev
+ - wget
+ - xfslibs-dev
+ - xsltproc
+ - xz-utils
+ - zlib1g-dev \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian12-32bit/Dockerfile b/bootstrap/generated-dists/debian12-32bit/Dockerfile
new file mode 100644
index 0000000..fc72e14
--- /dev/null
+++ b/bootstrap/generated-dists/debian12-32bit/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM registry-1.docker.io/i386/debian:12
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian12-32bit/bootstrap.sh b/bootstrap/generated-dists/debian12-32bit/bootstrap.sh
new file mode 100755
index 0000000..033061a
--- /dev/null
+++ b/bootstrap/generated-dists/debian12-32bit/bootstrap.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+export DEBIAN_FRONTEND=noninteractive
+apt-get -y update
+
+apt-get -y install \
+ acl \
+ apt-utils \
+ attr \
+ autoconf \
+ bind9utils \
+ binutils \
+ bison \
+ build-essential \
+ ccache \
+ chrpath \
+ codespell \
+ curl \
+ debhelper \
+ dnsutils \
+ docbook-xml \
+ docbook-xsl \
+ flex \
+ gcc \
+ gdb \
+ git \
+ glusterfs-common \
+ gnutls-bin \
+ gzip \
+ heimdal-multidev \
+ hostname \
+ htop \
+ jq \
+ krb5-config \
+ krb5-kdc \
+ krb5-user \
+ lcov \
+ libacl1-dev \
+ libarchive-dev \
+ libattr1-dev \
+ libavahi-common-dev \
+ libblkid-dev \
+ libbsd-dev \
+ libcap-dev \
+ libcephfs-dev \
+ libcups2-dev \
+ libdbus-1-dev \
+ libglib2.0-dev \
+ libgnutls28-dev \
+ libgpgme11-dev \
+ libicu-dev \
+ libjansson-dev \
+ libjs-jquery \
+ libkeyutils-dev \
+ libkrb5-dev \
+ libldap2-dev \
+ liblmdb-dev \
+ libncurses5-dev \
+ libpam0g-dev \
+ libparse-yapp-perl \
+ libpcap-dev \
+ libpopt-dev \
+ libreadline-dev \
+ libsystemd-dev \
+ libtasn1-bin \
+ libtasn1-dev \
+ libunwind-dev \
+ liburing-dev \
+ lmdb-utils \
+ locales \
+ lsb-release \
+ make \
+ mawk \
+ mingw-w64 \
+ patch \
+ perl \
+ perl-modules \
+ pkg-config \
+ procps \
+ psmisc \
+ python3 \
+ python3-cryptography \
+ python3-dbg \
+ python3-dev \
+ python3-dnspython \
+ python3-gpg \
+ python3-iso8601 \
+ python3-markdown \
+ python3-pexpect \
+ python3-pyasn1 \
+ python3-requests \
+ python3-setproctitle \
+ rng-tools \
+ rsync \
+ sed \
+ shellcheck \
+ shfmt \
+ sudo \
+ tar \
+ tree \
+ uuid-dev \
+ wget \
+ xfslibs-dev \
+ xsltproc \
+ xz-utils \
+ zlib1g-dev
+
+apt-get -y autoremove
+apt-get -y autoclean
+apt-get -y clean \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian12-32bit/locale.sh b/bootstrap/generated-dists/debian12-32bit/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/debian12-32bit/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian12-32bit/packages.yml b/bootstrap/generated-dists/debian12-32bit/packages.yml
new file mode 100644
index 0000000..bd9a558
--- /dev/null
+++ b/bootstrap/generated-dists/debian12-32bit/packages.yml
@@ -0,0 +1,102 @@
+---
+packages:
+ - acl
+ - apt-utils
+ - attr
+ - autoconf
+ - bind9utils
+ - binutils
+ - bison
+ - build-essential
+ - ccache
+ - chrpath
+ - codespell
+ - curl
+ - debhelper
+ - dnsutils
+ - docbook-xml
+ - docbook-xsl
+ - flex
+ - gcc
+ - gdb
+ - git
+ - glusterfs-common
+ - gnutls-bin
+ - gzip
+ - heimdal-multidev
+ - hostname
+ - htop
+ - jq
+ - krb5-config
+ - krb5-kdc
+ - krb5-user
+ - lcov
+ - libacl1-dev
+ - libarchive-dev
+ - libattr1-dev
+ - libavahi-common-dev
+ - libblkid-dev
+ - libbsd-dev
+ - libcap-dev
+ - libcephfs-dev
+ - libcups2-dev
+ - libdbus-1-dev
+ - libglib2.0-dev
+ - libgnutls28-dev
+ - libgpgme11-dev
+ - libicu-dev
+ - libjansson-dev
+ - libjs-jquery
+ - libkeyutils-dev
+ - libkrb5-dev
+ - libldap2-dev
+ - liblmdb-dev
+ - libncurses5-dev
+ - libpam0g-dev
+ - libparse-yapp-perl
+ - libpcap-dev
+ - libpopt-dev
+ - libreadline-dev
+ - libsystemd-dev
+ - libtasn1-bin
+ - libtasn1-dev
+ - libunwind-dev
+ - liburing-dev
+ - lmdb-utils
+ - locales
+ - lsb-release
+ - make
+ - mawk
+ - mingw-w64
+ - patch
+ - perl
+ - perl-modules
+ - pkg-config
+ - procps
+ - psmisc
+ - python3
+ - python3-cryptography
+ - python3-dbg
+ - python3-dev
+ - python3-dnspython
+ - python3-gpg
+ - python3-iso8601
+ - python3-markdown
+ - python3-pexpect
+ - python3-pyasn1
+ - python3-requests
+ - python3-setproctitle
+ - rng-tools
+ - rsync
+ - sed
+ - shellcheck
+ - shfmt
+ - sudo
+ - tar
+ - tree
+ - uuid-dev
+ - wget
+ - xfslibs-dev
+ - xsltproc
+ - xz-utils
+ - zlib1g-dev \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian12/Dockerfile b/bootstrap/generated-dists/debian12/Dockerfile
new file mode 100644
index 0000000..2b0e140
--- /dev/null
+++ b/bootstrap/generated-dists/debian12/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM debian:12
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian12/bootstrap.sh b/bootstrap/generated-dists/debian12/bootstrap.sh
new file mode 100755
index 0000000..033061a
--- /dev/null
+++ b/bootstrap/generated-dists/debian12/bootstrap.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+export DEBIAN_FRONTEND=noninteractive
+apt-get -y update
+
+apt-get -y install \
+ acl \
+ apt-utils \
+ attr \
+ autoconf \
+ bind9utils \
+ binutils \
+ bison \
+ build-essential \
+ ccache \
+ chrpath \
+ codespell \
+ curl \
+ debhelper \
+ dnsutils \
+ docbook-xml \
+ docbook-xsl \
+ flex \
+ gcc \
+ gdb \
+ git \
+ glusterfs-common \
+ gnutls-bin \
+ gzip \
+ heimdal-multidev \
+ hostname \
+ htop \
+ jq \
+ krb5-config \
+ krb5-kdc \
+ krb5-user \
+ lcov \
+ libacl1-dev \
+ libarchive-dev \
+ libattr1-dev \
+ libavahi-common-dev \
+ libblkid-dev \
+ libbsd-dev \
+ libcap-dev \
+ libcephfs-dev \
+ libcups2-dev \
+ libdbus-1-dev \
+ libglib2.0-dev \
+ libgnutls28-dev \
+ libgpgme11-dev \
+ libicu-dev \
+ libjansson-dev \
+ libjs-jquery \
+ libkeyutils-dev \
+ libkrb5-dev \
+ libldap2-dev \
+ liblmdb-dev \
+ libncurses5-dev \
+ libpam0g-dev \
+ libparse-yapp-perl \
+ libpcap-dev \
+ libpopt-dev \
+ libreadline-dev \
+ libsystemd-dev \
+ libtasn1-bin \
+ libtasn1-dev \
+ libunwind-dev \
+ liburing-dev \
+ lmdb-utils \
+ locales \
+ lsb-release \
+ make \
+ mawk \
+ mingw-w64 \
+ patch \
+ perl \
+ perl-modules \
+ pkg-config \
+ procps \
+ psmisc \
+ python3 \
+ python3-cryptography \
+ python3-dbg \
+ python3-dev \
+ python3-dnspython \
+ python3-gpg \
+ python3-iso8601 \
+ python3-markdown \
+ python3-pexpect \
+ python3-pyasn1 \
+ python3-requests \
+ python3-setproctitle \
+ rng-tools \
+ rsync \
+ sed \
+ shellcheck \
+ shfmt \
+ sudo \
+ tar \
+ tree \
+ uuid-dev \
+ wget \
+ xfslibs-dev \
+ xsltproc \
+ xz-utils \
+ zlib1g-dev
+
+apt-get -y autoremove
+apt-get -y autoclean
+apt-get -y clean \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian12/locale.sh b/bootstrap/generated-dists/debian12/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/debian12/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/debian12/packages.yml b/bootstrap/generated-dists/debian12/packages.yml
new file mode 100644
index 0000000..bd9a558
--- /dev/null
+++ b/bootstrap/generated-dists/debian12/packages.yml
@@ -0,0 +1,102 @@
+---
+packages:
+ - acl
+ - apt-utils
+ - attr
+ - autoconf
+ - bind9utils
+ - binutils
+ - bison
+ - build-essential
+ - ccache
+ - chrpath
+ - codespell
+ - curl
+ - debhelper
+ - dnsutils
+ - docbook-xml
+ - docbook-xsl
+ - flex
+ - gcc
+ - gdb
+ - git
+ - glusterfs-common
+ - gnutls-bin
+ - gzip
+ - heimdal-multidev
+ - hostname
+ - htop
+ - jq
+ - krb5-config
+ - krb5-kdc
+ - krb5-user
+ - lcov
+ - libacl1-dev
+ - libarchive-dev
+ - libattr1-dev
+ - libavahi-common-dev
+ - libblkid-dev
+ - libbsd-dev
+ - libcap-dev
+ - libcephfs-dev
+ - libcups2-dev
+ - libdbus-1-dev
+ - libglib2.0-dev
+ - libgnutls28-dev
+ - libgpgme11-dev
+ - libicu-dev
+ - libjansson-dev
+ - libjs-jquery
+ - libkeyutils-dev
+ - libkrb5-dev
+ - libldap2-dev
+ - liblmdb-dev
+ - libncurses5-dev
+ - libpam0g-dev
+ - libparse-yapp-perl
+ - libpcap-dev
+ - libpopt-dev
+ - libreadline-dev
+ - libsystemd-dev
+ - libtasn1-bin
+ - libtasn1-dev
+ - libunwind-dev
+ - liburing-dev
+ - lmdb-utils
+ - locales
+ - lsb-release
+ - make
+ - mawk
+ - mingw-w64
+ - patch
+ - perl
+ - perl-modules
+ - pkg-config
+ - procps
+ - psmisc
+ - python3
+ - python3-cryptography
+ - python3-dbg
+ - python3-dev
+ - python3-dnspython
+ - python3-gpg
+ - python3-iso8601
+ - python3-markdown
+ - python3-pexpect
+ - python3-pyasn1
+ - python3-requests
+ - python3-setproctitle
+ - rng-tools
+ - rsync
+ - sed
+ - shellcheck
+ - shfmt
+ - sudo
+ - tar
+ - tree
+ - uuid-dev
+ - wget
+ - xfslibs-dev
+ - xsltproc
+ - xz-utils
+ - zlib1g-dev \ No newline at end of file
diff --git a/bootstrap/generated-dists/fedora39/Dockerfile b/bootstrap/generated-dists/fedora39/Dockerfile
new file mode 100644
index 0000000..144dc8e
--- /dev/null
+++ b/bootstrap/generated-dists/fedora39/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM quay.io/fedora/fedora:39
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/fedora39/bootstrap.sh b/bootstrap/generated-dists/fedora39/bootstrap.sh
new file mode 100755
index 0000000..e3b3646
--- /dev/null
+++ b/bootstrap/generated-dists/fedora39/bootstrap.sh
@@ -0,0 +1,126 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+dnf update -y
+
+dnf install -y \
+ --setopt=install_weak_deps=False \
+ @development-tools \
+ ShellCheck \
+ acl \
+ attr \
+ autoconf \
+ avahi-devel \
+ bind-utils \
+ binutils \
+ bison \
+ ccache \
+ chrpath \
+ codespell \
+ crypto-policies-scripts \
+ cups-devel \
+ curl \
+ dbus-devel \
+ docbook-dtds \
+ docbook-style-xsl \
+ flex \
+ gawk \
+ gcc \
+ gdb \
+ git \
+ glib2-devel \
+ glibc-common \
+ glibc-langpack-en \
+ glusterfs-api-devel \
+ glusterfs-devel \
+ gnutls-devel \
+ gnutls-utils \
+ gpgme-devel \
+ gzip \
+ hostname \
+ htop \
+ jansson-devel \
+ jq \
+ keyutils-libs-devel \
+ krb5-devel \
+ krb5-server \
+ krb5-workstation \
+ lcov \
+ libacl-devel \
+ libarchive-devel \
+ libattr-devel \
+ libblkid-devel \
+ libbsd-devel \
+ libcap-devel \
+ libcephfs-devel \
+ libicu-devel \
+ libpcap-devel \
+ libtasn1-devel \
+ libtasn1-tools \
+ libtirpc-devel \
+ libunwind-devel \
+ liburing-devel \
+ libuuid-devel \
+ libxslt \
+ lmdb \
+ lmdb-devel \
+ make \
+ mingw64-gcc \
+ mold \
+ ncurses-devel \
+ openldap-devel \
+ pam-devel \
+ patch \
+ perl \
+ perl-Archive-Tar \
+ perl-ExtUtils-MakeMaker \
+ perl-Parse-Yapp \
+ perl-Test-Base \
+ perl-generators \
+ perl-interpreter \
+ pkgconfig \
+ popt-devel \
+ procps-ng \
+ psmisc \
+ python3 \
+ python3-cryptography \
+ python3-dateutil \
+ python3-devel \
+ python3-dns \
+ python3-gpg \
+ python3-libsemanage \
+ python3-markdown \
+ python3-policycoreutils \
+ python3-pyasn1 \
+ python3-requests \
+ python3-setproctitle \
+ quota-devel \
+ readline-devel \
+ redhat-lsb \
+ rng-tools \
+ rpcgen \
+ rpcsvc-proto-devel \
+ rsync \
+ sed \
+ shfmt \
+ sudo \
+ systemd-devel \
+ tar \
+ tracker-devel \
+ tree \
+ wget \
+ which \
+ xfsprogs-devel \
+ xz \
+ yum-utils \
+ zlib-devel
+
+dnf clean all
+
+update-crypto-policies --set DEFAULT:AD-SUPPORT \ No newline at end of file
diff --git a/bootstrap/generated-dists/fedora39/locale.sh b/bootstrap/generated-dists/fedora39/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/fedora39/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/fedora39/packages.yml b/bootstrap/generated-dists/fedora39/packages.yml
new file mode 100644
index 0000000..1fbe398
--- /dev/null
+++ b/bootstrap/generated-dists/fedora39/packages.yml
@@ -0,0 +1,111 @@
+---
+packages:
+ - @development-tools
+ - ShellCheck
+ - acl
+ - attr
+ - autoconf
+ - avahi-devel
+ - bind-utils
+ - binutils
+ - bison
+ - ccache
+ - chrpath
+ - codespell
+ - crypto-policies-scripts
+ - cups-devel
+ - curl
+ - dbus-devel
+ - docbook-dtds
+ - docbook-style-xsl
+ - flex
+ - gawk
+ - gcc
+ - gdb
+ - git
+ - glib2-devel
+ - glibc-common
+ - glibc-langpack-en
+ - glusterfs-api-devel
+ - glusterfs-devel
+ - gnutls-devel
+ - gnutls-utils
+ - gpgme-devel
+ - gzip
+ - hostname
+ - htop
+ - jansson-devel
+ - jq
+ - keyutils-libs-devel
+ - krb5-devel
+ - krb5-server
+ - krb5-workstation
+ - lcov
+ - libacl-devel
+ - libarchive-devel
+ - libattr-devel
+ - libblkid-devel
+ - libbsd-devel
+ - libcap-devel
+ - libcephfs-devel
+ - libicu-devel
+ - libpcap-devel
+ - libtasn1-devel
+ - libtasn1-tools
+ - libtirpc-devel
+ - libunwind-devel
+ - liburing-devel
+ - libuuid-devel
+ - libxslt
+ - lmdb
+ - lmdb-devel
+ - make
+ - mingw64-gcc
+ - mold
+ - ncurses-devel
+ - openldap-devel
+ - pam-devel
+ - patch
+ - perl
+ - perl-Archive-Tar
+ - perl-ExtUtils-MakeMaker
+ - perl-Parse-Yapp
+ - perl-Test-Base
+ - perl-generators
+ - perl-interpreter
+ - pkgconfig
+ - popt-devel
+ - procps-ng
+ - psmisc
+ - python3
+ - python3-cryptography
+ - python3-dateutil
+ - python3-devel
+ - python3-dns
+ - python3-gpg
+ - python3-libsemanage
+ - python3-markdown
+ - python3-policycoreutils
+ - python3-pyasn1
+ - python3-requests
+ - python3-setproctitle
+ - quota-devel
+ - readline-devel
+ - redhat-lsb
+ - rng-tools
+ - rpcgen
+ - rpcsvc-proto-devel
+ - rsync
+ - sed
+ - shfmt
+ - sudo
+ - systemd-devel
+ - tar
+ - tracker-devel
+ - tree
+ - wget
+ - which
+ - xfsprogs-devel
+ - xz
+ - yum-utils
+ - zlib-devel \ No newline at end of file
diff --git a/bootstrap/generated-dists/opensuse155/Dockerfile b/bootstrap/generated-dists/opensuse155/Dockerfile
new file mode 100644
index 0000000..d2429f1
--- /dev/null
+++ b/bootstrap/generated-dists/opensuse155/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM opensuse/leap:15.5
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/opensuse155/bootstrap.sh b/bootstrap/generated-dists/opensuse155/bootstrap.sh
new file mode 100755
index 0000000..45d11ef
--- /dev/null
+++ b/bootstrap/generated-dists/opensuse155/bootstrap.sh
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+zypper --non-interactive refresh
+zypper --non-interactive update
+zypper --non-interactive install \
+ --no-recommends \
+ system-user-nobody \
+ ShellCheck \
+ acl \
+ attr \
+ autoconf \
+ avahi-devel \
+ bind-utils \
+ binutils \
+ bison \
+ ccache \
+ chrpath \
+ codespell \
+ crypto-policies-scripts \
+ cups-devel \
+ curl \
+ dbus-1-devel \
+ docbook-dtds \
+ docbook-xsl-stylesheets \
+ flex \
+ gawk \
+ gcc \
+ gdb \
+ git \
+ glib2-devel \
+ glibc-locale \
+ glusterfs-devel \
+ gnutls \
+ gnutls-devel \
+ gpgme-devel \
+ gzip \
+ hostname \
+ htop \
+ jq \
+ keyutils-devel \
+ krb5-client \
+ krb5-devel \
+ krb5-server \
+ lcov \
+ libacl-devel \
+ libarchive-devel \
+ libattr-devel \
+ libblkid-devel \
+ libbsd-devel \
+ libcap-devel \
+ libcephfs-devel \
+ libicu-devel \
+ libjansson-devel \
+ libpcap-devel \
+ libtasn1-devel \
+ libtirpc-devel \
+ libunwind-devel \
+ liburing-devel \
+ libuuid-devel \
+ libxslt \
+ lmdb \
+ lmdb-devel \
+ lsb-release \
+ make \
+ mingw64-gcc \
+ ncurses-devel \
+ openldap2-devel \
+ pam-devel \
+ patch \
+ perl \
+ perl-Archive-Tar-Wrapper \
+ perl-ExtUtils-MakeMaker \
+ perl-Parse-Yapp \
+ perl-Test-Base \
+ pkgconfig \
+ popt-devel \
+ procps \
+ psmisc \
+ python3 \
+ python3-Markdown \
+ python3-cryptography \
+ python3-devel \
+ python3-dnspython \
+ python3-gpg \
+ python3-policycoreutils \
+ python3-pyasn1 \
+ python3-python-dateutil \
+ python3-requests \
+ python3-semanage \
+ python3-setproctitle \
+ readline-devel \
+ rng-tools \
+ rpcgen \
+ rpcsvc-proto-devel \
+ rsync \
+ sed \
+ sudo \
+ systemd-devel \
+ tar \
+ tracker-devel \
+ tree \
+ wget \
+ which \
+ xfsprogs-devel \
+ xz \
+ zlib-devel
+
+zypper --non-interactive clean
+
+if [ -f /usr/lib/mit/bin/krb5-config ]; then
+ ln -sf /usr/lib/mit/bin/krb5-config /usr/bin/krb5-config
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/opensuse155/locale.sh b/bootstrap/generated-dists/opensuse155/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/opensuse155/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/opensuse155/packages.yml b/bootstrap/generated-dists/opensuse155/packages.yml
new file mode 100644
index 0000000..519b62c
--- /dev/null
+++ b/bootstrap/generated-dists/opensuse155/packages.yml
@@ -0,0 +1,101 @@
+---
+packages:
+ - ShellCheck
+ - acl
+ - attr
+ - autoconf
+ - avahi-devel
+ - bind-utils
+ - binutils
+ - bison
+ - ccache
+ - chrpath
+ - codespell
+ - crypto-policies-scripts
+ - cups-devel
+ - curl
+ - dbus-1-devel
+ - docbook-dtds
+ - docbook-xsl-stylesheets
+ - flex
+ - gawk
+ - gcc
+ - gdb
+ - git
+ - glib2-devel
+ - glibc-locale
+ - glusterfs-devel
+ - gnutls
+ - gnutls-devel
+ - gpgme-devel
+ - gzip
+ - hostname
+ - htop
+ - jq
+ - keyutils-devel
+ - krb5-client
+ - krb5-devel
+ - krb5-server
+ - lcov
+ - libacl-devel
+ - libarchive-devel
+ - libattr-devel
+ - libblkid-devel
+ - libbsd-devel
+ - libcap-devel
+ - libcephfs-devel
+ - libicu-devel
+ - libjansson-devel
+ - libpcap-devel
+ - libtasn1-devel
+ - libtirpc-devel
+ - libunwind-devel
+ - liburing-devel
+ - libuuid-devel
+ - libxslt
+ - lmdb
+ - lmdb-devel
+ - lsb-release
+ - make
+ - mingw64-gcc
+ - ncurses-devel
+ - openldap2-devel
+ - pam-devel
+ - patch
+ - perl
+ - perl-Archive-Tar-Wrapper
+ - perl-ExtUtils-MakeMaker
+ - perl-Parse-Yapp
+ - perl-Test-Base
+ - pkgconfig
+ - popt-devel
+ - procps
+ - psmisc
+ - python3
+ - python3-Markdown
+ - python3-cryptography
+ - python3-devel
+ - python3-dnspython
+ - python3-gpg
+ - python3-policycoreutils
+ - python3-pyasn1
+ - python3-python-dateutil
+ - python3-requests
+ - python3-semanage
+ - python3-setproctitle
+ - readline-devel
+ - rng-tools
+ - rpcgen
+ - rpcsvc-proto-devel
+ - rsync
+ - sed
+ - sudo
+ - systemd-devel
+ - tar
+ - tracker-devel
+ - tree
+ - wget
+ - which
+ - xfsprogs-devel
+ - xz
+ - zlib-devel \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu1804-32bit/Dockerfile b/bootstrap/generated-dists/ubuntu1804-32bit/Dockerfile
new file mode 100644
index 0000000..4feffbd
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu1804-32bit/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM registry-1.docker.io/i386/ubuntu:18.04
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu1804-32bit/bootstrap.sh b/bootstrap/generated-dists/ubuntu1804-32bit/bootstrap.sh
new file mode 100755
index 0000000..da249a8
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu1804-32bit/bootstrap.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+export DEBIAN_FRONTEND=noninteractive
+apt-get -y update
+
+apt-get -y install \
+ acl \
+ apt-utils \
+ attr \
+ autoconf \
+ bind9utils \
+ binutils \
+ bison \
+ build-essential \
+ ccache \
+ chrpath \
+ codespell \
+ curl \
+ debhelper \
+ dnsutils \
+ docbook-xml \
+ docbook-xsl \
+ flex \
+ gcc \
+ gdb \
+ git \
+ glusterfs-common \
+ gnutls-bin \
+ gzip \
+ heimdal-multidev \
+ hostname \
+ htop \
+ jq \
+ krb5-config \
+ krb5-kdc \
+ krb5-user \
+ language-pack-en \
+ lcov \
+ libacl1-dev \
+ libarchive-dev \
+ libattr1-dev \
+ libavahi-common-dev \
+ libblkid-dev \
+ libbsd-dev \
+ libcap-dev \
+ libcephfs-dev \
+ libcups2-dev \
+ libdbus-1-dev \
+ libglib2.0-dev \
+ libgnutls28-dev \
+ libgpgme11-dev \
+ libicu-dev \
+ libjansson-dev \
+ libjs-jquery \
+ libkeyutils-dev \
+ libkrb5-dev \
+ libldap2-dev \
+ liblmdb-dev \
+ libncurses5-dev \
+ libpam0g-dev \
+ libparse-yapp-perl \
+ libpcap-dev \
+ libpopt-dev \
+ libreadline-dev \
+ libsystemd-dev \
+ libtasn1-bin \
+ libtasn1-dev \
+ libtracker-sparql-2.0-dev \
+ libunwind-dev \
+ lmdb-utils \
+ locales \
+ lsb-release \
+ make \
+ mawk \
+ mingw-w64 \
+ patch \
+ perl \
+ perl-modules \
+ pkg-config \
+ procps \
+ psmisc \
+ python3 \
+ python3-cryptography \
+ python3-dbg \
+ python3-dev \
+ python3-dnspython \
+ python3-gpg \
+ python3-iso8601 \
+ python3-markdown \
+ python3-pexpect \
+ python3-pyasn1 \
+ python3-requests \
+ python3-setproctitle \
+ rng-tools \
+ rsync \
+ sed \
+ shellcheck \
+ sudo \
+ tar \
+ tree \
+ uuid-dev \
+ wget \
+ xfslibs-dev \
+ xsltproc \
+ xz-utils \
+ zlib1g-dev
+
+apt-get -y autoremove
+apt-get -y autoclean
+apt-get -y clean \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu1804-32bit/locale.sh b/bootstrap/generated-dists/ubuntu1804-32bit/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu1804-32bit/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu1804-32bit/packages.yml b/bootstrap/generated-dists/ubuntu1804-32bit/packages.yml
new file mode 100644
index 0000000..94957fc
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu1804-32bit/packages.yml
@@ -0,0 +1,102 @@
+---
+packages:
+ - acl
+ - apt-utils
+ - attr
+ - autoconf
+ - bind9utils
+ - binutils
+ - bison
+ - build-essential
+ - ccache
+ - chrpath
+ - codespell
+ - curl
+ - debhelper
+ - dnsutils
+ - docbook-xml
+ - docbook-xsl
+ - flex
+ - gcc
+ - gdb
+ - git
+ - glusterfs-common
+ - gnutls-bin
+ - gzip
+ - heimdal-multidev
+ - hostname
+ - htop
+ - jq
+ - krb5-config
+ - krb5-kdc
+ - krb5-user
+ - language-pack-en
+ - lcov
+ - libacl1-dev
+ - libarchive-dev
+ - libattr1-dev
+ - libavahi-common-dev
+ - libblkid-dev
+ - libbsd-dev
+ - libcap-dev
+ - libcephfs-dev
+ - libcups2-dev
+ - libdbus-1-dev
+ - libglib2.0-dev
+ - libgnutls28-dev
+ - libgpgme11-dev
+ - libicu-dev
+ - libjansson-dev
+ - libjs-jquery
+ - libkeyutils-dev
+ - libkrb5-dev
+ - libldap2-dev
+ - liblmdb-dev
+ - libncurses5-dev
+ - libpam0g-dev
+ - libparse-yapp-perl
+ - libpcap-dev
+ - libpopt-dev
+ - libreadline-dev
+ - libsystemd-dev
+ - libtasn1-bin
+ - libtasn1-dev
+ - libtracker-sparql-2.0-dev
+ - libunwind-dev
+ - lmdb-utils
+ - locales
+ - lsb-release
+ - make
+ - mawk
+ - mingw-w64
+ - patch
+ - perl
+ - perl-modules
+ - pkg-config
+ - procps
+ - psmisc
+ - python3
+ - python3-cryptography
+ - python3-dbg
+ - python3-dev
+ - python3-dnspython
+ - python3-gpg
+ - python3-iso8601
+ - python3-markdown
+ - python3-pexpect
+ - python3-pyasn1
+ - python3-requests
+ - python3-setproctitle
+ - rng-tools
+ - rsync
+ - sed
+ - shellcheck
+ - sudo
+ - tar
+ - tree
+ - uuid-dev
+ - wget
+ - xfslibs-dev
+ - xsltproc
+ - xz-utils
+ - zlib1g-dev \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu1804/Dockerfile b/bootstrap/generated-dists/ubuntu1804/Dockerfile
new file mode 100644
index 0000000..f389e0b
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu1804/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM ubuntu:18.04
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu1804/bootstrap.sh b/bootstrap/generated-dists/ubuntu1804/bootstrap.sh
new file mode 100755
index 0000000..da249a8
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu1804/bootstrap.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+export DEBIAN_FRONTEND=noninteractive
+apt-get -y update
+
+apt-get -y install \
+ acl \
+ apt-utils \
+ attr \
+ autoconf \
+ bind9utils \
+ binutils \
+ bison \
+ build-essential \
+ ccache \
+ chrpath \
+ codespell \
+ curl \
+ debhelper \
+ dnsutils \
+ docbook-xml \
+ docbook-xsl \
+ flex \
+ gcc \
+ gdb \
+ git \
+ glusterfs-common \
+ gnutls-bin \
+ gzip \
+ heimdal-multidev \
+ hostname \
+ htop \
+ jq \
+ krb5-config \
+ krb5-kdc \
+ krb5-user \
+ language-pack-en \
+ lcov \
+ libacl1-dev \
+ libarchive-dev \
+ libattr1-dev \
+ libavahi-common-dev \
+ libblkid-dev \
+ libbsd-dev \
+ libcap-dev \
+ libcephfs-dev \
+ libcups2-dev \
+ libdbus-1-dev \
+ libglib2.0-dev \
+ libgnutls28-dev \
+ libgpgme11-dev \
+ libicu-dev \
+ libjansson-dev \
+ libjs-jquery \
+ libkeyutils-dev \
+ libkrb5-dev \
+ libldap2-dev \
+ liblmdb-dev \
+ libncurses5-dev \
+ libpam0g-dev \
+ libparse-yapp-perl \
+ libpcap-dev \
+ libpopt-dev \
+ libreadline-dev \
+ libsystemd-dev \
+ libtasn1-bin \
+ libtasn1-dev \
+ libtracker-sparql-2.0-dev \
+ libunwind-dev \
+ lmdb-utils \
+ locales \
+ lsb-release \
+ make \
+ mawk \
+ mingw-w64 \
+ patch \
+ perl \
+ perl-modules \
+ pkg-config \
+ procps \
+ psmisc \
+ python3 \
+ python3-cryptography \
+ python3-dbg \
+ python3-dev \
+ python3-dnspython \
+ python3-gpg \
+ python3-iso8601 \
+ python3-markdown \
+ python3-pexpect \
+ python3-pyasn1 \
+ python3-requests \
+ python3-setproctitle \
+ rng-tools \
+ rsync \
+ sed \
+ shellcheck \
+ sudo \
+ tar \
+ tree \
+ uuid-dev \
+ wget \
+ xfslibs-dev \
+ xsltproc \
+ xz-utils \
+ zlib1g-dev
+
+apt-get -y autoremove
+apt-get -y autoclean
+apt-get -y clean \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu1804/locale.sh b/bootstrap/generated-dists/ubuntu1804/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu1804/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu1804/packages.yml b/bootstrap/generated-dists/ubuntu1804/packages.yml
new file mode 100644
index 0000000..94957fc
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu1804/packages.yml
@@ -0,0 +1,102 @@
+---
+packages:
+ - acl
+ - apt-utils
+ - attr
+ - autoconf
+ - bind9utils
+ - binutils
+ - bison
+ - build-essential
+ - ccache
+ - chrpath
+ - codespell
+ - curl
+ - debhelper
+ - dnsutils
+ - docbook-xml
+ - docbook-xsl
+ - flex
+ - gcc
+ - gdb
+ - git
+ - glusterfs-common
+ - gnutls-bin
+ - gzip
+ - heimdal-multidev
+ - hostname
+ - htop
+ - jq
+ - krb5-config
+ - krb5-kdc
+ - krb5-user
+ - language-pack-en
+ - lcov
+ - libacl1-dev
+ - libarchive-dev
+ - libattr1-dev
+ - libavahi-common-dev
+ - libblkid-dev
+ - libbsd-dev
+ - libcap-dev
+ - libcephfs-dev
+ - libcups2-dev
+ - libdbus-1-dev
+ - libglib2.0-dev
+ - libgnutls28-dev
+ - libgpgme11-dev
+ - libicu-dev
+ - libjansson-dev
+ - libjs-jquery
+ - libkeyutils-dev
+ - libkrb5-dev
+ - libldap2-dev
+ - liblmdb-dev
+ - libncurses5-dev
+ - libpam0g-dev
+ - libparse-yapp-perl
+ - libpcap-dev
+ - libpopt-dev
+ - libreadline-dev
+ - libsystemd-dev
+ - libtasn1-bin
+ - libtasn1-dev
+ - libtracker-sparql-2.0-dev
+ - libunwind-dev
+ - lmdb-utils
+ - locales
+ - lsb-release
+ - make
+ - mawk
+ - mingw-w64
+ - patch
+ - perl
+ - perl-modules
+ - pkg-config
+ - procps
+ - psmisc
+ - python3
+ - python3-cryptography
+ - python3-dbg
+ - python3-dev
+ - python3-dnspython
+ - python3-gpg
+ - python3-iso8601
+ - python3-markdown
+ - python3-pexpect
+ - python3-pyasn1
+ - python3-requests
+ - python3-setproctitle
+ - rng-tools
+ - rsync
+ - sed
+ - shellcheck
+ - sudo
+ - tar
+ - tree
+ - uuid-dev
+ - wget
+ - xfslibs-dev
+ - xsltproc
+ - xz-utils
+ - zlib1g-dev \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu2004/Dockerfile b/bootstrap/generated-dists/ubuntu2004/Dockerfile
new file mode 100644
index 0000000..b77adb7
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu2004/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM ubuntu:20.04
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu2004/bootstrap.sh b/bootstrap/generated-dists/ubuntu2004/bootstrap.sh
new file mode 100755
index 0000000..da249a8
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu2004/bootstrap.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+export DEBIAN_FRONTEND=noninteractive
+apt-get -y update
+
+apt-get -y install \
+ acl \
+ apt-utils \
+ attr \
+ autoconf \
+ bind9utils \
+ binutils \
+ bison \
+ build-essential \
+ ccache \
+ chrpath \
+ codespell \
+ curl \
+ debhelper \
+ dnsutils \
+ docbook-xml \
+ docbook-xsl \
+ flex \
+ gcc \
+ gdb \
+ git \
+ glusterfs-common \
+ gnutls-bin \
+ gzip \
+ heimdal-multidev \
+ hostname \
+ htop \
+ jq \
+ krb5-config \
+ krb5-kdc \
+ krb5-user \
+ language-pack-en \
+ lcov \
+ libacl1-dev \
+ libarchive-dev \
+ libattr1-dev \
+ libavahi-common-dev \
+ libblkid-dev \
+ libbsd-dev \
+ libcap-dev \
+ libcephfs-dev \
+ libcups2-dev \
+ libdbus-1-dev \
+ libglib2.0-dev \
+ libgnutls28-dev \
+ libgpgme11-dev \
+ libicu-dev \
+ libjansson-dev \
+ libjs-jquery \
+ libkeyutils-dev \
+ libkrb5-dev \
+ libldap2-dev \
+ liblmdb-dev \
+ libncurses5-dev \
+ libpam0g-dev \
+ libparse-yapp-perl \
+ libpcap-dev \
+ libpopt-dev \
+ libreadline-dev \
+ libsystemd-dev \
+ libtasn1-bin \
+ libtasn1-dev \
+ libtracker-sparql-2.0-dev \
+ libunwind-dev \
+ lmdb-utils \
+ locales \
+ lsb-release \
+ make \
+ mawk \
+ mingw-w64 \
+ patch \
+ perl \
+ perl-modules \
+ pkg-config \
+ procps \
+ psmisc \
+ python3 \
+ python3-cryptography \
+ python3-dbg \
+ python3-dev \
+ python3-dnspython \
+ python3-gpg \
+ python3-iso8601 \
+ python3-markdown \
+ python3-pexpect \
+ python3-pyasn1 \
+ python3-requests \
+ python3-setproctitle \
+ rng-tools \
+ rsync \
+ sed \
+ shellcheck \
+ sudo \
+ tar \
+ tree \
+ uuid-dev \
+ wget \
+ xfslibs-dev \
+ xsltproc \
+ xz-utils \
+ zlib1g-dev
+
+apt-get -y autoremove
+apt-get -y autoclean
+apt-get -y clean \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu2004/locale.sh b/bootstrap/generated-dists/ubuntu2004/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu2004/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu2004/packages.yml b/bootstrap/generated-dists/ubuntu2004/packages.yml
new file mode 100644
index 0000000..94957fc
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu2004/packages.yml
@@ -0,0 +1,102 @@
+---
+packages:
+ - acl
+ - apt-utils
+ - attr
+ - autoconf
+ - bind9utils
+ - binutils
+ - bison
+ - build-essential
+ - ccache
+ - chrpath
+ - codespell
+ - curl
+ - debhelper
+ - dnsutils
+ - docbook-xml
+ - docbook-xsl
+ - flex
+ - gcc
+ - gdb
+ - git
+ - glusterfs-common
+ - gnutls-bin
+ - gzip
+ - heimdal-multidev
+ - hostname
+ - htop
+ - jq
+ - krb5-config
+ - krb5-kdc
+ - krb5-user
+ - language-pack-en
+ - lcov
+ - libacl1-dev
+ - libarchive-dev
+ - libattr1-dev
+ - libavahi-common-dev
+ - libblkid-dev
+ - libbsd-dev
+ - libcap-dev
+ - libcephfs-dev
+ - libcups2-dev
+ - libdbus-1-dev
+ - libglib2.0-dev
+ - libgnutls28-dev
+ - libgpgme11-dev
+ - libicu-dev
+ - libjansson-dev
+ - libjs-jquery
+ - libkeyutils-dev
+ - libkrb5-dev
+ - libldap2-dev
+ - liblmdb-dev
+ - libncurses5-dev
+ - libpam0g-dev
+ - libparse-yapp-perl
+ - libpcap-dev
+ - libpopt-dev
+ - libreadline-dev
+ - libsystemd-dev
+ - libtasn1-bin
+ - libtasn1-dev
+ - libtracker-sparql-2.0-dev
+ - libunwind-dev
+ - lmdb-utils
+ - locales
+ - lsb-release
+ - make
+ - mawk
+ - mingw-w64
+ - patch
+ - perl
+ - perl-modules
+ - pkg-config
+ - procps
+ - psmisc
+ - python3
+ - python3-cryptography
+ - python3-dbg
+ - python3-dev
+ - python3-dnspython
+ - python3-gpg
+ - python3-iso8601
+ - python3-markdown
+ - python3-pexpect
+ - python3-pyasn1
+ - python3-requests
+ - python3-setproctitle
+ - rng-tools
+ - rsync
+ - sed
+ - shellcheck
+ - sudo
+ - tar
+ - tree
+ - uuid-dev
+ - wget
+ - xfslibs-dev
+ - xsltproc
+ - xz-utils
+ - zlib1g-dev \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu2204/Dockerfile b/bootstrap/generated-dists/ubuntu2204/Dockerfile
new file mode 100644
index 0000000..0b73aac
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu2204/Dockerfile
@@ -0,0 +1,29 @@
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+FROM ubuntu:22.04
+
+# pass in with --build-arg while build
+ARG SHA1SUM
+RUN [ -n $SHA1SUM ] && echo $SHA1SUM > /sha1sum.txt
+
+ADD *.sh /tmp/
+# need root permission, do it before USER samba
+RUN /tmp/bootstrap.sh && /tmp/locale.sh
+
+# if ld.gold exists, force link it to ld
+RUN set -x; ! LD_GOLD=$(which ld.gold) || { LD=$(which ld) && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"; }
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; ! LD_MOLD=$(which ld.mold) || { LD=$(which ld) && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"; }
+
+# make test can not work with root, so we have to create a new user
+RUN useradd -m -U -s /bin/bash samba && \
+ mkdir -p /etc/sudoers.d && \
+ echo "samba ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/samba
+
+USER samba
+WORKDIR /home/samba
+# samba tests rely on this
+ENV USER=samba LC_ALL=en_US.utf8 LANG=en_US.utf8 LANGUAGE=en_US \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu2204/bootstrap.sh b/bootstrap/generated-dists/ubuntu2204/bootstrap.sh
new file mode 100755
index 0000000..1a3c3b1
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu2204/bootstrap.sh
@@ -0,0 +1,118 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+export DEBIAN_FRONTEND=noninteractive
+apt-get -y update
+
+apt-get -y install \
+ acl \
+ apt-utils \
+ attr \
+ autoconf \
+ bind9utils \
+ binutils \
+ bison \
+ build-essential \
+ ccache \
+ chrpath \
+ codespell \
+ curl \
+ debhelper \
+ dnsutils \
+ docbook-xml \
+ docbook-xsl \
+ flex \
+ gcc \
+ gdb \
+ git \
+ glusterfs-common \
+ gnutls-bin \
+ gzip \
+ heimdal-multidev \
+ hostname \
+ htop \
+ jq \
+ krb5-config \
+ krb5-kdc \
+ krb5-user \
+ language-pack-en \
+ lcov \
+ libacl1-dev \
+ libarchive-dev \
+ libattr1-dev \
+ libavahi-common-dev \
+ libblkid-dev \
+ libbsd-dev \
+ libcap-dev \
+ libcephfs-dev \
+ libcups2-dev \
+ libdbus-1-dev \
+ libglib2.0-dev \
+ libgnutls28-dev \
+ libgpgme11-dev \
+ libicu-dev \
+ libjansson-dev \
+ libjs-jquery \
+ libkeyutils-dev \
+ libkrb5-dev \
+ libldap2-dev \
+ liblmdb-dev \
+ libncurses5-dev \
+ libpam0g-dev \
+ libparse-yapp-perl \
+ libpcap-dev \
+ libpopt-dev \
+ libreadline-dev \
+ libsystemd-dev \
+ libtasn1-bin \
+ libtasn1-dev \
+ libunwind-dev \
+ liburing-dev \
+ lmdb-utils \
+ locales \
+ lsb-release \
+ make \
+ mawk \
+ mingw-w64 \
+ patch \
+ perl \
+ perl-modules \
+ pkg-config \
+ procps \
+ psmisc \
+ python3 \
+ python3-cryptography \
+ python3-dbg \
+ python3-dev \
+ python3-dnspython \
+ python3-gpg \
+ python3-iso8601 \
+ python3-markdown \
+ python3-pexpect \
+ python3-pyasn1 \
+ python3-requests \
+ python3-setproctitle \
+ rng-tools \
+ rsync \
+ sed \
+ shellcheck \
+ shfmt \
+ sudo \
+ tar \
+ tree \
+ uuid-dev \
+ wget \
+ xfslibs-dev \
+ xsltproc \
+ xz-utils \
+ zlib1g-dev
+
+apt-get -y autoremove
+apt-get -y autoclean
+apt-get -y clean \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu2204/locale.sh b/bootstrap/generated-dists/ubuntu2204/locale.sh
new file mode 100755
index 0000000..cc64e18
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu2204/locale.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+#
+# This file is generated by 'bootstrap/template.py --render'
+# See also bootstrap/config.py
+#
+
+set -xueo pipefail
+
+# refer to /usr/share/i18n/locales
+INPUTFILE=en_US
+# refer to /usr/share/i18n/charmaps
+CHARMAP=UTF-8
+# locale to generate in /usr/lib/locale
+# glibc/localedef will normalize UTF-8 to utf8, follow the naming style
+LOCALE=$INPUTFILE.utf8
+
+# if locale is already correct, exit
+( locale | grep LC_ALL | grep -i $LOCALE ) && exit 0
+
+# if locale not available, generate locale into /usr/lib/locale
+if ! ( locale --all-locales | grep -i $LOCALE )
+then
+ # no-archive means create its own dir
+ localedef --inputfile $INPUTFILE --charmap $CHARMAP --no-archive $LOCALE
+fi
+
+# update locale conf and global env file
+# set both LC_ALL and LANG for safe
+
+# update conf for Debian family
+FILE=/etc/default/locale
+if [ -f $FILE ]
+then
+ echo LC_ALL="$LOCALE" > $FILE
+ echo LANG="$LOCALE" >> $FILE
+fi
+
+# update conf for RedHat family
+FILE=/etc/locale.conf
+if [ -f $FILE ]
+then
+ # LC_ALL is not valid in this file, set LANG only
+ echo LANG="$LOCALE" > $FILE
+fi
+
+# update global env file
+FILE=/etc/environment
+if [ -f $FILE ]
+then
+ # append LC_ALL if not exist
+ grep LC_ALL $FILE || echo LC_ALL="$LOCALE" >> $FILE
+ # append LANG if not exist
+ grep LANG $FILE || echo LANG="$LOCALE" >> $FILE
+fi \ No newline at end of file
diff --git a/bootstrap/generated-dists/ubuntu2204/packages.yml b/bootstrap/generated-dists/ubuntu2204/packages.yml
new file mode 100644
index 0000000..c3b741f
--- /dev/null
+++ b/bootstrap/generated-dists/ubuntu2204/packages.yml
@@ -0,0 +1,103 @@
+---
+packages:
+ - acl
+ - apt-utils
+ - attr
+ - autoconf
+ - bind9utils
+ - binutils
+ - bison
+ - build-essential
+ - ccache
+ - chrpath
+ - codespell
+ - curl
+ - debhelper
+ - dnsutils
+ - docbook-xml
+ - docbook-xsl
+ - flex
+ - gcc
+ - gdb
+ - git
+ - glusterfs-common
+ - gnutls-bin
+ - gzip
+ - heimdal-multidev
+ - hostname
+ - htop
+ - jq
+ - krb5-config
+ - krb5-kdc
+ - krb5-user
+ - language-pack-en
+ - lcov
+ - libacl1-dev
+ - libarchive-dev
+ - libattr1-dev
+ - libavahi-common-dev
+ - libblkid-dev
+ - libbsd-dev
+ - libcap-dev
+ - libcephfs-dev
+ - libcups2-dev
+ - libdbus-1-dev
+ - libglib2.0-dev
+ - libgnutls28-dev
+ - libgpgme11-dev
+ - libicu-dev
+ - libjansson-dev
+ - libjs-jquery
+ - libkeyutils-dev
+ - libkrb5-dev
+ - libldap2-dev
+ - liblmdb-dev
+ - libncurses5-dev
+ - libpam0g-dev
+ - libparse-yapp-perl
+ - libpcap-dev
+ - libpopt-dev
+ - libreadline-dev
+ - libsystemd-dev
+ - libtasn1-bin
+ - libtasn1-dev
+ - libunwind-dev
+ - liburing-dev
+ - lmdb-utils
+ - locales
+ - lsb-release
+ - make
+ - mawk
+ - mingw-w64
+ - patch
+ - perl
+ - perl-modules
+ - pkg-config
+ - procps
+ - psmisc
+ - python3
+ - python3-cryptography
+ - python3-dbg
+ - python3-dev
+ - python3-dnspython
+ - python3-gpg
+ - python3-iso8601
+ - python3-markdown
+ - python3-pexpect
+ - python3-pyasn1
+ - python3-requests
+ - python3-setproctitle
+ - rng-tools
+ - rsync
+ - sed
+ - shellcheck
+ - shfmt
+ - sudo
+ - tar
+ - tree
+ - uuid-dev
+ - wget
+ - xfslibs-dev
+ - xsltproc
+ - xz-utils
+ - zlib1g-dev \ No newline at end of file