From Fedora Project Wiki
No edit summary
No edit summary
Line 70: Line 70:
</pre>
</pre>


== cloud images ==
== Repositories: cloud images ==


https://cloud.centos.org/altarch/7/images/
https://cloud.centos.org/altarch/7/images/
Line 76: Line 76:
needs to be compiled for ppc64le
needs to be compiled for ppc64le


== delorean.repo ==
== Repositories: delorean.repo ==


https://trunk.rdoproject.org/centos7-master/current-passed-ci/
https://trunk.rdoproject.org/centos7-master/current-passed-ci/
Line 82: Line 82:
needs to be compiled for ppc64le
needs to be compiled for ppc64le


== delorean-deps.repo ==
== Repositories: delorean-deps.repo ==


https://buildlogs.centos.org/centos/7/cloud/ppc64le/openstack-pike/
https://buildlogs.centos.org/centos/7/cloud/ppc64le/openstack-pike/
Line 88: Line 88:
needs to be compiled for ppc64le
needs to be compiled for ppc64le


== openstack/python-tripleoclient ==
== Packages: openstack/python-tripleoclient ==


There is x86_86 only code used in:
There is x86_86 only code used in:
Line 149: Line 149:
</pre>
</pre>


== openstack/tripleo-common ==
== Packages: openstack/tripleo-common ==


There is x86_86 only code used in:
There is x86_86 only code used in:
Line 211: Line 211:
</pre>
</pre>


== nodejs ==
== Packages: nodejs ==


