First PKGBUILD, comments are welcomed

Hi,
I adopted the orphan package Selfoss and modified the PKGBUILD and .install files. Since this is my first one, I thought I post it here first. So if anybody has any input I would really appreciate it.
The two big differences between my PKGBUILD and the original is that I moved the config file to /etc/selfoss/.. and that I keep the old data folder (on upgrades). I keep the data folder because the selfoss homepage states that you should on upgrades
Upload all new files and folders excluding the data folder
My main concern is this folder thing (which I do in the .install file). My suspicion is that I maybe don't need to restore the old data folder. I made some quick tests, and it looked like pacman kept everything that had been added or modified after the last install. But I really don't know when or how pacman will change stuff on a upgrade. So I started looking for answers. First on the wiki, like on pages about ABS, PKGBUILD, creating packages and the Arch packaging standards and then on the forum. But I didn't find it..
Anyhow, here's my PKGBUILD and .install . Thanks in advance!
PKGBUILD
# Maintainer: Maxim Andersson <[email protected]>
# Contributor: Tetsumaki <http://goo.gl/YMBdA>
pkgname=selfoss
pkgver=2.9
pkgrel=1
pkgdesc="The new multipurpose rss reader, live stream, mashup, aggregation web application"
arch=('any')
url="http://selfoss.aditu.de/"
license=('GPL3')
depends=('php>=5.3')
optdepends=('apache: is depedency if you do not use lighttpd or nginx'
'lighttpd'
'nginx'
'mariadb: is depedency if you do not use postgresql or sqlite'
'postgresql'
'sqlite'
'php-sqlite: is dependacy if you use sqlite'
'wget: for automatic updating feeds with cron'
'curl: for automatic updating feeds with cron')
conflicts=('selfoss-git')
backup=('etc/webapps/selfoss/config.ini')
install=${pkgname}.install
source=("http://selfoss.aditu.de/${pkgname}-${pkgver}.zip"
"${pkgname}.install")
sha256sums=('9bf3642c7de146c1a89c336ad5fc77e1823d125d7dbfed9060c6c7c2cdc8ec39'
'f59a0de2ee13d83a263a8f1a0c25ee3542e1981d6ead19af299999818975e142')
package() {
rm -rf README.md ${pkgname}-${pkgver}.zip
install -d "${pkgdir}"/usr/share/webapps/${pkgname}
cp -rf . "${pkgdir}"/usr/share/webapps/${pkgname}/
# move config to etc
install -d "${pkgdir}"/etc/webapps/${pkgname}
sed '4,$s/^/;/' "${pkgdir}"/usr/share/webapps/${pkgname}/defaults.ini > "${pkgdir}"/etc/webapps/${pkgname}/config.ini
chmod 755 "${pkgdir}"/usr/share/webapps/${pkgname}/{data/cache,data/favicons,data/logs,data/sqlite,data/thumbnails,public}
chown -R http: "${pkgdir}"/usr/share/webapps/${pkgname}
# vim:set ts=2 sw=2 et:
selfoss.install
link_config() {
ln -sf /etc/webapps/selfoss/config.ini /usr/share/webapps/selfoss/config.ini
chown http: /usr/share/webapps/selfoss/config.ini
post_install() {
link_config
echo ""
echo "==> Installed in : /usr/share/webapps/selfoss"
echo "==> Change RewriteBase in .htaccess"
echo "==> Check http://selfoss.aditu.de/ for details."
echo ""
echo "==> Config is now at /etc/webapps/selfoss/config.ini"
echo ""
pre_upgrade() {
# save old config (from pkgbuild 2.8)
[[ -f /usr/share/webapps/selfoss/config.ini && ! -f /etc/webapps/selfoss/config.ini ]] \
&& install -Dm644 /usr/share/webapps/selfoss/config.ini /etc/webapps/selfoss/config.ini
[[ -f /usr/share/webapps/selfoss/config.ini && -f /etc/webapps/selfoss/config.ini ]] \
&& install -Dm644 /usr/share/webapps/selfoss/config.ini /etc/webapps/selfoss/config.ini.backup
# temporarily backup data folder
rm -rf /tmp/data
cp -rf /usr/share/webapps/selfoss/data /tmp/ 2> /dev/null
post_upgrade() {
link_config
# restore data folder
if [[ -d /tmp/data ]]; then
rm -rf /usr/share/webapps/selfoss/data
cp -rf /tmp/data /usr/share/webapps/selfoss/
fi
rm -f /usr/share/webapps/selfoss/public/{all.css,all.js}
[[ -d /usr/share/webapps/selfoss/data/icons ]] \
&& mv -f /usr/share/webapps/selfoss/data/{icons,favicons}
echo ""
echo "==> For a clean update:"
echo "==> Change RewriteBase in .htaccess"
echo "==> Refresh your browser cache (CTRL+R in most cases)"
echo "==> Check http://selfoss.aditu.de/ for details."
echo ""
echo "==> Config is now at /etc/webapps/selfoss/config.ini"
echo ""
For reference, here's the AUR page with the old PKGBUILD.

Ok, so here's how my PKGBUILD and .install looks like now.
PKGBUILD
# Maintainer: Maxim Andersson <[email protected]>
# Contributor: Tetsumaki <http://goo.gl/YMBdA>
pkgname=selfoss
pkgver=2.9
pkgrel=1
pkgdesc="The new multipurpose rss reader, live stream, mashup, aggregation web application"
arch=('any')
url="http://selfoss.aditu.de/"
license=('GPL3')
depends=('php>=5.3')
optdepends=('apache: server, depedency if not using lighttpd or nginx'
'lighttpd: server, depedency if not using apache or nginx'
'nginx: server, depedency if not using lighttpd or apache'
'mariadb: database, depedency if not using postgresql or sqlite'
'postgresql: database, depedency if not using mariadb or sqlite'
'sqlite: database, depedency if not using postgresql or mariadb'
'php-sqlite: dependency if using sqlite'
'wget: for automatic updating feeds with cron'
'curl: for automatic updating feeds with cron')
backup=('etc/webapps/selfoss/config.ini')
install=${pkgname}.install
source=("http://selfoss.aditu.de/${pkgname}-${pkgver}.zip")
sha256sums=('9bf3642c7de146c1a89c336ad5fc77e1823d125d7dbfed9060c6c7c2cdc8ec39')
package() {
rm -rf "${srcdir}"/{README.md,${pkgname}-${pkgver}.zip}
install -d "${pkgdir}"/usr/share/webapps/${pkgname}
cp -af "${srcdir}"/. "${pkgdir}"/usr/share/webapps/${pkgname}/
# create config in /etc
install -d "${pkgdir}"/etc/webapps/${pkgname}
sed '4,$s/^/;/' "${pkgdir}"/usr/share/webapps/${pkgname}/defaults.ini > "${pkgdir}"/etc/webapps/${pkgname}/config.ini
ln -sf /etc/webapps/${pkgname}/config.ini "${pkgdir}"/usr/share/webapps/${pkgname}/config.ini
chmod 755 "${pkgdir}"/usr/share/webapps/${pkgname}/{data/cache,data/favicons,data/logs,data/sqlite,data/thumbnails,public}
chown -R http: "${pkgdir}"/usr/share/webapps/${pkgname}
# vim:set ts=2 sw=2 et:
.install
post_install() {
echo ""
echo "==> Installed in : /usr/share/webapps/selfoss"
echo "==> Change RewriteBase in .htaccess"
echo "==> Check http://selfoss.aditu.de/ for details."
echo ""
echo "==> Config is now at /etc/webapps/selfoss/config.ini"
echo ""
pre_upgrade() {
# save old untracked config (from pkgbuild 2.8) and make it tracked
[[ -f /usr/share/webapps/selfoss/config.ini && ! -h /usr/share/webapps/selfoss/config.ini ]] \
&& install -Dm644 /usr/share/webapps/selfoss/config.ini /etc/webapps/selfoss/config.ini
post_upgrade() {
rm -f /usr/share/webapps/selfoss/public/{all.css,all.js}
echo ""
echo "==> For a clean update:"
echo "==> Change RewriteBase in .htaccess"
echo "==> Refresh your browser cache (CTRL+R in most cases)"
echo "==> Check http://selfoss.aditu.de/ for details."
echo ""
echo "==> Config is now at /etc/webapps/selfoss/config.ini"
echo ""
pre_remove() {
# remove untracked files
find /usr/share/webapps/selfoss/data/ -type f -exec rm -f '{}' ';' 2> /dev/null
rm -f /usr/share/webapps/selfoss/public/{all.css,all.js}
Thanks for all the time you spent explainting stuff! Really appreciate it. Can't wait to adopt a new PKGBUILD or maybe make a new one
The only thing I wasn't able to do was to put the data directory in /var/lib/. On upgrades pacman complained about the new link (ln -s /var/lib/.. data), because it was already tracking a directory with the same name ('data'). But that's no big deal.
Last edited by thesilentboatman (2014-02-10 17:13:22)

Similar Messages

  • Comments are welcome!

    I've written a small app using AppleScript and Growl.
    It puts the lyrics of the current iTunes' selected or playing song in a (Growl)window.
    Both Growl and my app are free.
    My point is, if you like the app as it is great. Keep it and have fun. However, if you do not or have any criticisms and suggestions, I'd like to hear them.
    Thank you.
    Deivy

    Hi James,
    first, I do not have any connections with the Growl team, unfortunately.
    Growl is an application that receives messages from other applications and passes these messages to the user.
    So, if you use HarwareGrowl, which I really recommend, if you connect a device (say a printer) to your USB port, it will display a window with a message stating that "the printer X was connected in USB port y" or something to this order. Which is excellent to diagnose any possible USB connection problem.
    In the case of the script I wrote, the window will display the lyrics of the current playing song.
    You can read more about Growl in its website.
    Independent of using my script, I really recommend Growl.
    Deivy

  • Contribution, Ideas and comment are welcomed

    By seeing this problem of classpath every day, can't we create a small jar file that it can check for jar file needed to be put in the classpath. A small application just with a File Choose to choose the jar file
    Any suggestion!

    no point. manipulating the classpath should be something all developers can do. a deployed application isn't going to be able to ask users to locate jars in that way, or at least I hope the developer that does it gets fired. learn to use the classpath on your development machine, and deployment becomes cleaner. you wouldn't believe some of the "deployments" that appear, only able to run on the developers machine or something, because they relied on local classpath hacks

  • 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)

  • Site Survey Theory .... All Comments, Thoughts, and Theories are welcome

    Hello All,
    I am seeking opinions about a survey methodology that was told to me today.  I have my own thoughts about it but I just want to make sure I'm not off base so any help is greatly appreciated.  The requirements for the wireless network are as follows:
    - Data and Voice
    - Clients will utilize all bands but newer devices will be pushed to 5GHz 
    - Clients are laptops and iPads right now but the future goal is to implement BYOD
    So, here is the methodology that was told to me ... "We survey only in the 5GHz spectrum because if you have coverage in that spectrum (5GHz) the coverage in the 2.4GHz will be the fine or even better than that.  Therefore, we feel comfortable not capturing the data in the 2.4GHz spectrum." 
    Thoughts about the above statement are welcome!!!
    Thanks,
    Malwan

    The essential question for a high-density design is how many channels for each band will be needed to match the client base? This can be a tricky question since even dual band capable clients do not always select the faster 5 GHz band. Since bandwidth in 2.4 GHz is going to be limited, 5 GHz must be relied on to reach the goal.
    Dual band adapters have been shipping with most laptops for some time. This does not mean that every laptop is a dual band client, but many are. Simply having a dual band client does not guarantee that it will choose 5 GHz over 2.4 GHz. The Microsoft Windows operating system defaults to a Wi-Fi channel search that starts with the 5 GHz channel 36 and continues searching through all of the 5 GHz channels that the client is capable of. If no 5 GHz AP is found then it will continue the search in 2.4 GHz starting at channel 1. Unless the Windows default is changed or the user has chosen a third party Wi-Fi utility to set spectrum preference to 2.4 GHz, the client radio will first try to associate to a 5 GHz AP. Apple Computer's latest release for Atheros and Broadcom chipsets also searches 5 GHz first.
    The Cisco BandSelect feature enables the infrastructure to optimize these types of client connection choices. Where possible, it helps make sure that devices are attaching to the 5 GHz spectrum channels where interference sources tend to be significantly lighter. A much greater channel selection leads to the alleviation of bandwidth challenges.
    Tablet computers and smartphones have begun entering the market at a staggering rate. The vast majority of smartphones shipping today operate in 2.4 GHz only. While many of them are 802.11n clients, of these most have implemented a single input single output (SISO) rather than Multiple Input, Multiple Output (MIMO). A SISO device is only capable of supporting MCS7 data rates, or 54 Mbps.

  • 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.

  • R3load EXPORT tips for 1,5 TB MAXDB Database are welcome!

    Hello to ALL;
    this post is addressed to ALL MAXDB-GURU's !!
    I'v few questions to MAXDB Performance-Guy's for R3load Export on MAXDB!
    (remark to my person:
    I'm certified OS/DB migration consultant and have already done over 500 OS/DB migrations since 1995 successfully)
    BUT now I'm face with following setup for Export:
    HP- IA64 BL870c,  4 CPUu2019s Dual-Core + Hyperthreading activ (mean's 16 "CPU'S" shown via top or glance)
    64 GB RAM, HPUX V11.31;
    MAXDB  7.7.07
    ECC 5.0; Basis/Aba 640.22
    SAP-Kernel 640-Unicode Patch 381
    8 sapdatas are configured on unique 200GB LUN's and VG's in HP-UX; on storage-side the 8 220GB LUN's are located on (only) 9 300GB-Disks with Raid-5 Level and within HP-UX each VG/LVOL is mirrored via LVM to a second desasterdatacenter (200m distance)
    LOGFILES:
    2 x 4 GB LUN Raid-1 on Storage and via LVM  also mirrored to failover-center
    MAXDB-Datasize: 1600 GB Overall and within this 1350 GB used, TEMPUsage about 25 GB !
    MAXDB-Parameter-Settings
    MAXCPUu2019s 10  (4 x IA64 QuadCore+Hyperthreading shows 16 Cores within top and galcne
    Cache_SIZE= I/O Buffer Cache = 16 GB (2.000.000 Pages)
    Data-Cache-HitRatio:  99.61%
    Undo-Cache = 99,98%
    the following sapnote for MAXDB Peformance and Migrations are well known and already processes
    928037, 1077887, 1385089, 1327874, 954268, 1464560, 869267,
    My major problem is the export-runtime with over 4 days on the first dry-run (6 R3load's running on Linux-APPL-Server), and 46h on second runtime, 6 R3loads running on DB-Server IA64)
    the third trail-run was aborted by me after 48hours and 50% export-dump-space was written. In all 3 dry-runs, no more than approx 3.5GB DUMP-Space were written per hour!
    My first question to all MAXDB-Guru'S: How can I influence/optimize the TEMP - Area in MAXDB?? I didn't find any hint's in SDN or SAPNOTES or MaxDB Wiki or google....As fare as I know, this TEMP area "resides" within MAXDB-datafiles, thus it's seperated on my 48 datafiles, spreaded over 8 LUN/VG/disks. But I see LESS throughput on disk's and MAXDB-Kernel uses only ONE of ten's cpu-cores (approx 80% - 120% of 1000%).
    The throughput or cpu-usage doesn't change when I use 2 or 4 or 10 or 16 R3load' processes in parallel. The "result" is always the same: approx. 3,5 GB Export-Dump and 1 CPU MAX-DB Kernelprocess is used !
    so the BIG Question for me: WHERE is the bottleneck ?? (RAID-5 Disk-LUNS mirrored with LVM ???)
    on HP-UX scsi_queue_depth_length I'v increased default value from 8 to 32 to 64 to 128 --> no impact
    2nd question:
    I'v read  OS-Note 1327874 - FAQ: SAP MaxDB Read Ahead/Prefetch, and we are running MAXDB 7.7.07.19! (MaxDB 7.8 is not suppored via PAM for IA64 640-UC-Kernel) and as far as I understood, this parameter will no HELP me on EXPORT with primary-key-sequence ! is this correct?  THUS: which parameter HELPS for speeding up Export-Runtime?
    MAXCPU is set to 10, but ONLY 1 of them is used??
    so this post is for ALL MAXDB GURU'S!
    who will be intrested to contriubte on this "high-sophisticated" migration-project with 1.5TB MAXDB-Database-size and ONLY 24h Downtime !!
    all tips and hints are welcome and I will give us coninued updates to this running project until WE did a successfull migration job.
    PS: Import is not yet started, but should be done within vSphere 5 and SLES 11 SP1 on MAXDB 7.8 ....and of yours in parallel to export with migration monitor, BUT again a challenge: 200km distance from source to traget system !!!
    NICE PROJECT;
    best regards Alfred

    Hi Alfred,
    nice project ... just some simple questions:
    Did you open a message at SAP? Maybe you could buy some upgrade support, this could be usefull to get direct access to the SAP support...
    Which byte order do you use? I know Itanium could use both. But it should be different, otherwise you would use a backup for the migration.
    And the worst question, I do not even want to ask: What about your MAXCPUS parameter? Is it set to more than 1? This could be the problem why only one CPU is used.
    Best regards
    Christian

  • 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, 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.

  • 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)

Maybe you are looking for