> Long story short: > 1. Build python with rehweel set to 0. ..... I got further with these steps, but there are some omissions. I attempted to build python.spec as the first step (after setting with_rewheel to 0), but it complained about a missing dependency of rh-python36. So I then built the rh-python36 metapackage first, and I had to install that as root. The first pass of python.spec then built successfully.
I then modified python-setuptools.spec to disable build_wheel, and attempted to build. It failed because it requires rh-python36-devel. So I attempt to install that package as root, and there are additional dependency issues: /opt/rh/rh-python36/root/usr/bin/python3.6m is needed by rh-python36-python-devel-3.6.3-3.el7.centos.armv7hl libpython3.6m.so.rh-python36-1.0 is needed by rh-python36-python-devel-3.6.3-3.el7.centos.armv7hl python(abi) = 3.6 is needed by rh-python36-python-devel-3.6.3-3.el7.centos.armv7hl rh-python36-python(armv7hnl-32) = 3.6.3-3.el7.centos is needed by rh-python36-python-devel-3.6.3-3.el7.centos.armv7hl rh-python36-python-libs(armv7hnl-32) = 3.6.3-3.el7.centos is needed by rh-python36-python-devel-3.6.3-3.el7.centos.armv7hl I've attempted various combinations of force-installing the packages I have, with various other issues. So what is the correct next step in getting the setuptools package to build? On Fri, Jun 8, 2018 at 12:10 PM, Charalampos Stratakis <cstra...@redhat.com> wrote: > > > ----- Original Message ----- >> From: "Joshua Kramer" <joskra42.l...@gmail.com> >> To: "Neal Gompa" <ngomp...@gmail.com> >> Cc: sclorg@redhat.com >> Sent: Thursday, June 7, 2018 2:22:56 PM >> Subject: Re: [scl.org] rh-python36 SPEC file question (circular dependency) >> >> Thanks, Neal! That got me a little farther. Per the comments at the >> top of they python.spec file, I set with_rewheel to 0, then I built >> the Python RPM. That seems to have worked. >> >> Now, when I attempt to build setuptools, using this command: >> rpmbuild -ba ./python-setuptools.spec --define 'scl rh-python36' > >> python-setuptools-build.log 2>&1 >> >> ...the build command fails with these errors: >> error: Failed build dependencies: >> rh-python36-python-devel is needed by >> rh-python36-python-setuptools-36.5.0-1.el7.centos.noarch >> rh-python36-python-pip is needed by >> rh-python36-python-setuptools-36.5.0-1.el7.centos.noarch >> rh-python36-python-wheel is needed by >> rh-python36-python-setuptools-36.5.0-1.el7.centos.noarch >> >> Attempting to build the python-pip package results in similar errors. >> >> I have the following packages installed: >> rh-python36-2.0-1.el7.src.rpm >> rh-python36-python-3.6.3-3.el7.src.rpm >> rh-python36-python-pip-9.0.1-2.el7.src.rpm >> rh-python36-python-psycopg2-2.7.3-1.el7.src.rpm >> rh-python36-python-setuptools-36.5.0-1.el7.src.rpm >> rh-python36-python-virtualenv-15.1.0-2.el7.src.rpm >> rh-python36-python-wheel-0.30.0a0-1.el7.src.rpm >> rh-python36-scipy-0.19.1-2.el7.src.rpm >> >> What should I look for next? >> >> Thanks! >> > > Hello. I am one of the maintainers for that collection so feel free to ping me > directly, either on IRC or mail. > > Sorry for the complications you are facing, bootstrapping the interpreter to > an rpm > is indeed a quite complex procedure and it could be documented better. > > I will try to outline the steps with some explanations. > > Firstly, python bundles pip and setuptools, so ideally we'd like python to > utilize the system > installed packages instead of the bundled ones. What happens is that we first > compile python > including the bundled wheels (that's when we set the 'rewheel' macro to 0). > > Then we'd like to build pip and setuptools in the wheel [0] format so they > can be utilized by python. > However we still do not have the 'wheel' package built in order to do that, > so we'll have to (byte)compile > them the usual way, then compile wheel, and then build again python and > setuptools as wheels. > > So you should set the build_wheel macro in python-pip's and > python-setuptools' SPEC file to 0, build them and then > build the python-wheel package. > > Then after you have built python-wheel, rebuild python-pip and > python-setuptools with the build_wheel macro macro set to 1, > as we can create the wheel format now since we have the wheel package on our > system. > > Finally rebuild python with rewheel set to 1 in order for python to strip the > bundled wheels and utilize the system installed > ones (with a little bit of magic [1]. > > Long story short: > 1. Build python with rehweel set to 0. > 2. Build python-setuptools and python-pip with build_wheel set to 0. > 3. Build python-wheel. > 4. Build python-setuptools and python-pip with build_wheel set to 1. > 5. Build python with rehweel set to 1. > > I hope that helps (and I hope I didn't forget any steps :) ). > > [0] https://pythonwheels.com/ > [1] https://github.com/fedora-python/rewheel/blob/master/rewheel/__init__.py > >> On Mon, Jun 4, 2018 at 10:23 PM, Neal Gompa <ngomp...@gmail.com> wrote: >> > On Mon, Jun 4, 2018 at 9:38 PM Joshua Kramer <joskra42.l...@gmail.com> >> > wrote: >> >> >> >> Hello, >> >> >> >> I am trying to compile rh-python36 to use with CentOS on a Raspberry Pi. >> >> >> >> On line 192 of the SPEC file are these lines: >> >> %if 0%{?with_rewheel} >> >> BuildRequires: %{?scl_prefix}python-setuptools >> >> BuildRequires: %{?scl_prefix}python-pip >> >> %endif >> >> >> >> What is this supposed to do? It prevents the package from building, >> >> because there is a circular dependency- if I try to build python36, it >> >> complains that python36-setuptools and python36-pip are not >> >> installed... but I can't install those without having Python installed >> >> first. If I comment those lines out I get no error and the build >> >> almost completes. (It then fails the "multiprocessing" test, but >> >> that's beside the point.) However, I don't want to break something by >> >> commenting them out... so is there a better or "right" way to get rid >> >> of the circular dependency? >> >> >> > >> > Python is a two-cycle build. You build the first time with rewheel >> > disabled (that removes those BRs), then after that's successfully >> > built, you use those artifacts to build again with rewheel enabled. >> > >> > >> > -- >> > 真実はいつも一つ!/ Always, there's only one truth! >> >> _______________________________________________ >> SCLorg mailing list >> SCLorg@redhat.com >> https://www.redhat.com/mailman/listinfo/sclorg >> > > -- > Regards, > > Charalampos Stratakis > Software Engineer > Python Maintenance Team, Red Hat _______________________________________________ SCLorg mailing list SCLorg@redhat.com https://www.redhat.com/mailman/listinfo/sclorg