Recoll Python module build with msvc. Help the module find the datadir.
This commit is contained in:
parent
398799b022
commit
23c2776cb4
@ -20,8 +20,6 @@
|
|||||||
#include <structmember.h>
|
#include <structmember.h>
|
||||||
#include <bytearrayobject.h>
|
#include <bytearrayobject.h>
|
||||||
|
|
||||||
#include <strings.h>
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
|||||||
@ -19,8 +19,6 @@
|
|||||||
#include <structmember.h>
|
#include <structmember.h>
|
||||||
#include <bytesobject.h>
|
#include <bytesobject.h>
|
||||||
|
|
||||||
#include <strings.h>
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|||||||
@ -54,7 +54,14 @@ class RclConfig:
|
|||||||
self.datadir = os.environ["RECOLL_DATADIR"]
|
self.datadir = os.environ["RECOLL_DATADIR"]
|
||||||
else:
|
else:
|
||||||
if platsys == "Windows":
|
if platsys == "Windows":
|
||||||
self.datadir = os.path.join(os.path.dirname(sys.argv[0]), "..")
|
dirs = (os.path.join(os.path.dirname(sys.argv[0]), "..", ".."),
|
||||||
|
"C:/Program Files (X86)/Recoll/",
|
||||||
|
"C:/Program Files/Recoll/",
|
||||||
|
"C:/install/recoll/")
|
||||||
|
for dir in dirs:
|
||||||
|
if os.path.exists(os.path.join(dir, "Share")):
|
||||||
|
self.datadir = os.path.join(dir, "Share")
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
dirs = ("/opt/local", "/usr", "/usr/local")
|
dirs = ("/opt/local", "/usr", "/usr/local")
|
||||||
for dir in dirs:
|
for dir in dirs:
|
||||||
|
|||||||
@ -40,6 +40,7 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include "rclutil.h"
|
#include "rclutil.h"
|
||||||
#include "pathut.h"
|
#include "pathut.h"
|
||||||
@ -193,23 +194,44 @@ string path_defaultrecollconfsubdir()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Location for sample config, filters, etc. (e.g. /usr/share/recoll/)
|
// Location for sample config, filters, etc. E.g. /usr/share/recoll/ on linux
|
||||||
|
// or c:/program files (x86)/recoll/share on Windows
|
||||||
const string& path_pkgdatadir()
|
const string& path_pkgdatadir()
|
||||||
{
|
{
|
||||||
static string datadir;
|
static string datadir;
|
||||||
if (datadir.empty()) {
|
if (!datadir.empty()) {
|
||||||
#ifdef _WIN32
|
return datadir;
|
||||||
datadir = path_cat(path_thisexecpath(), "Share");
|
|
||||||
#else
|
|
||||||
const char *cdatadir = getenv("RECOLL_DATADIR");
|
|
||||||
if (cdatadir == 0) {
|
|
||||||
// If not in environment, use the compiled-in constant.
|
|
||||||
datadir = RECOLL_DATADIR;
|
|
||||||
} else {
|
|
||||||
datadir = cdatadir;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
const char *cdatadir = getenv("RECOLL_DATADIR");
|
||||||
|
if (nullptr != cdatadir) {
|
||||||
|
datadir = cdatadir;
|
||||||
|
return datadir;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
// Try a path relative with the exec. This works if we are
|
||||||
|
// recoll/recollindex etc.
|
||||||
|
// But maybe we are the python module, and execpath is the python
|
||||||
|
// exe which could be anywhere. Try the default installation
|
||||||
|
// directory, else tell the user to set the environment
|
||||||
|
// variable.
|
||||||
|
vector<string> paths{path_thisexecpath(), "c:/program files (x86)/recoll",
|
||||||
|
"c:/program files/recoll"};
|
||||||
|
for (const auto& path : paths) {
|
||||||
|
datadir = path_cat(path, "Share");
|
||||||
|
if (path_exists(datadir)) {
|
||||||
|
return datadir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Not found
|
||||||
|
std::cerr << "Could not find the recoll installation data. It is usually "
|
||||||
|
"a subfolder of the installation directory. \n"
|
||||||
|
"Please set the RECOLL_DATADIR environment variable to point to it\n"
|
||||||
|
"(e.g. setx RECOLL_DATADIR \"C:/Program Files (X86)/Recoll/Share)\"\n";
|
||||||
|
#else
|
||||||
|
// If not in environment, use the compiled-in constant.
|
||||||
|
datadir = RECOLL_DATADIR;
|
||||||
|
#endif
|
||||||
return datadir;
|
return datadir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,14 +22,14 @@ test -d $DESTDIR || mkdir $DESTDIR || fatal cant create $DESTDIR
|
|||||||
################################
|
################################
|
||||||
# Local values (to be adjusted)
|
# Local values (to be adjusted)
|
||||||
|
|
||||||
#BUILD=MSVC
|
BUILD=MSVC
|
||||||
BUILD=MINGW
|
#BUILD=MINGW
|
||||||
|
|
||||||
if test $BUILD = MSVC ; then
|
if test $BUILD = MSVC ; then
|
||||||
# Recoll src tree
|
# Recoll src tree
|
||||||
RCL=c:/users/bill/documents/recoll/src/
|
RCL=c:/users/bill/documents/recoll/src/
|
||||||
# Recoll dependancies
|
# Recoll dependancies
|
||||||
RCLDEPS=c:/users/bill/documents/recolldeps/
|
RCLDEPS=/c/users/bill/documents/recolldeps/
|
||||||
QTA=Desktop_Qt_5_14_1_MSVC2017_32bit-Release/release
|
QTA=Desktop_Qt_5_14_1_MSVC2017_32bit-Release/release
|
||||||
LIBXML=${RCLDEPS}/msvc/libxml2/libxml2-2.9.4+dfsg1/win32/bin.msvc/libxml2.dll
|
LIBXML=${RCLDEPS}/msvc/libxml2/libxml2-2.9.4+dfsg1/win32/bin.msvc/libxml2.dll
|
||||||
LIBXSLT=${RCLDEPS}/msvc/libxslt/libxslt-1.1.29/win32/bin.msvc/libxslt.dll
|
LIBXSLT=${RCLDEPS}/msvc/libxslt/libxslt-1.1.29/win32/bin.msvc/libxslt.dll
|
||||||
@ -37,6 +37,7 @@ if test $BUILD = MSVC ; then
|
|||||||
ZLIB=${RCLDEPS}/msvc/zlib-1.2.11
|
ZLIB=${RCLDEPS}/msvc/zlib-1.2.11
|
||||||
QTBIN=C:/Qt/5.14.1/msvc2017/bin
|
QTBIN=C:/Qt/5.14.1/msvc2017/bin
|
||||||
MINGWBIN=c:/Qt/5.14.1/mingw73_32/bin/
|
MINGWBIN=c:/Qt/5.14.1/mingw73_32/bin/
|
||||||
|
PYRECOLL=${RCL}/python/recoll/
|
||||||
else
|
else
|
||||||
# Recoll src tree
|
# Recoll src tree
|
||||||
RCL=c:/recoll/src/
|
RCL=c:/recoll/src/
|
||||||
@ -45,7 +46,6 @@ else
|
|||||||
QTA=Desktop_Qt_5_8_0_MinGW_32bit-Release/release
|
QTA=Desktop_Qt_5_8_0_MinGW_32bit-Release/release
|
||||||
LIBXAPIAN=${RCLDEPS}/mingw/xapian-core-1.4.11/.libs/libxapian-30.dll
|
LIBXAPIAN=${RCLDEPS}/mingw/xapian-core-1.4.11/.libs/libxapian-30.dll
|
||||||
ZLIB=${RCLDEPS}/mingw/zlib-1.2.8
|
ZLIB=${RCLDEPS}/mingw/zlib-1.2.8
|
||||||
ASPELL=${RCLDEPS}/mingw/aspell-0.60.7/aspell-installed
|
|
||||||
QTGCCBIN=C:/qt/Qt5.8.0/Tools/mingw530_32/bin/
|
QTGCCBIN=C:/qt/Qt5.8.0/Tools/mingw530_32/bin/
|
||||||
QTBIN=C:/Qt/Qt5.8.0/5.8/mingw53_32/bin
|
QTBIN=C:/Qt/Qt5.8.0/5.8/mingw53_32/bin
|
||||||
MINGWBIN=$QTBIN
|
MINGWBIN=$QTBIN
|
||||||
@ -53,6 +53,11 @@ else
|
|||||||
export PATH
|
export PATH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# We use the mingw-compiled aspell program in both cases. When
|
||||||
|
# compiling with msvc, we copy the msvc dll to the recoll top dir (and
|
||||||
|
# don't use the exec, we keep the already tested mingw one).
|
||||||
|
ASPELL=${RCLDEPS}/mingw/aspell-0.60.7/aspell-installed
|
||||||
|
|
||||||
# Where to find libgcc_s_dw2-1.dll et all for progs compiled with
|
# Where to find libgcc_s_dw2-1.dll et all for progs compiled with
|
||||||
# c:/MinGW (as opposed to the mingw bundled with qt). This is the same
|
# c:/MinGW (as opposed to the mingw bundled with qt). This is the same
|
||||||
# for either a msvc or mingw build of recoll itself.
|
# for either a msvc or mingw build of recoll itself.
|
||||||
@ -128,7 +133,7 @@ copyqt()
|
|||||||
copypython()
|
copypython()
|
||||||
{
|
{
|
||||||
mkdir -p $DESTDIR/Share/filters/python
|
mkdir -p $DESTDIR/Share/filters/python
|
||||||
cp -rp $PYTHON/* $DESTDIR/Share/filters/python
|
rsync -av $PYTHON/* $DESTDIR/Share/filters/python
|
||||||
chkcp $PYTHON/python.exe $DESTDIR/Share/filters/python/python.exe
|
chkcp $PYTHON/python.exe $DESTDIR/Share/filters/python/python.exe
|
||||||
chkcp $MISC/hwp5html $FILTERS
|
chkcp $MISC/hwp5html $FILTERS
|
||||||
}
|
}
|
||||||
@ -170,6 +175,7 @@ copyrecoll()
|
|||||||
chkcp $RCLDEPS/rclimg/rclimg.exe $FILTERS
|
chkcp $RCLDEPS/rclimg/rclimg.exe $FILTERS
|
||||||
chkcp $RCL/qtgui/mtpics/* $DESTDIR/Share/images
|
chkcp $RCL/qtgui/mtpics/* $DESTDIR/Share/images
|
||||||
chkcp $RCL/qtgui/i18n/*.qm $DESTDIR/Share/translations
|
chkcp $RCL/qtgui/i18n/*.qm $DESTDIR/Share/translations
|
||||||
|
chkcp $RCL/desktop/recoll.ico $DESTDIR/Share
|
||||||
}
|
}
|
||||||
|
|
||||||
copyantiword()
|
copyantiword()
|
||||||
@ -285,13 +291,27 @@ copypff()
|
|||||||
copyaspell()
|
copyaspell()
|
||||||
{
|
{
|
||||||
DEST=$FILTERS
|
DEST=$FILTERS
|
||||||
if test $BUILD = MINGW ; then
|
cp -rp $ASPELL $DEST || fatal "can't copy $ASPELL"
|
||||||
cp -rp $ASPELL $DEST || fatal "can't copy $ASPELL"
|
DEST=$DEST/aspell-installed/mingw32/bin
|
||||||
DEST=$DEST/aspell-installed/mingw32/bin
|
# Check that we do have an aspell.exe.
|
||||||
# Check that we do have an aspell.exe.
|
chkcp $ASPELL/mingw32/bin/aspell.exe $DEST
|
||||||
chkcp $ASPELL/mingw32/bin/aspell.exe $DEST
|
chkcp $MINGWBIN/libgcc_s_dw2-1.dll $DEST
|
||||||
chkcp $MINGWBIN/libgcc_s_dw2-1.dll $DEST
|
chkcp $MINGWBIN/libstdc++-6.dll $DEST
|
||||||
chkcp $MINGWBIN/libstdc++-6.dll $DEST
|
chkcp $MINGWBIN/libwinpthread-1.dll $DEST
|
||||||
|
if test $BUILD = MSVC ; then
|
||||||
|
chkcp $RCLDEPS/mingw/build-libaspell-Desktop_Qt_5_14_1_MSVC2017_32bit-Release/release/aspell.dll $DESTDIR/libaspell-15.dll
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Recoll python package. Only when compiled with msvc as this is what
|
||||||
|
# the standard Python dist is built with
|
||||||
|
copypyrecoll()
|
||||||
|
{
|
||||||
|
if test $BUILD = MSVC ; then
|
||||||
|
PYRCLWHEEL=${PYRECOLL}/dist/Recoll-${VERSION}-cp37-cp37m-win32.whl
|
||||||
|
DEST=${DESTDIR}/Share/dist
|
||||||
|
test -d $DEST || mkdir $DEST || fatal cant create $DEST
|
||||||
|
chkcp ${PYRCLWHEEL} $DEST
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,10 +332,11 @@ for d in doc examples filters images translations; do
|
|||||||
fatal mkdir $d failed
|
fatal mkdir $d failed
|
||||||
done
|
done
|
||||||
|
|
||||||
copyaspell
|
|
||||||
# copyrecoll must stay before copyqt so that windeployqt can do its thing
|
# copyrecoll must stay before copyqt so that windeployqt can do its thing
|
||||||
copyrecoll
|
copyrecoll
|
||||||
|
copypyrecoll
|
||||||
copyqt
|
copyqt
|
||||||
|
copyaspell
|
||||||
copypyxslt
|
copypyxslt
|
||||||
copypoppler
|
copypoppler
|
||||||
copyantiword
|
copyantiword
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user