Re: [gentoo-dev] OpenLDAP 2.3.x removal on October 27, migrate to 2.4.x

2014-10-14 Thread Robin H. Johnson
On Tue, Oct 14, 2014 at 07:52:03AM +0800, Patrick Lauer wrote:
 On 10/14/14 05:22, Robin H. Johnson wrote:
  For compatibility and migration support, we've kept the old OpenLDAP
  2.3.x ebuilds in the tree for nearly 5 years. 
 
 And you better keep them for a while, because some of us are stuck with
 2.3, and mixed operation (e.g. master 2.4, slaves 2.3) is not supported.
 
 Since for example CentOS 5 is still around and there's no upgrade path,
 well, some people like me still have to use 2.3 ...
CentOS6/7 don't resolve that issue for you?

So far you're one user, but that's enough to warrant a news item.

I would really like to get the old stuff out of the tree, it's been
around a very long time, has security issues, and the 2.3 ebuilds don't
comply with newer EAPIs and QA practices (I suspect that probably won't
even compile with newer berkdb and gnutls).

-- 
Robin Hugh Johnson
Gentoo Linux: Developer, Infrastructure Lead
E-Mail : robb...@gentoo.org
GnuPG FP   : 11ACBA4F 4778E3F6 E4EDF38E B27B944E 34884E85



[gentoo-dev] Re: new virtual: virtual/podofo-build

2014-10-14 Thread Zac Medico
On 10/13/2014 12:46 PM, Zac Medico wrote:
 Hi,
 
 In order to solve bug #503802 [1], I would like to add a
 virtual/podofo-build package to pull in app-text/podofo and
 dev-libs/boost. Then packages like app-text/calibre can put
 virtual/podofo-build in DEPEND and app-text/podofo in RDEPEND. The
 advantage of this approach is that it makes it possible to use a command
 like `emerge --depclean --with-bdeps=n` to remove the build-time only
 boost package (and virtual/podofo-build), since boost is only needed for
 build-time headers. There may be some other possible ways to specify the
 dependency, but this approach is the most attractive one that I've seen.
 In fact, this approach is basically identical to the Virtual for C++
 tr1 type_traits example that's given in the dev-manual [2].
 
 Would anyone like to suggest improvements to this idea, alternatives, or
 raise any objections?
 
 [1] https://bugs.gentoo.org/show_bug.cgi?id=503802
 [2] http://devmanual.gentoo.org/general-concepts/virtuals/
 

The proposed virtual/podofo-build ebuild is attached.
-- 
Thanks,
Zac
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=5

DESCRIPTION=Virtual package for building against PoDoFo
HOMEPAGE=
SRC_URI=

LICENSE=
SLOT=0
KEYWORDS=amd64 ~arm hppa ppc ppc64 ~sparc x86
IUSE=+boost idn debug test

# Pull in boost for build-against header dependency (see bug #503802).
RDEPEND=
~app-text/podofo-0.9.2[boost=,idn=,debug=,test=]
boost? ( dev-libs/boost )

DEPEND=


Re: [gentoo-dev] new virtual: virtual/podofo-build

2014-10-14 Thread Alex Xu
On 13/10/14 03:46 PM, Zac Medico wrote:
 Hi,
 
 In order to solve bug #503802 [1], I would like to add a
 virtual/podofo-build package to pull in app-text/podofo and
 dev-libs/boost. Then packages like app-text/calibre can put
 virtual/podofo-build in DEPEND and app-text/podofo in RDEPEND. The
 advantage of this approach is that it makes it possible to use a command
 like `emerge --depclean --with-bdeps=n` to remove the build-time only
 boost package (and virtual/podofo-build), since boost is only needed for
 build-time headers. There may be some other possible ways to specify the
 dependency, but this approach is the most attractive one that I've seen.
 In fact, this approach is basically identical to the Virtual for C++
 tr1 type_traits example that's given in the dev-manual [2].
 
 Would anyone like to suggest improvements to this idea, alternatives, or
 raise any objections?
 
 [1] https://bugs.gentoo.org/show_bug.cgi?id=503802
 [2] http://devmanual.gentoo.org/general-concepts/virtuals/
 

