From 94324625fe4b40b36c96702c2462ff40f029c255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=B6rist?= Date: Sat, 19 Aug 2017 01:04:53 +0200 Subject: [PATCH] WindowsBuild: Install Gajim as a python package --- win/_base.sh | 6 +++++- win/misc/create-launcher.py | 32 +++++++++++++++----------------- win/misc/gajim-portable.nsi | 4 ++-- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/win/_base.sh b/win/_base.sh index b2f8d662b..49f2826ad 100644 --- a/win/_base.sh +++ b/win/_base.sh @@ -29,6 +29,7 @@ function set_build_root { BUILD_ROOT="$1" REPO_CLONE="${BUILD_ROOT}/${MINGW}"/gajim MINGW_ROOT="${BUILD_ROOT}/${MINGW}" + PACKAGE_DIR="${BUILD_ROOT}/${MINGW}/lib/python3.6/site-packages" } set_build_root "${DIR}/_build_root" @@ -120,8 +121,10 @@ pillow function install_gajim { [ -z "$1" ] && (echo "Missing arg"; exit 1) + rm -Rf "${PACKAGE_DIR}/gajim" rm -Rf "${REPO_CLONE}" git clone "${DIR}"/.. "${REPO_CLONE}" + mv "${REPO_CLONE}/gajim" "${PACKAGE_DIR}" (cd "${REPO_CLONE}" && git checkout "$1") || exit 1 @@ -186,6 +189,7 @@ function cleanup_install { -exec rm -f {} \; rm -Rf "${REPO_CLONE}"/.git + rm -Rf "${REPO_CLONE}"/.gitlab-ci.yml rm -Rf "${REPO_CLONE}"/debian rm -Rf "${REPO_CLONE}"/doc rm -Rf "${REPO_CLONE}"/m4 @@ -313,7 +317,7 @@ function cleanup_install { 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" ! -name "*theme.py" -exec rm -f {} \; + find "${MINGW_ROOT}" -name "*.py" ! -name "*theme.py" -exec rm -f {} \; find "${MINGW_ROOT}"/bin -name "*.pyc" -exec rm -f {} \; find "${MINGW_ROOT}" -type d -name "__pycache__" -prune -exec rm -rf {} \; diff --git a/win/misc/create-launcher.py b/win/misc/create-launcher.py index 83f83c22f..73afc0c23 100644 --- a/win/misc/create-launcher.py +++ b/win/misc/create-launcher.py @@ -58,7 +58,7 @@ def build_exe(source_path, resource_path, is_gui, out_path): subprocess.check_call(args) -def get_launcher_code(entry_point): +def get_launcher_code(): template = """\ #include "Python.h" #define WIN32_LEAN_AND_MEAN @@ -87,19 +87,17 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, Py_FrozenFlag = 1; Py_Initialize(); PySys_SetArgvEx(__argc, szArglist, 0); - FILE* file = fopen("../gajim/gajim/%(filename)s", "r"); - PyRun_SimpleString("import sys; import os;" - "os.chdir('../gajim/gajim');" - "sys.path.append(os.getcwd());" - "sys.frozen=True;" - ); - result = PyRun_SimpleFile(file, "../gajim/gajim/%(filename)s"); + result = PyRun_SimpleString("import sys; import os;" + "sys.frozen=True;" + "os.chdir('../gajim');" + "import gajim.gajim as g;" + "g.GajimApplication().run(sys.argv);"); Py_Finalize(); return result; } """ - return template % {"filename": entry_point} + return template def get_resouce_code(filename, file_version, file_desc, icon_path, @@ -150,7 +148,7 @@ END def build_launcher(out_path, icon_path, file_desc, product_name, product_version, - company_name, entry_point, is_gui): + company_name, is_gui): src_ico = os.path.abspath(icon_path) target = os.path.abspath(out_path) @@ -162,7 +160,7 @@ def build_launcher(out_path, icon_path, file_desc, product_name, product_version try: os.chdir(temp) with open("launcher.c", "w") as h: - h.write(get_launcher_code(entry_point)) + h.write(get_launcher_code()) shutil.copyfile(src_ico, "launcher.ico") with open("launcher.rc", "w") as h: h.write(get_resouce_code( @@ -188,17 +186,17 @@ def main(): build_launcher( os.path.join(target, "Gajim.exe"), os.path.join(misc, "gajim.ico"), "Gajim", "Gajim", - version, company_name, 'gajim.py', True) + version, company_name, True) build_launcher( os.path.join(target, "Gajim-Debug.exe"), os.path.join(misc, "gajim.ico"), "Gajim", "Gajim", - version, company_name, 'gajim.py', False) + version, company_name, False) - build_launcher( - os.path.join(target, "history_manager.exe"), - os.path.join(misc, "gajim.ico"), "History Manager", "History Manager", - version, company_name, 'history_manager.py', True) + # build_launcher( + # os.path.join(target, "history_manager.exe"), + # os.path.join(misc, "gajim.ico"), "History Manager", "History Manager", + # version, company_name, 'history_manager.py', True) if __name__ == "__main__": main() diff --git a/win/misc/gajim-portable.nsi b/win/misc/gajim-portable.nsi index dda15b794..528390653 100644 --- a/win/misc/gajim-portable.nsi +++ b/win/misc/gajim-portable.nsi @@ -105,9 +105,9 @@ Section "Gajim" SecGajim SetOutPath "$INSTDIR\bin" CreateShortCut "$INSTDIR\Gajim-Portable.lnk" "$INSTDIR\bin\Gajim.exe" \ - "-c ..\..\UserData" "" "" SW_SHOWNORMAL "" "Gajim Portable" + "-c ..\UserData" "" "" SW_SHOWNORMAL "" "Gajim Portable" CreateShortCut "$INSTDIR\Gajim-Portable-Debug.lnk" "$INSTDIR\bin\Gajim-Debug.exe" \ - "-c ..\..\UserData" "" "" SW_SHOWNORMAL "" "Gajim Portable Debug" + "-c ..\UserData" "" "" SW_SHOWNORMAL "" "Gajim Portable Debug" SectionEnd