summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSpenser Reinhardt2017-09-02 20:55:21 -0400
committerDavid Manouchehri2017-09-04 15:29:36 -0400
commitca5c8848378349b870a00c55a7edf8f02a3775cd (patch)
tree2ae5f0662df72cb7e820b5cfdedbacfb5e454fb4
parent3ddfb9bb9bf237b33125648cd2466f4b7ff4d729 (diff)
downloadaur-ca5c8848378349b870a00c55a7edf8f02a3775cd.tar.gz
get rid of most hackyness, install properly, merge versions
-rw-r--r--.SRCINFO29
-rw-r--r--.gitignore2
-rw-r--r--PKGBUILD122
-rwxr-xr-xbinaryninja-personal2
-rw-r--r--binaryninja-personal.desktop6
-rw-r--r--binaryninja-personal.install11
-rw-r--r--binaryninja.install47
7 files changed, 155 insertions, 64 deletions
diff --git a/.SRCINFO b/.SRCINFO
index c07ec7d926fb..e4392b5d0e21 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,23 +1,40 @@
pkgbase = binaryninja-personal
pkgdesc = Binary Ninja is a binary multi-tool and reversing platform
pkgver = 1.1.922
- pkgrel = 1
+ pkgrel = 2
url = https://binary.ninja
arch = x86_64
license = custom:Binary Ninja License Agreement
- makedepends = git
+ makedepends = perl
makedepends = curl
+ depends = python2
+ depends = glibc
+ depends = glib2
+ depends = gcc-libs-multilib
+ depends = pcre
+ depends = zlib
+ depends = libssh2
+ depends = libnghttp2
+ depends = libpsl
+ depends = libxcb
+ depends = icu
+ depends = keyutils
+ depends = libxext
+ depends = libx11
+ depends = libglvnd
+ depends = krb5
+ depends = e2fsprogs
+ depends = libffi
+ depends = libxau
+ depends = libxdmcp
depends = libcurl-compat
+ depends = openssl-1.0
provides = binaryninja
conflicts = binaryninja
source = file://BinaryNinja-personal.zip
- source = binaryninja-personal
source = binaryninja.png
- source = binaryninja-personal.desktop
sha256sums = 0494658d9ec1aa13c71bd507addc3c457bf67ffde3e9838e035ebaeea97ac0fe
- sha256sums = 14025caefa4201062d7334505c56534dd237185f5ecdb4c20d7aad17c80647a7
sha256sums = ac2e652f617d5ef8aaa34a5113164f51f3f673c872a635d29c93878a00650bf8
- sha256sums = 36aea5c3f72563703b937b98381195de01084fcddacd6e4a3ed4bc48ae75c9a2
pkgname = binaryninja-personal
diff --git a/.gitignore b/.gitignore
index de9e9b575386..1959c2b790f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-BinaryNinja-personal.zip
+BinaryNinja-*.zip
diff --git a/PKGBUILD b/PKGBUILD
index 39c68b28b230..97f17b5ea2dd 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,57 +1,103 @@
# Maintainer: David Manouchehri
# Contributor: Alex Palaistras <alex+archlinux@deuill.org>
# Contributor: Elen Eisendle
+# Contributor: Spenser Reinhardt
-_pkgname=binaryninja
-pkgname="${_pkgname}-personal"
-_branch=stable
+_pkgname="binaryninja"
+_branch="stable"
+_edition="personal"
+pkgname="${_pkgname}-${_edition}"
+[[ "${_branch}" != "stable" ]] && pkgname="${pkgname}-${_branch}"
pkgdesc="Binary Ninja is a binary multi-tool and reversing platform"
url="https://binary.ninja"
license=('custom:Binary Ninja License Agreement')
arch=('x86_64')
conflicts=("${_pkgname}")
provides=("${_pkgname}")
-
-# https://binary.ninja/recover/
-source=("file://BinaryNinja-personal.zip"
- "binaryninja-personal"
- "binaryninja.png"
- "binaryninja-personal.desktop")
-
-_hash=$(curl -s https://binary.ninja/js/hashes.js | grep -m1 -oP '"BinaryNinja-personal.zip"\s*:\s*"\K[^"]+')
-
-sha256sums=("${_hash}"
- '14025caefa4201062d7334505c56534dd237185f5ecdb4c20d7aad17c80647a7'
- 'ac2e652f617d5ef8aaa34a5113164f51f3f673c872a635d29c93878a00650bf8'
- '36aea5c3f72563703b937b98381195de01084fcddacd6e4a3ed4bc48ae75c9a2')
-
-# @TODO: Figure out what's really needed.
-depends=('libcurl-compat')
-makedepends=('git' 'curl')
pkgver=1.1.922
-pkgrel=1
+pkgrel=2 # reset after new release, and .srcinfo
+install="${_pkgname}.install"
+makedeps=('curl' 'perl')
+depends=(
+ 'python2' 'glibc' 'glib2' 'gcc-libs-multilib' 'pcre' 'zlib'
+ 'libssh2' 'libnghttp2' 'libpsl' 'libxcb' 'icu' 'keyutils'
+ 'libxext' 'libx11' 'libglvnd' 'krb5' 'e2fsprogs' 'libffi'
+ 'libxau' 'libxdmcp' 'libcurl-compat' 'openssl-1.0'
+)
+# https://binary.ninja/recover/
+source=(
+ "file://BinaryNinja-${_edition}.zip"
+ "binaryninja.png"
+)
+_hash=$(curl -s https://binary.ninja/js/hashes.js | perl -pe "s/.*Ninja-${_edition}.zip\":\s\"([\da-f]+)\".*/\$1/g")
+sha256sums=(
+ "${_hash}"
+ 'ac2e652f617d5ef8aaa34a5113164f51f3f673c872a635d29c93878a00650bf8'
+)
pkgver() {
- curl -s https://binary.ninja/js/changelog.js | grep -m1 -oP '"version"\s*:\s*"\K[^"]+' | head -1
+ curl -s https://binary.ninja/js/changelog.js | perl -pe 's/.*?version":\s"(\d+\.\d+\.\d+)".*/$1/'
}
-package() {
- cd "${srcdir}/${_pkgname}"
- mkdir -v "${pkgdir}/opt"
- mkdir -v -p "${pkgdir}/usr/share/icons/hicolor/128x128/apps"
- mkdir -v -p "${pkgdir}/usr/share/applications"
- mkdir -v -p "${pkgdir}/usr/bin"
-
- mv -v "${srcdir}/binaryninja" "${pkgdir}/opt/binaryninja-personal"
-
- install -m644 "${srcdir}/binaryninja.png" "${pkgdir}/usr/share/icons/hicolor/128x128/apps/"
- install -m644 "${srcdir}/binaryninja-personal.desktop" "${pkgdir}/usr/share/applications/"
- install -m755 "${srcdir}/binaryninja-personal" "${pkgdir}/usr/bin"
+_cp_files() {
+ # installs files, trims `${srcdir}/${_pkgname}` to allow outpath directly
+ mode="${1}"
+ inpath="${2}" # single path
+ outpath="${3}"
+ [[ ${argc} -gt 3 ]] && depth="${4}" # unset for no limit
+ [[ ${argc} -gt 4 ]] && skip="${5}" # comma separated list
+ # set $cmd based on depth's existence
+ [ -z ${depth+x} ] && cmd="find ${inpath} -type f" || cmd="find ${inpath} -maxdepth ${depth} -type f"
+ for file in $(${cmd}); do
+ if [ -z ${skip+x} ]; then # dont bother if unset
+ for s in $(echo ${skip}| sed 's/,/ /g'); do
+ [[ "${file}" =~ "${s}" ]] && c=0 && break
+ done
+ [ ! -z ${c+x} ] && unset c && continue # is skipped ? unset+continue : move file
+ fi
+ outfile=$(echo ${file} | perl -pe "s|${srcdir}/${_pkgname}|${outpath}|g") # trim
+ install -m "${mode}" "${file}" "${outfile}"
+ done
+}
- # Not a proper fix, but hey, it works.
- mv -v "${pkgdir}/opt/binaryninja-personal/plugins/libssl.so" "${pkgdir}/opt/binaryninja-personal/plugins/libssl.so.bak"
+prepare() {
+ echo "[Desktop Entry]
+Name=Binary Ninja ${_edition}
+Exec=/usr/bin/${_pkgname}
+Icon=${pkgname}
+Type=Application
+Categories=Development;Debugger;Profiling;" > "${srcdir}/binaryninja.desktop"
+}
- ln -v -s "/usr/lib/libpython2.7.so" "${pkgdir}"/opt/binaryninja-personal/plugins/libpython2.7.so.1
+package() {
+ _srcdir="${srcdir}/${_pkgname}"
+ destdir="${pkgdir}/opt/${_pkgname}"
+ [[ "${_branch}" != "stable" ]] && destdir="${destdir}-${_branch}"
+
+ msg2 "Creating directories"
+ install -dm 755 "${pkgdir}/usr/share/icons/hicolor/128x128/apps/"
+ install -dm 755 "${pkgdir}/usr/share/applications/"
+ for dir in $(find "${_srcdir}" -type d); do
+ dir=$(echo $dir | perl -pe "s|${_srcdir}|${destdir}|g")
+ install -dm 755 "${dir}"
+ done
+
+ msg2 "Copying non-executable files"
+ install -m 644 "${srcdir}/binaryninja.png" "${pkgdir}/usr/share/icons/hicolor/128x128/apps/"
+ install -m 644 "${srcdir}/binaryninja.desktop" "${pkgdir}/usr/share/applications/"
+ install -m 644 "${_srcdir}/qt.conf" "${destdir}/qt.conf"
+ _cp_files 644 "${_srcdir}/docs" "${destdir}"
+ _cp_files 644 "${_srcdir}/api-docs" "${destdir}"
+ _cp_files 644 "${_srcdir}/scc-docs" "${destdir}"
+ _cp_files 644 "${_srcdir}/types" "${destdir}"
+
+ msg2 "Copying executable files"
+ _cp_files 755 "${_srcdir}/" "${destdir}" "0" "qt.conf"
+ _cp_files 755 "${_srcdir}/python" "${destdir}"
+ _cp_files 755 "${_srcdir}/scripts" "${destdir}"
+ _cp_files 755 "${_srcdir}/plugins" "${destdir}"
+ _cp_files 755 "${_srcdir}/qt" "${destdir}"
+ _cp_files 755 "${_srcdir}/examples" "${destdir}"
}
-# vim:set et sw=2 sts=2 tw=80:
+# vim:set et sw=2 sts=2 tw=80: \ No newline at end of file
diff --git a/binaryninja-personal b/binaryninja-personal
deleted file mode 100755
index 5398109fe129..000000000000
--- a/binaryninja-personal
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-LD_PRELOAD=libcurl.so.3:libssl.so.1.0.0 exec /opt/binaryninja-personal/binaryninja "$@"
diff --git a/binaryninja-personal.desktop b/binaryninja-personal.desktop
deleted file mode 100644
index 84f05be7cb57..000000000000
--- a/binaryninja-personal.desktop
+++ /dev/null
@@ -1,6 +0,0 @@
-[Desktop Entry]
-Name=Binary Ninja Personal
-Exec=/usr/bin/binaryninja-personal
-Icon=binaryninja
-Type=Application
-Categories=Development;Debugger;Profiling;
diff --git a/binaryninja-personal.install b/binaryninja-personal.install
deleted file mode 100644
index b1477143938a..000000000000
--- a/binaryninja-personal.install
+++ /dev/null
@@ -1,11 +0,0 @@
-post_install() {
- gtk-update-icon-cache -f -q -t /usr/share/pixmaps
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- post_install
-}
diff --git a/binaryninja.install b/binaryninja.install
new file mode 100644
index 000000000000..1a67559ddca1
--- /dev/null
+++ b/binaryninja.install
@@ -0,0 +1,47 @@
+post_install() {
+ # post install to avoid builder needing makedeps
+ if [ ! -L /opt/binaryninja/libcurl.so.4 ]; then
+ echo "Linking libcurl-compat to /opt/binaryninja/"
+ ln -s /usr/lib/libcurl.so.3 /opt/binaryninja/libcurl.so.4
+ fi
+ if [ ! -L /opt/binaryninja/plugins/libcurl.so.4 ]; then
+ echo "Linking libcurl-compat to /opt/binaryninja/plugins/"
+ ln -s /usr/lib/libcurl.so.3 /opt/binaryninja/plugins/libcurl.so.4
+ fi
+ if [ ! -L /opt/binaryninja/plugins/libpython2.7.so.1 ]; then
+ echo "Linking libpython2.7 to /opt/binaryninja/plugins/"
+ ln -s /usr/lib/libpython2.7.so /opt/binaryninja/plugins/libpython2.7.so.1
+ fi
+ if [ ! -L /usr/bin/binaryninja ]; then
+ echo "Linking binaryninja to /usr/bin/"
+ ln -s /opt/binaryninja/binaryninja /usr/bin/binaryninja
+ fi
+ gtk-update-icon-cache -f -q -t /usr/share/pixmaps
+}
+pre_upgrade(){
+ if [ -h /usr/bin/binaryninja ]; then
+ echo "Unlinking binaryninja from /usr/bin/"
+ rm -f /usr/bin/binaryninja
+ fi
+ if [ -h /opt/binaryninja/plugins/libpython2.7.so.1 ]; then
+ echo "Unlinking libpython2.7 from /opt/binaryninja/plugins/"
+ rm -f /opt/binaryninja/plugins/libpython2.7.so.1
+ fi
+ if [ -h /opt/binaryninja/plugins/libcurl.so.4 ]; then
+ echo "Unlinking libcurl-compat from /opt/binaryninja/plugins/"
+ rm -f /opt/binaryninja/plugins/libcurl.so.4
+ fi
+ if [ -h /opt/binaryninja/libcurl.so.4 ]; then
+ echo "Unlinking libcurl-compat from /opt/binaryninja/"
+ rm -f /opt/binaryninja/libcurl.so.4
+ fi
+}
+post_upgrade() {
+ post_install
+}
+pre_remove(){
+ pre_upgrade
+}
+post_remove() {
+ gtk-update-icon-cache -f -q -t /usr/share/pixmaps
+} \ No newline at end of file