228 changes: 228 additions & 0 deletions dev-util/rizin/rizin-0.5.1.recipe
@@ -0,0 +1,228 @@
SUMMARY="A fork of the radare2 reverse engineering framework"
DESCRIPTION="Rizin is a fork of the radare2 reverse engineering framework with a focus on \
usability, working features and code cleanliness.
Rizin is portable and it can be used to analyze binaries, disassemble code, debug programs, as a \
forensics tool, as a scriptable command-line hexadecimal editor able to open disk files, and much \
more!"
HOMEPAGE="https://github.com/rizinorg/rizin"
COPYRIGHT="2022 RizinOrg et all"
LICENSE="Apache v2
CC-BY-SA-4.0
CC0 1.0
BSD (3-clause)
GNU LGPL v3
MIT
MPL v1.1
NCSA
RSA-MD"
REVISION="1"
SOURCE_URI="https://github.com/rizinorg/rizin/archive/refs/tags/v$portVersion.tar.gz"
CHECKSUM_SHA256="e823d7ce9ffdb81e00fe8d9faeb70b63aa8211f6695c6b524abdb6fc03df1a08"
SOURCE_FILENAME="rizin-v$portVersion.tar.gz"

ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"

commandBinDir=$binDir
commandSuffix=$secondaryArchSuffix
if [ "$targetArchitecture" = x86_gcc2 ]; then
commandSuffix=
commandBinDir=$prefix/bin
fi

libVersion="$portVersion"
libVersionCompat="$libVersion compat >= ${libVersion%.*}"

PROVIDES="
rizin$secondaryArchSuffix = $portVersion
cmd:rizin$commandSuffix
cmd:rz_agent$commandSuffix
cmd:rz_asm$commandSuffix
cmd:rz_ax$commandSuffix
cmd:rz_bin$commandSuffix
cmd:rz_diff$commandSuffix
cmd:rz_find$commandSuffix
cmd:rz_gg$commandSuffix
cmd:rz_hash$commandSuffix
cmd:rz_pm$commandSuffix
cmd:rz_run$commandSuffix
cmd:rz_sign$commandSuffix
cmd:rz_test$commandSuffix
lib:librz_analysis$secondaryArchSuffix = $libVersionCompat
lib:librz_asm$secondaryArchSuffix = $libVersionCompat
lib:librz_bin$secondaryArchSuffix = $libVersionCompat
lib:librz_bp$secondaryArchSuffix = $libVersionCompat
lib:librz_config$secondaryArchSuffix = $libVersionCompat
lib:librz_cons$secondaryArchSuffix = $libVersionCompat
lib:librz_core$secondaryArchSuffix = $libVersionCompat
lib:librz_crypto$secondaryArchSuffix = $libVersionCompat
lib:librz_debug$secondaryArchSuffix = $libVersionCompat
lib:librz_demangler$secondaryArchSuffix = $libVersionCompat
lib:librz_diff$secondaryArchSuffix = $libVersionCompat
lib:librz_egg$secondaryArchSuffix = $libVersionCompat
lib:librz_flag$secondaryArchSuffix = $libVersionCompat
lib:librz_hash$secondaryArchSuffix = $libVersionCompat
lib:librz_il$secondaryArchSuffix = $libVersionCompat
lib:librz_io$secondaryArchSuffix = $libVersionCompat
lib:librz_lang$secondaryArchSuffix = $libVersionCompat
lib:librz_magic$secondaryArchSuffix = $libVersionCompat
lib:librz_main$secondaryArchSuffix = $libVersionCompat
lib:librz_parse$secondaryArchSuffix = $libVersionCompat
lib:librz_reg$secondaryArchSuffix = $libVersionCompat
lib:librz_search$secondaryArchSuffix = $libVersionCompat
lib:librz_sign$secondaryArchSuffix = $libVersionCompat
lib:librz_socket$secondaryArchSuffix = $libVersionCompat
lib:librz_syscall$secondaryArchSuffix = $libVersionCompat
lib:librz_type$secondaryArchSuffix = $libVersionCompat
lib:librz_util$secondaryArchSuffix = $libVersionCompat
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libcapstone$secondaryArchSuffix
lib:libbz2$secondaryArchSuffix
lib:libexecinfo$secondaryArchSuffix
lib:liblz4$secondaryArchSuffix
lib:liblzma$secondaryArchSuffix
lib:libmagic$secondaryArchSuffix
lib:libpython3.7m$secondaryArchSuffix
lib:libssl$secondaryArchSuffix
lib:libtree_sitter$secondaryArchSuffix
lib:libuv$secondaryArchSuffix
lib:libxxhash$secondaryArchSuffix
lib:libz$secondaryArchSuffix
lib:libzip$secondaryArchSuffix
"

