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

auto distribution of successful master builds to melpa #398

Closed
fommil opened this Issue Jun 20, 2014 · 16 comments

Comments

Projects
None yet
3 participants
@fommil
Contributor

fommil commented Jun 20, 2014

for the scala version branches.

@rajish I was thinking we could use bintray instead of a git repo. It feels hackish to be using a git repository for binaries.

@fommil fommil added this to the Parallel Work milestone Jun 20, 2014

@rajish

This comment has been minimized.

Show comment
Hide comment
@rajish

rajish Jun 20, 2014

Member

Good, as long as it works. Remember that melpa uses only recipes and decides by itself what to do with them. Most Emacs don't use external binaries, that's why melpa is not prepared for ensime.

It may happen that you'll end up hacking the melpa code...

Member

rajish commented Jun 20, 2014

Good, as long as it works. Remember that melpa uses only recipes and decides by itself what to do with them. Most Emacs don't use external binaries, that's why melpa is not prepared for ensime.

It may happen that you'll end up hacking the melpa code...

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 20, 2014

Contributor

this is low priority for me personally, I'm unlikely to use anything other than the git repos.

I was thinking that we could have an ensime on melpa for each version of scala, but the latest 2.10/2.11 multi-version scala support is difficult to fit into that picture. It might be convenient now, but it's going to result in a lot of pain (writing code that works in both versions) and upgrading to new versions of scala will be nasty. I still believe that one version of scala per branch is the right way forward.

Contributor

fommil commented Jun 20, 2014

this is low priority for me personally, I'm unlikely to use anything other than the git repos.

I was thinking that we could have an ensime on melpa for each version of scala, but the latest 2.10/2.11 multi-version scala support is difficult to fit into that picture. It might be convenient now, but it's going to result in a lot of pain (writing code that works in both versions) and upgrading to new versions of scala will be nasty. I still believe that one version of scala per branch is the right way forward.

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 20, 2014

Contributor

I'm asking the MELPA people about this here:

melpa/melpa#1792

but I just had an idea: how about we distribute our elisp and start scripts on MELPA, but use bintray.com to host single jar builds, which we wget or curl on initialisation (unless we already have a copy on the disc).

That would also naturally support multiple versions of the scala server! (so long as the server supports the new swank additions).

Contributor

fommil commented Jun 20, 2014

I'm asking the MELPA people about this here:

melpa/melpa#1792

but I just had an idea: how about we distribute our elisp and start scripts on MELPA, but use bintray.com to host single jar builds, which we wget or curl on initialisation (unless we already have a copy on the disc).

That would also naturally support multiple versions of the scala server! (so long as the server supports the new swank additions).

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 20, 2014

Contributor

(and if we have single jar builds, we might be able to just lose the start scripts altogether... no need for custom classpaths)

Contributor

fommil commented Jun 20, 2014

(and if we have single jar builds, we might be able to just lose the start scripts altogether... no need for custom classpaths)

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 21, 2014

Contributor

@rajish actually, the more I think about this, the more critical I believe it to be.

The MELPA devs have spoken and recommend elisp only in the distributions, downloading binaries as needed. I think this is an excellent approach and I am working on getting a draft of this now.

I'll probably do this in conjunction with #399

Contributor

fommil commented Jun 21, 2014

@rajish actually, the more I think about this, the more critical I believe it to be.

The MELPA devs have spoken and recommend elisp only in the distributions, downloading binaries as needed. I think this is an excellent approach and I am working on getting a draft of this now.

I'll probably do this in conjunction with #399

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 21, 2014

Contributor

:-D https://bintray.com/ensime/maven/ensime/view/files/org/ensime

note the assembly classifier one which is a runnable single jar of the server

this is the raw addressing format:

http://dl.bintray.com/ensime/maven/org/ensime/ensime_2.9.3/

Contributor

fommil commented Jun 21, 2014

:-D https://bintray.com/ensime/maven/ensime/view/files/org/ensime

note the assembly classifier one which is a runnable single jar of the server

this is the raw addressing format:

http://dl.bintray.com/ensime/maven/org/ensime/ensime_2.9.3/

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 21, 2014

Contributor

w0000000t!!!!! This was deployed by travis after passing the continuous integration: http://dl.bintray.com/ensime/maven/org/ensime/ensime_2.9.3/1.0-20210d07f4a3f5109c9498f84b75ae08ceeae22b/

Contributor

fommil commented Jun 21, 2014

w0000000t!!!!! This was deployed by travis after passing the continuous integration: http://dl.bintray.com/ensime/maven/org/ensime/ensime_2.9.3/1.0-20210d07f4a3f5109c9498f84b75ae08ceeae22b/

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 21, 2014

Contributor

My branch also has the elisp to download these files as they appear from the GUI.

