mirror of
https://github.com/IRBorisov/ConceptCore.git
synced 2025-06-26 01:00:36 +03:00
Setup Linux build for pyconcept and ConceptCoreLibrary
This commit is contained in:
parent
793109829b
commit
f1272c50d3
|
@ -4,26 +4,35 @@
|
||||||
.github
|
.github
|
||||||
|
|
||||||
# Windows specific
|
# Windows specific
|
||||||
*.ps1
|
.vs
|
||||||
|
**/*.ps1
|
||||||
|
**/*.vcxproj*
|
||||||
|
**/*.sln
|
||||||
|
**/packages.config
|
||||||
|
|
||||||
|
|
||||||
# Local build/utility folders
|
# Local build/utility folders
|
||||||
.vscode
|
.vscode
|
||||||
.vs
|
**/*.pyc
|
||||||
*.vcxproj.user
|
**/*.pyd
|
||||||
*.pyc
|
|
||||||
*.pyd
|
|
||||||
|
|
||||||
**/CMakeUserPresets.json
|
**/CMakeUserPresets.json
|
||||||
output
|
output
|
||||||
packages
|
packages
|
||||||
**/build
|
**/build/
|
||||||
**/venv
|
**/secrets/
|
||||||
|
**/venv/
|
||||||
**/pyconcept/ccl
|
**/pyconcept/ccl
|
||||||
**/egg-info
|
**/*egg-info
|
||||||
|
|
||||||
|
|
||||||
|
# Docker
|
||||||
|
Dockerfile
|
||||||
|
|
||||||
|
|
||||||
# Specific items
|
# Specific items
|
||||||
docker-compose.yml
|
docker-compose.yml
|
||||||
rslang/src/RSParserImpl.output
|
rslang/src/RSParserImpl.output
|
||||||
rslang/src/RSParserImpl.gv
|
rslang/src/RSParserImpl.gv
|
||||||
|
**/*.y
|
||||||
|
**/*.l
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -6,6 +6,7 @@
|
||||||
*.pyc
|
*.pyc
|
||||||
*.pyd
|
*.pyd
|
||||||
|
|
||||||
|
secrets
|
||||||
packages
|
packages
|
||||||
build
|
build
|
||||||
output
|
output
|
||||||
|
|
27
BuildAll.sh
Normal file
27
BuildAll.sh
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#
|
||||||
|
# Build script for linux distro
|
||||||
|
#
|
||||||
|
set -e # Exit immediately if a command exits with a non-zero status.
|
||||||
|
set -u # Treat unset variables as an error when substituting.
|
||||||
|
|
||||||
|
export CMAKE_BUILD_TYPE="Release"
|
||||||
|
|
||||||
|
# Choose between clang/clang++ or gcc/g++
|
||||||
|
export CC="gcc"
|
||||||
|
export CXX="g++"
|
||||||
|
|
||||||
|
# Build CCL
|
||||||
|
cd /home/ccl
|
||||||
|
conan profile detect --force
|
||||||
|
conan install . --build=missing
|
||||||
|
cmake --preset conan-release
|
||||||
|
cmake --build --preset conan-release
|
||||||
|
ctest --test-dir build/Release --output-on-failure
|
||||||
|
cmake --install build/Release --prefix /home/output
|
||||||
|
|
||||||
|
# Build pyconcept
|
||||||
|
cd /home/pyconcept
|
||||||
|
sh scripts/Build.sh
|
||||||
|
|
||||||
|
echo 'Done'
|
||||||
|
exit 0
|
11
Dockerfile
11
Dockerfile
|
@ -89,15 +89,10 @@ RUN apt-get autoclean -y && \
|
||||||
# ====================== END OF CPP-Python environment ==================
|
# ====================== END OF CPP-Python environment ==================
|
||||||
|
|
||||||
FROM cpp-builder as CCL
|
FROM cpp-builder as CCL
|
||||||
ARG CMAKE_BUILD_TYPE="Release"
|
|
||||||
|
|
||||||
# Choose between clang/clang++ or gcc/g++
|
WORKDIR /home
|
||||||
ENV CC="gcc"
|
|
||||||
ENV CXX="g++"
|
|
||||||
|
|
||||||
ENV BUILD_HOME=/home
|
|
||||||
WORKDIR $BUILD_HOME
|
|
||||||
|
|
||||||
COPY . /home
|
COPY . /home
|
||||||
|
|
||||||
ENTRYPOINT ["sh", "/home/entrypoint.sh"]
|
RUN sed -i 's/\r$//g' /home/BuildAll.sh && \
|
||||||
|
chmod +x /home/BuildAll.sh
|
||||||
|
|
|
@ -10,7 +10,7 @@ C++ library for manipulating concepts in formal language of advanced set theory
|
||||||
|
|
||||||
## 📦 Project build
|
## 📦 Project build
|
||||||
|
|
||||||
- ccl + coredll + pyconcept - Dockerfile to setup Clang / GCC build for Ubuntu development.
|
- ccl + coredll + pyconcept - Dockerfile to setup Clang / GCC build for Ubuntu development (see BuildAll.sh).
|
||||||
- ccl + coredll local dev - Visual Studio Solution for Windows development - 'CCL_full.sln'.
|
- ccl + coredll local dev - Visual Studio Solution for Windows development - 'CCL_full.sln'.
|
||||||
- ccl - VS Code and ccl/CMakeLists.txt for other platforms.
|
- ccl - VS Code and ccl/CMakeLists.txt for other platforms.
|
||||||
- pyconcept - python setup.py OR pyconcept/scripts
|
- pyconcept - python setup.py OR pyconcept/scripts
|
||||||
|
@ -20,6 +20,13 @@ After changing grammar / syntax you can rebuild lexers and parser using 'scripts
|
||||||
- parser requires [Bison](https://www.gnu.org/software/bison/) installed
|
- parser requires [Bison](https://www.gnu.org/software/bison/) installed
|
||||||
- lexer requires [Re-flex](https://github.com/Genivia/RE-flex)
|
- lexer requires [Re-flex](https://github.com/Genivia/RE-flex)
|
||||||
|
|
||||||
|
To run terminal after building docker container use command
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run --rm -it --entrypoint /bin/bash concept-core-builder
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
## 💝 Acknowledgements
|
## 💝 Acknowledgements
|
||||||
|
|
||||||
This project is based on multiple projects and works listed below. If you notice any problems with licensing or missing acknowledgements please inform repository maintainer.
|
This project is based on multiple projects and works listed below. If you notice any problems with licensing or missing acknowledgements please inform repository maintainer.
|
||||||
|
|
2
TODO.txt
Normal file
2
TODO.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
- wrap ConceptCoreLibrary in conan package for pyconcept consumption
|
||||||
|
- setup github actions to build and (maybe) publish pyconcept package
|
|
@ -29,5 +29,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
enable_testing()
|
||||||
include(GoogleTest)
|
include(GoogleTest)
|
||||||
gtest_discover_tests(ccl_Tests)
|
gtest_discover_tests(ccl_Tests)
|
|
@ -11,4 +11,4 @@ services:
|
||||||
context: ./
|
context: ./
|
||||||
volumes:
|
volumes:
|
||||||
- concept_volume:/home/output
|
- concept_volume:/home/output
|
||||||
command: sh /home/entrypoint.sh
|
command: /bin/sh BuildAll.sh
|
||||||
|
|
|
@ -1,91 +0,0 @@
|
||||||
#
|
|
||||||
# Build script for linux distro
|
|
||||||
#
|
|
||||||
set -e # Exit immediately if a command exits with a non-zero status.
|
|
||||||
set -u # Treat unset variables as an error when substituting.
|
|
||||||
|
|
||||||
# Set-Location $PSScriptRoot
|
|
||||||
|
|
||||||
# & conan profile detect --force
|
|
||||||
# & conan install .
|
|
||||||
|
|
||||||
# & cmake --preset conan-default
|
|
||||||
# # & cmake --preset conan-default -DCC_BuildTests=False
|
|
||||||
# & cmake --build --preset conan-release
|
|
||||||
# & ctest --test-dir build --output-on-failure
|
|
||||||
# & cmake --install build --prefix ../output
|
|
||||||
|
|
||||||
echo 'Done'
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# packageName='pyconcept'
|
|
||||||
# output='../../output/py'
|
|
||||||
# pythonEnv='venv/bin/python3'
|
|
||||||
|
|
||||||
# python3.12 -m venv venv
|
|
||||||
# $pythonEnv -m pip install -r requirements-build.txt
|
|
||||||
|
|
||||||
# mkdir -p import
|
|
||||||
# cp -r ../../output/include import/
|
|
||||||
# cp -r ../../output/lib import/
|
|
||||||
|
|
||||||
# $pythonEnv -m build --no-isolation --wheel --outdir=$output/$packageName
|
|
||||||
|
|
||||||
# wheel=$(find $output/$packageName -name '*.whl')
|
|
||||||
|
|
||||||
# $pythonEnv -m pip uninstall -y $packageName
|
|
||||||
# $pythonEnv -m pip install $wheel
|
|
||||||
# $pythonEnv -m unittest
|
|
||||||
|
|
||||||
# rm -rf venv
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# COPY cclCommons /home/cclCommons
|
|
||||||
# WORKDIR /home/cclCommons/build
|
|
||||||
# RUN cmake ../ && \
|
|
||||||
# cmake --build . && \
|
|
||||||
# ctest --output-on-failure && \
|
|
||||||
# cmake --install . --prefix /home/output
|
|
||||||
# WORKDIR /home
|
|
||||||
|
|
||||||
# COPY rslang /home/rslang
|
|
||||||
# WORKDIR /home/rslang/build
|
|
||||||
# RUN cmake ../ && \
|
|
||||||
# cmake --build . && \
|
|
||||||
# ctest --output-on-failure && \
|
|
||||||
# cmake --install . --prefix /home/output
|
|
||||||
# WORKDIR /home
|
|
||||||
|
|
||||||
# COPY cclLang /home/cclLang
|
|
||||||
# WORKDIR /home/cclLang/build
|
|
||||||
# RUN cmake ../ && \
|
|
||||||
# cmake --build . && \
|
|
||||||
# ctest --output-on-failure && \
|
|
||||||
# cmake --install . --prefix /home/output
|
|
||||||
# WORKDIR /home
|
|
||||||
|
|
||||||
# COPY cclGraph /home/cclGraph
|
|
||||||
# WORKDIR /home/cclGraph/build
|
|
||||||
# RUN cmake ../ && \
|
|
||||||
# cmake --build . && \
|
|
||||||
# ctest --output-on-failure && \
|
|
||||||
# cmake --install . --prefix /home/output
|
|
||||||
# WORKDIR /home
|
|
||||||
|
|
||||||
# COPY core /home/core
|
|
||||||
# WORKDIR /home/core/build
|
|
||||||
# RUN cmake ../ && \
|
|
||||||
# cmake --build . && \
|
|
||||||
# ctest --output-on-failure && \
|
|
||||||
# cmake --install . --prefix /home/output
|
|
||||||
# WORKDIR /home
|
|
||||||
|
|
||||||
# # Build python library
|
|
||||||
# COPY examples/pyconcept /home/examples/pyconcept
|
|
||||||
# WORKDIR /home/examples/pyconcept
|
|
||||||
# RUN script/Build.sh
|
|
||||||
# WORKDIR /home
|
|
|
@ -26,18 +26,6 @@ find_package(pybind11 REQUIRED)
|
||||||
## Project Setup
|
## Project Setup
|
||||||
##
|
##
|
||||||
pybind11_add_module(pyconcept MODULE src/pyconcept.cpp)
|
pybind11_add_module(pyconcept MODULE src/pyconcept.cpp)
|
||||||
# add_library(pyconcept)
|
|
||||||
|
|
||||||
# set_target_properties(pyconcept PROPERTIES
|
|
||||||
# OUTPUT_NAME pyconcept
|
|
||||||
# DEBUG_POSTFIX d
|
|
||||||
# POSITION_INDEPENDENT_CODE ON
|
|
||||||
# )
|
|
||||||
|
|
||||||
# target_sources(pyconcept
|
|
||||||
# PRIVATE
|
|
||||||
# src/pyconcept.cpp
|
|
||||||
# )
|
|
||||||
|
|
||||||
target_include_directories(pyconcept
|
target_include_directories(pyconcept
|
||||||
PUBLIC
|
PUBLIC
|
||||||
|
|
|
@ -1,25 +1,31 @@
|
||||||
# Build script for linux distro
|
# Build script for Linux
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
packageName='pyconcept'
|
packageName='pyconcept'
|
||||||
output='../../output/py'
|
output='../output/py'
|
||||||
pythonEnv='venv/bin/python3'
|
pythonEnv='venv/bin/python3'
|
||||||
|
|
||||||
|
# Setup python env
|
||||||
python3.12 -m venv venv
|
python3.12 -m venv venv
|
||||||
$pythonEnv -m pip install -r requirements-build.txt
|
${pythonEnv} -m pip install -r requirements-build.txt
|
||||||
|
|
||||||
mkdir -p import
|
# Import sources from ccl
|
||||||
cp -r ../../output/include import/
|
mkdir -p ccl
|
||||||
cp -r ../../output/lib import/
|
cd ../ccl
|
||||||
|
cp -r `ls -A | grep -v 'build'` "../pyconcept/ccl"
|
||||||
|
cd ../pyconcept
|
||||||
|
|
||||||
$pythonEnv -m build --no-isolation --wheel --outdir=$output/$packageName
|
# Build pyconcept
|
||||||
|
${pythonEnv} -m build --no-isolation --wheel --outdir=${output}/${packageName}
|
||||||
|
|
||||||
wheel=$(find $output/$packageName -name '*.whl')
|
wheel=$(find ${output}/${packageName} -name '*.whl')
|
||||||
|
|
||||||
$pythonEnv -m pip uninstall -y $packageName
|
# Test pyconcept
|
||||||
$pythonEnv -m pip install $wheel
|
${pythonEnv} -m pip uninstall -y ${packageName}
|
||||||
$pythonEnv -m unittest
|
${pythonEnv} -m pip install ${wheel}
|
||||||
|
${pythonEnv} -m unittest
|
||||||
|
|
||||||
rm -rf venv
|
# rm -rf venv
|
||||||
|
# rm -rf build
|
||||||
|
|
||||||
exit 0
|
exit 0
|
|
@ -36,7 +36,7 @@ class CMakeBuild(build_ext):
|
||||||
build_type = 'Debug' if debug_flag else 'Release'
|
build_type = 'Debug' if debug_flag else 'Release'
|
||||||
cmake_generator = os.environ.get('CMAKE_GENERATOR', '')
|
cmake_generator = os.environ.get('CMAKE_GENERATOR', '')
|
||||||
cmake_args = [
|
cmake_args = [
|
||||||
'--preset conan-default',
|
'--preset conan-release' if self.compiler.compiler_type != 'msvc' else '--preset conan-default',
|
||||||
f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={output_folder}{os.sep}",
|
f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={output_folder}{os.sep}",
|
||||||
f"-DCMAKE_BUILD_TYPE={build_type}"
|
f"-DCMAKE_BUILD_TYPE={build_type}"
|
||||||
]
|
]
|
||||||
|
@ -81,7 +81,7 @@ class CMakeBuild(build_ext):
|
||||||
build_args += [f"-j{self.parallel}"]
|
build_args += [f"-j{self.parallel}"]
|
||||||
|
|
||||||
subprocess.run(['conan', 'profile', 'detect', '--force'], check=True)
|
subprocess.run(['conan', 'profile', 'detect', '--force'], check=True)
|
||||||
subprocess.run(['conan', 'install', '.'], check=True)
|
subprocess.run(['conan', 'install', '.', '--build=missing'], check=True)
|
||||||
subprocess.run(['cmake', target.source_dir, *cmake_args], check=True)
|
subprocess.run(['cmake', target.source_dir, *cmake_args], check=True)
|
||||||
subprocess.run(['cmake', '--build', '.', *build_args], check=True)
|
subprocess.run(['cmake', '--build', '.', *build_args], check=True)
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ class TestBinding(unittest.TestCase):
|
||||||
self.assertEqual(fixedSchema['items'][1]['alias'], 'S1')
|
self.assertEqual(fixedSchema['items'][1]['alias'], 'S1')
|
||||||
|
|
||||||
def _get_default_schema(self) -> str:
|
def _get_default_schema(self) -> str:
|
||||||
file_path = os.getcwd() + r'/tests/data/КС начальник-подчиненный.trs'
|
file_path = os.getcwd() + r'/tests/data/Schema1.trs'
|
||||||
return _read_trs(file_path)
|
return _read_trs(file_path)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
Set-Location $PSScriptRoot
|
Set-Location $PSScriptRoot
|
||||||
|
|
||||||
& conan profile detect --force
|
& conan profile detect --force
|
||||||
& conan install .
|
& conan install . --build=missing
|
||||||
|
|
||||||
& cmake --preset conan-default
|
& cmake --preset conan-default
|
||||||
# & cmake --preset conan-default -DCC_BuildTests=False
|
# & cmake --preset conan-default -DCC_BuildTests=False
|
||||||
|
|
Loading…
Reference in New Issue
Block a user