From 8a74b3274e79e045e12caccfe75b300f51bf0b7c Mon Sep 17 00:00:00 2001 From: Andrey Grozin Date: Wed, 30 Aug 2017 23:24:08 +0700 Subject: app-text/coolreader: initial import ebuild by Sergey Torokhov Bug: 269110 Package-Manager: Portage-2.3.6, Repoman-2.3.3 --- app-text/coolreader/Manifest | 1 + app-text/coolreader/coolreader-3.1.2.71.ebuild | 87 +++++++++++++++++++ .../coolreader/files/cr3.1.2.71-r1_qt5_wx.diff | 94 ++++++++++++++++++++ app-text/coolreader/files/cr3.1.2.71_wxGTK3.diff | 99 ++++++++++++++++++++++ app-text/coolreader/files/cr3ini.diff | 35 ++++++++ app-text/coolreader/metadata.xml | 14 +++ 6 files changed, 330 insertions(+) create mode 100644 app-text/coolreader/Manifest create mode 100644 app-text/coolreader/coolreader-3.1.2.71.ebuild create mode 100644 app-text/coolreader/files/cr3.1.2.71-r1_qt5_wx.diff create mode 100644 app-text/coolreader/files/cr3.1.2.71_wxGTK3.diff create mode 100644 app-text/coolreader/files/cr3ini.diff create mode 100644 app-text/coolreader/metadata.xml (limited to 'app-text') diff --git a/app-text/coolreader/Manifest b/app-text/coolreader/Manifest new file mode 100644 index 000000000000..fd45bc5155f0 --- /dev/null +++ b/app-text/coolreader/Manifest @@ -0,0 +1 @@ +DIST coolreader-3.1.2.71.tar.bz2 10141514 SHA256 746345984be549284713a450686f0c8b04f1485f9a28bedc457940ea1b52f7d1 SHA512 2859eabfc8ba603d1cb09b07358887135b6968268a5f2fa7f874a1e8613d1b5ebe69d9b133f16e84321d1a460eae5088a7947433c6fb340a47bde9ceee415735 WHIRLPOOL b8a8bb58c811592577dc4e1b9b1ae0ed0a3dd92e277b1501962d2c7683c0969b49f71fa147c445f7985cf82bea6431a818915bdf2387f48831fab70defdf42c7 diff --git a/app-text/coolreader/coolreader-3.1.2.71.ebuild b/app-text/coolreader/coolreader-3.1.2.71.ebuild new file mode 100644 index 000000000000..6f89f96cfcce --- /dev/null +++ b/app-text/coolreader/coolreader-3.1.2.71.ebuild @@ -0,0 +1,87 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit cmake-utils + +if [ "${PV}" == 9999 ] +then + inherit git + EGIT_REPO_URI="git://crengine.git.sourceforge.net/gitroot/crengine/crengine" + SRC_URI="" +else + # git tag cr3.1.2-71 + SRC_URI="https://dev.gentoo.org/~grozin/${P}.tar.bz2" +fi + +DESCRIPTION="CoolReader - reader of eBook files (fb2,epub,htm,rtf,txt)" +HOMEPAGE="https://sourceforge.net/projects/crengine/" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="qt4 qt5 wxwidgets" +REQUIRED_USE="^^ ( qt4 qt5 wxwidgets )" + +DEPEND="sys-libs/zlib + media-libs/libpng + virtual/jpeg + media-libs/freetype + wxwidgets? ( + >=x11-libs/wxGTK-2.8 ) + qt4? ( dev-qt/qtcore:4 + dev-qt/qtgui:4 ) + qt5? ( dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtwidgets:5 ) + " +RDEPEND="${DEPEND} + media-fonts/corefonts" + +src_prepare() { + # setting patch to save cr3.ini to ~homedir + epatch "${FILESDIR}/cr3ini.diff" + # patch to build QT5 and WX GUI version of coolreader3 + # and setting correct vesrion number and years of cr3qt/cr3wx + epatch "${FILESDIR}/cr3.1.2.71-r1_qt5_wx.diff" + if [ $(eselect wxwidgets list | grep '*' | cut -d ' ' -f 6) == "gtk2-unicode-3.0" ]; then + # patch if wxGTK3.0 (not wxGTK2.8) is active eselect profile + epatch "${FILESDIR}/cr3.1.2.71_wxGTK3.diff" + fi + eapply_user +} + +src_configure() { + CMAKE_USE_DIR="${S}" + CMAKE_BUILD_TYPE="Release" + if use qt4; then + local mycmakeargs=(-D GUI=QT) + elif use qt5; then + local mycmakeargs=(-D GUI=QT5) + elif use wxwidgets; then + . "${ROOT}/var/lib/wxwidgets/current" + if [[ "${WXCONFIG}" -eq "none" ]]; then + die "The wxGTK profile should be selected!" + fi + local mycmakeargs=(-D GUI=WX) + fi + cmake-utils_src_configure +} + +src_install() { + cmake-utils_src_install + dosym ../fonts/corefonts /usr/share/crengine/fonts + elog +} + +pkg_postinst() { +if use wxwidgets; then + elog "" + elog "KNOWN ISSUE TO FIX:" + elog "With wxwidgets gui you can see a warning message \"iCCP: known incorrect sRGB profile\"" + elog "that appears if \"Toolbar size\" is setting to \"Medium buttons\" in Options." + elog "To avoid appearing of this warning popup window you can change \"Toolbar size\" or set it to \"Hide Toolbar\"." + elog "" +fi +} diff --git a/app-text/coolreader/files/cr3.1.2.71-r1_qt5_wx.diff b/app-text/coolreader/files/cr3.1.2.71-r1_qt5_wx.diff new file mode 100644 index 000000000000..2acbd4512e03 --- /dev/null +++ b/app-text/coolreader/files/cr3.1.2.71-r1_qt5_wx.diff @@ -0,0 +1,94 @@ +# Patch that allows to build Coolreader3 with Qt5 or wxWindgets GUI. +# Qt5 build related bug : https://sourceforge.net/p/crengine/bugs/370 +# => absence of "-std=c++11 -fPIC" options in ../cr3qt/CMakeLIsts.txt +# and absence of Qt5 libraries in linking library list of ../cr3qt/CMakeLIsts.txt; +# wxWidgets build related bug : https://sourceforge.net/p/crengine/bugs/371 +# => absence of "fonconfig" in linking library list of ../cr3wx/CMakeLIsts.txt +# Add chages to years of cr3wx about dialog and merge with cr3qt about dialog patch. + +diff -Naur old/CMakeLists.txt new/CMakeLists.txt +--- old/CMakeLists.txt 2015-07-13 11:23:37.000000000 +0300 ++++ new/CMakeLists.txt 2017-08-28 00:34:39.000000000 +0300 +@@ -29,7 +29,7 @@ + endif() + elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + # Update if necessary +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic -std=c++11 -fPIC") + endif() + + if (NOT DEFINED GUI) +@@ -323,7 +323,7 @@ + message("Will make CR3/WX") + ADD_DEFINITIONS( ${DESKTOP_DEFS} -DCR_WX_SUPPORT=1 ) + SET(wxWidgets_USE_LIBS base core ) +- FIND_PACKAGE(wxWidgets) ++ FIND_PACKAGE(wxWidgets 2.8) + IF (wxWidgets_FOUND) + INCLUDE(${wxWidgets_USE_FILE}) + include_directories( ${wxWidgets_INCLUDE_DIRS} ) +diff -Naur old/cr3qt/CMakeLists.txt new/cr3qt/CMakeLists.txt +--- old/cr3qt/CMakeLists.txt 2015-07-13 11:23:37.000000000 +0300 ++++ new/cr3qt/CMakeLists.txt 2017-08-26 03:25:55.000000000 +0300 +@@ -173,7 +173,11 @@ + SET (EXTRA_LIBS ${QT_LIBRARIES} ${STD_LIBS} ) + #${QT_LIBRARIES} + ELSEIF (UNIX) +- SET (EXTRA_LIBS ${QT_LIBRARIES} fontconfig ${STD_LIBS} ) ++ IF( ${GUI} STREQUAL QT ) ++ SET (EXTRA_LIBS ${QT_LIBRARIES} fontconfig ${STD_LIBS} ) ++ ELSE() ++ SET (EXTRA_LIBS fontconfig ${STD_LIBS} ${Qt5Core_LIBRARIES} ${Qt5Widgets_LIBRARIES}) ++ ENDIF() + ELSE() + SET (EXTRA_LIBS ${STD_LIBS} ${QT_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Widgets_LIBRARIES} ) + ENDIF(MAC) +diff -Naur old/cr3wx/CMakeLists.txt new/cr3wx/CMakeLists.txt +--- old/cr3wx/CMakeLists.txt 2015-07-13 11:23:37.000000000 +0300 ++++ new/cr3wx/CMakeLists.txt 2017-08-26 01:22:53.000000000 +0300 +@@ -10,7 +10,7 @@ + ) + LINK_DIRECTORIES(${wxWidgets_LIBRARY_DIRS}) + ADD_EXECUTABLE(cr3 ${CR3_SOURCES}) +-SET (EXTRA_LIBS ${wxWidgets_LIBRARIES} ${STD_LIBS}) ++SET (EXTRA_LIBS ${wxWidgets_LIBRARIES} fontconfig ${STD_LIBS}) + TARGET_LINK_LIBRARIES(cr3 crengine tinydict ${EXTRA_LIBS}) + + IF (UNIX) +@@ -22,6 +22,9 @@ + INSTALL( DIRECTORY ../cr3qt/data/hyph DESTINATION share/cr3 + FILES_MATCHING PATTERN "*.pattern" ) + INSTALL( DIRECTORY ../cr3qt/data/skins DESTINATION share/cr3/skins ) ++ INSTALL( FILES ../cr3qt/src/desktop/cr3.desktop DESTINATION share/applications ) ++ INSTALL( FILES ../cr3qt/src/desktop/cr3.png DESTINATION share/pixmaps ) ++ INSTALL( FILES ../cr3qt/src/desktop/cr3.xpm DESTINATION share/pixmaps ) + ELSE() + INSTALL( TARGETS cr3 RUNTIME DESTINATION . ) + INSTALL( DIRECTORY ../cr3qt/data/ DESTINATION . + +# Change the dates in About program dialogs: +--- a/crengine/include/cr3version.h 2015-07-13 11:23:37.000000000 +0300 ++++ b/crengine/include/cr3version.h 2017-07-12 11:09:49.000000000 +0300 +@@ -1,2 +1,2 @@ +-#define CR_ENGINE_VERSION "3.1.2-52" +-#define CR_ENGINE_BUILD_DATE "2014-11-19" ++#define CR_ENGINE_VERSION "3.1.2-71" ++#define CR_ENGINE_BUILD_DATE "2015-07-02" + +--- a/cr3qt/src/aboutdlg.ui ++++ b/cr3qt/src/aboutdlg.ui +@@ -59 +59 @@ +- (c) 1998-2010 Vadim Lopatin ++ (c) 1998-2015 Vadim Lopatin + +--- old/cr3wx/src/cr3.cpp 2015-07-13 11:23:37.000000000 +0300 ++++ new/cr3wx/src/cr3.cpp 2017-08-28 02:29:32.000000000 +0300 +@@ -1479,7 +1479,7 @@ + void + cr3Frame::OnAbout( wxCommandEvent& WXUNUSED( event ) ) + { +- wxMessageBox( wxT( "Cool Reader " wxT(CR3_VERSION) wxT("\n(c) 1998-2007 Vadim Lopatin\nwxWidgets version\n") ) ++ wxMessageBox( wxT( "Cool Reader " wxT(CR3_VERSION) wxT("\n(c) 1998-2015 Vadim Lopatin\nwxWidgets version\n") ) + wxT("\nBased on CREngine library " wxT(CR_ENGINE_VERSION) ) + wxT("\nThird party libraries used:") + wxT("\nzlib, libpng, libjpeg, freetype2,") diff --git a/app-text/coolreader/files/cr3.1.2.71_wxGTK3.diff b/app-text/coolreader/files/cr3.1.2.71_wxGTK3.diff new file mode 100644 index 000000000000..1a0f1659592c --- /dev/null +++ b/app-text/coolreader/files/cr3.1.2.71_wxGTK3.diff @@ -0,0 +1,99 @@ +# Patch to build CoolReader3 with active wxGTK-3.0 profile +# (eselect wxwidgets is set to "gtk2-unicode-3.0" instead of "gtk2-inicode-release-2.8") +diff -Naur old/cr3wx/src/cr3.cpp new/cr3wx/src/cr3.cpp +--- old/cr3wx/src/cr3.cpp 2015-07-13 11:23:37.000000000 +0300 ++++ new/cr3wx/src/cr3.cpp 2017-08-28 12:54:13.000000000 +0300 +@@ -395,7 +395,7 @@ + + lString16 GetConfigFileName() + { +- lString16 cfgdir( wxStandardPaths::Get().GetUserDataDir().c_str() ); ++ lString16 cfgdir( wxStandardPaths::Get().GetUserDataDir().wx_str() ); + if ( !wxDirExists( cfgdir.c_str() ) ) + ::wxMkdir( wxString( cfgdir.c_str() ) ); + lChar16 slash = detectSlash( cfgdir ); +@@ -622,7 +622,7 @@ + wxImage::AddHandler(new wxPNGHandler); + resources = new ResourceContainer(); + +- lString16 appname( argv[0] ); ++ lString16 appname( argv[0].wx_str() ); + int lastSlash=-1; + lChar16 slashChar = '/'; + for ( int p=0; p<(int)appname.length(); p++ ) { +@@ -777,7 +777,7 @@ + int argc = wxGetApp().argc; + lString16 fnameToOpen; + for ( int i=1; iSetCursor( hg ); + wxSetCursor( hg ); +- _view->getDocView()->exportWolFile( dlg.GetPath(), opts.getMode()==0, opts.getLevels() ); ++ _view->getDocView()->exportWolFile( dlg.GetPath().wx_str(), opts.getMode()==0, opts.getLevels() ); + wxSetCursor( wxNullCursor ); + this->SetCursor( wxNullCursor ); + } +diff -Naur old/cr3wx/src/optdlg.cpp new/cr3wx/src/optdlg.cpp +--- old/cr3wx/src/optdlg.cpp 2015-07-13 11:23:37.000000000 +0300 ++++ new/cr3wx/src/optdlg.cpp 2017-08-28 11:38:06.000000000 +0300 +@@ -41,7 +41,7 @@ + if ( v==_choices[i] ) + tb = i; + if ( _storeStringValues ) { +- props->setString( _option, lString16(_choices[tb]) ); ++ props->setString( _option, lString16(_choices[tb].wx_str()) ); + } else { + props->setInt( _option, tb ); + } +@@ -50,7 +50,7 @@ + { + unsigned tb = _defvalue; + if ( _storeStringValues ) { +- lString8 s8 = UnicodeToUtf8( lString16(_choices[_defvalue]) ); ++ lString8 s8 = UnicodeToUtf8( lString16(_choices[_defvalue].wx_str()) ); + lString16 s16 = props->getStringDef( _option, s8.c_str() ); + wxString v = s16.c_str(); + for ( unsigned i=0; i<_choices.GetCount(); i++ ) +diff -Naur old/cr3wx/src/view.cpp new/cr3wx/src/view.cpp +--- old/cr3wx/src/view.cpp 2015-07-13 11:23:37.000000000 +0300 ++++ new/cr3wx/src/view.cpp 2017-08-28 12:57:55.000000000 +0300 +@@ -353,7 +353,7 @@ + + lString16 cr3view::GetHistoryFileName() + { +- lString16 cfgdir( wxStandardPaths::Get().GetUserDataDir().c_str() ); ++ lString16 cfgdir( wxStandardPaths::Get().GetUserDataDir().wx_str() ); + if ( !wxDirExists( cfgdir.c_str() ) ) + ::wxMkdir( wxString( cfgdir.c_str() ) ); + lChar16 slash = detectSlash( cfgdir ); +@@ -667,13 +667,13 @@ + //=========================================== + GetParent()->Update(); + //printf(" loading... "); +- bool res = getDocView()->LoadDocument( fname.c_str() ); ++ bool res = getDocView()->LoadDocument( fname.wx_str() ); + //printf(" done. \n"); + //DEBUG + //_docview->exportWolFile( "test.wol", true ); + //_docview->SetPos(0); + if ( !res ) +- getDocView()->createDefaultDocument(lString16("File open error"), lString16("Cannot open file ") + fname.c_str() ); ++ getDocView()->createDefaultDocument(lString16("File open error"), lString16("Cannot open file ") + fname.wx_str() ); + lString16 title = getDocView()->getAuthors(); + if ( !title.empty() && !getDocView()->getTitle().empty() ) + title << L". "; diff --git a/app-text/coolreader/files/cr3ini.diff b/app-text/coolreader/files/cr3ini.diff new file mode 100644 index 000000000000..66562aa836a7 --- /dev/null +++ b/app-text/coolreader/files/cr3ini.diff @@ -0,0 +1,35 @@ +# Patch to allow creating cr3.ini file in the home directory of user +# instead to trying save it in /usr/share/cr3/cr3.ini +# Bug: https://sourceforge.net/p/crengine/bugs/179/ +# Patch was proposed by "Olexandr" (see bug report) +diff --git a/cr3qt/src/mainwindow.cpp b/cr3qt/src/mainwindow.cpp +index 142242a..0401f71 100644 +--- a/cr3qt/src/mainwindow.cpp ++++ b/cr3qt/src/mainwindow.cpp +@@ -77,8 +77,8 @@ MainWindow::MainWindow(QWidget *parent) + #endif + QString cacheDir = homeDir + "cache"; + QString bookmarksDir = homeDir + "bookmarks"; +- QString histFile = exeDir + "cr3hist.bmk"; +- QString histFile2 = homeDir + "cr3hist.bmk"; ++ QString histFile2 = exeDir + "cr3hist.bmk"; ++ QString histFile = homeDir + "cr3hist.bmk"; + QString iniFile2 = exeDir + "cr3.ini"; + QString iniFile = homeDir + "cr3.ini"; + QString cssFile = homeDir + "fb2.css"; +@@ -92,9 +92,13 @@ MainWindow::MainWindow(QWidget *parent) + ldomDocCache::init( qt2cr( cacheDir ), DOC_CACHE_SIZE ); + ui->view->setPropsChangeCallback( this ); + if ( !ui->view->loadSettings( iniFile ) ) +- ui->view->loadSettings( iniFile2 ); ++ if ( !ui->view->loadSettings( iniFile2 ) ) ++ ui->view->saveSettings( iniFile ); ++ + if ( !ui->view->loadHistory( histFile ) ) +- ui->view->loadHistory( histFile2 ); ++ if ( !ui->view->loadHistory( histFile2 ) ) ++ ui->view->saveHistory( histFile ); ++ + if ( !ui->view->loadCSS( cssFile ) ) + ui->view->loadCSS( cssFile2 ); + #if ENABLE_BOOKMARKS_DIR==1 diff --git a/app-text/coolreader/metadata.xml b/app-text/coolreader/metadata.xml new file mode 100644 index 000000000000..afd1b4bc9da9 --- /dev/null +++ b/app-text/coolreader/metadata.xml @@ -0,0 +1,14 @@ + + + + + grozin@gentoo.org + + + A fast and small cross-platform XML/CSS based eBook reader for desktops and handheld devices. + Supported formats: FB2, TXT, RTF, DOC, TCR, HTML, EPUB, CHM, PDB, MOBI. + + + crengine + + -- cgit v1.2.3-65-gdbad