FROM registry.yandex.net/toolbox/ubuntu:trusty-minimal

ENV DEBIAN_FRONTEND=noninteractive
ENV GIT_SSL_NO_VERIFY=true

# https://github.yandex-team.ru/toolbox/dockerfiles-nodejs/blob/master/src/minimal.Dockerfile
RUN set -ex \
    # Download Node.js package specified version
    && curl -o /tmp/nodejs.deb https://deb.nodesource.com/node_16.x/pool/main/n/nodejs/nodejs_16.13.2-1nodesource1_amd64.deb \
    && apt-get update --fix-missing \
    --option Acquire::https::proxy=${HTTPS_PROXY:='False'} \
    && apt-get install \
    --no-install-recommends --no-install-suggests --assume-yes \
    --option Acquire::https::proxy=${HTTPS_PROXY:='False'} \
    # Install build essential and python-dev, which is necessary for node-gyp
    build-essential \
    python-dev \
    # Install Node.js and npm
    && dpkg -i /tmp/nodejs.deb \
    # Update npm to the latest minor version
    && npm install \
    --global --registry=http://registry.npmjs.org/ \
    npm@$(npm --version | cut --delimiter='.' --fields=1) \
    # Fix npm@7 bug, when dependencies were not loaded over https via http proxy
    # See details on https://github.com/TooTallNate/node-agent-base/pull/47
    && if [ "$(npm --version | cut --delimiter='.' --fields=1)" = "7" ]; then \
    ( \
    cd /usr/lib/node_modules/npm/; \
    npm install --registry=http://registry.npmjs.org/ agent-base@6.0.2; \
    ) \
    fi \
    # Use Yandex internal npm registry by default
    && npm --global config set registry=https://npm.yandex-team.ru/ \
    # Necessary for building native modules
    && npm --global config set user root \
    # Install ICU data
    && export npm_config_cache=$(mktemp -d) \
    && FULL_ICU_PREFER_NPM=true npm install --global full-icu \
    && rm -rf $npm_config_cache \
    # Clean up packages required only for build to reduce image size
    && apt-get remove --assume-yes \
    build-essential \
    python-dev \
    && apt-get autoremove --assume-yes \
    # Clean up the apt cache and remove downloaded packages to reduce image size
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && rm -rf /tmp/nodejs.deb \
    # Give full access to the /tmp, which is necessary for npm
    && chmod 1777 /tmp

ENV NODE_EXTRA_CA_CERTS=/etc/ssl/certs/YandexInternalRootCA.pem \
    NODE_ICU_DATA=/usr/lib/node_modules/full-icu \
    NODE_PATH=/usr/lib/node_modules/

RUN npm install --global \
    minimist@1.2.5 \
    crypto-js@4.1.1 \
    @yandex-int/si.ci.s3-client@2.1.5 \
    pnpm@6.23.2 \
    @yandex-int/si.ci.sandbox-shovel@2.0.80 \
    @yandex-int/package-selector@0.4.0

# Install all perl deps
COPY etc /etc

