Mail archive
alpine-user

Re: [alpine-user] How do I creating a binary only package?

From: Paul Zillmann <p.zillmann_at_h6g.de>
Date: Fri, 22 Jun 2018 13:51:22 +0200

Hello Dan,

> Thanks Paul.  I will try it.  I have a question regarding the
> directory structure.  I am familiar with rpm and deb packaging where
> the directory structure is exactly as that on install target machine
> (the one installing the pkg).  When you say the package function
> copies to the final destination - which final destination - the
> destination from the packaging perspective or the install.  I assume
> it is the package.
> So for example, say I have an app called foo with the following
> directory layout on the disk (after install):
>   /etc/init.d/foo
>   /opt/foo/bin/say_hi
>   /opt/foo/etc/hello_msgs.db

That is correct. You can download an apk file (e.g.
https://nl.alpinelinux.org/alpine/edge/main/x86_64/nginx-1.14.0-r0.apk
), rename it to tar.gz and open it up.
The package content is an overlay to the root directory and is alway
applied to the root directory.
>
> After I compile my code the binaries and data directory tree is
> mirrored under:  /home/dan/projects/foo/dist (very similar to rpm/deb
> pkg format)
> So just for completeness:
> /home/dan/projects/foo/dist/etc/init.d/foo
> /home/dan/projects/foo/dist/opt/foo/bin/say_hi
> /home/dan/projects/foo/dist/opt/foo/etc/hello_msgs.db
>
> From the examples I have seen I would create a directory called pkg
> under the /home/dan/projects/foo directory and add the following files:
> APKBUILD
> foo.XXXX scripts (like pre, post, etc).
>
> What I am stuck on is the contents of the APKBUILD.
You have to copy your included files to the pkg folder as well. (cp
~/projects/foo/dist/etc/init.d/foo ~/projects/foo/pkg/foo.initscript etc.pp)
Now you create yourself an APKBUILD file:

    # Contributor: Your Name <yourmail_at_example.com>
    # Maintainer: Your Name <yourmail_at_example.com>
    pkgname=mypkgname
    pkgver=1.0
    pkgrel=0
    pkgdesc="Sample for binary distribution"
    url="http://example.org"
    arch="x86_64"
    license="MIT"
    depends=""
    makedepends=""
    install=""
    subpackages=""
    source="foo.initscript
             say_hi
             hello_mgsgs.db"
    builddir="$srcdir/"

    build() {
         return 0
    }

    package() {
         cd "$srcdir"
         mkdir -p "$pkgdir"/etc/init.d/ "$pkgdir"/opt/foo/bin/
    "$pkgdir"/opt/foo/etc/
         install -m755 -D "$srcdir"/say_hi "$pkgdir"/opt/foo/bin/say_hi
    || return 1
         install -m644 -D "$srcdir"/hello_msgs.db
    "$pkgdir"/opt/foo/etc/hello_msgs.db || return 1
         install -m644 -D "$srcdir"/foo.initscript
    "$pkgdir"/etc/init.d/foo || return 1
    }

Abuild will then add the sha512 checksums to that file and create a package.
Usefull resources:

https://wiki.alpinelinux.org/wiki/APKBUILD_Reference
https://wiki.alpinelinux.org/wiki/APKBUILD_examples
https://wiki.alpinelinux.org/wiki/Creating_an_Alpine_package
>
> Let me try this very simple application and see if I can get a
> installable pkg.  Any hints/tips would be helpful.
>
> Thanks,
> Dan
>
>

Paul

>
> On Thu, Jun 21, 2018 at 11:18 AM, Paul Zillmann <p.zillmann_at_h6g.de
> <mailto:p.zillmann_at_h6g.de>> wrote:
>
> Hello Dan,
>
> just create a package with abuild / apkbuild.
> In your APKBUILD file you have to provide a package() function
> which copies your binary data to it's final destination.
> You will have to provide a build() function. Than one can be empty
> (or you return 0) - but it has to be there.
>
> Paul
>
>
> Am 21.06.2018 um 08:11 schrieb Dan Cook:
>
> Hoping to get some pointers on how to create a binary only
> pkg.  I have the binaries already compiled on Alpine and all I
> need to do is package them up.  I don't want abuild to compile
> for me.  I already have the directory structure layout in a
> separate directory ready to go.  All I need is to package up
> the directory structure and create a installable package. All
> the docs reference abuild doing the compiling/etc.  Do I use
> abuild for this or some other tool?
>
> Thanks,
> Dan
>
>
>
> ---
> Unsubscribe: alpine-user+unsubscribe_at_lists.alpinelinux.org
> <mailto:alpine-user%2Bunsubscribe_at_lists.alpinelinux.org>
> Help: alpine-user+help_at_lists.alpinelinux.org
> <mailto:alpine-user%2Bhelp_at_lists.alpinelinux.org>
> ---
>
>



---
Unsubscribe:  alpine-user+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-user+help_at_lists.alpinelinux.org
---
Received on Fri Jun 22 2018 - 13:51:22 GMT