app-forensics/sleuthkit: bump to 4.6.0

This bump starts to bundle libewf since app-forensics/libewf is about
to get treecleaned (see #547418). The upstream only supports libewf
version 20130128[0], which is not available in the tree. Because they
haven't clarified the supported libewf versions until recently, we
have been depending on any version and it's been causing build
failures (see #607968). Although there are compatibility patches to
support later versions of libewf in tsk, they are not supported by
upstream. There's little to no expactation of tsk updating its code to
use the latest libewf since they've forked the version 20130128[1].

In terms of stability, 20130128 was marked stable in Gentoo at some
point[2]. There are no known security vulnerabilities. If in the
future the upstream fork diverges, we can add it to the tree as a new
package and establish a proper dependency relationship.

Note though that the ewf USE flag is masked by treecleanears[3], so
this change currently has no visible impact on users.

[0] https://github.com/sleuthkit/sleuthkit/blob/sleuthkit-4.6.0/INSTALL.txt#L44
[1] https://github.com/sleuthkit/libewf_64bit
[2] https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-forensics/libewf/libewf-20130128.ebuild?revision=1.6&view=markup
[3] https://gitweb.gentoo.org/repo/gentoo.git/tree/profiles/base/package.use.mask?id=f103062521b15cddc67a822a7a25640d3fbab76a#n65

Bug: https://bugs.gentoo.org/547418
Bug: https://bugs.gentoo.org/607968
Package-Manager: Portage-2.3.27, Repoman-2.3.9
This commit is contained in:
Göktürk Yüksek
2018-04-04 07:01:32 -04:00
parent f103062521
commit 3bf2cef453
2 changed files with 231 additions and 0 deletions

View File

@@ -1,6 +1,8 @@
DIST libewf-20130128.tar.gz 1978794 BLAKE2B e5d2bd8f4a8b878e13536b89b032d8cee6982272065b2bf325f8a811dff258264118a79496912377337ceb9ad630138b6bedb89e3c3be89a5f6a6fea85ab586b SHA512 94cdd0c3f0d8f535f3462c5adba266302f9b129abacda077ed429fa38af6862fca5a90ba2e606b78607b509769305cc6134c483c7033c20e226596cca2d42b90
DIST sleuthkit-4.0.2.tar.gz 7577570 BLAKE2B 7199adce8b85d75a031e7f133ba175ff3ef1f87cae9ba9a3ce02a321b11f0a5bcb9023730df1b35956dc61c15025f9a4a141255f62698800938c90376feed8c9 SHA512 acf1d6006db3e75675eb769034ea78fd78133ac0f83c9caa74ec720c0dd25f95fb1a5df2c652027eeeac53e1fca6a3096b5248db95e3a01ce95e72e779e44f37
DIST sleuthkit-4.1.0.tar.gz 7974564 BLAKE2B c736b26713abf7df45b873099fe7886825be3c0fc5cb288e9a207fb9b404df890420ac1664ab45cc3866cb6a69ad31fe9c8e4cb6caa662e5dfc8ee36acdb4670 SHA512 1cfa96bd3746c59c92c3e3f07f5f3f0f6896239bcaec012c43958654bb63794ecf9d7bd28bb9b4ab939558f4b27f03cd87f645ea91a8f9cfbb9037df93ef5223
DIST sleuthkit-4.1.2.tar.gz 7990136 BLAKE2B 02aa1545261f6b8a9c03c3f78563aea9e2cf521622fba2b91140de1162c10b5d1f3f7110bef598d45be5612d44e2bf6d4096fd731c486498e2524566a75a8300 SHA512 1f64acf42e86adf275bcd86c63c097210a498ac34ce69e64b3c120d86dffae65b5d57ed9618692dd510f637e940a48a60912dd57c8de840bf3a2b4428baabab8
DIST sleuthkit-4.1.3.tar.gz 7952733 BLAKE2B ffdf19904275a6a9f96a822e33097db60ae0c8e9a034813c6a6f917845811ee9e2b7c52db85aacdd3d4d9bf7c2ae8974840849f6922248af5104298952d6ad3a SHA512 66f6ac32da5a21b3505390557ed6cf7bbcfcca69f231e20a7086fd48c5de45a3f064a716837d25eb582d0a89bae3b6ba7e89dcf3159e1cacdb4b5d452d0ce9a2
DIST sleuthkit-4.5.0.tar.gz 8611141 BLAKE2B a1ae66bfcb74ce1fec24f80dfe60cd68f1de53119331c38848f7f82de8052eda49d78fdea49e42ada5843094939ef212dece42a5ceb85931a79e02adccda30e6 SHA512 911890cacca739f121681514197104cb2dc3bd219f3e068c4ce61264498c56989359976fc75172e1f456c94e4e25c6206413b0234c36e55736a577b8e664e4b3
DIST sleuthkit-4.6.0.tar.gz 8634432 BLAKE2B b45721cdee798d84f0caa0bfe38645346539bb497f5a492c72016a6b3b0246b362ecea676a7a0e788d66cc0dc32335e719912434bd61aa205b7d51b8d4bd7c14 SHA512 dbf880e8503dccb0a686f1d9658d56e9cb40f452127f9b713cf2a4941f4083fa1cf80a886994d58421307a679242cd4ee005b3e874cf429cfb140a597a0dc739
DIST sqlite-jdbc-3.8.11.jar 5131732 BLAKE2B 1a04fa9e9cb97fdddc19af2de9efa7b54c0b527642e6e325e31054e4e294e3bc6af00ea291087ed9dd26668d48dae356035fc85212c0eb81656550d552103ed0 SHA512 5f4705101992e8916e29742c560aef0d01eba9dc0d2d984b75a77e56be3c9fd20b284390fe8f9bb54bf9d1f8528c3413922684c446212ca8961ac731543fb179

View File

@@ -0,0 +1,229 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
JAVA_PKG_BSFIX_NAME="build.xml build-unix.xml"
inherit autotools java-pkg-opt-2 java-ant-2
DESCRIPTION="A collection of file system and media management forensic analysis tools"
HOMEPAGE="https://www.sleuthkit.org/sleuthkit/"
# TODO: sqlite-jdbc does not exist in the tree, we bundle it for now
# TODO: Upstream uses a very specific version of libewf which is not in
# the tree anymore. So we statically compile and link to sleuthkit.
# Hopefully upstream will figure something out in the future.
SRC_URI="https://github.com/${PN}/${PN}/releases/download/${P}/${P}.tar.gz
java? ( http://repo1.maven.org/maven2/org/xerial/sqlite-jdbc/3.8.11/sqlite-jdbc-3.8.11.jar )
ewf? ( https://dev.gentoo.org/~gokturk/distfiles/app-forensics/libewf/libewf-20130128.tar.gz )"
LICENSE="BSD CPL-1.0 GPL-2+ IBM java? ( Apache-2.0 )"
SLOT="0/13" # subslot = major soname version
KEYWORDS="~amd64 ~hppa ~ppc ~x86"
IUSE="aff doc ewf java static-libs test +threads zlib"
DEPEND="
dev-db/sqlite:3
dev-lang/perl:*
aff? ( app-forensics/afflib )
ewf? ( sys-libs/zlib )
java? (
>=virtual/jdk-1.8:*
>=dev-java/c3p0-0.9.5:0
>=dev-java/jdbc-postgresql-9.4:0
)
zlib? ( sys-libs/zlib )
"
RDEPEND="${DEPEND}
java? ( >=virtual/jre-1.8:= )
"
DEPEND="${DEPEND}
doc? ( app-doc/doxygen )
test? ( >=dev-util/cppunit-1.2.1 )
"
PATCHES=(
"${FILESDIR}"/${PN}-4.1.0-tools-shared-libs.patch
)
src_unpack() {
local f
unpack ${P}.tar.gz
# Ick, the upstream is stuck at libewf-20130128 which is
# not even in the tree anymore. So we have to bundle it.
if use ewf; then
pushd "${T}" &>/dev/null || die
unpack libewf-20130128.tar.gz
export TSK_LIBEWF_SRCDIR="${T}"/libewf-20130128
popd &>/dev/null || die
fi
# Copy the jar files that don't exist in the tree yet
if use java; then
TSK_JAR_DIR="${S}/bindings/java/lib"
mkdir "${TSK_JAR_DIR}" || die
for f in ${A}; do
if [[ ${f} =~ .jar$ ]]; then
cp "${DISTDIR}"/"${f}" "${TSK_JAR_DIR}" || die
fi
done
export TSK_JAR_DIR
fi
}
src_prepare() {
if use ewf; then
# Yeah, libewf-20130128 obviously doesn't just nicely compile
sed -e 's/LIBUNA_INLINE inline/LIBUNA_INLINE/' \
-i "${TSK_LIBEWF_SRCDIR}"/libuna/libuna_inline.h || die
fi
if use java; then
pushd "${S}"/bindings/java &>/dev/null || die
# Prevent "make install" from installing
# jar files under /usr/share/java
# We'll use the java eclasses for this
sed -e '/^jar_DATA/ d;' -i Makefile.am || die
# Disable dependency retrieval using ivy
# We will handle it ourselves
sed -e '/name="compile"/ s/, retrieve-deps//' \
-e '/name="dist-/ s/, init-ivy//g' \
-i build.xml || die
java-pkg-opt-2_src_prepare
popd &>/dev/null || die
fi
# Override the doxygen output directories
if use doc; then
sed -e "/^OUTPUT_DIRECTORY/ s|=.*$|= ${T}/doc|" \
-i tsk/docs/Doxyfile \
-i bindings/java/doxygen/Doxyfile || die
fi
# It's safe to call this even after java-pkg-opt-2_src_prepare
# because future calls to eapply_user do nothing and return 0
default
eautoreconf
}
tsk_compile_libewf() {
local myeconfargs=(
--prefix=/
--libdir=/lib
--enable-static
--disable-shared
--disable-winapi
--without-libbfio
--with-zlib
--without-bzip2
--without-libhmac
--without-openssl
--without-libuuid
--without-libfuse
)
# We want to contain our build flags
local CFLAGS="${CFLAGS}"
local LDFLAGS="${LDFLAGS}"
pushd "${TSK_LIBEWF_SRCDIR}" &>/dev/null || die
# Produce relocatable code
CFLAGS+=" -fPIC"
LDFLAGS+=" -fPIC"
econf "${myeconfargs[@]}"
# Do not waste CPU cycles on building ewftools
sed -e '/ewftools/ d' -i Makefile || die
emake
# Only install the headers and the library
emake -C libewf DESTDIR="${T}"/image install
emake -C include DESTDIR="${T}"/image install
popd &>/dev/null || die
}
src_configure() {
local myeconfargs=(
$(use_enable java)
$(use_enable static-libs static)
$(use_enable threads multithreading)
$(use_with aff afflib)
$(use_with ewf libewf)
$(use_with zlib)
)
if use ewf; then
tsk_compile_libewf
myeconfargs+=( $(use_with ewf libewf "${T}"/image) )
fi
if use java; then
pushd "${S}"/bindings/java &>/dev/null || die
java-ant-2_src_configure
popd &>/dev/null || die
fi
econf "${myeconfargs[@]}"
}
src_compile() {
# Create symlinks of jars for the required dependencies
if use java; then
pushd "${S}"/bindings/java &>/dev/null || die
java-pkg_jar-from --into "${TSK_JAR_DIR}" c3p0
java-pkg_jar-from --into "${TSK_JAR_DIR}" jdbc-postgresql
popd &>/dev/null || die
fi
# Create the doc output dirs if requested
if use doc; then
mkdir -p "${T}"/doc/{api-docs,jni-docs} || die
fi
emake all $(usex doc api-docs "")
}
src_install() {
local f
if use java; then
pushd "${S}"/bindings/java &>/dev/null || die
java-pkg_dojar dist/${P}.jar
# Install the bundled jar files
pushd "${TSK_JAR_DIR}" &>/dev/null || die
for f in *; do
# Skip the symlinks java-pkg_jar-from created
[[ -f ${f} ]] || continue
# Strip the version numbers as per eclass recommendation
[[ ${f} =~ -([0-9].)+.jar$ ]] || continue
java-pkg_newjar "${f}" "${f/${BASH_REMATCH[0]}/.jar}"
done
popd &>/dev/null || die
popd &>/dev/null || die
fi
default
# It unconditionally builds both api and jni docs
# We install conditionally based on the provided use flags
if use doc; then
dodoc -r "${T}"/doc/api-docs
use java && dodoc -r "${T}"/doc/jni-docs
fi
find "${D}" -name '*.la' -delete || die
}