RUN apt-get update --fix-missing && apt-get install -y --no-remove \
    libclass-accessor-perl \
    yandex-du-avatars \
    yandex-du-shell-perl \
    liblog-syslog-fast-perl=0.61-ya2 \
    yandex-du-log-perl \
    yandex-du-profile-perl \
    yandex-du-trace-perl \
    yandex-du-test-utf8-builder-perl \
    yandex-du-tvm2-perl \
    yandex-du-blackbox-perl \
    yandex-du-sendmail-perl \
    yandex-du-http-perl \
    yandex-du-i18n-perl \
    yandex-du-myinc-perl \
    yandex-du-url-perl \
    libwww-perl \
    yandex-du-mirrortools-hostings-perl \
    yandex-du-lwp-useragent-zora-perl \
    libany-moose-perl \
    libmath-round-perl \
    libnet-inet6glue-perl \
    yandex-du-dbtools-perl \
    liblocale-po-perl \
    libyandex-xsutils-perl \
    yandex-du-advmon-perl \
    yandex-du-avatars \
    yandex-du-balance-perl \
    yandex-du-blackbox-perl \
    yandex-du-bmlightadvq-perl \
    yandex-du-bmwordstat-perl \
    yandex-du-bsinfo-perl \
    yandex-du-bstools-perl \
    yandex-du-captcha-perl \
    yandex-du-catalogia-perl \
    yandex-du-cbb-perl \
    yandex-du-cgi-utf8-perl \
    yandex-du-clickhouse-perl \
    yandex-du-compress-perl \
    yandex-du-csv-perl \
    yandex-du-data-utils-perl \
    yandex-du-datetime-perl \
    yandex-du-dbtools-perl \
    yandex-du-direct-modern-perl \
    yandex-du-execute-js-perl \
    yandex-du-golem-perl \
    yandex-du-highlight-words-perl \
    yandex-du-hostname-perl \
    yandex-du-http-perl \
    yandex-du-i18n-perl \
    yandex-du-idn-perl \
    yandex-du-interpolate-perl \
    yandex-du-ketama-perl \
    yandex-du-live-file-perl \
    yandex-du-log-perl \
    yandex-du-lwp-useragent-zora-perl \
    yandex-du-mds-perl \
    yandex-du-memcached-perl \
    yandex-du-ml-clustering-perl \
    yandex-du-mygoodwords-perl \
    yandex-du-stopwords-perl \
    yandex-du-myinc-perl \
    yandex-du-mirrortools-hostings-perl \
    yandex-du-oauth-perl \
    yandex-du-parallel-perl \
    yandex-du-passport-perl \
    yandex-du-perlio-perl \
    yandex-du-plack-perl \
    yandex-du-phrasetools-perl \
    yandex-du-procinfo-perl \
    yandex-du-profile-perl \
    yandex-du-trace-perl \
    yandex-du-queryrec-perl \
    libyxqueryrec-perl \
    yandex-du-reports-xls-perl \
    yandex-du-retry-perl \
    yandex-du-runtime-perl \
    yandex-du-sendmail-perl \
    yandex-du-shell-perl \
    yandex-du-sleep-under-load \
    yandex-du-speller-perl \
    yandex-du-staff-perl \
    yandex-du-svn-perl \
    yandex-du-tanker-perl \
    yandex-du-tcpmultiplexor-perl \
    yandex-du-template-perl \
    yandex-du-test-utf8-builder-perl \
    yandex-du-tvm2-perl \
    yandex-du-validate-perl \
    yandex-du-xls-utf8-perl \
    yandex-du-xmlrpc-serializer-perl \
    yandex-du-yacotools-perl \
    yandex-du-ymaps-perl \
    yandex-du-ya-money-perl \
    yandex-du-url-perl \
    yandex-du-xiva-perl \
    yandex-du-yt-perl \
    yandex-du-check-mobile-redirect \
    libjson-pointer-perl \
    libdata-uuid-perl \
    yandex-du-geobase-pm-perl \
    yandex-du-dbconfig-monitor \
    yandex-du-downtime-monitor \
    yandex-du-translation \
    yandex-du-resource-yacatalog \
    libplack-perl \
    libhash-multivalue-perl \
    liblib-abs-perl \
    libpath-tiny-perl \
    libpathtools-perl \
    libgetopt-long-descriptive-perl \
    libpod-simple-perl \
    libclass-accessor-perl \
    libclass-accessor-lite-perl \
    libexporter-tiny-perl \
    libio-socket-timeout-perl \
    libperlio-via-timeout-perl \
    libhash-merge-simple-perl \
    liblist-moreutils-perl \
    liblist-allutils-perl \
    liblist-utilsby-perl \
    libperlio-util-perl \
    libparallel-forkmanager-perl \
    libfilesys-df-perl \
    libtext-clemmer-perl \
    libgeobase5-perl \
    # p2p-distribution-geobase4-config \
    libdbi-perl \
    libdbd-mysql-perl \
    libberkeleydb-perl \
    libnet-libidn-perl \
    libwww-perl \
    libnet-http-perl \
    liburi-escape-xs-perl \
    libpoe-perl \
    libpoe-component-client-http-perl \
    libwww-mechanize-perl \
    libhttp-body-perl \
    libparams-validate-perl \
    libdevel-stacktrace-perl \
    libanyevent-perl \
    libanyevent-fork-perl \
    libanyevent-fork-rpc-perl \
    libregexp-ipv6-perl \
    libnet-ipv6addr-perl \
    libev-perl \
    libsoap-lite-055-perl \
    libsoap-transport-http-plack-perl \
    yandex-soap-transport-http-plack \
    librouter-simple-perl \
    libjson-rpc-perl \
    libjson-rpc-simple-perl \
    libjson-rpc2-perl \
    libjsv-perl \
    liblwp-protocol-https-perl \
    libmailtools-perl \
    libmath-round-perl \
    libmime-lite-perl \
    libmime-tools-perl \
    libmime-types-perl \
    libemail-date-format-perl \
    libemail-valid-perl \
    libnet-ip-perl \
    libnet-patricia-perl \
    libnet-ldap-perl \
    libtest-harness-perl \
    libtest-deep-perl \
    libtest-mock-lwp-perl \
    libtest-mocktime-perl \
    libtest-failwarnings-perl \
    libtext-diff-perl \
    libtest-differences-perl \
    libgd-gd2-noxpm-perl \
    libimage-resize-perl \
    libcrypt-cbc-perl \
    libcrypt-rijndael-perl \
    libcarp-always-perl \
    perlmagick \
    libimage-exiftool-perl \
    libcairo-perl \
    flasm \
    swftools \
    swfmill \
    multitail \
    time \
    libspreadsheet-writeexcel-perl \
    libspreadsheet-parseexcel-perl \
    libexcel-reader-xlsx-perl \
    libtemplate-perl \
    libcgi-fasttemplate-perl \
    libcompress-raw-zlib-perl \
    libio-compress-perl \
    libarchive-zip-perl \
    libdate-calc-perl \
    libdatetime-perl \
    libdatetime-format-mysql-perl \
    libdatetime-timezone-perl \
    libdigest-adler32-perl \
    libdigest-sha1-perl \
    libdigest-crc-perl \
    libdigest-murmurhash-perl \
    libcrypt-ssleay-perl \
    libnet-ssleay-perl \
    libio-stringy-perl \
    libfile-slurp-perl \
    libfile-touch-perl \
    libtext-csv-perl \
    libxml-libxml-perl \
    libxml-simple-perl \
    libxml-rss-perl \
    libyaml-perl \
    libyaml-syck-perl \
    libdata-printer-perl \
    libdata-messagepack-perl \
    libjavascript-v8-perl \
    libclone-perl \
    libguard-perl \
    libdatetime-format-iso8601-perl \
    libcache-memcached-fast-perl \
    libredis-cluster-perl \
    libredis-script-perl \
    libcache-cache-perl \
    libintl-xs-perl \
    language-pack-ru-base \
    language-pack-uk-base \
    language-pack-en-base \
    language-pack-tr-base \
    libjson-perl \
    libdigest-sha2-perl \
    yandex-du-libproject-specific-perl \
    libstring-numeric-perl \
    libstring-numeric-xs-perl \
    yandex-lang-detect-perl \
    yandex-lang-detect-data \
    libcookiemy-perl \
    libmouse-perl \
    uatraits-perl \
    uatraits-data \
    libdata-leaf-walker-perl \
    yandex-lockf \
    libsys-hostname-fqdn-perl \
    libsys-sigaction-perl \
    util-linux \
    libreadonly-perl \
    libdata-uuid-perl \
    libexception-class-perl \
    libtry-tiny-perl \
    libnet-inet6glue-perl \
    liblog-any-perl \
    yandex-du-log-any-perl \
    libscalar-list-utils-41-perl \
    yandex-du-debsums-check \
    libdigest-hmac-perl \
    gettext

# Make deps
RUN apt-get update --fix-missing && apt-get install -y \
    make

# NPM install deps
RUN apt-get update --fix-missing && apt-get install -y \
    git \
    subversion
