diff --git a/Dockerfile b/Dockerfile index 01063c56e23dda2135eb8e4eec24e2110f05986c..b0a9a5f7c0d1f0680b33c1b84aed2f9f167c5422 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,5 @@ -FROM debian:buster-slim AS stage1 +FROM debian:buster-slim AS stage -ARG OPENLDAP_VERSION=openldap-2.4.49 -ARG CYRUS_SASL_VERSION=cyrus-sasl-2.1.27 -ENV OPENLDAP_TARBALL ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${OPENLDAP_VERSION}.tgz -ENV CYRUS_SASL_TARBALL https://github.com/cyrusimap/cyrus-sasl/releases/download/${CYRUS_SASL_VERSION}/${CYRUS_SASL_VERSION}.tar.gz - -ENV HOME / -ENV DEBIAN_FRONTEND noninteractive -RUN apt-get update && \ - apt-get install -y -qq \ - ca-certificates \ - coreutils \ - file \ - gcc \ - groff-base \ - libsasl2-modules-gssapi-mit \ - libc6-dev \ - libssl-dev \ - libsasl2-dev \ - libperl-dev \ - libltdl-dev \ - libltdl7 \ - make \ - wget ADD build.sh / RUN /build.sh @@ -34,19 +11,17 @@ RUN apt-get update && \ apt-get install -y -qq \ ca-certificates \ coreutils \ - libldap-2.4-2 \ - libsasl2-modules-gssapi-mit \ + libsasl2-2 \ libltdl7 \ libtcmalloc-minimal4 \ openssl \ - sasl2-bin \ lmdb-utils \ krb5-user \ kstart \ procps \ wget -COPY --from=stage1 /release / +COPY --from=stage /artifacts / RUN mkdir -p /etc/ldap/sasl2 \ && echo "mech_list: GSSAPI EXTERNAL" >> /etc/ldap/sasl2/slapd.conf \ && mkdir -p /var/lib/ldap/accesslog \ diff --git a/build.sh b/build.sh index e77113dec7494d1ada886a506bce6f3a563303a2..c1657032644c42abf30f9bc4ec0b29158f9fd380 100755 --- a/build.sh +++ b/build.sh @@ -1,74 +1,103 @@ -#!/bin/bash +#!/bin/bash -e +# Maintainer: sfeng@stanford.edu -# Download -wget ${CYRUS_SASL_TARBALL} 1> NUL 2> NUL -tar xzvf ${CYRUS_SASL_VERSION}.tar.gz -wget ${OPENLDAP_TARBALL} 1> NUL 2> NUL -tar xzvf ${OPENLDAP_VERSION}.tgz +OPENLDAP_VERSION=openldap-2.4.49 +CYRUS_SASL_VERSION=cyrus-sasl-2.1.27 +OPENLDAP_TARBALL=ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${OPENLDAP_VERSION}.tgz +CYRUS_SASL_TARBALL=https://github.com/cyrusimap/cyrus-sasl/releases/download/${CYRUS_SASL_VERSION}/${CYRUS_SASL_VERSION}.tar.gz +DEBIAN_FRONTEND=noninteractive +WORKDIR=/ +ARTIFACTS=/artifacts + +# Download software required to build OpenLAP and Cyrus SASL +function apt_get_install { + apt-get update && \ + apt-get install -y -qq \ + ca-certificates \ + coreutils \ + file \ + gcc \ + groff-base \ + libsasl2-modules-gssapi-mit \ + libc6-dev \ + libssl-dev \ + libsasl2-dev \ + libperl-dev \ + libltdl-dev \ + libltdl7 \ + openssl \ + make \ + wget +} + +# Download packages +function download_packages { + wget ${CYRUS_SASL_TARBALL} 1> NUL 2> NUL + tar xzvf ${CYRUS_SASL_VERSION}.tar.gz + wget ${OPENLDAP_TARBALL} 1> NUL 2> NUL + tar xzvf ${OPENLDAP_VERSION}.tgz +} # Insatall cyrus_sasl -cd /${CYRUS_SASL_VERSION} -sed -i'' '/maj_stat\s=\sgss_acquire_cred/{n;s/text->server_name/GSS_C_NO_NAME/}' plugins/gssapi.c -./configure --prefix=/release/usr --sysconfdir='${prefix}/etc' --libexecdir='${prefix}/lib' \ - CFLAGS="-Wno-cast-function-type -Wno-implicit-function-declaration" && make && make +function install_cyrus_sasl { + cd ${WORKDIR}/${CYRUS_SASL_VERSION} + sed -i'' '/maj_stat\s=\sgss_acquire_cred/{n;s/text->server_name/GSS_C_NO_NAME/}' plugins/gssapi.c + ./configure --prefix=${ARTIFACTS}/usr --sysconfdir='${prefix}/etc' --libexecdir='${prefix}/lib' \ + --with-gss_impl=mit \ + CFLAGS="-Wno-cast-function-type -Wno-implicit-function-declaration" && make && make install + ln -s ${ARTIFACTS}/usr/lib/sasl2 /usr/lib/sasl2 +} -mkdir /release -# Install openldap -cd /${OPENLDAP_VERSION} -./configure \ - --prefix=/release/usr \ - --libexecdir='${prefix}/lib' \ - --sysconfdir='${prefix}/etc' \ - --localstatedir=/var \ - --mandir='${prefix}/share/man' \ - --disable-hdb \ - --disable-bdb \ - --enable-debug \ - --enable-dynamic \ - --enable-syslog \ - --enable-proctitle \ - --enable-local \ - --enable-slapd \ - --enable-dynacl \ - --enable-aci \ - --enable-cleartext \ - --enable-crypt \ - --disable-lmpasswd \ - --enable-spasswd \ - --enable-modules \ - --enable-rewrite \ - --enable-rlookups \ - --enable-slapi \ - --disable-slp \ - --enable-backends=mod \ - --disable-ndb \ - --disable-sql \ - --enable-overlays=mod \ - --with-subdir=ldap \ - --with-cyrus-sasl \ - --with-threads \ - --with-tls=openssl \ - --with-odbc=unixodbc \ - CFLAGS="-Wno-cast-function-type \ - -Wno-implicit-function-declaration \ - -Wno-incompatible-pointer-types \ - -Wno-pointer-compare" -make depend && make -make install +# Install OpenLDAP +function install_openldap { + cd ${WORKDIR}/${OPENLDAP_VERSION} + ./configure \ + --prefix=${ARTIFACTS}/usr \ + --libexecdir='${prefix}/lib' \ + --sysconfdir='${prefix}/etc' \ + --localstatedir=/var \ + --mandir='${prefix}/share/man' \ + --disable-hdb \ + --disable-bdb \ + --disable-slp \ + --disable-ndb \ + --disable-sql \ + --disable-lmpasswd \ + --enable-debug \ + --enable-dynamic \ + --enable-syslog \ + --enable-proctitle \ + --enable-local \ + --enable-slapd \ + --enable-dynacl \ + --enable-aci \ + --enable-cleartext \ + --enable-crypt \ + --enable-spasswd \ + --enable-modules \ + --enable-rewrite \ + --enable-rlookups \ + --enable-slapi \ + --enable-backends=mod \ + --enable-overlays=mod \ + --with-subdir=ldap \ + --with-cyrus-sasl \ + --with-threads \ + --with-tls=openssl \ + LDFLAGS="-L/usr/local/lib -Wl,-rpath,/artifacts/usr/lib/sasl2" \ + CFLAGS="-Wno-cast-function-type \ + -Wno-implicit-function-declaration \ + -Wno-incompatible-pointer-types \ + -Wno-pointer-compare" + make depend && make + make install +} -# # Copy code to /artifacts, without developent tools -# mkdir -p /release/usr/lib/x86_64-linux-gnu \ -# /release/usr/sbin \ -# /release/usr/bin \ -# /release/etc/default \ -# /release/etc/ldap \ -# /release/usr/lib/ldap -# cp -av /usr/lib/x86_64-linux-gnu/libsasl2* /release/usr/lib/x86_64-linux-gnu/ -# cp -av /usr/sbin/sasl* /release/usr/sbin/ -# cp -av /etc/ldap /release/etc/ldap/ -# cp -av /etc/default/slapd /release/etc/default/ -# cp -av /usr/lib/ldap /release/usr/lib/ldap/ -# cp -av /usr/lib/*slap* /release/usr/lib/ -# cp -av /usr/sbin/slap* /release/usr/sbin/ -# cp -av /usr/bin/ldap* /release/usr/bin +## MAIN +mkdir -p ${ARTIFACTS}/usr ${ARTIFACTS}/lib ${ARTIFACTS}/etc ${ARTIFACTS}/usr/share/man/man1 +cd ${WORKDIR} +apt_get_install +download_packages +install_cyrus_sasl +install_openldap