#!/bin/bash -xe
if [ -z "$VIRTUAL_ENV" ]; then
    echo "Expected VIRTUAL_ENV to be set!"
    exit 1
fi

if [ -n "$NASM_DIR" ]; then
    if [ ! -d "$NASM_DIR" ]; then
        mkdir -p "$NASM_DIR"
        pushd "$NASM_DIR"
        curl https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.gz | tar -xz
        popd
    fi
    pushd "$NASM_DIR"/nasm*
    ./autogen.sh
    ./configure --prefix "$VIRTUAL_ENV"
    make nasm
    install -c nasm "$VIRTUAL_ENV"/bin/nasm
    PATH="$VIRTUAL_ENV/bin:$PATH"
    popd
fi

if [ -n "$ISAL_DIR" ]; then
    if [ ! -d "$ISAL_DIR" ]; then
        git clone https://github.com/intel/isa-l.git "$ISAL_DIR"
    fi
    pushd "$ISAL_DIR"
    ./autogen.sh
    ./configure --prefix "$VIRTUAL_ENV"
    make
    make install
    popd
fi

if [ -n "$GFCOMPLETE_DIR" ]; then
    if [ ! -d "$GFCOMPLETE_DIR" ]; then
        git clone https://github.com/ceph/gf-complete.git "$GFCOMPLETE_DIR"
    fi
    pushd "$GFCOMPLETE_DIR"
    ./autogen.sh
    ./configure --prefix "$VIRTUAL_ENV"
    make
    make install
    popd
fi

if [ -n "$JERASURE_DIR" ]; then
    if [ -z "$GFCOMPLETE_DIR" ]; then
        echo "JERASURE_DIR requires that GFCOMPLETE_DIR be set!"
        exit 1
    fi
    if [ ! -d "$JERASURE_DIR" ]; then
        git clone https://github.com/ceph/jerasure.git "$JERASURE_DIR"
    fi
    pushd "$JERASURE_DIR"
    autoreconf --force --install
    LD_LIBRARY_PATH="$VIRTUAL_ENV"/lib ./configure --prefix "$VIRTUAL_ENV" LDFLAGS="-L$VIRTUAL_ENV/lib" CPPFLAGS="-I$VIRTUAL_ENV/include"
    make
    make install
    popd
fi

if [ -z "$LIBERASURECODE_DIR" ]; then
    echo "Expected LIBERASURECODE_DIR to be set!"
    exit 1
fi
if [ ! -d "$LIBERASURECODE_DIR" ]; then
    git clone https://opendev.org/openstack/liberasurecode.git "$LIBERASURECODE_DIR"
fi
pushd "$LIBERASURECODE_DIR"
if [ -n "$LIBERASURECODE_REF" ]; then
    git fetch origin "$LIBERASURECODE_REF"
    git checkout FETCH_HEAD
fi
./autogen.sh
./configure --prefix "$VIRTUAL_ENV"
make
make install
popd

pip install "$@"
