snap/snapcraft.yaml
author Edouard Tisserant <edouard.tisserant@gmail.com>
Sun, 31 Jul 2022 17:54:19 +0200
changeset 80 1088ce57d3c9
parent 79 a8b434605895
child 81 a95b2fa896e9
permissions -rw-r--r--
Add (untested) snapcraft workflow for GitHub action. Add documentation about manual snapcraft invokation.
name: beremiz
version: '1.3-beta2'
summary: Beremiz
description: |
  Beremiz is an integrated development environment for machine automation. It is Free Software, conforming to IEC-61131 among other standards.

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
      # libs reclaimed by snapcraft at the end of wxPython build
      # TODO: test if still necessary since using "extensions: [gnome-3-38]"
      - libgtk-3-0
      - libegl1
      - libgl1
      - libsm6
      - libxtst6

    override-build: |
      # For some reasons site-packages needs to be created and 
      # added to PYTHONPATH during PIP (own) build.
      # Strangely, 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 \
          zeroconf2 \
          enum34 \
          pyro \
          sslpsk \
          posix_spawn \
          twisted \
          nevow \
          autobahn \
          click \
          opcua \
          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
      
  revisiontxt:
    # Makefile generated "revisions.txt"
    plugin: nil
    source: .
    source-type: local
    override-build: |
      cp $SNAPCRAFT_PART_SRC/revisions.txt $SNAPCRAFT_PART_INSTALL

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

  beremiz:
    environment:
      SYSROOT: $SNAP
    command: usr/bin/python2 $SNAP/beremiz/Beremiz_cli.py