I feel like there should be a DEPEND specifier for packages required to
build against this package. For example, xproto is required to build
against SDL (at least using pkg-config), but not to simply use it at
runtime. This applies even if one does not directly use xproto headers.

It would not be sufficient to specify that DEPEND includes the DEPENDs
and RDEPENDs of the dependencies, since then it would be impossible to
specify build dependencies that only require the runtime of the
dependee, like most build tools.

It seems like a poor solution to have to create virtuals for every
package that requires such an arrangement.



signature.asc
Description: OpenPGP digital signature


Re: [gentoo-dev] new virtual: virtual/podofo-build

2014-10-14 Thread Zac Medico
On 10/14/2014 03:56 PM, Alex Xu wrote:
 On 13/10/14 03:46 PM, Zac Medico wrote:
 Hi,

 In order to solve bug #503802 [1], I would like to add a
 virtual/podofo-build package to pull in app-text/podofo and
 dev-libs/boost. Then packages like app-text/calibre can put
 virtual/podofo-build in DEPEND and app-text/podofo in RDEPEND. The
 advantage of this approach is that it makes it possible to use a command
 like `emerge --depclean --with-bdeps=n` to remove the build-time only
 boost package (and virtual/podofo-build), since boost is only needed for
 build-time headers. There may be some other possible ways to specify the
 dependency, but this approach is the most attractive one that I've seen.
 In fact, this approach is basically identical to the Virtual for C++
 tr1 type_traits example that's given in the dev-manual [2].

 Would anyone like to suggest improvements to this idea, alternatives, or
 raise any objections?

 [1] https://bugs.gentoo.org/show_bug.cgi?id=503802
 [2] http://devmanual.gentoo.org/general-concepts/virtuals/

 
 I feel like there should be a DEPEND specifier for packages required to
 build against this package. For example, xproto is required to build
 against SDL (at least using pkg-config), but not to simply use it at
 runtime. This applies even if one does not directly use xproto headers.
 
 It would not be sufficient to specify that DEPEND includes the DEPENDs
 and RDEPENDs of the dependencies, since then it would be impossible to
 specify build dependencies that only require the runtime of the
 dependee, like most build tools.

We can add that in a future EAPI:

https://bugs.gentoo.org/show_bug.cgi?id=392239

 It seems like a poor solution to have to create virtuals for every
 package that requires such an arrangement.

Well, it's not quite as convenient as having an EAPI extension that's
specifically designed for that purpose. However, using virtuals gives us
the desired result without having to wait for a new EAPI.
-- 
Thanks,
Zac



Re: [gentoo-dev] Removing a blocker from a stable package

2014-10-14 Thread Michael Orlitzky
On 10/13/2014 02:41 PM, Mike Gilbert wrote:
 
 I agree with Diego and Ralph: Go with d.
 
 repoman will generate a warning (not an error) about a dependency
 which does not exist, but this is safe to ignore.
 

Given that (d) didn't require me to do anything else, I just went ahead
and removed app-doc/djbdns-man. Repoman doesn't even warn. Huh.





Re: [gentoo-dev] Removing a blocker from a stable package

2014-10-14 Thread Anthony G. Basile

On 10/14/14 20:25, Michael Orlitzky wrote:

On 10/13/2014 02:41 PM, Mike Gilbert wrote:

I agree with Diego and Ralph: Go with d.

repoman will generate a warning (not an error) about a dependency
which does not exist, but this is safe to ignore.


Given that (d) didn't require me to do anything else, I just went ahead
and removed app-doc/djbdns-man. Repoman doesn't even warn. Huh.



I tested after the last round of emails and found the same.  Let us know 
if something else complains.


--
Anthony G. Basile, Ph.D.
Gentoo Linux Developer [Hardened]
E-Mail: bluen...@gentoo.org
GnuPG FP  : 1FED FAD9 D82C 52A5 3BAB  DC79 9384 FA6E F52D 4BBA
GnuPG ID  : F52D4BBA




Re: [gentoo-dev] OpenLDAP 2.3.x removal on October 27, migrate to 2.4.x

