Merge pull request #287 from marineam/symlink-usr

A few /usr related fixes
This commit is contained in:
Michael Marineau 2014-01-02 16:42:04 -08:00
commit fb6393d667
11 changed files with 230 additions and 128 deletions

View File

@ -1,53 +0,0 @@
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=2
DESCRIPTION="ChromiumOS-specific configuration files for pambase"
HOMEPAGE="http://www.chromium.org"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 arm x86"
RDEPEND="
>=sys-auth/pambase-20090620.1-r7"
#TODO: chromeos-base/vboot_reference"
DEPEND="${RDEPEND}"
src_install() {
# Chrome OS: sudo and vt2 are important for system debugging both in
# developer mode and during development. These two stanzas allow sudo and
# login auth as user chronos under the following conditions:
#
# 1. password-less access:
# - system in developer mode
# - there is no passwd.devmode file
# - there is no system-wide password set above.
# 2. System-wide (/etc/shadow) password access:
# - image has a baked in password above
# 3. Developer mode password access
# - user creates a passwd.devmode file with "chronos:CRYPTED_PASSWORD"
# 4. System-wide (/etc/shadow) password access set by modifying /etc/shadow:
# - Cases #1 and #2 will apply but failure will fall through to the
# inserted password.
insinto /etc/pam.d
doins "${FILESDIR}/chromeos-auth" || die
dosbin "${FILESDIR}/is_developer_end_user" || die
}
pkg_postinst() {
# If there's a shared user password or if the build target is the host,
# reset chromeos-auth to an empty file. We don't transition from empty to
# populated because binary packages lose FILESDIR.
local crypted_password='*'
if [ "${ROOT}" = "/" ]; then
crypted_password='host'
elif [ -r "${SHARED_USER_PASSWD_FILE}" ]; then
crypted_password=$(cat "${SHARED_USER_PASSWD_FILE}")
fi
if [ "${crypted_password}" != '*' ]; then
echo -n '' > "${ROOT}/etc/pam.d/chromeos-auth" || die
fi
}

View File

@ -1,16 +0,0 @@
# If we're not in dev-mode, skip to the system password stack.
auth [success=ignore default=3] pam_exec.so \
quiet /usr/bin/crossystem cros_debug?1
# Check if a custom devmode password file exists and prefer it.
auth [success=ignore default=1] pam_exec.so \
quiet /usr/bin/test -f /media/state/etc/devmode.passwd
# If we get to pwdfile, use it or bypass the password-less login.
auth [success=done default=1] pam_pwdfile.so \
pwdfile /media/state/etc/devmode.passwd
# If we get here, allow password-less access
auth sufficient pam_exec.so quiet /usr/bin/crossystem cros_debug?1
# Fallback to a system password if one was stamped in after initial build.

View File

@ -1,13 +0,0 @@
#!/bin/sh
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Exit status is 0 if this is a "developer system", non-zero if not.
# We define "developer system" as any of
# - a release image on a system with the developer hardware switch set on,
# - a developer or test image running on hardware or a VM, or
# - a system with a shared user password set (meaning it's possible to log in
# on a VT console).
crossystem "cros_debug?1" || grep -q '^chronos:[^*]' /etc/shadow

View File

@ -97,11 +97,9 @@ RDEPEND="${RDEPEND}
sys-apps/findutils sys-apps/findutils
sys-apps/which sys-apps/which
app-admin/sudo app-admin/sudo
app-admin/rsyslog
app-arch/gzip app-arch/gzip
app-arch/tar app-arch/tar
app-shells/bash app-shells/bash
coreos-base/chromeos-auth-config
coreos-base/coreos-base coreos-base/coreos-base
coreos-base/cros_boot_mode coreos-base/cros_boot_mode
coreos-base/vboot_reference coreos-base/vboot_reference
@ -126,7 +124,6 @@ RDEPEND="${RDEPEND}
sys-apps/systemd sys-apps/systemd
sys-apps/systemd-sysv-utils sys-apps/systemd-sysv-utils
sys-apps/util-linux sys-apps/util-linux
sys-auth/pam_pwdfile
sys-fs/e2fsprogs sys-fs/e2fsprogs
sys-fs/aufs-util sys-fs/aufs-util
sys-libs/timezone-data sys-libs/timezone-data

View File

