-
Notifications
You must be signed in to change notification settings - Fork 145
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
make releases more easily available for users of maven/gradle/sbt/leinigen etc. #356
Comments
BTW, @matil019 has agreed to try something similar (in the chat). |
We have to break the dependency cycle. This is most easily done by having a separate project where we do the packaging of the last release without interfering with the frege build process itself. @talios used this approach for the sonatype upload in the https://github.com/talios/frege-bundle project. In fact, his approach works well - with the possible downsides that
Projects like FregeFX, FregeTutorial, or any other project that just happen to use Frege directly or transitively should need nothing else but setting the dependency. |
I'm considering another approach for packaging Frege. The Frege release can be split into Their dependencies should look like:
The current Frege release corresponds to
I propose this because the current Frege release contains an old version of jline. Build tools like maven can be configured to exclude transitive dependencies when needs arise, but it's not possible if an artifact is packaged as one jar file. |
@matil019 , FYI, One could further divide What is absolutely crucial is that the REPL packed into frege-standalone is itself compiled with the compiler it uses. This is because it uses functions form the compiler and when we do changes, it may be that laziness changes for an argument (or result) of a function, which, in turn, will change the Java signature of the corresponding method. Hence, when the repl gets compiled with an older compiler version, we may get MethodNoFoundException. (This is a general weakness of the approach to Laziness we need to address sooner or later). |
@Ingo60 All right, then the whole order of compilation would be like this:
As a side note, Scala splits its jar into the library, the compiler, and the reflection classes. Since most Frege programs won't use Frege compiler as a part of them, splitting it may be helpful. |
@Dierk, even if the users would need one more line in their POM or whatever, what's the deal? I've seen that build files have been published in various projects, hence they get copy-pasted anyway. The independence from someone who has certain special credentials, even if it is such a nice guy as @talios, weights a thousand times more, in my view. |
true. OTOH, I just released JavaFX 0.8 to jcenter (which in turn get synced to maven central) and that was done in three clicks. Anyway, it is good to have multiple options. I'll step back for the moment from this issue and let @matil019 move forward. |
@Ingo60 Speaking of which, there is a Frege artifact on Maven Central (https://mvnrepository.com/artifact/org.frege-lang/frege/3.24.100.1). Its HomePage implies it's maintained by @talios, too. Since it's on Maven Central, there is no need to configure custom repositories for maven users. It comes first by googling "maven frege", and has groupId If you have no credentials/controls over it then I think it's a problem. It should be where new releases get published to. |
Indeed, I don't have the control here. Is it possible to withdraw this artifact from Maven? |
@Ingo60 I don't know, I'm afraid. |
Well, even if possible, one should never withdraw anything from a central repo (the problem is meanwhile known as the "leftpad" issue 🤓). |
Well, I remember, that was one reason I'm not that happy with a public central repository, where the users see the contents as official, bullet-proof and proven artifacts. |
On 14 Apr 2018, at 22:16, Dierk König wrote:
the artifact is published under his name rather than the "frege organization".
I thought we changed to deploy under the frege organisation ages ago? One can deploy to oss.sonatype.org with just a `curl` command tho.... so that could also easily be done by anyone.
Mark
…---
"The ease with which a change can be implemented has no relevance at all to whether it is the right change for the (Java) Platform for all time." — Mark Reinhold.
Mark Derricutt
http://www.theoryinpractice.net
http://www.chaliceofblood.net
http://plus.google.com/+MarkDerricutt
http://twitter.com/talios
http://facebook.com/mderricutt
|
On 15 Apr 2018, at 4:33, Ingo Wechsung wrote:
Indeed, I don't have the control here. Is it possible to withdraw this artifact from Maven?
It's not - but I don't control it either. ANYONE can as long as they get permissions given to their oss.sonatype.org account - which one can do easily with a JIRA request to sonatype.
Mark
…---
"The ease with which a change can be implemented has no relevance at all to whether it is the right change for the (Java) Platform for all time." — Mark Reinhold.
Mark Derricutt
http://www.theoryinpractice.net
http://www.chaliceofblood.net
http://plus.google.com/+MarkDerricutt
http://twitter.com/talios
http://facebook.com/mderricutt
|
Thank you for clarification, @talios |
Hi Mark,
Thanks for looking at this.
I might be wrong but last I checked, the Frege POM still had theoryinpractise in the url.
Cheers
Dierk
… Am 16.04.2018 um 06:23 schrieb Ingo Wechsung ***@***.***>:
Thank you for clarification, @talios
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
On my local machine at least: <groupId>org.frege-lang</groupId>
<artifactId>frege</artifactId>
<version>3.24.100.2-SNAPSHOT</version> for |
@Dierk Have you compiled |
no objection from my side. |
@matil019 Yes that'd be okay as the repl has the compiler as a dependency anyway. |
Eventually what is the recommended way to get the latest Frege version for a Maven user? Public repos only contain v. 3.24.100 which even can not be resolved when used. |
looks good to me. Would you like to care for the issue? |
it appears that jitpack (https://github.com/jitpack/jitpack.io) can be set as a maven/gradle repository url such that the github release can be used as a normal dependency. |
and for reference, here is my setup for using Frege in a gradle build. |
Since the sonatype and equivalent approaches are too much work, I tried to get https://jitpack.io/docs/ working, i.e. with every github release, one can immediately fetch the release from the jitpack.io maven repo.
To this end, we need a gradle build that jitpack can call like
gradlew install
or alternatively provide aproject.pom
in the root dir. Both is a bit more work than expected a) because themake dist
depends on frege-interpreter and frege-repl, which in turn depend on frege b) we don't have the frege-xxx.jar as a static artifact in the project itself such that we can easily refer to it from the project.pom.The text was updated successfully, but these errors were encountered: