snap/snapcraft.yaml
author Edouard Tisserant <edouard.tisserant@gmail.com>
Fri, 12 Aug 2022 13:14:33 +0200
changeset 84 8e01f3bb59df
parent 82 90da520cbaa5
child 86 3564991cd359
permissions -rw-r--r--
GH CD: Add Modbus and open62541 sources.
name: beremiz
version: '1.3-beta2'
summary: Beremiz
description: |
  Beremiz is Free and Open Source PLC. It brings Free Software IDE (GPL) and Runtime (LGPL) for machine automation, conforming to IEC-61131.
# TODO icon


grade: devel
confinement: devmode
base: core20

parts:

  python-deps:
    # This part provides all python2 dependencies, including interpreter
    # More particularily, it builds latest PIP supporting python2 from git
    # and uses it to collect and buid other Beremiz dependencies.
    #
    # rational:
    #  - python plugin doesn't support python2 anymore on core20+
    #  - attempts to get python2+pip+virtualenv in a core20 based snap failed

    plugin: nil
    source: https://github.com/pypa/pip/archive/refs/tags/20.3.4.tar.gz
    build-packages:
      - libssl-dev
      - libgtk-3-dev
      - libgl1-mesa-dev
      - libglu1-mesa-dev
      - python2-dev

    stage-packages:
      - python2
      - python-setuptools

    override-build: |
      # For some reasons site-packages needs to be created and 
      # added to PYTHONPATH during PIP (own) build.
      # Apparently not anymore when snap is executed.
      mkdir $SNAPCRAFT_PART_INSTALL/usr/lib/python2.7/site-packages
      PYTHONPATH=$SNAPCRAFT_PART_INSTALL/usr/lib/python2.7/site-packages \
        $SNAPCRAFT_PART_INSTALL/usr/bin/python2 $SNAPCRAFT_PART_SRC/setup.py \
            install --prefix $SNAPCRAFT_PART_INSTALL/usr
      PYTHONPATH=$SNAPCRAFT_PART_INSTALL/usr/lib/python2.7/site-packages \
        $SNAPCRAFT_PART_INSTALL/usr/bin/pip install \
          lxml                \
          future              \
          matplotlib          \
          msgpack_python      \
          u-msgpack-python    \
          zeroconf2           \
          enum34              \
          pyro                \
          sslpsk              \
          posix_spawn         \
          twisted             \
          nevow               \
          autobahn            \
          click               \
          opcua               \
          pycountry           \
          fonttools           \
          Brotli              \
          wxPython==4.1.1

  beremiz:
    # Beremiz python source + GCC toolchain
    # source tree is expected to be just aside snap directory
    plugin: nil
    source: beremiz
    source-type: local
    stage-packages:
      - gcc
      - libc6
      - libc6-dev
      - linux-libc-dev
      - libgcc-9-dev
      - libgcc-s1
    override-build: |
      cp -a $SNAPCRAFT_PART_SRC $SNAPCRAFT_PART_INSTALL/beremiz

  matiec:
    # Matiec ST, SFC and IL compiler.
    # source tree is expected to be just aside snap directory
    plugin: nil
    source: matiec
    source-type: local
    build-packages:
      - build-essential
      - automake
      - flex
      - bison
    override-build: |
      autoreconf -i && ./configure && make
      cp -a $SNAPCRAFT_PART_BUILD $SNAPCRAFT_PART_INSTALL/matiec

  modbus:
    plugin: nil
    source: Modbus
    source-type: local
    build-packages:
      - build-essential
      - automake
    override-build: |
      make
      cp -a $SNAPCRAFT_PART_BUILD $SNAPCRAFT_PART_INSTALL/Modbus

  open62541:
    plugin: nil
    source: open62541
    source-type: local
    build-packages:
      - build-essential
      - cmake
    override-build: |
      mkdir build && cd build && cmake .. && make
      cp -a $SNAPCRAFT_PART_BUILD $SNAPCRAFT_PART_INSTALL/open62541
      
  inkscape:
    # CLI only, used in SVGHMI build
    # GUI fails to launch couldn't find a way
    plugin: nil
    stage-packages:
      - inkscape
      - libgtk-3-0 
      # libgtk3 needs to be explicitely given
      # otherwise wxGtk doesn't start, with this error :
      # libgtk-3.so.0: undefined symbol: pango_font_family_get_face
      # ... why ?

  revisiontxt:
    # Makefile generated "revisions.txt"
    plugin: nil
    source: .
    source-type: local
    override-build: |
      cp $SNAPCRAFT_PART_SRC/revisions.txt $SNAPCRAFT_PART_INSTALL

apps:
  ide:
    # Launcher for the IDE
    environment:
      SYSROOT: $SNAP
    command: usr/bin/python2 $SNAP/beremiz/Beremiz.py
    extensions: [gnome-3-38]

  beremiz:
    # Beremiz Command Line interface
    environment:
      SYSROOT: $SNAP
    command: usr/bin/python2 $SNAP/beremiz/Beremiz_cli.py
 
  runtime:
    # Standalone runtime
    environment:
      SYSROOT: $SNAP
    command: usr/bin/python2 $SNAP/beremiz/Beremiz_service.py