diff --git a/README b/README index bed9f41..484bb7f 100644 --- a/README +++ b/README @@ -50,7 +50,9 @@ Testing To compile and run tests you must have cppunit library installed. To test if everything is working type: -make build-tests +make +make package-java ### to also test Java wrapper +make package-python ### to also test Python wrapper make test If some tests fail, you can see errors by invoking: diff --git a/morfeusz/wrappers/java/CMakeLists.txt b/morfeusz/wrappers/java/CMakeLists.txt index b3dfcba..7f052b8 100644 --- a/morfeusz/wrappers/java/CMakeLists.txt +++ b/morfeusz/wrappers/java/CMakeLists.txt @@ -11,11 +11,11 @@ include_directories (${CMAKE_SOURCE_DIR}/morfeusz) set (SWIG_JAVA_OUTFILE "${CMAKE_CURRENT_BINARY_DIR}/swigJAVA.cpp") file (COPY pl DESTINATION .) -set (JAVA_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/pl/waw/ipipan/morfeusz") +set (JAVA_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/pl/sgjp/morfeusz") add_custom_command ( OUTPUT ${SWIG_JAVA_OUTFILE} - COMMAND swig -java -c++ -package pl.waw.ipipan.morfeusz -o ${SWIG_JAVA_OUTFILE} -outdir ${JAVA_SRC_DIR} ${CMAKE_SOURCE_DIR}/morfeusz/wrappers/morfeusz.i + COMMAND swig -java -c++ -package pl.sgjp.morfeusz -o ${SWIG_JAVA_OUTFILE} -outdir ${JAVA_SRC_DIR} ${CMAKE_SOURCE_DIR}/morfeusz/wrappers/morfeusz.i DEPENDS libmorfeusz ) add_custom_target(generate-java-wrapper ALL @@ -56,7 +56,7 @@ endif () file(GLOB_RECURSE JAVA_SOURCES "${JAVA_SRC_DIR}" "${JAVA_SRC_DIR}/*.java") add_jar (jmorfeusz SOURCES "${JAVA_SOURCES}" - ENTRY_POINT pl/waw/ipipan/morfeusz/app/App + ENTRY_POINT pl/sgjp/morfeusz/app/App DEPENDS libjmorfeusz generate-java-wrapper) add_custom_target(generate-javadoc @@ -66,7 +66,7 @@ add_custom_target(generate-javadoc -windowtitle "JMorfeusz - Morfeusz Java binding" -use -link http://docs.oracle.com/javase/7/docs/api/ - pl.waw.ipipan.morfeusz + pl.sgjp.morfeusz DEPENDS jmorfeusz) add_custom_target(package-javadoc diff --git a/morfeusz/wrappers/java/JMorfeuszTest.java b/morfeusz/wrappers/java/JMorfeuszTest.java index 8fa5798..ec4a54a 100644 --- a/morfeusz/wrappers/java/JMorfeuszTest.java +++ b/morfeusz/wrappers/java/JMorfeuszTest.java @@ -10,11 +10,11 @@ import static org.junit.Assert.*; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import pl.waw.ipipan.morfeusz.Morfeusz; -import pl.waw.ipipan.morfeusz.MorfeuszUsage; -import pl.waw.ipipan.morfeusz.MorfeuszException; -import pl.waw.ipipan.morfeusz.MorphInterpretation; -import pl.waw.ipipan.morfeusz.ResultsIterator; +import pl.sgjp.morfeusz.Morfeusz; +import pl.sgjp.morfeusz.MorfeuszUsage; +import pl.sgjp.morfeusz.MorfeuszException; +import pl.sgjp.morfeusz.MorphInterpretation; +import pl.sgjp.morfeusz.ResultsIterator; /** * diff --git a/morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/App.java b/morfeusz/wrappers/java/pl/sgjp/morfeusz/app/App.java index 943d503..782f6ba 100644 --- a/morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/App.java +++ b/morfeusz/wrappers/java/pl/sgjp/morfeusz/app/App.java @@ -1,8 +1,8 @@ -package pl.waw.ipipan.morfeusz.app; +package pl.sgjp.morfeusz.app; -import pl.waw.ipipan.morfeusz.Morfeusz; -import pl.waw.ipipan.morfeusz.MorfeuszUsage; -import pl.waw.ipipan.morfeusz.ResultsIterator; +import pl.sgjp.morfeusz.Morfeusz; +import pl.sgjp.morfeusz.MorfeuszUsage; +import pl.sgjp.morfeusz.ResultsIterator; /** * Hello world! diff --git a/morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/MorfeuszUtils.java b/morfeusz/wrappers/java/pl/sgjp/morfeusz/app/MorfeuszUtils.java index 9a8bee2..3af1060 100644 --- a/morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/MorfeuszUtils.java +++ b/morfeusz/wrappers/java/pl/sgjp/morfeusz/app/MorfeuszUtils.java @@ -1,9 +1,9 @@ -package pl.waw.ipipan.morfeusz.app; +package pl.sgjp.morfeusz.app; import java.io.ByteArrayOutputStream; import java.io.PrintStream; -import pl.waw.ipipan.morfeusz.MorphInterpretation; -import pl.waw.ipipan.morfeusz.Morfeusz; +import pl.sgjp.morfeusz.MorphInterpretation; +import pl.sgjp.morfeusz.Morfeusz; /** * diff --git a/morfeusz/wrappers/morfeusz_java.i b/morfeusz/wrappers/morfeusz_java.i index 2d8e408..7e39944 100644 --- a/morfeusz/wrappers/morfeusz_java.i +++ b/morfeusz/wrappers/morfeusz_java.i @@ -135,6 +135,9 @@ import java.util.ArrayList; %} %rename(_dictionarySearchPaths) morfeusz::Morfeusz::dictionarySearchPaths; +%rename(_getAvailableAgglOptions) morfeusz::Morfeusz::getAvailableAgglOptions; +%rename(_getAvailablePraetOptions) morfeusz::Morfeusz::getAvailablePraetOptions; + %rename(_getLabels) morfeusz::IdResolver::getLabels; %ignore morfeusz::FileFormatException; @@ -148,7 +151,7 @@ import java.util.ArrayList; return $null; } catch(morfeusz::MorfeuszException & e) { - jclass clazz = jenv->FindClass("pl/waw/ipipan/morfeusz/MorfeuszException"); + jclass clazz = jenv->FindClass("pl/sgjp/morfeusz/MorfeuszException"); jenv->ThrowNew(clazz, e.what()); return $null; } @@ -164,22 +167,6 @@ import java.util.ArrayList; } } -//%javaexception("java.io.IOException") morfeusz::Morfeusz::setGeneratorDictionary { -// try { -// $action -// } -// catch(morfeusz::FileFormatException & e) { -// jclass clazz = jenv->FindClass("java/io/IOException"); -// jenv->ThrowNew(clazz, "Invalid file format"); -// return $null; -// } -// catch(std::ios_base::failure & e) { -// jclass clazz = jenv->FindClass("java/io/IOException"); -// jenv->ThrowNew(clazz, e.what()); -// return $null; -// } -//} - %javaexception("java.util.NoSuchElementException") morfeusz::ResultsIterator::next { try { $action @@ -196,7 +183,7 @@ import java.util.ArrayList; $action } catch(const morfeusz::MorfeuszException& e) { - jclass clazz = jenv->FindClass("pl/waw/ipipan/morfeusz/MorfeuszException"); + jclass clazz = jenv->FindClass("pl/sgjp/morfeusz/MorfeuszException"); jenv->ThrowNew(clazz, e.what()); return $null; } @@ -272,6 +259,24 @@ import java.util.ArrayList; public static List<String> getDictionarySearchPaths() { return get_dictionarySearchPaths(); } + + /** + * Get list of possible agglutination rules. + * + * @return modifiable list of paths + */ + public List<String> getAvailableAgglOptions() { + return java.util.Collections.unmodifiableList(_getAvailableAgglOptions()); + } + + /** + * Get list of possible past-tense segmentation rules. + * + * @return modifiable list of paths + */ + public List<String> getAvailablePraetOptions() { + return java.util.Collections.unmodifiableList(_getAvailablePraetOptions()); + } %} %typemap(javacode) morfeusz::ResultsIterator %{ @@ -307,6 +312,8 @@ import java.util.ArrayList; // should be overwritten by getDictionarySearchPaths() in typemap(javacode) %javamethodmodifiers morfeusz::Morfeusz::dictionarySearchPaths "private"; +%javamethodmodifiers morfeusz::Morfeusz::getAvailableAgglOptions "private"; +%javamethodmodifiers morfeusz::Morfeusz::getAvailablePraetOptions "private"; // should be overwritten by getLabels() in typemap(javacode) %javamethodmodifiers morfeusz::IdResolver::getLabels "private"; diff --git a/morfeusz/wrappers/python/CMakeLists.txt b/morfeusz/wrappers/python/CMakeLists.txt index 35d5bd3..5ec93fb 100644 --- a/morfeusz/wrappers/python/CMakeLists.txt +++ b/morfeusz/wrappers/python/CMakeLists.txt @@ -44,7 +44,7 @@ add_custom_target (build_python_wrapper add_custom_target (pymorfeusz DEPENDS generate_python_wrapper generate_python_setup_file libmorfeusz build_python_wrapper) -if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") +if (UNIX) add_custom_target (install-python COMMAND python ${SETUP_PY} install --home=${CMAKE_INSTALL_PREFIX} DEPENDS pymorfeusz @@ -55,20 +55,22 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") ) set (PACKAGE_DEPENDS "package-python-bin") - add_custom_target (package-python-deb-sdist - COMMAND python ${SETUP_PY} --command-packages=stdeb.command sdist_dsc --depends "${CPACK_DEBIAN_PACKAGE_NAME}" --copyright-file "${PROJECT_SOURCE_DIR}/License.txt" - DEPENDS pymorfeusz - ) - add_custom_target (package-python-deb-build - COMMAND debuild -us -uc - WORKING_DIRECTORY deb_dist/morfeusz2-${PYMORFEUSZ_VERSION} - DEPENDS package-python-deb-sdist - ) - add_custom_target(package-python-deb - COMMAND mkdir -p "${TARGET_DIR}" && cp ${CMAKE_CURRENT_BINARY_DIR}/deb_dist/python-morfeusz2*.deb "${TARGET_DIR}" - DEPENDS package-python-deb-build - ) - list (APPEND PACKAGE_DEPENDS package-python-deb) + if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + add_custom_target (package-python-deb-sdist + COMMAND python ${SETUP_PY} --command-packages=stdeb.command sdist_dsc --depends "${CPACK_DEBIAN_PACKAGE_NAME}" --copyright-file "${PROJECT_SOURCE_DIR}/License.txt" + DEPENDS pymorfeusz + ) + add_custom_target (package-python-deb-build + COMMAND debuild -us -uc + WORKING_DIRECTORY deb_dist/morfeusz2-${PYMORFEUSZ_VERSION} + DEPENDS package-python-deb-sdist + ) + add_custom_target(package-python-deb + COMMAND mkdir -p "${TARGET_DIR}" && cp ${CMAKE_CURRENT_BINARY_DIR}/deb_dist/python-morfeusz2*.deb "${TARGET_DIR}" + DEPENDS package-python-deb-build + ) + list (APPEND PACKAGE_DEPENDS package-python-deb) + endif () add_custom_target (package-python DEPENDS pymorfeusz ${PACKAGE_DEPENDS}) elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND NOT CMAKE_CROSSCOMPILING) diff --git a/test-darwin.sh b/test-darwin.sh index e7d835b..e97821b 100644 --- a/test-darwin.sh +++ b/test-darwin.sh @@ -5,7 +5,7 @@ set -exo pipefail cd morfeusz echo 'Ala ma kota i żółć' | DYLD_LIBRARY_PATH=. ./morfeusz cd ../jmorfeusz -DYLD_LIBRARY_PATH=../morfeusz:. java -cp *.jar pl.waw.ipipan.morfeusz.app.App +DYLD_LIBRARY_PATH=../morfeusz:. java -cp *.jar pl.sgjp.morfeusz.app.App cd ../pymorfeusz DYLD_LIBRARY_PATH=../morfeusz:. python test.py cd .. diff --git a/testPythonWrapper.sh b/testPythonWrapper.sh index 4c73897..988225c 100755 --- a/testPythonWrapper.sh +++ b/testPythonWrapper.sh @@ -2,5 +2,6 @@ echo "testing python wrapper" PROJECT_BINARY_DIR=$1 export LD_LIBRARY_PATH="$PROJECT_BINARY_DIR/morfeusz:$PROJECT_BINARY_DIR/morfeusz/wrappers/python/build/lib.linux-x86_64-2.7" -export PYTHONPATH="$PROJECT_BINARY_DIR/morfeusz/wrappers/python/build/lib.linux-x86_64-2.7" +export PYTHONPATH=`find "$PROJECT_BINARY_DIR" -name _morfeusz2.so -print -quit | xargs dirname` +echo $PYTHONPATH python test.py