Needs to support the ppc64le architecture
Needs to support the ppc64le architecture
Line 223: Line 223:
In Koji, [https://koji.fedoraproject.org/koji/buildinfo?buildID=880261 nodejs-6.10.2-1.el7] is not built for ppc64le, but [https://koji.fedoraproject.org/koji/buildinfo?buildID=889071 nodejs-6.10.3-1.el7] is.  So it seems like CBS needs to get a later version.
In Koji, [https://koji.fedoraproject.org/koji/buildinfo?buildID=880261 nodejs-6.10.2-1.el7] is not built for ppc64le, but [https://koji.fedoraproject.org/koji/buildinfo?buildID=889071 nodejs-6.10.3-1.el7] is.  So it seems like CBS needs to get a later version.


== python-fastcache ==
== Packages: python-fastcache ==


In CBS, it is not built for ppc64le here [http://cbs.centos.org/koji/buildinfo?buildID=12770 python-fastcache-1.0.2-3.el7].  However, in Koji it is here [https://koji.fedoraproject.org/koji/buildinfo?buildID=664912 python-fastcache-1.0.2-3.el7].
In CBS, it is not built for ppc64le here [http://cbs.centos.org/koji/buildinfo?buildID=12770 python-fastcache-1.0.2-3.el7].  However, in Koji it is here [https://koji.fedoraproject.org/koji/buildinfo?buildID=664912 python-fastcache-1.0.2-3.el7].
Line 255: Line 255:
</pre>
</pre>


== openstack-tripleo-ui-deps ==
== Packages: openstack-tripleo-ui-deps ==


Needs to support the ppc64le architecture
Needs to support the ppc64le architecture
Line 267: Line 267:
Also, there are x86_64 binaries embedded and are missing during the build process.
Also, there are x86_64 binaries embedded and are missing during the build process.


== openstack-magnum ==
== Packages: openstack-magnum ==


Has the following issue during the build process:
Has the following issue during the build process:

Revision as of 13:43, 20 June 2017

Building the overcloud image for ppc64le

diskimage-builder: PowerPC grub partition

https://review.openstack.org/#/c/447739/ needs updating.

Resolved to https://review.openstack.org/#/c/471525/ ?

diskimage-builder: 10-centos7-cloud-image

A patch needs to be submitted for https://git.openstack.org/cgit/openstack/diskimage-builder/tree/diskimage_builder/elements/centos7/root.d/10-centos7-cloud-image#n19

diff --git a/diskimage_builder/elements/rpm-distro/pre-install.d/01-override-yum-arch b/diskimage_builder/elements/rpm-distro/pre-install.d/01-override-yum-arch
index c61114e..8e3fe59 100755
--- a/diskimage_builder/elements/rpm-distro/pre-install.d/01-override-yum-arch
+++ b/diskimage_builder/elements/rpm-distro/pre-install.d/01-override-yum-arch
@@ -18,6 +18,9 @@ elif [[ "$ARCH" = "ppc64" ]]; then
 elif [[ "$ARCH" = "ppc64el" ]]; then
     basearch=ppc64el
     arch=ppc64el
+elif [[ "$ARCH" = "ppc64le" ]]; then
+    basearch=ppc64le
+    arch=ppc64le
 elif [[ "arm64 aarch64" =~ "$ARCH" ]]; then
     basearch=aarch64
     arch=aarch64

diskimage-builder: 01-override-yum-arch

A patch needs to be submitted for https://git.openstack.org/cgit/openstack/diskimage-builder/tree/diskimage_builder/elements/rpm-distro/pre-install.d/01-override-yum-arch#n25

diff --git a/diskimage_builder/elements/centos7/root.d/10-centos7-cloud-image b/diskimage_builder/elements/centos7/root.d/10-centos7-cloud-image
index 73a41b9..42e534a 100755
--- a/diskimage_builder/elements/centos7/root.d/10-centos7-cloud-image
+++ b/diskimage_builder/elements/centos7/root.d/10-centos7-cloud-image
@@ -11,12 +11,20 @@ set -o pipefail

 if [[ "amd64 x86_64" =~ "$ARCH" ]]; then
     ARCH="x86_64"
+    DIB_RELEASE=${DIB_RELEASE:-GenericCloud}
     DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-http://cloud.centos.org/centos/7/images}
+    BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-CentOS-7-${ARCH}-$DIB_RELEASE.qcow2.xz}
 elif [[ "arm64 aarch64" =~ "$ARCH" ]]; then
     ARCH="aarch64"
     DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-http://cloud.centos.org/altarch/7/images/aarch64}
+    DIB_RELEASE=${DIB_RELEASE:-GenericCloud}
+    BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-CentOS-7-${ARCH}-$DIB_RELEASE.qcow2.xz}
+elif [[ "ppc64le" =~ "$ARCH" ]]; then
+    DIB_RELEASE=GenericCloud-1611
+    DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-http://ftp.unicamp.br/pub/ppc64el/centos/7/images}
+    BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-CentOS-7-${ARCH}-$DIB_RELEASE.qcow2}
 else
-    echo 'centos7 root element only support the x86_64 and aarch64 $ARCH value.'
+    echo 'centos7 root element only support the amd64, x86_64, aarch64, and ppc64le $ARCH value.'
     exit 1
 fi

@@ -30,9 +38,7 @@ if [ -n "$DIB_LOCAL_IMAGE" ]; then
     BASE_IMAGE_FILE=$(basename $DIB_LOCAL_IMAGE)
     BASE_IMAGE_TAR=$BASE_IMAGE_FILE.tgz
 else
-    DIB_RELEASE=${DIB_RELEASE:-GenericCloud}
     DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES}
-    BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-CentOS-7-${ARCH}-$DIB_RELEASE.qcow2.xz}
     BASE_IMAGE_TAR=$BASE_IMAGE_FILE.tgz
     IMAGE_LOCATION=$DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE
     CACHED_IMAGE=$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE

Repositories: cloud images

https://cloud.centos.org/altarch/7/images/

needs to be compiled for ppc64le

Repositories: delorean.repo

https://trunk.rdoproject.org/centos7-master/current-passed-ci/

needs to be compiled for ppc64le

Repositories: delorean-deps.repo

https://buildlogs.centos.org/centos/7/cloud/ppc64le/openstack-pike/

needs to be compiled for ppc64le

Packages: openstack/python-tripleoclient

There is x86_86 only code used in:

diff --git a/image/.build.py.swp b/image/.build.py.swp
deleted file mode 100644
index 427d440..0000000
Binary files a/image/.build.py.swp and /dev/null differ
diff --git a/image/base.py b/image/base.py
index 67d97ac..59f7e5a 100644
--- a/image/base.py
+++ b/image/base.py
@@ -31,6 +31,8 @@ class BaseImageManager(object):
     )
 
     def __init__(self, config_files, images=None):
+#       import pdb
+#       pdb.set_trace()
         self.config_files = config_files
         self.images = images
 
@@ -47,6 +49,8 @@ class BaseImageManager(object):
     def load_config_files(self, section):
         config_data = {}
         for config_file in self.config_files:
+#           import pdb
+#           pdb.set_trace()
             if os.path.isfile(config_file):
                 with open(config_file) as cf:
                     data = yaml.safe_load(cf.read()).get(section)
diff --git a/image/build.py b/image/build.py
index 710f0f9..3df360a 100644
--- a/image/build.py
+++ b/image/build.py
@@ -35,10 +35,11 @@ class ImageBuildManager(BaseImageManager):
     APPEND_ATTRIBUTES = BaseImageManager.APPEND_ATTRIBUTES + ['environment']
 
     def __init__(self, config_files, images=None, output_directory='.',
-                 skip=False):
+                 skip=False, arch='amd64'):
         super(ImageBuildManager, self).__init__(config_files, images)
         self.output_directory = re.sub('[/]$', '', output_directory)
         self.skip = skip
+        self.arch = arch
 
     def build(self):
         """Start the build process"""
@@ -48,7 +49,9 @@ class ImageBuildManager(BaseImageManager):
         disk_images = self.load_config_files(self.DISK_IMAGES)
 
         for image in disk_images:
-            arch = image.get('arch', 'amd64')
+#           import pdb
+#           pdb.set_trace()
+            arch = image.get('arch', self.arch)
             image_type = image.get('type', 'qcow2')
             image_name = image.get('imagename')
             builder = image.get('builder', 'dib')

Packages: openstack/tripleo-common

There is x86_86 only code used in:

diff --git a/v1/.overcloud_image.py.swp b/v1/.overcloud_image.py.swp
deleted file mode 100644
index 04ad0b5..0000000
Binary files a/v1/.overcloud_image.py.swp and /dev/null differ
diff --git a/v1/overcloud_image.py b/v1/overcloud_image.py
index 6783b4f..3e930aa 100644
--- a/v1/overcloud_image.py
+++ b/v1/overcloud_image.py
@@ -178,7 +178,14 @@ class BuildOvercloudImage(command.Command):
     log = logging.getLogger(__name__ + ".BuildOvercloudImage")
 
     IMAGE_YAML_PATH = "/usr/share/openstack-tripleo-common/image-yaml"
-    DEFAULT_YAML = ['overcloud-images.yaml', 'overcloud-images-centos7.yaml']
+    DEFAULT_YAML_AMD64 = [
+        'overcloud-images.yaml',
+        'overcloud-images-centos7.yaml'
+    ]
+    DEFAULT_YAML_PPC64LE = [
+        'overcloud-images-ppc64le.yaml',
+        'overcloud-images-centos7-ppc64le.yaml'
+    ]
 
     # The constants below are deprecated and will be removed in Pike
     TRIPLEOPUPPETELEMENTS = "/usr/share/tripleo-puppet-elements"
@@ -596,21 +603,26 @@ class BuildOvercloudImage(command.Command):
     def take_action(self, parsed_args):
         self.log.debug("take_action(%s)" % parsed_args)
 
-        import pdb 
-        pdb.set_trace()
+#       import pdb 
+#       pdb.set_trace()
 
         if parsed_args.all or parsed_args.image_types:
             return self._legacy_build(parsed_args)
 
         if not parsed_args.config_files:
