summaryrefslogtreecommitdiff
path: root/media-libs/libffado/libffado-2.5.0_p5.ebuild
blob: 9ac2e8568d78e8b030cc1ceba3128832f765511b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{13..14} )
inherit desktop python-single-r1 scons-utils toolchain-funcs udev xdg multilib-minimal

DESCRIPTION="Driver for IEEE1394 (Firewire) audio interfaces"
HOMEPAGE="https://ffado.org/"
if [[ ${PV} == *9999* ]]; then
	inherit subversion
	ESVN_REPO_URI="http://subversion.ffado.org/ffado/trunk/${PN}"
else
	SRC_URI="
		https://ffado.org/files/${PN}-${PV%_p*}.tgz
		mirror://debian/pool/main/libf/libffado/${PN}_${PV/_p/-}.debian.tar.xz
	"
	KEYWORDS="~alpha amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv x86"
	S="${WORKDIR}/${PN}-${PV%_p*}"
fi

LICENSE="GPL-2 GPL-3"
SLOT="0"
IUSE="debug gui test-programs"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"

BDEPEND="
	>=dev-libs/dbus-c++-0.9.0-r5
	virtual/pkgconfig
	$(python_gen_cond_dep 'dev-python/setuptools[${PYTHON_USEDEP}]')
"
RDEPEND="
	${PYTHON_DEPS}
	>=dev-libs/dbus-c++-0.9.0-r5
	dev-libs/expat[${MULTILIB_USEDEP}]
	dev-libs/libconfig:=[cxx,${MULTILIB_USEDEP}]
	media-libs/alsa-lib
	media-libs/libiec61883[${MULTILIB_USEDEP}]
	sys-apps/dbus
	sys-libs/libraw1394[${MULTILIB_USEDEP}]
	gui? (
		$(python_gen_cond_dep '
			dev-python/dbus-python[${PYTHON_USEDEP}]
			dev-python/qtpy[dbus,gui,pyqt6,widgets,${PYTHON_USEDEP}]
		')
		x11-misc/xdg-utils
	)
"
DEPEND="${RDEPEND}"

PATCHES=(
	# missing includes for expat
	"${WORKDIR}"/debian/patches/0002-Include-config.h.patch
	# qtpy/PyQt6 port
	"${WORKDIR}"/debian/patches/0003-Replace-PyQt4-with-PyQt6.patch

	# use shutil.which instead of sys-apps/which
	"${FILESDIR}"/${PN}-2.5.0-use_shutil_which.patch
	# first try PKG_CONFIG from env
	"${FILESDIR}"/${PN}-2.5.0-fix_pkgconfig.patch
	# fix clang
	"${FILESDIR}"/${PN}-2.5.0-fix_literal_concat.patch
)

myescons() {
	local myesconsargs=(
		PREFIX="${EPREFIX}/usr"
		LIBDIR="${EPREFIX}/usr/$(get_libdir)"
		MANDIR="${EPREFIX}/usr/share/man"
		UDEVDIR="$(get_udevdir)/rules.d"
		CUSTOM_ENV=true
		DETECT_USERSPACE_ENV=false
		DEBUG=$(usex debug)
		# unused and will show a wrong target w/ cross-compile
		DIST_TARGET=none
		PYPKGDIR="$(python_get_sitedir)"
		PYTHON_INTERPRETER="${PYTHON}"
		# use dev-libs/expat instead of dev-cpp/libxmlpp
		SERIALIZE_USE_EXPAT=true
		# ENABLE_OPTIMIZATIONS detects cpu type and sets flags accordingly
		# -fomit-frame-pointer is added also which can cripple debugging.
		# we set flags from portage instead
		ENABLE_OPTIMIZATIONS=false
		# This only works for JACK1>=0.122.0 or JACK2>=1.9.9.
		ENABLE_SETBUFFERSIZE_API_VER=force
	)
	if multilib_is_native_abi; then
		myesconsargs+=(
			BUILD_MIXER=$(usex gui true false)
			BUILD_TESTS=$(usex test-programs)
		)
	else
		myesconsargs+=(
			BUILD_MIXER=false
			BUILD_TESTS=false
		)
	fi
	escons "${myesconsargs[@]}" "${@}"
}

src_prepare() {
	default

	# Bug #808853
	cp "${BROOT}"/usr/share/gnuconfig/config.guess admin/ || die "Failed to update config.guess"

	# Bugs #658052, #659226
	sed -i -e 's/^CacheDir/#CacheDir/' SConstruct || die

	# skip CompilerCheck with TryRun
	if tc-is-cross-compiler; then
		sed -e '/"CompilerCheck" :/s/: CompilerCheck,/: lambda context: (context.Message("Checking C-compiler... "), context.Result("skipped")) and True,/' \
			-i SConstruct || die
	fi

	multilib_copy_sources
}

multilib_src_compile() {
	tc-export CC CXX PKG_CONFIG
	myescons
}

multilib_src_install() {
	myescons DESTDIR="${D}" WILL_DEAL_WITH_XDG_MYSELF="True" install
}

multilib_src_install_all() {
	einstalldocs

	python_fix_shebang "${D}"
	python_optimize "${D}"

	if use gui; then
		newicon "support/xdg/hi64-apps-ffado.png" "ffado.png"
		newmenu "support/xdg/org.ffado.FfadoMixer.desktop" "ffado-mixer.desktop"
	fi
}

pkg_postinst() {
	xdg_icon_cache_update
	udev_reload
}

pkg_postrm() {
	xdg_icon_cache_update
	udev_reload
}