diff -Nur old/doc/pl/poldek.1 new/doc/pl/poldek.1 --- old/doc/pl/poldek.1 2003-04-02 13:04:26.000000000 +0000 +++ new/doc/pl/poldek.1 2004-03-08 23:19:52.000000000 +0000 @@ -384,8 +384,8 @@ Bądź tolerancyjny w stosunku do zależności od wersji, które toleruje \s-1RPM\s0, np.: pakiet A wymaga foo >= 1.0, podczas gdy pakiet B dostarcza \*(L"foo\*(R" beż żadnej wersji. -.Ip "\fB\*(--nodeps\fR; \fB\*(--justdb\fR; \fB\*(--force\fR; \fB\*(--root\fR;" 4 -.IX Item "nodeps; justdb; force; root;" +.Ip "\fB\*(--nodeps\fR; \fB\*(--ignorearch\fR; \fB\*(--justdb\fR; \fB\*(--force\fR; \fB\*(--root\fR;" 4 +.IX Item "nodeps; ignorearch; justdb; force; root;" Ma takie znaczenie jak w przypadku \s-1RPM\s0. Patrz następna sekcja. .Ip "\fB\-N, \-\-nofollow\fR" 4 .IX Item "-N, --nofollow" @@ -423,6 +423,8 @@ .PD 0 .Ip "\(bu \-\-force" 4 .IX Item "--force" +.Ip "\(bu \-\-ignorearch" 4 +.IX Item "--ignorearch" .Ip "\(bu \-\-install" 4 .IX Item "--install" .Ip "\(bu \-\-justdb" 4 diff -Nur old/doc/pl/poldek.pod new/doc/pl/poldek.pod --- old/doc/pl/poldek.pod 2002-11-07 18:41:49.000000000 +0000 +++ new/doc/pl/poldek.pod 2004-03-08 23:20:25.000000000 +0000 @@ -289,7 +289,7 @@ pakiet A wymaga foo >= 1.0, podczas gdy pakiet B dostarcza "foo" beż żadnej wersji. -=item B<--nodeps>; B<--justdb>; B<--force>; B<--root>; +=item B<--nodeps>; B<--ignorearch>; B<--justdb>; B<--force>; B<--root>; Ma takie znaczenie jak w przypadku RPM. Patrz następna sekcja. @@ -342,6 +342,8 @@ =item * --force +=item * --ignorearch + =item * --install =item * --justdb diff -Nur old/main.c new/main.c --- old/main.c 2004-01-10 17:27:45.000000000 +0000 +++ new/main.c 2004-03-08 23:38:22.000000000 +0000 @@ -201,6 +201,7 @@ # define OPT_SHELL_CMD 1032 #endif +#define OPT_INST_IGNOREARCH 1040 #define OPT_INST_INSTDIST 1041 #define OPT_INST_UPGRDIST 1042 #define OPT_INST_NODEPS 1043 @@ -382,6 +383,10 @@ {"nodeps", OPT_INST_NODEPS, 0, 0, N_("Install packages with broken dependencies"), 71 }, +{"ignorearch", OPT_INST_IGNOREARCH, 0, 0, + N_("Allow installation or upgrading even if the architectures of the " + "binary package and host don't match."), 71 }, + {"force", OPT_INST_FORCE, 0, 0, N_("Be unconcerned"), 71 }, @@ -854,6 +859,10 @@ argsp->inst.flags |= INSTS_NODEPS; break; + case OPT_INST_IGNOREARCH: + argsp->inst.flags |= INSTS_IGNOREARCH; + break; + case OPT_INST_FORCE: argsp->inst.flags |= INSTS_FORCE; break; @@ -933,6 +942,7 @@ strncmp(optname, "install", 7) == 0 || strncmp(optname, "upgrade", 7) == 0 || strncmp(optname, "nodeps", 6) == 0 || + strncmp(optname, "ignorearch", 6) == 0 || strncmp(optname, "justdb", 6) == 0 || strncmp(optname, "test", 4) == 0 || strncmp(optname, "root", 4) == 0) diff -Nur old/pkgdb.h new/pkgdb.h --- old/pkgdb.h 2002-04-05 15:58:52.000000000 +0000 +++ new/pkgdb.h 2004-03-08 22:16:55.000000000 +0000 @@ -12,6 +12,7 @@ #define PKGINST_NODEPS (1 << 1) /* rpm --nodeps */ #define PKGINST_JUSTDB (1 << 2) /* rpm --justdb */ #define PKGINST_TEST (1 << 3) /* rpm --test */ +#define PKGINST_IGNOREARCH (1 << 4) /* rpm --ignorearch */ #define PKGINST_FORCE (1 << 6) /* rpm --force */ #define PKGINST_UPGRADE (1 << 7) /* rpm -U */ diff -Nur old/pkgset.c new/pkgset.c --- old/pkgset.c 2002-11-14 18:21:42.000000000 +0000 +++ new/pkgset.c 2004-03-08 21:09:57.000000000 +0000 @@ -637,6 +637,9 @@ if (instflags & INSTS_UPGRADE) flags |= PKGINST_UPGRADE; + if (instflags & INSTS_IGNOREARCH) + flags |= PKGINST_IGNOREARCH; + return flags; } diff -Nur old/pkgset.h new/pkgset.h --- old/pkgset.h 2003-04-02 14:54:08.000000000 +0000 +++ new/pkgset.h 2004-03-08 21:07:08.000000000 +0000 @@ -71,6 +71,7 @@ #define INSTS_CONFIRM_INST (1 << 28) /* confirm_installation = yes */ #define INSTS_CONFIRM_UNINST (1 << 29) /* confirm_removal = yes */ #define INSTS_EQPKG_ASKUSER (1 << 30) /* choose_equivalents_manually = yes */ +#define INSTS_IGNOREARCH (1 << 31) /* --ignorearch */ #define INSTS_INTERACTIVE_ON (INSTS_CONFIRM_INST | INSTS_EQPKG_ASKUSER) diff -Nur old/pkgset-install.c new/pkgset-install.c --- old/pkgset-install.c 2003-12-30 18:19:52.000000000 +0000 +++ new/pkgset-install.c 2004-03-08 22:30:57.000000000 +0000 @@ -1662,19 +1662,22 @@ #endif -static int valid_arch_os(tn_array *pkgs) +static int valid_arch_os(tn_array *pkgs, struct inst_s *inst) { int i, nerr = 0; for (i=0; iflags & (INSTS_IGNOREARCH)) { } else + { if (pkg->arch && !rpmMachineScore(RPM_MACHTABLE_INSTARCH, pkg->arch)) { logn(LOGERR, _("%s: package is for a different architecture (%s)"), pkg_snprintf_s(pkg), pkg->arch); nerr++; } - + } if (pkg->os && !rpmMachineScore(RPM_MACHTABLE_INSTOS, pkg->os)) { logn(LOGERR, _("%s: package is for a different operating system (%s)"), pkg_snprintf_s(pkg), pkg->os); @@ -1952,7 +1955,7 @@ return 0; if ((inst->flags & (INSTS_JUSTPRINTS | INSTS_JUSTFETCH)) == 0) - if (!valid_arch_os(upg->install_pkgs)) + if (!valid_arch_os(upg->install_pkgs,inst)) return 0; diff -Nur old/po/pl.po new/po/pl.po --- old/po/pl.po 2004-01-10 14:23:51.000000000 +0000 +++ new/po/pl.po 2004-03-09 00:04:13.000000000 +0000 @@ -550,6 +550,9 @@ msgid "no packages specified" msgstr "nie podano pakietów" +msgid "Allow installation or upgrading even if the architectures of the binary package and host don't match." +msgstr "Umożliwia instalację lub uaktualnienie nawet w wypadku, gdy architektury binarnego pakietu i hosta nie odpowiadają sobie." + #: main.c:1871 msgid "I'm set*id'ed, give up" msgstr "Mam ustawiony bit suid/sgid, wymiękam" diff -Nur old/poldek.1 new/poldek.1 --- old/poldek.1 2003-04-02 13:04:44.000000000 +0000 +++ new/poldek.1 2004-03-08 22:59:12.000000000 +0000 @@ -380,8 +380,8 @@ Be tolerant for unmatched versioned dependencies which \s-1RPM\s0 tolerates, e.g. package A requires capability foo >= 1.0 while package B provides \*(L"foo\*(R" without any version. -.Ip "\fB\*(--nodeps\fR; \fB\*(--justdb\fR; \fB\*(--force\fR; \fB\*(--root\fR;" 4 -.IX Item "nodeps; justdb; force; root;" +.Ip "\fB\*(--nodeps\fR; \fB\*(--ignorearch\fR; \fB\*(--justdb\fR; \fB\*(--force\fR; \fB\*(--root\fR;" 4 +.IX Item "nodeps; ignorearch; justdb; force; root;" Have the same meanings like \s-1RPM\s0 ones. See next section. .Ip "\fB\-N, \-\-nofollow\fR" 4 .IX Item "-N, --nofollow" @@ -417,6 +417,8 @@ .PD 0 .Ip "\(bu \-\-force" 4 .IX Item "--force" +.Ip "\(bu \-\-ignorearch" 4 +.IX Item "--ignorearch" .Ip "\(bu \-\-install" 4 .IX Item "--install" .Ip "\(bu \-\-justdb" 4 diff -Nur old/poldek.pod new/poldek.pod --- old/poldek.pod 2002-10-18 10:35:18.000000000 +0000 +++ new/poldek.pod 2004-03-08 22:58:56.000000000 +0000 @@ -286,7 +286,7 @@ package A requires capability foo >= 1.0 while package B provides "foo" without any version. -=item B<--nodeps>; B<--justdb>; B<--force>; B<--root>; +=item B<--nodeps>; B<--ignorearch>; B<--justdb>; B<--force>; B<--root>; Have the same meanings like RPM ones. See next section. @@ -337,6 +337,8 @@ =item * --force +=item * --ignorearch + =item * --install =item * --justdb diff -Nur old/rpminstall.c new/rpminstall.c --- old/rpminstall.c 2002-10-24 16:23:10.000000000 +0000 +++ new/rpminstall.c 2004-03-08 21:04:19.000000000 +0000 @@ -308,6 +308,10 @@ argv[n++] = "--define"; argv[n++] = n_array_nth(inst->rpmacros, i); } + + if (inst->flags & INSTS_IGNOREARCH) + argv[n++] = "--ignorearch"; /* ignore architecture */ + if (inst->rpmopts) for (i=0; irpmopts); i++) diff -Nur old/shell/install.c new/shell/install.c --- old/shell/install.c 2002-11-14 18:21:43.000000000 +0000 +++ new/shell/install.c 2004-03-08 23:37:47.000000000 +0000 @@ -36,7 +36,7 @@ #define OPT_INST_FORCE 3 #define OPT_INST_REINSTALL 4 #define OPT_INST_DOWNGRADE 5 - +#define OPT_INST_IGNOREARCH 6 static struct argp_option options[] = { {"mercy", 'm', 0, 0, N_("Be tolerant for bugs which RPM tolerates"), 1}, @@ -61,6 +61,10 @@ {"nodeps", OPT_INST_NODEPS, 0, 0, N_("Install packages with broken dependencies"), 1 }, +{"ignorearch", OPT_INST_IGNOREARCH, 0, 0, + N_("Allow installation or upgrading even if the architectures of the " + "binary package and host don't match."), 1 }, + {0, 'v', 0, 0, N_("Be verbose."), 1 }, {NULL, 'h', 0, OPTION_HIDDEN, "", 1 }, /* alias for -? */ { 0, 0, 0, 0, 0, 0 }, @@ -131,6 +135,9 @@ cmdarg->sh_s->inst->flags |= INSTS_FORCE; break; + case OPT_INST_IGNOREARCH: + cmdarg->sh_s->inst->flags |= INSTS_IGNOREARCH; + break; case 't': if (cmdarg->sh_s->inst->flags & INSTS_TEST)