On 09/04/16 07:40, Mark Campbell wrote:
So I'm a few days behind on reading my email, so I only just now saw
these replies. However, I did some research, and I started with a Centos
wiki page that told me to use rpmbuild to rebuild Source RPMs. I started
out using this method since it was the only one I knew.
That is OK for the odd package, but you really, really shouldn't do it
for large repositories. The reason is that having extra packages that
aren't dependencies can in some cases break the package, either causing
it to fail to build, or produce a broken binary. A typical reason for
this is that the package's ./configure script will look for various
header files. If it finds them it will use them. But if those header
files shouldn't be there because they break the build, it will cause
problems. I have seen this happen a number of times. Another similar
side-effect can be that the package ends up getting linked against
libraries that aren't in it's foreseen dependency list, and then
subsequently fail to install run once it is installed.
Does mock / Koji use rpmbuild as its base?
Koju uses mock to create a minimal dependency chroot. Inside that
minimal dependency chroot, it uses rpmbuild to rebuild the src.rpm.
I wrote a simple script that did a for loop of
all of the source RPMs (synced them all from mirror service 's copy of
epel), and ran them through rpmbuild. Started off with a buttload of
errors in the form of non installed dependencies. Just today, I told my
Raspberry Pi 3 to install something like 9 gigs worth (expanded) of
packages (my script parsed the output of all of the failed builds for
the packages they needed, and piped them into yum install). I had to
leave for work (well) before it finished so I'm not sure how far it's
gotten. Is mock / Koji easier on these dependencies in the OS?
Mock will install the @buildsys-build set of packages that are the basic
set of dependencies for building packages, on top of the minimal root.
On top of that dependencies for the package itself are installed.
However, if you are asking if koji is more clever about the build order
in the sense that it will figure out the dependency tree and build the
dependees before dependers, no, it won't.
I will say this for the Raspberry Pi 3, though, it seems to be
comparatively powerful for building. While I did have a lot of failed
packages I must have gotten a good 500-1000 or so (epel totals ~10000)
built in just several hours.
I typically order my builds in ascending order of src.rpm size. While
the code size isn't a direct indication of the build time, it's a pretty
good first pass approximation.
As for build times, getting the first pass build of EL6 through took
months of CPU time on {Sheeva|Guru|Dream}Plugs.
That also reminds me. Are there any plans for 64 bit builds of
redsleeve in the future? I didn't care that much before, but now the Pi
3 is a 64 bit process, and I'm curious if it would have any better
performance in 64 bit vs 32 bit.
While I am open to requests (and volunteers :) from the community for
such a task, the reality is that CentOS guys do have an aarch64 build of
CentOS 7, and it works quite well (I run it on my MP30-AR0. There are
some thing that are IMO broken/pointless/daft. Not in their opinion,
though, since they are for the large part blindly following PNAELV's
decisions. The example that comes to mind is their kernel choice and
onfiguration - specifically, they ship with a kernel that uses 64KB
memory pages, rather than 4KB. This not only needlessly wastes memory
bandwidth (I pasted a link to some choice quotes from Linus on the
subject on the CentOS mailing list recently on the MP30-AR0 thread), but
it also brakes binary compatibility for running 32-bit ARM binaries in a
chroot (e.g. for running CentOS 7 armv7hl or running RedSleeve armv5tel
in a docker container, or running mock builds for them). They also run a
slightly patched 4.2.0 kernel which is ancient, unmaintained, and
EOL-ed. Consequently I have a LT 4.4.6 kernel and intend to maintain the
RPMs for it myself.
The point I am getting to is this:
1) I don't think there is any benefit in duplicating their work now that
they have finally caught up with us after 5 years. That just seems like
a huge waste of time where it isn't necessary, and they are at least
better funded (IIRC some of their maintainers are on the PNAELV payroll,
and get paid for it, rather than doing it only in their spare time like
we do here).
2) I believe there _IS_ scope for maintaining our own aarch64
repositories containing the packages we deem broken in CentOS, or those
that CentOS don't ship at all. Examples include:
2.1) Kernel, based on LT kernel release(s), as discussed above.
2.2) Various packages that they don't ship and don't intend to ship, or
that aren't being kept immediately up to date in other repositories like
EPEL. Off the top of my head xamples of what I use myself that falls
into this category include:
- ZFS
- mod_security
- mailman (until/unless we switch to google groups, which we probably
could/should)
- WordPress
We could also include fixes that CentOS guys haven't gotten around to
yet, e.g. the recent gnome fix that Jacco put together recently.
Gordan
_______________________________________________
users mailing list
[email protected]
https://lists.redsleeve.org/mailman/listinfo/users