Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 462244

Summary: =dev-lang/parrot-5.6.0 - FEATURES=userpriv - Can't write-open packfile-c.pod: Permission denied at /usr/bin/perldoc line 10.
Product: Gentoo Linux Reporter: James Cloos <cloos>
Component: [OLD] DevelopmentAssignee: Gentoo Perl team <perl>
Status: RESOLVED DUPLICATE    
Severity: normal CC: Martin.vGagern, Sergiy.Borodych
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: build log

Description James Cloos 2013-03-18 21:47:17 UTC
>>> Install parrot-5.1.0 into /var/tmp/portage/dev-lang/parrot-5.1.0/image/ category dev-lang
make -j6 -j1 install-dev DESTDIR=/var/tmp/portage/dev-lang/parrot-5.1.0/image/ DOC_DIR=/usr/share/doc/parrot-5.1.0 
gmake -C docs
gmake[1]: Entering directory `/var/tmp/portage/dev-lang/parrot-5.1.0/work/parrot-5.1.0/docs'
/usr/bin/perl5.16.3 -MExtUtils::Command -e mkpath ops
/usr/bin/perl5.16.3 -MExtUtils::Command -e touch doc-prep
/usr/bin/perldoc -ud packfile-c.pod ../src/packfile/api.c
Can't write-open packfile-c.pod: Permission denied
 at /usr/bin/perldoc line 9.
gmake[1]: *** [packfile-c.pod] Error 13
gmake[1]: Leaving directory `/var/tmp/portage/dev-lang/parrot-5.1.0/work/parrot-5.1.0/docs'
make: *** [docs.dummy] Error 2
emake failed

my perl is 5.16.3 and Pod-Perldoc is 3.190.0.
Comment 1 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-03-20 16:11:53 UTC
1) Please attach the complete build log.
2) Please comment with the output of `emerge --info =dev-lang/parrot-5.1.0`.
Comment 2 Martin von Gagern 2013-08-13 03:41:45 UTC
Created attachment 355834 [details]
build log

Same here, without FEATURES=userpriv. It used to work at some point in the past.

$ emerge --info =dev-lang/parrot-5.6.0
Portage 2.2.0_alpha196 (default/linux/amd64/13.0/desktop/kde, gcc-4.7.3, glibc-2.17, 3.10.4-gentoo x86_64)
=================================================================
 System Settings