2014-10-14 Thread Patrick Lauer
On Tuesday 14 October 2014 16:02:20 Robin H. Johnson wrote:
 On Tue, Oct 14, 2014 at 07:52:03AM +0800, Patrick Lauer wrote:
  On 10/14/14 05:22, Robin H. Johnson wrote:
   For compatibility and migration support, we've kept the old OpenLDAP
   2.3.x ebuilds in the tree for nearly 5 years.
  
  And you better keep them for a while, because some of us are stuck with
  2.3, and mixed operation (e.g. master 2.4, slaves 2.3) is not supported.
  
  Since for example CentOS 5 is still around and there's no upgrade path,
  well, some people like me still have to use 2.3 ...
 
 CentOS6/7 don't resolve that issue for you?

Not an upgrade ...

And if I have to reinstall from scratch then it'd be Gentoo, but that's a 
rather brutal amount of work since there's about 8 years of new features, 
changes in config files and so on (still on my todo list, but there's other 
fires 
burning more brightly)
 
 So far you're one user, but that's enough to warrant a news item.
 
 I would really like to get the old stuff out of the tree, it's been
 around a very long time, has security issues, and the 2.3 ebuilds don't
 comply with newer EAPIs and QA practices (I suspect that probably won't
 even compile with newer berkdb and gnutls).
Well, I'm also stuck with Samba 3.5 because upstream managed to break group 
permissions with LDAP in really hilarious ways. I don't have a strong 
objection to having to keep oldcruft in an overlay, but (like Samba) it'd be 
quite acceptable to have these ebuilds masked indefinitely



Re: [gentoo-dev] new virtual: virtual/podofo-build

2014-10-14 Thread Rich Freeman
On Tue, Oct 14, 2014 at 6:56 PM, Alex Xu alex_y...@yahoo.ca wrote:
 I feel like there should be a DEPEND specifier for packages required to
 build against this package. For example, xproto is required to build
 against SDL (at least using pkg-config), but not to simply use it at
 runtime. This applies even if one does not directly use xproto headers.

 It would not be sufficient to specify that DEPEND includes the DEPENDs
 and RDEPENDs of the dependencies, since then it would be impossible to
 specify build dependencies that only require the runtime of the
 dependee, like most build tools.

I thought that a package could only assume that the direct DEPENDs
were installed anyway.  Those DEPENDs could only assume that their
immediate RDEPENDs are installed when they're used to build something
else.

So, if the podofo-build virtual listed boost in its RDEPENDs that
would be fine.  However, it would seem simpler to me to just list
boost in the calibre DEPENDs.

I'm not really opposed to having a special reverse build DEPEND
variable of some kind, but does it really add that much value?

If I ever got around to building that portage sandbox extension that
blocked read access to anything that wasn't in DEPENDS, or RDEPENDs of
DEPENDs, and so on, or @system, then it would detect these kinds of
situations.

--
Rich



Re: [gentoo-dev] new virtual: virtual/podofo-build

2014-10-14 Thread Zac Medico
On 10/14/2014 06:20 PM, Rich Freeman wrote:
 So, if the podofo-build virtual listed boost in its RDEPENDs that
 would be fine.  However, it would seem simpler to me to just list
 boost in the calibre DEPENDs.

Yeah, boost in the calibre DEPENDs satisfies my `emerge --depclean
--with-bdeps=n` requirement, so I guess KISS wins here.
-- 
Thanks,
Zac



Re: [gentoo-dev] new virtual: virtual/podofo-build

2014-10-14 Thread Zac Medico
On 10/14/2014 06:42 PM, Zac Medico wrote:
 On 10/14/2014 06:20 PM, Rich Freeman wrote:
 So, if the podofo-build virtual listed boost in its RDEPENDs that
 would be fine.  However, it would seem simpler to me to just list
 boost in the calibre DEPENDs.
 
 Yeah, boost in the calibre DEPENDs satisfies my `emerge --depclean
 --with-bdeps=n` requirement, so I guess KISS wins here.

With some investigation, I've realized that podofo has a USE flag which
allows the boost dependency to be disabled. So, it would be unfortunate
if calibre pulled in boost when it wasn't needed. Given this issue, the
virtual seems more appealing.
-- 
Thanks,
Zac



