From d77f04a84e53ec4f54ac464a3694746c66187860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Jastrz=C4=99bski?= Date: Sun, 20 Aug 2017 11:23:22 +0200 Subject: [PATCH] Implemented new build enviroments --- .gitignore | 2 -- .travis.yml | 56 +++++++++++++++++++++++++----------- appveyor.yml | 27 +++++++++++++++++ docker/Build | 18 ------------ docker/Dockerfile | 12 -------- other/linux/sentry.py.enc | Bin 0 -> 176 bytes other/windows/Cert.pfx.enc | Bin 0 -> 3520 bytes other/windows/sentry.py.enc | 3 ++ setup.bat | 4 +++ setup.py | 37 +++++++++++++++--------- 10 files changed, 97 insertions(+), 62 deletions(-) create mode 100644 appveyor.yml delete mode 100755 docker/Build delete mode 100644 docker/Dockerfile create mode 100644 other/linux/sentry.py.enc create mode 100644 other/windows/Cert.pfx.enc create mode 100644 other/windows/sentry.py.enc create mode 100644 setup.bat diff --git a/.gitignore b/.gitignore index d4fbd53..6b1ecfe 100644 --- a/.gitignore +++ b/.gitignore @@ -10,8 +10,6 @@ test solaio kindlegen* *.spec -setup.bat -setup.sh kindlecomicconverter/sentry.py build/ .python-version diff --git a/.travis.yml b/.travis.yml index a899736..11a98b4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,24 +1,46 @@ -language: generic -os: osx -osx_image: xcode6.4 +matrix: + include: + - os: linux + language: python + python: 3.6 + dist: trusty + sudo: required + - os: osx + language: generic + osx_image: xcode6.4 + before_install: -- brew update -- brew install python3 -- brew upgrade node -- pip3 install --upgrade pip setuptools wheel -- openssl aes-256-cbc -K $encrypted_a95564d8ff0d_key -iv $encrypted_a95564d8ff0d_iv -in other/osx/sentry.py.enc -out kindlecomicconverter/sentry.py -d +- if [ "$TRAVIS_OS_NAME" == "linux" ] ; then sudo apt-get -y install ruby ruby-dev ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] ; then pip install --upgrade pip setuptools wheel ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] ; then openssl aes-256-cbc -K $encrypted_a95564d8ff0d_key -iv $encrypted_a95564d8ff0d_iv -in other/linux/sentry.py.enc -out kindlecomicconverter/sentry.py -d ; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] ; then brew update ; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] ; then brew install python3 ; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] ; then brew upgrade node ; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] ; then pip3 install --upgrade pip setuptools wheel ; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] ; then openssl aes-256-cbc -K $encrypted_a95564d8ff0d_key -iv $encrypted_a95564d8ff0d_iv -in other/osx/sentry.py.enc -out kindlecomicconverter/sentry.py -d ; fi + install: -- pip3 install -r requirements.txt -- pip3 install certifi https://github.com/pyinstaller/pyinstaller/archive/develop.zip -- npm install -g appdmg +- if [ "$TRAVIS_OS_NAME" == "linux" ] ; then pip install -r requirements.txt ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] ; then pip install certifi https://github.com/pyinstaller/pyinstaller/archive/develop.zip ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] ; then gem install fpm ; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] ; then pip3 install -r requirements.txt ; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] ; then pip3 install certifi https://github.com/pyinstaller/pyinstaller/archive/develop.zip ; fi +- if [ "$TRAVIS_OS_NAME" == "osx" ] ; then npm install -g appdmg ; fi + script: python3 setup.py build_binary + +before_deploy: +- shopt -s extglob +- rm -r dist/!(*.deb|*.dmg) + deploy: - provider: releases - api_key: - secure: ZsluoJQ+diDTIjh5tvqdjAdWc1MJX6wSk5vTGFqLAMV0wK8ypGa2+qxDB0sTFR7SRhQlAfBFi0q//li+XdWn6rUkUTqjOuS9xwfdKIYXuIrIJolgsbSeenYuLeAM23VYdH6NYBHVSjIK6O1H7enRkzot4GKZk91A3MZ/SnqBjsc1KvUVmQF19xmLha1y0WYitDCy7P1cT8517Cbhg6q8yTBUn/YjfFKyuDdbQFWe894n767mr33yvm1asHtYUsPYSif6ZdvhNDtMxUMaJTX0lPG6pZQLYV2HQipppMYSdbmsQOhamjPVcF6Chy3TAK5433smk3SiNGjg2wyGiN74JYpcc0MnGE5a5ZaDzBaavSvFrGZiHeygzaZUtFx3spsqcTgdJ1LZZ1aDRTrDhzi3FMjUFDLuwyDD5nJyS9bRHE30T9me7VSAcdJGrz1joShSYK6VMFvHUG3wUk0Bd+3KJZ75lJnP6TqVLgLjkWN4rcaN9caWylzT3ximKuHDg2S2aB23YYC4HFOrYdABM9fGcnuCVDwr16bBNM8zOGxNPswKfLBX1YWBr6EOXbrypMnekZDK2T5aqTP8L0IbImGety7P8b54r7nRTqFnELYrkVxmM+fUKPMPXMm/mZadrGg3bHjZYXm+nq7V6oMI2gEcNbpzKxx6l9XOjiBjN0uk/A0= - file_glob: true - file: dist/KindleComicConverter_osx_* + provider: s3 skip_cleanup: true + access_key_id: AKIAIQNL5R4FI4C4NJYQ + secret_access_key: + secure: X66hYplxB4QSueljwvDfamNH/MQmHjo3mCofBcaTHAr7n2fp+yd2NzD2yy9h8NbsL0LWwx9wtJa/jpkIE02ZDfi9NrMLvKKFazzdpiyTMN5Yh85lHHyD1XIOCZRd4igaZ+O8975tJAEaEOPS+PE9XGZcRBh+y/eSJ+fMEgohaJ1MtDFbQR7X1cEw3iqbjrV2rlghZNCk/9mZEfObzAEjQiSDpv5G0IuIPRvYg/BgZt8chHVAe03B6oqcBa7uCBCTlfHIiNh1MWtP0B3NNBq3dcu9QHOFri1YqoZKuaPVCf6TFQL/NW5dFihegev2t9IwFyaBxytiT8fBkgQhP0VX8cuCwBAfnQGIogAu0eLSPp+E6dB/7Cpt2GDCk39+As8WKqt9hCRHmrvYhPA1Mq9QyEgKy/TKKKfDby3qVTIqYOQYpuQ1B7sIU651L5A+hBvZ1dqWIUz25h0zqjjeSFrcfNnf1e4tkk0QJvvnKqz0xsVaJxA2p07VJMRn8SlZQIJ2GEbMDeB5jxYtf5JzXywChP9adlPNjLna9G8ScnGSU1f7ZhsBQUEgY5jBlnX1lveyl3DUe6NP+qOTyljLWYwjx3AF4Zg10LYSecRS6hnqAUrGRmibDCIYclUzlJkVyjKGJ9uEyrUiCp0P0IsAzE1XhPVAWEyGUcWWGJG+jgmohSk= + bucket: kcc-deploy + region: eu-central-1 + local_dir: dist on: repo: AcidWeb/kcc - tags: true diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..2a47721 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,27 @@ +environment: + PYTHON: "C:\\Python36-x64" + +install: + - set PATH="%PYTHON%\\Scripts";"C:\\Program Files (x86)\\Inno Setup 5";%PATH% + - "%PYTHON%\\python.exe -m pip install --upgrade pip setuptools wheel" + - "%PYTHON%\\python.exe -m pip install -r requirements.txt" + - "%PYTHON%\\python.exe -m pip install certifi https://github.com/pyinstaller/pyinstaller/archive/develop.zip" + - nuget install secure-file -ExcludeVersion + - nuget install verpatch -ExcludeVersion + - secure-file\tools\secure-file -decrypt other\windows\Cert.pfx.enc -secret %ENCRYPTION% + - secure-file\tools\secure-file -decrypt other\windows\sentry.py.enc -out kindlecomicconverter\sentry.py -secret %ENCRYPTION% + +build_script: + - "%PYTHON%\\python.exe setup.py build_binary" + +after_build: + - ps: Get-ChildItem .\dist\KindleComicConverter_win_* | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name } + +deploy: + provider: S3 + access_key_id: + secure: pWfyU8wtAHt354mBILwM41TemOjb+My9n3CRMnrpLzI= + secret_access_key: + secure: G0Xpxe355LMqV3s8v+TsdJYdmhFoKKA+mxK37Tlu8yNwKXKJgcnY7pcFKSdX5xS5 + bucket: kcc-deploy + region: eu-central-1 diff --git a/docker/Build b/docker/Build deleted file mode 100755 index 53ca557..0000000 --- a/docker/Build +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -set -e - -pip3 install --upgrade pip setuptools wheel -pip3 install pillow python-slugify psutil raven pyqt5 certifi https://github.com/pyinstaller/pyinstaller/archive/develop.zip -gem install fpm - -cd /app -pyinstaller -F -s kcc.py -mkdir -p dist/usr/bin dist/usr/share/applications dist/usr/share/doc/kindlecomicconverter dist/usr/share/kindlecomicconverter dist/usr/share/lintian/overrides -mv dist/kcc dist/usr/bin -cp icons/comic2ebook.png dist/usr/share/kindlecomicconverter -cp LICENSE.txt dist/usr/share/doc/kindlecomicconverter/copyright -cp other/linux/kindlecomicconverter.desktop dist/usr/share/applications -cp other/linux/kindlecomicconverter dist/usr/share/lintian/overrides - -cd /app/dist -fpm -f -s dir -t deb -n kindlecomicconverter -v $KCCVER -m "Paweł Jastrzębski " --license "ISC" --description "$(printf "Comic and Manga converter for e-book readers.\nThis app allows you to transform your PNG, JPG, GIF, CBZ, CBR and CB7 files\ninto EPUB or MOBI format e-books.")" --url "https://kcc.iosphe.re/" --deb-priority "optional" --vendor "" --category "graphics" -d "unrar | unrar-free" -d "p7zip-full" -d "libc6" usr diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 89dd7e3..0000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -# acidweb/kcc -FROM debian:stretch -MAINTAINER Paweł Jastrzębski - -ADD ./Build /Build - -RUN apt-get update && apt-get -y dist-upgrade -RUN apt-get -y install build-essential curl ruby ruby-dev libpng-dev libjpeg-dev python3 python3-dev python3-pyqt5 -RUN curl https://bootstrap.pypa.io/get-pip.py | python3 -RUN apt-get clean -y && apt-get autoclean -y && apt-get autoremove -y && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -CMD /Build diff --git a/other/linux/sentry.py.enc b/other/linux/sentry.py.enc new file mode 100644 index 0000000000000000000000000000000000000000..c38a68ce176fcfadfcd8c93bca3a69adc3e9e103 GIT binary patch literal 176 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\,D·!yX薁~~Y_xd B T +B𢯣 +u|91u~PaLDjh \ No newline at end of file diff --git a/setup.bat b/setup.bat new file mode 100644 index 0000000..ac9de58 --- /dev/null +++ b/setup.bat @@ -0,0 +1,4 @@ +@echo off +verpatch\lib\win\verpatch dist\KCC.exe %1 /va /pv %1 /s product "Kindle Comic Converter" /s description "Kindle Comic Converter" /s copyright "Copyright (C) 2012-2017 Ciro Mattia Gonano and Pawel Jastrzebski" +"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe" sign /f "%APPVEYOR_BUILD_FOLDER%\other\windows\Cert.pfx" /p "%CERT_PASS%" /t http://time.certum.pl /d "Kindle Comic Converter" /du "http://kcc.iosphe.re/" dist/KCC.exe +iscc /SSignTool="""C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe"" sign /f ""%APPVEYOR_BUILD_FOLDER%\other\windows\Cert.pfx"" /p ""%CERT_PASS%"" /t http://time.certum.pl $p" kcc.iss >nul 2>&1 diff --git a/setup.py b/setup.py index 563e5cb..fc03362 100755 --- a/setup.py +++ b/setup.py @@ -31,12 +31,11 @@ class BuildBinaryCommand(distutils.cmd.Command): def finalize_options(self): pass + # noinspection PyShadowingNames def run(self): + VERSION = __version__ if sys.platform == 'darwin': - if os.path.isfile('Kindle Comic Converter.spec'): - os.system('pyinstaller "Kindle Comic Converter.spec"') - else: - os.system('pyinstaller -y -F -i icons/comic2ebook.icns -n "Kindle Comic Converter" -w -s kcc.py') + os.system('pyinstaller -y -F -i icons/comic2ebook.icns -n "Kindle Comic Converter" -w -s kcc.py') shutil.copy('other/osx/7za', 'dist/Kindle Comic Converter.app/Contents/Resources') shutil.copy('other/osx/unrar', 'dist/Kindle Comic Converter.app/Contents/Resources') shutil.copy('other/osx/Info.plist', 'dist/Kindle Comic Converter.app/Contents') @@ -44,20 +43,32 @@ class BuildBinaryCommand(distutils.cmd.Command): shutil.copy('other/windows/Additional-LICENSE.txt', 'dist/Kindle Comic Converter.app/Contents/Resources') os.chmod('dist/Kindle Comic Converter.app/Contents/Resources/unrar', 0o777) os.chmod('dist/Kindle Comic Converter.app/Contents/Resources/7za', 0o777) - if os.path.isfile('setup.sh'): - os.system('./setup.sh') os.system('appdmg kcc.json dist/KindleComicConverter_osx_' + VERSION + '.dmg') exit(0) elif sys.platform == 'win32': - if os.path.isfile('KCC.spec'): - os.system('pyinstaller KCC.spec') - else: - os.system('pyinstaller -y -F -i icons\comic2ebook.ico -n KCC -w --noupx kcc.py') - if os.path.isfile('setup.bat'): - os.system('setup.bat') + os.system('pyinstaller -y -F -i icons\comic2ebook.ico -n KCC -w --noupx kcc.py') + if os.getenv('APPVEYOR'): + if len(VERSION) == 3: + VERSION = VERSION + '.0' + os.system('setup.bat ' + VERSION) exit(0) else: - os.system('docker run --rm -v ' + os.getcwd() + ':/app -e KCCVER=' + VERSION + ' acidweb/kcc') + os.system('pyinstaller -F -s kcc.py') + os.system('mkdir -p dist/usr/bin dist/usr/share/applications dist/usr/share/doc/kindlecomicconverter ' + 'dist/usr/share/kindlecomicconverter dist/usr/share/lintian/overrides') + os.system('mv dist/kcc dist/usr/bin') + os.system('cp icons/comic2ebook.png dist/usr/share/kindlecomicconverter') + os.system('cp LICENSE.txt dist/usr/share/doc/kindlecomicconverter/copyright') + os.system('cp other/linux/kindlecomicconverter.desktop dist/usr/share/applications') + os.system('cp other/linux/kindlecomicconverter dist/usr/share/lintian/overrides') + os.chdir('dist') + os.system('fpm -f -s dir -t deb -n kindlecomicconverter -v ' + VERSION + + ' -m "Paweł Jastrzębski " --license "ISC" ' + '--description "$(printf "Comic and Manga converter for e-book ' + 'readers.\nThis app allows you to transform your PNG, JPG, GIF, ' + 'CBZ, CBR and CB7 files\ninto EPUB or MOBI format e-books.")" ' + '--url "https://kcc.iosphe.re/" --deb-priority "optional" --vendor "" ' + '--category "graphics" -d "unrar | unrar-free" -d "p7zip-full" -d "libc6" usr') exit(0) setuptools.setup(