An error occurred fetching the project authors.
  1. 22 Jan, 2019 4 commits
    • Kirill Smelkov's avatar
      helloweb: Switch to cloning helloweb.git via gowork infrastructure · 810505c4
      Kirill Smelkov authored
      - it is gowork that is now used by Go-related bits in SlapOS, so using
        gowork is preferred as example. Besides we need gowork to be able to
        use any third-party Go package.
      
      - other languages can use helloweb repository from under gowork/ tree as
        well.
      
      The hash of helloweb.git is changed, becuase its layout had to be too
      adjusted to match gowork mode:
      
      nexedi/helloweb@a072af78...8bfedac6
      810505c4
    • Kirill Smelkov's avatar
      helloweb: v↑ (a072af78) · 1642a8cf
      Kirill Smelkov authored
      To pick up Python3 support.
      
      nexedi/helloweb@39fd89a3...a072af78
      1642a8cf
    • Kirill Smelkov's avatar
      golang: v↑ to go1.11 · 36f105cd
      Kirill Smelkov authored
      Don't drop support for Go1.9, as, even though Go1.9 is no longer
      supported, software/gitlab depends on it.
      
      Our Go1.10.X is also too outdated, but I'm not touching it here neither.
      
      /cc @alain.takoudjou, @luke
      36f105cd
    • Kirill Smelkov's avatar
      helloworld: Fix build · af176b5b
      Kirill Smelkov authored
      	2019-01-21 17:56:18 slapos[13553] INFO While:
      	2019-01-21 17:56:18 slapos[13553] INFO   Installing.
      	2019-01-21 17:56:18 slapos[13553] INFO   Getting section instance-profile.
      	2019-01-21 17:56:18 slapos[13553] INFO   Initializing section instance-profile.
      	2019-01-21 17:56:18 slapos[13553] INFO   Installing recipe slapos.recipe.template.
      	2019-01-21 17:56:18 slapos[13553] INFO   Getting distribution for 'slapos.recipe.template'.
      	2019-01-21 17:56:18 slapos[13553] INFO Error: Picked: slapos.recipe.template = 4.3
      	2019-01-21 17:56:19 slapos[13553] ERROR Failed to run buildout profile in directory '/srv/slapgrid/slappart7/srv/runner/software/19771f7b751ffc2a88162b15750c6069'
      
      	2019-01-21 18:01:21 slapos[26771] INFO While:
      	2019-01-21 18:01:21 slapos[26771] INFO   Installing.
      	2019-01-21 18:01:21 slapos[26771] INFO   Getting section helloweb-ruby.
      	2019-01-21 18:01:21 slapos[26771] INFO   Initializing section helloweb-ruby.
      	2019-01-21 18:01:21 slapos[26771] INFO   Getting option helloweb-ruby:input.
      	2019-01-21 18:01:21 slapos[26771] INFO   Getting section helloweb-ruby-bundle.
      	2019-01-21 18:01:21 slapos[26771] INFO   Initializing section helloweb-ruby-bundle.
      	2019-01-21 18:01:21 slapos[26771] INFO   Getting option helloweb-ruby-bundle:make-targets.
      	2019-01-21 18:01:21 slapos[26771] INFO   Getting section bundler.
      	2019-01-21 18:01:21 slapos[26771] INFO   Initializing section bundler.
      	2019-01-21 18:01:21 slapos[26771] INFO   Installing recipe rubygemsrecipe.
      	2019-01-21 18:01:21 slapos[26771] INFO   Getting distribution for 'rubygemsrecipe'.
      	2019-01-21 18:01:21 slapos[26771] INFO Error: Picked: rubygemsrecipe = 0.2.2+slapos001
      
      Ruby stuff was failing to download at all -> let's use the versions that
      are the same as currently used in software/gitlab.
      
      Based on patch by @romain.
      Helped by @jerome.
      af176b5b
  2. 10 Oct, 2017 1 commit
  3. 22 Feb, 2017 1 commit
  4. 19 Jul, 2016 1 commit
  5. 06 Jul, 2016 1 commit
  6. 17 Jan, 2016 1 commit
    • Kirill Smelkov's avatar
      helloweb/ruby: Abandon usage of slapos.cookbook:wrapper · 22124832
      Kirill Smelkov authored
      It turned out we cannot currently use slapos.cookbook in software part
      of SR - the reason is slapos.cookbook egg depends on lxml egg, which in
      turn needs libxml to be also installed via slapos.
      
      For this reason stack/slapos.cfg has
      
          [slapos-cookbook]   # NOTE _not_ slapos.cookbook
          recipe = zc.recipe.egg
          eggs =
            ${lxml-python:egg}
          ...
      
      and lxml-python is lxml building recipe to build it together with
      libxml:
      
          [lxml-python]
          recipe = zc.recipe.egg:custom
          egg = lxml
      
          rpath =
            ${libxml2:location}/lib/
            ${libxslt:location}/lib/
            ${zlib:location}/lib/
          environment = lxml-python-env
          ...
      
      So underlying idea, as I understand it, is: every SR contains
      slapos-cookbook in parts and this way lxml-python gets build. Then when
      there is slapos.cookbook egg usage, it is already correctly built.
      
      BUT
      
      This works when such slapos.cookbook egg usage happens _only_ in instance
      part of an SR: otherwise, if buildout sees slapos.cookbook egg usage in
      some recipe, e.g. like it currently is in helloweb-ruby:
      
          [helloweb-ruby]
          recipe  = slapos.cookbook:wrapper
          ...
      
      it _first_ tries to install slapos.cookbook egg directly - as needed for
      recipes eggs are installed as a first step, _before_ further buildout
      processing. What happens then is that slapos.cookbook (note not "-") egg
      sources and dependencies are downloaded from pypi, including lxml egg,
      all are tried to build, and in lxml egg it fails this way:
      
          ...
          Processing lxml-3.5.0
          Writing /tmp/tmpLGK4xWbuild/lxml-3.5.0/setup.cfg
          Running setup.py -q bdist_egg --dist-dir /tmp/tmpLGK4xWbuild/lxml-3.5.0/egg-dist-tmp-DJvofa
          Building lxml version 3.5.0.
          Building without Cython.
          ERROR: /bin/sh: 1: xslt-config: not found
      
          ** make sure the development packages of libxml2 and libxslt are installed **
      
          Using build configuration of libxslt
          In file included from src/lxml/lxml.etree.c:323:0:
          src/lxml/includes/etree_defs.h:14:31: fatal error: libxml/xmlversion.h: No such file or directory
           #include "libxml/xmlversion.h"
                                         ^
          compilation terminated.
          Compile failed: command 'gcc' failed with exit status 1
          /tmp/tmpLGK4xWbuild/lxml-3.5.0/temp/xmlXPathInitGlEAOF.c:1:26: fatal error: libxml/xpath.h: No such file or directory
           #include "libxml/xpath.h"
                                    ^
          compilation terminated.
          *********************************************************************************
          Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
          *********************************************************************************
          error: Setup script exited with error: command 'gcc' failed with exit status 1
          An error occurred when trying to install lxml 3.5.0. Look above this message for any errors that were output by easy_install.
          Could't load zc.buildout entry point wrapper
          from slapos.cookbook:
          Couldn't install: lxml 3.5.0.
          While:
            Installing.
            Getting section helloweb-ruby.
            Initializing section helloweb-ruby.
            Installing recipe slapos.cookbook.
          Error: Couldn't install: lxml 3.5.0
      
      Previously it probably used to work because we had system libxml
      installed, and this way lxml compilation succeeded (but was incorrect
      from slapos point of view).
      
      ( The problem turned out to be already known somehow - see e.g. c7d00913
        "Initial neoppod commit." and look for "Note on LXML/END LXML" there )
      
      Solution could be: either fix slapos.cookbook installation via e.g.
      teaching buildout to take into account pre-dependencies for eggs (for
      lxml) or just to avoid using slapos.cookbook:wrapper for executable
      generation.
      
      While @kazuhiko is working on the first more-generic solution, here goes
      a simpler one to just make helloweb component alive again: like it is
      done in a lot of places (e.g. in software/kvm/) let's use
      collective.recipe.template to generate a short shell script.
      
      NOTE
      
      previously the command line was
      
          ${bundler:bundle} exec sh -c 'helloweb.rb "$@"' ${:_buildout_section_name_}
      
      but now it is the same with "$@" appended:
      
          exec ${bundler:bundle} exec sh -c 'helloweb.rb "$@"' ${:_buildout_section_name_} "$@"
      
      The reason is slapos.cookbook:wrapper uses slapos.recipe.librecipe.execute.generic_exec()
      in generated script, which appends sys.argv[1:] to the command-line implicitly:
      
          def generic_exec(args):
            ...
            os.execve(exec_list[0], exec_list + sys.argv[1:], exec_env)
                                              ^^^^^^^^^^^^^^
      
          https://lab.nexedi.com/nexedi/slapos/blob/54bbe0a9/slapos/recipe/librecipe/execute.py#L84
      
      that's why last "$@" was not present in original version.
      
      P.S.
      
      Otherwise currently slapos.cookbook is used only in instance parts of
      recipes in whole slapos.git
      
      /reviewed-by TrustMe
      /debugged-with @kazuhiko
      /cc @vpelletier
      22124832
  7. 03 Nov, 2015 4 commits
    • Kirill Smelkov's avatar
      helloworld & helloweb: Go version · 24e82414
      Kirill Smelkov authored
      We added support for Go in the previous patch. Let's now illustrate how
      to use the toolchain and build simple service based on it.
      
      /cc @gabriel, @Camata
      24e82414
    • Kirill Smelkov's avatar
      helloworld & helloweb: Ruby version · 31a45a94
      Kirill Smelkov authored
      To illustrate how to build Ruby software, let's add helloweb-ruby
      component and integrate it into helloworld SR as a service.
      
      helloweb-ruby installation is a bit tricky, because we do not have it
      initially as a released gem, and have to build it with Bundler by hand.
      
      Changes for integration into helloworld services infrastructure are
      small, thanks for the "kind" rework we did in previous patch.
      
      /cc @kazuhiko
      31a45a94
    • Kirill Smelkov's avatar
      helloworld & helloweb: Prepare to show different kinds of helloweb to the world · 2b6c1e47
      Kirill Smelkov authored
      Prepare to have several helloweb programs each written in its own
      language, and installed into bin/ as helloworld-<language> and exposed
      as separate service to the web on its own port.
      
      For component/helloweb we just rename installed script and section.
      
      For software/helloworld we split helloweb & helloweb-promise section
      into base and generate requested helloweb-<kinds> & friends via jinja2
      programming; the same for exposing url for each kind.
      
      So far it is only preparatory changes for new kinds - i.e. instance code
      now supports it, but the only kind so far is still python.
      
      /cc @jerome
      2b6c1e47
    • Kirill Smelkov's avatar
      helloworld: Move helloweb program to component/helloweb · e3a11eaa
      Kirill Smelkov authored
      This
      
      - better illustrates what components do (provide building recipes for
        programs) and what software do (gather components and provide recipes
        for instances).
      
      - illustrates how to build the software properly - usually we build
        eggs or scripts with zc.recipe.egg:* , not generate python programs via
        jinja2 templating. Because when installing via egg, it is possible to
        import other installed eggs relatively straghtforward, and for jinja2
        way it is hard to do.
      
      The helloweb program itself is moved into newly introduced helloweb.git
      repository and, as almost all other software, becomes separate from
      slapos.git .
      
      /cc @jerome
      e3a11eaa