Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
2ec067cddb | |||
c662852caf | |||
19a3ba19ad | |||
4e0421bc32 | |||
ffe29e224e | |||
487060e496 | |||
92474ea81d | |||
482c8efb58 | |||
eeaea8ee89 | |||
7175591b00 | |||
8f71c4fe8b | |||
e504cf66d3 | |||
211fe43fd9 | |||
8ac36484c5 | |||
5d2b5e0ac0 |
@ -1,3 +1,11 @@
|
|||||||
|
* 31.08.2023 John McQuah
|
||||||
|
- allow prt-get to remove build log when uninstalling a package (feature
|
||||||
|
requested by samsep10l)
|
||||||
|
|
||||||
|
* 31.03.2023 John McQuah
|
||||||
|
- respect the user's choice of --install-root when running pre- or
|
||||||
|
post-install scripts
|
||||||
|
|
||||||
* 10.03.2023 John McQuah
|
* 10.03.2023 John McQuah
|
||||||
- make it possible to consider optional dependencies when updating
|
- make it possible to consider optional dependencies when updating
|
||||||
- bump version of the cache file format, to warn users about the
|
- bump version of the cache file format, to warn users about the
|
||||||
|
7
INSTALL
7
INSTALL
@ -1,6 +1,7 @@
|
|||||||
Installing prt-get
|
Installing prt-get
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
Installing prt-get is just a matter of
|
Installing prt-get is just a matter of
|
||||||
./configure
|
meson setup bld --prefix=/usr
|
||||||
make
|
cd bld && meson compile
|
||||||
make install
|
meson install
|
||||||
|
92
doc/FS1843.md
Normal file
92
doc/FS1843.md
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# Flyspray 1843 notes
|
||||||
|
## Was: Re: Please make the output of prt-get --test more common
|
||||||
|
|
||||||
|
teodor observed that prt-get --test gives two different styles of output.
|
||||||
|
The output style was found to be affected by the number of packages requested
|
||||||
|
on the command line (one versus many), and by whether dependency resolution
|
||||||
|
was toggled (install versus depinst).
|
||||||
|
|
||||||
|
In the case when one package was requested for installation, an early check
|
||||||
|
of /var/lib/pkg/db for the existence of a previous installation would alert the
|
||||||
|
user to the malformed command. No such check of /var/lib/pkg/db was
|
||||||
|
being performed for multiple packages passed on the command line (FS#1910), and
|
||||||
|
so the program continued all the way through executeTransaction() and
|
||||||
|
evaluateResult(), which produced the more verbose output that teodor noted.
|
||||||
|
|
||||||
|
A similar discrepancy could be observed when requesting an **update** of **one**
|
||||||
|
package that was not previously installed, versus an update of **multiple**
|
||||||
|
packages among which there are some not yet installed. You would have seen a
|
||||||
|
terse warning in the first case, and a more verbose output in the second case.
|
||||||
|
|
||||||
|
The softdeps branch in this code base is now more consistent in performing the
|
||||||
|
scan of /var/lib/pkg/db, no matter how many packages are passed as argument.
|
||||||
|
But the mixed-upinst branch collapses the distinction between install and
|
||||||
|
update, always bringing up to date all the ports passed as argument (and their
|
||||||
|
dependencies, unless --nodeps is given), so it can postpone the scan of
|
||||||
|
/var/lib/pkg/db until the step of customizing pkgadd flags for each target.
|
||||||
|
Hence there is no corresponding code in the mixed-upinst branch to solve FS#1910
|
||||||
|
by exiting early with an error message.
|
||||||
|
|
||||||
|
teodor's second observation is more interesting. During dependency resolution,
|
||||||
|
the invalid arguments (ports not found in the active repos) were silently being
|
||||||
|
dropped, rather than being kept in memory for a post-transaction report. If
|
||||||
|
**all** ports passed to a ``depinst`` command are nowhere among the active
|
||||||
|
repositories, then the empty set is what gets used for executeTransaction(),
|
||||||
|
with the predictable result "no package specified for install". Why did we see
|
||||||
|
a different result when running ``install``? Because the calculateDependencies()
|
||||||
|
method was never called, and so executeTransaction() received the entire list
|
||||||
|
of nowhere-to-be-found ports! Iterating through this list of nonexistent ports
|
||||||
|
would populate the missingPackages list, which would then be displayed nicely
|
||||||
|
during the post-transaction summary. This side-effect of toggling dependency
|
||||||
|
resolution could be observed in both the softdeps and the mixed-upinst branch,
|
||||||
|
prior to the commits of 2023-09-15.
|
||||||
|
|
||||||
|
Although we do populate a missingPackages list during calculateDependencies(),
|
||||||
|
the contents of this list were not being included in the post-transaction
|
||||||
|
summary. As the code was originally conceived, executeTransaction() would get
|
||||||
|
a filtered list, with missing packages omitted. This side-effect of ``depinst``
|
||||||
|
violates the principle of least surprise, because users like teodor might
|
||||||
|
justifiably expect toggling dependency resolution to generate a superset of
|
||||||
|
**their argument list** @ARGV, not just a superset of the valid ports in @ARGV.
|
||||||
|
To be more faithful to the principle of least surprise, the softdeps branch now
|
||||||
|
propagates into executeTransaction() even the ports that are not in the repos,
|
||||||
|
so that the post-transaction summary can display them. The mixed-upinst branch
|
||||||
|
does the same, but because it merges ``install`` and ``update``, any requested
|
||||||
|
targets that are already installed and up-to-date will appear in the
|
||||||
|
post-transaction summary under the header "Packages already installed before
|
||||||
|
this run (ignored)".
|
||||||
|
|
||||||
|
With dependency resolution enabled, the list of "Packages already installed
|
||||||
|
before this run (ignored)" often fills up the entire height of a terminal.
|
||||||
|
If we implemented teodor's suggestion and united the list of
|
||||||
|
"Packages not found" with this list --- already often big enough on its own ---
|
||||||
|
then readability of the post-transaction summary would suffer.
|
||||||
|
Two separate lists would offer greater readability in most cases, both for
|
||||||
|
the human eye and for a shell script.
|
||||||
|
|
||||||
|
teodor's proposed heading for a united list, "The following ports were
|
||||||
|
not found/already installed:", did inspire a new way for the softdeps branch
|
||||||
|
to handle FS#1910. All arguments to ``install`` and ``depinst`` will be tested
|
||||||
|
against /var/lib/pkg/db to ensure that they're not already installed, and if
|
||||||
|
all the tests fail then the user is immediately alerted to the malformed
|
||||||
|
command. This preliminary check is simply jw's original design, but extended
|
||||||
|
from one port to many. However, if any of the requested ports is not yet
|
||||||
|
installed, we can go ahead with initRepo() and attempt a less ambitious
|
||||||
|
transaction (limited to a subset of the user's argument list). The program
|
||||||
|
will reach evaluateTransaction() and display what succeeded, as well as what
|
||||||
|
was wrong with the original command.
|
||||||
|
|
||||||
|
The softdeps branch has no corresponding leniency in handling an ``update``
|
||||||
|
command, because the typical scenario for using that command is after
|
||||||
|
running ``prt-get diff``, at which point the user can be expected to know
|
||||||
|
what's on their system and to pass as arguments only the names of packages
|
||||||
|
already installed. So the early exit behaviour of my previous solution to
|
||||||
|
FS#1910 is retained for the ``update`` command. But it's easy to imagine a
|
||||||
|
user passing invalid targets to an ``install`` command, in the absence of
|
||||||
|
any cues from running ``prt-get listinst | grep -E
|
||||||
|
(package1|package2|...|packageN)``, and to handle that possibility it
|
||||||
|
makes sense to parse leniently the arguments passed to ``install``. Users
|
||||||
|
then obtain on the first try, most of what they intended, while also getting
|
||||||
|
an informative list of already-installed packages in the post-transaction report.
|
||||||
|
If they really intended to force the rebuild of those already-installed
|
||||||
|
packages, they can issue a revised command after the first command succeeds.
|
@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
man_MANS = prt-get.8 prt-cache.8 prt-get.conf.5
|
|
||||||
|
|
||||||
clean-local:
|
|
||||||
rm -rf *.log *.aux *.toc *.dvi *.idx *.pdf api
|
|
||||||
|
|
||||||
apidoc:
|
|
||||||
doxygen
|
|
||||||
|
|
||||||
EXTRA_DIST = $(man_MANS) coding
|
|
492
doc/Makefile.in
492
doc/Makefile.in
@ -1,492 +0,0 @@
|
|||||||
# Makefile.in generated by automake 1.12.2 from Makefile.am.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
am__make_dryrun = \
|
|
||||||
{ \
|
|
||||||
am__dry=no; \
|
|
||||||
case $$MAKEFLAGS in \
|
|
||||||
*\\[\ \ ]*) \
|
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
|
||||||
*) \
|
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
|
||||||
test $$am__dry = yes; \
|
|
||||||
}
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
|
||||||
install_sh_SCRIPT = $(install_sh) -c
|
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
|
||||||
transform = $(program_transform_name)
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
subdir = doc
|
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
|
||||||
$(top_srcdir)/mkinstalldirs
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|
||||||
$(ACLOCAL_M4)
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
|
||||||
SOURCES =
|
|
||||||
DIST_SOURCES =
|
|
||||||
am__can_run_installinfo = \
|
|
||||||
case $$AM_UPDATE_INFO_DIR in \
|
|
||||||
n|no|NO) false;; \
|
|
||||||
*) (install-info --version) >/dev/null 2>&1;; \
|
|
||||||
esac
|
|
||||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
|
||||||
am__vpath_adj = case $$p in \
|
|
||||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
|
||||||
*) f=$$p;; \
|
|
||||||
esac;
|
|
||||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
|
||||||
am__install_max = 40
|
|
||||||
am__nobase_strip_setup = \
|
|
||||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
|
||||||
am__nobase_strip = \
|
|
||||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
|
||||||
am__nobase_list = $(am__nobase_strip_setup); \
|
|
||||||
for p in $$list; do echo "$$p $$p"; done | \
|
|
||||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
|
||||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
|
||||||
if (++n[$$2] == $(am__install_max)) \
|
|
||||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
|
||||||
END { for (dir in files) print dir, files[dir] }'
|
|
||||||
am__base_list = \
|
|
||||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
|
||||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
|
||||||
am__uninstall_files_from_dir = { \
|
|
||||||
test -z "$$files" \
|
|
||||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
|
||||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
|
||||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
|
||||||
}
|
|
||||||
man5dir = $(mandir)/man5
|
|
||||||
am__installdirs = "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"
|
|
||||||
man8dir = $(mandir)/man8
|
|
||||||
NROFF = nroff
|
|
||||||
MANS = $(man_MANS)
|
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AMTAR = @AMTAR@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AWK = @AWK@
|
|
||||||
CC = @CC@
|
|
||||||
CCDEPMODE = @CCDEPMODE@
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
CPP = @CPP@
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
CXX = @CXX@
|
|
||||||
CXXDEPMODE = @CXXDEPMODE@
|
|
||||||
CXXFLAGS = @CXXFLAGS@
|
|
||||||
CYGPATH_W = @CYGPATH_W@
|
|
||||||
DEFS = @DEFS@
|
|
||||||
DEPDIR = @DEPDIR@
|
|
||||||
ECHO_C = @ECHO_C@
|
|
||||||
ECHO_N = @ECHO_N@
|
|
||||||
ECHO_T = @ECHO_T@
|
|
||||||
EGREP = @EGREP@
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
GREP = @GREP@
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBOBJS = @LIBOBJS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
|
||||||
MAKEINFO = @MAKEINFO@
|
|
||||||
MKDIR_P = @MKDIR_P@
|
|
||||||
OBJEXT = @OBJEXT@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|
||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|
||||||
PACKAGE_URL = @PACKAGE_URL@
|
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
||||||
SET_MAKE = @SET_MAKE@
|
|
||||||
SHELL = @SHELL@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
abs_builddir = @abs_builddir@
|
|
||||||
abs_srcdir = @abs_srcdir@
|
|
||||||
abs_top_builddir = @abs_top_builddir@
|
|
||||||
abs_top_srcdir = @abs_top_srcdir@
|
|
||||||
ac_ct_CC = @ac_ct_CC@
|
|
||||||
ac_ct_CXX = @ac_ct_CXX@
|
|
||||||
am__include = @am__include@
|
|
||||||
am__leading_dot = @am__leading_dot@
|
|
||||||
am__quote = @am__quote@
|
|
||||||
am__tar = @am__tar@
|
|
||||||
am__untar = @am__untar@
|
|
||||||
bindir = @bindir@
|
|
||||||
build_alias = @build_alias@
|
|
||||||
builddir = @builddir@
|
|
||||||
datadir = @datadir@
|
|
||||||
datarootdir = @datarootdir@
|
|
||||||
docdir = @docdir@
|
|
||||||
dvidir = @dvidir@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
host_alias = @host_alias@
|
|
||||||
htmldir = @htmldir@
|
|
||||||
includedir = @includedir@
|
|
||||||
infodir = @infodir@
|
|
||||||
install_sh = @install_sh@
|
|
||||||
libdir = @libdir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
localedir = @localedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
mandir = @mandir@
|
|
||||||
mkdir_p = @mkdir_p@
|
|
||||||
oldincludedir = @oldincludedir@
|
|
||||||
pdfdir = @pdfdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
program_transform_name = @program_transform_name@
|
|
||||||
psdir = @psdir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
srcdir = @srcdir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
target_alias = @target_alias@
|
|
||||||
top_build_prefix = @top_build_prefix@
|
|
||||||
top_builddir = @top_builddir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
man_MANS = prt-get.8 prt-cache.8 prt-get.conf.5
|
|
||||||
EXTRA_DIST = $(man_MANS) coding
|
|
||||||
all: all-am
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
|
||||||
@for dep in $?; do \
|
|
||||||
case '$(am__configure_deps)' in \
|
|
||||||
*$$dep*) \
|
|
||||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
|
||||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
|
||||||
exit 1;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
|
||||||
$(am__cd) $(top_srcdir) && \
|
|
||||||
$(AUTOMAKE) --gnu doc/Makefile
|
|
||||||
.PRECIOUS: Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
@case '$?' in \
|
|
||||||
*config.status*) \
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
|
||||||
*) \
|
|
||||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
|
||||||
esac;
|
|
||||||
|
|
||||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
|
|
||||||
$(top_srcdir)/configure: $(am__configure_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
$(am__aclocal_m4_deps):
|
|
||||||
install-man5: $(man_MANS)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
@list1=''; \
|
|
||||||
list2='$(man_MANS)'; \
|
|
||||||
test -n "$(man5dir)" \
|
|
||||||
&& test -n "`echo $$list1$$list2`" \
|
|
||||||
|| exit 0; \
|
|
||||||
echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \
|
|
||||||
$(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \
|
|
||||||
{ for i in $$list1; do echo "$$i"; done; \
|
|
||||||
if test -n "$$list2"; then \
|
|
||||||
for i in $$list2; do echo "$$i"; done \
|
|
||||||
| sed -n '/\.5[a-z]*$$/p'; \
|
|
||||||
fi; \
|
|
||||||
} | while read p; do \
|
|
||||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
|
||||||
echo "$$d$$p"; echo "$$p"; \
|
|
||||||
done | \
|
|
||||||
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
|
|
||||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
|
||||||
sed 'N;N;s,\n, ,g' | { \
|
|
||||||
list=; while read file base inst; do \
|
|
||||||
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
|
||||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
|
|
||||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
|
||||||
while read files; do \
|
|
||||||
test -z "$$files" || { \
|
|
||||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
|
|
||||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
|
|
||||||
done; }
|
|
||||||
|
|
||||||
uninstall-man5:
|
|
||||||
@$(NORMAL_UNINSTALL)
|
|
||||||
@list=''; test -n "$(man5dir)" || exit 0; \
|
|
||||||
files=`{ for i in $$list; do echo "$$i"; done; \
|
|
||||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
|
||||||
sed -n '/\.5[a-z]*$$/p'; \
|
|
||||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
|
|
||||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
|
||||||
dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir)
|
|
||||||
install-man8: $(man_MANS)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
@list1=''; \
|
|
||||||
list2='$(man_MANS)'; \
|
|
||||||
test -n "$(man8dir)" \
|
|
||||||
&& test -n "`echo $$list1$$list2`" \
|
|
||||||
|| exit 0; \
|
|
||||||
echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
|
|
||||||
$(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
|
|
||||||
{ for i in $$list1; do echo "$$i"; done; \
|
|
||||||
if test -n "$$list2"; then \
|
|
||||||
for i in $$list2; do echo "$$i"; done \
|
|
||||||
| sed -n '/\.8[a-z]*$$/p'; \
|
|
||||||
fi; \
|
|
||||||
} | while read p; do \
|
|
||||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
|
||||||
echo "$$d$$p"; echo "$$p"; \
|
|
||||||
done | \
|
|
||||||
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
|
|
||||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
|
||||||
sed 'N;N;s,\n, ,g' | { \
|
|
||||||
list=; while read file base inst; do \
|
|
||||||
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
|
||||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
|
|
||||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
|
||||||
while read files; do \
|
|
||||||
test -z "$$files" || { \
|
|
||||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
|
|
||||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
|
|
||||||
done; }
|
|
||||||
|
|
||||||
uninstall-man8:
|
|
||||||
@$(NORMAL_UNINSTALL)
|
|
||||||
@list=''; test -n "$(man8dir)" || exit 0; \
|
|
||||||
files=`{ for i in $$list; do echo "$$i"; done; \
|
|
||||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
|
||||||
sed -n '/\.8[a-z]*$$/p'; \
|
|
||||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
|
|
||||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
|
||||||
dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
|
|
||||||
tags: TAGS
|
|
||||||
TAGS:
|
|
||||||
|
|
||||||
ctags: CTAGS
|
|
||||||
CTAGS:
|
|
||||||
|
|
||||||
cscope cscopelist:
|
|
||||||
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
@list='$(MANS)'; if test -n "$$list"; then \
|
|
||||||
list=`for p in $$list; do \
|
|
||||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
|
||||||
if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
|
|
||||||
if test -n "$$list" && \
|
|
||||||
grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
|
|
||||||
echo "error: found man pages containing the 'missing help2man' replacement text:" >&2; \
|
|
||||||
grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
|
|
||||||
echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
|
|
||||||
echo " typically 'make maintainer-clean' will remove them" >&2; \
|
|
||||||
exit 1; \
|
|
||||||
else :; fi; \
|
|
||||||
else :; fi
|
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
list='$(DISTFILES)'; \
|
|
||||||
dist_files=`for file in $$list; do echo $$file; done | \
|
|
||||||
sed -e "s|^$$srcdirstrip/||;t" \
|
|
||||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
|
||||||
case $$dist_files in \
|
|
||||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
|
||||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
|
||||||
sort -u` ;; \
|
|
||||||
esac; \
|
|
||||||
for file in $$dist_files; do \
|
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test -d "$(distdir)/$$file"; then \
|
|
||||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|
||||||
fi; \
|
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
|
||||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
|
||||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|
||||||
fi; \
|
|
||||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
|
||||||
else \
|
|
||||||
test -f "$(distdir)/$$file" \
|
|
||||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
check-am: all-am
|
|
||||||
check: check-am
|
|
||||||
all-am: Makefile $(MANS)
|
|
||||||
installdirs:
|
|
||||||
for dir in "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"; do \
|
|
||||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
|
||||||
done
|
|
||||||
install: install-am
|
|
||||||
install-exec: install-exec-am
|
|
||||||
install-data: install-data-am
|
|
||||||
uninstall: uninstall-am
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
|
|
||||||
installcheck: installcheck-am
|
|
||||||
install-strip:
|
|
||||||
if test -z '$(STRIP)'; then \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
||||||
install; \
|
|
||||||
else \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
||||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
|
||||||
fi
|
|
||||||
mostlyclean-generic:
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
|
||||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
@echo "This command is intended for maintainers to use"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
clean: clean-am
|
|
||||||
|
|
||||||
clean-am: clean-generic clean-local mostlyclean-am
|
|
||||||
|
|
||||||
distclean: distclean-am
|
|
||||||
-rm -f Makefile
|
|
||||||
distclean-am: clean-am distclean-generic
|
|
||||||
|
|
||||||
dvi: dvi-am
|
|
||||||
|
|
||||||
dvi-am:
|
|
||||||
|
|
||||||
html: html-am
|
|
||||||
|
|
||||||
html-am:
|
|
||||||
|
|
||||||
info: info-am
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
install-data-am: install-man
|
|
||||||
|
|
||||||
install-dvi: install-dvi-am
|
|
||||||
|
|
||||||
install-dvi-am:
|
|
||||||
|
|
||||||
install-exec-am:
|
|
||||||
|
|
||||||
install-html: install-html-am
|
|
||||||
|
|
||||||
install-html-am:
|
|
||||||
|
|
||||||
install-info: install-info-am
|
|
||||||
|
|
||||||
install-info-am:
|
|
||||||
|
|
||||||
install-man: install-man5 install-man8
|
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
|
||||||
|
|
||||||
install-pdf-am:
|
|
||||||
|
|
||||||
install-ps: install-ps-am
|
|
||||||
|
|
||||||
install-ps-am:
|
|
||||||
|
|
||||||
installcheck-am:
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
|
||||||
-rm -f Makefile
|
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-generic
|
|
||||||
|
|
||||||
pdf: pdf-am
|
|
||||||
|
|
||||||
pdf-am:
|
|
||||||
|
|
||||||
ps: ps-am
|
|
||||||
|
|
||||||
ps-am:
|
|
||||||
|
|
||||||
uninstall-am: uninstall-man
|
|
||||||
|
|
||||||
uninstall-man: uninstall-man5 uninstall-man8
|
|
||||||
|
|
||||||
.MAKE: install-am install-strip
|
|
||||||
|
|
||||||
.PHONY: all all-am check check-am clean clean-generic clean-local \
|
|
||||||
distclean distclean-generic distdir dvi dvi-am html html-am \
|
|
||||||
info info-am install install-am install-data install-data-am \
|
|
||||||
install-dvi install-dvi-am install-exec install-exec-am \
|
|
||||||
install-html install-html-am install-info install-info-am \
|
|
||||||
install-man install-man5 install-man8 install-pdf \
|
|
||||||
install-pdf-am install-ps install-ps-am install-strip \
|
|
||||||
installcheck installcheck-am installdirs maintainer-clean \
|
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
|
|
||||||
pdf-am ps ps-am uninstall uninstall-am uninstall-man \
|
|
||||||
uninstall-man5 uninstall-man8
|
|
||||||
|
|
||||||
|
|
||||||
clean-local:
|
|
||||||
rm -rf *.log *.aux *.toc *.dvi *.idx *.pdf api
|
|
||||||
|
|
||||||
apidoc:
|
|
||||||
doxygen
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
||||||
.NOEXPORT:
|
|
279
doc/prt-get.8
279
doc/prt-get.8
@ -76,28 +76,36 @@ non-option argument passed. This is very similar to
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B install [\-\-margs] [\-\-aargs] [\-\-log] <package1> [<package2> ...]
|
.B install [\-\-margs] [\-\-aargs] [\-\-log] <package1> [<package2> ...]
|
||||||
install all packages in the listed order. Note that you can do this
|
Install all packages in the listed order. Note that you can do this
|
||||||
from any directory.
|
from any directory.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B depinst [\-\-margs] [\-\-aargs] [\-\-log] [\-\-softdeps] <package1> [<package2> ...]
|
.B depinst [\-\-margs] [\-\-aargs] [\-\-log] [\-\-softdeps] <package1> [<package2> ...]
|
||||||
install all packages given on the command line, including their dependencies.
|
Install all packages given on the command line, including their dependencies.
|
||||||
|
Note that already-installed packages will be left at their current version,
|
||||||
|
even if out of date. prt\-get depinst behaves this way because all of its
|
||||||
|
child pkgadd processes will \fBlack\fP the \-u flag, which is needed when
|
||||||
|
updating an already-installed package.
|
||||||
|
|
||||||
Passing the --softdeps flag tells \fBprt-get\fP to consider also the optional
|
Passing the --softdeps flag tells \fBprt-get\fP to consider also the optional
|
||||||
dependencies when sorting. Note that already-installed packages will be left
|
dependencies when sorting. The --softdeps flag does NOT affect the
|
||||||
at their current version, even if out of date. prt\-get depinst behaves this
|
calculation of the minimal set of packages needed to satisfy the
|
||||||
way because all of its child pkgadd processes will \fBlack\fP the \-u flag,
|
transaction; only hard dependencies are used when constructing this set. But
|
||||||
which is needed when updating an already-installed package.
|
if there are any optional dependency relationships among the ports in the
|
||||||
|
resulting set, they will be respected when prt-get determines the sequence
|
||||||
|
in which to build.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B update [\-\-margs] [\-\-aargs] [\-\-log] <package1> [<package2> ...]
|
.B update [\-\-margs] [\-\-aargs] [\-\-log] <package1> [<package2> ...]
|
||||||
update all packages listed in this order. Note: if the latest version of
|
Update all packages listed in this order. Note: if the latest version of a
|
||||||
a package has acquired dependencies that were not needed by the currently-installed
|
package has acquired dependencies that were not needed by the
|
||||||
version and are not present on the system, the update command will not attempt to
|
currently-installed version and are not present on the system, the update
|
||||||
resolve this omission. prt-get update behaves this way because pkgadd invocations
|
command will not attempt to resolve this omission. prt-get update behaves
|
||||||
inherit the flag -u for every package in the transaction, causing an error if
|
this way because pkgadd invocations inherit the flag -u for every package in
|
||||||
the package is not already installed. You can follow the CRUX mailing list or the
|
the transaction, causing an error if the package is not already installed.
|
||||||
IRC channels to stay informed of the situations where an update will require manual
|
You can follow the CRUX mailing list or the IRC channels to stay informed of
|
||||||
intervention, or filter the output of
|
the situations where an update will require manual intervention, or filter
|
||||||
|
the output of
|
||||||
.B prt\-get quickdep $(prt\-get quickdiff)
|
.B prt\-get quickdep $(prt\-get quickdiff)
|
||||||
through \fBprt\-get isinst\fP to get a list of packages suitable for an
|
through \fBprt\-get isinst\fP to get a list of packages suitable for an
|
||||||
\fBinstall\fP or \fBupdate\fP command.
|
\fBinstall\fP or \fBupdate\fP command.
|
||||||
@ -105,7 +113,7 @@ See the \fBEXAMPLES\fP section below for details.
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B remove <package1> [<package2> ...]
|
.B remove <package1> [<package2> ...]
|
||||||
remove packages listed in this order
|
Remove packages listed in this order
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B sysup [\-\-softdeps] [\-\-nodeps]
|
.B sysup [\-\-softdeps] [\-\-nodeps]
|
||||||
@ -150,7 +158,7 @@ switch will slow down the operation remarkably.
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B diff [\-\-all] [\-\-prefer\-higher] [<package1> <package2> ...]
|
.B diff [\-\-all] [\-\-prefer\-higher] [<package1> <package2> ...]
|
||||||
show differences between installed packages and ports in the ports
|
Show differences between installed packages and ports in the ports
|
||||||
tree. If arguments are given, shows only differences for these
|
tree. If arguments are given, shows only differences for these
|
||||||
packages, otherwise all differences are shown. It's also possible to use
|
packages, otherwise all differences are shown. It's also possible to use
|
||||||
shell-like
|
shell-like
|
||||||
@ -162,7 +170,7 @@ the ports tree, use the --prefer-higher option.
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B quickdiff
|
.B quickdiff
|
||||||
prints a simple list of packages which have a different version in the
|
Print a simple list of packages which have a different version in the
|
||||||
ports tree than what is installed. The output is sorted alphabetically,
|
ports tree than what is installed. The output is sorted alphabetically,
|
||||||
but you can generate a (larger) list sorted by dependencies using
|
but you can generate a (larger) list sorted by dependencies using
|
||||||
.B prt\-get quickdep $(prt\-get quickdiff).
|
.B prt\-get quickdep $(prt\-get quickdiff).
|
||||||
@ -188,19 +196,18 @@ Search the ports tree (both name and description) for the pattern
|
|||||||
.B expr
|
.B expr
|
||||||
(which can be a shell-like wildcard pattern or a regexp). The search in
|
(which can be a shell-like wildcard pattern or a regexp). The search in
|
||||||
the description is not case sensitive. Note that this requires prt\-get
|
the description is not case sensitive. Note that this requires prt\-get
|
||||||
to read every Pkgfile, which makes it rather slow; if you like this,
|
to read every Pkgfile, which makes it rather slow. If you like searching by
|
||||||
consider using the cache functionality, so you only have to spend this
|
description, consider using the cache functionality, so you only have to
|
||||||
time once after updating the ports tree has been updated.
|
read all the Pkgfiles after each update of the ports tree.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B fsearch [\-\-full] [\-\-regex] <pattern>
|
.B fsearch [\-\-full] [\-\-regex] <pattern>
|
||||||
Search the ports tree for
|
Search the ports tree for
|
||||||
.B pattern
|
.B pattern
|
||||||
as file name in their footprint. When called without '--full', strips
|
as file name in their footprint. When called without '--full', strips
|
||||||
the directories from the file names before matching; this behaviour
|
the directories from the file names before matching.
|
||||||
will change in prt-get 0.6, where full path search will be the
|
Pattern can be a shell-like wildcard pattern (e.g. prt-get fsearch "*.h")
|
||||||
default. Pattern can be a shell-like wildcard pattern (e.g. prt-get
|
or a regular expression (e.g. prt-get fsearch --regex 'liblz(o2|ma).*')
|
||||||
fsearch "*.h") or a regular expression (e.g. prt-get fsearch --regex 'liblz(o2|ma).*')
|
|
||||||
|
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
@ -217,18 +224,19 @@ Print the port's README file if it exists; if set, uses $PAGER
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B depends [\-\-softdeps] <package1> [<package2> ...]
|
.B depends [\-\-softdeps] <package1> [<package2> ...]
|
||||||
print a recursive list of dependencies needed to install the packages passed
|
Print a recursive list of dependencies needed to install the packages
|
||||||
as argument. It shows a list of the dependencies that were found in the ports tree,
|
passed as argument. It shows a list of the dependencies that were found in
|
||||||
plus a list of the dependencies that could not be found. Pass the --softdeps flag
|
the ports tree, plus a list of the dependencies that could not be found.
|
||||||
if you want the sorting algorithm to consider optional dependencies too.
|
Pass the --softdeps flag if you want the sorting algorithm to consider
|
||||||
|
optional dependencies too.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B quickdep [\-\-softdeps] <package1> [<package2> ...]
|
.B quickdep [\-\-softdeps] <package1> [<package2> ...]
|
||||||
same output as \fBdepends\fP, but separated by spaces rather than newlines, and
|
Same output as \fBdepends\fP, but separated by spaces rather than newlines,
|
||||||
stripped of any dependencies that could not be found in the ports tree.
|
and stripped of any dependencies that could not be found in the ports tree.
|
||||||
Useful in case the list of dependencies is too large to fit on one screen, or
|
Useful in case the list of dependencies is too large to fit on one screen,
|
||||||
if you don't want to filter out manually the ports that are invalid targets for
|
or if you don't want to filter out manually the ports that are invalid
|
||||||
installation. For example, instead of
|
targets for installation. For example, instead of
|
||||||
.B prt\-get depinst xorg-server
|
.B prt\-get depinst xorg-server
|
||||||
you might micromanage the process as follows:
|
you might micromanage the process as follows:
|
||||||
.B for i in $(prt\-get quickdep xorg-server); do if prt\-get isinst $i 2>/dev/null; then prt\-get update \-fr $i; else prt\-get install $i; fi; done
|
.B for i in $(prt\-get quickdep xorg-server); do if prt\-get isinst $i 2>/dev/null; then prt\-get update \-fr $i; else prt\-get install $i; fi; done
|
||||||
@ -241,55 +249,77 @@ for successful builds.
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B deptree [\-\-softdeps] <package>
|
.B deptree [\-\-softdeps] <package>
|
||||||
print a tree of the dependencies of the package
|
Print a tree of the dependencies of the package
|
||||||
.B <package>.
|
.B <package>.
|
||||||
Pass the --softdeps flag to also show the installed packages that mention
|
Pass the --softdeps flag to also show the installed packages that might
|
||||||
|
have been eagerly linked, if they were present when
|
||||||
.B <package>
|
.B <package>
|
||||||
as an optional dependency.
|
(or its dependencies) were built.
|
||||||
Subtrees already shown are marked with '-->' to save some space. In
|
Subtrees already shown are marked with '-->' to save some space. In
|
||||||
order to show them all, add the --all switch.
|
order to show them all, add the --all switch.
|
||||||
|
|
||||||
.SH ""
|
.SH ""
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B dependent [\-\-softdeps] <package>
|
.B dependent [\-\-recursive] [\-\-softdeps] [\-\-all] [\-\-tree] <package>
|
||||||
print a list of ports which have
|
Print a list of ports whose "Depends on:" line contains
|
||||||
.B <package>
|
.B <package>
|
||||||
in their "Depends on:" line. Use the --softdeps flag to also search the
|
(or its dependents, if --recursive was passed). Use the --softdeps flag to
|
||||||
"Optional:" lines for \fB<package>\fP.
|
also search the "Optional:" lines for \fB<package>\fP.
|
||||||
|
|
||||||
By default, output is restricted to ports that are installed. To see all
|
By default, output is restricted to ports that are installed. To see all
|
||||||
the dependencies, add the --all switch; use --recursive to get a recursive
|
the dependencies, use the --all switch. Use --tree to get a nicely indented
|
||||||
list (without duplication), and --tree to get a nicely indented one.
|
list.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B dup [-v] [format]
|
.B dup [-v] [format]
|
||||||
List ports which can be found in multiple directories configured in
|
List ports which can be found in multiple directories configured in
|
||||||
.B /etc/prt-get.conf
|
.B /etc/prt-get.conf
|
||||||
Use the verbose switch to simulate the output of version 5.12 and older (likely
|
Use the \fB\-v\fP switch to see a verbose report, which will show for each
|
||||||
to go away in the future). The format string can be used to create user
|
dup the port that takes precedence, and the port that is hidden (including
|
||||||
specified formats. The following symbols are currently replaced:
|
full path and version info). The verbose switch is basically an alias for a
|
||||||
|
particular combination of the recognized format symbols, namely
|
||||||
|
|
||||||
|
.B '* %n\en %p1 %v1 precedes over\en %p2 %v2\en'.
|
||||||
|
|
||||||
|
You can customize the output by passing a different format string, whose
|
||||||
|
symbols will be replaced as follows.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%n \-> name of the port
|
%n -> name of the port
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%p1 \-> Full path (including name) to port taking precendence
|
%p1 -> Full path (including name) to port taking precedence
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%p2 \-> Full path (including name) to port being hidden
|
%p2 -> Full path (including name) to port being hidden
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%v1 \-> Version of port taking precendence
|
%v1 -> Version of port taking precedence
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%v2 \-> Version of port being hidden
|
%v2 -> Version of port being hidden
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\ \ \ \(bu
|
||||||
|
%M1 -> maintainer of port taking precedence
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\ \ \ \(bu
|
||||||
|
%M2 -> maintainer of port being hidden
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\ \ \ \(bu
|
||||||
|
%u1 -> URL of port taking precedence
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\ \ \ \(bu
|
||||||
|
%u2 -> URL of port being hidden
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B list [\-v|\-vv] [\-\-path] [\-\-regex] [filter]
|
.B list [\-v|\-vv] [\-\-path] [\-\-regex] [filter]
|
||||||
@ -307,27 +337,27 @@ Print formatted port list format string can contain variables, which
|
|||||||
are replaced like this:
|
are replaced like this:
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%n \-> name
|
%n -> name
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%p \-> path
|
%p -> path
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%v \-> version
|
%v -> version
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%r \-> release
|
%r -> release
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%d \-> description
|
%d -> description
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%e \-> dependencies
|
%e -> dependencies
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
@ -335,7 +365,7 @@ are replaced like this:
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%u \-> URL
|
%u -> URL
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
@ -359,11 +389,11 @@ are replaced like this:
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu
|
\ \ \ \(bu
|
||||||
%i \-> "no" if not installed, "yes" if it's installed and
|
%i -> "no" if not installed, "yes" if it's installed and
|
||||||
up to date and "diff" if it's installed and a new version is in the
|
up to date and "diff" if it's installed and a new version is in the
|
||||||
ports tree.
|
ports tree.
|
||||||
|
|
||||||
Use "\\n" and "\\t" to format your output (no additional format specified
|
Use "\\n" and "\\t" to format your output (no additional format symbols
|
||||||
suported). The optional format string2 can contain the same variables
|
suported). The optional format string2 can contain the same variables
|
||||||
as format string1 and is used to sort the output. You can specify a
|
as format string1 and is used to sort the output. You can specify a
|
||||||
.B wildcard filter
|
.B wildcard filter
|
||||||
@ -374,16 +404,16 @@ to filter by package name.
|
|||||||
.B listinst [\-v|\-vv] [\-\-regex] [\-\-depsort] [filter]
|
.B listinst [\-v|\-vv] [\-\-regex] [\-\-depsort] [filter]
|
||||||
List installed ports. It's basically the same as
|
List installed ports. It's basically the same as
|
||||||
.B pkginfo \-i,
|
.B pkginfo \-i,
|
||||||
but omits version when called without verbose (\-v, \-vv) switch. Plus
|
but omits version when called without verbose (-v, -vv) switch. Plus
|
||||||
it is notably faster in my tests. \-v adds version information, \-vv
|
it is notably faster in my tests. -v adds version information, -vv
|
||||||
adds version and description.
|
adds version and description.
|
||||||
.B Warning:
|
.B Warning:
|
||||||
\-vv will slow down the process because it requires prt\-get to scan
|
-vv will slow down the process because it requires prt-get to scan
|
||||||
both the ports database and the ports tree.
|
both the ports database and the ports tree.
|
||||||
It's also possible to use shell-like
|
It's also possible to use shell-like
|
||||||
.B wildcards
|
.B wildcards
|
||||||
for the listinst command. Make sure you escape where needed. By default
|
for the listinst command. Make sure you escape where needed. By default
|
||||||
it's sorted alphabetically; use the \-\-depsort switch to sort by
|
it's sorted alphabetically; use the --depsort switch to sort by
|
||||||
dependencies.
|
dependencies.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
@ -410,7 +440,7 @@ greater than 0.
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B current <package>
|
.B current <package>
|
||||||
Shows the currently-installed version of <package>, or a message
|
Show the currently-installed version of <package>, or a message
|
||||||
that <package> is not installed. Unlike
|
that <package> is not installed. Unlike
|
||||||
.B prt\-get isinst package1 package2,
|
.B prt\-get isinst package1 package2,
|
||||||
this command does \fBnot\fP accept more than one package as argument. Use
|
this command does \fBnot\fP accept more than one package as argument. Use
|
||||||
@ -419,11 +449,11 @@ to work around this limitation.
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B ls [\-\-path] <package>
|
.B ls [\-\-path] <package>
|
||||||
Prints out a listing of the port's directory
|
List the contents of the port's directory
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B cat <package> [<file>]
|
.B cat <package> [<file>]
|
||||||
Prints out the file to stdout. If <file> is not specified, 'Pkgfile' is used. If set, uses $PAGER.
|
Print the file to stdout. If <file> is not specified, 'Pkgfile' is used. If set, uses $PAGER.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B edit <package> [<file>]
|
.B edit <package> [<file>]
|
||||||
@ -433,7 +463,7 @@ If <file> is not specified, 'Pkgfile' is used.
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B help
|
.B help
|
||||||
Shows a help screen
|
Show a help screen
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B dumpconfig
|
.B dumpconfig
|
||||||
@ -441,11 +471,11 @@ Dump the configuration to the current terminal
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B version
|
.B version
|
||||||
Shows the current version of prt-get
|
Show the current version of prt-get
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B cache
|
.B cache
|
||||||
create a cache file from the ports tree to be used by prt-get using the
|
Create a cache file from the ports tree to be used by prt-get using the
|
||||||
--cache option. Remember to run prt-get cache each time you update the
|
--cache option. Remember to run prt-get cache each time you update the
|
||||||
ports tree.
|
ports tree.
|
||||||
|
|
||||||
@ -542,6 +572,14 @@ Execute post-install script if it's there
|
|||||||
.B \-\-install-scripts
|
.B \-\-install-scripts
|
||||||
Execute pre-install and post-install script if they're there
|
Execute pre-install and post-install script if they're there
|
||||||
|
|
||||||
|
The options --pre-install, --post-install, and --install-scripts offer a
|
||||||
|
convenient way to temporarily override the prt-get.conf directive 'runscripts
|
||||||
|
no', which was the historical default. Starting with CRUX 3.7, prt-get.conf is
|
||||||
|
being shipped with 'runscripts yes'. To override this default at the command
|
||||||
|
line, you have to pass the more cumbersome option --config-set=\(dqrunscripts
|
||||||
|
no\(dq, or point prt-get to an alternative configuration file using
|
||||||
|
--config=<file>. (see below for the documentation of these options)
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B \-\-install-root=<dir>
|
.B \-\-install-root=<dir>
|
||||||
Use <dir> as root directory for your installation; allows you to install
|
Use <dir> as root directory for your installation; allows you to install
|
||||||
@ -549,30 +587,41 @@ the requested packages onto a different directory than '/'. In daily usage,
|
|||||||
this option is not required; it's primarily interesting if you're developing
|
this option is not required; it's primarily interesting if you're developing
|
||||||
an independent installation.
|
an independent installation.
|
||||||
|
|
||||||
Some pre- or post-install scripts might not have the intended effect if
|
Pre- and post-install scripts will not be executed if the target root directory
|
||||||
invoked as
|
lacks a copy of the ports tree. So if you're maintaining an installation on a
|
||||||
.B chroot <dir> /bin/sh <path/to/script>
|
volume mounted somewhere other than '/', it's not enough to have the
|
||||||
(the naive way to respect --install-root).
|
line 'runscripts yes' in your prt-get.conf; you also have to ensure that
|
||||||
So if you're maintaining an installation on a volume mounted somewhere
|
the pre- and post-install scripts can be found in the same location
|
||||||
other than '/', it might be safer to ensure that your \fBprt\-get.conf(5)\fP
|
relative to <dir>.
|
||||||
has the line
|
|
||||||
.B runscripts no
|
|
||||||
and then run any pre- or post-install scripts by hand.
|
|
||||||
|
|
||||||
The setting for --install-root determines which package database is used for
|
The setting for --install-root determines which package database is used for
|
||||||
reading/writing (so <dir>/var/lib/pkg/db must exist), and where the pkg.tar.?z
|
reading/writing (so <dir>/var/lib/pkg/db must exist), and where the pkg.tar.?z
|
||||||
archives get unpacked, but the relevant prt\-get.conf and ports tree are those
|
archives get unpacked, but the relevant prt-get.conf and ports tree are those
|
||||||
on the parent filesystem. Therefore it is not necessary for <dir> to contain
|
on the parent filesystem. Therefore it is not necessary for <dir> to contain
|
||||||
its own copy of the ports tree, or even a copy of prt-get.conf.
|
its own copy of the ports tree (unless 'runscripts yes' is desired, as
|
||||||
However, if <dir>/etc/pkgadd.conf exists and is different from /etc/pkgadd.conf,
|
explained above). But each \fBpkgmk(8)\fP process will take place on the parent
|
||||||
then install or update commands might behave unexpectedly. In order to preserve
|
filesystem, inspecting \fIthe parent filesystem\fP's environment for
|
||||||
the \fBpkgadd.conf(5)\fP settings from the host system, append the option
|
information about installed ports and available shared libraries. The
|
||||||
--aargs='-c /etc/pkgadd.conf' to your \fBprt-get install\fP
|
\fBpkgmk(8)\fP process might therefore draw the wrong conclusions about what
|
||||||
command, or just copy the desired directives into <dir>/etc/pkgadd.conf .
|
functionality should be enabled for an installation to <dir>. If the parent
|
||||||
|
filesystem is more richly populated than <dir>, with respect to installed
|
||||||
|
packages, then the built package might exhibit breakage when \fBpkgadd\fP
|
||||||
|
unpacks it into <dir>.
|
||||||
|
|
||||||
|
When setting --install-root=<dir>, install or update commands might behave
|
||||||
|
unexpectedly if <dir>/etc/pkgadd.conf exists and is different from
|
||||||
|
/etc/pkgadd.conf . In order to preserve the \fBpkgadd.conf(5)\fP settings from
|
||||||
|
the host system, append the option --aargs='-c /etc/pkgadd.conf' to your
|
||||||
|
\fBprt-get install\fP command, or just copy the desired directives into
|
||||||
|
<dir>/etc/pkgadd.conf .
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B \-\-log
|
.B \-\-log
|
||||||
Write build output to log file
|
Write build output to log file. Basically a convenient alias for
|
||||||
|
\fB\-\-config\-set=\(dqwritelog enabled\(dq\fP. Note that there is no similar
|
||||||
|
alias allowing you to temporarily override the one configuration directive
|
||||||
|
\(dqwritelog enabled\(dq; you have to resort to \fB\-\-config\-set=\(dqwritelog
|
||||||
|
disabled\(dq\fP if that is your intention.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B \-\-no-std-config
|
.B \-\-no-std-config
|
||||||
@ -592,7 +641,7 @@ Set <string> in configuration, overriding configuration file
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B \-\-config=<file>
|
.B \-\-config=<file>
|
||||||
Use alternative configuration file to read ports directories from
|
Use <file> to read configuration directives, rather than /etc/prt-get.conf.
|
||||||
|
|
||||||
.SH ""
|
.SH ""
|
||||||
|
|
||||||
@ -637,31 +686,26 @@ Download, build and install irssi, with one simple command
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B prt\-get install paper yasm
|
.B prt\-get install paper yasm
|
||||||
Install paper and yasm. Abort with an informative error message if either package is already
|
Install paper and yasm. Abort with an informative error message if either
|
||||||
installed, allowing you to issue a revised command.
|
package is already installed, allowing you to issue a revised command.
|
||||||
|
|
||||||
.TP
|
|
||||||
.B prt\-get update bmake cmake
|
|
||||||
Update bmake and cmake. Abort with an informative error message if either package is not yet
|
|
||||||
installed, allowing you to issue a revised command.
|
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B prt\-get update -fr openssh
|
.B prt\-get update \-fr openssh
|
||||||
Update your current version of openssh, forcing a rebuild even if no version difference is detected.
|
Update your current version of openssh, forcing a rebuild even if no version difference is detected.
|
||||||
Useful if there was a major version change in one of its dependencies, and \fBrevdep openssh\fP
|
Useful if there was a major version change in one of its dependencies, and \fBrevdep openssh\fP
|
||||||
indicates a broken package. :\-)
|
indicates a broken package. :\-)
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B MISSLIBS=$(revdep -vvv mpv | awk -v FS=: '/(missing library)/ {print $3}'); [ -n \(dq${MISSLIBS[@]}\(dq ] && for i in ${MISSLIBS[@]}; do prt\-get fsearch $i; done
|
.B MISSLIBS=$(revdep \-vvv mpv | awk \-v FS=: '/(missing library)/ {print $3}'); [ \-n \(dq${MISSLIBS[@]}\(dq ] && for i in ${MISSLIBS[@]}; do prt\-get fsearch $i; done
|
||||||
(adapted from a script by ppetrov^) Check for the presence of the runtime libraries needed by mpv.
|
(adapted from a script by ppetrov^) Check for the presence of the runtime libraries needed by mpv.
|
||||||
If any are absent, search the footprints to determine which ports provide the missing libraries.
|
If any are absent, search the footprints to determine which ports provide the missing libraries.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B prt\-get isinst $(prt-get info ffmpeg | awk -v FS=: '/^Optional/ {gsub(/,/,\(dq \(dq,$2); print $2}') | awk -v FS=\(dq \(dq '/not installed/ {print $2}'
|
.B prt\-get isinst $(prt\-get info ffmpeg | awk \-v FS=: '/^Optional/ {gsub(/,/,\(dq \(dq,$2); print $2}') | awk \-v FS=\(dq \(dq '/not installed/ {print $2}'
|
||||||
Show all the optional dependencies of ffmpeg that are not currently installed.
|
Show all the optional dependencies of ffmpeg that are not currently installed.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B prt\-get isinst $(prt-get info ffmpeg | awk -v FS=: '/^Optional/ {gsub(/,/,\(dq \(dq,$2); print $2}') | awk -v FS=\(dq \(dq '/not installed/ {print $2}' | xargs prt\-get depinst \-\-group \-\-softdeps ffmpeg
|
.B prt\-get isinst $(prt\-get info ffmpeg | awk \-v FS=: '/^Optional/ {gsub(/,/,\(dq \(dq,$2); print $2}') | awk \-v FS=\(dq \(dq '/not installed/ {print $2}' | xargs prt\-get depinst \-\-group \-\-softdeps ffmpeg
|
||||||
Extension of the above. Installs ffmpeg and all its optional dependencies, in
|
Extension of the above. Installs ffmpeg and all its optional dependencies, in
|
||||||
the order that guarantees a maximal feature set. The --group flag tells
|
the order that guarantees a maximal feature set. The --group flag tells
|
||||||
\fBprt\-get\fP to abort the operation if any port fails to build, so as not to
|
\fBprt\-get\fP to abort the operation if any port fails to build, so as not to
|
||||||
@ -669,7 +713,7 @@ spend any resources on ffmpeg until all of its optional dependencies are in
|
|||||||
place.
|
place.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B prt\-get isinst $(if grep -qE '^ffmpeg:' /etc/prt-get.softdeps 2>/dev/null; then grep -E '^ffmpeg:' /etc/prt-get.softdeps | cut -d: -f2 | tr ',' ' '; else prt-get info ffmpeg | awk -v FS=: '/^Optional/ {gsub(/,/,\(dq \(dq,$2); print $2}'; fi) | awk -v FS=\(dq \(dq '/not installed/ {print $2}' | xargs prt\-get depinst \-\-group \-\-softdeps ffmpeg
|
.B prt\-get isinst $(if grep \-qE '^ffmpeg:' /etc/prt\-get.softdeps 2>/dev/null; then grep \-E '^ffmpeg:' /etc/prt\-get.softdeps | cut \-d: \-f2 | tr ',' ' '; else prt\-get info ffmpeg | awk \-v FS=: '/^Optional/ {gsub(/,/,\(dq \(dq,$2); print $2}'; fi) | awk \-v FS=\(dq \(dq '/not installed/ {print $2}' | xargs prt\-get depinst \-\-group \-\-softdeps ffmpeg
|
||||||
Extension of the above (addressing a use case envisioned by ivandi). The
|
Extension of the above (addressing a use case envisioned by ivandi). The
|
||||||
user can create the file /etc/prt-get.softdeps containing a line like
|
user can create the file /etc/prt-get.softdeps containing a line like
|
||||||
.B ffmpeg: x264 x265
|
.B ffmpeg: x264 x265
|
||||||
@ -689,12 +733,17 @@ Return a list of all ports whose names start with "mc", "nc", or "pc"
|
|||||||
Return a list of all ports having "irc" in their name or description
|
Return a list of all ports having "irc" in their name or description
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B comm -13 <(ls /usr/ports/core) <(prt-get listorphans)
|
.B prt\-get fsearch \-\-full \(dq/usr/etc/*\(dq | awk '/^Found in/ { $0=gensub(/Found in .*\e/(.+):/,\(dq\e\e1\(dq,\(dqg\(dq); print;}'
|
||||||
|
Return a list of all ports that store their configs in /usr/etc. Omit the
|
||||||
|
pipe to awk if you also want a detailed list of the files that matched.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B comm \-13 <(ls /usr/ports/core) <(prt\-get listorphans)
|
||||||
(based on comments from Romster and jue) Filter out the core ports from the list of orphans, in
|
(based on comments from Romster and jue) Filter out the core ports from the list of orphans, in
|
||||||
shells (like bash) that support process substitution
|
shells (like bash) that support process substitution
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B comm -13 <(cat ~/.keepers <(ls /usr/ports/core) | sort) <(prt\-get listorphans) | xargs prt\-get remove
|
.B comm \-13 <(cat ~/.keepers <(ls /usr/ports/core) | sort) <(prt\-get listorphans) | xargs prt\-get remove
|
||||||
(system-hosing extension of the above) A one-liner inspired by \fBpkg\-clean\fP
|
(system-hosing extension of the above) A one-liner inspired by \fBpkg\-clean\fP
|
||||||
and \fBpkgfoster\fP, but without the safeguard of interactivity. \fBDo not try this on a
|
and \fBpkgfoster\fP, but without the safeguard of interactivity. \fBDo not try this on a
|
||||||
mission-critical system.\fP
|
mission-critical system.\fP
|
||||||
@ -712,7 +761,15 @@ Same as above, but only print the dependencies that are already installed. The o
|
|||||||
command is suitable for piping to \fBxargs prt\-get update\fP.
|
command is suitable for piping to \fBxargs prt\-get update\fP.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B comm -3 <(prt\-get printf \(dq%i:%n %v-%r\en\(dq | grep -v ^no | cut -d: -f2 | sort) <(pkginfo -i | sort)
|
.B prt\-get isinst $(prt\-get quickdep i3) | awk '/not installed/ { print $2 }' | xargs prt\-get depinst \-\-softdeps \-\-test
|
||||||
|
(inspired by a troubleshooting session with hestia) Assemble a set of install
|
||||||
|
targets needed to build the i3 window manager; sort the list, respecting both
|
||||||
|
hard and soft dependencies; then print how the installation would proceed. The
|
||||||
|
awk filter in the middle is needed to prevent the command from failing with the
|
||||||
|
error message "already installed".
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B comm \-3 <(prt\-get printf \(dq%i:%n %v\-%r\en\(dq | grep \-v ^no | cut \-d: \-f2 | sort) <(pkginfo \-i | sort)
|
||||||
(inspired by a bug report from teodor) an alternative to \fBprt\-get diff\fP.
|
(inspired by a bug report from teodor) an alternative to \fBprt\-get diff\fP.
|
||||||
In the output, left-justified lines show the version available in the
|
In the output, left-justified lines show the version available in the
|
||||||
repositories, while indented lines show the version installed. On a
|
repositories, while indented lines show the version installed. On a
|
||||||
@ -720,22 +777,32 @@ reasonably up-to-date system, the two processes in the above command will
|
|||||||
return many identical lines; these are suppressed by the -3 flag to
|
return many identical lines; these are suppressed by the -3 flag to
|
||||||
\fBcomm(1)\fP.
|
\fBcomm(1)\fP.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B for L in /var/log/pkgbuild/*.log; do P=${L%__*}; P=${P##*/}; VR=${L##*__}; VR=${VR%.log}; if ! prt\-get isinst $P >/dev/null; then mv $L /var/log/uninstalled; elif [ \(dq$(prt\-get current $P)\(dq != \(dq$VR\(dq ]; then mv $L /var/log/oldbuild/; fi; done
|
||||||
|
(based on a feature request by samsep10l) a command you can put into a script
|
||||||
|
called by root's crontab, in order to mimic Slackware's tidy directory listings
|
||||||
|
(the main logdir only contains build logs of the latest installed packages;
|
||||||
|
other logs are moved to a separate directory). This particular command relies
|
||||||
|
on declaring \(dqlogfile /var/log/pkgbuild/%n__%v-%r.log\(dq and \(dqwritelog
|
||||||
|
enabled\(dq in \fBprt\-get.conf(5)\fP. Logs saved with a different filename
|
||||||
|
pattern will require slight adjustments to the command.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B prt\-get printf \(dq%p\et%u\en\(dq | awk '($1 ~ /\e/myrepo$/) { print $2 }'
|
.B prt\-get printf \(dq%p\et%u\en\(dq | awk '($1 ~ /\e/myrepo$/) { print $2 }'
|
||||||
Print the upstream URL for each port in the collection \(dqmyrepo\(dq, perhaps
|
Print the upstream URL for each port in the collection \(dqmyrepo\(dq, perhaps
|
||||||
as the first step in keeping your personal overlay up to date.
|
as the first step in keeping your personal overlay up to date.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B prt\-get printf \(dq%M\et%n\en\(dq | grep ^Tim | wc -l
|
.B prt\-get printf \(dq%M\et%n\en\(dq | grep \-c ^Tim
|
||||||
Count how many ports our most-overworked core team member claims responsibility for.
|
Count how many ports our most-overworked core team member claims responsibility for.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B comm -13 <(prt\-get depends firefox-bin |tail -n +2 |sort) <(prt\-get depends firefox |tail -n +2 |sort)
|
.B comm \-13 <(prt\-get depends firefox\-bin |tail \-n +2 |sort) <(prt\-get depends firefox |tail \-n +2 |sort)
|
||||||
Find the build-time dependencies of firefox. Runtime dependencies would also appear in the list generated by
|
Find the build-time dependencies of firefox. Runtime dependencies would also appear in the list generated by
|
||||||
the first process substitution, and \fBcomm -13\fP will suppress what the two lists have in common.
|
the first process substitution, and \fBcomm -13\fP will suppress what the two lists have in common.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B prt-get listinst \-\-depsort | xargs prt-get install \-\-install\-root=/mnt
|
.B prt\-get listinst \-\-depsort | xargs prt\-get install \-\-install\-root=/mnt
|
||||||
Sort the list of installed packages by dependencies, and then install all
|
Sort the list of installed packages by dependencies, and then install all
|
||||||
those packages onto a backup filesystem (mounted at /mnt). If you have a customized
|
those packages onto a backup filesystem (mounted at /mnt). If you have a customized
|
||||||
pkgadd.conf that you want applied to this operation, either copy it to
|
pkgadd.conf that you want applied to this operation, either copy it to
|
||||||
@ -743,7 +810,7 @@ pkgadd.conf that you want applied to this operation, either copy it to
|
|||||||
/etc/pkgadd.conf\(dq to the install command.
|
/etc/pkgadd.conf\(dq to the install command.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B prt-get list --path --regex '^xorg.*' | grep -v \(dq/usr/ports/xorg\(dq
|
.B prt\-get list \-\-path \-\-regex '^xorg.*' | grep \-v \(dq/usr/ports/xorg\(dq
|
||||||
Show the ports whose names begin with xorg, but which appear outside the xorg port collection.
|
Show the ports whose names begin with xorg, but which appear outside the xorg port collection.
|
||||||
(At the time of writing, this command returned at least two font ports.)
|
(At the time of writing, this command returned at least two font ports.)
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ It might look like this:
|
|||||||
# prt-get.conf
|
# prt-get.conf
|
||||||
|
|
||||||
# root directories
|
# root directories
|
||||||
prtdir /usr/ports/base
|
prtdir /usr/ports/core
|
||||||
prtdir /usr/ports/opt
|
prtdir /usr/ports/opt
|
||||||
prtdir /usr/ports/contrib
|
prtdir /usr/ports/contrib
|
||||||
|
|
||||||
@ -128,13 +128,35 @@ replaced with the port's path, e.g. for port gcc in core, %p would be
|
|||||||
and %n would be
|
and %n would be
|
||||||
.B gcc.
|
.B gcc.
|
||||||
This allows you to have separate log files per port.
|
This allows you to have separate log files per port.
|
||||||
|
Separate log files for each version and release can be achieved
|
||||||
|
using the placeholders %v and %r, respectively. But if you want to enable
|
||||||
|
\fBrmlog_on_uninst\fP, it is best to avoid %p, %v, and %r when specifying
|
||||||
|
\fBlogfile\fP (as explained below).
|
||||||
|
|
||||||
|
.B rmlog_on_uninst
|
||||||
|
which can be set to 'yes' or 'no'; when set to yes, uninstalling a
|
||||||
|
package will also try to delete its build log. Replacements in the template
|
||||||
|
\fBlogfile\fP will be made using the \fIcurrent values\fP from the database
|
||||||
|
of installed packages, and from the active repositories. If log files exist
|
||||||
|
with different values of %p, %v, or %r than what the database and repositories
|
||||||
|
provide, then the pattern substitutions will fail to match the names of those
|
||||||
|
logs, and this feature will be a no-op. For example, suppose you specify the
|
||||||
|
logfile pattern \(dq%p/.buildlogs/%n-%v-%r.log\(dq, and you have a package
|
||||||
|
installed on your system through many versions, or after it has been
|
||||||
|
moved from opt to contrib. Uninstalling that package would leave behind all the
|
||||||
|
build logs except the latest. This pattern is also fragile with respect to
|
||||||
|
repository purges; if one of your installed ports is dropped from the official
|
||||||
|
repos, then either \(dq%p\(dq will expand to the path of your personal overlay
|
||||||
|
(you did make a copy, right?), or it will not expand at all! See the EXAMPLES
|
||||||
|
section of \fBprt\-get(8)\fP for an alternative way to tidy up your directory
|
||||||
|
of build logs.
|
||||||
|
|
||||||
.B readme
|
.B readme
|
||||||
which can be set to 'disabled', to suppress the notification after
|
can be set to 'disabled', to suppress the notification after
|
||||||
installing a port with a README file; 'compact', to collect all the READMEs
|
installing a port with a README file; 'compact', to collect all the READMEs
|
||||||
into one post-transaction output; or 'verbose', to print separate
|
into one post-transaction output; or 'verbose', to print separate
|
||||||
information about each port with a README file. See
|
information about each port with a README file. See
|
||||||
.B prt-get(8)
|
.B prt\-get(8)
|
||||||
and especially the readme command how to read those README files using
|
and especially the readme command how to read those README files using
|
||||||
prt-get.
|
prt-get.
|
||||||
|
|
||||||
@ -149,13 +171,13 @@ append a comma separated list of ports to be used after the path,
|
|||||||
using a colon (':') character to separate the two components
|
using a colon (':') character to separate the two components
|
||||||
.B path:package1, package2,...
|
.B path:package1, package2,...
|
||||||
Note that this slows down prt-get a lot if you list a lot of packages.
|
Note that this slows down prt-get a lot if you list a lot of packages.
|
||||||
If you become aware of speed problems due to this, create a separate
|
If you become aware of speed problems due to this feature, create a separate
|
||||||
ports directory instead and use symlinks for the ports you want to use.
|
ports directory instead and fill it with symlinks to the ports you want.
|
||||||
|
|
||||||
.LP
|
.LP
|
||||||
You can write comments after a '#' character. If you have '#'
|
You can write comments after a '#' character. If you have '#'
|
||||||
characters in your paths, there's no way to escape them (as there is no
|
characters in your paths, there's no way to escape them (likewise there is
|
||||||
way to escape ':' characters). Complain to the author if this is a
|
no way to escape ':' characters). Complain to the author if this is a
|
||||||
problem :-)
|
problem :-)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
EXTRA_DIST = prt-get_complete prt-get.aliases prt-get.deplist prt-get.conf
|
|
||||||
|
|
||||||
sysconf_DATA = prt-get.conf
|
|
||||||
|
|
403
misc/Makefile.in
403
misc/Makefile.in
@ -1,403 +0,0 @@
|
|||||||
# Makefile.in generated by automake 1.12.2 from Makefile.am.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
|
|
||||||
VPATH = @srcdir@
|
|
||||||
am__make_dryrun = \
|
|
||||||
{ \
|
|
||||||
am__dry=no; \
|
|
||||||
case $$MAKEFLAGS in \
|
|
||||||
*\\[\ \ ]*) \
|
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
|
||||||
*) \
|
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
|
||||||
test $$am__dry = yes; \
|
|
||||||
}
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
|
||||||
install_sh_SCRIPT = $(install_sh) -c
|
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
|
||||||
transform = $(program_transform_name)
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
subdir = misc
|
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
|
||||||
$(top_srcdir)/mkinstalldirs
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|
||||||
$(ACLOCAL_M4)
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
|
||||||
SOURCES =
|
|
||||||
DIST_SOURCES =
|
|
||||||
am__can_run_installinfo = \
|
|
||||||
case $$AM_UPDATE_INFO_DIR in \
|
|
||||||
n|no|NO) false;; \
|
|
||||||
*) (install-info --version) >/dev/null 2>&1;; \
|
|
||||||
esac
|
|
||||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
|
||||||
am__vpath_adj = case $$p in \
|
|
||||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
|
||||||
*) f=$$p;; \
|
|
||||||
esac;
|
|
||||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
|
||||||
am__install_max = 40
|
|
||||||
am__nobase_strip_setup = \
|
|
||||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
|
||||||
am__nobase_strip = \
|
|
||||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
|
||||||
am__nobase_list = $(am__nobase_strip_setup); \
|
|
||||||
for p in $$list; do echo "$$p $$p"; done | \
|
|
||||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
|
||||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
|
||||||
if (++n[$$2] == $(am__install_max)) \
|
|
||||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
|
||||||
END { for (dir in files) print dir, files[dir] }'
|
|
||||||
am__base_list = \
|
|
||||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
|
||||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
|
||||||
am__uninstall_files_from_dir = { \
|
|
||||||
test -z "$$files" \
|
|
||||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
|
||||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
|
||||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
|
||||||
}
|
|
||||||
am__installdirs = "$(DESTDIR)$(sysconfdir)"
|
|
||||||
DATA = $(sysconf_DATA)
|
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AMTAR = @AMTAR@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AWK = @AWK@
|
|
||||||
CC = @CC@
|
|
||||||
CCDEPMODE = @CCDEPMODE@
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
CPP = @CPP@
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
CXX = @CXX@
|
|
||||||
CXXDEPMODE = @CXXDEPMODE@
|
|
||||||
CXXFLAGS = @CXXFLAGS@
|
|
||||||
CYGPATH_W = @CYGPATH_W@
|
|
||||||
DEFS = @DEFS@
|
|
||||||
DEPDIR = @DEPDIR@
|
|
||||||
ECHO_C = @ECHO_C@
|
|
||||||
ECHO_N = @ECHO_N@
|
|
||||||
ECHO_T = @ECHO_T@
|
|
||||||
EGREP = @EGREP@
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
GREP = @GREP@
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBOBJS = @LIBOBJS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
|
||||||
MAKEINFO = @MAKEINFO@
|
|
||||||
MKDIR_P = @MKDIR_P@
|
|
||||||
OBJEXT = @OBJEXT@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|
||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|
||||||
PACKAGE_URL = @PACKAGE_URL@
|
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
||||||
SET_MAKE = @SET_MAKE@
|
|
||||||
SHELL = @SHELL@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
abs_builddir = @abs_builddir@
|
|
||||||
abs_srcdir = @abs_srcdir@
|
|
||||||
abs_top_builddir = @abs_top_builddir@
|
|
||||||
abs_top_srcdir = @abs_top_srcdir@
|
|
||||||
ac_ct_CC = @ac_ct_CC@
|
|
||||||
ac_ct_CXX = @ac_ct_CXX@
|
|
||||||
am__include = @am__include@
|
|
||||||
am__leading_dot = @am__leading_dot@
|
|
||||||
am__quote = @am__quote@
|
|
||||||
am__tar = @am__tar@
|
|
||||||
am__untar = @am__untar@
|
|
||||||
bindir = @bindir@
|
|
||||||
build_alias = @build_alias@
|
|
||||||
builddir = @builddir@
|
|
||||||
datadir = @datadir@
|
|
||||||
datarootdir = @datarootdir@
|
|
||||||
docdir = @docdir@
|
|
||||||
dvidir = @dvidir@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
host_alias = @host_alias@
|
|
||||||
htmldir = @htmldir@
|
|
||||||
includedir = @includedir@
|
|
||||||
infodir = @infodir@
|
|
||||||
install_sh = @install_sh@
|
|
||||||
libdir = @libdir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
localedir = @localedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
mandir = @mandir@
|
|
||||||
mkdir_p = @mkdir_p@
|
|
||||||
oldincludedir = @oldincludedir@
|
|
||||||
pdfdir = @pdfdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
program_transform_name = @program_transform_name@
|
|
||||||
psdir = @psdir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
srcdir = @srcdir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
target_alias = @target_alias@
|
|
||||||
top_build_prefix = @top_build_prefix@
|
|
||||||
top_builddir = @top_builddir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
EXTRA_DIST = prt-get_complete prt-get.aliases prt-get.deplist prt-get.conf
|
|
||||||
sysconf_DATA = prt-get.conf
|
|
||||||
all: all-am
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
|
||||||
@for dep in $?; do \
|
|
||||||
case '$(am__configure_deps)' in \
|
|
||||||
*$$dep*) \
|
|
||||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
|
||||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
|
||||||
exit 1;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu misc/Makefile'; \
|
|
||||||
$(am__cd) $(top_srcdir) && \
|
|
||||||
$(AUTOMAKE) --gnu misc/Makefile
|
|
||||||
.PRECIOUS: Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
@case '$?' in \
|
|
||||||
*config.status*) \
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
|
||||||
*) \
|
|
||||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
|
||||||
esac;
|
|
||||||
|
|
||||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
|
|
||||||
$(top_srcdir)/configure: $(am__configure_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
$(am__aclocal_m4_deps):
|
|
||||||
install-sysconfDATA: $(sysconf_DATA)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
@list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
|
|
||||||
if test -n "$$list"; then \
|
|
||||||
echo " $(MKDIR_P) '$(DESTDIR)$(sysconfdir)'"; \
|
|
||||||
$(MKDIR_P) "$(DESTDIR)$(sysconfdir)" || exit 1; \
|
|
||||||
fi; \
|
|
||||||
for p in $$list; do \
|
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
|
||||||
echo "$$d$$p"; \
|
|
||||||
done | $(am__base_list) | \
|
|
||||||
while read files; do \
|
|
||||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysconfdir)'"; \
|
|
||||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \
|
|
||||||
done
|
|
||||||
|
|
||||||
uninstall-sysconfDATA:
|
|
||||||
@$(NORMAL_UNINSTALL)
|
|
||||||
@list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
|
|
||||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
|
||||||
dir='$(DESTDIR)$(sysconfdir)'; $(am__uninstall_files_from_dir)
|
|
||||||
tags: TAGS
|
|
||||||
TAGS:
|
|
||||||
|
|
||||||
ctags: CTAGS
|
|
||||||
CTAGS:
|
|
||||||
|
|
||||||
cscope cscopelist:
|
|
||||||
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
list='$(DISTFILES)'; \
|
|
||||||
dist_files=`for file in $$list; do echo $$file; done | \
|
|
||||||
sed -e "s|^$$srcdirstrip/||;t" \
|
|
||||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
|
||||||
case $$dist_files in \
|
|
||||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
|
||||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
|
||||||
sort -u` ;; \
|
|
||||||
esac; \
|
|
||||||
for file in $$dist_files; do \
|
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test -d "$(distdir)/$$file"; then \
|
|
||||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|
||||||
fi; \
|
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
|
||||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
|
||||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|
||||||
fi; \
|
|
||||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
|
||||||
else \
|
|
||||||
test -f "$(distdir)/$$file" \
|
|
||||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
check-am: all-am
|
|
||||||
check: check-am
|
|
||||||
all-am: Makefile $(DATA)
|
|
||||||
installdirs:
|
|
||||||
for dir in "$(DESTDIR)$(sysconfdir)"; do \
|
|
||||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
|
||||||
done
|
|
||||||
install: install-am
|
|
||||||
install-exec: install-exec-am
|
|
||||||
install-data: install-data-am
|
|
||||||
uninstall: uninstall-am
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
|
|
||||||
installcheck: installcheck-am
|
|
||||||
install-strip:
|
|
||||||
if test -z '$(STRIP)'; then \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
||||||
install; \
|
|
||||||
else \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
||||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
|
||||||
fi
|
|
||||||
mostlyclean-generic:
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
|
||||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
@echo "This command is intended for maintainers to use"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
clean: clean-am
|
|
||||||
|
|
||||||
clean-am: clean-generic mostlyclean-am
|
|
||||||
|
|
||||||
distclean: distclean-am
|
|
||||||
-rm -f Makefile
|
|
||||||
distclean-am: clean-am distclean-generic
|
|
||||||
|
|
||||||
dvi: dvi-am
|
|
||||||
|
|
||||||
dvi-am:
|
|
||||||
|
|
||||||
html: html-am
|
|
||||||
|
|
||||||
html-am:
|
|
||||||
|
|
||||||
info: info-am
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
|
|
||||||
install-dvi: install-dvi-am
|
|
||||||
|
|
||||||
install-dvi-am:
|
|
||||||
|
|
||||||
install-exec-am: install-sysconfDATA
|
|
||||||
|
|
||||||
install-html: install-html-am
|
|
||||||
|
|
||||||
install-html-am:
|
|
||||||
|
|
||||||
install-info: install-info-am
|
|
||||||
|
|
||||||
install-info-am:
|
|
||||||
|
|
||||||
install-man:
|
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
|
||||||
|
|
||||||
install-pdf-am:
|
|
||||||
|
|
||||||
install-ps: install-ps-am
|
|
||||||
|
|
||||||
install-ps-am:
|
|
||||||
|
|
||||||
installcheck-am:
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
|
||||||
-rm -f Makefile
|
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-generic
|
|
||||||
|
|
||||||
pdf: pdf-am
|
|
||||||
|
|
||||||
pdf-am:
|
|
||||||
|
|
||||||
ps: ps-am
|
|
||||||
|
|
||||||
ps-am:
|
|
||||||
|
|
||||||
uninstall-am: uninstall-sysconfDATA
|
|
||||||
|
|
||||||
.MAKE: install-am install-strip
|
|
||||||
|
|
||||||
.PHONY: all all-am check check-am clean clean-generic distclean \
|
|
||||||
distclean-generic distdir dvi dvi-am html html-am info info-am \
|
|
||||||
install install-am install-data install-data-am install-dvi \
|
|
||||||
install-dvi-am install-exec install-exec-am install-html \
|
|
||||||
install-html-am install-info install-info-am install-man \
|
|
||||||
install-pdf install-pdf-am install-ps install-ps-am \
|
|
||||||
install-strip install-sysconfDATA installcheck installcheck-am \
|
|
||||||
installdirs maintainer-clean maintainer-clean-generic \
|
|
||||||
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
|
|
||||||
uninstall-am uninstall-sysconfDATA
|
|
||||||
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
||||||
.NOEXPORT:
|
|
@ -17,10 +17,11 @@ prtdir /usr/ports/opt
|
|||||||
### log options:
|
### log options:
|
||||||
# writelog enabled # (enabled|disabled)
|
# writelog enabled # (enabled|disabled)
|
||||||
# logmode overwrite # (append|overwrite)
|
# logmode overwrite # (append|overwrite)
|
||||||
# rm_on_success no # (yes|no)
|
# rmlog_on_success no # (yes|no)
|
||||||
|
# rmlog_on_uninst no # (yes|no)
|
||||||
logfile /var/log/pkgbuild/%n.log
|
logfile /var/log/pkgbuild/%n.log
|
||||||
# path, %p=path to port dir, %n=port name
|
# %n=port name, %v=version, %r=release
|
||||||
# %v=version, %r=release
|
# %p=path to repository
|
||||||
|
|
||||||
### print README information:
|
### print README information:
|
||||||
# readme verbose # (verbose|compact|disabled)
|
# readme verbose # (verbose|compact|disabled)
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
# Makefile.am for prt-get by Johannes Winkelmann
|
|
||||||
|
|
||||||
install-exec-local: install-binPROGRAMS
|
|
||||||
(cd $(DESTDIR)$(bindir); ln -sf prt-get prt-cache)
|
|
||||||
|
|
||||||
bin_PROGRAMS=prt-get
|
|
||||||
|
|
||||||
prt_get_SOURCES= argparser.cpp argparser.h\
|
|
||||||
depresolver.cpp depresolver.h \
|
|
||||||
installtransaction.cpp installtransaction.h \
|
|
||||||
main.cpp \
|
|
||||||
package.cpp package.h \
|
|
||||||
pkgdb.cpp pkgdb.h \
|
|
||||||
prtget.cpp prtget.h \
|
|
||||||
repository.cpp repository.h \
|
|
||||||
stringhelper.cpp stringhelper.h \
|
|
||||||
process.cpp process.h \
|
|
||||||
configuration.cpp configuration.h \
|
|
||||||
signaldispatcher.cpp signaldispatcher.h \
|
|
||||||
lockfile.cpp lockfile.h \
|
|
||||||
file.cpp file.h \
|
|
||||||
locker.cpp locker.h \
|
|
||||||
versioncomparator.cpp versioncomparator.h \
|
|
||||||
datafileparser.cpp datafileparser.h \
|
|
||||||
pg_regex.cpp pg_regex.h
|
|
||||||
|
|
||||||
|
|
||||||
AM_CPPFLAGS = -DSYSCONFDIR=\"$(sysconfdir)\" \
|
|
||||||
-DLOCALSTATEDIR=\"$(localstatedir)\"
|
|
552
src/Makefile.in
552
src/Makefile.in
@ -1,552 +0,0 @@
|
|||||||
# Makefile.in generated by automake 1.12.2 from Makefile.am.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
|
|
||||||
# Makefile.am for prt-get by Johannes Winkelmann
|
|
||||||
|
|
||||||
VPATH = @srcdir@
|
|
||||||
am__make_dryrun = \
|
|
||||||
{ \
|
|
||||||
am__dry=no; \
|
|
||||||
case $$MAKEFLAGS in \
|
|
||||||
*\\[\ \ ]*) \
|
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
|
||||||
*) \
|
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
|
||||||
test $$am__dry = yes; \
|
|
||||||
}
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
|
||||||
install_sh_SCRIPT = $(install_sh) -c
|
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
|
||||||
transform = $(program_transform_name)
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
bin_PROGRAMS = prt-get$(EXEEXT)
|
|
||||||
subdir = src
|
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
|
||||||
$(top_srcdir)/depcomp $(top_srcdir)/mkinstalldirs
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|
||||||
$(ACLOCAL_M4)
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
|
||||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
|
||||||
am_prt_get_OBJECTS = argparser.$(OBJEXT) depresolver.$(OBJEXT) \
|
|
||||||
installtransaction.$(OBJEXT) main.$(OBJEXT) package.$(OBJEXT) \
|
|
||||||
pkgdb.$(OBJEXT) prtget.$(OBJEXT) repository.$(OBJEXT) \
|
|
||||||
stringhelper.$(OBJEXT) process.$(OBJEXT) \
|
|
||||||
configuration.$(OBJEXT) signaldispatcher.$(OBJEXT) \
|
|
||||||
lockfile.$(OBJEXT) file.$(OBJEXT) locker.$(OBJEXT) \
|
|
||||||
versioncomparator.$(OBJEXT) datafileparser.$(OBJEXT) \
|
|
||||||
pg_regex.$(OBJEXT)
|
|
||||||
prt_get_OBJECTS = $(am_prt_get_OBJECTS)
|
|
||||||
prt_get_LDADD = $(LDADD)
|
|
||||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
|
||||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
|
||||||
am__depfiles_maybe = depfiles
|
|
||||||
am__mv = mv -f
|
|
||||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
|
||||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
|
||||||
CXXLD = $(CXX)
|
|
||||||
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
|
|
||||||
-o $@
|
|
||||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
|
||||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
||||||
CCLD = $(CC)
|
|
||||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
|
||||||
SOURCES = $(prt_get_SOURCES)
|
|
||||||
DIST_SOURCES = $(prt_get_SOURCES)
|
|
||||||
am__can_run_installinfo = \
|
|
||||||
case $$AM_UPDATE_INFO_DIR in \
|
|
||||||
n|no|NO) false;; \
|
|
||||||
*) (install-info --version) >/dev/null 2>&1;; \
|
|
||||||
esac
|
|
||||||
ETAGS = etags
|
|
||||||
CTAGS = ctags
|
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AMTAR = @AMTAR@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AWK = @AWK@
|
|
||||||
CC = @CC@
|
|
||||||
CCDEPMODE = @CCDEPMODE@
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
CPP = @CPP@
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
CXX = @CXX@
|
|
||||||
CXXDEPMODE = @CXXDEPMODE@
|
|
||||||
CXXFLAGS = @CXXFLAGS@
|
|
||||||
CYGPATH_W = @CYGPATH_W@
|
|
||||||
DEFS = @DEFS@
|
|
||||||
DEPDIR = @DEPDIR@
|
|
||||||
ECHO_C = @ECHO_C@
|
|
||||||
ECHO_N = @ECHO_N@
|
|
||||||
ECHO_T = @ECHO_T@
|
|
||||||
EGREP = @EGREP@
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
GREP = @GREP@
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBOBJS = @LIBOBJS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
|
||||||
MAKEINFO = @MAKEINFO@
|
|
||||||
MKDIR_P = @MKDIR_P@
|
|
||||||
OBJEXT = @OBJEXT@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|
||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|
||||||
PACKAGE_URL = @PACKAGE_URL@
|
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
||||||
SET_MAKE = @SET_MAKE@
|
|
||||||
SHELL = @SHELL@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
abs_builddir = @abs_builddir@
|
|
||||||
abs_srcdir = @abs_srcdir@
|
|
||||||
abs_top_builddir = @abs_top_builddir@
|
|
||||||
abs_top_srcdir = @abs_top_srcdir@
|
|
||||||
ac_ct_CC = @ac_ct_CC@
|
|
||||||
ac_ct_CXX = @ac_ct_CXX@
|
|
||||||
am__include = @am__include@
|
|
||||||
am__leading_dot = @am__leading_dot@
|
|
||||||
am__quote = @am__quote@
|
|
||||||
am__tar = @am__tar@
|
|
||||||
am__untar = @am__untar@
|
|
||||||
bindir = @bindir@
|
|
||||||
build_alias = @build_alias@
|
|
||||||
builddir = @builddir@
|
|
||||||
datadir = @datadir@
|
|
||||||
datarootdir = @datarootdir@
|
|
||||||
docdir = @docdir@
|
|
||||||
dvidir = @dvidir@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
host_alias = @host_alias@
|
|
||||||
htmldir = @htmldir@
|
|
||||||
includedir = @includedir@
|
|
||||||
infodir = @infodir@
|
|
||||||
install_sh = @install_sh@
|
|
||||||
libdir = @libdir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
localedir = @localedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
mandir = @mandir@
|
|
||||||
mkdir_p = @mkdir_p@
|
|
||||||
oldincludedir = @oldincludedir@
|
|
||||||
pdfdir = @pdfdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
program_transform_name = @program_transform_name@
|
|
||||||
psdir = @psdir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
srcdir = @srcdir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
target_alias = @target_alias@
|
|
||||||
top_build_prefix = @top_build_prefix@
|
|
||||||
top_builddir = @top_builddir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
prt_get_SOURCES = argparser.cpp argparser.h\
|
|
||||||
depresolver.cpp depresolver.h \
|
|
||||||
installtransaction.cpp installtransaction.h \
|
|
||||||
main.cpp \
|
|
||||||
package.cpp package.h \
|
|
||||||
pkgdb.cpp pkgdb.h \
|
|
||||||
prtget.cpp prtget.h \
|
|
||||||
repository.cpp repository.h \
|
|
||||||
stringhelper.cpp stringhelper.h \
|
|
||||||
process.cpp process.h \
|
|
||||||
configuration.cpp configuration.h \
|
|
||||||
signaldispatcher.cpp signaldispatcher.h \
|
|
||||||
lockfile.cpp lockfile.h \
|
|
||||||
file.cpp file.h \
|
|
||||||
locker.cpp locker.h \
|
|
||||||
versioncomparator.cpp versioncomparator.h \
|
|
||||||
datafileparser.cpp datafileparser.h \
|
|
||||||
pg_regex.cpp pg_regex.h
|
|
||||||
|
|
||||||
AM_CPPFLAGS = -DSYSCONFDIR=\"$(sysconfdir)\" \
|
|
||||||
-DLOCALSTATEDIR=\"$(localstatedir)\"
|
|
||||||
|
|
||||||
all: all-am
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
.SUFFIXES: .cpp .o .obj
|
|
||||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
|
||||||
@for dep in $?; do \
|
|
||||||
case '$(am__configure_deps)' in \
|
|
||||||
*$$dep*) \
|
|
||||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
|
||||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
|
||||||
exit 1;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
|
|
||||||
$(am__cd) $(top_srcdir) && \
|
|
||||||
$(AUTOMAKE) --gnu src/Makefile
|
|
||||||
.PRECIOUS: Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
@case '$?' in \
|
|
||||||
*config.status*) \
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
|
||||||
*) \
|
|
||||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
|
||||||
esac;
|
|
||||||
|
|
||||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
|
|
||||||
$(top_srcdir)/configure: $(am__configure_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
$(am__aclocal_m4_deps):
|
|
||||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
|
||||||
if test -n "$$list"; then \
|
|
||||||
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
|
|
||||||
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
|
|
||||||
fi; \
|
|
||||||
for p in $$list; do echo "$$p $$p"; done | \
|
|
||||||
sed 's/$(EXEEXT)$$//' | \
|
|
||||||
while read p p1; do if test -f $$p; \
|
|
||||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
|
||||||
done | \
|
|
||||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
|
||||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
|
||||||
sed 'N;N;N;s,\n, ,g' | \
|
|
||||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
|
||||||
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
|
|
||||||
if ($$2 == $$4) files[d] = files[d] " " $$1; \
|
|
||||||
else { print "f", $$3 "/" $$4, $$1; } } \
|
|
||||||
END { for (d in files) print "f", d, files[d] }' | \
|
|
||||||
while read type dir files; do \
|
|
||||||
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
|
|
||||||
test -z "$$files" || { \
|
|
||||||
echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
|
|
||||||
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
|
|
||||||
} \
|
|
||||||
; done
|
|
||||||
|
|
||||||
uninstall-binPROGRAMS:
|
|
||||||
@$(NORMAL_UNINSTALL)
|
|
||||||
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
|
||||||
files=`for p in $$list; do echo "$$p"; done | \
|
|
||||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
|
||||||
-e 's/$$/$(EXEEXT)/' `; \
|
|
||||||
test -n "$$list" || exit 0; \
|
|
||||||
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
|
|
||||||
cd "$(DESTDIR)$(bindir)" && rm -f $$files
|
|
||||||
|
|
||||||
clean-binPROGRAMS:
|
|
||||||
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
|
||||||
prt-get$(EXEEXT): $(prt_get_OBJECTS) $(prt_get_DEPENDENCIES) $(EXTRA_prt_get_DEPENDENCIES)
|
|
||||||
@rm -f prt-get$(EXEEXT)
|
|
||||||
$(CXXLINK) $(prt_get_OBJECTS) $(prt_get_LDADD) $(LIBS)
|
|
||||||
|
|
||||||
mostlyclean-compile:
|
|
||||||
-rm -f *.$(OBJEXT)
|
|
||||||
|
|
||||||
distclean-compile:
|
|
||||||
-rm -f *.tab.c
|
|
||||||
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/argparser.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/configuration.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/datafileparser.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/depresolver.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/installtransaction.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/locker.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lockfile.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/package.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pg_regex.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkgdb.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prtget.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/repository.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signaldispatcher.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stringhelper.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/versioncomparator.Po@am__quote@
|
|
||||||
|
|
||||||
.cpp.o:
|
|
||||||
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
|
||||||
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
||||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
|
||||||
|
|
||||||
.cpp.obj:
|
|
||||||
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
|
||||||
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
||||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|
||||||
mkid -fID $$unique
|
|
||||||
tags: TAGS
|
|
||||||
|
|
||||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|
||||||
$(TAGS_FILES) $(LISP)
|
|
||||||
set x; \
|
|
||||||
here=`pwd`; \
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|
||||||
shift; \
|
|
||||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
|
||||||
test -n "$$unique" || unique=$$empty_fix; \
|
|
||||||
if test $$# -gt 0; then \
|
|
||||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|
||||||
"$$@" $$unique; \
|
|
||||||
else \
|
|
||||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|
||||||
$$unique; \
|
|
||||||
fi; \
|
|
||||||
fi
|
|
||||||
ctags: CTAGS
|
|
||||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|
||||||
$(TAGS_FILES) $(LISP)
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|
||||||
test -z "$(CTAGS_ARGS)$$unique" \
|
|
||||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|
||||||
$$unique
|
|
||||||
|
|
||||||
GTAGS:
|
|
||||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
|
||||||
&& $(am__cd) $(top_srcdir) \
|
|
||||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
|
||||||
|
|
||||||
cscopelist: $(HEADERS) $(SOURCES) $(LISP)
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP)'; \
|
|
||||||
case "$(srcdir)" in \
|
|
||||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
|
||||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
|
||||||
esac; \
|
|
||||||
for i in $$list; do \
|
|
||||||
if test -f "$$i"; then \
|
|
||||||
echo "$(subdir)/$$i"; \
|
|
||||||
else \
|
|
||||||
echo "$$sdir/$$i"; \
|
|
||||||
fi; \
|
|
||||||
done >> $(top_builddir)/cscope.files
|
|
||||||
|
|
||||||
distclean-tags:
|
|
||||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
list='$(DISTFILES)'; \
|
|
||||||
dist_files=`for file in $$list; do echo $$file; done | \
|
|
||||||
sed -e "s|^$$srcdirstrip/||;t" \
|
|
||||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
|
||||||
case $$dist_files in \
|
|
||||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
|
||||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
|
||||||
sort -u` ;; \
|
|
||||||
esac; \
|
|
||||||
for file in $$dist_files; do \
|
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test -d "$(distdir)/$$file"; then \
|
|
||||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|
||||||
fi; \
|
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
|
||||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
|
||||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|
||||||
fi; \
|
|
||||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
|
||||||
else \
|
|
||||||
test -f "$(distdir)/$$file" \
|
|
||||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
check-am: all-am
|
|
||||||
check: check-am
|
|
||||||
all-am: Makefile $(PROGRAMS)
|
|
||||||
installdirs:
|
|
||||||
for dir in "$(DESTDIR)$(bindir)"; do \
|
|
||||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
|
||||||
done
|
|
||||||
install: install-am
|
|
||||||
install-exec: install-exec-am
|
|
||||||
install-data: install-data-am
|
|
||||||
uninstall: uninstall-am
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
|
|
||||||
installcheck: installcheck-am
|
|
||||||
install-strip:
|
|
||||||
if test -z '$(STRIP)'; then \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
||||||
install; \
|
|
||||||
else \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
||||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
|
||||||
fi
|
|
||||||
mostlyclean-generic:
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
|
||||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
@echo "This command is intended for maintainers to use"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
clean: clean-am
|
|
||||||
|
|
||||||
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
|
|
||||||
|
|
||||||
distclean: distclean-am
|
|
||||||
-rm -rf ./$(DEPDIR)
|
|
||||||
-rm -f Makefile
|
|
||||||
distclean-am: clean-am distclean-compile distclean-generic \
|
|
||||||
distclean-tags
|
|
||||||
|
|
||||||
dvi: dvi-am
|
|
||||||
|
|
||||||
dvi-am:
|
|
||||||
|
|
||||||
html: html-am
|
|
||||||
|
|
||||||
html-am:
|
|
||||||
|
|
||||||
info: info-am
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
|
|
||||||
install-dvi: install-dvi-am
|
|
||||||
|
|
||||||
install-dvi-am:
|
|
||||||
|
|
||||||
install-exec-am: install-binPROGRAMS install-exec-local
|
|
||||||
|
|
||||||
install-html: install-html-am
|
|
||||||
|
|
||||||
install-html-am:
|
|
||||||
|
|
||||||
install-info: install-info-am
|
|
||||||
|
|
||||||
install-info-am:
|
|
||||||
|
|
||||||
install-man:
|
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
|
||||||
|
|
||||||
install-pdf-am:
|
|
||||||
|
|
||||||
install-ps: install-ps-am
|
|
||||||
|
|
||||||
install-ps-am:
|
|
||||||
|
|
||||||
installcheck-am:
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
|
||||||
-rm -rf ./$(DEPDIR)
|
|
||||||
-rm -f Makefile
|
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
|
||||||
|
|
||||||
pdf: pdf-am
|
|
||||||
|
|
||||||
pdf-am:
|
|
||||||
|
|
||||||
ps: ps-am
|
|
||||||
|
|
||||||
ps-am:
|
|
||||||
|
|
||||||
uninstall-am: uninstall-binPROGRAMS
|
|
||||||
|
|
||||||
.MAKE: install-am install-strip
|
|
||||||
|
|
||||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
|
||||||
clean-generic cscopelist ctags distclean distclean-compile \
|
|
||||||
distclean-generic distclean-tags distdir dvi dvi-am html \
|
|
||||||
html-am info info-am install install-am install-binPROGRAMS \
|
|
||||||
install-data install-data-am install-dvi install-dvi-am \
|
|
||||||
install-exec install-exec-am install-exec-local install-html \
|
|
||||||
install-html-am install-info install-info-am install-man \
|
|
||||||
install-pdf install-pdf-am install-ps install-ps-am \
|
|
||||||
install-strip installcheck installcheck-am installdirs \
|
|
||||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
|
||||||
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
|
|
||||||
tags uninstall uninstall-am uninstall-binPROGRAMS
|
|
||||||
|
|
||||||
|
|
||||||
install-exec-local: install-binPROGRAMS
|
|
||||||
(cd $(DESTDIR)$(bindir); ln -sf prt-get prt-cache)
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
||||||
.NOEXPORT:
|
|
@ -30,13 +30,15 @@ Configuration::Configuration( const std::string& configFile,
|
|||||||
m_writeLog( false ),
|
m_writeLog( false ),
|
||||||
m_appendLog( false ),
|
m_appendLog( false ),
|
||||||
m_removeLogOnSuccess( false ),
|
m_removeLogOnSuccess( false ),
|
||||||
|
m_removeLogOnUninst( false ),
|
||||||
m_readmeMode( VERBOSE_README ),
|
m_readmeMode( VERBOSE_README ),
|
||||||
m_runScripts( false ),
|
m_runScripts( false ),
|
||||||
m_preferHigher( false ),
|
m_preferHigher( false ),
|
||||||
m_useRegex( false ),
|
m_useRegex( false ),
|
||||||
m_followSoftdeps( false ),
|
m_followSoftdeps( false ),
|
||||||
m_makeCommand( "" ), m_addCommand( "" ),
|
m_makeCommand( "" ), m_addCommand( "" ),
|
||||||
m_removeCommand( "" ), m_runscriptCommand( "" )
|
m_removeCommand( "" ), m_runscriptCommand( "" ),
|
||||||
|
m_packageDir( "" ), m_compressionMode( "" )
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -84,11 +86,35 @@ bool Configuration::removeLogOnSuccess() const
|
|||||||
return m_removeLogOnSuccess;
|
return m_removeLogOnSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Configuration::removeLogOnUninst() const
|
||||||
|
{
|
||||||
|
return m_removeLogOnUninst;
|
||||||
|
}
|
||||||
|
|
||||||
string Configuration::logFilePattern() const
|
string Configuration::logFilePattern() const
|
||||||
{
|
{
|
||||||
return m_logFilePattern;
|
return m_logFilePattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string Configuration::packageDir() const
|
||||||
|
{
|
||||||
|
string value = "";
|
||||||
|
char line[256];
|
||||||
|
string cmd = "eval " + m_packageDir + " && echo \"$PKGMK_PACKAGE_DIR\"";
|
||||||
|
FILE* p = popen(cmd.c_str(), "r");
|
||||||
|
if (p) {
|
||||||
|
fgets(line, 256, p);
|
||||||
|
value = StringHelper::stripWhiteSpace(line);
|
||||||
|
pclose(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
string Configuration::compressionMode() const
|
||||||
|
{
|
||||||
|
return ( m_compressionMode == "" ) ? "gz" : m_compressionMode;
|
||||||
|
}
|
||||||
|
|
||||||
const list< pair<string, string> >& Configuration::rootList() const
|
const list< pair<string, string> >& Configuration::rootList() const
|
||||||
{
|
{
|
||||||
@ -171,6 +197,13 @@ void Configuration::parseLine(const string& line, bool prepend)
|
|||||||
} else if ( s == "no" ) {
|
} else if ( s == "no" ) {
|
||||||
m_removeLogOnSuccess = false;
|
m_removeLogOnSuccess = false;
|
||||||
}
|
}
|
||||||
|
} else if ( startsWithNoCase( s, "rmlog_on_uninst" ) ) {
|
||||||
|
s = stripWhiteSpace( s.replace( 0, 15, "" ) );
|
||||||
|
if ( s == "yes" ) {
|
||||||
|
m_removeLogOnUninst = true;
|
||||||
|
} else if ( s == "no" ) {
|
||||||
|
m_removeLogOnUninst = false;
|
||||||
|
}
|
||||||
} else if ( startsWithNoCase( s, "readme" ) ) {
|
} else if ( startsWithNoCase( s, "readme" ) ) {
|
||||||
s = stripWhiteSpace( s.replace( 0, 6, "" ) );
|
s = stripWhiteSpace( s.replace( 0, 6, "" ) );
|
||||||
if ( s == "compact" ) {
|
if ( s == "compact" ) {
|
||||||
@ -215,6 +248,32 @@ void Configuration::parseLine(const string& line, bool prepend)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Configuration::parsePkgmkConf(int readOrder)
|
||||||
|
{
|
||||||
|
string fileName = (readOrder == 1) ? "/etc/pkgmk.conf" : "/usr/bin/pkgmk";
|
||||||
|
FILE* fp = fopen(fileName.c_str(), "r");
|
||||||
|
if (!fp)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
string s;
|
||||||
|
char line[256];
|
||||||
|
while (fgets(line, 256, fp)) {
|
||||||
|
s = StringHelper::stripWhiteSpace(getValueBefore(line,'#'));
|
||||||
|
if ( StringHelper::startsWith(s, "PKGMK_COMPRESSION_MODE=") &&
|
||||||
|
(readOrder==1 || m_compressionMode == "") ) {
|
||||||
|
m_compressionMode = s.substr(23);
|
||||||
|
StringHelper::replaceAll(m_compressionMode,"\"","");
|
||||||
|
StringHelper::replaceAll(m_compressionMode,"'","");
|
||||||
|
} else if ( StringHelper::startsWith(s, "PKGMK_PACKAGE_DIR=") &&
|
||||||
|
(readOrder==1 || m_packageDir == "" ) ) {
|
||||||
|
m_packageDir = s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
return ( m_compressionMode != "" && m_packageDir != "" );
|
||||||
|
}
|
||||||
|
|
||||||
bool Configuration::runScripts() const
|
bool Configuration::runScripts() const
|
||||||
{
|
{
|
||||||
return m_runScripts;
|
return m_runScripts;
|
||||||
@ -252,6 +311,6 @@ bool Configuration::useRegex() const
|
|||||||
|
|
||||||
bool Configuration::followSoftdeps() const
|
bool Configuration::followSoftdeps() const
|
||||||
{
|
{
|
||||||
return m_followSoftdeps;
|
return ( m_followSoftdeps || m_parser->followSoftdeps() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ public:
|
|||||||
bool writeLog() const;
|
bool writeLog() const;
|
||||||
bool appendLog() const;
|
bool appendLog() const;
|
||||||
bool removeLogOnSuccess() const;
|
bool removeLogOnSuccess() const;
|
||||||
|
bool removeLogOnUninst() const;
|
||||||
std::string logFilePattern() const;
|
std::string logFilePattern() const;
|
||||||
|
|
||||||
const std::list< std::pair<std::string, std::string> >& rootList() const;
|
const std::list< std::pair<std::string, std::string> >& rootList() const;
|
||||||
@ -45,6 +46,8 @@ public:
|
|||||||
bool useRegex() const;
|
bool useRegex() const;
|
||||||
bool followSoftdeps() const;
|
bool followSoftdeps() const;
|
||||||
|
|
||||||
|
bool parsePkgmkConf(int readOrder);
|
||||||
|
|
||||||
void addConfig(const std::string& line,
|
void addConfig(const std::string& line,
|
||||||
bool configSet,
|
bool configSet,
|
||||||
bool configPrepend);
|
bool configPrepend);
|
||||||
@ -53,6 +56,8 @@ public:
|
|||||||
std::string addCommand() const;
|
std::string addCommand() const;
|
||||||
std::string removeCommand() const;
|
std::string removeCommand() const;
|
||||||
std::string runscriptCommand() const;
|
std::string runscriptCommand() const;
|
||||||
|
std::string packageDir() const;
|
||||||
|
std::string compressionMode() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_configFile;
|
std::string m_configFile;
|
||||||
@ -67,6 +72,7 @@ private:
|
|||||||
bool m_writeLog;
|
bool m_writeLog;
|
||||||
bool m_appendLog;
|
bool m_appendLog;
|
||||||
bool m_removeLogOnSuccess;
|
bool m_removeLogOnSuccess;
|
||||||
|
bool m_removeLogOnUninst;
|
||||||
|
|
||||||
ReadmeMode m_readmeMode;
|
ReadmeMode m_readmeMode;
|
||||||
|
|
||||||
@ -80,6 +86,8 @@ private:
|
|||||||
std::string m_removeCommand;
|
std::string m_removeCommand;
|
||||||
std::string m_runscriptCommand;
|
std::string m_runscriptCommand;
|
||||||
|
|
||||||
|
std::string m_packageDir;
|
||||||
|
std::string m_compressionMode;
|
||||||
|
|
||||||
void parseLine(const std::string& line, bool prepend=false);
|
void parseLine(const std::string& line, bool prepend=false);
|
||||||
};
|
};
|
||||||
|
@ -184,8 +184,19 @@ InstallTransaction::install( const ArgParser* parser,
|
|||||||
|
|
||||||
InstallTransaction::InstallResult result;
|
InstallTransaction::InstallResult result;
|
||||||
InstallInfo info( package->hasReadme() );
|
InstallInfo info( package->hasReadme() );
|
||||||
if ( parser->isTest() ||
|
if ( parser->isTest() ) {
|
||||||
(result = installPackage( package, parser, update, info )) == SUCCESS) {
|
info.preState = ( package->hasPreInstall() &&
|
||||||
|
(parser->execPreInstall() || m_config->runScripts())
|
||||||
|
) ? DEFERRED : NONEXISTENT;
|
||||||
|
info.postState = ( package->hasPostInstall() &&
|
||||||
|
(parser->execPostInstall() || m_config->runScripts())
|
||||||
|
) ? DEFERRED : NONEXISTENT;
|
||||||
|
m_installedPackages.push_back( make_pair(package->path()
|
||||||
|
+ "/" + package->name(), info) );
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((result = installPackage( package, parser, update, info )) == SUCCESS) {
|
||||||
|
|
||||||
m_installedPackages.push_back( make_pair( package->path()
|
m_installedPackages.push_back( make_pair( package->path()
|
||||||
+ "/" + package->name(), info));
|
+ "/" + package->name(), info));
|
||||||
@ -241,7 +252,7 @@ InstallTransaction::installPackage( const Package* package,
|
|||||||
commandName = "prt-cache";
|
commandName = "prt-cache";
|
||||||
}
|
}
|
||||||
|
|
||||||
// - initial information about the package to be build
|
// - initial information about the package to be built
|
||||||
string message;
|
string message;
|
||||||
message = commandName + ": ";
|
message = commandName + ": ";
|
||||||
if (update) {
|
if (update) {
|
||||||
@ -313,10 +324,9 @@ InstallTransaction::installPackage( const Package* package,
|
|||||||
// -- pre-install
|
// -- pre-install
|
||||||
struct stat statData;
|
struct stat statData;
|
||||||
if ((parser->execPreInstall() || m_config->runScripts()) &&
|
if ((parser->execPreInstall() || m_config->runScripts()) &&
|
||||||
stat((pkgdir + "/" + "pre-install").c_str(), &statData) == 0) {
|
stat((parser->installRoot() + pkgdir + "/" + "pre-install").c_str(),
|
||||||
Process preProc( runscriptCommand,
|
&statData) == 0) {
|
||||||
pkgdir + "/" + "pre-install",
|
Process preProc( runscriptCommand, pkgdir + "/" + "pre-install", fdlog );
|
||||||
fdlog );
|
|
||||||
if (preProc.executeShell()) {
|
if (preProc.executeShell()) {
|
||||||
info.preState = FAILED;
|
info.preState = FAILED;
|
||||||
} else {
|
} else {
|
||||||
@ -331,12 +341,18 @@ InstallTransaction::installPackage( const Package* package,
|
|||||||
}
|
}
|
||||||
|
|
||||||
string args = "-d " + parser->pkgmkArgs();
|
string args = "-d " + parser->pkgmkArgs();
|
||||||
|
// do not force a rebuild unless the port was given on the command line
|
||||||
|
if ( parser->pkgmkArgs().find(" -f")!=string::npos &&
|
||||||
|
find(parser->otherArgs().begin(), parser->otherArgs().end(),
|
||||||
|
package->name()) == parser->otherArgs().end() ) {
|
||||||
|
StringHelper::replaceAll(args," -f", "");
|
||||||
|
}
|
||||||
Process makeProc( cmd, args, fdlog );
|
Process makeProc( cmd, args, fdlog );
|
||||||
if ( makeProc.executeShell() ) {
|
if ( makeProc.executeShell() ) {
|
||||||
result = PKGMK_FAILURE;
|
result = PKGMK_FAILURE;
|
||||||
} else {
|
} else {
|
||||||
// -- update
|
// -- update
|
||||||
string pkgdest = getPkgmkPackageDir();
|
string pkgdest = m_config->packageDir();
|
||||||
if ( pkgdest != "" ) {
|
if ( pkgdest != "" ) {
|
||||||
// TODO: don't manipulate pkgdir
|
// TODO: don't manipulate pkgdir
|
||||||
pkgdir = pkgdest;
|
pkgdir = pkgdest;
|
||||||
@ -374,7 +390,7 @@ InstallTransaction::installPackage( const Package* package,
|
|||||||
args +=
|
args +=
|
||||||
package->name() + "#" +
|
package->name() + "#" +
|
||||||
package->version() + "-" +
|
package->version() + "-" +
|
||||||
package->release() + ".pkg.tar." + getPkgmkCompressionMode();
|
package->release() + ".pkg.tar." + m_config->compressionMode();
|
||||||
|
|
||||||
|
|
||||||
// - inform the user about what's happening
|
// - inform the user about what's happening
|
||||||
@ -421,14 +437,12 @@ InstallTransaction::installPackage( const Package* package,
|
|||||||
} else {
|
} else {
|
||||||
// exec post install
|
// exec post install
|
||||||
if ((parser->execPostInstall() || m_config->runScripts() ) &&
|
if ((parser->execPostInstall() || m_config->runScripts() ) &&
|
||||||
stat((package->path() + "/" + package->name() +
|
stat((parser->installRoot() + "/" + package->path() + "/"
|
||||||
"/" + "post-install").c_str(), &statData)
|
+ package->name() + "/" + "post-install").c_str(),
|
||||||
== 0) {
|
&statData) == 0) {
|
||||||
// Work around the pkgdir variable change
|
// Work around the pkgdir variable change
|
||||||
Process postProc( runscriptCommand,
|
Process postProc( runscriptCommand, package->path() + "/"
|
||||||
package->path() + "/" + package->name()+
|
+ package->name() + "/post-install", fdlog );
|
||||||
"/" + "post-install",
|
|
||||||
fdlog );
|
|
||||||
if (postProc.executeShell()) {
|
if (postProc.executeShell()) {
|
||||||
info.postState = FAILED;
|
info.postState = FAILED;
|
||||||
} else {
|
} else {
|
||||||
@ -470,7 +484,6 @@ bool InstallTransaction::calculateDependencies()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<string> treeWalk;
|
|
||||||
list< pair<string, const Package*> >::const_iterator it =
|
list< pair<string, const Package*> >::const_iterator it =
|
||||||
m_packages.begin();
|
m_packages.begin();
|
||||||
for ( ; it != m_packages.end(); ++it ) {
|
for ( ; it != m_packages.end(); ++it ) {
|
||||||
@ -516,8 +529,8 @@ void InstallTransaction::checkDependencies( bool greedy,
|
|||||||
|
|
||||||
if ( index == -1 ) {
|
if ( index == -1 ) {
|
||||||
index = m_depList.size();
|
index = m_depList.size();
|
||||||
if (( not greedy ) or ( m_pkgDB->isInstalled(package->name(),false) )) {
|
if ( (!greedy) or isRequired( package->name() ) ) {
|
||||||
m_depList.push_back( package->name() );
|
m_depList.push_back( package->name() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -545,41 +558,31 @@ void InstallTransaction::checkDependencies( bool greedy,
|
|||||||
list<string>::iterator it = deps.begin();
|
list<string>::iterator it = deps.begin();
|
||||||
for ( ; it != deps.end(); ++it ) {
|
for ( ; it != deps.end(); ++it ) {
|
||||||
string dep = *it;
|
string dep = *it;
|
||||||
if ( !dep.empty() ) {
|
if ( dep.empty() ) { continue; }
|
||||||
string::size_type pos = dep.find_last_of( '/' );
|
const Package* p = m_repo->getPackage( dep );
|
||||||
if ( pos != string::npos && (pos+1) < dep.length() ) {
|
if ( p ) {
|
||||||
dep = dep.substr( pos + 1 );
|
checkDependencies( greedy, p, index );
|
||||||
}
|
} else {
|
||||||
const Package* p = m_repo->getPackage( dep );
|
m_missingPackages.
|
||||||
if ( p ) {
|
push_back( make_pair( dep, package->name() ) );
|
||||||
checkDependencies( greedy, p, index );
|
|
||||||
} else {
|
|
||||||
m_missingPackages.
|
|
||||||
push_back( make_pair( dep, package->name() ) );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( (m_config->followSoftdeps()) and (!package->optionals().empty()) ) {
|
if ( (m_config->followSoftdeps()) and (!package->optionals().empty()) ) {
|
||||||
list<string> softDeps;
|
list<string> optionals;
|
||||||
split( package->optionals(), ',', softDeps );
|
split( package->optionals(), ',', optionals );
|
||||||
list<string>::iterator it = softDeps.begin();
|
list<string>::iterator it = optionals.begin();
|
||||||
for ( ; it != softDeps.end(); ++it ) {
|
for ( ; it != optionals.end(); ++it ) {
|
||||||
string softdep = *it;
|
string softdep = *it;
|
||||||
if ( !softdep.empty() ) {
|
if ( softdep.empty() ) { continue; }
|
||||||
string::size_type pos = softdep.find_last_of( '/' );
|
if ( isRequired(softdep) ) {
|
||||||
if ( pos != string::npos && (pos+1) < softdep.length() ) {
|
const Package* p = m_repo->getPackage( softdep );
|
||||||
softdep = softdep.substr( pos + 1 );
|
if ( p ) {
|
||||||
|
checkDependencies( true, p, index );
|
||||||
|
} else {
|
||||||
|
m_missingPackages.
|
||||||
|
push_back( make_pair( softdep, package->name() ) );
|
||||||
}
|
}
|
||||||
if ( m_pkgDB->isInstalled(softdep, false) or isRequested(softdep) ) {
|
|
||||||
const Package* p = m_repo->getPackage( softdep );
|
|
||||||
if ( p ) {
|
|
||||||
checkDependencies( true, p, index );
|
|
||||||
} else {
|
|
||||||
m_missingPackages.
|
|
||||||
push_back( make_pair( softdep, package->name() ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -590,12 +593,13 @@ void InstallTransaction::checkDependencies( bool greedy,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Method to determine whether a package was passed on the command line
|
Method to determine whether a soft dependency should be part of the transaction
|
||||||
*/
|
*/
|
||||||
bool InstallTransaction::isRequested(const string pname) {
|
bool InstallTransaction::isRequired(const string &pname) {
|
||||||
|
if ( m_pkgDB->isInstalled(pname,false) ) { return true; }
|
||||||
list< pair<string, const Package*> >::iterator it = m_packages.begin();
|
list< pair<string, const Package*> >::iterator it = m_packages.begin();
|
||||||
for ( ; it != m_packages.end(); ++it ) {
|
for ( ; it != m_packages.end(); ++it ) {
|
||||||
if ( it->first == pname ) { return true; }
|
if ( pname == it->first ) { return true; }
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -669,7 +673,7 @@ InstallTransaction::calcDependencies( )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( !validPackages ) {
|
if ( !validPackages ) {
|
||||||
return PACKAGE_NOT_FOUND;
|
return NO_PACKAGE_GIVEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !calculateDependencies() ) {
|
if ( !calculateDependencies() ) {
|
||||||
@ -679,64 +683,7 @@ InstallTransaction::calcDependencies( )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* getPkgDest assumes that you're in the build directory already
|
|
||||||
*/
|
|
||||||
string InstallTransaction::getPkgmkSetting(const string& setting)
|
|
||||||
{
|
|
||||||
string value = "";
|
|
||||||
value = getPkgmkSettingFromFile(setting, "/etc/pkgmk.conf");
|
|
||||||
if (value.size() == 0) {
|
|
||||||
value = getPkgmkSettingFromFile(setting, "/usr/bin/pkgmk");
|
|
||||||
}
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
string InstallTransaction::getPkgmkSettingFromFile(const string& setting, const string& fileName)
|
|
||||||
{
|
|
||||||
FILE* fp = fopen(fileName.c_str(), "r");
|
|
||||||
if (!fp)
|
|
||||||
return "";
|
|
||||||
|
|
||||||
string candidate;
|
|
||||||
string s;
|
|
||||||
char line[256];
|
|
||||||
while (fgets(line, 256, fp)) {
|
|
||||||
s = StringHelper::stripWhiteSpace(line);
|
|
||||||
if (StringHelper::startsWith(s, setting + "=")) {
|
|
||||||
candidate = s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fclose(fp);
|
|
||||||
|
|
||||||
string value = "";
|
|
||||||
if (candidate.length() > 0) {
|
|
||||||
string cmd = "eval " + candidate + " && echo $" + setting;
|
|
||||||
FILE* p = popen(cmd.c_str(), "r");
|
|
||||||
if (p) {
|
|
||||||
fgets(line, 256, p);
|
|
||||||
value = StringHelper::stripWhiteSpace(line);
|
|
||||||
fclose(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
const list<string>& InstallTransaction::ignoredPackages() const
|
const list<string>& InstallTransaction::ignoredPackages() const
|
||||||
{
|
{
|
||||||
return m_ignoredPackages;
|
return m_ignoredPackages;
|
||||||
}
|
}
|
||||||
|
|
||||||
string InstallTransaction::getPkgmkPackageDir()
|
|
||||||
{
|
|
||||||
return getPkgmkSetting("PKGMK_PACKAGE_DIR");
|
|
||||||
}
|
|
||||||
|
|
||||||
string InstallTransaction::getPkgmkCompressionMode()
|
|
||||||
{
|
|
||||||
string value = getPkgmkSetting("PKGMK_COMPRESSION_MODE");
|
|
||||||
|
|
||||||
return value.size() ? value : "gz";
|
|
||||||
}
|
|
||||||
|
@ -56,9 +56,7 @@ public:
|
|||||||
SUCCESS, /*!< yeah, success */
|
SUCCESS, /*!< yeah, success */
|
||||||
NO_PACKAGE_GIVEN, /*!< no package give to install */
|
NO_PACKAGE_GIVEN, /*!< no package give to install */
|
||||||
PACKAGE_NOT_FOUND, /*!< package not found */
|
PACKAGE_NOT_FOUND, /*!< package not found */
|
||||||
PKGMK_EXEC_ERROR, /*!< can't execute pkgmk */
|
|
||||||
PKGMK_FAILURE, /*!< error while pkgmk */
|
PKGMK_FAILURE, /*!< error while pkgmk */
|
||||||
PKGADD_EXEC_ERROR, /*!< can't execute pkgadd */
|
|
||||||
PKGDEST_ERROR, /*!< can't change to PKGDEST */
|
PKGDEST_ERROR, /*!< can't change to PKGDEST */
|
||||||
PKGADD_FAILURE, /*!< error while pkgadd */
|
PKGADD_FAILURE, /*!< error while pkgadd */
|
||||||
CYCLIC_DEPEND, /*!< cyclic dependencies found */
|
CYCLIC_DEPEND, /*!< cyclic dependencies found */
|
||||||
@ -69,6 +67,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum State {
|
enum State {
|
||||||
|
DEFERRED,
|
||||||
EXEC_SUCCESS,
|
EXEC_SUCCESS,
|
||||||
FAILED,
|
FAILED,
|
||||||
NONEXISTENT
|
NONEXISTENT
|
||||||
@ -97,9 +96,6 @@ public:
|
|||||||
const list< pair<string,string> >& missing() const;
|
const list< pair<string,string> >& missing() const;
|
||||||
const list< pair<string, InstallInfo> >& installError() const;
|
const list< pair<string, InstallInfo> >& installError() const;
|
||||||
|
|
||||||
static string getPkgmkPackageDir();
|
|
||||||
static string getPkgmkCompressionMode();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool calculateDependencies();
|
bool calculateDependencies();
|
||||||
void checkDependencies( bool greedy, const Package* package, int depends=-1 );
|
void checkDependencies( bool greedy, const Package* package, int depends=-1 );
|
||||||
@ -108,11 +104,7 @@ private:
|
|||||||
const ArgParser* parser,
|
const ArgParser* parser,
|
||||||
bool update,
|
bool update,
|
||||||
InstallInfo& info ) const;
|
InstallInfo& info ) const;
|
||||||
bool isRequested(const string pname);
|
bool isRequired(const string &pname);
|
||||||
|
|
||||||
static string getPkgmkSetting(const string& setting);
|
|
||||||
static string getPkgmkSettingFromFile(const string& setting,
|
|
||||||
const string& fileName);
|
|
||||||
|
|
||||||
PkgDB* m_pkgDB;
|
PkgDB* m_pkgDB;
|
||||||
DepResolver m_resolver;
|
DepResolver m_resolver;
|
||||||
|
@ -124,7 +124,7 @@ const string& Package::maintainer() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*! \return whether or not this package has a readme file */
|
/*! \return whether or not this package has a readme file */
|
||||||
const bool Package::hasReadme() const
|
bool Package::hasReadme() const
|
||||||
{
|
{
|
||||||
load();
|
load();
|
||||||
return m_data->hasReadme;
|
return m_data->hasReadme;
|
||||||
@ -137,12 +137,12 @@ string Package::versionReleaseString() const
|
|||||||
return m_data->versionReleaseString;
|
return m_data->versionReleaseString;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool Package::hasPreInstall() const
|
bool Package::hasPreInstall() const
|
||||||
{
|
{
|
||||||
return m_data->hasPreInstall;
|
return m_data->hasPreInstall;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool Package::hasPostInstall() const
|
bool Package::hasPostInstall() const
|
||||||
{
|
{
|
||||||
return m_data->hasPostInstall;
|
return m_data->hasPostInstall;
|
||||||
}
|
}
|
||||||
@ -213,50 +213,17 @@ void Package::load() const
|
|||||||
|
|
||||||
StringHelper::replaceAll( softdeps, " ", "," );
|
StringHelper::replaceAll( softdeps, " ", "," );
|
||||||
StringHelper::replaceAll( softdeps, ",,", "," );
|
StringHelper::replaceAll( softdeps, ",,", "," );
|
||||||
|
StringHelper::replaceAll( softdeps, "(", "" );
|
||||||
|
StringHelper::replaceAll( softdeps, ")", "" );
|
||||||
|
|
||||||
// TODO: decide which one to use
|
|
||||||
#if 0
|
|
||||||
// remove commented out packages
|
|
||||||
list<string> softDepList = StringHelper::split( softdeps, ',' );
|
|
||||||
list<string>::iterator it = deps.begin();
|
|
||||||
for ( ; it != softDepList.end(); ++it ) {
|
|
||||||
if ( (*it)[0] == '#' ) {
|
|
||||||
cerr << "Commented dep: " << *it << endl;
|
|
||||||
} else {
|
|
||||||
if ( it != softDepsList.begin() ) {
|
|
||||||
m_data->optionals += ",";
|
|
||||||
}
|
|
||||||
m_data->optionals += *it;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
m_data->optionals = softdeps;
|
m_data->optionals = softdeps;
|
||||||
#endif
|
|
||||||
} else if ( startsWithNoCase( line, "dep" ) ) {
|
} else if ( startsWithNoCase( line, "dep" ) ) {
|
||||||
string depends = stripWhiteSpace( getValue( line, ':' ) );
|
string depends = stripWhiteSpace( getValue( line, ':' ) );
|
||||||
|
|
||||||
StringHelper::replaceAll( depends, " ", "," );
|
StringHelper::replaceAll( depends, " ", "," );
|
||||||
StringHelper::replaceAll( depends, ",,", "," );
|
StringHelper::replaceAll( depends, ",,", "," );
|
||||||
|
|
||||||
// TODO: decide which one to use
|
|
||||||
#if 0
|
|
||||||
// remove commented out packages
|
|
||||||
list<string> deps = StringHelper::split( depends, ',' );
|
|
||||||
list<string>::iterator it = deps.begin();
|
|
||||||
for ( ; it != deps.end(); ++it ) {
|
|
||||||
if ( (*it)[0] == '#' ) {
|
|
||||||
cerr << "Commented dep: " << *it << endl;
|
|
||||||
} else {
|
|
||||||
if ( it != deps.begin() ) {
|
|
||||||
m_data->depends += ",";
|
|
||||||
}
|
|
||||||
m_data->depends += *it;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
m_data->depends = depends;
|
m_data->depends = depends;
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -345,11 +312,9 @@ void Package::expandShellCommands(std::string& input,
|
|||||||
pos = 0;
|
pos = 0;
|
||||||
while ((pos = input.find(startTag[i], pos)) != string::npos) {
|
while ((pos = input.find(startTag[i], pos)) != string::npos) {
|
||||||
|
|
||||||
if (unameBuf.release) {
|
input = replaceAll(input,
|
||||||
input = replaceAll(input,
|
startTag[i] + "uname -r" + endTag[i],
|
||||||
startTag[i] + "uname -r" + endTag[i],
|
unameBuf.release);
|
||||||
unameBuf.release);
|
|
||||||
}
|
|
||||||
|
|
||||||
dpos = input.find(startTag[i] + "date");
|
dpos = input.find(startTag[i] + "date");
|
||||||
if (dpos != string::npos) {
|
if (dpos != string::npos) {
|
||||||
|
@ -52,9 +52,9 @@ public:
|
|||||||
const std::string& url() const;
|
const std::string& url() const;
|
||||||
const std::string& optionals() const;
|
const std::string& optionals() const;
|
||||||
const std::string& maintainer() const;
|
const std::string& maintainer() const;
|
||||||
const bool hasReadme() const;
|
bool hasReadme() const;
|
||||||
const bool hasPreInstall() const;
|
bool hasPreInstall() const;
|
||||||
const bool hasPostInstall() const;
|
bool hasPostInstall() const;
|
||||||
|
|
||||||
std::string versionReleaseString() const;
|
std::string versionReleaseString() const;
|
||||||
|
|
||||||
|
@ -68,9 +68,9 @@ int Process::execute()
|
|||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
if ( m_fdlog > 0 ) {
|
if ( m_fdlog > 0 ) {
|
||||||
status = execLog(argc, argv);
|
status = execLog(argv);
|
||||||
} else {
|
} else {
|
||||||
status = exec(argc, argv);
|
status = exec(argv);
|
||||||
}
|
}
|
||||||
delete [] argv;
|
delete [] argv;
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ int Process::execute()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Process::execLog(const int argc, char** argv)
|
int Process::execLog(char** argv)
|
||||||
{
|
{
|
||||||
int status = 0;
|
int status = 0;
|
||||||
int fdpipe[2];
|
int fdpipe[2];
|
||||||
@ -123,7 +123,7 @@ int Process::execLog(const int argc, char** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Process::exec(const int argc, char** argv)
|
int Process::exec(char** argv)
|
||||||
{
|
{
|
||||||
int status = 0;
|
int status = 0;
|
||||||
pid_t pid = fork();
|
pid_t pid = fork();
|
||||||
|
@ -32,8 +32,8 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
int exec(const int argc, char** argv);
|
int exec(char** argv);
|
||||||
int execLog(const int argc, char** argv);
|
int execLog(char** argv);
|
||||||
|
|
||||||
int execShell(const char* shell);
|
int execShell(const char* shell);
|
||||||
int execShellLog(const char* shell);
|
int execShellLog(const char* shell);
|
||||||
|
138
src/prtget.cpp
138
src/prtget.cpp
@ -70,8 +70,8 @@ PrtGet::PrtGet( const ArgParser* parser )
|
|||||||
m_pkgDB = new PkgDB(m_parser->installRoot());
|
m_pkgDB = new PkgDB(m_parser->installRoot());
|
||||||
readConfig();
|
readConfig();
|
||||||
|
|
||||||
m_useRegex = m_config->useRegex() || m_parser->useRegex();
|
m_useRegex = ( m_config->useRegex() || m_parser->useRegex() );
|
||||||
m_followSoftdeps = m_config->followSoftdeps() || m_parser->followSoftdeps();
|
m_followSoftdeps = ( m_config->followSoftdeps() || m_parser->followSoftdeps() );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! destruct PrtGet object */
|
/*! destruct PrtGet object */
|
||||||
@ -289,8 +289,13 @@ void PrtGet::listShadowed()
|
|||||||
StringHelper::replaceAll(output, "%p2", p2->path() + "/" + p2->name());
|
StringHelper::replaceAll(output, "%p2", p2->path() + "/" + p2->name());
|
||||||
StringHelper::replaceAll(output, "%v1", p1->versionReleaseString());
|
StringHelper::replaceAll(output, "%v1", p1->versionReleaseString());
|
||||||
StringHelper::replaceAll(output, "%v2", p2->versionReleaseString());
|
StringHelper::replaceAll(output, "%v2", p2->versionReleaseString());
|
||||||
|
StringHelper::replaceAll(output, "%M1", p1->maintainer());
|
||||||
|
StringHelper::replaceAll(output, "%M2", p2->maintainer());
|
||||||
|
StringHelper::replaceAll(output, "%u1", p1->url());
|
||||||
|
StringHelper::replaceAll(output, "%u2", p2->url());
|
||||||
|
|
||||||
StringHelper::replaceAll(output, "\\n", "\n");
|
StringHelper::replaceAll(output, "\\n", "\n");
|
||||||
|
StringHelper::replaceAll(output, "\\t", "\t");
|
||||||
cout << output;
|
cout << output;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -609,23 +614,29 @@ void PrtGet::install( bool update, bool dependencies )
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for ( ; it != args.end(); ++it ) {
|
for ( ; it != args.end(); ++it ) {
|
||||||
string s = *it;
|
string s = *it;
|
||||||
if ( m_pkgDB->isInstalled( s ) ) {
|
if ( m_pkgDB->isInstalled( s ) ) {
|
||||||
// pkgadd will fail on these, since it won't be given the -u flag
|
// pkgadd will fail on these, since it won't be given the -u flag
|
||||||
invalidArgs.push_back( s );
|
invalidArgs.push_back( s );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( invalidArgs.size() > 0 ) {
|
if ( (invalidArgs.size() > 0 && update) ||
|
||||||
string attemptedOp = ( update ) ? "update" : "install";
|
(invalidArgs.size() == args.size() && !update) ) {
|
||||||
attemptedOp += " the following packages ";
|
string invalidHeader = "-- Packages installed before this run (ignored)";
|
||||||
attemptedOp += ( update ) ? "(not yet installed)" : "(already installed)";
|
if (update) { invalidHeader = "-- Cannot update the following (not yet installed)"; }
|
||||||
cout << "cannot "<< attemptedOp <<endl;
|
if (m_parser->isTest()) {
|
||||||
|
cout << "*** prt-get: test mode" << endl << endl;
|
||||||
|
}
|
||||||
|
cout << invalidHeader << endl;
|
||||||
list<string>::const_iterator it = invalidArgs.begin();
|
list<string>::const_iterator it = invalidArgs.begin();
|
||||||
for ( ; it != invalidArgs.end(); ++it ) {
|
for ( ; it != invalidArgs.end(); ++it ) {
|
||||||
cout << *it << endl;
|
cout << *it << endl;
|
||||||
}
|
}
|
||||||
|
if (m_parser->isTest()) {
|
||||||
|
cout << "*** prt-get: test mode end" << endl;
|
||||||
|
}
|
||||||
m_returnValue = PG_GENERAL_ERROR ;
|
m_returnValue = PG_GENERAL_ERROR ;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -644,18 +655,17 @@ void PrtGet::install( bool update, bool dependencies )
|
|||||||
cerr << "prt-get: cyclic dependencies found" << endl;
|
cerr << "prt-get: cyclic dependencies found" << endl;
|
||||||
m_returnValue = PG_GENERAL_ERROR;
|
m_returnValue = PG_GENERAL_ERROR;
|
||||||
return;
|
return;
|
||||||
} else if ( result == InstallTransaction::PACKAGE_NOT_FOUND ) {
|
|
||||||
warnPackageNotFound(depTransaction);
|
|
||||||
m_returnValue = PG_GENERAL_ERROR;
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
const list<string>& depRef = depTransaction.dependencies();
|
list<string> deps = depTransaction.dependencies();
|
||||||
list<string>::const_iterator it = depRef.begin();
|
const list< pair<string, string> >& depMissing = depTransaction.missing();
|
||||||
|
list< pair<string,string> >::const_iterator it = depMissing.begin();
|
||||||
|
|
||||||
list<string> deps;
|
// ensure that missing ports are retained for the post-transaction
|
||||||
for (; it != depRef.end(); ++it) {
|
// summary (FS#1843). Exempt any ports that were installed manually
|
||||||
if (!m_pkgDB->isInstalled(*it)) {
|
// or from a repo that has since been deactivated.
|
||||||
deps.push_back(*it);
|
for (; it != depMissing.end(); ++it) {
|
||||||
|
if (! m_pkgDB->isInstalled(it->first)) {
|
||||||
|
deps.push_back(it->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -692,11 +702,6 @@ void PrtGet::executeTransaction( InstallTransaction& transaction,
|
|||||||
case InstallTransaction::PACKAGE_NOT_FOUND:
|
case InstallTransaction::PACKAGE_NOT_FOUND:
|
||||||
cout << m_appName << ": package(s) not found" << endl;
|
cout << m_appName << ": package(s) not found" << endl;
|
||||||
break;
|
break;
|
||||||
case InstallTransaction::PKGMK_EXEC_ERROR:
|
|
||||||
cout << m_appName << " couldn't excecute pkgmk "
|
|
||||||
<< "(or alternative command). "
|
|
||||||
<< "Make sure it's installed properly" << endl;
|
|
||||||
break;
|
|
||||||
case InstallTransaction::PKGMK_FAILURE:
|
case InstallTransaction::PKGMK_FAILURE:
|
||||||
cout << m_appName << ": error while " << command[0] << endl;
|
cout << m_appName << ": error while " << command[0] << endl;
|
||||||
break;
|
break;
|
||||||
@ -704,13 +709,9 @@ void PrtGet::executeTransaction( InstallTransaction& transaction,
|
|||||||
cout << m_appName << ": no package specified for "
|
cout << m_appName << ": no package specified for "
|
||||||
<< command[0] << endl;
|
<< command[0] << endl;
|
||||||
break;
|
break;
|
||||||
case InstallTransaction::PKGADD_EXEC_ERROR:
|
|
||||||
cout << m_appName << " couldn't excecute pkgadd. "
|
|
||||||
<< "Make sure it's installed properly" << endl;
|
|
||||||
break;
|
|
||||||
case InstallTransaction::PKGDEST_ERROR:
|
case InstallTransaction::PKGDEST_ERROR:
|
||||||
cout << m_appName << ": error changing to PKGDEST directory "
|
cout << m_appName << ": error changing to PKGDEST directory "
|
||||||
<< transaction.getPkgmkPackageDir() << endl;
|
<< m_config->packageDir() << endl;
|
||||||
failed = true;
|
failed = true;
|
||||||
break;
|
break;
|
||||||
case InstallTransaction::PKGADD_FAILURE:
|
case InstallTransaction::PKGADD_FAILURE:
|
||||||
@ -857,6 +858,10 @@ void PrtGet::readConfig()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!m_config->parsePkgmkConf(1)) {
|
||||||
|
m_config->parsePkgmkConf(0);
|
||||||
|
}
|
||||||
|
|
||||||
const list< pair<char*, ArgParser::ConfigArgType> >& configData =
|
const list< pair<char*, ArgParser::ConfigArgType> >& configData =
|
||||||
m_parser->configData();
|
m_parser->configData();
|
||||||
list< pair<char*, ArgParser::ConfigArgType> >::const_iterator it =
|
list< pair<char*, ArgParser::ConfigArgType> >::const_iterator it =
|
||||||
@ -1177,7 +1182,7 @@ void PrtGet::evaluateResult( InstallTransaction& transaction,
|
|||||||
|
|
||||||
cout << endl;
|
cout << endl;
|
||||||
|
|
||||||
if ( errors == 0 && !interrupted ) {
|
if ( inst.size() && errors == 0 && !interrupted ) {
|
||||||
cout << "prt-get: " << command[1] << " successfully" << endl;
|
cout << "prt-get: " << command[1] << " successfully" << endl;
|
||||||
} else {
|
} else {
|
||||||
m_returnValue = PG_PARTIAL_INSTALL_ERROR;
|
m_returnValue = PG_PARTIAL_INSTALL_ERROR;
|
||||||
@ -1186,20 +1191,21 @@ void PrtGet::evaluateResult( InstallTransaction& transaction,
|
|||||||
|
|
||||||
void PrtGet::reportPrePost(const InstallTransaction::InstallInfo& info) {
|
void PrtGet::reportPrePost(const InstallTransaction::InstallInfo& info) {
|
||||||
if (info.preState != InstallTransaction::NONEXISTENT) {
|
if (info.preState != InstallTransaction::NONEXISTENT) {
|
||||||
string preString = "failed";
|
string preString =
|
||||||
if (info.preState == InstallTransaction::EXEC_SUCCESS) {
|
(info.preState == InstallTransaction::FAILED) ? "failed" : "ok";
|
||||||
preString = "ok";
|
if (info.preState == InstallTransaction::DEFERRED) {
|
||||||
|
preString = "deferred";
|
||||||
}
|
}
|
||||||
cout << " [pre: " << preString << "]";
|
cout << " [pre: " << preString << "]";
|
||||||
}
|
}
|
||||||
if ( info.postState != InstallTransaction::NONEXISTENT) {
|
if ( info.postState != InstallTransaction::NONEXISTENT) {
|
||||||
string postString = "failed";
|
string postString =
|
||||||
if (info.postState == InstallTransaction::EXEC_SUCCESS){
|
(info.postState == InstallTransaction::FAILED) ? "failed" : "ok";
|
||||||
postString = "ok";
|
if (info.postState == InstallTransaction::DEFERRED) {
|
||||||
|
postString = "deferred";
|
||||||
}
|
}
|
||||||
cout << " [post: " << postString << "]";
|
cout << " [post: " << postString << "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! create a cache */
|
/*! create a cache */
|
||||||
@ -1268,7 +1274,7 @@ void PrtGet::printf()
|
|||||||
assertExactArgCount(1);
|
assertExactArgCount(1);
|
||||||
|
|
||||||
initRepo();
|
initRepo();
|
||||||
string filter = m_parser->useRegex() ? "." : "*";
|
string filter = m_useRegex ? ".*" : "*";
|
||||||
if ( m_parser->hasFilter() ) {
|
if ( m_parser->hasFilter() ) {
|
||||||
filter = m_parser->filter();
|
filter = m_parser->filter();
|
||||||
}
|
}
|
||||||
@ -1676,7 +1682,7 @@ void PrtGet::current()
|
|||||||
m_returnValue = 1;
|
m_returnValue = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SignalHandler::HandlerResult PrtGet::handleSignal( int signal )
|
SignalHandler::HandlerResult PrtGet::handleSignal()
|
||||||
{
|
{
|
||||||
// TODO: second argument could also be true:
|
// TODO: second argument could also be true:
|
||||||
// TODO: kill installtransaction
|
// TODO: kill installtransaction
|
||||||
@ -1926,12 +1932,17 @@ void PrtGet::remove()
|
|||||||
{
|
{
|
||||||
assertMinArgCount(1);
|
assertMinArgCount(1);
|
||||||
|
|
||||||
|
bool needRepo = false;
|
||||||
list<string> removed;
|
list<string> removed;
|
||||||
list<string> failed;
|
list<string> failed;
|
||||||
list<string> notInstalled;
|
list<string> notInstalled;
|
||||||
|
|
||||||
if ( m_parser->isTest() ) {
|
if ( m_parser->isTest() ) {
|
||||||
cout << "*** " << m_appName << ": test mode" << endl;
|
cout << "*** " << m_appName << ": test mode" << endl;
|
||||||
|
} else if ( m_config->removeLogOnUninst()
|
||||||
|
&& m_config->logFilePattern().find("%p") != string::npos ) {
|
||||||
|
needRepo = true;
|
||||||
|
initRepo();
|
||||||
}
|
}
|
||||||
|
|
||||||
string command = InstallTransaction::PKGRM_DEFAULT_COMMAND;
|
string command = InstallTransaction::PKGRM_DEFAULT_COMMAND;
|
||||||
@ -1943,20 +1954,48 @@ void PrtGet::remove()
|
|||||||
list<char*>::const_iterator it = args.begin();
|
list<char*>::const_iterator it = args.begin();
|
||||||
for ( ; it != args.end(); ++it ) {
|
for ( ; it != args.end(); ++it ) {
|
||||||
if (m_pkgDB->isInstalled(*it)) {
|
if (m_pkgDB->isInstalled(*it)) {
|
||||||
// TODO: prettify
|
string rm_args = "";
|
||||||
string args = "";
|
|
||||||
if (m_parser->installRoot() != "") {
|
if (m_parser->installRoot() != "") {
|
||||||
args = "-r " + m_parser->installRoot() + " ";
|
rm_args = "-r " + m_parser->installRoot() + " ";
|
||||||
}
|
}
|
||||||
args += (m_parser->pkgrmArgs() + " " + *it);
|
rm_args += (m_parser->pkgrmArgs() + " " + *it);
|
||||||
|
|
||||||
Process proc(command, args);
|
Process proc(command, rm_args);
|
||||||
if (m_parser->isTest() || proc.executeShell() == 0) {
|
if (m_parser->isTest() || proc.executeShell() == 0) {
|
||||||
removed.push_back(*it);
|
removed.push_back(*it);
|
||||||
if (m_locker.isLocked(*it)) {
|
if (m_locker.isLocked(*it)) {
|
||||||
m_locker.unlock(*it);
|
m_locker.unlock(*it);
|
||||||
m_locker.store();
|
m_locker.store();
|
||||||
}
|
}
|
||||||
|
if (m_config->removeLogOnUninst() && !m_parser->isTest()) {
|
||||||
|
string rm_logFile = m_config->logFilePattern();
|
||||||
|
bool doneSubs=false;
|
||||||
|
const string pkgname = *it;
|
||||||
|
StringHelper::replaceAll( rm_logFile, "%n", pkgname );
|
||||||
|
const string rm_ver = m_pkgDB->getPackageVersion( pkgname );
|
||||||
|
size_t pos = rm_ver.find_last_of('-');
|
||||||
|
if (pos != string::npos) {
|
||||||
|
const string rm_v = rm_ver.substr(0,pos);
|
||||||
|
const string rm_r = rm_ver.substr(pos+1);
|
||||||
|
StringHelper::replaceAll( rm_logFile, "%v", rm_v );
|
||||||
|
StringHelper::replaceAll( rm_logFile, "%r", rm_r );
|
||||||
|
}
|
||||||
|
if (! needRepo) {
|
||||||
|
doneSubs=true;
|
||||||
|
} else if (m_repo->getPackage( pkgname )) {
|
||||||
|
StringHelper::replaceAll( rm_logFile, "%p",
|
||||||
|
m_repo->getPackage( pkgname )->path() );
|
||||||
|
doneSubs=true;
|
||||||
|
} else {
|
||||||
|
cout << "Warning: unable to determine the logfile for "
|
||||||
|
+ pkgname + "; log removal aborted." << endl;
|
||||||
|
}
|
||||||
|
struct stat slF;
|
||||||
|
if ( doneSubs && stat(rm_logFile.c_str(), &slF)==0
|
||||||
|
&& (slF.st_mode & S_IFMT)==S_IFREG ) {
|
||||||
|
unlink( rm_logFile.c_str() );
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
failed.push_back(*it);
|
failed.push_back(*it);
|
||||||
}
|
}
|
||||||
@ -2240,18 +2279,17 @@ void PrtGet::dumpConfig()
|
|||||||
cout.setf( ios::left, ios::adjustfield );
|
cout.setf( ios::left, ios::adjustfield );
|
||||||
cout.width( 20 );
|
cout.width( 20 );
|
||||||
cout.fill( ' ' );
|
cout.fill( ' ' );
|
||||||
cout << "Pkgmk settings: " << m_config->logFilePattern() << endl;
|
cout << "Pkgmk settings: " << endl;
|
||||||
cout.setf( ios::left, ios::adjustfield );
|
cout.setf( ios::left, ios::adjustfield );
|
||||||
cout.width( 20 );
|
cout.width( 20 );
|
||||||
cout.fill( ' ' );
|
cout.fill( ' ' );
|
||||||
cout << " Package dir: " << InstallTransaction::getPkgmkPackageDir()
|
cout << " Package dir: " << m_config->packageDir()
|
||||||
<< endl;
|
<< endl;
|
||||||
|
|
||||||
cout.setf( ios::left, ios::adjustfield );
|
cout.setf( ios::left, ios::adjustfield );
|
||||||
cout.width( 20 );
|
cout.width( 20 );
|
||||||
cout.fill( ' ' );
|
cout.fill( ' ' );
|
||||||
cout << " Compression mode: "
|
cout << " Compression mode: " << m_config->compressionMode() << endl;
|
||||||
<< InstallTransaction::getPkgmkCompressionMode() << endl;
|
|
||||||
|
|
||||||
|
|
||||||
cout << endl;
|
cout << endl;
|
||||||
|
@ -92,7 +92,7 @@ public:
|
|||||||
|
|
||||||
int returnValue() const;
|
int returnValue() const;
|
||||||
|
|
||||||
SignalHandler::HandlerResult handleSignal( int signal );
|
SignalHandler::HandlerResult handleSignal();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ void SignalDispatcher::dispatch( int signalNumber )
|
|||||||
map<int, SignalHandler*>::iterator it =
|
map<int, SignalHandler*>::iterator it =
|
||||||
SignalDispatcher::instance()->m_signalHandlers.find( signalNumber );
|
SignalDispatcher::instance()->m_signalHandlers.find( signalNumber );
|
||||||
if ( it != SignalDispatcher::instance()->m_signalHandlers.end() ) {
|
if ( it != SignalDispatcher::instance()->m_signalHandlers.end() ) {
|
||||||
it->second->handleSignal( signalNumber );
|
it->second->handleSignal();
|
||||||
} else {
|
} else {
|
||||||
cerr << "prt-get: caught signal " << signalNumber << endl;
|
cerr << "prt-get: caught signal " << signalNumber << endl;
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ public:
|
|||||||
EXIT, /*!< signal handled, exit now */
|
EXIT, /*!< signal handled, exit now */
|
||||||
CONTINUE /*!< signal handled, don't exit */
|
CONTINUE /*!< signal handled, don't exit */
|
||||||
};
|
};
|
||||||
virtual HandlerResult handleSignal( int signalNumber ) = 0;
|
virtual HandlerResult handleSignal() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
Loading…
Reference in New Issue
Block a user