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

Nikola bootstrap script #2280

Closed
tritium21 opened this Issue Mar 4, 2016 · 8 comments

Comments

Projects
None yet
3 participants
@tritium21
Contributor

tritium21 commented Mar 4, 2016

And when I say 'bootstrap', I mean the verb that is much older than twitter.

Nikola is an end user application. Pip and virtualenv are awesome tools, that developers (python developers only, if my experience in #python is any indication) know about and how to use.

Maybe we should come up with a way of creating a bootstrap script, like there is for pip with get-pip.py, that sets up a virtualenv and gets nikola installed into it without the user needing to know, or learn, python development tools.

@tritium21

This comment has been minimized.

Show comment
Hide comment
@tritium21

tritium21 Mar 5, 2016

Contributor

I have written a proof-of-concept https://github.com/tritium21/nikola_bootstrap

Contributor

tritium21 commented Mar 5, 2016

I have written a proof-of-concept https://github.com/tritium21/nikola_bootstrap

@Kwpolska Kwpolska added the idea label Mar 5, 2016

@Kwpolska

This comment has been minimized.

Show comment
Hide comment
@Kwpolska

Kwpolska Mar 5, 2016

Member

This is an interesting idea. However, this involves quite a few issues:

  • C extensions: lxml, Pillow, pyyaml (for watchdog) and some speedup packages (Mako, markupsafe, ?)
  • pip and virtualenv are probably better off installed system-wide.
  • It would be much nicer to allow customization of nikola init — I recommend defaulting to -d but making it configurable.
  • Windows and Mac OS X users still need to figure out how to install Python 3. Windows users would need to install lxml wheels from Chris Gohlke’s site (which does not like robots), OS X users would need to install a C compiler.
  • Linux users need to figure out what to install to get things to compile. We could provide some help and distro-based automation, but we can’t do it for every OS. And they need 1.5G+ of RAM to compile lxml, which will otherwise crash with a cryptic error message.
  • We would still need a large troubleshooting guide, because there are so many things that can, and will, go wrong.

Note that we already have a Dockerfile for Nikola and a getting started guide on our website, that takes care of all this problems (which is down right now, @ralsina?)

Member

Kwpolska commented Mar 5, 2016

This is an interesting idea. However, this involves quite a few issues:

  • C extensions: lxml, Pillow, pyyaml (for watchdog) and some speedup packages (Mako, markupsafe, ?)
  • pip and virtualenv are probably better off installed system-wide.
  • It would be much nicer to allow customization of nikola init — I recommend defaulting to -d but making it configurable.
  • Windows and Mac OS X users still need to figure out how to install Python 3. Windows users would need to install lxml wheels from Chris Gohlke’s site (which does not like robots), OS X users would need to install a C compiler.
  • Linux users need to figure out what to install to get things to compile. We could provide some help and distro-based automation, but we can’t do it for every OS. And they need 1.5G+ of RAM to compile lxml, which will otherwise crash with a cryptic error message.
  • We would still need a large troubleshooting guide, because there are so many things that can, and will, go wrong.

Note that we already have a Dockerfile for Nikola and a getting started guide on our website, that takes care of all this problems (which is down right now, @ralsina?)

@tritium21

This comment has been minimized.

Show comment
Hide comment
@tritium21

tritium21 Mar 5, 2016

Contributor

Asking users to install docker when I can point to developers who refuse to, is a non-starter.

  • C extensions I can do nothing about other than try and notify users that they need to run an apt commend first. UPDATE: the script now informs users to install c libraries+headers, and a compiler (or in the case of Debuntu and Fedora, lists which packages to install)
  • pip and virtualenv installed system wide by non-python developers will probably be ancient anyways, or not python-3
  • I plan on changing it to allow more init customization.
  • Pillow has wheels, lxml has a windows wheel if you don't mind using the previous version, markupsafe will would need visual c installed to get speedups, but it will work without them (I think I remember you saying windows is a second-class platform anyways for nikola). But this is not the point. The point is being able to tell end users "Use your system package manage, which you are already using, to install this set of package (python3, libxml2, ...), and then just run this script that takes care of all the unfamiliar parts"
  • See previous
  • Probably.
Contributor

tritium21 commented Mar 5, 2016

Asking users to install docker when I can point to developers who refuse to, is a non-starter.

  • C extensions I can do nothing about other than try and notify users that they need to run an apt commend first. UPDATE: the script now informs users to install c libraries+headers, and a compiler (or in the case of Debuntu and Fedora, lists which packages to install)
  • pip and virtualenv installed system wide by non-python developers will probably be ancient anyways, or not python-3
  • I plan on changing it to allow more init customization.
  • Pillow has wheels, lxml has a windows wheel if you don't mind using the previous version, markupsafe will would need visual c installed to get speedups, but it will work without them (I think I remember you saying windows is a second-class platform anyways for nikola). But this is not the point. The point is being able to tell end users "Use your system package manage, which you are already using, to install this set of package (python3, libxml2, ...), and then just run this script that takes care of all the unfamiliar parts"
  • See previous
  • Probably.
@tritium21

This comment has been minimized.

Show comment
Hide comment
@tritium21

tritium21 Mar 6, 2016

Contributor

Question for Mac users:

My understanding of the Mac ecosystem is very limited. Does the way the average Mac user (of Nikola) uses a python3 application make this script unnecessary for them? Should this script, if it detects it is on a Mac, just print what commands to issue to homebrew and exit? If so, what commands would they be?

Contributor

tritium21 commented Mar 6, 2016

Question for Mac users:

My understanding of the Mac ecosystem is very limited. Does the way the average Mac user (of Nikola) uses a python3 application make this script unnecessary for them? Should this script, if it detects it is on a Mac, just print what commands to issue to homebrew and exit? If so, what commands would they be?

@ralsina

This comment has been minimized.

Show comment
Hide comment
@ralsina

ralsina Mar 7, 2016

Member

With pip 8.1 binary C-extension wheels for Linux work better, via https://github.com/pypa/manylinux

Member

ralsina commented Mar 7, 2016

With pip 8.1 binary C-extension wheels for Linux work better, via https://github.com/pypa/manylinux

@ralsina ralsina modified the milestone: Whenever Mar 7, 2016

@Kwpolska

This comment has been minimized.

Show comment
Hide comment
@Kwpolska

Kwpolska Mar 7, 2016

Member

@tritium21 A good starting place would be https://getnikola.com/getting-started.html → click on “Installing on OS X”. Hopefully, it works — but we need someone with a clean(-ish) Mac to test.

Member

Kwpolska commented Mar 7, 2016

@tritium21 A good starting place would be https://getnikola.com/getting-started.html → click on “Installing on OS X”. Hopefully, it works — but we need someone with a clean(-ish) Mac to test.

@tritium21

This comment has been minimized.

Show comment
Hide comment
@tritium21

tritium21 Mar 7, 2016

Contributor

@ralsina manylinux1 cannot be used with libxml, libxslt, or libjpeg. So basically, the only hard c dependency (absolutely required for Nikola to run) that manylinux1 supports is zlib.

@Kwpolska I was actually hoping someone with a clean-ish mac would have recently installed Nikola.

Contributor

tritium21 commented Mar 7, 2016

@ralsina manylinux1 cannot be used with libxml, libxslt, or libjpeg. So basically, the only hard c dependency (absolutely required for Nikola to run) that manylinux1 supports is zlib.

@Kwpolska I was actually hoping someone with a clean-ish mac would have recently installed Nikola.

@ralsina

This comment has been minimized.

Show comment
Hide comment
@ralsina

ralsina May 17, 2017

Member

No action for over a year, closing. Anyone feel free to reopen if this idea is deemed worthwhile.

Member

ralsina commented May 17, 2017

No action for over a year, closing. Anyone feel free to reopen if this idea is deemed worthwhile.

@ralsina ralsina closed this May 17, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment