Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37546973
en ru br
Репозитории ALT
5.1: 1.1.3-alt0.M51.1
4.1: 1.0.1-alt1
4.0: 0.99.6.3-alt2
3.0: 0.75-alt29
www.altlinux.org/Changes

Группа :: Система/Основа
Пакет: pam

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Name: pam
Version: 1.0.1
Release: alt1

%define rhver 0.99.8-1

Summary: Pluggable Authentication Modules
# The library is BSD-style *without* advertising clause, with option to relicense as GPLv2+.
License: BSD-style or GPLv2+
Group: System/Base
Url: http://www.kernel.org/pub/linux/libs/pam/index.html
Packager: Dmitry V. Levin <ldv at altlinux.org>

%define srcname Linux-PAM-%version

%def_disable static
%def_enable nls

# Linux-PAM name suffix

%define _pam_name_suffix 0

# Used for pam module package naming.

%define make_pam_name() pam%{_pam_name_suffix}_%{1}
%define set_pam_name() %global pam_name %(n='%{1}'; s="${n#pam_}"; [ "$n" = "$s" ] && echo -n "$n" || echo -n "pam%{_pam_name_suffix}_$s")

# Linux-PAM modules directory.

%define _pam_modules_dir /%_lib/security

# Linux-PAM library soname suffix.

%define _pam_so_suffix %{nil}

# Linux-PAM library package name, used for tracking package dependencies.

%define libpam libpam%{_pam_name_suffix}

# ftp://ftp.kernel.org/pub/linux/libs/pam/pre/library/%srcname.tar.bz2

Source0: %srcname.tar
Source2: pam-redhat-%rhver.tar
Source3: pam-alt-%version-%release.tar
Source5: PAM-Policy.ALT
Source6: linux-pam.macros
Source7: 50-defaults.conf

Patch1: Linux-PAM-%version-%release.patch
Patch2: pam-redhat-%version-%release.patch

%define helperdir /sbin
%define _pamdir %_sysconfdir/pam.d
%define _secdir %_sysconfdir/security

Provides: %_secdir/limits.d
Requires: %libpam = %version-%release, pam-common >= 1.1
Obsoletes: pamconfig

BuildRequires: rpm-build >= 0:4.0.4-alt55

# Required for pam_console.

BuildRequires: flex

# Required for pam_userdb.

BuildRequires: libdb4-devel

# Required for docs.

BuildRequires: docbook-dtds docbook-style-xsl xsltproc w3m

%package -n %libpam
Summary: Shared libraries for running PAM-based software
Group: System/Libraries
PreReq: pam-common
Provides: libpam(include), libpam(substack)
Provides: libpam = %version-%release
Obsoletes: libpam

%package -n %libpam-devel
Summary: Libraries and header files for developing PAM-aware software
Group: Development/C
Requires: %libpam = %version-%release
Provides: libpam-devel = %version-%release, pam-devel = %version-%release
Obsoletes: libpam-devel, pam-devel
Conflicts: libpam2-devel

%package -n %libpam-devel-static
Summary: Static libraries for developing PAM-aware software
Group: Development/C
Requires: %libpam-devel = %version-%release
Provides: libpam-devel-static = %version-%release
Obsoletes: libpam-devel-static
Conflicts: libpam2-devel-static

%package doc
Summary: Linux-PAM documentation
Group: Development/C
Requires: pam = %version-%release

%package -n %{make_pam_name console}
Summary: Controls permissions for users at the system console
License: GPLv2+
Group: System/Base
Requires: pam = %version-%release
Provides: pam_console = %version-%release
Obsoletes: pam_console, pam_console0
Provides: %_secdir/console.apps

%package -n %{make_pam_name timestamp}
Summary: Authenticate using cached successful authentication attempts
License: GPLv2+
Group: System/Base
Requires: pam = %version-%release
Provides: pam_timestamp = %version-%release
Obsoletes: pam_timestamp, pam_timestamp0

%description
Linux-PAM (Pluggable Authentication Modules for Linux) is a suite of
libraries that enable the local system administrator to choose how
PAM-aware applications authenticate users, without having to recompile
those applications.

%description -n %libpam
Linux-PAM (Pluggable Authentication Modules for Linux) is a suite of
libraries that enable the local system administrator to choose how
PAM-aware applications authenticate users, without having to recompile
those applications.

This package contains shared libraries required for running both
PAM-aware applications and modules for use with Linux-PAM.

%description -n %libpam-devel
Linux-PAM (Pluggable Authentication Modules for Linux) is a suite of
libraries that enable the local system administrator to choose how
PAM-aware applications authenticate users, without having to recompile
those applications.

This package contains header files and development libraries used for
building both PAM-aware applications and modules for use with Linux-PAM.

