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

Dependency is not upgraded if appears more than once in deps file #50

Closed
dharrigan opened this issue Dec 29, 2020 · 8 comments
Closed
Labels
bug Something isn't working

Comments

@dharrigan
Copy link
Sponsor Contributor

clojure 1.10.1
antq 0.10.0

If one has a deps.edn file like this:

  :uberjar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.161"}}
            :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
            :main-opts ["-m" "hf.depstar.uberjar"]}

  :jar {:extra-deps {seancorfield/depstar {:mvn/version "1.1.136"}}
        :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
        :main-opts ["-m" "hf.depstar.jar"]}

On running clj -M:antq with this alias:

  :antq {:replace-deps {org.slf4j/slf4j-nop {:mvn/version "1.7.30"}
                        antq/antq {:mvn/version "0.10.0"}}
         :main-opts ["-m" "antq.core"
                     "--skip" "pom"
                     "--upgrade"
                     "--force"]}

Only the first dependency is upgraded, with the second one being ignored. If uberjar is commented out, then the second one is upgraded (and vice versa).

@liquidz
Copy link
Owner

liquidz commented Dec 29, 2020

@dharrigan Hmm.. It seems to work well in my environment.

$ cat deps.edn
{:paths ["src"]
 :deps {org.clojure/clojure {:mvn/version "1.10.1"}}

 :aliases
 {:uberjar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.161"}}
            :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
            :main-opts ["-m" "hf.depstar.uberjar"]}

  :jar {:extra-deps {seancorfield/depstar {:mvn/version "1.1.136"}}
        :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
        :main-opts ["-m" "hf.depstar.jar"]}

  :antq {:replace-deps {org.slf4j/slf4j-nop {:mvn/version "1.7.30"}
                        antq/antq {:mvn/version "0.10.0"}}
         :main-opts ["-m" "antq.core"
                     "--skip" "pom"
                     "--upgrade"
                     "--force"]}}}

$ clj -M:antq

|    :file |                :name | :version | :latest-version |
|----------+----------------------+----------+-----------------|
| deps.edn | seancorfield/depstar |  1.1.136 |         2.0.165 |
Upgraded seancorfield/depstar '1.1.136' to '2.0.165' in deps.edn.

$ cat deps.edn
{:paths ["src"]
 :deps {org.clojure/clojure {:mvn/version "1.10.1"}}

 :aliases
 {:uberjar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.165"}}
            :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
            :main-opts ["-m" "hf.depstar.uberjar"]}

  :jar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.165"}}
        :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
        :main-opts ["-m" "hf.depstar.jar"]}

  :antq {:replace-deps {org.slf4j/slf4j-nop {:mvn/version "1.7.30"}
                        antq/antq {:mvn/version "0.10.0"}}
         :main-opts ["-m" "antq.core"
                     "--skip" "pom"
                     "--upgrade"
                     "--force"]}}}

@dharrigan
Copy link
Sponsor Contributor Author

dharrigan commented Dec 29, 2020

That's interesting. I'm able to reproduce it 100%

I discovered that if I put another entry before the uberjar, it fails, but if the uberjar etc., is at the start, as in your example, it works...

i.e., with this deps.edn:

{:aliases
 {:uberjar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.165"}}
            :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
            :main-opts ["-m" "hf.depstar.uberjar"]}

  :jar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.161"}}
        :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
        :main-opts ["-m" "hf.depstar.jar"]}

  :antq {:replace-deps {org.slf4j/slf4j-nop {:mvn/version "1.7.30"}
                        antq/antq {:local/root "/home/david/tmp/antq/target/antq-standalone.jar"}}
                        ;           :mvn/version "0.10.0"}}
         :main-opts ["-m" "antq.core"
                     "--skip" "pom"
                     "--upgrade"
                     "--force"]}}

Then it upgrades successfully, but with this deps.edn, it does not...

