Skip to content

JuliaImages: retroactively put upper bounds on old package versions#7342

Merged
DilumAluthge merged 1 commit intoJuliaRegistries:masterfrom
timholy:teh/juliaimages
Jan 2, 2020
Merged

JuliaImages: retroactively put upper bounds on old package versions#7342
DilumAluthge merged 1 commit intoJuliaRegistries:masterfrom
timholy:teh/juliaimages

Conversation

@timholy
Copy link
Copy Markdown
Member

@timholy timholy commented Dec 30, 2019

Is there a good way to test this? CC @johnnychen94

@DilumAluthge
Copy link
Copy Markdown
Member

DilumAluthge commented Dec 30, 2019

If this PR contains changes that were made by RetroCap, and no other changes, then it is probably safe. The real issues arise when people manually edit the registry by hand. I think (but am not 100% sure) that RetroCap won't break anything.

The best way to test is to add this branch as a registry and make sure you can Pkg.add packages without error. E.g. something like this:

  1. First either rm -rf ~/.julia or mv ~/.julia ~/.julia.backup.
  2. Now clone your registry: git clone https://github.com/timholy/General.
  3. cd General
  4. git checkout teh/juliaimages
  5. Start Julia and run:
import Pkg
Pkg.Registry.add(Pkg.RegistrySpec(path = pwd()))
Pkg.add("Images")
Pkg.rm("Images")
Pkg.gc()
Pkg.add(Pkg.PackageSpec(name = "Images", version = "0.18.0"))
Pkg.rm("Images")
Pkg.gc()
Pkg.add(Pkg.PackageSpec(name = "Images", version = "0.19.0"))
Pkg.rm("Images")
Pkg.gc()

And do that a whole bunch of times for a bunch of different packages and versions.

@timholy
Copy link
Copy Markdown
Member Author

timholy commented Dec 30, 2019

The checkout seems to work. One oddity:

(MyProj) pkg> add Images@0.18.0
 Resolving package versions...
  Updating `/tmp/retrocap/MyProj/Project.toml`
  [916415d5]  Images v0.19.1  v0.18.0
  Updating `/tmp/retrocap/MyProj/Manifest.toml`
  [3da002f7]  ColorTypes v0.8.1  v0.9.0
  [c3611d14]  ColorVectorSpace v0.7.1  v0.8.2
  [5ae59095]  Colors v0.9.6  v0.11.1
  [53c48c17]  FixedPointNumbers v0.6.1  v0.7.0
  [a2bd30eb]  Graphics v1.0.1  v0.4.0
  [bc367c6b]  ImageMetadata v0.7.2  v0.8.0
  [916415d5]  Images v0.19.1  v0.18.0

(MyProj) pkg> add Images@0.19.0
 Resolving package versions...
  Updating `/tmp/retrocap/MyProj/Project.toml`
  [916415d5]  Images v0.18.0  v0.19.0
  Updating `/tmp/retrocap/MyProj/Manifest.toml`
  [3da002f7]  ColorTypes v0.9.0  v0.8.1
  [c3611d14]  ColorVectorSpace v0.8.2  v0.7.1
  [5ae59095]  Colors v0.11.1  v0.9.6
  [53c48c17]  FixedPointNumbers v0.7.0  v0.6.1
  [bc367c6b]  ImageMetadata v0.8.0  v0.7.2
  [916415d5]  Images v0.18.0  v0.19.0

