VERSION: Improve logic behind and information in VERSION partition

The VERSION partition is constructed in pkg-versions.mk, and has
the purpose of indicating to both the user and developer/support
what firmware build is on a particular machine.

This patch addresess a few issues with VERSION.

Firstly, the pkg-versions.mk code was making needlessly excessive calls
to git, which could be solved by using "git describe --always --dirty"
rather than going around and around.

Secondly, the information in VERSION was not always useful. Previously,
we'd get an entry like 'open-power-habanero-78d8928', which is only
useful if you posses a tree with that commit in it. With this patch,
instead you get 'open-power-habanero-v1.14-45-g78d89280c3f9' which tells
us a *lot* more information about what was used to build this image. The
same issue was with buildroot (was: 'buildroot-6b9fd80',
now: 'buildroot-2016.11-4-g6b9fd8036d72')

Thirdly, the (truncated) SHA512 hash of the patches to a package was
not always clear that it was a SHA of patches. We now prefix the
patch sha with a 'p' (Git prefixes a sha with a 'g'). For example:
'habanero-xml-6a78496-67a075c' becomes 'habanero-xml-6a78496-p67a075c'

Fourthly, the version targets threw some shell errors, so they're also
fixed.

Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
1 file changed
tree: 2fc053500cc80757a63f11c58eb3cd99869713db
  1. ci/
  2. dl/
  3. openpower/
  4. output/
  5. .gitignore
  6. .gitmodules
  7. LICENSE
  8. NOTICE
  9. op-build-env
  10. README.md
README.md

OpenPOWER Firmware Build Environment

The OpenPOWER firmware build process uses Buildroot to create a toolchain and build the various components of the PNOR firmware, including Hostboot, Skiboot, OCC, Petitboot etc.

Development

Issues, Milestones, pull requests and code hosting is on GitHub: https://github.com/open-power/op-build

Mailing list: openpower-firmware@lists.ozlabs.org
Info/Subscribe: https://lists.ozlabs.org/listinfo/openpower-firmware
Archives: https://lists.ozlabs.org/pipermail/openpower-firmware/

Building an image

To build an image for a Palmetto system:

git clone --recursive git@github.com:open-power/op-build.git
cd op-build
. op-build-env
op-build palmetto_defconfig && op-build

There are also default configurations for other platforms in openpower/configs/ such as Habanero and Firestone.

Buildroot/op-build supports both native and cross-compilation - it will automatically download and build an appropriate toolchain as part of the build process, so you don't need to worry about setting up a cross-compiler. Cross-compiling from a x86-64 host is officially supported.

Dependencies for 64-bit Ubuntu/Debian systems

  1. Install Ubuntu (>= 14.04) or Debian (>= 7.5) 64-bit.

  2. Enable Universe (Ubuntu only):

     sudo apt-get install software-properties-common
     sudo add-apt-repository universe
    
  3. Install the packages necessary for the build:

     sudo apt-get install cscope ctags libz-dev libexpat-dev \
       python language-pack-en texinfo \
       build-essential g++ git bison flex unzip \
       libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc \
       wget bc
    

Dependencies for 64-bit Fedora systems

  1. Install Fedora 25 64-bit (older Fedora should also work).

  2. Install the packages necessary for the build:

     sudo dnf install gcc-c++ flex bison git ctags cscope expat-devel patch \
       zlib-devel zlib-static texinfo perl-bignum "perl(XML::Simple)" \
       "perl(YAML)" "perl(XML::SAX)" "perl(Fatal)" "perl(Thread::Queue)" \
       "perl(Env)" "perl(XML::LibXML)" "perl(Digest::SHA1)" libxml2-devel \
       which wget unzip tar cpio python bzip2 bc findutils ncurses-devel