Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ogma-core: Adjust handler names in ROS, FPrime app generators to match Copilot backend. Refs #130. #132

Merged
merged 2 commits into from
Mar 14, 2024

Conversation

ivanperez-keera
Copy link
Member

Adjust the names of the expected handlers in the ROS and FPrime application generators to match what the Copilot backend is using, as prescribed in the solution proposed for #130.

The Copilot, FPrime and ROS backends do not use the same name for the
handler names. In one case, an extra "prop" is added to the name, which
makes the resulting Copilot code not directly usable from FPrime / ROS
without edits.

This commit modifies the FPrime and ROS backends so that the handler
names do not contain the additional "prop", making them match the
Copilot backend.
@ivanperez-keera
Copy link
Member Author

Change Manager: The date in the CHANGELOG should be updated to today.

@ivanperez-keera
Copy link
Member Author

Implementor: Fix implemented, review requested.

@ivanperez-keera
Copy link
Member Author

Change Manager: Verified that:

  • Solution is implemented:
    • The code proposed compiles passes the tests. Details:
      Docker image:

      FROM ubuntu:trusty
      
      RUN apt-get update
      
      RUN apt-get install --yes software-properties-common
      RUN add-apt-repository ppa:hvr/ghc
      RUN apt-get update
      
      RUN apt-get install --yes ghc-8.6.5 cabal-install-2.4
      RUN apt-get install --yes libz-dev
      
      ENV PATH=/opt/ghc/8.6.5/bin:/opt/cabal/2.4/bin:$PWD/.cabal-sandbox/bin:$PATH
      
      RUN cabal update
      RUN cabal v1-sandbox init
      RUN cabal v1-install alex happy
      RUN apt-get install --yes git
      
      # We install the application first and then test it, in case any tests need to
      # run the tool.
      CMD git clone $REPO && \
          cd $NAME && \
          git checkout $COMMIT && \
          cd .. && \
          cabal v1-install $NAME/$PAT**/ --enable-tests && \
          cabal v1-install $NAME/$PAT**/ --enable-tests --run-tests -j1

      Command:

      $ docker run -e "REPO=https://github.com/nasa/ogma" -e "NAME=ogma" -e PAT="ogma-" -e "COMMIT=8082ff83059dec71ac1073dcc5ef3c7ab77ee198" -it ogma-test
    • The solution proposed fixes the issues described. Details:
      The following Dockerfile compiles a spec with the ROS and Copilot standalone backends and uses the ROS tools to build the monitoring application:

      --- Dockerfile-verify-130
      FROM ubuntu:focal
      
      ENV DEBIAN_FRONTEND=noninteractive
      
      RUN apt-get update
      SHELL ["/bin/bash", "-c"]
      
      RUN apt-get install --yes software-properties-common
      RUN add-apt-repository universe
      RUN apt-get update
      RUN apt-get install curl -y
      RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
      RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | tee /etc/apt/sources.list.d/ros2.list
      RUN apt-get update
      RUN apt-get upgrade -y
      RUN apt-get install -y ros-foxy-ros-base python3-argcomplete
      RUN apt-get install -y ros-dev-tools
      
      RUN add-apt-repository ppa:hvr/ghc
      RUN apt-get update
      
      RUN apt-get install --yes ghc-8.6.5 cabal-install-2.4
      RUN apt-get install --yes libz-dev
      
      ENV PATH=/opt/ghc/8.6.5/bin:/opt/cabal/2.4/bin:$PWD/.cabal-sandbox/bin:$PATH
      
      RUN cabal update
      RUN cabal v1-sandbox init
      RUN cabal v1-install alex happy
      RUN cabal v1-install copilot-3.19
      RUN apt-get install --yes git
      
      ADD reqs.json /tmp/reqs.json
      ADD variable-db /tmp/variable-db
      
      CMD git clone $REPO && \
          cd $NAME && \
          git checkout $COMMIT && \
          cd .. && \
          cabal v1-install --force-reinstall $NAME/$PAT**/ && \
          ogma ros --fret-file-name /tmp/reqs.json --variable-db /tmp/variable-db && \
          ogma fret-component-spec --fret-file-name /tmp/reqs.json --target-file-name monitor > CS.hs && \
          cabal v1-exec -- runhaskell CS.hs && \
          mv monitor* ros/src/ && \
          cd ros/ && \
          source /opt/ros/foxy/setup.bash && \
          colcon build && \
          echo "Success"
      
      --- reqs.json
      {
        "test_componentSpec": {
          "Functions": [
          ],
          "Internal_variables": [
          ],
          "Other_variables": [
            {
              "name": "a",
              "type": "bool"
            }
          ],
          "Requirements": [
            {
              "CoCoSpecCode": "true",
              "fretish": "unimportant",
              "name": "testCopilot",
              "ptLTL": "a"
            }
          ]
        }
      }
      
      --- variables-db
      ("a","bool","/a","Bool")

      Command:

      $ docker run -e "REPO=https://github.com/nasa/ogma" -e "NAME=ogma" -e PAT="ogma-" -e "COMMIT=8082ff83059dec71ac1073dcc5ef3c7ab77ee198" -it ogma-verify-130
  • Implementation is documented. Details:
    No changes needed.
  • Change history is clear.
  • Commit messages are clear.
  • Changelogs are updated.
  • Examples are updated. Details:
    No examples affected.
  • Required version bumps are evaluated. Details:
    No bump needed (bug fix).

@ivanperez-keera ivanperez-keera merged commit dc83040 into develop Mar 14, 2024
@ivanperez-keera ivanperez-keera deleted the develop-prop-name branch March 21, 2024 00:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant