diff --git a/Dockerfile b/Dockerfile index 8dda9a0..d819da6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ ENV FPMGROUP nginx ENV VERSION 10.0.1 -RUN apk add --no-cache openssl tar nginx postgresql-client +RUN apk add --no-cache openssl tar nginx postgresql-client libtool g++ make RUN apk add --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/main/ --allow-untrusted \ libressl2.4-libcrypto \ @@ -41,6 +41,20 @@ RUN apk add --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/test RUN ln -s /usr/bin/php7 /usr/bin/php +RUN rm /usr/bin/iconv +RUN mkdir /tmp/iconv +RUN wget -qO- https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz | tar xz -C /tmp/iconv --strip 1 + +WORKDIR /tmp/iconv +ADD libiconv-1-fixes.patch /tmp/iconv/libiconv-1-fixes.patch +RUN ./configure --prefix=/usr/local +RUN patch -p1 -u < libiconv-1-fixes.patch +RUN make && make install +RUN libtool --finish /usr/local/lib +RUN rm -r /tmp/iconv + +ENV LD_PRELOAD /usr/local/lib/preloadable_libiconv.so + RUN mkdir /var/lib/nextcloud RUN wget -qO- https://download.nextcloud.com/server/releases/nextcloud-$VERSION.tar.bz2 | tar xj -C /var/lib/nextcloud --strip 1 @@ -51,7 +65,7 @@ RUN chmod +x /var/lib/nextcloud/occ RUN mkdir /run/nginx -RUN apk del tar +RUN apk del tar libtool g++ make ADD /rootfs / diff --git a/libiconv-1-fixes.patch b/libiconv-1-fixes.patch new file mode 100644 index 0000000..cf3fef5 --- /dev/null +++ b/libiconv-1-fixes.patch @@ -0,0 +1,46 @@ +This file is part of MXE. +See index.html for further information. + +Contains ad hoc patches for cross building. + +From 47345f5dcfb91da8afed7c4e6c29faa2056db447 Mon Sep 17 00:00:00 2001 +From: MXE +Date: Fri, 7 Jun 2013 17:44:24 +1000 +Subject: [PATCH] remove gets since c++11 removed it + https://lists.gnu.org/archive/html/bug-gnulib/2012-03/msg00186.html + + +diff --git a/srclib/stdio.in.h b/srclib/stdio.in.h +index 473c84c..dfb59eb 100644 +--- a/srclib/stdio.in.h ++++ b/srclib/stdio.in.h +@@ -679,22 +679,11 @@ _GL_WARN_ON_USE (getline, "getline is unportable - " + # endif + #endif + +-#if @GNULIB_GETS@ +-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ +-# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +-# undef gets +-# define gets rpl_gets +-# endif +-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1))); +-_GL_CXXALIAS_RPL (gets, char *, (char *s)); +-# else +-_GL_CXXALIAS_SYS (gets, char *, (char *s)); +-# undef gets +-# endif +-_GL_CXXALIASWARN (gets); + /* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ ++ so any use of gets warrants an unconditional warning; besides, C11 ++ removed it. */ ++#undef gets ++#if HAVE_RAW_DECL_GETS + _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); + #endif + +-- +1.8.2.3 +