[gentoo-portage-dev] [RFC] Package description index file format for faster emerge search actions

2014-10-14 Thread Zac Medico
Hi,

As we all know, emerge --search/--searchdesc actions are embarrassingly
slow (from most users' perspectives, anyway), especially in comparison
to external tools like eix and esearch.

Wouldn't it be nice if the performance of emerge's search functionality
was more competitive with other offerings? Then, external search tools
might not be seen as an absolute necessity.

In order to solve this problem, I suggest that we add support for a
package description index file format. For example, the attached script
will generate a suitable index formatted as series of lines like this:

sys-apps/sandbox-1.6-r2,2.3-r1,2.4,2.5,2.6-r1: sandbox'd LD_PRELOAD hack

Using this format, the index file for the entire gentoo-x86 repository
consumes approximately 1.5 MB. The whole file can be quickly searched as
a stream (the whole file need not be in memory at once), yielding emerge
--search/--searchdesc performance that will be competitive with
app-portage/esearch.

The index can either be generated on the server side by egencache, or on
the client side by a post emerge --sync hook. It makes sense to support
both modes of operation, so that server side generation is purely optional.

What do others think about this proposal?
-- 
Thanks,
Zac
#!/usr/bin/env python

import os
import sys

import portage
from portage.versions import _pkg_str

usage = usage: %s repo\n % os.path.basename(sys.argv[0])

def main(args):
	if len(args) != 1:
		sys.stderr.write(usage)
		return 1

	repo_name = args[0]
	repo_info = portage.settings.repositories.prepos.get(repo_name)

	if repo_info is None:
		sys.stderr.write(unknown repo: %s\n % repo_name)
		return 1

	portdb = portage.db[portage.root][porttree].dbapi
	portdb.porttrees = [repo_info.location]

	f = sys.stdout
	if sys.hexversion = 0x300:
		f = f.buffer

	class duplicates(object):
		cp = None
		desc = None
		pkgs = []

	def flush_duplicates():
		if duplicates.pkgs:
			if len(duplicates.pkgs) == 1:
output = %s: %s\n % (duplicates.pkgs[0],
	duplicates.desc)
			else:
output = %s,%s: %s\n % (duplicates.pkgs[0],
	,.join(pkg.version
	for pkg in duplicates.pkgs[1:]), duplicates.desc)
			f.write(output.encode('utf_8'))
			del duplicates.pkgs[:]

	for cp in portdb.cp_all():
		for cpv in portdb.cp_list(cp):
			desc, = portdb.aux_get(cpv, [DESCRIPTION])
			if duplicates.cp != cp or duplicates.desc != desc:
flush_duplicates()
			duplicates.cp = cp
			duplicates.desc = desc
			duplicates.pkgs.append(_pkg_str(cpv))

	flush_duplicates()

	return os.EX_OK

if __name__ == '__main__':
	sys.exit(main(sys.argv[1:]))


[gentoo-portage-dev] Re: [RFC] Package description index file format for faster emerge search actions

2014-10-14 Thread Duncan
Zac Medico posted on Tue, 14 Oct 2014 00:40:21 -0700 as excerpted:

  I suggest that we add support for a
 package description index file format. For example, the attached script
 will generate a suitable index formatted as series of lines like this:
 
 sys-apps/sandbox-1.6-r2,2.3-r1,2.4,2.5,2.6-r1: sandbox'd LD_PRELOAD hack

What about homepage?  An index for it too?

(I found myself so frequently esearching for homepage that I hacked up a 
script that greps package names and homepages from the esearch results.)


-- 
Duncan - List replies preferred.   No HTML msgs.
Every nonfree program has a lord, a master --
and if you use the program, he is your master.  Richard Stallman




Re: [gentoo-portage-dev] Re: [RFC] Package description index file format for faster emerge search actions

2014-10-14 Thread Zac Medico
On 10/14/2014 02:53 AM, Duncan wrote:
 Zac Medico posted on Tue, 14 Oct 2014 00:40:21 -0700 as excerpted:
 
  I suggest that we add support for a
 package description index file format. For example, the attached script
 will generate a suitable index formatted as series of lines like this:

 sys-apps/sandbox-1.6-r2,2.3-r1,2.4,2.5,2.6-r1: sandbox'd LD_PRELOAD hack
 
 What about homepage?  An index for it too?
 
 (I found myself so frequently esearching for homepage that I hacked up a 
 script that greps package names and homepages from the esearch results.)

The intent is to use the package name/version as a foreign key that
links an entry in the description index to an entry in one of portage's
other caches. For example, the other cache could be the cache located
inside the $repository/metadata/md5-cache directory (which contains the
HOMEPAGE metadata that you are interested in).

So, the description index serves as a fast way to initially locate a
package by name or description. Then the foreign key is used to
efficiently pull specific metadata from the
$repository/metadata/md5-cache directory.
-- 
Thanks,
Zac



[gentoo-portage-dev] Re: [RFC] Package description index file format for faster emerge search actions

2014-10-14 Thread Duncan
Zac Medico posted on Tue, 14 Oct 2014 03:05:35 -0700 as excerpted:

 On 10/14/2014 02:53 AM, Duncan wrote:
 Zac Medico posted on Tue, 14 Oct 2014 00:40:21 -0700 as excerpted:
 
  I suggest that we add support for a
 package description index file format.
 
 What about homepage?  An index for it too?
 
 The intent is to use the package name/version as a foreign key that
 links an entry in the description index to an entry in one of portage's
 other caches.

Thanks.  Makes sense now. =:^)

