İsocu / isocu/paketle_isocu.sh
paketle_isocu.sh 179 satır • 5.93 KB
#!/bin/bash

# --- PROJE BİLGİLERİ ---
APP_NAME="isocu"
EXE_NAME="Isocu" 
ICON_NAME="isocu"
VERSION="1.0"
ARCH="amd64"
MAINTAINER="Tarik Vardar <tarikvardar@gmail.com>"
WEBSITE="https://www.tarikvardar.com.tr"
DESCRIPTION="Klasor ve dosyalardan ISO olusturma araci."
LICENSE="MIT License"

# --- KLASÖR TANIMLARI ---
BUILD_DIR="build_deb"
OUTPUT_DEB="${APP_NAME}_${VERSION}_${ARCH}.deb"
LOCAL_DEPS="bagimliliklar"

echo "🚀 ISOCU PAKETLEME SİHİRBAZI BAŞLATILIYOR (v$VERSION)..."

# ==============================================================================
# 1. TEMİZLİK
# ==============================================================================
echo "🧹 Temizlik yapılıyor..."
rm -rf build dist $BUILD_DIR *.deb *.spec

# ==============================================================================
# 2. BAĞIMLILIKLARI VE PYINSTALLER'I YEREL KLASÖRE İNDİR
# ==============================================================================
echo "⬇️  Bağımlılıklar ve PyInstaller '$LOCAL_DEPS' klasörüne indiriliyor..."

if ! command -v pip3 &> /dev/null; then
    sudo apt-get update && sudo apt-get install -y python3-pip
fi

mkdir -p $LOCAL_DEPS

# 1. Proje bağımlılıklarını indir
pip3 install -r requirements.txt --target "$LOCAL_DEPS" --upgrade --break-system-packages

# 2. PyInstaller'ı da AYNI yere indir (Kritik Düzeltme)
pip3 install pyinstaller --target "$LOCAL_DEPS" --upgrade --break-system-packages

# Gereksiz önbellekleri temizle
find "$LOCAL_DEPS" -name "__pycache__" -type d -exec rm -rf {} +
find "$LOCAL_DEPS" -name "*.dist-info" -type d -exec rm -rf {} +

# ==============================================================================
# 3. PYINSTALLER İLE DERLEME
# ==============================================================================
echo "📦 PyInstaller ile tek parça haline getiriliyor..."
export PYTHONPATH="$(pwd)/$LOCAL_DEPS:$PYTHONPATH"

# PyInstaller modül olarak çağırılıyor, ancak yolu PYTHONPATH'te olmalı
python3 -m PyInstaller main.py \
    --name="$EXE_NAME" \
    --onedir \
    --windowed \
    --noconsole \
    --clean \
    --noconfirm \
    --strip \
    --paths="$LOCAL_DEPS" \
    --add-data="assets:assets" \
    --icon="assets/icon.png" \
    --contents-directory="libs" \
    --hidden-import="pycdlib" \
    --hidden-import="PIL" \
    --hidden-import="PyQt6" \
    --collect-all="pycdlib" \
    --collect-all="PIL" \
    --collect-all="PyQt6"

if [ ! -d "dist/$EXE_NAME" ]; then
    echo "❌ HATA: Derleme başarısız oldu!"
    exit 1
fi

# ==============================================================================
# 4. DEB PAKET YAPISI OLUŞTURMA
# ==============================================================================
echo "📂 .deb paket yapısı kuruluyor..."

mkdir -p $BUILD_DIR/DEBIAN
mkdir -p $BUILD_DIR/opt/$APP_NAME
mkdir -p $BUILD_DIR/usr/bin
mkdir -p $BUILD_DIR/usr/share/applications
mkdir -p $BUILD_DIR/usr/share/icons/hicolor/512x512/apps
mkdir -p $BUILD_DIR/usr/share/pixmaps
mkdir -p $BUILD_DIR/usr/share/doc/$APP_NAME

# Uygulama Dosyalarını Kopyala
cp -r dist/$EXE_NAME/* $BUILD_DIR/opt/$APP_NAME/

# İkonları Yerleştir
cp assets/icon.png $BUILD_DIR/usr/share/icons/hicolor/512x512/apps/$ICON_NAME.png
cp assets/icon.png $BUILD_DIR/usr/share/pixmaps/$ICON_NAME.png

# Lisans Dosyası (MIT)
cat > $BUILD_DIR/usr/share/doc/$APP_NAME/copyright << EOF
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: $APP_NAME
Source: $WEBSITE

Files: *
Copyright: 2025 $MAINTAINER
License: MIT

License: MIT
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 .
 The above copyright notice and this permission notice shall be included in all
 copies or substantial portions of the Software.
EOF

# ==============================================================================
# 5. BAŞLATICI VE DESKTOP DOSYASI
# ==============================================================================
cat > $BUILD_DIR/usr/bin/$APP_NAME << EOF
#!/bin/bash
export QT_QPA_PLATFORM=xcb
cd /opt/$APP_NAME
./$EXE_NAME "\$@"
EOF
chmod 755 $BUILD_DIR/usr/bin/$APP_NAME

cat > $BUILD_DIR/usr/share/applications/$APP_NAME.desktop << EOF
[Desktop Entry]
Name=İsocu
GenericName=ISO Oluşturucu
Comment=Klasörden ISO Dönüştürme Aracı
Exec=/usr/bin/$APP_NAME
Icon=$ICON_NAME
Terminal=false
Type=Application
Categories=Utility;DiscBurning;Filesystem;
StartupNotify=true
Keywords=iso;image;burn;create;
EOF
chmod 644 $BUILD_DIR/usr/share/applications/$APP_NAME.desktop

# ==============================================================================
# 6. CONTROL DOSYASI
# ==============================================================================
cat > $BUILD_DIR/DEBIAN/control << EOF
Package: $APP_NAME
Version: $VERSION
Architecture: $ARCH
Maintainer: $MAINTAINER
Homepage: $WEBSITE
Depends: libc6, libgl1, libegl1, libxcb-cursor0, libxcb-xinerama0, libnss3, libasound2
Section: utils
Priority: optional
Description: $DESCRIPTION
 Pardus ve Debian tabanli sistemler icin basit ve guclu ISO olusturma araci.
 .
 Lisans: $LICENSE
EOF
chmod 755 $BUILD_DIR/DEBIAN/control

# ==============================================================================
# 7. PAKETLEME VE BİTİŞ
# ==============================================================================
echo "🔒 İzinler ayarlanıyor..."
chmod -R 755 $BUILD_DIR/opt/$APP_NAME
chmod -R 755 $BUILD_DIR/DEBIAN

echo "📦 .deb paketi oluşturuluyor..."
dpkg-deb --root-owner-group --build $BUILD_DIR $OUTPUT_DEB

echo ""
echo "✅ İŞLEM BAŞARIYLA TAMAMLANDI!"
echo "📂 Oluşturulan Paket: $OUTPUT_DEB"
echo "ℹ️  Kurulum için: sudo dpkg -i $OUTPUT_DEB"