%description -n %libpam-devel-static
Linux-PAM (Pluggable Authentication Modules for Linux) is a suite of
libraries that enable the local system administrator to choose how
PAM-aware applications authenticate users, without having to recompile
those applications.

This package contains static libraries used for building statically
linked PAM-aware applications for use with Linux-PAM.

%description doc
Linux-PAM (Pluggable Authentication Modules for Linux) is a suite of
libraries that enable the local system administrator to choose how
PAM-aware applications authenticate users, without having to recompile
those applications.

This package contains detailed Linux-PAM documentation.

%description -n %{make_pam_name console}
The pam_console module exists to change file permissions when users
log on at the console, and to change them back when they log out of
the console.

See pam_console(8) for details.

%description -n %{make_pam_name timestamp}
The pam_timestamp module implements sudo-style authentication
timestamps.

See pam_timestamp(8) for details.

%prep
%setup -q -n %srcname -a2 -a3
%patch1 -p1
pushd modules
%patch2 -p1
popd

find -type f \( -name .cvsignore -o -name \*~ -o -name \*.orig \) -delete

# Unlink unwanted modules.

for d in cracklib keyinit radius selinux sepermit tty_audit unix; do
sed -i "s,modules/pam_$d/Makefile,," configure.in
sed -i "s/pam_$d //" modules/Makefile.am
sed -i "s/tst-pam_$d[0-9]* //" xtests/Makefile.am
done

%build
./autogen.sh
%configure \
--libdir=/%_lib \
--sbindir=/sbin \
--includedir=%_includedir/security \
--disable-cracklib \
--disable-audit \
--disable-selinux \
%{subst_enable nls} \
%{subst_enable static} \
#
# SMP-incompatible build.
%__make
make check

%install
%define docdir %_docdir/%srcname
%make_install install DESTDIR=%buildroot docdir=%docdir
mkdir -p %buildroot{%_secdir/console.apps,/var/run/console}

# Relocate development libraries from /%_lib/ to %_libdir/.

mkdir -p %buildroot%_libdir
mv %buildroot/%_lib/*.*a %buildroot%_libdir/
/sbin/ldconfig -nv %buildroot/%_lib
for f in %buildroot/%_lib/*.so; do
t=`objdump -p "$f" |awk '/SONAME/ {print $2}'`
[ -n "$t" ]
ln -s ../../%_lib/"$t" "%buildroot%_libdir/${f##*/}"
rm -f "$f"
done
rm -f %buildroot%_pam_modules_dir/*.la

chmod 700 %buildroot/sbin/{pam_console_apply,pam_timestamp_check}

# Make sure that all modules are built.

>check.log
for d in modules/pam_*; do
[ -d "$d" -a -s "$d/Makefile" ] || continue
m="${d##*/}"
! ls -1 "%buildroot%_pam_modules_dir/$m"*.so 2>/dev/null || continue
echo "ERROR: $m module did not build." >&2
echo "$m" >>check.log
done
! [ -s check.log ] || exit 1

# Make sure that no module exports symbols beyond standard set.

>check.log
for f in %buildroot%_pam_modules_dir/pam*.so; do
readelf -Ws "$f" |
grep -w GLOBAL |
grep -Ewv 'UND|pam_sm_(acct_mgmt|authenticate|chauthtok|close_session|open_session|setcred)'  ||
continue
echo "ERROR: ${f##*/} exports symbol(s) beyond standard set." >&2
echo "${f##*/}" >>check.log
done
! [ -s check.log ] || exit 1

# Make sure that no shared object has undefined symbols.

>check.log
for f in %buildroot/%_lib/lib*.so.0 %buildroot%_pam_modules_dir/pam*.so; do
LD_LIBRARY_PATH="%buildroot/%_lib" ldd -r "$f" 2>&1 >/dev/null |
tee -a check.log
done
! [ -s check.log ] || exit 1

# Make sure that none of the modules pull in threading libraries.

>check.log
for f in %buildroot%_pam_modules_dir/pam*.so; do
# except pam_userdb
[ "${f##*/}" != pam_userdb.so ] ||
continue
LD_LIBRARY_PATH="%buildroot/%_lib" ldd -r "$f" 2>&1 |
fgrep -q libpthread ||
continue
echo "ERROR: ${f##*/} pulls in libpthread." >&2
echo "${f##*/}" >>check.log
done
! [ -s check.log ] || exit 1

# pam_limits configuration

install -pm644 %_sourcedir/50-defaults.conf \
%buildroot%_secdir/limits.d/

# Linux-PAM-specific rpm macros.

install -pDm644 %_sourcedir/linux-pam.macros \
%buildroot%_sysconfdir/rpm/macros.d/pam

# Documentation

