You are not logged in.

#1 2013-02-13 16:34:26

dlin
Member
From: Taipei,Taiwan
Registered: 2005-09-21
Posts: 265

How to build packages which contains dependency loop

I'm building packages for sh4 CPU.
And I found these packages contains make dependency loop.

gobject-introspection
gdk-pixbuf2
librsvg
cairo


Any suggestion to solve this?  Which one is the first I could build?

Last edited by dlin (2013-02-13 17:21:20)


Running 4 ArchLinux including sh4twbox,server,notebook,desktop. my AUR packages

Offline

#2 2013-02-13 17:59:13

tdy
Member
From: Sacremende
Registered: 2008-12-14
Posts: 440

Re: How to build packages which contains dependency loop

Just for reference, this is the current [make]dep graph according to the way the PKGBUILDs are currently written:

           cairo ----+
             |       |
          librsvg    |
         /       \   |
gdk-pixbuf2 --- gobj-intro

Based purely on brief chroot trial+error (e.g. gobject-introspection broke without cairo, cairo worked without librsvg), you might try cairo (after removing librsvg from makedeps) -> gobject-introspection -> gdk-pixbuf2 -> librsvg. But of course, I didn't do thorough testing or any research about the truly needed components/features.

Also, there might be native ways to handle these kinds of build cycles that I'm not familiar with.

Last edited by tdy (2013-02-13 17:59:51)

Offline

#3 2013-02-13 23:30:01

dlin
Member
From: Taipei,Taiwan
Registered: 2005-09-21
Posts: 265

Re: How to build packages which contains dependency loop

Could I suggestion developer team to setup some 'xxx-stageN' PKGBUILD for build these packages?

eg.
When we want to build such loops.
We should build xxx-stage1 then yyy-stage1 then xxx then yyy. And such dependency should wrote on PKGBUILD of all these 4 PKGBUILD.


Running 4 ArchLinux including sh4twbox,server,notebook,desktop. my AUR packages

Offline

#4 2013-02-13 23:54:39

tomk
Forum Fellow
From: Ireland
Registered: 2004-07-21
Posts: 9,839

Re: How to build packages which contains dependency loop

Of course, you can suggest anything. Write the PKGBUILDs youself the way you think it should be done, and submit them in a feature request in the bugtracker.

Offline

#5 2013-02-14 12:21:47

dlin
Member
From: Taipei,Taiwan
Registered: 2005-09-21
Posts: 265

Re: How to build packages which contains dependency loop

tomk wrote:

Of course, you can suggest anything. Write the PKGBUILDs youself the way you think it should be done, and submit them in a feature request in the bugtracker.

So, there is no standard way to build these packages from base + base-devel?
I'm wonder how to make sure every package work well? Just by community's bug response?
I assumed Arch Linux exist some auto build all package's system. 
eg. If X depends on Y1 and Y1 depends on Z1, Z2, When Z1 updated, Y1 and X will automatically rebuild.


Running 4 ArchLinux including sh4twbox,server,notebook,desktop. my AUR packages

Offline

#6 2013-02-14 14:00:20

ngoonee
Forum Fellow
From: Between Thailand and Singapore
Registered: 2009-03-17
Posts: 7,354

Re: How to build packages which contains dependency loop

dlin wrote:
tomk wrote:

Of course, you can suggest anything. Write the PKGBUILDs youself the way you think it should be done, and submit them in a feature request in the bugtracker.

So, there is no standard way to build these packages from base + base-devel?
I'm wonder how to make sure every package work well? Just by community's bug response?
I assumed Arch Linux exist some auto build all package's system. 
eg. If X depends on Y1 and Y1 depends on Z1, Z2, When Z1 updated, Y1 and X will automatically rebuild.

Nope that doesn't happen. Most devs do use chroots though.


Allan-Volunteer on the (topic being discussed) mailn lists. You never get the people who matters attention on the forums.
jasonwryan-Installing Arch is a measure of your literacy. Maintaining Arch is a measure of your diligence. Contributing to Arch is a measure of your competence.
Griemak-Bleeding edge, not bleeding flat. Edge denotes falls will occur from time to time. Bring your own parachute.