-- 
Duncan - List replies preferred.   No HTML msgs.
Every nonfree program has a lord, a master --
and if you use the program, he is your master.  Richard Stallman




Re: [gentoo-portage-dev] Re: [RFC] Package description index file format for faster emerge search actions

2014-10-14 Thread Zac Medico
On 10/14/2014 02:53 AM, Duncan wrote:
 What about homepage?  An index for it too?

If we really want to index the homepage, then a more extensible format
might be better. For example, each line of the index could be a JSON
object like this:

{description: sandbox'd LD_PRELOAD hack, homepage:
http://www.gentoo.org/proj/en/portage/sandbox/;, package_versions:
sys-apps/sandbox-1.6-r2,2.3-r1,2.4,2.5,2.6-r1}

The attached script generates this JSON lines format.
-- 
Thanks,
Zac
#!/usr/bin/env python

import json
import os
import sys

import portage
from portage.versions import _pkg_str

usage = usage: %s repo\n % os.path.basename(sys.argv[0])

def main(args):
	if len(args) != 1:
		sys.stderr.write(usage)
		return 1

	repo_name = args[0]
	repo_info = portage.settings.repositories.prepos.get(repo_name)

	if repo_info is None:
		sys.stderr.write(unknown repo: %s\n % repo_name)
		return 1

	json_write_opts = {
		ensure_ascii: False,
		sort_keys: True
	}

	portdb = portage.db[portage.root][porttree].dbapi
	portdb.porttrees = [repo_info.location]

	f = sys.stdout
	if sys.hexversion = 0x300:
		f = f.buffer

	class duplicates(object):
		cp = None
		desc = None
		homepage = None
		pkgs = []

	def flush_duplicates():
		if duplicates.pkgs:
			if len(duplicates.pkgs) == 1:
package_versions = duplicates.pkgs[0]
			else:
package_versions = %s,%s % (duplicates.pkgs[0],
	,.join(pkg.version
	for pkg in duplicates.pkgs[1:]))
			obj = {
package_versions: package_versions,
description: duplicates.desc,
homepage: duplicates.homepage
			}
			f.write(json.dumps(obj, **json_write_opts).encode('utf_8'))
			f.write(b'\n')
			del duplicates.pkgs[:]

	for cp in portdb.cp_all():
		for cpv in portdb.cp_list(cp):
			desc, homepage = portdb.aux_get(cpv,
[DESCRIPTION, HOMEPAGE])
			if duplicates.cp != cp or \
duplicates.desc != desc or \
duplicates.homepage != homepage:
flush_duplicates()
			duplicates.cp = cp
			duplicates.desc = desc
			duplicates.homepage = homepage
			duplicates.pkgs.append(_pkg_str(cpv))

	flush_duplicates()

	return os.EX_OK

