Created trunk branch

git-svn-id: 8854956c-c02d-4db9-8198-7e99b8e08f37
This commit is contained in:
davidrr 2015-04-09 10:12:41 +00:00
parent 657eb202f4
commit 67998b9bcb
71 changed files with 9342 additions and 0 deletions

AUTHORS Normal file
View File

@ -0,0 +1,55 @@
| AUTHORS | porg |
Main author
David Ricart <icnelis@*> (where * =
Contributors (in order of appearance)
I'd like to THANK all the following people for their contribution in the form
of bug fixes, testing, code, feature requests, positive criticism, translations
and feedback in general (read ChangeLog and ChangeLog.paco for more details):
Tim Waterhouse
Florian Duraffourg
Carlos Vendramini
Mirco Lorenzoni
Ivo Nedialkov Krastev
Jesse S.
Jim Gifford
Dan Nicholson
Ookaze BioACobol
Boban Petrovic
Christian Schneider
Christian Weber
Tanaka Shin-ya
Arthur Demchenkov
Christoph Berg
Richard Johns
Kristian Gavran
Daniel Eklöf
Tor Olav
Thomas Schwarzgruber
Mark Rosenstand
Mickael "Mega MoiX"
Vladimir A. Pavlov
Victor Ananjevsky
Georg Grafendorfer
Roland Schatz
Matthew Bruenig
Sergei Butakov
Kevin Williams
Jerry Jacobs
Gordon Findlay
Masahiro Kasahara
Leandro Nini
Veeti Paananen
Piotr Karbowski
Kardakov Slava
R.J.V. Bertin

COPYING Normal file
View File

@ -0,0 +1,340 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a disting.hing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 May 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

ChangeLog Normal file
View File

@ -0,0 +1,176 @@
General changes:
+ Fixed "double DESTDIR" bug (thanks R.J.V. Bertin).
+ Added support for MacOS, and perhaps MacOS X (thanks Masahiro Kasahara
and Rene J.V. Bertin).
Changes in porg:
+ New options -m and -M, for listing and counting of missing files (see man
+ Better option requirement checking.
+ When calculating total sizes of packages, sizes of hardlinks to installed
files are counted only once (thanks Kardakov Slava).
+ Sizes of files are not saved into the database anymore. Now they're
calculated at runtime. Backwards compatibility with databases created with
previous versions of porg (0.x) is guaranteed.
Changes in grop:
+ Added column for missing files count in the list of packages.
Changes in scripts:
+ porgball: Support logging of tarballs from outside of current working
directory (thanks Piotr Karbowski).
+ porgball: Don't crash when there's no logdir (thanks Piotr Karbowski).
+ paco2porg: Properly lowercase package names (thanks Kardakov Slava).
Version 0.7 (25 June 2014)
+ Added missing $(DESTDIR)s to Makefiles.
Changes in porg:
+ Check for command line option requirements.
+ Option -U requires -r.
+ Added short option -j for --log-missing.
+ Bugfix: Properly deal with big package sizes (> 4G).
Changes in grop:
+ Display a startup info dialog when reading big databases.
+ Added button "porg suffix" to the porgball creation dialog.
+ When showing results in the "Find file" dialog, double clicking on a
row, or pressing of <Return>, makes the treeview in the main window
scroll to the selected package.
+ Improved the quality of the grop icon.
Changes in scripts:
+ Bugfix: porgball failed to process symbolic links to directories.
+ Bugfix: paco2porg failed to process missing files.
Version 0.6 (16 June 2014)
Changes in porg:
+ Bugfix: porg erroniously complained about command line option
incompatibility when some options were doubled (like in '-rr').
+ Improved the man page and usage output of porg, organizing options by
groups. Added a new section 'FILE NAMES WITH SPACES' to the man page.
Reading it is recommended.
+ Removed path /etc/mtab from the default EXCLUDE.
+ Search package info in configure.log if config.log is not found.
+ Ask the user when unlogging a package (option -U), unless option -b
is enabled.
Changes in grop:
+ New icon.
Changes in scripts:
+ New command line options --no-porg-suffix and --logdir for porgball.
+ Let porgball extract files from ordinary tarballs (without suffix
'.porg' in their names).
+ Honour DESTDIR when installing porg_bash_completion (thanks Veeti
Version 0.5 (11 June 2014)
Changes in porg:
+ Improved checking of command line options compatibility.
+ Added paths {/run,/mnt,/media,/cdrom,/etc/mtab} to the default EXCLUDE.
Changes in grop:
+ Accept command line options (run 'grop -h' for more info).
+ Added a "Cancel" button to the porgball creation dialog. Fixed some minor
+ Save settings in ~/.config/grop/groprc instead of ~/.grop
Changes in scripts:
+ Bugfix: Porgball failed when trying to log extractions with porg.
+ Bugfix (#1): Paco2porg lost package information (thanks Leandro Nini).
Version 0.4 (26 May 2014)
+ Bugfix: In some cases, tmp files were not removed after installing a
+ Bugfix: Some files were not registered when logging the own porg
installation with "make logme".
+ Bugfix: The main window of grop was partially invisible.
+ Bugfix: Porgball failed to extract porgballs in some cases.
+ New feature: When installing a package, save the environment variables
passed to ./configure, and not only the command line options.
+ New feature: Expand any environment variable (and not only $HOME),
in variable LOGDIR in porgrc.
+ New feature: Added option '-x|--exact-version' to porg and porgball (see
man page).
+ Improved the code for searching for package information.
+ Added porg.spec.
+ Removed the (buggy) superporg script.
Version 0.3 (19 May 2014)
+ Readded GPL License and Copyright.
+ Bugfix: Properly log files with spaces in their names.
+ Bugfix: EXCLUDE variable in porgrc was not parsed correctly.
+ Bugfix: Skip sourcing of /etc/bash_completion when installing
porg_bash_completion, to avoid errors from foreign software.
Version 0.2 (23 April 2014)
+ Several bugs fixed thanks to the contribution of Masahiro Kasahara:
- paco2porg failed when importing paco logs with no logged files
- porg hanged up when logging packages and the installer program calls
+ Fixed bug that prevented logging of files created by programs that don't
terminate normally.
+ Fixed bug with resolution of relative paths.
+ Removed option '-g|--log-ignore-errors'.
+ Handle system calls openat(), linkat(), etc... when installing a package.
+ Do not handle *truncate() system calls when installing a package.
+ Removed porg.pc from distribution, as porg is not a library.
Version 0.1 (16 March 2014)
+ Removed question 3 of the FAQ, which discusses logging of directories.
+ Removed getopt from the distribution. Use native getopt.
+ Do not check for regex.h in configure (assume it is available).
+ Rewritten porgball in bash, and fixed some bugs in it.
+ Fixed bug in porg when installing packages with description spanning
more than one line (thanks Gordon Findlay).
Version 0.0 (14 March 2014)
Changes from the last version of paco:
+ Disabled the options for removing shared files when uninstalling a
package, both in porg and grop. Now shared files are never removed,
as it ougth to be.
+ Disabled listing of missing and shared files.
+ Simplification of the GUI.
+ Major code enhancements and cleanup.

ChangeLog.paco Normal file
View File

@ -0,0 +1,867 @@
+ Fixed minor bug in GPaco.
2.0.8 [26 June 2010]
+ GPaco: Change column visibility when clicking on Preferences
buttons. Changed some icons for some menu items, to a more
intuitive ones.
+ Pacoball: Removed option --fakeroot (too cryptic).
+ Paco: Removed option --ignore-shared.
+ Auxiliary scripts are now installed by default, and may be
disabled with --disable-scripts.
2.0.7 [30 Aug 2009]
+ Simplified debug messages when logging packages.
+ Fixed compilation error in Ubuntu (thanks Jerry Jacobs :-)
+ [gpaco] Removed "Import RPM" feature.
+ [gpaco] Fix package selection issues in the main window.
+ [gpaco] Removed "Update" option in package popup menus.
+ [gpaco] Added menu "Package" in the main window.
2.0.6 [9 Oct 2008]
Changes in gpaco:
+ Moved configuration file from ~/.gpacorc to ~/.config/gpaco/gpacorc.
+ Enhanced performance and fixed some minor bugs.
2.0.5 [27 Aug 2008]
Changes in gpaco:
+ Removed size unit setting from the preferences dialog (now sizes are
always displayed in "human readable" format).
+ Removed command line option -L.
+ Moved items in menu "View" to the "Preferences" dialog.
+ Removed option to enable/disable the tooltips in Preferences.
+ Removed option to enable/disable the rules hint (now they are always
+ Upgraded to GTKMM >= 2.12
+ bugfix: Avoid bzip2ing of the bzip2 executable or gzipping of the gzip
+ "Select all / unselect all" in the Edit menu.
Other changes:
+ Removed option -x|--expand in pacoball.
2.0.4 [20 Feb 2008]
+ [bugfix] BLOCK_SIZE variable in pacorc was not properly recognized
(thanks Kevin Williams).
+ [bugfix] When appending files to a log, sizes of missing files were
+ [pacoball] Archive symlinks to missing files too (thanks Sergei Butakov).
+ [rpm2paco] Bugfix: Option -q caused the program to exit.
2.0.3 [17 Jul 2007]
+ Removed repeated text in the man page of paco (thanks Georg
+ The option '-x|--expand' has been removed (though it is silently ignored
for backwards compatibility). Now the command line package names are
automatically expanded like in rpm(8), except when logging packages. In
this case the package name must be introduced exactly.
+ Do not search for the name of the package in config.log (thanks Mirco
+ Fix a doubled DESTDIR bug in doc/Makefile (thanks Matthew Bruenig).
+ Rewritten libpaco-log in C. This prevents a glibc installation failure
when building LFS in chapter 6.
+ Fixed bug that made paco log compressed files twice in some cases.
+ Use RTLD_NEXT in libpaco-log. Fixes bug in some systems (thanks Roland
+ When logging installations, files in /proc are always excluded,
regardless of the variable EXCLUDE in pacorc or the arguments to the
option -E|--exclude.
+ Better strip the release suffix in rpm2paco and superpaco.
+ [gpaco] Fixed several problems in "Import RPM database".
2.0.2 [21 Jun 2007]
+ [gpaco] Simplified the preferences dialog.
+ [gpaco] Fixed segmentation fault when the configuration file is missing
(thanks Georg Grafendorfer).
+ [rpm2paco] New option "-j|--sync-version".
2.0.1 [11 Jun 2007]
+ Fixed rpm2paco and ocap scripts! (were broken in 2.0.0).
+ Fixed compilation error in Fedora7 x86_64 (thanks Sawa).
+ New command line option --log-missing.
+ [gpaco] New feature "Import RPM database" (it is a graphic
frontend to rpm2paco).
2.0.0 [6 Jun 2007]
Both paco and gpaco have been rewritten in C++.
Gpaco uses (and depends on) the GTKMM libraries (the C++ bindings for GTK+).
There is not backwards compatibility with paco-1 databases, but they can be
updated automatically by running 'paco -au' right after installing paco-2.
Please note that version 1 databases can be converted to version 2 without
any information loss, but the opposite is not true, so it is advisable to
backup old databases before upgrading.
Changes in the user interface:
+ The default install prefix has been restored to /usr/local.
+ New command line switch -B, which is an alias for --batch.
+ New options --ignore-errors and --ignore-shared (see the man page of paco
for more details).
+ The option -U is no longer used along with -r. The same effect can be now
achieved with -rr.
+ The debuging messages have been slightly reformatted.
+ PACO_INCLUDE and PACO_EXCLUDE environment variables are no longer honoured
when logging package installations. Pacorc options INCLUDE and EXCLUDE
should be used instead.
+ The usage of options -c and -N have changed in order to achieve a more
consistent interface. Now they must be used toghether with -f and/or -m.
For example, to list the shared missing files use -cm, and to list all non
shared files use -Nfm.
+ New pacorc variables LOG_IGNORE_SHARED and CASE_SENSITIVE (see the man
page of pacorc for more details).
+ Always return the exit code of the install command when logging
installations, even if the option --ignore-errors is used (thanks Arthur
+ [gpaco] New "Strip" feature in the file list context menu (by Victor
+ [gpaco] Yellow background for missing files is no longer used. Instead, a
new status column has been added in the list of files, showing whether the
file is installed or not. This column is sortable, allowing for easy
selection of files based on their existence.
+ [gpaco] Remember the last selected folder, compression program and
compression level when creating binary packages.
+ [rpm2paco] Rewritten in bash (it was bourne shell compatible).
+ [rpm2paco] Upgraded to paco-2 databases.
+ [rpm2paco] Already logged packages are now skipped by default. The new
option --force must be used to overwrite the old logs.
+ [ocap] New option -L|--logdir.
+ [ocap] Renamed option -V to -v (for --version).
+ [pacoball] The logs of the packages are included in the pacoballs. Then
when extracting a pacoball, the package information is restored again
(only if the extraction is logged, using option --log). Thanks Arthur Demchenkov.
+ [pacoball] Pacoballs have now the suffix '.paco.tar.gz' instead of
'-paco.tar.gz'. Those created with gpaco follow the same rule.
Internal changes / Fixed bugs:
+ The info logs (those in LOGDIR/_info/) have been removed. Now package
information is written in the same log as the list of installed files.
This is what makes paco-2 databases unusable with paco-1.
+ The file config.status is not read when logging package installations,
since it is not fairly parsable.
+ Properly keep track of directory renaming when logging installations (by
Vladimir A. Pavlov).
+ In libpaco-log, the global errno is saved and restored across handling of
system calls, thereby interfering minimally with the install process.
Also, files are logged only upon successful system calls. This fixes some
bugs (thanks Vladimir A. Pavlov).
+ Do not print error messages when LOGDIR does not exist or is not writable.
1.10.12 [14 Nov 2006]
+ Fixed another double free() bug in paco (thanks Mirco Lorenzoni)
1.10.11 [08 Nov 2006]
+ Removed option '-V|--variable' in paco.
+ Removed pacorc option CLEAR_EMPTY. Empty logs are allways removed from
the database.
+ Fixed segmentation fault when reading empty lines from the configuration
file (thanks Roebe XXX).
+ Updated the paco_bash_completion script (thanks Christian Schneider)
+ [gpaco] Fixed a "Too many open files" bug when compressing a large number
of files.
+ [gpaco] Fixed "double free" bug.
1.10.10 [29 Jul 2006]
This release fixes a bug in release 1.10.9: paco made a segmentation fault
when reading package information from
1.10.9 [28 Jul 2006]
+ Allow shell wildcards in options -e, -E and -I (see the man page).
+ Read information from when installing Python packages.
+ Added a blank line between different packages when listing shared files.
+ New option '-N|--non-shared', to list the non-shared files of the
packages (thanks Thomas Schwarzgruber).
+ Remove obsolete info logs when updating the database (as in paco).
+ Make the main window insensitive when updating the database.
+ Removed the "Update" button in the list of files.
+ Fixed an integer overflow in the number of missing files on 64 bit
architectures (thanks Christian Schneider).
+ New option for testing the integrity of the binary packages.
+ Make the columns in the main window reorderable, and remember its order
between sessions.
+ New column "Summary" in the list of packages (thanks Mickael "Mega MoiX").
+ New columns "Size %" and "Files %" in the list of packages.
+ Use .ini-like syntax for the configuration file (~/.gpacorc)
+ Changed selection behaviour in the list of files.
+ Multiple package selection is now allowed.
+ Minor bugfixes.
+ Pacoball option '--prefix' renamed to '--root' (--prefix is still
supported to provide backwards compatibility).
+ New options '--fakeroot' and '--test' in pacoball.
+ New script ocap. It scans the system and finds all files not logged in the
paco database.
+ Added the paco_bash_completion script into the distribution.
+ Removed configure option '--enable-wordexp'. Only the environment variable
HOME is honoured in pacorc.
+ Removed configure options '--enable-ansi' and '--enable-werror'.
+ Fixed doubled DESTDIRs in doc/ (thanks Mark Rosenstand).
1.10.8 [26 May 2006]
+ [bugfix]: Compilation errors in Solaris.
+ [bugfix]: Segmentation fault if /etc/pacorc is missing.
+ Added (more) missing DESTDIRs in Makefiles.
+ New configure option '--enable-scripts' (see INSTALL).
+ When removing packages, do not ask for confirmation to remove them from
the database. If the package is completely uninstalled it is automatically
removed from the database. If any file is not removed due to errors or
because it is shared, the package is not removed from the database unless
option -U is used.
+ Enhanced the man pages.
+ Integrated the "binary package" dialog into the window of the package, as
a new tab.
+ Replaced progress dialogs by progress bars in the status bar.
+ Prevent users without write permissions on the paco database to remove,
compress or uncompress files.
+ Removed the (dangerous) button "Close" in the remove page.
+ Removed option '-o' in pacoball. Bugfixes and enhancements.
+ Added script superpaco into the main paco distribution. Added a new
option '-n|--no-paco' to install the packages without paco. Fixed a bug
that prevented symlinks and hidden files to be properly installed
(thanks Dan Nicholson and Thomas Schwarzgruber). Other bugfixes.
+ Bugfix in pacoball: Input tarballs not recognized.
1.10.7 [29 Apr 2006]
+ [bugfix]: symlinks not logged (thanks Tor Olav and Thomas Schwarzgruber).
+ New feature in gpaco: removing files can be interrupted with a "Stop"
button, and resumed again with a "Resume" button.
+ New option '--owner', which is just a more intuitive alias for '--query'.
+ Changed the behaviour of option '-V|--variable' (see the man page).
+ Allow '--sort=time' as an alias for '--sort=date' in paco.
+ Reintroduced the script pacoball in the main paco distribution.
1.10.6 [21 Apr 2006]
+ [bugfix]: gpaco: files could not be manually removed, compressed or
+ [bugfix]: extra line read from info file broke option '-o'. (Thanks
Daniel Eklöf).
1.10.5 [4 Apr 2006]
+ Fixed compilation errors in NetBSD.
+ New configure option "--enable-wordexp" (see INSTALL).
+ Fixed a bug in 1.10.4 release that made paco skip /foobar files if
directory /foo had to be excluded.
+ Minor bugfixes.
+ Upgrade is recommended.
1.10.4 [1 Apr 2006]
+ [bugfix]: option '-m' broken (missing files not listed).
+ [bugfix]: EXCLUDE'd paths actually not excluded (thanks Kristian Gavran).
+ [bugfix]: gpaco crashed when updating inexistent logs.
+ Beautified the debugging output when logging packages.
+ Restored the configure option "--with-paco-logdir".
+ Added configure option "--enable-werror".
+ Changed the default install prefix to /usr (was /usr/local).
+ [gpaco]: fixed some problems when managing big packages.
+ New options BLOCK_SIZE and LOG_IGNORE_ERRORS in pacorc.
+ Expand any environment variable in pacorc (not only HOME); and more
(read the man page of pacorc for more information).
+ Removed internationalisation.
+ Type "make logme" right after installing paco, and it will log the own
paco's installation :-)
+ Fixed more missing DESTDIRs in the Makefiles.
+ Do not allow users to remove, update, log or unlog packages if they do not
have write permissions on the paco log directory (thanks Kristian Gavran).
1.10.3 [4 Mar 2006]
+ Fixed missing DESTDIR in doc/Makefile (thanks Dan Nicholson).
+ Tested successfully with gcc-4.0.0.
+ Removed paco.spec from the tarball. Created paco.pc. This allows for
retrieving the paco log directory after installation with pkg-config,
like this: "pkg-config --variable=logdir paco".
+ Allowed the use of option '-x|--expand' when logging packages. If the
expansion leads to more than one package name, paco prints an error
message and exits. See an example in the README file.
+ Scripts are no longer included in the distribution. They have been
available in the web site (
+ [bugfix]: temporary files were not always removed at exit.
+ Removed the option '--with-paco-logdir' in configure, since it can be set
in the configuration file.
+ New options CLEAR_EMPTY and CLEAR_UNINSTALLED for pacorc. See the man page
of pacorc for more information.
+ Minor bugfixes.
1.10.2 [6 Nov 2005]
+ New option '--ignore-errors' in paco (see the man page).
+ New configure option '--enable-ansi'.
+ Allow the use of rpmunpack in SuperPaco (by Richard Johns). This means
that rpm2cpio is no longer required to install RPM packages.
+ Removed reference to sudo conflict, which is not true (thanks Carlos
+ [bugfix]: option '-c' broken!
+ [bugfix]: segfault in paco when reading badly formatted logs.
+ [bugfix]: problems when creating binary packages in gpaco.
+ [bugfix]: gpaco: When updating the database, newly logged packages were
duplicated in the list of packages.
+ [bugfix]: segfault when reading long lines from the logs (thanks Mirco
+ [bugfix]: SuperPaco had problems when installing RPM packages:
"cp: cannot stat `foo': No such file or directory".
1.10.1 [27 Oct 2005]
This release fixes an important bug in version 1.10.0: When logging
installations, paths to be excluded were actually not excluded from the
logs. Thanks Arthur Demchenkov for catching this horrible bug.
1.10.0 [23 Oct 2005]
*** IMPORTANT: Notes for users of older versions of paco ***
1) There are changes in the log format. To rebuild the database, run
'paco -au' right after installing this new version.
2) The libpaco shared library has been renamed to libpaco-log. Files
/usr/lib/libpaco.* can be removed when upgrading to paco-1.10.0.
General changes
+ The configure script can be run from outside the main paco sources
directory (thanks Christian Schneider).
+ Added russian translation (by Arthur Demchenkov).
+ The syntax of pacorc is more strict. Quotes and spaces are not stripped
from the value of the variables. Type 'man pacorc' for more information.
+ Fixed compilation errors in Solaris.
Changes in paco
+ Enhanced the debugging messages when logging or removing packages.
+ Resolve intermediate directory symlinks in the names of the logged files
(no more conflicts with /usr/man and /usr/share/man, etc).
+ Enhanced the way to collect package information at log time: Builds from
outside the main package sources directory are supported, and the
config.status and .aspec (autopackage) files are scanned.
+ When logging packages, the values of CC, CFLAGS, etc... are retrieved only
from the environment, and not from the Makefile.
+ [bugfix]: Spurious commented lines in "Description" info field.
Changes in gpaco
+ [bugfix]: configuration file (.gpacorc) not well written at exit.
+ [bugfix]: charset encoding problems (thanks Arthur Demchenkov).
+ [bugfix]: memory leaks.
+ [bugfix]: segfault when removing packages.
+ [bugfix]: problems with long package descriptions (thanks Christoph Berg).
+ Removed the "maximmum database age" setting in "Preferences". Never update
the database at start.
1.9.6 [23 Sep 2005]
+ Fixed a bug on Solaris: " sh: fatal: /usr/lib/libpaco.: open
failed: No such file or directory".
1.9.5 [23 Sep 2005]
+ Paco has been successfully tested on NetBSD-2.0 (thanks Tanaka Shin-ya).
+ Fixed error codes when using the '-l' option to monitor a command.
Now paco returns: 0 on success, 1 if paco itself fails, and 2 if the
failure comes from the monitorized command (thanks Dan Nicholson).
+ Expand variable $HOME (or ${HOME}) in pacorc (thanks XMail-LORD).
+ Fixed memory leaks.
+ [bugfix]: "true_fopen64 undeclared" (thanks Tanaka Shin-ya).
+ [bugfix]: "__unused redefined" (thanks Christian Schneider).
+ [bugfix]: Segmentation fault when dealing with filenames containing the
percent ('%') character (thanks Christian Schneider).
+ [bugfix]: Fixed some serious bugs in superpaco (ooopss...).
+ [bugfix]: "too many open files" when removing packages.
1.9.4 [5 Sep 2005]
This release fixes a bug in paco-1.9.3: When logging installations, the
package information was not properly retrieved.
1.9.3 [4 Sep 2005]
Changes in paco:
+ Removed option '-S|--stdin'. From now on, if the option '-l|--log' is
used without any command, files are read from the standard input, just
like the '-S' option did. Update your scripts!
+ The build-time values of CC, CFLAGS and some other variables are now
saved in the database, and retrieved with the new option '-V|--variable'.
+ Due to the above new feature, the short option '-V' has changed its
meaning and it's no more used to show version information.
+ [bugfix] '-C' option printed 0 shared files for all packages!
+ [bugfix] Bogus error messages were printed when removing packages.
+ [internal] Use GNU getopt to parse the command line options.
+ [internal] Use linked lists for the lists of files.
Changes in gpaco:
+ Added translator credits in the "About" dialog.
+ Added accelerator to option "Update database" (Ctrl+U).
+ [bugfix] Wrong "parse error" failure when updating the database.
+ [bugfix] Newly logged packages were not properly updated when updating
the whole database.
+ [bugfix] Bogus error messages were printed when removing packages.
Other changes:
+ Replaced the configure option '--enable-scripts' with new options
'--enable-a2paco', '--enable-superpaco' and '--enable-pacoball'.
+ New script paco_bash_completion, written by Christian Schneider.
+ Let pacoball accept more than one input package.
+ New options '-1|--faster', '-9|--better' and '-a|--all' in pacoball.
+ Created a man page for pacoball.
+ Removed configuration variable DPKGDIR.
+ Added Serbian translation (Boban Petrovic).
+ Updated French translation (Ookaze BioACobol).
+ Updated Catalan translation (me).
1.9.2 [03 Aug 2005]
This release uses the full GNU build system: autoconf, automake and libtool.
*** IMPORTANT: Due to the use of libtool, paco can't track its own
*** installation anymore. See the INSTALL file for more details.
General changes:
+ The default log directory can be set at configure time, with the option
+ The path '/usr/info/dir' has been added to the default value of EXCLUDE.
Now EXCLUDE='/tmp:/usr/src:/usr/info/dir'.
+ New configuration variable APPARENT_SIZE (See the man page of pacorc).
+ (Apparently, hopefully) ported to Solaris 9.
+ Internationalizated gpaco.
+ Updated French translation (Ookaze BioACobol).
+ Updated Catalan translation (me).
Changes in libpaco:
+ Added truncate(), truncate64() and creat64() handlers.
+ Bugfixes.
Changes in paco:
+ Removed the '--usage' option and the '?' switch.
+ Don't print the date and the size of the package when listing files.
Changes in gpaco:
+ Disallow changing the log directory at runtime (for now).
+ Don't permit multiple selection in the list of packages (for now).
1.9.1 [16 Jul 2005]
- Fixed various build and install errors.
- Added french translation (by Ookaze BioACobol).
1.9.0 [12 Jul 2005]
General changes:
- Use Autoconf build system.
- Internationalisation support with GNU gettext. Added catalan translation.
- The default configuration directory is now '/usr/etc'. Use the configure
option '--sysconfdir' to change it.
- Increased portability.
Changes in paco:
- Various bugfixes in libpaco.
Changes in gpaco:
- New "Keep logs" option in the "Remove" page.
- Added abbility to create binary packages.
- Changed the buttons layout in the "Remove" page.
- Permit multiple selection in the list of packages.
- Minor bugfixes and enhancements.
Changes in scripts:
- New option '--ball=PATH' in pacoball.
Thanks Dan Nicholson for testing paco in Solaris.
Thanks Jim Gifford for let me test paco in a mips64 machine.
1.8.9 [04 Jun 2005]
Changes in paco:
- Fixed the "Unremoved dangling symlinks" bug. Thanks Jesse S.
- Fixed the "Wrong shared files list" bug.
- Accelerated the shared file detection code. Also in gpaco.
- Changed the default values for the variables INCLUDE and EXCLUDE, which
set the paths to scan/skip when logging the installation of a package.
New default values are:
EXCLUDE=/tmp:/usr/src ('/dev' and '/proc' are implicitly skipped).
1.8.8 [15 May 2005]
Changes in paco:
- Added abbility to get information also from the .pc (pkg-config) file when
installing a package.
- Allow the use of option '-U' with '-r', to force removing the log of the
- Fixed a bug that prevented paco to properly update the database. Thanks
Ookaze BioACobol.
Changes in gpaco:
- Restore the position of the main window between sessions.
Changes in pacoball:
- Fixed the "Argument list too long" bug. Thanks Ivo Nedialkov Krastev.
- Strip leading '/'s from file names. Thus pacoballs can be unpacked in
different prefixes than the root directory '/'.
1.8.7 [30 Apr 2005]
- This release fixes a bug that made paco log some files twice when using
the option "+".
- Debugging support has been added to the libpaco code too (it must be build
with CFLAGS=-DDEBUG to enable it).
1.8.6 [16 Apr 2005]
Changes in gpaco:
- Added accelerators to some menu items.
- New option to show missing sizes as percent in the "Preferences" dialog.
- Display dates in UTF8 encoding (thanks Ryurik).
- Minor bugfixes.
Other changes:
- Better deal with file sizes (thanks Mirco Lorenzoni & Demchenkov Arthur).
1.8.5 [10 Mar 2005]
Changes in gpaco:
- Use UTF8 encoding for the text in "Properties".
- New option '-d|--debug' to print debugging messages on the console.
- Restore the size of the main window between sessions.
- Upgraded to GTK+-2.6
- Removed dependency on GNU getopt.
- Minor bugfixes and enhancements.
Changes in paco:
- Disabled option '-vv'.
- New option '-e|--skip' (see the man page).
- Let option '-o|--configure-options' accept more than one argument.
Other changes:
- Enhanced the man page and the INSTALL file.
- New script 'pacoball' (very simple): Creates binary .tar.bz2 or .tar.gz
packages from installed (and logged) packages.
- From now on, scripts are not installed by default. There's a new configure
option '--enable-scripts' to install them.
- Minor bugfixes and enhancements in a2paco and superpaco.
1.8.4 [19 Feb 2005]
Changes in gpaco:
- Added mnemonics to all buttons and menu items.
- New dialog "Search" which does the same as 'paco -q' but graphically.
- Show progress bar when compressing/uncompressing more than 1MB.
Other changes:
- Logs ending with '~' or '.bak' are ignored.
- The names of the packages must start with an alphanumeric character.
1.8.3 [14 Feb 2005]
Changes in gpaco:
- Added file compression/uncompression support.
- Beautified the "Properties" page in the package windows.
- New dialog "Preferences". Replaces the old items in "Options", adding
some new features.
- "Missing icons" bug fixed.
Other changes:
- Another "rubbish in missing files" bug fixed.
- New log format: The information of the packages is stored in separate
logs in directory $LOGDIR/_info, for better manipulation. This change is
automatically applied when updating the paco database with 'paco -au'.
1.8.2 [06 Feb 2005]
- This release fixes an important bug in paco-1.8.1, due to a typo: The
configuration file was not properly parsed.
- There's also a new useful option '-o|--configure-options', which prints
the options passed to configure when the package was installed.
- Minor bugfixes in gpaco.
1.8.1 [04 Feb 2005]
This release fixes the "rubbish in missing files" bug.
Thanks MrPeacock.
1.8.0 [03 Feb 2005]
This release incorporates two important changes:
1) The syntax of the logs has changed. Users of previous versions of paco
should run the 'upgrade' script provided with the paco-1.8.0 tarball
in order to convert the logs to the new format. Type 'upgrade --help'
for more information.
2) New locations for the default configuration files and log directory:
paco conf. file = /etc/pacorc (customizable with '--sysconfdir' opt.)
log directory = /var/log/paco (customizable with '--logdir' opt.)
gpaco conf. file = ~/.gpacorc
Thanks Paul Heldens for the aid.
Changes in paco
- [Bugfix] Sizes of packages bigger than 1MB were wrong.
- [Bugfix] Properly deal with defines in .spec files.
- Adjust the 'paco -i' output to the screen width.
- paco -vv produces debug messages.
- Recursively remove empty directories when removing a package (also in
- New option '-n|--missing-size', to show the missing size of the packages.
To achieve this, paco keeps the sizes of the missing files in the logs,
hence the change in the log format.
From 1.8.0 on, when listing files, the sizes of the missing ones won't be
'?' anymore. When dealing with logs created by earlier versions, those
sizes will be zero. But for packages logged by paco >= 1.8.0 the original
sizes of the missing files will be shown.
- Due to the above new option, there's a new accepted argument to the
option '--sort': it's 'missing-size'. Also the argument 'missing' has
been renamed to 'missing-files'.
- Slight change in the '-c' option usage. See the man page.
- New option '--usage' to show option summary.
- Added long option to '-D' switch. It's '--dirname'.
Changes in gpaco
- Properly sort the list of packages or files by name (case insensitive).
- Added two new columns in the main window, one for the icon and one for
the missing size of the packages.
- Show the icon of the package in "Properties".
- Renamed the gpaco icon gp.png to gpaco.png. Now it's installed in
DATADIR/pixmaps instead of DATADIR/paco to follow the GNOME conventions.
For the same reason, gpaco.desktop has been created.
- Beautified (well I think) the "About gpaco" dialog.
- Restore the scrolling status of the package windows after update.
- Emulate a console when removing a package (black background, courier
- Show a progress bar while updating the database.
- Code cleanup!
Other changes
- Removed options --include and --exclude from configure and a2paco.
- Removed options --logdir and --overwrite from a2paco.
- Various bugfixes in superpaco and a2paco.
- Directory DATADIR/paco (usually /usr/share/paco) has become obsolete.
Users of this new release of paco may safely remove it.
1.7.3 [15 Jan 2005]
- Added option -D: When logging a package, use the name of the current
directory as the name of the package.
- Added option -S: When logging a package, read the list of files directly
from stdin, instead of following the execution of a command.
- Added options -Ccw, to query for the shared files of the packages.
- Removed option -e. Now empty directories are removed by default.
- Removed option -K. Now the logs are removed when the packages are removed
- Upgraded to gtk+-2.4
- Removed "Keep log" and "Remove empty directories" switches from the
"Remove" page.
- Removed the gpaco man page.
- [Bugfix] Negative total size fixed.
- Many other bugfixes. Gpaco was a monster of eating memory.
- Other minor improvements.
- Removed script raw2paco, since the new paco option -S does its job.
- Renamed configure option --disable-gtkport to --disable-gpaco.
- Renamed configure option --disable-gtkcheck to --disable-gtktest.
- [Bugfix] The script SuperPaco behaved weirdly in verbose mode.
Thanks Carlos Vendramini for testing the pre-releases of this version.
1.7.2 [29 Nov 2004]
- Bugfix: When logging installations, some files are logged twice.
- Allow arguments like '2kB' or '3M' to option '-b|--block-size'.
- (GUI) Enable rules hints when displaying the files of the packages.
1.7.1 [28 Nov 2004]
- The command line options have undergone many changes.
- Fixed a major bug that made paco unusable on Fedora.
- Shared files are properly detected when removing more than one package.
- Joined rpm2paco and dpkg2paco scripts into a2paco.
- Bugfix: properly log filenames with whitespaces.
- Bugfix: removed spurious newlines when reading pacorc.
- Remove tmp files on exit or fatal signal.
- Added abbility to display the hour of installation as well as the date
in gpaco.
1.6 [15 Nov 2004]
- The paco program has been split into two different binaries:
paco (the command line port, not linked with GTK libs), and
gpaco (the GTK port, linked to those libs).
- There's a new script called SuperPaco, that installs Debian, RPM
or Slackware binary packages whithout dpkg, rpm or pkgtool (thanks
to Islam Motab for the ideas).
- The rest of scripts were improved too.
- There's a new configure option '--disable-scripts'.
- There's a new paco option '-z|--no-package-name'.
- All man pages were moved to section 8, except pacorc one, that was
moved to section 5.
- New fancy icon gp.png for gpaco.
- Minor bugfixes / code enhancements.
1.5 [12 Oct 2004]
- New scripts dpkg2paco and rpm2paco, that build paco logs from a local
RPM or dpkg database.
- New script raw2paco, that creates paco logs from a raw list of files.
- Added icons beside the tab titles in the package windows (GUI).
- Beautyfied the "info" output (console) and the Properties page (GUI).
- Added option "Set log directory to default" in the GUI.
- Minor bugfixes.
1.4 [26 Sep 2004]
- New '-y|--symlink' option, that shows the contents of symbolic links
when listing files.
- The extended package information is also retrieved from the .lsm
file (Linux Software Map).
- Read config.log when installing a package, and get the options passed
to configure. (by Florian Duraffourg).
- A man page was created for pacorc.
- The log directory can now be set in pacorc, using the LOGDIR variable.
- The configure script is now sh compliant (tested with ash-0.4.0).
- Minor bugfixes and code cleanups.
1.3.1 [13 Sep 2004]
- Minor (and not so minor) bugs were fixed.
- There's a new option '-n|--no-expand'.
- Portability was increased.
1.3 [09 Sep 2004]
- Added abbility to get extended package information when logging
packages. The info is read from the .spec file (if it exists).
There's a new option '-i|--info' in the console mode ("Properties"
in the GUI), which shows the stored information.
- The (stupid) dependency on curses has been removed.
1.2 [03 Sep 2004]
- [Bugfix] Can't resolve relative paths in log or query modes.
- [Bugfix] Can't rename files in different filesystems. (thanks Pierre-
Francois Honore).
- (GUI) "Remove" tab improved, added "Options" menu, added tool tips...
- There are some new command line options.
- Packages are listed in columns by default (ls style).
- The configure tests were improved.
1.1 [21 Aug 2004]
First public release.

INSTALL Normal file
View File

@ -0,0 +1,370 @@
Installation Instructions
Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.
Basic Installation
Briefly, the shell command `./configure && make && make install'
should configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `' (or `') is used to create
`configure' by a program called `autoconf'. You need `' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root
5. Optionally, type `make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
regular user, particularly if the prior `make install' required
root privileges, verifies that the installation completed
6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
7. Often, you can also type `make uninstall' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide `make
distcheck', which can by used by developers to test that all other
targets like `make install' and `make uninstall' work correctly.
This target is generally not run by end users.
Compilers and Options
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'. This
is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch' options to the
compiler but only a single `-arch' option to the preprocessor. Like
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
using the `lipo' tool if you have problems.
Installation Names
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX', where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them. In general, the
default for these options is expressed in terms of `${prefix}', so that
specifying just `--prefix' will affect all of the other directory
specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the
correct locations to `configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
`make install' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
affected directory. For example, `make install
prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of
`${prefix}'. Any directories that were specified during `configure',
but not in terms of `${prefix}', must each be overridden at install
time for the entire installation to be relocated. The approach of
makefile variable overrides for each directory variable is required by
the GNU Coding Standards, and ideally causes no recompilation.
However, some platforms have known limitations with the semantics of
shared libraries that end up requiring recompilation when using this
method, particularly noticeable in packages that use GNU Libtool.
The second method involves providing the `DESTDIR' variable. For
example, `make install DESTDIR=/alternate/directory' will prepend
`/alternate/directory' before all installation names. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}'
at `configure' time.
Optional Features
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the
execution of `make' will be. For these packages, running `./configure
--enable-silent-rules' sets the default to minimal output, which can be
overridden with `make V=1'; while running `./configure
--disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'.
Particular systems
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
HP-UX `make' updates targets which have the same time stamps as
their prerequisites, which makes it generally unusable when shipped
generated files such as `configure' are involved. Use GNU `make'
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
to try
./configure CC="cc"
and if that doesn't work, try
./configure CC="cc -nodtk"
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'.
On Haiku, software installed for all users goes in `/boot/common',
not `/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common
Specifying the System Type
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
where SYSTEM can have one of these forms:
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/' if it exists, then
`PREFIX/etc/' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf limitation. Until the limitation is lifted, you can use
this workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
`configure' recognizes the following options to control how it
Print a summary of all of the options to `configure', and exit.
Print a summary of the options unique to this package's
`configure', and exit. The `short' variant lists options used
only in the top level, while the `recursive' variant lists options
also present in any nested packages.
Print the version of Autoconf used to generate the `configure'
script, and exit.
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
Alias for `--cache-file=config.cache'.
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.
Run the configure checks, but stop before creating any output
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

47 Normal file
View File

@ -0,0 +1,47 @@
lib \