=================================================================
System uname: Linux-3.10.4-gentoo-x86_64-AMD_Phenom-tm-_II_X4_945_Processor-with-gentoo-2.2
KiB Mem: 15672916 total, 8618676 free
KiB Swap: 6836220 total, 6836220 free
Timestamp of tree: Mon, 12 Aug 2013 22:45:01 +0000
ld GNU ld (GNU Binutils) 2.23.2
distcc 3.1 x86_64-pc-linux-gnu [disabled]
ccache version 3.1.9 [disabled]
app-shells/bash: 4.2_p45
dev-java/java-config: 2.2.0::java
dev-lang/python: 2.6.8-r2, 2.7.5-r1, 3.2.5-r1, 3.3.2-r1
dev-util/ccache: 3.1.9
dev-util/cmake: 2.8.11.1
dev-util/pkgconfig: 0.28
sys-apps/baselayout: 2.2
sys-apps/openrc: 0.11.8
sys-apps/sandbox: 2.6-r1
sys-devel/autoconf: 2.13, 2.69
sys-devel/automake: 1.9.6-r3, 1.10.3, 1.11.6, 1.12.6, 1.13.4, 1.14
sys-devel/binutils: 2.23.2
sys-devel/gcc: 3.4.6-r2, 4.1.2, 4.5.4, 4.6.4, 4.7.3
sys-devel/gcc-config: 1.8
sys-devel/libtool: 2.4.2
sys-devel/make: 3.82-r4
sys-kernel/linux-headers: 3.9 (virtual/os-headers)
sys-libs/glibc: 2.17
Repositories: sunrise-enabled ldc bump gentoo java generated sage-on-gentoo bugfix mvg-java-experimental mvgLocal
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA dlj-1.1 sun-bcla-java-vm Oracle-BCLA-JavaSE skype-eula skype-4.0.0.7-copyright googleearth AdobeFlash-10.3 AdobeFlash-11.x PUEL"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=amdfam10 -O2 -ggdb -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/maven-bin-3.0/conf /usr/share/maven-bin-3.1/conf /usr/share/polkit-1/actions /usr/share/themes/oxygen-gtk/gtk-2.0 /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.3/ext-active/ /etc/php/apache2-php5.5/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cgi-php5.5/ext-active/ /etc/php/cli-php5.3/ext-active/ /etc/php/cli-php5.5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=amdfam10 -O2 -ggdb -pipe"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs collision-protect config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://mirror.opteamax.de/gentoo/ http://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo/ http://mirror.netcologne.de/gentoo/"
LANG="de_DE.utf8"
LDFLAGS="-Wl,--as-needed"
MAKEOPTS="-j5"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/portage/local/sunrise-enabled /usr/portage/local/layman/ldc /usr/portage/local/bump /usr/portage /usr/portage/local/layman/java /usr/portage/local/generated /usr/portage/local/layman/sage-on-gentoo /usr/portage/local/bugfix /usr/portage/local/mvg-java /usr/portage/local/mvg"
SYNC="rsync://rsync.de.gentoo.org/gentoo-portage"
USE="X a52 aac acl acpi alsa amd64 apache2 audacious audiofile avahi bash-completion bcmath berkdb branding bzip2 c++ cairo cdda cdparanoia cdr chroot cli consolekit cracklib crypt css cups curl cxx dba dbus declarative dhcp doc dri dts dv dvd dvdr emacs emboss encode escreen exif fam fastcgi ffmpeg fftw firefox flac flatfile fortran ftp gcc-libffi gd gdbm gif gimp gnutls gphoto2 gpm graphviz gs gstreamer gtk gtk3 hal hbci html iconv icu idn imagemagick ipv6 iso14755 ithreads jabber jack java jpeg jpeg2k kde kerberos kipi kpathsea kvm ladspa latex lcms ldap leim libnotify lirc lm_sensors logrotate lzma lzo mad maildir mhash midi mikmod mime mjpeg mmx mng modules mozxmlterm mp3 mp4 mpeg mpeg2 mplayer mudflap multilib mysql ncurses network nls nptl nsplugin numpy objc odbc ofx ogg openexr opengl openmp pam pango pcre pdf perl phonon php plasma plotutils png policykit povray ppds procmail python qt3support qt4 quicktime rdesktop readline real recode sasl scanner sdl session sip sipim smime sndfile snmp sockets socks5 sox speex spell sqlite sse sse2 ssl startup-notification subversion svg tcl tcpd theora threads thunderbird tiff timidity tokenizer transcode translator truetype type1 udev udisks unicode upower usb userlocales v4l v4l2 vhosts vorbis vpx win32codecs wmf wxwidgets x264 xanim xattr xcb xcomposite xine xinerama xinetd xml xmp xprint xscreensaver xulrunner xv xvid xvmc zlib" ABI_X86="64" ALSA_CARDS="bt87x emu10k1x hda-intel usb-audio via82xx via82xx-modem" APACHE2_MODULES="actions alias asis auth_basic auth_digest authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter filter headers include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_connect proxy_ftp proxy_http rewrite setenvif speling status unique_id userdir usertrack vhost_alias" APACHE2_MPMS="prefork" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" DRACUT_MODULES="lvm" ELIBC="glibc" FRITZCAPI_CARDS="fcpci" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="evdev joystick keyboard mouse wacom" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en de en_US en_GB" LIRC_DEVICES="devinput" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_6 python2_7 python3_2 python3_3" RUBY_TARGETS="ruby19 ruby20 jruby" USERLAND="GNU" VIDEO_CARDS="nouveau nv radeon fbdev v4l vesa vga" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
USE_PYTHON="2.6 2.7 3.2 3.3"
Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

=================================================================
 Package Settings
=================================================================
USE="(consolekit) doc gdbm (multilib) nls opengl pcre (policykit) ssl unicode -examples -gmp" ABI_X86="64"

dev-lang/parrot-5.6.0 was built with the following:


$ emerge -pqv =dev-lang/parrot-5.6.0
[ebuild   R   ] dev-lang/parrot-5.6.0  USE="doc gdbm nls opengl pcre ssl unicode -examples -gmp"
Comment 3 Martin von Gagern 2013-08-13 03:55:05 UTC
Same with USE=-doc
Comment 4 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2013-08-25 15:02:02 UTC
looks like a dup of #454058

Essentially, it calls "perldoc" during "make install"/src_install, and perldoc will drop privs to UID=nobody if UID=0  ( Which appears to be the case even under FEATURES=userpriv ), and that specific invocation of `perldoc` can't write to the portage directory as UID=nobody
Comment 5 Martin von Gagern 2013-08-29 12:15:20 UTC
(In reply to Kent Fredric from comment #4)
> looks like a dup of #454058

Your patch mentioned in bug #454058 comment #16 works for me. Applied as follows:

# ebuild /usr/portage/dev-lang/parrot/parrot-5.6.0.ebuild clean prepare
# wget -qO- https://github.com/parrot/parrot/pull/973.patch \
  | patch -p1 -d /var/tmp/portage/dev-lang/parrot-5.6.0/work/parrot-5.6.0
# ebuild /usr/portage/dev-lang/parrot/parrot-5.6.0.ebuild merge

If parrot were to call epatch_user, I could drop that patch into a directory to ensure it will get applied for every subsequent build, and I won't have to worry about this issue here in the future.

I see that your patch was merged at first, but then got reverted again in https://github.com/parrot/parrot/commit/226d49da937540e52db01765d43d64bf900a0a17 without any indication as to WHY it was reverted. Guess it failed to build on SOME platform, but as long as it works on Gentoo, I'm happy with that patch.
Comment 6 Mikle Kolyada (RETIRED) archtester Gentoo Infrastructure gentoo-dev Security 2013-08-29 12:59:20 UTC
Closed as duplicate then. I will push this patch in cvs soon.

*** This bug has been marked as a duplicate of bug 454058 ***
Comment 7 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2013-08-29 19:59:13 UTC
(In reply to Martin von Gagern from comment #5)
> (In reply to Kent Fredric from comment #4)
> > looks like a dup of #454058
> 
> Your patch mentioned in bug #454058 comment #16 works for me. Applied as
> follows:
> 
> # ebuild /usr/portage/dev-lang/parrot/parrot-5.6.0.ebuild clean prepare
> # wget -qO- https://github.com/parrot/parrot/pull/973.patch \
>   | patch -p1 -d /var/tmp/portage/dev-lang/parrot-5.6.0/work/parrot-5.6.0
> # ebuild /usr/portage/dev-lang/parrot/parrot-5.6.0.ebuild merge
> 
> If parrot were to call epatch_user, I could drop that patch into a directory
> to ensure it will get applied for every subsequent build, and I won't have
> to worry about this issue here in the future.
> 
> I see that your patch was merged at first, but then got reverted again in
> https://github.com/parrot/parrot/commit/
> 226d49da937540e52db01765d43d64bf900a0a17 without any indication as to WHY it
> was reverted. Guess it failed to build on SOME platform, but as long as it
> works on Gentoo, I'm happy with that patch.

The reason upstream gave me on the related bug, was that the patch breaks building on win32, where the ">" redirection doesn't work. 

But thats no reason not to apply this patch in unix.

Though really, the core of the problem is that upstream are generating documentation during 'make install' instead of during 'make', which would eliminate the problem for us, because then UID would not = 0.
Comment 8 Martin von Gagern 2013-08-29 21:04:00 UTC
(In reply to Kent Fredric from comment #7)
> Though really, the core of the problem is that upstream are generating
> documentation during 'make install' instead of during 'make', which would
> eliminate the problem for us, because then UID would not = 0.

FEATURES=-userpriv would still be in trouble, right? I agree that Parrot upstream should get their build phases straight, but building as root should be possible nevertheless.

I also agree that perldoc itself should not unconditionally switch UID, as you already argued in https://rt.cpan.org/Public/Bug/Display.html?id=87837

All of this is someone else's problem, though, as Gentoo builds should be happy with your patch. Looking forward to having this in portage.