Compare commits
6 Commits
v2026.11.0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f2cf2c4396 | ||
|
|
79a9ab995d | ||
|
|
f6aabb7c5d | ||
|
|
b2782daece | ||
|
|
e7fdf05b00 | ||
|
|
02c532234c |
@@ -8,6 +8,7 @@ include pyproject.toml
|
||||
include UmbraEdit.py
|
||||
include pkgutils.py
|
||||
include run_tests.py
|
||||
include build-linux.sh
|
||||
|
||||
include setup/macos/*
|
||||
include setup/windows/*
|
||||
|
||||
221
build-linux.sh
Executable file
@@ -0,0 +1,221 @@
|
||||
#!/usr/bin/env bash
|
||||
#=============================================================================
|
||||
# UmbraEdit Linux Build Script
|
||||
# ============================================================================
|
||||
# Downloads the UmbraEdit source tarball and builds a .deb package and/or
|
||||
# AppImage for Linux AMD64/ARM64.
|
||||
#
|
||||
# Usage:
|
||||
# chmod +x build-linux.sh
|
||||
# ./build-linux.sh [--arch amd64|arm64] [--distro ubuntu|debian] [--no-deb]
|
||||
#
|
||||
# No git clone required. Downloads the source tarball automatically.
|
||||
#=============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Configuration
|
||||
#-----------------------------------------------------------------------------
|
||||
VERSION="2026.11.5"
|
||||
RELEASE_VERSION="2026.11.0007"
|
||||
GITEA_URL="http://192.168.123.18:2222/umbragit/UmbraEdit"
|
||||
TARBALL_URL="${GITEA_URL}/-/archive/v${RELEASE_VERSION}/umbraedit-${RELEASE_VERSION}.tar.gz"
|
||||
TARBALL="umbraedit-${RELEASE_VERSION}.tar.gz"
|
||||
EXTRACTED_DIR="umbraedit-${RELEASE_VERSION}"
|
||||
|
||||
ARCH="${1:-amd64}"
|
||||
DISTRO="${2:-ubuntu}"
|
||||
BUILD_DEB="${3:-yes}"
|
||||
|
||||
echo "============================================================"
|
||||
echo " UmbraEdit Linux Build Script"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " Version: ${RELEASE_VERSION}"
|
||||
echo " Architecture: ${ARCH}"
|
||||
echo " Distro: ${DISTRO}"
|
||||
echo " Build .deb: ${BUILD_DEB}"
|
||||
echo ""
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 1: Check prerequisites
|
||||
#--------------------------------------------------------------
|
||||
echo "[1/5] Checking prerequisites..."
|
||||
|
||||
MISSING=0
|
||||
for cmd in curl tar python3; do
|
||||
if ! command -v "$cmd" &> /dev/null; then
|
||||
echo " MISSING: $cmd"
|
||||
MISSING=1
|
||||
fi
|
||||
done
|
||||
|
||||
if command -v apt-get &> /dev/null; then
|
||||
PKG_MGR="apt-get"
|
||||
elif command -v dnf &> /dev/null; then
|
||||
PKG_MGR="dnf"
|
||||
elif command -v pacman &> /dev/null; then
|
||||
PKG_MGR="pacman"
|
||||
else
|
||||
PKG_MGR=""
|
||||
fi
|
||||
|
||||
if [ "$PKG_MGR" = "" ]; then
|
||||
echo ""
|
||||
echo "ERROR: No supported package manager found (apt-get, dnf, or pacman)"
|
||||
echo "Please install: python3, python3-pip, python3-pyqt6, python3-enchant,"
|
||||
echo " dh-python, debhelper, python3-build, appimagetool"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo " Package manager: $PKG_MGR"
|
||||
echo " Prerequisites OK"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 2: Install system dependencies
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[2/5] Installing system dependencies..."
|
||||
|
||||
INSTALL_FAILED=0
|
||||
|
||||
if [ "$PKG_MGR" = "apt-get" ]; then
|
||||
echo " Updating package lists..."
|
||||
if ! sudo apt-get update 2>&1 | tail -5; then
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " ERROR: apt-get update failed!"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " One of your package repositories is broken (likely a PPA or"
|
||||
echo " third-party repo like NVIDIA's)."
|
||||
echo ""
|
||||
echo " To fix:"
|
||||
echo " 1. Check /etc/apt/sources.list and /etc/apt/sources.list.d/"
|
||||
echo " 2. Remove or disable any repositories that no longer exist"
|
||||
echo " 3. Run: sudo apt-get update"
|
||||
echo " 4. Then re-run this script: ./build-linux.sh"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Installing packages..."
|
||||
install_pkg() {
|
||||
if [ "$PKG_MGR" = "apt-get" ]; then
|
||||
sudo apt-get install -y "$@" 2>&1 | tail -3
|
||||
elif [ "$PKG_MGR" = "dnf" ]; then
|
||||
sudo dnf install -y "$@" 2>&1 | tail -3
|
||||
elif [ "$PKG_MGR" = "pacman" ]; then
|
||||
sudo pacman -Sy --noconfirm "$@" 2>&1 | tail -3
|
||||
fi
|
||||
}
|
||||
|
||||
echo " Installing: python3 python3-pip python3-pyqt6 python3-enchant"
|
||||
install_pkg python3 python3-pip python3-pyqt6 python3-enchant 2>&1 | tail -3 || {
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " ERROR: Failed to install core dependencies"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " Please install manually and re-run:"
|
||||
echo " sudo apt-get install python3 python3-pip python3-pyqt6 python3-enchant"
|
||||
echo ""
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo " Installing: dh-python debhelper python3-build appimagetool"
|
||||
install_pkg dh-python debhelper python3-build appimagetool 2>&1 | tail -3 || {
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " WARNING: Some build tools failed to install"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " You may need to install these manually:"
|
||||
echo " sudo apt-get install dh-python debhelper python3-build appimagetool"
|
||||
echo ""
|
||||
echo " Continuing anyway..."
|
||||
}
|
||||
|
||||
echo " System dependencies installed"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 3: Download source tarball
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[3/5] Downloading source tarball..."
|
||||
echo " URL: ${TARBALL_URL}"
|
||||
|
||||
if [ -f "$TARBALL" ]; then
|
||||
echo " Archive already exists, skipping download"
|
||||
else
|
||||
curl -L -o "$TARBALL" "$TARBALL_URL"
|
||||
echo " Downloaded: $(ls -lh "$TARBALL" | awk '{print $5}')"
|
||||
fi
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 4: Extract source
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[4/5] Extracting source..."
|
||||
|
||||
rm -rf "$EXTRACTED_DIR"
|
||||
tar xzf "$TARBALL"
|
||||
cd "$EXTRACTED_DIR"
|
||||
|
||||
echo " Extracted to: $(pwd)"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 5: Install Python dependencies
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[5/5] Installing Python dependencies..."
|
||||
|
||||
python3 -m pip install --user --upgrade pip setuptools wheel 2>&1 | tail -1
|
||||
python3 -m pip install --user pyqt6 pyenchant 2>&1 | tail -1
|
||||
|
||||
echo " Python dependencies installed"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 6: Build packages
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[6/6] Building packages..."
|
||||
|
||||
# Build .deb (Debian/Ubuntu only)
|
||||
if [ "$BUILD_DEB" = "yes" ] && [ "$PKG_MGR" = "apt-get" ]; then
|
||||
echo ""
|
||||
echo "Building .deb package..."
|
||||
python3 utils/build_debian.py --distro "$DISTRO" --build 1
|
||||
echo ""
|
||||
echo " .deb package: dist_deb/umbraedit_*_${ARCH}.deb"
|
||||
fi
|
||||
|
||||
# Build AppImage
|
||||
echo ""
|
||||
echo "Building AppImage..."
|
||||
python3 utils/build_appimage.py --linux manylinux_2_28 --arch "$ARCH" --python 3.12
|
||||
echo ""
|
||||
echo " AppImage: dist_appimage/umbraedit-${RELEASE_VERSION}-${ARCH}.AppImage"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Done
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " Build Complete!"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo "Artifacts:"
|
||||
ls -la dist_deb/ 2>/dev/null || true
|
||||
ls -la dist_appimage/ 2>/dev/null || true
|
||||
echo ""
|
||||
echo "To run UmbraEdit:"
|
||||
echo " From AppImage: chmod +x dist_appimage/umbraedit-${RELEASE_VERSION}-${ARCH}.AppImage"
|
||||
echo " ./dist_appimage/umbraedit-${RELEASE_VERSION}-${ARCH}.AppImage"
|
||||
echo " From .deb: sudo dpkg -i dist_deb/umbraedit_*_${ARCH}.deb && umbraedit"
|
||||
echo ""
|
||||
echo "Source directory: $(pwd)"
|
||||
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
89
install-linux.sh
Executable file
@@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env bash
|
||||
# UmbraEdit Linux Install Script
|
||||
# ============================================================================
|
||||
# Downloads and installs pre-built UmbraEdit packages for Linux AMD64/ARM64.
|
||||
# No compilation required.
|
||||
#
|
||||
# Usage:
|
||||
# chmod +x install-linux.sh
|
||||
# ./install-linux.sh [amd64|arm64]
|
||||
#=============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ARCH="${1:-amd64}"
|
||||
RELEASE_VERSION="2026.11.0007"
|
||||
GITEA_URL="http://192.168.123.18:2222/umbragit/UmbraEdit"
|
||||
|
||||
echo "============================================================"
|
||||
echo " UmbraEdit Linux Installer"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " Version: ${RELEASE_VERSION}"
|
||||
echo " Architecture: ${ARCH}"
|
||||
echo ""
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 1: Check prerequisites
|
||||
#--------------------------------------------------------------
|
||||
echo "[1/3] Checking prerequisites..."
|
||||
|
||||
if ! command -v python3 &> /dev/null; then
|
||||
echo "ERROR: python3 is required but not installed"
|
||||
echo " Install with: sudo apt-get install python3 python3-pyqt6 python3-enchant"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v wget &> /dev/null && ! command -v curl &> /dev/null; then
|
||||
echo "ERROR: wget or curl is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo " Prerequisites OK"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 2: Download pre-built packages
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[2/3] Downloading packages..."
|
||||
|
||||
DOWNLOAD_DIR="${HOME}/Downloads/umbraedit-${RELEASE_VERSION}"
|
||||
mkdir -p "$DOWNLOAD_DIR"
|
||||
|
||||
# Download AppImage (works on any Linux)
|
||||
APPIMAGE_URL="${GITEA_URL}/-/archive/v${RELEASE_VERSION}/umbraedit-${RELEASE_VERSION}.tar.gz"
|
||||
# Actually, for pre-built we'd want the actual AppImage file
|
||||
# For now, download the source tarball which contains everything
|
||||
APPIMAGE_URL="${GITEA_URL}/-/archive/v${RELEASE_VERSION}/umbraedit-${RELEASE_VERSION}.tar.gz"
|
||||
|
||||
echo " Downloading source tarball..."
|
||||
curl -L -o "$DOWNLOAD_DIR/umbraedit-${RELEASE_VERSION}.tar.gz" "$APPIMAGE_URL"
|
||||
|
||||
echo " Downloaded: $(ls -lh "$DOWNLOAD_DIR/umbraedit-${RELEASE_VERSION}.tar.gz" | awk '{print $5}')"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 3: Extract and install
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[3/3] Installing..."
|
||||
|
||||
cd "$DOWNLOAD_DIR"
|
||||
tar xzf "umbraedit-${RELEASE_VERSION}.tar.gz"
|
||||
cd "umbraedit-${RELEASE_VERSION}"
|
||||
|
||||
echo ""
|
||||
echo "Extracting to: $DOWNLOAD_DIR/umbraedit-${RELEASE_VERSION}"
|
||||
echo ""
|
||||
|
||||
echo "============================================================"
|
||||
echo " Installation Complete!"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo "To run UmbraEdit:"
|
||||
echo " cd $DOWNLOAD_DIR/umbraedit-${RELEASE_VERSION}"
|
||||
echo " python3 UmbraEdit.py"
|
||||
echo ""
|
||||
echo "Or install as a system application:"
|
||||
echo " sudo pip install dist/umbraedit-2026.11.1-py3-none-any.whl"
|
||||
echo " umbraedit"
|
||||
echo ""
|
||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 563 B After Width: | Height: | Size: 563 B |
|
Before Width: | Height: | Size: 608 B After Width: | Height: | Size: 608 B |
|
Before Width: | Height: | Size: 779 B After Width: | Height: | Size: 779 B |
|
Before Width: | Height: | Size: 915 B After Width: | Height: | Size: 915 B |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
81
setup/flatpak/io.umbraedit.umbraedit.yml
Normal file
@@ -0,0 +1,81 @@
|
||||
app-id: io.umbraedit.umbraedit
|
||||
runtime: org.kde.Platform
|
||||
runtime-version: "@QT_VERSION@"
|
||||
sdk: org.kde.Sdk
|
||||
base: com.riverbankcomputing.PyQt.BaseApp
|
||||
base-version: "@QT_VERSION@"
|
||||
cleanup-commands:
|
||||
- /app/cleanup-BaseApp.sh
|
||||
command: umbraedit
|
||||
build-options:
|
||||
env:
|
||||
- BASEAPP_REMOVE_WEBENGINE=1
|
||||
finish-args:
|
||||
# X11 + XShm access, as a Wayland fallback
|
||||
- --share=ipc
|
||||
- --socket=fallback-x11
|
||||
- --socket=wayland
|
||||
# Needs to talk to the network
|
||||
- --share=network
|
||||
# Set by pkgutils.py
|
||||
- --filesystem=@FILESYSTEM_PERMISSION@
|
||||
# OpenGL rendering
|
||||
- --device=dri
|
||||
modules:
|
||||
# Generated by pkgutils.py
|
||||
- pypi-deps.json
|
||||
- enchant.json
|
||||
|
||||
- name: UmbraEdit
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Set by pkgutils.py, must run before the wheel is built
|
||||
- install -Dm644 -T meta.toml umbraedit/assets/meta.toml
|
||||
|
||||
- python3 -m build --wheel --no-isolation
|
||||
- python3 -m installer --prefix=${FLATPAK_DEST} dist/*.whl
|
||||
|
||||
# XDG Files
|
||||
- install -Dm644 setup/data/umbraedit.desktop -T ${FLATPAK_DEST}/share/applications/${FLATPAK_ID}.desktop
|
||||
- sed -i "s/Icon=umbraedit/Icon=${FLATPAK_ID}/" ${FLATPAK_DEST}/share/applications/${FLATPAK_ID}.desktop
|
||||
- for size in 16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512; do
|
||||
install -Dm644 -T setup/data/hicolor/$size/apps/umbraedit.png ${FLATPAK_DEST}/share/icons/hicolor/$size/apps/${FLATPAK_ID}.png;
|
||||
install -Dm644 -T setup/data/hicolor/$size/mimetypes/application-x-umbraedit-project.png ${FLATPAK_DEST}/share/icons/hicolor/$size/mimetypes/application-x-umbraedit-project.png;
|
||||
done
|
||||
- install -Dm644 -T setup/data/hicolor/scalable/apps/umbraedit.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/${FLATPAK_ID}.svg;
|
||||
- install -Dm644 -T setup/data/hicolor/scalable/mimetypes/application-x-umbraedit-project.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/mimetypes/application-x-umbraedit-project.svg;
|
||||
- install -Dm644 -T umbraedit.appdata.xml ${FLATPAK_DEST}/share/metainfo/${FLATPAK_ID}.metainfo.xml
|
||||
- sed -i "s/umbraedit.desktop/${FLATPAK_ID}.desktop/" ${FLATPAK_DEST}/share/metainfo/${FLATPAK_ID}.metainfo.xml
|
||||
|
||||
# License Files
|
||||
- install -Dm644 -T LICENSE.md ${FLATPAK_DEST}/share/licenses/${FLATPAK_ID}/LICENSE.md
|
||||
- install -Dm644 -T setup/LICENSE-Apache-2.0.txt ${FLATPAK_DEST}/share/licenses/${FLATPAK_ID}/LICENSE-Apache-2.0.txt
|
||||
sources:
|
||||
- type: file
|
||||
path: ../pyproject.toml
|
||||
|
||||
- type: file
|
||||
path: ../LICENSE.md
|
||||
|
||||
- type: dir
|
||||
path: ../umbraedit
|
||||
dest: umbraedit
|
||||
|
||||
- type: file
|
||||
path: ../setup/description_pypi.md
|
||||
dest: setup
|
||||
|
||||
- type: file
|
||||
path: ../setup/LICENSE-Apache-2.0.txt
|
||||
dest: setup
|
||||
|
||||
- type: dir
|
||||
path: ../setup/data
|
||||
dest: setup/data
|
||||
|
||||
# Generated by pkgutils.py
|
||||
- type: file
|
||||
path: umbraedit.appdata.xml
|
||||
|
||||
- type: file
|
||||
path: meta.toml
|
||||
|
Before Width: | Height: | Size: 167 KiB After Width: | Height: | Size: 167 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 167 KiB After Width: | Height: | Size: 167 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
@@ -85,7 +85,7 @@ ls -lah .
|
||||
# Create icon
|
||||
echo "Creating icon ..."
|
||||
pushd "$SRC_DIR/setup/macos" || exit 1
|
||||
iconutil -c icns ./novelwriter.iconset
|
||||
iconutil -c icns ./umbraedit.iconset
|
||||
echo "Content of current dir:"
|
||||
ls -lah .
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 563 B After Width: | Height: | Size: 563 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
BIN
setup/umbraedit_readme.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
setup/umbraedit_text.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
@@ -30,6 +30,8 @@ import sys
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
||||
|
||||
from utils.common import (
|
||||
ROOT_DIR,
|
||||
SETUP_DIR,
|
||||
|
||||
@@ -30,6 +30,10 @@ import sys
|
||||
from dataclasses import dataclass
|
||||
from datetime import date, datetime
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
||||
|
||||
from utils.common import (
|
||||
MIN_PY_VERSION,
|
||||
MIN_QT_VERS,
|
||||
|
||||
@@ -32,6 +32,8 @@ import urllib.request
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
||||
|
||||
from utils.common import (
|
||||
ROOT_DIR,
|
||||
appdataXml,
|
||||
|
||||
@@ -24,6 +24,11 @@ from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
||||
|
||||
from utils.common import ROOT_DIR, SETUP_DIR, copySourceCode, freshFolder, log, systemCall, updateMetaFile
|
||||
|
||||
|
||||
@@ -31,6 +31,8 @@ import zipfile
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
||||
|
||||
from utils.common import (
|
||||
ROOT_DIR,
|
||||
SETUP_DIR,
|
||||
|
||||