@ -1,9 +1,9 @@
# Copyright 1999-2013 Gentoo Foundation # Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-libs/ncurses/ncurses-5.9-r2.ebuild,v 1.17 2013/01/17 04:19:21 vapier Exp $ # $Header: /var/cvsroot/gentoo-x86/sys-libs/ncurses/ncurses-5.9-r3.ebuild,v 1.3 2013/08/21 15:51:16 aballier Exp $
EAPI="1" EAPI="4"
inherit eutils flag-o-matic toolchain-funcs inherit eutils flag-o-matic toolchain-funcs multilib-minimal
MY_PV=${PV:0:3} MY_PV=${PV:0:3}
PV_SNAP=${PV:4} PV_SNAP=${PV:4}
@ -15,18 +15,29 @@ SRC_URI="mirror://gnu/ncurses/${MY_P}.tar.gz"
LICENSE="MIT" LICENSE="MIT"
SLOT="5" SLOT="5"
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd" KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
IUSE="ada +cxx debug doc gpm minimal profile static-libs tinfo trace unicode" IUSE="ada +cxx debug doc gpm minimal profile static-libs symlink-usr tinfo trace unicode"
DEPEND="gpm? ( sys-libs/gpm )" DEPEND="gpm? ( sys-libs/gpm )"
# berkdb? ( sys-libs/db )" # berkdb? ( sys-libs/db )"
RDEPEND="${DEPEND} RDEPEND="${DEPEND}
!<x11-terms/rxvt-unicode-9.06-r3" !<x11-terms/rxvt-unicode-9.06-r3
abi_x86_32? (
!<=app-emulation/emul-linux-x86-baselibs-20130224-r12
!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
)"
# Put the MULTILIB_USEDEP on gpm in PDEPEND only to avoid circular deps.
# We can move it to DEPEND and drop the --with-gpm=libgpm.so.1 from the econf
# line below once we can assume multilib gpm is available everywhere.
PDEPEND="gpm? ( sys-libs/gpm[${MULTILIB_USEDEP}] )"
S=${WORKDIR}/${MY_P} S=${WORKDIR}/${MY_P}
HOSTTIC_DIR=${WORKDIR}/${P}-host
src_unpack() { MINIMAL_TERMINFO=(ansi console dumb linux rxvt rxvt-256color rxvt-unicode \
unpack ${A} screen screen-256color sun vt{52,100,102,200,220} \
cd "${S}" xterm xterm-color xterm-256color xterm-xfree86)
src_prepare() {
[[ -n ${PV_SNAP} ]] && epatch "${WORKDIR}"/${MY_P}-${PV_SNAP}-patch.sh [[ -n ${PV_SNAP} ]] && epatch "${WORKDIR}"/${MY_P}-${PV_SNAP}-patch.sh
epatch "${FILESDIR}"/${PN}-5.8-gfbsd.patch epatch "${FILESDIR}"/${PN}-5.8-gfbsd.patch
epatch "${FILESDIR}"/${PN}-5.7-nongnu.patch epatch "${FILESDIR}"/${PN}-5.7-nongnu.patch
@ -34,7 +45,7 @@ src_unpack() {
epatch "${FILESDIR}"/${PN}-5.9-fix-clang-build.patch #417763 epatch "${FILESDIR}"/${PN}-5.9-fix-clang-build.patch #417763
} }
src_compile() { src_configure() {
unset TERMINFO #115036 unset TERMINFO #115036
tc-export_build_env BUILD_{CC,CPP} tc-export_build_env BUILD_{CC,CPP}
BUILD_CPPFLAGS+=" -D_GNU_SOURCE" #214642 BUILD_CPPFLAGS+=" -D_GNU_SOURCE" #214642
@ -43,24 +54,26 @@ src_compile() {
# because people often don't keep matching host/target # because people often don't keep matching host/target
# ncurses versions #249363 # ncurses versions #249363
if tc-is-cross-compiler && ! ROOT=/ has_version ~sys-libs/${P} ; then if tc-is-cross-compiler && ! ROOT=/ has_version ~sys-libs/${P} ; then
make_flags="-C progs tic"
CHOST=${CBUILD} \ CHOST=${CBUILD} \
CFLAGS=${BUILD_CFLAGS} \ CFLAGS=${BUILD_CFLAGS} \
CXXFLAGS=${BUILD_CXXFLAGS} \ CXXFLAGS=${BUILD_CXXFLAGS} \
CPPFLAGS=${BUILD_CPPFLAGS} \ CPPFLAGS=${BUILD_CPPFLAGS} \
LDFLAGS="${BUILD_LDFLAGS} -static" \ LDFLAGS="${BUILD_LDFLAGS} -static" \
do_compile cross --without-shared --with-normal BUILD_DIR="${HOSTTIC_DIR}" do_configure cross --without-shared --with-normal
fi fi
multilib-minimal_src_configure
make_flags=""
do_compile narrowc
use unicode && do_compile widec --enable-widec --includedir=/usr/include/ncursesw
} }
do_compile() {
multilib_src_configure() {
do_configure narrowc
use unicode && do_configure widec --enable-widec --includedir=/usr/include/ncursesw
}
do_configure() {
ECONF_SOURCE=${S} ECONF_SOURCE=${S}
mkdir "${WORKDIR}"/$1 mkdir "${BUILD_DIR}"-$1
cd "${WORKDIR}"/$1 cd "${BUILD_DIR}"-$1 || die
shift shift
# ncurses is dumb and doesn't install .pc files unless pkg-config # ncurses is dumb and doesn't install .pc files unless pkg-config
@ -93,6 +106,7 @@ do_compile() {
$(use_with debug) \ $(use_with debug) \
$(use_with profile) \ $(use_with profile) \
$(use_with gpm) \ $(use_with gpm) \
$(multilib_is_native_abi || use_with gpm gpm libgpm.so.1) \
--disable-termcap \ --disable-termcap \
--enable-symlinks \ --enable-symlinks \
--with-rcs-ids \ --with-rcs-ids \
@ -110,36 +124,59 @@ do_compile() {
$(use_with tinfo termlib) \ $(use_with tinfo termlib) \
${conf_abi} \ ${conf_abi} \
"$@" "$@"
}
src_compile() {
# when cross-compiling, we need to build up our own tic
# because people often don't keep matching host/target
# ncurses versions #249363
if tc-is-cross-compiler && ! ROOT=/ has_version ~sys-libs/${P} ; then
make_flags="-C progs tic"
BUILD_DIR="${HOSTTIC_DIR}" do_compile cross
fi
multilib-minimal_src_compile
}
multilib_src_compile() {
make_flags=""
multilib_is_native_abi || make_flags="PROGS= "
do_compile narrowc
use unicode && do_compile widec
}
do_compile() {
cd "${BUILD_DIR}"-$1 || die
# A little hack to fix parallel builds ... they break when # A little hack to fix parallel builds ... they break when
# generating sources so if we generate the sources first (in # generating sources so if we generate the sources first (in
# non-parallel), we can then build the rest of the package # non-parallel), we can then build the rest of the package
# in parallel. This is not really a perf hit since the source # in parallel. This is not really a perf hit since the source
# generation is quite small. # generation is quite small.
emake -j1 sources || die emake -j1 sources
# For some reason, sources depends on pc-files which depends on # For some reason, sources depends on pc-files which depends on
# compiled libraries which depends on sources which ... # compiled libraries which depends on sources which ...
# Manually delete the pc-files file so the install step will # Manually delete the pc-files file so the install step will
# create the .pc files we want. # create the .pc files we want.
rm -f misc/pc-files rm -f misc/pc-files
emake ${make_flags} || die emake ${make_flags}
} }
src_install() { multilib_src_install() {
# use the cross-compiled tic (if need be) #249363 # use the cross-compiled tic (if need be) #249363
export PATH=${WORKDIR}/cross/progs:${PATH} export PATH="${HOSTTIC_DIR}-cross/progs:${PATH}"
# install unicode version second so that the binaries in /usr/bin # install unicode version second so that the binaries in /usr/bin
# support both wide and narrow # support both wide and narrow
cd "${WORKDIR}"/narrowc cd "${BUILD_DIR}"-narrowc || die
emake DESTDIR="${D}" install || die emake DESTDIR="${D}" install
if use unicode ; then if use unicode ; then
cd "${WORKDIR}"/widec cd "${BUILD_DIR}"-widec || die
emake DESTDIR="${D}" install || die emake DESTDIR="${D}" install
fi fi
# Move libncurses{,w} into /lib # Move libncurses{,w} into /lib
gen_usr_ldscript -a \ multilib_is_native_abi && gen_usr_ldscript -a \
ncurses \ ncurses \
$(usex unicode 'ncursesw' '') \ $(usex unicode 'ncursesw' '') \
$(use tinfo && usex unicode 'tinfow' '') \ $(use tinfo && usex unicode 'tinfow' '') \
@ -147,13 +184,15 @@ src_install() {
ln -sf libncurses.so "${D}"/usr/$(get_libdir)/libcurses.so || die ln -sf libncurses.so "${D}"/usr/$(get_libdir)/libcurses.so || die
use static-libs || find "${D}"/usr/ -name '*.a' -a '!' -name '*curses++*.a' -delete use static-libs || find "${D}"/usr/ -name '*.a' -a '!' -name '*curses++*.a' -delete
# if ! use berkdb ; then # Build fails to create this ...
dosym ../share/terminfo /usr/$(get_libdir)/terminfo
}
multilib_src_install_all() {
if ! use symlink-usr ; then
# We need the basic terminfo files in /etc, bug #37026 # We need the basic terminfo files in /etc, bug #37026
einfo "Installing basic terminfo files in /etc..." einfo "Installing basic terminfo files in /etc..."
for x in ansi console dumb linux rxvt rxvt-256color rxvt-unicode \ for x in "${MINIMAL_TERMINFO[@]}" ; do
screen screen-256color sun vt{52,100,102,200,220} \
xterm xterm-color xterm-256color xterm-xfree86
do
local termfile=$(find "${D}"/usr/share/terminfo/ -name "${x}" 2>/dev/null) local termfile=$(find "${D}"/usr/share/terminfo/ -name "${x}" 2>/dev/null)
local basedir=$(basename $(dirname "${termfile}")) local basedir=$(basename $(dirname "${termfile}"))
@ -165,20 +204,20 @@ src_install() {
fi fi
done done
# Build fails to create this ... echo "CONFIG_PROTECT_MASK=\"/etc/terminfo\"" > "${T}"/50ncurses
dosym ../share/terminfo /usr/$(get_libdir)/terminfo doenvd "${T}"/50ncurses
# fi
echo "CONFIG_PROTECT_MASK=\"/etc/terminfo\"" > "${T}"/50ncurses use minimal && rm -r "${D}"/usr/share/terminfo*
doenvd "${T}"/50ncurses # Because ncurses5-config --terminfo returns the directory we keep it
keepdir /usr/share/terminfo #245374
if use minimal ; then elif use minimal; then
rm -r "${D}"/usr/share/terminfo* # prune all files and symlinks not listed in MINIMAL_TERMINFO
find "${D}"/usr/share/terminfo ! -type d \
${MINIMAL_TERMINFO[@]/#/! -name } \
-delete || die
find "${D}"/usr/share/terminfo -type d -empty -delete || die
fi fi
# Because ncurses5-config --terminfo returns the directory we keep it
keepdir /usr/share/terminfo #245374
cd "${S}" cd "${S}"
dodoc ANNOUNCE MANIFEST NEWS README* TO-DO doc/*.doc dodoc ANNOUNCE MANIFEST NEWS README* TO-DO doc/*.doc
use doc && dohtml -r doc/html/ use doc && dohtml -r doc/html/

View File

@ -0,0 +1 @@
DIST baselayout-2.2.tar.bz2 40744 SHA256 11d4a223b06da545c3e59e07c9195570f334b5b1be05d995df0ebc8ea2203e98 SHA512 a5199c42e835d9f2683cc94f3c4c47ecdc392316c24e0932845736e2e90479b0c5c8ad72ead8e0537f097405b7d7548d00b87b7ff8c9e3651486e3c5c0970b36 WHIRLPOOL 60cc4f7f76c5a45c15303e526decffb3bad2b50ac659b1dd072d2ed4b0eb0b31929a1a733ddb03a31ee5882b889a4efb87206f63ffaa2b11e26d36afd0933a95

View File

@ -0,0 +1,19 @@
# /etc/nsswitch.conf:
passwd: files usrfiles
shadow: files usrfiles
group: files usrfiles
hosts: files usrfiles dns
networks: files usrfiles dns
services: files usrfiles
protocols: files usrfiles
rpc: files usrfiles
ethers: files
netmasks: files
netgroup: files
bootparams: files
automount: files
aliases: files

View File

@ -0,0 +1,70 @@
#ident "@(#)rpc 1.11 95/07/14 SMI" /* SVr4.0 1.2 */
#
# rpc
#
portmapper 100000 portmap sunrpc rpcbind
rstatd 100001 rstat rup perfmeter rstat_svc
rusersd 100002 rusers
nfs 100003 nfsprog
ypserv 100004 ypprog
mountd 100005 mount showmount
ypbind 100007
walld 100008 rwall shutdown
yppasswdd 100009 yppasswd
etherstatd 100010 etherstat
rquotad 100011 rquotaprog quota rquota
sprayd 100012 spray
3270_mapper 100013
rje_mapper 100014
selection_svc 100015 selnsvc
database_svc 100016
rexd 100017 rex
alis 100018
sched 100019
llockmgr 100020
nlockmgr 100021
x25.inr 100022
statmon 100023
status 100024
bootparam 100026
ypupdated 100028 ypupdate
keyserv 100029 keyserver
sunlink_mapper 100033
tfsd 100037
nsed 100038
nsemntd 100039
showfhd 100043 showfh
ioadmd 100055 rpc.ioadmd
NETlicense 100062
sunisamd 100065
debug_svc 100066 dbsrv
ypxfrd 100069 rpc.ypxfrd
bugtraqd 100071
kerbd 100078
event 100101 na.event # SunNet Manager
logger 100102 na.logger # SunNet Manager
sync 100104 na.sync
hostperf 100107 na.hostperf
activity 100109 na.activity # SunNet Manager
hostmem 100112 na.hostmem
sample 100113 na.sample
x25 100114 na.x25
ping 100115 na.ping
rpcnfs 100116 na.rpcnfs
hostif 100117 na.hostif
etherif 100118 na.etherif
iproutes 100120 na.iproutes
layers 100121 na.layers
snmp 100122 na.snmp snmp-cmc snmp-synoptics snmp-unisys snmp-utk
traffic 100123 na.traffic
nfs_acl 100227
sadmind 100232
nisd 100300 rpc.nisd
nispasswd 100303 rpc.nispasswdd
ufsd 100233 ufsd
fedfs_admin 100418
pcnfsd 150001 pcnfs
amd 300019 amq
sgi_fam 391002 fam
bwnfsd 545580417
fypxfrd 600100069 freebsd-ypxfrd

View File

@ -0,0 +1 @@
L /tmp/nsswitch.conf - - - - /usr/share/nss/nsswitch.conf

View File

@ -0,0 +1,57 @@
# Copyright (c) 2013 The CoreOS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
CROS_WORKON_COMMIT="47016ef8e5fb5436d62bd34fea69f15b9f3343c1"
CROS_WORKON_PROJECT="marineam/nss-altfiles"
CROS_WORKON_LOCALNAME="nss-altfiles"
CROS_WORKON_REPO="git://github.com"
inherit cros-workon
# The default files are provided by baselayout
BASELAYOUT_PV="2.2"
BASELAYOUT_P="baselayout-${BASELAYOUT_PV}"
DESCRIPTION="NSS module for data sources under /usr on for CoreOS"
HOMEPAGE="https://github.com/marineam/nss-altfiles"
SRC_URI="mirror://gentoo/${BASELAYOUT_P}.tar.bz2
http://dev.gentoo.org/~vapier/dist/${BASELAYOUT_P}.tar.bz2"
LICENSE="LGPL-2.1+"
SLOT="0"
KEYWORDS="amd64"
IUSE=""
DEPEND=""
RDEPEND=""
src_unpack() {
cros-workon_src_unpack
default
}
src_configure() {
: # Don't bother with the custom configure script.
}
src_compile() {
emake DATADIR=/usr/share/nss MODULE_NAME=usrfiles
}
src_install() {
dolib.so libnss_usrfiles.so.2
insinto /usr/lib/tmpfiles.d
newins "${FILESDIR}/tmpfiles.conf" "${PN}.conf"
insinto /usr/share/nss
doins "${FILESDIR}/nsswitch.conf"
# imported from glibc 2.18 (not provided by baselayout)
doins "${FILESDIR}/rpc"
# gentoo defaults from baselayout
for file in hosts networks protocols services; do
doins "${WORKDIR}/${BASELAYOUT_P}/etc/${file}"
done
}