GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — context: load internal modules from module dir by pepa-cz · Pull Request #172 · CESNET/libyang-python

Conversation

@pepa-cz

@pepa-cz pepa-cz commented Sep 23, 2026

Copy link
Copy Markdown

Since libyang commit CESNET/libyang@be5a07fe0 ("context UPDATE remove binary internal modules", soversion 5.3.4), the internal YANG modules are no longer compiled into the library. ly_ctx_new() loads them from the context search directories, so the caller has to pass ly_yang_module_dir(), and LY_CTX_DISABLE_SEARCHDIRS must not be set before the context exists.

The bindings do neither, so with a recent libyang every Context(...) fails with cannot create context:

ERROR: test_ctx_no_dir (test_context.ContextTest.test_ctx_no_dir)
    raise self.error("cannot create context")
libyang.util.LibyangError: cannot create context

Built against libyang master (soversion 5.5.5), 148 of the 159 unit tests fail on current master. The same failures show up in CI, e.g. in the run for #171.

This PR:

  • declares ly_yang_module_dir() and ly_ctx_set_options(),
  • always adds the libyang module directory to the search paths,
  • applies disable_searchdirs after the context has been created, so the internal modules are still reachable while the option keeps its documented meaning,
  • bumps the minimum required libyang soversion to 5.3.4.

With the patch, make lint and all 159 tests pass against libyang master. No test changes were needed: the existing test_ctx_no_dir, test_ctx_disable_searchdirs and test_ctx_using_clb cover the fixed behaviour.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Pepa Hajek
context: load internal modules from module dir
fadeba7
Since libyang commit be5a07fe0 ("context UPDATE remove binary internal
modules", soversion 5.3.4), the internal YANG modules (ietf-inet-types,
yang, ietf-yang-library, ...) are no longer compiled into the library.
ly_ctx_new() loads them with lys_parse_load(), which only looks into the
context search directories, and the callers are expected to pass
ly_yang_module_dir() as the search dir. Passing LY_CTX_DISABLE_SEARCHDIRS
to ly_ctx_new() makes the internal modules unreachable altogether.

The bindings do neither, so every context creation fails with
"cannot create context". Built against libyang master, 148 of the 159
unit tests fail, which is also what the test and coverage jobs currently
report in CI.

Declare ly_yang_module_dir() and ly_ctx_set_options(), always add the
module directory to the search paths, and apply disable_searchdirs after
the context has been created, so that the internal modules can still be
found while the option keeps its documented meaning.

Bump the minimum required libyang soversion to 5.3.4 accordingly.

Signed-off-by: Pepa Hajek <[email protected]>
@jktjkt jktjkt mentioned this pull request Sep 23, 2026
Fix compatibility with the master branch of libyang #173
Closed
@jktjkt

jktjkt commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

I proposed a different fix in #173 because I was not sure whether silently disobeying an explicit user command "do not access disk" is a proper way forward.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@samuel-gauthier samuel-gauthier closed this in 72c3915 Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@pepa-cz @jktjkt
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.