CVS patchset: 2891
CVS date: 1999/03/14 00:34:52
This commit is contained in:
jbj 1999-03-14 00:34:52 +00:00
parent d32ae3ef06
commit 776dc9c258
15 changed files with 235 additions and 85 deletions

View File

@ -1,4 +1,5 @@
2.91 -> 2.92
- change support@redhat.com to rpm-list@redhat.com.
- fix: with --target=i686, pass macro %_arch=i386.
- fix: rpm --target=arch ... resurrected.
- fix: rpm -q --specfile --specedit now works even with BuildArch:.

162
INSTALL Normal file
View File

@ -0,0 +1,162 @@
To build RPM you will need several other packages:
--------------------------------------------------
The zlib library for compression support available from
http://www.cdrom.com/pub/infozip/zlib/
The berkeley db library db.1.85, or db.2* (currently the latest is
db-2.6.4) with compatibility mode for db.1.85 defined. The developers
of RPM did not upgrade RPM to use the current version of libdb because
they are uncomfortable with changes in the softwares license. Now db2
has a special exception license within glibc-2.1 so whatever license
discomfort there is/was is quickly becoming moot. The remaining issue
is that the db_185 compatibility does not work in glibc-2.1. This is
available from
http://www.sleepycat.com/download.html.
The instructions for building db-2.6.4:
cd build_unix
../dist/configure --enable-compat185
make
make install
It may be desired to install bzip2 and gzip so that RPM can use these
formats. Gzip, is necessary to build packages that contain compressed
tar balls, these are quite common on the Internet.
These are availible from
http://www.digistar.com/bzip2/index.html
http://www.gnu.org/
If National Language Support (NLS) is desired
you will need gnu gettext available from
http://www.gnu.org/
If you need support of RPM 1.x databases, which are in an old RPM
format. You will need the GNU db library gdbm to build the rpmconvert
binary. This is availible from :
http://www.gnu.org/
For best results you should compile with GCC and GNU Make. Users have
reported difficulty with other build tools. available from
http://www.gnu.org/
To compile RPM:
--------------
If your libraries are in a standard place you will need to change
the configure environment.
Here is an example:
LIBS='-L/opt/libz/ -L/opt/BerkeleyDB/lib/' \
CPPFLAGS='-I/opt/libz/ -I/opt/BerkeleyDB/include' \
./configure
now build the system with:
make
if you wish to make a tarfile of the binaries so that you may easily
install on other machines (ed note: what about putting gzip and bzip2
in the tar, modifying the /etc/rpmrc?):
make tar
when installing do not forget to init the database (rpm --initdb)
Non Linux Configuration Issues:
------------------------------
OS dependencies:
----------------
Under Red Hat Linux all libraries (in fact all files distributed with
the OS) are under RPM control and this section is not an issue.
RPM will need to be informed of all the dependencies which were
satisfied before RPM was installed. Typically this only refers to
libraries that are installed by the OS, but may include other
libraries and packages which are availible at the time RPM is
installed and will not under RPM control. Another common example of
libraries which may need dependency provisions are precompiled
libraries which are installed by the OS package manager during system
build time. The list of dependencies you will wish to load into RPM
will depend on exactly how you bootstrap RPM onto your system and what
parts of the sytem you put into packages as well as on the specific OS
you are using.
You should satisfy dependencies for all shells and interpreters. A
reasonable list of OS installed shells can be generated with:
cat /etc/shells
You should satisfy dependencies for all system libraries. For each of
the system library directories you should run
echo * | find-provides.sh
(On Linux a list of system library directories can be found in
/etc/ld.so.conf, other OS require an experienced system administrator
to know where the libraries are.)
You may add as many "provides: " lines as you like to /etc/rpmrc/ but
they can not be continued. Each line is limited to 8K bytes. Here is
a example (truncated) of the provides lines used by one user of
Digital Unix.
provides: /bin/sh /usr/bin/ksh /usr/bin/csh
provides: libc.so.osf.1 libm.so.osf.1 libcurses.so.xpg4 libdb.so.osf.1
provides: libX11.so libXaw.so.6.0 libXext.so libXm.so.motif1.2 libXmu.so
provides: libdnet_stub.so.osf.1 libsecurity.so.osf.1 libpthread.so.osf.1
provides: libexc.so.osf.1 libmach.so.osf.1 libdps.so libdpstk.so
rpmfilename:
-----------
If you plan on packaging for more then one OS you may want to edit
/etc/rpmrc and change the line which has rpmfilename to something
which include both the %{OS} and %{ARCH}. This will cause the name of
the generated rpm files to the operating system name as well as the
architecture which the rpm runs under. The line to change looks like:
> rpmfilename: %{ARCH}/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm
you may wish to include both the %{OS} and %{ARCH} in the final base
name, so that it's easier to distinguish between what package is
appropriate for a particular arch-os-version combo. We suggest
> rpmfilename: %{ARCH}/%{NAME}-%{VERSION}-%{RELEASE}.%{OS}-%{ARCH}.rpm
There is no %{OS_VERSION} tag, so if you need to also distinguish between
RPMs for certain versions of the OS, you can hard-code the version in
the rpmrc on the build machine, so that .rpm files are generated with
the version as part of the filename.
For example when one user builds RPMs for Digital Unix 4.0b and 4.0d,
optimization is important and he will build one set of RPMs for the
EV4 processor and another set for the EV56 processor. He specifies
both the OS version (if it's important, as it is for a few packages)
and the processor version by default by setting a special rpmfilename:
on the particular build machine.
The "rpmfilename: "tag on one machine (Digital Unix 4.0d, EV56 PWS 433)
looks like:
rpmfilename: %{OS}/4.0d/%{ARCH}/%{NAME}-%{VERSION}-%{RELEASE}.%{OS}-%{ARCH}-ev56.rpm
For package `foo-1.1', at build time that would translate into:
osf1/4.0d/alpha/foo-1.1-1.osf1-alphaev56.rpm

View File

@ -2,9 +2,9 @@
AUTOMAKE_OPTIONS = 1.4 foreign
EXTRA_DIST = CHANGES CREDITS README.amiga RPM-PGP-KEY \
EXTRA_DIST = CHANGES CREDITS README.amiga INSTALL RPM-PGP-KEY \
autodeps/none autodeps/*.prov autodeps/*.req autogen.sh \
docs/[a-z]* gendiff groups $(man_MANS) po/*.in po/*.po po/rpm.pot \
docs/[a-z]* gendiff $(man_MANS) po/*.in po/*.po po/rpm.pot \
rpm.magic rpmpopt rpm.spec rpm.8ru rpm2cpio.8ru
SUBDIRS = popt build lib po intl misc tools scripts tests .
@ -59,12 +59,13 @@ install-data-local:
@rm -f $(DESTDIR)/$(libdir)/rpmpopt
@ln -s rpm/rpmpopt $(DESTDIR)/$(libdir)/rpmpopt
@$(mkinstalldirs) $(DESTDIR)/$(prefix)/src/redhat/BUILD
@$(mkinstalldirs) $(DESTDIR)/$(prefix)/src/redhat/RPMS/noarch
@case "@build_cpu@" in \
*86) $(mkinstalldirs) $(DESTDIR)/$(prefix)/src/redhat/RPMS/i386 ;;\
alpha*) $(mkinstalldirs) $(DESTDIR)/$(prefix)/src/redhat/RPMS/alpha ;;\
sparc*) $(mkinstalldirs) $(DESTDIR)/$(prefix)/src/redhat/RPMS/sparc ;;\
esac
@$(mkinstalldirs) $(DESTDIR)/$(prefix)/src/redhat/RPMS/@build_cpu@
@$(mkinstalldirs) $(DESTDIR)/$(prefix)/src/redhat/RPMS/noarch
@$(mkinstalldirs) $(DESTDIR)/$(prefix)/src/redhat/SOURCES
@$(mkinstalldirs) $(DESTDIR)/$(prefix)/src/redhat/SPECS
@$(mkinstalldirs) $(DESTDIR)/$(prefix)/src/redhat/SRPMS

4
aclocal.m4 vendored
View File

@ -1,4 +1,4 @@
dnl aclocal.m4 generated automatically by aclocal 1.4a
dnl aclocal.m4 generated automatically by aclocal 1.4
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
@ -21,8 +21,6 @@ dnl AM_INIT_AUTOMAKE(package,version, [no-define])
AC_DEFUN(AM_INIT_AUTOMAKE,
[AC_REQUIRE([AC_PROG_INSTALL])
dnl We require 2.13 because we rely on SHELL being computed by configure.
AC_PREREQ([2.13])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]

View File

@ -580,14 +580,14 @@ fi
dnl Determine the canonical arch-vendor-os for the build machine
case "${build_cpu}" in
i[x3456789]86) RPMCANONARCH=i386 ;;
i\[x3456789\]86) RPMCANONARCH=i386 ;;
alpha*) RPMCANONARCH=alpha ;;
sparc*) RPMCANONARCH=sparc ;;
*) RPMCANONARCH=unknown ;;
esac
RPMCANONVENDOR="$build_vendor"
case "${build_vendor}" in
unknown) test -f /etc/redhat-release && RPMCANONVENDOR=redhat ;;
unknown|pc) test -f /etc/redhat-release && RPMCANONVENDOR=redhat ;;
esac
RPMCANONOS="$build_os_noversion"
AC_SUBST(RPMCANONARCH)

59
groups
View File

@ -1,59 +0,0 @@
Applications
Communications
Editors
Emacs
Emulators
Engineering
Spreadsheets
Databases
Graphics
Networking
Mail
Math
News
Publishing
TeX
Sound
Base
Kernel
Utilities
Archiving
Console
File
Printing
System
Terminal
Text
Daemons
Documentation
X11
XFree86
Servers
Applications
Graphics
Networking
Games
Strategy
Video
Amusements
Utilities
Libraries
Window Managers
Libraries
Networking
Admin
Daemons
News
Utilities
Development
Debuggers
Libraries
Libc
Languages
Fortran
Tcl
Building
Version Control
Tools
Shells
Games

View File

@ -144,9 +144,10 @@ unsigned int faAlloc(faFile fa, unsigned int size) { /* returns 0 on failure */
if (faLseek(fa, nextFreeBlock, SEEK_SET) < 0) return 0;
if (faRead(fa, &header, sizeof(header)) != sizeof(header)) return 0;
/* XXX W2DO? exit(1) forces the user to discover rpm --rebuilddb */
if (!header.isFree) {
fprintf(stderr, _("free list corrupt (%u)- contact "
"support@redhat.com\n"), nextFreeBlock);
"rpm-list@redhat.com\n"), nextFreeBlock);
exit(1);
}

View File

@ -1,3 +1,4 @@
# $Id: macros.in,v 1.15 1999/03/14 00:34:58 jbj Exp $
#==============================================================================
# Macro naming conventions (preliminary):
#
@ -52,8 +53,10 @@
%_topdir %{_usrsrc}/redhat
#==============================================================================
# ---- rpm per-platform macros.
# Per-platform macros.
# ---- per-platform macros.
# Macros that are specific to an individual platform. The values here
# will be used if the per-platform macro file does not exist..
#
%_arch @RPMCANONARCH@
%_vendor @RPMCANONVENDOR@
%_os @RPMCANONOS@

View File

@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 1999-03-12 13:03-0500\n"
"POT-Creation-Date: 1999-03-13 18:59-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -2273,9 +2273,9 @@ msgstr ""
msgid "loop in prerequisite chain: %s"
msgstr ""
#: ../lib/falloc.c:148
#: ../lib/falloc.c:149
#, c-format
msgid "free list corrupt (%u)- contact support@redhat.com\n"
msgid "free list corrupt (%u)- contact rpm-list@redhat.com\n"
msgstr ""
#: ../lib/formats.c:97 ../lib/formats.c:114 ../lib/formats.c:134

View File

@ -2,7 +2,7 @@ Summary: The Red Hat package management system.
Name: rpm
%define version 2.92
Version: %{version}
Release: 7
Release: 8
Group: System Environment/Base
Source: ftp://ftp.rpm.org/pub/rpm/dist/rpm-2.5.x/rpm-%{version}.tar.gz
Copyright: GPL

View File

@ -1,3 +1,4 @@
# $Id: rpmrc.in,v 2.3 1999/03/14 00:35:00 jbj Exp $
#############################################################
# Default values, often overridden in /etc/rpmrc
#

View File

@ -2,12 +2,12 @@
AUTOMAKE_OPTIONS = 1.4 foreign
EXTRA_DIST = find-lang.sh freshen.sh
EXTRA_DIST = find-lang.sh freshen.sh getpo.sh
installprefix = $(DESTDIR)
all:
configdir = ${prefix}/lib/rpm
config_SCRIPTS = find-lang.sh freshen.sh
config_SCRIPTS = find-lang.sh freshen.sh getpo.sh

View File

@ -1,4 +1,4 @@
# Makefile.in generated automatically by automake 1.4a from Makefile.am
# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
@ -48,10 +48,9 @@ AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_FLAG =
transform = @program_transform_name@
NORMAL_INSTALL = :
@ -130,12 +129,12 @@ varprefix = @varprefix@
AUTOMAKE_OPTIONS = 1.4 foreign
EXTRA_DIST = find-lang.sh freshen.sh
EXTRA_DIST = find-lang.sh freshen.sh getpo.sh
installprefix = $(DESTDIR)
configdir = ${prefix}/lib/rpm
config_SCRIPTS = find-lang.sh freshen.sh
config_SCRIPTS = find-lang.sh freshen.sh getpo.sh
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
@ -193,7 +192,7 @@ distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
@ -222,7 +221,7 @@ uninstall: uninstall-am
all-am: Makefile $(SCRIPTS)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(configdir)

40
scripts/getpo.sh Executable file
View File

@ -0,0 +1,40 @@
#!/bin/bash
#
if [ -z "$1" ] ; then
echo "Usage:"
echo " $0 <rpm>..."
exit 0
fi
while [ -n "$1" ] ; do
[ -f $1 ] || {
echo "$1 could not be found (or is not a file)"
shift
continue
}
desc=$(rpm -qp $1 --qf "%{DESCRIPTION}" | \
sed -e 's/\"/\\\"/g' -e 's/^/\"/g' -e 's/$/\\\\n\"/g')
rpm -qp $1 --qf \
"# ========================================================
#: %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm:1005 %{SOURCERPM}:1005
msgid \"%{NAME}(Description)\"
msgstr \"\"
$desc
#: %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm:1016 %{SOURCERPM}:1016
msgid \"%{NAME}(Group)\"
msgstr \"%{GROUP}\"
#: %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm:1004 %{SOURCERPM}:1004
msgid \"%{NAME}(Summary)\"
msgstr \"%{SUMMARY}\"
"
# go to the next file
shift
done

View File

@ -1,3 +1,4 @@
# $Id: macros.in,v 1.11 1999/03/14 00:35:06 jbj Exp $
#==============================================================================
# Macro naming conventions (preliminary):
#
@ -52,8 +53,10 @@
%_topdir %{_usrsrc}/redhat
#==============================================================================
# ---- rpm per-platform macros.
# Per-platform macros.
# ---- per-platform macros.
# Macros that are specific to an individual platform. The values here
# will be used if the per-platform macro file does not exist..
#
%_arch @RPMCANONARCH@
%_vendor @RPMCANONVENDOR@
%_os @RPMCANONOS@