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-12-2010, 05:47 PM
Florian Pritz
 
Default makepkg: add soprovides support

Support-by: brain0 <thomas@archlinux.org>
Support-by: GNUcaustic <Christoph.Schied@uni-ulm.de>

Signed-off-by: Florian Pritz <bluewind@xssn.at>
---
scripts/makepkg.sh.in | 34 +++++++++++++++++++++++++++++++++-
1 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 131519f..584c427 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -869,6 +869,28 @@ tidy_install() {
fi
}

+find_soprovides() {
+ local soprovides
+ find $pkgdir -type f -name *.so* | while read filename
+ do
+ if readelf -h "$filename" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then
+ soarch="$(objdump -a "$filename" 2>/dev/null |
+ sed -rn 's/.* file format elf[0-9]+-(.*)$/1/p' | tr - _)_$(uname -s)"
+ sofile=$(readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Library soname: [(.*)].*/1/p')
+ [ -z "$sofile" ] && sofile="$(basename "$filename")"
+
+ soname=$(sed -rn 's/(.*).so.*/1.so/p' <<< "$sofile")
+ soversion=$(sed -rn 's/.*.so.(.*)/1/p' <<< "$sofile")
+ if in_array "${soname}" ${provides[@]}; then
+ if ! in_array "${soname}=${soversion}-${soarch}" ${soprovides[@]}; then
+ echo "${soname}=${soversion}-${soarch}"
+ soprovides=(${soprovides[@]} "${soname}=${soversion}-${soarch}")
+ fi
+ fi
+ fi
+ done
+}
+
write_pkginfo() {
local builddate=$(date -u "+%s")
if [[ -n $PACKAGER ]]; then
@@ -898,6 +920,9 @@ write_pkginfo() {
echo "force = true" >> .PKGINFO
fi

+ soprovides=$(find_soprovides)
+ provides=("${provides[@]}" ${soprovides})
+
local it
for it in "${license[@]}"; do
echo "license = $it" >>.PKGINFO
@@ -918,7 +943,14 @@ write_pkginfo() {
echo "conflict = $it" >>.PKGINFO
done
for it in "${provides[@]}"; do
- echo "provides = $it" >>.PKGINFO
+ if grep -q ".*.so$" <<< "$it"; then
+ if ! grep -q "(^|s)${it}=.*" <<< $soprovides; then
+ error "$(gettext "Can't find library listed in $provides: %s")" "$it"
+ return 1
+ fi
+ else
+ echo "provides = $it" >>.PKGINFO
+ fi
done
for it in "${backup[@]}"; do
echo "backup = $it" >>.PKGINFO
--
1.7.0.4
 
Old 10-01-2010, 03:30 PM
Florian Pritz
 
Default makepkg: add soprovides support

Support-by: brain0 <thomas@archlinux.org>
Support-by: GNUcaustic <Christoph.Schied@uni-ulm.de>

Signed-off-by: Florian Pritz <bluewind@xssn.at>
---
scripts/makepkg.sh.in | 38 +++++++++++++++++++++++++++++++++++++-
1 files changed, 37 insertions(+), 1 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index de24338..f43d87d 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -903,6 +903,28 @@ tidy_install() {
fi
}

+find_soprovides() {
+ local soprovides
+ find $pkgdir -type f -name *.so* | while read filename
+ do
+ if readelf -h "$filename" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then
+ soarch="$(objdump -a "$filename" 2>/dev/null |
+ sed -rn 's/.* file format elf[0-9]+-(.*)$/1/p' | tr - _)_$(uname -s)"
+ sofile=$(readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Library soname: [(.*)].*/1/p')
+ [ -z "$sofile" ] && sofile="$(basename "$filename")"
+
+ soname=$(sed -rn 's/(.*).so.*/1.so/p' <<< "$sofile")
+ soversion=$(sed -rn 's/.*.so.(.*)/1/p' <<< "$sofile")
+ if in_array "${soname}" ${provides[@]}; then
+ if ! in_array "${soname}=${soversion}-${soarch}" ${soprovides[@]}; then
+ echo "${soname}=${soversion}-${soarch}"
+ soprovides=(${soprovides[@]} "${soname}=${soversion}-${soarch}")
+ fi
+ fi
+ fi
+ done
+}
+
write_pkginfo() {
local builddate=$(date -u "+%s")
if [[ -n $PACKAGER ]]; then
@@ -938,10 +960,24 @@ write_pkginfo() {
[[ $depends ]] && printf "depend = %s
" "${depends[@]}"
[[ $optdepends ]] && printf "optdepend = %s
" "${optdepends[@]}"
[[ $conflicts ]] && printf "conflict = %s
" "${conflicts[@]}"
- [[ $provides ]] && printf "provides = %s
" "${provides[@]}"
[[ $backup ]] && printf "backup = %s
" "${backup[@]}"

local it
+
+ soprovides=$(find_soprovides)
+ provides=("${provides[@]}" ${soprovides})
+
+ for it in "${provides[@]}"; do
+ if grep -q ".*.so$" <<< "$it"; then
+ if ! grep -q "(^|s)${it}=.*" <<< $soprovides; then
+ error "$(gettext "Can't find library listed in $provides: %s")" "$it"
+ return 1
+ fi
+ else
+ echo "provides = $it"
+ fi
+ done
+
for it in "${packaging_options[@]}"; do
local ret="$(check_option $it)"
if [[ $ret != "?" ]]; then
--
1.7.3.1
 
Old 01-19-2011, 04:13 PM
Florian Pritz
 
Default makepkg: add soprovides support

Support-by: brain0 <thomas@archlinux.org>
Support-by: GNUcaustic <Christoph.Schied@uni-ulm.de>

Signed-off-by: Florian Pritz <bluewind@xssn.at>
---
scripts/makepkg.sh.in | 38 +++++++++++++++++++++++++++++++++++++-
1 files changed, 37 insertions(+), 1 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 6ebfac0..cf7dbb9 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -917,6 +917,28 @@ tidy_install() {
fi
}

+find_soprovides() {
+ local soprovides
+ find $pkgdir -type f -name *.so* | while read filename
+ do
+ if readelf -h "$filename" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then
+ soarch="$(objdump -a "$filename" 2>/dev/null |
+ sed -rn 's/.* file format elf[0-9]+-(.*)$/1/p' | tr - _)_$(uname -s)"
+ sofile=$(readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Library soname: [(.*)].*/1/p')
+ [ -z "$sofile" ] && sofile="$(basename "$filename")"
+
+ soname=$(sed -rn 's/(.*).so.*/1.so/p' <<< "$sofile")
+ soversion=$(sed -rn 's/.*.so.(.*)/1/p' <<< "$sofile")
+ if in_array "${soname}" ${provides[@]}; then
+ if ! in_array "${soname}=${soversion}-${soarch}" ${soprovides[@]}; then
+ echo "${soname}=${soversion}-${soarch}"
+ soprovides=(${soprovides[@]} "${soname}=${soversion}-${soarch}")
+ fi
+ fi
+ fi
+ done
+}
+
write_pkginfo() {
local builddate=$(date -u "+%s")
if [[ -n $PACKAGER ]]; then
@@ -950,10 +972,24 @@ write_pkginfo() {
[[ $depends ]] && printf "depend = %s
" "${depends[@]}"
[[ $optdepends ]] && printf "optdepend = %s
" "${optdepends[@]}"
[[ $conflicts ]] && printf "conflict = %s
" "${conflicts[@]}"
- [[ $provides ]] && printf "provides = %s
" "${provides[@]}"
[[ $backup ]] && printf "backup = %s
" "${backup[@]}"

local it
+
+ soprovides=$(find_soprovides)
+ provides=("${provides[@]}" ${soprovides})
+
+ for it in "${provides[@]}"; do
+ if grep -q ".*.so$" <<< "$it"; then
+ if ! grep -q "(^|s)${it}=.*" <<< $soprovides; then
+ error "$(gettext "Can't find library listed in $provides: %s")" "$it"
+ return 1
+ fi
+ else
+ echo "provides = $it"
+ fi
+ done
+
for it in "${packaging_options[@]}"; do
local ret="$(check_option $it)"
if [[ $ret != "?" ]]; then
--
1.7.3.5
 
Old 01-19-2011, 05:54 PM
Dan McGee
 
Default makepkg: add soprovides support

On Wed, Jan 19, 2011 at 11:13 AM, Florian Pritz <bluewind@xssn.at> wrote:

<Descriptive commit message usually goes here>

What does this do? Why? What is the generated format? This stuff needs
to be here in permanent history so someone patching bugs 2 years from
now can figure out the what and why.

> Support-by: brain0 <thomas@archlinux.org>
> Support-by: GNUcaustic <Christoph.Schied@uni-ulm.de>
Since the real names of these guys are so obvious, I'd prefer those
are there rather than nicks.

>
> Signed-off-by: Florian Pritz <bluewind@xssn.at>
> ---
> *scripts/makepkg.sh.in | * 38 +++++++++++++++++++++++++++++++++++++-
> *1 files changed, 37 insertions(+), 1 deletions(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 6ebfac0..cf7dbb9 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -917,6 +917,28 @@ tidy_install() {
> * * * *fi
> *}
>
> +find_soprovides() {
> + * * * local soprovides
> + * * * find $pkgdir -type f -name *.so* | while read filename
$pkgdir needs quotes, just like everywhere else it is used.

> + * * * do
> + * *if readelf -h "$filename" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then
> + * * * * * * * * * * * soarch="$(objdump -a "$filename" 2>/dev/null |
> + * * * * * * * * * * * * * * * sed -rn 's/.* file format elf[0-9]+-(.*)$/1/p' | tr - _)_$(uname -s)"
> + * * *sofile=$(readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Library soname: [(.*)].*/1/p')
> + * * * * * * * * * * * [ -z "$sofile" ] && sofile="$(basename "$filename")"
> +
> + * * * * * * * * * * * soname=$(sed -rn 's/(.*).so.*/1.so/p' <<< "$sofile")
> + * * * * * * * * * * * soversion=$(sed -rn 's/.*.so.(.*)/1/p' <<< "$sofile")
Please give examples in a resubmit of what is coming out of here- this
is not super easy to follow. I'm also a bit concerned about:
* the uses of sed (is -r portable? We use -n already, but not -r)
* the inconsistencies between `sed -rn` and `sed -nr`
* running this in any non-C, non-en locale
* introducing dependencies on readelf and objdump. At least elsewhere
in the strip code, we use `file` to locate shared libraries. And you
can get the SONAME bit out of objdump -p, which would at least limit
this to one tool.

> + * * * * * * * * * * * if in_array "${soname}" ${provides[@]}; then
> + * * * * * * * * * * * * * * * if ! in_array "${soname}=${soversion}-${soarch}" ${soprovides[@]}; then
> + * * * * * * * * * * * * * * * * * * * echo "${soname}=${soversion}-${soarch}"
> + * * * * * * * * * * * * * * * * * * * soprovides=(${soprovides[@]} "${soname}=${soversion}-${soarch}")
What's the reasoning behind the ${soarch} append? I suppose it might
help with multilib, but something about this just doesn't seem right.
It is most definitely not a valid pkgver (dash) or pkgrel (not a
number).

> + * * * * * * * * * * * * * * * fi
> + * * * * * * * * * * * fi
> + * *fi
> + * * * done
> +}
> +
> *write_pkginfo() {
> * * * *local builddate=$(date -u "+%s")
> * * * *if [[ -n $PACKAGER ]]; then
> @@ -950,10 +972,24 @@ write_pkginfo() {
> * * * *[[ $depends ]] * *&& printf "depend = %s
" * *"${depends[@]}"
> * * * *[[ $optdepends ]] && printf "optdepend = %s
" "${optdepends[@]}"
> * * * *[[ $conflicts ]] *&& printf "conflict = %s
" *"${conflicts[@]}"
> - * * * [[ $provides ]] * && printf "provides = %s
" *"${provides[@]}"
> * * * *[[ $backup ]] * * && printf "backup = %s
" * *"${backup[@]}"
>
> * * * *local it
> +
> + * * * soprovides=$(find_soprovides)
> + * * * provides=("${provides[@]}" ${soprovides})
> +
> + * * * for it in "${provides[@]}"; do
> + * * * * * * * if grep -q ".*.so$" <<< "$it"; then
> + * * * * * * * * * * * if ! grep -q "(^|s)${it}=.*" <<< $soprovides; then
> + * * * * * * * * * * * * * * * error "$(gettext "Can't find library listed in $provides: %s")" "$it"
Do we really need to add 18 more forks to makepkg and use grep here?
Bash has regexes, so it would prevent the cryptic use of <<<.
I don't even know why we are doing this check, can you elaborate?
> + * * * * * * * * * * * * * * * return 1
> + * * * * * * * * * * * fi
> + * * * * * * * else
> + * * * * * * * * * * * echo "provides = $it"
> + * * * * * * * fi
> + * * * done
> +
> * * * *for it in "${packaging_options[@]}"; do
> * * * * * * * *local ret="$(check_option $it)"
> * * * * * * * *if [[ $ret != "?" ]]; then
> --
> 1.7.3.5
 
Old 01-21-2011, 01:25 PM
Florian Pritz
 
Default makepkg: add soprovides support

On 19.01.2011 19:54, Dan McGee wrote:
> On Wed, Jan 19, 2011 at 11:13 AM, Florian Pritz <bluewind@xssn.at> wrote:
>
> <Descriptive commit message usually goes here>
>
> What does this do? Why? What is the generated format? This stuff needs
> to be here in permanent history so someone patching bugs 2 years from
> now can figure out the what and why.
>
>> Support-by: brain0 <thomas@archlinux.org>
>> Support-by: GNUcaustic <Christoph.Schied@uni-ulm.de>
> Since the real names of these guys are so obvious, I'd prefer those
> are there rather than nicks.

Fixed locally.

>> +find_soprovides() {
>> + local soprovides
>> + find $pkgdir -type f -name *.so* | while read filename
> $pkgdir needs quotes, just like everywhere else it is used.
>
>> + do
>> + if readelf -h "$filename" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then
>> + soarch="$(objdump -a "$filename" 2>/dev/null |
>> + sed -rn 's/.* file format elf[0-9]+-(.*)$/1/p' | tr - _)_$(uname -s)"
>> + sofile=$(readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Library soname: [(.*)].*/1/p')
>> + [ -z "$sofile" ] && sofile="$(basename "$filename")"
>> +
>> + soname=$(sed -rn 's/(.*).so.*/1.so/p' <<< "$sofile")
>> + soversion=$(sed -rn 's/.*.so.(.*)/1/p' <<< "$sofile")
> Please give examples in a resubmit of what is coming out of here- this
> is not super easy to follow.

Do you want comments in the code, one big comment above the function or
just an explanation in the commit message (will do that one anyway)?

> I'm also a bit concerned about:
> * the uses of sed (is -r portable? We use -n already, but not -r)
> * the inconsistencies between `sed -rn` and `sed -nr`

I'll just remove the -r then

> * running this in any non-C, non-en locale

Fixed locally.

> * introducing dependencies on readelf and objdump. At least elsewhere
> in the strip code, we use `file` to locate shared libraries. And you
> can get the SONAME bit out of objdump -p, which would at least limit
> this to one tool.

readelf and objdump are both in binutils, but I've noticed that objdump
doesn't support the file format generated by tcc although readelf does
and it's a valid ELF file afaict.

eu-objdump (elfutils) can't output that much, but it understands tcc's
format and outputs pretty nice architecture information. Sadly I have no
idea if that's portable.

Now I'm using readelf (binutils) and eu-objdump (elfutils). I think it's
fine since both are in core and you only need them for makepkg anyway.

>
>> + if in_array "${soname}" ${provides[@]}; then
>> + if ! in_array "${soname}=${soversion}-${soarch}" ${soprovides[@]}; then
>> + echo "${soname}=${soversion}-${soarch}"
>> + soprovides=(${soprovides[@]} "${soname}=${soversion}-${soarch}")
> What's the reasoning behind the ${soarch} append? I suppose it might
> help with multilib, but something about this just doesn't seem right.

Yeah without that sodeps become useless for packages like wine (32+64bit
in multilib)

> It is most definitely not a valid pkgver (dash) or pkgrel (not a
> number).

The dash here just seperates pkgver from pkgrel.

Did a quick test with libc.so=6-x86_64_Linux as dependency and a package
called libc.so with that pkgver and pkgrel and it worked just fine.

>
>> + fi
>> + fi
>> + fi
>> + done
>> +}
>> +
>> write_pkginfo() {
>> local builddate=$(date -u "+%s")
>> if [[ -n $PACKAGER ]]; then
>> @@ -950,10 +972,24 @@ write_pkginfo() {
>> [[ $depends ]] && printf "depend = %s
" "${depends[@]}"
>> [[ $optdepends ]] && printf "optdepend = %s
" "${optdepends[@]}"
>> [[ $conflicts ]] && printf "conflict = %s
" "${conflicts[@]}"
>> - [[ $provides ]] && printf "provides = %s
" "${provides[@]}"
>> [[ $backup ]] && printf "backup = %s
" "${backup[@]}"
>>
>> local it
>> +
>> + soprovides=$(find_soprovides)
>> + provides=("${provides[@]}" ${soprovides})
>> +
>> + for it in "${provides[@]}"; do
>> + if grep -q ".*.so$" <<< "$it"; then
>> + if ! grep -q "(^|s)${it}=.*" <<< $soprovides; then
>> + error "$(gettext "Can't find library listed in $provides: %s")" "$it"
> Do we really need to add 18 more forks to makepkg and use grep here?
> Bash has regexes, so it would prevent the cryptic use of <<<.

Fixed locally.

> I don't even know why we are doing this check, can you elaborate?

First I filter the entries from the PKGBUILD where you use something
like this:
provides=(libc.so)

Then I check if any of those removed entries is missing in the sodeps
array. In that case you have a sodep in your PKGBUILD that is not needed
and you should remove it.

>> + return 1
>> + fi
>> + else
>> + echo "provides = $it"
>> + fi
>> + done
>> +
>> for it in "${packaging_options[@]}"; do
>> local ret="$(check_option $it)"
>> if [[ $ret != "?" ]]; then
>> --
>> 1.7.3.5
>


--
Florian Pritz -- {flo,bluewind}@server-speed.net
 
Old 01-21-2011, 01:49 PM
Dan McGee
 
Default makepkg: add soprovides support

On Fri, Jan 21, 2011 at 8:25 AM, Florian Pritz
<bluewind@server-speed.net> wrote:
> On 19.01.2011 19:54, Dan McGee wrote:
>> It is most definitely not a valid pkgver (dash) or pkgrel (not a
>> number).
>
> The dash here just seperates pkgver from pkgrel.
>
> Did a quick test with libc.so=6-x86_64_Linux as dependency and a package
> called libc.so with that pkgver and pkgrel and it worked just fine.

"Works" was not the standard to meet here. The standard is what the
prevailing values tend to be (which is integers or decimals), what we
may enforce in the future.

Perhaps more importantly, this is still wrong (I can't run your i686
binary on my i386 system as it seems to indicate) and if we do keep
it, it has *nothing* to do with a version in the normal ordering
sense- it would belong as part of the provision name.

-Dan
 
Old 01-21-2011, 01:49 PM
Allan McRae
 
Default makepkg: add soprovides support

On 22/01/11 00:25, Florian Pritz wrote:

On 19.01.2011 19:54, Dan McGee wrote:

<snip>



* introducing dependencies on readelf and objdump. At least elsewhere
in the strip code, we use `file` to locate shared libraries. And you
can get the SONAME bit out of objdump -p, which would at least limit
this to one tool.


readelf and objdump are both in binutils, but I've noticed that objdump
doesn't support the file format generated by tcc although readelf does
and it's a valid ELF file afaict.

eu-objdump (elfutils) can't output that much, but it understands tcc's
format and outputs pretty nice architecture information. Sadly I have no
idea if that's portable.

Now I'm using readelf (binutils) and eu-objdump (elfutils). I think it's
fine since both are in core and you only need them for makepkg anyway.


We have pacman/makepkg users on Linux, OSX, BSD, Hurd, Cygwin...
Whatever is used here needs to be portable to all those. I do not
believe elfutils is particularly portable...


Allan
 
Old 01-21-2011, 01:57 PM
Florian Pritz
 
Default makepkg: add soprovides support

On 21.01.2011 15:49, Dan McGee wrote:
> On Fri, Jan 21, 2011 at 8:25 AM, Florian Pritz
> <bluewind@server-speed.net> wrote:
>> On 19.01.2011 19:54, Dan McGee wrote:
>>> It is most definitely not a valid pkgver (dash) or pkgrel (not a
>>> number).
>>
>> The dash here just seperates pkgver from pkgrel.
>>
>> Did a quick test with libc.so=6-x86_64_Linux as dependency and a package
>> called libc.so with that pkgver and pkgrel and it worked just fine.

> Perhaps more importantly, this is still wrong (I can't run your i686
> binary on my i386 system as it seems to indicate)

http://mailman.archlinux.org/pipermail/pacman-dev/2010-February/010410.html

> and if we do keep
> it, it has *nothing* to do with a version in the normal ordering
> sense- it would belong as part of the provision name.

I had that before and Allan didn't like it.

http://mailman.archlinux.org/pipermail/pacman-dev/2010-February/010420.html

--
Florian Pritz -- {flo,bluewind}@server-speed.net
 
Old 01-21-2011, 02:02 PM
Florian Pritz
 
Default makepkg: add soprovides support

On 21.01.2011 15:49, Allan McRae wrote:
> On 22/01/11 00:25, Florian Pritz wrote:
>> On 19.01.2011 19:54, Dan McGee wrote:
> <snip>
>>
>>> * introducing dependencies on readelf and objdump. At least elsewhere
>>> in the strip code, we use `file` to locate shared libraries. And you
>>> can get the SONAME bit out of objdump -p, which would at least limit
>>> this to one tool.
>>
>> readelf and objdump are both in binutils, but I've noticed that objdump
>> doesn't support the file format generated by tcc although readelf does
>> and it's a valid ELF file afaict.
>>
>> eu-objdump (elfutils) can't output that much, but it understands tcc's
>> format and outputs pretty nice architecture information. Sadly I have no
>> idea if that's portable.
>>
>> Now I'm using readelf (binutils) and eu-objdump (elfutils). I think it's
>> fine since both are in core and you only need them for makepkg anyway.
>
> We have pacman/makepkg users on Linux, OSX, BSD, Hurd, Cygwin...
> Whatever is used here needs to be portable to all those. I do not
> believe elfutils is particularly portable...

I'd use objdump (binutils), but I don't know if it's compatible with
binaries not generated by gcc (at least tcc doesn't work) and I can't
really assume all users use gcc either.

There is a "portability" patch [1] for elfutils. Not sure if that is
what we need though.

[1]
https://fedorahosted.org/releases/e/l/elfutils/0.151/elfutils-portability.patch

--
Florian Pritz -- {flo,bluewind}@server-speed.net
 
Old 01-21-2011, 03:01 PM
Allan McRae
 
Default makepkg: add soprovides support

On 22/01/11 00:57, Florian Pritz wrote:

On 21.01.2011 15:49, Dan McGee wrote:

On Fri, Jan 21, 2011 at 8:25 AM, Florian Pritz
<bluewind@server-speed.net> wrote:

On 19.01.2011 19:54, Dan McGee wrote:

It is most definitely not a valid pkgver (dash) or pkgrel (not a
number).


The dash here just seperates pkgver from pkgrel.

Did a quick test with libc.so=6-x86_64_Linux as dependency and a package
called libc.so with that pkgver and pkgrel and it worked just fine.



Perhaps more importantly, this is still wrong (I can't run your i686
binary on my i386 system as it seems to indicate)


http://mailman.archlinux.org/pipermail/pacman-dev/2010-February/010410.html


That reply is just wrong... i686 is not a restricted flavour of i386.
It is the other way around. I can not run i686 optimised software on an
i386 system. Just ask all the Via C3 owners who do not have that "nopl"
instruction and the joys they had with glibc-2.12.


So there is a real problem that you can not get the correct value out of
the library on i686 systems. We could use CARCH, but that does not work
for multilib stuff, which was the entire point of including it in the
first place...


This needs left out unless the correct value can be given.


and if we do keep
it, it has *nothing* to do with a version in the normal ordering
sense- it would belong as part of the provision name.


I had that before and Allan didn't like it.

http://mailman.archlinux.org/pipermail/pacman-dev/2010-February/010420.html



I did not like provides=(libfoo.so) magically turning into
"libfoo.so-i686" in the .PKGINFO file. The details of the package
should reflect what is in the PKGBUILD.


Allan
 

Thread Tools




All times are GMT. The time now is 02:40 AM.

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