Basic build container images with distribution package references (#4893)
* Container based build environments * Initial commit for support of Arch and Manjaro Linux distros * Removed openSUSE as shiboken is not supported in 15.3 * Added system updates to container image build * Removed duplicates and ordered packages for easy reference * Updated documenation for openSUSE and package installation. Added documentation on how to install packages outside of conatiners Removed references to openSUSE due to missing dependancies. * Matched debian and ubuntu install script for eaiser comparison * Fixed error of image realease from latest to rolling Ubuntu's "latest" tag is to their LTS distribution release rather than their current cutting edge distro release. * Update debian.sh Remove unneeded deps and remove libboost-all-dev * Update ubuntu.sh Remove unneeded deps and remove libboost-all-dev Co-authored-by: Christopher West <cwest@thedigitaledge.co.uk> Co-authored-by: Kurt Kremitzki <kkremitzki@users.noreply.github.com>
This commit is contained in:
11
tools/build/Dockerfile.Arch
Normal file
11
tools/build/Dockerfile.Arch
Normal file
@@ -0,0 +1,11 @@
|
||||
FROM archlinux:base
|
||||
|
||||
COPY arch.sh /tmp
|
||||
|
||||
RUN pacman --sync --refresh --sysupgrade --noconfirm && \
|
||||
sh /tmp/arch.sh && \
|
||||
mkdir /builds
|
||||
|
||||
WORKDIR /builds
|
||||
|
||||
VOLUME [ "/builds" ]
|
||||
17
tools/build/Dockerfile.Debian
Normal file
17
tools/build/Dockerfile.Debian
Normal file
@@ -0,0 +1,17 @@
|
||||
FROM debian:bullseye
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=Etc/UTC
|
||||
ENV UTC=true
|
||||
ENV ARC=false
|
||||
|
||||
COPY debian.sh /tmp
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade --yes && \
|
||||
sh /tmp/debian.sh && \
|
||||
mkdir /builds
|
||||
|
||||
WORKDIR /builds
|
||||
|
||||
VOLUME [ "/builds" ]
|
||||
11
tools/build/Dockerfile.Fedora
Normal file
11
tools/build/Dockerfile.Fedora
Normal file
@@ -0,0 +1,11 @@
|
||||
FROM fedora:latest
|
||||
|
||||
COPY fedora.sh /tmp
|
||||
|
||||
RUN dnf update --assumeyes && \
|
||||
sh /tmp/fedora.sh && \
|
||||
mkdir /builds
|
||||
|
||||
WORKDIR /builds
|
||||
|
||||
VOLUME [ "/builds" ]
|
||||
11
tools/build/Dockerfile.Manjaro
Normal file
11
tools/build/Dockerfile.Manjaro
Normal file
@@ -0,0 +1,11 @@
|
||||
FROM manjarolinux/base
|
||||
|
||||
COPY manjaro.sh /tmp
|
||||
|
||||
RUN pacman --sync --refresh --sysupgrade --noconfirm && \
|
||||
sh /tmp/manjaro.sh && \
|
||||
mkdir /builds
|
||||
|
||||
WORKDIR /builds
|
||||
|
||||
VOLUME [ "/builds" ]
|
||||
17
tools/build/Dockerfile.Ubuntu
Normal file
17
tools/build/Dockerfile.Ubuntu
Normal file
@@ -0,0 +1,17 @@
|
||||
FROM ubuntu:rolling
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=Etc/UTC
|
||||
ENV UTC=true
|
||||
ENV ARC=false
|
||||
|
||||
COPY ubuntu.sh /tmp
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade --yes && \
|
||||
sh /tmp/ubuntu.sh && \
|
||||
mkdir /builds
|
||||
|
||||
WORKDIR /builds
|
||||
|
||||
VOLUME [ "/builds" ]
|
||||
136
tools/build/README.rst
Normal file
136
tools/build/README.rst
Normal file
@@ -0,0 +1,136 @@
|
||||
==========================
|
||||
FreeCAD build dependencies
|
||||
==========================
|
||||
|
||||
Distributions
|
||||
=============
|
||||
|
||||
The following commands are used to install the packages needed to build FreeCAD from source on the following distributions.
|
||||
|
||||
|
||||
Arch Linux
|
||||
----------
|
||||
|
||||
The following command is used to install the required packages used to compile FreeCAD on Arch Linux.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
sudo sh tools/build/arch.sh
|
||||
|
||||
|
||||
Debian
|
||||
------
|
||||
|
||||
The following command is used to install the required packages used to compile FreeCAD on Debian.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
sudo sh tools/build/debian.sh
|
||||
|
||||
|
||||
Fedora
|
||||
------
|
||||
|
||||
The following command is used to install the required packages used to compile FreeCAD on Fedora.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
sudo sh tools/build/fedora.sh
|
||||
|
||||
|
||||
Manjaro
|
||||
-------
|
||||
|
||||
The following command is used to install the required packages used to compile FreeCAD on Manjaro Linux.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
sudo sh tools/build/manjaro.sh
|
||||
|
||||
|
||||
Ubuntu
|
||||
------
|
||||
|
||||
|
||||
The following command is used to install the required packages used to compile FreeCAD on Ubuntu Linux.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
sudo sh tools/build/ubuntu.sh
|
||||
|
||||
|
||||
Containers
|
||||
==========
|
||||
|
||||
The following will create containers that have all the required dependencies
|
||||
pre-installed that are needed to build FreeCAD from source.
|
||||
|
||||
|
||||
Arch Linux
|
||||
-----------
|
||||
|
||||
The following commands are used to create and run a Arch Linux build environment.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker build --file tools/build/Dockerfile.Arch --tag freecad-arch
|
||||
docker run --rm --interactive --tty --volume $(pwd):/builds:z freecad-arch
|
||||
|
||||
|
||||
Debian
|
||||
------
|
||||
|
||||
The following commands are used to create and run a Debian build environment.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker build --file tools/build/Dockerfile.Debian --tag freecad-debian
|
||||
docker run --rm --interactive --tty --volume $(pwd):/builds:z freecad-debian
|
||||
|
||||
|
||||
Fedora
|
||||
------
|
||||
|
||||
The following commands are used to create and run a Fedora build environment.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker build --file tools/build/Dockerfile.Fedora --tag freecad-fedora
|
||||
docker run --rm --interactive --tty --volume $(pwd):/builds:z freecad-fedora
|
||||
|
||||
|
||||
Manjaro
|
||||
-------
|
||||
|
||||
The following commands are used to create and run a Manjaro build environment.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker build --file tools/build/Dockerfile.Manjaro --tag freecad-manjaro
|
||||
docker run --rm --interactive --tty --volume $(pwd):/builds:z freecad-manjaro
|
||||
|
||||
|
||||
Ubuntu
|
||||
------
|
||||
|
||||
The following commands are used to create and run a Ubuntu build environment.
|
||||
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker build --file tools/build/Dockerfile.Ubuntu --tag freecad-ubuntu
|
||||
docker run --rm --interactive --tty --volume $(pwd):/builds:z freecad-ubuntu
|
||||
|
||||
|
||||
Build Code
|
||||
==========
|
||||
|
||||
To build the FreeCAD code inside one of the running containers the following
|
||||
commands should be used
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
mkdir freecad-build
|
||||
cd freecad-build
|
||||
cmake ../freecad-source
|
||||
make -j$(nproc --ignore=2)
|
||||
7
tools/build/arch.sh
Normal file
7
tools/build/arch.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
pacman --noconfirm --sync boost boost-libs cmake coin curl desktop-file-utils doxygen \
|
||||
eigen gc gcc-fortran git glew gnu-free-fonts guile hicolor-icon-theme jsoncpp \
|
||||
libspnav libtool make med opencascade openmpi pyside2 pyside2-tools \
|
||||
python-matplotlib python-netcdf4 python-pivy qt5-svg qt5-tools qt5-webengine \
|
||||
qt5-webkit shared-mime-info shiboken2 swig texinfo xerces-c
|
||||
|
||||
15
tools/build/debian.sh
Executable file
15
tools/build/debian.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
apt-get install --no-install-recommends --yes build-essential cmake doxygen \
|
||||
git libboost-date-time-dev libboost-dev libboost-filesystem-dev \
|
||||
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \
|
||||
libboost-python-dev libboost-regex-dev libboost-serialization-dev \
|
||||
libboost-thread-dev libcoin-dev libeigen3-dev libgtkglext1-dev libgts-dev \
|
||||
libkdtree++-dev libkml-dev libmedc-dev libocct-data-exchange-dev \
|
||||
libocct-draw-dev libocct-foundation-dev libocct-modeling-algorithms-dev \
|
||||
libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev \
|
||||
libopencv-dev libproj-dev libpyside2-dev libqt5svg5-dev libqt5webkit5-dev \
|
||||
libqt5xmlpatterns5-dev libshiboken2-dev libvtk9-dev libvtk9-qt-dev \
|
||||
libvtk-dicom-dev libx11-dev libxerces-c-dev libxmu-dev libxmuu-dev \
|
||||
libzipios++-dev netgen netgen-headers pyside2-tools python3-dev \
|
||||
python3-matplotlib python3-pivy python3-pyside2.qtuitools qtchooser \
|
||||
qttools5-dev shiboken2 swig
|
||||
9
tools/build/fedora.sh
Normal file
9
tools/build/fedora.sh
Normal file
@@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
dnf --assumeyes install boost-devel cmake Coin3 Coin3-devel desktop-file-utils doxygen \
|
||||
eigen3-devel freeimage-devel freetype freetype-devel gcc gettext git libspnav-devel \
|
||||
libXmu-devel med med-devel mesa-libGLU-devel ode-devel opencascade-devel \
|
||||
opencv-devel openmpi-devel pcl-devel pyside2-tools python3 python3-devel \
|
||||
python3-matplotlib python3-pivy python3-pyside2-devel qt5-qtsvg-devel \
|
||||
qt5-qttools-static qt5-qtxmlpatterns qt5-qtxmlpatterns-devel qt-devel \
|
||||
qt-webkit-devel smesh-devel SoQt-devel swig tbb-devel vtk xerces-c xerces-c-devel
|
||||
|
||||
7
tools/build/manjaro.sh
Executable file
7
tools/build/manjaro.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
pacman --noconfirm --sync boost boost-libs cmake coin curl desktop-file-utils doxygen \
|
||||
eigen gc gcc-fortran git glew gnu-free-fonts guile hicolor-icon-theme jsoncpp \
|
||||
libspnav libtool make med opencascade pyside2 pyside2-tools python-matplotlib \
|
||||
python-netcdf4 python-pivy qt5-svg qt5-tools qt5-webengine qt5-webkit \
|
||||
shared-mime-info shiboken2 swig texinfo xerces-c
|
||||
|
||||
15
tools/build/ubuntu.sh
Normal file
15
tools/build/ubuntu.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
apt-get install --no-install-recommends --yes build-essential cmake doxygen git \
|
||||
libboost-date-time-dev libboost-dev libboost-filesystem-dev \
|
||||
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \
|
||||
libboost-python-dev libboost-regex-dev libboost-serialization-dev \
|
||||
libboost-thread-dev libcoin-dev libeigen3-dev libgtkglext1-dev \
|
||||
libgts-dev libkdtree++-dev libkml-dev libmedc-dev libocct-data-exchange-dev \
|
||||
libocct-draw-dev libocct-foundation-dev libocct-modeling-algorithms-dev \
|
||||
libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev \
|
||||
libopencv-dev libproj-dev libpyside2-dev libqt5svg5-dev libqt5webkit5-dev \
|
||||
libqt5xmlpatterns5-dev libshiboken2-dev libvtk9-dev libvtk9-qt-dev \
|
||||
libvtk-dicom-dev libx11-dev libxerces-c-dev libxmu-dev libxmuu-dev \
|
||||
libzipios++-dev netgen netgen-headers pyside2-tools python3-dev \
|
||||
python3-matplotlib python3-pivy python3-pyside2.qtuitools qtchooser \
|
||||
qttools5-dev shiboken2 swig
|
||||
Reference in New Issue
Block a user