Hi! from retroshare development team, we realeased a new version and we would like to have the version on Gentoo portage updated, in the attacchments you can find an ebuild that correctly build the new version Reproducible: Always
Created attachment 445670 [details] retroshare 0.6.1 ebuild
A more recently updated ebuild is availabe in eigenlay overlay Cheers!
Could you please attach the newer version here, please? > @@ -16,8 +16,9 @@ > KEYWORDS="amd64 x86" > > IUSE="cli feedreader qt4 +qt5 voip" > -REQUIRED_USE="^^ ( qt4 qt5 ) > - || ( cli qt4 qt5 ) > +REQUIRED_USE="|| ( cli qt4 qt5 ) > + qt4? ( !qt5 ) > + qt5? ( !qt4 ) > feedreader? ( || ( qt4 qt5 ) ) > voip? ( || ( qt4 qt5 ) )" Why changing it? > S="${WORKDIR}/RetroShare-${PV}" > > -PATCHES=( "${FILESDIR}/${P}-c11-compat.patch" ) > +#PATCHES=( "${FILESDIR}/${P}-c11-compat.patch" ) > > src_prepare() { > local dir > @@ -101,7 +96,7 @@ > retroshare-gui/src/retroshare-gui.pro \ > retroshare-nogui/src/retroshare-nogui.pro || die 'sed on retroshare-gui/src/retroshare-gui.pro failed' > > - epatch ${PATCHES[@]} > + #epatch ${PATCHES[@]} > eapply_user > } Please don't comment out, just remove what's no longer needed. @@ -140,7 +135,7 @@ doins libbitdht/src/bitdht/bdboot.txt insinto /usr/share/RetroShare06/webui - doins libresapi/src/webfiles/* + doins libresapi/src/webui/* dodoc README.md make_desktop_entry RetroShare06 You could recursively call `doins` and insert into `/usr/share/RetroShare06`.
(In reply to Amadeusz Żołnowski from comment #3) > Could you please attach the newer version here, please? > > > > @@ -16,8 +16,9 @@ > > KEYWORDS="amd64 x86" > > > > IUSE="cli feedreader qt4 +qt5 voip" > > -REQUIRED_USE="^^ ( qt4 qt5 ) > > - || ( cli qt4 qt5 ) > > +REQUIRED_USE="|| ( cli qt4 qt5 ) > > + qt4? ( !qt5 ) > > + qt5? ( !qt4 ) > > feedreader? ( || ( qt4 qt5 ) ) > > voip? ( || ( qt4 qt5 ) )" > > Why changing it? Because past version required to have either qt5 or qt4 enabled while they are not mandatory, now the user can install cli only > > > S="${WORKDIR}/RetroShare-${PV}" > > > > -PATCHES=( "${FILESDIR}/${P}-c11-compat.patch" ) > > +#PATCHES=( "${FILESDIR}/${P}-c11-compat.patch" ) > > > > src_prepare() { > > local dir > > @@ -101,7 +96,7 @@ > > retroshare-gui/src/retroshare-gui.pro \ > > retroshare-nogui/src/retroshare-nogui.pro || die 'sed on retroshare-gui/src/retroshare-gui.pro failed' > > > > - epatch ${PATCHES[@]} > > + #epatch ${PATCHES[@]} > > eapply_user > > } > > Please don't comment out, just remove what's no longer needed. Should be already removed in newer version > > @@ -140,7 +135,7 @@ > doins libbitdht/src/bitdht/bdboot.txt > > insinto /usr/share/RetroShare06/webui > - doins libresapi/src/webfiles/* > + doins libresapi/src/webui/* > > dodoc README.md > make_desktop_entry RetroShare06 > > You could recursively call `doins` and insert into `/usr/share/RetroShare06`. you mean like this? insinto /usr/share/RetroShare06 doins libresapi/src/webui Cheers!
Created attachment 452618 [details] Ebuild v2
(In reply to Gioacchino Mazzurco from comment #4) > > > > @@ -140,7 +135,7 @@ > > doins libbitdht/src/bitdht/bdboot.txt > > > > insinto /usr/share/RetroShare06/webui > > - doins libresapi/src/webfiles/* > > + doins libresapi/src/webui/* > > > > dodoc README.md > > make_desktop_entry RetroShare06 > > > > You could recursively call `doins` and insert into `/usr/share/RetroShare06`. > > you mean like this? > > insinto /usr/share/RetroShare06 > doins libresapi/src/webui doins -r libresapi/src/webui
Comparing retroshare 0.6.1 ebuild (2016-09-14 10:01 UTC) with Ebuild v2 (2016-11-07 14:26 UTC): > @@ -67,14 +67,13 @@ > virtual/ffmpeg[encode] > )" > DEPEND="${RDEPEND} > - qt4? ( dev-qt/designer:4 ) > - qt5? ( dev-qt/designer:5 ) > + qt4? ( dev-qt/qtcore:4 ) > + !qt4? ( dev-qt/qtcore:5 ) > + qt5? ( dev-qt/qtwidgets:5 ) > virtual/pkgconfig" > > S="${WORKDIR}/RetroShare-${PV}" This change confuses me. For `qt4` you require `dev-qt/qtcore:4`, but if `qt4` is disabled you require `dev-qt/qtcore:5`, but you've just said that GUI is no longer needed, so why importing `qtcore:5`? The same here: > src_configure() { > for dir in ${rs_src_dirs} ; do > pushd "${S}/${dir}" 2>/dev/null || die > - use qt4 && eqmake4 > - use qt5 && eqmake5 > + use qt4 && eqmake4 || eqmake5 > popd 2>/dev/null || die > done > } Why `eqmake5` is always called in case of `qt4` flag being disabled. Another issue with this change is that if `eqmake4` fails (and it doesn't die) it will run `eqmake5`. By the way, I've noticed you redirect `popd` and `pushd` stderr output, but you probably meant to redirect stdout to `/dev/null`.
Sergey, I will bump version in the weekend, if you don't mind.
(In reply to Amadeusz Żołnowski from comment #8) > Sergey, I will bump version in the weekend, if you don't mind. Be aware that even if retroshare can be build without GUI, it still needs qtcore(either 5 or 4). So, if you bump it, please do not break this for CLI users. Retroshare CLI is not very useful(i prefer to run GUI app and X server on 24/7 node rather than poor CLI), but it is an useful option for some users that do not want to set up X server on their VPS. So, basically, ^^ can be replaced by ?? in REQUIRED_USE, but the problem is, that this set of flags not only selects which Qt would be chosen for GUI, but also - which would be chosen for cli. So, current logic is - build GUI version always and built cli only if requested. It seems that we should introduce some other enabled-by-default USE-flag, like 'gui' and make proper deps using it.
Created attachment 452794 [details] Third version ebuild This ebuild has suggested modification applied
(In reply to Amadeusz Żołnowski from comment #8) > Sergey, I will bump version in the weekend, if you don't mind. Please use the v3 version that has some cleaning that has been suggested here
(In reply to Amadeusz Żołnowski from comment #7) > Comparing retroshare 0.6.1 ebuild (2016-09-14 10:01 UTC) with Ebuild v2 > (2016-11-07 14:26 UTC): > > > @@ -67,14 +67,13 @@ > > virtual/ffmpeg[encode] > > )" > > DEPEND="${RDEPEND} > > - qt4? ( dev-qt/designer:4 ) > > - qt5? ( dev-qt/designer:5 ) > > + qt4? ( dev-qt/qtcore:4 ) > > + !qt4? ( dev-qt/qtcore:5 ) > > + qt5? ( dev-qt/qtwidgets:5 ) > > virtual/pkgconfig" > > > > S="${WORKDIR}/RetroShare-${PV}" > > This change confuses me. For `qt4` you require `dev-qt/qtcore:4`, but if > `qt4` > is disabled you require `dev-qt/qtcore:5`, but you've just said that GUI is > no > longer needed, so why importing `qtcore:5`? > > The same here: > > > src_configure() { > > for dir in ${rs_src_dirs} ; do > > pushd "${S}/${dir}" 2>/dev/null || die > > - use qt4 && eqmake4 > > - use qt5 && eqmake5 > > + use qt4 && eqmake4 || eqmake5 > > popd 2>/dev/null || die > > done > > } > > Why `eqmake5` is always called in case of `qt4` flag being disabled. The RetroShare building require qmake also if the GUI is not enabled because of that qtcore is required > Another > issue with this change is that if `eqmake4` fails (and it doesn't die) it > will > run `eqmake5`. I have fixed this in v3 ;) thanks for suggestion > By the way, I've noticed you redirect `popd` and `pushd` stderr output, but > you > probably meant to redirect stdout to `/dev/null`. I have fixed this in v3 ;) thanks for suggestion
Created attachment 452816 [details] Ebuild v4 Fix an issue with logic operator precedence and keywording
Created attachment 453072 [details] Ebuild v5
Sergey, could you review please the latest version attached? Gioacchino, find my comments below explaining why I've changed some things. > --- retroshare-0.6.1-r4.ebuild 2016-11-11 23:02:01.148018654 +0000 > +++ retroshare-0.6.1-r5.ebuild 2016-11-11 23:01:23.070433344 +0000 > @@ -13,14 +13,15 @@ > # pegmarkdown can also be used with MIT > LICENSE="GPL-2 GPL-3 Apache-2.0 LGPL-2.1" > SLOT="0" > -KEYWORDS="amd64 x86" > +KEYWORDS="~amd64 ~x86" This needs to be testing when bumping. > > -IUSE="cli feedreader qt4 +qt5 voip" > -REQUIRED_USE="|| ( cli qt4 qt5 ) > - qt4? ( !qt5 ) > - qt5? ( !qt4 ) > - feedreader? ( || ( qt4 qt5 ) ) > - voip? ( || ( qt4 qt5 ) )" > +IUSE="cli feedreader +gui qt4 +qt5 voip" > +REQUIRED_USE=" > + || ( cli gui ) > + gui? ( ^^ ( qt4 qt5 ) ) > + cli? ( ^^ ( qt4 qt5 ) ) > + feedreader? ( gui ) > + voip? ( gui )" Following Sergey suggestion wrt gui flag. I think that's more clear now. > > RDEPEND=" > app-arch/bzip2 > @@ -68,8 +69,10 @@ > )" > DEPEND="${RDEPEND} > qt4? ( dev-qt/qtcore:4 ) > - !qt4? ( dev-qt/qtcore:5 ) > - qt5? ( dev-qt/qtwidgets:5 ) > + qt5? ( > + dev-qt/qtcore:5 > + gui? ( dev-qt/qtwidgets:5 ) > + ) > virtual/pkgconfig" Because it used to duplicate the logic implemented in REQUIRED_USE. > > S="${WORKDIR}/RetroShare-${PV}" > @@ -103,10 +106,13 @@ > > src_configure() { > for dir in ${rs_src_dirs} ; do > - pushd "${S}/${dir}" &>/dev/null || die > - use qt4 && { eqmake4 || die; } > - use qt4 || eqmake5 || die > - popd &> /dev/null || die > + pushd "${S}/${dir}" >/dev/null || die > + if use qt4; then > + eqmake4 || die > + elif use qt5; then > + eqmake5 || die > + fi > + popd >/dev/null || die "use qt4 || ..." duplicates the logic implemented in REQUIRED_USE. > done > }
Amadeusz thank you for edits and explaining! The new version you proposed seems ok to me!
Created attachment 454868 [details] Ebuild v6 Restructure dependencies after introducing `gui` flag. Remove some duplicates. The part I am most unsure about is what's in `qt5? ()` - are almost all Qt deps meant for GUI?
Sergey, could you review Ebuild v6, please? Gioacchino, could you take a look whether deps are fine, please?
dev-qt/qtcore is not a runtme dependency if gui is not enabled, so it should go inside DEPEND not RDEPEND as it is needed only for building
Created attachment 454968 [details] Ebuild v7 I have moved all qt deps in runtime under gui flag. I have reverted back qtcore in build-time deps. Does it look correct now? I'd appreciate if someone would test different flags configuration as I don't have Gentoo setup on a hardware good enough for that at the moment.
I have tested v7 (i have pushed it to eigenlay) with this two different sets of USE on different machines USE="cli qt5* -feedreader -gui% -qt4 -voip" USE="cli gui%* qt5 voip -feedreader -qt4" Worked fine :)
Thanks. Did you have qt deps (other than qtcore) installed when testing -gui?
No I don't have other Qt dependencies installed with -gui :)
Good, thank you! :-)
Sergey, I think it's ready to go. Do you approve v7?
commit d5a9552e68bd0a2629af5b7337474f3c41442b97 Author: Sergey Popov <pinkbyte@gentoo.org> Date: Tue Dec 6 15:28:18 2016 +0300 net-p2p/retroshare: version bump Implement optional(enabled by default) 'gui' USE-flag: now it is possible to build only CLI version of RetroShare. Rearrange dependencies, thanks to Gioacchino Mazzurco and Amadeusz Żołnowski. Sync live ebuild with this changes. Reported-by: Gioacchino Mazzurco <gio@eigenlab.org> Gentoo-Bug: 593718 Package-Manager: portage-2.3.2 I have applied most of suggested changes. qtcore is missing from DEPEND because it is properly included in RDEPEND(i did not apply 'use gui && use qt4' logic, prefer to stick with 'use qt4 && use gui' instead). Thanks everyone for help!