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

Place to download compiled application #252

Closed
ilanbiala opened this issue Mar 22, 2014 · 30 comments
Closed

Place to download compiled application #252

ilanbiala opened this issue Mar 22, 2014 · 30 comments

Comments

@ilanbiala
Copy link

I'd like to test the application and start learning about it to help contribute, but I don't have the time to build it every time a commit is made. Is there a way someone can keep an updated version of the app in the repository?

@quarnster
Copy link
Member

You don't have one second to spare?

08:24 ~/code/go/src/github.com/limetext/lime/frontend $ time go build ./...

real    0m1.055s
user    0m2.080s
sys 0m0.426s

Even cloning the repository, installing all dependencies, building everything from scratch and running all unit tests takes less than two minutes.

@ilanbiala
Copy link
Author

That's for a computer, which I'm not. Besides, doing this every time a commit is made adds up.

@quarnster
Copy link
Member

Funny how your argument is exactly mine.

Manually checking if a new build is available, selecting the right package to download, actually downloading, extracting, installing, clicking yes on "overwrite existing file", etc surely takes much more time than the less than 10 seconds it takes to run git pull && go build.

@xsleonard
Copy link

This is manageable if we have:

  • A linux build machine
  • Cgo cross compilation support, which is in progress and hopefully will be in the go1.3 release.

Cross compilers targeting windows and osx from linux exist. The only barrier is that gcc is hardcoded as the compiler for cgo. Requiring native OSes to do each build is tedious and difficult to automate, but with this setup a git hook and a cheap vps would handle it.

However, the binary will never be in the repo itself, and you'll spend as much time going to the site to download the binary as it will take to build. The reason to provide prebuilts is so people don't have to set up the compilation environment to try the software.

@derekparker
Copy link
Member

It might be worth, at some point, setting up a nightly release schedule? That time might be a bit further into the future, when it's more stable.

@adrientetar
Copy link

Is it possible to set up nightlies with Travis? This would drag more attention towards Lime even if they are not stable.

@quarnster
Copy link
Member

Don't think they save the actual builds, but I'm open to being proved wrong ;)

"Nightlies" have been mentioned, but the more correct way would be to use an existing hook or create a new custom one to be triggered whenever the repository is actually updated.

@hkdobrev
Copy link

You could probably detect in Travis CI when the build is from a newly pushed tag instead of just a commit/PR. Then you could use the GitHub API to upload the built binary to a release on GitHub.

@quarnster
Copy link
Member

I thought github disabled binary uploads, but it appears they've now enabled "releases". How one differs from the other I have no idea, but that does indeed mean that travis could be used to upload the binary it just compiled. It would however be quite limited unless the travis script is extended to also cross compile for other architectures and oses.

@hkdobrev
Copy link

@quarnster Regarding releases there is only one downside - if you just create a git tag and push it you don't have a full-featured GitHub release. You just have a tag and you can't upload a binary to a tag.

@adrientetar
Copy link

Relates to travis-ci/travis-ci#1648.

@EdVanDance
Copy link
Contributor

Every release will also create a tag, so it's not a good idea for nightlies. But we could use bintray.com.

@hkdobrev
Copy link

@EdVanDance I did not mean this at all. I don't think it's useful to create builds for every commit at this stage. That's why I've suggested creating builds only when there are actual new tags/versions/releases. I realize these are not nightlies, but people who would need builds after every commit (and not patch release) would probably be able to build lime themselves and contribute back.

@mgaitan
Copy link

mgaitan commented Apr 14, 2014

what about PPAs? they are ubuntu only, but is still also a good target

@RossBarnie
Copy link

I believe the Arch Linux PKGBUILD system could be used to do something like OP wants and it wouldn't affect the project at all. It's platform-dependent though since you need to be using Arch.

@quarnster
Copy link
Member

https://github.com/robertkrimen/gphr might be of use here

@hkdobrev
Copy link

https://github.com/robertkrimen/gphr might be of use here

This is really nice actually!

@gclsoft
Copy link

gclsoft commented Aug 19, 2014

I need to download instead of building, too. I just want to use it, building needs too much time. And probably I can't build successfully.

@douglascamata
Copy link

@gclsoft building it takes less than 1 minute. Time's not a problem here, IMHO. And I think it's pretty easy to create a simple shell alias like cd path/to/limetext && git pull && go install to use as a "developer updater" until the guys implement nightly builds or stuff like that.

@gclsoft
Copy link

gclsoft commented Aug 19, 2014

@derekparker Thanks. But build error:

bogon:termbox apple$ go build
# pkg-config --cflags oniguruma
Package oniguruma was not found in the pkg-config search path.
Perhaps you should add the directory containing `oniguruma.pc'
to the PKG_CONFIG_PATH environment variable
No package 'oniguruma' found
exit status 1
# github.com/limetext/gopy/lib
inconsistent definitions for C.PyLong_AsLong
inconsistent definitions for C.PyLong_FromLong
bogon:qml apple$ go get gopkg.in/qml.v0
# pkg-config --cflags Qt5Core Qt5Widgets Qt5Quick
Package Qt5Core was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt5Core.pc'
to the PKG_CONFIG_PATH environment variable
No package 'Qt5Core' found
Package Qt5Widgets was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt5Widgets.pc'
to the PKG_CONFIG_PATH environment variable
No package 'Qt5Widgets' found
Package Qt5Quick was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt5Quick.pc'
to the PKG_CONFIG_PATH environment variable
No package 'Qt5Quick' found
exit status 1

Too hard to build, takes too much time...

@FichteFoll
Copy link

The frontend(s) are not ready to replace your favourite editor.

This editor is still in development and not indended for (daily) use.

@quarnster
Copy link
Member

Please help with development with your own skills, and/or suggest your own ideas on how others can use their skills to help in #250!

@ilanbiala
Copy link
Author

What about setting up an instance on Openshift that builds the app for us, and then serves a page that offers a list of all the versions sorted by most recently built? I could probably put together something like that, but I'm curious to know if you guys think it makes sense and seems like a good idea.

@ilanbiala
Copy link
Author

@quarnster thoughts on ^^?

@erbridge
Copy link
Contributor

Could also use drone.io and keep the builds as artifacts.

@zoli
Copy link
Member

zoli commented Oct 26, 2014

What's the point of binaries when it's not usable?

@ilanbiala
Copy link
Author

What's the status of this? Can it be closed?

@quarnster
Copy link
Member

The project will have to be usable before it makes any sense to create binary distributions. Again, this is a volunteer-backed project and if someone wants to be responsible for creating binary packages I'm not going to stop them, but also don't expect things to magically happen.

@ilanbiala
Copy link
Author

@quarnster what progress has been made?

@quarnster
Copy link
Member

@ilanbiala I don't think anyone has looked at it yet

@zoli zoli closed this as completed Apr 20, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests