First PKGBUILD
Hello,
I'm trying to create an AUR package for a vim plugin. I've read the wiki and mostly just tried to copy from a working PKGBUILD in the AUR.
Basically, the only thing my package needs to do is copy the .vim file to $HOME/.vim/ftplugin/tex on install, and on uninstall it should delete the file.
I've come up with this:
pkgname=tex-pdf
pkgver=1.41
pkgrel=1
_scriptid=18261
pkgdesc="Vim plugin for lightweight TeX compilation"
arch=('any')
url="http://www.vim.org/scripts/script.php?script_id=3230"
license=('unknown')
depends=('vim')
groups=('vim-plugins')
source=(${pkgname}.vim::http://www.vim.org/scripts/download_script.php?src_id=${_scriptid})
md5sums=('265515e570b851fa74907231b2178615')
package() {
cd ${srcdir}
install -m 700 -d tex_pdf.vim \
$pkgdir/$HOME/.vim/ftplugin/tex/tex_pdf.vim
Now I can create and install the package (the file is copied to the right directory after install), but there are some problems:
1. On uninstall it deletes my $HOME./vim folder!
2. Namcap of the resulting package
tex-pdf W: File (home/) exists in a non-standard directory.
tex-pdf W: File (home/kevin/) exists in a non-standard directory.
tex-pdf W: File (home/kevin/.vim/) exists in a non-standard directory.
tex-pdf W: File (home/kevin/.vim/ftplugin/) exists in a non-standard directory.
tex-pdf W: File (home/kevin/.vim/ftplugin/tex/) exists in a non-standard directory.
tex-pdf W: File (home/kevin/.vim/ftplugin/tex/tex_pdf.vim/) exists in a non-standard directory.
tex-pdf W: Directory (home/kevin/.vim/ftplugin/tex/tex_pdf.vim) is empty
tex-pdf W: Dependency included and not needed ('vim')
3.
warning: directory permissions differ on home/kevin/
filesystem: 700 package: 755
Forgive my ignorance regarding creating AUR packages, I've tried to mimick some existing ones regarding vim plugins but to no avail so far. A push in the right direction would be cool!
A couple of notes on the packaging:
1. You don't need '|| return 1' anymore. The build will automatically fail if anything fails.
2. The downloaded file is a '.tar.gz' not a '.vim'. You probably shouldn't give it a '.vim' extension.
3. There is a reason the plugin is packaged under 'ftplugin/tex/' and not 'plugin/'. Putting the plugin under the former causes it to run only when editing a tex file while putting it under the latter causes it to always run.
4. VIM plugin packages are usually named 'vim-<name>' so this package would be vim-tex-pdf.
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-8Allan 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/$nameOK 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,
FaerbitFaerbit 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
KevWell,
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 -
First PKGBUILD, Faulty when Installed by Pacman?
I'm trying to package this:
Enigma-dev (git)
http://enigma-dev.org/
I'm having a problem with it when it gets installed by pacman, where it tries to compile itself again..
PKGBUILD:
pkgname=enigma-dev-git
pkgver=0.0.0
pkgrel=1
pkgdesc="ENIGMA, the Extensible Non-Interpreted Game Maker Augmentation."
url="http://enigma-dev.org"
arch=('x86_64' 'i686')
license=('GPL')
depends=('alure' 'zlib' 'openal' 'libx11' 'libgl' 'mesa' 'gtk2' 'dumb' 'jre7-openjdk') # gcc in base-devel, not required to be listed.
optdepends=()
makedepends=('git' 'python')
conflicts=('lateralgm')
provides=('lateralgm')
replaces=()
backup=()
source=('http://enigma-dev.org/docs/wiki/images/4/47/Lateralgmlogo.png') # putting the git url in here causes the python configuration to fail for some reason..
md5sums=('e6daacba04f0491b256f8a4d2cc9181a')
build() {
if [[ -d $pkgname ]]; then
msg "previous cloned repo detected, removing"
rm -rf $pkgname
fi
msg "Cloning git repo.."
git clone git://github.com/enigma-dev/enigma-dev.git ${pkgname}
cd "${srcdir}/${pkgname}"
msg "Starting python config.."
python install.py
cd "${srcdir}/${pkgname}/ENIGMAsystem/SHELL/"
msg "Starting compile.."
# make # fix for some errors.. stopped happening, so commenting this out.
cd "${srcdir}/${pkgname}"
make
pkgver () {
# this doesn't really work because pkgver is executed before build, so there is no local repo. and there is no apparent way to get remote revision numbers if there are no tags..
# I tried cloning the repo here instead of in build, but that didn't work either.. so basically this only returns anything useful if you try and install it twice.
cd "${srcdir}/${pkgname}"
echo $(git rev-list --count HEAD).$(git rev-parse --short HEAD)
package() {
cd "${srcdir}/${pkgname}"
install -Dm644 ./pluginsource/COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
cp -r ./packages/linux/usr/share "${pkgdir}/usr"
cp -r ./packages/linux/usr/bin "${pkgdir}/usr/bin"
cp -r "${srcdir}/${pkgname}" "${pkgdir}/usr/share/${pkgname}"
cd "${pkgdir}/usr/share/applications/"
cat <<EOF > lateralgm.desktop # a quick hack for a lateralgm.desktop
[Desktop Entry]
Type=Application
Name=LateralGM
Exec=lateralgm
Comment=Game Development IDE for Enigma written in java
Icon=lateralgm
Terminal=false
Path=/usr/bin/
Categories=Application;Development;IDE;
StartupNotify=false
MimeType=application;application/x-gm81;application/x-gmk;application/x-gm6;application/x-gmd;application/x-egm;application/x-gm50;application/x-gm51;application/x-gm52;application/x-gm53;application/x-gm60;application/x-gm61;application/x-gm71;application/x-gm80;application/x-gm81;
EOF
chmod +x lateralgm.desktop
chmod +x enigma-dev.desktop
cd "${pkgdir}/usr/bin/"
cat <<EOF > lateralgm # and another so lateralgm exists in $PATH
# excute lateralgm jar file.
cd /usr/share/$pkgname/ # fix for strange bug, where you have to be in the same directory as lgm12b4.jar.
java -jar lgm16b4.jar
EOF
chmod +x lateralgm
cd ${pkgdir}
mkdir -p ./usr/share/icons/hicolor/128x128/apps/
mkdir -p ./usr/share/icons/hicolor/scalable/apps/
mv "${startdir}/Lateralgmlogo.png" ${pkgdir}/usr/share/icons/hicolor/128x128/apps/lateralgm.png
cd "${pkgdir}/usr/share/"
cp ./pixmaps/enigma-dev.svg "${pkgdir}/usr/share/icons/hicolor/scalable/apps/enigma-dev.svg"
# remove some extra stuff to help reduce package size; more of this is may be possible.
rm -rf "${pkgdir}/usr/share/${pkgname}/packages"
# vim:set ts=2 sw=2 et:
based of these installation directions:
http://enigma-dev.org/docs/Wiki/Install:Git
(which I have followed and work fine)
For one thing, there doesn't seem to be a install target for make, so I just copied the whole thing into /usr/share/
My main problem is that normally the compilation is handeld by the java lateralgm program the first time it's run, though just running make works fine.
until pacman installs it, that is.
It still works after being copied, I can run it in $srcdir/enigma-dev-git/ ,
but when I try and run it both by just running lateralgm and cd ing to /usr/share/enigma-dev-git/ then java -jar lgm16b4.jar it will try and compile enigma like it never was compiled in the first place (of course, it can't because it doesn't have root permissions)..
I didn't see any diference in the permissions between $srcdir/enigma-dev-git/ and /usr/share/enigma-dev-git.
I even tried having it install into ~/ with pacman just to see what happened but same thing..
However, I can copy the contence of $srcdir to ~/ and it will work..
Anyone know what might be the issue? (or how to improve anything else?)
Thanks
Last edited by gandalf3 (2013-05-23 18:37:36)Scimmia wrote:
Have you tried simply dumping the whole thing to opt and putting a script in /usr/bin to run the necessary command? Just what all are you trying to copy to /usr and /usr/bin, anyway? It could very well be as simple as
cd /opt/enigma-dev
java -jar lgm16b4.jar
Of course as Josh @ Dreamland points out, you need to make sure /opt/enigma-dev is world writable.
That is exactly what is going into /usr/bin..
Anyway, I get the same error when trying to run the jarfile directly, so it's not the /usr/bin script..
As for /usr, it's just all the icons and stuff that is in $srcdir/enigma-dev/packages/linux/usr/share
ah.. so do have to change the permissions of /opt/enigma-dev-git..
I thought that scince it was already compiled it wouldn't have to write anything to /opt/enigma-dev-git.. (I thought that it was lateralgm doing the writing when it compiled enigma, and I didn't have to worry because it already was compiled by then)
I guess I misunderstood, I'm trying it now with permissions.
EDIT:
Seems to work, but is it AUR worthy?
Here's where everything is now:
PKBGUILD:
pkgname=enigma-dev-git
pkgver=0.0.0
pkgrel=1
pkgdesc="ENIGMA, the Extensible Non-Interpreted Game Maker Augmentation."
url="http://enigma-dev.org"
arch=('x86_64' 'i686')
license=('GPL')
depends=('alure' 'zlib' 'openal' 'libx11' 'libgl' 'mesa' 'gtk2' 'dumb' 'java-runtime') # gcc also a dependency, but in base-devel.
optdepends=()
makedepends=('git' 'python')
conflicts=('lateralgm')
provides=('lateralgm')
replaces=()
backup=()
install='enigma-dev-git.install'
source=('lateralgm' 'lateralgm.desktop' 'git://github.com/enigma-dev/enigma-dev.git' 'http://enigma-dev.org/docs/wiki/images/4/47/Lateralgmlogo.png') # putting the git url in here causes the python configuration to fail for some reason..
md5sums=('c41602b12926d8462fb1cdb4753e4be7' 'd4894261248f2657614a177cd1a94bc3' 'SKIP' 'e6daacba04f0491b256f8a4d2cc9181a')
build() {
cd "${srcdir}/enigma-dev"
msg "Starting python config.."
python install.py
cd "${srcdir}/enigma-dev/ENIGMAsystem/SHELL/"
msg "Starting compile.."
# make # fix for some errors.. stopped happening, so commenting this out.
cd "${srcdir}/enigma-dev"
make
pkgver () {
cd "${srcdir}/enigma-dev"
echo $(git rev-list --count HEAD).$(git rev-parse --short HEAD)
package() {
mkdir "${pkgdir}/opt/"
install -Dm644 "${srcdir}/enigma-dev/pluginsource/COPYING" "$pkgdir/usr/share/licenses/$pkgname/COPYING"
cp -r -a "${srcdir}/enigma-dev/packages/linux/usr/share" "${pkgdir}/usr"
cp -r -a "${srcdir}/enigma-dev/packages/linux/usr/bin" "${pkgdir}/usr/bin"
cp -r -a "${srcdir}/enigma-dev" "${pkgdir}/opt/${pkgname}"
cd "${pkgdir}/usr/bin/"
install -D "${srcdir}/lateralgm" "${pkgdir}/usr/bin/lateralgm"
chmod +x "${pkgdir}/usr/bin/lateralgm"
install -D "${srcdir}/lateralgm.desktop" "${pkgdir}/usr/share/applications/lateralgm.desktop"
install -D "${srcdir}/Lateralgmlogo.png" ${pkgdir}/usr/share/icons/hicolor/128x128/apps/lateralgm.png
install -D "${pkgdir}/usr/share/pixmaps/enigma-dev.svg" "${pkgdir}/usr/share/icons/hicolor/scalable/apps/enigma-dev.svg"
# remove some extra stuff to help reduce package size; more of this is may be possible.
rm -rf "${pkgdir}/usr/share/${pkgname}/packages"
# vim:set ts=2 sw=2 et:
enigma-dev-git.install:
# arg 1: the new package version
post_install() {
chmod -R 766 /opt/enigma-dev-git
# arg 1: the old package version
pre_remove() {
chmod -R 744 /opt/enigma-dev-git
vim:set ts=2 sw=2 et:
/usr/bin script:
# excute lateralgm jar file.
cd /opt/enigma-dev-git/ # fix for strange bug, where you have to be in the same directory as lgm16b4.jar.
java -jar lgm16b4.jar
Thanks..
Last edited by gandalf3 (2013-05-28 21:28:23)
Maybe you are looking for
-
Hi All, when i type transaction code "MM01" the following error is showing. "Message No: CZ314 : Batch definition level not known system inconsistency" can any one please give me solution for that. Thanku Mahesh
-
Hi Gurus In the master customer database, we are allowed to enter only 1 price group. If more than 1 price group is applicable to our customer, what should we do? I have this case whereby Price Group "X" and "Y" are applicable to our customer. Thanks
-
My Mac Won't Read Windows XP Pro Disk T_T I Need Help...
My Mac will not read my XP Pro disc. It is not an original but it is an exact copy that runs perfectly on a PC. I have been told by a number of people that there is no reason that it won't work. I simply tell Boot Camp Assistant to start the installe
-
We are on 11.5.10, for the last couple of days we are facing issue at applicaiton tier that folder "/usr/tmp "is being filled very frequently, due to this application not work. Therefore, we have to remove file under the mentioned folder. Why this fo
-
Ok, I just signed up with Izymail. I have a paid Hotmail Plus email account. So far, I have been able to get one new, unread email to come up on my iPhone that I sent to myself; however, it was after a long delay (like 10-15 minutes after I sent it.)