PROVIDES_devel="
rizin${secondaryArchSuffix}_devel = $portVersion
devel:librz_analysis$secondaryArchSuffix = $libVersionCompat
devel:librz_asm$secondaryArchSuffix = $libVersionCompat
devel:librz_bin$secondaryArchSuffix = $libVersionCompat
devel:librz_bp$secondaryArchSuffix = $libVersionCompat
devel:librz_config$secondaryArchSuffix = $libVersionCompat
devel:librz_cons$secondaryArchSuffix = $libVersionCompat
devel:librz_core$secondaryArchSuffix = $libVersionCompat
devel:librz_crypto$secondaryArchSuffix = $libVersionCompat
devel:librz_debug$secondaryArchSuffix = $libVersionCompat
devel:librz_demangler$secondaryArchSuffix = $libVersionCompat
devel:librz_diff$secondaryArchSuffix = $libVersionCompat
devel:librz_egg$secondaryArchSuffix = $libVersionCompat
devel:librz_flag$secondaryArchSuffix = $libVersionCompat
devel:librz_hash$secondaryArchSuffix = $libVersionCompat
devel:librz_il$secondaryArchSuffix = $libVersionCompat
devel:librz_io$secondaryArchSuffix = $libVersionCompat
devel:librz_lang$secondaryArchSuffix = $libVersionCompat
devel:librz_magic$secondaryArchSuffix = $libVersionCompat
devel:librz_main$secondaryArchSuffix = $libVersionCompat
devel:librz_parse$secondaryArchSuffix = $libVersionCompat
devel:librz_reg$secondaryArchSuffix = $libVersionCompat
devel:librz_search$secondaryArchSuffix = $libVersionCompat
devel:librz_sign$secondaryArchSuffix = $libVersionCompat
devel:librz_socket$secondaryArchSuffix = $libVersionCompat
devel:librz_syscall$secondaryArchSuffix = $libVersionCompat
devel:librz_type$secondaryArchSuffix = $libVersionCompat
devel:librz_util$secondaryArchSuffix = $libVersionCompat
"
REQUIRES_devel="
rizin$secondaryArchSuffix == $portVersion base
"

BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
pyyaml_python3
devel:libcapstone$secondaryArchSuffix
devel:libbz2$secondaryArchSuffix
devel:libexecinfo$secondaryArchSuffix
devel:liblz4$secondaryArchSuffix
devel:liblzma$secondaryArchSuffix
devel:libmagic$secondaryArchSuffix
devel:libpython3.7m$secondaryArchSuffix
devel:libssl$secondaryArchSuffix
devel:libtree_sitter$secondaryArchSuffix
devel:libuv$secondaryArchSuffix
devel:libxxhash$secondaryArchSuffix
devel:libz$secondaryArchSuffix
devel:libzip$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:cmake
cmd:git
cmd:make
cmd:meson
cmd:ninja
cmd:gcc$secondaryArchSuffix
cmd:pkg_config$secondaryArchSuffix
cmd:python3
cmd:tree_sitter
cmd:xxhsum
"

BUILD()
{
meson build \
--buildtype=release \
--wrap=default \
--prefix=$prefix \
--bindir=$commandBinDir \
--datadir=$dataDir \
--libdir=$libDir \
--includedir=$includeDir \
--mandir=$manDir \
-D use_sys_capstone=enabled \
-D use_sys_magic=enabled \
-D use_sys_libzip=enabled \
-D use_sys_zlib=enabled \
-D use_sys_lz4=enabled \
-D use_sys_xxhash=enabled \
-D use_sys_openssl=enabled \
-D use_sys_tree_sitter=enabled \
-D enable_tests=false \
-D enable_rz_test=false
ninja -C build
}

INSTALL()
{
ninja -C build install

prepareInstalledDevelLibs \
librz_analysis \
librz_asm \
librz_bin \
librz_bp \
librz_config \
librz_cons \
librz_core \
librz_crypto \
librz_debug \
librz_demangler \
librz_diff \
librz_egg \
librz_flag \
librz_hash \
librz_il \
librz_io \
librz_lang \
librz_magic \
librz_main \
librz_parse \
librz_reg \
librz_search \
librz_sign \
librz_socket \
librz_syscall \
librz_type \
librz_util
fixPkgconfig

packageEntries devel \
$developDir
}

TEST()
{
#some test will fail, so far 3 tests crash also
#export PATH=$PATH/$sourceDir/build/binrz/rizzin
meson test --no-rebuild -v -C build
}