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

feat: add recipe for ua-nodeset #7312

Merged
merged 22 commits into from
Sep 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions recipes/ua-nodeset/all/conandata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
sources:
"padim-1.02-2021-07-21":
# This is just the latest tag on the 1.04 release branch as of 23Sep2021
url: https://github.com/OPCFoundation/UA-Nodeset/archive/refs/tags/PADIM-1.02-2021-07-21.tar.gz
sha256: 05c83369ea82cd275d47ccc46a6d919c81392e2d0b7444a3e538ee3ba482dbee
43 changes: 43 additions & 0 deletions recipes/ua-nodeset/all/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from conans import ConanFile, CMake, tools
import os

required_conan_version = ">=1.33.0"


class UaNodeSetConan(ConanFile):
name = "ua-nodeset"
license = "MIT"
description = "UANodeSets and other normative files which are released with a specification"
homepage = "https://github.com/OPCFoundation/UA-Nodeset"
url = "https://github.com/conan-io/conan-center-index"
topics = ("opc-ua-specifications", "uanodeset", "normative-files", "companion-specification")

no_copy_source = True

@property
def _source_subfolder(self):
return "source_subfolder"

def _extract_license(self):
content = tools.load(os.path.join(self.source_folder, self._source_subfolder, "AnsiC", "opcua_clientapi.c"))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see there are some sources (opcua_clientapi.c at very least), but I don't see anything built/compiled in the conanfile.
there is nothing included or linked in the test package as well, it only checks for some PLCopen file.
could you explain how this project is exactly used?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These source files are just example files which could be used in combination with the official OPC Foundation reference ANSI C implementation, which is not open source.

The other files, especially the NodeSet2.xml files (together with their Types.xsd and NodeId.csv) files are machine-readable descriptions of an OPC UA companion specification.

The open62541 stack includes the nodeset generator, which generates C Code from these XML files, to correctly initialize an OPC UA Server with a given companion specification.

That script is added in #7314 to open62541.
So open62541 depends on ua-nodeset if one wants to create a pre-initialized OPC UA server.
ua-nodeset conan package is just delivering the resource files, and no libraries or binaries.

license_contents = content[2:content.find("*/", 1)]
tools.save("LICENSE", license_contents)

def source(self):
tools.get(**self.conan_data["sources"][self.version], strip_root=True, destination=self._source_subfolder)

def build(self):
pass


def package(self):
Pro marked this conversation as resolved.
Show resolved Hide resolved
self._extract_license()
self.copy("*", dst="res", src=self._source_subfolder)
self.copy("LICENSE", dst="licenses")


def package_info(self):
self.cpp_info.libdirs = []
Mo-Tay marked this conversation as resolved.
Show resolved Hide resolved
self.cpp_info.resdirs = ["res"]
self.user_info.nodeset_dir = os.path.join(self.package_folder, "res")

12 changes: 12 additions & 0 deletions recipes/ua-nodeset/all/test_package/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from conans import ConanFile, CMake, tools
import os


class TestUaNodeSetConan(ConanFile):

def build(self):
pass

def test(self):
assert os.path.exists(os.path.join(self.deps_user_info["ua-nodeset"].nodeset_dir, "PLCopen"))

3 changes: 3 additions & 0 deletions recipes/ua-nodeset/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
versions:
Mo-Tay marked this conversation as resolved.
Show resolved Hide resolved
"padim-1.02-2021-07-21":
folder: all