From c98d249a7179225b84d13ada728e606694f0f6b8 Mon Sep 17 00:00:00 2001 From: marinagarciad Date: Thu, 1 Sep 2022 12:05:35 +0200 Subject: [PATCH 1/4] first scripts modification to QT --- bin/esrocos_build_project | 4 +- bin/esrocos_build_project_old | 37 ++++++++++++++++ bin/esrocos_create_project | 3 +- bin/esrocos_create_project_old | 17 ++++++++ bin/esrocos_edit_project | 7 +-- bin/esrocos_edit_project_old | 37 ++++++++++++++++ bin/esrocos_fetch_dependencies | 4 +- bin/esrocos_fetch_dependencies_old | 68 ++++++++++++++++++++++++++++++ bin/esrocos_generate_skeletons | 4 +- bin/esrocos_generate_skeletons_old | 41 ++++++++++++++++++ 10 files changed, 212 insertions(+), 10 deletions(-) create mode 100755 bin/esrocos_build_project_old create mode 100755 bin/esrocos_create_project_old create mode 100755 bin/esrocos_edit_project_old create mode 100755 bin/esrocos_fetch_dependencies_old create mode 100755 bin/esrocos_generate_skeletons_old diff --git a/bin/esrocos_build_project b/bin/esrocos_build_project index d37b88c..199014e 100755 --- a/bin/esrocos_build_project +++ b/bin/esrocos_build_project @@ -8,6 +8,7 @@ from os import walk ESROCOS_YAML = "esrocos.yml" ROOT_DIR = os.environ['AUTOPROJ_CURRENT_ROOT'] +os.chdir('esrocos') project_name = "" # READ ESROCOS YAML @@ -31,7 +32,8 @@ except KeyError: print("DONE") -os.system("cd model;make") +os.chdir("..") +os.system("make") print("DONE") diff --git a/bin/esrocos_build_project_old b/bin/esrocos_build_project_old new file mode 100755 index 0000000..d37b88c --- /dev/null +++ b/bin/esrocos_build_project_old @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +import yaml +import sys +from subprocess import call +import os +from os import walk + +ESROCOS_YAML = "esrocos.yml" +ROOT_DIR = os.environ['AUTOPROJ_CURRENT_ROOT'] + +project_name = "" + +# READ ESROCOS YAML + +print("read esrocos.yml...", end=" ") + +data = [] + +try: + with open(ESROCOS_YAML, 'r') as infile: + + data = yaml.load(infile, yaml.FullLoader) + project_name = data["PROJECT_NAME"] + +except IOError: + print("could not read esrocos.yml, aborting...") + sys.exit() +except KeyError: + print("error parsing esrocos.yml, aborting...") + sys.exit() + +print("DONE") + +os.system("cd model;make") + +print("DONE") + diff --git a/bin/esrocos_create_project b/bin/esrocos_create_project index 6e4a1e3..df02648 100755 --- a/bin/esrocos_create_project +++ b/bin/esrocos_create_project @@ -2,8 +2,7 @@ import sys import os - -os.system("cd ${AUTOPROJ_CURRENT_ROOT}/tools/workflow/python;./generate_new_model.py") +os.system("cd ${AUTOPROJ_CURRENT_ROOT}/tools/workflow/python;./generate_new_model_QT.py") #FINALLY print(""" diff --git a/bin/esrocos_create_project_old b/bin/esrocos_create_project_old new file mode 100755 index 0000000..6e4a1e3 --- /dev/null +++ b/bin/esrocos_create_project_old @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +import sys +import os + +os.system("cd ${AUTOPROJ_CURRENT_ROOT}/tools/workflow/python;./generate_new_model.py") + +#FINALLY +print(""" +ESROCOS project initialized successfully. +Edit dependencies in >>manifest.xml +Fetch Dependencies with >>esrocos_fetch_dependencies<<. +Then edit the project by calling >>esrocos_edit_project<<. +Generate code stubs with >>esrocos_generate_skeletons<<. +Build the model >>esrocos_build_project<< +Build the project with >>amake<<. +""") diff --git a/bin/esrocos_edit_project b/bin/esrocos_edit_project index aaa3f34..04fa555 100755 --- a/bin/esrocos_edit_project +++ b/bin/esrocos_edit_project @@ -11,8 +11,7 @@ ESROCOS_YAML = "esrocos.yml" PROJECT_NAME = "" - - +os.chdir('esrocos') try: print("opening esrocos.yml...\t\t", end=" ") with open(ESROCOS_YAML, 'r') as stream: @@ -34,4 +33,6 @@ except IOError as err: print("esrocos.yml file not found, please use esrocos-init-project to initialize the project first") sys.exit() -os.system('cd model;taste-edit-project') +os.chdir('..') + +os.system('space-creator') diff --git a/bin/esrocos_edit_project_old b/bin/esrocos_edit_project_old new file mode 100755 index 0000000..aaa3f34 --- /dev/null +++ b/bin/esrocos_edit_project_old @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +import yaml +import sys +import os +import subprocess +from os import walk +from subprocess import call + +ESROCOS_YAML = "esrocos.yml" + +PROJECT_NAME = "" + + + +try: + print("opening esrocos.yml...\t\t", end=" ") + with open(ESROCOS_YAML, 'r') as stream: + try: + print("DONE") + print("parsing esrocos.yml...\t\t", end=" ") + sys.stdout.flush() + + data = yaml.load(stream, yaml.FullLoader) + + project_name = data["PROJECT_NAME"] + + print("DONE") + except yaml.YAMLError as err: + print("\nesrocos.yml could not be parsed.") + sys.exit() +except IOError as err: + print("FAILED") + print("esrocos.yml file not found, please use esrocos-init-project to initialize the project first") + sys.exit() + +os.system('cd model;taste-edit-project') diff --git a/bin/esrocos_fetch_dependencies b/bin/esrocos_fetch_dependencies index fd12ca4..0598558 100755 --- a/bin/esrocos_fetch_dependencies +++ b/bin/esrocos_fetch_dependencies @@ -21,7 +21,7 @@ SRC_DIR = "" print("read esrocos.yml...\t\t\t", end=" ") data = [] - +os.chdir('esrocos') try: with open(ESROCOS_YAML, 'r') as infile: data = yaml.load(infile, yaml.FullLoader) @@ -47,7 +47,7 @@ except KeyError as err: package = ET.Element("package") - +os.chdir("..") if deps: for dep in deps: print(dep) diff --git a/bin/esrocos_fetch_dependencies_old b/bin/esrocos_fetch_dependencies_old new file mode 100755 index 0000000..fd12ca4 --- /dev/null +++ b/bin/esrocos_fetch_dependencies_old @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +import yaml +import sys +import os +import xml.etree.cElementTree as ET +from subprocess import call +from os import walk +from shutil import copyfile +import re + + +ESROCOS_YAML = "esrocos.yml" +ROOT_DIR = os.environ['AUTOPROJ_CURRENT_ROOT'] +#SHARED_TYPES_DIR = ROOT_DIR+"/install/types/" + +project_name = "" +SRC_DIR = "" + +# READ YAML + +print("read esrocos.yml...\t\t\t", end=" ") + +data = [] + +try: + with open(ESROCOS_YAML, 'r') as infile: + data = yaml.load(infile, yaml.FullLoader) + component_name = data["COMPONENT_NAME"] + project_name =data["PROJECT_NAME"] + +except IOError: + print("could not read esrocos.yml, aborting...") + sys.exit() +except KeyError: + print("error parsing esrocos.yml, aborting...") + sys.exit() + +print("DONE") + +# EXTRACT DEPS + +try: + deps = data['deps'] +except KeyError as err: + print("error in reading yml data, aborting...") + sys.exit() + + +package = ET.Element("package") + +if deps: + for dep in deps: + print(dep) + amake_arguments = ["aup", dep] + call(amake_arguments) +else: + print("There are no dependencies ") + exit() + +#AMAKE +print("calling amake, installing deps...") + + + +for dep in deps: + amake_arguments = ["amake", dep] + call(amake_arguments) +print("DONE") diff --git a/bin/esrocos_generate_skeletons b/bin/esrocos_generate_skeletons index 61eaf6b..628358c 100755 --- a/bin/esrocos_generate_skeletons +++ b/bin/esrocos_generate_skeletons @@ -14,7 +14,7 @@ project_name = "" print("read esrocos.yml...", end=" ") data = [] - +os.chdir('esrocos') try: with open(ESROCOS_YAML, 'r') as infile: @@ -37,5 +37,5 @@ out_dir = os.getenv('AUTOPROJ_CURRENT_ROOT') out_dir = os.path.join(out_dir, component_name, 'model') print(out_dir) -os.system("cd model;make skeletons") +os.system("make skeletons") diff --git a/bin/esrocos_generate_skeletons_old b/bin/esrocos_generate_skeletons_old new file mode 100755 index 0000000..61eaf6b --- /dev/null +++ b/bin/esrocos_generate_skeletons_old @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +import yaml +import sys +import subprocess +import os + +ESROCOS_YAML = "esrocos.yml" +ROOT_DIR = os.environ['AUTOPROJ_CURRENT_ROOT'] + +project_name = "" + +# READ YAML + +print("read esrocos.yml...", end=" ") + +data = [] + +try: + with open(ESROCOS_YAML, 'r') as infile: + + data = yaml.load(infile, yaml.FullLoader) + project_name = data["PROJECT_NAME"] + component_name = data["COMPONENT_NAME"] + +except IOError: + print("could not read esrocos.yml, aborting...") + sys.exit() +except KeyError: + print("error parsing esrocos.yml, aborting...") + sys.exit() + +print("DONE") + +print(project_name) + +out_dir = os.getenv('AUTOPROJ_CURRENT_ROOT') + +out_dir = os.path.join(out_dir, component_name, 'model') +print(out_dir) +os.system("cd model;make skeletons") + From 24cb4b5d1c6ec9caa0ac306903b0c18f52856992 Mon Sep 17 00:00:00 2001 From: marinagarciad Date: Thu, 1 Sep 2022 15:46:09 +0200 Subject: [PATCH 2/4] space-crearor script adaptation for esrocos added --- bin/esrocos_space-creator | 279 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100755 bin/esrocos_space-creator diff --git a/bin/esrocos_space-creator b/bin/esrocos_space-creator new file mode 100755 index 0000000..6fe98fc --- /dev/null +++ b/bin/esrocos_space-creator @@ -0,0 +1,279 @@ +#!/bin/bash +# call with "reset" to regenerate the Makefile in the current project folder +SPACECREATOR=spacecreator.AppImage + +if [ -t 1 ] ; then + COLORON="\e[1m\e[32m" + REDCOLORON="\e[1m\e[31m" + COLOROFF="\e[0m" +else + COLORON="" + REDCOLORON="" + COLOROFF="" +fi +echo -e "Welcome to ${COLORON}TASTE${COLOROFF}" + +INFO="${COLORON}[INFO]${COLOROFF}" +ERROR="${REDCOLORON}[ERROR]${COLOROFF}" + + + +generate_makefile() { + echo -e "${INFO} Creating project Makefile" + echo "KAZOO?=kazoo +SPACECREATOR?=spacecreator.AppImage + +# Here you can specify custom compiler/linker flags, and add folders containing +# external code you want to compile and link for a specific partition. +# Use upper case for the partition name: +# +# export _USER_CFLAGS=... +# export _USER_LDFLAGS=... +# export _EXTERNAL_SOURCE_PATH= + +# If you need to reset this Makefile to its original state, run: +# $ space-creator reset + +# Get the list of ASN.1 files from Space Creator project file: +DISTFILES=\$(shell qmake $PROJECT_FILE -o /tmp/null 2>&1) +ASN1_FILES=\$(shell find \${DISTFILES} 2>/dev/null | egrep '\.asn\$\$|\.asn1\$\$') + +all: release + +release: work/glue_release + rm -rf work/glue_debug + rm -rf work/glue_coverage + \$(MAKE) -C work check_targets + \$(MAKE) -C work + +debug: work/glue_debug + rm -rf work/glue_release + rm -rf work/glue_coverage + \$(MAKE) -C work check_targets + \$(MAKE) -C work + +coverage: work/glue_coverage + rm -rf work/glue_release + rm -rf work/glue_debug + \$(MAKE) -C work check_targets + \$(MAKE) -C work + +# To build and run the system type e.g. 'make debug run' +run: + \$(MAKE) -C work run + +# To run Cheddar/Marzhin for scheduling analysis, type 'make edit_cv' +edit_cv: + \$(MAKE) -C work run_cv + +# Simulation target (experimental - for systems made of SDL functions only) +simu: + \$(MAKE) interfaceview work/glue_simu + \$(MAKE) -C work + \$(MAKE) -C work/simulation -f Makefile.Simulation simu + +skeletons: + \$(MAKE) work/skeletons_built + +work/skeletons_built: InterfaceView.aadl DataView.aadl + \$(KAZOO) --gw -o work + \$(MAKE) -C work dataview + touch \$@ + +work/glue_simu: InterfaceView.aadl DataView.aadl + \$(KAZOO) -t SIMU --glue --gw + \$(MAKE) -C work dataview + touch \$@ + +work/glue_release: InterfaceView.aadl DeploymentView.aadl DataView.aadl + sed -i 's/CoverageEnabled => true/CoverageEnabled => false/g' DeploymentView.aadl || : + \$(KAZOO) -p --glue --gw -o work + touch \$@ + +work/glue_debug: InterfaceView.aadl DeploymentView.aadl DataView.aadl + sed -i 's/CoverageEnabled => true/CoverageEnabled => false/g' DeploymentView.aadl || : + \$(KAZOO) --debug -p --glue --gw -o work + touch \$@ + +work/glue_coverage: InterfaceView.aadl DeploymentView.aadl DataView.aadl + sed -i 's/CoverageEnabled => false/CoverageEnabled => true/g' DeploymentView.aadl || : + \$(KAZOO) --debug -p --glue --gw -o work + touch \$@ + +InterfaceView.aadl: interfaceview.xml + \$(SPACECREATOR) --aadlconverter -o \$^ -t \$(shell taste-config --prefix)/share/xml2aadl/interfaceview.tmplt -x \$@ + +%: %.dv.xml Default_Deployment.aadl + # Build using deployment view \$^ + @# We must update the .aadl only if the dv.xml file has changed (more recent timestamp) + if [ \$< -nt \$@.aadl ]; then \ + \$(SPACECREATOR) --dvconverter -o \$< -t \$(shell taste-config --prefix)/share/dv2aadl/deploymentview.tmplt -x \$@.aadl; fi; + rsync --checksum \$@.aadl DeploymentView.aadl + +interfaceview: Default_Deployment.aadl + # Build when no deployment view is open - use default + rsync --checksum \$< DeploymentView.aadl + +Default_Deployment.aadl: interfaceview.xml + # Create/update a default deployment view for Linux target, if none other is provided + \$(SPACECREATOR) --aadlconverter -o \$^ -t \$(shell taste-config --prefix)/share/xml2dv/interfaceview.tmplt -x \$@ || exit 1 + rsync --checksum \$@ DeploymentView.aadl + +DeploymentView.aadl: Default_Deployment.aadl + +DataView.aadl: \${ASN1_FILES} + taste-update-data-view \$^ + +clean: + rm -rf work/build work/dataview work/glue_simu + rm -f *.aadl # Interface and Deployment views in AADL are generated + rm -f work/glue_release work/glue_debug work/glue_coverage work/skeletons_built + find work -type d -name \"wrappers\" -exec rm -rf {} + || : + find work -type d -name \"*_GUI\" -exec rm -rf {} + || : + +.PHONY: clean release debug coverage skeletons simu run +" > Makefile +} + +generate_pro_file() { + echo -e "${INFO} Creating Space Creator project file" + # Create Space Creator's project file + # the message($$DISTFILE) is used to display on screen the list + # of project files (to get the list of ASN.1 files for taste-update-dataview) + echo "TEMPLATE = lib +CONFIG -= qt +CONFIG += generateC + +DISTFILES += \$(HOME)/tool-inst/share/taste-types/taste-types.asn +DISTFILES += $PROJECT_NAME.asn +DISTFILES += $PROJECT_NAME.acn +DISTFILES += $PROJECT_NAME.msc +DISTFILES += interfaceview.xml +DISTFILES += work/binaries/*.msc +DISTFILES += work/binaries/coverage/index.html +DISTFILES += work/binaries/filters +#include(handleAsn1AcnBuild.pri) +include(work/taste.pro) +message(\$\$DISTFILES) +" > $PROJECT_FILE +} + +generate_pro_user_file() { + # Create Qt Creator's XML Configuration file + echo -e "${INFO} Configuring the QtCreator Kit for the project" + # Define strings to create Spacecrator's .pro.user config file: + BUILD_DIRECTORY=$(pwd) + # The UUID are not random, they relate to the version of Qt creator + # The first one is in QtCreator.ini and generated by Qt Creator the first time it is executed + # or by default by the TASTE installer + UUID1=$(grep EnvironmentId $HOME/.config/QtProject/QtCreator.ini | cut -f 2 -d'{' | cut -f 1 -d '}') + UUID2="6d650885-2dda-4f6a-b4fa-1fabe64f392b" # Kit of the AppImage + cp -f $(taste-config --prefix)/bin/space_creator_config.xml $PROJECT_FILE.user + sed -i "s,BUILD_DIRECTORY,$BUILD_DIRECTORY," $PROJECT_FILE.user + sed -i "s/UUID1/$UUID1/" $PROJECT_FILE.user + sed -i "s/UUID2/$UUID2/" $PROJECT_FILE.user +} + +# To determine if we are in an existing project folder +PROJECT_FILE=$(find *.pro 2>/dev/null) + +# If the project file already exist, directly run the gui +if [ -f "$PROJECT_FILE" ] +then + if [ "$1" != "reset" ] + then + run_space_creator $PROJECT_FILE + exit $? + else + PROJECT_NAME=${PROJECT_FILE%.*} + generate_makefile + generate_pro_file + generate_pro_user_file + echo -e "${INFO} Done resetting all project configuration files" + exit 0 + fi +fi + +# New project: was the script called with "init" ( = don't run any gui just setup the project files) +if [ "$1" == "init" ] +then + # With "init", a folder (project name) should be given as parameter + new_folder="$2" +else + # New project, interactive session: prompt user for project name + echo -e "${INFO} A new TASTE Space Creator project folder will be created (use Ctrl-C to cancel)" + new_folder="$1" +fi + +# Project folder must start with a letter +if [[ "$new_folder" =~ ^[A-Za-z].* ]] +then + if [ -d "$new_folder" ] + then + echo -e "${ERROR} Aborting - a folder with that name already exists" + exit 1 + else + mkdir "$new_folder" + cd "$new_folder" + touch InterfaceView.aadl + PROJECT_FILE="$new_folder".pro + PROJECT_NAME="$new_folder" + fi +else + echo -e "${ERROR} Aborting - The project name is invalid. Hint: first character shall be a letter." + exit 1 +fi + + +generate_makefile +generate_pro_file +generate_pro_user_file + +# Create default work folder +mkdir -p work/binaries +touch work/taste.pro + +# Create empty MSC file +echo "mscdocument $PROJECT_NAME /* MSC AND */; + language ASN.1; + data $PROJECT_NAME.asn; + +/* CIF MSCDOCUMENT (0, 0) (4200, 2300) */ + +mscdocument Nominal /* MSC LEAF */; + +msc $PROJECT_NAME; +endmsc; +endmscdocument; +endmscdocument;" > $PROJECT_NAME.msc + +# Create empty filter file for the MSC inner tracing tool +echo "-- Add your filters here for the MSC tracing tool (list of instances and message names you don't want to trace) +-- format of the file: one filter per line +-- one line is either: +-- input to +-- or +-- instance +" > work/binaries/filters + +# Create a default data view (use pre-made DataView.aadl to speed up) +echo -e "${INFO} Creating a default ASN.1 data model." +cp -f $(taste-config --prefix)/bin/space-creator-dataview.aadl DataView.aadl +sed -i "s/MD5ACN/$MD5ACN/" DataView.aadl +sed -i "s/MD5ASN/$MD5ASN/" DataView.aadl +sed -i "s/PROJECTNAME/$PROJECT_NAME/" DataView.aadl +NONINTERACTIVE=1 ONLY_ASN=1 taste-create-data-view "$PROJECT_NAME" + +# Create a default interface view +echo " + + + + +" > interfaceview.xml + +if [ "$1" == "init" ] +then + echo -e "${INFO} Done. You can run 'space-creator' from the project folder to open the editor" + echo -e "${INFO} 'make skeletons' to create the skeletons or just 'make' to build everything." +fi From 59fed5230d62710bda6dbe392f9c4cf3eba5637b Mon Sep 17 00:00:00 2001 From: marinagarciad Date: Fri, 2 Sep 2022 09:38:09 +0200 Subject: [PATCH 3/4] QT creation as original esrocos structure --- bin/Makefile | 112 +++++++++++++++++++++++ bin/esrocos_build_project | 6 +- bin/esrocos_create_project | 2 +- bin/esrocos_edit_project | 6 +- bin/esrocos_fetch_dependencies | 2 +- bin/esrocos_generate_skeletons | 4 +- python/generate_new_model.py | 4 +- python/generate_new_model_old.py | 51 +++++++++++ python/newmodel/packageGenerators.py | 24 ++++- python/newmodel/packageGenerators_old.py | 96 +++++++++++++++++++ 10 files changed, 294 insertions(+), 13 deletions(-) create mode 100644 bin/Makefile create mode 100755 python/generate_new_model_old.py create mode 100644 python/newmodel/packageGenerators_old.py diff --git a/bin/Makefile b/bin/Makefile new file mode 100644 index 0000000..a99fdea --- /dev/null +++ b/bin/Makefile @@ -0,0 +1,112 @@ +KAZOO?=kazoo +SPACECREATOR?=spacecreator.AppImage + +# Here you can specify custom compiler/linker flags, and add folders containing +# external code you want to compile and link for a specific partition. +# Use upper case for the partition name: +# +# export _USER_CFLAGS=... +# export _USER_LDFLAGS=... +# export _EXTERNAL_SOURCE_PATH= + +# If you need to reset this Makefile to its original state, run: +# $ space-creator reset + +# Get the list of ASN.1 files from Space Creator project file: +DISTFILES=$(shell qmake bbbb/cccc.pro -o /tmp/null 2>&1) +ASN1_FILES=$(shell find ${DISTFILES} 2>/dev/null | egrep '\.asn$$|\.asn1$$') + +all: release + +release: work/glue_release + rm -rf work/glue_debug + rm -rf work/glue_coverage + $(MAKE) -C work check_targets + $(MAKE) -C work + +debug: work/glue_debug + rm -rf work/glue_release + rm -rf work/glue_coverage + $(MAKE) -C work check_targets + $(MAKE) -C work + +coverage: work/glue_coverage + rm -rf work/glue_release + rm -rf work/glue_debug + $(MAKE) -C work check_targets + $(MAKE) -C work + +# To build and run the system type e.g. 'make debug run' +run: + $(MAKE) -C work run + +# To run Cheddar/Marzhin for scheduling analysis, type 'make edit_cv' +edit_cv: + $(MAKE) -C work run_cv + +# Simulation target (experimental - for systems made of SDL functions only) +simu: + $(MAKE) interfaceview work/glue_simu + $(MAKE) -C work + $(MAKE) -C work/simulation -f Makefile.Simulation simu + +skeletons: + $(MAKE) work/skeletons_built + +work/skeletons_built: InterfaceView.aadl DataView.aadl + $(KAZOO) --gw -o work + $(MAKE) -C work dataview + touch $@ + +work/glue_simu: InterfaceView.aadl DataView.aadl + $(KAZOO) -t SIMU --glue --gw + $(MAKE) -C work dataview + touch $@ + +work/glue_release: InterfaceView.aadl DeploymentView.aadl DataView.aadl + sed -i 's/CoverageEnabled => true/CoverageEnabled => false/g' DeploymentView.aadl || : + $(KAZOO) -p --glue --gw -o work + touch $@ + +work/glue_debug: InterfaceView.aadl DeploymentView.aadl DataView.aadl + sed -i 's/CoverageEnabled => true/CoverageEnabled => false/g' DeploymentView.aadl || : + $(KAZOO) --debug -p --glue --gw -o work + touch $@ + +work/glue_coverage: InterfaceView.aadl DeploymentView.aadl DataView.aadl + sed -i 's/CoverageEnabled => false/CoverageEnabled => true/g' DeploymentView.aadl || : + $(KAZOO) --debug -p --glue --gw -o work + touch $@ + +InterfaceView.aadl: interfaceview.xml + $(SPACECREATOR) --aadlconverter -o $^ -t $(shell taste-config --prefix)/share/xml2aadl/interfaceview.tmplt -x $@ + +%: %.dv.xml Default_Deployment.aadl + # Build using deployment view $^ + @# We must update the .aadl only if the dv.xml file has changed (more recent timestamp) + if [ $< -nt $@.aadl ]; then $(SPACECREATOR) --dvconverter -o $< -t $(shell taste-config --prefix)/share/dv2aadl/deploymentview.tmplt -x $@.aadl; fi; + rsync --checksum $@.aadl DeploymentView.aadl + +interfaceview: Default_Deployment.aadl + # Build when no deployment view is open - use default + rsync --checksum $< DeploymentView.aadl + +Default_Deployment.aadl: interfaceview.xml + # Create/update a default deployment view for Linux target, if none other is provided + $(SPACECREATOR) --aadlconverter -o $^ -t $(shell taste-config --prefix)/share/xml2dv/interfaceview.tmplt -x $@ || exit 1 + rsync --checksum $@ DeploymentView.aadl + +DeploymentView.aadl: Default_Deployment.aadl + +DataView.aadl: ${ASN1_FILES} + taste-update-data-view $^ + +clean: + rm -rf work/build work/dataview work/glue_simu + rm -f *.aadl # Interface and Deployment views in AADL are generated + rm -f work/glue_release work/glue_debug work/glue_coverage work/skeletons_built + find work -type d -name "wrappers" -exec rm -rf {} + || : + find work -type d -name "*_GUI" -exec rm -rf {} + || : + +.PHONY: clean release debug coverage skeletons simu run + diff --git a/bin/esrocos_build_project b/bin/esrocos_build_project index 199014e..e693516 100755 --- a/bin/esrocos_build_project +++ b/bin/esrocos_build_project @@ -8,7 +8,7 @@ from os import walk ESROCOS_YAML = "esrocos.yml" ROOT_DIR = os.environ['AUTOPROJ_CURRENT_ROOT'] -os.chdir('esrocos') + project_name = "" # READ ESROCOS YAML @@ -32,8 +32,8 @@ except KeyError: print("DONE") -os.chdir("..") -os.system("make") + +os.system("cd model;make") print("DONE") diff --git a/bin/esrocos_create_project b/bin/esrocos_create_project index df02648..a1353a0 100755 --- a/bin/esrocos_create_project +++ b/bin/esrocos_create_project @@ -2,7 +2,7 @@ import sys import os -os.system("cd ${AUTOPROJ_CURRENT_ROOT}/tools/workflow/python;./generate_new_model_QT.py") +os.system("cd ${AUTOPROJ_CURRENT_ROOT}/tools/workflow/python;./generate_new_model.py") #FINALLY print(""" diff --git a/bin/esrocos_edit_project b/bin/esrocos_edit_project index 04fa555..6cb696a 100755 --- a/bin/esrocos_edit_project +++ b/bin/esrocos_edit_project @@ -11,7 +11,7 @@ ESROCOS_YAML = "esrocos.yml" PROJECT_NAME = "" -os.chdir('esrocos') + try: print("opening esrocos.yml...\t\t", end=" ") with open(ESROCOS_YAML, 'r') as stream: @@ -33,6 +33,6 @@ except IOError as err: print("esrocos.yml file not found, please use esrocos-init-project to initialize the project first") sys.exit() -os.chdir('..') -os.system('space-creator') + +os.system('cd model;space-creator') diff --git a/bin/esrocos_fetch_dependencies b/bin/esrocos_fetch_dependencies index 0598558..b6f512b 100755 --- a/bin/esrocos_fetch_dependencies +++ b/bin/esrocos_fetch_dependencies @@ -21,7 +21,7 @@ SRC_DIR = "" print("read esrocos.yml...\t\t\t", end=" ") data = [] -os.chdir('esrocos') + try: with open(ESROCOS_YAML, 'r') as infile: data = yaml.load(infile, yaml.FullLoader) diff --git a/bin/esrocos_generate_skeletons b/bin/esrocos_generate_skeletons index 628358c..61eaf6b 100755 --- a/bin/esrocos_generate_skeletons +++ b/bin/esrocos_generate_skeletons @@ -14,7 +14,7 @@ project_name = "" print("read esrocos.yml...", end=" ") data = [] -os.chdir('esrocos') + try: with open(ESROCOS_YAML, 'r') as infile: @@ -37,5 +37,5 @@ out_dir = os.getenv('AUTOPROJ_CURRENT_ROOT') out_dir = os.path.join(out_dir, component_name, 'model') print(out_dir) -os.system("make skeletons") +os.system("cd model;make skeletons") diff --git a/python/generate_new_model.py b/python/generate_new_model.py index 5684fbc..9c43690 100755 --- a/python/generate_new_model.py +++ b/python/generate_new_model.py @@ -27,6 +27,7 @@ def main(): else: break project_name=words[len(words)-1] + package_type=words[len(words)-2] #Check if it is correct package_set_name = input ("Please enter the package set that you desire to include the new component:\n") @@ -44,7 +45,8 @@ def main(): print("This dependency is not installed in ESROCOS environment") # Create autoproj package structures #To check this - packageGenerators.create_component(component_name,project_name, package_set_name, dependencies) #check + packageGenerators.call_TasteImplementation(component_name,package_type,project_name, package_set_name, dependencies)#check + if __name__ == "__main__": diff --git a/python/generate_new_model_old.py b/python/generate_new_model_old.py new file mode 100755 index 0000000..5684fbc --- /dev/null +++ b/python/generate_new_model_old.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 + +# H2020 ESROCOS Project +# Company: GMV Aerospace & Defence S.A.U. +# Licence: GPLv2 + +import sys +import getopt +import errno +import os +import shutil + +from mako.template import Template +from mako.runtime import Context +from newmodel import packageGenerators + + +def main(): + # Parse arguments and create a new model in autoproj + print ('Generating a new ESROCOS component') + + while True: + component_name = input ("Please enter the component name:\n ") + words = component_name.split('/') + if (len(words) != 2): + print('The component name is wrong. the format should be [package_type]/[project_name]') + else: + break + project_name=words[len(words)-1] + #Check if it is correct + package_set_name = input ("Please enter the package set that you desire to include the new component:\n") + + stop = 0 + dependencies = [] + while stop==0: + d = input("Please enter the dependecies or pulse \"s\" to finish :\n") + if d == "s": + stop = 1 + break + else: #Check depenedies + if(packageGenerators.check_dependency(d)): + dependencies.append(d) + else: + print("This dependency is not installed in ESROCOS environment") + # Create autoproj package structures + #To check this + packageGenerators.create_component(component_name,project_name, package_set_name, dependencies) #check + + +if __name__ == "__main__": + main() diff --git a/python/newmodel/packageGenerators.py b/python/newmodel/packageGenerators.py index 1b56b3b..304fa03 100644 --- a/python/newmodel/packageGenerators.py +++ b/python/newmodel/packageGenerators.py @@ -19,6 +19,7 @@ from . import ErrorCodes def write_package_templates(templates, comp_name, project,dep,package_set_name, templ_dir, outdir): + ''' Write a set of Mako templates for a package. ''' @@ -34,9 +35,27 @@ def write_package_templates(templates, comp_name, project,dep,package_set_name, f.close() else: print('File {} exists. Skipped.'.format(outfname)) - +def call_TasteImplementation(component_name,package_type, project_name, package_set_name, dependencies): + 'extract the default environmet' + out_dir = os.getenv('AUTOPROJ_CURRENT_ROOT') + out_dir = os.path.join(out_dir,component_name) + if not os.path.exists(out_dir): + os.makedirs(out_dir) + 'first copy and customize the esrocos files' + 'insted of space-creator command, a copy of the space creator with modifications has being created to luch the taste-QT environmet as It was defined previously' + lunch_qt = os.path.join( out_dir ,'esrocos_space-creator ' ) + + templ_dir = os.path.join(os.path.dirname(__file__), 'templates') + templates = ['esrocos.yml.mako', 'manifest.xml.mako', 'CMakeLists.txt.mako', 'README.md.mako'] + + write_package_templates(templates, component_name,project_name, dependencies,package_set_name, templ_dir, out_dir) + + os.chdir(out_dir) + lunch_qt='esrocos_space-creator model' + os.system(lunch_qt) + def create_component(component_name, project_name, package_set_name, dependencies): ''' Create a new package in autoproj environment. @@ -55,6 +74,7 @@ def create_component(component_name, project_name, package_set_name, dependencie templates = ['esrocos.yml.mako', 'manifest.xml.mako', 'CMakeLists.txt.mako', 'README.md.mako', os.path.join('model', 'CMakeLists.txt.mako')] + write_package_templates(templates, component_name,project_name, dependencies,package_set_name, templ_dir, out_dir) files =['DataView.aadl', 'ConcurrencyView_Properties.aadl', 'DeploymentView.aadl', 'InterfaceView.aadl', 'Makefile', 'update_data_view.sh' ] @@ -68,7 +88,7 @@ def create_component(component_name, project_name, package_set_name, dependencie st = os.stat(os.path.join(out_dir, 'model',f)) os.chmod(os.path.join(out_dir, 'model',f),st.st_mode|stat.S_IEXEC) else: - print('File {} exists. Skipped.'.format(f_out)) + print('File {} exists. Skipped.'.format(f_out)) if not os.path.exists(os.path.join(out_dir, 'model', 'work')): shutil.copytree(os.path.join(templ_dir, 'model','work'),os.path.join(out_dir, 'model','work')) diff --git a/python/newmodel/packageGenerators_old.py b/python/newmodel/packageGenerators_old.py new file mode 100644 index 0000000..3160e7d --- /dev/null +++ b/python/newmodel/packageGenerators_old.py @@ -0,0 +1,96 @@ +# H2020 ESROCOS Project +# Company: GMV Aerospace & Defence S.A.U. +# Licence: GPLv2 + +import sys +import os +import shutil +import subprocess +import stat + +from mako.template import Template +from mako.runtime import Context + +try: + from StringIO import StringIO +except ImportError: + from io import StringIO + +from . import ErrorCodes + +def write_package_templates(templates, comp_name, project,dep,package_set_name, templ_dir, outdir): + ''' + Write a set of Mako templates for a package. + ''' + for t in templates: + outfname = os.path.join(outdir, t.rstrip('.mako')) + if not os.path.isfile(outfname): + template = Template(filename=os.path.join(templ_dir, t)) + buf = StringIO() + ctx = Context(buf, component_name=comp_name,project_name=project, dependencies=dep, package_set=package_set_name) + template.render_context(ctx) + f = open(outfname, 'w') + f.write(buf.getvalue()) + f.close() + else: + print('File {} exists. Skipped.'.format(outfname)) + + + +def create_component(component_name, project_name, package_set_name, dependencies): + ''' + Create a new package in autoproj environment. + ''' + + print('Creating the structure for a new package {}'.format(component_name)) + + out_dir = os.getenv('AUTOPROJ_CURRENT_ROOT') + out_dir = os.path.join(out_dir,component_name) + if not os.path.exists(out_dir): + os.makedirs(out_dir) + if not os.path.exists(os.path.join(out_dir, 'model')): + os.makedirs(os.path.join(out_dir, 'model')) + + templ_dir = os.path.join(os.path.dirname(__file__), 'templates') + templates = ['esrocos.yml.mako', 'manifest.xml.mako', 'CMakeLists.txt.mako', 'README.md.mako', os.path.join('model', 'CMakeLists.txt.mako')] + + + write_package_templates(templates, component_name,project_name, dependencies,package_set_name, templ_dir, out_dir) + + files =['DataView.aadl', 'ConcurrencyView_Properties.aadl', 'DeploymentView.aadl', 'InterfaceView.aadl', 'Makefile', 'update_data_view.sh' ] + + for f in files: + f_in = os.path.join(templ_dir,'model',f) + f_out = os.path.join(out_dir, 'model',f) + if not os.path.isfile(f_out): + shutil.copyfile(f_in, os.path.join(out_dir, 'model',f)) + if f=="update_data_view.sh": + st = os.stat(os.path.join(out_dir, 'model',f)) + os.chmod(os.path.join(out_dir, 'model',f),st.st_mode|stat.S_IEXEC) + else: + print('File {} exists. Skipped.'.format(f_out)) + + if not os.path.exists(os.path.join(out_dir, 'model', 'work')): + shutil.copytree(os.path.join(templ_dir, 'model','work'),os.path.join(out_dir, 'model','work')) + + + + +def check_dependency(dependency): + ''' + Check if a dependency is defined in autoproj environment. + ''' + dep_dir = os.getenv('AUTOPROJ_CURRENT_ROOT') + dep_dir= os.path.join(dep_dir,dependency) + + if not os.path.exists(dep_dir): + subprocess.run(["autoproj", "update", dependency]) + if not os.path.exists(dep_dir): + print('This dependency does not exist') + return False + else: + print('Updated and checked dependency {}\n'.format(dependency)) + return True + else: + print('Checked dependency {}\n'.format(dependency)) + return True From d51f30a2e8923c7d91dd13af64d70b68b8136efb Mon Sep 17 00:00:00 2001 From: marinagarciad Date: Fri, 2 Sep 2022 10:08:44 +0200 Subject: [PATCH 4/4] unecesary variables deleted --- python/generate_new_model.py | 2 +- python/newmodel/.packageGenerators.py.swp | Bin 0 -> 12288 bytes python/newmodel/packageGenerators.py | 48 +++------------------- 3 files changed, 6 insertions(+), 44 deletions(-) create mode 100644 python/newmodel/.packageGenerators.py.swp diff --git a/python/generate_new_model.py b/python/generate_new_model.py index 9c43690..58330ef 100755 --- a/python/generate_new_model.py +++ b/python/generate_new_model.py @@ -45,7 +45,7 @@ def main(): print("This dependency is not installed in ESROCOS environment") # Create autoproj package structures #To check this - packageGenerators.call_TasteImplementation(component_name,package_type,project_name, package_set_name, dependencies)#check + packageGenerators.create_component(component_name,project_name, package_set_name, dependencies)#check diff --git a/python/newmodel/.packageGenerators.py.swp b/python/newmodel/.packageGenerators.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..f4ebb20f6e6d7f7e1466c0b83062a725574799b5 GIT binary patch literal 12288 zcmeHNJ!~9B6rLb{1K}q$K!FBBvS;bMc1#mlvXFIg5|fw<_Bj+GTCMkHePi$KEIYG4 zA1Kg}f&xkq4HBXSgajgpf|3S7gOGrR79r6fK{~`Yvpe?}M@dRxR{DIqvv1y;_q{jo zoprN0cYbA+9`}zCTn`fR$rlerb1RRKLw69;-D-z=_(qqOo7v^LD#Bz_>|Iy1@*D6S@GbBe z@F~y)&HxSIFmMp~;}9WNfVY4ZpbmU|AJzhdz#`xQj{-m6OUO^akHBT%5^x4+0FMK| zA0*^U;BBA}oCZF)hmcJm03HLb+)c>mz%#%C@Dyc37LXS;o>fOQSx0<{Q*}C37zc4Ty+#TC>@z-1I!pm@$FY4u>P_q=u)M zr-%4#=*FLK)JH3iGFzbH#${lwJURS%O58wZUDTMxvXE6sruQ?A}p#N zhHi2u>sF0q_O(%?P1fnawy`_V50Wof7yN!V@w?%U@aoj-hAEGkRQ}$`U}H7hVP}zF z(pP(GAiK7_bYgYc@3za4i$fFIb{R*Ld?xHR2k=UJR11QbCoBl2VRf)BL!Hr+6lv56 zUQ&~4tVgtN*B^|Bz@ue4c|1j=+Em1JTma0%%XS^<5{ay@1yqNXLevJb$5ls1lgB&? z6&Im#D~k5;fdn&|nB{Dji$W&-GIhO} z=TepHFjb_GN_6?l%;>CgjB27}If3E=lL!|Bk#an@_TQ8?1%FZfzzwB%H^Bfv1Vp4SaNM}SM8bd6l|dS z8LL~>!El=l_BwVEDq^|CHNpC->g`ETkG4^kSLxIB9iC;Z?GL&L$cc46S3N{ey|${y zev}BwY9*gqMqjaS>OgI?h<(ty8zu!rCS-J=(7$w`jUDWk-bk6(dhG7;bKU215RxiH zpcbjUab*~Qx<>UHW+%(cqGs^gg0omvpOHQQ$`--j7_Ezwm1x{L?7{lFLU-O;X-;rq zeSk!(Du*?l_L|y7TRKb~F_L9*QzK+eCszO|^kivC)mc$ZnZD*ehO83D_vm9PmwNVQ(6LN&M_d|w%ibPB~2`y`~jL#M`} zU3!*B`0mFR=&5sOcjqzCK#qrL9|NoB=@QF@X%F-$J;7ovN!R@)f5V65>G`?&Il8>Q N)@(G_>A8}2@()8+#v}j$ literal 0 HcmV?d00001 diff --git a/python/newmodel/packageGenerators.py b/python/newmodel/packageGenerators.py index 304fa03..69c179b 100644 --- a/python/newmodel/packageGenerators.py +++ b/python/newmodel/packageGenerators.py @@ -37,7 +37,10 @@ def write_package_templates(templates, comp_name, project,dep,package_set_name, print('File {} exists. Skipped.'.format(outfname)) -def call_TasteImplementation(component_name,package_type, project_name, package_set_name, dependencies): +def create_component(component_name,project_name, package_set_name, dependencies): + ''' + Create a new package in autoproj environment. + ''' 'extract the default environmet' out_dir = os.getenv('AUTOPROJ_CURRENT_ROOT') out_dir = os.path.join(out_dir,component_name) @@ -53,48 +56,7 @@ def call_TasteImplementation(component_name,package_type, project_name, package_ write_package_templates(templates, component_name,project_name, dependencies,package_set_name, templ_dir, out_dir) os.chdir(out_dir) - lunch_qt='esrocos_space-creator model' - os.system(lunch_qt) - -def create_component(component_name, project_name, package_set_name, dependencies): - ''' - Create a new package in autoproj environment. - ''' - - print('Creating the structure for a new package {}'.format(component_name)) - - out_dir = os.getenv('AUTOPROJ_CURRENT_ROOT') - out_dir = os.path.join(out_dir,component_name) - if not os.path.exists(out_dir): - os.makedirs(out_dir) - if not os.path.exists(os.path.join(out_dir, 'model')): - os.makedirs(os.path.join(out_dir, 'model')) - - templ_dir = os.path.join(os.path.dirname(__file__), 'templates') - templates = ['esrocos.yml.mako', 'manifest.xml.mako', 'CMakeLists.txt.mako', 'README.md.mako', os.path.join('model', 'CMakeLists.txt.mako')] - - - - write_package_templates(templates, component_name,project_name, dependencies,package_set_name, templ_dir, out_dir) - - files =['DataView.aadl', 'ConcurrencyView_Properties.aadl', 'DeploymentView.aadl', 'InterfaceView.aadl', 'Makefile', 'update_data_view.sh' ] - - for f in files: - f_in = os.path.join(templ_dir,'model',f) - f_out = os.path.join(out_dir, 'model',f) - if not os.path.isfile(f_out): - shutil.copyfile(f_in, os.path.join(out_dir, 'model',f)) - if f=="update_data_view.sh": - st = os.stat(os.path.join(out_dir, 'model',f)) - os.chmod(os.path.join(out_dir, 'model',f),st.st_mode|stat.S_IEXEC) - else: - print('File {} exists. Skipped.'.format(f_out)) - - if not os.path.exists(os.path.join(out_dir, 'model', 'work')): - shutil.copytree(os.path.join(templ_dir, 'model','work'),os.path.join(out_dir, 'model','work')) - - - + os.system('esrocos_space-creator model') def check_dependency(dependency):