FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > CentOS > CentOS Development

 
 
LinkBack Thread Tools
 
Old 09-27-2011, 11:44 AM
Ljubomir Ljubojevic
 
Default Advice on compiling multiple packages with mock

Can someone point me in the right direction? How do you compile multiple
packages continuously with mock?

I have some 50 srpms waiting to be recompiled via mock for both i386 and
x86_64 (again).

1. Is there a command I can give so all the packages are compiled in one go?

2. Do I have to sort them in proper order (dependencies) or can I just
command to mock to check and sort them?

Any help is appreciated, examples welcomed.

Thanks

--

Ljubomir Ljubojevic
(Love is in the Air)
PL Computers
Serbia, Europe

Google is the Mother, Google is the Father, and traceroute is your
trusty Spiderman...
StarOS, Mikrotik and CentOS/RHEL/Linux consultant
_______________________________________________
CentOS-devel mailing list
CentOS-devel@centos.org
http://lists.centos.org/mailman/listinfo/centos-devel
 
Old 09-27-2011, 11:52 AM
Patrick Lists
 
Default Advice on compiling multiple packages with mock

On 09/27/2011 01:44 PM, Ljubomir Ljubojevic wrote:
> Can someone point me in the right direction? How do you compile multiple
> packages continuously with mock?
>
> I have some 50 srpms waiting to be recompiled via mock for both i386 and
> x86_64 (again).
>
> 1. Is there a command I can give so all the packages are compiled in one go?
>
> 2. Do I have to sort them in proper order (dependencies) or can I just
> command to mock to check and sort them?
>
> Any help is appreciated, examples welcomed.

Smock (which uses mock) might help:

"Smock is a thin wrapper around mock to let you build up a whole set of
dependant RPMs against an external distro."

http://git.annexia.org/?p=fedora-mingw.git;a=tree;f=smock

Regards,
Patrick
_______________________________________________
CentOS-devel mailing list
CentOS-devel@centos.org
http://lists.centos.org/mailman/listinfo/centos-devel
 
Old 09-27-2011, 02:50 PM
Ljubomir Ljubojevic
 
Default Advice on compiling multiple packages with mock

Време: 09/27/2011 01:52 PM, Patrick Lists пише:
> On 09/27/2011 01:44 PM, Ljubomir Ljubojevic wrote:
>> Can someone point me in the right direction? How do you compile multiple
>> packages continuously with mock?
>>
>> I have some 50 srpms waiting to be recompiled via mock for both i386 and
>> x86_64 (again).
>>
>> 1. Is there a command I can give so all the packages are compiled in one go?
>>
>> 2. Do I have to sort them in proper order (dependencies) or can I just
>> command to mock to check and sort them?
>>
>> Any help is appreciated, examples welcomed.
>
> Smock (which uses mock) might help:
>
> "Smock is a thin wrapper around mock to let you build up a whole set of
> dependant RPMs against an external distro."
>
> http://git.annexia.org/?p=fedora-mingw.git;a=tree;f=smock
>

That is nice I will try it later today.

I have another (hopefully last) question. How do you build i686 packages
in mock (or for that matter in rpmbuild)? Do you just change it's name?
or use command option or change it in some macro?

--

Ljubomir Ljubojevic
(Love is in the Air)
PL Computers
Serbia, Europe

Google is the Mother, Google is the Father, and traceroute is your
trusty Spiderman...
StarOS, Mikrotik and CentOS/RHEL/Linux consultant
_______________________________________________
CentOS-devel mailing list
CentOS-devel@centos.org
http://lists.centos.org/mailman/listinfo/centos-devel
 
Old 09-27-2011, 03:31 PM
Johnny Hughes
 
Default Advice on compiling multiple packages with mock

On 09/27/2011 09:50 AM, Ljubomir Ljubojevic wrote:
> Време: 09/27/2011 01:52 PM, Patrick Lists пише:
>> On 09/27/2011 01:44 PM, Ljubomir Ljubojevic wrote:
>>> Can someone point me in the right direction? How do you compile multiple
>>> packages continuously with mock?
>>>
>>> I have some 50 srpms waiting to be recompiled via mock for both i386 and
>>> x86_64 (again).
>>>
>>> 1. Is there a command I can give so all the packages are compiled in one go?
>>>
>>> 2. Do I have to sort them in proper order (dependencies) or can I just
>>> command to mock to check and sort them?
>>>
>>> Any help is appreciated, examples welcomed.
>>

You need to somehow script the proper order and/or dependencies if you
are using mock. You would also need to script something that would add
the built packages into a repo if you need to build them "staged" (that
is, you build package A and it is needed for Package B later ... you
need some kind of script to move the .rpms from A into one of your repos
and run createrepo on it before you build package B).

There are things that do staging for mock ... one is plague, the other
is koji ... I am sure there are others.

>> Smock (which uses mock) might help:
>>
>> "Smock is a thin wrapper around mock to let you build up a whole set of
>> dependant RPMs against an external distro."
>>
>> http://git.annexia.org/?p=fedora-mingw.git;a=tree;f=smock
>>
>