(MyProj) pkg> add Images@0.17.3
 Resolving package versions...
  Updating `/tmp/retrocap/MyProj/Project.toml`
  [916415d5]  Images v0.19.0  v0.17.3
  Updating `/tmp/retrocap/MyProj/Manifest.toml`
  [621f4979]  AbstractFFTs v0.5.0  v0.4.1
  [b99e7846] + BinaryProvider v0.5.8
  [3da002f7]  ColorTypes v0.8.1  v0.7.5
  [c3611d14]  ColorVectorSpace v0.7.1  v0.6.2
  [5ae59095]  Colors v0.9.6  v0.9.5
  [8f4d0f93] + Conda v1.3.0
  [7a1cc6ca]  FFTW v1.2.0  v0.3.0
  [f5851436] - FFTW_jll v3.3.9+3
  [53c48c17]  FixedPointNumbers v0.6.1  v0.5.3
  [2803e5a7]  ImageAxes v0.6.2  v0.6.1
  [a09fc81d]  ImageCore v0.8.10  v0.7.4
  [51556ac3]  ImageDistances v0.2.7  v0.1.1
  [6a3955dd]  ImageFiltering v0.6.9  v0.6.5
  [787d08f9]  ImageMorphology v0.2.5  v0.1.1
  [4e3cecfd]  ImageShow v0.2.2  v0.2.0
  [02fcd773]  ImageTransformations v0.8.1  v0.8.0
  [916415d5]  Images v0.19.0  v0.17.3
  [1d5cc7b8] - IntelOpenMP_jll v2018.0.3+0
  [682c06a0] + JSON v0.21.0
  [856f044c] - MKL_jll v2019.0.117+0
  [69de0a69] + Parsers v0.3.10
  [92933f4c] + ProgressMeter v0.9.0
  [81def892] + VersionParsing v1.2.0

It seems to propagate the current version backwards, not the minimum of the current version and whatever upper bound was in place for a more recent release. (That is to say Images@0.19.0 is using an older version of ColorTypes than Images@0.18.0. Image@0.17.3 is using a yet-older version, which is good.)

@johnnychen94
Copy link
Copy Markdown
Contributor

johnnychen94 commented Jan 1, 2020

It seems to propagate the current version backwards, not the minimum of the current version and whatever upper bound was in place for a more recent release.

It's not perfect, but I view it as an acceptable result. If we keep our developments and rolling the versions, all these will be incompatible eventually.

Sorry that I missed the CC with my notification accidentally turned off.

@timholy
Copy link
Copy Markdown
Member Author

timholy commented Jan 1, 2020

Let me poke at RetroCap and see if I can come up with something better.

@timholy
Copy link
Copy Markdown
Member Author

timholy commented Jan 1, 2020

OK, this new version is based on JuliaRegistries/RetroCap.jl#34. Looking through the difference between the two approaches, it seems likely to be better.

However, I'm still seeing weird behavior; I'm beginning to suspect the resolver.

(v1.3) pkg> add Images@0.19.0
 Resolving package versions...
  Updating `~/.julia/environments/v1.3/Project.toml`
  [916415d5] + Images v0.19.0
  Updating `~/.julia/environments/v1.3/Manifest.toml`
  [3da002f7]  ColorTypes v0.9.0  v0.8.1
  [c3611d14]  ColorVectorSpace v0.8.2  v0.7.1
  [5ae59095]  Colors v0.11.1  v0.9.6
  [53c48c17]  FixedPointNumbers v0.7.0  v0.6.1
  [a2bd30eb]  Graphics v1.0.1  v0.4.0
  [bc367c6b]  ImageMetadata v0.8.0  v0.7.2
  [916415d5]  Images v0.19.3  v0.19.0

(v1.3) pkg> add Images@0.18.0
 Resolving package versions...
  Updating `~/.julia/environments/v1.3/Project.toml`
  [916415d5]  Images v0.19.0  v0.18.0
  Updating `~/.julia/environments/v1.3/Manifest.toml`
  [3da002f7]  ColorTypes v0.8.1  v0.9.0
  [c3611d14]  ColorVectorSpace v0.7.1  v0.8.2
  [5ae59095]  Colors v0.9.6  v0.11.1
  [53c48c17]  FixedPointNumbers v0.6.1  v0.7.0
  [916415d5]  Images v0.19.0  v0.18.0

Note the upgrade to Colors 0.11.1, despite the fact that here's the Compat.toml for Images:

["0-0.17"]
ColorVectorSpace = "0.2-0.6"
FileIO = "0-1"
FixedPointNumbers = "0.3-0.5"
ImageCore = "0.6-0.7"
ImageDistances = "0.0.2-0.1"
ImageFiltering = "0-0.6"
ImageMetadata = "0-0.7"
ImageMorphology = "0.1.1-0.1"

["0-0.18"]
AxisArrays = "0.0.0 - 0.3"
ColorTypes = "0.7.4 - 0.8"
Colors = "0.7.0 - 0.9"
Graphics = "0.0.0 - 0.4"
ImageAxes = "0.0.0 - 0.6"
ImageShow = "0.1.1 - 0.2"
ImageTransformations = "0.2.2 - 0.8"
IndirectArrays = "0.0.0 - 0.5"
MappedArrays = "0.0.0 - 0.2"
OffsetArrays = "0.0.0 - 0.11"
Reexport = "0.0.0 - 0.2"
StaticArrays = "0.0.0 - 0.12"
StatsBase = "0.14.0 - 0.32"
TiledIteration = "0.0.0 - 0.2"
julia = "0.7-1"

["0.18"]
ColorVectorSpace = "0.2.0 - 0.7"
FileIO = "0.0.0 - 1"
FixedPointNumbers = "0.3.0 - 0.6"
ImageCore = "0.6.0 - 0.8"
ImageDistances = "0.0.2 - 0.2"
ImageFiltering = "0.0.0 - 0.6"
ImageMetadata = "0.0.0 - 0.7"
ImageMorphology = "0.1.1 - 0.2"

["0.19-0"]
AxisArrays = "0.3"
FileIO = "1"
ImageAxes = "0.5-0.6"
ImageDistances = "0.2.5-0.2"
ImageFiltering = "0.6"
ImageShow = "0.1-0.2"
ImageTransformations = "0.4-0.8"
IndirectArrays = "0.5"
MappedArrays = "0.1-0.2"
OffsetArrays = "0.8-0.11"
Reexport = "0.2"
StaticArrays = "0.8-0.12"
StatsBase = "0.24-0.32"
TiledIteration = "0.2"
julia = "1"

["0.19-0.19.1"]
ColorVectorSpace = "0.6-0.7"

["0.19-0.19.2"]
ColorTypes = "0.7.4-0.8"
Colors = "0.8-0.9"
FixedPointNumbers = "0.5-0.6"
ImageCore = "0.8"
ImageMetadata = "0.6-0.7"

["0.19.0"]
Graphics = "0.4"
ImageMorphology = "0.2"

["0.19.1-0"]
Graphics = ["0.4", "1"]
ImageMorphology = "0.2.2-0.2"

["0.19.2-0"]
ColorVectorSpace = "0.6-0.8"

["0.19.3-0"]
ImageCore = "0.8.1-0.8"
ImageMetadata = "0.6-0.8"

I am so confused.

bors Bot pushed a commit to JuliaRegistries/RetroCap.jl that referenced this pull request Jan 2, 2020
34: Add MonotonicUpperBound r=DilumAluthge a=timholy

This ensures that older versions of a package have older versions of dependencies.

xref JuliaRegistries/General#7342

(I know this needs tests, this is just for early feedback.)

Co-authored-by: Tim Holy <tim.holy@gmail.com>
Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
bors Bot pushed a commit to JuliaRegistries/RetroCap.jl that referenced this pull request Jan 2, 2020
34: Add MonotonicUpperBound r=DilumAluthge a=timholy

This ensures that older versions of a package have older versions of dependencies.

xref JuliaRegistries/General#7342

(I know this needs tests, this is just for early feedback.)

Co-authored-by: Tim Holy <tim.holy@gmail.com>
Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
@timholy
Copy link
Copy Markdown
Member Author

timholy commented Jan 2, 2020

This can probably be merged, given that it seems to be working for others. JuliaLang/Pkg.jl#1575

@DilumAluthge
Copy link
Copy Markdown
Member

This can probably be merged, given that it seems to be working for others. JuliaLang/Pkg.jl#1575

Sounds good. I'll merge this now. If we get reports that it causes problems for others, we can revert it.

@DilumAluthge DilumAluthge merged commit bce7637 into JuliaRegistries:master Jan 2, 2020
@DilumAluthge DilumAluthge added CI continuous integration compat fix and removed CI continuous integration labels Jan 2, 2020
@timholy timholy deleted the teh/juliaimages branch January 3, 2020 00:36
bors Bot pushed a commit to JuliaRegistries/RetroCap.jl that referenced this pull request Jan 4, 2020
34: Add MonotonicUpperBound r=DilumAluthge a=timholy

This ensures that older versions of a package have older versions of dependencies.

xref JuliaRegistries/General#7342

(I know this needs tests, this is just for early feedback.)

Co-authored-by: Tim Holy <tim.holy@gmail.com>
Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants