X-Original-To: alpine-aports@mail.alpinelinux.org Delivered-To: alpine-aports@mail.alpinelinux.org Received: from mail.alpinelinux.org (dallas-a1.alpinelinux.org [127.0.0.1]) by mail.alpinelinux.org (Postfix) with ESMTP id 4B050DCB085; Fri, 29 May 2015 08:41:24 +0000 (UTC) Received: from ncopa-desktop.alpinelinux.org (unknown [79.160.13.133]) (using TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: n@tanael.org) by mail.alpinelinux.org (Postfix) with ESMTPSA id A327FDC0D45; Fri, 29 May 2015 08:41:23 +0000 (UTC) Date: Fri, 29 May 2015 10:41:19 +0200 From: Natanael Copa To: Andrew Hills Cc: alpine-aports@lists.alpinelinux.org Subject: new APKBUILD format? (WAS: Re: [alpine-aports] [PATCH 2/2] main/git: add git-gui and gitk subpackages) Message-ID: <20150529104119.5e7fd668@ncopa-desktop.alpinelinux.org> In-Reply-To: <1432922663-15777-2-git-send-email-ahills@ednos.net> References: <1432922663-15777-1-git-send-email-ahills@ednos.net> <1432922663-15777-2-git-send-email-ahills@ednos.net> X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.25; x86_64-alpine-linux-musl) X-Mailinglist: alpine-aports Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV using ClamSMTP Thank you for this patch. This patch uncovers a problem in abuild/APKBUILD that I'd like to solve. The problem is that we need to tell abuild (and aports building tools) the dependencies in global scope. I'll explain below. On Fri, 29 May 2015 14:04:23 -0400 Andrew Hills wrote: > @@ -24,6 +24,8 @@ subpackages="$pkgname-doc > $pkgname-subtree > $pkgname-subtree-doc:subtree_doc > $pkgname-perl:_git_perl > + $pkgname-gui > + $pkgname-gitk > " > > makedepends="zlib-dev openssl-dev curl-dev expat-dev perl-dev python-dev We have 2 subpackages, git-gui and git-gitk. ... > @@ -189,6 +190,31 @@ subtree_doc() { > make install-man prefix=/usr DESTDIR="$subpkgdir" > } > > +gui() { > + depends="git=$pkgver-r$pkgrel tcl tk" git-gui needs tcl and tk to run. ... > +gitk() { > + depends="git=$pkgver-r$pkgrel tcl tk" so does git-gitk. The problem here is that when building the repository from scratch, there is no way for the build scripts to know that tcl and tk needs to be built before git. The tcl and tk must be built before git because if other package would have makedepends="git-gui" the would the build fail if tcl and tk is not built at that point. The problem is not the patch itself but the problem is in APKBUILD. We need a way to say that subpackage git-gui has depends of tcl and tk. Something like this in global scope would have been nice: git-gui.depends="git=$pkgver-r$pkgdr tcl tk" git-gui.pkgdesc="GUI interface for git" but that is not possible in shell. (it would be possible to do like git_gui_depends="..." and then do tricks with eval, but i would very much want avoid that) For this specific case we can work around it with: makedepends="tcl tk ..." To fix this properly, we would need replace APKBUILD with another format (embedded yaml? lua? .spec?), where the meta data (pkgname, depends, etc) was not shell. If we want stick to shell then we could also do some kind of hack: subdepends=" $pkgname-gui:tcl $pkgname-gui:tk " This problem alone does not justify replacing APKBUILD, but there are other issues too with the APKBUILD format that i'd like to fix. I am open to ideas. -nc --- Unsubscribe: alpine-aports+unsubscribe@lists.alpinelinux.org Help: alpine-aports+help@lists.alpinelinux.org ---