Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.0/patches/2223064/?format=api
{ "id": 2223064, "url": "http://patchwork.ozlabs.org/api/1.0/patches/2223064/?format=api", "project": { "id": 27, "url": "http://patchwork.ozlabs.org/api/1.0/projects/27/?format=api", "name": "Buildroot development", "link_name": "buildroot", "list_id": "buildroot.buildroot.org", "list_email": "buildroot@buildroot.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20260414095841.445592-1-mooz@blockos.org>", "date": "2026-04-14T09:56:25", "name": "[v2] package/python-ncclient: new package", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "3a971f6e0bb75ce7f44777714f9437b99d125cf5", "submitter": { "id": 92650, "url": "http://patchwork.ozlabs.org/api/1.0/people/92650/?format=api", "name": "Vincent Cruz", "email": "mooz@blockos.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/buildroot/patch/20260414095841.445592-1-mooz@blockos.org/mbox/", "series": [ { "id": 499812, "url": "http://patchwork.ozlabs.org/api/1.0/series/499812/?format=api", "date": "2026-04-14T09:56:25", "name": "[v2] package/python-ncclient: new package", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/499812/mbox/" } ], "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2223064/checks/", "tags": {}, "headers": { "Return-Path": "<buildroot-bounces@buildroot.org>", "X-Original-To": [ "incoming-buildroot@patchwork.ozlabs.org", "buildroot@buildroot.org" ], "Delivered-To": [ "patchwork-incoming-buildroot@legolas.ozlabs.org", "buildroot@buildroot.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=buildroot.org header.i=@buildroot.org\n header.a=rsa-sha256 header.s=default header.b=fwaPLWTV;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=buildroot.org\n (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org;\n envelope-from=buildroot-bounces@buildroot.org; receiver=patchwork.ozlabs.org)" ], "Received": [ "from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fw0LJ4YmZz1y2d\n\tfor <incoming-buildroot@patchwork.ozlabs.org>;\n Tue, 14 Apr 2026 20:06:46 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id B83144292C;\n\tTue, 14 Apr 2026 10:06:44 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id 7YdatBA0Gqxl; Tue, 14 Apr 2026 10:06:43 +0000 (UTC)", "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id A29CB42965;\n\tTue, 14 Apr 2026 10:06:43 +0000 (UTC)", "from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n by lists1.osuosl.org (Postfix) with ESMTP id 65792375\n for <buildroot@buildroot.org>; Tue, 14 Apr 2026 10:06:42 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id 635BB42965\n for <buildroot@buildroot.org>; Tue, 14 Apr 2026 10:06:42 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id af4_g597TDjl for <buildroot@buildroot.org>;\n Tue, 14 Apr 2026 10:06:41 +0000 (UTC)", "from 11.mo534.mail-out.ovh.net (11.mo534.mail-out.ovh.net\n [46.105.33.174])\n by smtp4.osuosl.org (Postfix) with ESMTPS id 894C14292C\n for <buildroot@buildroot.org>; Tue, 14 Apr 2026 10:06:39 +0000 (UTC)", "from director2.derp.mail-out.ovh.net\n (director2.derp.mail-out.ovh.net [79.137.60.36])\n by mo534.mail-out.ovh.net (Postfix) with ESMTPS id 4fw0935MMfz6Myt;\n Tue, 14 Apr 2026 09:58:47 +0000 (UTC)", "from director2.derp.mail-out.ovh.net\n (director2.derp.mail-out.ovh.net. [127.0.0.1])\n by director2.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP\n for <mooz@blockos.org>; Tue, 14 Apr 2026 09:58:47 +0000 (UTC)", "from mta3.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.109.249.197])\n by director2.derp.mail-out.ovh.net (Postfix) with ESMTPS id\n 4fw0934TpPz1yhZ; Tue, 14 Apr 2026 09:58:47 +0000 (UTC)", "from blockos.org (unknown [10.1.6.6])\n (Authenticated sender: mooz@blockos.org)\n by mta3.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id\n 975709415D0;\n Tue, 14 Apr 2026 09:58:46 +0000 (UTC)" ], "X-Virus-Scanned": [ "amavis at osuosl.org", "amavis at osuosl.org" ], "X-Comment": "SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=buildroot-bounces@buildroot.org;\n receiver=<UNKNOWN> ", "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 smtp4.osuosl.org A29CB42965", "OpenDKIM Filter v2.11.0 smtp4.osuosl.org 894C14292C" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=buildroot.org;\n\ts=default; t=1776161203;\n\tbh=3ai/M5q6+FB8yuzj81RhFKYHTPDoMVbwjVB6QyTRqh4=;\n\th=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:\n\t List-Post:List-Help:List-Subscribe:Cc:From;\n\tb=fwaPLWTV3JUZFum7C5XbQO3QuyE/xyPhSgzIskyW8JwrMNA/vWF4SokBd3spSLFHL\n\t irsoFFZE59Jtny77YFXyse38B/919dCltk9li7soSrLSuGx13MmozlA5FcGg3BmgWK\n\t yYZL6p9Gs6CgqN+IPBn8V8Z/ms3ryWgF++QwC7YOzvH2uO5ttQyApvxeE3Z1cf+ko6\n\t HBQToTvD9qhZggQ0liLE+0rBnXbZHKABnVZ18Ewkw2m2SwZ9xkQvkCTqOg3/rKJNzl\n\t HfUnn2Nse0+n6bIEP6e1J+NYNR0iSm6yVLzr1+kjoGoRpWRKiSDNsTu9noiEobItLj\n\t 5jyWU6GwIFnBg==", "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=46.105.33.174;\n helo=11.mo534.mail-out.ovh.net; envelope-from=mooz@blockos.org;\n receiver=<UNKNOWN>", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp4.osuosl.org 894C14292C", "X-OVh-ClientIp": "213.36.7.12", "From": "Vincent Cruz <mooz@blockos.org>", "To": "buildroot@buildroot.org", "Date": "Tue, 14 Apr 2026 11:56:25 +0200", "Message-ID": "<20260414095841.445592-1-mooz@blockos.org>", "X-Mailer": "git-send-email 2.51.0", "MIME-Version": "1.0", "x-ovh-tracer-id": "1141381033407269794", "X-VR-SPAMSTATE": "OK", "X-VR-SPAMSCORE": "-100", "X-VR-SPAMCAUSE": "\n dmFkZTGEleDuZF7qvu0gLVn/pVN8l9+YpV6dI/ZnfmQl7tidSt7o3X/WNldqb5C2J3dwlsfeR7D3qGmJmG93lzU9KezHgh3oMNm8fPjFi90UDjjvcLXUp4W4M18NWXzKVaQaBVRmGYlMvhss3n/YbOJinF/5Xy0eXpfKG9HiuZBINLqDEvjIfKCgI35sTf8qoSiEC+zBw8LxcBgPxQQUxlezO3dM1KLgg0MMlfkk/Zat0IBqu1wNPZj223U4gXff5uF3W+fC0NHEa2G3jlNIdfO19HmFj0v9Kf6KfDweuepIEgaCCbWDPTITj6sUt7YRCU6Io+8Y5/N/dfYiIwZZykj1NkESXoSLvbdXbujp3f3wR1PRukGxhw/FOnWeDtOlkmt6X2lmlOwkSIS1/SZBMKE2xkWik7LY2bjyy8BDwz01cOuN51QJDWeaQ6P5EO0FMfn/1DVdcJ/R8vS5WrWhm6DycWcjGja40GyA8fVrzt9HxvQz9u2Ybx5fIuE4dPjMxL3KUNKFH7MN2H0YQGqczFXcyTqYmPd2H3472R6PfqZ/ycPPIWBWlZdg8EgY/MHbwCsXmK1xH8Uov5hAjWoPkBUTMQfytj8oS4myHOxsB+8q6w0T9CyNrshyKnqDt+5HzkxVynQLu0vgDW4JXE/FUt2HjGIs8I5h6QVK4qG43R1kRz9wfA", "X-Mailman-Original-Authentication-Results": [ "smtp4.osuosl.org;\n dmarc=none (p=none dis=none)\n header.from=blockos.org", "garm.ovh; auth=pass\n (GARM-112S006b408b295-a44a-4060-8526-0a27c1b58b97,\n 57EC06D2F55947E19987155D42FF0DD2D92A6C82) smtp.auth=mooz@blockos.org" ], "Subject": "[Buildroot] [PATCH v2] package/python-ncclient: new package", "X-BeenThere": "buildroot@buildroot.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Discussion and development of buildroot <buildroot.buildroot.org>", "List-Unsubscribe": "<https://lists.buildroot.org/mailman/options/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=unsubscribe>", "List-Archive": "<http://lists.buildroot.org/pipermail/buildroot/>", "List-Post": "<mailto:buildroot@buildroot.org>", "List-Help": "<mailto:buildroot-request@buildroot.org?subject=help>", "List-Subscribe": "<https://lists.buildroot.org/mailman/listinfo/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=subscribe>", "Cc": "Vincent Jardin <vjardin@free.fr>,\n James Hilliard <james.hilliard1@gmail.com>,\n Thomas Petazzoni <thomas.petazzoni@bootlin.com>,\n Vincent Cruz <mooz@blockos.org>", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "buildroot-bounces@buildroot.org", "Sender": "\"buildroot\" <buildroot-bounces@buildroot.org>" }, "content": "From: Vincent Jardin <vjardin@free.fr>\n\nncclient is a Python library for NETCONF clients. It facilitates\nclient-side scripting and application development around NETCONF.\n\nhttps://github.com/ncclient/ncclient\nSigned-off-by: Vincent Jardin <vjardin@free.fr>\nSigned-off-by: Vincent Cruz <mooz@blockos.org>\n\n---\nChanges v1 -> v2:\n - Bump version to 0.7.1\n - Add test\n\nSigned-off-by: Vincent Cruz <mooz@blockos.org>\n---\n DEVELOPERS | 1 +\n package/Config.in | 1 +\n package/python-ncclient/Config.in | 13 +++++++\n package/python-ncclient/python-ncclient.hash | 5 +++\n package/python-ncclient/python-ncclient.mk | 17 ++++++++\n .../tests/package/sample_python_ncclient.py | 19 +++++++++\n .../tests/package/test_python_ncclient.py | 39 +++++++++++++++++++\n .../rootfs-overlay/root/add_root.xml | 35 +++++++++++++++++\n 8 files changed, 130 insertions(+)\n create mode 100644 package/python-ncclient/Config.in\n create mode 100644 package/python-ncclient/python-ncclient.hash\n create mode 100644 package/python-ncclient/python-ncclient.mk\n create mode 100644 support/testing/tests/package/sample_python_ncclient.py\n create mode 100644 support/testing/tests/package/test_python_ncclient.py\n create mode 100644 support/testing/tests/package/test_python_ncclient/rootfs-overlay/root/add_root.xml", "diff": "diff --git a/DEVELOPERS b/DEVELOPERS\nindex 1ad64e876e..4a4a25e2c8 100644\n--- a/DEVELOPERS\n+++ b/DEVELOPERS\n@@ -3369,6 +3369,7 @@ F:\tpackage/dpdk/\n F:\tpackage/libecoli/\n F:\tpackage/libnss-ato/\n F:\tpackage/libyang-cpp/\n+F:\tpackage/python-ncclient/\n F:\tpackage/sysrepo-cpp/\n \n N:\tVincent Prince <vincent.prince.fr@gmail.com>\ndiff --git a/package/Config.in b/package/Config.in\nindex 71501cea53..4eeac53563 100644\n--- a/package/Config.in\n+++ b/package/Config.in\n@@ -1250,6 +1250,7 @@ menu \"External python modules\"\n \tsource \"package/python-mwscrape2slob/Config.in\"\n \tsource \"package/python-mypy/Config.in\"\n \tsource \"package/python-mypy-extensions/Config.in\"\n+\tsource \"package/python-ncclient/Config.in\"\n \tsource \"package/python-nested-dict/Config.in\"\n \tsource \"package/python-netaddr/Config.in\"\n \tsource \"package/python-netifaces/Config.in\"\ndiff --git a/package/python-ncclient/Config.in b/package/python-ncclient/Config.in\nnew file mode 100644\nindex 0000000000..7cad899ca2\n--- /dev/null\n+++ b/package/python-ncclient/Config.in\n@@ -0,0 +1,13 @@\n+config BR2_PACKAGE_PYTHON_NCCLIENT\n+\tbool \"python-ncclient\"\n+\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-paramiko\n+\tselect BR2_PACKAGE_PYTHON3_PYEXPAT # runtimeq\n+\tselect BR2_PACKAGE_PYTHON_LXML # runtime\n+\tselect BR2_PACKAGE_PYTHON_PARAMIKO # runtime\n+\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n+\thelp\n+\t ncclient is a Python library for NETCONF clients. It\n+\t facilitates client-side scripting and application\n+\t development around NETCONF.\n+\n+\t https://github.com/ncclient/ncclient\ndiff --git a/package/python-ncclient/python-ncclient.hash b/package/python-ncclient/python-ncclient.hash\nnew file mode 100644\nindex 0000000000..5901cb0ddc\n--- /dev/null\n+++ b/package/python-ncclient/python-ncclient.hash\n@@ -0,0 +1,5 @@\n+# From https://pypi.org/pypi/ncclient/0.7.1/json\n+sha256 60dabb6ac1a2d84fbc3349cb104ef7d0c5d12cf8eee43fefc715410d70410ddc ncclient-0.7.1.tar.gz\n+\n+# Locally computed\n+sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE\ndiff --git a/package/python-ncclient/python-ncclient.mk b/package/python-ncclient/python-ncclient.mk\nnew file mode 100644\nindex 0000000000..36223e835a\n--- /dev/null\n+++ b/package/python-ncclient/python-ncclient.mk\n@@ -0,0 +1,17 @@\n+################################################################################\n+#\n+# python-ncclient\n+#\n+################################################################################\n+\n+PYTHON_NCCLIENT_VERSION = 0.7.1\n+PYTHON_NCCLIENT_SOURCE = ncclient-$(PYTHON_NCCLIENT_VERSION).tar.gz\n+PYTHON_NCCLIENT_SITE = https://files.pythonhosted.org/packages/source/n/ncclient\n+\n+PYTHON_NCCLIENT_LICENSE = Apache-2.0\n+PYTHON_NCCLIENT_LICENSE_FILES = LICENSE\n+\n+PYTHON_NCCLIENT_SETUP_TYPE = hatch\n+PYTHON_NCCLIENT_DEPENDENCIES = host-python-hatch-vcs\n+\n+$(eval $(python-package))\ndiff --git a/support/testing/tests/package/sample_python_ncclient.py b/support/testing/tests/package/sample_python_ncclient.py\nnew file mode 100644\nindex 0000000000..cfd4e260e8\n--- /dev/null\n+++ b/support/testing/tests/package/sample_python_ncclient.py\n@@ -0,0 +1,19 @@\n+import os\n+from ncclient import manager\n+\n+filter = \"\"\"\n+<filter xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">\n+ <netconf-state xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring\">\n+ <sessions/>\n+ </netconf-state>\n+</filter>\n+\"\"\"\n+\n+with manager.connect(host='localhost',\n+ port=830,\n+ username=os.getenv(\"USER\"),\n+ key_filename='/root/.ssh/dummy_key',\n+ hostkey_verify=False,\n+ allow_agent=False,\n+ look_for_keys=False) as m:\n+ print(m.get(filter=filter).data_xml)\ndiff --git a/support/testing/tests/package/test_python_ncclient.py b/support/testing/tests/package/test_python_ncclient.py\nnew file mode 100644\nindex 0000000000..ca77b2080c\n--- /dev/null\n+++ b/support/testing/tests/package/test_python_ncclient.py\n@@ -0,0 +1,39 @@\n+import os\n+import infra\n+from xml.etree import ElementTree\n+from tests.package.test_python import TestPythonPackageBase\n+\n+\n+class TestPythonNCClient(TestPythonPackageBase):\n+ rootfs_overlay = infra.filepath(\"tests/package/test_python_ncclient/rootfs-overlay\")\n+\n+ __test__ = True\n+ config = TestPythonPackageBase.config + \\\n+ f\"\"\"\n+ BR2_INSTALL_LIBSTDCPP=y\n+ BR2_PACKAGE_OPENSSH=y\n+ BR2_PACKAGE_NETOPEER2=y\n+ BR2_PACKAGE_NETOPEER2_CLI=y\n+ BR2_PACKAGE_PYTHON3=y\n+ BR2_PACKAGE_PYTHON_NCCLIENT=y\n+ BR2_ROOTFS_OVERLAY=\"{rootfs_overlay}\"\n+ \"\"\"\n+ sample_scripts = [\"tests/package/sample_python_ncclient.py\"]\n+\n+ def test_run(self):\n+ self.login()\n+ self.check_sample_scripts_exist()\n+\n+ self.assertRunOk('mkdir -p /root/.ssh')\n+ self.assertRunOk('ssh-keygen -t ed25519 -f /root/.ssh/dummy_key -N \"\"')\n+ self.assertRunOk('cat /root/.ssh/dummy_key.pub > /root/.ssh/authorized_keys')\n+\n+ self.assertRunOk('sysrepocfg -f xml -I ./add_root.xml -d running -m ietf-netconf-server')\n+\n+ cmd = \"%s %s\" % (self.interpreter, os.path.basename(self.sample_scripts[0]))\n+ output, exit_code = self.emulator.run(cmd, timeout=15)\n+ self.assertEqual(exit_code, 0)\n+\n+ tree = ElementTree.fromstringlist(output)\n+ self.assertEqual(tree.tag, '{urn:ietf:params:xml:ns:netconf:base:1.0}data')\n+ self.assertEqual(tree.find('.//{*}username').text, 'root')\ndiff --git a/support/testing/tests/package/test_python_ncclient/rootfs-overlay/root/add_root.xml b/support/testing/tests/package/test_python_ncclient/rootfs-overlay/root/add_root.xml\nnew file mode 100644\nindex 0000000000..4f48be2483\n--- /dev/null\n+++ b/support/testing/tests/package/test_python_ncclient/rootfs-overlay/root/add_root.xml\n@@ -0,0 +1,35 @@\n+<?xml version=\"1.0\"?>\n+<netconf-server xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-server\">\n+ <listen>\n+ <endpoints>\n+ <endpoint>\n+ <name>default-ssh</name>\n+ <ssh>\n+ <tcp-server-parameters>\n+ <local-address>0.0.0.0</local-address>\n+ </tcp-server-parameters>\n+ <ssh-server-parameters>\n+ <server-identity>\n+ <host-key>\n+ <name>default-key</name>\n+ <public-key>\n+ <central-keystore-reference>genkey</central-keystore-reference>\n+ </public-key>\n+ </host-key>\n+ </server-identity>\n+ <client-authentication>\n+ <users>\n+ <user>\n+ <name>root</name>\n+ <public-keys>\n+ <use-system-keys xmlns=\"urn:cesnet:libnetconf2-netconf-server\"/>\n+ </public-keys>\n+ </user>\n+ </users>\n+ </client-authentication>\n+ </ssh-server-parameters>\n+ </ssh>\n+ </endpoint>\n+ </endpoints>\n+ </listen>\n+</netconf-server>\n", "prefixes": [ "v2" ] }