Open Source Content Management Framework

Thinking again about MidCOM3 package management

  1. Thinking again about MidCOM3 package management

    Wed March 18 2009 09:45:04 UTC
    Hi,

    Here are some quick notes I wrote down last night:

    "Like it or not, the mere tagging of a source tree has now become a valid option for releasing software"
    <http://times.usefulinc.com/2008/06/16-ops-now>

    * New installer tool written in Python that can support both git and SVN
    * Each package is a git repo or SVN URL (with optional branch or tag name to specify version)
    - Releases are made just by tagging or branching
    * Make a checkout to `<install prefix>`share/midgard/`<repo type>`
    * Check `manifest.yml` for dependencies, and install those
    * Symlink files based on MidCOM's standard hierarchy to various places
    * Python libs for git and SVN:
    * http://gitorious.org/projects/git-python/
    * http://pysvn.tigris.org/

    Usage:

    # midgard-package install https://svn.midgard-project.org/midgard/trunk/midcom/midcom_core/
    # midgard-package install git://github.com/bergie/net_nemein_calendar.git

    What do you think? Would be interesting to discuss in Linköping.

    --
    Henri Bergius
    Motorcycle Adventures and Free Software
    http://bergie.iki.fi/

    Skype: henribergius
    Jabber: henri.bergius@gmail.com
    Microblog: http://www.qaiku.com/home/bergie/

    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  2. Re: [midgard-dev] Thinking again about MidCOM3 package management

    Wed March 18 2009 10:50:08 UTC
    2009/3/18 <henri.bergius@iki.fi>:

    >   # midgard-package install https://svn.midgard-project.org/midgard/trunk/midcom/midcom_core/
    >   # midgard-package install git://github.com/bergie/net_nemein_calendar.git

    would be nice, to also have something like pear's channenls or ruby's gem-lists.
    so, we could just use "midgard-package install core"

    --
    Alexey Zakhlestin
    http://www.milkfarmsoft.com/
    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  3. Re: [midgard-dev] Thinking again about MidCOM3 package management

    Wed March 18 2009 12:45:09 UTC
    Alexey Zakhlestin writes:

    Hi!

    > 2009/3/18 <henri.bergius@iki.fi>:
    >
    >> # midgard-package install https://svn.midgard-project.org/midgard/trunk/midcom/midcom_core/
    >> # midgard-package install git://github.com/bergie/net_nemein_calendar.git
    >
    > would be nice, to also have something like pear's channenls or ruby's gem-lists.
    > so, we could just use "midgard-package install core"

    Fully agree. I, as a user, want to install org_routamc_gallery and I
    really do not care where and how it's downloaded from.

    Piotras


    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  4. Re: [midgard-dev] Thinking again about MidCOM3 package management

    Sat March 21 2009 21:05:06 UTC
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: RIPEMD160

    Some discussion and a plan for the MidCOM3^WMidgard2 MVC package
    management. Below a snapshot from http://etherpad.com/f7ioYW6ion , where
    we have discussed it now during the gathering:

    Packaging

    # Situation at the moment
    * We use pear packaging and it has a lot of problems

    # Bergies idea

    "Like it or not, the mere tagging of a source tree has now become a
    valid option for releasing software"
    <http://times.usefulinc.com/2008/06/16-ops-now>

    * New installer tool written in Python that can support both git and SVN
    * Each package is a git repo or SVN URL (with optional branch or tag
    name to specify version)
    * Make a checkout to `<install prefix>`share/midgard/`<repo type>`
    * Check `manifest.yml` for dependencies, and install those
    * Symlink files based on MidCOM's standard hierarchy to various places
    * If there are changes to MgdSchema file, run midgard-schema (or do the
    same via Midgard API directly), stop/start Midgard processes
    * Python libs for git and SVN:
    * http://gitorious.org/projects/git-python/
    * http://pysvn.tigris.org/

    # midgard-package install
    https://svn.midgard-project.org/midgard/trunk/midcom/midcom_core/
    # midgard-package install
    git://github.com/bergie/net_nemein_calendar.git

    * Make an installer that sniffs svn / git -repo and as soon as someone
    commits to the repo and changes the version numbering, installer makes a
    new package
    ** What's "make a new package" supposed to mean in the context of the
    installer? If a release is a tag, wouldn't making a package be a
    post-commit hook that creates the tag when a version number is bumped.
    * Every midcom package has manifest written in YAML that can be read by
    python or php. From there we get the dependencies
    * Up's
    ** Easy way to set up the difference with production server and
    development server (package state)
    * Downs
    ** Are there any??
    ** We need to actually write the tool
    * Channels
    ** What a user most of the time wants to say is midgard-package install
    org_routamc_positioning, not
    https://svn.midgard-project.org/midgard/trunk/midcom/org_routamc_positioning/
    *** Therefore, we should either have a default prefix if argument is not
    a repository path(ugly), or some kind of a concept of channel, and the
    default channel being https://svn.midgard-project.org/midgard/trunk/midcom/
    *** Suppose we have a bunch of (related) components we don't want in the
    midgard repo, and we have them in repo x, it would be nicer to say once
    'midgard-package channel add
    https://svn.example.com/project/trunk/midcom' and after that
    'midgard-package install examplechannel:com_example_component', where
    "examplechannel" would be gotten from some kind of manifest file in that
    repo
    ** Listings of available components would be more handy to get with a
    channel model

    The Plan:

    backend:
    * this is about automating things on m-p.org. Others can maintain their
    channel files how they please
    1. post-commit hook looks for changes to component manifests based on
    channel-config.yml
    2. if a version number is bumped, and a corresponding tag doesn't exist,
    it is created. If it exists, that component's current state is copied
    under that tag.
    3. channel files (/channels/*) are updated.
    * Each channel file is looked at, and if the new version matches that
    channel's version pattern, that version of that package is added to the
    channel file.

    https://svn.midgard-project.org/midgard/channels/vinland.yml:
    name: vinland
    type: svn
    channel-source: #optional, for m-p.org channel maintenance operations
    tags: 9-03-*
    paths: /branches/vinland/midcom/
    # only when packages matching the version and path patterns are version
    # bumped, are they added to this channel, so we can have e.g.
    vinland and
    # vinland-contrib
    url: https://svn.midgard-project.org/midgard/channels/vinland.yml
    #if URL changes, 'midgard-package update' reading the channel can prompt to
    # change the URL in /etc/midgard/midgard-package.yml
    components:
    org_routamc_positioning:
    description: Location support # should this be here?
    # Should be taken from the component's
    # manifest automatically, but
    should the
    # trunk's description used for all
    # versions?
    versions:
    9.03.RC1:
    url:
    https://svn.midgard-project.org/midgard/tags/9-03-RC1/org_routamc_positioning/
    dependencies:
    org_openpsa_httplib:
    version-min: 9.03
    version-max: 9.03.5 # optional, if missing for a
    # midgard package, same
    generation
    # will be accepted, i.e. 9.03.*
    # but not 9.09, but can be
    forced?
    source-type: midgard
    source-channel: this # should this be here?
    should it
    # be optional? 'this' would
    # indicate that the package is
    # present on the current
    channel.
    # otherwise it would be a URL
    # to a channel file.
    Pear_Package:
    version-min: 6.18
    source-type: pear
    source-channel: pear.php.net
    9.09.5:
    ...

    client:
    * 'midgard-package channel add
    https://svn.midgard-project.org/midgard/channels/vinland.yml'
    ** channel is added to config file
    ** channel is fetched and cached under /var/lib/midgard/channels/vinland.yml
    * 'midgard-package update'
    ** channel files are re-fetched
    * 'midgard-package install [channel:]<package>[=version]|<url>'
    ** newest version available for specified channel is installed
    ** data about installation is saved in
    /var/lib/midgard/channels/installed_packages.yml
    * 'midgard-package upgrade <package>|all'
    ** upgrade only looks at the channel the package was installed from
    ** if newer version is available in another channel than package was
    installed from, and that version is wanted, it should be done by
    midgard-package install
    * 'midgard-package list [channel]'
    * 'midgard-package list-all'
    ** these also list installed packages from outside of channels
    ** output:
    com_rohea_facebook:
    installed: 9.03.0 (vinland)
    available in: vinland, mjollnir, devel
    latest: 9.03.3 (vinland), 9.09.2 (mjollnir), 10.03.beta-1 (devel)
    * 'midgard-package info <package>' for more detailed info

    /var/lib/midgard/channels/installed_packages.yml
    com_example_component:
    version: 9.03.7
    channel: none
    type: git
    url: git://example.com/repo/component/ # the last three should be
    here to
    # keep track of components
    # installed from outside repos
    ...

    /etc/midgard/midgard-package.yml:
    # with each new generation release the default version of this file gets
    that generation's channel contrib-channel
    default-channel: vinland
    channels:
    devel:
    type: svn
    URL: https://svn.midgard-project.org/midgard/channels/devel.yml
    vinland:
    type: svn
    URL: https://svn.midgard-project.org/midgard/channels/vinland.yml
    mjollnir:
    type: svn
    URL: https://svn.midgard-project.org/midgard/channels/mjollnir.yml

    - --
    Patrik Hirvinen
    patrik.hirvinen@nemein.com
    +358-(0)40-7307117
    http://nemein.com/fi/people/hirvinen/

    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.8 (Darwin)
    Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

    iEYEAREDAAYFAknFVcAACgkQiCIKn84rIOgfRQCeIgf3zNqI3UA/EPWX2XcjLYoe
    NTYAn25pUM5Q4EAkmL06uqE9nj8K+2Vp
    =GnHC
    -----END PGP SIGNATURE-----
    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
Designed by Nemein, hosted by Kafit