Unspecified dependency on google-closure-library-third-party

Description

Temporary fix to this issue: Add the G.Closure Library third-party extensions as a project dependency.


We currently distribute the Google Closure Library in two separate JARs: the main library and the third-party extensions. We do this because the third-party extensions are covered by different licenses.

But, as it turns out, various classes in the main library have explicit dependencies on things in the third-party extensions. See See also this G.Closure mailing list discussion.

As a result, the ClojureScript browser-connected REPL has a transitive dependency on the Google Closure Library third-party extensions. This manifests as an error in script/cljsc and a NullPointerException in lein-cljsbuild.

See the initial Clojure-dev mailing list discussion and discussion of this ticket.

See also lein-cljsbuild issue #155.

It seems that the dependency on third-party extensions is unavoidable. There are several possible fixes:

1. Release a new G.Closure Library JAR with a declared dependency on the third-party extensions JAR. This best reflects the actual dependency relationships.

2. Release a new G.Closure Library JAR with the third-party extensions included in the JAR. This would make it harder to exclude the third-party-licensed code from projects which do not actually require it.

3. Release a new version of ClojureScript with a declared dependency on the third-party extensions JAR. This makes the dependency more visible to ClojureScript developers.

Regardless of the approach taken, developers can always use explicit dependencies/exclusions to choose which version of the G.Closure library to include in their projects.

Environment

None

Attachments

1

Activity

Show:

Stuart SierraFebruary 16, 2013 at 8:59 PM

pom.template updated in commit f2e0d9050a1b

Stuart SierraFebruary 3, 2013 at 9:50 PM

Deployed new version of Google Closure library to Sonatype OSS today. Please try it out.

This release declares an explicit dependency from google-closure-library on google-closure-library-third-party (Option 1 in the ticket description).

It will be available in the Maven Central repository within 24 hours. Until then, you can get it from the Sonatype repository with these instructions:
http://dev.clojure.org/display/doc/Maven+Settings+and+Repositories

If it works, we can update the ClojureScript POM to depend on it.

-S

Michał MarczykJanuary 28, 2013 at 1:29 AM

+1 for option 1.

David NolenJanuary 27, 2013 at 11:41 PM

Is everyone cool with option 1? It would be nice to resolve this one soon as people are running into non-working browser REPLs.

Chas EmerickJanuary 27, 2013 at 11:37 PM

Option 1 is proper, 3 is acceptable. Any solution will do though; drove myself nuts with this today for longer than I'd like to admit before I discovered this ticket.

Completed

Details

Assignee

Reporter

Priority

Created November 17, 2012 at 12:50 AM
Updated July 27, 2013 at 10:01 PM
Resolved July 27, 2013 at 10:01 PM