mkdir -p %buildroot%docdir/modules
for f in modules/pam_*/README; do
d="${f%%/*}"
[ -s "$d/Makefile" ] || continue
install -pm644 "$f" "%buildroot%docdir/modules/${d##*/}"
done
mkdir -p %buildroot%docdir/html
mv %buildroot%docdir/*.html %buildroot%docdir/html/
install -pm644 %_sourcedir/PAM-Policy.ALT AUTHORS NEWS ChangeLog CHANGELOG \
Copyright pgp.keys.asc %buildroot%docdir/
find %buildroot%docdir/ -type f -size +4k \( -iname changelog -or -name \*.txt -or -name \*.ps \) -print0 |
xargs -r0 bzip2 -9f --

# buildreq substitution rules

mkdir -p %buildroot%_sysconfdir/buildreqs/packages/substitute.d
for n in libpam{,-devel%{?_enable_static:{,-static}}}; do
echo $n >"%buildroot%_sysconfdir/buildreqs/packages/substitute.d/%libpam${n#libpam}"
done

%find_lang Linux-PAM

%post -n %libpam -p %post_ldconfig
%postun -n %libpam -p %postun_ldconfig

%post -n %{make_pam_name console}
%helperdir/pam_console_apply

%triggerpostun -n %{make_pam_name console} -- pam, pam_console
f=%_secdir/console.perms
if [ ! -f "$f" ]; then
if [ -f "$f.rpmsave" ]; then
%__cp -pf "$f.rpmsave" "$f"
elif [ -f "$f.rpmnew" ]; then
%__cp -pf "$f.rpmnew" "$f"
fi
fi
%helperdir/pam_console_apply

%triggerpostun -n %{make_pam_name console} -- %{make_pam_name console} < 0:0.79
if [ -f /var/run/console.lock -a ! -f /var/run/console/console.lock ]; then
%__mv /var/run/console.lock /var/run/console/ &&
%helperdir/pam_console_apply ||:
fi

%files -n %libpam
%config %_sysconfdir/buildreqs/packages/substitute.d/%libpam
/%_lib/*.so.*
%_pam_modules_dir/pam_deny.so
%_pam_modules_dir/pam_permit.so
%dir %docdir
%docdir/AUTHORS*
%docdir/Copyright*
%docdir/NEWS*

%files -n %libpam-devel
%config %_sysconfdir/buildreqs/packages/substitute.d/%libpam-devel
%config %_sysconfdir/rpm/macros.d/pam
%_libdir/*.so
%_includedir/*
%_man3dir/*
%dir %docdir
%docdir/C[hH]*
%docdir/PAM*

%if_enabled static
%files -n %libpam-devel-static
%config %_sysconfdir/buildreqs/packages/substitute.d/%libpam-devel-static
%_libdir/*.a
%endif # enabled static

%files -f Linux-PAM.lang
%helperdir/pam_tally
%config(noreplace) %_secdir/access.conf
%config(noreplace) %attr(640,root,wheel) %_secdir/chroot.conf
%config(noreplace) %_secdir/time.conf
%config(noreplace) %attr(640,root,wheel) %_secdir/group.conf
%config(noreplace) %_secdir/limits.conf
%config(noreplace) %_secdir/limits.d
%config(noreplace) %_secdir/namespace.*
%config(noreplace) %_secdir/pam_env.conf
%config(noreplace) %_sysconfdir/environment
%_pam_modules_dir/*
%exclude %_pam_modules_dir/pam_deny.so
%exclude %_pam_modules_dir/pam_permit.so
%exclude %_pam_modules_dir/pam_console.so
%exclude %_pam_modules_dir/pam_timestamp.so
%_mandir/man[58]/*.*
%exclude %_mandir/man[58]/*console*
%exclude %_mandir/man[58]/pam_timestamp*

%files -n %{make_pam_name console}
%attr(600,root,root) %config(noreplace) %_secdir/console.perms
%attr(700,root,root) %dir %_secdir/console.perms.d
%attr(600,root,root) %config(noreplace) %_secdir/console.perms.d/*
%attr(600,root,root) %config(noreplace) %_secdir/console.handlers
%attr(711,root,root) %dir %_secdir/console.apps
%attr(700,root,root) %helperdir/pam_console_apply
%_pam_modules_dir/pam_console.so
%_mandir/man[58]/*console*
%dir %attr(711,root,root) /var/run/console

%files -n %{make_pam_name timestamp}
%attr(700,root,root) %helperdir/pam_timestamp_check
%_pam_modules_dir/pam_timestamp.so
%_mandir/man[58]/pam_timestamp*

%files doc
%dir %docdir
%docdir/[a-z]*
%docdir/Linux-PAM*

%changelog

Полный changelog можно просмотреть здесь

 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin