Merge pull request #1 from cromerc/docker

Docker
This commit is contained in:
Chris Cromer 2023-11-14 13:26:21 -03:00 committed by GitHub
commit b9e8ca4157
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 48 additions and 1 deletions

10
.dockerignore Normal file
View File

@ -0,0 +1,10 @@
README.md
LICENSE
.pre-commit-config.yaml
.gitignore
.clang-format
examples
Dockerfile
build
builddir
out

1
.gitignore vendored
View File

@ -6,3 +6,4 @@ builddir
!examples/*.obk
sqlite/*.c
sqlite/*.h
out

26
Dockerfile Normal file
View File

@ -0,0 +1,26 @@
FROM ubuntu:22.04 AS build-prep
RUN apt update && apt upgrade -y
RUN apt install -y llvm clangd meson ninja-build pkg-config libsqlite3-dev doxygen graphviz wget unzip
WORKDIR /obelisk
COPY . .
RUN ./sqlite.sh
FROM build-prep AS build-machine
RUN meson --prefix=/usr build
RUN cd build && ninja -v
FROM build-machine AS build-machine-intermediate
RUN cd /obelisk/build/src/lib && rm -rf *.h *.p models
FROM scratch AS obelisk
COPY --from=build-machine-intermediate /obelisk/build/src /bin/
COPY --from=build-machine-intermediate /obelisk/build/src/lib /lib/
COPY --from=build-machine-intermediate /obelisk/build/doc/man /man/
COPY --from=build-machine-intermediate /obelisk/build/doc/html /doc/
ENTRYPOINT [ "/bin/obelisk" ]
FROM scratch AS binaries
COPY --from=obelisk /bin/obelisk /bin/
COPY --from=obelisk /lib /lib/
COPY --from=obelisk /man /man/
COPY --from=obelisk /doc /doc/

View File

@ -7,12 +7,14 @@ The Obelisk project is a declarative language designed to help with the implemen
- Meson
- Ninja
- LLVM 14
- sqlite 3
- sqlite 3 library and headers(in debian libsqlite3-dev)
- C++ 17
- C 17
## Build
### Normal build
```
./sqlite.sh
meson builddir
@ -24,6 +26,14 @@ This process will generate the binary "obelisk", a shared library "libobelisk.so
The binary is used to compile and create obelisk knowledge bases and the the libraries can be linked against to consult the Obelisk knowledge base from any software that can link with the libraries.
### Build in docker image
```
docker build ./ --output=out
```
This will create a directory called out which will contain the binaries, libraries, and generated documentation.
## Install
```