Browse Source

Merge tag '3.62' into suites/unstable

tags/devuan/3.62+devuan1
Mark Hindley 5 months ago
parent
commit
cf45b938df
26 changed files with 636 additions and 214 deletions
  1. +1
    -0
      .gitignore
  2. +1
    -1
      Makefile
  3. +134
    -4
      debian/changelog
  4. +0
    -1
      debian/compat
  5. +100
    -152
      debian/control
  6. +10
    -6
      debian/po/bg.po
  7. +4
    -4
      debian/po/pt.po
  8. +9
    -7
      debian/po/tg.po
  9. +1
    -1
      debian/rules
  10. +2
    -0
      debian/source/lintian-overrides
  11. +1
    -0
      debian/task-cinnamon-desktop.lintian-overrides
  12. +1
    -0
      debian/task-gnome-desktop.lintian-overrides
  13. +1
    -0
      debian/task-laptop.lintian-overrides
  14. +1
    -0
      debian/task-lxde-desktop.lintian-overrides
  15. +1
    -0
      debian/task-lxqt-desktop.lintian-overrides
  16. +1
    -0
      debian/task-mate-desktop.lintian-overrides
  17. +1
    -0
      debian/task-xfce-desktop.lintian-overrides
  18. +4
    -0
      debian/tasksel.lintian-overrides
  19. +1
    -1
      debian/templates
  20. +46
    -0
      po/tg.po
  21. +7
    -0
      tasks/gnome-flashback-desktop
  22. +4
    -4
      tasks/po/tg.po
  23. +0
    -6
      tasks/print-service
  24. +303
    -25
      tasksel.pl
  25. +1
    -1
      tests/default-desktop
  26. +1
    -1
      tests/desktop

+ 1
- 0
.gitignore View File

@@ -2,4 +2,5 @@
debian/files
debian/tasksel*
debian/task-*
!debian/*.lintian-overrides
debian-tasks.desc

+ 1
- 1
Makefile View File

@@ -63,7 +63,7 @@ install-data:
done
for lang in $(LANGS_DESC); do \
[ ! -d $(LOCALEDIR)/$$lang/LC_MESSAGES/ ] && mkdir -p $(LOCALEDIR)/$$lang/LC_MESSAGES/; \
install -m 644 tasks/po/$$lang.mo $(LOCALEDIR)/$$lang/LC_MESSAGES/$(DOMAIN).mo; \
install -m 644 $(DESCDIR)/po/$$lang.mo $(LOCALEDIR)/$$lang/LC_MESSAGES/$(DOMAIN).mo; \
done

clean:


+ 134
- 4
debian/changelog View File

@@ -1,3 +1,133 @@
tasksel (3.62) unstable; urgency=low

* Team upload.

[ Dmitry Shachnev ]
* Add a task for the Gnome Flashback desktop environment. Closes: #805305

-- Holger Wansing <hwansing@mailbox.org> Sun, 20 Dec 2020 18:05:23 +0100

tasksel (3.61) unstable; urgency=low

* task-french: Re-add dependency on manpages-fr (Closes: #973873)
* Switch to debhelper 13.
Replace the obsolete d/compat with a Build-Depends on debhelper-compat.

* Update maintainer name
* Amend changelog for v3.60, mention #972076 in the standard way.
* d/control: Declare compliance with policy v4.5.1.
No change required.
* lintian
+ Override description-too-short
+ Override debconf-related warnings about tasksel
+ Do not warn on lintian ↔ lintian-data circular dep

-- nicoo <nicoo@debian.org> Wed, 18 Nov 2020 02:40:32 +0100

tasksel (3.60) unstable; urgency=medium

* Team upload.

[ Holger Wansing ]
* task-sinhala-desktop: replace obsolete metapackage fonts-noto-hinted by
fonts-noto-core and fonts-noto-ui-core. Closes: #949766
* Drop no-longer existing kde-l10n-* packages from various tasks.
Closes: #949694

[ Changwoo Ryu ]
* task-korean-desktop: Remove fonts-nanum-coding, which is now a
transitional package.

[ Bryan Quigley ]
* Switch LibreOffice from other desktop tasks to match the LibreOffice apps
Gnome brings in.
* Moved from transitional -kde integration.
* Switched lxde from removed -gtk2 integration to -gtk3.
* Added libreoffice-qt5 to LXQt.

[ Sven Joachim ]
* Avoid tempfile deprecation warning. Since debianutils 4.10, tempfile is
deprecated in favor of mktemp. (Closes: #972076)

[ Updated debconf translations ]
* Bulgarian (bg.po) by Damyan Ivanov.
* Portuguese (pt.po) by Miguel Figueiredo.

[ Raphaël Hertzog ]
* Fix the name of the Acquire::Retries option passed to apt-get (the option
is not part of the "APT" group).

-- Raphaël Hertzog <raphael@offensive-security.com> Fri, 06 Nov 2020 11:48:08 +0100

tasksel (3.59) unstable; urgency=medium

[ Didier Raboud ]
* Remove task-print-service. CUPS is now the de-facto only print server and
is already pulled by the concerned desktop environments. Closes: #950553

[ Timo Jyrinki ]
* Add libenchant-2-voikko for Finnish.
* Add giella-sme and libenchant-2-voikko for Northern Sami, remove
hunspell-se (lower quality spell-checking).

-- Cyril Brulebois <kibi@debian.org> Sun, 08 Mar 2020 21:35:08 +0100

tasksel (3.58) unstable; urgency=medium

* Team upload.

[ Raphaël Hertzog ]
* Makefile improvement: don't hardcode the "tasks" directory, use the
$(DESCDIR) variable.
* Fix default desktop selection by using the tasksel/desktop debconf setting
only if it's non empty.

[ Boyuan Yang ]
* Drop recommendation to qt4-related packages. Closes: #944115

[ Holger Wansing ]
* Use print-manager instead of system-config-printer for KDE installation task.
Closes: #945846
* Remove xfce4-mixer from xfce-desktop task (has been removed from the
archive; successor is xfce4-pulseaudio-plugin). Closes: #946755

-- Holger Wansing <hwansing@mailbox.org> Wed, 01 Jan 2020 20:13:37 +0100

tasksel (3.57) unstable; urgency=medium

* Team upload.
* tasksel should be priority=optional. Also, priority is to be declared only
once in control file. (Closes: #855151)

-- Holger Wansing <hwansing@mailbox.org> Tue, 19 Nov 2019 19:46:56 +0100

tasksel (3.56) unstable; urgency=high (RC bugfix)

[ nicoo ]
* task-spanish: Drop dependency on manpages-es (Closes: #942270)
* task-xfce-desktop: Use libreoffice-gtk3 instead of -gtk2 (Closes: #939533)
* Add task-print-server transitional package (Closes: #932818)
* Declare compliance with policy v4.4.1.
No change required.

[ Aron Xu ]
* Move fonts-arphic-* to Suggests for task-chinese-{s,t}-desktop.
Closes: #942103

-- nicoo <nicoo@debian.org> Wed, 16 Oct 2019 13:41:38 +0200

tasksel (3.55) unstable; urgency=medium

[ Changwoo Ryu ]
* Add gnome-initial-setup to task-korean-gnome-desktop.
GNOME doesn't set the working Korean IM by default without it.
* Add fonts-noto and fonts-noto-cjk to task-korean-desktop.

[ Victor Ibragimov ]
* Updated Tajik translation (tg.po)

-- nicoo <nicoo@debian.org> Wed, 28 Aug 2019 14:22:40 +0200

tasksel (3.54+devuan3) unstable; urgency=medium

* Cherry pick from upstream: Add task-print-server transitional package. (Closes: #932818)
@@ -36,7 +166,7 @@ tasksel (3.54) unstable; urgency=low
* task-print-service: Drop dependencies on cups-* implied by cups itself
Closes: #824645

[ Nicolas Braud-Santoni ]
[ nicoo ]
* task-xfce-desktop: Downgrade dependency on light-locker (Closes: #827562)
light-locker creates issues on some platforms (not available on kFreeBSD or
Hurd) and creates issues for users who prefer xscreensaver.
@@ -51,7 +181,7 @@ tasksel (3.54) unstable; urgency=low
[ Daniel Lewart ]
* Remove dependencies on transitional packages. (Closes: #929746)

-- Nicolas Braud-Santoni <nicoo@debian.org> Sat, 13 Jul 2019 12:20:31 +0200
-- nicoo <nicoo@debian.org> Sat, 13 Jul 2019 12:20:31 +0200

tasksel (3.53) unstable; urgency=medium

@@ -231,7 +361,7 @@ tasksel (3.45) unstable; urgency=medium

tasksel (3.44) unstable; urgency=medium

[ Nicolas Braud-Santoni ]
[ nicoo ]
* Team upload.
* Add myself as uploader.

@@ -257,7 +387,7 @@ tasksel (3.44) unstable; urgency=medium
* Update Vcs-{Browser,Git} to point to salsa (alioth's replacement).
(Closes: #861932)

-- Nicolas Braud-Santoni <nicolas@braud-santoni.eu> Wed, 23 May 2018 23:56:54 +0200
-- nicoo <nicoo@debian.org> Wed, 23 May 2018 23:56:54 +0200

tasksel (3.43) unstable; urgency=medium



+ 0
- 1
debian/compat View File

@@ -1 +0,0 @@
9

+ 100
- 152
debian/control View File

@@ -4,8 +4,12 @@ Priority: optional
Maintainer: Devuan Dev Team <devuan-dev@lists.dyne.org>
Uploaders: Daniel Reurich <daniel@centurion.net.nz>,
Mark Hindley <mark@hindley.org.uk>
Standards-Version: 4.4.0
Build-Depends: po-debconf, debhelper (>= 9), gettext, dpkg-dev (>= 1.9.0), git, devuan-keyring
Standards-Version: 4.5.1
Build-Depends:
debhelper-compat (= 13),
dpkg-dev (>= 1.9.0),
gettext,
po-debconf
Vcs-Git: https://git.devuan.org/devuan/tasksel.git
Vcs-Browser: https://git.devuan.org/devuan/tasksel
Rules-Requires-Root: no
@@ -13,7 +17,6 @@ Origin: Devuan

Package: tasksel
Section: admin
Priority: important
Architecture: all
Pre-Depends: debconf (>= 1.5.34) | cdebconf (>= 0.106)
Depends: ${misc:Depends}, liblocale-gettext-perl, apt, tasksel-data, perl-base (>= 5.14.0-1)
@@ -24,7 +27,6 @@ Description: tool for selecting tasks for installation on Devuan systems

Package: tasksel-data
Section: admin
Priority: important
Architecture: all
Depends: ${misc:Depends}
Recommends: laptop-detect, tasksel
@@ -105,6 +107,61 @@ Recommends:
# we need a working network setup at least
network-manager-gnome,

Package: task-gnome-flashback-desktop
Architecture: all
Description: GNOME Flashback
This task package is used to install the Debian desktop, featuring
the GNOME Flashback desktop environment, and with other packages that
Debian users expect to have available on the desktop.
Depends: ${misc:Depends},
task-desktop,
# the basic components required for the session
gnome-session-flashback,
# the display manager
gdm3,
# the control center
gnome-control-center,
# some core GNOME applications
eog,
evince,
file-roller,
gedit,
gnome-calculator,
gnome-screenshot,
gnome-terminal,
totem,
# network manager applet
network-manager-gnome,
Recommends:
# GNOME support in LibreOffice
libreoffice-gnome,
# libreoffice is the best word processor / office suite at the moment
libreoffice-writer,
libreoffice-calc,
libreoffice-impress,
# make help menu work
libreoffice-help-en-us,
# make thesaurus work
mythes-en-us,
# make spellchecker work
hunspell-en-us,
# make hyphenation work
hyphen-en-us,
# accessibility support
gnome-orca,
# web browser
firefox | firefox-esr,
# mail client
evolution,
# package management
gnome-software,
# some non-core GNOME applications
alacarte,
gnome-disk-utility,
gnome-documents,
gnome-tweaks,
yelp,

Package: task-kde-desktop
Architecture: all
Description: KDE
@@ -131,9 +188,12 @@ Recommends:
# temporarily moved from task-desktop due to #525077
gimp,
# libreoffice is the best word processor / office suite at the moment
libreoffice,
libreoffice-writer,
libreoffice-calc,
libreoffice-impress,
# KDE support in LibreOffice
libreoffice-kde5,
libreoffice-plasma,
libreoffice-kf5,
# make help menu work
libreoffice-help-en-us,
# make thesaurus work
@@ -143,7 +203,7 @@ Recommends:
# make hyphenation work
hyphen-en-us,
# gui for configuration of the print service
system-config-printer,
print-manager,
# media player
dragonplayer,

@@ -162,11 +222,13 @@ Recommends:
lxlauncher,
xsane,
# libreoffice widgets using just gtk, and also accessibility needs the GTK frontend
libreoffice-gtk2,
libreoffice-gtk3,
# Package management.
synaptic,
# libreoffice is the best word processor / office suite at the moment
libreoffice,
libreoffice-writer,
libreoffice-calc,
libreoffice-impress,
# make help menu work
libreoffice-help-en-us,
# make thesaurus work
@@ -197,12 +259,15 @@ Depends: ${misc:Depends},
Recommends: xsane,
# orca works with qt, adding accessibility
orca,
# libreoffice widgets using just gtk
# libreoffice widgets using just gtk and qt
libreoffice-gtk3,
libreoffice-qt5,
# Package management.
synaptic,
# libreoffice is the best word processor / office suite at the moment
libreoffice,
libreoffice-writer,
libreoffice-calc,
libreoffice-impress,
# make help menu work
libreoffice-help-en-us,
# make thesaurus work
@@ -250,7 +315,9 @@ Recommends:
# package management
synaptic,
# libreoffice is the best word processor / office suite at the moment
libreoffice,
libreoffice-writer,
libreoffice-calc,
libreoffice-impress,
# make help menu work
libreoffice-help-en-us,
# make thesaurus work
@@ -264,7 +331,7 @@ Recommends:
# orca works with xfce, adding accessibility
orca,
# libreoffice accessibility needs the GTK frontend
libreoffice-gtk2,
libreoffice-gtk3,

Package: task-cinnamon-desktop
Architecture: all
@@ -293,7 +360,9 @@ Recommends:
# Package management.
synaptic,
# libreoffice is the best word processor / office suite at the moment
libreoffice,
libreoffice-writer,
libreoffice-calc,
libreoffice-impress,
# make help menu work
libreoffice-help-en-us,
# make thesaurus work
@@ -335,34 +404,6 @@ Recommends:
apache2-doc,
analog,

Package: task-print-service
Architecture: all
Description: print service
This task sets up your system to provide print services. It is required to
use printers plugged into your system, network printers, or to make available
printers plugged into this system to other network systems.
Provides: task-print-server
Depends: ${misc:Depends},
cups
Recommends:
foomatic-db-engine,
printer-driver-all,
hplip,
hp-ppd,
openprinting-ppds,

Package: task-print-server
Architecture: all
Section: oldlibs
Description: print service -- transitional package
This task sets up your system to provide print services. It is required to
use printers plugged into your system, network printers, or to make available
printers plugged into this system to other network systems.
.
This is a transitional package, task-print-server was renamed to
task-print-service.
Depends: ${misc:Depends}, task-print-service

Package: task-ssh-server
Architecture: all
Description: SSH server
@@ -552,7 +593,6 @@ Description: Amharic KDE Plasma desktop
This task localises the KDE Plasma desktop in Amharic.
Depends: ${misc:Depends},
Recommends:
fcitx-frontend-qt4,
fcitx-frontend-qt5,
kde-config-fcitx

@@ -586,8 +626,6 @@ Architecture: all
Description: Arabic KDE Plasma desktop
This task localises the KDE Plasma desktop in Arabic.
Depends: ${misc:Depends},
Recommends:
kde-l10n-ar

Package: task-asturian
Architecture: all
@@ -631,8 +669,6 @@ Architecture: all
Description: Basque KDE Plasma desktop
This task localises the KDE Plasma desktop in Basque.
Depends: ${misc:Depends},
Recommends:
kde-l10n-eu

Package: task-belarusian
Architecture: all
@@ -713,8 +749,6 @@ Architecture: all
Description: Bosnian KDE Plasma desktop
This task localises the KDE Plasma desktop in Bosnian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-bs

Package: task-brazilian-portuguese
Architecture: all
@@ -749,8 +783,6 @@ Architecture: all
Description: Brazilian Portuguese KDE Plasma desktop
This task localises the KDE Plasma desktop in Brazilian Portuguese.
Depends: ${misc:Depends},
Recommends:
kde-l10n-ptbr

Package: task-british-desktop
Architecture: all
@@ -769,8 +801,6 @@ Architecture: all
Description: British KDE Plasma desktop
This task localises the KDE Plasma desktop in British.
Depends: ${misc:Depends},
Recommends:
kde-l10n-engb

Package: task-bulgarian
Architecture: all
@@ -801,8 +831,6 @@ Architecture: all
Description: Bulgarian KDE Plasma desktop
This task localises the KDE Plasma desktop in Bulgarian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-bg

Package: task-catalan
Architecture: all
@@ -834,8 +862,6 @@ Architecture: all
Description: Catalan KDE Plasma desktop
This task localises the KDE Plasma desktop in Catalan.
Depends: ${misc:Depends},
Recommends:
kde-l10n-ca

Package: task-chinese-s
Architecture: all
@@ -862,8 +888,6 @@ Recommends:
fcitx-googlepinyin,
fcitx-table-wubi,
# Fonts
fonts-arphic-ukai,
fonts-arphic-uming,
fonts-noto,
fonts-noto-cjk,
# Software help and localization
@@ -875,6 +899,9 @@ Recommends:
# poppler-data is needed to display
# Chinese on poppler applications.
poppler-data
Suggests:
fonts-arphic-ukai,
fonts-arphic-uming

Package: task-chinese-s-kde-desktop
Architecture: all
@@ -882,8 +909,6 @@ Description: Simplified Chinese KDE Plasma desktop
This task localises the KDE Plasma desktop in Simplified Chinese.
Depends: ${misc:Depends},
Recommends:
kde-l10n-zhcn,
fcitx-frontend-qt4,
fcitx-frontend-qt5,
kde-config-fcitx

@@ -907,8 +932,6 @@ Recommends:
fcitx-chewing,
fcitx-table,
im-config,
fonts-arphic-ukai,
fonts-arphic-uming,
# seems openjdk needs this to display Chinese.
fonts-noto,
fonts-noto-cjk,
@@ -918,6 +941,9 @@ Recommends:
# poppler-data is needed to display
# Chinese on poppler applications.
poppler-data
Suggests:
fonts-arphic-ukai,
fonts-arphic-uming

Package: task-chinese-t-kde-desktop
Architecture: all
@@ -925,7 +951,6 @@ Description: Traditional Chinese KDE Plasma desktop
This task localises the KDE Plasma desktop in Traditional Chinese.
Depends: ${misc:Depends},
Recommends:
kde-l10n-zhtw,
scim-qt-immodule

Package: task-croatian
@@ -956,8 +981,6 @@ Architecture: all
Description: Croatian KDE Plasma desktop
This task localises the KDE Plasma desktop in Croatian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-hr

Package: task-czech
Architecture: all
@@ -987,8 +1010,6 @@ Architecture: all
Description: Czech KDE Plasma desktop
This task localises the KDE Plasma desktop in Czech.
Depends: ${misc:Depends},
Recommends:
kde-l10n-cs

Package: task-danish
Architecture: all
@@ -1018,8 +1039,6 @@ Architecture: all
Description: Danish KDE Plasma desktop
This task localises the KDE Plasma desktop in Danish.
Depends: ${misc:Depends},
Recommends:
kde-l10n-da

Package: task-dutch
Architecture: all
@@ -1049,8 +1068,6 @@ Architecture: all
Description: Dutch KDE Plasma desktop
This task localises the KDE Plasma desktop in Dutch.
Depends: ${misc:Depends},
Recommends:
kde-l10n-nl

Package: task-dzongkha-desktop
Architecture: all
@@ -1104,8 +1121,6 @@ Architecture: all
Description: Esperanto KDE Plasma desktop
This task localises the KDE Plasma desktop in Esperanto.
Depends: ${misc:Depends},
Recommends:
kde-l10n-eo

Package: task-estonian
Architecture: all
@@ -1131,8 +1146,6 @@ Architecture: all
Description: Estonian KDE Plasma desktop
This task localises the KDE Plasma desktop in Estonian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-et

Package: task-finnish
Architecture: all
@@ -1143,7 +1156,8 @@ Depends: ${misc:Depends},
Recommends:
tmispell-voikko,
voikko-fi,
libenchant-voikko
libenchant-voikko,
libenchant-2-voikko

Package: task-finnish-desktop
Architecture: all
@@ -1161,8 +1175,6 @@ Architecture: all
Description: Finnish KDE Plasma desktop
This task localises the KDE Plasma desktop in Finnish.
Depends: ${misc:Depends},
Recommends:
kde-l10n-fi

Package: task-french
Architecture: all
@@ -1174,6 +1186,7 @@ Recommends:
ifrench-gut,
wfrench,
aspell-fr,
manpages-fr,
# Other packages to i18n common software
util-linux-locales

@@ -1194,8 +1207,6 @@ Architecture: all
Description: French KDE Plasma desktop
This task localises the KDE Plasma desktop in French.
Depends: ${misc:Depends},
Recommends:
kde-l10n-fr

Package: task-galician
Architecture: all
@@ -1223,8 +1234,6 @@ Architecture: all
Description: Galician KDE Plasma desktop
This task localises the KDE Plasma desktop in Galician.
Depends: ${misc:Depends},
Recommends:
kde-l10n-gl

Package: task-georgian-desktop
Architecture: all
@@ -1269,8 +1278,6 @@ Architecture: all
Description: German KDE Plasma desktop
This task localises the KDE Plasma desktop in German.
Depends: ${misc:Depends},
Recommends:
kde-l10n-de

Package: task-greek
Architecture: all
@@ -1300,8 +1307,6 @@ Architecture: all
Description: Greek KDE Plasma desktop
This task localises the KDE Plasma desktop in Greek.
Depends: ${misc:Depends},
Recommends:
kde-l10n-el

Package: task-gujarati
Architecture: all
@@ -1369,8 +1374,6 @@ Architecture: all
Description: Hebrew KDE Plasma desktop
This task localises the KDE Plasma desktop in Hebrew.
Depends: ${misc:Depends},
Recommends:
kde-l10n-he

Package: task-hindi
Architecture: all
@@ -1398,8 +1401,6 @@ Architecture: all
Description: Hindi KDE Plasma desktop
This task localises the KDE Plasma desktop in Hindi.
Depends: ${misc:Depends},
Recommends:
kde-l10n-hi

Package: task-hungarian
Architecture: all
@@ -1437,8 +1438,6 @@ Architecture: all
Description: Hungarian KDE Plasma desktop
This task localises the KDE Plasma desktop in Hungarian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-hu

Package: task-icelandic
Architecture: all
@@ -1463,8 +1462,6 @@ Architecture: all
Description: Icelandic KDE Plasma desktop
This task localises the KDE Plasma desktop in Icelandic.
Depends: ${misc:Depends},
Recommends:
kde-l10n-is

Package: task-indonesian-desktop
Architecture: all
@@ -1480,8 +1477,6 @@ Architecture: all
Description: Indonesian KDE Plasma desktop
This task localises the KDE Plasma desktop in Indonesian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-id

Package: task-irish
Architecture: all
@@ -1507,8 +1502,6 @@ Architecture: all
Description: Irish KDE Plasma desktop
This task localises the KDE Plasma desktop in Irish.
Depends: ${misc:Depends},
Recommends:
kde-l10n-ga

Package: task-italian
Architecture: all
@@ -1542,8 +1535,6 @@ Architecture: all
Description: Italian KDE Plasma desktop
This task localises the KDE Plasma desktop in Italian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-it

Package: task-japanese
Architecture: all
@@ -1597,8 +1588,6 @@ Architecture: all
Description: Japanese KDE Plasma desktop
This task localises the KDE Plasma desktop in Japanese.
Depends: ${misc:Depends},
Recommends:
kde-l10n-ja

Package: task-kannada-desktop
Architecture: all
@@ -1645,8 +1634,6 @@ Architecture: all
Description: Kazakh KDE Plasma desktop
This task localises the KDE Plasma desktop in Kazakh.
Depends: ${misc:Depends},
Recommends:
kde-l10n-kk

Package: task-khmer
Architecture: all
@@ -1673,8 +1660,6 @@ Architecture: all
Description: Khmer KDE Plasma desktop
This task localises the KDE Plasma desktop in Khmer.
Depends: ${misc:Depends},
Recommends:
kde-l10n-km

Package: task-korean
Architecture: all
@@ -1694,7 +1679,8 @@ Recommends:
im-config,
ibus-hangul,
fonts-nanum,
fonts-nanum-coding,
fonts-noto,
fonts-noto-cjk,
firefox-esr-l10n-ko | firefox-l10n-ko,
libreoffice-help-ko,
libreoffice-l10n-ko,
@@ -1709,6 +1695,8 @@ Description: Korean GNOME desktop
This task localises the GNOME desktop in Korean.
Depends: ${misc:Depends},
Recommends:
# GNOME doesn't set the working Korean IM by default
gnome-initial-setup,
ibus-gtk,
ibus-gtk3

@@ -1717,9 +1705,6 @@ Architecture: all
Description: Korean KDE Plasma desktop
This task localises the KDE Plasma desktop in Korean.
Depends: ${misc:Depends},
Recommends:
ibus-qt4,
kde-l10n-ko

Package: task-kurdish
Architecture: all
@@ -1769,8 +1754,6 @@ Architecture: all
Description: Latvian KDE Plasma desktop
This task localises the KDE Plasma desktop in Latvian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-lv

Package: task-lithuanian
Architecture: all
@@ -1800,8 +1783,6 @@ Architecture: all
Description: Lithuanian KDE Plasma desktop
This task localises the KDE Plasma desktop in Lithuanian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-lt

Package: task-macedonian
Architecture: all
@@ -1867,7 +1848,6 @@ Description: Malayalam KDE Plasma desktop
This task localises the KDE Plasma desktop in Malayalam.
Depends: ${misc:Depends},
Recommends:
fcitx-frontend-qt4,
fcitx-frontend-qt5,
kde-config-fcitx

@@ -1916,8 +1896,8 @@ Description: Northern Sami environment
to help Northern Sami speaking people use Devuan.
Depends: ${misc:Depends},
Recommends:
hunspell,
hunspell-se
giella-sme,
libenchant-2-voikko

Package: task-northern-sami-desktop
Architecture: all
@@ -1958,9 +1938,6 @@ Architecture: all
Description: Norwegian KDE Plasma desktop
This task localises the KDE Plasma desktop in Norwegian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-nb,
kde-l10n-nn

Package: task-persian
Architecture: all
@@ -1987,8 +1964,6 @@ Architecture: all
Description: Persian KDE Plasma desktop
This task localises the KDE Plasma desktop in Persian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-fa

Package: task-polish
Architecture: all
@@ -2023,8 +1998,6 @@ Architecture: all
Description: Polish KDE Plasma desktop
This task localises the KDE Plasma desktop in Polish.
Depends: ${misc:Depends},
Recommends:
kde-l10n-pl

Package: task-portuguese
Architecture: all
@@ -2053,8 +2026,6 @@ Architecture: all
Description: Portuguese KDE Plasma desktop
This task localises the KDE Plasma desktop in Portuguese.
Depends: ${misc:Depends},
Recommends:
kde-l10n-pt

Package: task-punjabi
Architecture: all
@@ -2081,8 +2052,6 @@ Architecture: all
Description: Punjabi KDE Plasma desktop
This task localises the KDE Plasma desktop in Punjabi.
Depends: ${misc:Depends},
Recommends:
kde-l10n-pa

Package: task-romanian
Architecture: all
@@ -2115,8 +2084,6 @@ Architecture: all
Description: Romanian KDE Plasma desktop
This task localises the KDE Plasma desktop in Romanian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-ro

Package: task-russian
Architecture: all
@@ -2150,8 +2117,6 @@ Architecture: all
Description: Russian KDE Plasma desktop
This task localises the KDE Plasma desktop in Russian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-ru

Package: task-serbian
Architecture: all
@@ -2177,8 +2142,6 @@ Architecture: all
Description: Serbian KDE Plasma desktop
This task localises the KDE Plasma desktop in Serbian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-sr

Package: task-sinhala-desktop
Architecture: all
@@ -2186,7 +2149,8 @@ Description: Sinhala desktop
This task localises the desktop in Sinhala.
Depends: ${misc:Depends},
Recommends:
fonts-noto-hinted,
fonts-noto-core,
fonts-noto-ui-core,
libreoffice-l10n-si,
firefox-esr-l10n-si | firefox-l10n-si,

@@ -2222,8 +2186,6 @@ Architecture: all
Description: Slovak KDE Plasma desktop
This task localises the KDE Plasma desktop in Slovak.
Depends: ${misc:Depends},
Recommends:
kde-l10n-sk

Package: task-slovenian
Architecture: all
@@ -2250,8 +2212,6 @@ Architecture: all
Description: Slovenian KDE Plasma desktop
This task localises the KDE Plasma desktop in Slovenian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-sl

Package: task-south-african-english-desktop
Architecture: all
@@ -2268,7 +2228,6 @@ Description: Spanish environment
This task installs programs, data files, and
documentation that make it easier for Spanish speakers to use Devuan.
Depends: ${misc:Depends},
manpages-es
Recommends:
# Dictionaries
ispanish,
@@ -2298,8 +2257,6 @@ Architecture: all
Description: Spanish KDE Plasma desktop
This task localises the KDE Plasma desktop in Spanish.
Depends: ${misc:Depends},
Recommends:
kde-l10n-es

Package: task-swedish
Architecture: all
@@ -2332,8 +2289,6 @@ Architecture: all
Description: Swedish KDE Plasma desktop
This task localises the KDE Plasma desktop in Swedish.
Depends: ${misc:Depends},
Recommends:
kde-l10n-sv

Package: task-tagalog
Architecture: all
@@ -2415,7 +2370,6 @@ Description: Telugu KDE Plasma desktop environment
This task localises the KDE Plasma desktop environment in Telugu.
Depends: ${misc:Depends},
Recommends:
fcitx-frontend-qt4,
fcitx-frontend-qt5,
kde-config-fcitx

@@ -2484,8 +2438,6 @@ Architecture: all
Description: Turkish KDE Plasma desktop
This task localises the KDE Plasma desktop in Turkish.
Depends: ${misc:Depends},
Recommends:
kde-l10n-tr

Package: task-ukrainian
Architecture: all
@@ -2516,8 +2468,6 @@ Architecture: all
Description: Ukrainian KDE Plasma desktop
This task localises the KDE Plasma desktop in Ukrainian.
Depends: ${misc:Depends},
Recommends:
kde-l10n-uk

Package: task-uyghur-desktop
Architecture: all
@@ -2533,8 +2483,6 @@ Architecture: all
Description: Uyghur KDE Plasma desktop
This task localises the KDE Plasma desktop in Uyghur.
Depends: ${misc:Depends},
Recommends:
kde-l10n-ug

Package: task-vietnamese-desktop
Architecture: all


+ 10
- 6
debian/po/bg.po View File

@@ -8,20 +8,22 @@
# or http://www.debian.org/intl/l10n/po-debconf/README-trans
# Developers do not need to manually edit POT or PO files.
# , fuzzy
#
# Damyan Ivanov <dmn@debian.org>, 2020.
#
msgid ""
msgstr ""
"Project-Id-Version: tasksel\n"
"Report-Msgid-Bugs-To: tasksel@packages.debian.org\n"
"POT-Creation-Date: 2018-05-23 01:37+0200\n"
"PO-Revision-Date: 2006-10-31 12:49+0200\n"
"Last-Translator: Damyan Ivanov <dam@modsoftsys.com>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"PO-Revision-Date: 2020-10-24 11:23+0300\n"
"Last-Translator: Damyan Ivanov <dmn@debian.org>\n"
"Language-Team: Bulgarian <dict@ludost.net>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Gtranslator 3.38.0\n"

#. Type: multiselect
#. Description
@@ -39,8 +41,8 @@ msgid ""
"to your needs, you can choose to install one or more of the following "
"predefined collections of software."
msgstr ""
"В момента са инсталирани само най-жизненоважните програми на Debian. За да "
"нагласите системата към Вашите нужди, можете да изберете измежду един или "
"В момента са инсталирани само жизненоважните програми на Дебиан. За да "
"настроите системата към Вашите нужди, можете да изберете измежду един или "
"повече от следните предварително зададени набори от софтуер."

#. Type: multiselect
@@ -58,6 +60,8 @@ msgstr ""
#: ../templates:3001
msgid "This can be preseeded to override the default desktop."
msgstr ""
"Графичната среда по подразбиране може да бъде предварително указана с "
"preseed."

#. Type: title
#. Description


+ 4
- 4
debian/po/pt.po View File

@@ -2,17 +2,17 @@
# 2004 Miguel Figueiredo <elmig@debianPT.org>
# PT Translation Team <http://www.debianPT.org/traduz/>
#
# 2005-12-13 - Miguel Figueiredo <elmig@debianpt.org> - 1f
# 2005-2020 - Miguel Figueiredo <elmig@debianpt.org>
#
msgid ""
msgstr ""
"Project-Id-Version: tasksel\n"
"Report-Msgid-Bugs-To: tasksel@packages.debian.org\n"
"POT-Creation-Date: 2018-05-23 01:37+0200\n"
"PO-Revision-Date: 2006-08-27 16:22+0000\n"
"PO-Revision-Date: 2020-10-21 22:00+0100\n"
"Last-Translator: Miguel Figueiredo <elmig@debianpt.org>\n"
"Language-Team: Portuguese Translation Team <traduz@debianpt.org>\n"
"Language: \n"
"Language: Portuguese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -51,7 +51,7 @@ msgstr ""
#. Description
#: ../templates:3001
msgid "This can be preseeded to override the default desktop."
msgstr ""
msgstr "Pode ser feito preseed para ultrapassar o desktop predefinido."

#. Type: title
#. Description


+ 9
- 7
debian/po/tg.po View File

@@ -1,21 +1,21 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Victor Ibragimov <victor.ibragimov@gmail.com>, 2018.
# Victor Ibragimov <victor.ibragimov@gmail.com>, 2018, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: tasksel@packages.debian.org\n"
"POT-Creation-Date: 2018-05-23 01:37+0200\n"
"PO-Revision-Date: 2018-02-11 00:13+0500\n"
"Last-Translator:Victor Ibragimov <victor.ibragimov@gmail.com>\n"
"Language-Team:Victor Ibragimov <victor.ibragimov@gmail.com>\n"
"PO-Revision-Date: 2019-08-02 22:36+0500\n"
"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
"Language-Team: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
"Language: tg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.6\n"
"X-Generator: Poedit 2.2.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. Type: multiselect
@@ -34,8 +34,8 @@ msgid ""
"to your needs, you can choose to install one or more of the following "
"predefined collections of software."
msgstr ""
"Дар айни ҳол, танҳо системаи асосӣ насб карда шудааст. Барои мувофиқат "
"кардани низом ба ниёзҳои худ, шумо метавонед як ё якчанд маҷмӯаи нармафзори "
"Дар айни ҳол, танҳо низоми асосӣ насб карда шудааст. Барои мувофиқат кардани "
"низом ба ниёзҳои худ, шумо метавонед як ё якчанд маҷмӯаи нармафзори "
"пешмуайяншударо интихоб карда, насб намоед."

#. Type: multiselect
@@ -53,6 +53,8 @@ msgstr ""
#: ../templates:3001
msgid "This can be preseeded to override the default desktop."
msgstr ""
"Ин метавонад барои рӯиҳамнависии мизи кории пешфарз ба таври худкор татбиқ "
"карда шавад."

#. Type: title
#. Description


+ 1
- 1
debian/rules View File

@@ -1,6 +1,6 @@
#!/usr/bin/make -f
%:
dh $@
dh $@ --no-parallel

override_dh_auto_install:
$(MAKE) install DESTDIR=`pwd`/debian/tasksel


+ 2
- 0
debian/source/lintian-overrides View File

@@ -0,0 +1,2 @@
# See #413250
tasksel source: intra-source-package-circular-dependency tasksel tasksel-data

+ 1
- 0
debian/task-cinnamon-desktop.lintian-overrides View File

@@ -0,0 +1 @@
task-cinnamon-desktop: description-too-short

+ 1
- 0
debian/task-gnome-desktop.lintian-overrides View File

@@ -0,0 +1 @@
task-gnome-desktop: description-too-short

+ 1
- 0
debian/task-laptop.lintian-overrides View File

@@ -0,0 +1 @@
task-laptop: description-too-short

+ 1
- 0
debian/task-lxde-desktop.lintian-overrides View File

@@ -0,0 +1 @@
task-lxde-desktop: description-too-short

+ 1
- 0
debian/task-lxqt-desktop.lintian-overrides View File

@@ -0,0 +1 @@
task-lxqt-desktop: description-too-short

+ 1
- 0
debian/task-mate-desktop.lintian-overrides View File

@@ -0,0 +1 @@
task-mate-desktop: description-too-short

+ 1
- 0
debian/task-xfce-desktop.lintian-overrides View File

@@ -0,0 +1 @@
task-xfce-desktop: description-too-short

+ 4
- 0
debian/tasksel.lintian-overrides View File

@@ -0,0 +1,4 @@
# Ignore various debconf-related false positives
tasksel: no-debconf-config
tasksel: unused-debconf-template tasksel/*
tasksel: debconf-is-not-a-registry usr/lib/tasksel/tasksel-debconf

+ 1
- 1
debian/templates View File

@@ -17,7 +17,7 @@ _Description: Choose software to install:

Template: tasksel/desktop
Type: multiselect
Choices: gnome, kde, xfce, lxde, cinnamon, mate, lxqt
Choices: gnome, kde, xfce, lxde, gnome-flashback, cinnamon, mate, lxqt
_Description: This can be preseeded to override the default desktop.

Template: tasksel/title


+ 46
- 0
po/tg.po View File

@@ -0,0 +1,46 @@
# Translation of tg.po into Tajik
# translation of tasksel_po_tg.po to Tajik
# Copyright (C) 2000, 2004, 2005 Free Software Foundation, Inc.
# Victor Ibragimov <victor.ibragimov@gmail.com>, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: tasksel_po_tg\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-28 21:20+0000\n"
"PO-Revision-Date: 2019-08-02 22:29+0500\n"
"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
"Language-Team: Tajik <victor.ibragimov@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.1\n"
"Plural-Forms: nplurals=2; plural=1;\n"
"Language: tg\n"
"X-Poedit-SourceCharset: UTF-8\n"

#: ../tasksel.pl:413
msgid ""
"Usage:\n"
"tasksel install <task>...\n"
"tasksel remove <task>...\n"
"tasksel [options]\n"
"\t-t, --test test mode; don't really do anything\n"
"\t --new-install automatically install some tasks\n"
"\t --list-tasks list tasks that would be displayed and exit\n"
"\t --task-packages list available packages in a task\n"
"\t --task-desc returns the description of a task\n"
msgstr ""
"Дастурамал:\n"
"tasksel install <вазифа>...\n"
"tasksel remove <вазифа>...\n"
"tasksel [имконот]\n"
"\t-t, --test реҷаи санҷишӣ; дар ҳақиқат ягон чиз намекунад\n"
"\t --new-install баъзеи фазифаҳоро ба таври хқдкор насб мекунад\n"
"\t --list-tasks рӯйхати вазифаҳоро нишон медиҳад ва мебарояд\n"
"\t --task-packages рӯйхати қуттиҳои дастрасро дар вазифа нишон медиҳад\n"
"\t --task-desc тавсифи вазифаро нишон медиҳад\n"

#: ../tasksel.pl:654
msgid "apt-get failed"
msgstr "apt-get қатъ шуд"

+ 7
- 0
tasks/gnome-flashback-desktop View File

@@ -0,0 +1,7 @@
Task: gnome-flashback-desktop
Relevance: 7
Parent: desktop
Test-default-desktop: 3 gnome-flashback
Section: user
Key:
task-gnome-flashback-desktop

+ 4
- 4
tasks/po/tg.po View File

@@ -8,12 +8,12 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-09-25 09:45-0400\n"
"PO-Revision-Date: 2018-02-11 00:25+0500\n"
"PO-Revision-Date: 2019-08-02 22:41+0500\n"
"Language-Team: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.6\n"
"X-Generator: Poedit 2.2.1\n"
"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: tg\n"
@@ -21,7 +21,7 @@ msgstr ""
#. Description
#: ../po/debian-tasks.desc:10001
msgid "standard system utilities"
msgstr "барномаҳои маъмурии низомии стандартӣ"
msgstr "барномаҳои маъмурии низоми стандартӣ"

#. Description
#: ../po/debian-tasks.desc:10001
@@ -29,6 +29,6 @@ msgid ""
"This task sets up a basic user environment, providing a reasonably small "
"selection of services and tools usable on the command line."
msgstr ""
"Ин вазиф муҳити корбарии асосиро танзим мекунад ва интихоби ҷузъиро "
"Ин вазифа муҳити корбарии асосиро танзим мекунад ва интихоби ҷузъиро "
"барои истифодаи хидматҳо ва абзорҳо тавассути сатри фармонӣ таъмин "
"менамояд."

+ 0
- 6
tasks/print-service View File

@@ -1,6 +0,0 @@
Task: print-service
Relevance: 4
Section: user
Test-desktop: 1
Key:
task-print-service

+ 303
- 25
tasksel.pl View File

@@ -16,7 +16,12 @@ my $descdir="/usr/share/tasksel/descs";
my $localdescdir="/usr/local/share/tasksel/descs";
my $statusfile="/var/lib/dpkg/status";
my $infodir="/usr/lib/tasksel/info";

# This boolean indicates whether we are in dry-run (no-do) mode. More
# specifically, it disables the actual running of commands by the
# &run() function.
my $testmode=0;

my $taskpackageprefix="task-";

sub warning {
@@ -28,6 +33,8 @@ sub error {
exit 1;
}

# my $statuscode = &run("ls", "-l", "/tmp");
# => 0
# Run a shell command except in test mode, and returns its exit code.
# Prints the command in test mode. Parameters should be pre-split for
# system.
@@ -41,8 +48,13 @@ sub run {
}
}

# A list of all available task desc files.
# my @paths = &list_task_descs();
# => ("/path/to/debian-tasks.desc", "/some/other/taskfile.desc")
# Get the list of desc files.
sub list_task_descs {
# Setting DEBIAN_TASKS_ONLY is a way for the Debian installer
# to tell tasksel to only use the Debian tasks (from
# tasksel-data).
if ($ENV{DEBIAN_TASKS_ONLY}) {
return glob("$descdir/debian-tasks.desc");
}
@@ -51,14 +63,44 @@ sub list_task_descs {
}
}

# &read_task_desc("/path/to/taskfile.desc");
# => (
# {
# task => "gnome-desktop",
# parent => "desktop",
# relevance => 1,
# key => [task-gnome-desktop"],
# section => "user",
# test-default-desktop => "3 gnome",
# sortkey => 1desktop-01
# },
# ...
# )
# Returns a list of hashes; hash values are arrays for multi-line fields.
sub read_task_desc {
my $desc=shift;

# %tasks maps the name of each task (the Task: field) to its
# %%data information (that maps each key to value(s), see the
# %"while" loop below).
my %tasks;
open (DESC, "<$desc") || die "read $desc\: $!";

open (DESC, "<$desc") || die "Could not open $desc for reading: $!";
local $/="\n\n";
while (<DESC>) {
while (defined($_ = <DESC>)) {
# %data will contain the keys/values of the current
# stanza.
#
# The keys are stored lowercase.
#
# A single-line value is stored as a scalar "line1"; a
# multi-line value is stored as a ref to array
# ["line1", "line2"].
#
# $data{relevance} is set to 5 if not otherwise
# specified in the stanza.
my %data;

my @lines=split("\n");
while (@lines) {
my $line=shift(@lines);
@@ -68,9 +110,12 @@ sub read_task_desc {
if (@lines && $lines[0] =~ /^\s+/) {
# multi-line field
my @values;

# Ignore the first line if it is empty.
if (defined $value && length $value) {
push @values, $value;
}

while (@lines && $lines[0] =~ /^\s+(.*)/) {
push @values, $1;
shift @lines;
@@ -82,7 +127,7 @@ sub read_task_desc {
}
}
else {
warning "parse error in stanza $. of $desc";
warning "$desc: in stanza $.: warning: parse error, ignoring line: $line";
}
}
$data{relevance}=5 unless exists $data{relevance};
@@ -91,13 +136,40 @@ sub read_task_desc {
}
}
close DESC;

my @ret;
# In this loop, we simultaneously:
#
# - enrich the %data structures of all tasks with a
# ->{sortkey} field
#
# - and collect them into @ret.
foreach my $task (keys %tasks) {
my $t=$tasks{$task};
if (exists $t->{parent} && exists $tasks{$t->{parent}}) {
# This task has a "Parent:" task. For example:
#
# Task: sometask
# Relevance: 3
# Parent: parenttask
#
# Task: parenttask
# Relevance: 6
#
# In this case, we set the sortkey to "6parenttask-03".
#
# XXX TODO: support correct sorting when
# Relevance is 10 or more (e.g. package
# education-tasks).
$t->{sortkey}=$tasks{$t->{parent}}->{relevance}.$t->{parent}."-0".$t->{relevance};
}
else {
# This task has no "Parent:" task. For example:
#
# Task: sometask
# Relevance: 3
#
# In this case, we set the sortkey to "3sometask-00".
$t->{sortkey}=$t->{relevance}.$t->{task}."-00";
}
push @ret, $t;
@@ -105,13 +177,37 @@ sub read_task_desc {
return @ret;
}

# &all_tasks();
# => (
# {
# task => "gnome-desktop",
# parent => "desktop",
# relevance => 1,
# key => [task-gnome-desktop"],
# section => "user",
# test-default-desktop => "3 gnome",
# sortkey => 1desktop-01
# },
# ...
# )
# Loads info for all tasks, and returns a set of task structures.
sub all_tasks {
my %seen;
# Filter out duplicates: only the first occurrence of each
# task name is taken into account.
grep { $seen{$_->{task}}++; $seen{$_->{task}} < 2 }
map { read_task_desc($_) } list_task_descs();
}


# my %apt_available = %_info_avail()
# => (
# "debian-policy" => { priority => "optional", section => "doc" },
# ...
# )
#
# Call "apt-cache dumpavail" and collect the output information about
# package name, priority and section.
sub _info_avail {
my %ret = ();
# Might be better to use the perl apt bindings, but they are not
@@ -122,6 +218,7 @@ sub _info_avail {
while (<AVAIL>) {
chomp;
if (not $_) {
# End of stanza
if (defined $package && defined $priority && defined $section) {
$ret{$package} = {
"priority" => $priority,
@@ -143,11 +240,17 @@ sub _info_avail {
return %ret;
}

# my @installed = &list_installed();
# => ("emacs", "vim", ...)
# Returns a list of all installed packages.
# This is not memoised and will run dpkg-query at each invocation.
# See &package_installed() for memoisation.
sub list_installed {
my @list;
open (LIST, q{LANG=C dpkg-query -W -f='${Package} ${Status}\n' |});
while (<LIST>) {
# Each line looks like this:
# "adduser install ok installed"
if (/^([^ ]+) .* installed$/m) {
push @list, $1;
}
@@ -158,7 +261,12 @@ sub list_installed {

my %_info_avail_cache;

# Returns a hash of all available packages.
# my $apt_available = &info_avail();
# => {
# "debian-policy" => { priority => "optional", section => "doc" },
# ...
# }
# Returns a hash of all available packages. Memoised.
sub info_avail {
my $package = shift;
if (!%_info_avail_cache) {
@@ -167,14 +275,19 @@ sub info_avail {
return \%_info_avail_cache;
}

# Given a package name, checks to see if it's available. Memoised.
# if (&package_avail("debian-policy")) { ... }
# Given a package name, checks to see if it's installed or available.
# Memoised.
sub package_avail {
my $package = shift;
return info_avail()->{$package} || package_installed($package);
}

# Memoisation for &package_installed().
my %installed_pkgs;
# Given a package name, checks to see if it's installed. Memoised.

# if (&package_installed("debian-policy")) { ... }
# Given a package name, checks to see if it's installed. Memoised.
sub package_installed {
my $package=shift;
@@ -187,7 +300,10 @@ sub package_installed {
return $installed_pkgs{$package};
}

# Given a task hash, checks if its key packages are available.
# if (&task_avail($task)) { ... }
# Given a task hash, checks that all of its key packages are installed or available.
# Returns true if all key packages are installed or available.
# Returns false if any of the key packages is not.
sub task_avail {
local $_;
my $task=shift;
@@ -204,8 +320,9 @@ sub task_avail {
}
}

# if (&task_installed($task)) { ... }
# Given a task hash, checks to see if it is already installed.
# (All of its key packages must be installed.)
# All of its key packages must be installed. Other packages are not checked.
sub task_installed {
local $_;
my $task=shift;
@@ -222,21 +339,38 @@ sub task_installed {
}
}

# Given task hash, returns a list of all available packages in the task.
# my @packages = &task_packages($task);
# Given a task hash, returns a list of all available packages in the task.
#
# It is the list of "Key:" packages, plus the packages indicated
# through the "Packages:" field.
sub task_packages {
my $task=shift;
# The %list hashtable is used as a set: only its keys matter,
# the value is irrelevant.
my %list;

# key packages are always included
# "Key:" packages are always included.
if (ref $task->{key}) {
# $task->{key} is not a line but a reference (to an
# array of lines).
map { $list{$_}=1 } @{$task->{key}};
}
if (! defined $task->{packages}) {
# No "Packages:" field.
# only key
}
elsif ($task->{packages} eq 'standard') {
# Special case of "Packages: standard"
#
# The standard packages are the non-library ones in
# "main" which priority is required, important or
# standard.
#
# We add all standard packages to %list, except the
# ones that are already installed.
my %info_avail=%{info_avail()};
while (my ($package, $info) = each(%info_avail)) {
my ($priority, $section) = ($info->{priority}, $info->{section});
@@ -257,6 +391,24 @@ sub task_packages {
else {
# external method
my ($method, @params);

# "Packages:" requests to run a program and use its
# output as the names of packages.
#
# There are basically two forms:
#
# Packages: myprogram
#
# Runs /usr/lib/tasksel/packages/myprogram TASKNAME
#
# Packages: myprogram
# arg1
# arg2...
#
# Runs /usr/lib/tasksel/packages/myprogram TASKNAME arg1 arg2...
#
# The tasksel package provides the simple "list"
# program which simply outputs its arguments.
if (ref $task->{packages}) {
@params=@{$task->{packages}};
$method=shift @params;
@@ -273,14 +425,37 @@ sub task_packages {
return keys %list;
}

# &task_test($task, $new_install, $display_by_default, $install_by_default);
# Given a task hash, runs any test program specified in its data, and sets
# the _display and _install fields to 1 or 0 depending on its result.
#
# If _display is true, _install means the default proposal shown to
# the user, who can modify it. If _display is false, _install says
# what to do, without asking the user.
sub task_test {
my $task=shift;
my $new_install=shift;
$task->{_display} = shift; # default
$task->{_install} = shift; # default
$ENV{NEW_INSTALL}=$new_install if defined $new_install;
# Each task may define one or more tests in the form:
#
# Test-PROGRAM: ARGUMENTS...
#
# Each of the programs will be run like this:
#
# /usr/lib/tasksel/tests/PROGRAM TASKNAME ARGUMENTS...
#
# If $new_install is true, the NEW_INSTALL environment
# variable is set for invoking the program.
#
# The return code of the invocation then indicates what to set:
#
# 0 - don't display, but install it
# 1 - don't display, don't install
# 2 - display, mark for installation
# 3 - display, don't mark for installation
# anything else - don't change the values of _display or _install
foreach my $test (grep /^test-.*/, keys %$task) {
$test=~s/^test-//;
if (-x "$testdir/$test") {
@@ -308,8 +483,12 @@ sub task_test {
return $task;
}

# &hide_enhancing_tasks($task);
#
# Hides a task and marks it not to be installed if it enhances other
# tasks.
#
# Returns $task.
sub hide_enhancing_tasks {
my $task=shift;
if (exists $task->{enhances} && length $task->{enhances}) {
@@ -319,8 +498,22 @@ sub hide_enhancing_tasks {
return $task;
}

# &getdescriptions(@tasks);
#
# Looks up the descriptions of a set of tasks, returning a new list
# with the shortdesc fields filled in.
# with the ->{shortdesc} fields filled in.
#
# Ideally, the .desc file would indicate a description of each task,
# which would be retrieved quickly. For missing Description fields,
# we fetch the data with "apt-cache show task-TASKNAME...", which
# takes longer.
#
# @tasks: list of references, each referencing a task data structure.
#
# Each data structured is enriched with a ->{shortdesc} field,
# containing the localized short description.
#
# Returns @tasks.
sub getdescriptions {
my @tasks=@_;

@@ -339,7 +532,7 @@ sub getdescriptions {
if (@todo) {
open(APT_CACHE, "apt-cache show ".join(" ", map { $taskpackageprefix.$_->{task} } @todo)." |") || die "apt-cache show: $!";
local $/="\n\n";
while (<APT_CACHE>) {
while (defined($_ = <APT_CACHE>)) {
my ($name)=/^Package: $taskpackageprefix(.*)$/m;
my ($description)=/^Description-(?:[a-z][a-z](?:_[A-Z][A-Z])?): (.*)$/m;
($description)=/^Description: (.*)$/m
@@ -359,12 +552,18 @@ sub getdescriptions {
return @tasks;
}

# &task_to_debconf(@tasks);
# => "task1, task2, task3"
# Converts a list of tasks into a debconf list of the task short
# descriptions.
sub task_to_debconf {
join ", ", map { format_description_for_debconf($_) } getdescriptions(@_);
}

# my $debconf_string = &format_description_for_debconf($task);
# => "... GNOME"
# Build a string for making a debconf menu item.
# If the task has a parent task, "... " is prepended.
sub format_description_for_debconf {
my $task=shift;
my $d=$task->{shortdesc};
@@ -373,11 +572,15 @@ sub format_description_for_debconf {
return $d;
}

# my $debconf_string = &task_to_debconf_C(@tasks);
# => "gnome-desktop, kde-desktop"
# Converts a list of tasks into a debconf list of the task names.
sub task_to_debconf_C {
join ", ", map { $_->{task} } @_;
}

# my @my_tasks = &list_to_tasks("task1, task2, task3", @tasks);
# => ($task1, $task2, $task3)
# Given a first parameter that is a string listing task names, and then a
# list of task hashes, returns a list of hashes for all the tasks
# in the list.
@@ -387,7 +590,9 @@ sub list_to_tasks {
return grep { defined } map { $lookup{$_} } split /[, ]+/, $list;
}

# my @sorted_tasks = &order_for_display(@tasks);
# Orders a list of tasks for display.
# The tasks are ordered according to the ->{sortkey}.
sub order_for_display {
sort {
$a->{sortkey} cmp $b->{sortkey}
@@ -396,12 +601,26 @@ sub order_for_display {
} @_;
}

# &name_to_task($taskname, &all_tasks());
# &name_to_task("gnome-desktop", &all_tasks());
# => {
# task => "gnome-desktop",
# parent => "desktop",
# relevance => 1,
# key => [task-gnome-desktop"],
# section => "user",
# test-default-desktop => "3 gnome",
# sortkey => 1desktop-01
# }
# Given a set of tasks and a name, returns the one with that name.
sub name_to_task {
my $name=shift;
return (grep { $_->{task} eq $name } @_)[0];
}

# &task_script($task, "preinst") or die;
# Run the task's (pre|post)(inst|rm) script, if there is any.
# Such scripts are located under /usr/lib/tasksel/info/.
sub task_script {
my $task=shift;
my $script=shift;
@@ -417,16 +636,21 @@ sub task_script {
return 1;
}

# &usage;
# Print the usage.
sub usage {
print STDERR gettext(q{Usage:
tasksel install <task>...
tasksel remove <task>...
tasksel [options]
-t, --test test mode; don't really do anything
--new-install automatically install some tasks
--list-tasks list tasks that would be displayed and exit
--task-packages list available packages in a task
--task-desc returns the description of a task
print STDERR gettext(q{tasksel [OPTIONS...] [COMMAND...]
Commands:
install TASK... install tasks
remove TASK... uninstall tasks
--task-packages=TASK list packages installed by TASK; can be repeated
--task-desc=TASK print the description of a task
--list-tasks list tasks that would be displayed and exit
Options:
-t, --test dry-run: don't really change anything
--new-install automatically install some tasks
--debconf-apt-progress="ARGUMENTS..."
provide additional arguments to debconf-apt-progress(1)
});
}

@@ -458,6 +682,9 @@ sub getopts {
return %ret;
}

# &interactive($options, @tasks);
# Ask the user and mark tasks to install or remove accordingly.
# The tasks are enriched with ->{_install} or ->{_remove} set to true accordingly.
sub interactive {
my $options = shift;
my @tasks = @_;
@@ -486,7 +713,7 @@ sub interactive {
$question="tasksel/first";
}
my @default = grep { $_->{_display} == 1 && ($_->{_install} == 1 || $_->{_installed} == 1) } @tasks;
my $tmpfile=`tempfile`;
my $tmpfile=`mktemp`;
chomp $tmpfile;
my $ret=system($debconf_helper, $tmpfile,
task_to_debconf_C(@list),
@@ -523,6 +750,22 @@ sub interactive {
}
}

# When a $task Enhances: a @group_of_tasks, it means that
# $task can only be installed if @group_of_tasks are also
# installed; and if @group_of_tasks is installed, it is an
# incentive to also install $task.
#
# For example, consider this task:
#
# Task: amharic-desktop
# Enhances: desktop, amharic
#
# The task amharic-desktop installs packages that make
# particular sense if the user wants both a desktop and the
# amharic language environment. Conversely, if
# amharic-desktop is selected (e.g. by preseeding), then it
# automatically also selects tasks "desktop" and "amharic".

# If an enhancing task is already marked for
# install, probably by preseeding, mark the tasks
# it enhances for install.
@@ -536,12 +779,30 @@ sub interactive {
# chained enhances. This is ugly and could loop forever if
# there's a cycle.
my $enhances_needswork=1;

# %tested is the memoization of the below calls to
# %&task_test().
my %tested;

# Loop as long as there is work to do.
while ($enhances_needswork) {
$enhances_needswork=0;

# Loop over all unselected tasks that enhance one or
# more things.
foreach my $task (grep { ! $_->{_install} && exists $_->{enhances} &&
length $_->{enhances} } @tasks) {
# TODO: the computation of %tasknames could be
# done once and for all outside of this nested
# loop, saving some redundant work.
my %tasknames = map { $_->{task} => $_ } @tasks;

# @deps is the list of tasks enhanced by $task.
#
# Basically, if all the deps are installed,
# and tests say that $task can be installed,
# then mark it to install. Otherwise, don't
# install it.
my @deps=map { $tasknames{$_} } split ", ", $task->{enhances};

if (grep { ! defined $_ } @deps) {
@@ -551,6 +812,10 @@ sub interactive {
}

if (@deps) {
# FIXME: isn't $orig_state always
# false, given that the "for" loop
# above keeps only $tasks that do
# not have $_->{_install}?
my $orig_state=$task->{_install};

# Mark enhancing tasks for install if their
@@ -573,7 +838,9 @@ sub interactive {
}

if ($task->{_install} != $orig_state) {
$enhances_needswork=1;
# We have made progress:
# continue another round.
$enhances_needswork=1;
}
}
}
@@ -601,11 +868,21 @@ sub main {
elsif ($options{"task-desc"}) {
my $task=name_to_task($options{"task-desc"}, all_tasks());
if ($task) {
# The Description looks like this:
#
# Description: one-line short description
# Longer description,
# possibly spanning
# multiple lines.
#
# $extdesc will contain the long description,
# reformatted to one line.
my $extdesc=join(" ", @{$task->{description}}[1..$#{$task->{description}}]);
print dgettext("debian-tasks", $extdesc)."\n";
exit(0);
}
else {
fprintf STDERR ("Task %s has no description\n", $options{"task-desc"});
exit(1);
}
}
@@ -618,6 +895,7 @@ sub main {
if ($options{"list-tasks"}) {
map { $_->{_installed} = task_installed($_) } @tasks;
@tasks=getdescriptions(@tasks);
# TODO: use printf() instead of print for correct column alignment
print "".($_->{_installed} ? "i" : "u")." ".$_->{task}."\t".$_->{shortdesc}."\n"
foreach order_for_display(grep { $_->{_display} } @tasks);
exit(0);
@@ -645,7 +923,7 @@ sub main {
if exists $options{'debconf-apt-progress'};
push @cmd, "--";
}
push @cmd, qw{apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true -o APT::Acquire::Retries=3 install};
push @cmd, qw{apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true -o Acquire::Retries=3 install};

# And finally, act on selected tasks.
if (@tasks_install || @tasks_remove) {


+ 1
- 1
tests/default-desktop View File

<
@@ -27,7 +27,7 @@ check_desktop_wanted() {
fi
}

if db_get "tasksel/desktop"; then
if db_get "tasksel/desktop" && [ -n "$RET" ]; then
if echo "$RET" | grep -q "$DESKTOPNAME"; then