diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..726c3ca --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.*.sw* diff --git a/Dockerfile b/Dockerfile index ae2f3d4..f2c5a8e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,91 +1,65 @@ -FROM ubuntu:14.04 +FROM gliderlabs/alpine -WORKDIR /tmp/workdir +RUN adduser -D audiobot +ENV HOME /home/audiobot -# apts +WORKDIR /home/audiobot -RUN apt-get update && apt-get install -y build-essential git mercurial perl curl cmake g++ autoconf libtool openssl pkg-config zlib1g-dev libssl-dev libreadline-dev libyaml-dev libxml2-dev libxslt-dev software-properties-common libffi-dev m4 aspcud unzip libx11-dev ocaml ocaml-native-compilers camlp4-extra sudo +# apk -# ffmpeg +RUN apk update && apk add patch bash ffmpeg ruby unzip m4 make gcc git musl-dev libsamplerate-dev zlib-dev openssl-dev readline-dev +RUN apk add ocaml --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted -ENV FFMPEG_VERSION 2.7.1 -ENV MPLAYER_VERSION 1.1.1 -ENV YASM_VERSION 1.3.0 -ENV OGG_VERSION 1.3.2 -ENV VORBIS_VERSION 1.3.4 -ENV LAME_VERSION 3.99.5 -ENV FAAC_VERSION 1.28 -ENV XVID_VERSION 1.3.3 -ENV FDKAAC_VERSION 0.1.3 -ENV SRC /usr/local -ENV LD_LIBRARY_PATH ${SRC}/lib -ENV PKG_CONFIG_PATH ${SRC}/lib/pkgconfig +# Boo -COPY ffmpeg.sh /tmp/ffmpeg.sh +USER audiobot -RUN bash /tmp/ffmpeg.sh +RUN curl -OL http://www.fftw.org/fftw-3.3.4.tar.gz +RUN tar xvzf fftw-3.3.4.tar.gz +RUN cd fftw-3.3.4 && ./configure --prefix /usr --enable-shared && make -RUN ffmpeg -buildconf +USER root +RUN cd fftw-3.3.4 && make install # rbenv/rubies -RUN git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv -RUN echo '# rbenv setup' > /etc/profile.d/rbenv.sh -RUN echo 'export RBENV_ROOT=/usr/local/rbenv' >> /etc/profile.d/rbenv.sh -RUN echo 'export PATH="$RBENV_ROOT/bin:$RBENV_ROOT/shims:$PATH"' >> /etc/profile.d/rbenv.sh -RUN echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh -RUN chmod +x /etc/profile.d/rbenv.sh +USER audiobot -RUN mkdir /usr/local/rbenv/plugins -RUN git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build +RUN git clone https://github.com/sstephenson/rbenv.git /home/audiobot/.rbenv -ENV RBENV_ROOT /usr/local/rbenv +USER root +RUN ln -s /home/audiobot/.rbenv/bin/rbenv /usr/local/bin -ENV PATH $RBENV_ROOT/bin:$RBENV_ROOT/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +USER audiobot -ADD ./rubies.txt /root/rubies.txt +RUN mkdir /home/audiobot/.rbenv/plugins +RUN git clone https://github.com/sstephenson/ruby-build.git /home/audiobot/.rbenv/plugins/ruby-build -RUN xargs -L 1 rbenv install < /root/rubies.txt +ENV RBENV_ROOT /home/audiobot/.rbenv -RUN echo 'gem: --no-rdoc --no-ri' >> /.gemrc -RUN bash -l -c 'for v in $(cat /root/rubies.txt); do rbenv global $v; gem install bundler; done' +ADD ./rubies.txt /home/audiobot/rubies.txt -RUN rbenv global 2.2.0 +ENV CONFIGURE_OPTS CFLAGS=-fPIC -# # ocaml +RUN xargs rbenv install < /home/audiobot/rubies.txt -# ADD opam-installext /usr/bin/opam-installext -# ADD opam.list /etc/apt/sources.list.d/opam.list +RUN echo 'gem: --no-rdoc --no-ri' >> /home/audiobot/.gemrc +RUN bash -l -c 'eval "$(rbenv init -)" && for v in $(cat /home/audiobot/rubies.txt); do rbenv local $v && gem install bundler; done' -# RUN curl -OL http://download.opensuse.org/repositories/home:ocaml/xUbuntu_14.04/Release.key +RUN rbenv local 2.2.0 -# RUN apt-key add - < Release.key -# RUN apt-get -y update +# Opam -# RUN git clone -b 1.2 git://github.com/ocaml/opam -# RUN sh -c "cd opam && make cold && make install" +RUN curl -OL https://github.com/ocaml/opam/releases/download/1.2.2/opam-full-1.2.2.tar.gz +RUN tar xvzf opam-full-1.2.2.tar.gz && cd opam-full-1.2.2 && ./configure && make lib-ext all -# RUN adduser --disabled-password --gecos "" opam -# RUN passwd -l opam +USER root +RUN cd opam-full-1.2.2 && make install -# ADD opamsudo /etc/sudoers.d/opam -# RUN chmod 440 /etc/sudoers.d/opam -# RUN chown root:root /etc/sudoers.d/opam -# RUN chown -R opam:opam /home/opam +USER audiobot -# USER opam +ENV OPAMYES 1 -# ENV HOME /home/opam -# ENV OPAMYES 1 +RUN opam init --comp=4.03.0+trunk -a -y -# WORKDIR /home/opam -# USER opam - -# RUN sudo -u opam sh -c "git clone git://github.com/ocaml/opam-repository" -# RUN sudo -u opam sh -c "opam init -a -y /home/opam/opam-repository" -# RUN sudo -u opam sh -c "opam switch -y 4.02.1" -# RUN sudo -u opam sh -c "opam install ocamlfind camlp4" - -# WORKDIR /home/opam/opam-repository - -# ONBUILD RUN sudo -u opam sh -c "cd /home/opam/opam-repository && git pull && opam update -u -y" +RUN opam install atdgen redis cryptokit fftw3 samplerate ounit diff --git a/ffmpeg.sh b/ffmpeg.sh deleted file mode 100644 index e27af60..0000000 --- a/ffmpeg.sh +++ /dev/null @@ -1,152 +0,0 @@ -##!/bin/bash - -set -euo pipefail - -#export MAKEFLAGS="-j$[$(nproc) + 1]" - -# yasm -DIR=$(mktemp -d) && cd ${DIR} && \ - curl -Os http://www.tortall.net/projects/yasm/releases/yasm-${YASM_VERSION}.tar.gz && \ - tar xzvf yasm-${YASM_VERSION}.tar.gz && \ - cd yasm-${YASM_VERSION} && \ - ./configure --prefix="$SRC" --bindir="${SRC}/bin" && \ - make && \ - make install && \ - make distclean && \ - rm -rf ${DIR} - -# x264 -DIR=$(mktemp -d) && cd ${DIR} && \ - git clone --depth 1 git://git.videolan.org/x264 && \ - cd x264 && \ - ./configure --prefix="$SRC" --bindir="${SRC}/bin" --enable-static && \ - make && \ - make install && \ - make distclean && \ - rm -rf ${DIR} - -# x265 -DIR=$(mktemp -d) && cd ${DIR} && \ - hg clone https://bitbucket.org/multicoreware/x265 && \ - cd x265/source && \ - cmake -G "Unix Makefiles" . && \ - cmake . && \ - make && \ - make install && \ - rm -rf ${DIR} - -# libogg -DIR=$(mktemp -d) && cd ${DIR} && \ - curl -Os http://downloads.xiph.org/releases/ogg/libogg-${OGG_VERSION}.tar.gz && \ - tar xzvf libogg-${OGG_VERSION}.tar.gz && \ - cd libogg-${OGG_VERSION} && \ - ./configure --prefix="$SRC" --bindir="${SRC}/bin" --disable-shared && \ - make && \ - make install && \ - make distclean && \ - rm -rf ${DIR} - -# libopus -DIR=$(mktemp -d) && cd ${DIR} && \ - git clone --depth 1 git://git.opus-codec.org/opus.git && \ - cd opus && \ - autoreconf -fiv && \ - ./configure --prefix="$SRC" --disable-shared && \ - make && \ - make install && \ - make distclean && \ - rm -rf ${DIR} - -# libvorbis -DIR=$(mktemp -d) && cd ${DIR} && \ - curl -Os http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VERSION}.tar.gz && \ - tar xzvf libvorbis-${VORBIS_VERSION}.tar.gz && \ - cd libvorbis-${VORBIS_VERSION} && \ - ./configure --prefix="$SRC" --with-ogg="$SRC" --bindir="${SRC}/bin" --disable-shared && \ - make && \ - make install && \ - make distclean && \ - rm -rf ${DIR} - -# libvpx -DIR=$(mktemp -d) && cd ${DIR} && \ - git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \ - cd libvpx && \ - ./configure --prefix="$SRC" --enable-vp8 --enable-vp9 --disable-examples && \ - make && \ - make install && \ - make clean && \ - rm -rf ${DIR} - -# libmp3lame -DIR=$(mktemp -d) && cd ${DIR} && \ - curl -L -Os http://downloads.sourceforge.net/project/lame/lame/${LAME_VERSION%.*}/lame-${LAME_VERSION}.tar.gz && \ - tar xzvf lame-${LAME_VERSION}.tar.gz && \ - cd lame-${LAME_VERSION} && \ - ./configure --prefix="${SRC}" --bindir="${SRC}/bin" --disable-shared --enable-nasm && \ - make && \ - make install && \ - make distclean&& \ - rm -rf ${DIR} - - -# faac + http://stackoverflow.com/a/4320377 -DIR=$(mktemp -d) && cd ${DIR} && \ - curl -L -Os http://downloads.sourceforge.net/faac/faac-${FAAC_VERSION}.tar.gz && \ - tar xzvf faac-${FAAC_VERSION}.tar.gz && \ - cd faac-${FAAC_VERSION} && \ - sed -i '126d' common/mp4v2/mpeg4ip.h && \ - ./bootstrap && \ - ./configure --prefix="${SRC}" --bindir="${SRC}/bin" && \ - make && \ - make install &&\ - rm -rf ${DIR} - -# xvid -DIR=$(mktemp -d) && cd ${DIR} && \ - curl -L -Os http://downloads.xvid.org/downloads/xvidcore-${XVID_VERSION}.tar.gz && \ - tar xzvf xvidcore-${XVID_VERSION}.tar.gz && \ - cd xvidcore/build/generic && \ - ./configure --prefix="${SRC}" --bindir="${SRC}/bin" && \ - make && \ - make install&& \ - rm -rf ${DIR} - - -# fdk-aac -DIR=$(mktemp -d) && cd ${DIR} && \ - curl -s https://codeload.github.com/mstorsjo/fdk-aac/tar.gz/v${FDKAAC_VERSION} | tar zxvf - && \ - cd fdk-aac-${FDKAAC_VERSION} && \ - autoreconf -fiv && \ - ./configure --prefix="${SRC}" --disable-shared && \ - make && \ - make install && \ - make distclean && \ - rm -rf ${DIR} - -# ffmpeg -DIR=$(mktemp -d) && cd ${DIR} && \ - curl -Os http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz && \ - tar xzvf ffmpeg-${FFMPEG_VERSION}.tar.gz && \ - cd ffmpeg-${FFMPEG_VERSION} && \ - ./configure --prefix="${SRC}" --extra-cflags="-I${SRC}/include" --extra-ldflags="-L${SRC}/lib" --bindir="${SRC}/bin" \ - --extra-libs=-ldl --enable-version3 --enable-libfaac --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-gpl \ - --enable-postproc --enable-nonfree --enable-avresample --enable-libfdk_aac --disable-debug --enable-small --enable-openssl \ - --enable-libx265 --enable-libopus --enable-libvorbis --enable-libvpx && \ - make && \ - make install && \ - make distclean && \ - hash -r && \ - rm -rf ${DIR} - -# mplayer -DIR=$(mktemp -d) && cd ${DIR} && \ - curl -Os http://mplayerhq.hu/MPlayer/releases/MPlayer-${MPLAYER_VERSION}.tar.xz && \ - tar xvf MPlayer-${MPLAYER_VERSION}.tar.xz && \ - cd MPlayer-${MPLAYER_VERSION} && \ - ./configure --prefix="${SRC}" --extra-cflags="-I${SRC}/include" --extra-ldflags="-L${SRC}/lib" --bindir="${SRC}/bin" && \ - make && \ - make install && \ - rm -rf ${DIR} - -# echo "/usr/local/lib" > /etc/ld.so.conf.d/libc.conf diff --git a/opam-installext b/opam-installext deleted file mode 100644 index f3305ba..0000000 --- a/opam-installext +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -x - -depext=`opam install $* -e ubuntu` -echo Ubuntu depexts: $depext -if [ "$depext" != "" ]; then - sudo apt-get update -y - sudo apt-get install -qq -y build-essential m4 - sudo apt-get install -qq -y $depext -fi -srcext=`opam install $* -e source,linux` -echo Ubuntu srcexts: $srcext -if [ "$srcext" != "" ]; then - t=`mktemp` - curl -sL ${srcext} > $t - bash -ex $t -fi - -opam install $* \ No newline at end of file diff --git a/opam.list b/opam.list deleted file mode 100644 index ac4cf61..0000000 --- a/opam.list +++ /dev/null @@ -1 +0,0 @@ -deb http://download.opensuse.org/repositories/home:/ocaml/xUbuntu_14.04/ / \ No newline at end of file diff --git a/opamsudo b/opamsudo deleted file mode 100644 index 7211f5f..0000000 --- a/opamsudo +++ /dev/null @@ -1 +0,0 @@ -opam ALL=(ALL:ALL) NOPASSWD:ALL \ No newline at end of file