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
|
||||
|
||||
# Windows specific
|
||||
*.ps1
|
||||
.vs
|
||||
**/*.ps1
|
||||
**/*.vcxproj*
|
||||
**/*.sln
|
||||
**/packages.config
|
||||
|
||||
|
||||
# Local build/utility folders
|
||||
.vscode
|
||||
.vs
|
||||
*.vcxproj.user
|
||||
*.pyc
|
||||
*.pyd
|
||||
**/*.pyc
|
||||
**/*.pyd
|
||||
|
||||
**/CMakeUserPresets.json
|
||||
output
|
||||
packages
|
||||
**/build
|
||||
**/venv
|
||||
**/build/
|
||||
**/secrets/
|
||||
**/venv/
|
||||
**/pyconcept/ccl
|
||||
**/egg-info
|
||||
**/*egg-info
|
||||
|
||||
|
||||
# Docker
|
||||
Dockerfile
|
||||
|
||||
|
||||
# Specific items
|
||||
docker-compose.yml
|
||||
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
|
||||
*.pyd
|
||||
|
||||
secrets
|
||||
packages
|
||||
build
|
||||
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 ==================
|
||||
|
||||
FROM cpp-builder as CCL
|
||||
ARG CMAKE_BUILD_TYPE="Release"
|
||||
|
||||
# Choose between clang/clang++ or gcc/g++
|
||||
ENV CC="gcc"
|
||||
ENV CXX="g++"
|
||||
|
||||
ENV BUILD_HOME=/home
|
||||
WORKDIR $BUILD_HOME
|
||||
WORKDIR /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
|
||||
|
||||
- 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 - VS Code and ccl/CMakeLists.txt for other platforms.
|
||||
- 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
|
||||
- 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
|
||||
|
||||
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()
|
||||
|
||||
enable_testing()
|
||||
include(GoogleTest)
|
||||
gtest_discover_tests(ccl_Tests)
|
|
@ -11,4 +11,4 @@ services:
|
|||
context: ./
|
||||
volumes:
|
||||
- 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
|
||||
##
|
||||
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
|
||||
PUBLIC
|
||||
|
|
|
@ -1,25 +1,31 @@
|
|||
# Build script for linux distro
|
||||
set -e
|
||||
# Build script for Linux
|
||||
set -e
|
||||
|
||||
packageName='pyconcept'
|
||||
output='../../output/py'
|
||||
output='../output/py'
|
||||
pythonEnv='venv/bin/python3'
|
||||
|
||||
# Setup python env
|
||||
python3.12 -m venv venv
|
||||
$pythonEnv -m pip install -r requirements-build.txt
|
||||
${pythonEnv} -m pip install -r requirements-build.txt
|
||||
|
||||
mkdir -p import
|
||||
cp -r ../../output/include import/
|
||||
cp -r ../../output/lib import/
|
||||
# Import sources from ccl
|
||||
mkdir -p ccl
|
||||
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
|
||||
$pythonEnv -m pip install $wheel
|
||||
$pythonEnv -m unittest
|
||||
# Test pyconcept
|
||||
${pythonEnv} -m pip uninstall -y ${packageName}
|
||||
${pythonEnv} -m pip install ${wheel}
|
||||
${pythonEnv} -m unittest
|
||||
|
||||
rm -rf venv
|
||||
# rm -rf venv
|
||||
# rm -rf build
|
||||
|
||||
exit 0
|
|
@ -36,7 +36,7 @@ class CMakeBuild(build_ext):
|
|||
build_type = 'Debug' if debug_flag else 'Release'
|
||||
cmake_generator = os.environ.get('CMAKE_GENERATOR', '')
|
||||
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_BUILD_TYPE={build_type}"
|
||||
]
|
||||
|
@ -81,7 +81,7 @@ class CMakeBuild(build_ext):
|
|||
build_args += [f"-j{self.parallel}"]
|
||||
|
||||
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', '--build', '.', *build_args], check=True)
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ class TestBinding(unittest.TestCase):
|
|||
self.assertEqual(fixedSchema['items'][1]['alias'], 'S1')
|
||||
|
||||
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)
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
Set-Location $PSScriptRoot
|
||||
|
||||
& conan profile detect --force
|
||||
& conan install .
|
||||
& conan install . --build=missing
|
||||
|
||||
& cmake --preset conan-default
|
||||
# & cmake --preset conan-default -DCC_BuildTests=False
|
||||
|
|
Loading…
Reference in New Issue
Block a user