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 General Discussion

 
 
LinkBack Thread Tools
 
Old 05-18-2012, 05:26 AM
"David C. Rankin"
 
Default makepkg is creating BOTH a /pkg and pkgusr on build??

Guys,

Building a small app (GNU External Ballistic Calculator) for Arch. When the
PKGBUILD goes to package the file it create both

/pkg
/pkgusr

directories. It puts the .PKGINFO in /pkg and then the executable and libs under
/pkgusr -- what is up with that?? Anybody seen this before? I've grepped the
source (Makefiles, etc..) and there is no reference to "pkgusr" so what's up?

Literally, the package part creates:

00:21 nirvana:~/arch/pkg/bld/tmp> ls -l
total 268
drwxr-xr-x 2 david david 4096 May 18 00:13 pkg
drwxr-xr-x 4 david david 4096 May 18 00:13 pkgusr
drwxr-xr-x 3 david david 4096 May 18 00:03 src
-rw-r--r-- 1 david david 560 May 18 00:13 gebc-1.07-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 david david 136471 May 17 23:58 gebc-1.07-src.tar.gz
-rw-r--r-- 1 david david 107212 May 17 23:58 gebc.diff
-rw-r--r-- 1 david david 904 May 17 23:58 gebc-fl_draw.diff
-rw-r--r-- 1 david david 1393 May 17 23:57 PKGBUILD
00:21 nirvana:~/arch/pkg/bld/tmp> l pkg
total 12
drwxr-xr-x 2 david david 4096 May 18 00:13 .
drwxr-xr-x 5 david david 4096 May 18 00:13 ..
-rw-r--r-- 1 david david 573 May 18 00:13 .PKGINFO
00:21 nirvana:~/arch/pkg/bld/tmp> ls -l pkgusr
total 8
drwxr-xr-x 2 david david 4096 May 18 00:13 bin
drwxr-xr-x 2 david david 4096 May 18 00:13 lib

The resulting package gebc-1.07-1-x86_64.pkg.tar.xz doesn't contain anything but
the pkginfo file. Where do I look to figure out why this new /pkgusr dir has
popped up?

--
David C. Rankin, J.D.,P.E.
 
Old 05-18-2012, 07:33 AM
Allan McRae
 
Default makepkg is creating BOTH a /pkg and pkgusr on build??

On 18/05/12 16:00, Martin Panter wrote:
> On 18 May 2012 15:26, David C. Rankin <drankinatty@suddenlinkmail.com> wrote:
>> Building a small app (GNU External Ballistic Calculator) for Arch. When the
>> PKGBUILD goes to package the file it create both
>>
>> /pkg
>> /pkgusr
>>
>> directories. It puts the .PKGINFO in /pkg and then the executable and libs under
>> /pkgusr -- what is up with that?? Anybody seen this before? I've grepped the
>> source (Makefiles, etc..) and there is no reference to "pkgusr" so what's up?
>
> Never seen it before but my guess is that somewhere the app is joining
> the $pkgdir directory with its own usr/lib/, usr/bin/ directories but
> there is no slash in between.
>

Correct... I guess using 'make DESTDIR="$pkgidr/" install' would fix it.
 
Old 05-18-2012, 12:54 PM
"David C. Rankin"
 
Default makepkg is creating BOTH a /pkg and pkgusr on build??

On 05/18/2012 02:33 AM, Allan McRae wrote:
> On 18/05/12 16:00, Martin Panter wrote:
>> On 18 May 2012 15:26, David C. Rankin <drankinatty@suddenlinkmail.com> wrote:
>>> Building a small app (GNU External Ballistic Calculator) for Arch. When the
>>> PKGBUILD goes to package the file it create both
>>>
>>> /pkg
>>> /pkgusr
>>>
>>> directories. It puts the .PKGINFO in /pkg and then the executable and libs under
>>> /pkgusr -- what is up with that?? Anybody seen this before? I've grepped the
>>> source (Makefiles, etc..) and there is no reference to "pkgusr" so what's up?
>>
>> Never seen it before but my guess is that somewhere the app is joining
>> the $pkgdir directory with its own usr/lib/, usr/bin/ directories but
>> there is no slash in between.
>>
>
> Correct... I guess using 'make DESTDIR="$pkgidr/" install' would fix it.
>
>
>
>


Hmm,

OK, I'll check again for the package manipulating pkgdir, because I'm using
the standard package:

package() {
msg "Packaging ${pkgname}-${pkgver}"

cd ${pkgname}-${pkgver}

make DESTDIR=$pkgdir install
}


--
David C. Rankin, J.D.,P.E.
 
