| 6 | 
  6 | 
    
    MY_PV=$(ver_cut 1-2) 
   | 
  
  | 7 | 
  7 | 
    
    WX_GTK_VER=3.2-gtk3 
   | 
  
  | 8 | 
  8 | 
    
    
   | 
  
  | 9 | 
   | 
    
    inherit autotools desktop flag-o-matic linux-info optfeature wxwidgets xdg-utils 
   | 
  
   | 
  9 | 
    
    inherit autotools bash-completion-r1 linux-info optfeature wxwidgets xdg-utils 
   | 
  
  | 10 | 
  10 | 
    
    
   | 
  
  | 11 | 
  11 | 
    
    DESCRIPTION="The Berkeley Open Infrastructure for Network Computing" 
   | 
  
  | 12 | 
  12 | 
    
    HOMEPAGE="https://boinc.berkeley.edu/" 
   | 
  
  | 13 | 
  13 | 
    
    
   | 
  
  | 14 | 
   | 
    
    SRC_URI="X? ( https://boinc.berkeley.edu/logo/boinc_glossy2_512_F.tif -> ${PN}.tif )"
   | 
  
  | 15 | 
  14 | 
    
    if [[ ${PV} == *9999 ]] ; then
   | 
  
  | 16 | 
  15 | 
    
    	EGIT_REPO_URI="https://github.com/BOINC/${PN}.git"
   | 
  
  | 17 | 
  16 | 
    
    	inherit git-r3 
   | 
  
  | 18 | 
  17 | 
    
    else 
   | 
  
  | 19 | 
   | 
    
    	SRC_URI+=" https://github.com/BOINC/boinc/archive/client_release/${MY_PV}/${PV}.tar.gz -> ${P}.tar.gz"
   | 
  
  | 20 | 
   | 
    
    	KEYWORDS="amd64 arm64 ~ppc ppc64 sparc ~x86" 
   | 
  
   | 
  18 | 
    
    	SRC_URI="https://github.com/BOINC/boinc/archive/client_release/${MY_PV}/${PV}.tar.gz -> ${P}.tar.gz"
   | 
  
  | 21 | 
  19 | 
    
    	S="${WORKDIR}/${PN}-client_release-${MY_PV}-${PV}"
   | 
  
   | 
  20 | 
    
    
   | 
  
   | 
  21 | 
    
    	# We don't mark "stable" and "alpha" release channels in any special way but 
   | 
  
   | 
  22 | 
    
    	# use stable/testing keywords instead. 
   | 
  
   | 
  23 | 
    
    	# 
   | 
  
   | 
  24 | 
    
    	# "Alpha" versions are only named as such, they are actually more like beta 
   | 
  
   | 
  25 | 
    
    	# versions or release candidates. 
   | 
  
   | 
  26 | 
    
    	# https://github.com/BOINC/boinc/wiki/AlphaInstructions 
   | 
  
   | 
  27 | 
    
    	# 
   | 
  
   | 
  28 | 
    
    	# The current versions for each of release channels can be found at: 
   | 
  
   | 
  29 | 
    
    	# https://boinc.berkeley.edu/linux_install.php 
   | 
  
   | 
  30 | 
    
    	KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~sparc ~x86" 
   | 
  
  | 22 | 
  31 | 
    
    fi 
   | 
  
  | 23 | 
  32 | 
    
    
   | 
  
  | 24 | 
  33 | 
    
    LICENSE="LGPL-3+" 
   | 
  
  | 25 | 
  34 | 
    
    SLOT="0" 
   | 
  
  | 26 | 
  35 | 
    
    
   | 
  
  | 27 | 
   | 
    
    IUSE="X cuda curl_ssl_gnutls +curl_ssl_openssl opencl" 
   | 
  
  | 28 | 
   | 
    
    
   | 
  
  | 29 | 
   | 
    
    REQUIRED_USE=" 
   | 
  
  | 30 | 
   | 
    
    	^^ ( curl_ssl_gnutls curl_ssl_openssl ) 
   | 
  
  | 31 | 
   | 
    
    " 
   | 
  
   | 
  36 | 
    
    # - "X" builds idle tracking via XScrnSaver and the libboinc_graphics2 library 
   | 
  
   | 
  37 | 
    
    # - "gui" builds the manager app and the screensaver 
   | 
  
   | 
  38 | 
    
    IUSE="X gui" 
   | 
  
  | 32 | 
  39 | 
    
    
   | 
  
  | 33 | 
   | 
    
    # libcurl must not be using an ssl backend boinc does not support. 
   | 
  
  | 34 | 
   | 
    
    # If the libcurl ssl backend changes, boinc should be recompiled. 
   | 
  
  | 35 | 
  40 | 
    
    DEPEND=" 
   | 
  
  | 36 | 
   | 
    
    	acct-user/boinc 
   | 
  
   | 
  41 | 
    
    	>=acct-user/boinc-1 
   | 
  
  | 37 | 
  42 | 
    
    	app-misc/ca-certificates 
   | 
  
  | 38 | 
  43 | 
    
    	dev-libs/openssl:= 
   | 
  
  | 39 | 
   | 
    
    	net-misc/curl[curl_ssl_gnutls(-)=,curl_ssl_openssl(-)=,-curl_ssl_axtls(-),-curl_ssl_cyassl(-)] 
   | 
  
  | 40 | 
   | 
    
    	sys-libs/zlib 
   | 
  
  | 41 | 
   | 
    
    	cuda? ( 
   | 
  
  | 42 | 
   | 
    
    		x11-drivers/nvidia-drivers 
   | 
  
  | 43 | 
   | 
    
    	) 
   | 
  
  | 44 | 
   | 
    
    	opencl? ( 
   | 
  
  | 45 | 
   | 
    
    		virtual/opencl 
   | 
  
  | 46 | 
   | 
    
    	) 
   | 
  
   | 
  44 | 
    
    	net-misc/curl[ssl] 
   | 
  
   | 
  45 | 
    
    	sys-libs/zlib:= 
   | 
  
  | 47 | 
  46 | 
    
    	X? ( 
   | 
  
  | 48 | 
   | 
    
    		dev-libs/glib:2 
   | 
  
  | 49 | 
  47 | 
    
    		media-libs/freeglut 
   | 
  
  | 50 | 
  48 | 
    
    		media-libs/libjpeg-turbo:= 
   | 
  
  | 51 | 
   | 
    
    		x11-libs/gtk+:3 
   | 
  
  | 52 | 
   | 
    
    		x11-libs/libnotify 
   | 
  
  | 53 | 
  49 | 
    
    		x11-libs/libX11 
   | 
  
  | 54 | 
  50 | 
    
    		x11-libs/libXScrnSaver 
   | 
  
   | 
  51 | 
    
    	) 
   | 
  
   | 
  52 | 
    
    	gui? ( 
   | 
  
   | 
  53 | 
    
    		dev-libs/glib:2 
   | 
  
   | 
  54 | 
    
    		x11-libs/gtk+:3 
   | 
  
   | 
  55 | 
    
    		x11-libs/libnotify 
   | 
  
  | 55 | 
  56 | 
    
    		x11-libs/libxcb:= 
   | 
  
  | 56 | 
   | 
    
    		x11-libs/wxGTK:${WX_GTK_VER}=[X,opengl,webkit]
   | 
  
   | 
  57 | 
    
    		x11-libs/wxGTK:${WX_GTK_VER}=[opengl,webkit]
   | 
  
  | 57 | 
  58 | 
    
    		x11-libs/xcb-util 
   | 
  
  | 58 | 
  59 | 
    
    	) 
   | 
  
  | 59 | 
  60 | 
    
    " 
   | 
  
  | 60 | 
   | 
    
    BDEPEND="app-text/docbook-xml-dtd:4.4 
   | 
  
   | 
  61 | 
    
    RDEPEND="${DEPEND}"
   | 
  
   | 
  62 | 
    
    BDEPEND=" 
   | 
  
   | 
  63 | 
    
    	app-text/docbook-xml-dtd:4.4 
   | 
  
  | 61 | 
  64 | 
    
    	app-text/docbook2X 
   | 
  
  | 62 | 
   | 
    
    	sys-devel/gettext 
   | 
  
  | 63 | 
   | 
    
    	X? ( virtual/imagemagick-tools[png,tiff] ) 
   | 
  
  | 64 | 
   | 
    
    " 
   | 
  
  | 65 | 
   | 
    
    RDEPEND=" 
   | 
  
  | 66 | 
   | 
    
    	${DEPEND}
   | 
  
  | 67 | 
   | 
    
    	sys-apps/util-linux 
   | 
  
  | 68 | 
   | 
    
    	!app-admin/quickswitch 
   | 
  
   | 
  65 | 
    
    	virtual/pkgconfig 
   | 
  
  | 69 | 
  66 | 
    
    " 
   | 
  
  | 70 | 
  67 | 
    
    
   | 
  
  | 71 | 
  68 | 
    
    pkg_setup() {
   | 
  
| ... | ... |  | 
  | 101 | 
  98 | 
    
    } 
   | 
  
  | 102 | 
  99 | 
    
    
   | 
  
  | 103 | 
  100 | 
    
    src_configure() {
   | 
  
  | 104 | 
   | 
    
    	use X && setup-wxwidgets 
   | 
  
  | 105 | 
   | 
    
    
   | 
  
  | 106 | 
   | 
    
    	append-libs -L"${ESYSROOT}"/usr/$(get_libdir) -L"${ESYSROOT}"/$(get_libdir)
   | 
  
   | 
  101 | 
    
    	use gui && setup-wxwidgets 
   | 
  
  | 107 | 
  102 | 
    
    
   | 
  
  | 108 | 
  103 | 
    
    	local myeconfargs=( 
   | 
  
  | 109 | 
  104 | 
    
    		--disable-server 
   | 
  
  | 110 | 
  105 | 
    
    		--enable-client 
   | 
  
  | 111 | 
  106 | 
    
    		--enable-dynamic-client-linkage 
   | 
  
  | 112 | 
   | 
    
    		--disable-static 
   | 
  
  | 113 | 
  107 | 
    
    		--enable-unicode 
   | 
  
  | 114 | 
  108 | 
    
    		--with-ssl 
   | 
  
   | 
  109 | 
    
    		$(usex X "" ax_cv_check_glut_libglut="no") 
   | 
  
  | 115 | 
  110 | 
    
    		$(use_with X x) 
   | 
  
  | 116 | 
   | 
    
    		$(use_enable X manager) 
   | 
  
  | 117 | 
   | 
    
    		$(usex X --with-wx-config="${WX_CONFIG}" --without-wxdir)
   | 
  
   | 
  111 | 
    
    		$(use_enable gui manager) 
   | 
  
   | 
  112 | 
    
    		$(usex gui --with-wx-config="${WX_CONFIG}" --without-wxdir)
   | 
  
  | 118 | 
  113 | 
    
    	) 
   | 
  
  | 119 | 
  114 | 
    
    	econf "${myeconfargs[@]}"
   | 
  
  | 120 | 
  115 | 
    
    } 
   | 
  
