summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/pkgs.pm74
1 files changed, 71 insertions, 3 deletions
diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm
index c345b5f17..cc3d083a7 100644
--- a/perl-install/pkgs.pm
+++ b/perl-install/pkgs.pm
@@ -495,7 +495,7 @@ sub getOtherDeps($$) {
or log::l("other depslist has not same package as hdlist file");
}
-sub getDeps($) {
+sub getDeps {
my ($prefix, $packages) = @_;
#- this is necessary for urpmi.
@@ -684,7 +684,7 @@ sub readCompssUsers {
}
sub setSelectedFromCompssList {
- my ($packages, $compssUsersChoice, $min_level, $max_size, $install_class) = @_;
+ my ($packages, $compssUsersChoice, $min_level, $max_size) = @_;
$compssUsersChoice->{TRUE} = 1; #- ensure TRUE is set
my $nb = selectedSize($packages);
foreach my $p (sort { packageRate($b) <=> packageRate($a) } values %{$packages->{names}}) {
@@ -727,6 +727,74 @@ sub restoreSelected {
mapn { pkgs::packageSetFlagSelected(@_) } $l, $flags;
}
+sub computeGroupSize {
+ my ($packages, $min_level) = @_;
+
+ sub inside {
+ my ($l1, $l2) = @_;
+ my $i = 0;
+ return if @$l1 > @$l2;
+ foreach (@$l1) {
+ my $c;
+ while ($c = $l2->[$i++] cmp $_ ) {
+ return if $c == 1 || $i > @$l2;
+ }
+ }
+ 1;
+ }
+
+ sub or_ify {
+ my ($first, @other) = @_;
+ my @l = split('\|\|', $first);
+ foreach (@other) {
+ @l = map {
+ my $n = $_;
+ map { "$_&&$n" } @l;
+ } split('\|\|');
+ }
+ @l;
+ }
+ sub or_clean {
+ my (@l) = map { [ sort split('&&') ] } @_;
+ my @r;
+ B: while (@l) {
+ my $e = shift @l;
+ foreach (@r, @l) {
+ inside($e, $_) and next B;
+ }
+ push @r, $e;
+ }
+ join("\t", map { join('&&', @$_) } @r);
+ }
+ my (%group, %memo);
+
+ foreach my $p (values %{$packages->{names}}) {
+ my ($rate, @flags) = packageRateRFlags($p);
+ next if !$rate || $rate < $min_level;
+
+ my $flags = join("\t", @flags = or_ify(@flags));
+ $group{$_} = $flags =~ /SYSTEM/ ? 'SYSTEM' : ($memo{$flags} ||= or_clean(@flags));
+
+ #- determine the packages that will be selected when selecting $p. the packages are not selected.
+ my %newSelection;
+ selectPackage($packages, $p, 0, \%newSelection);
+ foreach (grep { $newSelection{$_} } keys %newSelection) {
+ my $s = $group{$_} || do {
+ $packages->{names}{$_}[$VALUES] =~ /\t(.*)/;
+ join("\t", or_ify(split("\t", $1)));
+ };
+ my $m = "$flags\t$s";
+ $group{$_} = $m =~ /SYSTEM/ ? 'SYSTEM' : ($memo{$m} ||= or_clean(@flags, split("\t", $s)));
+ }
+ }
+ my (%sizes);
+ while (my ($k, $v) = each %group) {
+ $sizes{$v} += packageSize($packages->{names}{$k});
+ }
+ print formatXiB($sizes{$_}) , " => $_ ", join(",", @{$pkgs{$_}}), "\n" foreach sort keys %sizes;
+ \%sizes;
+}
+
sub init_db {
my ($prefix) = @_;
@@ -1066,7 +1134,7 @@ sub selectPackagesToUpgrade($$$;$$) {
close OUTPUT;
open STDIN, "<&INPUT_CHILD";
open STDOUT, ">&OUTPUT_CHILD";
- exec if_($ENV{LD_LOADER}, $ENV{LD_LOADER}), "parsehdlist", "--interactive", map { "/tmp/$_->{hdlist}" } values %{$packages->{mediums}}
+ exec "parsehdlist", "--interactive", map { "/tmp/$_->{hdlist}" } values %{$packages->{mediums}}
or c::_exit(1);
}
d='n334' href='#n334'>334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the isodumper package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Mageia\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-11 17:56+0200\n"
"PO-Revision-Date: 2020-06-29 10:00+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Breton (http://www.transifex.com/MageiaLinux/mageia/language/"
"br/)\n"
"Language: br\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !"
"=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n"
"%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > "
"19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 "
"&& n % 1000000 == 0) ? 3 : 4);\n"

#: backend/raw_write.py:51 backend/raw_write.py:83
msgid "Reading error."
msgstr ""

#: backend/raw_write.py:62
msgid "You don't have permission to write to the device {}"
msgstr ""

#: backend/raw_write.py:92 backend/raw_write.py:106 backend/raw_write.py:118
msgid "Writing error."
msgstr ""

#: backend/raw_write.py:126
msgid "Writing terminated"
msgstr ""

#: backend/raw_write.py:165
msgid "Sum file {} not found\n"
msgstr ""

#: backend/raw_write.py:169
msgid "SHA3 sum: {}"
msgstr ""

#: backend/raw_write.py:173
msgid "The {} sum check is OK"
msgstr ""

#: backend/raw_write.py:176
msgid "/!\\The computed and stored sums don't match"
msgstr ""

#: backend/raw_write.py:197 lib/isodumper.py:296
msgid "Timeout reached when {}"
msgstr ""

#: backend/raw_write.py:219 backend/raw_write.py:245 backend/raw_write.py:280
#: backend/raw_write.py:310 backend/raw_write.py:347 backend/raw_write.py:383
#: backend/raw_write.py:408
msgid "Error {} while doing persistent partition: {}"
msgstr ""

#: backend/raw_write.py:223
msgid "Try reloading partition table"
msgstr ""

#: backend/raw_write.py:237
msgid "Unable to reload the partition table: {}"
msgstr ""

#: backend/raw_write.py:258
msgid "Persistent partition added. Formatting..."
msgstr ""

#: backend/raw_write.py:276 backend/raw_write.py:413
msgid "Persistent partition done"
msgstr ""

#: backend/raw_write.py:285
msgid "formatting partition"
msgstr ""

#: backend/raw_write.py:289
msgid "Persistent partition added. Encrypting..."
msgstr ""

#: backend/raw_write.py:316
msgid "Persistent partition encrypted. Opening..."
msgstr ""

#: backend/raw_write.py:353
msgid "opening encrypted partition"
msgstr ""

#: backend/raw_write.py:356
msgid "Persistent partition opened. Formatting..."
msgstr ""

#: backend/raw_write.py:391
msgid "formatting encrypted partition"
msgstr ""

#: backend/raw_write.py:415
msgid "closing encrypted partition"
msgstr ""

#: lib/isodumper.py:158 lib/isodumper.py:175
msgid "A partition is busy. Try to free it before starting again."
msgstr ""

#: lib/isodumper.py:330
msgid "Target Device: {}"
msgstr ""

#. I18N: verb in singular 3rd person
#: lib/isodumper.py:336
msgid "Contains this/these partition(s)"
msgstr ""

#: lib/isodumper.py:340
#, python-brace-format
msgid "{device}: Type={type}, Label={label}"
msgstr ""

#. I18N: None refers to partition (no partitions on the selected device)
#: lib/isodumper.py:348
msgid "None"
msgstr ""

#. I18N these are units for files size
#: lib/isodumper.py:369
msgid "B"
msgstr "b"

#: lib/isodumper.py:369
msgid "GiB"
msgstr ""

#: lib/isodumper.py:369
msgid "KiB"
msgstr ""

#: lib/isodumper.py:369
msgid "MiB"
msgstr ""

#: lib/isodumper.py:369 lib/isodumper.py:373
msgid "TiB"
msgstr ""

#: lib/isodumper.py:378
msgid "Backup to:"
msgstr ""

#: lib/isodumper.py:408
msgid "GPG signatures database can not be read"
msgstr ""

#: lib/isodumper.py:445
msgid "Signature file {} not found\n"
msgstr ""

#: lib/isodumper.py:445
msgid "or key expired"
msgstr ""

#: lib/isodumper.py:459
msgid "Persistence partition is to use when writing a Live ISO image."
msgstr ""

#: lib/isodumper.py:464
msgid "Formatting confirmation in {}"
msgstr ""

#: lib/isodumper.py:477
msgid "The device was formatted successfully."
msgstr ""

#: lib/isodumper.py:479
msgid "An error occurred while creating a partition."
msgstr ""

#: lib/isodumper.py:481
msgid "Authentication error."
msgstr ""

#: lib/isodumper.py:483
msgid "An error {} occurred."
msgstr ""

#: lib/isodumper.py:499 lib/isodumper.py:1079
msgid "Progress"
msgstr ""

#: lib/isodumper.py:513 lib/isodumper.py:646 lib/isodumper.py:735
msgid "unmounting"
msgstr ""

#: lib/isodumper.py:575
msgid "Backup"
msgstr ""

#: lib/isodumper.py:579
msgid "Backup confirmation"
msgstr ""

#: lib/isodumper.py:579
msgid "Do you want to overwrite the file?"
msgstr ""

#: lib/isodumper.py:589
#, python-format
msgid ""
"The destination directory is too small to receive the backup (%s Mb needed)"
msgstr ""

#: lib/isodumper.py:599
msgid "Backup to: {}"
msgstr ""

#. I18N: don't translate source nor target
#: lib/isodumper.py:617
#, python-brace-format
msgid "{source} successfully written to {target}"
msgstr ""

#: lib/isodumper.py:630
msgid "The device is too small to contain the ISO file."
msgstr ""

#: lib/isodumper.py:636
#, python-brace-format
msgid "Writing {source} to {target}"
msgstr ""

#: lib/isodumper.py:640
#, python-brace-format
msgid "Executing copy from {source} to {target}"
msgstr ""

#. I18N: don't translate source nor target
#: lib/isodumper.py:659
#, python-brace-format
msgid "Image {source} written to {target}"
msgstr ""

#: lib/isodumper.py:662
msgid "Bytes written: {}"
msgstr ""

#: lib/isodumper.py:664
msgid "Checking "
msgstr ""

#: lib/isodumper.py:682
msgid "Adding partition"
msgstr ""

#: lib/isodumper.py:687
msgid "No key for encrypted partition provided. Adding the partition aborted."
msgstr ""

#: lib/isodumper.py:704
msgid "Added encrypted partition"
msgstr ""

#: lib/isodumper.py:710
msgid "Adding encrypted partition failed"
msgstr ""

#: lib/isodumper.py:725
msgid "Added partition"
msgstr ""

#: lib/isodumper.py:727
msgid "Adding partition failed"
msgstr ""

#: lib/isodumper.py:758
msgid "Success"
msgstr ""

#: lib/isodumper.py:760
msgid "The operation completed successfully."
msgstr ""

#: lib/isodumper.py:763 lib/isodumper.py:782
msgid ""
"You are free to unplug it now, a logfile \n"
"/var/log/magiback.log has been saved."
msgstr ""

#: lib/isodumper.py:774 lib/isodumper.py:794 lib/isodumper.py:1147
#: lib/isodumper.py:1164 lib/isodumper.py:1272
msgid "Warning"
msgstr "Diwallit"

#: lib/isodumper.py:777
msgid ""
"The operation completed, but with anomalies.\n"
" Check carefully the messages in log view"
msgstr ""

#: lib/isodumper.py:797
msgid ""
"Writing is in progress. Exiting during writing \n"
"            will make the device or the backup unusable.\n"
"            Are you sure you want to quit during writing?"
msgstr ""

#: lib/isodumper.py:811 lib/isodumper.py:935 lib/isodumper.py:1262
#: lib/isodumper.py:1281
msgid "Error"
msgstr "Fazi"

#: lib/isodumper.py:846
msgid "ISO Image to copy: "
msgstr ""

#: lib/isodumper.py:853
msgid "IsoDumper"
msgstr ""

#: lib/isodumper.py:855
msgid "Mageia IsoDumper"
msgstr ""

#: lib/isodumper.py:859
msgid ""
"This GUI program is primarily for safely writing a bootable ISO image to a "
"USB flash drive, an operation devious & potentially hazardous when done by "
"hand. As a bonus, it can also back up the entire previous contents of the "
"flash drive onto the hard disc, and restore the flash drive to its previous "
"state subsequently."
msgstr ""

#: lib/isodumper.py:865
msgid "It gives also a feature for formatting the USB device."
msgstr ""

#: lib/isodumper.py:868
msgid ""
"IsoDumper can be launched either from the menus, or a user console with the "
"command 'isodumper'."
msgstr ""

#: lib/isodumper.py:872
msgid ""
"The root password is solicited when this is necessary for the program's "
"operation."
msgstr ""

#: lib/isodumper.py:876
msgid ""
"The flash drive can be inserted beforehand or once the program is started. "
"In the latter case, a dialogue will say that there is no flash drive "
"inserted, and allow a 'retry' to find it once it is. <BR />(You may have to "
"close any automatically opened File Manager window)."
msgstr ""

#: lib/isodumper.py:882
msgid ""
"The fields of the main window are as follows:<BR />- Device to work on: the "
"device of the USB flash drive, a drop-down list to choose from.<BR />- Write "
"Image: to choose the source ISO image *.iso (or flash drive backup file *."
"img) to write out.<BR />- Write to device: This button launches the "
"operation - with a prior warning dialogue."
msgstr ""

#: lib/isodumper.py:889
msgid ""
"- Add a persistent partition: the remaining space will be used in a new "
"partition where data from the Live system can be written and recovered "
"between sessions."
msgstr ""

#: lib/isodumper.py:893
msgid ""
"- Encrypt: the persistent partition will be encrypted with the key provided "
"in <i>Key</i> field."
msgstr ""

#: lib/isodumper.py:896
msgid "The operation is shown in the progress bar beneath."
msgstr ""

#: lib/isodumper.py:899
msgid ""
"- Backup to: define the name and placement of the backup image file. The "
"current flash drive will be backed up to a disc file. Note that the entire "
"flash drive is preserved, regardless of its actual contents; ensure that you "
"have the necessary free disc space (the same size as the USB device). This "
"backup file can be used later to restore the flash drive by selecting it as "
"the source *.img file to write out."
msgstr ""

#: lib/isodumper.py:905
msgid "- Backup the device: launch the backup operation."
msgstr ""

#: lib/isodumper.py:908
msgid ""
"- Format the device: create an unique partition on the entire volume in the "
"specified format in FAT, exFAT, NTFS or ext. You can specify a volume name "
"and the format in a new dialog box."
msgstr ""

#: lib/isodumper.py:937
msgid "There is another instance of Isodumper already running."
msgstr ""

#: lib/isodumper.py:950
msgid "Choose an image"
msgstr ""

#: lib/isodumper.py:952
msgid ""
"Warning\n"
"This will destroy all data on the target device,\n"
"        are you sure you want to proceed?\n"
"        If you say ok here, please <b>do not unplug</b>        the device "
"during the following operation."
msgstr ""

#: lib/isodumper.py:963
msgid "Isodumper {}"
msgstr ""

#: lib/isodumper.py:998
msgid "Select the device to work on:"
msgstr ""

#: lib/isodumper.py:1002
msgid "Update list"
msgstr ""

#: lib/isodumper.py:1005
msgid "Select operations"
msgstr ""

#: lib/isodumper.py:1013
msgid "The selected operations will be executed in order from top to bottom."
msgstr ""

#: lib/isodumper.py:1014
msgid ""
"If both write image and create partition are selected, the partition will be "
"created in the free space after the image."
msgstr ""

#: lib/isodumper.py:1019
msgid "Backup the device to:"
msgstr ""

#: lib/isodumper.py:1030
msgid "Write Image from:"
msgstr ""

#: lib/isodumper.py:1040
msgid "Create partition of type:"
msgstr ""

#: lib/isodumper.py:1043
msgid "Type:"
msgstr ""

#: lib/isodumper.py:1046
msgid "FAT32"
msgstr ""

#: lib/isodumper.py:1047 lib/isodumper.py:1240
msgid "ext4"
msgstr ""

#: lib/isodumper.py:1048
msgid "NTFS"
msgstr ""

#: lib/isodumper.py:1049
msgid "exFAT"
msgstr ""

#: lib/isodumper.py:1050 lib/isodumper.py:1240 lib/isodumper.py:1242
msgid "Persistent partition"
msgstr ""

#: lib/isodumper.py:1056
msgid "Label:"
msgstr ""

#: lib/isodumper.py:1061
msgid "Encrypt partition using LUKS, with key:"
msgstr ""

#: lib/isodumper.py:1065
msgid "Key:"
msgstr ""

#: lib/isodumper.py:1068
msgid "Execution"
msgstr ""

#: lib/isodumper.py:1071
msgid "When you are sure all options are correct, start:"
msgstr ""

#: lib/isodumper.py:1074 lib/isodumper.py:1336
msgid "Execute"
msgstr "Seveniñ"

#: lib/isodumper.py:1084
msgid "Report"
msgstr "Dezrevell"

#: lib/isodumper.py:1087
msgid "About"
msgstr ""

#: lib/isodumper.py:1089
msgid "Help"
msgstr ""

#: lib/isodumper.py:1091
msgid "Quit"
msgstr ""

#: lib/isodumper.py:1150
msgid "The validation of the GPG signature of the checksum file failed !"
msgstr ""

#: lib/isodumper.py:1153
msgid "Do you want to continue?"
msgstr ""

#: lib/isodumper.py:1161
msgid "The checksum file is signed"
msgstr ""

#: lib/isodumper.py:1167
msgid ""
"No GPG signature has been found or the key is expired. Are you sure you want "
"to use this image?"
msgstr ""

#: lib/isodumper.py:1262
msgid "No image for backup is selected."
msgstr ""

#: lib/isodumper.py:1268
msgid "Writing confirmation"
msgstr ""

#: lib/isodumper.py:1275
msgid "The device is bigger than 32 Gbytes. Are you sure you want use it?"
msgstr ""

#: lib/isodumper.py:1281
msgid "No image to write is selected."
msgstr ""

#: lib/isodumper.py:1316
msgid "Label for the device:"
msgstr ""

#: lib/isodumper.py:1321
msgid "FAT32 (Windows)"
msgstr ""

#: lib/isodumper.py:1325
msgid "exFAT (Windows)"
msgstr ""

#: lib/isodumper.py:1329
msgid "NTFS (Windows)"
msgstr ""

#: lib/isodumper.py:1333
msgid "ext4 (Linux)"
msgstr ""

#: lib/isodumper.py:1337 lib/isodumper.py:1425
msgid "Cancel"
msgstr "Nullañ"

#: lib/isodumper.py:1379
msgid "OK"
msgstr "Mat eo"

#: lib/isodumper.py:1391
msgid "Yes"
msgstr "Ya"

#: lib/isodumper.py:1392
msgid "No"
msgstr "Ket"

#: lib/isodumper.py:1405
msgid "Oliver Grawert<BR />Papoteur<BR />Pictures : Timothée Giet"
msgstr ""

#: lib/isodumper.py:1406
msgid "A tool for writing ISO images to  a device"
msgstr ""

#: lib/isodumper.py:1421
msgid ""
"Warning\n"
"No target devices were found.\n"
"You need to plug in a USB Key to which the image can be written."
msgstr ""

#: lib/isodumper.py:1424
msgid "Refresh"
msgstr ""

#: lib/isodumper.py:1450
msgid "UDisks2 is not available on your system"
msgstr ""

#: lib/isodumper.py:1488
msgid "allow debug information"
msgstr ""

#: share/applications/format-usb.desktop.in.h:1
msgid "A GUI tool to format USB sticks"
msgstr ""

#: share/applications/isodumper.desktop.in.h:1
msgid "A GUI tool to write .img and .iso files to USB sticks"
msgstr ""

#~ msgid "Encrypt partition"
#~ msgstr "Enrinegañ ar barzhadur"