diff --git a/buildManylinux.sh b/buildManylinux.sh
new file mode 100755
index 0000000..ee43f65
--- /dev/null
+++ b/buildManylinux.sh
@@ -0,0 +1,142 @@
+#!/bin/bash
+# Kompiluje bibliotekę i buduje paczki dystrybucyjne zawierające
+# Morfeusza i słowniki SGJP i Polimorf
+#
+# Założenia:
+# • kod źródłowy Morfeusza jest w MORFEUSZ_SRC
+# • słowniki są już skompilowane w katalogu DICT_DIR
+# • kompilacja odbędzie się w katalogu BUILD_DIR (który zostanie skasowany i utworzony)
+# • wyniki zostaną umieszczone w TARGET_DIR
+
+#set -ex -o pipefail
+set -x
+
+if [ "$#" -ne 4 ]; then
+ echo "Expected arguments: ‹DICT_NAME› ‹DICT_VERSION› ‹BUILD_ENV› ‹64/32›"
+ exit 1
+fi
+
+export DICT_NAME="$1"
+export DICT_VERSION="$2"
+
+export MORFEUSZ_SRC=`pwd`/Morfeusz
+export DICT_DIR=`pwd`/dicts
+export ANALYZER_DICTIONARY_CPP=$DICT_DIR/$DICT_NAME-a.cpp
+export GENERATOR_DICTIONARY_CPP=$DICT_DIR/$DICT_NAME-s.cpp
+
+# Wersja środowiska kompilacyjnego (znaczy pod którym Ubuntu budujemy: 14.04, 16.04, 18.04, 19.04 …):
+# Staje się debianowym numerem subwersji: morfeusz…_1.9.27-18.04_amd64.deb
+export BUILD_ENV=$3
+
+export BITS=$4
+
+export BUILD_ROOT=`pwd`/build/$1
+export TARGET_ROOT=`pwd`/target
+
+
+
+function build {
+ set -e -o pipefail
+ os=$1
+ arch=$2
+ embedded=$3
+ python_ver=$4
+ shift 4
+ targets=$@
+
+# toolchain=$MORFEUSZ_SRC/toolchains/Toolchain-$os-$arch.cmake
+ toolchain=$MORFEUSZ_SRC/toolchains/Toolchain-Linux-native.cmake
+ if [ "$os" = "Linux" ]; then
+ buildDir=$BUILD_ROOT/$os-$BUILD_ENV-$arch-$embedded
+ targetDir=$TARGET_ROOT/$os/$BUILD_ENV/$arch
+ else
+ buildDir=$BUILD_ROOT/$os-$arch-$embedded
+ targetDir=$TARGET_ROOT/$os/$arch
+ fi
+# rm -rf $buildDir || true
+ mkdir -p $buildDir
+
+
+# echo "Will use $toolchain toolchain"
+
+ # rm -rf $buildDir
+ #~ rm -rf $targetDir
+ mkdir -p $buildDir
+ rm -f $buildDir/CMakeCache.txt
+ mkdir -p $targetDir
+ cd $buildDir
+
+ if [ "$embedded" = true ]
+ then
+ if [ "$os" == "Linux" ]
+ then
+ CPACK_GENERATOR=TGZ
+ fi
+ CMAKE_ARGS="-D CMAKE_TOOLCHAIN_FILE=$toolchain \
+ -D TARGET_DIR=$targetDir \
+ -D ANALYZER_DICTIONARY_CPP=$ANALYZER_DICTIONARY_CPP \
+ -D GENERATOR_DICTIONARY_CPP=$GENERATOR_DICTIONARY_CPP \
+ -D DEFAULT_DICT_NAME=$DICT_NAME \
+ -D SKIP_DICTIONARY_BUILDING=1 \
+ -D EMBEDDED_DEFAULT_DICT=1 \
+ -D DICT_VERSION=$DICT_VERSION \
+ -D BUILT_ON=$BUILD_ENV "
+ if [ "$CPACK_GENERATOR" != "" ]
+ then
+ CMAKE_ARGS="$CMAKE_ARGS -D CPACK_GENERATOR=$CPACK_GENERATOR"
+ fi
+ else
+ # "setting default ACL to prevent control-file-has-bad-permissions lintian error"
+ setfacl -R -d -m o::rx -m g::rx -m u::rwx .
+
+ CMAKE_ARGS="-D CMAKE_TOOLCHAIN_FILE=$toolchain \
+ -D TARGET_DIR=$targetDir \
+ -D DEFAULT_DICT_DIR=$DICT_DIR \
+ -D DEFAULT_DICT_NAME=$DICT_NAME \
+ -D SKIP_DICTIONARY_BUILDING=1 \
+ -D CPACK_GENERATOR=DEB \
+ -D DICT_VERSION=$DICT_VERSION \
+ -D BUILT_ON=$BUILD_ENV "
+ fi
+ CMAKE_ARGS="$CMAKE_ARGS -D PY=$python_ver"
+ cmake $CMAKE_ARGS $MORFEUSZ_SRC 2>&1
+ echo "building for $os-$arch ($BUILD_ENV)" >&2
+# make
+ make $targets
+}
+export -f build
+
+function log {
+ os=$1
+ arch=$2
+ stdbuf -oL sed -e $"s/^/$os-$BUILD_ENV-$arch:\t/" | tee -a "log/$os-$BUILD_ENV-$arch.out"
+}
+export -f log
+
+##??? rm -rf log $BUILD_ROOT
+mkdir -p log
+
+
+build Linux $BITS true 3.0 package package-java gui-tgz package-python3 package-builder 2>&1 | log Linux-tgz3 $BITS
+
+# if [ -x /usr/bin/python2 ]
+# then
+# build Linux $BITS true 2.7 package-python2 2>&1 | log Linux-tgz2 $BITS;
+# fi
+
+# # Kompilujemy dodatkowe wheele w środowiskach wirutalnych:
+# (
+# cd $BUILD_ROOT/Linux-$BUILD_ENV-$BITS-true
+# if [ -d ~/env/ ]; then
+# for pyenv in ~/env/* ; do
+# source $pyenv/bin/activate
+# make package-python3-whl
+# python --version
+# deactivate
+# done
+# fi
+# ) | log Linux-whl $BITS
+
+# Pakiety debianowe bez wkompilowanego słownika:
+#build Linux $BITS false 0 lib-deb bin-deb dev-deb dictionary-deb java-deb gui-deb 2>&1 | log Linux-deb $BITS
+
diff --git a/buildUbuntu.sh b/buildUbuntu.sh
new file mode 100755
index 0000000..a6305a8
--- /dev/null
+++ b/buildUbuntu.sh
@@ -0,0 +1,141 @@
+#!/bin/bash
+# Kompiluje bibliotekę i buduje paczki dystrybucyjne zawierające
+# Morfeusza i słowniki SGJP i Polimorf
+#
+# Założenia:
+# • kod źródłowy Morfeusza jest w MORFEUSZ_SRC
+# • słowniki są już skompilowane w katalogu DICT_DIR
+# • kompilacja odbędzie się w katalogu BUILD_DIR (który zostanie skasowany i utworzony)
+# • wyniki zostaną umieszczone w TARGET_DIR
+
+#set -ex -o pipefail
+set -x
+
+if [ "$#" -ne 4 ]; then
+ echo "Expected arguments: ‹DICT_NAME› ‹DICT_VERSION› ‹BUILD_ENV› ‹64/32›"
+ exit 1
+fi
+
+export DICT_NAME="$1"
+export DICT_VERSION="$2"
+
+export MORFEUSZ_SRC=`pwd`/Morfeusz
+export DICT_DIR=`pwd`/dicts
+export ANALYZER_DICTIONARY_CPP=$DICT_DIR/$DICT_NAME-a.cpp
+export GENERATOR_DICTIONARY_CPP=$DICT_DIR/$DICT_NAME-s.cpp
+
+# Wersja środowiska kompilacyjnego (znaczy pod którym Ubuntu budujemy: 14.04, 16.04, 18.04, 19.04 …):
+# Staje się debianowym numerem subwersji: morfeusz…_1.9.27-18.04_amd64.deb
+export BUILD_ENV=$3
+
+export BITS=$4
+
+export BUILD_ROOT=`pwd`/build/$1
+export TARGET_ROOT=`pwd`/target
+
+
+
+function build {
+ set -e -o pipefail
+ os=$1
+ arch=$2
+ embedded=$3
+ python_ver=$4
+ shift 4
+ targets=$@
+
+# toolchain=$MORFEUSZ_SRC/toolchains/Toolchain-$os-$arch.cmake
+ toolchain=$MORFEUSZ_SRC/toolchains/Toolchain-Linux-native.cmake
+ if [ "$os" = "Linux" ]; then
+ buildDir=$BUILD_ROOT/$os-$BUILD_ENV-$arch-$embedded
+ targetDir=$TARGET_ROOT/$os/$BUILD_ENV/$arch
+ else
+ buildDir=$BUILD_ROOT/$os-$arch-$embedded
+ targetDir=$TARGET_ROOT/$os/$arch
+ fi
+# rm -rf $buildDir || true
+ mkdir -p $buildDir
+
+
+# echo "Will use $toolchain toolchain"
+
+ # rm -rf $buildDir
+ #~ rm -rf $targetDir
+ mkdir -p $buildDir
+ rm -f $buildDir/CMakeCache.txt
+ mkdir -p $targetDir
+ cd $buildDir
+
+ if [ "$embedded" = true ]
+ then
+ if [ "$os" == "Linux" ]
+ then
+ CPACK_GENERATOR=TGZ
+ fi
+ CMAKE_ARGS="-D CMAKE_TOOLCHAIN_FILE=$toolchain \
+ -D TARGET_DIR=$targetDir \
+ -D ANALYZER_DICTIONARY_CPP=$ANALYZER_DICTIONARY_CPP \
+ -D GENERATOR_DICTIONARY_CPP=$GENERATOR_DICTIONARY_CPP \
+ -D DEFAULT_DICT_NAME=$DICT_NAME \
+ -D SKIP_DICTIONARY_BUILDING=1 \
+ -D EMBEDDED_DEFAULT_DICT=1 \
+ -D DICT_VERSION=$DICT_VERSION \
+ -D BUILT_ON=$BUILD_ENV "
+ if [ "$CPACK_GENERATOR" != "" ]
+ then
+ CMAKE_ARGS="$CMAKE_ARGS -D CPACK_GENERATOR=$CPACK_GENERATOR"
+ fi
+ else
+ # "setting default ACL to prevent control-file-has-bad-permissions lintian error"
+ setfacl -R -d -m o::rx -m g::rx -m u::rwx .
+
+ CMAKE_ARGS="-D CMAKE_TOOLCHAIN_FILE=$toolchain \
+ -D TARGET_DIR=$targetDir \
+ -D DEFAULT_DICT_DIR=$DICT_DIR \
+ -D DEFAULT_DICT_NAME=$DICT_NAME \
+ -D SKIP_DICTIONARY_BUILDING=1 \
+ -D CPACK_GENERATOR=DEB \
+ -D DICT_VERSION=$DICT_VERSION \
+ -D BUILT_ON=$BUILD_ENV "
+ fi
+ CMAKE_ARGS="$CMAKE_ARGS -D PY=$python_ver"
+ cmake $CMAKE_ARGS $MORFEUSZ_SRC 2>&1
+ echo "building for $os-$arch ($BUILD_ENV)" >&2
+# make
+ make $targets
+}
+export -f build
+
+function log {
+ os=$1
+ arch=$2
+ stdbuf -oL sed -e $"s/^/$os-$BUILD_ENV-$arch:\t/" | tee -a "log/$os-$BUILD_ENV-$arch.out"
+}
+export -f log
+
+##??? rm -rf log $BUILD_ROOT
+mkdir -p log
+
+# Pakiety z wkompilowanym słownikiem i niewrażliwe na kwestię słownika:
+# build Linux $BITS true 3.0 package package-java gui-tgz package-python3 package-builder 2>&1 | log Linux-tgz3 $BITS
+# if [ -x /usr/bin/python2 ]
+# then
+# build Linux $BITS true 2.7 package-python2 2>&1 | log Linux-tgz2 $BITS;
+# fi
+
+# # Kompilujemy dodatkowe wheele w środowiskach wirutalnych:
+# (
+# cd $BUILD_ROOT/Linux-$BUILD_ENV-$BITS-true
+# if [ -d ~/env/ ]; then
+# for pyenv in ~/env/* ; do
+# source $pyenv/bin/activate
+# make package-python3-whl
+# python --version
+# deactivate
+# done
+# fi
+# ) | log Linux-whl $BITS
+
+# Pakiety debianowe bez wkompilowanego słownika:
+build Linux $BITS false 3.0 lib-deb bin-deb dev-deb dictionary-deb java-deb gui-deb package-python3-deb 2>&1 | log Ubuntu $BITS
+
diff --git a/fsabuilder/CMakeLists.txt b/fsabuilder/CMakeLists.txt
index accd842..a71a27e 100644
--- a/fsabuilder/CMakeLists.txt
+++ b/fsabuilder/CMakeLists.txt
@@ -29,15 +29,11 @@ add_custom_target (package-builder-egg
DEPENDS builder-setup
)
add_custom_target (package-builder-whl
- COMMAND python3 ${SETUP_PY} bdist_wheel -d "${TARGET_DIR}"
- DEPENDS builder-setup
-)
-add_custom_target (package-builder-sdist
- COMMAND python3 ${SETUP_PY} sdist -d "${TARGET_DIR}"
+ COMMAND python3 -m build --outdir "${TARGET_DIR}"
DEPENDS builder-setup
)
-set (PACKAGE_DEPENDS "package-builder-whl" "package-builder-sdist")
+set (PACKAGE_DEPENDS "package-builder-whl")
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if (BUILT_ON)
@@ -61,7 +57,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
COMMAND mkdir -p "${TARGET_DIR}" && cp ${CMAKE_CURRENT_BINARY_DIR}/deb_dist/${MORFEUSZBUILDER}*.deb "${TARGET_DIR}"
DEPENDS package-builder-deb-build
)
- list (APPEND PACKAGE_DEPENDS package-builder-deb)
+# list (APPEND PACKAGE_DEPENDS package-builder-deb)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
#~ add_custom_target (package-python-win-installer
#~ COMMAND python ${SETUP_PY} bdist_wininst -d ${TARGET_DIR} --plat-name "${CMAKE_SYSTEM_NAME}-${ARCHITECTURE}"
diff --git a/morfeusz/wrappers/python3/CMakeLists.txt b/morfeusz/wrappers/python3/CMakeLists.txt
index 825ee6a..60a0133 100644
--- a/morfeusz/wrappers/python3/CMakeLists.txt
+++ b/morfeusz/wrappers/python3/CMakeLists.txt
@@ -2,15 +2,10 @@
# SWIG
#set(CMAKE_SWIG_OUTDIR swig)
#~ FIND_PACKAGE (SWIG REQUIRED)
-if (NOT PYTHON_INCLUDE_DIRS)
- set(Python_ADDITIONAL_VERSIONS 3.4)
- FIND_PACKAGE (PythonLibs ${PY} REQUIRED)
-endif ()
#~ INCLUDE (${SWIG_USE_FILE})
set (PY3MORFEUSZ_VERSION "${Morfeusz_LIB_VERSION}")
# SWIG Java
-INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH})
INCLUDE_DIRECTORIES (../..)
@@ -26,57 +21,47 @@ add_custom_target (generate_python3_wrapper ALL
)
set (SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in")
-set (SETUP_PY_TMP "${CMAKE_CURRENT_BINARY_DIR}/setupTmp.py")
set (SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
set (DEPS "${SWIG_PYTHON_OUTFILE_CXX}" "${SWIG_PYTHON_OUTFILE_PY}")
set (OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build")
configure_file (${SETUP_PY_IN} ${SETUP_PY})
+file(COPY pyproject.toml setup.cfg DESTINATION .)
-set (EGG_NAME "morfeusz2-${PY3MORFEUSZ_VERSION}-py${PY}")
-file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${EGG_NAME}")
-file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/EGG-INFO" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${EGG_NAME}/")
+# set (EGG_NAME "morfeusz2-${PY3MORFEUSZ_VERSION}-py${PY}")
+# file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${EGG_NAME}")
+# file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/EGG-INFO" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${EGG_NAME}/")
add_custom_target (generate_python3_setup_file
DEPENDS ${SETUP_PY})
-add_custom_command (OUTPUT ${OUTPUT}
- COMMAND python3
- ARGS ${SETUP_PY} build
- DEPENDS generate_python3_wrapper generate_python3_setup_file libmorfeusz)
+# add_custom_command (OUTPUT ${OUTPUT}
+# COMMAND python3
+# ARGS ${SETUP_PY} build
+# DEPENDS generate_python3_wrapper generate_python3_setup_file libmorfeusz)
-add_custom_target (build_python3_wrapper
- DEPENDS ${OUTPUT})
+# add_custom_target (build_python3_wrapper
+# DEPENDS ${OUTPUT})
add_custom_target (py3morfeusz
- DEPENDS generate_python3_wrapper generate_python3_setup_file libmorfeusz build_python3_wrapper)
+ DEPENDS generate_python3_wrapper generate_python3_setup_file libmorfeusz)
if (UNIX)
- add_custom_target (install-python3
- COMMAND python3 ${SETUP_PY} install --home=${CMAKE_INSTALL_PREFIX}
- DEPENDS py3morfeusz
- )
- add_custom_target (package-python3-egg
- COMMAND python3 ${SETUP_PY} bdist_egg -d "${TARGET_DIR}" --plat-name "${CMAKE_SYSTEM_NAME}-${ARCHITECTURE}"
- DEPENDS py3morfeusz
- )
+ # add_custom_target (install-python3
+ # COMMAND python3 ${SETUP_PY} install --home=${CMAKE_INSTALL_PREFIX}
+ # DEPENDS py3morfeusz
+ # )
add_custom_target (package-python3-whl
- COMMAND python3 ${SETUP_PY} bdist_wheel -d "${TARGET_DIR}"
- #--plat-name "${CMAKE_SYSTEM_NAME}-${ARCHITECTURE}"
- DEPENDS py3morfeusz
+ COMMAND python3 -m build --outdir "${TARGET_DIR}"
+ DEPENDS generate_python3_wrapper generate_python3_setup_file libmorfeusz
)
- configure_file (WHEEL.linux.in WHEEL)
add_custom_target (package-python3-fatwhl
- COMMAND python3 setup.py build_py
- COMMAND python3 setup.py build_ext --rpath [['$${ORIGIN}']] -b fatlib
- COMMAND python3 setup.py bdist_wheel --skip-build --keep-temp -b fatlib
- COMMAND cp WHEEL fatlib/morfeusz2-${PY3MORFEUSZ_VERSION}.dist-info/
- COMMAND cp ../../libmorfeusz2.so fatlib/
- COMMAND python3 -m wheel pack --build-number ${DICT_VERSION} --dest-dir ${TARGET_DIR} fatlib/
- COMMAND rm -r fatlib
+ COMMAND python3 -m build
+ COMMAND zip -j dist/morfeusz2-*-abi3-*.whl ../../libmorfeusz2.so
+ COMMAND mv dist/morfeusz2-*-abi3-*.whl ${TARGET_DIR}
DEPENDS generate_python3_wrapper generate_python3_setup_file libmorfeusz
)
-# set (PACKAGE_DEPENDS package-python3-egg package-python3-whl)
+# set (PACKAGE_DEPENDS package-python3-whl)
set (PACKAGE_DEPENDS package-python3-fatwhl)
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
@@ -100,11 +85,16 @@ if (UNIX)
COMMAND mkdir -p "${TARGET_DIR}" && cp ${CMAKE_CURRENT_BINARY_DIR}/deb_dist/python3-morfeusz2*.deb "${TARGET_DIR}"
DEPENDS package-python3-deb-build
)
- list (APPEND PACKAGE_DEPENDS package-python3-deb)
+ # list (APPEND PACKAGE_DEPENDS package-python3-deb)
endif ()
add_custom_target (package-python3
DEPENDS ${PACKAGE_DEPENDS})
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND CMAKE_CROSSCOMPILING)
+ if (NOT PYTHON_INCLUDE_DIRS)
+ set(Python_ADDITIONAL_VERSIONS 3.4)
+ FIND_PACKAGE (PythonLibs ${PY} REQUIRED)
+ endif ()
+ INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH})
add_custom_target (package-python3-egg-info
COMMAND python3 ${SETUP_PY} egg_info
DEPENDS generate_python3_wrapper generate_python3_setup_file libmorfeusz
diff --git a/morfeusz/wrappers/python3/pyproject.toml b/morfeusz/wrappers/python3/pyproject.toml
new file mode 100644
index 0000000..fe61c1c
--- /dev/null
+++ b/morfeusz/wrappers/python3/pyproject.toml
@@ -0,0 +1,9 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+
+[project]
+name = "morfeusz2" # as it would appear on PyPI
+dynamic = ["authors", "license", "readme", "description", "version"]
+
diff --git a/morfeusz/wrappers/python3/setup.cfg b/morfeusz/wrappers/python3/setup.cfg
new file mode 100644
index 0000000..97af180
--- /dev/null
+++ b/morfeusz/wrappers/python3/setup.cfg
@@ -0,0 +1,6 @@
+[bdist_wheel]
+py-limited-api=cp36
+plat-name=manylinux_2_28_x86_64
+
+[build_ext]
+rpath=${ORIGIN}