if __name__ == '__main__':
	sys.exit(main(sys.argv[1:]))


[gentoo-portage-dev] Re: [RFC] Package description index file format for faster emerge search actions

2014-10-14 Thread Martin Vaeth
Zac Medico zmed...@gentoo.org wrote:

 If we really want to index the homepage, then a more extensible format
 might be better. For example, each line of the index could be a JSON
 object like this:

 {description: sandbox'd LD_PRELOAD hack, homepage:
 http://www.gentoo.org/proj/en/portage/sandbox/;, package_versions:
 sys-apps/sandbox-1.6-r2,2.3-r1,2.4,2.5,2.6-r1}

...and when you also add some other data like LICENSE, IUSE, KEYWORDS,
SLOT and (optionally) {P,R,}DEPEND, you essentially end up with the
eix database (/var/cache/eix/portage.eix generated by eix-update).

The only difference is that the eix database is even somewhat more
optimized for searching (so that e.g. the homepage and license data
can be skipped without reading when you are looking for the description)
and slightly compressed (common words are in a dictionary).

It would make sense that portage and eix agree on a common database
instead of caching essentially the same information twice.
This appears especially important in view of things like eix-remote
where this data is merged for various overlays without downloading
the overlays.

You can find the description of the current format of the eix database
in eix-db.html when you emerge eix with USE=doc.




Re: [gentoo-portage-dev] Re: [RFC] Package description index file format for faster emerge search actions

2014-10-14 Thread Zac Medico
On 10/14/2014 09:27 AM, Martin Vaeth wrote:
 Zac Medico zmed...@gentoo.org wrote:

 If we really want to index the homepage, then a more extensible format
 might be better. For example, each line of the index could be a JSON
 object like this:

 {description: sandbox'd LD_PRELOAD hack, homepage:
 http://www.gentoo.org/proj/en/portage/sandbox/;, package_versions:
 sys-apps/sandbox-1.6-r2,2.3-r1,2.4,2.5,2.6-r1}
 
 ...and when you also add some other data like LICENSE, IUSE, KEYWORDS,
 SLOT and (optionally) {P,R,}DEPEND, you essentially end up with the
 eix database (/var/cache/eix/portage.eix generated by eix-update).

After some thought, I'd prefer to stick with the simpler non-extensible
format described in my first email. Reasons include:

1) The package names and descriptions are, by far, the most commonly
searched items. So, for general use, emerge --search/--searchdesc
actions should be sufficient for most users. More advanced queries are
better suited to something like eix-db or sqlite, but the majority of
users have negligible interest in performing such advanced queries, so
it's hard to justify distributing a relatively large binary database
inside the package repository (it puts extra load on the rsync servers).
So, I think it's better to generate such databases on the client side,
using $repository/metadata/md5-cache as a source when available.

2) A plain text index, like the one I originally suggested, is small
enough (1.5 MB for current gentoo-x86) so that the additional load it
puts on the rsync servers should be manageable. Also, for repositories
distributed via a vcs such as git, changes to the plain text index will
transfer efficiently (only differences are transferred).

 The only difference is that the eix database is even somewhat more
 optimized for searching (so that e.g. the homepage and license data
 can be skipped without reading when you are looking for the description)
 and slightly compressed (common words are in a dictionary).
 
 It would make sense that portage and eix agree on a common database
 instead of caching essentially the same information twice.
 This appears especially important in view of things like eix-remote
 where this data is merged for various overlays without downloading
 the overlays.

I agree, but as mentioned above, I think it's better to generate such a
database on the client side, using $repository/metadata/md5-cache as a
source when available.

 You can find the description of the current format of the eix database
 in eix-db.html when you emerge eix with USE=doc.

Thanks for the info. I've reviewed the specification, and it looks like
a nice format. However, if we're going to create a shared database that
suits the needs of both portage and eix, then I would prefer to use a
general-purpose RDBMS such as sqlite (sqlightning looks interesting,
btw). Why should be go to the trouble of developing and maintaining a
special-purpose RDBMS, even though a general-purpose RDBMS suits our needs?
-- 
Thanks,
Zac