ARG DOCKER_BASE_SUFFIX
ARG DOCKER_REPOSITORY
ARG PACKAGE_TYPE

FROM kong/kong-build-tools:$PACKAGE_TYPE

ARG EDITION="community"
ENV EDITION $EDITION

ARG LIBYAML_VERSION=0.2.5
ENV LIBYAML_VERSION $LIBYAML_VERSION
RUN curl -fsSLo /tmp/yaml-${LIBYAML_VERSION}.tar.gz https://pyyaml.org/download/libyaml/yaml-${LIBYAML_VERSION}.tar.gz \
    && cd /tmp \
    && tar xzf yaml-${LIBYAML_VERSION}.tar.gz \
    && ln -s /tmp/yaml-${LIBYAML_VERSION} /tmp/yaml \
    && cd /tmp/yaml \
    && ./configure \
      --libdir=/tmp/build/usr/local/kong/lib \
      --includedir=/tmp/yaml-${LIBYAML_VERSION} \
    && make install \
    && ./configure --libdir=/usr/local/kong/lib \
    && make install \
    && rm -rf /tmp/yaml-${LIBYAML_VERSION}

ARG KONG_GMP_VERSION=6.2.1
ENV KONG_GMP_VERSION $KONG_GMP_VERSION
RUN if [ "$EDITION" = "enterprise" ] ; then curl -fsSLo /tmp/gmp-${KONG_GMP_VERSION}.tar.bz2 https://ftp.gnu.org/gnu/gmp/gmp-${KONG_GMP_VERSION}.tar.bz2 \
    && cd /tmp \
    && tar xjf gmp-${KONG_GMP_VERSION}.tar.bz2 \
    && ln -s /tmp/gmp-${KONG_GMP_VERSION} /tmp/gmp \
    && cd /tmp/gmp \
    && ./configure --build=x86_64-linux-gnu --enable-static=no --libdir=/tmp/build/usr/local/kong/lib \
    && make -j${RESTY_J}; fi

ARG KONG_NETTLE_VERSION="3.7.3"
ENV KONG_NETTLE_VERSION $KONG_NETTLE_VERSION
RUN if [ "$EDITION" = "enterprise" ] ; then curl -fsSLo /tmp/nettle-${KONG_NETTLE_VERSION}.tar.gz https://ftp.gnu.org/gnu/nettle/nettle-${KONG_NETTLE_VERSION}.tar.gz \
    && cd /tmp \
    && tar xzf nettle-${KONG_NETTLE_VERSION}.tar.gz \
    && ln -s /tmp/nettle-${KONG_NETTLE_VERSION} /tmp/nettle \
    && cd /tmp/nettle \
    && LDFLAGS="-Wl,-rpath,/usr/local/kong/lib" \
    ./configure --disable-static \
    --libdir=/tmp/build/usr/local/kong/lib \
    --with-include-path="/tmp/gmp-${KONG_GMP_VERSION}/" \
    --with-lib-path="/tmp/gmp-${KONG_GMP_VERSION}/.libs/" \
    && make -j${RESTY_J}; fi

ARG KONG_DEP_PASSWDQC_VERSION="1.3.1"
ENV KONG_DEP_PASSWDQC_VERSION $KONG_DEP_PASSWDQC_VERSION
RUN if [ "$EDITION" = "enterprise" ] ; then curl -fsSLo /tmp/passwdqc-${KONG_DEP_PASSWDQC_VERSION}.tar.gz https://www.openwall.com/passwdqc/passwdqc-${KONG_DEP_PASSWDQC_VERSION}.tar.gz \
    && cd /tmp \
    && tar xzf passwdqc-${KONG_DEP_PASSWDQC_VERSION}.tar.gz \
    && ln -s /tmp/passwdqc-${KONG_DEP_PASSWDQC_VERSION} /tmp/passwdqc \
    && cd /tmp/passwdqc \
    && make libpasswdqc.so -j$BUILD_JOBS \
    && make \
    DESTDIR=/tmp/build/ \
    SHARED_LIBDIR=/usr/local/kong/lib \
    SHARED_LIBDIR_REL='.' \
    DEVEL_LIBDIR=/usr/local/kong/lib \
    INCLUDEDIR=/usr/local/kong/include/passwdqc \
    CONFDIR=/usr/local/etc/passwdqc \
    MANDIR=/usr/local/share/man \
    install_lib; fi

ARG KONG_NGINX_MODULE=master

ARG RESTY_VERSION=1.19.9.1
LABEL resty_version="${RESTY_VERSION}"

ARG RESTY_OPENSSL_VERSION=1.1.1k
LABEL resty_openssl_version="${RESTY_OPENSSL_VERSION}"

ARG RESTY_PCRE_VERSION=8.44
LABEL resty_pcre_version="${RESTY_PCRE_VERSION}"

ARG RESTY_LUAROCKS_VERSION=3.7.0
LABEL resty_luarocks_version="${RESTY_LUAROCKS_VERSION}"

ARG RESTY_LMDB=0
LABEL resty_lmdb="${RESTY_LMDB}"

COPY openresty-build-tools /tmp/openresty-build-tools
COPY openresty-patches /tmp/openresty-patches
COPY build-openresty.sh /tmp/build-openresty.sh

ARG OPENRESTY_PATCHES=1
ENV OPENRESTY_PATCHES="${OPENRESTY_PATCHES}"

COPY kong-licensing /enterprise/kong-licensing
COPY lua-kong-nginx-module /enterprise/lua-kong-nginx-module
COPY lua-resty-lmdb /enterprise/lua-resty-lmdb

ARG DEBUG=1
RUN DEBUG="${DEBUG}" /tmp/build-openresty.sh \
    && rm -rf /work

WORKDIR /kong
COPY kong /kong
COPY build-kong.sh /build-kong.sh

RUN /build-kong.sh && rm -rf /kong

RUN sed -i 's/\/tmp\/build//' `grep -l -I -r '\/tmp\/build' /tmp/build/` || true