+            default_yaml = self.DEFAULT_YAML_AMD64
+            arch = parsed_args.node_arch
+            if arch == 'ppc64le':
+                default_yaml = self.DEFAULT_YAML_PPC64LE
+
             parsed_args.config_files = [os.path.join(self.IMAGE_YAML_PATH, f)
-                                        for f in self.DEFAULT_YAML]
+                                        for f in default_yaml]
         manager = build.ImageBuildManager(
             parsed_args.config_files,
             output_directory=parsed_args.output_directory,
             skip=parsed_args.skip,
             images=parsed_args.image_names,
-            arch=parsed_args.arch)
+            arch=arch)
         manager.build()
 
 

Packages: nodejs

Needs to support the ppc64le architecture

...
error: Architecture is not included: ppc64le
...

In Koji, nodejs-6.10.2-1.el7 is not built for ppc64le, but nodejs-6.10.3-1.el7 is. So it seems like CBS needs to get a later version.

Packages: python-fastcache

In CBS, it is not built for ppc64le here python-fastcache-1.0.2-3.el7. However, in Koji it is here python-fastcache-1.0.2-3.el7.

Unfortunately, it does not build locally via mockchain:

[hamzy@pkvmci853 mockchain2]$ mockchain -r epel-7-ppc64le --tmp_prefix=mockbuild --localrepo=mock-repo ${ADDREPO} --log=mockchain.log --recurse python-fastcache-1.0.2-3.el7.src.rpm
...
============================= test session starts ==============================
platform linux2 -- Python 2.7.5, pytest-3.0.6, py-1.4.31, pluggy-0.4.0 -- /usr/bin/python2
cachedir: .cache
rootdir: /builddir/build/BUILD/python-fastcache-1.0.2/fastcache-1.0.2, inifile:
collecting ... collected 0 items
========================= no tests ran in 0.01 seconds =========================
...

However, it can be built inside of a mock shell:

<mock-chroot> sh-4.2# wget https://kojipkgs.fedoraproject.org//packages/python-fastcache/1.0.2/3.el7/src/python-fastcache-1.0.2-3.el7.src.rpm
<mock-chroot> sh-4.2# yum-builddep python-fastcache-1.0.2-3.el7.src.rpm
<mock-chroot> sh-4.2# rpm -i python-fastcache-1.0.2-3.el7.src.rpm
<mock-chroot> sh-4.2# (cd build/; rpmbuild -ba SPECS/python-fastcache.spec 2>&1 | tee errors.python-fastcache)
...
Wrote: /builddir/build/SRPMS/python-fastcache-1.0.2-3.el7.centos.src.rpm
Wrote: /builddir/build/RPMS/python-fastcache-1.0.2-3.el7.centos.ppc64le.rpm
Wrote: /builddir/build/RPMS/python-fastcache-debuginfo-1.0.2-3.el7.centos.ppc64le.rpm
...

Packages: openstack-tripleo-ui-deps

Needs to support the ppc64le architecture

...
error: Architecture is not included: ppc64le
...

Also, there are x86_64 binaries embedded and are missing during the build process.

Packages: openstack-magnum

Has the following issue during the build process:

...
2017-06-18 14:30:17,030 INFO:dlrn-build:DEBUG: + /usr/bin/python2 setup.py test
2017-06-18 14:30:18,298 INFO:dlrn-build:DEBUG: running test
Failed to import test module: magnum.tests.unit.common.test_docker_utils
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/unittest2/loader.py", line 445, in _find_test_path
    module = self._get_module_from_name(name)
  File "/usr/lib/python2.7/site-packages/unittest2/loader.py", line 384, in _get_module_from_name
    __import__(name)\n  File "/builddir/build/BUILD/magnum-4.1.1.dev238/magnum/tests/unit/common/test_docker_utils.py", line 18, in <module>
    from magnum.common import docker_utils
  File "/builddir/build/BUILD/magnum-4.1.1.dev238/magnum/common/docker_utils.py", line 80, in <module>
    class DockerHTTPClient(docker.APIClient):\nAttributeError: \'module\' object has no attribute \'APIClient\'
...

Maybe this https://github.com/openstack/magnum/commit/1e0785c32089a229a65f0a3d469f899440d7af2a9 is the cause?