#!/bin/sh

set -eu

command=$1
shift

case "$command" in
  configure)
    upstream_dir=$1
    mkdir -p /opt/trusty/lib
    ln -fns "$upstream_dir"/x86_64-linux-gnu /opt/trusty/lib/x86_64-linux-gnu
    ln -fns "$upstream_dir"/x86_64-linux-gnu/libgiomm-2.4.so.1.3.0 /opt/trusty/lib/x86_64-linux-gnu/libgiomm-2.4.so.1
    ln -fns "$upstream_dir"/x86_64-linux-gnu/libgdkmm-2.4.so.1.1.0 /opt/trusty/lib/x86_64-linux-gnu/libgdkmm-2.4.so.1
    ln -fns "$upstream_dir"/x86_64-linux-gnu/libglibmm-2.4.so.1.3.0 /opt/trusty/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    ln -fns "$upstream_dir"/x86_64-linux-gnu/libgtkmm-2.4.so.1.1.0 /opt/trusty/lib/x86_64-linux-gnu/libgtkmm-2.4.so.1
    ln -fns "$upstream_dir"/x86_64-linux-gnu/libatkmm-1.6.so.1.1.0 /opt/trusty/lib/x86_64-linux-gnu/libatkmm-1.6.so.1
    ln -fns "$upstream_dir"/x86_64-linux-gnu/libcairomm-1.0.so.1.4.0 /opt/trusty/lib/x86_64-linux-gnu/libcairomm-1.0.so.1
    ln -fns "$upstream_dir"/x86_64-linux-gnu/libpangomm-1.4.so.1.0.30 /opt/trusty/lib/x86_64-linux-gnu/libpangomm-1.4.so.1
    ln -fns "$upstream_dir"/i386-linux-gnu /opt/trusty/lib/i386-linux-gnu
    ln -fns "$upstream_dir"/i386-linux-gnu/libgiomm-2.4.so.1 /opt/trusty/lib/i386-linux-gnu/libgiomm-2.4.so.1.3.0
    ln -fns "$upstream_dir"/i386-linux-gnu/libgdkmm-2.4.so.1 /opt/trusty/lib/i386-linux-gnu/libgdkmm-2.4.so.1.1.0
    ln -fns "$upstream_dir"/i386-linux-gnu/libpng12.so.0.54.0 /opt/trusty/lib/i386-linux-gnu/libpng12.so.0
    ;;

  unconfigure)
    rm -f /opt/trusty/lib/x86_64-linux-gnu/libgiomm-2.4.so.1
    rm -f /opt/trusty/lib/x86_64-linux-gnu/libgtkmm-2.4.so.1
    rm -f /opt/trusty/lib/x86_64-linux-gnu/libgdkmm-2.4.so.1
    rm -f /opt/trusty/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
    rm -f /opt/trusty/lib/x86_64-linux-gnu/libatkmm-1.6.so.1
    rm -f /opt/trusty/lib/x86_64-linux-gnu/libcairomm-1.0.so.1
    rm -f /opt/trusty/lib/x86_64-linux-gnu/libpangomm-1.4.so.1

    rm -f /opt/trusty/lib/x86_64-linux-gnu
    rm -f /opt/trusty/lib/i386-linux-gnu/libgiomm-2.4.so.1.3.0
    rm -f /opt/trusty/lib/i386-linux-gnu/libgdkmm-2.4.so.1.1.0
    rm -f /opt/trusty/lib/i386-linux-gnu/libpng12.so.0
    rm -f /opt/trusty/lib/i386-linux-gnu
    rmdir /opt/trusty/lib /opt/trusty
    ;;

  unpack)
    upstream_pack=$1
    upstream_dir=$2
    tar -xf "$upstream_pack" -C "$upstream_dir"
    ;;

  download)
    upstream_pack=$(readlink -f "$1")
    tmpdir=
    trap '[ -n "$tmpdir" ] && rm -rf "$tmpdir"' 0 INT TERM
    tmpdir=$(mktemp -d)

    trusty_mirror_base='https://mirrors.kernel.org'

    (
      cd "$tmpdir"
      mkdir -p ubuntu-trusty-libs
      mkdir -p ubuntu-trusty-libs/i386-linux-gnu
      mkdir -p ubuntu-trusty-libs/x86_64-linux-gnu

      while read sha384 deburl files; do
        deb=$(basename "$deburl")
        wget \
          --no-use-server-timestamps \
          --no-cookies               \
          --output-document "$deb"   \
          --progress=dot:mega        \
          "$deburl" || {
            [ $? -eq 4 ] && exit 2 ## Network failure.
            exit 1
        }
        echo "${sha384} ${deb}" | sha384sum --check >/dev/null || exit 1
        dpkg-deb -x "$deb" ubuntu-trusty-libs.tmp || exit 1
        for f in $files; do
          cp -p "ubuntu-trusty-libs.tmp/usr/lib/i386-linux-gnu/${f}" \
                ubuntu-trusty-libs/i386-linux-gnu/
        done
      done <<EOF
1e214ec9447bc6fa97e2eefa0e40c3939417b316b9e9a3d79fcb4b8cd1cf0ae98d4afb8d6ba41ce028723af3427f9c81 ${trusty_mirror_base}/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1.1_i386.deb           ../../../lib/i386-linux-gnu/libpng12.so.0.54.0
ac8318798a7c965703b55b61f4ae538ff5a69d96ac33cbe593f1d35076233a829ae1ba950ee9e59a08fce3ca5a099530 ${trusty_mirror_base}/ubuntu/pool/main/g/glibmm2.4/libglibmm-2.4-1c2a_2.39.93-0ubuntu1_i386.deb    libgiomm-2.4.so.1
adaaa3ad4d78579fd38193fdf797cb817f181563c1e6e8437cd2f6a13f35c646f6a787bba79c0d25b6f201aba7ae457b ${trusty_mirror_base}/ubuntu/pool/main/g/gtkmm2.4/libgtkmm-2.4-1c2a_2.24.4-1ubuntu1_i386.deb       libgdkmm-2.4.so.1
EOF
      while read sha384 deburl files; do
        deb=$(basename "$deburl")
        wget \
          --no-use-server-timestamps \
          --no-cookies               \
          --output-document "$deb"   \
          --progress=dot:mega        \
          "$deburl" || {
            [ $? -eq 4 ] && exit 2 ## Network failure.
            exit 1
        }
        echo "${sha384} ${deb}" | sha384sum --check >/dev/null || exit 1
        dpkg-deb -x "$deb" ubuntu-trusty-libs.tmp || exit 1
        for f in $files; do
          cp -p "ubuntu-trusty-libs.tmp/usr/lib/x86_64-linux-gnu/${f}" \
                ubuntu-trusty-libs/x86_64-linux-gnu/
        done
      done <<EOF
7fba086000aaed51d1fe4fb89253dd0bfeb4be0b94b312aca0d1807048e29988e327c082082e16122d052dd1290631c9 ${trusty_mirror_base}/ubuntu/pool/main/a/atkmm1.6/libatkmm-1.6-1_2.22.7-2ubuntu1_amd64.deb         libatkmm-1.6.so.1.1.0
a3fc331d286eef4b86285a4d85a22336970e551f6127daa96d9bb676939ae09450f62125f69fb0b01f7e41d5bcd5058e ${trusty_mirror_base}/ubuntu/pool/main/c/cairomm/libcairomm-1.0-1_1.10.0-1ubuntu3_amd64.deb        libcairomm-1.0.so.1.4.0
f3959cf128db908cdfdd4bee95ffdac604f24baafafc2b6776b86f38fb2254b2c4120fefe4d8a43ffd41b697d9dffffa ${trusty_mirror_base}/ubuntu/pool/main/g/gtkmm2.4/libgtkmm-2.4-1c2a_2.24.4-1ubuntu1_amd64.deb      libgdkmm-2.4.so.1.1.0
644fb099f673ad8aca8619823bbab0ce76caaeac3fea70bb098d4acde839f6934a1f1504959795866e43acd86c24347a ${trusty_mirror_base}/ubuntu/pool/main/g/glibmm2.4/libglibmm-2.4-1c2a_2.39.93-0ubuntu1_amd64.deb   libgiomm-2.4.so.1.3.0
644fb099f673ad8aca8619823bbab0ce76caaeac3fea70bb098d4acde839f6934a1f1504959795866e43acd86c24347a ${trusty_mirror_base}/ubuntu/pool/main/g/glibmm2.4/libglibmm-2.4-1c2a_2.39.93-0ubuntu1_amd64.deb   libglibmm-2.4.so.1.3.0
f3959cf128db908cdfdd4bee95ffdac604f24baafafc2b6776b86f38fb2254b2c4120fefe4d8a43ffd41b697d9dffffa ${trusty_mirror_base}/ubuntu/pool/main/g/gtkmm2.4/libgtkmm-2.4-1c2a_2.24.4-1ubuntu1_amd64.deb      libgtkmm-2.4.so.1.1.0
c4bea9aa637dd5702075723b4e58782687967f37f81ea5540646f3768733ae7ea1834860c324655a82c64a32c0ce1aab ${trusty_mirror_base}/ubuntu/pool/main/p/pangomm/libpangomm-1.4-1_2.34.0-1ubuntu1_amd64.deb        libpangomm-1.4.so.1.0.30
EOF
      # Set LC_COLLATE=C so that files always sort in the same
      # way (so we get the same tar-archive independent of locales).
      env LC_COLLATE=C \
        tar -C ubuntu-trusty-libs --mtime='2000-01-01 00:00:00 +00:00' \
          --sort=name -c -f "$upstream_pack" .
    )
    ;;
esac
