diff options
-rw-r--r-- | .SRCINFO | 29 | ||||
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | PKGBUILD | 122 | ||||
-rwxr-xr-x | binaryninja-personal | 2 | ||||
-rw-r--r-- | binaryninja-personal.desktop | 6 | ||||
-rw-r--r-- | binaryninja-personal.install | 11 | ||||
-rw-r--r-- | binaryninja.install | 47 |
7 files changed, 155 insertions, 64 deletions
@@ -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 @@ -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 |