Skip to content

Commit

Permalink
Relax dcou dep. in order-crates-for-publishing.py
Browse files Browse the repository at this point in the history
  • Loading branch information
ryoqun committed Jul 10, 2023
1 parent d54b620 commit 4f11fa8
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion ci/order-crates-for-publishing.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,36 @@ def load_metadata():
return json.loads(subprocess.Popen(
cmd, shell=True, stdout=subprocess.PIPE).communicate()[0])

no_explicit_version_specified = '*'

def is_special_cased_self_dep(package, dependency):
is_special_cased = False

# Sometimes self-dev-dep with dev-context-only-utils is needed and this dep
# pattern is actually legalized by cargo:
# https://releases.rs/docs/1.40.0/#cargo
# https://github.com/rust-lang/cargo/pull/7333
if (dependency['kind'] == 'dev' and
dependency['name'] == package['name'] and
'dev-context-only-utils' in dependency['features'] and
'path' in dependency):
if dependency['req'] == no_explicit_version_specified:
is_special_cased = True
else:
sys.exit(
'Error: wrong dev-context-only-utils circular dependency. try: ' +
'{} = {{ path = ".", features = {} }}\n'
.format(dependency['name'], json.dumps(dependency['features']))
)

return is_special_cased

def should_check(package, dependency):
is_related_to_solana = dependency['name'].startswith('solana')
return (
is_related_to_solana and not is_special_cased_self_dep(package, dependency)
)

def get_packages():
metadata = load_metadata()

Expand All @@ -30,7 +60,7 @@ def get_packages():
dependency_graph = dict()
for pkg in metadata['packages']:
manifest_path[pkg['name']] = pkg['manifest_path'];
dependency_graph[pkg['name']] = [x['name'] for x in pkg['dependencies'] if x['name'].startswith('solana')];
dependency_graph[pkg['name']] = [x['name'] for x in pkg['dependencies'] if should_check(pkg, x)];

# Check for direct circular dependencies
circular_dependencies = set()
Expand Down

0 comments on commit 4f11fa8

Please sign in to comment.