create core package
This commit is contained in:
Executable
+2336
File diff suppressed because it is too large
Load Diff
Executable
+367
@@ -0,0 +1,367 @@
|
||||
<PISI>
|
||||
<SourceName>PisiLinux</SourceName>
|
||||
<Version>1.0</Version>
|
||||
<Description xml:lang="tr">PisiLinux 1.0 Deposu</Description>
|
||||
<Description xml:lang="en">PisiLinux 1.0 Repository</Description>
|
||||
<Description xml:lang="es">PisiLinux 1.0 Repositorio</Description>
|
||||
<Description xml:lang="nl">PisiLinux 1.0 Opslagplaats</Description>
|
||||
<Type>Core</Type>
|
||||
<BinaryName>PisiLinux</BinaryName>
|
||||
<Obsoletes>
|
||||
<Package>kdeadmin</Package>
|
||||
<Package>kdenetwork</Package>
|
||||
<Package>kdenetwork-devel</Package>
|
||||
<Package>kdesdk</Package>
|
||||
<Package>kdesdk-devel</Package>
|
||||
<Package>kdeplasma-applets-fancytasks</Package>
|
||||
<Package>kdetoys</Package>
|
||||
<Package>libfakeley</Package>
|
||||
<Package>libfakeley-devel</Package>
|
||||
<Package>libstreams</Package>
|
||||
<Package>libstreamanalyzer</Package>
|
||||
<Package>libstreams-devel</Package>
|
||||
<Package>libstreamanalyzer-devel</Package>
|
||||
<Package>strigi-libs</Package>
|
||||
<Package>strigi-common</Package>
|
||||
<Package>workspace-strap</Package>
|
||||
<Package>gtk-qt-engine</Package>
|
||||
<Package>kdevplatform-l10n-nds</Package>
|
||||
<Package>kdevplatform-l10n-en_GB</Package>
|
||||
<Package>db5</Package>
|
||||
<Package>db5-devel</Package>
|
||||
<Package>db5-docs</Package>
|
||||
<Package>ntfs_3g</Package>
|
||||
<Package>db4-java</Package>
|
||||
<Package>db5-java</Package>
|
||||
<Package>jpeg</Package>
|
||||
<Package>openthreads</Package>
|
||||
<Package>aufs-progs</Package>
|
||||
<Package>python-cherrypy</Package>
|
||||
<Package>hd2u</Package>
|
||||
<Package>mmpython</Package>
|
||||
<Package>libtextcat</Package>
|
||||
<Package>xorg-input-fpit</Package>
|
||||
<Package>xorg-input-hyperpen</Package>
|
||||
<Package>xorg-input-mutouch</Package>
|
||||
<Package>xorg-input-penmount</Package>
|
||||
<Package>xorg-video-ark</Package>
|
||||
<Package>xorg-video-ast</Package>
|
||||
<Package>xorg-video-chips</Package>
|
||||
<Package>xorg-video-nv</Package>
|
||||
<Package>xorg-video-s3</Package>
|
||||
<Package>xorg-video-tseng</Package>
|
||||
<Package>libXp-devel</Package>
|
||||
<Package>ijs</Package>
|
||||
<Package>ijs-devel</Package>
|
||||
<Package>xfce-utils</Package>
|
||||
<Package>lxsession-edit</Package>
|
||||
<Package>zeitgeist-datahub</Package>
|
||||
<Package>soundKonverter</Package>
|
||||
<Package>module-fglrx-legacy</Package>
|
||||
<Package>module-fglrx-legacy-userspace</Package>
|
||||
<Package>module-fglrx-legacy-devel</Package>
|
||||
<Package>fglrx-legacy-devel</Package>
|
||||
<Package>fglrx-legacy-opencl</Package>
|
||||
<Package>fglrx-legacy-opencl-32bit</Package>
|
||||
<Package>xorg-video-fglrx-legacy</Package>
|
||||
<Package>xorg-video-fglrx-legacy-32bit</Package>
|
||||
<Package>fglrx-devel</Package>
|
||||
<Package>fglrx-opencl-32bit</Package>
|
||||
<Package>fglrx-opencl</Package>
|
||||
<Package>module-fglrx-userspace</Package>
|
||||
<Package>plex-media-server</Package>
|
||||
<Package>libreoffice-bsh</Package>
|
||||
<Package>libreoffice-ure</Package>
|
||||
<Package>libreoffice-pyuno</Package>
|
||||
<Package>libreoffice-nlpsolver</Package>
|
||||
<Package>libreoffice-pdfimport</Package>
|
||||
<Package>libreoffice-xsltfilter</Package>
|
||||
<Package>libreoffice-java-common</Package>
|
||||
<Package>libreoffice-graphicfilter</Package>
|
||||
<Package>libreoffice-wiki-publisher</Package>
|
||||
<Package>libreoffice-presentation-minimizer</Package>
|
||||
<Package>libreoffice-javafilter</Package>
|
||||
<Package>libreoffice-report-builder</Package>
|
||||
<Package>glest</Package>
|
||||
<Package>glest-data</Package>
|
||||
<Package>liboldX</Package>
|
||||
<Package>liboldX-devel</Package>
|
||||
<Package>glitz-devel</Package>
|
||||
<Package>glitz-32bit</Package>
|
||||
<Package>glitz</Package>
|
||||
<Package>mate-bluetooth</Package>
|
||||
<Package>mate-bluetooth-devel</Package>
|
||||
<Package>mate-bluetooth-doc</Package>
|
||||
<Package>glade-xfce</Package>
|
||||
<Package>eatmonkey</Package>
|
||||
<Package>gnome-activity-journal</Package>
|
||||
<Package>gnome-mime-data</Package>
|
||||
<Package>libgnomecups</Package>
|
||||
<Package>libgnomecups-devel</Package>
|
||||
<Package>libgnomeprint</Package>
|
||||
<Package>libgnomeprint-devel</Package>
|
||||
<Package>libgnomeprint-docs</Package>
|
||||
<Package>libgnomeprintui</Package>
|
||||
<Package>libgnomeprintui-devel</Package>
|
||||
<Package>libgnomeprintui-docs</Package>
|
||||
<Package>gnome-desktop-sharp</Package>
|
||||
<Package>gnome-desktop-sharp-devel</Package>
|
||||
<Package>gnome-print-sharp</Package>
|
||||
<Package>gnome-print-sharp-devel</Package>
|
||||
<Package>gtksourceview-sharp</Package>
|
||||
<Package>gtksourceview-sharp-devel</Package>
|
||||
<Package>vte-sharp</Package>
|
||||
<Package>vte-sharp-devel</Package>
|
||||
<Package>wnck-sharp</Package>
|
||||
<Package>wnck-sharp-devel</Package>
|
||||
<Package>rsvg-sharp</Package>
|
||||
<Package>rsvg-sharp-devel</Package>
|
||||
<Package>gsettings-desktop-schemas3</Package>
|
||||
<Package>gsettings-desktop-schemas3-devel</Package>
|
||||
<Package>libgee-8</Package>
|
||||
<Package>libgee-8-devel</Package>
|
||||
<Package>gnutls-guile</Package>
|
||||
<Package>liborcus</Package>
|
||||
<Package>liborcus-devel</Package>
|
||||
<Package>libixion</Package>
|
||||
<Package>epdfview</Package>
|
||||
<Package>libixion-devel</Package>
|
||||
<Package>lv2core</Package>
|
||||
<Package>lv2core-devel</Package>
|
||||
<Package>amd-ucode</Package>
|
||||
<Package>akonadi-facebook</Package>
|
||||
<Package>perl-Email-Simple-Creator</Package>
|
||||
<Package>licq-autoreply</Package>
|
||||
<Package>licq-console</Package>
|
||||
<Package>licq-msn</Package>
|
||||
<Package>licq-forwarder</Package>
|
||||
<Package>licq-osd</Package>
|
||||
<Package>licq-rms</Package>
|
||||
<Package>licq-devel</Package>
|
||||
<Package>perl-IO-via-symlink</Package>
|
||||
<Package>SVK</Package>
|
||||
<Package>avidemux</Package>
|
||||
<Package>qsvn</Package>
|
||||
<Package>libsvnqt</Package>
|
||||
<Package>libsvnqt-devel</Package>
|
||||
<Package>cups-php</Package>
|
||||
<Package>metalink</Package>
|
||||
<Package>foomatic-filters</Package>
|
||||
<Package>pisilinux-default-settings</Package>
|
||||
<Package>mysql-client</Package>
|
||||
<Package>mysql-lib</Package>
|
||||
<Package>mysql-man-pages</Package>
|
||||
<Package>mysql-server</Package>
|
||||
<Package>sun-jre</Package>
|
||||
<Package>sun-jdk</Package>
|
||||
<Package>gnash</Package>
|
||||
<Package>gnash-devel</Package>
|
||||
<Package>gnash-klash</Package>
|
||||
<Package>gst-buzztard</Package>
|
||||
<Package>gst-buzztard-doc</Package>
|
||||
<Package>libgst-buzztard</Package>
|
||||
<Package>libgst-buzztard-devel</Package>
|
||||
<Package>tv-viewer</Package>
|
||||
<Package>module-nvidia-current-userspace</Package>
|
||||
<Package>module-nvidia304-userspace</Package>
|
||||
<Package>module-nvidia173-userspace</Package>
|
||||
<Package>module-nvidia96-userspace</Package>
|
||||
<Package>samba-swat</Package>
|
||||
<Package>comp-scale</Package>
|
||||
<Package>ntrack</Package>
|
||||
<Package>ntrack-devel</Package>
|
||||
<Package>ntrack-glib</Package>
|
||||
<Package>ntrack-glib-devel</Package>
|
||||
<Package>ntrack-gobject</Package>
|
||||
<Package>ntrack-gobject-devel</Package>
|
||||
<Package>ntrack-qt4</Package>
|
||||
<Package>ntrack-qt4-devel</Package>
|
||||
<Package>python-ntrack</Package>
|
||||
<Package>qzion</Package>
|
||||
<Package>qzion-devel</Package>
|
||||
<Package>qedje-devel</Package>
|
||||
<Package>qedje</Package>
|
||||
<Package>ushare</Package>
|
||||
<Package>udev-32bit</Package>
|
||||
<Package>kde-l10n-fa</Package>
|
||||
<Package>kde-l10n-si</Package>
|
||||
<Package>kde-l10n-si-doc</Package>
|
||||
<Package>kde-l10n-tg</Package>
|
||||
<Package>kde-l10n-tg-doc</Package>
|
||||
<Package>kde-l10n-th</Package>
|
||||
<Package>kde-l10n-th-doc</Package>
|
||||
<Package>kdnssd</Package>
|
||||
<Package>mate-file-manager</Package>
|
||||
<Package>mate-file-manager-devel</Package>
|
||||
<Package>mate-file-manager-doc</Package>
|
||||
<Package>mate-window-manager</Package>
|
||||
<Package>mate-window-manager-devel</Package>
|
||||
<Package>mate-doc-utils</Package>
|
||||
<Package>libmatewnck-devel</Package>
|
||||
<Package>libmatewnck-doc</Package>
|
||||
<Package>libmatewnck</Package>
|
||||
<Package>libmatekeyring</Package>
|
||||
<Package>libmatekeyring-devel</Package>
|
||||
<Package>libmatekeyring-doc</Package>
|
||||
<Package>mate-keyring</Package>
|
||||
<Package>mate-keyring-devel</Package>
|
||||
<Package>mate-keyring-doc</Package>
|
||||
<Package>mate-character-map</Package>
|
||||
<Package>mate-character-map-devel</Package>
|
||||
<Package>mate-document-viewer</Package>
|
||||
<Package>mate-document-viewer-devel</Package>
|
||||
<Package>mate-document-viewer-doc</Package>
|
||||
<Package>mate-file-archiver</Package>
|
||||
<Package>mate-image-viewer</Package>
|
||||
<Package>mate-image-viewer-devel</Package>
|
||||
<Package>mate-image-viewer-doc</Package>
|
||||
<Package>mate-file-manager-gksu</Package>
|
||||
<Package>mate-file-manager-sendto</Package>
|
||||
<Package>mate-file-manager-sendto-devel</Package>
|
||||
<Package>mate-file-manager-sendto-doc</Package>
|
||||
<Package>mate-file-manager-share</Package>
|
||||
<Package>mate-file-manager-open-terminal</Package>
|
||||
<Package>mate-file-manager-image-converter</Package>
|
||||
<Package>mate-text-editor</Package>
|
||||
<Package>mate-text-editor-devel</Package>
|
||||
<Package>mate-text-editor-gtk-doc</Package>
|
||||
<Package>mate-menu-editor</Package>
|
||||
<Package>kio-afc</Package>
|
||||
<Package>epson-alc1100</Package>
|
||||
<Package>thunderbird-lang-es-CL</Package>
|
||||
<Package>emacs-emms</Package>
|
||||
<Package>ecore</Package>
|
||||
<Package>ecore-devel</Package>
|
||||
<Package>edje</Package>
|
||||
<Package>edje-devel</Package>
|
||||
<Package>eet</Package>
|
||||
<Package>eet-devel</Package>
|
||||
<Package>eeze</Package>
|
||||
<Package>eeze-devel</Package>
|
||||
<Package>efreet</Package>
|
||||
<Package>efreet-devel</Package>
|
||||
<Package>eina</Package>
|
||||
<Package>eina-devel</Package>
|
||||
<Package>eio</Package>
|
||||
<Package>eio-devel</Package>
|
||||
<Package>emap</Package>
|
||||
<Package>emap-devel</Package>
|
||||
<Package>embryo</Package>
|
||||
<Package>embryo-devel</Package>
|
||||
<Package>epdf</Package>
|
||||
<Package>epdf-devel</Package>
|
||||
<Package>ethumb</Package>
|
||||
<Package>ethumb-devel</Package>
|
||||
<Package>evas</Package>
|
||||
<Package>evas-devel</Package>
|
||||
<Package>emotion-devel</Package>
|
||||
<Package>emotion</Package>
|
||||
<Package>firefox-devel</Package>
|
||||
<Package>chipmunk</Package>
|
||||
<Package>chipmunk-devel</Package>
|
||||
<Package>e-module-alarm</Package>
|
||||
<Package>e-module-calendar</Package>
|
||||
<Package>e-module-comp-scale</Package>
|
||||
<Package>e-module-cpu</Package>
|
||||
<Package>e-module-deskshow</Package>
|
||||
<Package>e-module-diskio</Package>
|
||||
<Package>e-module-drawer</Package>
|
||||
<Package>e-module-eektool</Package>
|
||||
<Package>e-module-eenvader-fractal</Package>
|
||||
<Package>e-module-elfe</Package>
|
||||
<Package>e-module-empris</Package>
|
||||
<Package>e-module-engage</Package>
|
||||
<Package>e-module-eooorg</Package>
|
||||
<Package>e-module-everything-aspell</Package>
|
||||
<Package>e-module-everything-pidgin</Package>
|
||||
<Package>e-module-everything-places</Package>
|
||||
<Package>e-module-everything-shotgun</Package>
|
||||
<Package>e-module-everything-skeleton</Package>
|
||||
<Package>e-module-everything-tracker</Package>
|
||||
<Package>e-module-everything-wallpaper</Package>
|
||||
<Package>e-module-everything-websearch</Package>
|
||||
<Package>e-module-eweather</Package>
|
||||
<Package>e-module-exebuf</Package>
|
||||
<Package>e-module-execwatch</Package>
|
||||
<Package>e-module-flame</Package>
|
||||
<Package>e-module-forecasts</Package>
|
||||
<Package>e-module-iiirk</Package>
|
||||
<Package>e-module-itask</Package>
|
||||
<Package>e-module-mail</Package>
|
||||
<Package>e-module-mem</Package>
|
||||
<Package>e-module-moon</Package>
|
||||
<Package>e-module-mpdule</Package>
|
||||
<Package>e-module-net</Package>
|
||||
<Package>e-module-news</Package>
|
||||
<Package>e-module-penguins</Package>
|
||||
<Package>e-module-photo</Package>
|
||||
<Package>e-module-places</Package>
|
||||
<Package>e-module-rain</Package>
|
||||
<Package>e-module-screenshot</Package>
|
||||
<Package>e-module-skel</Package>
|
||||
<Package>e-module-snow</Package>
|
||||
<Package>e-module-taskbar</Package>
|
||||
<Package>e-module-tclock</Package>
|
||||
<Package>e-module-uptime</Package>
|
||||
<Package>e-module-weather</Package>
|
||||
<Package>e-module-winlist-ng</Package>
|
||||
<Package>e-module-winselector</Package>
|
||||
<Package>e-module-wlan</Package>
|
||||
<Package>econcentration</Package>
|
||||
<Package>editje</Package>
|
||||
<Package>emprint</Package>
|
||||
<Package>enki</Package>
|
||||
<Package>enlil</Package>
|
||||
<Package>enlil-devel</Package>
|
||||
<Package>etrophy</Package>
|
||||
<Package>etrophy-devel</Package>
|
||||
<Package>expedite</Package>
|
||||
<Package>lightmediascanner</Package>
|
||||
<Package>lightmediascanner-devel</Package>
|
||||
<Package>libeweather</Package>
|
||||
<Package>libeweather-devel</Package>
|
||||
<Package>python-elementary-devel</Package>
|
||||
<Package>python-elementary</Package>
|
||||
<Package>python-edje-devel</Package>
|
||||
<Package>python-edje</Package>
|
||||
<Package>python-evas-devel</Package>
|
||||
<Package>python-evas</Package>
|
||||
<Package>python-ethumb-devel</Package>
|
||||
<Package>python-ethumb</Package>
|
||||
<Package>python-ecore-devel</Package>
|
||||
<Package>python-ecore</Package>
|
||||
<Package>python-speech-dispatcher</Package>
|
||||
<Package>nepomuk-core</Package>
|
||||
<Package>nepomuk-core-devel</Package>
|
||||
<Package>nepomuk-widgets</Package>
|
||||
<Package>nepomuk-widgets-devel</Package>
|
||||
<Package>wine-gecko64</Package>
|
||||
<Package>wine64</Package>
|
||||
<Package>glade3</Package>
|
||||
<Package>glade3-devel</Package>
|
||||
<Package>glade3-docs</Package>
|
||||
<Package>goocanvas</Package>
|
||||
<Package>goocanvas-docs</Package>
|
||||
<Package>goocanvas-devel</Package>
|
||||
<Package>goocanvasmm</Package>
|
||||
<Package>goocanvasmm-doc</Package>
|
||||
<Package>goocanvasmm-devel</Package>
|
||||
<Package>libgtkhtml2</Package>
|
||||
<Package>libgtkhtml2-devel</Package>
|
||||
<Package>bluez-compat</Package>
|
||||
<Package>bluedevil-devel</Package>
|
||||
<Package>akonadi-facebook</Package>
|
||||
<Package>python-PyMT</Package>
|
||||
<Package>python-PyMT-docs</Package>
|
||||
<Package>OpenGTL</Package>
|
||||
<Package>OpenGTL-devel</Package>
|
||||
<Package>gtkdatabox-glade</Package>
|
||||
<Package>gtkdatabox-docs</Package>
|
||||
<Package>vo-aacenc</Package>
|
||||
<Package>lxshortcut</Package>
|
||||
<Package>libusbx</Package>
|
||||
<Package>libusbx-devel</Package>
|
||||
<Package>libusbx-32bit</Package>
|
||||
<Package>labltk</Package>
|
||||
</Obsoletes>
|
||||
</PISI>
|
||||
Executable
+524
@@ -0,0 +1,524 @@
|
||||
<PISI>
|
||||
<Groups>
|
||||
<Group>
|
||||
<Name>mate.desktop</Name>
|
||||
<LocalName xml:lang="en">Mate Desktop</LocalName>
|
||||
<LocalName xml:lang="nl">Mate Desktop</LocalName>
|
||||
<LocalName xml:lang="sv">Skrivbord, GNOME</LocalName>
|
||||
<LocalName xml:lang="tr">Mate Masaüstü</LocalName>
|
||||
<LocalName xml:lang="fr">Bureau Mate</LocalName>
|
||||
<LocalName xml:lang="es">Escritorio Mate</LocalName>
|
||||
<LocalName xml:lang="de">Mate</LocalName>
|
||||
<LocalName xml:lang="it">Mate</LocalName>
|
||||
<Icon>preferences-desktop-wallpaper</Icon> <!-- FIXME: Mate Desktop Icon -->
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>mate.desktop.extras</Name>
|
||||
<LocalName xml:lang="en">Mate Desktop Addons</LocalName>
|
||||
<LocalName xml:lang="tr">Mate Masaüstü Araçları</LocalName>
|
||||
<Icon>preferences-desktop-wallpaper</Icon> <!-- FIXME: Mate Desktop Icon -->
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>accessibility</Name>
|
||||
<LocalName xml:lang="en">Accessibility</LocalName>
|
||||
<LocalName xml:lang="nl">Toegankelijkheid</LocalName>
|
||||
<LocalName xml:lang="sv">Handikappstöd</LocalName>
|
||||
<LocalName xml:lang="tr">Erişilebilirlik</LocalName>
|
||||
<LocalName xml:lang="fr">Accessibilité</LocalName>
|
||||
<LocalName xml:lang="es">Accesibilidad</LocalName>
|
||||
<LocalName xml:lang="de">Eingabehilfen</LocalName>
|
||||
<LocalName xml:lang="it">Accessibilità</LocalName>
|
||||
<Icon>preferences-desktop-accessibility</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>accessories</Name>
|
||||
<LocalName xml:lang="en">Accessories</LocalName>
|
||||
<LocalName xml:lang="nl">Toebehoren</LocalName>
|
||||
<LocalName xml:lang="sv">Tillbehör</LocalName>
|
||||
<LocalName xml:lang="tr">Donatılar</LocalName>
|
||||
<LocalName xml:lang="fr">Accessoires</LocalName>
|
||||
<LocalName xml:lang="es">Accesorios</LocalName>
|
||||
<LocalName xml:lang="de">Zubehör</LocalName>
|
||||
<LocalName xml:lang="it">Accessori</LocalName>
|
||||
<Icon>applications-accessories</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>education</Name>
|
||||
<LocalName xml:lang="en">Education</LocalName>
|
||||
<LocalName xml:lang="nl">Educatie</LocalName>
|
||||
<LocalName xml:lang="sv">Utbildning</LocalName>
|
||||
<LocalName xml:lang="tr">Eğitim</LocalName>
|
||||
<LocalName xml:lang="fr">Éducation</LocalName>
|
||||
<LocalName xml:lang="es">Educación</LocalName>
|
||||
<LocalName xml:lang="de">Lernen</LocalName>
|
||||
<LocalName xml:lang="it">Educazione</LocalName>
|
||||
<Icon>applications-education</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>games</Name>
|
||||
<LocalName xml:lang="en">Games</LocalName>
|
||||
<LocalName xml:lang="nl">Spelen</LocalName>
|
||||
<LocalName xml:lang="sv">Spel</LocalName>
|
||||
<LocalName xml:lang="tr">Oyunlar</LocalName>
|
||||
<LocalName xml:lang="fr">Jeux</LocalName>
|
||||
<LocalName xml:lang="es">Juegos</LocalName>
|
||||
<LocalName xml:lang="de">Spiele</LocalName>
|
||||
<LocalName xml:lang="it">Giochi</LocalName>
|
||||
<Icon>applications-games</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>graphics</Name>
|
||||
<LocalName xml:lang="en">Graphics</LocalName>
|
||||
<LocalName xml:lang="nl">Grafisch</LocalName>
|
||||
<LocalName xml:lang="sv">Grafik</LocalName>
|
||||
<LocalName xml:lang="tr">Grafik</LocalName>
|
||||
<LocalName xml:lang="fr">Graphisme</LocalName>
|
||||
<LocalName xml:lang="es">Gráficos</LocalName>
|
||||
<LocalName xml:lang="de">Design</LocalName>
|
||||
<LocalName xml:lang="it">Grafica</LocalName>
|
||||
<Icon>applications-graphics</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>internet</Name>
|
||||
<LocalName xml:lang="en">Internet</LocalName>
|
||||
<LocalName xml:lang="nl">Internet</LocalName>
|
||||
<LocalName xml:lang="sv">Internet</LocalName>
|
||||
<LocalName xml:lang="tr">İnternet</LocalName>
|
||||
<LocalName xml:lang="fr">Internet</LocalName>
|
||||
<LocalName xml:lang="es">Internet</LocalName>
|
||||
<LocalName xml:lang="de">Internet</LocalName>
|
||||
<LocalName xml:lang="it">Internet</LocalName>
|
||||
<Icon>applications-internet</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>office</Name>
|
||||
<LocalName xml:lang="en">Office</LocalName>
|
||||
<LocalName xml:lang="nl">Kantoor</LocalName>
|
||||
<LocalName xml:lang="sv">Kontor</LocalName>
|
||||
<LocalName xml:lang="tr">Ofis</LocalName>
|
||||
<LocalName xml:lang="fr">Bureautique</LocalName>
|
||||
<LocalName xml:lang="es">Oficina</LocalName>
|
||||
<LocalName xml:lang="de">Büro</LocalName>
|
||||
<LocalName xml:lang="it">Ufficio</LocalName>
|
||||
<Icon>applications-office</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>other</Name>
|
||||
<LocalName xml:lang="en">Other</LocalName>
|
||||
<LocalName xml:lang="nl">Overige</LocalName>
|
||||
<LocalName xml:lang="sv">Övrigt</LocalName>
|
||||
<LocalName xml:lang="tr">Diğer</LocalName>
|
||||
<LocalName xml:lang="fr">Autres</LocalName>
|
||||
<LocalName xml:lang="es">Otros</LocalName>
|
||||
<LocalName xml:lang="de">Sonstiges</LocalName>
|
||||
<LocalName xml:lang="it">Altro</LocalName>
|
||||
<Icon>applications-other</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>programming</Name>
|
||||
<LocalName xml:lang="en">Programming</LocalName>
|
||||
<LocalName xml:lang="nl">Programmeren</LocalName>
|
||||
<LocalName xml:lang="sv">Utveckling</LocalName>
|
||||
<LocalName xml:lang="tr">Programlama</LocalName>
|
||||
<LocalName xml:lang="fr">Programmation</LocalName>
|
||||
<LocalName xml:lang="es">Programación</LocalName>
|
||||
<LocalName xml:lang="de">Programmierung</LocalName>
|
||||
<LocalName xml:lang="it">Programmazione</LocalName>
|
||||
<Icon>applications-development</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>multimedia</Name>
|
||||
<LocalName xml:lang="en">Multimedia</LocalName>
|
||||
<LocalName xml:lang="nl">Multimedia</LocalName>
|
||||
<LocalName xml:lang="sv">Multimedia</LocalName>
|
||||
<LocalName xml:lang="tr">Çoklu Ortam</LocalName>
|
||||
<LocalName xml:lang="fr">Multimédia</LocalName>
|
||||
<LocalName xml:lang="es">Multimedia</LocalName>
|
||||
<LocalName xml:lang="de">Multimedia</LocalName>
|
||||
<LocalName xml:lang="it">Multimedia</LocalName>
|
||||
<Icon>applications-multimedia</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>system</Name>
|
||||
<LocalName xml:lang="en">System</LocalName>
|
||||
<LocalName xml:lang="nl">Systeem</LocalName>
|
||||
<LocalName xml:lang="sv">System</LocalName>
|
||||
<LocalName xml:lang="tr">Sistem</LocalName>
|
||||
<LocalName xml:lang="fr">Système</LocalName>
|
||||
<LocalName xml:lang="es">Sistema</LocalName>
|
||||
<LocalName xml:lang="de">System</LocalName>
|
||||
<LocalName xml:lang="it">Sistema</LocalName>
|
||||
<Icon>applications-system</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>gnome2.desktop</Name>
|
||||
<LocalName xml:lang="en">Gnome2 Desktop</LocalName>
|
||||
<LocalName xml:lang="nl">Gnome2 Desktop</LocalName>
|
||||
<LocalName xml:lang="sv">Skrivbord, GNOME2</LocalName>
|
||||
<LocalName xml:lang="tr">Gnome2 Masaüstü</LocalName>
|
||||
<LocalName xml:lang="fr">Bureau Gnome2</LocalName>
|
||||
<LocalName xml:lang="es">Escritorio Gnome</LocalName>
|
||||
<LocalName xml:lang="de">Gnome2</LocalName>
|
||||
<LocalName xml:lang="it">Gnome2</LocalName>
|
||||
<Icon>preferences-desktop</Icon> <!-- FIXME: Gnome Desktop Icon -->
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>gnome.desktop</Name>
|
||||
<LocalName xml:lang="en">Gnome3 Desktop</LocalName>
|
||||
<LocalName xml:lang="nl">Gnome3 Desktop</LocalName>
|
||||
<LocalName xml:lang="sv">Skrivbord, GNOME3</LocalName>
|
||||
<LocalName xml:lang="tr">Gnome3 Masaüstü</LocalName>
|
||||
<LocalName xml:lang="fr">Bureau Gnome3</LocalName>
|
||||
<LocalName xml:lang="es">Escritorio Gnome3</LocalName>
|
||||
<LocalName xml:lang="de">Gnome3</LocalName>
|
||||
<LocalName xml:lang="it">Gnome3</LocalName>
|
||||
<Icon>preferences-desktop</Icon> <!-- FIXME: Gnome Desktop Icon -->
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>gnome.desktop.addons</Name>
|
||||
<LocalName xml:lang="en">Gnome3 Desktop Addons</LocalName>
|
||||
<LocalName xml:lang="tr">Gnome3 Masaüstü Araçları</LocalName>
|
||||
<Icon>preferences-desktop</Icon> <!-- FIXME: Gnome Desktop Icon -->
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>kde.desktop</Name>
|
||||
<LocalName xml:lang="en">KDE Desktop</LocalName>
|
||||
<LocalName xml:lang="nl">KDE Desktop</LocalName>
|
||||
<LocalName xml:lang="sv">Skrivbord, KDE</LocalName>
|
||||
<LocalName xml:lang="tr">KDE Masaüstü</LocalName>
|
||||
<LocalName xml:lang="fr">Bureau KDE</LocalName>
|
||||
<LocalName xml:lang="es">Escritorio KDE</LocalName>
|
||||
<LocalName xml:lang="de">KDE</LocalName>
|
||||
<LocalName xml:lang="it">KDE</LocalName>
|
||||
<Icon>kde</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>kde.kdeaccessibility</Name>
|
||||
<LocalName xml:lang="en">KDE Accessibility</LocalName>
|
||||
<LocalName xml:lang="nl">KDE Toegankelijkheid</LocalName>
|
||||
<LocalName xml:lang="tr">KDE Erişilebilirlik</LocalName>
|
||||
<Icon>kde</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>kde.kdebindings</Name>
|
||||
<LocalName xml:lang="en">KDE Bindings</LocalName>
|
||||
<LocalName xml:lang="nl">KDE Bindingen</LocalName>
|
||||
<LocalName xml:lang="tr">KDE Bağlayıcıları</LocalName>
|
||||
<Icon>kde</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>kde.kdeedu</Name>
|
||||
<LocalName xml:lang="en">KDE Education</LocalName>
|
||||
<LocalName xml:lang="nl">KDE Onderwijs</LocalName>
|
||||
<LocalName xml:lang="tr">KDE Eğitim</LocalName>
|
||||
<Icon>kde</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>kde.kdegraphics</Name>
|
||||
<LocalName xml:lang="en">KDE Graphics</LocalName>
|
||||
<LocalName xml:lang="nl">KDE Grafisch</LocalName>
|
||||
<LocalName xml:lang="tr">KDE Grafik</LocalName>
|
||||
<Icon>kde</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>kde.kdeutils</Name>
|
||||
<LocalName xml:lang="en">KDE Tools</LocalName>
|
||||
<LocalName xml:lang="nl">KDE Gereedschap</LocalName>
|
||||
<LocalName xml:lang="tr">KDE Araçları</LocalName>
|
||||
<Icon>kde</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>kde.kdemultimedia</Name>
|
||||
<LocalName xml:lang="en">KDE Multimedia</LocalName>
|
||||
<LocalName xml:lang="nl">KDE Multimedia</LocalName>
|
||||
<LocalName xml:lang="tr">KDE Çoklu Ortam</LocalName>
|
||||
<Icon>kde</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>kde.kdegames</Name>
|
||||
<LocalName xml:lang="en">KDE Games</LocalName>
|
||||
<LocalName xml:lang="nl">KDE Games</LocalName>
|
||||
<LocalName xml:lang="tr">KDE Oyunları</LocalName>
|
||||
<LocalName xml:lang="es">KDE Juegos</LocalName>
|
||||
<Icon>kde</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>enlightenment.desktop</Name>
|
||||
<LocalName xml:lang="en">e17 Desktop</LocalName>
|
||||
<LocalName xml:lang="nl">e17 Desktop</LocalName>
|
||||
<LocalName xml:lang="sv">Skrivbord, e17</LocalName>
|
||||
<LocalName xml:lang="tr">e17 Masaüstü</LocalName>
|
||||
<LocalName xml:lang="fr">Bureau e17</LocalName>
|
||||
<LocalName xml:lang="es">Escritorio e17</LocalName>
|
||||
<Icon>preferences-desktop</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>enlightenment.addon</Name>
|
||||
<LocalName xml:lang="en">e17 Addon</LocalName>
|
||||
<LocalName xml:lang="nl">e17 Addon</LocalName>
|
||||
<LocalName xml:lang="sv">e17 Addon</LocalName>
|
||||
<LocalName xml:lang="tr">e17 Eklentileri</LocalName>
|
||||
<LocalName xml:lang="fr">e17 Addon</LocalName>
|
||||
<LocalName xml:lang="es">e17 Addon</LocalName>
|
||||
<Icon>preferences-desktop</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>xfce.desktop</Name>
|
||||
<LocalName xml:lang="en">Xfce Desktop</LocalName>
|
||||
<LocalName xml:lang="nl">Xfce Desktop</LocalName>
|
||||
<LocalName xml:lang="sv">Skrivbord, Xfce</LocalName>
|
||||
<LocalName xml:lang="tr">Xfce Masaüstü</LocalName>
|
||||
<LocalName xml:lang="fr">Bureau Xfce</LocalName>
|
||||
<LocalName xml:lang="es">Escritorio Xfce</LocalName>
|
||||
<Icon>preferences-desktop</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>xfce.addon</Name>
|
||||
<LocalName xml:lang="en">Xfce Desktop Addons</LocalName>
|
||||
<LocalName xml:lang="tr">Xfce Masaüstü Araçları</LocalName>
|
||||
<Icon>preferences-desktop</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>razor-qt.desktop</Name>
|
||||
<LocalName xml:lang="en">Razor-qt Desktop</LocalName>
|
||||
<LocalName xml:lang="nl">Razor-qt Desktop</LocalName>
|
||||
<LocalName xml:lang="sv">Skrivbord, Razor-qt</LocalName>
|
||||
<LocalName xml:lang="tr">Razor-qt Masaüstü</LocalName>
|
||||
<LocalName xml:lang="fr">Bureau Razor-qt</LocalName>
|
||||
<LocalName xml:lang="es">Escritorio Razor-qt</LocalName>
|
||||
<Icon>razor-qt</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>lxde.desktop</Name>
|
||||
<LocalName xml:lang="en">LXDE Desktop</LocalName>
|
||||
<LocalName xml:lang="nl">LXDE Desktop</LocalName>
|
||||
<LocalName xml:lang="sv">Skrivbord, LXDE</LocalName>
|
||||
<LocalName xml:lang="tr">LXDE Masaüstü</LocalName>
|
||||
<LocalName xml:lang="fr">Bureau LXDE</LocalName>
|
||||
<LocalName xml:lang="es">Escritorio LXDE</LocalName>
|
||||
<Icon>preferences-desktop</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>lxde.addon</Name>
|
||||
<LocalName xml:lang="en">Lxde Desktop Addons</LocalName>
|
||||
<LocalName xml:lang="tr">Lxde Masaüstü Araçları</LocalName>
|
||||
<Icon>preferences-desktop</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>lxqt.desktop</Name>
|
||||
<LocalName xml:lang="en">LXQT Desktop</LocalName>
|
||||
<LocalName xml:lang="nl">LXQT Desktop</LocalName>
|
||||
<LocalName xml:lang="sv">Skrivbord, LXQT</LocalName>
|
||||
<LocalName xml:lang="tr">LXQT Masaüstü</LocalName>
|
||||
<LocalName xml:lang="fr">Bureau LXQT</LocalName>
|
||||
<LocalName xml:lang="es">Escritorio LXQT</LocalName>
|
||||
<Icon>preferences-desktop</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>lxqt.addon</Name>
|
||||
<LocalName xml:lang="en">Lxqt Desktop Addons</LocalName>
|
||||
<LocalName xml:lang="tr">Lxqt Masaüstü Araçları</LocalName>
|
||||
<Icon>preferences-desktop</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>other.desktop</Name>
|
||||
<LocalName xml:lang="en">Other Desktops</LocalName>
|
||||
<LocalName xml:lang="nl">Overige Desktop</LocalName>
|
||||
<LocalName xml:lang="sv">Skrivbord, Övrigt</LocalName>
|
||||
<LocalName xml:lang="tr">Diğer Masaüstü Ortamları</LocalName>
|
||||
<LocalName xml:lang="fr">Autres bureaux</LocalName>
|
||||
<LocalName xml:lang="es">Otros escritorios</LocalName>
|
||||
<LocalName xml:lang="de">Andere Desktopumgebungen</LocalName>
|
||||
<LocalName xml:lang="it">Altri desktop</LocalName>
|
||||
<Icon>preferences-desktop</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>publishing</Name>
|
||||
<LocalName xml:lang="en">Publishing</LocalName>
|
||||
<LocalName xml:lang="nl">Publiceren</LocalName>
|
||||
<LocalName xml:lang="sv">Publicering</LocalName>
|
||||
<LocalName xml:lang="tr">Yayıncılık</LocalName>
|
||||
<LocalName xml:lang="fr">Publication</LocalName>
|
||||
<LocalName xml:lang="es">Publicación</LocalName>
|
||||
<LocalName xml:lang="it">Pubblicazione</LocalName>
|
||||
<Icon>accessories-dictionary</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>servers</Name>
|
||||
<LocalName xml:lang="en">Servers</LocalName>
|
||||
<LocalName xml:lang="nl">Servers</LocalName>
|
||||
<LocalName xml:lang="sv">Servrar</LocalName>
|
||||
<LocalName xml:lang="tr">Sunucular</LocalName>
|
||||
<LocalName xml:lang="fr">Serveurs</LocalName>
|
||||
<LocalName xml:lang="es">Servidores</LocalName>
|
||||
<LocalName xml:lang="de">Server</LocalName>
|
||||
<LocalName xml:lang="it">Server</LocalName>
|
||||
<Icon>network-server</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>fonts</Name>
|
||||
<LocalName xml:lang="en">Fonts</LocalName>
|
||||
<LocalName xml:lang="nl">Lettertypen</LocalName>
|
||||
<LocalName xml:lang="sv">Teckensnitt</LocalName>
|
||||
<LocalName xml:lang="tr">Fontlar</LocalName>
|
||||
<LocalName xml:lang="fr">Polices</LocalName>
|
||||
<LocalName xml:lang="es">Fuentes</LocalName>
|
||||
<LocalName xml:lang="de">Fonts</LocalName>
|
||||
<LocalName xml:lang="it">Caratteri</LocalName>
|
||||
<Icon>preferences-desktop-font</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>admin.tools</Name>
|
||||
<LocalName xml:lang="en">Admin Tools</LocalName>
|
||||
<LocalName xml:lang="nl">Administratie Gereedschap</LocalName>
|
||||
<LocalName xml:lang="sv">Administrativa verktyg</LocalName>
|
||||
<LocalName xml:lang="tr">Yönetici Araçları</LocalName>
|
||||
<LocalName xml:lang="fr">Outils d'administration</LocalName>
|
||||
<LocalName xml:lang="es">Administración</LocalName>
|
||||
<LocalName xml:lang="de">Admin Tools</LocalName>
|
||||
<LocalName xml:lang="it">Strumenti d'amministrazione</LocalName>
|
||||
<Icon>application-x-shellscript</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>legacy</Name>
|
||||
<LocalName xml:lang="en">Legacy</LocalName>
|
||||
<LocalName xml:lang="nl">Legacy</LocalName>
|
||||
<LocalName xml:lang="sv">Legat</LocalName>
|
||||
<LocalName xml:lang="tr">Uyumluluk</LocalName>
|
||||
<LocalName xml:lang="fr">Anciens</LocalName>
|
||||
<LocalName xml:lang="it">Obsoleti/in disuso</LocalName>
|
||||
<LocalName xml:lang="es">Legacy</LocalName>
|
||||
<Icon>media-floppy</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>localization</Name>
|
||||
<LocalName xml:lang="en">Localization</LocalName>
|
||||
<LocalName xml:lang="nl">Lokalisatie</LocalName>
|
||||
<LocalName xml:lang="sv">Internationalisering</LocalName>
|
||||
<LocalName xml:lang="tr">Yerelleştirme</LocalName>
|
||||
<LocalName xml:lang="fr">Internationalisation</LocalName>
|
||||
<LocalName xml:lang="es">Localización</LocalName>
|
||||
<LocalName xml:lang="it">Localizzazione</LocalName>
|
||||
<Icon>preferences-desktop-locale</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>virtualization</Name>
|
||||
<LocalName xml:lang="en">Virtualization</LocalName>
|
||||
<LocalName xml:lang="nl">Virtualisatie</LocalName>
|
||||
<LocalName xml:lang="sv">Virtualisering</LocalName>
|
||||
<LocalName xml:lang="tr">Sanallaştırma</LocalName>
|
||||
<LocalName xml:lang="fr">Virtualisation</LocalName>
|
||||
<LocalName xml:lang="es">Virtualización</LocalName>
|
||||
<LocalName xml:lang="de">Virtualisierung</LocalName>
|
||||
<LocalName xml:lang="it">Virtualizzazione</LocalName>
|
||||
<Icon>video-display</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>power.management</Name>
|
||||
<LocalName xml:lang="en">Power Management</LocalName>
|
||||
<LocalName xml:lang="nl">Stroombeheer</LocalName>
|
||||
<LocalName xml:lang="sv">Strömsparhantering</LocalName>
|
||||
<LocalName xml:lang="tr">Güç Yönetimi</LocalName>
|
||||
<LocalName xml:lang="fr">Gestion de l'énergie</LocalName>
|
||||
<LocalName xml:lang="es">Gestión de energía</LocalName>
|
||||
<LocalName xml:lang="it">Gestione energetica</LocalName>
|
||||
<Icon>preferences-system-power-management</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>security</Name>
|
||||
<LocalName xml:lang="en">Security</LocalName>
|
||||
<LocalName xml:lang="nl">Veiligheid</LocalName>
|
||||
<LocalName xml:lang="sv">Säkerhet</LocalName>
|
||||
<LocalName xml:lang="tr">Güvenlik</LocalName>
|
||||
<LocalName xml:lang="fr">Sécurité</LocalName>
|
||||
<LocalName xml:lang="es">Seguridad</LocalName>
|
||||
<LocalName xml:lang="de">Sicherheit</LocalName>
|
||||
<LocalName xml:lang="it">Sicurezza</LocalName>
|
||||
<Icon>preferences-desktop-cryptography</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>communication</Name>
|
||||
<LocalName xml:lang="en">Communication</LocalName>
|
||||
<LocalName xml:lang="nl">Communicatie</LocalName>
|
||||
<LocalName xml:lang="sv">Kommunikation</LocalName>
|
||||
<LocalName xml:lang="tr">İletişim</LocalName>
|
||||
<LocalName xml:lang="fr">Communication</LocalName>
|
||||
<LocalName xml:lang="es">Comunicación</LocalName>
|
||||
<LocalName xml:lang="de">Kommunikation</LocalName>
|
||||
<LocalName xml:lang="it">Comunicazione</LocalName>
|
||||
<Icon>internet-telephony</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>network</Name>
|
||||
<LocalName xml:lang="en">Network</LocalName>
|
||||
<LocalName xml:lang="nl">Netwerk</LocalName>
|
||||
<LocalName xml:lang="sv">Nätverk</LocalName>
|
||||
<LocalName xml:lang="tr">Ağ</LocalName>
|
||||
<LocalName xml:lang="fr">Réseau</LocalName>
|
||||
<LocalName xml:lang="es">Red</LocalName>
|
||||
<LocalName xml:lang="de">Netzwerk</LocalName>
|
||||
<LocalName xml:lang="it">Rete</LocalName>
|
||||
<Icon>network-workgroup</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>science</Name>
|
||||
<LocalName xml:lang="en">Science</LocalName>
|
||||
<LocalName xml:lang="nl">Wetenschap</LocalName>
|
||||
<LocalName xml:lang="sv">Vetenskap</LocalName>
|
||||
<LocalName xml:lang="tr">Bilim</LocalName>
|
||||
<LocalName xml:lang="fr">Science</LocalName>
|
||||
<LocalName xml:lang="es">Ciencia</LocalName>
|
||||
<LocalName xml:lang="de">Wissenschaft</LocalName>
|
||||
<LocalName xml:lang="it">Scienze</LocalName>
|
||||
<Icon>applications-science</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>documentation</Name>
|
||||
<LocalName xml:lang="en">Documentation</LocalName>
|
||||
<LocalName xml:lang="nl">Documentatie</LocalName>
|
||||
<LocalName xml:lang="sv">Dokumentation</LocalName>
|
||||
<LocalName xml:lang="tr">Belgeleme</LocalName>
|
||||
<LocalName xml:lang="fr">Documentation</LocalName>
|
||||
<LocalName xml:lang="es">Documentación</LocalName>
|
||||
<LocalName xml:lang="de">Dokumentation</LocalName>
|
||||
<LocalName xml:lang="it">Documentazione</LocalName>
|
||||
<Icon>graphics-viewer-document</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>electronics</Name>
|
||||
<LocalName xml:lang="en">Electronics</LocalName>
|
||||
<LocalName xml:lang="nl">Elektronica</LocalName>
|
||||
<LocalName xml:lang="sv">Elektroniskt</LocalName>
|
||||
<LocalName xml:lang="tr">Elektronik</LocalName>
|
||||
<LocalName xml:lang="fr">Électronique</LocalName>
|
||||
<LocalName xml:lang="es">Electrónica</LocalName>
|
||||
<LocalName xml:lang="de">Elektronik</LocalName>
|
||||
<LocalName xml:lang="it">Elettronica</LocalName>
|
||||
<Icon>utilities-system-monitor</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>unknown</Name>
|
||||
<LocalName xml:lang="en">Unknown</LocalName>
|
||||
<LocalName xml:lang="nl">Onbekend</LocalName>
|
||||
<LocalName xml:lang="sv">Okända</LocalName>
|
||||
<LocalName xml:lang="tr">Bilinmeyen</LocalName>
|
||||
<LocalName xml:lang="fr">Inconnu</LocalName>
|
||||
<LocalName xml:lang="es">Desconocido</LocalName>
|
||||
<LocalName xml:lang="de">Unbekannt</LocalName>
|
||||
<LocalName xml:lang="it">Sconosciuto</LocalName>
|
||||
<Icon>unknown</Icon>
|
||||
</Group>
|
||||
<Group>
|
||||
<Name>all</Name>
|
||||
<LocalName xml:lang="en">All</LocalName>
|
||||
<LocalName xml:lang="nl">Alles</LocalName>
|
||||
<LocalName xml:lang="sv">Samtliga</LocalName>
|
||||
<LocalName xml:lang="tr">Tümü</LocalName>
|
||||
<LocalName xml:lang="fr">Tout</LocalName>
|
||||
<LocalName xml:lang="es">Todos</LocalName>
|
||||
<LocalName xml:lang="de">Alle</LocalName>
|
||||
<LocalName xml:lang="it">Tutti</LocalName>
|
||||
<Icon>media-optical</Icon>
|
||||
</Group>
|
||||
</Groups>
|
||||
</PISI>
|
||||
+22118
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
2706ca17146fbaf0f782335332a3e46b83b5fec0
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
5f7a0fd6c2ca07ef51c5221429012c362840a547
|
||||
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Licensed under the GNU General Public License, version 3.
|
||||
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||
|
||||
from pisi.actionsapi import get
|
||||
from pisi.actionsapi import autotools
|
||||
from pisi.actionsapi import pisitools
|
||||
from pisi.actionsapi import shelltools
|
||||
|
||||
def setup():
|
||||
# /var/run => /run
|
||||
#pisitools.dosed("configure.ac", "^(\s+CONSOLE_KIT_PID_FILE=)\$\{localstatedir\}(\/run\/ConsoleKit\/pid)", r"\1\2")
|
||||
#pisitools.dosed("src/Makefile.am", "\$\(localstatedir\)(\/run\/ConsoleKit)", r"\1")
|
||||
shelltools.system("sed -i -e '/SystemdService/d' data/org.freedesktop.ConsoleKit.service.in")
|
||||
|
||||
autotools.autoreconf("-fi")
|
||||
|
||||
autotools.configure("\
|
||||
--libexecdir=/usr/libexec/ConsoleKit \
|
||||
--localstatedir=/var \
|
||||
--with-pid-file=/run/ConsoleKit/pid \
|
||||
--with-systemdsystemunitdir=no \
|
||||
--disable-static \
|
||||
--enable-pam-module \
|
||||
--enable-udev-acl \
|
||||
--enable-pam-module \
|
||||
--with-dbus-services=/usr/share/dbus-1/services \
|
||||
--with-logrotate-dir=/etc/logrotate.d \
|
||||
--with-xinitrc-dir=/etc/X11/xinit/xinitrc \
|
||||
--with-pam-module-dir=/lib/security \
|
||||
--without-systemdsystemunitdir \
|
||||
XMLTO_FLAGS='--skip-validation' \
|
||||
")
|
||||
|
||||
def build():
|
||||
autotools.make()
|
||||
|
||||
def install():
|
||||
autotools.rawInstall("DESTDIR=%s/" % get.installDIR())
|
||||
pisitools.dodir("/run/console")
|
||||
|
||||
pisitools.dodoc("AUTHORS", "README", "COPYING", "HACKING", "NEWS", "TODO")
|
||||
@@ -0,0 +1,2 @@
|
||||
d /run/ConsoleKit 0755 root root
|
||||
d /run/console 0755 root root
|
||||
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
TAGDIR=/run/console
|
||||
|
||||
[ -n "$CK_SESSION_USER_UID" ] || exit 1
|
||||
[ "$CK_SESSION_IS_LOCAL" = "true" ] || exit 0
|
||||
|
||||
TAGFILE="$TAGDIR/`getent passwd $CK_SESSION_USER_UID | cut -f 1 -d:`"
|
||||
|
||||
if [ "$1" = "session_added" ]; then
|
||||
mkdir -p "$TAGDIR"
|
||||
echo "$CK_SESSION_ID" >> "$TAGFILE"
|
||||
fi
|
||||
|
||||
if [ "$1" = "session_removed" ] && [ -e "$TAGFILE" ]; then
|
||||
sed -i "\%^$CK_SESSION_ID\$%d" "$TAGFILE"
|
||||
[ -s "$TAGFILE" ] || rm -f "$TAGFILE"
|
||||
fi
|
||||
@@ -0,0 +1,134 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>ConsoleKit2</Name>
|
||||
<Homepage>http://freedesktop.org/Software/Hal</Homepage>
|
||||
<Packager>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Packager>
|
||||
<License>GPLv2</License>
|
||||
<IsA>library</IsA>
|
||||
<Summary>A framework for defining and tracking users, login sessions, and seats</Summary>
|
||||
<Description>ConsoleKit is a system daemon for tracking what users are logged into the system and how they interact with the computer (e.g. which keyboard and mouse they use).</Description>
|
||||
<Archive sha1sum="64163e35e2622dc7666af933557595ce104e32c1" type="zip">https://github.com/ConsoleKit2/ConsoleKit2/archive/master.zip</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>acl-devel</Dependency>
|
||||
<Dependency>pam-devel</Dependency>
|
||||
<Dependency>dbus-devel</Dependency>
|
||||
<Dependency>udev-devel</Dependency>
|
||||
<Dependency>zlib-devel</Dependency>
|
||||
<Dependency>glib2-devel</Dependency>
|
||||
<Dependency>libX11-devel</Dependency>
|
||||
<Dependency>polkit-devel</Dependency>
|
||||
<Dependency>dbus-glib-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>ConsoleKit</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency>acl</Dependency>
|
||||
<Dependency>pam</Dependency>
|
||||
<Dependency>dbus</Dependency>
|
||||
<Dependency>zlib</Dependency>
|
||||
<Dependency>glib2</Dependency>
|
||||
<Dependency>libX11</Dependency>
|
||||
<Dependency>polkit</Dependency>
|
||||
<Dependency>libudev</Dependency>
|
||||
<Dependency>dbus-glib</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="config">/etc</Path>
|
||||
<Path fileType="config">/usr/lib/tmpfiles.d/ConsoleKit.conf</Path>
|
||||
<Path fileType="executable">/usr/bin</Path>
|
||||
<Path fileType="executable">/usr/sbin</Path>
|
||||
<Path fileType="library">/usr/libexec</Path>
|
||||
<Path fileType="library">/lib</Path>
|
||||
<Path fileType="library">/usr/lib</Path>
|
||||
<Path fileType="data">/usr/share/dbus-1</Path>
|
||||
<Path fileType="data">/usr/share/polkit-1/actions</Path>
|
||||
<Path fileType="man">/usr/share/man</Path>
|
||||
<Path fileType="doc">/usr/share/doc</Path>
|
||||
<Path fileType="data">/var</Path>
|
||||
<Path fileType="data">/run</Path>
|
||||
</Files>
|
||||
<AdditionalFiles>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/lib/tmpfiles.d/ConsoleKit.conf">ConsoleKit.conf</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0755" target="/usr/lib/ConsoleKit/run-session.d/pam-foreground-compat.ck">pam-foreground-compat.ck</AdditionalFile>
|
||||
</AdditionalFiles>
|
||||
</Package>
|
||||
|
||||
<Package>
|
||||
<Name>ConsoleKit-devel</Name>
|
||||
<PartOf>system.devel</PartOf>
|
||||
<Summary>Development files for ConsoleKit</Summary>
|
||||
<RuntimeDependencies>
|
||||
<Dependency release="current">ConsoleKit</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="header">/usr/include</Path>
|
||||
<Path fileType="data">/usr/lib/pkgconfig</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="8">
|
||||
<Date>2015-02-05</Date>
|
||||
<Version>0.9.2</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Vedat Demir</Name>
|
||||
<Email>vedat@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="7">
|
||||
<Date>2014-08-01</Date>
|
||||
<Version>0.4.6</Version>
|
||||
<Comment>Rebuild.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2014-05-11</Date>
|
||||
<Version>0.4.6</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2014-03-06</Date>
|
||||
<Version>0.4.6</Version>
|
||||
<Comment>Dep Fix</Comment>
|
||||
<Name>Varol Maksutoğlu</Name>
|
||||
<Email>waroi@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2014-01-09</Date>
|
||||
<Version>0.4.6</Version>
|
||||
<Comment>Add gentoo patches and ConsoleKit.conf</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-09-08</Date>
|
||||
<Version>0.4.6</Version>
|
||||
<Comment>/var/run => /run</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-03-04</Date>
|
||||
<Version>0.4.6</Version>
|
||||
<Comment>Version bump</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2012-08-23</Date>
|
||||
<Version>0.4.5</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" ?>
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>ConsoleKit</Name>
|
||||
<Summary xml:lang="tr">Kullanıcıları, giriş oturumlarını ve koltukları takip etmek ve tanımlamak için bir altyapı</Summary>
|
||||
<Description xml:lang="tr">ConsoleKit, sisteme giriş yapmış kullanıcıları ve bu kullanıcıların bilgisayar ile nasıl etkileştiğini izleyen bir sistem hizmetidir.</Description>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>ConsoleKit-devel</Name>
|
||||
<Summary xml:lang="tr">ConsoleKit için geliştirme dosyaları</Summary>
|
||||
</Package>
|
||||
</PISI>
|
||||
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Licensed under the GNU General Public License, version 3.
|
||||
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||
|
||||
from pisi.actionsapi import autotools
|
||||
from pisi.actionsapi import pisitools
|
||||
from pisi.actionsapi import shelltools
|
||||
from pisi.actionsapi import get
|
||||
|
||||
def setup():
|
||||
shelltools.export("OPTIMIZER", get.CFLAGS())
|
||||
shelltools.export("DEBUG", "-DNDEBUG")
|
||||
|
||||
autotools.rawConfigure("--libdir=/lib \
|
||||
--mandir=/usr/share/man \
|
||||
--libexecdir=/lib \
|
||||
--bindir=/bin")
|
||||
def build():
|
||||
autotools.make()
|
||||
|
||||
def install():
|
||||
autotools.make("DESTDIR=%s install install-lib install-dev" % get.installDIR())
|
||||
|
||||
pisitools.remove("/lib/*.a")
|
||||
|
||||
shelltools.chmod("%s/lib/libacl.so.*.*.*" % get.installDIR(), 0755)
|
||||
|
||||
pisitools.dodoc("README")
|
||||
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>acl</Name>
|
||||
<Homepage>http://acl.bestbits.at/</Homepage>
|
||||
<Packager>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Packager>
|
||||
<License>GPLv2+</License>
|
||||
<License>LGPLv2.1</License>
|
||||
<IsA>app:console</IsA>
|
||||
<IsA>library</IsA>
|
||||
<Summary>Access control list utilities</Summary>
|
||||
<Description>acl contains the getfacl and setfacl utilities needed for manipulating access control lists along with the needed libraries.</Description>
|
||||
<Archive sha1sum="537dddc0ee7b6aa67960a3de2d36f1e2ff2059d9" type="targz">http://download.savannah.gnu.org/releases-noredirect/acl/acl-2.2.52.src.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>attr</Dependency>
|
||||
</BuildDependencies>
|
||||
</Source>
|
||||
<Package>
|
||||
<Name>acl</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency>attr</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="executable">/bin</Path>
|
||||
<Path fileType="library">/lib</Path>
|
||||
<Path fileType="localedata">/usr/share/locale</Path>
|
||||
<Path fileType="doc">/usr/share/doc</Path>
|
||||
<Path fileType="man">/usr/share/man</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
<Package>
|
||||
<Name>acl-devel</Name>
|
||||
<PartOf>system.devel</PartOf>
|
||||
<Summary>Development files for acl</Summary>
|
||||
<RuntimeDependencies>
|
||||
<Dependency release="current">acl</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="header">/usr/include</Path>
|
||||
<Path fileType="man">/usr/share/man/man3</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2014-09-30</Date>
|
||||
<Version>2.2.52</Version>
|
||||
<Comment>Rebuild.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2014-05-11</Date>
|
||||
<Version>2.2.52</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-08-28</Date>
|
||||
<Version>2.2.52</Version>
|
||||
<Comment>Version bump, clean acl.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2012-06-04</Date>
|
||||
<Version>2.2.51</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Erdem Artan</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" ?>
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>acl</Name>
|
||||
<Summary xml:lang="tr">Erişim denetim listesi için çeşitli araçlar</Summary>
|
||||
<Description xml:lang="tr">acl erişim denetim listelerini yönetmeye yarayan getfacl ve setfacl araçlarıyla gerekli kütüphaneleri içeren bir pakettir.</Description>
|
||||
<Summary xml:lang="fr">Utilitaires, librairies et fichiers d'entête de liste de contrôle d'accès.</Summary>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>acl-devel</Name>
|
||||
<Summary xml:lang="tr">acl için geliştirme dosyaları</Summary>
|
||||
</Package>
|
||||
</PISI>
|
||||
@@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Licensed under the GNU General Public License, version 3.
|
||||
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||
|
||||
from pisi.actionsapi import autotools
|
||||
from pisi.actionsapi import pisitools
|
||||
from pisi.actionsapi import get
|
||||
|
||||
def build():
|
||||
pisitools.dosed("Makefile", "MANDIR = /usr/man", "MANDIR = /usr/share/man")
|
||||
autotools.make("-C po update-po")
|
||||
autotools.make()
|
||||
|
||||
def install():
|
||||
autotools.rawInstall("DESTDIR=%s" % get.installDIR())
|
||||
|
||||
pisitools.remove("/usr/sbin/ntsysv")
|
||||
pisitools.remove("/sbin/chkconfig")
|
||||
pisitools.remove("/usr/share/man/man8/chkconfig.8")
|
||||
pisitools.remove("/usr/share/man/man8/ntsysv.8")
|
||||
pisitools.removeDir("/usr/share/man/man5")
|
||||
pisitools.removeDir("/sbin")
|
||||
|
||||
pisitools.dodoc("COPYING")
|
||||
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>alternatives</Name>
|
||||
<Homepage>http://git.fedorahosted.org/git/?p=chkconfig.git;a=summary</Homepage>
|
||||
<Packager>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Packager>
|
||||
<License>GPLv2</License>
|
||||
<IsA>app:console</IsA>
|
||||
<Summary>Alternative management system</Summary>
|
||||
<Description>alternatives creates, removes, maintains and displays information about the symbolic links comprising the alternatives system. Alternatives system determines the defaults when several programs fulfilling the same or similar functions to be installed on a single system at the same time.</Description>
|
||||
<Archive sha1sum="e02a02a0fbc14bcabded474f19bff715b7db8fb1" type="tarxz">https://git.fedorahosted.org/cgit/chkconfig.git/snapshot/chkconfig-1.3.62.tar.xz</Archive>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>alternatives</Name>
|
||||
<Files>
|
||||
<Path fileType="config">/etc</Path>
|
||||
<Path fileType="executable">/usr/sbin</Path>
|
||||
<Path fileType="localedata">/usr/share/locale</Path>
|
||||
<Path fileType="man">/usr/share/man</Path>
|
||||
<Path fileType="doc">/usr/share/doc</Path>
|
||||
<Path fileType="data">/var</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2014-05-11</Date>
|
||||
<Version>1.3.62</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2014-05-11</Date>
|
||||
<Version>1.3.58</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-10-28</Date>
|
||||
<Version>1.3.58</Version>
|
||||
<Comment>rebuild.</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2012-05-03</Date>
|
||||
<Version>1.3.58</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" ?>
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>alternatives</Name>
|
||||
<Summary xml:lang="tr">Alternatif yönetim sistemi</Summary>
|
||||
<Description xml:lang="tr">alternatives, alternatives sisteminin parçası olan sembolik bağlantıları oluşturan, silen, yöneten ve bunlar hakkında bilgi gösteren araçtır. Alternatives sistemi, birbirine benzer ya da aynı işlevleri sunan programların aynı anda aynı sisteme kurulduğu zamanlarda öntanımlıları belirler.</Description>
|
||||
</Source>
|
||||
</PISI>
|
||||
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Licensed under the GNU General Public License, version 3.
|
||||
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||
|
||||
from pisi.actionsapi import get
|
||||
from pisi.actionsapi import autotools
|
||||
from pisi.actionsapi import pisitools
|
||||
|
||||
suffix = "32" if get.buildTYPE() == "emul32" else ""
|
||||
bindir = "/tmp" if get.buildTYPE() == "emul32" else "/bin"
|
||||
|
||||
def setup():
|
||||
autotools.rawConfigure("--libdir=/lib%s \
|
||||
--mandir=/usr/share/man \
|
||||
--libexecdir=/lib%s \
|
||||
--bindir=%s" % (suffix, suffix, bindir))
|
||||
def build():
|
||||
autotools.make()
|
||||
|
||||
def install():
|
||||
autotools.make("DIST_ROOT=%s install install-lib install-dev" % get.installDIR())
|
||||
if get.buildTYPE() == "emul32":
|
||||
pisitools.removeDir("/tmp")
|
||||
pisitools.remove("/lib%s/libattr.a" % suffix)
|
||||
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>attr</Name>
|
||||
<Homepage>http://acl.bestbits.at/</Homepage>
|
||||
<Packager>
|
||||
<Name>Pisi Linux Admins</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Packager>
|
||||
<License>LGPLv2.1</License>
|
||||
<IsA>app:console</IsA>
|
||||
<IsA>library</IsA>
|
||||
<Summary>Utilities for managing filesystems extended attributes</Summary>
|
||||
<Description>attr contains a set of tools for manipulating extended attributes on filesystem objects, in particular getfattr and setfattr.</Description>
|
||||
<Archive sha1sum="5060f0062baee6439f41a433325b8b3671f8d2d8" type="targz">http://download.savannah.gnu.org/releases-noredirect/attr/attr-2.4.47.src.tar.gz</Archive>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>attr</Name>
|
||||
<Files>
|
||||
<Path fileType="executable">/bin</Path>
|
||||
<Path fileType="library">/lib</Path>
|
||||
<Path fileType="localedata">/usr/share/locale</Path>
|
||||
<Path fileType="doc">/usr/share/doc</Path>
|
||||
<Path fileType="man">/usr/share/man</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
<Package>
|
||||
<Name>attr-devel</Name>
|
||||
<PartOf>system.devel</PartOf>
|
||||
<Summary>Development files for attr</Summary>
|
||||
<RuntimeDependencies>
|
||||
<Dependency release="current">attr</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="header">/usr/include</Path>
|
||||
<Path fileType="man">/usr/share/man/man3</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
<Package>
|
||||
<Name>attr-32bit</Name>
|
||||
<PartOf>emul32</PartOf>
|
||||
<Summary>32-bit shared libraries for attr</Summary>
|
||||
<BuildType>emul32</BuildType>
|
||||
<RuntimeDependencies>
|
||||
<Dependency release="current">attr</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="library">/lib32</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="5">
|
||||
<Date>2014-09-30</Date>
|
||||
<Version>2.4.47</Version>
|
||||
<Comment>Rebuild.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2014-05-11</Date>
|
||||
<Version>2.4.47</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-08-28</Date>
|
||||
<Version>2.4.47</Version>
|
||||
<Comment>Version bump, clean attr.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-01-24</Date>
|
||||
<Version>2.4.46</Version>
|
||||
<Comment>Add emul32</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2012-06-04</Date>
|
||||
<Version>2.4.46</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Erdem Artan</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" ?>
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>attr</Name>
|
||||
<Summary xml:lang="tr">Gelişkin öznitelikler araçları</Summary>
|
||||
<Description xml:lang="tr">attr dosya sistemi nesnelerinin özniteliklerini değiştirmek için gerekli bir dizi araç sunar.</Description>
|
||||
<Description xml:lang="fr">attr offre des utilitaires qui servent à manipuler les attributs étendus des objects de système de fichier.</Description>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>attr-devel</Name>
|
||||
<Summary xml:lang="tr">attr için geliştirme dosyaları</Summary>
|
||||
</Package>
|
||||
</PISI>
|
||||
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Licensed under the GNU General Public License, version 3.
|
||||
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||
|
||||
from pisi.actionsapi import autotools
|
||||
from pisi.actionsapi import pisitools
|
||||
from pisi.actionsapi import get
|
||||
|
||||
def setup():
|
||||
autotools.autoreconf("-vif")
|
||||
autotools.configure("--with-libcap-ng=yes \
|
||||
--enable-gssapi-krb5=no \
|
||||
--enable-systemd=no \
|
||||
--with-python=yes \
|
||||
--disable-static")
|
||||
|
||||
def build():
|
||||
autotools.make()
|
||||
|
||||
def check():
|
||||
autotools.make("-j1 check")
|
||||
|
||||
def install():
|
||||
autotools.rawInstall('DESTDIR="%s"' % get.installDIR())
|
||||
|
||||
# remove RH specific bits
|
||||
pisitools.removeDir("/etc/sysconfig")
|
||||
pisitools.removeDir("/etc/rc.d")
|
||||
|
||||
# Create data directories
|
||||
pisitools.dodir("/var/log/audit")
|
||||
pisitools.dodir("/var/spool/audit")
|
||||
|
||||
# Disable zos-remote plugin to get rid of deps. like cyrus-sasl
|
||||
pisitools.remove("/usr/share/man/man8/audispd-zos-remote.8")
|
||||
pisitools.remove("/usr/share/man/man5/zos-remote.conf.5")
|
||||
|
||||
pisitools.dodoc("AUTHORS", "ChangeLog", "THANKS", "TODO", "README", "COPYING")
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
|
||||
def postInstall(fromVersion, fromRelease, toVersion, toRelease):
|
||||
os.system("ln -s /usr/sbin/audispd /sbin/audispd")
|
||||
os.system("ln -s /usr/sbin/auditd /sbin/auditd")
|
||||
os.system("/bin/systemctl enable auditd.service")
|
||||
@@ -0,0 +1,24 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from comar.service import *
|
||||
|
||||
serviceType = "server"
|
||||
serviceDesc = _({"en": "AUDIT Daemon",
|
||||
"tr": "AUDIT Servisi"})
|
||||
serviceDefault = "on"
|
||||
|
||||
@synchronized
|
||||
def start():
|
||||
reply = startService(command="/usr/sbin/auditd",
|
||||
pidfile="/run/auditd.pid",
|
||||
donotify=True)
|
||||
if reply == 0:
|
||||
run("/usr/sbin/auditctl -R /etc/audit/rules.d/audit.rules")
|
||||
|
||||
@synchronized
|
||||
def stop():
|
||||
stopService(pidfile="/run/auditd.pid",
|
||||
donotify=True)
|
||||
run("/usr/sbin/auditctl -D")
|
||||
|
||||
def status():
|
||||
return isServiceRunning("/run/auditd.pid")
|
||||
@@ -0,0 +1,25 @@
|
||||
diff -Nuar audit-2.3.6.orig/audisp/plugins/Makefile.am audit-2.3.6/audisp/plugins/Makefile.am
|
||||
--- audit-2.3.6.orig/audisp/plugins/Makefile.am 2014-04-11 22:49:23.000000000 +0300
|
||||
+++ audit-2.3.6/audisp/plugins/Makefile.am 2014-05-17 01:46:10.260461732 +0300
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
CONFIG_CLEAN_FILES = *.loT *.rej *.orig
|
||||
|
||||
-SUBDIRS = builtins zos-remote remote
|
||||
+SUBDIRS = builtins remote
|
||||
#SUBDIRS = builtins zos-remote
|
||||
if HAVE_PRELUDE
|
||||
SUBDIRS += prelude
|
||||
diff -Nuar audit-2.3.6.orig/configure.ac audit-2.3.6/configure.ac
|
||||
--- audit-2.3.6.orig/configure.ac 2014-04-11 22:49:33.000000000 +0300
|
||||
+++ audit-2.3.6/configure.ac 2014-05-17 01:44:36.753791021 +0300
|
||||
@@ -291,7 +291,7 @@
|
||||
AC_SUBST(LIBPRELUDE_CFLAGS)
|
||||
AC_SUBST(LIBPRELUDE_LDFLAGS)
|
||||
|
||||
-AC_OUTPUT(Makefile lib/Makefile lib/test/Makefile auparse/Makefile auparse/test/Makefile src/Makefile src/mt/Makefile src/libev/Makefile src/test/Makefile swig/Makefile docs/Makefile init.d/Makefile audisp/Makefile audisp/plugins/Makefile audisp/plugins/builtins/Makefile audisp/plugins/prelude/Makefile audisp/plugins/remote/Makefile audisp/plugins/zos-remote/Makefile bindings/Makefile bindings/python/Makefile tools/Makefile tools/aulast/Makefile tools/aulastlog/Makefile tools/ausyscall/Makefile tools/auvirt/Makefile)
|
||||
+AC_OUTPUT(Makefile lib/Makefile lib/test/Makefile auparse/Makefile auparse/test/Makefile src/Makefile src/mt/Makefile src/libev/Makefile src/test/Makefile swig/Makefile docs/Makefile init.d/Makefile audisp/Makefile audisp/plugins/Makefile audisp/plugins/builtins/Makefile audisp/plugins/prelude/Makefile audisp/plugins/remote/Makefile bindings/Makefile bindings/python/Makefile tools/Makefile tools/aulast/Makefile tools/aulastlog/Makefile tools/ausyscall/Makefile tools/auvirt/Makefile)
|
||||
|
||||
echo .
|
||||
echo "
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>audit</Name>
|
||||
<Homepage>http://people.redhat.com/sgrubb/audit/</Homepage>
|
||||
<Packager>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Packager>
|
||||
<License>GPLv2+</License>
|
||||
<IsA>app:console</IsA>
|
||||
<IsA>library</IsA>
|
||||
<IsA>service</IsA>
|
||||
<Summary>User space tools for kernel auditing</Summary>
|
||||
<Description>audit contains the user space utilities for storing and searching the audit records generated by the audit subsystem in the Linux 2.6 kernel.</Description>
|
||||
<Archive sha1sum="423d181dc668d2cdecc66c5b5308ed6c4f301476" type="targz">http://people.redhat.com/sgrubb/audit/audit-2.3.7.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>python-devel</Dependency>
|
||||
<Dependency>kernel-headers</Dependency>
|
||||
<Dependency>libcap-ng-devel</Dependency>
|
||||
<Dependency>tcp-wrappers-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch level="1">without_openldap.patch</Patch>
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>audit</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency>libcap-ng</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="config">/etc</Path>
|
||||
<Path fileType="doc">/usr/share/doc</Path>
|
||||
<Path fileType="library">/usr/lib</Path>
|
||||
<Path fileType="executable">/usr/sbin</Path>
|
||||
<Path fileType="executable">/usr/bin</Path>
|
||||
<Path fileType="man">/usr/share/man</Path>
|
||||
<Path fileType="data">/var/log/audit</Path>
|
||||
<Path fileType="data">/var/spool/audit</Path>
|
||||
</Files>
|
||||
<Provides>
|
||||
<COMAR script="service.py">System.Service</COMAR>
|
||||
<COMAR script="package.py">System.Package</COMAR>
|
||||
</Provides>
|
||||
</Package>
|
||||
|
||||
<Package>
|
||||
<Name>python-audit</Name>
|
||||
<Summary>Python bindings for audit</Summary>
|
||||
<RuntimeDependencies>
|
||||
<Dependency release="current">audit</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="library">/usr/lib/python*</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
<Package>
|
||||
<Name>audit-devel</Name>
|
||||
<PartOf>system.devel</PartOf>
|
||||
<Summary>Development files for audit</Summary>
|
||||
<RuntimeDependencies>
|
||||
<Dependency release="current">audit</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="header">/usr/include</Path>
|
||||
<Path fileType="man">/usr/share/man/man3</Path>
|
||||
</Files>
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="7">
|
||||
<Date>2014-09-30</Date>
|
||||
<Version>2.3.7</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2014-06-06</Date>
|
||||
<Version>2.3.6</Version>
|
||||
<Comment>Rebuild.</Comment>
|
||||
<Name>Aydın Demirel</Name>
|
||||
<Email>aydin.demirel@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2014-05-16</Date>
|
||||
<Version>2.3.6</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2014-05-11</Date>
|
||||
<Version>2.3.2</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-10-22</Date>
|
||||
<Version>2.3.2</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-02-14</Date>
|
||||
<Version>2.2.2</Version>
|
||||
<Comment>Version bump</Comment>
|
||||
<Name>Ertan Güven</Name>
|
||||
<Email>ertan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2011-12-20</Date>
|
||||
<Version>2.2.1</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>Yusuf Aydemir</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" ?>
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>audit</Name>
|
||||
<Summary xml:lang="tr">Linux çekirdeğinin 2.6 sürümü için inceleme/denetleme araçları</Summary>
|
||||
<Description xml:lang="tr">audit Linux çekirdeğinin 2.6 sürümünün inceleme altyapısı tarafından üretilen inceleme kayıtlarını aramak ve saklamak için kullanılan araçları içerir.</Description>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>python-audit</Name>
|
||||
<Summary xml:lang="tr">audit için Python bağlayıcısı</Summary>
|
||||
</Package>
|
||||
|
||||
<Package>
|
||||
<Name>audit-devel</Name>
|
||||
<Summary xml:lang="tr">audit için geliştirme dosyaları</Summary>
|
||||
</Package>
|
||||
</PISI>
|
||||
@@ -0,0 +1,42 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Licensed under the GNU General Public License, version 3.
|
||||
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||
|
||||
from pisi.actionsapi import shelltools
|
||||
from pisi.actionsapi import autotools
|
||||
from pisi.actionsapi import pisitools
|
||||
from pisi.actionsapi import get
|
||||
|
||||
|
||||
def build():
|
||||
# NOTE: This is only for the start-stop-daemon
|
||||
autotools.make('-C src CC="%s" LD="%s %s" CFLAGS="%s"' % (get.CC(), get.CC(), get.LDFLAGS(), get.CFLAGS()))
|
||||
|
||||
def install():
|
||||
def chmod(path, mode):
|
||||
shelltools.chmod("%s%s" % (get.installDIR(), path), mode)
|
||||
|
||||
# Install everything
|
||||
pisitools.insinto("/", "root/*")
|
||||
|
||||
# Install baselayout utilities
|
||||
shelltools.cd("src/")
|
||||
autotools.rawInstall('DESTDIR="%s"' % get.installDIR())
|
||||
|
||||
# Adjust permissions
|
||||
chmod("/tmp", 01777)
|
||||
chmod("/var/tmp", 01777)
|
||||
chmod("/run/shm", 01777)
|
||||
chmod("/var/lock", 0775)
|
||||
chmod("/usr/share/baselayout/shadow", 0600)
|
||||
|
||||
if get.ARCH() == "x86_64":
|
||||
# Directories for 32bit libraries
|
||||
pisitools.dodir("/lib32")
|
||||
pisitools.dodir("/usr/lib32")
|
||||
|
||||
# Hack for binary blobs built on multi-lib systems
|
||||
pisitools.dosym("lib", "/lib64")
|
||||
|
||||
pisitools.dosym("pisilinux-release", "/etc/system-release")
|
||||
@@ -0,0 +1,320 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import os
|
||||
import grp
|
||||
import pwd
|
||||
import shutil
|
||||
|
||||
import libuser
|
||||
|
||||
### Helper methods
|
||||
|
||||
def hav(method, *args):
|
||||
try:
|
||||
call("baselayout", "User.Manager", method, args)
|
||||
except:
|
||||
pass
|
||||
|
||||
def deleteGroup(group):
|
||||
try:
|
||||
gid = grp.getgrnam(group)[2]
|
||||
# deleteGroup(gid)
|
||||
hav("deleteGroup", gid)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
def deleteUser(user):
|
||||
try:
|
||||
uid = pwd.getpwnam(user)[2]
|
||||
# deleteUser(uid, delete_files)
|
||||
hav("deleteUser", uid, False)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
def setGroupId(group_name, gid):
|
||||
ctx = libuser.admin()
|
||||
group = ctx.lookupGroupByName(group_name)
|
||||
if group:
|
||||
group.set(libuser.GIDNUMBER, [gid])
|
||||
ctx.modifyGroup(group)
|
||||
|
||||
def setUserId(user_name, uid):
|
||||
ctx = libuser.admin()
|
||||
user = ctx.lookupUserByName(user_name)
|
||||
if user:
|
||||
user.set(libuser.UIDNUMBER, [uid])
|
||||
ctx.modifyUser(user)
|
||||
|
||||
def migrateUsers():
|
||||
# build user -> group map for migration (hopefully we'll drop this in 2012)
|
||||
migration = []
|
||||
migrationMap = {
|
||||
"removable" : ["cdrom", "plugdev"],
|
||||
"pnp" : ["lp", "floppy"],
|
||||
"pnpadmin" : ["lpadmin"],
|
||||
}
|
||||
for user in pwd.getpwall():
|
||||
groups = set()
|
||||
if 1000 <= user.pw_uid < 65534:
|
||||
for group in grp.getgrall():
|
||||
if user.pw_name in group.gr_mem:
|
||||
groups.add(group.gr_name)
|
||||
|
||||
for oldGroup, newGroups in migrationMap.items():
|
||||
if oldGroup in groups:
|
||||
#groups.remove(oldGroup)
|
||||
groups.update(newGroups)
|
||||
|
||||
if groups:
|
||||
migration.append((user.pw_uid, list(groups)))
|
||||
|
||||
# Migrate regular user groups
|
||||
for user, group in migration:
|
||||
# setUser(uid, realname, homedir, shell, passwd, groups)
|
||||
hav("setUser", user, "", "", "", "", group)
|
||||
|
||||
# Big ugly zemberek-openoffice hack
|
||||
def zemberek_hack():
|
||||
import re
|
||||
|
||||
f = "/var/db/comar3/scripts/System.Package/zemberek_openoffice.py"
|
||||
|
||||
if os.path.exists(f):
|
||||
postContent = open(f).read()
|
||||
pattern = re.compile('oxt"\)\[0\]$', re.M)
|
||||
postContent = re.sub(pattern, 'oxt")', postContent)
|
||||
postContent = re.sub("raise Exception", "print", postContent)
|
||||
postFile = open(f, 'w')
|
||||
postFile.write(postContent)
|
||||
|
||||
|
||||
### COMAR methods
|
||||
|
||||
|
||||
def postInstall(fromVersion, fromRelease, toVersion, toRelease):
|
||||
# We don't want to overwrite an existing file during upgrade
|
||||
specialFiles = ["passwd", "shadow", "group", "fstab", "hosts", "ld.so.conf", "resolv.conf"]
|
||||
|
||||
for specialFile in specialFiles:
|
||||
if not os.path.exists("/etc/%s" % specialFile):
|
||||
shutil.copy("/usr/share/baselayout/%s" % specialFile, "/etc")
|
||||
|
||||
shutil.copy("/etc/passwd", "/usr/share/baselayout/passwd.backup")
|
||||
shutil.copy("/etc/group", "/usr/share/baselayout/group.backup")
|
||||
|
||||
if fromRelease and int(fromRelease) < 143:
|
||||
# Release 143 starts using /etc/ld.so.conf.d. Copy ld.so.conf
|
||||
# for "include" statement.
|
||||
shutil.copy("/usr/share/baselayout/ld.so.conf", "/etc")
|
||||
|
||||
##################################
|
||||
# Merge new system groups
|
||||
# addGroup(gid, name)
|
||||
groups = (
|
||||
(7, "lp"),
|
||||
(11, "cdrom"),
|
||||
(14, "lpadmin"),
|
||||
(19, "floppy"),
|
||||
(20, "dialout"),
|
||||
(22, "sshd"),
|
||||
(30, "squid"),
|
||||
(32, "rpc"),
|
||||
#(46, "plugdev"),
|
||||
(50, "named"),
|
||||
# For systemd/var-lock.mount
|
||||
(54, "lock"),
|
||||
(60, "mysql"),
|
||||
(70, "postgres"),
|
||||
(80, "apache"),
|
||||
(90, "dovecot"),
|
||||
(100, "users"),
|
||||
(102, "hal"),
|
||||
(103, "polkitd"),
|
||||
(104, "postfix"),
|
||||
(105, "postdrop"),
|
||||
(106, "smmsp"),
|
||||
(107, "locate"),
|
||||
(108, "utmp"),
|
||||
(109, "firebird"),
|
||||
(110, "dhcp"),
|
||||
(111, "ldap"),
|
||||
(112, "clamav"),
|
||||
(113, "ntlmaps"),
|
||||
(116, "colord"),
|
||||
(120, "avahi"),
|
||||
(121, "avahi-autoipd"),
|
||||
(123, "ntp"),
|
||||
(124, "gdm"),
|
||||
(130, "tss"),
|
||||
(131, "ejabberd"),
|
||||
(132, "tomcat"),
|
||||
(133, "ups"),
|
||||
(134, "partimag"),
|
||||
(135, "radiusd"),
|
||||
(136, "oprofile"),
|
||||
(137, "mediatomb"),
|
||||
# 'pulse' is for system wide PA daemon.
|
||||
(138, "pulse"),
|
||||
# In order to access to a system wide PA daemon,
|
||||
# a user should be a member of the 'pulse-access' group.
|
||||
(139, "pulse-access"),
|
||||
(141, "italc"),
|
||||
(142, "quassel"),
|
||||
(143, "bitlbee"),
|
||||
(144, "icecast"),
|
||||
(145, "virt"),
|
||||
(995, "vboxusers"),
|
||||
# Gnokii system user for the SMS daemon
|
||||
(146, "gnokii"),
|
||||
(150, "svn"),
|
||||
(151, "memcached"),
|
||||
(152, "rtkit"),
|
||||
# NetworkManager user for OpenConnect VPN helper
|
||||
(153, "nm-openconnect"),
|
||||
(160, "usbmuxd"),
|
||||
(161, "openvpn"),
|
||||
(162, "privoxy"),
|
||||
(163, "kvm"),
|
||||
(164, "qemu"),
|
||||
(165, "kdm"),
|
||||
(166, "polipo"),
|
||||
(167, "nginx"),
|
||||
(168, "guests"),
|
||||
(169, "ntop"),
|
||||
# COMAR profile groups
|
||||
(200, "pnp"),
|
||||
(201, "removable"),
|
||||
(204, "power"),
|
||||
(205, "pnpadmin"),
|
||||
# for RT jackaudio
|
||||
(206, "jackuser"),
|
||||
(207, "wireshark"),
|
||||
(209, "vdr"),
|
||||
(210, "ecryptfs"),
|
||||
(211, "slocate"),
|
||||
(212, "dansguardian"),
|
||||
)
|
||||
|
||||
for gid, groupName in groups:
|
||||
try:
|
||||
group = grp.getgrnam(groupName)
|
||||
except KeyError:
|
||||
hav("addGroup", gid, groupName)
|
||||
else:
|
||||
if group.gr_gid != gid:
|
||||
setGroupId(groupName, gid)
|
||||
|
||||
|
||||
##################################
|
||||
# Merge new system users
|
||||
# addUser(uid, nick, realname, homedir, shell, password, groups, grantedauths, blockedauths)
|
||||
|
||||
users = (
|
||||
(4, "lp", "CUPS user", "/var/spool/cups", "/sbin/nologin", "", ["lp"], [], []),
|
||||
(15, "lpadmin", "CUPS administrator", "/var/spool/cups", "/sbin/nologin", "", ["lpadmin"], [], []),
|
||||
(20, "dialout", "Dialout", "/dev/null", "/bin/false", "", ["dialout"], [], []),
|
||||
(22, "sshd", "Privilege-separated SSH", "/var/empty/sshd", "/sbin/nologin", "", ["sshd"], [], []),
|
||||
(30, "squid", "Squid", "/var/cache/squid", "/bin/false", "", ["squid"], [], []),
|
||||
(32, "rpc", "Rpcbind daemon", "/var/lib/rpcbind", "/sbin/nologin", "", ["rpc"], [], []),
|
||||
(40, "named", "Bind", "/var/named", "/bin/false", "", ["named"], [], []),
|
||||
(60, "mysql", "MySQL", "/var/lib/mysql", "/bin/false", "", ["mysql"], [], []),
|
||||
(70, "postgres", "PostgreSQL", "/var/lib/postgresql", "/bin/false", "", ["postgres"], [], []),
|
||||
(80, "apache", "Apache", "/dev/null", "/bin/false", "", ["apache", "svn"], [], []),
|
||||
(90, "dovecot", "Dovecot", "/dev/null", "/bin/false", "", ["dovecot"], [], []),
|
||||
(102, "hal", "HAL", "/dev/null", "/bin/false", "", ["hal"], [], []),
|
||||
(103, "polkitd", "PolicyKit", "/var/lib/polkit-1", "/bin/false", "", ["polkitd"], [], []),
|
||||
(104, "postfix", "Postfix", "/var/spool/postfix", "/bin/false", "", ["postfix"], [], []),
|
||||
(106, "smmsp", "smmsp", "/var/spool/mqueue", "/bin/false", "", ["smmsp"], [], []),
|
||||
(107, "colord", "colord colour management daemon", "/var/lib/colord", "/bin/false", "", ["colord"], [], []),
|
||||
(109, "firebird", "Firebird", "/opt/firebird", "/bin/false", "", ["firebird"], [], []),
|
||||
(110, "dhcp", "DHCP", "/dev/null", "/bin/false", "", ["dhcp"], [], []),
|
||||
(111, "ldap", "OpenLDAP", "/dev/null", "/bin/false", "", ["ldap"], [], []),
|
||||
(112, "clamav", "Clamav", "/dev/null", "/bin/false", "", ["clamav"], [], []),
|
||||
(113, "ntlmaps", "NTLMaps", "/dev/null", "/bin/false", "", ["ntlmaps"], [], []),
|
||||
(120, "avahi", "Avahi mDNS/DNS-SD Stack", "/run/avahi-daemon", "/sbin/nologin", "", ["avahi"], [], []),
|
||||
(121, "avahi-autoipd", "Avahi IPv4LL Stack", "/var/lib/avahi-autoipd", "/sbin/nologin", "", ["avahi-autoipd"], [], []),
|
||||
(123, "ntp", "NTP", "/dev/null", "/bin/false", "", ["ntp"], [], []),
|
||||
(124, "gdm", "gdm", "/var/lib/gdm", "/sbin/nologin", "", ["gdm"], [], []),
|
||||
(130, "tss", "tss", "/var/lib/tpm", "/bin/false", "", ["tss"], [], []),
|
||||
(131, "ejabberd", "Ejabberd", "/var/lib/ejabberd", "/bin/false", "", ["ejabberd"], [], []),
|
||||
(132, "tomcat", "Tomcat", "/var/lib/tomcat", "/bin/false", "", ["tomcat"], [], []),
|
||||
(133, "ups", "UPS", "/var/lib/nut", "/bin/false", "", ["ups", "dialout", "tty", "pnp"], [], []),
|
||||
(134, "partimag", "Partimage", "/var/lib/partimaged", "/bin/false", "", ["partimag"], [], []),
|
||||
(135, "radiusd", "Freeradius", "/dev/null", "/bin/false", "", ["radiusd"], [], []),
|
||||
(136, "oprofile", "oprofile", "/dev/null", "/bin/false", "", ["oprofile"], [], []),
|
||||
(137, "mediatomb", "mediatomb", "/dev/null", "/bin/false", "", ["mediatomb"], [], []),
|
||||
(138, "pulse", "PulseAudio System Daemon", "/run/pulse", "/bin/false", "", ["pulse", "pulse-access", "pulse-rt", "audio"], [], []),
|
||||
(139, "quasselcore", "Quassel IRC System", "/var/cache/quassel", "/bin/false", "", ["quassel"], [], []),
|
||||
(140, "bitlbee", "Bitlbee Gateway", "/var/lib/bitlbee", "/bin/false", "", ["bitlbee"], [], []),
|
||||
(141, "spamd", "Spamassassin Daemon", "/var/lib/spamd", "/bin/false", "", [], [], []),
|
||||
(145, "vboxadd", "VirtualBox Guest Additions", "/dev/null", "/bin/false", "", [], [], []),
|
||||
(146, "gnokii", "Gnokii system user", "/", "/sbin/nologin", "", ["gnokii"], [], []),
|
||||
(150, "svn", "Subversion", "/dev/null", "/bin/false", "", ["svn"], [], []),
|
||||
(151, "icecast", "Icecast Server", "/dev/null", "/bin/false", "", ["icecast"], [], []),
|
||||
(152, "memcached", "Memcached daemon", "/run/memcached", "/bin/false", "", ["memcached"], [], []),
|
||||
(153, "rtkit", "RealtimeKit", "/proc", "/sbin/nologin", "", ["rtkit"], [], []),
|
||||
(154, "nm-openconnect", "NetworkManager user for OpenConnect", "/", "/sbin/nologin", "", ["nm-openconnect"], [], []),
|
||||
(160, "usbmuxd", "usbmuxd daemon", "/", "/sbin/nologin", "", ["usbmuxd"], [], []),
|
||||
(161, "openvpn", "OpenVPN", "/etc/openvpn", "/sbin/nologin", "", ["openvpn"], [], []),
|
||||
(162, "privoxy", "Privoxy", "/etc/privoxy", "/sbin/nologin", "", ["privoxy"], [], []),
|
||||
(163, "qemu", "qemu user", "/", "/sbin/nologin", "", ["qemu", "kvm"], [], []),
|
||||
(164, "polipo", "polipo user", "/", "/sbin/nologin", "", ["polipo"], [], []),
|
||||
(165, "kdm", "kdm", "/var", "/sbin/nologin", "", ["kdm"], [], []),
|
||||
(166, "nginx", "nginx user", "/etc/nginx", "/sbin/nologin", "", ["nginx"], [], []),
|
||||
(167, "ntop", "ntop user", "/var/lib/ntop", "/sbin/nologin", "", ["ntop"], [], []),
|
||||
(168, "smolt", "smolt user", "/dev/null", "/bin/false", "", [], [], []),
|
||||
(169, "svxlink", "Svxlink Daemon", "/", "/sbin/nologin", "", ["daemon", "audio", "dialout"], [], []),
|
||||
(170, "dansguardian", "Dansguardian web content filter", "/usr/share/dansguardian", "/sbin/nologin", "", ["dansguardian"], [], []),
|
||||
(200, "pnp", "PnP", "/dev/null", "/bin/false", "", ["pnp"], [], []),
|
||||
(250, "mpd", "Music Player Daemon", "/var/lib/mpd", "/bin/false", "", ["audio", "pulse", "pulse-access", "pulse-rt"], [], []),
|
||||
(252, "vdr", "VDR User", "/var/vdr", "/bin/false", "", ["audio", "video", "cdrom", "dialout"], [], []),
|
||||
)
|
||||
|
||||
for uid, nick, realname, homedir, shell, password, groups, grantedauths, blockedauths in users:
|
||||
try:
|
||||
user = pwd.getpwnam(nick)
|
||||
except KeyError:
|
||||
hav("addUser", uid, nick, realname, homedir, shell, password, groups, grantedauths, blockedauths)
|
||||
else:
|
||||
if user.pw_uid == uid:
|
||||
# setUser(uid, realname, homedir, shell, passwd, groups)
|
||||
hav("setUser", uid, realname, homedir, shell, password, groups)
|
||||
else:
|
||||
setUserId(nick, uid)
|
||||
|
||||
# Migrate users to their new groups if any
|
||||
migrateUsers()
|
||||
|
||||
# We should only install empty files if these files don't already exist.
|
||||
if not os.path.exists("/var/log/lastlog"):
|
||||
os.system("/bin/touch /var/log/lastlog")
|
||||
|
||||
if not os.path.exists("/run/utmp"):
|
||||
os.system("/usr/bin/install -m 0664 -g utmp /dev/null /run/utmp")
|
||||
|
||||
if not os.path.exists("/var/log/wtmp"):
|
||||
os.system("/usr/bin/install -m 0664 -g utmp /dev/null /var/log/wtmp")
|
||||
|
||||
# Enable shadow groups
|
||||
os.system("/usr/sbin/grpconv")
|
||||
os.system("/usr/sbin/grpck -r &>/dev/null")
|
||||
|
||||
# Create /root if not exists
|
||||
if not os.path.exists("/root/"):
|
||||
shutil.copytree("/etc/skel", "/root")
|
||||
os.chown("/root", 0, 0)
|
||||
os.chmod("/root", 0700)
|
||||
|
||||
# Tell init to reload new inittab
|
||||
os.system("/sbin/telinit q")
|
||||
|
||||
# Save user defined DNS
|
||||
if not os.access("/etc/resolv.default.conf", os.R_OK):
|
||||
os.system("cp /etc/resolv.conf /etc/resolv.default.conf")
|
||||
|
||||
# Apply zemberek hack
|
||||
zemberek_hack()
|
||||
|
||||
# Fix permissions of /var/lock folder
|
||||
os.chown("/var/lock", 0, 54)
|
||||
os.chmod("/var/lock", 0775)
|
||||
@@ -0,0 +1,33 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
def update_ld_so_cache(filepath):
|
||||
import glob
|
||||
import piksemel
|
||||
import subprocess
|
||||
|
||||
libdirs = []
|
||||
|
||||
for config_file in glob.glob("/etc/ld.so.conf.d/*.conf"):
|
||||
for line in open(config_file):
|
||||
line = line.strip()
|
||||
if line.startswith("/"):
|
||||
libdirs.append(line[1:])
|
||||
|
||||
libdirs = tuple(libdirs)
|
||||
|
||||
doc = piksemel.parse(filepath)
|
||||
for item in doc.tags("File"):
|
||||
path = item.getTagData("Path")
|
||||
if path.startswith(libdirs):
|
||||
subprocess.call(["/sbin/ldconfig", "-X"])
|
||||
return
|
||||
|
||||
def setupPackage(metapath, filepath):
|
||||
update_ld_so_cache(filepath)
|
||||
|
||||
def cleanupPackage(metapath, filepath):
|
||||
pass
|
||||
|
||||
def postCleanupPackage(metapath, filepath):
|
||||
update_ld_so_cache(filepath)
|
||||
@@ -0,0 +1,174 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
import string
|
||||
import subprocess
|
||||
|
||||
# Translations
|
||||
|
||||
MSG_HOSTNAME = {
|
||||
"en": "Hostname contains invalid characters: '%s'",
|
||||
"tr": "Makine ismi geçersiz karakterler içeriyor: '%s'",
|
||||
"fr": "Le nom d'hôte contient des caractères invalides: '%s'",
|
||||
"nl": "Hostnaam bevat ongeldige lettertekens: '%s'",
|
||||
}
|
||||
|
||||
# Translations End
|
||||
|
||||
HEADER_DEFAULT = """# Default DNS settings
|
||||
#
|
||||
"""
|
||||
|
||||
HEADER_DYNAMIC = """# This file is automatically generated by COMAR
|
||||
# Use network-manager to set default DNS settings or edit "resolv.default.conf"
|
||||
#
|
||||
# Bu dosya COMAR tarafından otomatik olarak üretilir.
|
||||
# Öntanımlı DNS ayalarını değiştirmek için network-manager uygulamasını kullanın
|
||||
# veya "resolv.default.conf" dosyasını düzenleyin.
|
||||
#
|
||||
"""
|
||||
|
||||
MAX_SERVERS = 3
|
||||
|
||||
HOST_CHARS = string.ascii_letters + string.digits + '.' + '_' + '-'
|
||||
NAME_PATH = "/etc/env.d/01hostname"
|
||||
CMD_ENV = "/sbin/update-environment"
|
||||
HOSTS_PATH = "/etc/hosts"
|
||||
|
||||
RESOLV_USER = "/etc/resolv.default.conf"
|
||||
RESOLV_PISILINUX = "/usr/share/baselayout/resolv.conf"
|
||||
|
||||
def getSearchDomain():
|
||||
if not os.access(RESOLV_USER, os.R_OK):
|
||||
return None
|
||||
for line in file(RESOLV_USER):
|
||||
line = line.strip()
|
||||
if line.startswith("search"):
|
||||
return line.split()[1]
|
||||
return None
|
||||
|
||||
def getPisiLinuxNameServers():
|
||||
servers = []
|
||||
if not os.access(RESOLV_PISILINUX, os.R_OK):
|
||||
return servers
|
||||
for line in file(RESOLV_PISILINUX):
|
||||
line = line.strip()
|
||||
if line.startswith("nameserver"):
|
||||
ip = line.split()[1]
|
||||
if ip not in servers:
|
||||
servers.append(ip)
|
||||
return servers
|
||||
|
||||
# Network.Stack methods
|
||||
|
||||
def getNameServers():
|
||||
servers = []
|
||||
if not os.access(RESOLV_USER, os.R_OK):
|
||||
return servers
|
||||
for line in file(RESOLV_USER):
|
||||
line = line.strip()
|
||||
if line.startswith("nameserver"):
|
||||
ip = line.split()[1]
|
||||
if ip not in servers:
|
||||
servers.append(ip)
|
||||
return servers
|
||||
|
||||
def setNameServers(nameservers, searchdomain):
|
||||
f = file("/etc/resolv.default.conf", "w")
|
||||
f.write(HEADER_DEFAULT)
|
||||
|
||||
for server in nameservers:
|
||||
f.write("nameserver %s\n" % server)
|
||||
|
||||
if searchdomain:
|
||||
f.write("searchdomain %s\n" % searchdomain)
|
||||
|
||||
f.close()
|
||||
|
||||
def useNameServers(nameservers, searchdomain):
|
||||
# Append default name servers
|
||||
nameservers.extend(getNameServers())
|
||||
nameservers.extend(getPisiLinuxNameServers())
|
||||
|
||||
servers = []
|
||||
for server in nameservers:
|
||||
if server not in servers:
|
||||
servers.append(server)
|
||||
|
||||
f = file("/etc/resolv.conf", "w")
|
||||
f.write(HEADER_DYNAMIC)
|
||||
|
||||
for server in servers[:MAX_SERVERS]:
|
||||
f.write("nameserver %s\n" % server)
|
||||
|
||||
if searchdomain:
|
||||
f.write("search %s\n" % searchdomain)
|
||||
elif getSearchDomain():
|
||||
f.write("search %s\n" % getSearchDomain())
|
||||
|
||||
f.close()
|
||||
|
||||
def registerNameServers(iface, nameservers, searchdomain):
|
||||
useNameServers(nameservers, searchdomain)
|
||||
|
||||
def unregisterNameServers(iface, nameservers, searchdomain):
|
||||
# Remove nameservers from list
|
||||
nameservers = getNameServers()
|
||||
for server in nameservers:
|
||||
try:
|
||||
nameservers.remove(server)
|
||||
except ValueError:
|
||||
pass
|
||||
# Set search domain to "" if it's active one
|
||||
if searchdomain == getSearchDomain():
|
||||
searchdomain = ""
|
||||
useNameServers(nameservers, searchdomain)
|
||||
|
||||
def flushNameCache():
|
||||
pass
|
||||
|
||||
def getHostName():
|
||||
cmd = subprocess.Popen(["/usr/bin/hostname"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
a = cmd.communicate()
|
||||
if a[1] == "":
|
||||
return a[0].rstrip("\n")
|
||||
return ""
|
||||
|
||||
def setHostName(hostname):
|
||||
if not hostname:
|
||||
return
|
||||
invalid = filter(lambda x: not x in HOST_CHARS, hostname)
|
||||
if len(invalid) > 0:
|
||||
fail(_(MSG_HOSTNAME) % ("".join(invalid)))
|
||||
|
||||
# hostname
|
||||
if os.path.exists(NAME_PATH):
|
||||
import re
|
||||
f = file(NAME_PATH)
|
||||
data = f.read()
|
||||
f.close()
|
||||
data = re.sub('HOSTNAME="(.*)"', 'HOSTNAME="%s"' % hostname, data)
|
||||
else:
|
||||
data = 'HOSTNAME="%s"\n' % hostname
|
||||
f = file(NAME_PATH, "w")
|
||||
f.write(data)
|
||||
f.close()
|
||||
|
||||
# hosts
|
||||
f = file(HOSTS_PATH)
|
||||
data = f.readlines()
|
||||
f.close()
|
||||
f = file(HOSTS_PATH, "w")
|
||||
flag = 1
|
||||
for line in data:
|
||||
if line.startswith("127.0.0.1"):
|
||||
line = "127.0.0.1 localhost %s\n" % hostname
|
||||
flag = 0
|
||||
f.write(line)
|
||||
if flag:
|
||||
f.write("127.0.0.1 localhost %s\n" % hostname)
|
||||
f.close()
|
||||
|
||||
# update environment
|
||||
os.system(CMD_ENV)
|
||||
@@ -0,0 +1,690 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2006-2010 TUBITAK/UEKAE
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 2 of the License, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
|
||||
import os
|
||||
import glob
|
||||
import fcntl
|
||||
import random
|
||||
import shutil
|
||||
import hashlib
|
||||
|
||||
from string import ascii_letters, digits
|
||||
from pardus.fileutils import FileLock
|
||||
|
||||
try:
|
||||
import polkit
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
|
||||
# faces
|
||||
|
||||
FACES = [
|
||||
"/usr/share/kde4/apps/kdm/pics/users",
|
||||
]
|
||||
|
||||
# messages
|
||||
|
||||
invalid_username_msg = {
|
||||
"en": "User name is invalid.",
|
||||
"tr": "Kullanıcı adı geçersiz.",
|
||||
"fr": "Nom d'utilisateur invalide.",
|
||||
"es": "Nombre de usuario no es válido.",
|
||||
"de": "Benutzername nicht erlaubt.",
|
||||
"nl": "Gebruikernaam is ongeldig.",
|
||||
}
|
||||
|
||||
invalid_realname_msg = {
|
||||
"en": "Real name is invalid.",
|
||||
"tr": "Gerçek isim geçersiz.",
|
||||
"fr": "Nom réel invalide.",
|
||||
"es": "Nombre real no es válido.",
|
||||
"de": "Dieser vollständige Name ist nicht erlaubt.",
|
||||
"nl": "Echte naam is ongeldig.",
|
||||
}
|
||||
|
||||
short_password_msg = {
|
||||
"en": "Password is too short.",
|
||||
"tr": "Parola çok kısa.",
|
||||
"fr": "Mot de passe trop court.",
|
||||
"es": "Contraseña es demadiado corta.",
|
||||
"de": "Passwort ist zu kurz.",
|
||||
"nl": "Wachtwoord is te kort.",
|
||||
}
|
||||
|
||||
name_password_msg = {
|
||||
"en": "Dont use your name as a password.",
|
||||
"tr": "Adınızı parola olarak kullanmayın.",
|
||||
"fr": "N'utilisez pas votre nom comme mot de passe.",
|
||||
"es": "No use su nombre como contraseña.",
|
||||
"de": "Benutzen Sie nicht Ihren Namen als Passwort.",
|
||||
"nl": "Uw naam niet als wachtwoord gebruiken.",
|
||||
}
|
||||
|
||||
invalid_group_msg = {
|
||||
"en": "Invalid group name:",
|
||||
"tr": "Geçersiz grup adı:",
|
||||
"fr": "Nom de groupe invalide:",
|
||||
"es": "Nombre de grupo inválido:",
|
||||
"de": "Gruppenname nicht erlaubt:",
|
||||
"nl": "Ongeldige groepnaam:",
|
||||
}
|
||||
|
||||
invalid_userid_msg = {
|
||||
"en": "Invalid user ID.",
|
||||
"tr": "Geçersiz kullanıcı numarası.",
|
||||
"fr": "Identifiant utilisateur invalide.",
|
||||
"es": "ID de usuario no válido.",
|
||||
"de": "User-ID nicht erlaubt.",
|
||||
"nl": "Gebruiker-id is ongeldig.",
|
||||
}
|
||||
|
||||
used_userid_msg = {
|
||||
"en": "This user ID is already used.",
|
||||
"tr": "Bu kullanıcı numarası zaten kullanılmakta.",
|
||||
"fr": "Cet identifiant utilisateur est déjà utilisé.",
|
||||
"es": "Este ID de usuario ya está en uso.",
|
||||
"de": "Dieser user-ID is schon vergeben.",
|
||||
"nl": "Deze gebruiker-id is reeds in gebruik.",
|
||||
}
|
||||
|
||||
used_username_msg = {
|
||||
"en": "This user name is already used.",
|
||||
"tr": "Bu kullanıcı adı zaten kullanılmakta.",
|
||||
"fr": "Ce nom d'utilisateur est déjà utilisé.",
|
||||
"es": "Este nombre de usuario ya está en uso.",
|
||||
"de": "Dieser Benutzername is schon vergeben.",
|
||||
"nl": "Deze gebruikernaam is reeds in gebruik.",
|
||||
}
|
||||
|
||||
no_group_msg = {
|
||||
"en": "No such group exists.",
|
||||
"tr": "Böyle bir grup yok.",
|
||||
"fr": "Il n'existe aucun groupe de ce nom-là.",
|
||||
"es": "No existe el grupo.",
|
||||
"de": "Diese Gruppe gibt es nicht.",
|
||||
"nl": "Deze groep bestaat niet.",
|
||||
}
|
||||
|
||||
no_user_msg = {
|
||||
"en": "No user with given ID.",
|
||||
"tr": "Verilen numaralı bir kullanıcı yok.",
|
||||
"fr": "Il n'existe aucun utilisateur avec et identifiant.",
|
||||
"es": "No existe usuario con éste ID.",
|
||||
"de": "Es gibt keien Benutzer mit dem angegebenen ID.",
|
||||
"nl": "Gebruiker met opgegeven ID bestaat niet.",
|
||||
}
|
||||
|
||||
delete_root_msg = {
|
||||
"en": "You cant delete root user.",
|
||||
"tr": "Kök kullanıcıyı silemezsiniz.",
|
||||
"fr": "Vous ne pouvez pas supprimer l'administrateur.",
|
||||
"es": "No se puede eliminar al usuario root.",
|
||||
"de": "Benutzer ROOT darf nicht gelöscht werden.",
|
||||
"nl": "Systeembeheerder (root) kan niet verwijderd worden.",
|
||||
}
|
||||
|
||||
invalid_groupid_msg = {
|
||||
"en": "Invalid group ID.",
|
||||
"tr": "Geçersiz grup numarası.",
|
||||
"fr": "Identifiant de groupe invalide.",
|
||||
"es": "ID del grupo inválido.",
|
||||
"de": "Gruppen-ID nicht zulässig.",
|
||||
"nl": "Groep-ID is ongeldig.",
|
||||
}
|
||||
|
||||
used_groupid_msg = {
|
||||
"en": "This group ID is already used.",
|
||||
"tr": "Bu grup numarası zaten kullanılmakta.",
|
||||
"fr": "Cet identifiant de groupe est déjà utilisé.",
|
||||
"es": "Este ID de grupo ya está en uso.",
|
||||
"de": "Dieser Gruppen-ID is schon vergeben.",
|
||||
"nl": "Deze groep-ID is reeds in gebruik.",
|
||||
}
|
||||
|
||||
used_groupname_msg = {
|
||||
"en": "This group name is already used.",
|
||||
"tr": "Bu grup adı zaten kullanılmakta.",
|
||||
"fr": "Ce nom de groupe est déjà utilisé.",
|
||||
"es": "Este nombre de grupo ya está en uso.",
|
||||
"de": "Dieser Gruppennam is schon vergeben.",
|
||||
"nl": "Deze groepnaam is reeds in gebruik.",
|
||||
}
|
||||
|
||||
# parameters
|
||||
uid_minimum = 1000
|
||||
uid_maximum = 65000
|
||||
|
||||
#
|
||||
|
||||
def setFace(uid, homedir):
|
||||
files = []
|
||||
for directory in FACES:
|
||||
if os.path.exists(directory):
|
||||
for filename in os.listdir(directory):
|
||||
if filename.endswith(".png"):
|
||||
files.append(os.path.join(directory, filename))
|
||||
if len(files):
|
||||
icon = os.path.join(homedir, ".face.icon")
|
||||
shutil.copy(random.choice(files), icon)
|
||||
os.chmod(icon, 0644)
|
||||
os.chown(icon, uid, 100)
|
||||
|
||||
def checkName(name):
|
||||
first_valid = ascii_letters
|
||||
valid = ascii_letters + "_-" + digits
|
||||
if len(name) == 0 or len(filter(lambda x: not x in valid, name)) != 0 or not name[0] in first_valid:
|
||||
fail(_(invalid_username_msg))
|
||||
|
||||
def checkRealName(realname):
|
||||
if len(filter(lambda x: x == "\n" or x == ":", realname)) != 0:
|
||||
fail(_(invalid_realname_msg))
|
||||
|
||||
def checkPassword(password, badlist):
|
||||
if len(password) < 1:
|
||||
fail(_(short_password_msg))
|
||||
if password in badlist:
|
||||
fail(_(name_password_msg))
|
||||
|
||||
def checkGroupName(name):
|
||||
valid = ascii_letters + "_-"
|
||||
if name == "" or len(filter(lambda x: not x in valid, name)) != 0:
|
||||
fail(_(invalid_group_msg) + " " + name)
|
||||
|
||||
#
|
||||
|
||||
class User:
|
||||
def __init__(self):
|
||||
self.password = None
|
||||
|
||||
def __str__(self):
|
||||
return "%s (%d, %d)\n %s\n %s\n %s\n %s" % (
|
||||
self.name, self.uid, self.gid,
|
||||
self.realname, self.homedir, self.shell,
|
||||
self.password
|
||||
)
|
||||
|
||||
|
||||
class Group:
|
||||
def __str__(self):
|
||||
s = "%s (%d)" % (self.name, self.gid)
|
||||
for name in self.members:
|
||||
s += "\n %s" % name
|
||||
return s
|
||||
|
||||
|
||||
class Database:
|
||||
passwd_path = "/etc/passwd"
|
||||
shadow_path = "/etc/shadow"
|
||||
group_path = "/etc/group"
|
||||
lock_path = "/etc/.pwd.lock"
|
||||
|
||||
def __init__(self, for_read=False):
|
||||
self.lock = FileLock(self.lock_path)
|
||||
self.lock.lock(shared=for_read)
|
||||
|
||||
self.users = {}
|
||||
self.users_by_name = {}
|
||||
self.groups = {}
|
||||
self.groups_by_name = {}
|
||||
|
||||
for line in file(self.passwd_path):
|
||||
if line != "" and line != "\n":
|
||||
parts = line.rstrip("\n").split(":")
|
||||
user = User()
|
||||
user.name = parts[0]
|
||||
user.uid = int(parts[2])
|
||||
user.gid = int(parts[3])
|
||||
user.realname = parts[4]
|
||||
user.homedir = parts[5]
|
||||
user.shell = parts[6]
|
||||
self.users[user.uid] = user
|
||||
self.users_by_name[user.name] = user
|
||||
|
||||
for line in file(self.shadow_path):
|
||||
if line != "" and line != "\n":
|
||||
parts = line.rstrip("\n").split(":")
|
||||
if self.users_by_name.has_key(parts[0]):
|
||||
user = self.users_by_name[parts[0]]
|
||||
user.password = parts[1]
|
||||
user.pwrest = parts[2:]
|
||||
|
||||
for line in file(self.group_path):
|
||||
if line != "" and line != "\n":
|
||||
parts = line.rstrip("\n").split(":")
|
||||
group = Group()
|
||||
group.name = parts[0]
|
||||
group.gid = int(parts[2])
|
||||
group.members = parts[3].split(",")
|
||||
if "" in group.members:
|
||||
group.members.remove("")
|
||||
self.groups[group.gid] = group
|
||||
self.groups_by_name[group.name] = group
|
||||
|
||||
def sync(self):
|
||||
lines = []
|
||||
keys = self.users.keys()
|
||||
keys.sort()
|
||||
for uid in keys:
|
||||
user = self.users[uid]
|
||||
lines.append("%s:x:%d:%d:%s:%s:%s\n" % (
|
||||
user.name, uid, user.gid,
|
||||
user.realname, user.homedir, user.shell
|
||||
))
|
||||
f = file(self.passwd_path, "w")
|
||||
f.writelines(lines)
|
||||
f.close()
|
||||
|
||||
lines = []
|
||||
keys = self.users.keys()
|
||||
keys.sort()
|
||||
for uid in keys:
|
||||
user = self.users[uid]
|
||||
if user.password:
|
||||
lines.append("%s:%s:%s\n" % (
|
||||
user.name,
|
||||
user.password,
|
||||
":".join(user.pwrest)
|
||||
))
|
||||
else:
|
||||
lines.append("%s::13094:0:99999:7:::\n" % user.name)
|
||||
f = file(self.shadow_path, "w")
|
||||
f.writelines(lines)
|
||||
f.close()
|
||||
|
||||
lines = []
|
||||
keys = self.groups.keys()
|
||||
keys.sort()
|
||||
for gid in keys:
|
||||
group = self.groups[gid]
|
||||
lines.append("%s:x:%s:%s\n" % (group.name, gid, ",".join(group.members)))
|
||||
f = file(self.group_path, "w")
|
||||
f.writelines(lines)
|
||||
f.close()
|
||||
|
||||
def set_groups(self, name, grouplist):
|
||||
for gid in self.groups.keys():
|
||||
g = self.groups[gid]
|
||||
if name in g.members:
|
||||
if not g.name in grouplist:
|
||||
g.members.remove(name)
|
||||
else:
|
||||
if g.name in grouplist:
|
||||
g.members.append(name)
|
||||
|
||||
def next_uid(self):
|
||||
for i in range(uid_minimum, uid_maximum):
|
||||
if not self.users.has_key(i):
|
||||
return i
|
||||
|
||||
def next_gid(self):
|
||||
for i in range(uid_minimum, uid_maximum):
|
||||
if not self.groups.has_key(i):
|
||||
return i
|
||||
|
||||
|
||||
def setup_home(uid, gid, path):
|
||||
if not os.path.exists(path):
|
||||
# Copy skeleton home dir
|
||||
os.system('/bin/cp -r %s "%s"' % ('/etc/skel', path))
|
||||
# Set a random face icon
|
||||
faces = glob.glob("/usr/share/*/apps/kdm/pics/users/*.png")
|
||||
if len(faces) > 0:
|
||||
facepath = os.path.join(path, '.face.icon')
|
||||
os.system('/bin/cp --remove-destination "%s" "%s"' % (random.choice(faces), facepath))
|
||||
os.chmod(facepath, 0644)
|
||||
# Set ownerships
|
||||
os.system('/bin/chown -R %d:%d "%s"' % (uid, gid, path))
|
||||
|
||||
# Make sure at least top of the home dir's permissions are correct
|
||||
os.system('/bin/chown %d:%d "%s"' % (uid, gid, path))
|
||||
os.chmod(path, 0711)
|
||||
|
||||
|
||||
# methods
|
||||
|
||||
def userList():
|
||||
def format(dict, uid):
|
||||
item = dict[uid]
|
||||
return (item.uid, item.name, item.realname)
|
||||
db = Database(for_read=True)
|
||||
return map(lambda x: format(db.users, x), db.users)
|
||||
|
||||
def userInfo(uid):
|
||||
uid = int(uid)
|
||||
db = Database(for_read=True)
|
||||
if db.users.has_key(uid):
|
||||
u = db.users[uid]
|
||||
groups = []
|
||||
for item in db.groups.keys():
|
||||
if u.name in db.groups[item].members:
|
||||
groups.append(db.groups[item].name)
|
||||
grp = db.groups.get(u.gid, None)
|
||||
if grp:
|
||||
if grp.name in groups:
|
||||
groups.remove(grp.name)
|
||||
groups.insert(0, grp.name)
|
||||
ret = (
|
||||
u.name,
|
||||
u.realname,
|
||||
u.gid,
|
||||
u.homedir,
|
||||
u.shell,
|
||||
groups,
|
||||
)
|
||||
return ret
|
||||
else:
|
||||
fail(_(no_user_msg))
|
||||
|
||||
def addUser(uid, name, realname, homedir, shell, password, groups, grants, blocks):
|
||||
if not realname:
|
||||
realname = ""
|
||||
if not homedir:
|
||||
homedir = "/home/" + name
|
||||
if not shell:
|
||||
shell = "/bin/bash"
|
||||
if not groups:
|
||||
groups = ["nogroup"]
|
||||
for item in groups:
|
||||
checkGroupName(item)
|
||||
checkName(name)
|
||||
checkRealName(realname)
|
||||
if password:
|
||||
checkPassword(password, (name, realname))
|
||||
|
||||
db = Database()
|
||||
|
||||
if uid == -1:
|
||||
uid = db.next_uid()
|
||||
else:
|
||||
try:
|
||||
uid = int(uid)
|
||||
if uid < 0 or uid > 65536:
|
||||
raise
|
||||
except:
|
||||
fail(_(invalid_userid_msg))
|
||||
if db.users.has_key(uid):
|
||||
fail(_(used_userid_msg))
|
||||
|
||||
if db.users_by_name.has_key(name):
|
||||
fail(_(used_username_msg))
|
||||
|
||||
# First group in the list is the user's main group
|
||||
g = db.groups_by_name.get(groups[0], None)
|
||||
if not g:
|
||||
fail(_(no_group_msg))
|
||||
gid = g.gid
|
||||
|
||||
u = User()
|
||||
u.uid = uid
|
||||
u.gid = gid
|
||||
u.name = name
|
||||
u.realname = realname
|
||||
u.homedir = homedir
|
||||
u.shell = shell
|
||||
if password:
|
||||
u.password = shadowCrypt(password)
|
||||
else:
|
||||
u.password = "*"
|
||||
u.pwrest = [ "13094", "0", "99999", "7", "", "", "" ]
|
||||
db.users[uid] = u
|
||||
db.set_groups(name, groups)
|
||||
# No need to setup a real home dir for daemons
|
||||
if uid >= 1000 or homedir.startswith("/home/"):
|
||||
setup_home(uid, gid, homedir)
|
||||
setFace(uid, homedir)
|
||||
db.sync()
|
||||
|
||||
for grant in grants:
|
||||
if grant != "":
|
||||
grantAuthorization(uid, grant)
|
||||
for block in blocks:
|
||||
if block != "":
|
||||
blockAuthorization(uid, block)
|
||||
|
||||
return uid
|
||||
|
||||
def setUser(uid, realname, homedir, shell, password, groups):
|
||||
uid = int(uid)
|
||||
|
||||
db = Database()
|
||||
u = db.users.get(uid, None)
|
||||
if u:
|
||||
if realname:
|
||||
checkRealName(realname)
|
||||
u.realname = realname
|
||||
if homedir:
|
||||
u.homedir = homedir
|
||||
if shell:
|
||||
u.shell = shell
|
||||
if password:
|
||||
checkPassword(password, (u.name, u.realname, realname))
|
||||
u.password = shadowCrypt(password)
|
||||
if groups:
|
||||
# FIXME: check main group
|
||||
for item in groups:
|
||||
checkGroupName(item)
|
||||
db.set_groups(u.name, groups)
|
||||
db.sync()
|
||||
else:
|
||||
fail(_(no_user_msg))
|
||||
|
||||
def deleteUser(uid, deletefiles):
|
||||
uid = int(uid)
|
||||
|
||||
if uid == 0:
|
||||
fail(_(delete_root_msg))
|
||||
|
||||
db = Database()
|
||||
u = db.users.get(uid, None)
|
||||
if u:
|
||||
#delete authorizations of user
|
||||
try:
|
||||
polkit.auth_revoke_all(uid)
|
||||
except:
|
||||
pass
|
||||
|
||||
home = u.homedir[:]
|
||||
db.set_groups(u.name, [])
|
||||
del db.users[uid]
|
||||
db.sync()
|
||||
if deletefiles:
|
||||
os.system('/bin/rm -rf "%s"' % home)
|
||||
|
||||
|
||||
def groupList():
|
||||
def format(dict, gid):
|
||||
item = dict[gid]
|
||||
return (item.gid, item.name)
|
||||
db = Database(for_read=True)
|
||||
return map(lambda x: format(db.groups, x), db.groups)
|
||||
|
||||
def addGroup(gid, name):
|
||||
checkGroupName(name)
|
||||
|
||||
db = Database()
|
||||
if gid == -1:
|
||||
gid = db.next_gid()
|
||||
else:
|
||||
try:
|
||||
gid = int(gid)
|
||||
if gid < 0 or gid > 65536:
|
||||
raise
|
||||
except:
|
||||
fail(_(invalid_groupid_msg))
|
||||
if db.groups.has_key(gid):
|
||||
fail(_(used_groupid_msg))
|
||||
|
||||
if db.groups_by_name.has_key(name):
|
||||
fail(_(used_groupname_msg))
|
||||
|
||||
g = Group()
|
||||
g.gid = gid
|
||||
g.name = name
|
||||
g.members = []
|
||||
db.groups[gid] = g
|
||||
db.sync()
|
||||
|
||||
return gid
|
||||
|
||||
def deleteGroup(gid):
|
||||
gid = int(gid)
|
||||
|
||||
db = Database()
|
||||
if db.groups.has_key(gid):
|
||||
del db.groups[gid]
|
||||
db.sync()
|
||||
|
||||
|
||||
#
|
||||
# Crypt function for shadow file
|
||||
#
|
||||
|
||||
def shadowCrypt(password):
|
||||
des_salt = list('./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')
|
||||
salt, magic = str(random.random())[-8:], '$1$'
|
||||
|
||||
ctx = hashlib.md5(password)
|
||||
ctx.update(magic)
|
||||
ctx.update(salt)
|
||||
|
||||
ctx1 = hashlib.md5(password)
|
||||
ctx1.update(salt)
|
||||
ctx1.update(password)
|
||||
|
||||
final = ctx1.digest()
|
||||
|
||||
for i in range(len(password), 0 , -16):
|
||||
if i > 16:
|
||||
ctx.update(final)
|
||||
else:
|
||||
ctx.update(final[:i])
|
||||
|
||||
i = len(password)
|
||||
|
||||
while i:
|
||||
if i & 1:
|
||||
ctx.update('\0')
|
||||
else:
|
||||
ctx.update(password[:1])
|
||||
i = i >> 1
|
||||
final = ctx.digest()
|
||||
|
||||
for i in range(1000):
|
||||
ctx1 = hashlib.md5()
|
||||
if i & 1:
|
||||
ctx1.update(password)
|
||||
else:
|
||||
ctx1.update(final)
|
||||
if i % 3: ctx1.update(salt)
|
||||
if i % 7: ctx1.update(password)
|
||||
if i & 1:
|
||||
ctx1.update(final)
|
||||
else:
|
||||
ctx1.update(password)
|
||||
final = ctx1.digest()
|
||||
|
||||
def _to64(v, n):
|
||||
r = ''
|
||||
while (n-1 >= 0):
|
||||
r = r + des_salt[v & 0x3F]
|
||||
v = v >> 6
|
||||
n = n - 1
|
||||
return r
|
||||
|
||||
rv = magic + salt + '$'
|
||||
final = map(ord, final)
|
||||
l = (final[0] << 16) + (final[6] << 8) + final[12]
|
||||
rv = rv + _to64(l, 4)
|
||||
l = (final[1] << 16) + (final[7] << 8) + final[13]
|
||||
rv = rv + _to64(l, 4)
|
||||
l = (final[2] << 16) + (final[8] << 8) + final[14]
|
||||
rv = rv + _to64(l, 4)
|
||||
l = (final[3] << 16) + (final[9] << 8) + final[15]
|
||||
rv = rv + _to64(l, 4)
|
||||
l = (final[4] << 16) + (final[10] << 8) + final[5]
|
||||
rv = rv + _to64(l, 4)
|
||||
l = final[11]
|
||||
rv = rv + _to64(l, 2)
|
||||
|
||||
return rv
|
||||
|
||||
#
|
||||
# List authorizations by UID
|
||||
#
|
||||
|
||||
def listUserAuthorizations(uid):
|
||||
actions = polkit.auth_list_uid(int(uid))
|
||||
auths = []
|
||||
for action in actions:
|
||||
action_info = polkit.action_info(action['action_id'])
|
||||
auths.append((action['action_id'], action['scope'], action_info['description'], action_info['policy_active'], action['negative']))
|
||||
return auths
|
||||
|
||||
#
|
||||
# Grant authorization to user
|
||||
#
|
||||
|
||||
def grantAuthorization(uid, action):
|
||||
uid = int(uid)
|
||||
if action == "*":
|
||||
for action_id in polkit.action_list():
|
||||
try:
|
||||
polkit.auth_revoke(uid, action_id)
|
||||
polkit.auth_add(action_id, polkit.SCOPE_ALWAYS, uid)
|
||||
except:
|
||||
return False
|
||||
else:
|
||||
try:
|
||||
polkit.auth_revoke(uid, action)
|
||||
polkit.auth_add(action, polkit.SCOPE_ALWAYS, uid)
|
||||
except:
|
||||
return False
|
||||
return True
|
||||
|
||||
#
|
||||
# Revoke authorization of user
|
||||
#
|
||||
|
||||
def revokeAuthorization(uid, action):
|
||||
uid = int(uid)
|
||||
if action == "*":
|
||||
for action_id in polkit.action_list():
|
||||
try:
|
||||
polkit.auth_revoke(uid, action_id)
|
||||
except:
|
||||
return False
|
||||
else:
|
||||
try:
|
||||
polkit.auth_revoke(uid, action)
|
||||
except:
|
||||
return False
|
||||
return True
|
||||
|
||||
#
|
||||
# Block authorization of user
|
||||
#
|
||||
|
||||
def blockAuthorization(uid, action):
|
||||
uid = int(uid)
|
||||
if action == "*":
|
||||
for action_id in polkit.action_list():
|
||||
try:
|
||||
polkit.auth_revoke(uid, action_id)
|
||||
polkit.auth_block(uid, action_id)
|
||||
except:
|
||||
return False
|
||||
else:
|
||||
try:
|
||||
polkit.auth_revoke(uid, action)
|
||||
polkit.auth_block(uid, action)
|
||||
except:
|
||||
return False
|
||||
return True
|
||||
@@ -0,0 +1,7 @@
|
||||
f /run/utmp 0664 root utmp
|
||||
d /run/lock 0755 root lock
|
||||
d /run/lock/subsys 0755 root root
|
||||
d /run/pisilinux 0755 root root
|
||||
d /run/shm 1777 root root
|
||||
L /dev/shm - - - - /run/shm
|
||||
d /run/user 0755 root root
|
||||
@@ -0,0 +1 @@
|
||||
Pisi_Linux 1.0
|
||||
@@ -0,0 +1,162 @@
|
||||
# /etc/protocols:
|
||||
# $Id: protocols,v 1.10 2010/03/26 13:05:40 ovasik Exp $
|
||||
#
|
||||
# Internet (IP) protocols
|
||||
#
|
||||
# from: @(#)protocols 5.1 (Berkeley) 4/17/89
|
||||
#
|
||||
# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).
|
||||
# Last IANA update included dated 2010-03-11
|
||||
#
|
||||
# See also http://www.iana.org/assignments/protocol-numbers
|
||||
|
||||
ip 0 IP # internet protocol, pseudo protocol number
|
||||
hopopt 0 HOPOPT # hop-by-hop options for ipv6
|
||||
icmp 1 ICMP # internet control message protocol
|
||||
igmp 2 IGMP # internet group management protocol
|
||||
ggp 3 GGP # gateway-gateway protocol
|
||||
ipv4 4 IPv4 # IPv4 encapsulation
|
||||
st 5 ST # ST datagram mode
|
||||
tcp 6 TCP # transmission control protocol
|
||||
cbt 7 CBT # CBT, Tony Ballardie <A.Ballardie@cs.ucl.ac.uk>
|
||||
egp 8 EGP # exterior gateway protocol
|
||||
igp 9 IGP # any private interior gateway (Cisco: for IGRP)
|
||||
bbn-rcc 10 BBN-RCC-MON # BBN RCC Monitoring
|
||||
nvp 11 NVP-II # Network Voice Protocol
|
||||
pup 12 PUP # PARC universal packet protocol
|
||||
argus 13 ARGUS # ARGUS
|
||||
emcon 14 EMCON # EMCON
|
||||
xnet 15 XNET # Cross Net Debugger
|
||||
chaos 16 CHAOS # Chaos
|
||||
udp 17 UDP # user datagram protocol
|
||||
mux 18 MUX # Multiplexing protocol
|
||||
dcn 19 DCN-MEAS # DCN Measurement Subsystems
|
||||
hmp 20 HMP # host monitoring protocol
|
||||
prm 21 PRM # packet radio measurement protocol
|
||||
xns-idp 22 XNS-IDP # Xerox NS IDP
|
||||
trunk-1 23 TRUNK-1 # Trunk-1
|
||||
trunk-2 24 TRUNK-2 # Trunk-2
|
||||
leaf-1 25 LEAF-1 # Leaf-1
|
||||
leaf-2 26 LEAF-2 # Leaf-2
|
||||
rdp 27 RDP # "reliable datagram" protocol
|
||||
irtp 28 IRTP # Internet Reliable Transaction Protocol
|
||||
iso-tp4 29 ISO-TP4 # ISO Transport Protocol Class 4
|
||||
netblt 30 NETBLT # Bulk Data Transfer Protocol
|
||||
mfe-nsp 31 MFE-NSP # MFE Network Services Protocol
|
||||
merit-inp 32 MERIT-INP # MERIT Internodal Protocol
|
||||
dccp 33 DCCP # Datagram Congestion Control Protocol
|
||||
3pc 34 3PC # Third Party Connect Protocol
|
||||
idpr 35 IDPR # Inter-Domain Policy Routing Protocol
|
||||
xtp 36 XTP # Xpress Tranfer Protocol
|
||||
ddp 37 DDP # Datagram Delivery Protocol
|
||||
idpr-cmtp 38 IDPR-CMTP # IDPR Control Message Transport Proto
|
||||
tp++ 39 TP++ # TP++ Transport Protocol
|
||||
il 40 IL # IL Transport Protocol
|
||||
ipv6 41 IPv6 # IPv6 encapsulation
|
||||
sdrp 42 SDRP # Source Demand Routing Protocol
|
||||
ipv6-route 43 IPv6-Route # Routing Header for IPv6
|
||||
ipv6-frag 44 IPv6-Frag # Fragment Header for IPv6
|
||||
idrp 45 IDRP # Inter-Domain Routing Protocol
|
||||
rsvp 46 RSVP # Resource ReSerVation Protocol
|
||||
gre 47 GRE # Generic Routing Encapsulation
|
||||
dsr 48 DSR # Dynamic Source Routing Protocol
|
||||
bna 49 BNA # BNA
|
||||
esp 50 ESP # Encap Security Payload
|
||||
ipv6-crypt 50 IPv6-Crypt # Encryption Header for IPv6 (not in official list)
|
||||
ah 51 AH # Authentication Header
|
||||
ipv6-auth 51 IPv6-Auth # Authentication Header for IPv6 (not in official list)
|
||||
i-nlsp 52 I-NLSP # Integrated Net Layer Security TUBA
|
||||
swipe 53 SWIPE # IP with Encryption
|
||||
narp 54 NARP # NBMA Address Resolution Protocol
|
||||
mobile 55 MOBILE # IP Mobility
|
||||
tlsp 56 TLSP # Transport Layer Security Protocol
|
||||
skip 57 SKIP # SKIP
|
||||
ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6
|
||||
ipv6-nonxt 59 IPv6-NoNxt # No Next Header for IPv6
|
||||
ipv6-opts 60 IPv6-Opts # Destination Options for IPv6
|
||||
# 61 # any host internal protocol
|
||||
cftp 62 CFTP # CFTP
|
||||
# 63 # any local network
|
||||
sat-expak 64 SAT-EXPAK # SATNET and Backroom EXPAK
|
||||
kryptolan 65 KRYPTOLAN # Kryptolan
|
||||
rvd 66 RVD # MIT Remote Virtual Disk Protocol
|
||||
ippc 67 IPPC # Internet Pluribus Packet Core
|
||||
# 68 # any distributed file system
|
||||
sat-mon 69 SAT-MON # SATNET Monitoring
|
||||
visa 70 VISA # VISA Protocol
|
||||
ipcv 71 IPCV # Internet Packet Core Utility
|
||||
cpnx 72 CPNX # Computer Protocol Network Executive
|
||||
cphb 73 CPHB # Computer Protocol Heart Beat
|
||||
wsn 74 WSN # Wang Span Network
|
||||
pvp 75 PVP # Packet Video Protocol
|
||||
br-sat-mon 76 BR-SAT-MON # Backroom SATNET Monitoring
|
||||
sun-nd 77 SUN-ND # SUN ND PROTOCOL-Temporary
|
||||
wb-mon 78 WB-MON # WIDEBAND Monitoring
|
||||
wb-expak 79 WB-EXPAK # WIDEBAND EXPAK
|
||||
iso-ip 80 ISO-IP # ISO Internet Protocol
|
||||
vmtp 81 VMTP # Versatile Message Transport
|
||||
secure-vmtp 82 SECURE-VMTP # SECURE-VMTP
|
||||
vines 83 VINES # VINES
|
||||
ttp 84 TTP # TTP
|
||||
nsfnet-igp 85 NSFNET-IGP # NSFNET-IGP
|
||||
dgp 86 DGP # Dissimilar Gateway Protocol
|
||||
tcf 87 TCF # TCF
|
||||
eigrp 88 EIGRP # Enhanced Interior Routing Protocol (Cisco)
|
||||
ospf 89 OSPFIGP # Open Shortest Path First IGP
|
||||
sprite-rpc 90 Sprite-RPC # Sprite RPC Protocol
|
||||
larp 91 LARP # Locus Address Resolution Protocol
|
||||
mtp 92 MTP # Multicast Transport Protocol
|
||||
ax.25 93 AX.25 # AX.25 Frames
|
||||
ipip 94 IPIP # Yet Another IP encapsulation
|
||||
micp 95 MICP # Mobile Internetworking Control Pro.
|
||||
scc-sp 96 SCC-SP # Semaphore Communications Sec. Pro.
|
||||
etherip 97 ETHERIP # Ethernet-within-IP Encapsulation
|
||||
encap 98 ENCAP # Yet Another IP encapsulation
|
||||
# 99 # any private encryption scheme
|
||||
gmtp 100 GMTP # GMTP
|
||||
ifmp 101 IFMP # Ipsilon Flow Management Protocol
|
||||
pnni 102 PNNI # PNNI over IP
|
||||
pim 103 PIM # Protocol Independent Multicast
|
||||
aris 104 ARIS # ARIS
|
||||
scps 105 SCPS # SCPS
|
||||
qnx 106 QNX # QNX
|
||||
a/n 107 A/N # Active Networks
|
||||
ipcomp 108 IPComp # IP Payload Compression Protocol
|
||||
snp 109 SNP # Sitara Networks Protocol
|
||||
compaq-peer 110 Compaq-Peer # Compaq Peer Protocol
|
||||
ipx-in-ip 111 IPX-in-IP # IPX in IP
|
||||
vrrp 112 VRRP # Virtual Router Redundancy Protocol
|
||||
pgm 113 PGM # PGM Reliable Transport Protocol
|
||||
# 114 # any 0-hop protocol
|
||||
l2tp 115 L2TP # Layer Two Tunneling Protocol
|
||||
ddx 116 DDX # D-II Data Exchange
|
||||
iatp 117 IATP # Interactive Agent Transfer Protocol
|
||||
stp 118 STP # Schedule Transfer
|
||||
srp 119 SRP # SpectraLink Radio Protocol
|
||||
uti 120 UTI # UTI
|
||||
smp 121 SMP # Simple Message Protocol
|
||||
sm 122 SM # SM
|
||||
ptp 123 PTP # Performance Transparency Protocol
|
||||
isis 124 ISIS # ISIS over IPv4
|
||||
fire 125 FIRE
|
||||
crtp 126 CRTP # Combat Radio Transport Protocol
|
||||
crdup 127 CRUDP # Combat Radio User Datagram
|
||||
sscopmce 128 SSCOPMCE
|
||||
iplt 129 IPLT
|
||||
sps 130 SPS # Secure Packet Shield
|
||||
pipe 131 PIPE # Private IP Encapsulation within IP
|
||||
sctp 132 SCTP # Stream Control Transmission Protocol
|
||||
fc 133 FC # Fibre Channel
|
||||
rsvp-e2e-ignore 134 RSVP-E2E-IGNORE
|
||||
# 135 # Mobility Header
|
||||
udplite 136 UDPLite
|
||||
mpls-in-ip 137 MPLS-in-IP
|
||||
manet 138 manet # MANET Protocols
|
||||
hip 139 HIP # Host Identity Protocol
|
||||
shim6 140 Shim6 # Shim6 Protocol
|
||||
wesp 141 WESP # Wrapped Encapsulating Security Payload
|
||||
rohc 142 ROHC # Robust Header Compression
|
||||
# 143-252 Unassigned [IANA]
|
||||
# 253 Use for experimentation and testing [RFC3692]
|
||||
# 254 Use for experimentation and testing [RFC3692]
|
||||
# 255 Reserved [IANA]
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,233 @@
|
||||
.\" Hey, Emacs! This is an -*- nroff -*- source file.
|
||||
.TH START\-STOP\-DAEMON 8 "15th March 1997" "Debian Project" "Debian GNU/Linux"
|
||||
.SH NAME
|
||||
start\-stop\-daemon \- start and stop system daemon programs
|
||||
.SH SYNOPSIS
|
||||
.B start-stop-daemon
|
||||
.BR -S | --start
|
||||
.IR options
|
||||
.RB [ \-\- ]
|
||||
.IR arguments
|
||||
.HP
|
||||
.B start-stop-daemon
|
||||
.BR -K | --stop
|
||||
.IR options
|
||||
.HP
|
||||
.B start-stop-daemon
|
||||
.BR -H | --help
|
||||
.HP
|
||||
.B start-stop-daemon
|
||||
.BR -V | --version
|
||||
.SH DESCRIPTION
|
||||
.B start\-stop\-daemon
|
||||
is used to control the creation and termination of system-level processes.
|
||||
Using the
|
||||
.BR --exec ", " --pidfile ", " --user ", and " --name " options,"
|
||||
.B start\-stop\-daemon
|
||||
can be configured to find existing instances of a running process.
|
||||
|
||||
With
|
||||
.BR --start ,
|
||||
.B start\-stop\-daemon
|
||||
checks for the existence of a specified process.
|
||||
If such a process exists,
|
||||
.B start\-stop\-daemon
|
||||
does nothing, and exits with error status 1 (0 if
|
||||
.BR --oknodo
|
||||
is specified).
|
||||
If such a process does not exist, it starts an
|
||||
instance, using either the executable specified by
|
||||
.BR --exec ,
|
||||
(or, if specified, by
|
||||
.BR --startas ).
|
||||
Any arguments given after
|
||||
.BR --
|
||||
on the command line are passed unmodified to the program being
|
||||
started. If
|
||||
.B --retry
|
||||
is specified then start-stop-daemon will check that the process(es)
|
||||
have terminated.
|
||||
|
||||
With
|
||||
.BR --stop ,
|
||||
.B start\-stop\-daemon
|
||||
also checks for the existence of a specified process.
|
||||
If such a process exists,
|
||||
.B start\-stop\-daemon
|
||||
sends it the signal specified by
|
||||
.BR --signal ,
|
||||
and exits with error status 0.
|
||||
If such a process does not exist,
|
||||
.B start\-stop\-daemon
|
||||
exits with error status 1
|
||||
(0 if
|
||||
.BR --oknodo
|
||||
is specified).
|
||||
|
||||
.SH OPTIONS
|
||||
|
||||
.TP
|
||||
\fB-x\fP|\fB--exec\fP \fIexecutable\fP
|
||||
Check for processes that are instances of this executable (according to
|
||||
.B /proc/
|
||||
.I pid
|
||||
.B /exe
|
||||
).
|
||||
.TP
|
||||
\fB-p\fP|\fB--pidfile\fP \fIpid-file\fP
|
||||
Check for processes whose process-id is specified in
|
||||
.I pid-file.
|
||||
.TP
|
||||
\fB-u\fP|\fB--user\fP \fIusername\fP|\fIuid\fP
|
||||
Check for processes owned by the user specified by
|
||||
.I username
|
||||
or
|
||||
.I uid.
|
||||
.TP
|
||||
\fB-n\fP|\fB--name\fP \fIprocess-name\fP
|
||||
Check for processes with the name
|
||||
.I process-name
|
||||
(according to
|
||||
.B /proc/
|
||||
.I pid
|
||||
.B /stat
|
||||
).
|
||||
.TP
|
||||
\fB-s\fP|\fB--signal\fP \fIsignal\fP
|
||||
With
|
||||
.BR --stop
|
||||
, specifies the signal to send to processes being stopped (default 15).
|
||||
.TP
|
||||
\fB-R\fP|\fB--retry\fP \fItimeout\fP|\fIschedule\fP
|
||||
With
|
||||
.BR --stop ,
|
||||
specifies that
|
||||
.B start-stop-daemon
|
||||
is to check whether the process(es)
|
||||
do finish. It will check repeatedly whether any matching processes
|
||||
are running, until none are. If the processes do not exit it will
|
||||
then take further action as determined by the schedule.
|
||||
|
||||
If
|
||||
.I timeout
|
||||
is specified instead of
|
||||
.I schedule
|
||||
then the schedule
|
||||
.IB signal / timeout /KILL/ timeout
|
||||
is used, where
|
||||
.I signal
|
||||
is the signal specified with
|
||||
.BR --signal .
|
||||
|
||||
.I schedule
|
||||
is a list of at least two items separated by slashes
|
||||
.RB ( / );
|
||||
each item may be
|
||||
.BI - signal-number
|
||||
or [\fB\-\fP]\fIsignal-name\fP,
|
||||
which means to send that signal,
|
||||
or
|
||||
.IR timeout ,
|
||||
which means to wait that many seconds for processes to
|
||||
exit,
|
||||
or
|
||||
.BR forever ,
|
||||
which means to repeat the rest of the schedule forever if
|
||||
necessary.
|
||||
|
||||
If the end of the schedule is reached and
|
||||
.BR forever
|
||||
is not specified, then
|
||||
.B start-stop-daemon
|
||||
exits with error status 2.
|
||||
If a schedule is specified, then any signal specified
|
||||
with
|
||||
.B --signal
|
||||
is ignored.
|
||||
.TP
|
||||
\fB-a\fP|\fB--startas\fP \fIpathname\fP
|
||||
With
|
||||
.BR --start ,
|
||||
start the process specified by
|
||||
.IR pathname .
|
||||
If not specified, defaults to the argument given to
|
||||
.BR --exec .
|
||||
.TP
|
||||
.BR -t | --test
|
||||
Print actions that would be taken and set appropriate return value,
|
||||
but take no action.
|
||||
.TP
|
||||
.BR -o | --oknodo
|
||||
Return exit status 0 instead of 1 if no actions are (would be) taken.
|
||||
.TP
|
||||
.BR -q | --quiet
|
||||
Do not print informational messages; only display error messages.
|
||||
.TP
|
||||
\fB-c\fP|\fB--chuid\fP \fIusername\fR|\fIuid\fP
|
||||
Change to this username/uid before starting the process. You can also
|
||||
specify a group by appending a
|
||||
.BR : ,
|
||||
then the group or gid in the same way
|
||||
as you would for the `chown' command (\fIuser\fP\fB:\fP\fIgroup\fP).
|
||||
When using this option
|
||||
you must realize that the primary and supplemental groups are set as well,
|
||||
even if the
|
||||
.B --group
|
||||
option is not specified. The
|
||||
.B --group
|
||||
option is only for
|
||||
groups that the user isn't normally a member of (like adding per/process
|
||||
group membership for generic users like
|
||||
.BR nobody ).
|
||||
.TP
|
||||
\fB-r\fP|\fB--chroot\fP \fIroot\fP
|
||||
Chdir and chroot to
|
||||
.I root
|
||||
before starting the process. Please note that the pidfile is also written
|
||||
after the chroot.
|
||||
.TP
|
||||
.BR -b | --background
|
||||
Typically used with programs that don't detach on their own. This option
|
||||
will force
|
||||
.B start-stop-daemon
|
||||
to fork before starting the process, and force it into the background.
|
||||
.B WARNING: start-stop-daemon
|
||||
cannot check the exit status if the process fails to execute for
|
||||
.B any
|
||||
reason. This is a last resort, and is only meant for programs that either
|
||||
make no sense forking on their own, or where it's not feasible to add the
|
||||
code for it to do this itself.
|
||||
.TP
|
||||
.BR -N | --nicelevel
|
||||
This alters the prority of the process before starting it.
|
||||
.TP
|
||||
.BR -m | --make-pidfile
|
||||
Used when starting a program that does not create its own pid file. This
|
||||
option will make
|
||||
.B start-stop-daemon
|
||||
create the file referenced with
|
||||
.B --pidfile
|
||||
and place the pid into it just before executing the process. Note, it will
|
||||
not be removed when stopping the program.
|
||||
.B NOTE:
|
||||
This feature may not work in all cases. Most notably when the program
|
||||
being executed forks from its main process. Because of this it is usually
|
||||
only useful when combined with the
|
||||
.B --background
|
||||
option.
|
||||
.TP
|
||||
.BR -v | --verbose
|
||||
Print verbose informational messages.
|
||||
.TP
|
||||
.BR -H | --help
|
||||
Print help information; then exit.
|
||||
.TP
|
||||
.BR -V | --version
|
||||
Print version information; then exit.
|
||||
|
||||
.SH AUTHORS
|
||||
Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl> based on
|
||||
a previous version by Ian Jackson <ian@chiark.greenend.org.uk>.
|
||||
|
||||
Manual page by Klee Dienes <klee@mit.edu>, partially reformatted
|
||||
by Ian Jackson.
|
||||
@@ -0,0 +1,68 @@
|
||||
# For more information on how this file works, please see
|
||||
# the manpages sysctl(8) and sysctl.conf(5).
|
||||
#
|
||||
# In order for this file to work properly, you must first
|
||||
# enable 'Sysctl support' in the kernel.
|
||||
#
|
||||
# Look in /proc/sys/ for all the things you can setup.
|
||||
#
|
||||
|
||||
# Disables packet forwarding
|
||||
#net.ipv4.ip_forward = 0
|
||||
|
||||
# Disables IP dynaddr
|
||||
#net.ipv4.ip_dynaddr = 0
|
||||
|
||||
# Disable ECN
|
||||
#net.ipv4.tcp_ecn = 0
|
||||
|
||||
# Enables source route verification
|
||||
net.ipv4.conf.default.rp_filter = 1
|
||||
|
||||
# Enable reverse path
|
||||
net.ipv4.conf.all.rp_filter = 1
|
||||
|
||||
# Enable SYN cookies
|
||||
# http://cr.yp.to/syncookies.html
|
||||
#net.ipv4.tcp_syncookies = 1
|
||||
|
||||
# Disable source route
|
||||
#net.ipv4.conf.all.accept_source_route = 0
|
||||
#net.ipv4.conf.default.accept_source_route = 0
|
||||
|
||||
# Disable redirects
|
||||
#net.ipv4.conf.all.accept_redirects = 0
|
||||
#net.ipv4.conf.default.accept_redirects = 0
|
||||
|
||||
# Disable secure redirects
|
||||
#net.ipv4.conf.all.secure_redirects = 0
|
||||
#net.ipv4.conf.default.secure_redirects = 0
|
||||
|
||||
# Enable NF_CONNTRACK_ACCT
|
||||
# net.netfilter.nf_conntrack_acct = 1
|
||||
|
||||
# Ignore ICMP broadcasts
|
||||
net.ipv4.icmp_echo_ignore_broadcasts = 1
|
||||
|
||||
# Disables the magic-sysrq key
|
||||
#kernel.sysrq = 0
|
||||
|
||||
# When the kernel panics, automatically reboot in 3 seconds
|
||||
#kernel.panic = 3
|
||||
|
||||
# Allow for more PIDs (cool factor!); may break some programs
|
||||
#kernel.pid_max = 999999
|
||||
|
||||
# Controls whether core dumps will append the PID to the core filename.
|
||||
# Useful for debugging multi-threaded applications.
|
||||
kernel.core_uses_pid = 1
|
||||
|
||||
# TCP Port for lock manager
|
||||
#fs.nfs.nlm_tcpport = 0
|
||||
|
||||
# UDP Port for lock manager
|
||||
#fs.nfs.nlm_udpport = 0
|
||||
|
||||
# default is 8k, nepomuk runs better with 512K
|
||||
fs.inotify.max_user_watches = 524288
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
IANA_VERSION=2.30
|
||||
|
||||
wget http://sethwklein.net/iana-etc-$IANA_VERSION.tar.bz2
|
||||
tar xvf iana-etc-$IANA_VERSION.tar.bz2
|
||||
|
||||
pushd iana-etc-$IANA_VERSION
|
||||
|
||||
sed -i 's:file=protocol-numbers:file=protocol-numbers/protocol-numbers.txt:' Makefile
|
||||
|
||||
make get
|
||||
LC_ALL=C make
|
||||
make test
|
||||
|
||||
cp {services,protocols} ../
|
||||
|
||||
popd
|
||||
|
||||
# Cleanup
|
||||
rm -rf iana-etc-$IANA_VERSION
|
||||
@@ -0,0 +1,162 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>baselayout</Name>
|
||||
<Homepage>http://www.pisilinux.org</Homepage>
|
||||
<Packager>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Packager>
|
||||
<License>GPLv2</License>
|
||||
<IsA>app:console</IsA>
|
||||
<IsA>library</IsA>
|
||||
<IsA>data</IsA>
|
||||
<Summary>Filesystem baselayout</Summary>
|
||||
<Description>baselayout creates the Pisi Linux Linux main filesystem hierarchy.</Description>
|
||||
<Archive sha1sum="89cb1dc3c3a2fc47c299ae6c002cad212b7fc56e" type="targz">http://source.pisilinux.org/1.0/baselayout-3.10.0.tar.gz</Archive>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>baselayout</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency>pypolkit</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="executable" permanent="true">/bin</Path>
|
||||
<Path fileType="executable" permanent="true">/sbin</Path>
|
||||
<Path fileType="library" permanent="true">/lib*</Path>
|
||||
<Path fileType="config" permanent="true">/etc</Path>
|
||||
<Path fileType="data" permanent="true">/etc/pisilinux-release</Path>
|
||||
<Path fileType="data" permanent="true">/media</Path>
|
||||
<Path fileType="data" permanent="true">/boot</Path>
|
||||
<Path fileType="data" permanent="true">/proc</Path>
|
||||
<Path fileType="data" permanent="true">/home</Path>
|
||||
<Path fileType="data" permanent="true">/mnt</Path>
|
||||
<Path fileType="data" permanent="true">/opt</Path>
|
||||
<Path fileType="data" permanent="true">/dev</Path>
|
||||
<Path fileType="data" permanent="true">/run</Path>
|
||||
<Path fileType="data" permanent="true">/sys</Path>
|
||||
<Path fileType="data" permanent="true">/srv</Path>
|
||||
<Path fileType="data" permanent="true">/tmp</Path>
|
||||
<Path fileType="data" permanent="true">/usr</Path>
|
||||
<Path fileType="data" permanent="true">/var</Path>
|
||||
<Path fileType="config">/usr/lib/tmpfiles.d/baselayout.conf</Path>
|
||||
</Files>
|
||||
<AdditionalFiles>
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/lib/tmpfiles.d/baselayout.conf">baselayout.conf</AdditionalFile>
|
||||
|
||||
<!-- Update these from fedora's setup package -->
|
||||
<AdditionalFile owner="root" permission="0644" target="/etc/services">services</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/etc/protocols">protocols</AdditionalFile>
|
||||
|
||||
<AdditionalFile owner="root" permission="0644" target="/etc/sysctl.conf">sysctl.conf</AdditionalFile>
|
||||
|
||||
<!-- Release file for Pisi Linux, there's another in lsb-release package -->
|
||||
<AdditionalFile owner="root" permission="0644" target="/etc/pisilinux-release">pisilinux-release</AdditionalFile>
|
||||
|
||||
<!-- Should be dropped after switching to systemd as the only user is COMAR -->
|
||||
<AdditionalFile owner="root" permission="0644" target="/usr/share/man/man8/start-stop-daemon.8">start-stop-daemon.8</AdditionalFile>
|
||||
</AdditionalFiles>
|
||||
<Provides>
|
||||
<COMAR script="pakhandler.py">System.PackageHandler</COMAR>
|
||||
<COMAR script="package.py">System.Package</COMAR>
|
||||
<COMAR script="usermgr.py">User.Manager</COMAR>
|
||||
<COMAR script="stack.py">Network.Stack</COMAR>
|
||||
</Provides>
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="13">
|
||||
<Date>2014-07-16</Date>
|
||||
<Version>3.10.0</Version>
|
||||
<Comment>Add vboxusers</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="12">
|
||||
<Date>2014-07-16</Date>
|
||||
<Version>3.10.0</Version>
|
||||
<Comment>Release Pisi Linux 1.0</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="11">
|
||||
<Date>2014-05-11</Date>
|
||||
<Version>3.10.0</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="10">
|
||||
<Date>2014-03-15</Date>
|
||||
<Version>3.10.0</Version>
|
||||
<Comment>Rebuild.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="9">
|
||||
<Date>2014-01-19</Date>
|
||||
<Version>3.10.0</Version>
|
||||
<Comment>Update baselayout.conf</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="8">
|
||||
<Date>2014-01-08</Date>
|
||||
<Version>3.10.0</Version>
|
||||
<Comment>Add baselayout.conf</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="7">
|
||||
<Date>2013-12-20</Date>
|
||||
<Version>3.10.0</Version>
|
||||
<Comment>Release Pisi Linux Rc2</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2013-10-27</Date>
|
||||
<Version>3.10.0</Version>
|
||||
<Comment>Add gdm user and group, apply chmod 1777 to dev/shm aka run/shm.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2013-09-10</Date>
|
||||
<Version>3.10.0</Version>
|
||||
<Comment>Add shm dir to run, new archive.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2013-09-05</Date>
|
||||
<Version>3.8.0</Version>
|
||||
<Comment>Add missing method to pakhandler.py</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-08-31</Date>
|
||||
<Version>3.8.0</Version>
|
||||
<Comment>release Izmir</Comment>
|
||||
<Name>Erdinç Gültekin</Name>
|
||||
<Email>erdincgultekin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2013-03-24</Date>
|
||||
<Version>3.8.0</Version>
|
||||
<Comment>Pisi Linux changes.</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2013-01-11</Date>
|
||||
<Version>3.7.1</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" ?>
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>baselayout</Name>
|
||||
<Summary xml:lang="tr">Dosya sisteminin temel planı</Summary>
|
||||
<Description xml:lang="tr">Bu paket, Pisi Linux dosya sisteminin temelini oluşturur.</Description>
|
||||
<Description xml:lang="fr">Ce paquet crée la hiérarchie du système de fichier principal de Pisi Linux.</Description>
|
||||
</Source>
|
||||
</PISI>
|
||||
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Licensed under the GNU General Public License, version 3.
|
||||
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||
|
||||
from pisi.actionsapi import autotools
|
||||
from pisi.actionsapi import pisitools
|
||||
from pisi.actionsapi import shelltools
|
||||
from pisi.actionsapi import get
|
||||
|
||||
|
||||
cfgsettings = """-DDEFAULT_PATH_VALUE=\'\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\' \
|
||||
-DSTANDARD_UTILS_PATH=\'\"/bin:/usr/bin:/sbin:/usr/sbin\"\' \
|
||||
-DSYS_BASHRC=\'\"/etc/bash/bashrc\"\' \
|
||||
-DNON_INTERACTIVE_LOGIN_SHELLS \
|
||||
-DSSH_SOURCE_BASHRC"""
|
||||
#-DSYS_BASH_LOGOUT=\'\"/etc/bash/bash_logout\"\' \
|
||||
|
||||
def setup():
|
||||
# Recycles pids is neccessary. When bash's last fork's pid was X and new fork's pid is also X,
|
||||
# bash has to wait for this same pid. Without Recycles pids bash will not wait.
|
||||
shelltools.export("CFLAGS", "%s -D_GNU_SOURCE -DRECYCLES_PIDS %s " % (get.CFLAGS(), cfgsettings))
|
||||
|
||||
autotools.autoconf()
|
||||
autotools.configure("--without-installed-readline \
|
||||
--disable-profiling \
|
||||
--without-gnu-malloc \
|
||||
--disable-rpath \
|
||||
--with-curses")
|
||||
|
||||
def build():
|
||||
autotools.make()
|
||||
|
||||
# FIXME: package build stops right after checking even when no errors happen (probably
|
||||
# due to SIGHUP in test). It is the duty of the packager to run tests by hand.
|
||||
#def check():
|
||||
# autotools.make("check")
|
||||
|
||||
def install():
|
||||
autotools.install()
|
||||
|
||||
pisitools.domove("/usr/bin/bash", "/bin")
|
||||
pisitools.dosym("/bin/bash","/bin/sh")
|
||||
pisitools.dosym("/bin/bash","/bin/rbash")
|
||||
|
||||
# Compatibility with old skels
|
||||
# pisitools.dosym("/etc/bash/bashrc", "/etc/bashrc")
|
||||
|
||||
pisitools.dosym("bash.info", "/usr/share/info/bashref.info")
|
||||
pisitools.doman("doc/bash.1", "doc/bashbug.1", "doc/builtins.1", "doc/rbash.1")
|
||||
pisitools.dodoc("README", "NEWS", "AUTHORS", "CHANGES", "COMPAT", "Y2K", "doc/FAQ", "doc/INTRO")
|
||||
@@ -0,0 +1,54 @@
|
||||
# /etc/bash/bashrc
|
||||
#
|
||||
# This file is sourced by all *interactive* bash shells on startup,
|
||||
# including some apparently interactive shells such as scp and rcp
|
||||
# that can't tolerate any output. So make sure this doesn't display
|
||||
# anything or bad things will happen !
|
||||
|
||||
|
||||
# Test for an interactive shell. There is no need to set anything
|
||||
# past this point for scp and rcp, and it's important to refrain from
|
||||
# outputting anything in those cases.
|
||||
if [[ $- != *i* ]] ; then
|
||||
# Shell is non-interactive. Be done now!
|
||||
return
|
||||
fi
|
||||
|
||||
# Bash won't get SIGWINCH if another process is in the foreground.
|
||||
# Enable checkwinsize so that bash will check the terminal size when
|
||||
# it regains control. #65623
|
||||
# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)
|
||||
shopt -s checkwinsize
|
||||
|
||||
# Minor errors in the spelling of a directory component in a cd command
|
||||
# will be corrected.
|
||||
shopt -s cdspell
|
||||
|
||||
# Set colorful PS1 only on colorful terminals.
|
||||
# dircolors --print-database uses its own built-in database
|
||||
# instead of using /etc/DIR_COLORS. Try to use the external file
|
||||
# first to take advantage of user additions.
|
||||
use_color=false
|
||||
safe_term=${TERM//[^[:alnum:]]/.} # sanitize TERM
|
||||
|
||||
if [[ -f /etc/DIR_COLORS ]] ; then
|
||||
grep -q "^TERM ${safe_term}" /etc/DIR_COLORS && use_color=true
|
||||
elif type -p dircolors >/dev/null ; then
|
||||
if dircolors --print-database | grep -q "^TERM ${safe_term}" ; then
|
||||
use_color=true
|
||||
fi
|
||||
fi
|
||||
|
||||
if ${use_color} ; then
|
||||
if [ "$EUID" = 0 ] || [ "`whoami`" == 'root' ]; then
|
||||
export PS1='\[\033[1;31m\]\h \[\033[1;34m\]\W \$ \[\033[00m\]'
|
||||
else
|
||||
export PS1='\[\033[1m\]\u@\h \[\033[0;31m\]\W \$ \[\033[00m\]'
|
||||
fi
|
||||
else
|
||||
PS1='\u@\h: \W \$ '
|
||||
fi
|
||||
|
||||
# Try to keep environment pollution down, EPA loves us.
|
||||
unset use_color safe_term
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# command-not-found handle support
|
||||
if [ -x /usr/bin/command-not-found ]; then
|
||||
function command_not_found_handle
|
||||
{
|
||||
/usr/bin/command-not-found $1
|
||||
return $?
|
||||
}
|
||||
fi
|
||||
@@ -0,0 +1,11 @@
|
||||
--- bash-2.02-orig/parse.y Wed Mar 25 18:16:23 1998
|
||||
+++ bash-2.02/parse.y Sun Apr 19 16:46:34 1998
|
||||
@@ -923,7 +923,7 @@
|
||||
|
||||
#if defined (READLINE)
|
||||
char *current_readline_prompt = (char *)NULL;
|
||||
-char *current_readline_line = (char *)NULL;
|
||||
+unsigned char *current_readline_line = (unsigned char *)NULL;
|
||||
int current_readline_line_index = 0;
|
||||
|
||||
static int
|
||||
@@ -0,0 +1,11 @@
|
||||
--- bash-3.0/config-top.h.paths 2003-08-05 15:36:12.000000000 +0100
|
||||
+++ bash-3.0/config-top.h 2004-07-28 09:36:27.117205637 +0100
|
||||
@@ -66,7 +66,7 @@
|
||||
the Posix.2 confstr () function, or CS_PATH define are not present. */
|
||||
#ifndef STANDARD_UTILS_PATH
|
||||
#define STANDARD_UTILS_PATH \
|
||||
- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
|
||||
+ "/bin:/usr/bin:/usr/sbin:/sbin"
|
||||
#endif
|
||||
|
||||
/* Default primary and secondary prompt strings. */
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -up bash-3.2/config-top.h.profile bash-3.2/config-top.h
|
||||
--- bash-3.2/config-top.h.profile 2008-07-17 13:35:39.000000000 +0200
|
||||
+++ bash-3.2/config-top.h 2008-07-17 13:42:18.000000000 +0200
|
||||
@@ -26,6 +26,8 @@
|
||||
what POSIX.2 specifies. */
|
||||
#define CONTINUE_AFTER_KILL_ERROR
|
||||
|
||||
+#define NON_INTERACTIVE_LOGIN_SHELLS
|
||||
+
|
||||
/* Define BREAK_COMPLAINS if you want the non-standard, but useful
|
||||
error messages about `break' and `continue' out of context. */
|
||||
#define BREAK_COMPLAINS
|
||||
@@ -0,0 +1,219 @@
|
||||
diff -up bash-4.2-rc2/config.h.in.interpreter bash-4.2-rc2/config.h.in
|
||||
--- bash-4.2-rc2/config.h.in.interpreter 2011-02-09 07:59:21.000000000 +0100
|
||||
+++ bash-4.2-rc2/config.h.in 2011-02-09 07:59:21.000000000 +0100
|
||||
@@ -706,6 +706,9 @@
|
||||
/* Define if you have the pathconf function. */
|
||||
#undef HAVE_PATHCONF
|
||||
|
||||
+/* Define if you have the pread function. */
|
||||
+#undef HAVE_PREAD
|
||||
+
|
||||
/* Define if you have the putenv function. */
|
||||
#undef HAVE_PUTENV
|
||||
|
||||
@@ -898,6 +901,9 @@
|
||||
/* Define if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
+/* Define if you have the <elf.h> header file. */
|
||||
+#undef HAVE_ELF_H
|
||||
+
|
||||
/* Define if you have the <grp.h> header file. */
|
||||
#undef HAVE_GRP_H
|
||||
|
||||
diff -up bash-4.2-rc2/configure.in.interpreter bash-4.2-rc2/configure.in
|
||||
--- bash-4.2-rc2/configure.in.interpreter 2011-01-16 21:31:12.000000000 +0100
|
||||
+++ bash-4.2-rc2/configure.ac 2011-02-09 08:02:27.000000000 +0100
|
||||
@@ -659,7 +659,7 @@ BASH_HEADER_INTTYPES
|
||||
AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
|
||||
memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
|
||||
stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
|
||||
- regex.h syslog.h ulimit.h)
|
||||
+ regex.h syslog.h ulimit.h elf.h)
|
||||
AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \
|
||||
sys/resource.h sys/param.h sys/socket.h sys/stat.h \
|
||||
sys/time.h sys/times.h sys/types.h sys/wait.h)
|
||||
@@ -723,7 +723,7 @@ dnl checks for system calls
|
||||
AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
|
||||
getpagesize getpeername getrlimit getrusage gettimeofday \
|
||||
kill killpg lstat readlink sbrk select setdtablesize \
|
||||
- setitimer tcgetpgrp uname ulimit waitpid)
|
||||
+ setitimer tcgetpgrp uname ulimit waitpid pread)
|
||||
AC_REPLACE_FUNCS(rename)
|
||||
|
||||
dnl checks for c library functions
|
||||
diff -up bash-4.2-rc2/execute_cmd.c.interpreter bash-4.2-rc2/execute_cmd.c
|
||||
--- bash-4.2-rc2/execute_cmd.c.interpreter 2011-01-20 04:24:47.000000000 +0100
|
||||
+++ bash-4.2-rc2/execute_cmd.c 2011-02-09 07:59:21.000000000 +0100
|
||||
@@ -41,6 +41,10 @@
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
+#ifdef HAVE_ELF_H
|
||||
+# include <elf.h>
|
||||
+#endif
|
||||
+
|
||||
#include "posixtime.h"
|
||||
|
||||
#if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE)
|
||||
@@ -4975,14 +4979,22 @@ shell_execve (command, args, env)
|
||||
{
|
||||
/* The file has the execute bits set, but the kernel refuses to
|
||||
run it for some reason. See why. */
|
||||
+#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
|
||||
+ int fd = open (command, O_RDONLY);
|
||||
+
|
||||
+ if (fd >= 0)
|
||||
+ sample_len = read (fd, sample, sizeof (sample));
|
||||
+ else
|
||||
+ sample_len = -1;
|
||||
+#endif
|
||||
#if defined (HAVE_HASH_BANG_EXEC)
|
||||
- READ_SAMPLE_BUF (command, sample, sample_len);
|
||||
sample[sample_len - 1] = '\0';
|
||||
if (sample_len > 2 && sample[0] == '#' && sample[1] == '!')
|
||||
{
|
||||
char *interp;
|
||||
int ilen;
|
||||
|
||||
+ close (fd);
|
||||
interp = getinterp (sample, sample_len, (int *)NULL);
|
||||
ilen = strlen (interp);
|
||||
errno = i;
|
||||
@@ -4997,6 +5009,136 @@ shell_execve (command, args, env)
|
||||
return (EX_NOEXEC);
|
||||
}
|
||||
#endif
|
||||
+#if defined (HAVE_ELF_H)
|
||||
+ if (i == ENOENT
|
||||
+ && sample_len > EI_NIDENT
|
||||
+ && memcmp (sample, ELFMAG, SELFMAG) == 0)
|
||||
+ {
|
||||
+ off_t offset = -1;
|
||||
+
|
||||
+ /* It is an ELF file. Now determine whether it is dynamically
|
||||
+ linked and if yes, get the offset of the interpreter
|
||||
+ string. */
|
||||
+ if (sample[EI_CLASS] == ELFCLASS32
|
||||
+ && sample_len > sizeof (Elf32_Ehdr))
|
||||
+ {
|
||||
+ Elf32_Ehdr ehdr;
|
||||
+ Elf32_Phdr *phdr;
|
||||
+ int nphdr;
|
||||
+
|
||||
+ /* We have to copy the data since the sample buffer
|
||||
+ might not be aligned correctly to be accessed as
|
||||
+ an Elf32_Ehdr struct. */
|
||||
+ memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
|
||||
+
|
||||
+ nphdr = ehdr.e_phnum;
|
||||
+ phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
||||
+ if (phdr != NULL)
|
||||
+ {
|
||||
+#ifdef HAVE_PREAD
|
||||
+ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
|
||||
+ ehdr.e_phoff);
|
||||
+#else
|
||||
+ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
|
||||
+ sample_len = read (fd, phdr,
|
||||
+ nphdr * ehdr.e_phentsize);
|
||||
+ else
|
||||
+ sample_len = -1;
|
||||
+#endif
|
||||
+ if (sample_len == nphdr * ehdr.e_phentsize)
|
||||
+ while (nphdr-- > 0)
|
||||
+ if (phdr[nphdr].p_type == PT_INTERP)
|
||||
+ {
|
||||
+ offset = phdr[nphdr].p_offset;
|
||||
+ break;
|
||||
+ }
|
||||
+ free (phdr);
|
||||
+ }
|
||||
+ }
|
||||
+ else if (sample[EI_CLASS] == ELFCLASS64
|
||||
+ && sample_len > sizeof (Elf64_Ehdr))
|
||||
+ {
|
||||
+ Elf64_Ehdr ehdr;
|
||||
+ Elf64_Phdr *phdr;
|
||||
+ int nphdr;
|
||||
+
|
||||
+ /* We have to copy the data since the sample buffer
|
||||
+ might not be aligned correctly to be accessed as
|
||||
+ an Elf64_Ehdr struct. */
|
||||
+ memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
|
||||
+
|
||||
+ nphdr = ehdr.e_phnum;
|
||||
+ phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
||||
+ if (phdr != NULL)
|
||||
+ {
|
||||
+#ifdef HAVE_PREAD
|
||||
+ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
|
||||
+ ehdr.e_phoff);
|
||||
+#else
|
||||
+ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
|
||||
+ sample_len = read (fd, phdr,
|
||||
+ nphdr * ehdr.e_phentsize);
|
||||
+ else
|
||||
+ sample_len = -1;
|
||||
+#endif
|
||||
+ if (sample_len == nphdr * ehdr.e_phentsize)
|
||||
+ while (nphdr-- > 0)
|
||||
+ if (phdr[nphdr].p_type == PT_INTERP)
|
||||
+ {
|
||||
+ offset = phdr[nphdr].p_offset;
|
||||
+ break;
|
||||
+ }
|
||||
+ free (phdr);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (offset != -1)
|
||||
+ {
|
||||
+ size_t maxlen = 0;
|
||||
+ size_t actlen = 0;
|
||||
+ char *interp = NULL;
|
||||
+
|
||||
+ do
|
||||
+ {
|
||||
+ if (actlen == maxlen)
|
||||
+ {
|
||||
+ char *newinterp = realloc (interp, maxlen += 200);
|
||||
+ if (newinterp == NULL)
|
||||
+ {
|
||||
+ actlen = 0;
|
||||
+ break;
|
||||
+ }
|
||||
+ interp = newinterp;
|
||||
+
|
||||
+#ifdef HAVE_PREAD
|
||||
+ actlen = pread (fd, interp, maxlen, offset);
|
||||
+#else
|
||||
+ if (lseek (fd, offset, SEEK_SET) != -1)
|
||||
+ actlen = read (fd, interp, maxlen);
|
||||
+ else
|
||||
+ actlen = -1;
|
||||
+#endif
|
||||
+ }
|
||||
+ }
|
||||
+ while (actlen > 0 && memchr (interp, '\0', actlen) == NULL);
|
||||
+
|
||||
+ if (actlen > 0)
|
||||
+ {
|
||||
+ close (fd);
|
||||
+ errno = i;
|
||||
+ sys_error ("%s: %s: bad ELF interpreter", command,
|
||||
+ interp);
|
||||
+ free (interp);
|
||||
+ return (EX_NOEXEC);
|
||||
+ }
|
||||
+
|
||||
+ free (interp);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
|
||||
+ close (fd);
|
||||
+#endif
|
||||
errno = i;
|
||||
file_error (command);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
--- bash-2.05b/builtins/Makefile.in.debuginfo 2003-03-25 17:25:21.000000000 +0000
|
||||
+++ bash-2.05b/builtins/Makefile.in 2003-03-25 17:25:49.000000000 +0000
|
||||
@@ -93,7 +93,6 @@
|
||||
$(RM) $@
|
||||
./$(MKBUILTINS) $(DIRECTDEFINE) $<
|
||||
$(CC) -c $(CCFLAGS) $*.c || ( $(RM) $*.c ; exit 1 )
|
||||
- $(RM) $*.c
|
||||
|
||||
# How to make a .c file from a .def file.
|
||||
.def.c:
|
||||
@@ -0,0 +1,10 @@
|
||||
--- bash-2.05b/doc/builtins.1.manso 2003-02-10 18:58:21.000000000 +0000
|
||||
+++ bash-2.05b/doc/builtins.1 2003-02-10 18:58:28.000000000 +0000
|
||||
@@ -10,6 +10,6 @@
|
||||
ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1)
|
||||
.SH BASH BUILTIN COMMANDS
|
||||
.nr zZ 1
|
||||
-.so bash.1
|
||||
+.so man1/bash.1
|
||||
.SH SEE ALSO
|
||||
bash(1), sh(1)
|
||||
@@ -0,0 +1,11 @@
|
||||
--- bash-2.05b/aclocal.m4.pgrp_sync 2002-06-25 14:45:43.000000000 +0100
|
||||
+++ bash-2.05b/aclocal.m4 2003-01-15 18:17:35.000000000 +0000
|
||||
@@ -1255,7 +1255,7 @@
|
||||
wait(&status);
|
||||
exit(ok ? 0 : 5);
|
||||
}
|
||||
-], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
|
||||
+], bash_cv_pgrp_pipe=yes,bash_cv_pgrp_pipe=yes,
|
||||
[AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
|
||||
bash_cv_pgrp_pipe=no])
|
||||
])
|
||||
@@ -0,0 +1,11 @@
|
||||
--- bash-2.05b/lib/readline/readline.c.oom 2002-03-13 23:10:46.000000000 +0100
|
||||
+++ bash-2.05b/lib/readline/readline.c 2002-08-07 12:02:04.000000000 +0200
|
||||
@@ -817,7 +817,7 @@
|
||||
/* Special case rl_do_lowercase_version (). */
|
||||
if (func == rl_do_lowercase_version)
|
||||
/* Should we do anything special if key == ANYOTHERKEY? */
|
||||
- return (_rl_dispatch (_rl_to_lower (key), map));
|
||||
+ return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
|
||||
|
||||
rl_executing_keymap = map;
|
||||
rl_executing_key = key;
|
||||
@@ -0,0 +1,19 @@
|
||||
--- bash-3.1/Makefile.in.xcc 2005-10-25 19:37:52.000000000 +0100
|
||||
+++ bash-3.1/Makefile.in 2005-12-23 16:11:09.000000000 +0000
|
||||
@@ -68,6 +68,7 @@
|
||||
ARFLAGS = @ARFLAGS@
|
||||
RANLIB = @RANLIB@
|
||||
SIZE = @SIZE@
|
||||
+STRIP = strip
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
@@ -535,7 +536,7 @@
|
||||
@chmod a+rx bashbug
|
||||
|
||||
strip: $(Program) .made
|
||||
- strip $(Program)
|
||||
+ $(STRIP) $(Program)
|
||||
ls -l $(Program)
|
||||
-$(SIZE) $(Program)
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
diff -up bash-4.2/config.h.in.audit bash-4.2/config.h.in
|
||||
--- bash-4.2/config.h.in.audit 2013-01-31 16:26:16.857698992 +0100
|
||||
+++ bash-4.2/config.h.in 2013-01-31 16:26:16.876699255 +0100
|
||||
@@ -1131,6 +1131,14 @@
|
||||
|
||||
/* End additions for lib/intl */
|
||||
|
||||
+
|
||||
+/* Additions for lib/readline */
|
||||
+
|
||||
+/* Define if you have <linux/audit.h> and it defines AUDIT_USER_TTY */
|
||||
+#undef HAVE_DECL_AUDIT_USER_TTY
|
||||
+
|
||||
+/* End additions for lib/readline */
|
||||
+
|
||||
#include "config-bot.h"
|
||||
|
||||
#endif /* _CONFIG_H_ */
|
||||
diff -up bash-4.2/configure.in.audit bash-4.2/configure.in
|
||||
--- bash-4.2/configure.in.audit 2013-01-31 16:26:16.858699005 +0100
|
||||
+++ bash-4.2/configure.ac 2013-01-31 16:26:16.877699269 +0100
|
||||
@@ -888,6 +888,8 @@ BASH_FUNC_DUP2_CLOEXEC_CHECK
|
||||
BASH_SYS_PGRP_SYNC
|
||||
BASH_SYS_SIGNAL_VINTAGE
|
||||
|
||||
+AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
|
||||
+
|
||||
dnl checking for the presence of certain library symbols
|
||||
BASH_SYS_ERRLIST
|
||||
BASH_SYS_SIGLIST
|
||||
diff -up bash-4.2/lib/readline/readline.c.audit bash-4.2/lib/readline/readline.c
|
||||
--- bash-4.2/lib/readline/readline.c.audit 2013-01-31 16:26:16.871699185 +0100
|
||||
+++ bash-4.2/lib/readline/readline.c 2013-01-31 17:24:23.902744860 +0100
|
||||
@@ -55,6 +55,12 @@
|
||||
extern int errno;
|
||||
#endif /* !errno */
|
||||
|
||||
+#if defined (HAVE_DECL_AUDIT_USER_TTY)
|
||||
+# include <sys/socket.h>
|
||||
+# include <linux/audit.h>
|
||||
+# include <linux/netlink.h>
|
||||
+#endif
|
||||
+
|
||||
/* System-specific feature definitions and include files. */
|
||||
#include "rldefs.h"
|
||||
#include "rlmbutil.h"
|
||||
@@ -301,7 +307,48 @@ rl_set_prompt (prompt)
|
||||
rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
|
||||
return 0;
|
||||
}
|
||||
-
|
||||
+
|
||||
+#if defined (HAVE_DECL_AUDIT_USER_TTY)
|
||||
+/* Report STRING to the audit system. */
|
||||
+static void
|
||||
+audit_tty (char *string)
|
||||
+{
|
||||
+ struct sockaddr_nl addr;
|
||||
+ struct msghdr msg;
|
||||
+ struct nlmsghdr nlm;
|
||||
+ struct iovec iov[2];
|
||||
+ size_t size;
|
||||
+ int fd;
|
||||
+
|
||||
+ size = strlen (string) + 1;
|
||||
+ fd = socket (AF_NETLINK, SOCK_RAW, NETLINK_AUDIT);
|
||||
+ if (fd < 0)
|
||||
+ return;
|
||||
+ nlm.nlmsg_len = NLMSG_LENGTH (size);
|
||||
+ nlm.nlmsg_type = AUDIT_USER_TTY;
|
||||
+ nlm.nlmsg_flags = NLM_F_REQUEST;
|
||||
+ nlm.nlmsg_seq = 0;
|
||||
+ nlm.nlmsg_pid = 0;
|
||||
+ iov[0].iov_base = &nlm;
|
||||
+ iov[0].iov_len = sizeof (nlm);
|
||||
+ iov[1].iov_base = string;
|
||||
+ iov[1].iov_len = size;
|
||||
+ addr.nl_family = AF_NETLINK;
|
||||
+ addr.nl_pad = 0;
|
||||
+ addr.nl_pid = 0;
|
||||
+ addr.nl_groups = 0;
|
||||
+ msg.msg_name = &addr;
|
||||
+ msg.msg_namelen = sizeof (addr);
|
||||
+ msg.msg_iov = iov;
|
||||
+ msg.msg_iovlen = 2;
|
||||
+ msg.msg_control = NULL;
|
||||
+ msg.msg_controllen = 0;
|
||||
+ msg.msg_flags = 0;
|
||||
+ (void)sendmsg (fd, &msg, 0);
|
||||
+ close (fd);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
/* Read a line of input. Prompt with PROMPT. An empty PROMPT means
|
||||
none. A return value of NULL means that EOF was encountered. */
|
||||
char *
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -up bash-4.0/config-top.h.ssh_source_bash bash-4.0/config-top.h
|
||||
--- bash-4.0/config-top.h.ssh_source_bash 2009-01-21 15:20:06.000000000 +0100
|
||||
+++ bash-4.0/config-top.h 2009-01-21 15:25:46.000000000 +0100
|
||||
@@ -90,7 +90,7 @@
|
||||
sshd and source the .bashrc if so (like the rshd behavior). This checks
|
||||
for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment,
|
||||
which can be fooled under certain not-uncommon circumstances. */
|
||||
-/* #define SSH_SOURCE_BASHRC */
|
||||
+#define SSH_SOURCE_BASHRC
|
||||
|
||||
/* Define if you want the case-capitalizing operators (~[~]) and the
|
||||
`capcase' variable attribute (declare -c). */
|
||||
@@ -0,0 +1,154 @@
|
||||
diff -up bash-4.0/execute_cmd.c.nobits bash-4.0/execute_cmd.c
|
||||
--- bash-4.0/execute_cmd.c.nobits 2009-08-11 11:53:38.000000000 +0200
|
||||
+++ bash-4.0/execute_cmd.c 2009-08-14 16:18:18.000000000 +0200
|
||||
@@ -4747,6 +4747,7 @@ shell_execve (command, args, env)
|
||||
&& memcmp (sample, ELFMAG, SELFMAG) == 0)
|
||||
{
|
||||
off_t offset = -1;
|
||||
+ int dynamic_nobits = 0;
|
||||
|
||||
/* It is an ELF file. Now determine whether it is dynamically
|
||||
linked and if yes, get the offset of the interpreter
|
||||
@@ -4756,13 +4757,61 @@ shell_execve (command, args, env)
|
||||
{
|
||||
Elf32_Ehdr ehdr;
|
||||
Elf32_Phdr *phdr;
|
||||
- int nphdr;
|
||||
+ Elf32_Shdr *shdr;
|
||||
+ int nphdr, nshdr;
|
||||
|
||||
/* We have to copy the data since the sample buffer
|
||||
might not be aligned correctly to be accessed as
|
||||
an Elf32_Ehdr struct. */
|
||||
memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
|
||||
|
||||
+ nshdr = ehdr.e_shnum;
|
||||
+ shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize);
|
||||
+
|
||||
+ if (shdr != NULL)
|
||||
+ {
|
||||
+#ifdef HAVE_PREAD
|
||||
+ sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
|
||||
+ ehdr.e_shoff);
|
||||
+#else
|
||||
+ if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
|
||||
+ sample_len = read (fd, shdr,
|
||||
+ nshdr * ehdr.e_shentsize);
|
||||
+ else
|
||||
+ sample_len = -1;
|
||||
+#endif
|
||||
+ if (sample_len == nshdr * ehdr.e_shentsize)
|
||||
+ {
|
||||
+ char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size);
|
||||
+ if (strings != NULL)
|
||||
+ {
|
||||
+#ifdef HAVE_PREAD
|
||||
+ sample_len = pread (fd, strings,
|
||||
+ shdr[ehdr.e_shstrndx].sh_size,
|
||||
+ shdr[ehdr.e_shstrndx].sh_offset);
|
||||
+#else
|
||||
+ if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset,
|
||||
+ SEEK_SET) != -1)
|
||||
+ sample_len = read (fd, strings,
|
||||
+ shdr[ehdr.e_shstrndx].sh_size);
|
||||
+ else
|
||||
+ sample_len = -1;
|
||||
+#endif
|
||||
+ if (sample_len == shdr[ehdr.e_shstrndx].sh_size)
|
||||
+ while (nshdr-- > 0)
|
||||
+ if (strcmp (strings + shdr[nshdr].sh_name,
|
||||
+ ".interp") == 0 &&
|
||||
+ shdr[nshdr].sh_type == SHT_NOBITS)
|
||||
+ {
|
||||
+ dynamic_nobits++;
|
||||
+ break;
|
||||
+ }
|
||||
+ free (strings);
|
||||
+ }
|
||||
+ }
|
||||
+ free (shdr);
|
||||
+ }
|
||||
+
|
||||
nphdr = ehdr.e_phnum;
|
||||
phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
||||
if (phdr != NULL)
|
||||
@@ -4792,13 +4841,60 @@ shell_execve (command, args, env)
|
||||
{
|
||||
Elf64_Ehdr ehdr;
|
||||
Elf64_Phdr *phdr;
|
||||
- int nphdr;
|
||||
+ Elf64_Shdr *shdr;
|
||||
+ int nphdr, nshdr;
|
||||
|
||||
/* We have to copy the data since the sample buffer
|
||||
might not be aligned correctly to be accessed as
|
||||
an Elf64_Ehdr struct. */
|
||||
memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
|
||||
|
||||
+ nshdr = ehdr.e_shnum;
|
||||
+ shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize);
|
||||
+ if (shdr != NULL)
|
||||
+ {
|
||||
+#ifdef HAVE_PREAD
|
||||
+ sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
|
||||
+ ehdr.e_shoff);
|
||||
+#else
|
||||
+ if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
|
||||
+ sample_len = read (fd, shdr,
|
||||
+ nshdr * ehdr.e_shentsize);
|
||||
+ else
|
||||
+ sample_len = -1;
|
||||
+#endif
|
||||
+ if (sample_len == nshdr * ehdr.e_shentsize)
|
||||
+ {
|
||||
+ char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size);
|
||||
+ if (strings != NULL)
|
||||
+ {
|
||||
+#ifdef HAVE_PREAD
|
||||
+ sample_len = pread (fd, strings,
|
||||
+ shdr[ehdr.e_shstrndx].sh_size,
|
||||
+ shdr[ehdr.e_shstrndx].sh_offset);
|
||||
+#else
|
||||
+ if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset,
|
||||
+ SEEK_SET) != -1)
|
||||
+ sample_len = read (fd, strings,
|
||||
+ shdr[ehdr.e_shstrndx].sh_size);
|
||||
+ else
|
||||
+ sample_len = -1;
|
||||
+#endif
|
||||
+ if (sample_len == shdr[ehdr.e_shstrndx].sh_size)
|
||||
+ while (nshdr-- > 0)
|
||||
+ if (strcmp (strings + shdr[nshdr].sh_name,
|
||||
+ ".interp") == 0 &&
|
||||
+ shdr[nshdr].sh_type == SHT_NOBITS)
|
||||
+ {
|
||||
+ dynamic_nobits++;
|
||||
+ break;
|
||||
+ }
|
||||
+ free (strings);
|
||||
+ }
|
||||
+ }
|
||||
+ free (shdr);
|
||||
+ }
|
||||
+
|
||||
nphdr = ehdr.e_phnum;
|
||||
phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
||||
if (phdr != NULL)
|
||||
@@ -4858,8 +4954,15 @@ shell_execve (command, args, env)
|
||||
{
|
||||
close (fd);
|
||||
errno = i;
|
||||
- sys_error ("%s: %s: bad ELF interpreter", command,
|
||||
- interp);
|
||||
+ if (dynamic_nobits > 0)
|
||||
+ {
|
||||
+ sys_error ("%s: bad ELF interpreter", command);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ sys_error ("%s: %s: bad ELF interpreter", command,
|
||||
+ interp);
|
||||
+ }
|
||||
free (interp);
|
||||
return (EX_NOEXEC);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -up bash-4.1/config-top.h.broken_pipe bash-4.1/config-top.h
|
||||
--- bash-4.1/config-top.h.broken_pipe 2011-01-06 18:01:30.000000000 +0100
|
||||
+++ bash-4.1/config-top.h 2011-01-06 18:02:14.000000000 +0100
|
||||
@@ -51,7 +51,7 @@
|
||||
/* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins
|
||||
like `echo' and `printf' to report errors when output does not succeed
|
||||
due to EPIPE. */
|
||||
-/* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */
|
||||
+#define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS
|
||||
|
||||
/* The default value of the PATH variable. */
|
||||
#ifndef DEFAULT_PATH_VALUE
|
||||
@@ -0,0 +1,11 @@
|
||||
diff -pruN bash-4.1/jobs.c bash-4.1.patched/jobs.c
|
||||
--- bash-4.1/jobs.c 2009-11-30 03:42:05.000000000 +0530
|
||||
+++ bash-4.1.patched/jobs.c 2012-03-06 16:44:15.706595703 +0530
|
||||
@@ -3037,6 +3037,7 @@ waitchld (wpid, block)
|
||||
pid_t pid;
|
||||
|
||||
int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
|
||||
+ int called_from_sighand = sigchld;
|
||||
static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */
|
||||
|
||||
call_set_current = children_exited = 0;
|
||||
@@ -0,0 +1,24 @@
|
||||
diff -up bash-4.1/examples/loadables/Makefile.in.examples bash-4.1/examples/loadables/Makefile.in
|
||||
--- bash-4.1/examples/loadables/Makefile.in.examples 2010-06-22 16:20:02.000000000 +0200
|
||||
+++ bash-4.1/examples/loadables/Makefile.in 2010-06-22 16:20:41.000000000 +0200
|
||||
@@ -43,7 +43,7 @@ host_os = @host_os@
|
||||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
|
||||
-CFLAGS = @CFLAGS@
|
||||
+CFLAGS = -O2 -g
|
||||
LOCAL_CFLAGS = @LOCAL_CFLAGS@
|
||||
DEFS = @DEFS@
|
||||
LOCAL_DEFS = @LOCAL_DEFS@
|
||||
diff -up bash-4.1/examples/loadables/perl/Makefile.in.examples bash-4.1/examples/loadables/perl/Makefile.in
|
||||
--- bash-4.1/examples/loadables/perl/Makefile.in.examples 2010-06-22 16:20:46.000000000 +0200
|
||||
+++ bash-4.1/examples/loadables/perl/Makefile.in 2010-06-22 16:21:04.000000000 +0200
|
||||
@@ -42,7 +42,7 @@ SHELL = @MAKE_SHELL@
|
||||
|
||||
PERL5 = perl5
|
||||
|
||||
-CFLAGS = @CFLAGS@
|
||||
+CFLAGS = -O2 -g
|
||||
|
||||
#
|
||||
# These values are generated for configure by ${topdir}/support/shobj-conf.
|
||||
@@ -0,0 +1,99 @@
|
||||
diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c
|
||||
--- bash-4.2/execute_cmd.c.coverity 2011-02-24 13:04:35.000000000 +0100
|
||||
+++ bash-4.2/execute_cmd.c 2011-02-24 13:49:13.000000000 +0100
|
||||
@@ -5036,7 +5036,7 @@ shell_execve (command, args, env)
|
||||
Elf32_Ehdr ehdr;
|
||||
Elf32_Phdr *phdr;
|
||||
Elf32_Shdr *shdr;
|
||||
- int nphdr, nshdr;
|
||||
+ Elf32_Half nphdr, nshdr;
|
||||
|
||||
/* We have to copy the data since the sample buffer
|
||||
might not be aligned correctly to be accessed as
|
||||
@@ -5044,12 +5044,12 @@ shell_execve (command, args, env)
|
||||
memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
|
||||
|
||||
nshdr = ehdr.e_shnum;
|
||||
- shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize);
|
||||
+ shdr = (Elf32_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize);
|
||||
|
||||
if (shdr != NULL)
|
||||
{
|
||||
#ifdef HAVE_PREAD
|
||||
- sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
|
||||
+ sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize,
|
||||
ehdr.e_shoff);
|
||||
#else
|
||||
if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
|
||||
@@ -5091,11 +5091,11 @@ shell_execve (command, args, env)
|
||||
}
|
||||
|
||||
nphdr = ehdr.e_phnum;
|
||||
- phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
||||
+ phdr = (Elf32_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize);
|
||||
if (phdr != NULL)
|
||||
{
|
||||
#ifdef HAVE_PREAD
|
||||
- sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
|
||||
+ sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize,
|
||||
ehdr.e_phoff);
|
||||
#else
|
||||
if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
|
||||
@@ -5120,7 +5120,7 @@ shell_execve (command, args, env)
|
||||
Elf64_Ehdr ehdr;
|
||||
Elf64_Phdr *phdr;
|
||||
Elf64_Shdr *shdr;
|
||||
- int nphdr, nshdr;
|
||||
+ Elf32_Half nphdr, nshdr;
|
||||
|
||||
/* We have to copy the data since the sample buffer
|
||||
might not be aligned correctly to be accessed as
|
||||
@@ -5128,11 +5128,11 @@ shell_execve (command, args, env)
|
||||
memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
|
||||
|
||||
nshdr = ehdr.e_shnum;
|
||||
- shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize);
|
||||
+ shdr = (Elf64_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize);
|
||||
if (shdr != NULL)
|
||||
{
|
||||
#ifdef HAVE_PREAD
|
||||
- sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
|
||||
+ sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize,
|
||||
ehdr.e_shoff);
|
||||
#else
|
||||
if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
|
||||
@@ -5174,11 +5174,11 @@ shell_execve (command, args, env)
|
||||
}
|
||||
|
||||
nphdr = ehdr.e_phnum;
|
||||
- phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
|
||||
+ phdr = (Elf64_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize);
|
||||
if (phdr != NULL)
|
||||
{
|
||||
#ifdef HAVE_PREAD
|
||||
- sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
|
||||
+ sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize,
|
||||
ehdr.e_phoff);
|
||||
#else
|
||||
if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
|
||||
@@ -5200,8 +5200,8 @@ shell_execve (command, args, env)
|
||||
|
||||
if (offset != -1)
|
||||
{
|
||||
- size_t maxlen = 0;
|
||||
- size_t actlen = 0;
|
||||
+ ssize_t maxlen = 0;
|
||||
+ ssize_t actlen = 0;
|
||||
char *interp = NULL;
|
||||
|
||||
do
|
||||
@@ -5250,7 +5250,8 @@ shell_execve (command, args, env)
|
||||
}
|
||||
#endif
|
||||
#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
|
||||
- close (fd);
|
||||
+ if (fd >= 0)
|
||||
+ close (fd);
|
||||
#endif
|
||||
errno = i;
|
||||
file_error (command);
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -up bash-4.1/doc/bash.1.manpage_trap bash-4.1/doc/bash.1
|
||||
--- bash-4.1/doc/bash.1.manpage_trap 2012-08-28 10:06:00.561999092 +0200
|
||||
+++ bash-4.1/doc/bash.1 2012-08-28 10:06:24.225304505 +0200
|
||||
@@ -9251,7 +9251,7 @@ being inverted via
|
||||
These are the same conditions obeyed by the \fBerrexit\fP (\fB\-e\fP) option.
|
||||
.if t .sp 0.5
|
||||
.if n .sp 1
|
||||
-Signals ignored upon entry to the shell cannot be trapped or reset.
|
||||
+Signals ignored upon entry to the shell cannot be trapped, reset or listed.
|
||||
Trapped signals that are not being ignored are reset to their original
|
||||
values in a subshell or subshell environment when one is created.
|
||||
The return status is false if any
|
||||
@@ -0,0 +1,36 @@
|
||||
diff -up bash-3.2/config-top.h.logout bash-3.2/config-top.h
|
||||
--- bash-3.2/config-top.h.logout 2011-04-14 08:55:55.000000000 +0200
|
||||
+++ bash-3.2/config-top.h 2011-04-14 08:55:55.000000000 +0200
|
||||
@@ -78,7 +78,7 @@
|
||||
/* #define SYS_BASHRC "/etc/bash.bashrc" */
|
||||
|
||||
/* System-wide .bash_logout for login shells. */
|
||||
-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
|
||||
+#define SYS_BASH_LOGOUT "/etc/bash.bash_logout"
|
||||
|
||||
/* Define this to make non-interactive shells begun with argv[0][0] == '-'
|
||||
run the startup files when not in posix mode. */
|
||||
diff -up bash-3.2/doc/bash.1.logout bash-3.2/doc/bash.1
|
||||
--- bash-3.2/doc/bash.1.logout 2011-04-14 09:16:32.000000000 +0200
|
||||
+++ bash-3.2/doc/bash.1 2011-04-14 11:59:33.000000000 +0200
|
||||
@@ -326,8 +326,8 @@ option may be used when the shell is sta
|
||||
.PP
|
||||
When a login shell exits,
|
||||
.B bash
|
||||
-reads and executes commands from the file \fI~/.bash_logout\fP, if it
|
||||
-exists.
|
||||
+reads and executes commands from the files \fI~/.bash_logout\fP
|
||||
+and \fI/etc/bash.bash_logout\fP, if the files exists.
|
||||
.PP
|
||||
When an interactive shell that is not a login shell is started,
|
||||
.B bash
|
||||
@@ -8814,6 +8814,9 @@ The \fBbash\fP executable
|
||||
.FN /etc/profile
|
||||
The systemwide initialization file, executed for login shells
|
||||
.TP
|
||||
+.FN /etc/bash.bash_logout
|
||||
+The systemwide login shell cleanup file, executed when a login shell exits
|
||||
+.TP
|
||||
.FN ~/.bash_profile
|
||||
The personal initialization file, executed for login shells
|
||||
.TP
|
||||
@@ -0,0 +1,14 @@
|
||||
diff -up bash-4.2/variables.h.size_type bash-4.2/variables.h
|
||||
--- bash-4.2/variables.h.size_type 2012-11-29 10:33:25.109036844 +0100
|
||||
+++ bash-4.2/variables.h 2012-11-29 10:46:12.718530162 +0100
|
||||
@@ -95,8 +95,8 @@ typedef struct variable {
|
||||
|
||||
typedef struct _vlist {
|
||||
SHELL_VAR **list;
|
||||
- int list_size; /* allocated size */
|
||||
- int list_len; /* current number of entries */
|
||||
+ size_t list_size; /* allocated size */
|
||||
+ size_t list_len; /* current number of entries */
|
||||
} VARLIST;
|
||||
|
||||
/* The various attributes that a given variable can have. */
|
||||
@@ -0,0 +1,60 @@
|
||||
commit 41d203e21f94c1b8bfc457606ee633c22da3cf04
|
||||
Author: Chet Ramey <chet.ramey@case.edu>
|
||||
Date: Wed Jun 12 09:29:51 2013 -0400
|
||||
|
||||
commit bash-20130523 snapshot
|
||||
|
||||
diff --git a/trap.c b/trap.c
|
||||
index 1e11d1f..da59b26 100644
|
||||
--- a/trap.c
|
||||
+++ b/trap.c
|
||||
@@ -286,6 +286,9 @@ run_pending_traps ()
|
||||
if (catch_flag == 0) /* simple optimization */
|
||||
return;
|
||||
|
||||
+ if (running_trap > 0)
|
||||
+ return; /* no recursive trap invocations */
|
||||
+
|
||||
catch_flag = trapped_signal_received = 0;
|
||||
|
||||
/* Preserve $? when running trap. */
|
||||
@@ -304,6 +307,8 @@ run_pending_traps ()
|
||||
|
||||
BLOCK_SIGNAL (sig, set, oset);
|
||||
|
||||
+ running_trap = sig + 1;
|
||||
+
|
||||
if (sig == SIGINT)
|
||||
{
|
||||
run_interrupt_trap ();
|
||||
@@ -324,6 +329,7 @@ run_pending_traps ()
|
||||
{
|
||||
/* This can happen when run_pending_traps is called while
|
||||
running a SIGCHLD trap handler. */
|
||||
+ running_trap = 0;
|
||||
UNBLOCK_SIGNAL (oset);
|
||||
continue; /* XXX */
|
||||
}
|
||||
@@ -359,7 +365,14 @@ run_pending_traps ()
|
||||
save_subst_varlist = subst_assign_varlist;
|
||||
subst_assign_varlist = 0;
|
||||
|
||||
+#if defined (JOB_CONTROL)
|
||||
+ save_pipeline (1); /* XXX only provides one save level */
|
||||
+#endif
|
||||
evalstring (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE);
|
||||
+#if defined (JOB_CONTROL)
|
||||
+ restore_pipeline (1);
|
||||
+#endif
|
||||
+
|
||||
restore_token_state (token_state);
|
||||
free (token_state);
|
||||
|
||||
@@ -367,6 +380,7 @@ run_pending_traps ()
|
||||
}
|
||||
|
||||
pending_traps[sig] = 0;
|
||||
+ running_trap = 0;
|
||||
|
||||
UNBLOCK_SIGNAL (oset);
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
diff -up bash-4.2-rc2/doc/bash.1.bashbug bash-4.2-rc2/doc/bash.1
|
||||
--- bash-4.2-rc2/doc/bash.1.bashbug 2011-01-16 21:31:39.000000000 +0100
|
||||
+++ bash-4.2-rc2/doc/bash.1 2011-02-09 08:52:14.000000000 +0100
|
||||
@@ -9857,7 +9857,7 @@ The latest version is always available f
|
||||
.PP
|
||||
Once you have determined that a bug actually exists, use the
|
||||
.I bashbug
|
||||
-command to submit a bug report.
|
||||
+command (from the source package) to submit a bug report.
|
||||
If you have a fix, you are encouraged to mail that as well!
|
||||
Suggestions and `philosophical' bug reports may be mailed
|
||||
to \fIbug-bash@gnu.org\fP or posted to the Usenet
|
||||
@@ -9879,10 +9879,6 @@ A description of the bug behaviour
|
||||
A short script or `recipe' which exercises the bug
|
||||
.PD
|
||||
.PP
|
||||
-.I bashbug
|
||||
-inserts the first three items automatically into the template
|
||||
-it provides for filing a bug report.
|
||||
-.PP
|
||||
Comments and bug reports concerning
|
||||
this manual page should be directed to
|
||||
.IR chet.ramey@case.edu .
|
||||
diff -up bash-4.2-rc2/doc/bashref.texi.bashbug bash-4.2-rc2/doc/bashref.texi
|
||||
--- bash-4.2-rc2/doc/bashref.texi.bashbug 2011-01-16 21:31:57.000000000 +0100
|
||||
+++ bash-4.2-rc2/doc/bashref.texi 2011-02-09 08:47:07.000000000 +0100
|
||||
@@ -7635,7 +7635,7 @@ The latest version of Bash is always ava
|
||||
@uref{ftp://ftp.gnu.org/pub/gnu/bash/}.
|
||||
|
||||
Once you have determined that a bug actually exists, use the
|
||||
-@code{bashbug} command to submit a bug report.
|
||||
+@code{bashbug} command (from the source package) to submit a bug report.
|
||||
If you have a fix, you are encouraged to mail that as well!
|
||||
Suggestions and `philosophical' bug reports may be mailed
|
||||
to @email{bug-bash@@gnu.org} or posted to the Usenet
|
||||
@@ -7657,9 +7657,6 @@ to reproduce it.
|
||||
@end itemize
|
||||
|
||||
@noindent
|
||||
-@code{bashbug} inserts the first three items automatically into
|
||||
-the template it provides for filing a bug report.
|
||||
-
|
||||
Please send all reports concerning this manual to
|
||||
@email{bug-bash@@gnu.org}.
|
||||
|
||||
diff -up bash-4.2-rc2/shell.c.bashbug bash-4.2-rc2/shell.c
|
||||
--- bash-4.2-rc2/shell.c.bashbug 2011-01-02 22:04:51.000000000 +0100
|
||||
+++ bash-4.2-rc2/shell.c 2011-02-09 08:47:07.000000000 +0100
|
||||
@@ -1823,7 +1823,6 @@ show_shell_usage (fp, extra)
|
||||
{
|
||||
fprintf (fp, _("Type `%s -c \"help set\"' for more information about shell options.\n"), shell_name);
|
||||
fprintf (fp, _("Type `%s -c help' for more information about shell builtin commands.\n"), shell_name);
|
||||
- fprintf (fp, _("Use the `bashbug' command to report bugs.\n"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
--- bash-3.1/doc/Makefile.in.infotags 2006-07-12 13:57:18.000000000 +0100
|
||||
+++ bash-3.1/doc/Makefile.in 2006-07-12 13:58:25.000000000 +0100
|
||||
@@ -69,7 +69,6 @@
|
||||
TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html
|
||||
MAN2HTML = ${BUILD_DIR}/support/man2html
|
||||
HTMLPOST = ${srcdir}/htmlpost.sh
|
||||
-INFOPOST = ${srcdir}/infopost.sh
|
||||
QUIETPS = #set this to -q to shut up dvips
|
||||
PAPERSIZE = letter # change to a4 for A4-size paper
|
||||
PSDPI = 600 # could be 300 if you like
|
||||
@@ -146,7 +145,7 @@
|
||||
|
||||
PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps
|
||||
DVIFILES = bashref.dvi bashref.ps
|
||||
-INFOFILES = bashref.info
|
||||
+INFOFILES = bashref.info bash.info
|
||||
MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0
|
||||
HTMLFILES = bashref.html bash.html
|
||||
PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf
|
||||
@@ -167,8 +166,8 @@
|
||||
bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
|
||||
$(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi
|
||||
|
||||
-bash.info: bashref.info
|
||||
- ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \
|
||||
+bash.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
|
||||
+ $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi -o $@
|
||||
|
||||
bash.txt: bash.1
|
||||
bash.ps: bash.1
|
||||
@@ -0,0 +1,311 @@
|
||||
diff -up bash-4.1/builtins.h.requires bash-4.1/builtins.h
|
||||
--- bash-4.1/builtins.h.requires 2009-01-04 20:32:23.000000000 +0100
|
||||
+++ bash-4.1/builtins.h 2010-08-02 17:42:41.000000000 +0200
|
||||
@@ -41,6 +41,8 @@
|
||||
#define SPECIAL_BUILTIN 0x08 /* This is a Posix `special' builtin. */
|
||||
#define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */
|
||||
#define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */
|
||||
+#define REQUIRES_BUILTIN 0x40 /* This builtin requires other files. */
|
||||
+
|
||||
|
||||
#define BASE_INDENT 4
|
||||
|
||||
diff -up bash-4.1/builtins/mkbuiltins.c.requires bash-4.1/builtins/mkbuiltins.c
|
||||
--- bash-4.1/builtins/mkbuiltins.c.requires 2009-01-04 20:32:23.000000000 +0100
|
||||
+++ bash-4.1/builtins/mkbuiltins.c 2010-08-02 17:42:41.000000000 +0200
|
||||
@@ -69,9 +69,15 @@ extern char *strcpy ();
|
||||
#define whitespace(c) (((c) == ' ') || ((c) == '\t'))
|
||||
|
||||
/* Flag values that builtins can have. */
|
||||
+/* These flags are for the C code generator,
|
||||
+ the C which is produced (./builtin.c)
|
||||
+ includes the flags definitions found
|
||||
+ in ../builtins.h */
|
||||
#define BUILTIN_FLAG_SPECIAL 0x01
|
||||
#define BUILTIN_FLAG_ASSIGNMENT 0x02
|
||||
#define BUILTIN_FLAG_POSIX_BUILTIN 0x04
|
||||
+#define BUILTIN_FLAG_REQUIRES 0x08
|
||||
+
|
||||
|
||||
#define BASE_INDENT 4
|
||||
|
||||
@@ -163,10 +169,18 @@ char *posix_builtins[] =
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
+/* The builtin commands that cause requirements on other files. */
|
||||
+static char *requires_builtins[] =
|
||||
+{
|
||||
+ ".", "command", "exec", "source", "inlib",
|
||||
+ (char *)NULL
|
||||
+};
|
||||
+
|
||||
/* Forward declarations. */
|
||||
static int is_special_builtin ();
|
||||
static int is_assignment_builtin ();
|
||||
static int is_posix_builtin ();
|
||||
+static int is_requires_builtin ();
|
||||
|
||||
#if !defined (HAVE_RENAME)
|
||||
static int rename ();
|
||||
@@ -812,6 +826,9 @@ builtin_handler (self, defs, arg)
|
||||
new->flags |= BUILTIN_FLAG_ASSIGNMENT;
|
||||
if (is_posix_builtin (name))
|
||||
new->flags |= BUILTIN_FLAG_POSIX_BUILTIN;
|
||||
+ if (is_requires_builtin (name))
|
||||
+ new->flags |= BUILTIN_FLAG_REQUIRES;
|
||||
+
|
||||
|
||||
array_add ((char *)new, defs->builtins);
|
||||
building_builtin = 1;
|
||||
@@ -1229,11 +1246,12 @@ write_builtins (defs, structfile, extern
|
||||
else
|
||||
fprintf (structfile, "(sh_builtin_func_t *)0x0, ");
|
||||
|
||||
- fprintf (structfile, "%s%s%s%s, %s_doc,\n",
|
||||
+ fprintf (structfile, "%s%s%s%s%s, %s_doc,\n",
|
||||
"BUILTIN_ENABLED | STATIC_BUILTIN",
|
||||
(builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "",
|
||||
(builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "",
|
||||
(builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "",
|
||||
+ (builtin->flags & BUILTIN_FLAG_REQUIRES) ? " | REQUIRES_BUILTIN" : "",
|
||||
document_name (builtin));
|
||||
|
||||
if (inhibit_functions)
|
||||
@@ -1581,6 +1599,13 @@ is_posix_builtin (name)
|
||||
return (_find_in_table (name, posix_builtins));
|
||||
}
|
||||
|
||||
+static int
|
||||
+is_requires_builtin (name)
|
||||
+ char *name;
|
||||
+{
|
||||
+ return (_find_in_table (name, requires_builtins));
|
||||
+}
|
||||
+
|
||||
#if !defined (HAVE_RENAME)
|
||||
static int
|
||||
rename (from, to)
|
||||
diff -up bash-4.1/doc/bash.1.requires bash-4.1/doc/bash.1
|
||||
--- bash-4.1/doc/bash.1.requires 2010-08-02 17:42:41.000000000 +0200
|
||||
+++ bash-4.1/doc/bash.1 2010-08-02 18:09:27.000000000 +0200
|
||||
@@ -231,6 +231,14 @@ The shell becomes restricted (see
|
||||
.B "RESTRICTED SHELL"
|
||||
below).
|
||||
.TP
|
||||
+.B \-\-rpm-requires
|
||||
+Produce the list of files that are required for the
|
||||
+shell script to run. This implies '-n' and is subject
|
||||
+to the same limitations as compile time error checking checking;
|
||||
+Command substitutions, Conditional expressions and
|
||||
+.BR eval
|
||||
+builtin are not parsed so some dependencies may be missed.
|
||||
+.TP
|
||||
.B \-\-verbose
|
||||
Equivalent to \fB\-v\fP.
|
||||
.TP
|
||||
diff -up bash-4.1/doc/bashref.texi.requires bash-4.1/doc/bashref.texi
|
||||
--- bash-4.1/doc/bashref.texi.requires 2010-08-02 17:42:41.000000000 +0200
|
||||
+++ bash-4.1/doc/bashref.texi 2010-08-02 18:11:58.000000000 +0200
|
||||
@@ -5343,6 +5343,13 @@ standard. @xref{Bash POSIX Mode}, for a
|
||||
@item --restricted
|
||||
Make the shell a restricted shell (@pxref{The Restricted Shell}).
|
||||
|
||||
+@item --rpm-requires
|
||||
+Produce the list of files that are required for the
|
||||
+shell script to run. This implies '-n' and is subject
|
||||
+to the same limitations as compile time error checking checking;
|
||||
+Command substitutions, Conditional expressions and @command{eval}
|
||||
+are not parsed so some dependencies may be missed.
|
||||
+
|
||||
@item --verbose
|
||||
Equivalent to @option{-v}. Print shell input lines as they're read.
|
||||
|
||||
diff -up bash-4.1/eval.c.requires bash-4.1/eval.c
|
||||
--- bash-4.1/eval.c.requires 2009-01-04 20:32:26.000000000 +0100
|
||||
+++ bash-4.1/eval.c 2010-08-02 17:42:41.000000000 +0200
|
||||
@@ -53,6 +53,7 @@ extern int last_command_exit_value, stdi
|
||||
extern int need_here_doc;
|
||||
extern int current_command_number, current_command_line_count, line_number;
|
||||
extern int expand_aliases;
|
||||
+extern int rpm_requires;
|
||||
|
||||
#if defined (HAVE_POSIX_SIGNALS)
|
||||
extern sigset_t top_level_mask;
|
||||
@@ -136,7 +137,7 @@ reader_loop ()
|
||||
|
||||
if (read_command () == 0)
|
||||
{
|
||||
- if (interactive_shell == 0 && read_but_dont_execute)
|
||||
+ if (interactive_shell == 0 && (read_but_dont_execute && !rpm_requires))
|
||||
{
|
||||
last_command_exit_value = EXECUTION_SUCCESS;
|
||||
dispose_command (global_command);
|
||||
diff -up bash-4.1/execute_cmd.c.requires bash-4.1/execute_cmd.c
|
||||
--- bash-4.1/execute_cmd.c.requires 2010-08-02 17:42:41.000000000 +0200
|
||||
+++ bash-4.1/execute_cmd.c 2010-08-02 17:42:41.000000000 +0200
|
||||
@@ -503,6 +503,8 @@ async_redirect_stdin ()
|
||||
|
||||
#define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0)
|
||||
|
||||
+extern int rpm_requires;
|
||||
+
|
||||
/* Execute the command passed in COMMAND, perhaps doing it asynchronously.
|
||||
COMMAND is exactly what read_command () places into GLOBAL_COMMAND.
|
||||
ASYNCHROUNOUS, if non-zero, says to do this command in the background.
|
||||
@@ -534,7 +536,13 @@ execute_command_internal (command, async
|
||||
|
||||
if (breaking || continuing)
|
||||
return (last_command_exit_value);
|
||||
- if (command == 0 || read_but_dont_execute)
|
||||
+ if (command == 0 || (read_but_dont_execute && !rpm_requires))
|
||||
+ return (EXECUTION_SUCCESS);
|
||||
+ if (rpm_requires && command->type == cm_function_def)
|
||||
+ return last_command_exit_value =
|
||||
+ execute_intern_function (command->value.Function_def->name,
|
||||
+ command->value.Function_def->command);
|
||||
+ if (read_but_dont_execute)
|
||||
return (EXECUTION_SUCCESS);
|
||||
|
||||
QUIT;
|
||||
@@ -5066,7 +5074,7 @@ execute_intern_function (name, function)
|
||||
|
||||
if (check_identifier (name, posixly_correct) == 0)
|
||||
{
|
||||
- if (posixly_correct && interactive_shell == 0)
|
||||
+ if (posixly_correct && interactive_shell == 0 && rpm_requires == 0)
|
||||
{
|
||||
last_command_exit_value = EX_BADUSAGE;
|
||||
jump_to_top_level (ERREXIT);
|
||||
diff -up bash-4.1/execute_cmd.h.requires bash-4.1/execute_cmd.h
|
||||
--- bash-4.1/execute_cmd.h.requires 2009-01-16 22:20:15.000000000 +0100
|
||||
+++ bash-4.1/execute_cmd.h 2010-08-02 17:42:41.000000000 +0200
|
||||
@@ -22,6 +22,8 @@
|
||||
#define _EXECUTE_CMD_H_
|
||||
|
||||
#include "stdc.h"
|
||||
+#include "variables.h"
|
||||
+#include "command.h"
|
||||
|
||||
extern struct fd_bitmap *new_fd_bitmap __P((int));
|
||||
extern void dispose_fd_bitmap __P((struct fd_bitmap *));
|
||||
diff -up bash-4.1/make_cmd.c.requires bash-4.1/make_cmd.c
|
||||
--- bash-4.1/make_cmd.c.requires 2009-09-11 23:26:12.000000000 +0200
|
||||
+++ bash-4.1/make_cmd.c 2010-08-02 17:42:41.000000000 +0200
|
||||
@@ -42,11 +42,15 @@
|
||||
#include "flags.h"
|
||||
#include "make_cmd.h"
|
||||
#include "dispose_cmd.h"
|
||||
+#include "execute_cmd.h"
|
||||
#include "variables.h"
|
||||
#include "subst.h"
|
||||
#include "input.h"
|
||||
#include "ocache.h"
|
||||
#include "externs.h"
|
||||
+#include "builtins.h"
|
||||
+
|
||||
+#include "builtins/common.h"
|
||||
|
||||
#if defined (JOB_CONTROL)
|
||||
#include "jobs.h"
|
||||
@@ -56,6 +60,10 @@
|
||||
|
||||
extern int line_number, current_command_line_count, parser_state;
|
||||
extern int last_command_exit_value;
|
||||
+extern int rpm_requires;
|
||||
+
|
||||
+static char *alphabet_set = "abcdefghijklmnopqrstuvwxyz"
|
||||
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
|
||||
/* Object caching */
|
||||
sh_obj_cache_t wdcache = {0, 0, 0};
|
||||
@@ -820,6 +828,27 @@ make_coproc_command (name, command)
|
||||
return (make_command (cm_coproc, (SIMPLE_COM *)temp));
|
||||
}
|
||||
|
||||
+static void
|
||||
+output_requirement (deptype, filename)
|
||||
+const char *deptype;
|
||||
+char *filename;
|
||||
+{
|
||||
+ if (strchr(filename, '$') || (filename[0] != '/' && strchr(filename, '/')))
|
||||
+ return;
|
||||
+
|
||||
+ /*
|
||||
+ if the executable is called via variable substitution we can
|
||||
+ not dermine what it is at compile time.
|
||||
+
|
||||
+ if the executable consists only of characters not in the
|
||||
+ alphabet we do not consider it a dependency just an artifact
|
||||
+ of shell parsing (ex "exec < ${infile}").
|
||||
+ */
|
||||
+
|
||||
+ if (strpbrk(filename, alphabet_set))
|
||||
+ printf ("%s(%s)\n", deptype, filename);
|
||||
+}
|
||||
+
|
||||
/* Reverse the word list and redirection list in the simple command
|
||||
has just been parsed. It seems simpler to do this here the one
|
||||
time then by any other method that I can think of. */
|
||||
@@ -837,6 +866,27 @@ clean_simple_command (command)
|
||||
REVERSE_LIST (command->value.Simple->redirects, REDIRECT *);
|
||||
}
|
||||
|
||||
+ if (rpm_requires && command->value.Simple->words)
|
||||
+ {
|
||||
+ char *cmd0;
|
||||
+ char *cmd1;
|
||||
+ struct builtin *b;
|
||||
+
|
||||
+ cmd0 = command->value.Simple->words->word->word;
|
||||
+ b = builtin_address_internal (cmd0, 0);
|
||||
+ cmd1 = 0;
|
||||
+ if (command->value.Simple->words->next)
|
||||
+ cmd1 = command->value.Simple->words->next->word->word;
|
||||
+
|
||||
+ if (b) {
|
||||
+ if ( (b->flags & REQUIRES_BUILTIN) && cmd1)
|
||||
+ output_requirement ("executable", cmd1);
|
||||
+ } else {
|
||||
+ if (!assignment(cmd0, 0))
|
||||
+ output_requirement (find_function(cmd0) ? "function" : "executable", cmd0);
|
||||
+ }
|
||||
+ } /*rpm_requires*/
|
||||
+
|
||||
parser_state &= ~PST_REDIRLIST;
|
||||
return (command);
|
||||
}
|
||||
diff -up bash-4.1/shell.c.requires bash-4.1/shell.c
|
||||
--- bash-4.1/shell.c.requires 2010-08-02 17:42:41.000000000 +0200
|
||||
+++ bash-4.1/shell.c 2010-08-02 17:42:41.000000000 +0200
|
||||
@@ -193,6 +193,9 @@ int have_devfd = 0;
|
||||
/* The name of the .(shell)rc file. */
|
||||
static char *bashrc_file = "~/.bashrc";
|
||||
|
||||
+/* Non-zero if we are finding the scripts requirements. */
|
||||
+int rpm_requires;
|
||||
+
|
||||
/* Non-zero means to act more like the Bourne shell on startup. */
|
||||
static int act_like_sh;
|
||||
|
||||
@@ -251,6 +254,7 @@ static const struct {
|
||||
{ "protected", Int, &protected_mode, (char **)0x0 },
|
||||
#endif
|
||||
{ "rcfile", Charp, (int *)0x0, &bashrc_file },
|
||||
+ { "rpm-requires", Int, &rpm_requires, (char **)0x0 },
|
||||
#if defined (RESTRICTED_SHELL)
|
||||
{ "restricted", Int, &restricted, (char **)0x0 },
|
||||
#endif
|
||||
@@ -485,6 +489,12 @@ main (argc, argv, env)
|
||||
if (dump_translatable_strings)
|
||||
read_but_dont_execute = 1;
|
||||
|
||||
+ if (rpm_requires)
|
||||
+ {
|
||||
+ read_but_dont_execute = 1;
|
||||
+ initialize_shell_builtins ();
|
||||
+ }
|
||||
+
|
||||
if (running_setuid && privileged_mode == 0)
|
||||
disable_priv_mode ();
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- bash-3.0/builtins/setattr.def.setlocale 2005-08-08 12:22:42.000000000 +0100
|
||||
+++ bash-3.0/builtins/setattr.def 2005-08-08 12:25:16.000000000 +0100
|
||||
@@ -423,4 +423,7 @@
|
||||
|
||||
if (var && (exported_p (var) || (attribute & att_exported)))
|
||||
array_needs_making++; /* XXX */
|
||||
+
|
||||
+ if (var)
|
||||
+ stupidly_hack_special_variables (name);
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
diff -up bash-4.2-rc2/tests/exec.right.tty_tests bash-4.2-rc2/tests/exec.right
|
||||
--- bash-4.2-rc2/tests/exec.right.tty_tests 2011-02-09 10:42:48.000000000 +0100
|
||||
+++ bash-4.2-rc2/tests/exec.right 2011-02-09 10:42:59.000000000 +0100
|
||||
@@ -50,7 +50,6 @@ this is ohio-state
|
||||
0
|
||||
1
|
||||
testb
|
||||
-expand_aliases on
|
||||
1
|
||||
1
|
||||
1
|
||||
diff -up bash-4.2-rc2/tests/execscript.tty_tests bash-4.2-rc2/tests/execscript
|
||||
--- bash-4.2-rc2/tests/execscript.tty_tests 2010-12-27 22:01:02.000000000 +0100
|
||||
+++ bash-4.2-rc2/tests/execscript 2011-02-09 10:42:34.000000000 +0100
|
||||
@@ -107,8 +107,6 @@ ${THIS_SH} ./exec6.sub
|
||||
# checks for properly deciding what constitutes an executable file
|
||||
${THIS_SH} ./exec7.sub
|
||||
|
||||
-${THIS_SH} -i ./exec8.sub
|
||||
-
|
||||
${THIS_SH} ./exec9.sub
|
||||
|
||||
true | `echo true` &
|
||||
diff -up bash-4.2-rc2/tests/read.right.tty_tests bash-4.2-rc2/tests/read.right
|
||||
--- bash-4.2-rc2/tests/read.right.tty_tests 2010-12-21 16:49:00.000000000 +0100
|
||||
+++ bash-4.2-rc2/tests/read.right 2011-02-09 10:42:34.000000000 +0100
|
||||
@@ -33,14 +33,6 @@ a = abcdefg
|
||||
a = xyz
|
||||
a = -xyz 123-
|
||||
a = abc
|
||||
-timeout 1: ok
|
||||
-
|
||||
-timeout 2: ok
|
||||
-
|
||||
-./read2.sub: line 23: read: -3: invalid timeout specification
|
||||
-1
|
||||
-
|
||||
-abcde
|
||||
./read3.sub: line 4: read: -1: invalid number
|
||||
abc
|
||||
ab
|
||||
diff -up bash-4.2-rc2/tests/read.tests.tty_tests bash-4.2-rc2/tests/read.tests
|
||||
--- bash-4.2-rc2/tests/read.tests.tty_tests 2008-09-06 19:09:11.000000000 +0200
|
||||
+++ bash-4.2-rc2/tests/read.tests 2011-02-09 10:42:34.000000000 +0100
|
||||
@@ -82,9 +82,6 @@ echo " foo" | { IFS=$':' ; read line; re
|
||||
# test read -d delim behavior
|
||||
${THIS_SH} ./read1.sub
|
||||
|
||||
-# test read -t timeout behavior
|
||||
-${THIS_SH} ./read2.sub
|
||||
-
|
||||
# test read -n nchars behavior
|
||||
${THIS_SH} ./read3.sub
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,152 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||
<PISI>
|
||||
<Source>
|
||||
<Name>bash</Name>
|
||||
<Homepage>http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html</Homepage>
|
||||
<Packager>
|
||||
<Name>Pisi Linux Admins</Name>
|
||||
<Email>admins@pisilinux.org</Email>
|
||||
</Packager>
|
||||
<License>GPLv2</License>
|
||||
<IsA>app:console</IsA>
|
||||
<Summary>The standard GNU Bourne again shell</Summary>
|
||||
<Description>Bash is the GNU Project's Bourne Again SHell, a complete implementation of the IEEE POSIX and Open Group shell specification with interactive command line editing, csh-like features such as history substitution.</Description>
|
||||
<Archive sha1sum="45ac3c5727e7262334f4dfadecdf601b39434e84" type="targz">mirrors://gnu/bash/bash-4.3.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>ncurses-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!-- Official Patches ftp://ftp.cwru.edu/pub/bash/bash-4.3-patches/ -->
|
||||
<Patch level="0" compressionType="gzip">official/bash43-001.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-002.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-003.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-004.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-005.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-006.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-007.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-008.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-009.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-010.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-011.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-012.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-013.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-014.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-015.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-016.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-017.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-018.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-019.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-020.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-021.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-022.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-023.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-024.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-025.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-026.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-027.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-028.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-029.tar.gz</Patch>
|
||||
<Patch level="0" compressionType="gzip">official/bash43-030.tar.gz</Patch>
|
||||
|
||||
<!-- Fedora patches -->
|
||||
<Patch level="1">fedora/bash-2.02-security.patch</Patch>
|
||||
<Patch level="1">fedora/bash-2.03-paths.patch</Patch>
|
||||
<Patch level="1">fedora/bash-2.03-profile.patch</Patch>
|
||||
<Patch level="1">fedora/bash-2.05a-interpreter.patch</Patch>
|
||||
<Patch level="1">fedora/bash-2.05b-debuginfo.patch</Patch>
|
||||
<Patch level="1">fedora/bash-2.05b-manso.patch</Patch>
|
||||
<Patch level="1">fedora/bash-2.05b-pgrp_sync.patch</Patch>
|
||||
<Patch level="1">fedora/bash-2.05b-readline-oom.patch</Patch>
|
||||
<Patch level="1">fedora/bash-2.05b-xcc.patch</Patch>
|
||||
<Patch level="1">fedora/bash-3.2-audit.patch</Patch>
|
||||
<Patch level="1">fedora/bash-3.2-ssh_source_bash.patch</Patch>
|
||||
<Patch level="1">fedora/bash-4.0-nobits.patch</Patch>
|
||||
<Patch level="1">fedora/bash-4.1-broken_pipe.patch</Patch>
|
||||
<Patch level="1">fedora/bash-4.1-defer-sigchld-trap.patch</Patch>
|
||||
<Patch level="1">fedora/bash-4.1-examples.patch</Patch>
|
||||
<Patch level="1">fedora/bash-4.2-coverity.patch</Patch>
|
||||
<Patch level="1">fedora/bash-4.2-manpage_trap.patch</Patch>
|
||||
<Patch level="1">fedora/bash-4.2-rc2-logout.patch</Patch>
|
||||
<Patch level="1">fedora/bash-4.2-size_type.patch</Patch>
|
||||
<Patch level="1">fedora/bash-bashbug.patch</Patch>
|
||||
<Patch level="1">fedora/bash-infotags.patch</Patch>
|
||||
<Patch level="1">fedora/bash-requires.patch</Patch>
|
||||
<Patch level="1">fedora/bash-setlocale.patch</Patch>
|
||||
<Patch level="1">fedora/bash-tty-tests.patch</Patch>
|
||||
<!-- <Patch level="1">fedora/bash-4.2-trap.patch</Patch> -->
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
<Name>bash</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency>ncurses</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="config">/etc</Path>
|
||||
<Path fileType="executable">/bin</Path>
|
||||
<Path fileType="executable">/usr/bin</Path>
|
||||
<Path fileType="doc">/usr/share/doc</Path>
|
||||
<Path fileType="info">/usr/share/info</Path>
|
||||
<Path fileType="man">/usr/share/man</Path>
|
||||
<Path fileType="localedata">/usr/share/locale</Path>
|
||||
</Files>
|
||||
<AdditionalFiles>
|
||||
<AdditionalFile owner="root" permission="0644" target="/etc/bash/bashrc">bashrc</AdditionalFile>
|
||||
<AdditionalFile owner="root" permission="0644" target="/etc/profile.d/command-not-found.sh">command-not-found.sh</AdditionalFile>
|
||||
</AdditionalFiles>
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="7">
|
||||
<Date>2014-10-13</Date>
|
||||
<Version>4.3_p30</Version>
|
||||
<Comment>Update</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="6">
|
||||
<Date>2014-09-27</Date>
|
||||
<Version>4.3_p26</Version>
|
||||
<Comment>Update</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2014-05-11</Date>
|
||||
<Version>4.3_p8</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2014-04-03</Date>
|
||||
<Version>4.3_p8</Version>
|
||||
<Comment>Version bump</Comment>
|
||||
<Name>Serdar Soytetir</Name>
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2013-10-28</Date>
|
||||
<Version>4.2_p45</Version>
|
||||
<Comment>rebuild.</Comment>
|
||||
<Name>Yusuf Aydemir</Name>
|
||||
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2012-11-24</Date>
|
||||
<Version>4.2_p45</Version>
|
||||
<Comment>Update</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2012-11-24</Date>
|
||||
<Version>4.2_p39</Version>
|
||||
<Comment>First release</Comment>
|
||||
<Name>Marcin Bojara</Name>
|
||||
<Email>marcin@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user