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 > ArchLinux > ArchLinux Pacman Development

 
 
LinkBack Thread Tools
 
Old 04-21-2012, 11:26 AM
Allan McRae
 
Default repo-add: Add SOURCE entry

When repo-add is passed a source package, add it to the desc file.

Signed-off-by: Allan McRae <allan@archlinux.org>
---

This patch is crap... but I want to know if an idea like this would even
be considered before I make it suck less and implement the pacman side.

The idea is "pacman -B/--build <pkg>" would download the source package file
(if provided in the repo) and build the package. Of course this could be
extended (e.g. -w to only download, -e allows editing the PKGBUILD prior to
building, -u builds an entire update, -d builds a package but not its deps,
--nopatch disables patching the build files with the patch found in
/etc/pacman.d/build/$pkgbase).

Is this the mindless ramblings of a lunatic, or something that would be of
interest?

scripts/repo-add.sh.in | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index 5159ea2..80e512b 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -187,6 +187,40 @@ db_remove_delta() {
return 1
} # end db_remove_delta

+# write a source entry
+# arg1 - path to source package file
+db_write_source() {
+ sourcefile="$1"
+
+ pkgbase=${1%-*-*}
+
+ local line
+ while read -r line; do
+ # TODO - suck less (leading whitespace, variable usage, split packages...)
+ [[ ${line} = pkgname=* ]] && declare "$line"
+ [[ ${line} = pkgver=* ]] && declare "$line"
+ [[ ${line} = pkgrel=* ]] && declare "$line"
+ done< <(bsdtar -xOqf "$sourcefile" "$pkgbase/@BUILDSCRIPT@")
+
+ # ensure needed variables were found
+ if [[ -z $pkgname || -z $pkgver || -z $pkgrel ]]; then
+ error "$(gettext "Invalid source package file '%s'.")" "$sourcefile"
+ return 1
+ fi
+
+ if [[ ! -f $tmpdir/tree/$pkgname-$pkgver-$pkgrel/desc ]]; then
+ error "$(gettext "No database entry for package '%s'.")" "$pkgname-$pkgver-$pkgrel"
+ return 1
+ fi
+
+ format_entry "SOURCE" "${1##*/}" >> $tmpdir/tree/$pkgname-$pkgver-$pkgrel/desc
+
+ # TODO - will want some security here... checksum/signature
+
+ return 0
+}
+
+
check_gpg() {
if ! type -p gpg >/dev/null; then
error "$(gettext "Cannot find the gpg binary! Is GnuPG installed?")"
@@ -497,6 +531,16 @@ add() {
fi
fi

+ if [[ $1 == *.src.tar?(.*) ]]; then
+ sourcefile=$1
+ msg "$(gettext "Adding source '%s'")" "$sourcefile"
+ if db_write_source "$sourcefile"; then
+ return 0
+ else
+ return 1
+ fi
+ fi
+
pkgfile=$1
if ! bsdtar -tqf "$pkgfile" .PKGINFO >/dev/null 2>&1; then
error "$(gettext "'%s' is not a package file, skipping")" "$pkgfile"
--
1.7.10
 

Thread Tools




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

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