I have not used this ...

> That is nice I will try it later today.
>
> I have another (hopefully last) question. How do you build i686 packages
> in mock (or for that matter in rpmbuild)? Do you just change it's name?
> or use command option or change it in some macro?
>

You need to use a command like this to build i686 for mock:

setarch i686 mock --statedir="{somepath}/state" --resultdir="{some path
to put built files}" -r "{some mock config file}" --arch="i686" {SRPM to
build}

Here is some example scripts that I use for building mock packages (this
is for the c5 mock we use for centos5 and is in c5 extras ... newer
versions for c6 will have different options):

http://people.centos.org/hughesjr/buildsystem/

_______________________________________________
CentOS-devel mailing list
CentOS-devel@centos.org
http://lists.centos.org/mailman/listinfo/centos-devel
 
Old 09-27-2011, 04:49 PM
R P Herrold
 
Default Advice on compiling multiple packages with mock

On Tue, 27 Sep 2011, Ljubomir Ljubojevic wrote:

> Can someone point me in the right direction? How do you compile multiple
> packages continuously with mock?
>
> I have some 50 srpms waiting to be recompiled via mock for both i386 and
> x86_64 (again).
>
> 1. Is there a command I can give so all the packages are compiled in one go?
>
> 2. Do I have to sort them in proper order (dependencies) or can I just
> command to mock to check and sort them?

A naiive build algorithm simply submits and checks the return

Build Requirements are readily queriable, and testable as to
whether they are met; as such one need not pay the time cost
of enqueuing a build that is pre-ordained to fail by doing
minimal checking first

Driving such a system off of versioned BR's require a bit more
logic than that of the last paragraph, and may not always be
'correct'

Mutual cross-dependant BR's require manual solution 'out of
band' of a submission engine, usually by 'short circuiting'
around one missing 'leg' of such a cross-dependency; this kind
of issue can also solved in .spec file conditionals logic,
keyed on '--defines', although this is not seen in the CentOS
project's upstream very often

>From my notes on the topic:

[herrold@centos-5 R2spec]$ cat aa_README

To break dependency loops


1. identify a pair (or more) of affected packages

2. note up top the circular:
# circular on: R-acme and R-beta -- parent seems to be:
R-acme

3. add to each package: 1) %check conditional header,
see: R-graph.spec

of the form:

# check by default -- to break circular BR's use:
# $ rpmbuild --define 'nocheck 1' [--nodeps] ...
%define docheck 0
%if "%{nocheck}" != "1"
%define docheck 1
%define nocheck 0
%endif

2) mark the Release, and

of the form:

Release: 1%{?dist}.%{docheck}%{nocheck}


3) %check stanza patches

of the form:

%if "%{docheck}" == "1"
%check
%{_bindir}/R CMD check %{packname}
%endif


4. build the likely parent with the following:

rpmbuild -ba --nodeps --define 'nocheck 1' acme.spec

5. Assuming the acme build succeeds, install it 'nodeps'
thus:

sudo rpm -Uvh --nodeps acme-result.01.whatever

6. Assuming the acme install succeeds, build the
subordinate in a usualfashion:

rpmbuild -ba beta.spec

7. Assuming the beta build succeeds, install it conventionally:

sudo rpm -Uvh beta-result.10.whatever

8. Assuming the beta install succeeds, build the parent
in a usualfashion:

rpmbuild -ba acme.spec

9. Assuming a clean build, remove the bootstrap 'acme'
binary thus:

sudo rpm -e --nodeps acme
- and -
sudo rpm -Uvh acme-result.10.whatever

10. files ending in ".01" are still needing solution and a
non-nodeps build; files ending: ".10" are done

rpm -qa | grep ^R | grep ".[01][01]$"

[herrold@centos-5 ~]$ rpm -qa | grep ^R | grep ".[01][01]$"
R-Hmisc-3.6_0-1orc.01
R-sm-2.2-1orc.10
R-igraph-0.5.2_2-1orc.10
R-rpanel-1.0-1orc.10
R-maps-2.1-1orc.10
R-graph-1.22.2-1orc.10
R-mapproj-1.1_7.2-1orc.10
[herrold@centos-5 ~]$ date
Tue Jun 2 12:27:57 EDT 2009
[herrold@centos-5 ~]$

and R-Hmisc is blocked by packaging problems in:
R-TeachingDemos and R-Design

----------------------
~/build/R/R2spec/aa_README
rev: 090608

============================

A sample .spec file demonstrating this is at:

http://gallery.herrold.com/R-Hmisc.spec

As I have mentioned before, I have privately packaged most of
the R finance, stats, and econometric packages. Not all are
of a License re-distributable form, sadly

- Russ herrold

--
end
==================================
.-- -... ---.. ... -.- -.--
Copyright (C) 2011 R P Herrold
herrold@owlriver.com
My words are not deathless prose,
but they are mine.
_______________________________________________
CentOS-devel mailing list
CentOS-devel@centos.org
http://lists.centos.org/mailman/listinfo/centos-devel
 