Offline

#7 2013-02-15 09:49:02

dlin
Member
From: Taipei,Taiwan
Registered: 2005-09-21
Posts: 265

Re: How to build packages which contains dependency loop

I've another idea about this problem.  We could put other PKGBUILD file on the same directory.
Like
gobject-introspection/PKGBUILD     # for normal build script with all arch linux binary package support
gobject-introspection/PKGBUILD.1  # disable the dependency of cairo & --disable-doctool

For those who want to build without cairo dependency, just makepkg -p PKGBUILD.1

Through this step we could build all packages in a sequence automatically.


Running 4 ArchLinux including sh4twbox,server,notebook,desktop. my AUR packages

Offline

#8 2013-02-15 10:51:23

Allan
Pacman
From: Brisbane, AU
Registered: 2007-06-09
Posts: 11,365
Website

Re: How to build packages which contains dependency loop

Not going to happen - it is pointless after an initial bootstrap.

In this case, I would bet that librsvg does not need its dependencies on the initial build.

Offline

#9 2013-02-15 12:55:04

dlin
Member
From: Taipei,Taiwan
Registered: 2005-09-21
Posts: 265

Re: How to build packages which contains dependency loop

Allan wrote:

Not going to happen - it is pointless after an initial bootstrap.

In this case, I would bet that librsvg does not need its dependencies on the initial build.

Well, I assumed bootstrap means build 'base' packages.
Or, even more 'base-devel'.

Other packages should have a reasonable build method based on 'base-devel+base'.
And it should not contains cycle loop.


Running 4 ArchLinux including sh4twbox,server,notebook,desktop. my AUR packages

Offline

#10 2013-02-15 14:48:21

Allan
Pacman
From: Brisbane, AU
Registered: 2007-06-09
Posts: 11,365
Website

Re: How to build packages which contains dependency loop

Wrong.   And I gave you exactly how to resolve it in my above post.

Offline

#11 2013-02-15 16:50:08

tdy
Member
From: Sacremende
Registered: 2008-12-14
Posts: 440

Re: How to build packages which contains dependency loop

FS#33874 wrote:

if PKGBUILD developers keep their build experience on such files will simplified try-and-error process.

I agree with this, but maybe this kind of info about ground-up building can go in a wiki.

I mentioned this dep cycle topic in #archlinux-arm:

2013-02-14 11:13:18     @WarheadsSE     tdy, they will want to drop from deps, then rebuild w/ them back in
2013-02-14 11:14:03     tdy             yea, that seems to be the easiest way.. e.g. build cairo w/o svg, build the chain, then rebuild cairo with svg
2013-02-14 11:14:12     @WarheadsSE     yup
2013-02-14 11:14:31     @WarheadsSE     thats a very simplified method of how we fix spaghetti monsters

Maybe you can check with them to see if they've kept some documentation about build orders or any tips in general.

Last edited by tdy (2013-02-15 16:54:36)

Offline

#12 2013-02-17 06:10:35

dlin
Member
From: Taipei,Taiwan
Registered: 2005-09-21
Posts: 265

Re: How to build packages which contains dependency loop

I decide to use cairo which provide by other linux distribution, then try to build pango.
I've installed following packages which provided by STLinux.
stlinux23-sh4-cairo 1.8.10-2.sh4
stlinux23-sh4-cairo-dev 1.8.10-2.sh4
stlinux23-sh4-pixman 0.18.2-2.sh4
stlinux23-sh4-pixman-dev 0.18.2-2.sh4

When I build pixman by Arch's PKGBUILD, I uninstall stlinux23-sh4-pixman stlinux23-sh4-pixman-dev.

Then I restart build pango, but it shows
/usr/bin/grep: /usr/lib/libpixman-1.la: No such file or directory
/bin/sed: can't read /usr/lib/libpixman-1.la: No such file or directory

I checked the pixman package there is a option '!libtool'.  So, how could I fixed this problem and continue to build?


Running 4 ArchLinux including sh4twbox,server,notebook,desktop. my AUR packages

Offline

Board footer

Powered by FluxBB