My first PKGBUILD (dosage)

Hi,
I have tried to adapt PKGBUILD for orphaned app dosage (app to keep a local mirror of specific web comics) and I have made new working PKGBUILD with two errors when building:
==> WARNING: Using a PKGBUILD without a package() function is deprecated.
==> WARNING: Package contains reference to $pkgdir
so I need some basic help.
My PKGBUILD:
# Contributor: Zaplanincan <[email protected]>
pkgname=dosage
arch=('i686' 'x86_64')
pkgver=2.5
pkgrel=1
pkgdesc="A Python application designed to keep a local mirror of specific web comics."
url="http://wummel.github.io/dosage/dist/$pkgname"
license="GPL"
depends=('python-requests')
source="http://wummel.github.io/dosage/dist/$pkgname-$pkgver.tar.gz"
md5sums=('daef0c292a2a4510ba1392ec3a2e9d37')
build() {
cd $srcdir/$pkgname-$pkgver
python setup.py install --prefix=$pkgdir/usr
...and old PKGBUILD:
# Contributor: FJ <[email protected]>
pkgname=dosage
arch="i686 x86_64"
pkgver=1.6.0
pkgrel=1
pkgdesc="A Python application designed to keep a local mirror of specific web comics."
url="http://slipgate.za.net/$pkgname"
license="GPL"
depends=('python twisted zope-interface')
source="http://slipgate.za.net/dosage/downloads/$pkgname-$pkgver.tar.gz"
md5sums=('dd9550b08899d9f1904caf24888f5f38')
build() {
cd $startdir/src/$pkgname-$pkgver
python setup.py install --prefix=$startdir/pkg/usr
mv $startdir/pkg/usr/bin/mainline $startdir/pkg/usr/bin/dosage
Am I missing something else?
Thanks for the help.

Thank you, have made sugested changes. The last version:
# Contributor: FJ <[email protected]>
# Maintainer: Zaplanincan <[email protected]>
pkgname=dosage
arch=('i686' 'x86_64')
pkgver=2.5
pkgrel=1
pkgdesc="A Python application designed to keep a local mirror of specific web comics."
url="http://wummel.github.io/dosage/dist/$pkgname"
license="GPL"
depends=('python-requests')
source="http://wummel.github.io/dosage/dist/$pkgname-$pkgver.tar.gz"
md5sums=('daef0c292a2a4510ba1392ec3a2e9d37')
package() {
cd "$srcdir/$pkgname-$pkgver"
python setup.py install --root="$pkgdir/" --optimize=1

Similar Messages

  • First PKGBUILD: 'cannot stat' error for source file

    I'm attempting my first PKGBUILD and I've run into some trouble.
    PKGBUILD:
    # Maintainer: Simon Wydooghe <hyperbaton at gmail dot com>
    pkgname=vpcs
    pkgver=0.21a
    pkgrel=1
    pkgdesc="Simulates up to 9 computers for ping/traceroute purposes."
    arch=('i686' 'x86_64')
    url="http://vpcs.sourceforge.net/"
    license=('GPL')
    makedepends=('p7zip')
    source=('${pkgname}_${pkgver}.7z::http://downloads.sourceforge.net/project/${pkgname}/binary/${pkgver}/${pkgname}_${pkgver}.7z')
    noextract=('${pkgname}_${pkgver}.7z')
    md5sums=('dac71bdf9d04a3b7e69fe25b15f1ee5c')
    package() {
    local vpcsdir="opt/vpcs"
    local binary="vpcs32"
    cd "${srcdir}"
    mv ${pkgname}_${pkgver}.7z.part ${pkgname}_${pkgver}.7z
    7z e -o"${pkgname}-${pkgver}" "${pkgname}_${pkgver}.7z"
    cd "${pkgname}-{$pkgver}"
    mv startup.vpc readme.txt ${pkgdir}/${vpcsdir}
    if [ $CARCH = "x86_64" ]; then
    binary="vpcs64"
    fi
    mv ${binary} ${pkgdir}/${vpcsdir}/vpcs
    chmod +x ${pkgdir}/${vpcsdir}/vpcs
    Error when running makepkg:
    [hb@hb-desktop vpcs]$ makepkg
    ==> Making package: vpcs 0.21a-1 (Mon Apr 4 15:48:07 CEST 2011)
    ==> Checking runtime dependencies...
    ==> Checking buildtime dependencies...
    ==> Retrieving Sources...
    -> Downloading ${pkgname}_${pkgver}.7z...
    --2011-04-04 15:48:07-- http://downloads.sourceforge.net/project/vpcs/binary/0.21a/vpcs_0.21a.7z
    Resolving downloads.sourceforge.net... 216.34.181.59
    Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
    HTTP request sent, awaiting response... 302 Found
    Location: http://switch.dl.sourceforge.net/project/vpcs/binary/0.21a/vpcs_0.21a.7z [following]
    --2011-04-04 15:48:07-- http://switch.dl.sourceforge.net/project/vpcs/binary/0.21a/vpcs_0.21a.7z
    Resolving switch.dl.sourceforge.net... 130.59.138.21, 2001:620:0:1b::21
    Connecting to switch.dl.sourceforge.net|130.59.138.21|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1168714 (1.1M) [application/x-7z-compressed]
    Saving to: “vpcs_0.21a.7z.part”
    100%[======================================================================================================================================>] 1,168,714 1.10M/s in 1.0s
    2011-04-04 15:48:08 (1.10 MB/s) - “vpcs_0.21a.7z.part” saved [1168714/1168714]
    mv: cannot stat `/home/hb/abs/vpcs/${pkgname}_${pkgver}.7z.part': No such file or directory
    ==> ERROR: Failure while downloading ${pkgname}_${pkgver}.7z
    Aborting...
    So it seems that '.part' is being added to the source filename when being downloaded by makepkg. I added '${pkgname}_${pkgver}.7z::' in front of the source url to rename the file (I believe that's correct, no?).
    This is the PKGBUILD directory after running makepkg:
    [hb@hb-desktop vpcs]$ ls -l
    total 1152
    -rw-r--r-- 1 hb hb 884 Apr 4 15:47 PKGBUILD
    drwxr-xr-x 2 hb hb 4096 Apr 4 16:01 src
    -rw-r--r-- 1 hb hb 1168714 Mar 8 04:18 vpcs_0.21a.7z.part
    I can stat the file in question:
    [hb@hb-desktop vpcs]$ stat vpcs_0.21a.7z.part
    File: `vpcs_0.21a.7z.part'
    Size: 1168714 Blocks: 2288 IO Block: 4096 regular file
    Device: 805h/2053d Inode: 1046825 Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 1000/ hb) Gid: ( 1000/ hb)
    Access: 2011-04-04 16:01:22.000000000 +0200
    Modify: 2011-03-08 04:18:48.000000000 +0100
    Change: 2011-04-04 16:01:22.477037824 +0200
    Birth: -
    So can someone tell me which moronic error I've made this time? :-)

    Excellent, thanks, that did the trick!
    While I've opened this topic anyway, I have another question. The application in question uses a configuration file which it only looks for in the directory the executable resides in (unless a specific command line argument is given). For this reason, it seems most logical to place the application under /opt. But /opt is not in $PATH by default. What is the best way to add the directory /opt/vpcs to $PATH but to also remove it from $PATH when the application is removed?
    Last edited by HyperBaton (2011-04-04 14:33:45)

  • First pkgbuild, verification please

    Hello!
    This is my first pkgbuild from scratch.
    I had read the standards but I want to be sure it's alright.
    Thank.
    # Author: Shaika-Dzari <shaikadzari at gmail _dot_ com>
    pkgname=animeshell
    pkgver=1.0
    pkgrel=1
    pkgdesc="Collection manager for your animes and mangas"
    arch=('i686')
    url="http://code.google.com/p/animeshell/"
    license=('GPL')
    depends=('qt4')
    source=(http://animeshell.googlecode.com/files/Animeshell-$pkgver-linux.tar.bz2 Animeshell.desktop)
    md5sums=('9cb24c9d68c117c05021d3465494e327'
    '4be9aa92283d3751fec654aa5fb2f2fb')
    build() {
    export QMAKESPEC=linux-g++
    cd "$startdir/src/Animeshell-$pkgver-linux"
    qmake -config release
    make || return 1
    # Executable
    install -d $startdir/pkg/usr/bin
    install -Dm755 bin/Animeshell $startdir/pkg/usr/bin/
    # .desktop file
    install -d $startdir/pkg/usr/share/applications
    install -Dm644 $startdir/src/Animeshell.desktop $startdir/pkg/usr/share/applications/
    # Icon
    install -d $startdir/pkg/usr/share/pixmaps
    install -Dm644 ui/resources/animeshell-icon-10.png $startdir/pkg/usr/share/pixmaps/animeshell.png
    [Desktop Entry]
    Name=Animeshell
    Comment=Collection manager
    Exec=Animeshell
    Terminal=false
    Type=Application
    Icon=animeshell.png
    Categories=Qt;Application;
    Encoding=UTF-8

    Allan wrote:
    Shaika-Dzari wrote:
    Allan wrote:Also "install -D" creates the directory structure so you shouldn't need the "install -d" lines beforehand.
    Weird, from the man page:
    -D create all leading components of DEST except the last, then copy
    SOURCE to DEST
    no it is not so weird. As there is currently no directory where you want to install the file to (at least that is what it is assuming) it has otherwise no idea if the last component is either a directory or a file.
    This means that for example
    install -Dm644 sample.desktop $startdir/pkg/usr/share/applications
    removes the last component (applications in this example), and installs the sample.desktop file under the name applications in $startdir/pkg/usr/share/
    Therefore, the correct way is
    install -Dm644 sample.desktop $startdir/pkg/usr/share/applications/sample.desktop
    Last edited by pressh (2008-01-18 16:25:35)

  • First PKGBUILD - looking for review

    Hello all,
    I have created my first PKGBUILD for some new scientific computing libraries and corresponding examples related to my field. I am looking for input before submitting this to the authors for inclusion on their site (and possibly to the AUR if there ends up being more interest).
    Anyway, here is what I have so far, which seems to work on my system:
    PKGBUILD:
    pkgname=ismrmrd-git
    pkgver=20121030
    pkgrel=1
    pkgdesc="Libraries and examples for the proposed ISMRM Raw Data format"
    url="http://ismrmrd.sourceforge.net"
    arch=('any')
    license=('unknown')
    depends=('hdf5-fortran-cxx'
    'boost-libs'
    'xsd'
    'xerces-c')
    optdepends=('fftw: used to compile example programs'
    'doxygen: only needed if you want to produce your own copy of the documentation')
    makedepends=('unzip'
    'git'
    'cmake')
    # install="${pkgname}.install"
    # source=("http://www.syntax-on.com/static/$pkgname/$pkgname-$pkgver.tar.gz")
    # source=("http://downloads.sourceforge.net/project/ismrmrd/src/${pkgname}_${pkgver}.zip")
    source=("cmakelists.diff")
    noextract=("${pkgname}_${pkgver}.zip")
    md5sums=("9ec7ed899e488961826fa41da7109a84")
    _gitroot="git://git.code.sf.net/p/ismrmrd/code"
    _gitname="ismrmrd"
    build() {
    cd "${srcdir}"
    # unzip ${pkgname}_${pkgver}.zip -d ${pkgname}-${pkgver}
    msg "Connecting to GIT server..."
    if [ -d $_gitname ] ; then
    cd $_gitname && git pull origin
    msg "Local files have been updated"
    else
    git clone $_gitroot "${srcdir}/$_gitname"
    fi
    msg "Received code from GIT or server timed out"
    # stop CMakeLists.txt appending an unwanted dir to the CMAKE_INSTALL_PREFIX
    # also prevent install of /usr/cmake/FindIsmrmrd.cmake
    msg "Patching CMakeLists.txt to comply with Arch Packaging Standards..."
    cd "${srcdir}/${_gitname}"
    patch < ${startdir}/cmakelists.diff --forward
    # start the build
    mkdir "${srcdir}/${_gitname}/build" -p
    cd "${srcdir}/${_gitname}/build"
    msg "Starting cmake..."
    cmake -DCMAKE_INSTALL_PREFIX=/usr ../
    msg "Starting make..."
    make
    package() {
    cd "${srcdir}/${_gitname}/build"
    make DESTDIR="${pkgdir}/" install
    cmakelists.diff
    --- src/ismrmrd-latest/CMakeLists.txt 2012-10-30 11:48:03.332945241 -0500
    +++ src/ismrmrd-latest/CMakeLists_mod.txt 2012-10-30 11:48:27.619612710 -0500
    @@ -10,7 +10,7 @@
    endif (WIN32)
    -set(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/ismrmrd)
    +# set(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/ismrmrd)
    list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
    find_package(XSD REQUIRED)
    @@ -69,7 +69,7 @@
    INSTALL(FILES ismrmrd.h ${XSDS_SOURCES} ismrmrd_hdf5.h ismrmrd_hdf5_datatypes.h ismrmrd_export.h DESTINATION include)
    INSTALL(FILES schema/ismrmrd.xsd DESTINATION schema)
    -INSTALL(FILES cmake/FindIsmrmrd.cmake DESTINATION cmake)
    +# INSTALL(FILES cmake/FindIsmrmrd.cmake DESTINATION cmake)
    INSTALL(TARGETS ismrmrd DESTINATION lib)
    INSTALL(TARGETS ismrmrd_xsd DESTINATION lib)
    I'm not using any .install file, is this something big I am missing? Again, this is my first time writing a PKGBUILD, so I appreciate any feedback. Thanks!

    Thanks - I will take note for future packages, or if I end up using a non-git version. makepkg seemed to not be able to handle the zip file itself, though. If I re-hosted the source myself in a tarball it worked, but on the authors' site I could only find it as a zip.
    My main question is still about installation location, though. This typically installs itself in:
    /usr/local/ismrmrd/bin
    /usr/local/ismrmrd/lib
    /usr/local/ismrmrd/include
    /usr/local/ismrmrd/schema
    /usr/local/ismrmrd/cmake
    I was able to change this to:
    /usr/bin
    /usr/lib
    /usr/include
    /usr/schema
    Obviously this prevents cmake/FindIsmrmrd.cmake from being installed at all (not sure this is OK or desirable), It also creates the /usr/schema directory, which I don't think is really standard. Where should I put such files? Should I instead install the whole package into /usr/opt/ismrmrd? It doesn't seem big enough to warrant that, but I don't know where else to put the schema and cmake directories and the associated files. Maybe in /usr/share?
    Last edited by aganders3 (2012-11-07 20:20:40)

  • First PKGBUILD, is it alright to submit?

    I wrote a python Youtube search client with a curses interface. I wrote a PKGBUILD for it aswell so I can easily share it with my archie friends. However, this is the first PKGBUILD I wrote, so I ask you to please review it for me and let me know if it's good enough to submit to AUR.
    # Maintainer: Tyler Cone <[email protected]>
    pkgname=yt-git
    pkgver=20130125
    pkgrel=1
    pkgdesc="A curses Youtube search client written in python"
    arch=('any')
    url="https://github.com/herrflockig/yt"
    license=('WTFPL')
    depends=('mplayer' 'youtube-dl' 'python2')
    makedepends=('git')
    conflicts=('yt')
    provides=('yt')
    _gitname="yt"
    _gitroot="https://github.com/herrflockig/yt"
    pkgver() {
    cd "$srcdir/$_gitname"
    echo $(git describe --always | sed 's/-/./g')
    build() {
    cd $srcdir
    msg "Connecting to GIT server..."
    if [ -d $_gitname ]; then
    cd $_gitname && git pull origin
    msg "The local files are updated."
    else
    git clone --depth=1 $_gitroot $_gitname
    fi
    msg "GIT checkout done or server timeout"
    package() {
    cd "$srcdir/$_gitname"
    mkdir -p $pkgdir/usr/bin
    cp yt.py $pkgdir/usr/bin/yt
    chmod +x $pkgdir/usr/bin/yt
    And while you're at it, why not give the script a try and let me know what you think?

    herrflockig wrote: mkdir -p $pkgdir/usr/bin
    cp yt.py $pkgdir/usr/bin/yt
    chmod +x $pkgdir/usr/bin/yt
    This can be condensed to 1 command:
    install -Dm755 yt.py "$pkgdir/usr/bin/yt"
    Also WTFPL should be "custom" or "custom:WTFPL" since it's not an officially recognized common license in arch.
    herrflockig wrote:And while you're at it, why not give the script a try and let me know what you think?
    I'm liking this a lot..
    Is it expected that I can't resize/fullscreen the videos? The video just stays in the center at the same size with surrounding black space.
    (Maybe you can start a Community Contributions thread for this.)
    Last edited by tdy (2013-01-26 04:45:12)

  • First PKGBUILD (gsplit) - can you check ??

    Hello
    I wrote my first PKGBUILD, for the gsplit program. But before uploading it to AUR I wonder if someone experienced could check it ?
    Thank you in advance
    (PS : sorry for my bad english)
    # $Id: PKGBUILD, 2009/02/22$
    # Maintainer: IDontWantToBeSpamed <IDontWantToBeSpamed>
    # Contributor: IDontWantToBeSpamed <IDontWantToBeSpamed>
    pkgname=gsplit-svn
    pkgver=20090222
    pkgrel=1
    pkgdesc="frontend for split, written in java"
    arch=(i686 x86_64)
    url="http://www.respawner.fr/gsplit/"
    license=('GPL3')
    groups=
    provides=('gsplit')
    depends=('java-runtime' 'java-gnome')
    makedepends=('subversion' 'apache-ant')
    source=()
    md5sums=()
    build() {
    name=gsplit
    cd $startdir/src
    svn co http://www.respawner.fr/$pkgname/trunk/$name/
    cd $name
    mkdir libs
    CLASSPATH=/usr/local/share/java/gtk.jar ant dist
    cd build
    mkdir -p $startdir/pkg/usr/share/$name
    mkdir -p $startdir/pkg/usr/share/java/$name
    mkdir -p $startdir/pkg/usr/bin
    mv data $startdir/pkg/usr/share/$name
    mv po $startdir/pkg/usr/share/$name
    mv gsplit.jar $startdir/pkg/usr/share/java/$name
    echo '#! /bin/sh' > $startdir/pkg/usr/bin/$name
    echo 'java -classpath /usr/local/share/java/gtk.jar:/usr/share/java/gsplit/gsplit.jar gsplit.GSplit' >> $startdir/pkg/usr/bin/$name
    chmod +x $startdir/pkg/usr/bin/$name

    OK Thanks ... I will modify the PKGBUILD.
    new version :
    # $Id: PKGBUILD, 2009/02/22$
    # Maintainer: ***** <***>
    # Contributor: ***** <***>
    pkgname=gsplit-svn
    pkgver=148
    pkgrel=1
    pkgdesc="frontend for split, written in java"
    arch=(i686 x86_64)
    url="http://www.respawner.fr/gsplit/"
    license=('GPL3')
    groups=
    provides=('gsplit')
    depends=('java-runtime' 'java-gnome')
    makedepends=('subversion' 'apache-ant')
    source=(gsplit.desktop)
    md5sums=('430bf9e6c3eb824edbaa886e4ce1c482')
    _svntrunk="http://www.respawner.fr/$pkgname/trunk/gsplit"
    _svnmod="gsplit"
    build() {
    name=gsplit
    mkdir -p $startdir/pkg/usr/share/$name
    mkdir -p $startdir/pkg/usr/share/java/$name
    mkdir -p $startdir/pkg/usr/bin
    mkdir -p $startdir/pkg/usr/share/icons
    mkdir -p $startdir/pkg/usr/share/applications
    cd $startdir/src
    mv $name.desktop $startdir/pkg/usr/share/applications
    svn co $_svntrunk $_svnmod
    cd $name
    mkdir libs
    CLASSPATH=/usr/local/share/java/gtk.jar ant dist
    cd build
    cp data/logo.png $startdir/pkg/usr/share/icons/gsplit.png
    mv data $startdir/pkg/usr/share/$name
    mv po $startdir/pkg/usr/share/$name
    mv gsplit.jar $startdir/pkg/usr/share/java/$name
    echo '#! /bin/sh' > $startdir/pkg/usr/bin/$name
    echo 'java -classpath /usr/local/share/java/gtk.jar:/usr/share/java/gsplit/gsplit.jar gsplit.GSplit' >> $startdir/pkg/usr/bin/$name
    chmod +x $startdir/pkg/usr/bin/$name
    desktop :
    [Desktop Entry]
    Encoding=UTF-8
    Name=gsplit
    Comment=frontend for split
    GenericName=
    Type=Application
    TryExec=gsplit
    Exec=gsplit
    Icon=gsplit.png
    Terminal=false
    X-MultipleArgs=false
    Categories=GTK;Application;Utility;
    Last edited by akira86 (2009-02-22 23:15:54)

  • First PKGBUILD: blobby2-svn

    Hi,
    this is my first PKGBUILD for the svn-version of Blobby Volley 2. Please test it before I'll put it into AUR:
    pkgname=blobby2-svn
    pkgver=375
    pkgrel=1
    pkgdesc="Blobby Volley 2 - SVN version"
    url="http://blobby.redio.de/content/de/index.php"
    license=""
    depends=()
    conflicts=('blobby2')
    makedepends=('subversion' 'pkgconfig')
    source=()
    md5sums=()
    _svntrunk="https://blobby.svn.sourceforge.net/svnroot/blobby"
    _svnmod="blobby"
    build()
    touch ~/.subversion
    cd $startdir/src
    # Get the source
    svn co $_svntrunk $_svnmod
    msg "SVN checkout done or server timeout"
    msg "Starting make..."
    cd $_svnmod/trunk
    sed -i 's/automake-1.9/automake-1.10/' bootstrap
    sh bootstrap --prefix=/usr
    ./configure --prefix=/usr
    make || return 1
    make DESTDIR=$startdir/pkg install
    Thanks!
    Greets, Mo.

    The PKGBUILD is quite clean and good. Here are a few nit-picky stylistic points:
    - Remove the unused (empty) variables.
    - Remove the period at the end of the description.
    - Don't bother including the md5sums array (just the shaXsums). MD5's collision resistance has been broken.
    - Use $() instead of backticks (``). Actually, just avoid backticks in general.
    - Instead of `mkdir -p $_bindir`, use `install -dm755 $_bindir`. That way the permissions are guaranteed to be correct no matter what the user's umask is.

  • First PKGBUILD, please review

    I've just created my first PKGBUILD, would you mind reviewing it before I post it to AUR?
    # Contributor: Joel Schaerer <[email protected]>
    pkgname=textext
    pkgver=0.4.2
    pkgrel=1
    pkgdesc="Great extension to the inkscape drawing program which lets you add LaTeX equations to your inkscape document"
    arch=(i686 x86_64)
    url="http://www.elisanet.fi/ptvirtan/software/textext/"
    license=('BSD')
    groups=()
    depends=(inkscape texlive-core python-lxml pstoedit)
    makedepends=()
    install=
    source=(http://www.elisanet.fi/ptvirtan/software/textext/$pkgname-$pkgver.tar.gz)
    md5sums=('448051b36169a06473519c83f20338d8') #generate with 'makepkg -g'
    build() {
    cd "$srcdir"
    mkdir -p "${startdir}/pkg/usr/share/inkscape/extensions/"
    install -m 755 textext.py "${startdir}/pkg/usr/share/inkscape/extensions/"
    install -m 644 textext.inx "${startdir}/pkg/usr/share/inkscape/extensions/"

    Works like a charm! Thank you!
    Some formal, very minor issues:
    * Arrays like (i686 x86_64) should be written ('i686' 'x86_64'). Also valid for the depends.
    * Delete empty fields (groups, makedepends, install)
    * replace mkdir -p by install -d
    Also formal, but less minor and not your fault: There is no clear license statement made by the author. "BSD" is not a license, but an idea of a license, or a bunch of similar licenses. I would put an echo line with some sentence at the end of the PKGBUILD, redirected to $startdir/pkg/usr/share/licenses/$pkgname/BSD.

  • First PKGBUILD (anki-git), review welcome

    According to a discussion at https://anki.tenderapp.com/discussions/ … arch-linux , a bug in Qt appears to have broken some functionality in Anki. There is a workaround in the git repo, but until the next stable version is released, the sidebar in the deck browser will not work.
    Because I use Anki heavily, and because I also like my Arch install up-to-date, I endeavored to write my first PKGBUILD. It is basically a combination of the current one for anki and an ankiqt-git package from last year, before Anki had a major overhaul.
    Since this is my first PKGBUILD, I would very much welcome some opinions before submitting it to the AUR. The install file is simply the same as the one for anki, but I have nonetheless included it for completeness.
    PKGBUILD: http://pastebin.com/4x16AN3B (updated 19:14 GMT)
    install file: http://pastebin.com/NEZsA4KB
    Last edited by tobi-fankhaenel (2013-04-02 19:15:23)

    Comments and alterations, untested, just a quick reply.
    pkgname=anki-git
    pkgver=20130402
    pkgver() { # Include a pkgver() function to provide more useful information
    cd "$pkgname"
    git describe | sed 's/-/./g' # Alter where appropriate
    } # pkgver= above will be automatically updated based on the result of this function
    pkgrel=1
    pkgdesc="Helps you remember facts efficiently. Git Version."
    url="https://github.com/dae/anki"
    license=('GPL')
    arch=('any')
    depends=('python2-pyqt' 'python2-sqlalchemy' 'python2-simplejson'
    'python2-pysqlite' 'python2-beautifulsoup3')
    makedepends=('git')
    optdepends=('python2-matplotlib: show graphs'
    'sox: audio recording'
    'portaudio') # Why is the an optdep? "portaudio: <reason>" (even if it's obvious)
    provides=('anki')
    conflicts=('anki' 'ankiqt-git')
    install=anki-git.install
    # pacman 4.1
    source=("$pkgname"::git+git://github.com/dae/anki.git) # I like using $pkgname:: for consistency across PKGBUILDs
    md5sums=('SKIP')
    build() {
    cd "$srcdir/$pkgname"
    sed -i 's|pyuic4 $i -o $py|python2-pyuic4 $i -o $py|' tools/build_ui.sh
    ./tools/build_ui.sh
    sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' runanki
    rm -f anki.bat
    package() {
    cd "$srcdir/$pkgname"
    # All of this is horrible practice
    # Instead of using cp or mv, use `install' with the appropriate permissions E.g. `install -Dm644 target "$pkgdir"/.../target'
    # if you have to use `cp' use `cp -dp --no-preserve=ownership --target-directory="$pkgdir"/...
    Last edited by Earnestly (2013-04-20 11:46:40)

  • Made my first PKGBUILD... :)

    Hi Forum,
    I have made my first PKGBUILD, it is a hack of the PKGBUILD of BRLCAD, which I have used to pack Ofeli, http://www.ofeli.net/, to /usr{bin lib share doc} as required by Archer Philosophy.
    Here it is :
    # Maintainer: Loui Chang <louipc dot ist at gmail company>
    pkgname=ofeli
    pkgver=2.0.2
    pkgrel=1
    pkgdesc="Finite elements analysis Package"
    url="http://brlcad.org"
    license=('LGPL' 'BSD' 'custom:BDL')
    #install=brlcad.install
    arch=('i686' 'x86_64')
    #makedepends=('bc' 'libxslt')
    #depends=('boost' 'flex' 'libpng' 'zlib' 'libgl' 'tk>=8.5')
    #options=('!libtool')
    source=(ofeli-2.0.2.tar.gz)
    build() {
    cd $srcdir/$pkgname-$pkgver
    ./configure --prefix=/usr
    # --with-opengl=/usr/lib \
    # --with-tcl=/usr/lib \
    # --disable-step \
    # --disable-tkhtml3 \
    # --disable-tkimg \
    # --disable-opennurbs
    # For opennurbs, etc
    # gcc -I/opt/brlcad/include -L/opt/brlcad/lib
    make || return 1
    package() {
    cd $srcdir/$pkgname-$pkgver
    make DESTDIR=$pkgdir install || return 1
    # install -D -m755 $srcdir/brlcad.sh $pkgdir/etc/profile.d/brlcad.sh
    # mkdir -p $pkgdir/usr/share/licenses/$pkgname
    # cp $srcdir/$pkgname-$pkgver/doc/legal/bdl.txt \
    # $pkgdir/usr/share/licenses/$pkgname
    # cp $srcdir/$pkgname-$pkgver/doc/legal/bsd.txt \
    # $pkgdir/usr/share/licenses/$pkgname
    #md5sums=('8ccbc692d84854c9b0599b6d1255f916'
    # '4922e66ff0835169374b9c0569c2f569')
    As you all can see, I hacked parts of this script so as to run a simple ./configure make make install in $PKG/usr fakeroor, and pack it into an Arch package.
    I have lots of questions, one at a time...
    1.) How do I know that something wont be over written as soon as I run pacman -U my-pkg.tar.xz  ?
    2.) Since Directory structure of Ofeli respects Linux file structure, I decided to drop it in /usr... If it did not, I would probably ship it to /opt, but why /usr instead of /usr/local....?
    3.) I tried to make a similar hack with mbdyn,  http://www.aero.polimi.it/mbdyn/, but I failed. Standard autoconf install of mbdyn complies with ./configure make make install scheme, and it creates /usr/local/{bin lib libexec share }
    When I ran this PKGBUILD
    #  Maintainer: Loui Chang <louipc dot ist at gmail company>
    pkgname=mbdyn
    pkgver=1.3.15
    pkgrel=1
    pkgdesc="A MultiBody Dynamics analysis package"
    url="http://brlcad.org"
    license=('LGPL' 'BSD' 'custom:BDL')
    #install=brlcad.install
    arch=('i686' 'x86_64')
    #makedepends=('bc' 'libxslt')
    #depends=('boost' 'flex' 'libpng' 'zlib' 'libgl' 'tk>=8.5')
    #options=('!libtool')
    source=(mbdyn-1.3.15.tar.gz)
    build() {
        cd $srcdir/$pkgname-$pkgver
        ./configure --prefix=/usr
    #    --with-opengl=/usr/lib \
    #    --with-tcl=/usr/lib \
    #    --disable-step \
    #    --disable-tkhtml3 \
    #    --disable-tkimg \
    #    --disable-opennurbs
    # For opennurbs, etc
    # gcc -I/opt/brlcad/include -L/opt/brlcad/lib
        make || return 1
    package() {
        cd $srcdir/$pkgname-$pkgver
        make DESTDIR=$pkgdir install || return 1
    #    install -D -m755 $srcdir/brlcad.sh $pkgdir/etc/profile.d/brlcad.sh
    #    mkdir -p $pkgdir/usr/share/licenses/$pkgname
    #    cp $srcdir/$pkgname-$pkgver/doc/legal/bdl.txt \
    #        $pkgdir/usr/share/licenses/$pkgname
    #    cp $srcdir/$pkgname-$pkgver/doc/legal/bsd.txt \
    #        $pkgdir/usr/share/licenses/$pkgname
    #md5sums=('8ccbc692d84854c9b0599b6d1255f916'
    #         '4922e66ff0835169374b9c0569c2f569')
    ( Similar hack of BRLCAD PKGBUILD )  it failed when trying to create libexec...   how can I change this....?
    4.) suppose I want to untar a package.zip in /opt/package, and make a script in /usr/bin/ called "package" containing 'cd /opt/package&&./initscript.sh' properly chmoded as executable, How do I build a PKGBUILD to build a package which once installed will perform this...?
    Most of these questions can seem n00bish, but i am not a great Archer yet...  just a little Archer trying to learn something.... 

    1) pacman will yell at you if there are file conflicts. Generally, if you're packaging something that already exists, you should tack on a suffix (e.g. -git or -nox) to describe the difference. The "official" package then makes it into the conflicts array of your modified package.
    2) /usr/local is generally reserved for things that won't fall under the domain of the package manager. See the FHS for more details.
    3) libexec is avoided in Arch because it does not adhere to the FHS (see above link). The files that go to /usr/libexec should probably end up in /usr/lib instead. Look at the help provided by the config script (./configure --help).
    4) You don't need an install scriptlet to chmod files. Set the permission bits in the package() function after they're moved into place.

  • Celtx - Need guidance with first PKGBUILD

    Ok, I decided to make my first PKGBUILD, and chose Celtx (http://celtx.com/) since it seems like a very useful tool, and not too complicated. 
    I already installed it manually and it works fine. However, although they state it's open source, the sources aren't available on their website...only language-specific compiled packages. Can I make a package for the AUR without sources?
    Anyway, these are the installation steps I had in mind: extract tar.gz to the /opt directory --> create a symlink for /opt/celtx/celtx in /usr/bin --> copy the license to its appropriate folder (/usr/share/licenses/celtx).
    I think that's it. Am I missing something or trying to do something I shouldn't? It seems simple enough and I'm working on the PKGBUILD, but I would still like to know if I should even finish it based on my first question concerning the lack or sources.

    Oh well, I finished before getting a response. Doesn't matter...I'm just glad I did something, regardless of how inconsequential. 
    If anyone wants to take a look at it below, and point out any mistakes, I would be grateful. By the way, it does work. I built the package and installed it with pacman, and everything is where it should be, and it runs. 8)
    pkgname=celtx
    pkgver=0.9.8
    pkgrel=1
    pkgdesc="Pre-production software for film, video, theatre, and animation"
    url="http://celtx.com/"
    license="custom:CePL"
    arch=(i686)
    source=(http://www.celtx.com/download/Celtx.tar.gz)
    md5sums=('f59759e16b3d64e3592aaf37641ee5b8')
    build() {
    mkdir -p $startdir/pkg/opt/
    cp -R $startdir/src/$pkgname $startdir/pkg/opt/$pkgname/
    mkdir -p $startdir/pkg/usr/bin/
    ln -sf $startdir/pkg/opt/$pkgname/$pkgname $startdir/pkg/usr/bin/$pkgname
    mkdir -p $startdir/pkg/usr/share/licenses/custom/$pkgname
    cp $startdir/license.txt $startdir/pkg/usr/share/licenses/custom/$pkgname/

  • My first PKGBUILD - Accentuate 1.0

    Hi everyone, I started to practice some ABS, and i created a simple PKGBUILD to install accentuate (it's a fork of KeyJnote, now unreachable for legal issues), a software to present pdf or png slideshows with interesting (and sometimes hidden) features.
    Because it is the first PKGBUILD I'm going to release in the AUR, It would be great if someone gave me a little review of what I've done.
    Here it is:
    # Contributor: Asa Marco <marcoasa90 <at> gmail.com>
    pkgname="accentuate-git"
    pkgver=20081023
    pkgrel=1
    license="GPL"
    arch=('i686' 'x86_64')
    pkgdesc="Presentation tool based on KeyJNote, with many eyecandy effects"
    depends=('python' 'python-opengl' 'python-pygame' 'pil' 'poppler')
    makedepends=('git')
    optdepends=('mplayer: needed to play audio and videos')
    source=()
    url="http://www.cs.rit.edu/~jrm8005/accentuate.html"
    md5sums=()
    _gitroot="git://repo.or.cz/accentuate.git"
    _gitname="accentuate"
    build() {
    git clone $_gitroot
    cd $startdir/src/$_gitname
    install -D -m755 accentuate ${startdir}/pkg/usr/bin/accentuate
    Another way to make it works, could look like this:
    source=('http://repo.or.cz/w/accentuate.git?a=snapshot;h=heads/master;sf=tgz')
    url="http://www.cs.rit.edu/~jrm8005/accentuate.html"
    md5sums=()
    _gitname="accentuate"
    build() {
    cd $startdir/src/$_gitname
    install -D -m755 accentuate ${startdir}/pkg/usr/bin/accentuate
    Considering that the second option doesn't need any makedepends, what's the best approach?
    Any suggestion is wellcome!

    I like the first way best and having git as an extra dependency isn't really an issue.
    Now, the PKGBUILD looks great (considering it's your first), although there is room for improvement. For starters, you can base your package on /usr/share/pacman/PKGBUILD-git.proto (here's a newer version), which is a nice template for git packages. Doing so will help create a more sophisticated package whilst preventing order inconsistencies. Another thing you might want to do is to remove empty fields from the PKGBUILD (i.e.: source, md5sums, etc), purely for aesthetic reasons. Lastly and more importantly, the license field must be an array instead of a string.
    All three of the above are minor issues and shouldn't put you off.
    Edit: You may as well leave python out of the dependencies list, as it's implicitly required by the rest of the python packages.
    Last edited by foutrelis (2008-10-24 01:53:06)

  • My first PKGBUILD (MultiGPG)

    Hello everyone,
    I wrote a little script and now I would like to submit it to the AUR. Since this is my first PKGBUILD I am posting here to ask if I did anything wrong.
    You can check it out here:MultiGPG. The PKGBUILD is in the AUR directory.
    Any comments?
    Greetings,
    Faerbit

    Faerbit wrote:
    Hello everyone,
    I wrote a little script and now I would like to submit it to the AUR. Since this is my first PKGBUILD I am posting here to ask if I did anything wrong.
    You can check it out here:MultiGPG. The PKGBUILD is in the AUR directory.
    Any comments?
    Greetings,
    Faerbit
    EDIT: make sure to install the binary as executable, that is
    install -Dm755 $pkgname "$pkgdir"/usr/bin
    Last edited by lspci (2014-01-10 23:49:30)

  • My first PKGBUILD - stock ticker style output on the console

    I created my first PKGBUILD of a simple program I wrote called "ticker" which just converts input text to scrolling stock ticker style output on the console.
    The PKGBUILD and a screenshot are at http://www.fial.com/~scott/ticker 
    I'd like to submit it to the AUR, but I'd really appreciate any comments/advice first.
    Scott
    Last edited by scottfial (2010-07-04 00:38:38)

    Writing what it's about in your post (title) would help building interest, I suppose.

  • Help with my first PKGBUILD script [solved]

    Hi There
    I am trying to write my first PKGBUILD script and I am landing in a bit of trouble.  The script is short and is:
    #Contributor: iKevin <kellwood-at-ameritech.net>
    pkgname=fpm
    pkgver=0.60
    pkgrel=1
    pkgdesc="A password manager for gnome"
    url="http://fpm.sourceforge.net"
    license="GPL"
    depends=('xorg' 'gtk' 'glibc' 'libgnome' 'libxml2' 'glib')
    source=(http://heanet.dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
    md5sums=(be7655d300c306c8f962f6aad0a60cc5)
    build() {
    cd $startdir/src/$pkgname-$pkgver
    ./configure --prefix=/usr
    make || return 1
    mkdir -p $startdir/pkg/usr/bin
    make prefix=$startdir/pkg/usr install
    I haven't reach the point where it compiles.  It failes to download the file.  Oddly, when I type:
    wget http://heanet.dl.sourceforge.net/source … .60.tar.gz
    it downloads fine.  When running makepkg, the contents of ./src/fpm-0.60.tar.gz is some kind of web page.
    I have eyeballed this PKGBUILD script for a while and I can't see any problems.  Is there something special about sourceforge files?  I feel that I must have a typo because makepkg is using wget, which works by hand.
    Thanks
    Kev

    Well,
    I installed kedpm with my first working PKGBUILD script.  I was able to import my "fpm" password file.  Once I get my gnucash stuff transfered into grisbi, I will be able to switch my main machine completely to archlinux.
    I know it is trivial for you guys, but here is my script -- it might save you some typing.
    Kev
    pkgname=kedpm
    pkgver=0.4.0
    pkgrel=1
    pkgdesc="Ked Password Manager helps to manage large amounts of passwords and related information"
    url="http://kedpm.sourceforge.net/"
    depends=(python pygtk pycrypto)
    makedepends=()
    conflicts=()
    replaces=()
    backup=()
    install=
    source=(http://dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
    md5sums=('6b83a646873f8ea00af9c6403aa259bc')
    build() {
    cd $startdir
    mkdir -p pkg/usr
    cd $startdir/src/$pkgname-$pkgver
    python setup.py install --prefix=$startdir/pkg/usr

Maybe you are looking for