| ... | ... |  | 
  | 122 | 
  117 | 
    
    src_install() {
   | 
  
  | 123 | 
  118 | 
    
    	default 
   | 
  
  | 124 | 
  119 | 
    
    
   | 
  
  | 125 | 
   | 
    
    	keepdir /var/lib/${PN}
   | 
  
  | 126 | 
   | 
    
    
   | 
  
  | 127 | 
   | 
    
    	if use X; then 
   | 
  
  | 128 | 
   | 
    
    		# Create new icons. bug 593362 
   | 
  
  | 129 | 
   | 
    
    		local s SIZES=(16 22 24 32 36 48 64 72 96 128 192 256) 
   | 
  
  | 130 | 
   | 
    
    		for s in "${SIZES[@]}"; do
   | 
  
  | 131 | 
   | 
    
    			# The convert command is not checked, because it will issue warnings and exit with 
   | 
  
  | 132 | 
   | 
    
    			# an error code if imagemagick is used and was merged with USE="-xml", although the 
   | 
  
  | 133 | 
   | 
    
    			# conversion has worked. See #766093 
   | 
  
  | 134 | 
   | 
    
    			# Instead, newicon will fail if the conversion did not produce the icon. 
   | 
  
  | 135 | 
   | 
    
    			convert "${DISTDIR}"/${PN}.tif -resize ${s}x${s} "${WORKDIR}"/boinc_${s}.png
   | 
  
  | 136 | 
   | 
    
    			newicon -s $s "${WORKDIR}"/boinc_${s}.png boinc.png
   | 
  
  | 137 | 
   | 
    
    		done 
   | 
  
  | 138 | 
   | 
    
    		make_desktop_entry boincmgr "${PN}" "${PN}" "Math;Science" "Path=/var/lib/${PN}"
   | 
  
  | 139 | 
   | 
    
    
   | 
  
  | 140 | 
   | 
    
    		# Rename the desktop file to boincmgr.desktop to (hot)fix bug 599910 
   | 
  
  | 141 | 
   | 
    
    		mv "${ED}"/usr/share/applications/boincmgr{-${PN},}.desktop || \
   | 
  
  | 142 | 
   | 
    
    			die "Failed to rename desktop file" 
   | 
  
  | 143 | 
   | 
    
    	fi 
   | 
  
  | 144 | 
   | 
    
    
   | 
  
  | 145 | 
  120 | 
    
    	# cleanup cruft 
   | 
  
  | 146 | 
  121 | 
    
    	rm -r "${ED}"/etc || die "rm failed"
   | 
  
  | 147 | 
   | 
    
    	find "${D}" -name '*.la' -delete || die "Removing .la files failed"
   | 
  
   | 
  122 | 
    
    	find "${D}/usr/$(get_libdir)" -name '*.la' -delete || die "Removing .la files failed"
   | 
  
   | 
  123 | 
    
    	find "${D}/usr/$(get_libdir)" -name '*.a' -delete || die "Removing static libs failed"
   | 
  
   | 
  124 | 
    
    
   | 
  
   | 
  125 | 
    
    	newbashcomp client/scripts/boinc.bash boinc 
   | 
  
   | 
  126 | 
    
    	bashcomp_alias boinc boinccmd 
   | 
  
  | 148 | 
  127 | 
    
    
   | 
  
  | 149 | 
   | 
    
    	newinitd "${FILESDIR}"/${PN}.init ${PN}
   | 
  
  | 150 | 
   | 
    
    	newconfd "${FILESDIR}"/${PN}.conf ${PN}
   | 
  
   | 
  128 | 
    
    	keepdir /var/lib/boinc 
   | 
  
   | 
  129 | 
    
    	fowners boinc:boinc /var/lib/boinc 
   | 
  
   | 
  130 | 
    
    	fperms 750 /var/lib/boinc 
   | 
  
   | 
  131 | 
    
    
   | 
  
   | 
  132 | 
    
    	dosym -r /etc/ssl/certs/ca-certificates.crt /var/lib/boinc/ca-bundle.crt 
   | 
  
   | 
  133 | 
    
    
   | 
  
   | 
  134 | 
    
    	exeinto /etc/X11/xinit/xinitrc.d 
   | 
  
   | 
  135 | 
    
    	newexe packages/generic/36x11-common_xhost-boinc 95-boinc 
   | 
  
   | 
  136 | 
    
    
   | 
  
   | 
  137 | 
    
    	newinitd "${FILESDIR}"/boinc.initd-r1 boinc
   | 
  
   | 
  138 | 
    
    	newconfd "${FILESDIR}"/boinc.confd-r1 boinc
   | 
  
  | 151 | 
  139 | 
    
    } 
   | 
  
  | 152 | 
  140 | 
    
    
   | 
  
  | 153 | 
  141 | 
    
    pkg_postinst() {
   | 
  
  | 154 | 
   | 
    
    	if use X; then 
   | 
  
   | 
  142 | 
    
    	if use gui; then 
   | 
  
  | 155 | 
  143 | 
    
    		xdg_desktop_database_update 
   | 
  
  | 156 | 
  144 | 
    
    		xdg_mimeinfo_database_update 
   | 
  
  | 157 | 
  145 | 
    
    		xdg_icon_cache_update 
   | 
  
  | 158 | 
  146 | 
    
    	fi 
   | 
  
  | 159 | 
  147 | 
    
    
   | 
  
  | 160 | 
  148 | 
    
    	elog 
   | 
  
  | 161 | 
   | 
    
    	elog "You are using the source compiled version of boinc." 
   | 
  
  | 162 | 
   | 
    
    	use X && elog "The graphical manager can be found at /usr/bin/boincmgr" 
   | 
  
  | 163 | 
   | 
    
    	elog 
   | 
  
  | 164 | 
  149 | 
    
    	elog "You need to attach to a project to do anything useful with boinc." 
   | 
  
  | 165 | 
   | 
    
    	elog "You can do this by running /etc/init.d/boinc attach" 
   | 
  
  | 166 | 
   | 
    
    	elog "The howto for configuration is located at:" 
   | 
  
  | 167 | 
   | 
    
    	elog "http://boinc.berkeley.edu/wiki/Anonymous_platform" 
   | 
  
   | 
  150 | 
    
    	elog "You can do this by running:" 
   | 
  
   | 
  151 | 
    
    	elog "# rc-service boinc attach" 
   | 
  
   | 
  152 | 
    
    	elog "The user manual is located at:" 
   | 
  
   | 
  153 | 
    
    	elog "https://github.com/BOINC/boinc/wiki/User-manual" 
   | 
  
  | 168 | 
  154 | 
    
    	elog 
   | 
  
  | 169 | 
  155 | 
    
    	# Add warning about the new password for the client, bug 121896. 
   | 
  
  | 170 | 
   | 
    
    	if use X; then 
   | 
  
  | 171 | 
   | 
    
    		elog "If you need to use the graphical manager the password is in:" 
   | 
  
   | 
  156 | 
    
    	if use gui; then 
   | 
  
   | 
  157 | 
    
    		elog "If you need to use the graphical manager, the password is in:" 
   | 
  
  | 172 | 
  158 | 
    
    		elog "/var/lib/boinc/gui_rpc_auth.cfg" 
   | 
  
  | 173 | 
   | 
    
    		elog "Where /var/lib/ is default RUNTIMEDIR, that can be changed in:" 
   | 
  
   | 
  159 | 
    
    		elog "Where /var/lib/boinc is default RUNTIMEDIR that can be changed in:" 
   | 
  
  | 174 | 
  160 | 
    
    		elog "/etc/conf.d/boinc" 
   | 
  
  | 175 | 
  161 | 
    
    		elog "You should change this password to something more memorable (can be even blank)." 
   | 
  
  | 176 | 
  162 | 
    
    		elog "Remember to launch init script before using manager. Or changing the password." 
   | 
  
  | 177 | 
  163 | 
    
    		elog 
   | 
  
  | 178 | 
  164 | 
    
    	fi 
   | 
  
  | 179 | 
   | 
    
    	elog "To be able to use CUDA or OpenCL you should add the boinc user to the video group." 
   | 
  
  | 180 | 
   | 
    
    	elog "Run as root:" 
   | 
  
  | 181 | 
   | 
    
    	elog "gpasswd -a boinc video" 
   | 
  
  | 182 | 
   | 
    
    	elog 
   | 
  
   | 
  165 | 
    
    
   | 
  
   | 
  166 | 
    
    	# OpenCL and CUDA libraries are loaded with dlopen(), 
   | 
  
   | 
  167 | 
    
    	# no headers used at build time and no linking occurs. 
   | 
  
   | 
  168 | 
    
    	optfeature "CUDA applications support" x11-drivers/nvidia-drivers 
   | 
  
   | 
  169 | 
    
    	optfeature "Docker applications support" \ 
   | 
  
   | 
  170 | 
    
    		"app-containers/podman app-containers/podman-compose" \ 
   | 
  
   | 
  171 | 
    
    		"app-containers/docker app-containers/docker-compose:2" 
   | 
  
   | 
  172 | 
    
    	optfeature "OpenCL applications support" virtual/opencl 
   | 
  
   | 
  173 | 
    
    	optfeature "VirtualBox applications support" app-emulation/virtualbox 
   | 
  
  | 183 | 
  174 | 
    
    
   | 
  
  | 184 | 
  175 | 
    
    	optfeature_header "If you want to run ATLAS native tasks by LHC@home, you need to install:" 
   | 
  
  | 185 | 
  176 | 
    
    	optfeature "CERN VM filesystem support" net-fs/cvmfs 
   | 
  
  | 186 | 
  177 | 
    
    } 
   | 
  
  | 187 | 
  178 | 
    
    
   | 
  
  | 188 | 
  179 | 
    
    pkg_postrm() {
   | 
  
  | 189 | 
   | 
    
    	if use X; then 
   | 
  
   | 
  180 | 
    
    	if use gui; then 
   | 
  
  | 190 | 
  181 | 
    
    		xdg_desktop_database_update 
   | 
  
  | 191 | 
  182 | 
    
    		xdg_mimeinfo_database_update 
   | 
  
  | 192 | 
  183 | 
    
    		xdg_icon_cache_update 
   |