Commit ec1fc664 authored by Judd Vinet's avatar Judd Vinet
Browse files

Imported from pacman-2.9.8.tar.gz

parent 1bcc87c3
VERSION DESCRIPTION
-----------------------------------------------------------------------------
2.9.8 - Changed behaviour with original=X,current=Y,new=Z scenario
- keep old in place, install new as .pacnew
- Search package provides when finding matching targets with -S
- Frugalware: added -Qm option to find foreign packages
- Frugalware: added DistCC support to makepkg
- bugfix: before searching databases for a dependency, make sure
one of the packages in the final list doesn't already provide
that dependency
- fix for segfaults that occurred when propagating requiredby
fields to replaced packages where one package depended on
another replaced package
- a better fix for pacman-optimize integrity checks
- fix for regex searches with -Ss (Miklos Vajna)
- added a --noprogressbar for scripts to use
2.9.7 - fixed the dupe listings of packages when dealing w/ groups
- patches from Miklos Vanja:
- patches from Miklos Vajna:
- add regexp search support for -Qs and -Ss
- fixed md5sums on x86_64
- add --sudosync to makepkg
......
......@@ -34,7 +34,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
PACVER = 2.9.7
PACVER = 2.9.8
TOPDIR = @srcdir@
SRCDIR = $(TOPDIR)/src/
......
.TH makepkg 8 "August 3, 2004" "makepkg #VERSION#" ""
.TH makepkg 8 "January 30, 2006" "makepkg #VERSION#" ""
.SH NAME
makepkg \- package build utility
.SH SYNOPSIS
......@@ -236,9 +236,26 @@ This is the release number specific to Arch Linux packages.
This should be a brief description of the package and its functionality.
.TP
.B force
This is used to force the package to be upgraded by \fB--sysupgrade\fP, even
.B options
This array allows you to override some of makepkg's default behaviour
when building packages. To set an option, just include the option name
in the \fBoptions\fP array.
.TP
.RS
\fIAvailable Options:\fP
.RS
.TP
.B FORCE
force the package to be upgraded by \fB--sysupgrade\fP, even
if its an older version.
.TP
.B KEEPDOCS
do not remove /usr/share/doc and /usr/share/info directories.
.TP
.B NOSTRIP
do not strip debugging symbols from binaries and libraries.
.RE
.RE
.TP
.B url
......@@ -247,8 +264,17 @@ being packaged. This is typically the project's website.
.TP
.B license
Sets the license type (eg, "GPL", "BSD", "NON-FREE"). (\fBNote\fP: This
option is still in development and may change in the future)
This field specifies the license(s) that apply to the package. Commonly-used
licenses are typically found in \fI/usr/share/licenses/common\fP. If you
see the package's license there, simply reference it in the license field
(eg, \fBlicense="GPL"\fP). If the package provides a license not found in
\fI/usr/share/licenses/common\fP, then you should include the license in
the package itself and set \fBlicense="custom"\fP or \fBlicense="custom:LicenseName"\fP.
The license itself should be placed in a directory called
\fI$startdir/pkg/usr/share/licenses/$pkgname\fP.
.TP
.RE
If multiple licenses are applied, use the array form: \fBlicenses=('GPL' 'FDL')\fP
.TP
.B install
......@@ -271,7 +297,7 @@ If this field is present, it should contain an MD5 hash for every source file
specified in the \fIsource\fP array (in the same order). makepkg will use
this to verify source file integrity during subsequent builds. To easily
generate md5sums, first build using the PKGBUILD then run
\fBmakepkg -g >>PKGBILD\fP. Then you can edit the PKGBUILD and move the
\fBmakepkg -g >>PKGBUILD\fP. Then you can edit the PKGBUILD and move the
\fImd5sums\fP line from the bottom to an appropriate location.
.TP
......@@ -400,6 +426,15 @@ build as root to use dependency auto-resolution.
.B "\-w <destdir>"
Write the resulting package file to the directory \fI<destdir>\fP instead of the
current working directory.
.TP
.B "\-\-noconfirm"
When calling pacman to resolve dependencies or conflicts, makepkg can pass
the \fI--noconfirm\fP option to it so it does not wait for any user
input before proceeding with operations.
.TP
.B "\-\-noprogressbar"
When calling pacman, makepkg can pass the \fI--noprogressbar\fP option to it.
This is useful if one is directing makepkg's output to a non-terminal (ie, a file).
.SH CONFIGURATION
Configuration options are stored in \fI/etc/makepkg.conf\fP. This file is parsed
......
.TH pacman 8 "July 6, 2005" "pacman #VERSION#" ""
.TH pacman 8 "January 21, 2006" "pacman #VERSION#" ""
.SH NAME
pacman \- package manager utility
.SH SYNOPSIS
......@@ -83,6 +83,10 @@ Specify an alternate configuration file.
.B "\-\-noconfirm"
Bypass any and all "Are you sure?" messages. It's not a good idea to do this
unless you want to run pacman from a script.
.TP
.B "\-\-noprogressbar"
Do not show a progress bar when downloading files. This can be useful for
scripts that call pacman and capture the output.
.SH SYNC OPTIONS
.TP
.B "\-c, \-\-clean"
......@@ -174,6 +178,10 @@ option then the .PKGINFO file will be printed.
List all files owned by <package>. Multiple packages can be specified on
the command line.
.TP
.B "\-m, \-\-foreign"
List all packages that were not found in the sync database(s). Typically these
are packages that were downloaded manually and installed with --add.
.TP
.B "\-o, \-\-owns <file>"
Search for the package that owns <file>.
.TP
......@@ -210,9 +218,9 @@ original=\fBX\fP, current=\fBY\fP, new=\fBY\fP
The new one is identical to the current one. Win win. Install the new file.
.TP
original=\fBX\fP, current=\fBY\fP, new=\fBZ\fP
All three files are different. So we install the new file, but back up the
old one to a .pacsave extension. This way the user can move the old configuration
file back into place if he wishes.
All three files are different, so we install the new file with a .pacnew
extension and warn the user, so she can manually move the file into place
after making any necessary customizations.
.SH CONFIGURATION
pacman will attempt to read \fI/etc/pacman.conf\fP each time it is invoked. This
configuration file is divided into sections or \fIrepositories\fP. Each section
......
......@@ -2,35 +2,58 @@
# /etc/makepkg.conf
#
# The FTP/HTTP download utility that makepkg should use to acquire sources
export FTPAGENT="/usr/bin/wget --continue --passive-ftp --tries=3 --waitretry=3"
#########################################################################
# SOURCE ACQUISITION
#########################################################################
#
#-- The FTP/HTTP download utility that makepkg should use to acquire sources
export FTPAGENT="/usr/bin/wget --continue --passive-ftp --tries=3 --waitretry=3 --no-check-certificate"
#export FTPAGENT="/usr/bin/snarf"
#export FTPAGENT="/usr/bin/lftpget -c"
#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
#
export CARCH="i686"
export CHOST="i686-pc-linux-gnu"
# Pentium Pro/Pentium II/Pentium III+/Pentium 4/Athlon exclusive (binaries
# will use the P6 instruction set and only run on P6+ systems)
#-- Exclusive: will only run on i686 or higher (P6, Athlon)
export CFLAGS="-march=i686 -O2 -pipe"
export CXXFLAGS="-march=i686 -O2 -pipe"
# Pentium Pro/Pentium II/Pentium III+/Pentium 4/Athlon optimized (but binaries
# will run on any x86 system)
#export CFLAGS="-mtune=i686 -O2 -pipe"
#export CXXFLAGS="-mtune=i686 -O2 -pipe"
# SMP Systems
#export MAKEFLAGS="-j 2"
# Enable fakeroot for building packages as a non-root user
#-- Optimized: will run on any x86, but optimized for i686
#export CFLAGS="-mcpu=i686 -O2 -pipe"
#export CXXFLAGS="-mcpu=i686 -O2 -pipe"
#-- Make Flags: change this for DistCC/SMP systems
#export MAKEFLAGS="-j2"
#########################################################################
# BUILD ENVIRONMENT
#########################################################################
#
#-- Fakeroot: for building packages as a non-root user
export USE_FAKEROOT="y"
# Enable colorized output messages
#-- DistCC: a distributed C/C++/ObjC compiler (modify MAKEFLAGS too)
export DISTCC="n"
#-- A space-delimited list of hosts running in the DistCC cluster
export DISTCC_HOSTS=""
#-- Colorized output messages
export USE_COLOR="y"
# Specify a fixed directory where all packages will be placed
#########################################################################
# GLOBAL PACKAGE OPTIONS
#########################################################################
#
#-- Don't strip symbols from binaries/libraries
#export NOSTRIP="1"
#-- Keep doc and info directories
#export KEEPDOCS="1"
#########################################################################
# PACKAGE OUTPUT
#########################################################################
#
#-- Destination: specify a fixed directory where all packages will be placed
#export PKGDEST=/home/packages
# If you want your name to show up in the packages you build, set this.
#-- Packager: name/email of the person or organization building packages
#export PACKAGER="John Doe <john@doe.com>"
......@@ -19,10 +19,10 @@
[options]
LogFile = /var/log/pacman.log
NoUpgrade = etc/passwd etc/group etc/shadow etc/sudoers
NoUpgrade = etc/fstab etc/raidtab etc/ld.so.conf
NoUpgrade = etc/rc.conf etc/rc.local
NoUpgrade = etc/fstab etc/raidtab etc/mdadm.conf etc/ld.so.conf
NoUpgrade = etc/inittab etc/rc.conf etc/rc.local
NoUpgrade = etc/modprobe.conf etc/modules.conf
NoUpgrade = etc/lilo.conf boot/grub/menu.lst
NoUpgrade = etc/lilo.conf boot/grub/menu.lst etc/mkinitrd.conf
HoldPkg = pacman glibc
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
......
#!/bin/bash
die() {
echo $*
exit 1
}
if [ "$1" == "" ]; then
echo "usage: aurbuild <package_name>"
echo
exit 1
fi
pkgname=$1
[ -d $pkgname ] && die "Directory '$pkgname' already exists"
[ -f $pkgname ] && die "File '$pkgname' already exists"
echo "Downloading $pkgname.tar.gz"
wget -q http://aur.archlinux.org/packages/$pkgname/$pkgname.tar.gz || die "Failed to fetch $1.pkg.tar.gz"
tar zxf $pkgname.tar.gz || die "Extraction failed"
rm -f $pkgname.tar.gz
cd $pkgname || die "Failed to cwd"
makepkg
......@@ -2,7 +2,7 @@
#
# gensync
#
# Copyright (c) 2002-2005 by Judd Vinet <jvinet@zeroflux.org>
# Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
......@@ -20,7 +20,7 @@
# USA.
#
myver='2.9.7'
myver='2.9.8'
usage() {
echo "gensync $myver"
......@@ -51,6 +51,18 @@ die() {
exit 1
}
check_option() {
local i
for i in ${options[@]}; do
local uc=`echo $i | tr [:lower:] [:upper:]`
local lc=`echo $i | tr [:upper:] [:lower:]`
if [ "$uc" = "$1" -o "$lc" = "$1" ]; then
echo $1
return
fi
done
}
get_md5checksum()
{
if [ "$pkgdir" != "" ]; then
......@@ -69,7 +81,7 @@ get_md5checksum()
db_write_entry()
{
unset pkgname pkgver pkgrel pkgdesc force
unset groups replaces provides depends conflicts
unset groups replaces provides depends conflicts options
source $1 || return 1
cd $gstmpdir
mkdir $pkgname-$pkgver-$pkgrel || return 1
......@@ -107,7 +119,7 @@ db_write_entry()
done
echo "" >>desc
fi
if [ "$force" = "y" -o "$force" = "Y" ]; then
if [ "$force" = "y" -o "$force" = "Y" -o "`check_option FORCE`" ]; then
echo "%FORCE%" >>desc
echo "" >>desc
fi
......@@ -140,7 +152,7 @@ db_write_entry()
if [ $# -lt 2 ]; then
usage
exit 0
exit 1
fi
if [ "$1" = "-h" -o "$1" = "--help" ]; then
......@@ -169,12 +181,14 @@ for file in `find $rootdir/* -name PKGBUILD`; do
else
pkgfile="$destdir/$pkgname-$pkgver-$pkgrel.pkg.tar.gz"
fi
[ -f $pkgfile ] || die "missing package file: $pkgfile"
csize=`du -b $pkgfile | cut -f1`
pkgmd5sum=`get_md5checksum $pkgfile`
[ -z $pkgmd5sum ] && die "error generating checksum for $pkgfile"
db_write_entry $file
[ $? -gt 0 ] && die "error writing entry for $file"
if [ -f $pkgfile ]; then
csize=`du -b $pkgfile | cut -f1`
pkgmd5sum=`get_md5checksum $pkgfile`
[ -z $pkgmd5sum ] && die "error generating checksum for $pkgfile"
db_write_entry $file || die "error writing entry for $file"
else
echo "gensync: missing package: $pkgfile" >&2
fi
done
echo "gensync: compressing to $destfile..." >&2
......
......@@ -2,7 +2,7 @@
#
# makepkg
#
# Copyright (c) 2002-2005 by Judd Vinet <jvinet@zeroflux.org>
# Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
......@@ -20,11 +20,31 @@
# USA.
#
myver='2.9.7'
myver='2.9.8'
startdir=`pwd`
PKGDEST=$startdir
USE_COLOR="n"
# Options
BUILDSCRIPT="./PKGBUILD"
CLEANUP=0
CLEANCACHE=0
DEP_BIN=0
DEP_SRC=0
DEP_SUDO=0
FORCE=0
GENMD5=0
INSTALL=0
KEEPDOCS=0
NOBUILD=0
NOCCACHE=0
NODEPS=0
NOEXTRACT=0
NOSTRIP=0
RMDEPS=0
PACMAN_OPTS=
# source Arch's abs.conf if it's present
[ -f /etc/abs/abs.conf ] && source /etc/abs/abs.conf
......@@ -72,11 +92,25 @@ strip_url() {
echo $1 | sed 's|^.*://.*/||g'
}
check_option() {
local i
for i in ${options[@]}; do
local uc=`echo $i | tr [:lower:] [:upper:]`
local lc=`echo $i | tr [:upper:] [:lower:]`
if [ "$uc" = "$1" -o "$lc" = "$1" ]; then
echo $1
return
fi
done
}
checkdeps() {
local missdep=""
local deplist=""
missdep=`pacman -T $*`
[ $# -gt 0 ] || return
missdep=`pacman $PACMAN_OPTS -T $*`
ret=$?
if [ "$ret" != "0" ]; then
if [ "$ret" = "127" ]; then
......@@ -116,7 +150,7 @@ handledeps() {
if [ "$DEP_BIN" = "1" ]; then
# install missing deps from binary packages (using pacman -S)
msg "Installing missing dependencies..."
pacman -D $deplist
pacman $PACMAN_OPTS -D $deplist
if [ "$?" = "127" ]; then
error "Failed to install missing dependencies."
exit 1
......@@ -131,9 +165,9 @@ handledeps() {
FAKEROOTKEY2=$FAKEROOTKEY
unset FAKEROOTKEY
fi
sudo pacman -D $deplist
sudo pacman $PACMAN_OPTS -D $deplist
if [ "$INFAKEROOT" = "1" ]; then
FAKEROOTKEY=$FAKEROOTKEY2
export FAKEROOTKEY=$FAKEROOTKEY2
unset FAKEROOTKEY2
fi
if [ "$?" = "127" ]; then
......@@ -192,8 +226,10 @@ handledeps() {
usage() {
echo "makepkg version $myver"
echo "usage: $0 [options]"
echo "options:"
echo
echo "Usage: $0 [options]"
echo
echo "Options:"
echo " -b, --builddeps Build missing dependencies from source"
echo " -B, --noccache Do not use ccache during build"
echo " -c, --clean Clean up work files after build"
......@@ -214,33 +250,23 @@ usage() {
echo " -S, --sudosync Install missing dependencies with pacman and sudo"
echo " -w <destdir> Write package to <destdir> instead of the working dir"
echo
echo " if -p is not specified, makepkg will look for a PKGBUILD"
echo " file in the current directory."
echo "These options can be passed to pacman:"
echo
echo " --noconfirm Do not ask for confirmation when resolving dependencies"
echo " --noprogressbar Do not show a progress bar when downloading files"
echo
echo "If -p is not specified, makepkg will look for ./PKGBUILD"
echo
}
# Options
BUILDSCRIPT="./PKGBUILD"
CLEANUP=0
CLEANCACHE=0
DEP_BIN=0
DEP_SRC=0
DEP_SUDO=0
FORCE=0
GENMD5=0
INSTALL=0
NOBUILD=0
NOCCACHE=0
NODEPS=0
NOEXTRACT=0
NOSTRIP=0
RMDEPS=0
ARGLIST=$@
while [ "$#" -ne "0" ]; do
case $1 in
# pacman
--noconfirm) PACMAN_OPTS="$PACMAN_OPTS --noconfirm" ;;
--noprogressbar) PACMAN_OPTS="$PACMAN_OPTS --noprogressbar" ;;
# makepkg
--clean) CLEANUP=1 ;;
--cleancache) CLEANCACHE=1 ;;
--syncdeps) DEP_BIN=1 ;;
......@@ -335,6 +361,9 @@ fi
unset pkgname pkgver pkgrel pkgdesc url license groups provides md5sums force
unset replaces depends conflicts backup source install build makedepends
unset options
# some applications (eg, blackbox) will not build with some languages
unset LC_ALL LANG
umask 0022
if [ ! -f $BUILDSCRIPT ]; then
......@@ -361,7 +390,8 @@ fi
if [ -f $PKGDEST/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz -a "$FORCE" = "0" -a "$GENMD5" = "0" ]; then
if [ "$INSTALL" = "1" ]; then
warning "a package has already been built, installing existing package."
pacman --upgrade $PKGDEST/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz
echo pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz
pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz
exit $?
else
error "a package has already been built. (use -f to overwrite)"
......@@ -506,7 +536,7 @@ if [ "$GENMD5" = "0" ]; then
case $file in
*.tar.gz|*.tar.Z|*.tgz)
cmd="tar --use-compress-program=gzip -xf $file" ;;
*.tar.bz2)
*.tar.bz2|*.tbz2)
cmd="tar --use-compress-program=bzip2 -xf $file" ;;
*.tar)
cmd="tar -xf $file" ;;
......@@ -571,7 +601,6 @@ else
exit 0
fi
if [ "`id -u`" = "0" ]; then
# chown all source files to root.root
chown -R root.root $startdir/src
......@@ -589,6 +618,15 @@ if [ "$NOBUILD" = "1" ]; then
exit 0
fi
# use distcc if requested
if [ "$DISTCC" = "y" ]; then
[ -d /usr/lib/distcc/bin ] && export PATH=/usr/lib/distcc/bin:$PATH
if [ "$INCHROOT" = "1" ]; then
[ -d /var/tmp/fst/.distcc ] || mkdir /var/tmp/fst/.distcc
export DISTCC_DIR=/var/tmp/fst/.distcc
fi
fi
# use ccache if it's available
if [ "$NOCCACHE" = "0" ]; then
[ -d /usr/lib/ccache/bin ] && export PATH=/usr/lib/ccache/bin:$PATH
......@@ -602,11 +640,14 @@ if [ $? -gt 0 ]; then
exit 2
fi
# remove info/doc files
cd $startdir
rm -rf pkg/usr/info pkg/usr/share/info
rm -rf pkg/usr/doc pkg/usr/share/doc
rm -rf pkg/{usr,opt/gnome}/share/gtk-doc
if [ ! "`check_option KEEPDOCS`" -a "$KEEPDOCS" = "0" ]; then
# remove info/doc files
msg "Removing info/doc files..."
cd $startdir
rm -rf pkg/usr/info pkg/usr/share/info
rm -rf pkg/usr/doc pkg/usr/share/doc
rm -rf pkg/{usr,opt/gnome}/share/gtk-doc
fi
# move /usr/share/man files to /usr/man
if [ -d pkg/usr/share/man ]; then
......@@ -641,7 +682,7 @@ done
cd $startdir
# strip binaries
if [ "$NOSTRIP" = "0" ]; then
if [ ! "`check_option NOSTRIP`" -a "$NOSTRIP" = "0" ]; then
msg "Stripping debugging symbols from libraries..."
find pkg/{,usr,usr/local,opt/*}/lib -type f -not -name "*.dll" -not -name "*.exe" \
-exec /usr/bin/strip --strip-debug '{}' \; 2>&1 \
......@@ -652,6 +693,18 @@ if [ "$NOSTRIP" = "0" ]; then
| grep -v "No such file" | grep -v "format not recognized"
fi
# remove libtool (.la) files
if [ "`check_option NOLIBTOOL`" ]; then
msg "Removing libtool .la files..."
find pkg -type f -name "*.la" -exec rm -f -- '{}' \;
fi
# remove empty directories
if [ "`check_option NOEMPTYDIRS`" ]; then
msg "Removing empty directories..."
find pkg -mindepth 1 -type d -empty -exec rmdir {} \;
fi
# get some package meta info
builddate=`LC_ALL= ; LANG= ; date -u "+%a %b %e %H:%M:%S %Y"`
if [ "$PACKAGER" != "" ]; then
......@@ -729,16 +782,16 @@ fi
if [ "$RMDEPS" = "1" -a "`id -u`" = "0" -a "$INFAKEROOT" != "1" -a \( ! -z "$deplist" -o ! -z "$makedeplist" \) ]; then
msg "Removing installed dependencies..."
pacman -R $makedeplist $deplist
pacman $PACMAN_OPTS -R $makedeplist $deplist
elif [ "$RMDEPS" = "1" -a "$DEP_SUDO" = "1" ]; then
msg "Removing installed dependencies..."
if [ "$INFAKEROOT" = "1" ]; then
FAKEROOTKEY2=$FAKEROOTKEY
unset FAKEROOTKEY
fi
sudo pacman -R $makedeplist $deplist
sudo pacman $PACMAN_OPTS -R $makedeplist $deplist
if [ "$INFAKEROOT" = "1" ]; then
FAKEROOTKEY=$FAKEROOTKEY2
export FAKEROOTKEY=$FAKEROOTKEY2
unset FAKEROOTKEY2
fi
fi
......@@ -746,8 +799,8 @@ fi
msg "Finished making: $pkgname (`date`)"
if [ "$INSTALL" = "1" -a "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then
msg "Running pacman --upgrade..."
pacman --upgrade $PKGDEST/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz
msg "Installing package with pacman -U..."
pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz
exit $?
fi
......
......@@ -2,7 +2,7 @@
#
# makeworld
#
# Copyright (c) 2002-2005 by Judd Vinet <jvinet@zeroflux.org>
# Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
......@@ -20,13 +20,15 @@
# USA.
#