Skip to content

Commit

Permalink
app-text/coolreader: initial import
Browse files Browse the repository at this point in the history
ebuild by  Sergey Torokhov <[email protected]>
Bug: 269110
Package-Manager: Portage-2.3.6, Repoman-2.3.3
  • Loading branch information
Andrey Grozin committed Aug 30, 2017
1 parent 9551701 commit 8a74b32
Show file tree
Hide file tree
Showing 6 changed files with 330 additions and 0 deletions.
1 change: 1 addition & 0 deletions app-text/coolreader/Manifest
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DIST coolreader-3.1.2.71.tar.bz2 10141514 SHA256 746345984be549284713a450686f0c8b04f1485f9a28bedc457940ea1b52f7d1 SHA512 2859eabfc8ba603d1cb09b07358887135b6968268a5f2fa7f874a1e8613d1b5ebe69d9b133f16e84321d1a460eae5088a7947433c6fb340a47bde9ceee415735 WHIRLPOOL b8a8bb58c811592577dc4e1b9b1ae0ed0a3dd92e277b1501962d2c7683c0969b49f71fa147c445f7985cf82bea6431a818915bdf2387f48831fab70defdf42c7
87 changes: 87 additions & 0 deletions app-text/coolreader/coolreader-3.1.2.71.ebuild
Original file line number Diff line number Diff line change
@@ -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
}
94 changes: 94 additions & 0 deletions app-text/coolreader/files/cr3.1.2.71-r1_qt5_wx.diff
Original file line number Diff line number Diff line change
@@ -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 @@
- <string notr="true">(c) 1998-2010 Vadim Lopatin</string>
+ <string notr="true">(c) 1998-2015 Vadim Lopatin</string>

--- 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,")
99 changes: 99 additions & 0 deletions app-text/coolreader/files/cr3.1.2.71_wxGTK3.diff
Original file line number Diff line number Diff line change
@@ -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; i<argc; i++ ) {
- lString16 param = lString16( wxGetApp().argv[1] );
+ lString16 param = lString16( wxGetApp().argv[1].wx_str() );
if ( param[0]!='-' )
fnameToOpen = param;
}
@@ -1193,7 +1193,7 @@
lString16 outFile;
bool convert = false;
for ( int i=1; i<argc; i++ ) {
- lString16 param = lString16( wxGetApp().argv[i] );
+ lString16 param = lString16( wxGetApp().argv[i].wx_str() );
if ( param[0]!='-' )
fnameToOpen = param;
else if (param.startsWith("--convert"))
@@ -1470,7 +1470,7 @@
wxCursor hg( wxCURSOR_WAIT );
this->SetCursor( 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". ";
35 changes: 35 additions & 0 deletions app-text/coolreader/files/cr3ini.diff
Original file line number Diff line number Diff line change
@@ -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
14 changes: 14 additions & 0 deletions app-text/coolreader/metadata.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>[email protected]</email>
</maintainer>
<longdescription lang="en">
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.
</longdescription>
<upstream>
<remote-id type="sourceforge">crengine</remote-id>
</upstream>
</pkgmetadata>

0 comments on commit 8a74b32

Please sign in to comment.