Old 09-27-2011, 05:43 PM
Ljubomir Ljubojevic
 
Default Advice on compiling multiple packages with mock

Време: 09/27/2011 05:31 PM, Johnny Hughes пише:
> You need to somehow script the proper order and/or dependencies if you
> are using mock. You would also need to script something that would add
> the built packages into a repo if you need to build them "staged" (that
> is, you build package A and it is needed for Package B later ... you
> need some kind of script to move the .rpms from A into one of your repos
> and run createrepo on it before you build package B).
>
> There are things that do staging for mock ... one is plague, the other
> is koji ... I am sure there are others.

Both those are complete systems, I was looking at little simpler
solution, but will keep them in mind. I am for now even battling with
mock and his applications and configuration.

>>
>> I have another (hopefully last) question. How do you build i686 packages
>> in mock (or for that matter in rpmbuild)? Do you just change it's name?
>> or use command option or change it in some macro?
>>
>
> You need to use a command like this to build i686 for mock:
>
> setarch i686 mock --statedir="{somepath}/state" --resultdir="{some path
> to put built files}" -r "{some mock config file}" --arch="i686" {SRPM to
> build}
>
> Here is some example scripts that I use for building mock packages (this
> is for the c5 mock we use for centos5 and is in c5 extras ... newer
> versions for c6 will have different options):
>
> http://people.centos.org/hughesjr/buildsystem/
>

Thanks, this will be very usefull.


--

Ljubomir Ljubojevic
(Love is in the Air)
PL Computers
Serbia, Europe

Google is the Mother, Google is the Father, and traceroute is your
trusty Spiderman...
StarOS, Mikrotik and CentOS/RHEL/Linux consultant
_______________________________________________
CentOS-devel mailing list
CentOS-devel@centos.org
http://lists.centos.org/mailman/listinfo/centos-devel
 
Old 09-27-2011, 07:48 PM
Ljubomir Ljubojevic
 
Default Advice on compiling multiple packages with mock

Време: 09/27/2011 06:49 PM, R P Herrold пише:
> On Tue, 27 Sep 2011, Ljubomir Ljubojevic wrote:
>
>> Can someone point me in the right direction? How do you compile multiple
>> packages continuously with mock?
>>
>> I have some 50 srpms waiting to be recompiled via mock for both i386 and
>> x86_64 (again).
>>
>> 1. Is there a command I can give so all the packages are compiled in one go?
>>
>> 2. Do I have to sort them in proper order (dependencies) or can I just
>> command to mock to check and sort them?
>
> A naiive build algorithm simply submits and checks the return
>
> Build Requirements are readily queriable, and testable as to
> whether they are met; as such one need not pay the time cost
> of enqueuing a build that is pre-ordained to fail by doing
> minimal checking first
>
> Driving such a system off of versioned BR's require a bit more
> logic than that of the last paragraph, and may not always be
> 'correct'
>
> Mutual cross-dependant BR's require manual solution 'out of
> band' of a submission engine, usually by 'short circuiting'
> around one missing 'leg' of such a cross-dependency; this kind
> of issue can also solved in .spec file conditionals logic,
> keyed on '--defines', although this is not seen in the CentOS
> project's upstream very often
>
>> From my notes on the topic:
>

<snip>

Thanks, I will look at those.

For manual rpmbuild, , I created following script (needs root or sudo
access for yum) for automatic installation of dependency rpms:

#!/bin/bash

# rpm-depinstaller
# Author: Ljubomir Ljubojevic <office a plnet.rs>
# 31.01.2010



ls -C -1 -R -p $1 > 1_prelist-in.txt
cat 1_prelist-in.txt | grep "src.rpm" | grep -v "/" > 2_list-in.txt

#exit
# list=""
# list=`ls *.rpm -R`
list=`cat 2_list-in.txt`
#list=$@
echo Lista je $list
for i in $list; do
rpmbuild --rebuild --nobuild -ba $i >& 3_text-in.txt
cat 3_text-in.txt | grep needed >> 4_for_install-in.txt
done

cat 4_for_install-in.txt | sort > 5_sorted_install_list.txt
cat 4_for_install-in.txt | sort | cut -d " " -f1 | awk '{print $4 " "
$1}' | sort | uniq > 6_sortedlist-in.txt
cat 6_sortedlist-in.txt | awk '/^[0-9]/ { print ""; printf $0} !/^[0-9]/
{printf $0} END {print ""}' > 7_yumlist-in.txt
#rm text.txt

yum install $(cat 7_yumlist-in.txt)

I deliberately avoided deleting log files, so I can debug or harvest data.

--

Ljubomir Ljubojevic
(Love is in the Air)
PL Computers
Serbia, Europe

Google is the Mother, Google is the Father, and traceroute is your
trusty Spiderman...
StarOS, Mikrotik and CentOS/RHEL/Linux consultant
_______________________________________________
CentOS-devel mailing list
CentOS-devel@centos.org
http://lists.centos.org/mailman/listinfo/centos-devel
 

Thread Tools




All times are GMT. The time now is 10:08 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org