So now, to complete this ticket, it should just be a case of:

  1. remove start scripts (which existed to allow classpath modification) and use elisp directly with the single jars.
  2. set up the melpa recipe to be able to work off the actual source code (we can keep it pointed at ensime/ensime for now... I hope we can switch over eventually)
  3. possibly regenerate the secret values in the travis files in the central repo (I think they might be tied to repositories and branches for security... I certainly hope they are!)
Contributor

fommil commented Jun 21, 2014

My branch also has the elisp to download these files as they appear from the GUI.

So now, to complete this ticket, it should just be a case of:

  1. remove start scripts (which existed to allow classpath modification) and use elisp directly with the single jars.
  2. set up the melpa recipe to be able to work off the actual source code (we can keep it pointed at ensime/ensime for now... I hope we can switch over eventually)
  3. possibly regenerate the secret values in the travis files in the central repo (I think they might be tied to repositories and branches for security... I certainly hope they are!)
@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 22, 2014

Contributor

uugggh, supporting multiple server versions is not a trivial thing to implement in the lisp... but I'm getting there. Just a bit slower than expected.

Contributor

fommil commented Jun 22, 2014

uugggh, supporting multiple server versions is not a trivial thing to implement in the lisp... but I'm getting there. Just a bit slower than expected.

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 23, 2014

Contributor

so very nearly finished in my branch... the server starts and works. But after a little while the (ensime-current-connection) keeps returning nil and I have to reconnect. I've obviously introduced a regression.

Contributor

fommil commented Jun 23, 2014

so very nearly finished in my branch... the server starts and works. But after a little while the (ensime-current-connection) keeps returning nil and I have to reconnect. I've obviously introduced a regression.

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 24, 2014

Contributor

This works! I used it all day today in work. I'll check it on Windows and OS X on Thursday.

The only major problem I've seen is that corporate firewalls might block jar downloads (particularly from bintray). The best I can do is move to sonatype/snapshots for the binaries and add more output to *Messages* as that might have more mileage.

Contributor

fommil commented Jun 24, 2014

This works! I used it all day today in work. I'll check it on Windows and OS X on Thursday.

The only major problem I've seen is that corporate firewalls might block jar downloads (particularly from bintray). The best I can do is move to sonatype/snapshots for the binaries and add more output to *Messages* as that might have more mileage.

@rorygraves

This comment has been minimized.

Show comment
Hide comment
@rorygraves

rorygraves Jun 25, 2014

Contributor

This is cool. As one of those poor souls with a randomly blocking firewall at work I only request a useful error message 'unable to download file - to manually update go to XXXXX download latest version, put in in YYYYY and restart' type of messages are the key to happiness here. The worst situation is hung or failure with no hints on how to fix.

Contributor

rorygraves commented Jun 25, 2014

This is cool. As one of those poor souls with a randomly blocking firewall at work I only request a useful error message 'unable to download file - to manually update go to XXXXX download latest version, put in in YYYYY and restart' type of messages are the key to happiness here. The worst situation is hung or failure with no hints on how to fix.

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 26, 2014

Contributor

After 4 hours fighting async io in emacs I had to give up, it's just too fiddly. I've bumped messages to warnings so people will at least know what is going on when emacs freezes.

My 2.9 branch is nearly ready for merge. I'll update docs and the servers path (plus a couple of in progress tickets) tomorrow and submit a PR. for both branches.

Contributor

fommil commented Jun 26, 2014

After 4 hours fighting async io in emacs I had to give up, it's just too fiddly. I've bumped messages to warnings so people will at least know what is going on when emacs freezes.

My 2.9 branch is nearly ready for merge. I'll update docs and the servers path (plus a couple of in progress tickets) tomorrow and submit a PR. for both branches.

@fommil fommil removed the DevOps label Jun 27, 2014

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 27, 2014

Contributor

Note to self: don't forget about popup.el

Contributor

fommil commented Jun 27, 2014

Note to self: don't forget about popup.el

@fommil

This comment has been minimized.

Show comment
Hide comment
@fommil

fommil Jun 29, 2014

Contributor

PR created with MELPA, so we're just waiting for them to merge. They should be keen on this.

Contributor

fommil commented Jun 29, 2014

PR created with MELPA, so we're just waiting for them to merge. They should be keen on this.

@fommil fommil closed this Jun 29, 2014

fommil added a commit to ensime/ensime-emacs that referenced this issue Mar 22, 2015

auto distribute successful master builds
ensime/ensime-server#398

and

clean up sbt
ensime/ensime-server#399

Conflicts:
	.travis.yml
	project/Build.scala

fommil added a commit to ensime/ensime-emacs that referenced this issue Mar 22, 2015

auto distribute successful master builds
ensime/ensime-server#398

and

clean up sbt
ensime/ensime-server#399

Conflicts:
	.travis.yml
	project/Build.scala

fommil added a commit to ensime/ensime-emacs that referenced this issue Mar 22, 2015

auto distribute successful master builds
ensime/ensime-server#398

and

clean up sbt
ensime/ensime-server#399

Conflicts:
	.travis.yml
	project/Build.scala
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment