Blame docker-builder-data/build/script/packet/synfigstudio-nsis.sh

a8518c
DEPS="synfigstudio-master"
a8518c
21fb9b
PK_PYTHON_DIRNAME="python"
21fb9b
PK_PYTHON_ARCHIVE="portable-python-3.2.5.1.zip"
21fb9b
PK_PYTHON_URL="https://download.tuxfamily.org/synfig/packages/sources/$PK_PYTHON_ARCHIVE"
21fb9b
21fb9b
a8518c
pkfunc_register_file() {
a8518c
    local FILE=$1
a8518c
    local WIN_FILE=$(echo "$FILE" | sed "s|\/|\\\\|g")
a8518c
    ! [ -L "$FILE" ] || return 0
a8518c
a8518c
    if [[ "$FILE" != ./* ]]; then
a8518c
        foreachfile $FILE pkfunc_register_file
a8518c
    elif [ "${FILE:0:8}" = "./files-" ]; then
a8518c
        true # skip
a8518c
    else
a8518c
        local TARGET_INSTALL="files-install.nsh"
a8518c
        local TARGET_UNINSTALL="files-uninstall.nsh"
a8518c
        if [ "$FILE" = "./bin/ffmpeg.exe" ]; then
a8518c
            TARGET_INSTALL="files-ffmpeg-install.nsh"
a8518c
        elif [[ "$FILE" = "./examples/"* ]]; then
a8518c
            TARGET_INSTALL="files-examples-install.nsh"
a8518c
        fi
a8518c
a8518c
        if [ -d "$FILE" ]; then
a8518c
            echo "CreateDirectory \"\$INSTDIR\\${WIN_FILE:2}\""     >> "$TARGET_INSTALL"
a8518c
            foreachfile "$FILE" pkfunc_register_file
a8518c
            echo "RMDir \"\$INSTDIR\\${WIN_FILE:2}\""               >> "$TARGET_UNINSTALL" 
a8518c
        else
a8518c
            echo "File \"/oname=${WIN_FILE:2}\" \"${WIN_FILE:2}\""  >> "$TARGET_INSTALL"
a8518c
            echo "Delete \"\$INSTDIR\\${WIN_FILE:2}\""              >> "$TARGET_UNINSTALL" 
a8518c
        fi
a8518c
    fi
a8518c
}
a8518c
21fb9b
# download portable python and pass downloaded files through all build phases
21fb9b
pkdownload() {
21fb9b
    wget -c --no-check-certificate "$PK_PYTHON_URL" -O "$PK_PYTHON_ARCHIVE" || return 1
21fb9b
}
21fb9b
21fb9b
pkunpack() {
21fb9b
    unzip "$DOWNLOAD_PACKET_DIR/$PK_PYTHON_ARCHIVE" || return 1
21fb9b
}
21fb9b
21fb9b
pkinstall() {
21fb9b
    copy "$BUILD_PACKET_DIR" "$INSTALL_PACKET_DIR" || return 1
21fb9b
}
21fb9b
a8518c
pkinstall_release() {
a8518c
    local LOCAL_INSTALLER_DIR="$INSTALL_RELEASE_PACKET_DIR/installer"
a8518c
    local LOCAL_CACHE_DIR="$INSTALL_RELEASE_PACKET_DIR/cache"
a8518c
        
a8518c
    # create temporary dir
a8518c
    rm -rf "$LOCAL_INSTALLER_DIR"
a8518c
    mkdir -p "$LOCAL_INSTALLER_DIR"
a8518c
    cd "$LOCAL_INSTALLER_DIR" || return 1
a8518c
a8518c
    # copy files
a8518c
    copy "$ENVDEPS_RELEASE_PACKET_DIR" "./" || return 1
a8518c
a8518c
    # move examples
21fb9b
    mv "./share/synfig/examples" "./" || return 1
21fb9b
21fb9b
    # add portable python
21fb9b
    copy "$INSTALL_PACKET_DIR/$PK_PYTHON_DIRNAME" "$LOCAL_INSTALLER_DIR/python" || return 1
a8518c
    cd "$LOCAL_INSTALLER_DIR" || return 1
a8518c
a8518c
    # get version
a8518c
    local LOCAL_VERSION_FULL=$(cat $ENVDEPS_RELEASE_PACKET_DIR/version-synfigstudio-*)
a8518c
    local LOCAL_VERSION=$(echo "$LOCAL_VERSION_FULL" | cut -d - -f 1)
a8518c
    local LOCAL_VERSION2=$(echo "$LOCAL_VERSION" | cut -d . -f -2)
a8518c
    local LOCAL_COMMIT=$(echo "$LOCAL_VERSION_FULL" | cut -d - -f 2)
a8518c
a8518c
    # create file lists
a8518c
    echo "create file lists"
a8518c
    touch files-install.nsh
a8518c
    touch files-ffmpeg-install.nsh
a8518c
    touch files-examples-install.nsh
a8518c
    touch files-uninstall.nsh
a8518c
    pkfunc_register_file .
a8518c
    echo "created"
a8518c
a8518c
    # copy NSIS configuration
a8518c
    cp "$FILES_PACKET_DIR/synfigstudio.nsi" "./" || return 1
a8518c
a8518c
    # create config.nsh (see opentoons.nsi)
a8518c
    cat > config.nsh << EOF
21fb9b
!define PK_NAME          "synfigstudio" 
21fb9b
!define PK_NAME_FULL     "Synfig Studio"
21fb9b
!define PK_ARCH          "$ARCH"
21fb9b
!define PK_VERSION       "${LOCAL_VERSION2}"
21fb9b
!define PK_VERSION_FULL  "${LOCAL_VERSION}-${LOCAL_COMMIT:0:5}"
21fb9b
!define PK_EXECUTABLE    "bin\\synfigstudio.exe"
21fb9b
!define PK_ICON          "share\\pixmaps\\synfig_icon.ico"
21fb9b
!define PK_DOCUMENT_ICON "share\\pixmaps\\sif_icon.ico"
a8518c
EOF
a8518c
a8518c
    # let's go
a8518c
    makensis synfigstudio.nsi || return 1
a8518c
a8518c
    # remove temporary dir
a8518c
    cd "$INSTALL_RELEASE_PACKET_DIR" || return 1
a8518c
    mv "$LOCAL_INSTALLER_DIR"/*.exe ./ || return 1
a8518c
    rm -rf "$LOCAL_INSTALLER_DIR"
a8518c
}