-
Notifications
You must be signed in to change notification settings - Fork 10
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
Consolidate installer setup steps #158
Comments
@cpauya your input appreciated here too! |
Another example of something we want to do during this "pre-build" stage is: #80 |
We should look (in a thorough way) at what the best tool/stage in the pipeline is for doing this "pre-build" step. Another option to examine, for example, would be to use node.js (since we need it for the build process anyway) to coordinate the early stages of the build process. The overall goal is to build a standard output format (e.g. a zip file, or target "built" directory), with all of the common cross-platform build steps completed, that can then serve as input to the various installers. |
This document currently seems focused on the steps to run for prepping things and building/uploading/releasing particular installers, but there's no list of the "pre-build" tasks that we want to automate. @MCGallaspy listed some in the issue description above -- I'll add a section in the doc where we can list this out more fully. |
This is the source distribution or in short, sdist :) It's here, .zip available, too: https://pypi.python.org/pypi/ka-lite-static |
Yes, the sdist zip was what I had in mind as a possible output format here (or at least, one component of it), but I don't know enough about it to know how well it will handle everything we need -- e.g. "bundling in an empty database that gets unpacked to the user directory, but only if there's no DB in the user directory yet". I added a preliminary list of things we want to do when building from source -> distributable bundle (to use as input to installers). @rtibbles @aronasorman @MCGallaspy @benjaoming, please add things to there as you see fit, so we can assess and discuss: |
It would have to be a data file that gets installed unconditionally, and then it would have to be the application ( One possible gotcha: Downgrading KA Lite. But I think this is a problem already, anyways. So no need to deal with it. |
The OSX installer has a setup.sh script which does everything to build the .app and generate the .dmg (installer). Just a note that the OSX .app uses Pyrun and not virtualenv yet. But we already have an issue to drop pyrun and use virtualenv which needs to be tested if feasible for OSX. The script downloads an archive of a These are the pre-release steps that the setup script must do so particular packages/data are included in the bundled
When successful, these are copied into the .app
I'm sure the above can be streamlined, so I'd also definitely like these steps to be consolidated so that the install/build script for the .app will only do the OS-specific tasks. I have to ask though how is the |
@cpauya please don't build the docs, we can include them in the sdist All these steps can be made redundant if you use the sdist:
|
@benjaoming since 0.15 is nigh it would be good to have atleast the docs in there with the current way of building, but I agree that this is redundant once we're using the sdist. Perhaps we should make that a priority for 0.16. |
Not sure whether the Deb and Windows installers include a zip and then unpack it, or have it pre-unzipped and installed directly -- perhaps @benjaoming and @MCGallaspy can chime in on that. However, ideally, we want to avoid having the assessment items get installed "twice" (once in a fixed location and once by being installed into the user data directory), since it's quite large. Perhaps @benjaoming can describe here how he handles this in the Deb? (which has two modes -- with and without the bundled assessment items) |
In Windows, this is the case:
|
Yes, that sounds like the best approach. Could you create an issue for that? (In principle, this could be an approach for assessment items as well, except that they're so big, so not actually a great plan)
Since it would only be copying a DB in when no DB exists yet anyway, it shouldn't affect downgrading. But yeah, downgrading is problematic regardless. |
|
Sent email to interested parties with build process tree, as we discussed. |
Okay, based on this graphic this is my understanding of what we would like the build process to be. Build process (what we do on our machines)
Installation process (what user does on his/her machine)
|
Yes, this is a good summary, can't really think of much more. Will use it as a recipe for the Makefile. Minor detail: It has to be |
Okay, before you get too deep into that, let's confirm everyone is on the same page. |
I'm good with this. 👍 |
Summary looks good, and what I had in mind. |
All this is now also in a Gdrive document and should ideally just be maintained there.. and in the Bamboo scripts! In the meantime, I don't see that the original summary by Mike has changed, it's still how we do things, although Bamboo has now taken over most tasks. Closing this, go team, great work!! |
All the steps we take before releasing an installer should be as consolidated as possible, so that we don't duplicate effort across OSes. This issue attempts to document the current state and make a roadmap to consolidation.
@benjaoming made this document, which at the time of this posting is a bit out of date.
The steps I take to create the Windows installer are documented here: https://github.com/learningequality/installers/blob/master/windows/README.md#instructions-to-build-kalitesetupexe
This issue is related: #48
In particular tasks like including documentation, running
node build.js
, including assessment items, and runningkalite manage collectstatic
are platform-agnostic. If I understand it correctly, then we can make these and other pre-release tasks the responsibility of setup.py, so that they can be run with a command likepython setup.py [your cool command name]
. @aronasorman this is the main point of our discussion from 9/4 dev meeting.Roadmap
setup.py
Milestone for this is up for discussion -- if these changes for each individual task are safe, then we should aim to include them in 0.15. If it will require more extensive work/testing then we should consider it for 0.16.
The text was updated successfully, but these errors were encountered: