Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'win/_base.sh')
-rw-r--r--win/_base.sh321
1 files changed, 321 insertions, 0 deletions
diff --git a/win/_base.sh b/win/_base.sh
new file mode 100644
index 000000000..ee1521429
--- /dev/null
+++ b/win/_base.sh
@@ -0,0 +1,321 @@
+#!/usr/bin/env bash
+# Copyright 2016 Christoph Reiter
+# Copyright 2017 Philipp Hörist
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+
+set -e
+DIR="$( cd "$( dirname "$0" )" && pwd )"
+cd "${DIR}"
+
+# CONFIG START
+
+ARCH="i686"
+PYTHON_VERSION="3"
+BUILD_VERSION="0"
+
+# CONFIG END
+
+MISC="${DIR}"/misc
+PYTHON_ID="python${PYTHON_VERSION}"
+MINGW="mingw32"
+
+QL_VERSION="0.0.0"
+QL_VERSION_DESC="UNKNOWN"
+
+function set_build_root {
+ BUILD_ROOT="$1"
+ REPO_CLONE="${BUILD_ROOT}/${MINGW}"/gajim
+ MINGW_ROOT="${BUILD_ROOT}/${MINGW}"
+}
+
+set_build_root "${DIR}/_build_root"
+
+function build_pacman {
+ pacman --root "${BUILD_ROOT}" "$@"
+}
+
+function build_pip {
+ "${BUILD_ROOT}"/"${MINGW}"/bin/"${PYTHON_ID}".exe -m pip "$@"
+}
+
+function build_python {
+ "${BUILD_ROOT}"/"${MINGW}"/bin/"${PYTHON_ID}".exe "$@"
+}
+
+function build_compileall {
+ build_python -m compileall -b "$@"
+}
+
+function install_pre_deps {
+ pacman -S --needed --noconfirm p7zip git \
+ mingw-w64-"${ARCH}"-nsis wget intltool mingw-w64-"${ARCH}"-toolchain \
+ mingw-w64-i686-python3
+}
+
+function create_root {
+ mkdir -p "${BUILD_ROOT}"
+
+ mkdir -p "${BUILD_ROOT}"/var/lib/pacman
+ mkdir -p "${BUILD_ROOT}"/var/log
+ mkdir -p "${BUILD_ROOT}"/tmp
+
+ build_pacman -Syu
+ build_pacman --noconfirm -S base
+}
+
+function install_deps {
+ build_pacman --noconfirm -S mingw-w64-"${ARCH}"-gtk3 mingw-w64-"${ARCH}"-"${PYTHON_ID}" \
+ mingw-w64-"${ARCH}"-"${PYTHON_ID}"-gobject \
+ mingw-w64-"${ARCH}"-"${PYTHON_ID}"-pip \
+ mingw-w64-"${ARCH}"-gstreamer \
+ mingw-w64-"${ARCH}"-adwaita-icon-theme
+
+ build_pip install setuptools_scm
+
+ PIP_REQUIREMENTS="\
+pyasn1
+certifi
+git+https://dev.gajim.org/gajim/python-nbxmpp.git
+protobuf
+git+https://github.com/dlitz/pycrypto.git
+cryptography
+pyopenssl
+python-gnupg
+docutils
+qrcode
+keyring
+"
+
+ build_pip install --no-binary ":all:" \
+ --force-reinstall $(echo "$PIP_REQUIREMENTS" | tr ["\\n"] [" "])
+ build_pip install python-axolotl
+
+ build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-shared-mime-info \
+ mingw-w64-"${ARCH}"-"${PYTHON_ID}"-pip mingw-w64-"${ARCH}"-ncurses || true
+ build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-tk || true
+ build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-tcl || true
+ build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-gnome-common || true
+ build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-gsl || true
+ build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-libvpx || true
+
+ # remove the large png icons, they should be used rarely and svg works fine
+ rm -Rf "${MINGW_ROOT}/share/icons/Adwaita/512x512"
+ rm -Rf "${MINGW_ROOT}/share/icons/Adwaita/256x256"
+ rm -Rf "${MINGW_ROOT}/share/icons/Adwaita/96x96"
+ rm -Rf "${MINGW_ROOT}/share/icons/Adwaita/64x64"
+ rm -Rf "${MINGW_ROOT}/share/icons/Adwaita/48x48"
+ "${MINGW_ROOT}"/bin/gtk-update-icon-cache-3.0.exe --force \
+ "${MINGW_ROOT}/share/icons/Adwaita"
+
+}
+
+function install_gajim {
+ [ -z "$1" ] && (echo "Missing arg"; exit 1)
+
+ rm -Rf "${REPO_CLONE}"
+ git clone "${DIR}"/.. "${REPO_CLONE}"
+
+ (cd "${REPO_CLONE}" && git checkout "$1") || exit 1
+
+ if [ "$1" = "master" ]
+ then
+ local GIT_REV=$(git rev-list --count HEAD)
+ local GIT_HASH=$(git rev-parse --short HEAD)
+ QL_VERSION_DESC="QL_VERSION-rev$GIT_REV-$GIT_HASH"
+ else
+ QL_VERSION_DESC=$1
+ QL_VERSION=$1
+ fi
+
+ # Create launchers
+ build_python "${MISC}"/create-launcher.py \
+ "${QL_VERSION}" "${MINGW_ROOT}"/bin
+
+ # Install plugin installer
+ wget -P "${REPO_CLONE}/plugins" -c https://ftp.gajim.org/plugins_1/plugin_installer.zip
+ 7z x -o"${REPO_CLONE}"/plugins "${REPO_CLONE}"/plugins/plugin_installer.zip
+ rm -f "${REPO_CLONE}"/plugins/plugin_installer.zip
+
+ # Install themes
+ rm -Rf "${MINGW_ROOT}"/etc
+ rm -Rf "${MINGW_ROOT}"/share/themes
+ mv "${REPO_CLONE}"/win/etc "${MINGW_ROOT}"
+ mv "${REPO_CLONE}"/win/themes "${MINGW_ROOT}"/share
+
+ # Install our own icons
+ rm -Rf "${MINGW_ROOT}/share/icons/hicolor"
+ mv "${REPO_CLONE}"/icons/hicolor "${MINGW_ROOT}"/share/icons
+
+ # we installed our app icons into hicolor
+ "${MINGW_ROOT}"/bin/gtk-update-icon-cache-3.0.exe --force \
+ "${MINGW_ROOT}/share/icons/hicolor"
+
+ # Create translation files
+ for f in "${REPO_CLONE}"/po/*.po; do
+ fullfilename=$(basename "$f")
+ filename="${fullfilename%.*}"
+ directory="${MINGW_ROOT}"/share/locale/"$filename"
+ if [ ! -d "$directory" ]; then
+ printf "create dir\n"
+ mkdir -p "${directory}"/LC_MESSAGES
+ fi
+ printf "compile $filename\n"
+ msgfmt -o "${directory}"/LC_MESSAGES/gajim.mo "$f"
+ done
+
+}
+
+function cleanup_install {
+ #delete translations we don't support
+ for d in "${MINGW_ROOT}"/share/locale/*/LC_MESSAGES; do
+ if [ ! -f "${d}"/gajim.mo ]; then
+ rm -Rf "${d}"
+ fi
+ done
+
+ find "${MINGW_ROOT}" -regextype "posix-extended" -name "*.exe" -a ! \
+ -iregex ".*/(gajim|python|history_manager)[^/]*\\.exe" \
+ -exec rm -f {} \;
+
+ rm -Rf "${REPO_CLONE}"/.git
+ rm -Rf "${REPO_CLONE}"/debian
+ rm -Rf "${REPO_CLONE}"/doc
+ rm -Rf "${REPO_CLONE}"/m4
+ rm -Rf "${REPO_CLONE}"/scripts
+ rm -Rf "${REPO_CLONE}"/test
+ rm -Rf "${REPO_CLONE}"/win
+ rm -Rf "${REPO_CLONE}"/icons
+ rm -Rf "${REPO_CLONE}"/po
+ rm -Rf "${REPO_CLONE}"/plugins/acronyms_expander
+ rm -Rf "${REPO_CLONE}"/plugins/dbus_plugin
+ rm -Rf "${REPO_CLONE}"/plugins/events_dump
+ rm -Rf "${REPO_CLONE}"/plugins/new_events_example
+ rm -Rf "${REPO_CLONE}"/plugins/roster_buttons
+
+ find "${REPO_CLONE}"/* -maxdepth 0 -type f ! -regex ".*/\(AUTHORS\|COPYING\|THANKS\|THANKS.artists\)" -exec rm -f {} \;
+ find "${REPO_CLONE}"/data/* -maxdepth 0 -type f -exec rm -f {} \;
+
+ rm -Rf "${MINGW_ROOT}"/libexec
+ rm -Rf "${MINGW_ROOT}"/share/gtk-doc
+ rm -Rf "${MINGW_ROOT}"/include
+ rm -Rf "${MINGW_ROOT}"/var
+ rm -Rf "${MINGW_ROOT}"/share/zsh
+ rm -Rf "${MINGW_ROOT}"/share/pixmaps
+ rm -Rf "${MINGW_ROOT}"/share/gnome-shell
+ rm -Rf "${MINGW_ROOT}"/share/dbus-1
+ rm -Rf "${MINGW_ROOT}"/share/gir-1.0
+ rm -Rf "${MINGW_ROOT}"/share/doc
+ rm -Rf "${MINGW_ROOT}"/share/man
+ rm -Rf "${MINGW_ROOT}"/share/info
+ rm -Rf "${MINGW_ROOT}"/share/mime
+ rm -Rf "${MINGW_ROOT}"/share/gettext
+ rm -Rf "${MINGW_ROOT}"/share/libtool
+ rm -Rf "${MINGW_ROOT}"/share/licenses
+ rm -Rf "${MINGW_ROOT}"/share/appdata
+ rm -Rf "${MINGW_ROOT}"/share/aclocal
+ rm -Rf "${MINGW_ROOT}"/share/ffmpeg
+ rm -Rf "${MINGW_ROOT}"/share/vala
+ rm -Rf "${MINGW_ROOT}"/share/readline
+ rm -Rf "${MINGW_ROOT}"/share/xml
+ rm -Rf "${MINGW_ROOT}"/share/bash-completion
+ rm -Rf "${MINGW_ROOT}"/share/common-lisp
+ rm -Rf "${MINGW_ROOT}"/share/emacs
+ rm -Rf "${MINGW_ROOT}"/share/gdb
+ rm -Rf "${MINGW_ROOT}"/share/libcaca
+ rm -Rf "${MINGW_ROOT}"/share/gettext
+ rm -Rf "${MINGW_ROOT}"/share/gst-plugins-base
+ rm -Rf "${MINGW_ROOT}"/share/gtk-3.0
+ rm -Rf "${MINGW_ROOT}"/share/nghttp2
+ rm -Rf "${MINGW_ROOT}"/share/fontconfig
+ rm -Rf "${MINGW_ROOT}"/share/gettext-*
+ rm -Rf "${MINGW_ROOT}"/share/gstreamer-1.0
+
+ find "${MINGW_ROOT}"/share/glib-2.0 -type f ! \
+ -name "*.compiled" -exec rm -f {} \;
+
+ rm -Rf "${MINGW_ROOT}"/lib/"${PYTHON_ID}".*/test
+ rm -Rf "${MINGW_ROOT}"/lib/cmake
+ rm -Rf "${MINGW_ROOT}"/lib/gettext
+ rm -Rf "${MINGW_ROOT}"/lib/gtk-3.0
+ rm -Rf "${MINGW_ROOT}"/lib/mpg123
+ rm -Rf "${MINGW_ROOT}"/lib/p11-kit
+ rm -Rf "${MINGW_ROOT}"/lib/ruby
+ rm -Rf "${MINGW_ROOT}"/lib/tcl8
+ rm -Rf "${MINGW_ROOT}"/lib/tcl8.6
+
+
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstvpx.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstdaala.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstdvdread.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstopenal.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstopenexr.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstopenh264.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstresindvd.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstassrender.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstx265.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstwebp.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstopengl.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstmxf.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstfaac.dll
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstschro.dll
+
+ rm -f "${MINGW_ROOT}"/bin/libharfbuzz-icu-0.dll
+ rm -f "${MINGW_ROOT}"/lib/"${PYTHON_ID}".*/lib-dynload/_tkinter*
+ rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstcacasink.dll
+
+ rm -Rf "${MINGW_ROOT}"/lib/python2.*
+
+ find "${MINGW_ROOT}" -name "*.a" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.whl" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.h" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.la" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.sh" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.jar" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.def" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.cmd" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.cmake" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.pc" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.desktop" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.manifest" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.pyo" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "*.am" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name ".gitignore" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -name "pylint.rc" -exec rm -f {} \;
+
+ find "${MINGW_ROOT}"/bin -name "*-config" -exec rm -f {} \;
+ find "${MINGW_ROOT}"/bin -name "easy_install*" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -regex ".*/bin/[^.]+" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -regex ".*/bin/[^.]+\\.[0-9]+" -exec rm -f {} \;
+
+ find "${MINGW_ROOT}" -name "gtk30-properties.mo" -exec rm -rf {} \;
+ find "${MINGW_ROOT}" -name "gettext-tools.mo" -exec rm -rf {} \;
+
+ find "${MINGW_ROOT}" -name "old_root.pem" -exec rm -rf {} \;
+ find "${MINGW_ROOT}" -name "weak.pem" -exec rm -rf {} \;
+
+ find "${MINGW_ROOT}"/lib/"${PYTHON_ID}".* -type d -name "test*" \
+ -prune -exec rm -rf {} \;
+
+ find "${MINGW_ROOT}"/lib/"${PYTHON_ID}".* -type d -name "*_test*" \
+ -prune -exec rm -rf {} \;
+
+ find "${MINGW_ROOT}"/bin -name "*.pyo" -exec rm -f {} \;
+ find "${MINGW_ROOT}"/bin -name "*.pyc" -exec rm -f {} \;
+ build_compileall -q "${MINGW_ROOT}"
+ find "${MINGW_ROOT}" -name "*.py" ! -name "gajim.py" ! -name "history_manager.py" -exec rm -f {} \;
+ find "${MINGW_ROOT}"/bin -name "*.pyc" -exec rm -f {} \;
+ find "${MINGW_ROOT}" -type d -name "__pycache__" -prune -exec rm -rf {} \;
+
+ build_python "${MISC}/depcheck.py"
+
+ find "${MINGW_ROOT}" -type d -empty -delete
+
+}
+
+function build_installer {
+ (cd "$BUILD_ROOT" && makensis -NOCD -DVERSION="$QL_VERSION_DESC" "${MISC}"/gajim.nsi)
+ (cd "$BUILD_ROOT" && makensis -NOCD -DVERSION="$QL_VERSION_DESC" "${MISC}"/gajim-portable.nsi)
+}