{:aliases
 {:1.10 {:override-deps {org.clojure/clojure {:mvn/version "1.10.1"}}}

  :uberjar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.165"}}
            :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
            :main-opts ["-m" "hf.depstar.uberjar"]}

  :jar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.161"}}
        :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
        :main-opts ["-m" "hf.depstar.jar"]}

  :antq {:replace-deps {org.slf4j/slf4j-nop {:mvn/version "1.7.30"}
                        antq/antq {:local/root "/home/david/tmp/antq/target/antq-standalone.jar"}}
                        ;           :mvn/version "0.10.0"}}
         :main-opts ["-m" "antq.core"
                     "--skip" "pom"
                     "--upgrade"
                     "--force"]}}}

So it appears that having an entry prior to the duplicate jar deps entry, causes the second one not to upgrade.

@liquidz
Copy link
Owner

liquidz commented Dec 29, 2020

That's weird... It work for me.

$ cat deps.edn
{:aliases
 {:1.10 {:override-deps {org.clojure/clojure {:mvn/version "1.10.1"}}}

  :uberjar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.161"}}
            :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
            :main-opts ["-m" "hf.depstar.uberjar"]}

  :jar {:extra-deps {seancorfield/depstar {:mvn/version "1.1.136"}}
        :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
        :main-opts ["-m" "hf.depstar.jar"]}

  :antq {:replace-deps {org.slf4j/slf4j-nop {:mvn/version "1.7.30"}
                        antq/antq {:mvn/version "0.10.0"}}
         :main-opts ["-m" "antq.core"
                     "--skip" "pom"
                     "--upgrade"
                     "--force"]}}}

$ clj -M:antq

|    :file |                :name | :version | :latest-version |
|----------+----------------------+----------+-----------------|
| deps.edn | seancorfield/depstar |  1.1.136 |         2.0.165 |
Upgraded seancorfield/depstar '1.1.136' to '2.0.165' in deps.edn.

$ cat deps.edn
{:aliases
 {:1.10 {:override-deps {org.clojure/clojure {:mvn/version "1.10.1"}}}

  :uberjar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.165"}}
            :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
            :main-opts ["-m" "hf.depstar.uberjar"]}

  :jar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.165"}}
        :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
        :main-opts ["-m" "hf.depstar.jar"]}

  :antq {:replace-deps {org.slf4j/slf4j-nop {:mvn/version "1.7.30"}
                        antq/antq {:mvn/version "0.10.0"}}
         :main-opts ["-m" "antq.core"
                     "--skip" "pom"
                     "--upgrade"
                     "--force"]}}}

Ah... if one of the same entries has the latest version, the version check may not work properly, so maybe this is the cause?

$ cat deps.edn
{:aliases
 {:1.10 {:override-deps {org.clojure/clojure {:mvn/version "1.10.1"}}}

  :uberjar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.161"}}
            :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
            :main-opts ["-m" "hf.depstar.uberjar"]}

  :jar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.165"}}
        :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
        :main-opts ["-m" "hf.depstar.jar"]}

  :antq {:replace-deps {org.slf4j/slf4j-nop {:mvn/version "1.7.30"}
                        antq/antq {:mvn/version "0.10.0"}}
         :main-opts ["-m" "antq.core"
                     "--skip" "pom"
                     "--upgrade"
                     "--force"]}}}

$ clj -M:antq
All dependencies are up-to-date.

@dharrigan
Copy link
Sponsor Contributor Author

Ah, that sounds like you've found the problem! :)

@liquidz
Copy link
Owner

liquidz commented Dec 29, 2020

I'll fix it. thanks!

@liquidz
Copy link
Owner

liquidz commented Dec 29, 2020

@dharrigan I tried to fix in dev branch.
Could you try dev branch?

@dharrigan
Copy link
Sponsor Contributor Author

Hi!

Confirm fixed :-) Arigato!

@liquidz
Copy link
Owner

liquidz commented Dec 30, 2020

@dharrigan Thanks for your confirmation!
I just cut a new release #52

@liquidz liquidz closed this as completed Dec 30, 2020
@liquidz liquidz added the bug Something isn't working label Dec 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants