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

pub upgrade --major-version breaks sdk constraints #3486

Closed
bsutton opened this issue Jul 8, 2022 · 1 comment
Closed

pub upgrade --major-version breaks sdk constraints #3486

bsutton opened this issue Jul 8, 2022 · 1 comment

Comments

@bsutton
Copy link
Contributor

bsutton commented Jul 8, 2022

OS linux
OS version Linux 5.15.0-40-generic #43-Ubuntu SMP Wed Jun 15 12:54:21 UTC 2022
dart version 2.17.5

I have a project pub_release that has the following pubspec.yaml:

name: pub_release
version: 7.3.3
homepage: https://github.com/bsutton/pub_release
documentation: https://pubrelease.noojee.dev/
description: Automates the release of a dart package to pub.dev including running dartfmt, creating a git tag, incrementing the packages version no. and pushing the package to pub.dev.
environment: 
  sdk: '>=2.12.0 <3.0.0'
dependencies: 
  dcli: 1.20.1
  github: ^8.0.1
  meta: ^1.3.0
  mime: ^1.0.0
  pub_semver: ^2.1.0
  pubspec: ^2.3.0
  settings_yaml: ^3.0.6
dev_dependencies: 
  dependency_validator: ^3.0.0
  lint_hard: ^1.0.0
  test: ^1.16.2
executables: 
  pub_release: 
  github_release: 
  github_workflow_release: 
platforms: 
  linux: 
  windows: 
  macos: 

Note: the sdk constraint of >=2.12.0

I would assume that this means that pub_release will run on sdk 2.12.

I now run dart pub upgrade --major-versions with the resulting pubspec.yaml:

name: pub_release
version: 7.3.3
homepage: https://github.com/bsutton/pub_release
documentation: https://pubrelease.noojee.dev/
description: Automates the release of a dart package to pub.dev including running dartfmt, creating a git tag, incrementing the packages version no. and pushing the package to pub.dev.
environment: 
  sdk: '>=2.12.0 <3.0.0'
dependencies: 
  dcli: ^1.31.2
  github: ^9.4.0
  meta: ^1.3.0
  mime: ^1.0.0
  pub_semver: ^2.1.0
  pubspec: ^2.3.0
  settings_yaml: ^3.0.6
dev_dependencies: 
  dependency_validator: ^3.0.0
  lint_hard: ^2.0.0
  test: ^1.16.2
executables: 
  pub_release: 
  github_release: 
  github_workflow_release: 
platforms: 
  linux: 
  windows: 
  macos: 

Note the change of the dcli dependency from 1.20.1 to 1.31.2.

The pubspec.yaml for dcli 1.31.2 is:

name: dcli
version: 1.31.2
homepage: https://dcli.onepub.dev
documentation: https://dcli.onepub.dev
description: Dart console SDK - write console (cli) apps/scripts using dart.
repository: https://github.com/onepub-dev/dcli
environment: 
  sdk: '>=2.16.0 <3.0.0'
dependencies: 
  archive: ^3.0.0
  args: ^2.0.0
  async: ^2.5.0
  chunked_stream: ^1.4.1
...

Note that dcli has an sdk constraint of sdk: '>=2.16.0 <3.0.0'.

I would assume this means that dcli requires at least 2.16 to operate correctly.

As such it would appear that the pub upgrade command has incorrectly upgraded the pub_release package to use a version of dcli that breaks pub_release's sdk constraints.

I would have expect the the dcli dependency to remain at 1.20.1 as this is the last version that supported sdk 2.12.0

@sigurdm
Copy link
Contributor

sigurdm commented Jul 8, 2022

Yeah - this is a bit confusing.

The sdk constraint tells what sdk the code in the given package requires (and the lower bound also signifies the language version for that package) - all dependencies don't have to respect the same ranges.

This just mean that pub from a 2.12 sdk will never resolve a pub_release v7.3.3 (unless a new version of dcli is published that actually supports 2.12).

Closing as this is working as intended.

@sigurdm sigurdm closed this as completed Jul 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants