0_21-0_20070703_00_19'.
Sprout from master 2008-02-20 22:49:13 UTC Elan Ruusamäe <glen@pld-linux.org> '- abort() when db open fails'
Cherrypick from master 2008-03-19 19:40:29 UTC Elan Ruusamäe <glen@pld-linux.org> '- rpm will win the ordering':
poldek-nonoorder.patch -> 1.1
Cherrypick from unlabeled-1.5.2 2008-03-26 12:50:46 UTC Elan Ruusamäe <glen@pld-linux.org> '- all sources moved to repos.d':
poldek-config.patch -> 1.5.2.3
poldek-multilib.conf -> 1.5.2.10
Cherrypick from AC-branch 2008-03-24 20:56:49 UTC Elan Ruusamäe <glen@pld-linux.org> '- backport %includedir':
poldek-bug-79.patch -> 1.1.2.1
Cherrypick from unlabeled-1.1.2 2008-02-15 03:05:43 UTC Elan Ruusamäe <glen@pld-linux.org> '- config xml was modified initially on purpose, now touch generated config code too':
poldek-dirdeps.patch -> 1.1.2.4
Cherrypick from unlabeled-1.277.2.3.2.18.2 2008-03-26 12:51:04 UTC Elan Ruusamäe <glen@pld-linux.org> '- rel 19, forgotten patch updated':
poldek.spec -> 1.277.2.3.2.18.2.12
Cherrypick from unlabeled-1.35.2 2008-03-25 22:44:10 UTC Elan Ruusamäe <glen@pld-linux.org> '- unify macros with th/ti':
poldek.conf -> 1.35.2.23
Delete:
poldek-as_needed-fix.patch
poldek-multilib.patch
poldek-su-sigsev.patch
poldek-uninstall-depfix.patch
+++ /dev/null
-diff -Nur poldek-0.20/vfile/Makefile.am poldek-0.20.as_needed-fix/vfile/Makefile.am
---- poldek-0.20/vfile/Makefile.am 2005-05-15 17:16:13.000000000 +0200
-+++ poldek-0.20.as_needed-fix/vfile/Makefile.am 2006-08-02 01:46:42.000000000 +0200
-@@ -22,7 +22,7 @@
- vfffmod.c $(VFCURL_SRCS_) \
- vopen3.c vopen3.h vfile_intern.h
-
--libvfile_la_LIBADD = vfff/libvfff.la
-+libvfile_la_LIBADD = vfff/libvfff.la -lutil
-
- pkgincludedir = $(includedir)/vfile
- pkginclude_HEADERS = vfile.h p_open.h vopen3.h
--- /dev/null
+Index: conf.c
+===================================================================
+RCS file: /cvsroot/poldek/poldek/conf.c,v
+retrieving revision 1.85
+retrieving revision 1.86
+diff -w -u -r1.85 -r1.86
+--- conf.c 28 Jun 2007 15:58:20 -0000 1.85
++++ conf.c 30 Jan 2008 15:16:41 -0000 1.86
+@@ -22,6 +22,8 @@
+ #include <unistd.h>
+ #include <fnmatch.h>
+ #include <sys/param.h> /* for PATH_MAX */
++#include <sys/types.h>
++#include <dirent.h>
+
+ #include <trurl/nhash.h>
+ #include <trurl/narray.h>
+@@ -44,6 +46,7 @@
+
+ static const char *global_tag = "global";
+ static const char *include_tag = "%include";
++static const char *includedir_tag = "%includedir";
+
+ static struct poldek_conf_tag unknown_tag = {
+ NULL, CONF_TYPE_STRING | CONF_TYPE_F_ENV | CONF_TYPE_F_MULTI_EXCL,
+@@ -719,14 +722,19 @@
+ %include path|url
+ %include_<section_name> path|url -> load only <section_name>
+ */
+-static char *include_path(char *path, size_t size, char *line, char **sectnam,
++static char *prepare_include_path(const char *tag, char *path, size_t size,
++ char *line, char **sectnam,
+ tn_hash *ht, tn_hash *ht_global)
+ {
+ char expenval[PATH_MAX], expval[PATH_MAX], *p;
+
++ if (n_str_eq(tag, include_tag))
+ *sectnam = NULL;
+- p = line + strlen(include_tag);
+- if (*p == '_') {
++ else
++ n_assert(sectnam == NULL); /* irrelevant for non %include */
++
++ p = line + strlen(tag);
++ if (n_str_eq(tag, include_tag) && *p == '_') {
+ p++;
+ *sectnam = p;
+ while (!isspace(*p))
+@@ -756,7 +764,6 @@
+ tn_array *arr_sect;
+ tn_hash *ht_sect = NULL;
+
+-
+ arr_sect = n_hash_get(htconf, sectnam);
+ DBGF("[%s] sect=%p, is_multi=%d\n", sectnam, sect,
+ sect ? sect->is_multi : -1);
+@@ -927,8 +934,54 @@
+ }
+ }
+
+-static
+-tn_hash *do_ldconf(tn_hash *af_htconf,
++static tn_array *includedir_files(const char *dirpath, const char *ppath)
++{
++ tn_array *configs = NULL;
++ struct dirent *ent;
++ DIR *dir;
++ char *sep = "/", tmpath[PATH_MAX];
++
++
++ if (*dirpath != '/' && strrchr(ppath, '/') != NULL) {
++ char *s;
++ int n;
++
++ n = n_snprintf(tmpath, sizeof(tmpath), "%s", ppath);
++ s = strrchr(tmpath, '/');
++ n_assert(s);
++
++ n_snprintf(s + 1, sizeof(tmpath) - n, "%s", dirpath);
++ dirpath = tmpath;
++ }
++
++ if ((dir = opendir(dirpath)) == NULL) {
++ logn(LOGERR, "%%includedir %s: %m", dirpath);
++ return NULL;
++ }
++
++ configs = n_array_new(32, free, (tn_fn_cmp)strcmp);
++
++ while ((ent = readdir(dir))) {
++ char path[PATH_MAX];
++ int n;
++
++ if (fnmatch("*.conf", ent->d_name, 0) != 0)
++ continue;
++
++ n = n_snprintf(path, sizeof(path), "%s%s%s", dirpath, sep, ent->d_name);
++ n_array_push(configs, n_strdupl(path, n));
++ }
++ closedir(dir);
++
++ n_array_sort(configs);
++ if (n_array_size(configs) == 0)
++ n_array_cfree(&configs);
++
++ return configs;
++}
++
++
++static tn_hash *do_ldconf(tn_hash *af_htconf,
+ const char *path, const char *parent_path,
+ const char *section_to_load, unsigned flags)
+ {
+@@ -974,32 +1027,67 @@
+ n_hash_insert(af_htconf, af->path, NULL);
+
+ while (n_stream_gets(af->vf->vf_tnstream, buf, sizeof(buf) - 1)) {
+- char *name, *value, *p;
++ char *name, *value, *line;
+
+ nline++;
+- p = eat_wws(buf);
+- if (*p == '#' || *p == '\0')
++ line = eat_wws(buf);
++ if (*line == '#' || *line == '\0')
++ continue;
++
++ /* %includedir <directory> */
++ if (strncmp(line, includedir_tag, strlen(includedir_tag)) == 0) {
++ char ipath[PATH_MAX];
++ tn_array *configs;
++ int i;
++
++
++ if (flags & POLDEK_LDCONF_NOINCLUDE)
++ continue;
++
++ line = prepare_include_path(includedir_tag, ipath, sizeof(ipath), line,
++ NULL, ht_sect, ht);
++
++ if (line == NULL) {
++ logn(LOGERR, _("%s:%d: wrong %%includedir"), af->path, nline);
++ is_err = 1;
++ goto l_end;
++ }
++ DBGF("includedir %s\n", line);
++
++ if ((configs = includedir_files(line, af->path)) == NULL)
+ continue;
+
+- if (strncmp(p, include_tag, strlen(include_tag)) == 0) {
++ for (i=0; i < n_array_size(configs); i++) {
++ char *path = n_array_nth(configs, i);
++
++ if (!do_ldconf(af_htconf, path, af->path, NULL, flags)) {
++ n_array_free(configs);
++ is_err = 1;
++ goto l_end;
++ }
++ }
++ n_array_free(configs);
++ continue;
++ }
++
++ /* %include <file> */
++ if (strncmp(line, include_tag, strlen(include_tag)) == 0) {
+ char *section_to_load = NULL, ipath[PATH_MAX];
+- tn_hash *inc_ht;
+
+ if (flags & POLDEK_LDCONF_NOINCLUDE)
+ continue;
+
+- p = include_path(ipath, sizeof(ipath), p, §ion_to_load,
+- ht_sect, ht);
++ line = prepare_include_path(include_tag, ipath, sizeof(ipath),
++ line, §ion_to_load, ht_sect, ht);
+
+- if (p == NULL) {
++ if (line == NULL) {
+ logn(LOGERR, _("%s:%d: wrong %%include"), af->path, nline);
+ is_err = 1;
+ goto l_end;
+ }
+
+- DBGF("open %s %s, i %s\n", p, sectnam, inc_sectnam);
+- inc_ht = do_ldconf(af_htconf, p, af->path, section_to_load, flags);
+- if (inc_ht == NULL) {
++ DBGF("open %s %s, i %s\n", line, sectnam, inc_sectnam);
++ if (!do_ldconf(af_htconf, line, af->path, section_to_load, flags)) {
+ is_err = 1;
+ goto l_end;
+ }
+@@ -1008,18 +1096,18 @@
+
+ read_continuation(af, buf, sizeof(buf), &nline);
+
+- if (*p == '%') /* unknown directive */
++ if (*line == '%') /* unknown directive */
+ continue;
+
+- if (*p == '[') { /* section */
++ if (*line == '[') { /* section */
+ const struct poldek_conf_section *sect = NULL;
+
+- p++;
+- name = p;
++ line++;
++ name = line;
+
+- while (isalnum(*p) || *p == '-')
+- p++;
+- *p = '\0';
++ while (isalnum(*line) || *line == '-')
++ line++;
++ *line = '\0';
+
+ if (validate && (sect = find_section(name)) == NULL) {
+ logn(LOGERR, _("%s:%d: '%s': invalid section name"),
+@@ -1036,7 +1124,7 @@
+ continue;
+ }
+
+- if (!split_option_line(p, &name, &value, af->path, nline))
++ if (!split_option_line(line, &name, &value, af->path, nline))
+ goto l_end;
+
+ if (ht_sect) {
---- poldek-0.20/conf/poldek.conf 2006-03-10 16:45:19.000000000 +0200
-+++ poldek-0.20/conf/poldek.conf 2007-01-31 17:48:31.288247465 +0200
-@@ -127,11 +127,11 @@
+--- poldek-0.21-cvs20070703.00/conf/poldek.conf 2008-03-24 23:22:01.912491689 +0200
++++ poldek-0.21-cvs20070703.00/conf/poldek.conf 2008-03-26 14:08:42.511863910 +0200
+@@ -3,12 +3,9 @@
+ # Some macros. Macros are local, they are not visible in included files
+ # and macros declared in them are not visible to includer.
+ # Macros names starts with underscore '_'.
+-#
+-_distro = pld
+
+-# Both local and remote files may be included. Included files may not contain
+-# [global] section, it will be ignored anyway.
+-%include %{_distro}-source.conf
++# /etc/poldek/repos.d/*.conf
++%includedir repos.d
+
+ # local sources
+ %include source.conf
+@@ -30,20 +27,20 @@
+ # Switch to ordinary user at startup when executed by root
+ #runas = poldek
+
+-# Permits using root privileges for installation only. If set to "auto" then
++# Permits using root privileges for installation only. If set to "auto" then
+ # automatically turned on when poldek executed as ordinary user.
+ #use sudo = auto
+
+-# Load /etc/apt/sources.list.
++# Load /etc/apt/sources.list.
+ #load apt sources list = no
+
+ # Handle gzipped indexes externally (needed on RedHat 9 and Fedora Core 1 and 2).
+-# This option is a workaround for broken zlib linked into librpm; with enabled
++# This option is a workaround for broken zlib linked into librpm; with enabled
+ # 'auto zlib in rpm' poldek tries to detect such case and then enables external
+ # *.gz handling automatically.
+ #vfile external compress = no
+
+-# Auto detection of zlib linked into librpm. See 'vfile external compress'
++# Auto detection of zlib linked into librpm. See 'vfile external compress'
+ # description.
+ #auto zlib in rpm = yes
+
+@@ -53,24 +50,24 @@
+ # Do not save given paths into created indexes. This option may significantly
+ # reduce index size. Example (notice missing starting '/'):
+ # exclude path = usr/share/doc:usr/share/man:usr/src
+-#exclude path =
++#exclude path =
+
+-# Full path name to a PM (rpm for now) binary.
++# Full path name to a PM (rpm for now) binary.
+ #pm command = /bin/rpm
+
+-# Full path name to sudo binary.
++# Full path name to sudo binary.
+ #sudo command = /usr/bin/sudo
+
+
+ ### File downloaders configuration
+
+-# Send ${USER}@${HOSTNAME} as anonymous FTP password (by default
+-# 'poldek@znienacka.net' is sent)
++# Send ${USER}@${HOSTNAME} as anonymous FTP password (by default
++# 'poldek@znienacka.net' is sent)
+ #vfile ftp sysuser as anon passwd = no
+
+ # File getters configuration parameter. By this option URL handlers may be configured.
+-# To get file from HTTP and FTP servers poldek uses its internal client (what is
+-# recommended), although it can be changedby this option. Others protocols handled
++# To get file from HTTP and FTP servers poldek uses its internal client (what is
++# recommended), although it can be changedby this option. Others protocols handled
+ # by external utilities can be configured also. The syntax is:
+ # default fetcher = PROTOCOL[,PROTOCOL...]:FETCHER_NAME
+
+@@ -89,15 +86,15 @@
+ # proxy = PROTOCOL[,PROTOCOL...]:PROXY_URL
+ # Example:
+ # proxy = http: http://w3cache.foo.org:8080
+-#proxy =
++#proxy =
+
+ # Comma separated list of hosts or domains which will not be accessed via proxy.
+ # Option overrides no_proxy environment variable.
+ # Example:
+ # noproxy = localhost, .pl, ftp.foo.bar.org
+-#noproxy =
++#noproxy =
+
+-# Internal HTTP and FTP client is stubborn, it retries to retrive
++# Internal HTTP and FTP client is stubborn, it retries to retrive
+ # file if connection breaks. This option tells it how many times
+ # it should try.
+ #vfile retries = 128
+@@ -105,7 +102,7 @@
+
+ ### Installation options
+
+-# Install packages in small groups instead of doing all-or-nothing
++# Install packages in small groups instead of doing all-or-nothing
+ # installations.
+ #particle install = yes
+
+@@ -127,19 +124,19 @@
#confirm removal = yes
# Let the user select package among equivalents.
# Ignore package list - packages fits given mask will be invisible.
# ignore = *-smp-* foo*
+ # we ignore vserver-packages by default, util-vserver has it's own poldek config.
+ ignore = vserver-packages
+
+-# Conflicts with already installed packages are treated as resolved
+-# if at least one of multiple-installed package satisfies conflict.
++# Conflicts with already installed packages are treated as resolved
++# if at least one of multiple-installed package satisfies conflict.
+ # rpm doesn't support such cases, so --pm-nodeps is needed (use with
+ # care).
+ #allow duplicates = yes
+@@ -152,11 +149,13 @@
+ # Do not install any documentation:
+ # rpmdef = _netsharedpath /usr/share/info:/usr/share/man
+ # rpmdef = _excludedocs 1
+-#rpmdef =
++# If non-zero, all erasures will be automagically repackaged.
++# rpmdef = _repackage_all_erasures 1
++#rpmdef =
+
+
+ ### Dependency processing settings
+-# Subtle dependency processing options, they should not be changed
++# Subtle dependency processing options, they should not be changed
+ # unless you know what you are doing
+
+ # RPM 4.4.6 introduces auto dependencies based on package directories. Option controls this feature.
+@@ -169,7 +168,7 @@
+ # by being uninstalled ones.
+ #greedy = yes
+
+-# Be yet more greedy; if successor of orphaned package found, and this
++# Be yet more greedy; if successor of orphaned package found, and this
+ # successor drags no packages then upgrade the package instead of process
+ # its dependencies. Option value is implied by 'greedy' one by defalut.
+ #aggressive greedy = yes
--- poldek-0.20/conf/source.conf~ 2005-10-28 19:16:24.000000000 +0300
+++ poldek-0.20/conf/source.conf 2006-05-31 22:45:40.030363503 +0300
@@ -82,4 +82,4 @@
--- /dev/null
+--- poldek-0.21-cvs20070703.00/conf/poldek.conf~ 2008-02-14 16:12:15.604671074 +0200
++++ poldek-0.21-cvs20070703.00/conf/poldek.conf 2008-02-14 16:13:12.373118918 +0200
+@@ -160,6 +160,9 @@
+ # Subtle dependency processing options, they should not be changed
+ # unless you know what you are doing
+
++# RPM 4.4.6 introduces auto dependencies based on package directories. Option controls this feature.
++auto directory dependencies = no
++
+ # Automatically install packages required by installed ones.
+ #follow = yes
+
+--- poldek-0.21-cvs20070703.00/conf_sections.c~ 2007-06-30 10:42:33.000000000 +0300
++++ poldek-0.21-cvs20070703.00/conf_sections.c 2008-02-15 05:00:16.039094830 +0200
+@@ -205,7 +205,7 @@
+
+ { "auto directory dependencies",
+ CONF_TYPE_BOOLEAN3,
+- "auto",
++ "no",
+ POLDEK_OP_AUTODIRDEP, { 0 } },
+
+ { "follow",
-# Alternative multilib PLD 3.0 (Th)
+# $Id$
+# PLD Linux Distribution <http://www.pld-linux.org/>.
+#
+# Alternative multilib sources for PLD Linux 2.0 (Ac)
+
_arch = %ARCH%
-_prefix = ftp://ftp.th.pld-linux.org/dists/th
+_pld_main_prefix = ftp://ftp.ac.pld-linux.org/dists/ac
+
## Some mirrors
## You can use them if you have better connection there
# CI TASK:
-#_prefix = ftp://ftp.task.pld-linux.org/dists/th
+#_prefix = ftp://ftp.task.pld-linux.org/dists/ac
+_prefix = %{_pld_main_prefix}
_type = pndir
[source]
type = %{_type}
-name = th-%{_arch}
-path = %{_prefix}/PLD/%{_arch}/RPMS/
+name = ac-%{_arch}
+path = %{_prefix}/PLD/%{_arch}/PLD/RPMS/
+ignore = kernel*
+signed = yes
+auto = no
+autoup = yes
+pri = 2
+
+[source]
+type = %{_type}
+name = ac-updates-%{_arch}
+path = %{_prefix}/updates/%{_arch}/
+ignore = kernel*
+signed = yes
+auto = no
+autoup = yes
+pri = 2
+
+[source]
+type = %{_type}
+name = ac-supported-%{_arch}
+path = %{_prefix}/supported/%{_arch}/
+ignore = kernel*
+signed = yes
auto = no
autoup = no
-#[source]
-#type = %{_type}
-#name = th-updates-security-%{_arch}
-#path = %{_prefix}/updates-security/%{_arch}/RPMS/
-#auto = no
-#autoup = no
-#
-#[source]
-#type = %{_type}
-#name = th-updates-general-%{_arch}
-#path = %{_prefix}/updates-general/%{_arch}/RPMS/
-#auto = no
-#autoup = no
-
-#[source]
-#type = %{_type}
-#name = th-supported-%{_arch}
-#path = %{_prefix}/supported/%{_arch}/
-#auto = no
-#autoup = no
-
-#[source]
-#type = %{_type}
-#name = th-ready-%{_arch}
-#path = %{_prefix}/ready/%{_arch}/RPMS/
-#auto = no
-#autoup = no
+[source]
+type = %{_type}
+name = ac-ready-%{_arch}
+path = %{_pld_main_prefix}/ready/%{_arch}/
+#signed = yes
+auto = no
+autoup = no
[source]
type = %{_type}
-name = th-test-%{_arch}
-path = %{_prefix}/test/%{_arch}/RPMS/
+name = ac-test-%{_arch}
+path = %{_pld_main_prefix}/test/%{_arch}/
auto = no
autoup = no
+
+# alias ac-updates-ARCH as ac-ARCH-updates
+[source]
+type = group
+name = ac-%{_arch}-updates
+sources = ac-updates-%{_arch}
+
+# alias ac-ready-ARCH as ac-ARCH-ready
+[source]
+type = group
+name = ac-%{_arch}-ready
+sources = ac-ready-%{_arch}
+++ /dev/null
---- poldek-0.20/conf/poldek.conf~ 2006-05-31 22:11:32.000000000 +0300
-+++ poldek-0.20/conf/poldek.conf 2006-05-31 22:19:15.000000000 +0300
-@@ -9,6 +9,7 @@
- # Both local and remote files may be included. Included files may not contain
- # [global] section, it will be ignored anyway.
- %include %{_distro}-source.conf
-+%include %{_distro}-multilib-source.conf
-
- # local sources
- %include source.conf
--- /dev/null
+--- poldek-0.21-cvs20070703.00/pm/rpm/rpminstall.c~ 2008-03-19 21:28:45.000000000 +0200
++++ poldek-0.21-cvs20070703.00/pm/rpm/rpminstall.c 2008-03-19 21:29:42.010639258 +0200
+@@ -374,8 +374,6 @@
+ argv[nargs++] = (char*)ts->rootdir;
+ }
+
+- argv[nargs++] = "--noorder"; /* packages always ordered by me */
+-
+ if (ts->rpmacros)
+ for (i=0; i<n_array_size(ts->rpmacros); i++) {
+ argv[nargs++] = "--define";
+++ /dev/null
-Index: conf.c
-===================================================================
-RCS file: /cvsroot/poldek/poldek/conf.c,v
-retrieving revision 1.84
-diff -u -r1.84 conf.c
---- conf.c 27 Jun 2007 21:47:43 -0000 1.84
-+++ conf.c 28 Jun 2007 15:47:04 -0000
-@@ -944,6 +944,9 @@
- addparam_flags |= ADD_PARAM_FOREIGN;
- }
-
-+ if (flags & POLDEK_LDCONF_NOVALIDATE)
-+ validate = 0;
-+
- if (flags & POLDEK_LDCONF_UPDATE)
- update = 1;
-
-Index: conf.h
-===================================================================
-RCS file: /cvsroot/poldek/poldek/conf.h,v
-retrieving revision 1.18
-diff -u -r1.18 conf.h
---- conf.h 27 Jun 2007 00:44:47 -0000 1.18
-+++ conf.h 28 Jun 2007 15:47:04 -0000
-@@ -6,10 +6,11 @@
- #include <trurl/narray.h>
- #include <trurl/nhash.h>
-
--#define POLDEK_LDCONF_FOREIGN (1 << 0) /* not a poldek file */
--#define POLDEK_LDCONF_UPDATE (1 << 1) /* resync with remote config */
--#define POLDEK_LDCONF_NOINCLUDE (1 << 2) /* ignore %include directives */
--#define POLDEK_LDCONF_GLOBALONLY (1 << 9) /* for early cachedir setup */
-+#define POLDEK_LDCONF_FOREIGN (1 << 0) /* not a poldek config file */
-+#define POLDEK_LDCONF_NOVALIDATE (1 << 1) /* do not validate config variables */
-+#define POLDEK_LDCONF_UPDATE (1 << 2) /* resync with remote config */
-+#define POLDEK_LDCONF_NOINCLUDE (1 << 3) /* ignore %include directives */
-+#define POLDEK_LDCONF_GLOBALONLY (1 << 4) /* for early cachedir setup */
-
- /* default localization is used if path is NULL */
- tn_hash *poldek_conf_load(const char *path, unsigned flags);
-Index: cli/main.c
-===================================================================
-RCS file: /cvsroot/poldek/poldek/cli/main.c,v
-retrieving revision 1.56
-diff -u -r1.56 main.c
---- cli/main.c 27 Jun 2007 00:44:47 -0000 1.56
-+++ cli/main.c 28 Jun 2007 15:47:05 -0000
-@@ -587,7 +587,8 @@
- } else if (noautosu == 0 && getuid() == 0) { /* check config's runas */
- tn_hash *cnf;
-
-- cnf = poldek_conf_load_default(POLDEK_LDCONF_NOINCLUDE | POLDEK_LDCONF_FOREIGN);
-+ cnf = poldek_conf_load_default(POLDEK_LDCONF_GLOBALONLY |
-+ POLDEK_LDCONF_NOVALIDATE);
- if (cnf) {
- tn_hash *global;
- const char *u;
-Index: tests/sh/04-conf
-===================================================================
-RCS file: /cvsroot/poldek/poldek/tests/sh/04-conf,v
-retrieving revision 1.2
-diff -u -r1.2 04-conf
---- tests/sh/04-conf 27 Jun 2007 21:47:42 -0000 1.2
-+++ tests/sh/04-conf 28 Jun 2007 15:47:05 -0000
-@@ -28,12 +28,43 @@
-
- is_verbose_mode && $poldek_l
-
-- n=$($poldek_l | grep -vE '^dbg:' | wc -l)
-+ n=$($poldek_l | grep 'test://' | wc -l)
- assertEquals "2 sources expected" "$n" "2"
-
- n=$($poldek_l | grep -E '^test[12] ' | wc -l)
- assertEquals "2 sources expected, but not those" "$n" "2"
- }
-+
-+testConfAsRoot()
-+{
-+ create_local_conf
-+ msgn "--conf"
-+ poldek_l="$POLDEK --conf $TMPDIR/poldek.conf -q -l"
-+
-+ is_verbose_mode && $poldek_l
-+
-+ n=$(fakeroot $poldek_l | grep 'test://' | wc -l)
-+ assertEquals "2 sources expected" "$n" "2"
-+
-+ n=$(fakeroot $poldek_l | grep -E '^test[12] ' | wc -l)
-+ assertEquals "2 sources expected, but not those" "$n" "2"
-+
-+ msgn "default conf"
-+ mkdir $TMPDIR/home || fail "mkdir"
-+ mv -f $TMPDIR/poldek.conf $TMPDIR/home/.poldekrc
-+ HOME=$TMPDIR/home
-+ export HOME
-+
-+ poldek_l="$POLDEK -q -l"
-+ is_verbose_mode && $poldek_l
-+
-+ n=$(fakeroot $poldek_l | grep 'test://' | wc -l)
-+ assertEquals "2 sources expected" "$n" "2"
-+
-+ n=$(fakeroot $poldek_l | grep -E '^test[12] ' | wc -l)
-+ assertEquals "2 sources expected, but not those" "$n" "2"
-+}
-+
-
- testConfInclude()
- {
+++ /dev/null
-Index: capreq.c
-===================================================================
-RCS file: /cvsroot/poldek/poldek/capreq.c,v
-retrieving revision 1.44
-diff -u -r1.44 capreq.c
---- capreq.c 21 Jun 2007 16:47:45 -0000 1.44
-+++ capreq.c 29 Jun 2007 20:10:22 -0000
-@@ -59,7 +59,7 @@
- return strcmp(capreq_name(cr1), capreq_name(cr2));
- }
-
--__inline__
-+__inline__ static
- int capreq_cmp2name(struct capreq *cr1, const char *name)
- {
- return strcmp(capreq_name(cr1), name);
-@@ -427,9 +427,24 @@
- __inline__
- int capreq_arr_find(tn_array *capreqs, const char *name)
- {
-+ /* capreq_cmp2name is compilant with capreq_cmp_name_evr */
-+ if (!n_array_is_sorted(capreqs))
-+ n_array_sort(capreqs);
-+
- return n_array_bsearch_idx_ex(capreqs, name,
- (tn_fn_cmp)capreq_cmp2name);
- }
-+
-+__inline__
-+int capreq_arr_contains(tn_array *capreqs, const char *name)
-+{
-+ if (!n_array_is_sorted(capreqs))
-+ n_array_sort(capreqs); /* capreq_cmp2name */
-+
-+ return n_array_bsearch_idx_ex(capreqs, name,
-+ (tn_fn_cmp)capreq_cmp2name) > -1;
-+}
-+
-
- tn_buf *capreq_arr_join(tn_array *capreqs, tn_buf *nbuf, const char *sep)
- {
-Index: capreq.h
-===================================================================
-RCS file: /cvsroot/poldek/poldek/capreq.h,v
-retrieving revision 1.30
-diff -u -r1.30 capreq.h
---- capreq.h 21 Jun 2007 22:29:49 -0000 1.30
-+++ capreq.h 29 Jun 2007 20:10:22 -0000
-@@ -117,12 +117,12 @@
- int capreq_strcmp_name_evr(struct capreq *pr1, struct capreq *pr2);
-
- int capreq_cmp_name(struct capreq *cr1, struct capreq *cr2);
--int capreq_cmp2name(struct capreq *pr1, const char *name);
- int capreq_cmp_name_evr(struct capreq *cr1, struct capreq *cr2);
-
- #ifndef SWIG
- tn_array *capreq_arr_new(int size);
--int capreq_arr_find(tn_array *capreqs, const char *name);
-+int capreq_arr_find(tn_array *capreqs, const char *name); /* returns index */
-+int capreq_arr_contains(tn_array *capreqs, const char *name); /* returns bool */
- tn_buf *capreq_arr_join(tn_array *capreqs, tn_buf *nbuf, const char *sep);
-
- int capreq_arr_store_n(tn_array *arr);
-Index: libpoldek.sym
-===================================================================
-RCS file: /cvsroot/poldek/poldek/libpoldek.sym,v
-retrieving revision 1.28
-diff -u -r1.28 libpoldek.sym
---- libpoldek.sym 28 Jun 2007 22:28:21 -0000 1.28
-+++ libpoldek.sym 29 Jun 2007 20:10:22 -0000
-@@ -20,7 +20,6 @@
- capreq_arr_store
- capreq_arr_store_n
- capreq_clone
--capreq_cmp2name
- capreq_cmp_name
- capreq_cmp_name_evr
- capreq_epoch_
-Index: pkg.c
-===================================================================
-RCS file: /cvsroot/poldek/poldek/pkg.c,v
-retrieving revision 1.115
-diff -u -r1.115 pkg.c
---- pkg.c 21 Jun 2007 16:47:45 -0000 1.115
-+++ pkg.c 29 Jun 2007 20:10:23 -0000
-@@ -920,8 +920,7 @@
- struct capreq *cnfl = NULL;
-
- DBGF("%s %s%s", pkg_id(pkg), pkg_id(cpkg), isbastard ? " (bastard)" : "");
-- if (n_array_bsearch_ex(pkg->cnfls, cpkg->name,
-- (tn_fn_cmp)capreq_cmp2name) == NULL) {
-+ if (!capreq_arr_contains(pkg->cnfls, cpkg->name)) {
- cnfl = capreq_new(pkg->na, cpkg->name, cpkg->epoch, cpkg->ver,
- cpkg->rel, REL_EQ,
- (isbastard ? CAPREQ_BASTARD : 0));
-@@ -935,8 +934,7 @@
-
- int pkg_has_pkgcnfl(struct pkg *pkg, struct pkg *cpkg)
- {
-- return pkg->cnfls && (n_array_bsearch_ex(pkg->cnfls, cpkg->name,
-- (tn_fn_cmp)capreq_cmp2name));
-+ return pkg->cnfls && capreq_arr_contains(pkg->cnfls, cpkg->name);
- }
-
- struct pkguinf *pkg_xuinf(const struct pkg *pkg, tn_array *langs)
-Index: pkgdir/pkgdir_dirindex.c
-===================================================================
-RCS file: /cvsroot/poldek/poldek/pkgdir/pkgdir_dirindex.c,v
-retrieving revision 1.13
-diff -u -r1.13 pkgdir_dirindex.c
---- pkgdir/pkgdir_dirindex.c 24 Jun 2007 22:47:27 -0000 1.13
-+++ pkgdir/pkgdir_dirindex.c 29 Jun 2007 20:10:23 -0000
-@@ -505,7 +505,7 @@
- {
- const char **tl, **tl_save;
- char val[16 * 1024];
-- int vlen, n = 0, nadded = 0;
-+ int vlen, n = 0, nadded = 0, created_here = 0;
-
- n_assert(key[1] == PREFIX_PKGKEY_REQDIR);
- vlen = sizeof(val);
-@@ -513,15 +513,15 @@
- if (tl == NULL)
- return 0;
-
-- if (!pkg->reqs)
-+ if (!pkg->reqs) {
- pkg->reqs = capreq_arr_new(n);
--
-+ created_here = 1;
-+ }
-+
- while (*tl) {
- const char *dir = *tl;
-
-- if (*dir && !n_array_bsearch_ex(pkg->reqs, dir,
-- (tn_fn_cmp)capreq_cmp2name)) {
--
-+ if (*dir && (created_here || !capreq_arr_contains(pkg->reqs, dir))) {
- struct capreq *req = capreq_new(pkg->na, dir, 0, NULL, NULL, 0,
- CAPREQ_BASTARD);
- n_array_push(pkg->reqs, req);
-================================================================
-Index: trurlib/include/trurl/narray.h
-diff -u trurlib/include/trurl/narray.h:1.29 trurlib/include/trurl/narray.h:1.30
---- trurlib/include/trurl/narray.h:1.29 Tue Jun 19 23:52:49 2007
-+++ trurlib/include/trurl/narray.h Sat Jun 30 09:39:51 2007
-@@ -155,7 +155,9 @@
- /* internal macros, do not use them */
- #define TN_ARRAY_set_sorted(arr) ((arr)->flags |= TN_ARRAY_INTERNAL_ISSORTED)
- #define TN_ARRAY_clr_sorted(arr) ((arr)->flags &= ~TN_ARRAY_INTERNAL_ISSORTED)
--#define TN_ARRAY_is_sorted(arr) ((arr)->flags & TN_ARRAY_INTERNAL_ISSORTED)
-+
-+
-+#define n_array_is_sorted(arr) ((arr)->flags & TN_ARRAY_INTERNAL_ISSORTED)
-
- tn_array *n_array_grow_priv_(tn_array *arr, size_t req_size);
- #ifndef SWIG
-
-================================================================
-Index: trurlib/n_array_sorts.c
-diff -u trurlib/n_array_sorts.c:1.6 trurlib/n_array_sorts.c:1.7
---- trurlib/n_array_sorts.c:1.6 Tue Nov 16 20:01:40 2004
-+++ trurlib/n_array_sorts.c Sat Jun 30 09:39:51 2007
-@@ -121,7 +121,7 @@
-
- cmpf = autosort(arr, cmpf, &set_sorted);
-
-- if ((arr->flags & TN_ARRAY_AUTOSORTED) && TN_ARRAY_is_sorted(arr))
-+ if ((arr->flags & TN_ARRAY_AUTOSORTED) && n_array_is_sorted(arr))
- return arr;
-
- switch (alg) {
-
+# $Id$
# PLD Linux Distribution <http://www.pld-linux.org/>.
+#
+# Main sources for PLD Linux 2.0 (Ac)
+# specify our packages architecture
_arch = %ARCH%
-_prefix = ftp://ftp.th.pld-linux.org/dists/th
+
+# main PLD-site for often changed things:
+_pld_main_prefix = ftp://ftp.ac.pld-linux.org/dists/ac
+
## Some mirrors
## You can use them if you have better connection there
# CI TASK:
-#_prefix = ftp://ftp.task.pld-linux.org/dists/th
+#_prefix = ftp://ftp.task.pld-linux.org/dists/ac
+_prefix = %{_pld_main_prefix}
_type = pndir
-# PLD 3.0 (Th)
+# PLD Linux 2.0 (Ac)
[source]
type = %{_type}
-name = th
-path = %{_prefix}/PLD/%{_arch}/RPMS/
+name = ac
+path = %{_prefix}/PLD/%{_arch}/PLD/RPMS/
+signed = yes
+# buggy deps -- use one from updates instead
+ignore = msmtp-sendmail*
+pri = 1
[source]
type = %{_type}
-name = th
-path = %{_prefix}/PLD/noarch/RPMS/
-
-#[source]
-#type = %{_type}
-#name = th-updates
-#path = %{_prefix}/updates/%{_arch}/RPMS/
-#
-#[source]
-#type = %{_type}
-#name = th-updates
-#path = %{_prefix}/updates/noarch/RPMS/
-
-#[source]
-#type = %{_type}
-#name = th-supported
-#path = %{_prefix}/supported/%{_arch}/
-#auto = no
+name = ac-updates
+path = %{_prefix}/updates/%{_arch}/
+signed = yes
+pri = 1
-#[source]
-#type = %{_type}
-#name = th-ready
-#path = %{_prefix}/ready/%{_arch}/RPMS/
-#auto = no
-#autoup = no
-#
-#[source]
-#type = %{_type}
-#name = th-ready
-#path = %{_prefix}/ready/noarch/RPMS/
-#auto = no
-#autoup = no
+[source]
+type = %{_type}
+name = ac-supported
+path = %{_prefix}/supported/%{_arch}/
+signed = yes
+auto = no
+autoup = no
[source]
type = %{_type}
-name = th-test
-path = %{_prefix}/test/%{_arch}/RPMS/
+name = ac-ready
+path = %{_pld_main_prefix}/ready/%{_arch}/
+#signed = yes
auto = no
autoup = no
[source]
type = %{_type}
-name = th-test
-path = %{_prefix}/test/noarch/RPMS/
+name = ac-test
+path = %{_pld_main_prefix}/test/%{_arch}/
auto = no
autoup = no
-#
# Conditional build:
%bcond_with static # don't use shared libraries
%bcond_without imode # don't build interactive mode
%bcond_without python # don't build python bindings
#
# required versions (forced to avoid SEGV with mixed db used by rpm and poldek)
-%define ver_db 4.3.27-1
-%define ver_rpm 4.4.9-1
-#
-%define snap 20070703.00
-%define rel 15
+%define ver_db 4.2.50-1
+%define ver_rpm 4.4.9-31
+%define snap 20070703.00
+%define rel 19
Summary: RPM packages management helper tool
Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM
Name: poldek
Source3: %{name}-aliases.conf
Source4: %{name}.desktop
Source5: %{name}.png
+Patch0: %{name}-dirdeps.patch
Patch1: %{name}-vserver-packages.patch
Patch2: %{name}-config.patch
-Patch3: %{name}-multilib.patch
+
Patch4: %{name}-ndie_fix.patch
Patch5: %{name}-uri-escape-fix.patch
Patch6: %{name}-install-dist.patch
Patch8: %{name}-dir-dot.patch
Patch9: %{name}-suggests-one-package.patch
Patch10: %{name}-reversed-prompt.patch
+Patch11: %{name}-abort-on-upgrade.patch
+Patch12: %{name}-nonoorder.patch
+Patch13: %{name}-bug-79.patch
URL: http://poldek.pld-linux.org/
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: readline-devel >= 5.0
BuildRequires: rpm-devel >= %{ver_rpm}
%{?with_python:BuildRequires: rpm-pythonprov}
+BuildRequires: sed >= 4.0
BuildRequires: xmlto
BuildRequires: zlib-devel
%if %{with static}
Requires(triggerpostun): sed >= 4.0
Requires: %{name}-libs = %{version}-%{release}
Requires: db >= %{ver_db}
+Requires: openssl >= 0.9.7d
Requires: rpm >= %{ver_rpm}
Requires: rpm-lib = %(rpm -q --qf '%{V}' rpm-lib)
# vf* scripts use sed
%prep
%setup -q -n %{name}-%{version}%{?snap:-cvs%{snap}}
+%patch0 -p1
%patch1 -p1
%patch2 -p1
-%ifarch %{x8664}
-%patch3 -p1
-%endif
%patch4 -p0
%patch5 -p0
%patch6 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p0
# cleanup backups after patching
find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{_sysconfdir}
+install -d $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
%{?with_static:rm -f $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
-%ifarch i486 i686 ppc sparc alpha athlon
+%ifarch i386 i586 i686 ppc sparc alpha athlon
%define _ftp_arch %{_target_cpu}
-%else
+%endif
%ifarch %{x8664}
-%define _ftp_arch x86_64
+%define _ftp_arch amd64
%define _ftp_alt_arch i686
-%else
-%ifarch i586
-%define _ftp_arch i486
-%else
+%endif
+%ifarch i486
+%define _ftp_arch i386
+%endif
%ifarch pentium2 pentium3 pentium4
%define _ftp_arch i686
-%else
+%endif
%ifarch sparcv9 sparc64
%define _ftp_arch sparc
%endif
-%endif
-%endif
-%endif
-%endif
%{?with_static:rm -f $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
sed -e '
s|%%ARCH%%|%{_ftp_arch}|g
-' < %{SOURCE1} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/pld-source.conf
+' < %{SOURCE1} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
%ifarch %{x8664}
sed '
s|%%ARCH%%|%{_ftp_alt_arch}|g
-' < %{SOURCE2} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/pld-multilib-source.conf
+' < %{SOURCE2} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
%endif
install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/aliases.conf
install %{SOURCE5} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
%endif
-# get rid of non-pld sources
-rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora}-source.conf
+# sources we don't package
+rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,pld,fedora,centos}-source.conf
# include them in %doc
rm -rf configs
cp -a conf configs
fi
fi
+%triggerpostun -- poldek < 0.21-0.20070703.00.17.4
+if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
+ %{__sed} -i -e '/^%%include source.conf/{
+ a
+ a# /etc/poldek/repos.d/*.conf
+ a%%includedir repos.d
+ }' %{_sysconfdir}/%{name}/poldek.conf
+fi
+
+%{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
+%{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
+
+if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
+ cp -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
+ mv -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
+ %{__sed} -i -e 's,_pld_arch,_arch,g;s,_ac_idxtype,_type,g;s,_pld_prefix,_prefix,g' \
+ %{_sysconfdir}/%{name}/repos.d/pld.conf
+fi
+
+%ifarch %{x8664}
+if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
+ cp -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
+ mv -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
+ %{__sed} -i -e 's,_pld_arch,_arch,g;s,_ac_idxtype,_type,g;s,_pld_prefix,_prefix,g' \
+ %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
+fi
+%endif
+
%files -f %{name}.lang
%defattr(644,root,root,755)
%doc README* NEWS TODO configs/
%dir %{_sysconfdir}/%{name}
+%dir %{_sysconfdir}/%{name}/repos.d
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
%attr(755,root,root) %{_bindir}/*
%dir %{_libdir}/%{name}
%attr(755,root,root) %{_libdir}/%{name}/*
%{_pixmapsdir}/%{name}.png
%endif
-%if !%{with static}
+%if %{without static}
%files libs
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/lib*.so.*.*.*
+%attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
+%attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
+%attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
+%attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
+%attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0
+%attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2
+%attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
+%attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
+%attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
%endif
%files devel