Old 05-18-2012, 01:00 PM
Allan McRae
 
Default makepkg is creating BOTH a /pkg and pkgusr on build??

On 18/05/12 22:54, David C. Rankin wrote:
> On 05/18/2012 02:33 AM, Allan McRae wrote:
>> On 18/05/12 16:00, Martin Panter wrote:
>>> On 18 May 2012 15:26, David C. Rankin <drankinatty@suddenlinkmail.com> wrote:
>>>> Building a small app (GNU External Ballistic Calculator) for Arch. When the
>>>> PKGBUILD goes to package the file it create both
>>>>
>>>> /pkg
>>>> /pkgusr
>>>>
>>>> directories. It puts the .PKGINFO in /pkg and then the executable and libs under
>>>> /pkgusr -- what is up with that?? Anybody seen this before? I've grepped the
>>>> source (Makefiles, etc..) and there is no reference to "pkgusr" so what's up?
>>>
>>> Never seen it before but my guess is that somewhere the app is joining
>>> the $pkgdir directory with its own usr/lib/, usr/bin/ directories but
>>> there is no slash in between.
>>>
>>
>> Correct... I guess using 'make DESTDIR="$pkgidr/" install' would fix it.
>>
>>
>>
>>
>
>
> Hmm,
>
> OK, I'll check again for the package manipulating pkgdir, because I'm using
> the standard package:
>
> package() {
> msg "Packaging ${pkgname}-${pkgver}"
>
> cd ${pkgname}-${pkgver}
>
> make DESTDIR=$pkgdir install
^ add a "/" there....
 
Old 05-18-2012, 01:04 PM
Dennis Herbrich
 
Default makepkg is creating BOTH a /pkg and pkgusr on build??

On Fri, May 18, 2012 at 07:54:27AM -0500, David C. Rankin wrote:
> OK, I'll check again for the package manipulating pkgdir, because I'm using
> the standard package:
>
> package() {
> msg "Packaging ${pkgname}-${pkgver}"
>
> cd ${pkgname}-${pkgver}
>
> make DESTDIR=$pkgdir install
> }

Interestingly enough, my /usr/share/pacman/PKGBUILD.proto thinks otherwise:
[...]
package() {
cd "$srcdir/$pkgname-$pkgver"
make DESTDIR="$pkgdir/" install
}
[...]

And besides the unquoted DESTDIR leading to trouble, the additional slash would also explain and likely fix your issue.

I'd suggest using a matching .proto file whenever creating a new package
instead of copying an old PKGBUILD. They are updated every now and then, and
you should profit from this.

Best regards.
Dennis

--
"Den Rechtsstaat macht aus, dass Unschuldige wieder frei kommen."
Dr. Wolfgang Schäuble, Bundesinnenminister (14.10.08, TAZ-Interview)
 
Old 05-18-2012, 01:44 PM
"David C. Rankin"
 
Default makepkg is creating BOTH a /pkg and pkgusr on build??

On 05/18/2012 08:04 AM, Dennis Herbrich wrote:
> On Fri, May 18, 2012 at 07:54:27AM -0500, David C. Rankin wrote:
>> OK, I'll check again for the package manipulating pkgdir, because I'm using
>> the standard package:
>>
>> package() {
>> msg "Packaging ${pkgname}-${pkgver}"
>>
>> cd ${pkgname}-${pkgver}
>>
>> make DESTDIR=$pkgdir install
>> }
>
> Interestingly enough, my /usr/share/pacman/PKGBUILD.proto thinks otherwise:
> [...]
> package() {
> cd "$srcdir/$pkgname-$pkgver"
> make DESTDIR="$pkgdir/" install
> }
> [...]
>
> And besides the unquoted DESTDIR leading to trouble, the additional slash would also explain and likely fix your issue.
>
> I'd suggest using a matching .proto file whenever creating a new package
> instead of copying an old PKGBUILD. They are updated every now and then, and
> you should profit from this.
>
> Best regards.
> Dennis
>

Allan, Dennis, thanks.

I will check for a matching .proto file with new packages. I don't know if
that would have helped here. The issue was in the Makefile:

src/gebc-1.07/Makefile:am__installdirs = "$(DESTDIR)$(bindir)"
src/gebc-1.07/Makefile: echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'";
src/gebc-1.07/Makefile: $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1;

I had tried both

make DESTDIR=$pkgdir install

and

make DESTDIR="$pkgdir/" install

Which didn't make any difference -- that surprised me. I finally just ran a
sed script on the Makefile testing with makepkg -R and the following is what
allowed it to package properly:

find . -name "Makefile*" -exec sed -i
'/$(DESTDIR)$(bindir)/s|$(DESTDIR)$(bindir)|$(DESTDIR)/$(bindir)|g' '{}' ;
find . -name "Makefile*" -exec sed -i
'/$(DESTDIR)$(libdir)/s|$(DESTDIR)$(libdir)|$(DESTDIR)/$(libdir)|g' '{}' ;

Makefile:am__installdirs = "$(DESTDIR)/$(bindir)"
Makefile: echo " $(MKDIR_P) '$(DESTDIR)/$(bindir)'";
Makefile: $(MKDIR_P) "$(DESTDIR)/$(bindir)" || exit 1;

But for some reason, placing the find/sed calls after ./configure in the
PKGBUILD didn't execute the sed calls in the same way as executing them manually
in ${srcdir}/${pkgname}-${pkgver} from within the PKGBUILD.

The PKGBUILD I attempted to use was the following:

pkgname=gebc
pkgver=1.07
pkgrel=1
arch=(i686 x86_64)
pkgdesc="GNU External Ballistic Calculator with ballistic and target plotting."
url="https://sourceforge.net/projects/balcomp/?source=directory"
license="GPL"
depends=('fltk' 'libharu')
groups=()
makedepends=('automake' 'autoconf' 'libtool' 'gcc')
conflicts=()
provides=("${pkgname}-${pkgver}")
replaces=()
source=("https://downloads.sourceforge.net/project/balcomp/GNU Ballistics -
Source/Version 1.07/${pkgname}-${pkgver}-src.tar.gz"
'gebc.diff'
'gebc-fl_draw.diff')
md5sums=('6d284172ac0a665d03d7cdbcf4194bfe'
'659fd7a4640fc2361273f5ec8437eea5'
'02f8f35bb6e544818655af019b3ae0db')

build() {

cd ${srcdir}
## Patching with V2 patch from Mike Nix as SourceForge
msg "Patching to update to V2........."
patch -Np0 -i gebc.diff

msg "Patching fl_draw.h -> H........."
patch -Np0 -i gebc-fl_draw.diff

msg "Running autoreconf ...."
cd ${srcdir}/${pkgname}-${pkgver}
autoreconf

## configure
msg "Configuring - ${pkgname}..."
./configure --prefix=/usr

find . -name "Makefile*" -exec sed -i
'/$(DESTDIR)$(bindir)/s|$(DESTDIR)$(bindir)|$(DESTDIR)/$(bindir)|g' '{}' ;
find . -name "Makefile*" -exec sed -i
'/$(DESTDIR)$(libdir)/s|$(DESTDIR)$(libdir)|$(DESTDIR)/$(libdir)|g' '{}' ;

make
}

package() {
msg "Packaging ${pkgname}-${pkgver}"

cd ${pkgname}-${pkgver}

make -j1 DESTDIR="${pkgdir}/" install
}

If you see anything wrong, or a better way to do something, please let me
know. If you want to take a quick look at what is going on, I've put the source
and packages on my site for your convenience [about 200k in all]:

http://www.3111skyline.com/dl/arch/pkg/src/gebc-1.07-src.tar.gz
http://www.3111skyline.com/dl/arch/pkg/src/gebc.diff
http://www.3111skyline.com/dl/arch/pkg/src/gebc-fl_draw.diff


--
David C. Rankin, J.D.,P.E.
 
Old 05-18-2012, 01:56 PM
"David C. Rankin"
 
Default makepkg is creating BOTH a /pkg and pkgusr on build??

On 05/18/2012 08:44 AM, David C. Rankin wrote:
> Allan, Dennis, thanks.
>
> I will check for a matching .proto file with new packages. I don't know if
> that would have helped here. The issue was in the Makefile:
>
> src/gebc-1.07/Makefile:am__installdirs = "$(DESTDIR)$(bindir)"
> src/gebc-1.07/Makefile: echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'";
> src/gebc-1.07/Makefile: $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1;
>
> I had tried both
>
> make DESTDIR=$pkgdir install
>
> and
>
> make DESTDIR="$pkgdir/" install

<snip>

Aye, yi, yi..... The "$pkgdir/" would have worked fine. (stupid moment). I was
building in a tmp folder, but the copy of the PKGBUILD I had open was in the
original gebc dir.... so the changes I made to the PKGBUILD were not made in the
tmp dir I was building in -- I hate it when that happens....

No sed calls needed and the trailing "${pkgdir}/" was all that was needed.

--
David C. Rankin, J.D.,P.E.
 

Thread Tools




All times are GMT. The time now is 01:18 PM.

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