From f306fc70a2eb6506bcb3978eeb7a2377f2cbae28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Tue, 23 Feb 2016 19:53:12 +0200 Subject: [PATCH 1/4] index . --- pisi-index.xml | 254 +++++++++++++++++++++++++++++++------- pisi-index.xml.sha1sum | 2 +- pisi-index.xml.xz | Bin 103608 -> 104192 bytes pisi-index.xml.xz.sha1sum | 2 +- 4 files changed, 212 insertions(+), 46 deletions(-) diff --git a/pisi-index.xml b/pisi-index.xml index 7887472c..75328f47 100644 --- a/pisi-index.xml +++ b/pisi-index.xml @@ -567,6 +567,7 @@ xmlto + patches/linux/patch-4.4.2.xz patches/mageia/x86-pci-toshiba-equium-a60-assign-busses.patch patches/mageia/x86-boot-video-80x25-if-break.patch patches/mageia/x86-default_poweroff_up_machines.patch @@ -588,6 +589,13 @@ patches/mageia/block-Make-CFQ-default-to-IOPS-mode-on-SSDs.patch patches/mageia/fs-aufs-4.4.patch patches/mageia/fs-aufs-4.4-modular.patch + patches/mageia/fs-ovl-allow-zero-size-xattr.patch + patches/mageia/fs-ovl-use-a-minimal-buffer-in-ovl_copy_xattr.patch + patches/mageia/fs-ovl-move-super-block-magic-number-to-magic.h.patch + patches/mageia/fs-ovl-root-copy-attr.patch + patches/mageia/fs-ovl-setattr-check-permissions-before-copy-up.patch + patches/mageia/fs-ovl-check-dentry-positiveness-in-ovl_cleanup_whiteou.patch + patches/mageia/fs-xfs-Revert-xfs-clear-PF_NOFREEZE-for-xfsaild-kthread.patch patches/mageia/firewire-ieee1394-module-aliases.patch patches/mageia/char-agp-intel-new-Q57-id.patch patches/mageia/gpu-drm-mach64.patch @@ -623,6 +631,13 @@ patches/mageia/gpu-drm-0107-drm-vc4-Add-support-for-drawing-3D-frames.patch patches/mageia/gpu-drm-0108-drm-vc4-Add-support-for-async-pageflips.patch patches/mageia/gpu-drm-0109-drm-vc4-Add-an-interface-for-capturing-the-GPU-state.patch + patches/mageia/gpu-drm-radeon-Update-radeon_get_vblank_counter_kms.patch + patches/mageia/gpu-drm-radeon-Drop-unnecessary-unsigned-int-0-check.patch + patches/mageia/gpu-drm-No-Op-redundant-calls-to-drm_vblank_off-v2.patch + patches/mageia/gpu-drm-Prevent-vblank-counter-bumps-1-with-active-vblank-clients-v2.patch + patches/mageia/gpu-drm-Fix-drm_vblank_pre_post_modeset-regression-from-Linux-4.4.patch + patches/mageia/gpu-drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vblank_on-v2.patch + patches/mageia/gpu-drm_nouveau_display-Enable-vblank-irqs-after-display-engine-is-on-again.patch patches/mageia/input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch patches/mageia/net-sis190-fix-list-usage.patch patches/mageia/net-netfilter-IFWLOG.patch @@ -631,6 +646,7 @@ patches/mageia/net-netfilter-IFWLOG-2.6.37-buildfix.patch patches/mageia/net-ipv4-netfilter-ipt_IFWLOG-3.6-buildfix.patch patches/mageia/net-netfilter-IFWLOG-3.7-buildfix.patch + patches/mageia/net-netfilter-IFWLOG-remove-unused-label.patch patches/mageia/net-netfilter-psd.patch patches/mageia/net-netfilter-psd-mdv.patch patches/mageia/net-netfilter-psd-2.6.35-buildfix.patch @@ -667,8 +683,6 @@ patches/mageia/3rd-viahss-3.0-buildfix.patch patches/mageia/3rd-rtl8723bs.patch patches/mageia/ahci-add-new-Intel-device-IDs.patch - patches/mageia/ata-libata-disable-forced-PORTS_IMPL-for-AHCI-1.3.patch - patches/mageia/keys-fix-keyring-ref-leak-in-join_session_keyring.patch patches/mageia/arm-0001-dt-bindings-Add-root-properties-for-Raspberry-Pi-2.patch patches/mageia/arm-0002-ARM-bcm2835-Add-a-compat-string-for-bcm2836-machine-.patch patches/mageia/arm-0003-ARM-bcm2835-Add-Kconfig-support-for-bcm2836.patch @@ -739,9 +753,31 @@ + + security + 2016-02-18 + 4.4.2 + Version bump to 4.4.2 https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.2 + Ertuğrul Erata + ertugrulerata@gmail.com + + systemRestart + + + + security + 2016-02-02 + 4.4.1 + Version bump to 4.4.1 https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.1 + Ertuğrul Erata + ertugrulerata@gmail.com + + systemRestart + + security - 2016-01-25 + 2016-01-30 4.4.0 Version bump to 4.4.0,add CVE-2016-0728 patch. Ertuğrul Erata @@ -1565,6 +1601,9 @@ pciutils-devel + + patches/linux/patch-4.4.1.xz + kernel/tools/cpupowertools/pspec.xml @@ -1586,6 +1625,13 @@ + + 2016-02-03 + 4.4.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2016-01-16 4.4.0 @@ -2258,7 +2304,7 @@ This package provides the kernel support for VirtualBox. http://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-5.0.12.tar.xz - kernel-module-headers + kernel-module-headers kernel/drivers/module-virtualbox/pspec.xml @@ -2268,7 +2314,7 @@ noDelta - kernel + kernel module-virtualbox-userspace @@ -2290,6 +2336,13 @@ + + 2016-02-03 + 5.0.12 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + 2016-01-16 5.0.12 @@ -2758,7 +2811,7 @@ kernel-4.2.patch - kernel-module-headers + kernel-module-headers support_kernel-4.0.patch @@ -2771,7 +2824,7 @@ noDelta - kernel + kernel /lib/modules @@ -2783,6 +2836,13 @@ + + 2016-02-03 + 1.59 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + 2016-01-16 1.59 @@ -2879,14 +2939,14 @@ Eski ve yeni optimus teknolojisine sahip dizüstü bilgisyarlarda çalışabilmektedir. https://github.com/Bumblebee-Project/bbswitch/archive/v0.8.tar.gz - kernel-module-headers + kernel-module-headers kernel/drivers/module-bbswitch/pspec.xml module-bbswitch - kernel + kernel /lib/modules @@ -2899,6 +2959,13 @@ + + 2016-02-03 + 0.8 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + 2016-01-16 0.8 @@ -3184,7 +3251,7 @@ Bu paket VirtualBox sunucu makinesi ile misafir sistemler arası fare entegrasyonu ve paylaşımlı dizin desteği için gerekli çekirdek modüllerini içerir. http://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-guest-5.0.12.tar.xz - kernel-module-headers + kernel-module-headers kernel/drivers/module-virtualbox-guest/pspec.xml @@ -3194,7 +3261,7 @@ noDelta - kernel + kernel baselayout module-virtualbox-guest-userspace @@ -3221,6 +3288,13 @@ + + 2016-02-03 + 5.0.12 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2016-01-16 5.0.12 @@ -3661,7 +3735,7 @@ http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_248.tar.gz http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_248.tar.gz - kernel-module-headers + kernel-module-headers patch/linux-40.patch @@ -3680,8 +3754,8 @@ noDelta - kernel - module-broadcom-wl-userspace + kernel + module-broadcom-wl-userspace /lib/modules @@ -3708,6 +3782,13 @@ + + 2016-02-03 + 6.30.223.248 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2016-01-16 6.30.223.248 @@ -4212,6 +4293,7 @@ http://www.docbook.org/xml/4.3/docbook-xml-4.3.zip http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip + http://www.docbook.org/xml/5.0/docbook-5.0.zip office/docbook/docbook-xml/pspec.xml @@ -4232,6 +4314,13 @@ + + 2016-01-28 + 5.0 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + 2014-11-17 4.5 @@ -4277,7 +4366,7 @@ Docbook XSL biçemyaprakları These XSL stylesheets allow you to transform any DocBook XML document to other formats such as HTML, FO and XHTML. Docbook XSL biçemyapraklarını (stylesheets) içerir. - http://sourceforge.net/projects/docbook/files/docbook-xsl/1.78.1/docbook-xsl-1.78.1.tar.bz2 + http://sourceforge.net/projects/docbook/files/docbook-xsl/1.79.1/docbook-xsl-1.79.1.tar.bz2 Makefile @@ -4286,7 +4375,6 @@ docbook-xsl-newmethods.patch docbook-xsl-non-constant-expressions.patch docbook-xsl-list-item-body.patch - docbook-xsl-mandir.patch office/docbook/docbook-xsl/pspec.xml @@ -4304,6 +4392,13 @@ + + 2015-01-28 + 1.79.1 + Version bump + Alihan Öztürk + alihan@pisilinux.org + 2014-11-17 1.78.1 @@ -4401,7 +4496,7 @@ XML ve DocBook için dönüşüm aracı The purpose of xmlto is to convert an XML file to the desired format using whatever means necessary. xmlto uygulamasının amacı verilen bir XML dosyasını istenen bir biçime dönüştürmektir. - https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.26.tar.gz + https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.28.tar.gz libxslt util-linux @@ -4424,6 +4519,13 @@ + + 2014-05-18 + 0.0.28 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + 2014-05-18 0.0.26 @@ -6792,6 +6894,7 @@ glibc-32bit + ntfs-3g.patch upstream/util-linux-ng-2.21-login-lastlog.patch system/base/util-linux/pspec.xml @@ -11457,7 +11560,7 @@ Bibliothek, um Passwörter zu prüfen CrackLib tests passwords to determine whether they match certain security-oriented characteristics, with the purpose of stopping users from choosing passwords that are easy to guess. CrackLib, kullanıcıların kolay tahmin edilebilir parolalar seçmelerini engellemek amacıyla parolaların güvenlik odaklı bazı özelliklere sahip olup olmadıklarını denetler. - mirrors://sourceforge/cracklib/cracklib-2.9.2.tar.gz + mirrors://sourceforge/cracklib/cracklib-2.9.4.tar.gz zlib python @@ -11486,13 +11589,20 @@ cracklib için geliştirme dosyaları system.devel - cracklib + cracklib /usr/include + + 2016-01-28 + 2.9.4 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + 2014-10-31 2.9.2 @@ -12044,7 +12154,7 @@ Standart dosya, metin ve kabuk uygulamaları Utilitaires standards GNU pour fichiers (chmod, cp, dd, dir, ls...), utilitaires texte (sort, tr, head, wc...) et utilitaires d'interpréteur de commande (shell) (whoami, who...) GNU dosya uygulamaları (chmod, cp, dd, dir, ls...), sh uygulamaları (whoami, who,...) ve metin uygulamalarının (sort, tr, head, wc..) birlikteliğinden oluşmaktadır. - http://ftp.gnu.org/gnu/coreutils/coreutils-8.24.tar.xz + http://ftp.gnu.org/gnu/coreutils/coreutils-8.25.tar.xz acl-devel attr-devel @@ -12082,6 +12192,13 @@ + + 2016-01-27 + 8.25 + Version bump. + Stefan Gronewold + groni@pisilinux.org + 2015-08-25 8.24 @@ -13814,15 +13931,10 @@ Statik bağlanmış sistem komutları bütünü busybox is a single binary which includes versions of a large number of system commands, including a shell. busybox, kabuk da dahil olmak üzere çeşitli sistem komutlarını içeren tek bir çalıştırılabilir dosyadır. - http://busybox.net/downloads/busybox-1.22.1.tar.bz2 + http://busybox.net/downloads/busybox-1.24.1.tar.bz2 config - - udhcp-rootpath-rq.patch - suppress-job-control-warning.patch - fix-include.patch - system/base/busybox/pspec.xml @@ -13832,6 +13944,13 @@ + + 2016-01-29 + 1.24.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2014-05-11 1.22.1 @@ -14063,7 +14182,7 @@ Un client daemon DHCP conforme aux RFC2131 et RFC1541. dhcpcd obtient une adresse IP ainsi que d'autres informations depuis le serveur DHCP correspondant, configure l'interface réseau automatiquement et essaie de renouveler le bail selont les RFC2131 et EFC1541 en fonction des options de la ligne de commande. An RFC2131 and RFC1541 compliant DHCP client daemon. dhcpcd gets an IP address and other information from a corresponding DHCP server, configures the network interface automatically, and tries to renew the lease time according to RFC2131 or RFC1541 depending on the command line option. RFC2131 ve RFC1541 uyumlu bir DHCP istemci servisi.dhcpcd ilgili bir DHCP sunucusundan bir IP adresi ve gerekli diğer bilgileri alır, ağ arayüzünü otomatik olarak yapılandırır ve RFC2131 veya RFC1541 komut satırı özelliğine bağlı olarak kiralama zamanını yenilemeyi dener. - http://ftp.osuosl.org/pub/blfs/conglomeration/dhcpcd/dhcpcd-6.8.1.tar.bz2 + http://ftp.osuosl.org/pub/blfs/conglomeration/dhcpcd/dhcpcd-6.10.1.tar.xz system/base/dhcpcd/pspec.xml @@ -14075,10 +14194,18 @@ /sbin /usr/share/doc /usr/share/man + /usr/share/dhcpcd /var/lib/dhcpcd + + 2016-01-28 + 6.10.1 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + 2015-05-03 6.8.1 @@ -14729,7 +14856,7 @@ Userspace setup tool for transparent encryption of block devices using dm-crypt cryptsetup device mapper kullanarak şifrelenmiş dosya sistemleri yaratmak için gerekli bir araçtır. cryptsetup - https://www.kernel.org/pub/linux/utils/cryptsetup/v1.6/cryptsetup-1.6.7.tar.xz + https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/cryptsetup-1.7.0.tar.xz device-mapper-devel libgpg-error-devel @@ -14745,7 +14872,7 @@ cryptsetup util.crypt - libcryptsetup + libcryptsetup popt @@ -14776,7 +14903,7 @@ libcryptsetup için geliştirme dosyaları programming.devel - libcryptsetup + libcryptsetup /usr/include @@ -14790,13 +14917,20 @@ programming.language.python python - libcryptsetup + libcryptsetup /usr/lib/python2.7/site-packages/pycryptsetup.so + + 2016-01-28 + 1.7.0 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + 2015-04-30 1.6.7 @@ -15936,7 +16070,7 @@ Ein Client, der URLs versteht curl is a command line tool for transferring data with URL syntax, supporting various protocols. curl çeşitli protokolleri destekleyen, URL söz dizimini kullanarak uzak sunuculardan veri aktarmak için kullanılan bir komut satırı aracıdır. - http://curl.haxx.se/download/curl-7.42.1.tar.bz2 + http://curl.haxx.se/download/curl-7.47.0.tar.bz2 glibc-devel zlib-devel @@ -15946,7 +16080,6 @@ ca-certificates - curl-krb5flags.patch curl-ac.patch system/base/curl/pspec.xml @@ -15966,6 +16099,7 @@ /usr/share/doc/ /usr/share/man/ /usr/share/curl + /usr/share/zsh curl-devel @@ -15977,7 +16111,7 @@ curl için geliştirme dosyaları system.devel - curl + curl /usr/lib/pkgconfig @@ -15987,6 +16121,13 @@ + + 2016-01-28 + 7.47.0 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + 2015-05-28 7.42.1 @@ -21139,7 +21280,7 @@ Derlenmiş objeleri işlemek için gereken aletler koleksiyonu elfutils contains libraries and utilities to handle ELF objects and is a replacement for libelf. elfutils derlenmiş objeleri işlemek için gereken çeşitli araçlar içerir. - https://fedorahosted.org/releases/e/l/elfutils/0.161/elfutils-0.161.tar.bz2 + https://fedorahosted.org/releases/e/l/elfutils/0.165/elfutils-0.165.tar.bz2 bzip2 xz-devel @@ -21163,6 +21304,13 @@ + + 2016-01-28 + 0.165 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + 2015-04-09 0.161 @@ -21602,15 +21750,12 @@ system.devel Chunky Loop Generator cloog is CLooG is a free software and library to generate code for scanning Z-polyhedra. It is used by the GCC Graphite optimization framework. - http://www.bastoul.net/cloog/pages/download/cloog-0.18.1.tar.gz + http://www.bastoul.net/cloog/pages/download/cloog-0.18.4.tar.gz gmp-devel ppl-devel isl-devel - - cloog-0.18.1-isl-compat.patch - system/devel/cloog/pspec.xml @@ -21630,7 +21775,7 @@ cloog-devel Development files for cloog - cloog + cloog /usr/include @@ -21638,6 +21783,13 @@ + + 2016-01-27 + 0.18.4 + Version bump + Alihan Öztürk + alihan@pisilinux.org + 2014-09-06 0.18.1 @@ -22302,7 +22454,7 @@ system.devel Integer Set Library isl is a library for manipulating sets and relations of integer points bounded by linear constraints. - http://isl.gforge.inria.fr/isl-0.13.tar.bz2 + http://isl.gforge.inria.fr/isl-0.16.1.tar.bz2 gmp-devel @@ -22323,7 +22475,7 @@ Development files for isl isl için geliştirme dosyaları - isl + isl /usr/include @@ -22331,6 +22483,13 @@ + + 2016-01-27 + 0.16.1 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + 2015-05-05 0.13 @@ -23587,7 +23746,7 @@ FreeType2 est un moteur logiciel de fontes conçu pour être petit, efficace, très flexible et portable tout en étant capable de produire une sortie de très haute qualité. Il peut être utilisé dans les librairies graphiques, les serveurs d'affichage, les outils de conversion, les outils de génération d'images textuelles, ainsi que beaucoup d'autres produits. FreeType 2 is a software font engine that is designed to be small, efficient, highly customizable, and portable while capable of producing high-quality output. It can be used in graphics libraries, display servers, font conversion tools, text image generation tools, and many other products as well. FreeType 2; küçük, verimli, özelleştirilebilir, taşınabilir ve yüksek kaliteli çıktı oluşturan bir yazıtipi düzeneğidir. Grafik kütüphaneleri, görüntü sunucuları ve yazıtipi değiştirme araçları gibi birçok üründe kullanılabilir. - mirrors://sourceforge/freetype/freetype-2.6.tar.bz2 + mirrors://sourceforge/freetype/freetype-2.6.2.tar.bz2 zlib-devel bzip2 @@ -23613,7 +23772,7 @@ Development files for freetype freetype için geliştirme dosyaları - freetype + freetype zlib-devel libpng-devel @@ -23645,6 +23804,13 @@ + + 2016-01-28 + 2.6.2 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + 2015-07-29 2.6 diff --git a/pisi-index.xml.sha1sum b/pisi-index.xml.sha1sum index d82acfba..f9222957 100644 --- a/pisi-index.xml.sha1sum +++ b/pisi-index.xml.sha1sum @@ -1 +1 @@ -330a7dd11845dc1f17901b28a26567dc1c2ab223 \ No newline at end of file +afe8f9979f666e213f27ce4e01616f817d91d19c \ No newline at end of file diff --git a/pisi-index.xml.xz b/pisi-index.xml.xz index 6edc955dc6487c7570fccee80f7c128bb388e8fb..2a0c0cf3c6f9b1e5011a547133305702a3d7e268 100644 GIT binary patch delta 100733 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 delta 100145 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

@Y=?{uIrRbR>Scud4Qi=(f7N=KalcjrrUvXG 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 diff --git a/pisi-index.xml.xz.sha1sum b/pisi-index.xml.xz.sha1sum index e7660906..e469e39f 100644 --- a/pisi-index.xml.xz.sha1sum +++ b/pisi-index.xml.xz.sha1sum @@ -1 +1 @@ -fda1dd233e01566eda7672417f23fdf65eae629b \ No newline at end of file +3d81b56768f723d8a75646b10040880842e2355d \ No newline at end of file From 0961ce4f04f32abeb4be554148751dfdfd8d478d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Thu, 25 Feb 2016 23:48:17 +0200 Subject: [PATCH 2/4] libpcre --- system/base/libpcre/pspec.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/system/base/libpcre/pspec.xml b/system/base/libpcre/pspec.xml index d1725719..bdb9999e 100644 --- a/system/base/libpcre/pspec.xml +++ b/system/base/libpcre/pspec.xml @@ -12,7 +12,7 @@ library

Perl-compatible regular expression library The PCRE (Perl Compatible Regular Expressions) library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5. - http://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.bz2 + http://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.bz2 readline-devel @@ -71,6 +71,13 @@ + + 2016-02-25 + 8.38 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2015-01-25 8.36 From ce4ce6411ff28fea9c6582fad12194250177b610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 6 Mar 2016 08:05:59 +0200 Subject: [PATCH 3/4] For kernel-4.4.4 --- .../kernel/files/configs/kernel-x86_64-config | 4 +- .../kernel/files/patches/linux/patch-4.4.4.xz | Bin 0 -> 200972 bytes ...-Intel-Lewisburg-device-IDs-for-SATA.patch | 44 + ...ark-HotPlugCapable-Ports-as-external.patch | 45 + .../patches/mageia/fs-aufs-4.4-modular.patch | 231 +- .../files/patches/mageia/fs-aufs-4.4.patch | 9511 +++++++++-------- .../mageia/fs-ovl-allow-zero-size-xattr.patch | 31 - ...-positiveness-in-ovl_cleanup_whiteou.patch | 44 - .../mageia/fs-ovl-root-copy-attr.patch | 33 - ...ttr-check-permissions-before-copy-up.patch | 65 - ...e-a-minimal-buffer-in-ovl_copy_xattr.patch | 89 - ...lear-PF_NOFREEZE-for-xfsaild-kthread.patch | 39 - ...st_modeset-regression-from-Linux-4.4.patch | 82 - ..._vblank_offdelay-in-drm_vblank_on-v2.patch | 64 - ...redundant-calls-to-drm_vblank_off-v2.patch | 76 - ...umps-1-with-active-vblank-clients-v2.patch | 120 - ...rqs-after-display-engine-is-on-again.patch | 57 - ...Align-ata_device-s-id-on-a-cacheline.patch | 39 + .../libata-fix-HDIO_GET_32BIT-ioctl.patch | 98 + kernel/kernel/files/patches/mageia/series | 48 +- ...m-arm64-kvm-fix-ioctl-error-handling.patch | 51 + ...lock-initialize-max_dev_sectors-to-0.patch | 36 + ...fix-a-use-after-free-error-for-trace.patch | 36 + ...yed-iputs-at-transaction-commit-time.patch | 238 + ...fs-fix-no_space-in-write-and-rm-loop.patch | 47 + ...ut-of-bounds-access-in-lease-parsing.patch | 104 + ...esponse-processing-for-read-requests.patch | 72 + ...acy-clock-domain-on-superh-platforms.patch | 39 + ...out-wc-from-bo-on-unsupported-arches.patch | 46 + ...et-a-default-value-to-blink-interval.patch | 66 + ...uniqueid_to_ino_t-function-for-s390x.patch | 63 + ...round-for-ats-write-permission-check.patch | 78 + ...-device-00-00.0-is-not-iommu-covered.patch | 92 + ...otify_removed_device-in-hotplug-path.patch | 68 + ...ause-for-missed-hardware-breakpoints.patch | 56 + ...-x86-update-tsc-multiplier-on-change.patch | 56 + ...le-mips-kvm-fix-ioctl-error-handling.patch | 49 + ...number-and-return-value-modification.patch | 94 + ...t-retrieves-struct-pcie_port-pointer.patch | 78 + ...oherency-between-d_inode-and-d_flags.patch | 100 + ...stable-vfio-fix-ioctl-error-handling.patch | 116 + kernel/kernel/pspec.xml | 46 +- 42 files changed, 6779 insertions(+), 5572 deletions(-) create mode 100644 kernel/kernel/files/patches/linux/patch-4.4.4.xz create mode 100644 kernel/kernel/files/patches/mageia/ata-Adding-Intel-Lewisburg-device-IDs-for-SATA.patch create mode 100644 kernel/kernel/files/patches/mageia/ata-ahci-don-t-mark-HotPlugCapable-Ports-as-external.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-ovl-allow-zero-size-xattr.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-ovl-check-dentry-positiveness-in-ovl_cleanup_whiteou.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-ovl-root-copy-attr.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-ovl-setattr-check-permissions-before-copy-up.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-ovl-use-a-minimal-buffer-in-ovl_copy_xattr.patch delete mode 100644 kernel/kernel/files/patches/mageia/fs-xfs-Revert-xfs-clear-PF_NOFREEZE-for-xfsaild-kthread.patch delete mode 100644 kernel/kernel/files/patches/mageia/gpu-drm-Fix-drm_vblank_pre_post_modeset-regression-from-Linux-4.4.patch delete mode 100644 kernel/kernel/files/patches/mageia/gpu-drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vblank_on-v2.patch delete mode 100644 kernel/kernel/files/patches/mageia/gpu-drm-No-Op-redundant-calls-to-drm_vblank_off-v2.patch delete mode 100644 kernel/kernel/files/patches/mageia/gpu-drm-Prevent-vblank-counter-bumps-1-with-active-vblank-clients-v2.patch delete mode 100644 kernel/kernel/files/patches/mageia/gpu-drm_nouveau_display-Enable-vblank-irqs-after-display-engine-is-on-again.patch create mode 100644 kernel/kernel/files/patches/mageia/libata-Align-ata_device-s-id-on-a-cacheline.patch create mode 100644 kernel/kernel/files/patches/mageia/libata-fix-HDIO_GET_32BIT-ioctl.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-arm-arm64-kvm-fix-ioctl-error-handling.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-block-initialize-max_dev_sectors-to-0.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-btrfs-async-thread-fix-a-use-after-free-error-for-trace.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-btrfs-fix-deadlock-running-delayed-iputs-at-transaction-commit-time.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-btrfs-fix-no_space-in-write-and-rm-loop.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-cifs-fix-out-of-bounds-access-in-lease-parsing.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-cifs-fix-smb2-interim-response-processing-for-read-requests.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-drivers-sh-restore-legacy-clock-domain-on-superh-platforms.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-drm-amdgpu-mask-out-wc-from-bo-on-unsupported-arches.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-fbcon-set-a-default-value-to-blink-interval.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-fix-cifs_uniqueid_to_ino_t-function-for-s390x.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-iommu-amd-apply-workaround-for-ats-write-permission-check.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-iommu-amd-fix-boot-warning-when-device-00-00.0-is-not-iommu-covered.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-iommu-vt-d-use-bus_notify_removed_device-in-hotplug-path.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-kvm-x86-fix-root-cause-for-missed-hardware-breakpoints.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-kvm-x86-update-tsc-multiplier-on-change.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-mips-kvm-fix-ioctl-error-handling.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-parisc-fix-ptrace-syscall-number-and-return-value-modification.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-pci-keystone-fix-msi-code-that-retrieves-struct-pcie_port-pointer.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-use-d_seq-to-get-coherency-between-d_inode-and-d_flags.patch create mode 100644 kernel/kernel/files/patches/mageia/stable-vfio-fix-ioctl-error-handling.patch diff --git a/kernel/kernel/files/configs/kernel-x86_64-config b/kernel/kernel/files/configs/kernel-x86_64-config index b6092c88..9a624aec 100644 --- a/kernel/kernel/files/configs/kernel-x86_64-config +++ b/kernel/kernel/files/configs/kernel-x86_64-config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 4.4.2 Kernel Configuration +# Linux/x86_64 4.4.4 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -6625,6 +6625,6 @@ CONFIG_ARCH_HAS_MMIO_FLUSH=y # Unofficial 3rd party kernel additions # CONFIG_NDISWRAPPER=m +CONFIG_VIAHSS=m CONFIG_RTL8723BS=m CONFIG_WLAN_SDIO=y -CONFIG_VIAHSS=m diff --git a/kernel/kernel/files/patches/linux/patch-4.4.4.xz b/kernel/kernel/files/patches/linux/patch-4.4.4.xz new file mode 100644 index 0000000000000000000000000000000000000000..f8dad41478a481cb1cea5f43fba73f8f86673ce6 GIT binary patch literal 200972 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 K000001X)^QXV_5y literal 0 HcmV?d00001 diff --git a/kernel/kernel/files/patches/mageia/ata-Adding-Intel-Lewisburg-device-IDs-for-SATA.patch b/kernel/kernel/files/patches/mageia/ata-Adding-Intel-Lewisburg-device-IDs-for-SATA.patch new file mode 100644 index 00000000..96ca0e8b --- /dev/null +++ b/kernel/kernel/files/patches/mageia/ata-Adding-Intel-Lewisburg-device-IDs-for-SATA.patch @@ -0,0 +1,44 @@ +From f5bdd66c705484b4bc77eb914be15c1b7881fae7 Mon Sep 17 00:00:00 2001 +From: Alexandra Yates +Date: Wed, 17 Feb 2016 19:36:20 -0800 +Subject: [PATCH] Adding Intel Lewisburg device IDs for SATA + +This patch complements the list of device IDs previously +added for lewisburg sata. + +Signed-off-by: Alexandra Yates +Signed-off-by: Tejun Heo +Cc: stable@vger.kernel.org +--- + drivers/ata/ahci.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c +index 546a369..b6263b3 100644 +--- a/drivers/ata/ahci.c ++++ b/drivers/ata/ahci.c +@@ -367,15 +367,21 @@ static const struct pci_device_id ahci_pci_tbl[] = { + { PCI_VDEVICE(INTEL, 0xa107), board_ahci }, /* Sunrise Point-H RAID */ + { PCI_VDEVICE(INTEL, 0xa10f), board_ahci }, /* Sunrise Point-H RAID */ + { PCI_VDEVICE(INTEL, 0x2822), board_ahci }, /* Lewisburg RAID*/ ++ { PCI_VDEVICE(INTEL, 0x2823), board_ahci }, /* Lewisburg AHCI*/ + { PCI_VDEVICE(INTEL, 0x2826), board_ahci }, /* Lewisburg RAID*/ ++ { PCI_VDEVICE(INTEL, 0x2827), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa182), board_ahci }, /* Lewisburg AHCI*/ + { PCI_VDEVICE(INTEL, 0xa184), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa186), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa18e), board_ahci }, /* Lewisburg RAID*/ ++ { PCI_VDEVICE(INTEL, 0xa1d2), board_ahci }, /* Lewisburg RAID*/ ++ { PCI_VDEVICE(INTEL, 0xa1d6), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa202), board_ahci }, /* Lewisburg AHCI*/ + { PCI_VDEVICE(INTEL, 0xa204), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa206), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa20e), board_ahci }, /* Lewisburg RAID*/ ++ { PCI_VDEVICE(INTEL, 0xa252), board_ahci }, /* Lewisburg RAID*/ ++ { PCI_VDEVICE(INTEL, 0xa256), board_ahci }, /* Lewisburg RAID*/ + + /* JMicron 360/1/3/5/6, match class to avoid IDE function */ + { PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, +-- +2.7.2 + diff --git a/kernel/kernel/files/patches/mageia/ata-ahci-don-t-mark-HotPlugCapable-Ports-as-external.patch b/kernel/kernel/files/patches/mageia/ata-ahci-don-t-mark-HotPlugCapable-Ports-as-external.patch new file mode 100644 index 00000000..6b53ff17 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/ata-ahci-don-t-mark-HotPlugCapable-Ports-as-external.patch @@ -0,0 +1,45 @@ +From dc8b4afc4a04fac8ee55a19b59f2356a25e7e778 Mon Sep 17 00:00:00 2001 +From: Manuel Lauss +Date: Sat, 27 Feb 2016 16:10:05 +0100 +Subject: [PATCH] ata: ahci: don't mark HotPlugCapable Ports as + external/removable + +The HPCP bit is set by bioses for on-board sata ports either because +they think sata is hotplug capable in general or to allow Windows +to display a "device eject" icon on ports which are routed to an +external connector bracket. + +However in Redhat Bugzilla #1310682, users report that with kernel 4.4, +where this bit test first appeared, a lot of partitions on sata drives +are now mounted automatically. + +This patch should fix redhat and a lot of other distros which +unconditionally automount all devices which have the "removable" +bit set. + +Signed-off-by: Manuel Lauss +Signed-off-by: Tejun Heo +Fixes: 8a3e33cf92c7 ("ata: ahci: find eSATA ports and flag them as removable" changes userspace behavior) +Link: http://lkml.kernel.org/g/56CF35FA.1070500@redhat.com +Cc: stable@vger.kernel.org #v4.4+ +--- + drivers/ata/libahci.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c +index 513b3fa..85ea514 100644 +--- a/drivers/ata/libahci.c ++++ b/drivers/ata/libahci.c +@@ -1168,8 +1168,7 @@ static void ahci_port_init(struct device *dev, struct ata_port *ap, + + /* mark esata ports */ + tmp = readl(port_mmio + PORT_CMD); +- if ((tmp & PORT_CMD_HPCP) || +- ((tmp & PORT_CMD_ESP) && (hpriv->cap & HOST_CAP_SXS))) ++ if ((tmp & PORT_CMD_ESP) && (hpriv->cap & HOST_CAP_SXS)) + ap->pflags |= ATA_PFLAG_EXTERNAL; + } + +-- +2.7.2 + diff --git a/kernel/kernel/files/patches/mageia/fs-aufs-4.4-modular.patch b/kernel/kernel/files/patches/mageia/fs-aufs-4.4-modular.patch index 44d224bc..6d4da033 100644 --- a/kernel/kernel/files/patches/mageia/fs-aufs-4.4-modular.patch +++ b/kernel/kernel/files/patches/mageia/fs-aufs-4.4-modular.patch @@ -1,22 +1,25 @@ fs/aufs/Kconfig | 2 +- fs/dcache.c | 1 + - fs/file_table.c | 2 ++ - fs/inode.c | 1 + + fs/exec.c | 1 + + fs/fcntl.c | 1 + + fs/file_table.c | 4 ++++ fs/namespace.c | 2 ++ fs/notify/group.c | 4 ++++ fs/notify/mark.c | 4 ++++ fs/open.c | 2 ++ fs/read_write.c | 2 ++ fs/splice.c | 2 ++ + fs/xattr.c | 1 + + kernel/task_work.c | 1 + security/commoncap.c | 2 ++ security/device_cgroup.c | 2 ++ security/security.c | 10 ++++++++++ - 13 files changed, 35 insertions(+), 1 deletion(-) + 16 files changed, 40 insertions(+), 1 deletion(-) -diff -Nurp linux-4.4-rc6.aufs/fs/aufs/Kconfig linux-4.4-rc6.aufs.mod/fs/aufs/Kconfig ---- linux-4.4-rc6.aufs/fs/aufs/Kconfig 2015-12-21 19:54:42.973923445 +0200 -+++ linux-4.4-rc6.aufs.mod/fs/aufs/Kconfig 2015-12-21 19:55:29.522275768 +0200 +diff -Nurp linux-4.4.3-aufs/fs/aufs/Kconfig linux-4.4.3-aufs-mod/fs/aufs/Kconfig +--- linux-4.4.3-aufs/fs/aufs/Kconfig 2016-03-02 17:59:37.360498681 +0200 ++++ linux-4.4.3-aufs-mod/fs/aufs/Kconfig 2016-03-03 09:50:41.232631276 +0200 @@ -1,5 +1,5 @@ config AUFS_FS - bool "Aufs (Advanced multi layered unification filesystem) support" @@ -24,9 +27,9 @@ diff -Nurp linux-4.4-rc6.aufs/fs/aufs/Kconfig linux-4.4-rc6.aufs.mod/fs/aufs/Kco help Aufs is a stackable unification filesystem such as Unionfs, which unifies several directories and provides a merged single -diff -Nurp linux-4.4-rc6.aufs/fs/dcache.c linux-4.4-rc6.aufs.mod/fs/dcache.c ---- linux-4.4-rc6.aufs/fs/dcache.c 2015-12-21 19:54:42.986923543 +0200 -+++ linux-4.4-rc6.aufs.mod/fs/dcache.c 2015-12-21 19:55:29.523275775 +0200 +diff -Nurp linux-4.4.3-aufs/fs/dcache.c linux-4.4.3-aufs-mod/fs/dcache.c +--- linux-4.4.3-aufs/fs/dcache.c 2016-03-02 17:59:37.376498796 +0200 ++++ linux-4.4.3-aufs-mod/fs/dcache.c 2016-03-03 09:50:34.633586562 +0200 @@ -1272,6 +1272,7 @@ rename_retry: seq = 1; goto again; @@ -35,39 +38,66 @@ diff -Nurp linux-4.4-rc6.aufs/fs/dcache.c linux-4.4-rc6.aufs.mod/fs/dcache.c /* * Search for at least 1 mount point in the dentry's subdirs. -diff -Nurp linux-4.4-rc6.aufs/fs/file_table.c linux-4.4-rc6.aufs.mod/fs/file_table.c ---- linux-4.4-rc6.aufs/fs/file_table.c 2015-11-02 02:05:25.000000000 +0200 -+++ linux-4.4-rc6.aufs.mod/fs/file_table.c 2015-12-21 19:55:29.523275775 +0200 +diff -Nurp linux-4.4.3-aufs/fs/exec.c linux-4.4.3-aufs-mod/fs/exec.c +--- linux-4.4.3-aufs/fs/exec.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs-mod/fs/exec.c 2016-03-03 09:50:34.633586562 +0200 +@@ -103,6 +103,7 @@ bool path_noexec(const struct path *path + return (path->mnt->mnt_flags & MNT_NOEXEC) || + (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC); + } ++EXPORT_SYMBOL_GPL(path_noexec); + + #ifdef CONFIG_USELIB + /* +diff -Nurp linux-4.4.3-aufs/fs/fcntl.c linux-4.4.3-aufs-mod/fs/fcntl.c +--- linux-4.4.3-aufs/fs/fcntl.c 2016-03-02 17:59:37.376498796 +0200 ++++ linux-4.4.3-aufs-mod/fs/fcntl.c 2016-03-03 09:50:34.633586562 +0200 +@@ -81,6 +81,7 @@ int setfl(int fd, struct file * filp, un + out: + return error; + } ++EXPORT_SYMBOL_GPL(setfl); + + static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, + int force) +diff -Nurp linux-4.4.3-aufs/fs/file_table.c linux-4.4.3-aufs-mod/fs/file_table.c +--- linux-4.4.3-aufs/fs/file_table.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs-mod/fs/file_table.c 2016-03-03 09:50:34.633586562 +0200 @@ -147,6 +147,7 @@ over: } return ERR_PTR(-ENFILE); } -+EXPORT_SYMBOL(get_empty_filp); ++EXPORT_SYMBOL_GPL(get_empty_filp); /** * alloc_file - allocate and initialize a 'struct file' -@@ -308,6 +309,7 @@ void put_filp(struct file *file) +@@ -258,6 +259,7 @@ void flush_delayed_fput(void) + { + delayed_fput(NULL); + } ++EXPORT_SYMBOL_GPL(flush_delayed_fput); + + static DECLARE_DELAYED_WORK(delayed_fput_work, delayed_fput); + +@@ -300,6 +302,7 @@ void __fput_sync(struct file *file) + } + + EXPORT_SYMBOL(fput); ++EXPORT_SYMBOL_GPL(__fput_sync); + + void put_filp(struct file *file) + { +@@ -308,6 +311,7 @@ void put_filp(struct file *file) file_free(file); } } -+EXPORT_SYMBOL(put_filp); ++EXPORT_SYMBOL_GPL(put_filp); void __init files_init(void) { -diff -Nurp linux-4.4-rc6.aufs/fs/inode.c linux-4.4-rc6.aufs.mod/fs/inode.c ---- linux-4.4-rc6.aufs/fs/inode.c 2015-12-21 13:06:55.265034468 +0200 -+++ linux-4.4-rc6.aufs.mod/fs/inode.c 2015-12-21 19:55:29.524275783 +0200 -@@ -1593,6 +1593,7 @@ static int update_time(struct inode *ino - - return update_time(inode, time, flags); - } -+EXPORT_SYMBOL(update_time); - - /** - * touch_atime - update the access time -diff -Nurp linux-4.4-rc6.aufs/fs/namespace.c linux-4.4-rc6.aufs.mod/fs/namespace.c ---- linux-4.4-rc6.aufs/fs/namespace.c 2015-11-02 02:05:25.000000000 +0200 -+++ linux-4.4-rc6.aufs.mod/fs/namespace.c 2015-12-21 19:55:29.525275790 +0200 +diff -Nurp linux-4.4.3-aufs/fs/namespace.c linux-4.4.3-aufs-mod/fs/namespace.c +--- linux-4.4.3-aufs/fs/namespace.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs-mod/fs/namespace.c 2016-03-03 09:50:34.634586569 +0200 @@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *m mnt_dec_writers(real_mount(mnt)); preempt_enable(); @@ -80,13 +110,13 @@ diff -Nurp linux-4.4-rc6.aufs/fs/namespace.c linux-4.4-rc6.aufs.mod/fs/namespace } return 0; } -+EXPORT_SYMBOL(iterate_mounts); ++EXPORT_SYMBOL_GPL(iterate_mounts); static void cleanup_group_ids(struct mount *mnt, struct mount *end) { -diff -Nurp linux-4.4-rc6.aufs/fs/notify/group.c linux-4.4-rc6.aufs.mod/fs/notify/group.c ---- linux-4.4-rc6.aufs/fs/notify/group.c 2015-11-02 02:05:25.000000000 +0200 -+++ linux-4.4-rc6.aufs.mod/fs/notify/group.c 2015-12-21 19:55:29.525275790 +0200 +diff -Nurp linux-4.4.3-aufs/fs/notify/group.c linux-4.4.3-aufs-mod/fs/notify/group.c +--- linux-4.4.3-aufs/fs/notify/group.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs-mod/fs/notify/group.c 2016-03-03 09:50:34.634586569 +0200 @@ -22,6 +22,7 @@ #include #include @@ -99,7 +129,7 @@ diff -Nurp linux-4.4-rc6.aufs/fs/notify/group.c linux-4.4-rc6.aufs.mod/fs/notify { atomic_inc(&group->refcnt); } -+EXPORT_SYMBOL(fsnotify_get_group); ++EXPORT_SYMBOL_GPL(fsnotify_get_group); /* * Drop a reference to a group. Free it if it's through. @@ -107,7 +137,7 @@ diff -Nurp linux-4.4-rc6.aufs/fs/notify/group.c linux-4.4-rc6.aufs.mod/fs/notify if (atomic_dec_and_test(&group->refcnt)) fsnotify_final_destroy_group(group); } -+EXPORT_SYMBOL(fsnotify_put_group); ++EXPORT_SYMBOL_GPL(fsnotify_put_group); /* * Create a new fsnotify_group and hold a reference for the group returned. @@ -115,53 +145,53 @@ diff -Nurp linux-4.4-rc6.aufs/fs/notify/group.c linux-4.4-rc6.aufs.mod/fs/notify return group; } -+EXPORT_SYMBOL(fsnotify_alloc_group); ++EXPORT_SYMBOL_GPL(fsnotify_alloc_group); int fsnotify_fasync(int fd, struct file *file, int on) { -diff -Nurp linux-4.4-rc6.aufs/fs/notify/mark.c linux-4.4-rc6.aufs.mod/fs/notify/mark.c ---- linux-4.4-rc6.aufs/fs/notify/mark.c 2015-11-02 02:05:25.000000000 +0200 -+++ linux-4.4-rc6.aufs.mod/fs/notify/mark.c 2015-12-21 19:55:29.525275790 +0200 +diff -Nurp linux-4.4.3-aufs/fs/notify/mark.c linux-4.4.3-aufs-mod/fs/notify/mark.c +--- linux-4.4.3-aufs/fs/notify/mark.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs-mod/fs/notify/mark.c 2016-03-03 09:50:34.634586569 +0200 @@ -109,6 +109,7 @@ void fsnotify_put_mark(struct fsnotify_m mark->free_mark(mark); } } -+EXPORT_SYMBOL(fsnotify_put_mark); ++EXPORT_SYMBOL_GPL(fsnotify_put_mark); /* Calculate mask of events for a list of marks */ u32 fsnotify_recalc_mask(struct hlist_head *head) -@@ -199,6 +200,7 @@ void fsnotify_free_mark(struct fsnotify_ - if (group->ops->freeing_mark) - group->ops->freeing_mark(mark, group); - } -+EXPORT_SYMBOL(fsnotify_destroy_mark); - - void fsnotify_destroy_mark(struct fsnotify_mark *mark, - struct fsnotify_group *group) -@@ -402,6 +404,7 @@ int fsnotify_add_mark(struct fsnotify_ma +@@ -208,6 +209,7 @@ void fsnotify_destroy_mark(struct fsnoti mutex_unlock(&group->mark_mutex); + fsnotify_free_mark(mark); + } ++EXPORT_SYMBOL_GPL(fsnotify_destroy_mark); + + void fsnotify_destroy_marks(struct hlist_head *head, spinlock_t *lock) + { +@@ -392,6 +394,7 @@ err: + return ret; } -+EXPORT_SYMBOL(fsnotify_add_mark); ++EXPORT_SYMBOL_GPL(fsnotify_add_mark); - /* - * Given a list of marks, find the mark associated with given group. If found + int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group, + struct inode *inode, struct vfsmount *mnt, int allow_dups) @@ -492,6 +495,7 @@ void fsnotify_init_mark(struct fsnotify_ atomic_set(&mark->refcnt, 1); mark->free_mark = free_mark; } -+EXPORT_SYMBOL(fsnotify_init_mark); ++EXPORT_SYMBOL_GPL(fsnotify_init_mark); static int fsnotify_mark_destroy(void *ignored) { -diff -Nurp linux-4.4-rc6.aufs/fs/open.c linux-4.4-rc6.aufs.mod/fs/open.c ---- linux-4.4-rc6.aufs/fs/open.c 2015-11-02 02:05:25.000000000 +0200 -+++ linux-4.4-rc6.aufs.mod/fs/open.c 2015-12-21 19:55:29.526275798 +0200 +diff -Nurp linux-4.4.3-aufs/fs/open.c linux-4.4.3-aufs-mod/fs/open.c +--- linux-4.4.3-aufs/fs/open.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs-mod/fs/open.c 2016-03-03 09:50:34.634586569 +0200 @@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, l mutex_unlock(&dentry->d_inode->i_mutex); return ret; } -+EXPORT_SYMBOL(do_truncate); ++EXPORT_SYMBOL_GPL(do_truncate); long vfs_truncate(struct path *path, loff_t length) { @@ -169,18 +199,18 @@ diff -Nurp linux-4.4-rc6.aufs/fs/open.c linux-4.4-rc6.aufs.mod/fs/open.c } return 0; } -+EXPORT_SYMBOL(open_check_o_direct); ++EXPORT_SYMBOL_GPL(open_check_o_direct); static int do_dentry_open(struct file *f, struct inode *inode, -diff -Nurp linux-4.4-rc6.aufs/fs/read_write.c linux-4.4-rc6.aufs.mod/fs/read_write.c ---- linux-4.4-rc6.aufs/fs/read_write.c 2015-12-21 19:54:42.987923551 +0200 -+++ linux-4.4-rc6.aufs.mod/fs/read_write.c 2015-12-21 19:55:29.526275798 +0200 +diff -Nurp linux-4.4.3-aufs/fs/read_write.c linux-4.4.3-aufs-mod/fs/read_write.c +--- linux-4.4.3-aufs/fs/read_write.c 2016-03-02 17:59:37.377498803 +0200 ++++ linux-4.4.3-aufs-mod/fs/read_write.c 2016-03-03 09:50:34.634586569 +0200 @@ -504,6 +504,7 @@ vfs_readf_t vfs_readf(struct file *file) return new_sync_read; return ERR_PTR(-ENOSYS); } -+EXPORT_SYMBOL(vfs_readf); ++EXPORT_SYMBOL_GPL(vfs_readf); vfs_writef_t vfs_writef(struct file *file) { @@ -188,18 +218,18 @@ diff -Nurp linux-4.4-rc6.aufs/fs/read_write.c linux-4.4-rc6.aufs.mod/fs/read_wri return new_sync_write; return ERR_PTR(-ENOSYS); } -+EXPORT_SYMBOL(vfs_writef); ++EXPORT_SYMBOL_GPL(vfs_writef); ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos) { -diff -Nurp linux-4.4-rc6.aufs/fs/splice.c linux-4.4-rc6.aufs.mod/fs/splice.c ---- linux-4.4-rc6.aufs/fs/splice.c 2015-12-21 19:54:42.987923551 +0200 -+++ linux-4.4-rc6.aufs.mod/fs/splice.c 2015-12-21 19:55:29.526275798 +0200 +diff -Nurp linux-4.4.3-aufs/fs/splice.c linux-4.4.3-aufs-mod/fs/splice.c +--- linux-4.4.3-aufs/fs/splice.c 2016-03-02 17:59:37.377498803 +0200 ++++ linux-4.4.3-aufs-mod/fs/splice.c 2016-03-03 09:50:34.635586575 +0200 @@ -1123,6 +1123,7 @@ long do_splice_from(struct pipe_inode_in return splice_write(pipe, out, ppos, len, flags); } -+EXPORT_SYMBOL(do_splice_from); ++EXPORT_SYMBOL_GPL(do_splice_from); /* * Attempt to initiate a splice from a file to a pipe. @@ -207,31 +237,50 @@ diff -Nurp linux-4.4-rc6.aufs/fs/splice.c linux-4.4-rc6.aufs.mod/fs/splice.c return splice_read(in, ppos, pipe, len, flags); } -+EXPORT_SYMBOL(do_splice_to); ++EXPORT_SYMBOL_GPL(do_splice_to); /** * splice_direct_to_actor - splices data directly between two non-pipes -diff -Nurp linux-4.4-rc6.aufs/security/commoncap.c linux-4.4-rc6.aufs.mod/security/commoncap.c ---- linux-4.4-rc6.aufs/security/commoncap.c 2015-11-02 02:05:25.000000000 +0200 -+++ linux-4.4-rc6.aufs.mod/security/commoncap.c 2015-12-21 19:55:29.527275805 +0200 -@@ -1053,12 +1053,14 @@ int cap_mmap_addr(unsigned long addr) +diff -Nurp linux-4.4.3-aufs/fs/xattr.c linux-4.4.3-aufs-mod/fs/xattr.c +--- linux-4.4.3-aufs/fs/xattr.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs-mod/fs/xattr.c 2016-03-03 09:50:34.635586575 +0200 +@@ -207,6 +207,7 @@ vfs_getxattr_alloc(struct dentry *dentry + *xattr_value = value; + return error; + } ++EXPORT_SYMBOL_GPL(vfs_getxattr_alloc); + + /* Compare an extended attribute value with the given value */ + int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name, +diff -Nurp linux-4.4.3-aufs/kernel/task_work.c linux-4.4.3-aufs-mod/kernel/task_work.c +--- linux-4.4.3-aufs/kernel/task_work.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs-mod/kernel/task_work.c 2016-03-03 09:50:34.635586575 +0200 +@@ -118,3 +118,4 @@ void task_work_run(void) + } while (work); + } + } ++EXPORT_SYMBOL_GPL(task_work_run); +diff -Nurp linux-4.4.3-aufs/security/commoncap.c linux-4.4.3-aufs-mod/security/commoncap.c +--- linux-4.4.3-aufs/security/commoncap.c 2016-03-02 17:42:59.463713410 +0200 ++++ linux-4.4.3-aufs-mod/security/commoncap.c 2016-03-03 09:50:34.635586575 +0200 +@@ -1058,12 +1058,14 @@ int cap_mmap_addr(unsigned long addr) } return ret; } -+EXPORT_SYMBOL(cap_mmap_addr); ++EXPORT_SYMBOL_GPL(cap_mmap_addr); int cap_mmap_file(struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags) { return 0; } -+EXPORT_SYMBOL(cap_mmap_file); ++EXPORT_SYMBOL_GPL(cap_mmap_file); #ifdef CONFIG_SECURITY -diff -Nurp linux-4.4-rc6.aufs/security/device_cgroup.c linux-4.4-rc6.aufs.mod/security/device_cgroup.c ---- linux-4.4-rc6.aufs/security/device_cgroup.c 2015-11-02 02:05:25.000000000 +0200 -+++ linux-4.4-rc6.aufs.mod/security/device_cgroup.c 2015-12-21 19:55:29.527275805 +0200 +diff -Nurp linux-4.4.3-aufs/security/device_cgroup.c linux-4.4.3-aufs-mod/security/device_cgroup.c +--- linux-4.4.3-aufs/security/device_cgroup.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs-mod/security/device_cgroup.c 2016-03-03 09:50:34.635586575 +0200 @@ -7,6 +7,7 @@ #include #include @@ -244,18 +293,18 @@ diff -Nurp linux-4.4-rc6.aufs/security/device_cgroup.c linux-4.4-rc6.aufs.mod/se return __devcgroup_check_permission(type, imajor(inode), iminor(inode), access); } -+EXPORT_SYMBOL(__devcgroup_inode_permission); ++EXPORT_SYMBOL_GPL(__devcgroup_inode_permission); int devcgroup_inode_mknod(int mode, dev_t dev) { -diff -Nurp linux-4.4-rc6.aufs/security/security.c linux-4.4-rc6.aufs.mod/security/security.c ---- linux-4.4-rc6.aufs/security/security.c 2015-11-02 02:05:25.000000000 +0200 -+++ linux-4.4-rc6.aufs.mod/security/security.c 2015-12-21 19:55:29.528275813 +0200 +diff -Nurp linux-4.4.3-aufs/security/security.c linux-4.4.3-aufs-mod/security/security.c +--- linux-4.4.3-aufs/security/security.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs-mod/security/security.c 2016-03-03 09:50:34.636586582 +0200 @@ -433,6 +433,7 @@ int security_path_rmdir(struct path *dir return 0; return call_int_hook(path_rmdir, 0, dir, dentry); } -+EXPORT_SYMBOL(security_path_rmdir); ++EXPORT_SYMBOL_GPL(security_path_rmdir); int security_path_unlink(struct path *dir, struct dentry *dentry) { @@ -263,7 +312,7 @@ diff -Nurp linux-4.4-rc6.aufs/security/security.c linux-4.4-rc6.aufs.mod/securit return 0; return call_int_hook(path_symlink, 0, dir, dentry, old_name); } -+EXPORT_SYMBOL(security_path_symlink); ++EXPORT_SYMBOL_GPL(security_path_symlink); int security_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) @@ -271,7 +320,7 @@ diff -Nurp linux-4.4-rc6.aufs/security/security.c linux-4.4-rc6.aufs.mod/securit return 0; return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); } -+EXPORT_SYMBOL(security_path_link); ++EXPORT_SYMBOL_GPL(security_path_link); int security_path_rename(struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry, @@ -279,7 +328,7 @@ diff -Nurp linux-4.4-rc6.aufs/security/security.c linux-4.4-rc6.aufs.mod/securit return 0; return call_int_hook(path_truncate, 0, path); } -+EXPORT_SYMBOL(security_path_truncate); ++EXPORT_SYMBOL_GPL(security_path_truncate); int security_path_chmod(struct path *path, umode_t mode) { @@ -287,7 +336,7 @@ diff -Nurp linux-4.4-rc6.aufs/security/security.c linux-4.4-rc6.aufs.mod/securit return 0; return call_int_hook(path_chmod, 0, path, mode); } -+EXPORT_SYMBOL(security_path_chmod); ++EXPORT_SYMBOL_GPL(security_path_chmod); int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) { @@ -295,7 +344,7 @@ diff -Nurp linux-4.4-rc6.aufs/security/security.c linux-4.4-rc6.aufs.mod/securit return 0; return call_int_hook(path_chown, 0, path, uid, gid); } -+EXPORT_SYMBOL(security_path_chown); ++EXPORT_SYMBOL_GPL(security_path_chown); int security_path_chroot(struct path *path) { @@ -303,7 +352,7 @@ diff -Nurp linux-4.4-rc6.aufs/security/security.c linux-4.4-rc6.aufs.mod/securit return 0; return call_int_hook(inode_readlink, 0, dentry); } -+EXPORT_SYMBOL(security_inode_readlink); ++EXPORT_SYMBOL_GPL(security_inode_readlink); int security_inode_follow_link(struct dentry *dentry, struct inode *inode, bool rcu) @@ -311,7 +360,7 @@ diff -Nurp linux-4.4-rc6.aufs/security/security.c linux-4.4-rc6.aufs.mod/securit return 0; return call_int_hook(inode_permission, 0, inode, mask); } -+EXPORT_SYMBOL(security_inode_permission); ++EXPORT_SYMBOL_GPL(security_inode_permission); int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { @@ -319,7 +368,7 @@ diff -Nurp linux-4.4-rc6.aufs/security/security.c linux-4.4-rc6.aufs.mod/securit return fsnotify_perm(file, mask); } -+EXPORT_SYMBOL(security_file_permission); ++EXPORT_SYMBOL_GPL(security_file_permission); int security_file_alloc(struct file *file) { @@ -327,7 +376,7 @@ diff -Nurp linux-4.4-rc6.aufs/security/security.c linux-4.4-rc6.aufs.mod/securit return ret; return ima_file_mmap(file, prot); } -+EXPORT_SYMBOL(security_mmap_file); ++EXPORT_SYMBOL_GPL(security_mmap_file); int security_mmap_addr(unsigned long addr) { diff --git a/kernel/kernel/files/patches/mageia/fs-aufs-4.4.patch b/kernel/kernel/files/patches/mageia/fs-aufs-4.4.patch index dde11710..fc6f4fdc 100644 --- a/kernel/kernel/files/patches/mageia/fs-aufs-4.4.patch +++ b/kernel/kernel/files/patches/mageia/fs-aufs-4.4.patch @@ -1,120 +1,120 @@ - Documentation/ABI/testing/debugfs-aufs | 50 + - Documentation/ABI/testing/sysfs-aufs | 31 + - Documentation/filesystems/aufs/README | 383 ++++ - Documentation/filesystems/aufs/design/01intro.txt | 157 ++ - Documentation/filesystems/aufs/design/02struct.txt | 245 +++ - .../filesystems/aufs/design/03atomic_open.txt | 72 + - Documentation/filesystems/aufs/design/03lookup.txt | 100 ++ - Documentation/filesystems/aufs/design/04branch.txt | 61 + - .../filesystems/aufs/design/05wbr_policy.txt | 51 + - Documentation/filesystems/aufs/design/06fhsm.txt | 105 ++ - Documentation/filesystems/aufs/design/06mmap.txt | 59 + - Documentation/filesystems/aufs/design/06xattr.txt | 81 + - Documentation/filesystems/aufs/design/07export.txt | 45 + - Documentation/filesystems/aufs/design/08shwh.txt | 39 + - Documentation/filesystems/aufs/design/10dynop.txt | 34 + - MAINTAINERS | 13 + - drivers/block/loop.c | 18 + - fs/Kconfig | 1 + - fs/Makefile | 1 + - fs/aufs/Kconfig | 185 ++ - fs/aufs/Makefile | 36 + - fs/aufs/aufs.h | 46 + - fs/aufs/branch.c | 1394 +++++++++++++++ - fs/aufs/branch.h | 266 +++ - fs/aufs/cpup.c | 1306 ++++++++++++++ - fs/aufs/cpup.h | 81 + - fs/aufs/dbgaufs.c | 419 +++++ - fs/aufs/dbgaufs.h | 35 + - fs/aufs/dcsub.c | 211 +++ - fs/aufs/dcsub.h | 123 ++ - fs/aufs/debug.c | 425 +++++ - fs/aufs/debug.h | 212 +++ - fs/aufs/dentry.c | 1123 ++++++++++++ - fs/aufs/dentry.h | 221 +++ - fs/aufs/dinfo.c | 537 ++++++ - fs/aufs/dir.c | 740 ++++++++ - fs/aufs/dir.h | 118 ++ - fs/aufs/dynop.c | 356 ++++ - fs/aufs/dynop.h | 61 + - fs/aufs/export.c | 819 +++++++++ - fs/aufs/f_op.c | 725 ++++++++ - fs/aufs/fhsm.c | 412 +++++ - fs/aufs/file.c | 831 +++++++++ - fs/aufs/file.h | 278 +++ - fs/aufs/finfo.c | 143 ++ - fs/aufs/fstype.h | 387 ++++ - fs/aufs/hfsnotify.c | 275 +++ - fs/aufs/hfsplus.c | 43 + - fs/aufs/hnotify.c | 697 ++++++++ - fs/aufs/i_op.c | 1471 ++++++++++++++++ - fs/aufs/i_op_add.c | 919 ++++++++++ - fs/aufs/i_op_del.c | 497 ++++++ - fs/aufs/i_op_ren.c | 1002 +++++++++++ - fs/aufs/iinfo.c | 264 +++ - fs/aufs/inode.c | 515 ++++++ - fs/aufs/inode.h | 672 +++++++ - fs/aufs/ioctl.c | 206 +++ - fs/aufs/loop.c | 133 ++ - fs/aufs/loop.h | 39 + - fs/aufs/magic.mk | 30 + - fs/aufs/module.c | 207 +++ - fs/aufs/module.h | 91 + - fs/aufs/mvdown.c | 690 ++++++++ - fs/aufs/opts.c | 1846 ++++++++++++++++++++ - fs/aufs/opts.h | 198 +++ - fs/aufs/plink.c | 515 ++++++ - fs/aufs/poll.c | 39 + - fs/aufs/posix_acl.c | 86 + - fs/aufs/procfs.c | 156 ++ - fs/aufs/rdu.c | 375 ++++ - fs/aufs/rwsem.h | 178 ++ - fs/aufs/sbinfo.c | 353 ++++ - fs/aufs/spl.h | 98 ++ - fs/aufs/super.c | 1026 +++++++++++ - fs/aufs/super.h | 628 +++++++ - fs/aufs/sysaufs.c | 91 + - fs/aufs/sysaufs.h | 88 + - fs/aufs/sysfs.c | 340 ++++ - fs/aufs/sysrq.c | 144 ++ - fs/aufs/vdir.c | 875 ++++++++++ - fs/aufs/vfsub.c | 835 +++++++++ - fs/aufs/vfsub.h | 274 +++ - fs/aufs/wbr_policy.c | 752 ++++++++ - fs/aufs/whout.c | 1047 +++++++++++ - fs/aufs/whout.h | 72 + - fs/aufs/wkq.c | 200 +++ - fs/aufs/wkq.h | 78 + - fs/aufs/xattr.c | 331 ++++ - fs/aufs/xino.c | 1283 ++++++++++++++ - fs/dcache.c | 2 +- - fs/proc/base.c | 2 +- - fs/proc/nommu.c | 5 +- - fs/proc/task_mmu.c | 7 +- - fs/proc/task_nommu.c | 5 +- - fs/read_write.c | 22 + - fs/splice.c | 10 +- - include/linux/file.h | 1 + - include/linux/fs.h | 6 + - include/linux/mm.h | 22 + - include/linux/mm_types.h | 2 + - include/linux/splice.h | 6 + - include/uapi/linux/Kbuild | 1 + - include/uapi/linux/aufs_type.h | 406 +++++ - kernel/fork.c | 2 +- - mm/Makefile | 2 +- - mm/filemap.c | 2 +- - mm/memory.c | 2 +- - mm/mmap.c | 17 +- - mm/nommu.c | 10 +- - mm/prfile.c | 86 + - 110 files changed, 33284 insertions(+), 29 deletions(-) -diff --git a/Documentation/ABI/testing/debugfs-aufs b/Documentation/ABI/testing/debugfs-aufs -new file mode 100644 -index 0000000..99642d1 ---- /dev/null -+++ b/Documentation/ABI/testing/debugfs-aufs + Documentation/ABI/testing/debugfs-aufs | 50 + Documentation/ABI/testing/sysfs-aufs | 31 + Documentation/filesystems/aufs/README | 391 +++ + Documentation/filesystems/aufs/design/01intro.txt | 157 + + Documentation/filesystems/aufs/design/02struct.txt | 245 ++ + Documentation/filesystems/aufs/design/03atomic_open.txt | 72 + Documentation/filesystems/aufs/design/03lookup.txt | 100 + Documentation/filesystems/aufs/design/04branch.txt | 61 + Documentation/filesystems/aufs/design/05wbr_policy.txt | 51 + Documentation/filesystems/aufs/design/06fhsm.txt | 105 + Documentation/filesystems/aufs/design/06mmap.txt | 59 + Documentation/filesystems/aufs/design/06xattr.txt | 81 + Documentation/filesystems/aufs/design/07export.txt | 45 + Documentation/filesystems/aufs/design/08shwh.txt | 39 + Documentation/filesystems/aufs/design/10dynop.txt | 34 + MAINTAINERS | 13 + drivers/block/loop.c | 18 + fs/Kconfig | 1 + fs/Makefile | 1 + fs/aufs/Kconfig | 185 + + fs/aufs/Makefile | 36 + fs/aufs/aufs.h | 46 + fs/aufs/branch.c | 1394 ++++++++++++ + fs/aufs/branch.h | 266 ++ + fs/aufs/cpup.c | 1366 +++++++++++ + fs/aufs/cpup.h | 81 + fs/aufs/dbgaufs.c | 419 +++ + fs/aufs/dbgaufs.h | 35 + fs/aufs/dcsub.c | 211 + + fs/aufs/dcsub.h | 123 + + fs/aufs/debug.c | 425 +++ + fs/aufs/debug.h | 212 + + fs/aufs/dentry.c | 1123 +++++++++ + fs/aufs/dentry.h | 221 + + fs/aufs/dinfo.c | 537 ++++ + fs/aufs/dir.c | 745 ++++++ + fs/aufs/dir.h | 118 + + fs/aufs/dynop.c | 356 +++ + fs/aufs/dynop.h | 61 + fs/aufs/export.c | 819 +++++++ + fs/aufs/f_op.c | 759 ++++++ + fs/aufs/fhsm.c | 412 +++ + fs/aufs/file.c | 831 +++++++ + fs/aufs/file.h | 278 ++ + fs/aufs/finfo.c | 143 + + fs/aufs/fstype.h | 387 +++ + fs/aufs/hfsnotify.c | 275 ++ + fs/aufs/hfsplus.c | 43 + fs/aufs/hnotify.c | 697 ++++++ + fs/aufs/i_op.c | 1477 ++++++++++++ + fs/aufs/i_op_add.c | 919 +++++++ + fs/aufs/i_op_del.c | 497 ++++ + fs/aufs/i_op_ren.c | 1002 ++++++++ + fs/aufs/iinfo.c | 264 ++ + fs/aufs/inode.c | 514 ++++ + fs/aufs/inode.h | 672 +++++ + fs/aufs/ioctl.c | 206 + + fs/aufs/loop.c | 133 + + fs/aufs/loop.h | 39 + fs/aufs/magic.mk | 30 + fs/aufs/module.c | 207 + + fs/aufs/module.h | 92 + fs/aufs/mvdown.c | 690 +++++ + fs/aufs/opts.c | 1846 ++++++++++++++++ + fs/aufs/opts.h | 198 + + fs/aufs/plink.c | 515 ++++ + fs/aufs/poll.c | 39 + fs/aufs/posix_acl.c | 85 + fs/aufs/procfs.c | 156 + + fs/aufs/rdu.c | 375 +++ + fs/aufs/rwsem.h | 178 + + fs/aufs/sbinfo.c | 353 +++ + fs/aufs/spl.h | 98 + fs/aufs/super.c | 1026 ++++++++ + fs/aufs/super.h | 628 +++++ + fs/aufs/sysaufs.c | 91 + fs/aufs/sysaufs.h | 88 + fs/aufs/sysfs.c | 340 ++ + fs/aufs/sysrq.c | 144 + + fs/aufs/vdir.c | 875 +++++++ + fs/aufs/vfsub.c | 853 +++++++ + fs/aufs/vfsub.h | 295 ++ + fs/aufs/wbr_policy.c | 752 ++++++ + fs/aufs/whout.c | 1047 +++++++++ + fs/aufs/whout.h | 72 + fs/aufs/wkq.c | 200 + + fs/aufs/wkq.h | 78 + fs/aufs/xattr.c | 331 ++ + fs/aufs/xino.c | 1305 +++++++++++ + fs/dcache.c | 2 + fs/fcntl.c | 4 + fs/proc/base.c | 2 + fs/proc/nommu.c | 5 + fs/proc/task_mmu.c | 7 + fs/proc/task_nommu.c | 5 + fs/read_write.c | 22 + fs/splice.c | 10 + include/linux/file.h | 1 + include/linux/fs.h | 8 + include/linux/mm.h | 22 + include/linux/mm_types.h | 2 + include/linux/splice.h | 6 + include/uapi/linux/Kbuild | 1 + include/uapi/linux/aufs_type.h | 406 +++ + kernel/fork.c | 2 + mm/Makefile | 2 + mm/filemap.c | 2 + mm/memory.c | 2 + mm/mmap.c | 17 + mm/nommu.c | 10 + mm/prfile.c | 86 + 111 files changed, 33462 insertions(+), 30 deletions(-) + +diff -Nurp linux-4.4.3/Documentation/ABI/testing/debugfs-aufs linux-4.4.3-aufs/Documentation/ABI/testing/debugfs-aufs +--- linux-4.4.3/Documentation/ABI/testing/debugfs-aufs 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/ABI/testing/debugfs-aufs 2016-03-02 17:59:37.356498653 +0200 @@ -0,0 +1,50 @@ +What: /debug/aufs/si_/ +Date: March 2009 @@ -166,11 +166,9 @@ index 0000000..99642d1 + be created. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. -diff --git a/Documentation/ABI/testing/sysfs-aufs b/Documentation/ABI/testing/sysfs-aufs -new file mode 100644 -index 0000000..82f9518 ---- /dev/null -+++ b/Documentation/ABI/testing/sysfs-aufs +diff -Nurp linux-4.4.3/Documentation/ABI/testing/sysfs-aufs linux-4.4.3-aufs/Documentation/ABI/testing/sysfs-aufs +--- linux-4.4.3/Documentation/ABI/testing/sysfs-aufs 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/ABI/testing/sysfs-aufs 2016-03-02 17:59:37.356498653 +0200 @@ -0,0 +1,31 @@ +What: /sys/fs/aufs/si_/ +Date: March 2009 @@ -203,403 +201,12 @@ index 0000000..82f9518 + even if it is the default path. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. -diff --git a/Documentation/filesystems/aufs/README b/Documentation/filesystems/aufs/README -new file mode 100644 -index 0000000..2915102 ---- /dev/null -+++ b/Documentation/filesystems/aufs/README -@@ -0,0 +1,383 @@ -+ -+Aufs4 -- advanced multi layered unification filesystem version 4.x -+http://aufs.sf.net -+Junjiro R. Okajima -+ -+ -+0. Introduction -+---------------------------------------- -+In the early days, aufs was entirely re-designed and re-implemented -+Unionfs Version 1.x series. Adding many original ideas, approaches, -+improvements and implementations, it becomes totally different from -+Unionfs while keeping the basic features. -+Recently, Unionfs Version 2.x series begin taking some of the same -+approaches to aufs1's. -+Unionfs is being developed by Professor Erez Zadok at Stony Brook -+University and his team. -+ -+Aufs4 supports linux-4.0 and later, and for linux-3.x series try aufs3. -+If you want older kernel version support, try aufs2-2.6.git or -+aufs2-standalone.git repository, aufs1 from CVS on SourceForge. -+ -+Note: it becomes clear that "Aufs was rejected. Let's give it up." -+ According to Christoph Hellwig, linux rejects all union-type -+ filesystems but UnionMount. -+ -+ -+PS. Al Viro seems have a plan to merge aufs as well as overlayfs and -+ UnionMount, and he pointed out an issue around a directory mutex -+ lock and aufs addressed it. But it is still unsure whether aufs will -+ be merged (or any other union solution). -+ -+ -+ -+1. Features -+---------------------------------------- -+- unite several directories into a single virtual filesystem. The member -+ directory is called as a branch. -+- you can specify the permission flags to the branch, which are 'readonly', -+ 'readwrite' and 'whiteout-able.' -+- by upper writable branch, internal copyup and whiteout, files/dirs on -+ readonly branch are modifiable logically. -+- dynamic branch manipulation, add, del. -+- etc... -+ -+Also there are many enhancements in aufs, such as: -+- test only the highest one for the directory permission (dirperm1) -+- copyup on open (coo=) -+- 'move' policy for copy-up between two writable branches, after -+ checking free space. -+- xattr, acl -+- readdir(3) in userspace. -+- keep inode number by external inode number table -+- keep the timestamps of file/dir in internal copyup operation -+- seekable directory, supporting NFS readdir. -+- whiteout is hardlinked in order to reduce the consumption of inodes -+ on branch -+- do not copyup, nor create a whiteout when it is unnecessary -+- revert a single systemcall when an error occurs in aufs -+- remount interface instead of ioctl -+- maintain /etc/mtab by an external command, /sbin/mount.aufs. -+- loopback mounted filesystem as a branch -+- kernel thread for removing the dir who has a plenty of whiteouts -+- support copyup sparse file (a file which has a 'hole' in it) -+- default permission flags for branches -+- selectable permission flags for ro branch, whether whiteout can -+ exist or not -+- export via NFS. -+- support /fs/aufs and /aufs. -+- support multiple writable branches, some policies to select one -+ among multiple writable branches. -+- a new semantics for link(2) and rename(2) to support multiple -+ writable branches. -+- no glibc changes are required. -+- pseudo hardlink (hardlink over branches) -+- allow a direct access manually to a file on branch, e.g. bypassing aufs. -+ including NFS or remote filesystem branch. -+- userspace wrapper for pathconf(3)/fpathconf(3) with _PC_LINK_MAX. -+- and more... -+ -+Currently these features are dropped temporary from aufs4. -+See design/08plan.txt in detail. -+- nested mount, i.e. aufs as readonly no-whiteout branch of another aufs -+ (robr) -+- statistics of aufs thread (/sys/fs/aufs/stat) -+ -+Features or just an idea in the future (see also design/*.txt), -+- reorder the branch index without del/re-add. -+- permanent xino files for NFSD -+- an option for refreshing the opened files after add/del branches -+- light version, without branch manipulation. (unnecessary?) -+- copyup in userspace -+- inotify in userspace -+- readv/writev -+ -+ -+2. Download -+---------------------------------------- -+There are three GIT trees for aufs4, aufs4-linux.git, -+aufs4-standalone.git, and aufs-util.git. Note that there is no "4" in -+"aufs-util.git." -+While the aufs-util is always necessary, you need either of aufs4-linux -+or aufs4-standalone. -+ -+The aufs4-linux tree includes the whole linux mainline GIT tree, -+git://git.kernel.org/.../torvalds/linux.git. -+And you cannot select CONFIG_AUFS_FS=m for this version, eg. you cannot -+build aufs4 as an external kernel module. -+Several extra patches are not included in this tree. Only -+aufs4-standalone tree contains them. They are describe in the later -+section "Configuration and Compilation." -+ -+On the other hand, the aufs4-standalone tree has only aufs source files -+and necessary patches, and you can select CONFIG_AUFS_FS=m. -+But you need to apply all aufs patches manually. -+ -+You will find GIT branches whose name is in form of "aufs4.x" where "x" -+represents the linux kernel version, "linux-4.x". For instance, -+"aufs4.0" is for linux-4.0. For latest "linux-4.x-rcN", use -+"aufs4.x-rcN" branch. -+ -+o aufs4-linux tree -+$ git clone --reference /your/linux/git/tree \ -+ git://github.com/sfjro/aufs4-linux.git aufs4-linux.git -+- if you don't have linux GIT tree, then remove "--reference ..." -+$ cd aufs4-linux.git -+$ git checkout origin/aufs4.0 -+ -+Or You may want to directly git-pull aufs into your linux GIT tree, and -+leave the patch-work to GIT. -+$ cd /your/linux/git/tree -+$ git remote add aufs4 git://github.com/sfjro/aufs4-linux.git -+$ git fetch aufs4 -+$ git checkout -b my4.0 v4.0 -+$ (add your local change...) -+$ git pull aufs4 aufs4.0 -+- now you have v4.0 + your_changes + aufs4.0 in you my4.0 branch. -+- you may need to solve some conflicts between your_changes and -+ aufs4.0. in this case, git-rerere is recommended so that you can -+ solve the similar conflicts automatically when you upgrade to 4.1 or -+ later in the future. -+ -+o aufs4-standalone tree -+$ git clone git://github.com/sfjro/aufs4-standalone.git aufs4-standalone.git -+$ cd aufs4-standalone.git -+$ git checkout origin/aufs4.0 -+ -+o aufs-util tree -+$ git clone git://git.code.sf.net/p/aufs/aufs-util aufs-util.git -+- note that the public aufs-util.git is on SourceForge instead of -+ GitHUB. -+$ cd aufs-util.git -+$ git checkout origin/aufs4.0 -+ -+Note: The 4.x-rcN branch is to be used with `rc' kernel versions ONLY. -+The minor version number, 'x' in '4.x', of aufs may not always -+follow the minor version number of the kernel. -+Because changes in the kernel that cause the use of a new -+minor version number do not always require changes to aufs-util. -+ -+Since aufs-util has its own minor version number, you may not be -+able to find a GIT branch in aufs-util for your kernel's -+exact minor version number. -+In this case, you should git-checkout the branch for the -+nearest lower number. -+ -+For (an unreleased) example: -+If you are using "linux-4.10" and the "aufs4.10" branch -+does not exist in aufs-util repository, then "aufs4.9", "aufs4.8" -+or something numerically smaller is the branch for your kernel. -+ -+Also you can view all branches by -+ $ git branch -a -+ -+ -+3. Configuration and Compilation -+---------------------------------------- -+Make sure you have git-checkout'ed the correct branch. -+ -+For aufs4-linux tree, -+- enable CONFIG_AUFS_FS. -+- set other aufs configurations if necessary. -+ -+For aufs4-standalone tree, -+There are several ways to build. -+ -+1. -+- apply ./aufs4-kbuild.patch to your kernel source files. -+- apply ./aufs4-base.patch too. -+- apply ./aufs4-mmap.patch too. -+- apply ./aufs4-standalone.patch too, if you have a plan to set -+ CONFIG_AUFS_FS=m. otherwise you don't need ./aufs4-standalone.patch. -+- copy ./{Documentation,fs,include/uapi/linux/aufs_type.h} files to your -+ kernel source tree. Never copy $PWD/include/uapi/linux/Kbuild. -+- enable CONFIG_AUFS_FS, you can select either -+ =m or =y. -+- and build your kernel as usual. -+- install the built kernel. -+ Note: Since linux-3.9, every filesystem module requires an alias -+ "fs-". You should make sure that "fs-aufs" is listed in your -+ modules.aliases file if you set CONFIG_AUFS_FS=m. -+- install the header files too by "make headers_install" to the -+ directory where you specify. By default, it is $PWD/usr. -+ "make help" shows a brief note for headers_install. -+- and reboot your system. -+ -+2. -+- module only (CONFIG_AUFS_FS=m). -+- apply ./aufs4-base.patch to your kernel source files. -+- apply ./aufs4-mmap.patch too. -+- apply ./aufs4-standalone.patch too. -+- build your kernel, don't forget "make headers_install", and reboot. -+- edit ./config.mk and set other aufs configurations if necessary. -+ Note: You should read $PWD/fs/aufs/Kconfig carefully which describes -+ every aufs configurations. -+- build the module by simple "make". -+ Note: Since linux-3.9, every filesystem module requires an alias -+ "fs-". You should make sure that "fs-aufs" is listed in your -+ modules.aliases file. -+- you can specify ${KDIR} make variable which points to your kernel -+ source tree. -+- install the files -+ + run "make install" to install the aufs module, or copy the built -+ $PWD/aufs.ko to /lib/modules/... and run depmod -a (or reboot simply). -+ + run "make install_headers" (instead of headers_install) to install -+ the modified aufs header file (you can specify DESTDIR which is -+ available in aufs standalone version's Makefile only), or copy -+ $PWD/usr/include/linux/aufs_type.h to /usr/include/linux or wherever -+ you like manually. By default, the target directory is $PWD/usr. -+- no need to apply aufs4-kbuild.patch, nor copying source files to your -+ kernel source tree. -+ -+Note: The header file aufs_type.h is necessary to build aufs-util -+ as well as "make headers_install" in the kernel source tree. -+ headers_install is subject to be forgotten, but it is essentially -+ necessary, not only for building aufs-util. -+ You may not meet problems without headers_install in some older -+ version though. -+ -+And then, -+- read README in aufs-util, build and install it -+- note that your distribution may contain an obsoleted version of -+ aufs_type.h in /usr/include/linux or something. When you build aufs -+ utilities, make sure that your compiler refers the correct aufs header -+ file which is built by "make headers_install." -+- if you want to use readdir(3) in userspace or pathconf(3) wrapper, -+ then run "make install_ulib" too. And refer to the aufs manual in -+ detail. -+ -+There several other patches in aufs4-standalone.git. They are all -+optional. When you meet some problems, they will help you. -+- aufs4-loopback.patch -+ Supports a nested loopback mount in a branch-fs. This patch is -+ unnecessary until aufs produces a message like "you may want to try -+ another patch for loopback file". -+- vfs-ino.patch -+ Modifies a system global kernel internal function get_next_ino() in -+ order to stop assigning 0 for an inode-number. Not directly related to -+ aufs, but recommended generally. -+- tmpfs-idr.patch -+ Keeps the tmpfs inode number as the lowest value. Effective to reduce -+ the size of aufs XINO files for tmpfs branch. Also it prevents the -+ duplication of inode number, which is important for backup tools and -+ other utilities. When you find aufs XINO files for tmpfs branch -+ growing too much, try this patch. -+ -+ -+4. Usage -+---------------------------------------- -+At first, make sure aufs-util are installed, and please read the aufs -+manual, aufs.5 in aufs-util.git tree. -+$ man -l aufs.5 -+ -+And then, -+$ mkdir /tmp/rw /tmp/aufs -+# mount -t aufs -o br=/tmp/rw:${HOME} none /tmp/aufs -+ -+Here is another example. The result is equivalent. -+# mount -t aufs -o br=/tmp/rw=rw:${HOME}=ro none /tmp/aufs -+ Or -+# mount -t aufs -o br:/tmp/rw none /tmp/aufs -+# mount -o remount,append:${HOME} /tmp/aufs -+ -+Then, you can see whole tree of your home dir through /tmp/aufs. If -+you modify a file under /tmp/aufs, the one on your home directory is -+not affected, instead the same named file will be newly created under -+/tmp/rw. And all of your modification to a file will be applied to -+the one under /tmp/rw. This is called the file based Copy on Write -+(COW) method. -+Aufs mount options are described in aufs.5. -+If you run chroot or something and make your aufs as a root directory, -+then you need to customize the shutdown script. See the aufs manual in -+detail. -+ -+Additionally, there are some sample usages of aufs which are a -+diskless system with network booting, and LiveCD over NFS. -+See sample dir in CVS tree on SourceForge. -+ -+ -+5. Contact -+---------------------------------------- -+When you have any problems or strange behaviour in aufs, please let me -+know with: -+- /proc/mounts (instead of the output of mount(8)) -+- /sys/module/aufs/* -+- /sys/fs/aufs/* (if you have them) -+- /debug/aufs/* (if you have them) -+- linux kernel version -+ if your kernel is not plain, for example modified by distributor, -+ the url where i can download its source is necessary too. -+- aufs version which was printed at loading the module or booting the -+ system, instead of the date you downloaded. -+- configuration (define/undefine CONFIG_AUFS_xxx) -+- kernel configuration or /proc/config.gz (if you have it) -+- behaviour which you think to be incorrect -+- actual operation, reproducible one is better -+- mailto: aufs-users at lists.sourceforge.net -+ -+Usually, I don't watch the Public Areas(Bugs, Support Requests, Patches, -+and Feature Requests) on SourceForge. Please join and write to -+aufs-users ML. -+ -+ -+6. Acknowledgements -+---------------------------------------- -+Thanks to everyone who have tried and are using aufs, whoever -+have reported a bug or any feedback. -+ -+Especially donators: -+Tomas Matejicek(slax.org) made a donation (much more than once). -+ Since Apr 2010, Tomas M (the author of Slax and Linux Live -+ scripts) is making "doubling" donations. -+ Unfortunately I cannot list all of the donators, but I really -+ appreciate. -+ It ends Aug 2010, but the ordinary donation URL is still available. -+ -+Dai Itasaka made a donation (2007/8). -+Chuck Smith made a donation (2008/4, 10 and 12). -+Henk Schoneveld made a donation (2008/9). -+Chih-Wei Huang, ASUS, CTC donated Eee PC 4G (2008/10). -+Francois Dupoux made a donation (2008/11). -+Bruno Cesar Ribas and Luis Carlos Erpen de Bona, C3SL serves public -+ aufs2 GIT tree (2009/2). -+William Grant made a donation (2009/3). -+Patrick Lane made a donation (2009/4). -+The Mail Archive (mail-archive.com) made donations (2009/5). -+Nippy Networks (Ed Wildgoose) made a donation (2009/7). -+New Dream Network, LLC (www.dreamhost.com) made a donation (2009/11). -+Pavel Pronskiy made a donation (2011/2). -+Iridium and Inmarsat satellite phone retailer (www.mailasail.com), Nippy -+ Networks (Ed Wildgoose) made a donation for hardware (2011/3). -+Max Lekomcev (DOM-TV project) made a donation (2011/7, 12, 2012/3, 6 and -+11). -+Sam Liddicott made a donation (2011/9). -+Era Scarecrow made a donation (2013/4). -+Bor Ratajc made a donation (2013/4). -+Alessandro Gorreta made a donation (2013/4). -+POIRETTE Marc made a donation (2013/4). -+Alessandro Gorreta made a donation (2013/4). -+lauri kasvandik made a donation (2013/5). -+"pemasu from Finland" made a donation (2013/7). -+The Parted Magic Project made a donation (2013/9 and 11). -+Pavel Barta made a donation (2013/10). -+Nikolay Pertsev made a donation (2014/5). -+James B made a donation (2014/7 and 2015/7). -+Stefano Di Biase made a donation (2014/8). -+Daniel Epellei made a donation (2015/1). -+ -+Thank you very much. -+Donations are always, including future donations, very important and -+helpful for me to keep on developing aufs. -+ -+ -+7. -+---------------------------------------- -+If you are an experienced user, no explanation is needed. Aufs is -+just a linux filesystem. -+ -+ -+Enjoy! -+ -+# Local variables: ; -+# mode: text; -+# End: ; -diff --git a/Documentation/filesystems/aufs/design/01intro.txt b/Documentation/filesystems/aufs/design/01intro.txt -new file mode 100644 -index 0000000..02a8c7b ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/01intro.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/01intro.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/01intro.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/01intro.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/01intro.txt 2016-03-02 17:59:37.357498660 +0200 @@ -0,0 +1,157 @@ + -+# Copyright (C) 2005-2015 Junjiro R. Okajima ++# Copyright (C) 2005-2016 Junjiro R. Okajima + +Introduction +---------------------------------------- @@ -755,14 +362,12 @@ index 0000000..02a8c7b +Some people may think it is better to pass such work to user space +helper, instead of doing in kernel space. Actually I am still thinking +about it. But currently I have implemented it in kernel space. -diff --git a/Documentation/filesystems/aufs/design/02struct.txt b/Documentation/filesystems/aufs/design/02struct.txt -new file mode 100644 -index 0000000..1a5e5d0 ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/02struct.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/02struct.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/02struct.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/02struct.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/02struct.txt 2016-03-02 17:59:37.357498660 +0200 @@ -0,0 +1,245 @@ + -+# Copyright (C) 2005-2015 Junjiro R. Okajima ++# Copyright (C) 2005-2016 Junjiro R. Okajima + +Basic Aufs Internal Structure + @@ -1006,14 +611,12 @@ index 0000000..1a5e5d0 +- etc. + +For this purpose, use "aumvdown" command in aufs-util.git. -diff --git a/Documentation/filesystems/aufs/design/03atomic_open.txt b/Documentation/filesystems/aufs/design/03atomic_open.txt -new file mode 100644 -index 0000000..d2c9834 ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/03atomic_open.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/03atomic_open.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/03atomic_open.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/03atomic_open.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/03atomic_open.txt 2016-03-02 17:59:37.357498660 +0200 @@ -0,0 +1,72 @@ + -+# Copyright (C) 2015 Junjiro R. Okajima ++# Copyright (C) 2015-2016 Junjiro R. Okajima + +Support for a branch who has its ->atomic_open() +---------------------------------------------------------------------- @@ -1084,14 +687,12 @@ index 0000000..d2c9834 + ->atomic_open() are lost. in the ordinary case, the checks are + done by VFS:do_last(), lookup_open() and atomic_open(). some can + be implemented in aufs, but not all I am afraid. -diff --git a/Documentation/filesystems/aufs/design/03lookup.txt b/Documentation/filesystems/aufs/design/03lookup.txt -new file mode 100644 -index 0000000..7adf4cc ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/03lookup.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/03lookup.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/03lookup.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/03lookup.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/03lookup.txt 2016-03-02 17:59:37.358498667 +0200 @@ -0,0 +1,100 @@ + -+# Copyright (C) 2005-2015 Junjiro R. Okajima ++# Copyright (C) 2005-2016 Junjiro R. Okajima + +Lookup in a Branch +---------------------------------------------------------------------- @@ -1190,14 +791,12 @@ index 0000000..7adf4cc + test, and skip the revalidation in step 4. It is useful and improves + aufs performance when system surely hide the aufs branches from user, + by over-mounting something (or another method). -diff --git a/Documentation/filesystems/aufs/design/04branch.txt b/Documentation/filesystems/aufs/design/04branch.txt -new file mode 100644 -index 0000000..1d11dbe ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/04branch.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/04branch.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/04branch.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/04branch.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/04branch.txt 2016-03-02 17:59:37.358498667 +0200 @@ -0,0 +1,61 @@ + -+# Copyright (C) 2005-2015 Junjiro R. Okajima ++# Copyright (C) 2005-2016 Junjiro R. Okajima + +Branch Manipulation + @@ -1257,14 +856,12 @@ index 0000000..1d11dbe + - a file on the branch is mmap-ed. + - a regular file on the branch is opened for write and there is no + same named entry on the upper branch. -diff --git a/Documentation/filesystems/aufs/design/05wbr_policy.txt b/Documentation/filesystems/aufs/design/05wbr_policy.txt -new file mode 100644 -index 0000000..0419a90 ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/05wbr_policy.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/05wbr_policy.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/05wbr_policy.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/05wbr_policy.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/05wbr_policy.txt 2016-03-02 17:59:37.358498667 +0200 @@ -0,0 +1,51 @@ + -+# Copyright (C) 2005-2015 Junjiro R. Okajima ++# Copyright (C) 2005-2016 Junjiro R. Okajima + +Policies to Select One among Multiple Writable Branches +---------------------------------------------------------------------- @@ -1314,14 +911,12 @@ index 0000000..0419a90 + where the source and the target exists and selects the higher + one. If the selected branch is readonly, then aufs follows the + copyup policy. -diff --git a/Documentation/filesystems/aufs/design/06fhsm.txt b/Documentation/filesystems/aufs/design/06fhsm.txt -new file mode 100644 -index 0000000..0eb7a82 ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/06fhsm.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/06fhsm.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/06fhsm.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/06fhsm.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/06fhsm.txt 2016-03-02 17:59:37.358498667 +0200 @@ -0,0 +1,105 @@ + -+# Copyright (C) 2011-2015 Junjiro R. Okajima ++# Copyright (C) 2011-2016 Junjiro R. Okajima + +File-based Hierarchical Storage Management (FHSM) +---------------------------------------------------------------------- @@ -1425,14 +1020,12 @@ index 0000000..0eb7a82 + +And of course, in every step, an error may happen. So the operation +should restore the original file state after an error happens. -diff --git a/Documentation/filesystems/aufs/design/06mmap.txt b/Documentation/filesystems/aufs/design/06mmap.txt -new file mode 100644 -index 0000000..f22d2a1 ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/06mmap.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/06mmap.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/06mmap.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/06mmap.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/06mmap.txt 2016-03-02 17:59:37.358498667 +0200 @@ -0,0 +1,59 @@ + -+# Copyright (C) 2005-2015 Junjiro R. Okajima ++# Copyright (C) 2005-2016 Junjiro R. Okajima + +mmap(2) -- File Memory Mapping +---------------------------------------------------------------------- @@ -1490,14 +1083,12 @@ index 0000000..f22d2a1 + equivalent to vm_prfile described above. + +I have to give up this "looks-smater" approach. -diff --git a/Documentation/filesystems/aufs/design/06xattr.txt b/Documentation/filesystems/aufs/design/06xattr.txt -new file mode 100644 -index 0000000..ec1e68c ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/06xattr.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/06xattr.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/06xattr.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/06xattr.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/06xattr.txt 2016-03-02 17:59:37.358498667 +0200 @@ -0,0 +1,81 @@ + -+# Copyright (C) 2014-2015 Junjiro R. Okajima ++# Copyright (C) 2014-2016 Junjiro R. Okajima + +Listing XATTR/EA and getting the value +---------------------------------------------------------------------- @@ -1577,14 +1168,12 @@ index 0000000..ec1e68c +Some contradiction may happen I am afraid. +Do we need another attribute to stop copying XATTR? I am unsure. For +now, aufs implements the branch attributes to ignore the error. -diff --git a/Documentation/filesystems/aufs/design/07export.txt b/Documentation/filesystems/aufs/design/07export.txt -new file mode 100644 -index 0000000..221d70c ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/07export.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/07export.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/07export.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/07export.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/07export.txt 2016-03-02 17:59:37.358498667 +0200 @@ -0,0 +1,45 @@ + -+# Copyright (C) 2005-2015 Junjiro R. Okajima ++# Copyright (C) 2005-2016 Junjiro R. Okajima + +Export Aufs via NFS +---------------------------------------------------------------------- @@ -1628,14 +1217,12 @@ index 0000000..221d70c + convert it into ESTALE for NFSD. +- readdir(): call lockdep_on/off() because filldir in NFSD calls + lookup_one_len(), vfs_getattr(), encode_fh() and others. -diff --git a/Documentation/filesystems/aufs/design/08shwh.txt b/Documentation/filesystems/aufs/design/08shwh.txt -new file mode 100644 -index 0000000..181dc02 ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/08shwh.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/08shwh.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/08shwh.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/08shwh.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/08shwh.txt 2016-03-02 17:59:37.358498667 +0200 @@ -0,0 +1,39 @@ + -+# Copyright (C) 2005-2015 Junjiro R. Okajima ++# Copyright (C) 2005-2016 Junjiro R. Okajima + +Show Whiteout Mode (shwh) +---------------------------------------------------------------------- @@ -1673,14 +1260,12 @@ index 0000000..181dc02 + +This new squashfs archive can be stored on the boot device and the +initramfs will use it to replace the old one at the next boot. -diff --git a/Documentation/filesystems/aufs/design/10dynop.txt b/Documentation/filesystems/aufs/design/10dynop.txt -new file mode 100644 -index 0000000..9d502b5 ---- /dev/null -+++ b/Documentation/filesystems/aufs/design/10dynop.txt +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/design/10dynop.txt linux-4.4.3-aufs/Documentation/filesystems/aufs/design/10dynop.txt +--- linux-4.4.3/Documentation/filesystems/aufs/design/10dynop.txt 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/design/10dynop.txt 2016-03-02 17:59:37.359498674 +0200 @@ -0,0 +1,34 @@ + -+# Copyright (C) 2010-2015 Junjiro R. Okajima ++# Copyright (C) 2010-2016 Junjiro R. Okajima + +Dynamically customizable FS operations +---------------------------------------------------------------------- @@ -1713,35 +1298,405 @@ index 0000000..9d502b5 +XIP (DAX) mainly. +Currently this approach is applied to address_space_operations for +regular files only. -diff --git a/MAINTAINERS b/MAINTAINERS -index 9bff63c..093dd5b 100644 ---- a/MAINTAINERS -+++ b/MAINTAINERS -@@ -2029,6 +2029,19 @@ F: include/linux/audit.h - F: include/uapi/linux/audit.h - F: kernel/audit* - -+AUFS (advanced multi layered unification filesystem) FILESYSTEM -+M: "J. R. Okajima" -+L: linux-unionfs@vger.kernel.org -+L: aufs-users@lists.sourceforge.net (members only) -+W: http://aufs.sourceforge.net -+T: git://github.com/sfjro/aufs4-linux.git -+S: Supported -+F: Documentation/filesystems/aufs/ -+F: Documentation/ABI/testing/debugfs-aufs -+F: Documentation/ABI/testing/sysfs-aufs -+F: fs/aufs/ -+F: include/uapi/linux/aufs_type.h +diff -Nurp linux-4.4.3/Documentation/filesystems/aufs/README linux-4.4.3-aufs/Documentation/filesystems/aufs/README +--- linux-4.4.3/Documentation/filesystems/aufs/README 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/Documentation/filesystems/aufs/README 2016-03-02 17:59:37.357498660 +0200 +@@ -0,0 +1,391 @@ + - AUXILIARY DISPLAY DRIVERS - M: Miguel Ojeda Sandonis - W: http://miguelojeda.es/auxdisplay.htm -diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index 423f4ca..abfdd2b 100644 ---- a/drivers/block/loop.c -+++ b/drivers/block/loop.c -@@ -706,6 +706,24 @@ static inline int is_loop_device(struct file *file) ++Aufs4 -- advanced multi layered unification filesystem version 4.x ++http://aufs.sf.net ++Junjiro R. Okajima ++ ++ ++0. Introduction ++---------------------------------------- ++In the early days, aufs was entirely re-designed and re-implemented ++Unionfs Version 1.x series. Adding many original ideas, approaches, ++improvements and implementations, it becomes totally different from ++Unionfs while keeping the basic features. ++Recently, Unionfs Version 2.x series begin taking some of the same ++approaches to aufs1's. ++Unionfs is being developed by Professor Erez Zadok at Stony Brook ++University and his team. ++ ++Aufs4 supports linux-4.0 and later, and for linux-3.x series try aufs3. ++If you want older kernel version support, try aufs2-2.6.git or ++aufs2-standalone.git repository, aufs1 from CVS on SourceForge. ++ ++Note: it becomes clear that "Aufs was rejected. Let's give it up." ++ According to Christoph Hellwig, linux rejects all union-type ++ filesystems but UnionMount. ++ ++ ++PS. Al Viro seems have a plan to merge aufs as well as overlayfs and ++ UnionMount, and he pointed out an issue around a directory mutex ++ lock and aufs addressed it. But it is still unsure whether aufs will ++ be merged (or any other union solution). ++ ++ ++ ++1. Features ++---------------------------------------- ++- unite several directories into a single virtual filesystem. The member ++ directory is called as a branch. ++- you can specify the permission flags to the branch, which are 'readonly', ++ 'readwrite' and 'whiteout-able.' ++- by upper writable branch, internal copyup and whiteout, files/dirs on ++ readonly branch are modifiable logically. ++- dynamic branch manipulation, add, del. ++- etc... ++ ++Also there are many enhancements in aufs, such as: ++- test only the highest one for the directory permission (dirperm1) ++- copyup on open (coo=) ++- 'move' policy for copy-up between two writable branches, after ++ checking free space. ++- xattr, acl ++- readdir(3) in userspace. ++- keep inode number by external inode number table ++- keep the timestamps of file/dir in internal copyup operation ++- seekable directory, supporting NFS readdir. ++- whiteout is hardlinked in order to reduce the consumption of inodes ++ on branch ++- do not copyup, nor create a whiteout when it is unnecessary ++- revert a single systemcall when an error occurs in aufs ++- remount interface instead of ioctl ++- maintain /etc/mtab by an external command, /sbin/mount.aufs. ++- loopback mounted filesystem as a branch ++- kernel thread for removing the dir who has a plenty of whiteouts ++- support copyup sparse file (a file which has a 'hole' in it) ++- default permission flags for branches ++- selectable permission flags for ro branch, whether whiteout can ++ exist or not ++- export via NFS. ++- support /fs/aufs and /aufs. ++- support multiple writable branches, some policies to select one ++ among multiple writable branches. ++- a new semantics for link(2) and rename(2) to support multiple ++ writable branches. ++- no glibc changes are required. ++- pseudo hardlink (hardlink over branches) ++- allow a direct access manually to a file on branch, e.g. bypassing aufs. ++ including NFS or remote filesystem branch. ++- userspace wrapper for pathconf(3)/fpathconf(3) with _PC_LINK_MAX. ++- and more... ++ ++Currently these features are dropped temporary from aufs4. ++See design/08plan.txt in detail. ++- nested mount, i.e. aufs as readonly no-whiteout branch of another aufs ++ (robr) ++- statistics of aufs thread (/sys/fs/aufs/stat) ++ ++Features or just an idea in the future (see also design/*.txt), ++- reorder the branch index without del/re-add. ++- permanent xino files for NFSD ++- an option for refreshing the opened files after add/del branches ++- light version, without branch manipulation. (unnecessary?) ++- copyup in userspace ++- inotify in userspace ++- readv/writev ++ ++ ++2. Download ++---------------------------------------- ++There are three GIT trees for aufs4, aufs4-linux.git, ++aufs4-standalone.git, and aufs-util.git. Note that there is no "4" in ++"aufs-util.git." ++While the aufs-util is always necessary, you need either of aufs4-linux ++or aufs4-standalone. ++ ++The aufs4-linux tree includes the whole linux mainline GIT tree, ++git://git.kernel.org/.../torvalds/linux.git. ++And you cannot select CONFIG_AUFS_FS=m for this version, eg. you cannot ++build aufs4 as an external kernel module. ++Several extra patches are not included in this tree. Only ++aufs4-standalone tree contains them. They are described in the later ++section "Configuration and Compilation." ++ ++On the other hand, the aufs4-standalone tree has only aufs source files ++and necessary patches, and you can select CONFIG_AUFS_FS=m. ++But you need to apply all aufs patches manually. ++ ++You will find GIT branches whose name is in form of "aufs4.x" where "x" ++represents the linux kernel version, "linux-4.x". For instance, ++"aufs4.0" is for linux-4.0. For latest "linux-4.x-rcN", use ++"aufs4.x-rcN" branch. ++ ++o aufs4-linux tree ++$ git clone --reference /your/linux/git/tree \ ++ git://github.com/sfjro/aufs4-linux.git aufs4-linux.git ++- if you don't have linux GIT tree, then remove "--reference ..." ++$ cd aufs4-linux.git ++$ git checkout origin/aufs4.0 ++ ++Or You may want to directly git-pull aufs into your linux GIT tree, and ++leave the patch-work to GIT. ++$ cd /your/linux/git/tree ++$ git remote add aufs4 git://github.com/sfjro/aufs4-linux.git ++$ git fetch aufs4 ++$ git checkout -b my4.0 v4.0 ++$ (add your local change...) ++$ git pull aufs4 aufs4.0 ++- now you have v4.0 + your_changes + aufs4.0 in you my4.0 branch. ++- you may need to solve some conflicts between your_changes and ++ aufs4.0. in this case, git-rerere is recommended so that you can ++ solve the similar conflicts automatically when you upgrade to 4.1 or ++ later in the future. ++ ++o aufs4-standalone tree ++$ git clone git://github.com/sfjro/aufs4-standalone.git aufs4-standalone.git ++$ cd aufs4-standalone.git ++$ git checkout origin/aufs4.0 ++ ++o aufs-util tree ++$ git clone git://git.code.sf.net/p/aufs/aufs-util aufs-util.git ++- note that the public aufs-util.git is on SourceForge instead of ++ GitHUB. ++$ cd aufs-util.git ++$ git checkout origin/aufs4.0 ++ ++Note: The 4.x-rcN branch is to be used with `rc' kernel versions ONLY. ++The minor version number, 'x' in '4.x', of aufs may not always ++follow the minor version number of the kernel. ++Because changes in the kernel that cause the use of a new ++minor version number do not always require changes to aufs-util. ++ ++Since aufs-util has its own minor version number, you may not be ++able to find a GIT branch in aufs-util for your kernel's ++exact minor version number. ++In this case, you should git-checkout the branch for the ++nearest lower number. ++ ++For (an unreleased) example: ++If you are using "linux-4.10" and the "aufs4.10" branch ++does not exist in aufs-util repository, then "aufs4.9", "aufs4.8" ++or something numerically smaller is the branch for your kernel. ++ ++Also you can view all branches by ++ $ git branch -a ++ ++ ++3. Configuration and Compilation ++---------------------------------------- ++Make sure you have git-checkout'ed the correct branch. ++ ++For aufs4-linux tree, ++- enable CONFIG_AUFS_FS. ++- set other aufs configurations if necessary. ++ ++For aufs4-standalone tree, ++There are several ways to build. ++ ++1. ++- apply ./aufs4-kbuild.patch to your kernel source files. ++- apply ./aufs4-base.patch too. ++- apply ./aufs4-mmap.patch too. ++- apply ./aufs4-standalone.patch too, if you have a plan to set ++ CONFIG_AUFS_FS=m. otherwise you don't need ./aufs4-standalone.patch. ++- copy ./{Documentation,fs,include/uapi/linux/aufs_type.h} files to your ++ kernel source tree. Never copy $PWD/include/uapi/linux/Kbuild. ++- enable CONFIG_AUFS_FS, you can select either ++ =m or =y. ++- and build your kernel as usual. ++- install the built kernel. ++ Note: Since linux-3.9, every filesystem module requires an alias ++ "fs-". You should make sure that "fs-aufs" is listed in your ++ modules.aliases file if you set CONFIG_AUFS_FS=m. ++- install the header files too by "make headers_install" to the ++ directory where you specify. By default, it is $PWD/usr. ++ "make help" shows a brief note for headers_install. ++- and reboot your system. ++ ++2. ++- module only (CONFIG_AUFS_FS=m). ++- apply ./aufs4-base.patch to your kernel source files. ++- apply ./aufs4-mmap.patch too. ++- apply ./aufs4-standalone.patch too. ++- build your kernel, don't forget "make headers_install", and reboot. ++- edit ./config.mk and set other aufs configurations if necessary. ++ Note: You should read $PWD/fs/aufs/Kconfig carefully which describes ++ every aufs configurations. ++- build the module by simple "make". ++ Note: Since linux-3.9, every filesystem module requires an alias ++ "fs-". You should make sure that "fs-aufs" is listed in your ++ modules.aliases file. ++- you can specify ${KDIR} make variable which points to your kernel ++ source tree. ++- install the files ++ + run "make install" to install the aufs module, or copy the built ++ $PWD/aufs.ko to /lib/modules/... and run depmod -a (or reboot simply). ++ + run "make install_headers" (instead of headers_install) to install ++ the modified aufs header file (you can specify DESTDIR which is ++ available in aufs standalone version's Makefile only), or copy ++ $PWD/usr/include/linux/aufs_type.h to /usr/include/linux or wherever ++ you like manually. By default, the target directory is $PWD/usr. ++- no need to apply aufs4-kbuild.patch, nor copying source files to your ++ kernel source tree. ++ ++Note: The header file aufs_type.h is necessary to build aufs-util ++ as well as "make headers_install" in the kernel source tree. ++ headers_install is subject to be forgotten, but it is essentially ++ necessary, not only for building aufs-util. ++ You may not meet problems without headers_install in some older ++ version though. ++ ++And then, ++- read README in aufs-util, build and install it ++- note that your distribution may contain an obsoleted version of ++ aufs_type.h in /usr/include/linux or something. When you build aufs ++ utilities, make sure that your compiler refers the correct aufs header ++ file which is built by "make headers_install." ++- if you want to use readdir(3) in userspace or pathconf(3) wrapper, ++ then run "make install_ulib" too. And refer to the aufs manual in ++ detail. ++ ++There several other patches in aufs4-standalone.git. They are all ++optional. When you meet some problems, they will help you. ++- aufs4-loopback.patch ++ Supports a nested loopback mount in a branch-fs. This patch is ++ unnecessary until aufs produces a message like "you may want to try ++ another patch for loopback file". ++- vfs-ino.patch ++ Modifies a system global kernel internal function get_next_ino() in ++ order to stop assigning 0 for an inode-number. Not directly related to ++ aufs, but recommended generally. ++- tmpfs-idr.patch ++ Keeps the tmpfs inode number as the lowest value. Effective to reduce ++ the size of aufs XINO files for tmpfs branch. Also it prevents the ++ duplication of inode number, which is important for backup tools and ++ other utilities. When you find aufs XINO files for tmpfs branch ++ growing too much, try this patch. ++- lockdep-debug.patch ++ Because aufs is not only an ordinary filesystem (callee of VFS), but ++ also a caller of VFS functions for branch filesystems, subclassing of ++ the internal locks for LOCKDEP is necessary. LOCKDEP is a debugging ++ feature of linux kernel. If you enable CONFIG_LOCKDEP, then you will ++ need to apply this debug patch to expand several constant values. ++ If don't know what LOCKDEP, then you don't have apply this patch. ++ ++ ++4. Usage ++---------------------------------------- ++At first, make sure aufs-util are installed, and please read the aufs ++manual, aufs.5 in aufs-util.git tree. ++$ man -l aufs.5 ++ ++And then, ++$ mkdir /tmp/rw /tmp/aufs ++# mount -t aufs -o br=/tmp/rw:${HOME} none /tmp/aufs ++ ++Here is another example. The result is equivalent. ++# mount -t aufs -o br=/tmp/rw=rw:${HOME}=ro none /tmp/aufs ++ Or ++# mount -t aufs -o br:/tmp/rw none /tmp/aufs ++# mount -o remount,append:${HOME} /tmp/aufs ++ ++Then, you can see whole tree of your home dir through /tmp/aufs. If ++you modify a file under /tmp/aufs, the one on your home directory is ++not affected, instead the same named file will be newly created under ++/tmp/rw. And all of your modification to a file will be applied to ++the one under /tmp/rw. This is called the file based Copy on Write ++(COW) method. ++Aufs mount options are described in aufs.5. ++If you run chroot or something and make your aufs as a root directory, ++then you need to customize the shutdown script. See the aufs manual in ++detail. ++ ++Additionally, there are some sample usages of aufs which are a ++diskless system with network booting, and LiveCD over NFS. ++See sample dir in CVS tree on SourceForge. ++ ++ ++5. Contact ++---------------------------------------- ++When you have any problems or strange behaviour in aufs, please let me ++know with: ++- /proc/mounts (instead of the output of mount(8)) ++- /sys/module/aufs/* ++- /sys/fs/aufs/* (if you have them) ++- /debug/aufs/* (if you have them) ++- linux kernel version ++ if your kernel is not plain, for example modified by distributor, ++ the url where i can download its source is necessary too. ++- aufs version which was printed at loading the module or booting the ++ system, instead of the date you downloaded. ++- configuration (define/undefine CONFIG_AUFS_xxx) ++- kernel configuration or /proc/config.gz (if you have it) ++- behaviour which you think to be incorrect ++- actual operation, reproducible one is better ++- mailto: aufs-users at lists.sourceforge.net ++ ++Usually, I don't watch the Public Areas(Bugs, Support Requests, Patches, ++and Feature Requests) on SourceForge. Please join and write to ++aufs-users ML. ++ ++ ++6. Acknowledgements ++---------------------------------------- ++Thanks to everyone who have tried and are using aufs, whoever ++have reported a bug or any feedback. ++ ++Especially donators: ++Tomas Matejicek(slax.org) made a donation (much more than once). ++ Since Apr 2010, Tomas M (the author of Slax and Linux Live ++ scripts) is making "doubling" donations. ++ Unfortunately I cannot list all of the donators, but I really ++ appreciate. ++ It ends Aug 2010, but the ordinary donation URL is still available. ++ ++Dai Itasaka made a donation (2007/8). ++Chuck Smith made a donation (2008/4, 10 and 12). ++Henk Schoneveld made a donation (2008/9). ++Chih-Wei Huang, ASUS, CTC donated Eee PC 4G (2008/10). ++Francois Dupoux made a donation (2008/11). ++Bruno Cesar Ribas and Luis Carlos Erpen de Bona, C3SL serves public ++ aufs2 GIT tree (2009/2). ++William Grant made a donation (2009/3). ++Patrick Lane made a donation (2009/4). ++The Mail Archive (mail-archive.com) made donations (2009/5). ++Nippy Networks (Ed Wildgoose) made a donation (2009/7). ++New Dream Network, LLC (www.dreamhost.com) made a donation (2009/11). ++Pavel Pronskiy made a donation (2011/2). ++Iridium and Inmarsat satellite phone retailer (www.mailasail.com), Nippy ++ Networks (Ed Wildgoose) made a donation for hardware (2011/3). ++Max Lekomcev (DOM-TV project) made a donation (2011/7, 12, 2012/3, 6 and ++11). ++Sam Liddicott made a donation (2011/9). ++Era Scarecrow made a donation (2013/4). ++Bor Ratajc made a donation (2013/4). ++Alessandro Gorreta made a donation (2013/4). ++POIRETTE Marc made a donation (2013/4). ++Alessandro Gorreta made a donation (2013/4). ++lauri kasvandik made a donation (2013/5). ++"pemasu from Finland" made a donation (2013/7). ++The Parted Magic Project made a donation (2013/9 and 11). ++Pavel Barta made a donation (2013/10). ++Nikolay Pertsev made a donation (2014/5). ++James B made a donation (2014/7 and 2015/7). ++Stefano Di Biase made a donation (2014/8). ++Daniel Epellei made a donation (2015/1). ++OmegaPhil made a donation (2016/1). ++ ++Thank you very much. ++Donations are always, including future donations, very important and ++helpful for me to keep on developing aufs. ++ ++ ++7. ++---------------------------------------- ++If you are an experienced user, no explanation is needed. Aufs is ++just a linux filesystem. ++ ++ ++Enjoy! ++ ++# Local variables: ; ++# mode: text; ++# End: ; +diff -Nurp linux-4.4.3/drivers/block/loop.c linux-4.4.3-aufs/drivers/block/loop.c +--- linux-4.4.3/drivers/block/loop.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/drivers/block/loop.c 2016-03-02 17:59:37.360498681 +0200 +@@ -706,6 +706,24 @@ static inline int is_loop_device(struct return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR; } @@ -1761,273 +1716,17 @@ index 423f4ca..abfdd2b 100644 + } + return ret; +} -+EXPORT_SYMBOL(loop_backing_file); ++EXPORT_SYMBOL_GPL(loop_backing_file); + /* loop sysfs attributes */ static ssize_t loop_attr_show(struct device *dev, char *page, -diff --git a/fs/Kconfig b/fs/Kconfig -index 6ce72d8..4aa31ea 100644 ---- a/fs/Kconfig -+++ b/fs/Kconfig -@@ -221,6 +221,7 @@ source "fs/pstore/Kconfig" - source "fs/sysv/Kconfig" - source "fs/ufs/Kconfig" - source "fs/exofs/Kconfig" -+source "fs/aufs/Kconfig" - - endif # MISC_FILESYSTEMS - -diff --git a/fs/Makefile b/fs/Makefile -index 79f5225..a7c7f16 100644 ---- a/fs/Makefile -+++ b/fs/Makefile -@@ -126,3 +126,4 @@ obj-y += exofs/ # Multiple modules - obj-$(CONFIG_CEPH_FS) += ceph/ - obj-$(CONFIG_PSTORE) += pstore/ - obj-$(CONFIG_EFIVAR_FS) += efivarfs/ -+obj-$(CONFIG_AUFS_FS) += aufs/ -diff --git a/fs/aufs/Kconfig b/fs/aufs/Kconfig -new file mode 100644 -index 0000000..a4efb8b ---- /dev/null -+++ b/fs/aufs/Kconfig -@@ -0,0 +1,185 @@ -+config AUFS_FS -+ bool "Aufs (Advanced multi layered unification filesystem) support" -+ help -+ Aufs is a stackable unification filesystem such as Unionfs, -+ which unifies several directories and provides a merged single -+ directory. -+ In the early days, aufs was entirely re-designed and -+ re-implemented Unionfs Version 1.x series. Introducing many -+ original ideas, approaches and improvements, it becomes totally -+ different from Unionfs while keeping the basic features. -+ -+if AUFS_FS -+choice -+ prompt "Maximum number of branches" -+ default AUFS_BRANCH_MAX_127 -+ help -+ Specifies the maximum number of branches (or member directories) -+ in a single aufs. The larger value consumes more system -+ resources and has a minor impact to performance. -+config AUFS_BRANCH_MAX_127 -+ bool "127" -+ help -+ Specifies the maximum number of branches (or member directories) -+ in a single aufs. The larger value consumes more system -+ resources and has a minor impact to performance. -+config AUFS_BRANCH_MAX_511 -+ bool "511" -+ help -+ Specifies the maximum number of branches (or member directories) -+ in a single aufs. The larger value consumes more system -+ resources and has a minor impact to performance. -+config AUFS_BRANCH_MAX_1023 -+ bool "1023" -+ help -+ Specifies the maximum number of branches (or member directories) -+ in a single aufs. The larger value consumes more system -+ resources and has a minor impact to performance. -+config AUFS_BRANCH_MAX_32767 -+ bool "32767" -+ help -+ Specifies the maximum number of branches (or member directories) -+ in a single aufs. The larger value consumes more system -+ resources and has a minor impact to performance. -+endchoice -+ -+config AUFS_SBILIST -+ bool -+ depends on AUFS_MAGIC_SYSRQ || PROC_FS -+ default y -+ help -+ Automatic configuration for internal use. -+ When aufs supports Magic SysRq or /proc, enabled automatically. -+ -+config AUFS_HNOTIFY -+ bool "Detect direct branch access (bypassing aufs)" -+ help -+ If you want to modify files on branches directly, eg. bypassing aufs, -+ and want aufs to detect the changes of them fully, then enable this -+ option and use 'udba=notify' mount option. -+ Currently there is only one available configuration, "fsnotify". -+ It will have a negative impact to the performance. -+ See detail in aufs.5. -+ -+choice -+ prompt "method" if AUFS_HNOTIFY -+ default AUFS_HFSNOTIFY -+config AUFS_HFSNOTIFY -+ bool "fsnotify" -+ select FSNOTIFY -+endchoice -+ -+config AUFS_EXPORT -+ bool "NFS-exportable aufs" -+ depends on EXPORTFS = y -+ help -+ If you want to export your mounted aufs via NFS, then enable this -+ option. There are several requirements for this configuration. -+ See detail in aufs.5. -+ -+config AUFS_INO_T_64 -+ bool -+ depends on AUFS_EXPORT -+ depends on 64BIT && !(ALPHA || S390) -+ default y -+ help -+ Automatic configuration for internal use. -+ /* typedef unsigned long/int __kernel_ino_t */ -+ /* alpha and s390x are int */ -+ -+config AUFS_XATTR -+ bool "support for XATTR/EA (including Security Labels)" -+ help -+ If your branch fs supports XATTR/EA and you want to make them -+ available in aufs too, then enable this opsion and specify the -+ branch attributes for EA. -+ See detail in aufs.5. -+ -+config AUFS_FHSM -+ bool "File-based Hierarchical Storage Management" -+ help -+ Hierarchical Storage Management (or HSM) is a well-known feature -+ in the storage world. Aufs provides this feature as file-based. -+ with multiple branches. -+ These multiple branches are prioritized, ie. the topmost one -+ should be the fastest drive and be used heavily. -+ -+config AUFS_RDU -+ bool "Readdir in userspace" -+ help -+ Aufs has two methods to provide a merged view for a directory, -+ by a user-space library and by kernel-space natively. The latter -+ is always enabled but sometimes large and slow. -+ If you enable this option, install the library in aufs2-util -+ package, and set some environment variables for your readdir(3), -+ then the work will be handled in user-space which generally -+ shows better performance in most cases. -+ See detail in aufs.5. -+ -+config AUFS_SHWH -+ bool "Show whiteouts" -+ help -+ If you want to make the whiteouts in aufs visible, then enable -+ this option and specify 'shwh' mount option. Although it may -+ sounds like philosophy or something, but in technically it -+ simply shows the name of whiteout with keeping its behaviour. -+ -+config AUFS_BR_RAMFS -+ bool "Ramfs (initramfs/rootfs) as an aufs branch" -+ help -+ If you want to use ramfs as an aufs branch fs, then enable this -+ option. Generally tmpfs is recommended. -+ Aufs prohibited them to be a branch fs by default, because -+ initramfs becomes unusable after switch_root or something -+ generally. If you sets initramfs as an aufs branch and boot your -+ system by switch_root, you will meet a problem easily since the -+ files in initramfs may be inaccessible. -+ Unless you are going to use ramfs as an aufs branch fs without -+ switch_root or something, leave it N. -+ -+config AUFS_BR_FUSE -+ bool "Fuse fs as an aufs branch" -+ depends on FUSE_FS -+ select AUFS_POLL -+ help -+ If you want to use fuse-based userspace filesystem as an aufs -+ branch fs, then enable this option. -+ It implements the internal poll(2) operation which is -+ implemented by fuse only (curretnly). -+ -+config AUFS_POLL -+ bool -+ help -+ Automatic configuration for internal use. -+ -+config AUFS_BR_HFSPLUS -+ bool "Hfsplus as an aufs branch" -+ depends on HFSPLUS_FS -+ default y -+ help -+ If you want to use hfsplus fs as an aufs branch fs, then enable -+ this option. This option introduces a small overhead at -+ copying-up a file on hfsplus. -+ -+config AUFS_BDEV_LOOP -+ bool -+ depends on BLK_DEV_LOOP -+ default y -+ help -+ Automatic configuration for internal use. -+ Convert =[ym] into =y. -+ -+config AUFS_DEBUG -+ bool "Debug aufs" -+ help -+ Enable this to compile aufs internal debug code. -+ It will have a negative impact to the performance. -+ -+config AUFS_MAGIC_SYSRQ -+ bool -+ depends on AUFS_DEBUG && MAGIC_SYSRQ -+ default y -+ help -+ Automatic configuration for internal use. -+ When aufs supports Magic SysRq, enabled automatically. -+endif -diff --git a/fs/aufs/Makefile b/fs/aufs/Makefile -new file mode 100644 -index 0000000..c7efb62 ---- /dev/null -+++ b/fs/aufs/Makefile -@@ -0,0 +1,36 @@ -+ -+include ${srctree}/${src}/magic.mk -+ -+# cf. include/linux/kernel.h -+# enable pr_debug -+ccflags-y += -DDEBUG -+# sparse requires the full pathname -+ccflags-y += -include ${srctree}/include/uapi/linux/aufs_type.h -+ -+obj-$(CONFIG_AUFS_FS) += aufs.o -+aufs-y := module.o sbinfo.o super.o branch.o xino.o sysaufs.o opts.o \ -+ wkq.o vfsub.o dcsub.o \ -+ cpup.o whout.o wbr_policy.o \ -+ dinfo.o dentry.o \ -+ dynop.o \ -+ finfo.o file.o f_op.o \ -+ dir.o vdir.o \ -+ iinfo.o inode.o i_op.o i_op_add.o i_op_del.o i_op_ren.o \ -+ mvdown.o ioctl.o -+ -+# all are boolean -+aufs-$(CONFIG_PROC_FS) += procfs.o plink.o -+aufs-$(CONFIG_SYSFS) += sysfs.o -+aufs-$(CONFIG_DEBUG_FS) += dbgaufs.o -+aufs-$(CONFIG_AUFS_BDEV_LOOP) += loop.o -+aufs-$(CONFIG_AUFS_HNOTIFY) += hnotify.o -+aufs-$(CONFIG_AUFS_HFSNOTIFY) += hfsnotify.o -+aufs-$(CONFIG_AUFS_EXPORT) += export.o -+aufs-$(CONFIG_AUFS_XATTR) += xattr.o -+aufs-$(CONFIG_FS_POSIX_ACL) += posix_acl.o -+aufs-$(CONFIG_AUFS_FHSM) += fhsm.o -+aufs-$(CONFIG_AUFS_POLL) += poll.o -+aufs-$(CONFIG_AUFS_RDU) += rdu.o -+aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o -+aufs-$(CONFIG_AUFS_DEBUG) += debug.o -+aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o -diff --git a/fs/aufs/aufs.h b/fs/aufs/aufs.h -new file mode 100644 -index 0000000..75290bd ---- /dev/null -+++ b/fs/aufs/aufs.h +diff -Nurp linux-4.4.3/fs/aufs/aufs.h linux-4.4.3-aufs/fs/aufs/aufs.h +--- linux-4.4.3/fs/aufs/aufs.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/aufs.h 2016-03-02 17:59:37.361498688 +0200 @@ -0,0 +1,46 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -2072,14 +1771,12 @@ index 0000000..75290bd + +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ -diff --git a/fs/aufs/branch.c b/fs/aufs/branch.c -new file mode 100644 -index 0000000..f491422 ---- /dev/null -+++ b/fs/aufs/branch.c +diff -Nurp linux-4.4.3/fs/aufs/branch.c linux-4.4.3-aufs/fs/aufs/branch.c +--- linux-4.4.3/fs/aufs/branch.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/branch.c 2016-03-02 17:59:37.361498688 +0200 @@ -0,0 +1,1394 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -3472,14 +3169,12 @@ index 0000000..f491422 + + return err; +} -diff --git a/fs/aufs/branch.h b/fs/aufs/branch.h -new file mode 100644 -index 0000000..7b9e7c9 ---- /dev/null -+++ b/fs/aufs/branch.h +diff -Nurp linux-4.4.3/fs/aufs/branch.h linux-4.4.3-aufs/fs/aufs/branch.h +--- linux-4.4.3/fs/aufs/branch.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/branch.h 2016-03-02 17:59:37.361498688 +0200 @@ -0,0 +1,266 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -3744,14 +3439,12 @@ index 0000000..7b9e7c9 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_BRANCH_H__ */ -diff --git a/fs/aufs/cpup.c b/fs/aufs/cpup.c -new file mode 100644 -index 0000000..cd32274 ---- /dev/null -+++ b/fs/aufs/cpup.c -@@ -0,0 +1,1306 @@ +diff -Nurp linux-4.4.3/fs/aufs/cpup.c linux-4.4.3-aufs/fs/aufs/cpup.c +--- linux-4.4.3/fs/aufs/cpup.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/cpup.c 2016-03-02 17:59:37.362498696 +0200 +@@ -0,0 +1,1366 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -3760,6 +3453,7 @@ index 0000000..cd32274 + +#include +#include ++#include +#include "aufs.h" + +void au_cpup_attr_flags(struct inode *dst, unsigned int iflags) @@ -4132,6 +3826,7 @@ index 0000000..cd32274 + } + }; + struct super_block *sb; ++ struct task_struct *tsk = current; + + /* bsrc branch can be ro/rw. */ + sb = cpg->dentry->d_sb; @@ -4149,7 +3844,21 @@ index 0000000..cd32274 + IMustLock(d_inode(file[SRC].dentry)); + err = au_copy_file(file[DST].file, file[SRC].file, cpg->len); + -+ fput(file[DST].file); ++ /* i wonder if we had O_NO_DELAY_FPUT flag */ ++ if (tsk->flags & PF_KTHREAD) ++ __fput_sync(file[DST].file); ++ else { ++ WARN(1, "%pD\nPlease report this warning to aufs-users ML", ++ file[DST].file); ++ fput(file[DST].file); ++ /* ++ * too bad. ++ * we have to call both since we don't know which place the file ++ * was added to. ++ */ ++ task_work_run(); ++ flush_delayed_fput(); ++ } + au_sbr_put(sb, file[DST].bindex); + +out_src: @@ -4248,6 +3957,57 @@ index 0000000..cd32274 + return err; +} + ++/* ++ * regardless 'acl' option, reset all ACL. ++ * All ACL will be copied up later from the original entry on the lower branch. ++ */ ++static int au_reset_acl(struct inode *h_dir, struct path *h_path, umode_t mode) ++{ ++ int err; ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ ++ h_dentry = h_path->dentry; ++ h_inode = d_inode(h_dentry); ++ /* forget_all_cached_acls(h_inode)); */ ++ err = vfsub_removexattr(h_dentry, XATTR_NAME_POSIX_ACL_ACCESS); ++ AuTraceErr(err); ++ if (err == -EOPNOTSUPP) ++ err = 0; ++ if (!err) ++ err = vfsub_acl_chmod(h_inode, mode); ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_do_cpup_dir(struct au_cp_generic *cpg, struct dentry *dst_parent, ++ struct inode *h_dir, struct path *h_path) ++{ ++ int err; ++ struct inode *dir, *inode; ++ ++ err = vfsub_removexattr(h_path->dentry, XATTR_NAME_POSIX_ACL_DEFAULT); ++ AuTraceErr(err); ++ if (err == -EOPNOTSUPP) ++ err = 0; ++ if (unlikely(err)) ++ goto out; ++ ++ /* ++ * strange behaviour from the users view, ++ * particularry setattr case ++ */ ++ dir = d_inode(dst_parent); ++ if (au_ibstart(dir) == cpg->bdst) ++ au_cpup_attr_nlink(dir, /*force*/1); ++ inode = d_inode(cpg->dentry); ++ au_cpup_attr_nlink(inode, /*force*/1); ++ ++out: ++ return err; ++} ++ +static noinline_for_stack +int cpup_entry(struct au_cp_generic *cpg, struct dentry *dst_parent, + struct au_cpup_reg_attr *h_src_attr) @@ -4260,7 +4020,7 @@ index 0000000..cd32274 + struct au_dtime dt; + struct path h_path; + struct dentry *h_src, *h_dst, *h_parent; -+ struct inode *h_inode, *h_dir, *dir, *inode; ++ struct inode *h_inode, *h_dir; + struct super_block *sb; + + /* bsrc branch can be ro/rw. */ @@ -4292,7 +4052,7 @@ index 0000000..cd32274 + switch (mode & S_IFMT) { + case S_IFREG: + isreg = 1; -+ err = vfsub_create(h_dir, &h_path, mode | S_IWUSR, ++ err = vfsub_create(h_dir, &h_path, S_IRUSR | S_IWUSR, + /*want_excl*/true); + if (!err) + err = au_do_cpup_regular(cpg, h_src_attr); @@ -4300,17 +4060,8 @@ index 0000000..cd32274 + case S_IFDIR: + isdir = 1; + err = vfsub_mkdir(h_dir, &h_path, mode); -+ if (!err) { -+ /* -+ * strange behaviour from the users view, -+ * particularry setattr case -+ */ -+ dir = d_inode(dst_parent); -+ if (au_ibstart(dir) == cpg->bdst) -+ au_cpup_attr_nlink(dir, /*force*/1); -+ inode = d_inode(cpg->dentry); -+ au_cpup_attr_nlink(inode, /*force*/1); -+ } ++ if (!err) ++ err = au_do_cpup_dir(cpg, dst_parent, h_dir, &h_path); + break; + case S_IFLNK: + err = au_do_cpup_symlink(&h_path, h_src, h_dir); @@ -4327,6 +4078,8 @@ index 0000000..cd32274 + AuIOErr("Unknown inode type 0%o\n", mode); + err = -EIO; + } ++ if (!err) ++ err = au_reset_acl(h_dir, &h_path, mode); + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, UDBA_NONE) @@ -5056,14 +4809,12 @@ index 0000000..cd32274 + dput(parent); + return err; +} -diff --git a/fs/aufs/cpup.h b/fs/aufs/cpup.h -new file mode 100644 -index 0000000..3355f08 ---- /dev/null -+++ b/fs/aufs/cpup.h +diff -Nurp linux-4.4.3/fs/aufs/cpup.h linux-4.4.3-aufs/fs/aufs/cpup.h +--- linux-4.4.3/fs/aufs/cpup.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/cpup.h 2016-03-02 17:59:37.362498696 +0200 @@ -0,0 +1,81 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -5143,14 +4894,12 @@ index 0000000..3355f08 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_CPUP_H__ */ -diff --git a/fs/aufs/dbgaufs.c b/fs/aufs/dbgaufs.c -new file mode 100644 -index 0000000..c7c612c ---- /dev/null -+++ b/fs/aufs/dbgaufs.c +diff -Nurp linux-4.4.3/fs/aufs/dbgaufs.c linux-4.4.3-aufs/fs/aufs/dbgaufs.c +--- linux-4.4.3/fs/aufs/dbgaufs.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dbgaufs.c 2016-03-02 17:59:37.362498696 +0200 @@ -0,0 +1,419 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -5568,14 +5317,12 @@ index 0000000..c7c612c + err = 0; + return err; +} -diff --git a/fs/aufs/dbgaufs.h b/fs/aufs/dbgaufs.h -new file mode 100644 -index 0000000..efa9a4d ---- /dev/null -+++ b/fs/aufs/dbgaufs.h +diff -Nurp linux-4.4.3/fs/aufs/dbgaufs.h linux-4.4.3-aufs/fs/aufs/dbgaufs.h +--- linux-4.4.3/fs/aufs/dbgaufs.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dbgaufs.h 2016-03-02 17:59:37.362498696 +0200 @@ -0,0 +1,35 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -5609,14 +5356,12 @@ index 0000000..efa9a4d + +#endif /* __KERNEL__ */ +#endif /* __DBGAUFS_H__ */ -diff --git a/fs/aufs/dcsub.c b/fs/aufs/dcsub.c -new file mode 100644 -index 0000000..f9d9d52 ---- /dev/null -+++ b/fs/aufs/dcsub.c +diff -Nurp linux-4.4.3/fs/aufs/dcsub.c linux-4.4.3-aufs/fs/aufs/dcsub.c +--- linux-4.4.3/fs/aufs/dcsub.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dcsub.c 2016-03-02 17:59:37.362498696 +0200 @@ -0,0 +1,211 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -5826,14 +5571,12 @@ index 0000000..f9d9d52 + + return path_is_under(path + 0, path + 1); +} -diff --git a/fs/aufs/dcsub.h b/fs/aufs/dcsub.h -new file mode 100644 -index 0000000..2aa87ac ---- /dev/null -+++ b/fs/aufs/dcsub.h +diff -Nurp linux-4.4.3/fs/aufs/dcsub.h linux-4.4.3-aufs/fs/aufs/dcsub.h +--- linux-4.4.3/fs/aufs/dcsub.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dcsub.h 2016-03-02 17:59:37.362498696 +0200 @@ -0,0 +1,123 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -5955,14 +5698,12 @@ index 0000000..2aa87ac + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DCSUB_H__ */ -diff --git a/fs/aufs/debug.c b/fs/aufs/debug.c -new file mode 100644 -index 0000000..42053aa ---- /dev/null -+++ b/fs/aufs/debug.c +diff -Nurp linux-4.4.3/fs/aufs/debug.c linux-4.4.3-aufs/fs/aufs/debug.c +--- linux-4.4.3/fs/aufs/debug.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/debug.c 2016-03-02 17:59:37.363498703 +0200 @@ -0,0 +1,425 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -6386,14 +6127,12 @@ index 0000000..42053aa + + return 0; +} -diff --git a/fs/aufs/debug.h b/fs/aufs/debug.h -new file mode 100644 -index 0000000..0a2e7e7 ---- /dev/null -+++ b/fs/aufs/debug.h +diff -Nurp linux-4.4.3/fs/aufs/debug.h linux-4.4.3-aufs/fs/aufs/debug.h +--- linux-4.4.3/fs/aufs/debug.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/debug.h 2016-03-02 17:59:37.363498703 +0200 @@ -0,0 +1,212 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -6604,14 +6343,12 @@ index 0000000..0a2e7e7 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DEBUG_H__ */ -diff --git a/fs/aufs/dentry.c b/fs/aufs/dentry.c -new file mode 100644 -index 0000000..aad25be ---- /dev/null -+++ b/fs/aufs/dentry.c +diff -Nurp linux-4.4.3/fs/aufs/dentry.c linux-4.4.3-aufs/fs/aufs/dentry.c +--- linux-4.4.3/fs/aufs/dentry.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dentry.c 2016-03-02 17:59:37.363498703 +0200 @@ -0,0 +1,1123 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -7733,14 +7470,12 @@ index 0000000..aad25be +const struct dentry_operations aufs_dop_noreval = { + .d_release = aufs_d_release +}; -diff --git a/fs/aufs/dentry.h b/fs/aufs/dentry.h -new file mode 100644 -index 0000000..5225221 ---- /dev/null -+++ b/fs/aufs/dentry.h +diff -Nurp linux-4.4.3/fs/aufs/dentry.h linux-4.4.3-aufs/fs/aufs/dentry.h +--- linux-4.4.3/fs/aufs/dentry.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dentry.h 2016-03-02 17:59:37.363498703 +0200 @@ -0,0 +1,221 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -7960,14 +7695,12 @@ index 0000000..5225221 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DENTRY_H__ */ -diff --git a/fs/aufs/dinfo.c b/fs/aufs/dinfo.c -new file mode 100644 -index 0000000..25b971b ---- /dev/null -+++ b/fs/aufs/dinfo.c +diff -Nurp linux-4.4.3/fs/aufs/dinfo.c linux-4.4.3-aufs/fs/aufs/dinfo.c +--- linux-4.4.3/fs/aufs/dinfo.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dinfo.c 2016-03-02 17:59:37.364498710 +0200 @@ -0,0 +1,537 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -8503,14 +8236,12 @@ index 0000000..25b971b + return bindex; + return -1; +} -diff --git a/fs/aufs/dir.c b/fs/aufs/dir.c -new file mode 100644 -index 0000000..ccdcebe ---- /dev/null -+++ b/fs/aufs/dir.c -@@ -0,0 +1,740 @@ +diff -Nurp linux-4.4.3/fs/aufs/dir.c linux-4.4.3-aufs/fs/aufs/dir.c +--- linux-4.4.3/fs/aufs/dir.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dir.c 2016-03-02 17:59:37.364498710 +0200 +@@ -0,0 +1,745 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -8748,11 +8479,13 @@ index 0000000..ccdcebe + int err; + aufs_bindex_t bindex, btail; + struct dentry *dentry, *h_dentry; ++ struct vfsmount *mnt; + + FiMustWriteLock(file); + AuDebugOn(h_file); + + err = 0; ++ mnt = file->f_path.mnt; + dentry = file->f_path.dentry; + file->f_version = d_inode(dentry)->i_version; + bindex = au_dbstart(dentry); @@ -8764,6 +8497,9 @@ index 0000000..ccdcebe + if (!h_dentry) + continue; + ++ err = vfsub_test_mntns(mnt, h_dentry->d_sb); ++ if (unlikely(err)) ++ break; + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); @@ -9249,14 +8985,12 @@ index 0000000..ccdcebe + .flush = aufs_flush_dir, + .fsync = aufs_fsync_dir +}; -diff --git a/fs/aufs/dir.h b/fs/aufs/dir.h -new file mode 100644 -index 0000000..803a0f1 ---- /dev/null -+++ b/fs/aufs/dir.h +diff -Nurp linux-4.4.3/fs/aufs/dir.h linux-4.4.3-aufs/fs/aufs/dir.h +--- linux-4.4.3/fs/aufs/dir.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dir.h 2016-03-02 17:59:37.364498710 +0200 @@ -0,0 +1,118 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -9373,14 +9107,12 @@ index 0000000..803a0f1 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIR_H__ */ -diff --git a/fs/aufs/dynop.c b/fs/aufs/dynop.c -new file mode 100644 -index 0000000..1f12838 ---- /dev/null -+++ b/fs/aufs/dynop.c +diff -Nurp linux-4.4.3/fs/aufs/dynop.c linux-4.4.3-aufs/fs/aufs/dynop.c +--- linux-4.4.3/fs/aufs/dynop.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dynop.c 2016-03-02 17:59:37.364498710 +0200 @@ -0,0 +1,356 @@ +/* -+ * Copyright (C) 2010-2015 Junjiro R. Okajima ++ * Copyright (C) 2010-2016 Junjiro R. Okajima + */ + +/* @@ -9735,14 +9467,12 @@ index 0000000..1f12838 + for (i = 0; i < AuDyLast; i++) + WARN_ON(!list_empty(&dynop[i].head)); +} -diff --git a/fs/aufs/dynop.h b/fs/aufs/dynop.h -new file mode 100644 -index 0000000..6d739c1 ---- /dev/null -+++ b/fs/aufs/dynop.h +diff -Nurp linux-4.4.3/fs/aufs/dynop.h linux-4.4.3-aufs/fs/aufs/dynop.h +--- linux-4.4.3/fs/aufs/dynop.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/dynop.h 2016-03-02 17:59:37.364498710 +0200 @@ -0,0 +1,61 @@ +/* -+ * Copyright (C) 2010-2015 Junjiro R. Okajima ++ * Copyright (C) 2010-2016 Junjiro R. Okajima + */ + +/* @@ -9802,14 +9532,12 @@ index 0000000..6d739c1 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DYNOP_H__ */ -diff --git a/fs/aufs/export.c b/fs/aufs/export.c -new file mode 100644 -index 0000000..3026f39 ---- /dev/null -+++ b/fs/aufs/export.c +diff -Nurp linux-4.4.3/fs/aufs/export.c linux-4.4.3-aufs/fs/aufs/export.c +--- linux-4.4.3/fs/aufs/export.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/export.c 2016-03-02 17:59:37.365498717 +0200 @@ -0,0 +1,819 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -10407,7 +10135,7 @@ index 0000000..3026f39 + ino = decode_ino(fh + Fh_ino); + /* it should never happen */ + if (unlikely(ino == AUFS_ROOT_INO)) -+ goto out; ++ goto out_unlock; + + dir_ino = decode_ino(fh + Fh_dir_ino); + dentry = decode_by_ino(sb, ino, dir_ino); @@ -10627,745 +10355,12 @@ index 0000000..3026f39 + BUILD_BUG_ON(sizeof(u) != sizeof(int)); + atomic_set(&sbinfo->si_xigen_next, u); +} -diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c -new file mode 100644 -index 0000000..91c2ce7 ---- /dev/null -+++ b/fs/aufs/f_op.c -@@ -0,0 +1,725 @@ -+/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima -+ */ -+ -+/* -+ * file and vm operations -+ */ -+ -+#include -+#include -+#include -+#include -+#include "aufs.h" -+ -+int au_do_open_nondir(struct file *file, int flags, struct file *h_file) -+{ -+ int err; -+ aufs_bindex_t bindex; -+ struct dentry *dentry; -+ struct au_finfo *finfo; -+ struct inode *h_inode; -+ -+ FiMustWriteLock(file); -+ -+ err = 0; -+ dentry = file->f_path.dentry; -+ AuDebugOn(IS_ERR_OR_NULL(dentry)); -+ finfo = au_fi(file); -+ memset(&finfo->fi_htop, 0, sizeof(finfo->fi_htop)); -+ atomic_set(&finfo->fi_mmapped, 0); -+ bindex = au_dbstart(dentry); -+ if (!h_file) -+ h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); -+ else -+ get_file(h_file); -+ if (IS_ERR(h_file)) -+ err = PTR_ERR(h_file); -+ else { -+ if ((flags & __O_TMPFILE) -+ && !(flags & O_EXCL)) { -+ h_inode = file_inode(h_file); -+ spin_lock(&h_inode->i_lock); -+ h_inode->i_state |= I_LINKABLE; -+ spin_unlock(&h_inode->i_lock); -+ } -+ au_set_fbstart(file, bindex); -+ au_set_h_fptr(file, bindex, h_file); -+ au_update_figen(file); -+ /* todo: necessary? */ -+ /* file->f_ra = h_file->f_ra; */ -+ } -+ -+ return err; -+} -+ -+static int aufs_open_nondir(struct inode *inode __maybe_unused, -+ struct file *file) -+{ -+ int err; -+ struct super_block *sb; -+ struct au_do_open_args args = { -+ .open = au_do_open_nondir -+ }; -+ -+ AuDbg("%pD, f_flags 0x%x, f_mode 0x%x\n", -+ file, vfsub_file_flags(file), file->f_mode); -+ -+ sb = file->f_path.dentry->d_sb; -+ si_read_lock(sb, AuLock_FLUSH); -+ err = au_do_open(file, &args); -+ si_read_unlock(sb); -+ return err; -+} -+ -+int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file) -+{ -+ struct au_finfo *finfo; -+ aufs_bindex_t bindex; -+ -+ finfo = au_fi(file); -+ au_sphl_del(&finfo->fi_hlist, -+ &au_sbi(file->f_path.dentry->d_sb)->si_files); -+ bindex = finfo->fi_btop; -+ if (bindex >= 0) -+ au_set_h_fptr(file, bindex, NULL); -+ -+ au_finfo_fin(file); -+ return 0; -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+static int au_do_flush_nondir(struct file *file, fl_owner_t id) -+{ -+ int err; -+ struct file *h_file; -+ -+ err = 0; -+ h_file = au_hf_top(file); -+ if (h_file) -+ err = vfsub_flush(h_file, id); -+ return err; -+} -+ -+static int aufs_flush_nondir(struct file *file, fl_owner_t id) -+{ -+ return au_do_flush(file, id, au_do_flush_nondir); -+} -+ -+/* ---------------------------------------------------------------------- */ -+/* -+ * read and write functions acquire [fdi]_rwsem once, but release before -+ * mmap_sem. This is because to stop a race condition between mmap(2). -+ * Releasing these aufs-rwsem should be safe, no branch-mamagement (by keeping -+ * si_rwsem), no harmful copy-up should happen. Actually copy-up may happen in -+ * read functions after [fdi]_rwsem are released, but it should be harmless. -+ */ -+ -+/* Callers should call au_read_post() or fput() in the end */ -+struct file *au_read_pre(struct file *file, int keep_fi) -+{ -+ struct file *h_file; -+ int err; -+ -+ err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); -+ if (!err) { -+ di_read_unlock(file->f_path.dentry, AuLock_IR); -+ h_file = au_hf_top(file); -+ get_file(h_file); -+ if (!keep_fi) -+ fi_read_unlock(file); -+ } else -+ h_file = ERR_PTR(err); -+ -+ return h_file; -+} -+ -+static void au_read_post(struct inode *inode, struct file *h_file) -+{ -+ /* update without lock, I don't think it a problem */ -+ fsstack_copy_attr_atime(inode, file_inode(h_file)); -+ fput(h_file); -+} -+ -+struct au_write_pre { -+ blkcnt_t blks; -+ aufs_bindex_t bstart; -+}; -+ -+/* -+ * return with iinfo is write-locked -+ * callers should call au_write_post() or iinfo_write_unlock() + fput() in the -+ * end -+ */ -+static struct file *au_write_pre(struct file *file, int do_ready, -+ struct au_write_pre *wpre) -+{ -+ struct file *h_file; -+ struct dentry *dentry; -+ int err; -+ struct au_pin pin; -+ -+ err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); -+ h_file = ERR_PTR(err); -+ if (unlikely(err)) -+ goto out; -+ -+ dentry = file->f_path.dentry; -+ if (do_ready) { -+ err = au_ready_to_write(file, -1, &pin); -+ if (unlikely(err)) { -+ h_file = ERR_PTR(err); -+ di_write_unlock(dentry); -+ goto out_fi; -+ } -+ } -+ -+ di_downgrade_lock(dentry, /*flags*/0); -+ if (wpre) -+ wpre->bstart = au_fbstart(file); -+ h_file = au_hf_top(file); -+ get_file(h_file); -+ if (wpre) -+ wpre->blks = file_inode(h_file)->i_blocks; -+ if (do_ready) -+ au_unpin(&pin); -+ di_read_unlock(dentry, /*flags*/0); -+ -+out_fi: -+ fi_write_unlock(file); -+out: -+ return h_file; -+} -+ -+static void au_write_post(struct inode *inode, struct file *h_file, -+ struct au_write_pre *wpre, ssize_t written) -+{ -+ struct inode *h_inode; -+ -+ au_cpup_attr_timesizes(inode); -+ AuDebugOn(au_ibstart(inode) != wpre->bstart); -+ h_inode = file_inode(h_file); -+ inode->i_mode = h_inode->i_mode; -+ ii_write_unlock(inode); -+ fput(h_file); -+ -+ /* AuDbg("blks %llu, %llu\n", (u64)blks, (u64)h_inode->i_blocks); */ -+ if (written > 0) -+ au_fhsm_wrote(inode->i_sb, wpre->bstart, -+ /*force*/h_inode->i_blocks > wpre->blks); -+} -+ -+static ssize_t aufs_read(struct file *file, char __user *buf, size_t count, -+ loff_t *ppos) -+{ -+ ssize_t err; -+ struct inode *inode; -+ struct file *h_file; -+ struct super_block *sb; -+ -+ inode = file_inode(file); -+ sb = inode->i_sb; -+ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); -+ -+ h_file = au_read_pre(file, /*keep_fi*/0); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out; -+ -+ /* filedata may be obsoleted by concurrent copyup, but no problem */ -+ err = vfsub_read_u(h_file, buf, count, ppos); -+ /* todo: necessary? */ -+ /* file->f_ra = h_file->f_ra; */ -+ au_read_post(inode, h_file); -+ -+out: -+ si_read_unlock(sb); -+ return err; -+} -+ -+/* -+ * todo: very ugly -+ * it locks both of i_mutex and si_rwsem for read in safe. -+ * if the plink maintenance mode continues forever (that is the problem), -+ * may loop forever. -+ */ -+static void au_mtx_and_read_lock(struct inode *inode) -+{ -+ int err; -+ struct super_block *sb = inode->i_sb; -+ -+ while (1) { -+ mutex_lock(&inode->i_mutex); -+ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); -+ if (!err) -+ break; -+ mutex_unlock(&inode->i_mutex); -+ si_read_lock(sb, AuLock_NOPLMW); -+ si_read_unlock(sb); -+ } -+} -+ -+static ssize_t aufs_write(struct file *file, const char __user *ubuf, -+ size_t count, loff_t *ppos) -+{ -+ ssize_t err; -+ struct au_write_pre wpre; -+ struct inode *inode; -+ struct file *h_file; -+ char __user *buf = (char __user *)ubuf; -+ -+ inode = file_inode(file); -+ au_mtx_and_read_lock(inode); -+ -+ h_file = au_write_pre(file, /*do_ready*/1, &wpre); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out; -+ -+ err = vfsub_write_u(h_file, buf, count, ppos); -+ au_write_post(inode, h_file, &wpre, err); -+ -+out: -+ si_read_unlock(inode->i_sb); -+ mutex_unlock(&inode->i_mutex); -+ return err; -+} -+ -+static ssize_t au_do_iter(struct file *h_file, int rw, struct kiocb *kio, -+ struct iov_iter *iov_iter) -+{ -+ ssize_t err; -+ struct file *file; -+ ssize_t (*iter)(struct kiocb *, struct iov_iter *); -+ -+ err = security_file_permission(h_file, rw); -+ if (unlikely(err)) -+ goto out; -+ -+ err = -ENOSYS; -+ iter = NULL; -+ if (rw == MAY_READ) -+ iter = h_file->f_op->read_iter; -+ else if (rw == MAY_WRITE) -+ iter = h_file->f_op->write_iter; -+ -+ file = kio->ki_filp; -+ kio->ki_filp = h_file; -+ if (iter) { -+ lockdep_off(); -+ err = iter(kio, iov_iter); -+ lockdep_on(); -+ } else -+ /* currently there is no such fs */ -+ WARN_ON_ONCE(1); -+ kio->ki_filp = file; -+ -+out: -+ return err; -+} -+ -+static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter) -+{ -+ ssize_t err; -+ struct file *file, *h_file; -+ struct inode *inode; -+ struct super_block *sb; -+ -+ file = kio->ki_filp; -+ inode = file_inode(file); -+ sb = inode->i_sb; -+ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); -+ -+ h_file = au_read_pre(file, /*keep_fi*/0); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out; -+ -+ err = au_do_iter(h_file, MAY_READ, kio, iov_iter); -+ /* todo: necessary? */ -+ /* file->f_ra = h_file->f_ra; */ -+ au_read_post(inode, h_file); -+ -+out: -+ si_read_unlock(sb); -+ return err; -+} -+ -+static ssize_t aufs_write_iter(struct kiocb *kio, struct iov_iter *iov_iter) -+{ -+ ssize_t err; -+ struct au_write_pre wpre; -+ struct inode *inode; -+ struct file *file, *h_file; -+ -+ file = kio->ki_filp; -+ inode = file_inode(file); -+ au_mtx_and_read_lock(inode); -+ -+ h_file = au_write_pre(file, /*do_ready*/1, &wpre); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out; -+ -+ err = au_do_iter(h_file, MAY_WRITE, kio, iov_iter); -+ au_write_post(inode, h_file, &wpre, err); -+ -+out: -+ si_read_unlock(inode->i_sb); -+ mutex_unlock(&inode->i_mutex); -+ return err; -+} -+ -+static ssize_t aufs_splice_read(struct file *file, loff_t *ppos, -+ struct pipe_inode_info *pipe, size_t len, -+ unsigned int flags) -+{ -+ ssize_t err; -+ struct file *h_file; -+ struct inode *inode; -+ struct super_block *sb; -+ -+ inode = file_inode(file); -+ sb = inode->i_sb; -+ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); -+ -+ h_file = au_read_pre(file, /*keep_fi*/1); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out; -+ -+ if (au_test_loopback_kthread()) { -+ au_warn_loopback(h_file->f_path.dentry->d_sb); -+ if (file->f_mapping != h_file->f_mapping) { -+ file->f_mapping = h_file->f_mapping; -+ smp_mb(); /* unnecessary? */ -+ } -+ } -+ fi_read_unlock(file); -+ -+ err = vfsub_splice_to(h_file, ppos, pipe, len, flags); -+ /* todo: necessasry? */ -+ /* file->f_ra = h_file->f_ra; */ -+ au_read_post(inode, h_file); -+ -+out: -+ si_read_unlock(sb); -+ return err; -+} -+ -+static ssize_t -+aufs_splice_write(struct pipe_inode_info *pipe, struct file *file, loff_t *ppos, -+ size_t len, unsigned int flags) -+{ -+ ssize_t err; -+ struct au_write_pre wpre; -+ struct inode *inode; -+ struct file *h_file; -+ -+ inode = file_inode(file); -+ au_mtx_and_read_lock(inode); -+ -+ h_file = au_write_pre(file, /*do_ready*/1, &wpre); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out; -+ -+ err = vfsub_splice_from(pipe, h_file, ppos, len, flags); -+ au_write_post(inode, h_file, &wpre, err); -+ -+out: -+ si_read_unlock(inode->i_sb); -+ mutex_unlock(&inode->i_mutex); -+ return err; -+} -+ -+static long aufs_fallocate(struct file *file, int mode, loff_t offset, -+ loff_t len) -+{ -+ long err; -+ struct au_write_pre wpre; -+ struct inode *inode; -+ struct file *h_file; -+ -+ inode = file_inode(file); -+ au_mtx_and_read_lock(inode); -+ -+ h_file = au_write_pre(file, /*do_ready*/1, &wpre); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out; -+ -+ lockdep_off(); -+ err = vfs_fallocate(h_file, mode, offset, len); -+ lockdep_on(); -+ au_write_post(inode, h_file, &wpre, /*written*/1); -+ -+out: -+ si_read_unlock(inode->i_sb); -+ mutex_unlock(&inode->i_mutex); -+ return err; -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+/* -+ * The locking order around current->mmap_sem. -+ * - in most and regular cases -+ * file I/O syscall -- aufs_read() or something -+ * -- si_rwsem for read -- mmap_sem -+ * (Note that [fdi]i_rwsem are released before mmap_sem). -+ * - in mmap case -+ * mmap(2) -- mmap_sem -- aufs_mmap() -- si_rwsem for read -- [fdi]i_rwsem -+ * This AB-BA order is definitly bad, but is not a problem since "si_rwsem for -+ * read" allows muliple processes to acquire it and [fdi]i_rwsem are not held in -+ * file I/O. Aufs needs to stop lockdep in aufs_mmap() though. -+ * It means that when aufs acquires si_rwsem for write, the process should never -+ * acquire mmap_sem. -+ * -+ * Actually aufs_iterate() holds [fdi]i_rwsem before mmap_sem, but this is not a -+ * problem either since any directory is not able to be mmap-ed. -+ * The similar scenario is applied to aufs_readlink() too. -+ */ -+ -+#if 0 /* stop calling security_file_mmap() */ -+/* cf. linux/include/linux/mman.h: calc_vm_prot_bits() */ -+#define AuConv_VM_PROT(f, b) _calc_vm_trans(f, VM_##b, PROT_##b) -+ -+static unsigned long au_arch_prot_conv(unsigned long flags) -+{ -+ /* currently ppc64 only */ -+#ifdef CONFIG_PPC64 -+ /* cf. linux/arch/powerpc/include/asm/mman.h */ -+ AuDebugOn(arch_calc_vm_prot_bits(-1) != VM_SAO); -+ return AuConv_VM_PROT(flags, SAO); -+#else -+ AuDebugOn(arch_calc_vm_prot_bits(-1)); -+ return 0; -+#endif -+} -+ -+static unsigned long au_prot_conv(unsigned long flags) -+{ -+ return AuConv_VM_PROT(flags, READ) -+ | AuConv_VM_PROT(flags, WRITE) -+ | AuConv_VM_PROT(flags, EXEC) -+ | au_arch_prot_conv(flags); -+} -+ -+/* cf. linux/include/linux/mman.h: calc_vm_flag_bits() */ -+#define AuConv_VM_MAP(f, b) _calc_vm_trans(f, VM_##b, MAP_##b) -+ -+static unsigned long au_flag_conv(unsigned long flags) -+{ -+ return AuConv_VM_MAP(flags, GROWSDOWN) -+ | AuConv_VM_MAP(flags, DENYWRITE) -+ | AuConv_VM_MAP(flags, LOCKED); -+} -+#endif -+ -+static int aufs_mmap(struct file *file, struct vm_area_struct *vma) -+{ -+ int err; -+ const unsigned char wlock -+ = (file->f_mode & FMODE_WRITE) && (vma->vm_flags & VM_SHARED); -+ struct super_block *sb; -+ struct file *h_file; -+ struct inode *inode; -+ -+ AuDbgVmRegion(file, vma); -+ -+ inode = file_inode(file); -+ sb = inode->i_sb; -+ lockdep_off(); -+ si_read_lock(sb, AuLock_NOPLMW); -+ -+ h_file = au_write_pre(file, wlock, /*wpre*/NULL); -+ lockdep_on(); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out; -+ -+ err = 0; -+ au_set_mmapped(file); -+ au_vm_file_reset(vma, h_file); -+ /* -+ * we cannot call security_mmap_file() here since it may acquire -+ * mmap_sem or i_mutex. -+ * -+ * err = security_mmap_file(h_file, au_prot_conv(vma->vm_flags), -+ * au_flag_conv(vma->vm_flags)); -+ */ -+ if (!err) -+ err = h_file->f_op->mmap(h_file, vma); -+ if (!err) { -+ au_vm_prfile_set(vma, file); -+ fsstack_copy_attr_atime(inode, file_inode(h_file)); -+ goto out_fput; /* success */ -+ } -+ au_unset_mmapped(file); -+ au_vm_file_reset(vma, file); -+ -+out_fput: -+ lockdep_off(); -+ ii_write_unlock(inode); -+ lockdep_on(); -+ fput(h_file); -+out: -+ lockdep_off(); -+ si_read_unlock(sb); -+ lockdep_on(); -+ AuTraceErr(err); -+ return err; -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+static int aufs_fsync_nondir(struct file *file, loff_t start, loff_t end, -+ int datasync) -+{ -+ int err; -+ struct au_write_pre wpre; -+ struct inode *inode; -+ struct file *h_file; -+ -+ err = 0; /* -EBADF; */ /* posix? */ -+ if (unlikely(!(file->f_mode & FMODE_WRITE))) -+ goto out; -+ -+ inode = file_inode(file); -+ au_mtx_and_read_lock(inode); -+ -+ h_file = au_write_pre(file, /*do_ready*/1, &wpre); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out_unlock; -+ -+ err = vfsub_fsync(h_file, &h_file->f_path, datasync); -+ au_write_post(inode, h_file, &wpre, /*written*/0); -+ -+out_unlock: -+ si_read_unlock(inode->i_sb); -+ mutex_unlock(&inode->i_mutex); -+out: -+ return err; -+} -+ -+/* no one supports this operation, currently */ -+#if 0 -+static int aufs_aio_fsync_nondir(struct kiocb *kio, int datasync) -+{ -+ int err; -+ struct au_write_pre wpre; -+ struct inode *inode; -+ struct file *file, *h_file; -+ -+ err = 0; /* -EBADF; */ /* posix? */ -+ if (unlikely(!(file->f_mode & FMODE_WRITE))) -+ goto out; -+ -+ file = kio->ki_filp; -+ inode = file_inode(file); -+ au_mtx_and_read_lock(inode); -+ -+ h_file = au_write_pre(file, /*do_ready*/1, &wpre); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out_unlock; -+ -+ err = -ENOSYS; -+ h_file = au_hf_top(file); -+ if (h_file->f_op->aio_fsync) { -+ struct mutex *h_mtx; -+ -+ h_mtx = &file_inode(h_file)->i_mutex; -+ if (!is_sync_kiocb(kio)) { -+ get_file(h_file); -+ fput(file); -+ } -+ kio->ki_filp = h_file; -+ err = h_file->f_op->aio_fsync(kio, datasync); -+ mutex_lock_nested(h_mtx, AuLsc_I_CHILD); -+ if (!err) -+ vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); -+ /*ignore*/ -+ mutex_unlock(h_mtx); -+ } -+ au_write_post(inode, h_file, &wpre, /*written*/0); -+ -+out_unlock: -+ si_read_unlock(inode->sb); -+ mutex_unlock(&inode->i_mutex); -+out: -+ return err; -+} -+#endif -+ -+static int aufs_fasync(int fd, struct file *file, int flag) -+{ -+ int err; -+ struct file *h_file; -+ struct super_block *sb; -+ -+ sb = file->f_path.dentry->d_sb; -+ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); -+ -+ h_file = au_read_pre(file, /*keep_fi*/0); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out; -+ -+ if (h_file->f_op->fasync) -+ err = h_file->f_op->fasync(fd, h_file, flag); -+ fput(h_file); /* instead of au_read_post() */ -+ -+out: -+ si_read_unlock(sb); -+ return err; -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+/* no one supports this operation, currently */ -+#if 0 -+static ssize_t aufs_sendpage(struct file *file, struct page *page, int offset, -+ size_t len, loff_t *pos, int more) -+{ -+} -+#endif -+ -+/* ---------------------------------------------------------------------- */ -+ -+const struct file_operations aufs_file_fop = { -+ .owner = THIS_MODULE, -+ -+ .llseek = default_llseek, -+ -+ .read = aufs_read, -+ .write = aufs_write, -+ .read_iter = aufs_read_iter, -+ .write_iter = aufs_write_iter, -+ -+#ifdef CONFIG_AUFS_POLL -+ .poll = aufs_poll, -+#endif -+ .unlocked_ioctl = aufs_ioctl_nondir, -+#ifdef CONFIG_COMPAT -+ .compat_ioctl = aufs_compat_ioctl_nondir, -+#endif -+ .mmap = aufs_mmap, -+ .open = aufs_open_nondir, -+ .flush = aufs_flush_nondir, -+ .release = aufs_release_nondir, -+ .fsync = aufs_fsync_nondir, -+ /* .aio_fsync = aufs_aio_fsync_nondir, */ -+ .fasync = aufs_fasync, -+ /* .sendpage = aufs_sendpage, */ -+ .splice_write = aufs_splice_write, -+ .splice_read = aufs_splice_read, -+#if 0 -+ .aio_splice_write = aufs_aio_splice_write, -+ .aio_splice_read = aufs_aio_splice_read, -+#endif -+ .fallocate = aufs_fallocate -+}; -diff --git a/fs/aufs/fhsm.c b/fs/aufs/fhsm.c -new file mode 100644 -index 0000000..47106cb ---- /dev/null -+++ b/fs/aufs/fhsm.c +diff -Nurp linux-4.4.3/fs/aufs/fhsm.c linux-4.4.3-aufs/fs/aufs/fhsm.c +--- linux-4.4.3/fs/aufs/fhsm.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/fhsm.c 2016-03-02 17:59:37.365498717 +0200 @@ -0,0 +1,412 @@ +/* -+ * Copyright (C) 2011-2015 Junjiro R. Okajima ++ * Copyright (C) 2011-2016 Junjiro R. Okajima + */ + +/* @@ -11776,14 +10771,12 @@ index 0000000..47106cb + if (u != AUFS_FHSM_CACHE_DEF_SEC) + seq_printf(seq, ",fhsm_sec=%u", u); +} -diff --git a/fs/aufs/file.c b/fs/aufs/file.c -new file mode 100644 -index 0000000..72316b1 ---- /dev/null -+++ b/fs/aufs/file.c +diff -Nurp linux-4.4.3/fs/aufs/file.c linux-4.4.3-aufs/fs/aufs/file.c +--- linux-4.4.3/fs/aufs/file.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/file.c 2016-03-02 17:59:37.366498724 +0200 @@ -0,0 +1,831 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -12613,14 +11606,12 @@ index 0000000..72316b1 + .swap_deactivate = aufs_swap_deactivate +#endif /* CONFIG_AUFS_DEBUG */ +}; -diff --git a/fs/aufs/file.h b/fs/aufs/file.h -new file mode 100644 -index 0000000..488473e ---- /dev/null -+++ b/fs/aufs/file.h +diff -Nurp linux-4.4.3/fs/aufs/file.h linux-4.4.3-aufs/fs/aufs/file.h +--- linux-4.4.3/fs/aufs/file.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/file.h 2016-03-02 17:59:37.366498724 +0200 @@ -0,0 +1,278 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -12897,14 +11888,12 @@ index 0000000..488473e + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FILE_H__ */ -diff --git a/fs/aufs/finfo.c b/fs/aufs/finfo.c -new file mode 100644 -index 0000000..e709205 ---- /dev/null -+++ b/fs/aufs/finfo.c +diff -Nurp linux-4.4.3/fs/aufs/finfo.c linux-4.4.3-aufs/fs/aufs/finfo.c +--- linux-4.4.3/fs/aufs/finfo.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/finfo.c 2016-03-02 17:59:37.366498724 +0200 @@ -0,0 +1,143 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -13046,14 +12035,775 @@ index 0000000..e709205 +out: + return err; +} -diff --git a/fs/aufs/fstype.h b/fs/aufs/fstype.h -new file mode 100644 -index 0000000..6196c60 ---- /dev/null -+++ b/fs/aufs/fstype.h +diff -Nurp linux-4.4.3/fs/aufs/f_op.c linux-4.4.3-aufs/fs/aufs/f_op.c +--- linux-4.4.3/fs/aufs/f_op.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/f_op.c 2016-03-02 17:59:37.365498717 +0200 +@@ -0,0 +1,759 @@ ++/* ++ * Copyright (C) 2005-2016 Junjiro R. Okajima ++ */ ++ ++/* ++ * file and vm operations ++ */ ++ ++#include ++#include ++#include ++#include ++#include "aufs.h" ++ ++int au_do_open_nondir(struct file *file, int flags, struct file *h_file) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ struct dentry *dentry, *h_dentry; ++ struct au_finfo *finfo; ++ struct inode *h_inode; ++ ++ FiMustWriteLock(file); ++ ++ err = 0; ++ dentry = file->f_path.dentry; ++ AuDebugOn(IS_ERR_OR_NULL(dentry)); ++ finfo = au_fi(file); ++ memset(&finfo->fi_htop, 0, sizeof(finfo->fi_htop)); ++ atomic_set(&finfo->fi_mmapped, 0); ++ bindex = au_dbstart(dentry); ++ if (!h_file) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ err = vfsub_test_mntns(file->f_path.mnt, h_dentry->d_sb); ++ if (unlikely(err)) ++ goto out; ++ h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); ++ } else { ++ h_dentry = h_file->f_path.dentry; ++ err = vfsub_test_mntns(file->f_path.mnt, h_dentry->d_sb); ++ if (unlikely(err)) ++ goto out; ++ get_file(h_file); ++ } ++ if (IS_ERR(h_file)) ++ err = PTR_ERR(h_file); ++ else { ++ if ((flags & __O_TMPFILE) ++ && !(flags & O_EXCL)) { ++ h_inode = file_inode(h_file); ++ spin_lock(&h_inode->i_lock); ++ h_inode->i_state |= I_LINKABLE; ++ spin_unlock(&h_inode->i_lock); ++ } ++ au_set_fbstart(file, bindex); ++ au_set_h_fptr(file, bindex, h_file); ++ au_update_figen(file); ++ /* todo: necessary? */ ++ /* file->f_ra = h_file->f_ra; */ ++ } ++ ++out: ++ return err; ++} ++ ++static int aufs_open_nondir(struct inode *inode __maybe_unused, ++ struct file *file) ++{ ++ int err; ++ struct super_block *sb; ++ struct au_do_open_args args = { ++ .open = au_do_open_nondir ++ }; ++ ++ AuDbg("%pD, f_flags 0x%x, f_mode 0x%x\n", ++ file, vfsub_file_flags(file), file->f_mode); ++ ++ sb = file->f_path.dentry->d_sb; ++ si_read_lock(sb, AuLock_FLUSH); ++ err = au_do_open(file, &args); ++ si_read_unlock(sb); ++ return err; ++} ++ ++int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file) ++{ ++ struct au_finfo *finfo; ++ aufs_bindex_t bindex; ++ ++ finfo = au_fi(file); ++ au_sphl_del(&finfo->fi_hlist, ++ &au_sbi(file->f_path.dentry->d_sb)->si_files); ++ bindex = finfo->fi_btop; ++ if (bindex >= 0) ++ au_set_h_fptr(file, bindex, NULL); ++ ++ au_finfo_fin(file); ++ return 0; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_do_flush_nondir(struct file *file, fl_owner_t id) ++{ ++ int err; ++ struct file *h_file; ++ ++ err = 0; ++ h_file = au_hf_top(file); ++ if (h_file) ++ err = vfsub_flush(h_file, id); ++ return err; ++} ++ ++static int aufs_flush_nondir(struct file *file, fl_owner_t id) ++{ ++ return au_do_flush(file, id, au_do_flush_nondir); ++} ++ ++/* ---------------------------------------------------------------------- */ ++/* ++ * read and write functions acquire [fdi]_rwsem once, but release before ++ * mmap_sem. This is because to stop a race condition between mmap(2). ++ * Releasing these aufs-rwsem should be safe, no branch-mamagement (by keeping ++ * si_rwsem), no harmful copy-up should happen. Actually copy-up may happen in ++ * read functions after [fdi]_rwsem are released, but it should be harmless. ++ */ ++ ++/* Callers should call au_read_post() or fput() in the end */ ++struct file *au_read_pre(struct file *file, int keep_fi) ++{ ++ struct file *h_file; ++ int err; ++ ++ err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); ++ if (!err) { ++ di_read_unlock(file->f_path.dentry, AuLock_IR); ++ h_file = au_hf_top(file); ++ get_file(h_file); ++ if (!keep_fi) ++ fi_read_unlock(file); ++ } else ++ h_file = ERR_PTR(err); ++ ++ return h_file; ++} ++ ++static void au_read_post(struct inode *inode, struct file *h_file) ++{ ++ /* update without lock, I don't think it a problem */ ++ fsstack_copy_attr_atime(inode, file_inode(h_file)); ++ fput(h_file); ++} ++ ++struct au_write_pre { ++ blkcnt_t blks; ++ aufs_bindex_t bstart; ++}; ++ ++/* ++ * return with iinfo is write-locked ++ * callers should call au_write_post() or iinfo_write_unlock() + fput() in the ++ * end ++ */ ++static struct file *au_write_pre(struct file *file, int do_ready, ++ struct au_write_pre *wpre) ++{ ++ struct file *h_file; ++ struct dentry *dentry; ++ int err; ++ struct au_pin pin; ++ ++ err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); ++ h_file = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out; ++ ++ dentry = file->f_path.dentry; ++ if (do_ready) { ++ err = au_ready_to_write(file, -1, &pin); ++ if (unlikely(err)) { ++ h_file = ERR_PTR(err); ++ di_write_unlock(dentry); ++ goto out_fi; ++ } ++ } ++ ++ di_downgrade_lock(dentry, /*flags*/0); ++ if (wpre) ++ wpre->bstart = au_fbstart(file); ++ h_file = au_hf_top(file); ++ get_file(h_file); ++ if (wpre) ++ wpre->blks = file_inode(h_file)->i_blocks; ++ if (do_ready) ++ au_unpin(&pin); ++ di_read_unlock(dentry, /*flags*/0); ++ ++out_fi: ++ fi_write_unlock(file); ++out: ++ return h_file; ++} ++ ++static void au_write_post(struct inode *inode, struct file *h_file, ++ struct au_write_pre *wpre, ssize_t written) ++{ ++ struct inode *h_inode; ++ ++ au_cpup_attr_timesizes(inode); ++ AuDebugOn(au_ibstart(inode) != wpre->bstart); ++ h_inode = file_inode(h_file); ++ inode->i_mode = h_inode->i_mode; ++ ii_write_unlock(inode); ++ fput(h_file); ++ ++ /* AuDbg("blks %llu, %llu\n", (u64)blks, (u64)h_inode->i_blocks); */ ++ if (written > 0) ++ au_fhsm_wrote(inode->i_sb, wpre->bstart, ++ /*force*/h_inode->i_blocks > wpre->blks); ++} ++ ++static ssize_t aufs_read(struct file *file, char __user *buf, size_t count, ++ loff_t *ppos) ++{ ++ ssize_t err; ++ struct inode *inode; ++ struct file *h_file; ++ struct super_block *sb; ++ ++ inode = file_inode(file); ++ sb = inode->i_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ++ h_file = au_read_pre(file, /*keep_fi*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ /* filedata may be obsoleted by concurrent copyup, but no problem */ ++ err = vfsub_read_u(h_file, buf, count, ppos); ++ /* todo: necessary? */ ++ /* file->f_ra = h_file->f_ra; */ ++ au_read_post(inode, h_file); ++ ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++/* ++ * todo: very ugly ++ * it locks both of i_mutex and si_rwsem for read in safe. ++ * if the plink maintenance mode continues forever (that is the problem), ++ * may loop forever. ++ */ ++static void au_mtx_and_read_lock(struct inode *inode) ++{ ++ int err; ++ struct super_block *sb = inode->i_sb; ++ ++ while (1) { ++ mutex_lock(&inode->i_mutex); ++ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (!err) ++ break; ++ mutex_unlock(&inode->i_mutex); ++ si_read_lock(sb, AuLock_NOPLMW); ++ si_read_unlock(sb); ++ } ++} ++ ++static ssize_t aufs_write(struct file *file, const char __user *ubuf, ++ size_t count, loff_t *ppos) ++{ ++ ssize_t err; ++ struct au_write_pre wpre; ++ struct inode *inode; ++ struct file *h_file; ++ char __user *buf = (char __user *)ubuf; ++ ++ inode = file_inode(file); ++ au_mtx_and_read_lock(inode); ++ ++ h_file = au_write_pre(file, /*do_ready*/1, &wpre); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ err = vfsub_write_u(h_file, buf, count, ppos); ++ au_write_post(inode, h_file, &wpre, err); ++ ++out: ++ si_read_unlock(inode->i_sb); ++ mutex_unlock(&inode->i_mutex); ++ return err; ++} ++ ++static ssize_t au_do_iter(struct file *h_file, int rw, struct kiocb *kio, ++ struct iov_iter *iov_iter) ++{ ++ ssize_t err; ++ struct file *file; ++ ssize_t (*iter)(struct kiocb *, struct iov_iter *); ++ ++ err = security_file_permission(h_file, rw); ++ if (unlikely(err)) ++ goto out; ++ ++ err = -ENOSYS; ++ iter = NULL; ++ if (rw == MAY_READ) ++ iter = h_file->f_op->read_iter; ++ else if (rw == MAY_WRITE) ++ iter = h_file->f_op->write_iter; ++ ++ file = kio->ki_filp; ++ kio->ki_filp = h_file; ++ if (iter) { ++ lockdep_off(); ++ err = iter(kio, iov_iter); ++ lockdep_on(); ++ } else ++ /* currently there is no such fs */ ++ WARN_ON_ONCE(1); ++ kio->ki_filp = file; ++ ++out: ++ return err; ++} ++ ++static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter) ++{ ++ ssize_t err; ++ struct file *file, *h_file; ++ struct inode *inode; ++ struct super_block *sb; ++ ++ file = kio->ki_filp; ++ inode = file_inode(file); ++ sb = inode->i_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ++ h_file = au_read_pre(file, /*keep_fi*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ err = au_do_iter(h_file, MAY_READ, kio, iov_iter); ++ /* todo: necessary? */ ++ /* file->f_ra = h_file->f_ra; */ ++ au_read_post(inode, h_file); ++ ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++static ssize_t aufs_write_iter(struct kiocb *kio, struct iov_iter *iov_iter) ++{ ++ ssize_t err; ++ struct au_write_pre wpre; ++ struct inode *inode; ++ struct file *file, *h_file; ++ ++ file = kio->ki_filp; ++ inode = file_inode(file); ++ au_mtx_and_read_lock(inode); ++ ++ h_file = au_write_pre(file, /*do_ready*/1, &wpre); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ err = au_do_iter(h_file, MAY_WRITE, kio, iov_iter); ++ au_write_post(inode, h_file, &wpre, err); ++ ++out: ++ si_read_unlock(inode->i_sb); ++ mutex_unlock(&inode->i_mutex); ++ return err; ++} ++ ++static ssize_t aufs_splice_read(struct file *file, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags) ++{ ++ ssize_t err; ++ struct file *h_file; ++ struct inode *inode; ++ struct super_block *sb; ++ ++ inode = file_inode(file); ++ sb = inode->i_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ++ h_file = au_read_pre(file, /*keep_fi*/1); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ if (au_test_loopback_kthread()) { ++ au_warn_loopback(h_file->f_path.dentry->d_sb); ++ if (file->f_mapping != h_file->f_mapping) { ++ file->f_mapping = h_file->f_mapping; ++ smp_mb(); /* unnecessary? */ ++ } ++ } ++ fi_read_unlock(file); ++ ++ err = vfsub_splice_to(h_file, ppos, pipe, len, flags); ++ /* todo: necessasry? */ ++ /* file->f_ra = h_file->f_ra; */ ++ au_read_post(inode, h_file); ++ ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++static ssize_t ++aufs_splice_write(struct pipe_inode_info *pipe, struct file *file, loff_t *ppos, ++ size_t len, unsigned int flags) ++{ ++ ssize_t err; ++ struct au_write_pre wpre; ++ struct inode *inode; ++ struct file *h_file; ++ ++ inode = file_inode(file); ++ au_mtx_and_read_lock(inode); ++ ++ h_file = au_write_pre(file, /*do_ready*/1, &wpre); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ err = vfsub_splice_from(pipe, h_file, ppos, len, flags); ++ au_write_post(inode, h_file, &wpre, err); ++ ++out: ++ si_read_unlock(inode->i_sb); ++ mutex_unlock(&inode->i_mutex); ++ return err; ++} ++ ++static long aufs_fallocate(struct file *file, int mode, loff_t offset, ++ loff_t len) ++{ ++ long err; ++ struct au_write_pre wpre; ++ struct inode *inode; ++ struct file *h_file; ++ ++ inode = file_inode(file); ++ au_mtx_and_read_lock(inode); ++ ++ h_file = au_write_pre(file, /*do_ready*/1, &wpre); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ lockdep_off(); ++ err = vfs_fallocate(h_file, mode, offset, len); ++ lockdep_on(); ++ au_write_post(inode, h_file, &wpre, /*written*/1); ++ ++out: ++ si_read_unlock(inode->i_sb); ++ mutex_unlock(&inode->i_mutex); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * The locking order around current->mmap_sem. ++ * - in most and regular cases ++ * file I/O syscall -- aufs_read() or something ++ * -- si_rwsem for read -- mmap_sem ++ * (Note that [fdi]i_rwsem are released before mmap_sem). ++ * - in mmap case ++ * mmap(2) -- mmap_sem -- aufs_mmap() -- si_rwsem for read -- [fdi]i_rwsem ++ * This AB-BA order is definitly bad, but is not a problem since "si_rwsem for ++ * read" allows muliple processes to acquire it and [fdi]i_rwsem are not held in ++ * file I/O. Aufs needs to stop lockdep in aufs_mmap() though. ++ * It means that when aufs acquires si_rwsem for write, the process should never ++ * acquire mmap_sem. ++ * ++ * Actually aufs_iterate() holds [fdi]i_rwsem before mmap_sem, but this is not a ++ * problem either since any directory is not able to be mmap-ed. ++ * The similar scenario is applied to aufs_readlink() too. ++ */ ++ ++#if 0 /* stop calling security_file_mmap() */ ++/* cf. linux/include/linux/mman.h: calc_vm_prot_bits() */ ++#define AuConv_VM_PROT(f, b) _calc_vm_trans(f, VM_##b, PROT_##b) ++ ++static unsigned long au_arch_prot_conv(unsigned long flags) ++{ ++ /* currently ppc64 only */ ++#ifdef CONFIG_PPC64 ++ /* cf. linux/arch/powerpc/include/asm/mman.h */ ++ AuDebugOn(arch_calc_vm_prot_bits(-1) != VM_SAO); ++ return AuConv_VM_PROT(flags, SAO); ++#else ++ AuDebugOn(arch_calc_vm_prot_bits(-1)); ++ return 0; ++#endif ++} ++ ++static unsigned long au_prot_conv(unsigned long flags) ++{ ++ return AuConv_VM_PROT(flags, READ) ++ | AuConv_VM_PROT(flags, WRITE) ++ | AuConv_VM_PROT(flags, EXEC) ++ | au_arch_prot_conv(flags); ++} ++ ++/* cf. linux/include/linux/mman.h: calc_vm_flag_bits() */ ++#define AuConv_VM_MAP(f, b) _calc_vm_trans(f, VM_##b, MAP_##b) ++ ++static unsigned long au_flag_conv(unsigned long flags) ++{ ++ return AuConv_VM_MAP(flags, GROWSDOWN) ++ | AuConv_VM_MAP(flags, DENYWRITE) ++ | AuConv_VM_MAP(flags, LOCKED); ++} ++#endif ++ ++static int aufs_mmap(struct file *file, struct vm_area_struct *vma) ++{ ++ int err; ++ const unsigned char wlock ++ = (file->f_mode & FMODE_WRITE) && (vma->vm_flags & VM_SHARED); ++ struct super_block *sb; ++ struct file *h_file; ++ struct inode *inode; ++ ++ AuDbgVmRegion(file, vma); ++ ++ inode = file_inode(file); ++ sb = inode->i_sb; ++ lockdep_off(); ++ si_read_lock(sb, AuLock_NOPLMW); ++ ++ h_file = au_write_pre(file, wlock, /*wpre*/NULL); ++ lockdep_on(); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ err = 0; ++ au_set_mmapped(file); ++ au_vm_file_reset(vma, h_file); ++ /* ++ * we cannot call security_mmap_file() here since it may acquire ++ * mmap_sem or i_mutex. ++ * ++ * err = security_mmap_file(h_file, au_prot_conv(vma->vm_flags), ++ * au_flag_conv(vma->vm_flags)); ++ */ ++ if (!err) ++ err = h_file->f_op->mmap(h_file, vma); ++ if (!err) { ++ au_vm_prfile_set(vma, file); ++ fsstack_copy_attr_atime(inode, file_inode(h_file)); ++ goto out_fput; /* success */ ++ } ++ au_unset_mmapped(file); ++ au_vm_file_reset(vma, file); ++ ++out_fput: ++ lockdep_off(); ++ ii_write_unlock(inode); ++ lockdep_on(); ++ fput(h_file); ++out: ++ lockdep_off(); ++ si_read_unlock(sb); ++ lockdep_on(); ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int aufs_fsync_nondir(struct file *file, loff_t start, loff_t end, ++ int datasync) ++{ ++ int err; ++ struct au_write_pre wpre; ++ struct inode *inode; ++ struct file *h_file; ++ ++ err = 0; /* -EBADF; */ /* posix? */ ++ if (unlikely(!(file->f_mode & FMODE_WRITE))) ++ goto out; ++ ++ inode = file_inode(file); ++ au_mtx_and_read_lock(inode); ++ ++ h_file = au_write_pre(file, /*do_ready*/1, &wpre); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out_unlock; ++ ++ err = vfsub_fsync(h_file, &h_file->f_path, datasync); ++ au_write_post(inode, h_file, &wpre, /*written*/0); ++ ++out_unlock: ++ si_read_unlock(inode->i_sb); ++ mutex_unlock(&inode->i_mutex); ++out: ++ return err; ++} ++ ++/* no one supports this operation, currently */ ++#if 0 ++static int aufs_aio_fsync_nondir(struct kiocb *kio, int datasync) ++{ ++ int err; ++ struct au_write_pre wpre; ++ struct inode *inode; ++ struct file *file, *h_file; ++ ++ err = 0; /* -EBADF; */ /* posix? */ ++ if (unlikely(!(file->f_mode & FMODE_WRITE))) ++ goto out; ++ ++ file = kio->ki_filp; ++ inode = file_inode(file); ++ au_mtx_and_read_lock(inode); ++ ++ h_file = au_write_pre(file, /*do_ready*/1, &wpre); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out_unlock; ++ ++ err = -ENOSYS; ++ h_file = au_hf_top(file); ++ if (h_file->f_op->aio_fsync) { ++ struct mutex *h_mtx; ++ ++ h_mtx = &file_inode(h_file)->i_mutex; ++ if (!is_sync_kiocb(kio)) { ++ get_file(h_file); ++ fput(file); ++ } ++ kio->ki_filp = h_file; ++ err = h_file->f_op->aio_fsync(kio, datasync); ++ mutex_lock_nested(h_mtx, AuLsc_I_CHILD); ++ if (!err) ++ vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); ++ /*ignore*/ ++ mutex_unlock(h_mtx); ++ } ++ au_write_post(inode, h_file, &wpre, /*written*/0); ++ ++out_unlock: ++ si_read_unlock(inode->sb); ++ mutex_unlock(&inode->i_mutex); ++out: ++ return err; ++} ++#endif ++ ++static int aufs_fasync(int fd, struct file *file, int flag) ++{ ++ int err; ++ struct file *h_file; ++ struct super_block *sb; ++ ++ sb = file->f_path.dentry->d_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ++ h_file = au_read_pre(file, /*keep_fi*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ if (h_file->f_op->fasync) ++ err = h_file->f_op->fasync(fd, h_file, flag); ++ fput(h_file); /* instead of au_read_post() */ ++ ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++static int aufs_setfl(struct file *file, unsigned long arg) ++{ ++ int err; ++ struct file *h_file; ++ struct super_block *sb; ++ ++ sb = file->f_path.dentry->d_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ++ h_file = au_read_pre(file, /*keep_fi*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ arg |= vfsub_file_flags(file) & FASYNC; /* stop calling h_file->fasync */ ++ err = setfl(/*unused fd*/-1, h_file, arg); ++ fput(h_file); /* instead of au_read_post() */ ++ ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* no one supports this operation, currently */ ++#if 0 ++static ssize_t aufs_sendpage(struct file *file, struct page *page, int offset, ++ size_t len, loff_t *pos, int more) ++{ ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++const struct file_operations aufs_file_fop = { ++ .owner = THIS_MODULE, ++ ++ .llseek = default_llseek, ++ ++ .read = aufs_read, ++ .write = aufs_write, ++ .read_iter = aufs_read_iter, ++ .write_iter = aufs_write_iter, ++ ++#ifdef CONFIG_AUFS_POLL ++ .poll = aufs_poll, ++#endif ++ .unlocked_ioctl = aufs_ioctl_nondir, ++#ifdef CONFIG_COMPAT ++ .compat_ioctl = aufs_compat_ioctl_nondir, ++#endif ++ .mmap = aufs_mmap, ++ .open = aufs_open_nondir, ++ .flush = aufs_flush_nondir, ++ .release = aufs_release_nondir, ++ .fsync = aufs_fsync_nondir, ++ /* .aio_fsync = aufs_aio_fsync_nondir, */ ++ .fasync = aufs_fasync, ++ /* .sendpage = aufs_sendpage, */ ++ .setfl = aufs_setfl, ++ .splice_write = aufs_splice_write, ++ .splice_read = aufs_splice_read, ++#if 0 ++ .aio_splice_write = aufs_aio_splice_write, ++ .aio_splice_read = aufs_aio_splice_read, ++#endif ++ .fallocate = aufs_fallocate ++}; +diff -Nurp linux-4.4.3/fs/aufs/fstype.h linux-4.4.3-aufs/fs/aufs/fstype.h +--- linux-4.4.3/fs/aufs/fstype.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/fstype.h 2016-03-02 17:59:37.366498724 +0200 @@ -0,0 +1,387 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -13439,14 +13189,12 @@ index 0000000..6196c60 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FSTYPE_H__ */ -diff --git a/fs/aufs/hfsnotify.c b/fs/aufs/hfsnotify.c -new file mode 100644 -index 0000000..5c370196 ---- /dev/null -+++ b/fs/aufs/hfsnotify.c +diff -Nurp linux-4.4.3/fs/aufs/hfsnotify.c linux-4.4.3-aufs/fs/aufs/hfsnotify.c +--- linux-4.4.3/fs/aufs/hfsnotify.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/hfsnotify.c 2016-03-02 17:59:37.366498724 +0200 @@ -0,0 +1,275 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -13720,14 +13468,12 @@ index 0000000..5c370196 + .fin_br = au_hfsn_fin_br, + .init_br = au_hfsn_init_br +}; -diff --git a/fs/aufs/hfsplus.c b/fs/aufs/hfsplus.c -new file mode 100644 -index 0000000..34c1f1a ---- /dev/null -+++ b/fs/aufs/hfsplus.c +diff -Nurp linux-4.4.3/fs/aufs/hfsplus.c linux-4.4.3-aufs/fs/aufs/hfsplus.c +--- linux-4.4.3/fs/aufs/hfsplus.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/hfsplus.c 2016-03-02 17:59:37.366498724 +0200 @@ -0,0 +1,43 @@ +/* -+ * Copyright (C) 2010-2015 Junjiro R. Okajima ++ * Copyright (C) 2010-2016 Junjiro R. Okajima + */ + +/* @@ -13769,14 +13515,12 @@ index 0000000..34c1f1a + au_sbr_put(dentry->d_sb, bindex); + } +} -diff --git a/fs/aufs/hnotify.c b/fs/aufs/hnotify.c -new file mode 100644 -index 0000000..3943dc4 ---- /dev/null -+++ b/fs/aufs/hnotify.c +diff -Nurp linux-4.4.3/fs/aufs/hnotify.c linux-4.4.3-aufs/fs/aufs/hnotify.c +--- linux-4.4.3/fs/aufs/hnotify.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/hnotify.c 2016-03-02 17:59:37.367498731 +0200 @@ -0,0 +1,697 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -14472,14 +14216,2607 @@ index 0000000..3943dc4 + if (au_cachep[AuCache_HNOTIFY]) + au_hn_destroy_cache(); +} -diff --git a/fs/aufs/i_op.c b/fs/aufs/i_op.c -new file mode 100644 -index 0000000..daad67a ---- /dev/null -+++ b/fs/aufs/i_op.c -@@ -0,0 +1,1471 @@ +diff -Nurp linux-4.4.3/fs/aufs/iinfo.c linux-4.4.3-aufs/fs/aufs/iinfo.c +--- linux-4.4.3/fs/aufs/iinfo.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/iinfo.c 2016-03-02 17:59:37.368498738 +0200 +@@ -0,0 +1,264 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima ++ */ ++ ++/* ++ * inode private data ++ */ ++ ++#include "aufs.h" ++ ++struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex) ++{ ++ struct inode *h_inode; ++ ++ IiMustAnyLock(inode); ++ ++ h_inode = au_ii(inode)->ii_hinode[0 + bindex].hi_inode; ++ AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); ++ return h_inode; ++} ++ ++/* todo: hard/soft set? */ ++void au_hiput(struct au_hinode *hinode) ++{ ++ au_hn_free(hinode); ++ dput(hinode->hi_whdentry); ++ iput(hinode->hi_inode); ++} ++ ++unsigned int au_hi_flags(struct inode *inode, int isdir) ++{ ++ unsigned int flags; ++ const unsigned int mnt_flags = au_mntflags(inode->i_sb); ++ ++ flags = 0; ++ if (au_opt_test(mnt_flags, XINO)) ++ au_fset_hi(flags, XINO); ++ if (isdir && au_opt_test(mnt_flags, UDBA_HNOTIFY)) ++ au_fset_hi(flags, HNOTIFY); ++ return flags; ++} ++ ++void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, ++ struct inode *h_inode, unsigned int flags) ++{ ++ struct au_hinode *hinode; ++ struct inode *hi; ++ struct au_iinfo *iinfo = au_ii(inode); ++ ++ IiMustWriteLock(inode); ++ ++ hinode = iinfo->ii_hinode + bindex; ++ hi = hinode->hi_inode; ++ AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); ++ ++ if (hi) ++ au_hiput(hinode); ++ hinode->hi_inode = h_inode; ++ if (h_inode) { ++ int err; ++ struct super_block *sb = inode->i_sb; ++ struct au_branch *br; ++ ++ AuDebugOn(inode->i_mode ++ && (h_inode->i_mode & S_IFMT) ++ != (inode->i_mode & S_IFMT)); ++ if (bindex == iinfo->ii_bstart) ++ au_cpup_igen(inode, h_inode); ++ br = au_sbr(sb, bindex); ++ hinode->hi_id = br->br_id; ++ if (au_ftest_hi(flags, XINO)) { ++ err = au_xino_write(sb, bindex, h_inode->i_ino, ++ inode->i_ino); ++ if (unlikely(err)) ++ AuIOErr1("failed au_xino_write() %d\n", err); ++ } ++ ++ if (au_ftest_hi(flags, HNOTIFY) ++ && au_br_hnotifyable(br->br_perm)) { ++ err = au_hn_alloc(hinode, inode); ++ if (unlikely(err)) ++ AuIOErr1("au_hn_alloc() %d\n", err); ++ } ++ } ++} ++ ++void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, ++ struct dentry *h_wh) ++{ ++ struct au_hinode *hinode; ++ ++ IiMustWriteLock(inode); ++ ++ hinode = au_ii(inode)->ii_hinode + bindex; ++ AuDebugOn(hinode->hi_whdentry); ++ hinode->hi_whdentry = h_wh; ++} ++ ++void au_update_iigen(struct inode *inode, int half) ++{ ++ struct au_iinfo *iinfo; ++ struct au_iigen *iigen; ++ unsigned int sigen; ++ ++ sigen = au_sigen(inode->i_sb); ++ iinfo = au_ii(inode); ++ iigen = &iinfo->ii_generation; ++ spin_lock(&iigen->ig_spin); ++ iigen->ig_generation = sigen; ++ if (half) ++ au_ig_fset(iigen->ig_flags, HALF_REFRESHED); ++ else ++ au_ig_fclr(iigen->ig_flags, HALF_REFRESHED); ++ spin_unlock(&iigen->ig_spin); ++} ++ ++/* it may be called at remount time, too */ ++void au_update_ibrange(struct inode *inode, int do_put_zero) ++{ ++ struct au_iinfo *iinfo; ++ aufs_bindex_t bindex, bend; ++ ++ iinfo = au_ii(inode); ++ if (!iinfo) ++ return; ++ ++ IiMustWriteLock(inode); ++ ++ if (do_put_zero && iinfo->ii_bstart >= 0) { ++ for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; ++ bindex++) { ++ struct inode *h_i; ++ ++ h_i = iinfo->ii_hinode[0 + bindex].hi_inode; ++ if (h_i ++ && !h_i->i_nlink ++ && !(h_i->i_state & I_LINKABLE)) ++ au_set_h_iptr(inode, bindex, NULL, 0); ++ } ++ } ++ ++ iinfo->ii_bstart = -1; ++ iinfo->ii_bend = -1; ++ bend = au_sbend(inode->i_sb); ++ for (bindex = 0; bindex <= bend; bindex++) ++ if (iinfo->ii_hinode[0 + bindex].hi_inode) { ++ iinfo->ii_bstart = bindex; ++ break; ++ } ++ if (iinfo->ii_bstart >= 0) ++ for (bindex = bend; bindex >= iinfo->ii_bstart; bindex--) ++ if (iinfo->ii_hinode[0 + bindex].hi_inode) { ++ iinfo->ii_bend = bindex; ++ break; ++ } ++ AuDebugOn(iinfo->ii_bstart > iinfo->ii_bend); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void au_icntnr_init_once(void *_c) ++{ ++ struct au_icntnr *c = _c; ++ struct au_iinfo *iinfo = &c->iinfo; ++ static struct lock_class_key aufs_ii; ++ ++ spin_lock_init(&iinfo->ii_generation.ig_spin); ++ au_rw_init(&iinfo->ii_rwsem); ++ au_rw_class(&iinfo->ii_rwsem, &aufs_ii); ++ inode_init_once(&c->vfs_inode); ++} ++ ++int au_iinfo_init(struct inode *inode) ++{ ++ struct au_iinfo *iinfo; ++ struct super_block *sb; ++ int nbr, i; ++ ++ sb = inode->i_sb; ++ iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); ++ nbr = au_sbend(sb) + 1; ++ if (unlikely(nbr <= 0)) ++ nbr = 1; ++ iinfo->ii_hinode = kcalloc(nbr, sizeof(*iinfo->ii_hinode), GFP_NOFS); ++ if (iinfo->ii_hinode) { ++ au_ninodes_inc(sb); ++ for (i = 0; i < nbr; i++) ++ iinfo->ii_hinode[i].hi_id = -1; ++ ++ iinfo->ii_generation.ig_generation = au_sigen(sb); ++ iinfo->ii_bstart = -1; ++ iinfo->ii_bend = -1; ++ iinfo->ii_vdir = NULL; ++ return 0; ++ } ++ return -ENOMEM; ++} ++ ++int au_ii_realloc(struct au_iinfo *iinfo, int nbr) ++{ ++ int err, sz; ++ struct au_hinode *hip; ++ ++ AuRwMustWriteLock(&iinfo->ii_rwsem); ++ ++ err = -ENOMEM; ++ sz = sizeof(*hip) * (iinfo->ii_bend + 1); ++ if (!sz) ++ sz = sizeof(*hip); ++ hip = au_kzrealloc(iinfo->ii_hinode, sz, sizeof(*hip) * nbr, GFP_NOFS); ++ if (hip) { ++ iinfo->ii_hinode = hip; ++ err = 0; ++ } ++ ++ return err; ++} ++ ++void au_iinfo_fin(struct inode *inode) ++{ ++ struct au_iinfo *iinfo; ++ struct au_hinode *hi; ++ struct super_block *sb; ++ aufs_bindex_t bindex, bend; ++ const unsigned char unlinked = !inode->i_nlink; ++ ++ iinfo = au_ii(inode); ++ /* bad_inode case */ ++ if (!iinfo) ++ return; ++ ++ sb = inode->i_sb; ++ au_ninodes_dec(sb); ++ if (si_pid_test(sb)) ++ au_xino_delete_inode(inode, unlinked); ++ else { ++ /* ++ * it is safe to hide the dependency between sbinfo and ++ * sb->s_umount. ++ */ ++ lockdep_off(); ++ si_noflush_read_lock(sb); ++ au_xino_delete_inode(inode, unlinked); ++ si_read_unlock(sb); ++ lockdep_on(); ++ } ++ ++ if (iinfo->ii_vdir) ++ au_vdir_free(iinfo->ii_vdir); ++ ++ bindex = iinfo->ii_bstart; ++ if (bindex >= 0) { ++ hi = iinfo->ii_hinode + bindex; ++ bend = iinfo->ii_bend; ++ while (bindex++ <= bend) { ++ if (hi->hi_inode) ++ au_hiput(hi); ++ hi++; ++ } ++ } ++ kfree(iinfo->ii_hinode); ++ iinfo->ii_hinode = NULL; ++ AuRwDestroy(&iinfo->ii_rwsem); ++} +diff -Nurp linux-4.4.3/fs/aufs/inode.c linux-4.4.3-aufs/fs/aufs/inode.c +--- linux-4.4.3/fs/aufs/inode.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/inode.c 2016-03-02 17:59:37.368498738 +0200 +@@ -0,0 +1,514 @@ ++/* ++ * Copyright (C) 2005-2016 Junjiro R. Okajima ++ */ ++ ++/* ++ * inode functions ++ */ ++ ++#include "aufs.h" ++ ++struct inode *au_igrab(struct inode *inode) ++{ ++ if (inode) { ++ AuDebugOn(!atomic_read(&inode->i_count)); ++ ihold(inode); ++ } ++ return inode; ++} ++ ++static void au_refresh_hinode_attr(struct inode *inode, int do_version) ++{ ++ au_cpup_attr_all(inode, /*force*/0); ++ au_update_iigen(inode, /*half*/1); ++ if (do_version) ++ inode->i_version++; ++} ++ ++static int au_ii_refresh(struct inode *inode, int *update) ++{ ++ int err, e; ++ umode_t type; ++ aufs_bindex_t bindex, new_bindex; ++ struct super_block *sb; ++ struct au_iinfo *iinfo; ++ struct au_hinode *p, *q, tmp; ++ ++ IiMustWriteLock(inode); ++ ++ *update = 0; ++ sb = inode->i_sb; ++ type = inode->i_mode & S_IFMT; ++ iinfo = au_ii(inode); ++ err = au_ii_realloc(iinfo, au_sbend(sb) + 1); ++ if (unlikely(err)) ++ goto out; ++ ++ AuDebugOn(iinfo->ii_bstart < 0); ++ p = iinfo->ii_hinode + iinfo->ii_bstart; ++ for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; ++ bindex++, p++) { ++ if (!p->hi_inode) ++ continue; ++ ++ AuDebugOn(type != (p->hi_inode->i_mode & S_IFMT)); ++ new_bindex = au_br_index(sb, p->hi_id); ++ if (new_bindex == bindex) ++ continue; ++ ++ if (new_bindex < 0) { ++ *update = 1; ++ au_hiput(p); ++ p->hi_inode = NULL; ++ continue; ++ } ++ ++ if (new_bindex < iinfo->ii_bstart) ++ iinfo->ii_bstart = new_bindex; ++ if (iinfo->ii_bend < new_bindex) ++ iinfo->ii_bend = new_bindex; ++ /* swap two lower inode, and loop again */ ++ q = iinfo->ii_hinode + new_bindex; ++ tmp = *q; ++ *q = *p; ++ *p = tmp; ++ if (tmp.hi_inode) { ++ bindex--; ++ p--; ++ } ++ } ++ au_update_ibrange(inode, /*do_put_zero*/0); ++ e = au_dy_irefresh(inode); ++ if (unlikely(e && !err)) ++ err = e; ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++void au_refresh_iop(struct inode *inode, int force_getattr) ++{ ++ int type; ++ struct au_sbinfo *sbi = au_sbi(inode->i_sb); ++ const struct inode_operations *iop ++ = force_getattr ? aufs_iop : sbi->si_iop_array; ++ ++ if (inode->i_op == iop) ++ return; ++ ++ switch (inode->i_mode & S_IFMT) { ++ case S_IFDIR: ++ type = AuIop_DIR; ++ break; ++ case S_IFLNK: ++ type = AuIop_SYMLINK; ++ break; ++ default: ++ type = AuIop_OTHER; ++ break; ++ } ++ ++ inode->i_op = iop + type; ++ /* unnecessary smp_wmb() */ ++} ++ ++int au_refresh_hinode_self(struct inode *inode) ++{ ++ int err, update; ++ ++ err = au_ii_refresh(inode, &update); ++ if (!err) ++ au_refresh_hinode_attr(inode, update && S_ISDIR(inode->i_mode)); ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_refresh_hinode(struct inode *inode, struct dentry *dentry) ++{ ++ int err, e, update; ++ unsigned int flags; ++ umode_t mode; ++ aufs_bindex_t bindex, bend; ++ unsigned char isdir; ++ struct au_hinode *p; ++ struct au_iinfo *iinfo; ++ ++ err = au_ii_refresh(inode, &update); ++ if (unlikely(err)) ++ goto out; ++ ++ update = 0; ++ iinfo = au_ii(inode); ++ p = iinfo->ii_hinode + iinfo->ii_bstart; ++ mode = (inode->i_mode & S_IFMT); ++ isdir = S_ISDIR(mode); ++ flags = au_hi_flags(inode, isdir); ++ bend = au_dbend(dentry); ++ for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) { ++ struct inode *h_i, *h_inode; ++ struct dentry *h_d; ++ ++ h_d = au_h_dptr(dentry, bindex); ++ if (!h_d || d_is_negative(h_d)) ++ continue; ++ ++ h_inode = d_inode(h_d); ++ AuDebugOn(mode != (h_inode->i_mode & S_IFMT)); ++ if (iinfo->ii_bstart <= bindex && bindex <= iinfo->ii_bend) { ++ h_i = au_h_iptr(inode, bindex); ++ if (h_i) { ++ if (h_i == h_inode) ++ continue; ++ err = -EIO; ++ break; ++ } ++ } ++ if (bindex < iinfo->ii_bstart) ++ iinfo->ii_bstart = bindex; ++ if (iinfo->ii_bend < bindex) ++ iinfo->ii_bend = bindex; ++ au_set_h_iptr(inode, bindex, au_igrab(h_inode), flags); ++ update = 1; ++ } ++ au_update_ibrange(inode, /*do_put_zero*/0); ++ e = au_dy_irefresh(inode); ++ if (unlikely(e && !err)) ++ err = e; ++ if (!err) ++ au_refresh_hinode_attr(inode, update && isdir); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int set_inode(struct inode *inode, struct dentry *dentry) ++{ ++ int err; ++ unsigned int flags; ++ umode_t mode; ++ aufs_bindex_t bindex, bstart, btail; ++ unsigned char isdir; ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ struct au_iinfo *iinfo; ++ struct inode_operations *iop; ++ ++ IiMustWriteLock(inode); ++ ++ err = 0; ++ isdir = 0; ++ iop = au_sbi(inode->i_sb)->si_iop_array; ++ bstart = au_dbstart(dentry); ++ h_dentry = au_h_dptr(dentry, bstart); ++ h_inode = d_inode(h_dentry); ++ mode = h_inode->i_mode; ++ switch (mode & S_IFMT) { ++ case S_IFREG: ++ btail = au_dbtail(dentry); ++ inode->i_op = iop + AuIop_OTHER; ++ inode->i_fop = &aufs_file_fop; ++ err = au_dy_iaop(inode, bstart, h_inode); ++ if (unlikely(err)) ++ goto out; ++ break; ++ case S_IFDIR: ++ isdir = 1; ++ btail = au_dbtaildir(dentry); ++ inode->i_op = iop + AuIop_DIR; ++ inode->i_fop = &aufs_dir_fop; ++ break; ++ case S_IFLNK: ++ btail = au_dbtail(dentry); ++ inode->i_op = iop + AuIop_SYMLINK; ++ break; ++ case S_IFBLK: ++ case S_IFCHR: ++ case S_IFIFO: ++ case S_IFSOCK: ++ btail = au_dbtail(dentry); ++ inode->i_op = iop + AuIop_OTHER; ++ init_special_inode(inode, mode, h_inode->i_rdev); ++ break; ++ default: ++ AuIOErr("Unknown file type 0%o\n", mode); ++ err = -EIO; ++ goto out; ++ } ++ ++ /* do not set hnotify for whiteouted dirs (SHWH mode) */ ++ flags = au_hi_flags(inode, isdir); ++ if (au_opt_test(au_mntflags(dentry->d_sb), SHWH) ++ && au_ftest_hi(flags, HNOTIFY) ++ && dentry->d_name.len > AUFS_WH_PFX_LEN ++ && !memcmp(dentry->d_name.name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) ++ au_fclr_hi(flags, HNOTIFY); ++ iinfo = au_ii(inode); ++ iinfo->ii_bstart = bstart; ++ iinfo->ii_bend = btail; ++ for (bindex = bstart; bindex <= btail; bindex++) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (h_dentry) ++ au_set_h_iptr(inode, bindex, ++ au_igrab(d_inode(h_dentry)), flags); ++ } ++ au_cpup_attr_all(inode, /*force*/1); ++ /* ++ * to force calling aufs_get_acl() every time, ++ * do not call cache_no_acl() for aufs inode. ++ */ ++ ++out: ++ return err; ++} ++ ++/* ++ * successful returns with iinfo write_locked ++ * minus: errno ++ * zero: success, matched ++ * plus: no error, but unmatched ++ */ ++static int reval_inode(struct inode *inode, struct dentry *dentry) ++{ ++ int err; ++ unsigned int gen, igflags; ++ aufs_bindex_t bindex, bend; ++ struct inode *h_inode, *h_dinode; ++ struct dentry *h_dentry; ++ ++ /* ++ * before this function, if aufs got any iinfo lock, it must be only ++ * one, the parent dir. ++ * it can happen by UDBA and the obsoleted inode number. ++ */ ++ err = -EIO; ++ if (unlikely(inode->i_ino == parent_ino(dentry))) ++ goto out; ++ ++ err = 1; ++ ii_write_lock_new_child(inode); ++ h_dentry = au_h_dptr(dentry, au_dbstart(dentry)); ++ h_dinode = d_inode(h_dentry); ++ bend = au_ibend(inode); ++ for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { ++ h_inode = au_h_iptr(inode, bindex); ++ if (!h_inode || h_inode != h_dinode) ++ continue; ++ ++ err = 0; ++ gen = au_iigen(inode, &igflags); ++ if (gen == au_digen(dentry) ++ && !au_ig_ftest(igflags, HALF_REFRESHED)) ++ break; ++ ++ /* fully refresh inode using dentry */ ++ err = au_refresh_hinode(inode, dentry); ++ if (!err) ++ au_update_iigen(inode, /*half*/0); ++ break; ++ } ++ ++ if (unlikely(err)) ++ ii_write_unlock(inode); ++out: ++ return err; ++} ++ ++int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, ++ unsigned int d_type, ino_t *ino) ++{ ++ int err; ++ struct mutex *mtx; ++ ++ /* prevent hardlinked inode number from race condition */ ++ mtx = NULL; ++ if (d_type != DT_DIR) { ++ mtx = &au_sbr(sb, bindex)->br_xino.xi_nondir_mtx; ++ mutex_lock(mtx); ++ } ++ err = au_xino_read(sb, bindex, h_ino, ino); ++ if (unlikely(err)) ++ goto out; ++ ++ if (!*ino) { ++ err = -EIO; ++ *ino = au_xino_new_ino(sb); ++ if (unlikely(!*ino)) ++ goto out; ++ err = au_xino_write(sb, bindex, h_ino, *ino); ++ if (unlikely(err)) ++ goto out; ++ } ++ ++out: ++ if (mtx) ++ mutex_unlock(mtx); ++ return err; ++} ++ ++/* successful returns with iinfo write_locked */ ++/* todo: return with unlocked? */ ++struct inode *au_new_inode(struct dentry *dentry, int must_new) ++{ ++ struct inode *inode, *h_inode; ++ struct dentry *h_dentry; ++ struct super_block *sb; ++ struct mutex *mtx; ++ ino_t h_ino, ino; ++ int err; ++ aufs_bindex_t bstart; ++ ++ sb = dentry->d_sb; ++ bstart = au_dbstart(dentry); ++ h_dentry = au_h_dptr(dentry, bstart); ++ h_inode = d_inode(h_dentry); ++ h_ino = h_inode->i_ino; ++ ++ /* ++ * stop 'race'-ing between hardlinks under different ++ * parents. ++ */ ++ mtx = NULL; ++ if (!d_is_dir(h_dentry)) ++ mtx = &au_sbr(sb, bstart)->br_xino.xi_nondir_mtx; ++ ++new_ino: ++ if (mtx) ++ mutex_lock(mtx); ++ err = au_xino_read(sb, bstart, h_ino, &ino); ++ inode = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out; ++ ++ if (!ino) { ++ ino = au_xino_new_ino(sb); ++ if (unlikely(!ino)) { ++ inode = ERR_PTR(-EIO); ++ goto out; ++ } ++ } ++ ++ AuDbg("i%lu\n", (unsigned long)ino); ++ inode = au_iget_locked(sb, ino); ++ err = PTR_ERR(inode); ++ if (IS_ERR(inode)) ++ goto out; ++ ++ AuDbg("%lx, new %d\n", inode->i_state, !!(inode->i_state & I_NEW)); ++ if (inode->i_state & I_NEW) { ++ /* verbose coding for lock class name */ ++ if (unlikely(d_is_symlink(h_dentry))) ++ au_rw_class(&au_ii(inode)->ii_rwsem, ++ au_lc_key + AuLcSymlink_IIINFO); ++ else if (unlikely(d_is_dir(h_dentry))) ++ au_rw_class(&au_ii(inode)->ii_rwsem, ++ au_lc_key + AuLcDir_IIINFO); ++ else /* likely */ ++ au_rw_class(&au_ii(inode)->ii_rwsem, ++ au_lc_key + AuLcNonDir_IIINFO); ++ ++ ii_write_lock_new_child(inode); ++ err = set_inode(inode, dentry); ++ if (!err) { ++ unlock_new_inode(inode); ++ goto out; /* success */ ++ } ++ ++ /* ++ * iget_failed() calls iput(), but we need to call ++ * ii_write_unlock() after iget_failed(). so dirty hack for ++ * i_count. ++ */ ++ atomic_inc(&inode->i_count); ++ iget_failed(inode); ++ ii_write_unlock(inode); ++ au_xino_write(sb, bstart, h_ino, /*ino*/0); ++ /* ignore this error */ ++ goto out_iput; ++ } else if (!must_new && !IS_DEADDIR(inode) && inode->i_nlink) { ++ /* ++ * horrible race condition between lookup, readdir and copyup ++ * (or something). ++ */ ++ if (mtx) ++ mutex_unlock(mtx); ++ err = reval_inode(inode, dentry); ++ if (unlikely(err < 0)) { ++ mtx = NULL; ++ goto out_iput; ++ } ++ ++ if (!err) { ++ mtx = NULL; ++ goto out; /* success */ ++ } else if (mtx) ++ mutex_lock(mtx); ++ } ++ ++ if (unlikely(au_test_fs_unique_ino(h_inode))) ++ AuWarn1("Warning: Un-notified UDBA or repeatedly renamed dir," ++ " b%d, %s, %pd, hi%lu, i%lu.\n", ++ bstart, au_sbtype(h_dentry->d_sb), dentry, ++ (unsigned long)h_ino, (unsigned long)ino); ++ ino = 0; ++ err = au_xino_write(sb, bstart, h_ino, /*ino*/0); ++ if (!err) { ++ iput(inode); ++ if (mtx) ++ mutex_unlock(mtx); ++ goto new_ino; ++ } ++ ++out_iput: ++ iput(inode); ++ inode = ERR_PTR(err); ++out: ++ if (mtx) ++ mutex_unlock(mtx); ++ return inode; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, ++ struct inode *inode) ++{ ++ int err; ++ struct inode *hi; ++ ++ err = au_br_rdonly(au_sbr(sb, bindex)); ++ ++ /* pseudo-link after flushed may happen out of bounds */ ++ if (!err ++ && inode ++ && au_ibstart(inode) <= bindex ++ && bindex <= au_ibend(inode)) { ++ /* ++ * permission check is unnecessary since vfsub routine ++ * will be called later ++ */ ++ hi = au_h_iptr(inode, bindex); ++ if (hi) ++ err = IS_IMMUTABLE(hi) ? -EROFS : 0; ++ } ++ ++ return err; ++} ++ ++int au_test_h_perm(struct inode *h_inode, int mask) ++{ ++ if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) ++ return 0; ++ return inode_permission(h_inode, mask); ++} ++ ++int au_test_h_perm_sio(struct inode *h_inode, int mask) ++{ ++ if (au_test_nfs(h_inode->i_sb) ++ && (mask & MAY_WRITE) ++ && S_ISDIR(h_inode->i_mode)) ++ mask |= MAY_READ; /* force permission check */ ++ return au_test_h_perm(h_inode, mask); ++} +diff -Nurp linux-4.4.3/fs/aufs/inode.h linux-4.4.3-aufs/fs/aufs/inode.h +--- linux-4.4.3/fs/aufs/inode.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/inode.h 2016-03-02 17:59:37.369498746 +0200 +@@ -0,0 +1,672 @@ ++/* ++ * Copyright (C) 2005-2016 Junjiro R. Okajima ++ */ ++ ++/* ++ * inode operations ++ */ ++ ++#ifndef __AUFS_INODE_H__ ++#define __AUFS_INODE_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include "rwsem.h" ++ ++struct vfsmount; ++ ++struct au_hnotify { ++#ifdef CONFIG_AUFS_HNOTIFY ++#ifdef CONFIG_AUFS_HFSNOTIFY ++ /* never use fsnotify_add_vfsmount_mark() */ ++ struct fsnotify_mark hn_mark; ++#endif ++ struct inode *hn_aufs_inode; /* no get/put */ ++#endif ++} ____cacheline_aligned_in_smp; ++ ++struct au_hinode { ++ struct inode *hi_inode; ++ aufs_bindex_t hi_id; ++#ifdef CONFIG_AUFS_HNOTIFY ++ struct au_hnotify *hi_notify; ++#endif ++ ++ /* reference to the copied-up whiteout with get/put */ ++ struct dentry *hi_whdentry; ++}; ++ ++/* ig_flags */ ++#define AuIG_HALF_REFRESHED 1 ++#define au_ig_ftest(flags, name) ((flags) & AuIG_##name) ++#define au_ig_fset(flags, name) \ ++ do { (flags) |= AuIG_##name; } while (0) ++#define au_ig_fclr(flags, name) \ ++ do { (flags) &= ~AuIG_##name; } while (0) ++ ++struct au_iigen { ++ spinlock_t ig_spin; ++ __u32 ig_generation, ig_flags; ++}; ++ ++struct au_vdir; ++struct au_iinfo { ++ struct au_iigen ii_generation; ++ struct super_block *ii_hsb1; /* no get/put */ ++ ++ struct au_rwsem ii_rwsem; ++ aufs_bindex_t ii_bstart, ii_bend; ++ __u32 ii_higen; ++ struct au_hinode *ii_hinode; ++ struct au_vdir *ii_vdir; ++}; ++ ++struct au_icntnr { ++ struct au_iinfo iinfo; ++ struct inode vfs_inode; ++} ____cacheline_aligned_in_smp; ++ ++/* au_pin flags */ ++#define AuPin_DI_LOCKED 1 ++#define AuPin_MNT_WRITE (1 << 1) ++#define au_ftest_pin(flags, name) ((flags) & AuPin_##name) ++#define au_fset_pin(flags, name) \ ++ do { (flags) |= AuPin_##name; } while (0) ++#define au_fclr_pin(flags, name) \ ++ do { (flags) &= ~AuPin_##name; } while (0) ++ ++struct au_pin { ++ /* input */ ++ struct dentry *dentry; ++ unsigned int udba; ++ unsigned char lsc_di, lsc_hi, flags; ++ aufs_bindex_t bindex; ++ ++ /* output */ ++ struct dentry *parent; ++ struct au_hinode *hdir; ++ struct vfsmount *h_mnt; ++ ++ /* temporary unlock/relock for copyup */ ++ struct dentry *h_dentry, *h_parent; ++ struct au_branch *br; ++ struct task_struct *task; ++}; ++ ++void au_pin_hdir_unlock(struct au_pin *p); ++int au_pin_hdir_lock(struct au_pin *p); ++int au_pin_hdir_relock(struct au_pin *p); ++void au_pin_hdir_set_owner(struct au_pin *p, struct task_struct *task); ++void au_pin_hdir_acquire_nest(struct au_pin *p); ++void au_pin_hdir_release(struct au_pin *p); ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline struct au_iinfo *au_ii(struct inode *inode) ++{ ++ struct au_iinfo *iinfo; ++ ++ iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); ++ if (iinfo->ii_hinode) ++ return iinfo; ++ return NULL; /* debugging bad_inode case */ ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* inode.c */ ++struct inode *au_igrab(struct inode *inode); ++void au_refresh_iop(struct inode *inode, int force_getattr); ++int au_refresh_hinode_self(struct inode *inode); ++int au_refresh_hinode(struct inode *inode, struct dentry *dentry); ++int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, ++ unsigned int d_type, ino_t *ino); ++struct inode *au_new_inode(struct dentry *dentry, int must_new); ++int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, ++ struct inode *inode); ++int au_test_h_perm(struct inode *h_inode, int mask); ++int au_test_h_perm_sio(struct inode *h_inode, int mask); ++ ++static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex, ++ ino_t h_ino, unsigned int d_type, ino_t *ino) ++{ ++#ifdef CONFIG_AUFS_SHWH ++ return au_ino(sb, bindex, h_ino, d_type, ino); ++#else ++ return 0; ++#endif ++} ++ ++/* i_op.c */ ++enum { ++ AuIop_SYMLINK, ++ AuIop_DIR, ++ AuIop_OTHER, ++ AuIop_Last ++}; ++extern struct inode_operations aufs_iop[AuIop_Last], ++ aufs_iop_nogetattr[AuIop_Last]; ++ ++/* au_wr_dir flags */ ++#define AuWrDir_ADD_ENTRY 1 ++#define AuWrDir_ISDIR (1 << 1) ++#define AuWrDir_TMPFILE (1 << 2) ++#define au_ftest_wrdir(flags, name) ((flags) & AuWrDir_##name) ++#define au_fset_wrdir(flags, name) \ ++ do { (flags) |= AuWrDir_##name; } while (0) ++#define au_fclr_wrdir(flags, name) \ ++ do { (flags) &= ~AuWrDir_##name; } while (0) ++ ++struct au_wr_dir_args { ++ aufs_bindex_t force_btgt; ++ unsigned char flags; ++}; ++int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, ++ struct au_wr_dir_args *args); ++ ++struct dentry *au_pinned_h_parent(struct au_pin *pin); ++void au_pin_init(struct au_pin *pin, struct dentry *dentry, ++ aufs_bindex_t bindex, int lsc_di, int lsc_hi, ++ unsigned int udba, unsigned char flags); ++int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, ++ unsigned int udba, unsigned char flags) __must_check; ++int au_do_pin(struct au_pin *pin) __must_check; ++void au_unpin(struct au_pin *pin); ++int au_reval_for_attr(struct dentry *dentry, unsigned int sigen); ++ ++#define AuIcpup_DID_CPUP 1 ++#define au_ftest_icpup(flags, name) ((flags) & AuIcpup_##name) ++#define au_fset_icpup(flags, name) \ ++ do { (flags) |= AuIcpup_##name; } while (0) ++#define au_fclr_icpup(flags, name) \ ++ do { (flags) &= ~AuIcpup_##name; } while (0) ++ ++struct au_icpup_args { ++ unsigned char flags; ++ unsigned char pin_flags; ++ aufs_bindex_t btgt; ++ unsigned int udba; ++ struct au_pin pin; ++ struct path h_path; ++ struct inode *h_inode; ++}; ++ ++int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, ++ struct au_icpup_args *a); ++ ++int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path); ++ ++/* i_op_add.c */ ++int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_parent, int isdir); ++int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, ++ dev_t dev); ++int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname); ++int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, ++ bool want_excl); ++struct vfsub_aopen_args; ++int au_aopen_or_create(struct inode *dir, struct dentry *dentry, ++ struct vfsub_aopen_args *args); ++int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode); ++int aufs_link(struct dentry *src_dentry, struct inode *dir, ++ struct dentry *dentry); ++int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); ++ ++/* i_op_del.c */ ++int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup); ++int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_parent, int isdir); ++int aufs_unlink(struct inode *dir, struct dentry *dentry); ++int aufs_rmdir(struct inode *dir, struct dentry *dentry); ++ ++/* i_op_ren.c */ ++int au_wbr(struct dentry *dentry, aufs_bindex_t btgt); ++int aufs_rename(struct inode *src_dir, struct dentry *src_dentry, ++ struct inode *dir, struct dentry *dentry); ++ ++/* iinfo.c */ ++struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex); ++void au_hiput(struct au_hinode *hinode); ++void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, ++ struct dentry *h_wh); ++unsigned int au_hi_flags(struct inode *inode, int isdir); ++ ++/* hinode flags */ ++#define AuHi_XINO 1 ++#define AuHi_HNOTIFY (1 << 1) ++#define au_ftest_hi(flags, name) ((flags) & AuHi_##name) ++#define au_fset_hi(flags, name) \ ++ do { (flags) |= AuHi_##name; } while (0) ++#define au_fclr_hi(flags, name) \ ++ do { (flags) &= ~AuHi_##name; } while (0) ++ ++#ifndef CONFIG_AUFS_HNOTIFY ++#undef AuHi_HNOTIFY ++#define AuHi_HNOTIFY 0 ++#endif ++ ++void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, ++ struct inode *h_inode, unsigned int flags); ++ ++void au_update_iigen(struct inode *inode, int half); ++void au_update_ibrange(struct inode *inode, int do_put_zero); ++ ++void au_icntnr_init_once(void *_c); ++int au_iinfo_init(struct inode *inode); ++void au_iinfo_fin(struct inode *inode); ++int au_ii_realloc(struct au_iinfo *iinfo, int nbr); ++ ++#ifdef CONFIG_PROC_FS ++/* plink.c */ ++int au_plink_maint(struct super_block *sb, int flags); ++struct au_sbinfo; ++void au_plink_maint_leave(struct au_sbinfo *sbinfo); ++int au_plink_maint_enter(struct super_block *sb); ++#ifdef CONFIG_AUFS_DEBUG ++void au_plink_list(struct super_block *sb); ++#else ++AuStubVoid(au_plink_list, struct super_block *sb) ++#endif ++int au_plink_test(struct inode *inode); ++struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex); ++void au_plink_append(struct inode *inode, aufs_bindex_t bindex, ++ struct dentry *h_dentry); ++void au_plink_put(struct super_block *sb, int verbose); ++void au_plink_clean(struct super_block *sb, int verbose); ++void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id); ++#else ++AuStubInt0(au_plink_maint, struct super_block *sb, int flags); ++AuStubVoid(au_plink_maint_leave, struct au_sbinfo *sbinfo); ++AuStubInt0(au_plink_maint_enter, struct super_block *sb); ++AuStubVoid(au_plink_list, struct super_block *sb); ++AuStubInt0(au_plink_test, struct inode *inode); ++AuStub(struct dentry *, au_plink_lkup, return NULL, ++ struct inode *inode, aufs_bindex_t bindex); ++AuStubVoid(au_plink_append, struct inode *inode, aufs_bindex_t bindex, ++ struct dentry *h_dentry); ++AuStubVoid(au_plink_put, struct super_block *sb, int verbose); ++AuStubVoid(au_plink_clean, struct super_block *sb, int verbose); ++AuStubVoid(au_plink_half_refresh, struct super_block *sb, aufs_bindex_t br_id); ++#endif /* CONFIG_PROC_FS */ ++ ++#ifdef CONFIG_AUFS_XATTR ++/* xattr.c */ ++int au_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, int ignore_flags, ++ unsigned int verbose); ++ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size); ++ssize_t aufs_getxattr(struct dentry *dentry, const char *name, void *value, ++ size_t size); ++int aufs_setxattr(struct dentry *dentry, const char *name, const void *value, ++ size_t size, int flags); ++int aufs_removexattr(struct dentry *dentry, const char *name); ++ ++/* void au_xattr_init(struct super_block *sb); */ ++#else ++AuStubInt0(au_cpup_xattr, struct dentry *h_dst, struct dentry *h_src, ++ int ignore_flags, unsigned int verbose); ++/* AuStubVoid(au_xattr_init, struct super_block *sb); */ ++#endif ++ ++#ifdef CONFIG_FS_POSIX_ACL ++struct posix_acl *aufs_get_acl(struct inode *inode, int type); ++int aufs_set_acl(struct inode *inode, struct posix_acl *acl, int type); ++#endif ++ ++#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) ++enum { ++ AU_XATTR_SET, ++ AU_XATTR_REMOVE, ++ AU_ACL_SET ++}; ++ ++struct au_srxattr { ++ int type; ++ union { ++ struct { ++ const char *name; ++ const void *value; ++ size_t size; ++ int flags; ++ } set; ++ struct { ++ const char *name; ++ } remove; ++ struct { ++ struct posix_acl *acl; ++ int type; ++ } acl_set; ++ } u; ++}; ++ssize_t au_srxattr(struct dentry *dentry, struct au_srxattr *arg); ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* lock subclass for iinfo */ ++enum { ++ AuLsc_II_CHILD, /* child first */ ++ AuLsc_II_CHILD2, /* rename(2), link(2), and cpup at hnotify */ ++ AuLsc_II_CHILD3, /* copyup dirs */ ++ AuLsc_II_PARENT, /* see AuLsc_I_PARENT in vfsub.h */ ++ AuLsc_II_PARENT2, ++ AuLsc_II_PARENT3, /* copyup dirs */ ++ AuLsc_II_NEW_CHILD ++}; ++ ++/* ++ * ii_read_lock_child, ii_write_lock_child, ++ * ii_read_lock_child2, ii_write_lock_child2, ++ * ii_read_lock_child3, ii_write_lock_child3, ++ * ii_read_lock_parent, ii_write_lock_parent, ++ * ii_read_lock_parent2, ii_write_lock_parent2, ++ * ii_read_lock_parent3, ii_write_lock_parent3, ++ * ii_read_lock_new_child, ii_write_lock_new_child, ++ */ ++#define AuReadLockFunc(name, lsc) \ ++static inline void ii_read_lock_##name(struct inode *i) \ ++{ \ ++ au_rw_read_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ ++} ++ ++#define AuWriteLockFunc(name, lsc) \ ++static inline void ii_write_lock_##name(struct inode *i) \ ++{ \ ++ au_rw_write_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ ++} ++ ++#define AuRWLockFuncs(name, lsc) \ ++ AuReadLockFunc(name, lsc) \ ++ AuWriteLockFunc(name, lsc) ++ ++AuRWLockFuncs(child, CHILD); ++AuRWLockFuncs(child2, CHILD2); ++AuRWLockFuncs(child3, CHILD3); ++AuRWLockFuncs(parent, PARENT); ++AuRWLockFuncs(parent2, PARENT2); ++AuRWLockFuncs(parent3, PARENT3); ++AuRWLockFuncs(new_child, NEW_CHILD); ++ ++#undef AuReadLockFunc ++#undef AuWriteLockFunc ++#undef AuRWLockFuncs ++ ++/* ++ * ii_read_unlock, ii_write_unlock, ii_downgrade_lock ++ */ ++AuSimpleUnlockRwsemFuncs(ii, struct inode *i, &au_ii(i)->ii_rwsem); ++ ++#define IiMustNoWaiters(i) AuRwMustNoWaiters(&au_ii(i)->ii_rwsem) ++#define IiMustAnyLock(i) AuRwMustAnyLock(&au_ii(i)->ii_rwsem) ++#define IiMustWriteLock(i) AuRwMustWriteLock(&au_ii(i)->ii_rwsem) ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline void au_icntnr_init(struct au_icntnr *c) ++{ ++#ifdef CONFIG_AUFS_DEBUG ++ c->vfs_inode.i_mode = 0; ++#endif ++} ++ ++static inline unsigned int au_iigen(struct inode *inode, unsigned int *igflags) ++{ ++ unsigned int gen; ++ struct au_iinfo *iinfo; ++ struct au_iigen *iigen; ++ ++ iinfo = au_ii(inode); ++ iigen = &iinfo->ii_generation; ++ spin_lock(&iigen->ig_spin); ++ if (igflags) ++ *igflags = iigen->ig_flags; ++ gen = iigen->ig_generation; ++ spin_unlock(&iigen->ig_spin); ++ ++ return gen; ++} ++ ++/* tiny test for inode number */ ++/* tmpfs generation is too rough */ ++static inline int au_test_higen(struct inode *inode, struct inode *h_inode) ++{ ++ struct au_iinfo *iinfo; ++ ++ iinfo = au_ii(inode); ++ AuRwMustAnyLock(&iinfo->ii_rwsem); ++ return !(iinfo->ii_hsb1 == h_inode->i_sb ++ && iinfo->ii_higen == h_inode->i_generation); ++} ++ ++static inline void au_iigen_dec(struct inode *inode) ++{ ++ struct au_iinfo *iinfo; ++ struct au_iigen *iigen; ++ ++ iinfo = au_ii(inode); ++ iigen = &iinfo->ii_generation; ++ spin_lock(&iigen->ig_spin); ++ iigen->ig_generation--; ++ spin_unlock(&iigen->ig_spin); ++} ++ ++static inline int au_iigen_test(struct inode *inode, unsigned int sigen) ++{ ++ int err; ++ ++ err = 0; ++ if (unlikely(inode && au_iigen(inode, NULL) != sigen)) ++ err = -EIO; ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline aufs_bindex_t au_ii_br_id(struct inode *inode, ++ aufs_bindex_t bindex) ++{ ++ IiMustAnyLock(inode); ++ return au_ii(inode)->ii_hinode[0 + bindex].hi_id; ++} ++ ++static inline aufs_bindex_t au_ibstart(struct inode *inode) ++{ ++ IiMustAnyLock(inode); ++ return au_ii(inode)->ii_bstart; ++} ++ ++static inline aufs_bindex_t au_ibend(struct inode *inode) ++{ ++ IiMustAnyLock(inode); ++ return au_ii(inode)->ii_bend; ++} ++ ++static inline struct au_vdir *au_ivdir(struct inode *inode) ++{ ++ IiMustAnyLock(inode); ++ return au_ii(inode)->ii_vdir; ++} ++ ++static inline struct dentry *au_hi_wh(struct inode *inode, aufs_bindex_t bindex) ++{ ++ IiMustAnyLock(inode); ++ return au_ii(inode)->ii_hinode[0 + bindex].hi_whdentry; ++} ++ ++static inline void au_set_ibstart(struct inode *inode, aufs_bindex_t bindex) ++{ ++ IiMustWriteLock(inode); ++ au_ii(inode)->ii_bstart = bindex; ++} ++ ++static inline void au_set_ibend(struct inode *inode, aufs_bindex_t bindex) ++{ ++ IiMustWriteLock(inode); ++ au_ii(inode)->ii_bend = bindex; ++} ++ ++static inline void au_set_ivdir(struct inode *inode, struct au_vdir *vdir) ++{ ++ IiMustWriteLock(inode); ++ au_ii(inode)->ii_vdir = vdir; ++} ++ ++static inline struct au_hinode *au_hi(struct inode *inode, aufs_bindex_t bindex) ++{ ++ IiMustAnyLock(inode); ++ return au_ii(inode)->ii_hinode + bindex; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline struct dentry *au_pinned_parent(struct au_pin *pin) ++{ ++ if (pin) ++ return pin->parent; ++ return NULL; ++} ++ ++static inline struct inode *au_pinned_h_dir(struct au_pin *pin) ++{ ++ if (pin && pin->hdir) ++ return pin->hdir->hi_inode; ++ return NULL; ++} ++ ++static inline struct au_hinode *au_pinned_hdir(struct au_pin *pin) ++{ ++ if (pin) ++ return pin->hdir; ++ return NULL; ++} ++ ++static inline void au_pin_set_dentry(struct au_pin *pin, struct dentry *dentry) ++{ ++ if (pin) ++ pin->dentry = dentry; ++} ++ ++static inline void au_pin_set_parent_lflag(struct au_pin *pin, ++ unsigned char lflag) ++{ ++ if (pin) { ++ if (lflag) ++ au_fset_pin(pin->flags, DI_LOCKED); ++ else ++ au_fclr_pin(pin->flags, DI_LOCKED); ++ } ++} ++ ++#if 0 /* reserved */ ++static inline void au_pin_set_parent(struct au_pin *pin, struct dentry *parent) ++{ ++ if (pin) { ++ dput(pin->parent); ++ pin->parent = dget(parent); ++ } ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_branch; ++#ifdef CONFIG_AUFS_HNOTIFY ++struct au_hnotify_op { ++ void (*ctl)(struct au_hinode *hinode, int do_set); ++ int (*alloc)(struct au_hinode *hinode); ++ ++ /* ++ * if it returns true, the the caller should free hinode->hi_notify, ++ * otherwise ->free() frees it. ++ */ ++ int (*free)(struct au_hinode *hinode, ++ struct au_hnotify *hn) __must_check; ++ ++ void (*fin)(void); ++ int (*init)(void); ++ ++ int (*reset_br)(unsigned int udba, struct au_branch *br, int perm); ++ void (*fin_br)(struct au_branch *br); ++ int (*init_br)(struct au_branch *br, int perm); ++}; ++ ++/* hnotify.c */ ++int au_hn_alloc(struct au_hinode *hinode, struct inode *inode); ++void au_hn_free(struct au_hinode *hinode); ++void au_hn_ctl(struct au_hinode *hinode, int do_set); ++void au_hn_reset(struct inode *inode, unsigned int flags); ++int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, ++ struct qstr *h_child_qstr, struct inode *h_child_inode); ++int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm); ++int au_hnotify_init_br(struct au_branch *br, int perm); ++void au_hnotify_fin_br(struct au_branch *br); ++int __init au_hnotify_init(void); ++void au_hnotify_fin(void); ++ ++/* hfsnotify.c */ ++extern const struct au_hnotify_op au_hnotify_op; ++ ++static inline ++void au_hn_init(struct au_hinode *hinode) ++{ ++ hinode->hi_notify = NULL; ++} ++ ++static inline struct au_hnotify *au_hn(struct au_hinode *hinode) ++{ ++ return hinode->hi_notify; ++} ++ ++#else ++AuStub(int, au_hn_alloc, return -EOPNOTSUPP, ++ struct au_hinode *hinode __maybe_unused, ++ struct inode *inode __maybe_unused) ++AuStub(struct au_hnotify *, au_hn, return NULL, struct au_hinode *hinode) ++AuStubVoid(au_hn_free, struct au_hinode *hinode __maybe_unused) ++AuStubVoid(au_hn_ctl, struct au_hinode *hinode __maybe_unused, ++ int do_set __maybe_unused) ++AuStubVoid(au_hn_reset, struct inode *inode __maybe_unused, ++ unsigned int flags __maybe_unused) ++AuStubInt0(au_hnotify_reset_br, unsigned int udba __maybe_unused, ++ struct au_branch *br __maybe_unused, ++ int perm __maybe_unused) ++AuStubInt0(au_hnotify_init_br, struct au_branch *br __maybe_unused, ++ int perm __maybe_unused) ++AuStubVoid(au_hnotify_fin_br, struct au_branch *br __maybe_unused) ++AuStubInt0(__init au_hnotify_init, void) ++AuStubVoid(au_hnotify_fin, void) ++AuStubVoid(au_hn_init, struct au_hinode *hinode __maybe_unused) ++#endif /* CONFIG_AUFS_HNOTIFY */ ++ ++static inline void au_hn_suspend(struct au_hinode *hdir) ++{ ++ au_hn_ctl(hdir, /*do_set*/0); ++} ++ ++static inline void au_hn_resume(struct au_hinode *hdir) ++{ ++ au_hn_ctl(hdir, /*do_set*/1); ++} ++ ++static inline void au_hn_imtx_lock(struct au_hinode *hdir) ++{ ++ mutex_lock(&hdir->hi_inode->i_mutex); ++ au_hn_suspend(hdir); ++} ++ ++static inline void au_hn_imtx_lock_nested(struct au_hinode *hdir, ++ unsigned int sc __maybe_unused) ++{ ++ mutex_lock_nested(&hdir->hi_inode->i_mutex, sc); ++ au_hn_suspend(hdir); ++} ++ ++static inline void au_hn_imtx_unlock(struct au_hinode *hdir) ++{ ++ au_hn_resume(hdir); ++ mutex_unlock(&hdir->hi_inode->i_mutex); ++} ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_INODE_H__ */ +diff -Nurp linux-4.4.3/fs/aufs/ioctl.c linux-4.4.3-aufs/fs/aufs/ioctl.c +--- linux-4.4.3/fs/aufs/ioctl.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/ioctl.c 2016-03-02 17:59:37.369498746 +0200 +@@ -0,0 +1,206 @@ ++/* ++ * Copyright (C) 2005-2016 Junjiro R. Okajima ++ */ ++ ++/* ++ * ioctl ++ * plink-management and readdir in userspace. ++ * assist the pathconf(3) wrapper library. ++ * move-down ++ * File-based Hierarchical Storage Management. ++ */ ++ ++#include ++#include ++#include "aufs.h" ++ ++static int au_wbr_fd(struct path *path, struct aufs_wbr_fd __user *arg) ++{ ++ int err, fd; ++ aufs_bindex_t wbi, bindex, bend; ++ struct file *h_file; ++ struct super_block *sb; ++ struct dentry *root; ++ struct au_branch *br; ++ struct aufs_wbr_fd wbrfd = { ++ .oflags = au_dir_roflags, ++ .brid = -1 ++ }; ++ const int valid = O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_DIRECTORY ++ | O_NOATIME | O_CLOEXEC; ++ ++ AuDebugOn(wbrfd.oflags & ~valid); ++ ++ if (arg) { ++ err = copy_from_user(&wbrfd, arg, sizeof(wbrfd)); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ goto out; ++ } ++ ++ err = -EINVAL; ++ AuDbg("wbrfd{0%o, %d}\n", wbrfd.oflags, wbrfd.brid); ++ wbrfd.oflags |= au_dir_roflags; ++ AuDbg("0%o\n", wbrfd.oflags); ++ if (unlikely(wbrfd.oflags & ~valid)) ++ goto out; ++ } ++ ++ fd = get_unused_fd_flags(0); ++ err = fd; ++ if (unlikely(fd < 0)) ++ goto out; ++ ++ h_file = ERR_PTR(-EINVAL); ++ wbi = 0; ++ br = NULL; ++ sb = path->dentry->d_sb; ++ root = sb->s_root; ++ aufs_read_lock(root, AuLock_IR); ++ bend = au_sbend(sb); ++ if (wbrfd.brid >= 0) { ++ wbi = au_br_index(sb, wbrfd.brid); ++ if (unlikely(wbi < 0 || wbi > bend)) ++ goto out_unlock; ++ } ++ ++ h_file = ERR_PTR(-ENOENT); ++ br = au_sbr(sb, wbi); ++ if (!au_br_writable(br->br_perm)) { ++ if (arg) ++ goto out_unlock; ++ ++ bindex = wbi + 1; ++ wbi = -1; ++ for (; bindex <= bend; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (au_br_writable(br->br_perm)) { ++ wbi = bindex; ++ br = au_sbr(sb, wbi); ++ break; ++ } ++ } ++ } ++ AuDbg("wbi %d\n", wbi); ++ if (wbi >= 0) ++ h_file = au_h_open(root, wbi, wbrfd.oflags, NULL, ++ /*force_wr*/0); ++ ++out_unlock: ++ aufs_read_unlock(root, AuLock_IR); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out_fd; ++ ++ atomic_dec(&br->br_count); /* cf. au_h_open() */ ++ fd_install(fd, h_file); ++ err = fd; ++ goto out; /* success */ ++ ++out_fd: ++ put_unused_fd(fd); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg) ++{ ++ long err; ++ struct dentry *dentry; ++ ++ switch (cmd) { ++ case AUFS_CTL_RDU: ++ case AUFS_CTL_RDU_INO: ++ err = au_rdu_ioctl(file, cmd, arg); ++ break; ++ ++ case AUFS_CTL_WBR_FD: ++ err = au_wbr_fd(&file->f_path, (void __user *)arg); ++ break; ++ ++ case AUFS_CTL_IBUSY: ++ err = au_ibusy_ioctl(file, arg); ++ break; ++ ++ case AUFS_CTL_BRINFO: ++ err = au_brinfo_ioctl(file, arg); ++ break; ++ ++ case AUFS_CTL_FHSM_FD: ++ dentry = file->f_path.dentry; ++ if (IS_ROOT(dentry)) ++ err = au_fhsm_fd(dentry->d_sb, arg); ++ else ++ err = -ENOTTY; ++ break; ++ ++ default: ++ /* do not call the lower */ ++ AuDbg("0x%x\n", cmd); ++ err = -ENOTTY; ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg) ++{ ++ long err; ++ ++ switch (cmd) { ++ case AUFS_CTL_MVDOWN: ++ err = au_mvdown(file->f_path.dentry, (void __user *)arg); ++ break; ++ ++ case AUFS_CTL_WBR_FD: ++ err = au_wbr_fd(&file->f_path, (void __user *)arg); ++ break; ++ ++ default: ++ /* do not call the lower */ ++ AuDbg("0x%x\n", cmd); ++ err = -ENOTTY; ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++#ifdef CONFIG_COMPAT ++long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, ++ unsigned long arg) ++{ ++ long err; ++ ++ switch (cmd) { ++ case AUFS_CTL_RDU: ++ case AUFS_CTL_RDU_INO: ++ err = au_rdu_compat_ioctl(file, cmd, arg); ++ break; ++ ++ case AUFS_CTL_IBUSY: ++ err = au_ibusy_compat_ioctl(file, arg); ++ break; ++ ++ case AUFS_CTL_BRINFO: ++ err = au_brinfo_compat_ioctl(file, arg); ++ break; ++ ++ default: ++ err = aufs_ioctl_dir(file, cmd, arg); ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, ++ unsigned long arg) ++{ ++ return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); ++} ++#endif +diff -Nurp linux-4.4.3/fs/aufs/i_op_add.c linux-4.4.3-aufs/fs/aufs/i_op_add.c +--- linux-4.4.3/fs/aufs/i_op_add.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/i_op_add.c 2016-03-02 17:59:37.367498731 +0200 +@@ -0,0 +1,919 @@ ++/* ++ * Copyright (C) 2005-2016 Junjiro R. Okajima ++ */ ++ ++/* ++ * inode operations (add entry) ++ */ ++ ++#include "aufs.h" ++ ++/* ++ * final procedure of adding a new entry, except link(2). ++ * remove whiteout, instantiate, copyup the parent dir's times and size ++ * and update version. ++ * if it failed, re-create the removed whiteout. ++ */ ++static int epilog(struct inode *dir, aufs_bindex_t bindex, ++ struct dentry *wh_dentry, struct dentry *dentry) ++{ ++ int err, rerr; ++ aufs_bindex_t bwh; ++ struct path h_path; ++ struct super_block *sb; ++ struct inode *inode, *h_dir; ++ struct dentry *wh; ++ ++ bwh = -1; ++ sb = dir->i_sb; ++ if (wh_dentry) { ++ h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ ++ IMustLock(h_dir); ++ AuDebugOn(au_h_iptr(dir, bindex) != h_dir); ++ bwh = au_dbwh(dentry); ++ h_path.dentry = wh_dentry; ++ h_path.mnt = au_sbr_mnt(sb, bindex); ++ err = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, ++ dentry); ++ if (unlikely(err)) ++ goto out; ++ } ++ ++ inode = au_new_inode(dentry, /*must_new*/1); ++ if (!IS_ERR(inode)) { ++ d_instantiate(dentry, inode); ++ dir = d_inode(dentry->d_parent); /* dir inode is locked */ ++ IMustLock(dir); ++ au_dir_ts(dir, bindex); ++ dir->i_version++; ++ au_fhsm_wrote(sb, bindex, /*force*/0); ++ return 0; /* success */ ++ } ++ ++ err = PTR_ERR(inode); ++ if (!wh_dentry) ++ goto out; ++ ++ /* revert */ ++ /* dir inode is locked */ ++ wh = au_wh_create(dentry, bwh, wh_dentry->d_parent); ++ rerr = PTR_ERR(wh); ++ if (IS_ERR(wh)) { ++ AuIOErr("%pd reverting whiteout failed(%d, %d)\n", ++ dentry, err, rerr); ++ err = -EIO; ++ } else ++ dput(wh); ++ ++out: ++ return err; ++} ++ ++static int au_d_may_add(struct dentry *dentry) ++{ ++ int err; ++ ++ err = 0; ++ if (unlikely(d_unhashed(dentry))) ++ err = -ENOENT; ++ if (unlikely(d_really_is_positive(dentry))) ++ err = -EEXIST; ++ return err; ++} ++ ++/* ++ * simple tests for the adding inode operations. ++ * following the checks in vfs, plus the parent-child relationship. ++ */ ++int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_parent, int isdir) ++{ ++ int err; ++ umode_t h_mode; ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ ++ err = -ENAMETOOLONG; ++ if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) ++ goto out; ++ ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (d_really_is_negative(dentry)) { ++ err = -EEXIST; ++ if (unlikely(d_is_positive(h_dentry))) ++ goto out; ++ } else { ++ /* rename(2) case */ ++ err = -EIO; ++ if (unlikely(d_is_negative(h_dentry))) ++ goto out; ++ h_inode = d_inode(h_dentry); ++ if (unlikely(!h_inode->i_nlink)) ++ goto out; ++ ++ h_mode = h_inode->i_mode; ++ if (!isdir) { ++ err = -EISDIR; ++ if (unlikely(S_ISDIR(h_mode))) ++ goto out; ++ } else if (unlikely(!S_ISDIR(h_mode))) { ++ err = -ENOTDIR; ++ goto out; ++ } ++ } ++ ++ err = 0; ++ /* expected parent dir is locked */ ++ if (unlikely(h_parent != h_dentry->d_parent)) ++ err = -EIO; ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ++ * initial procedure of adding a new entry. ++ * prepare writable branch and the parent dir, lock it, ++ * and lookup whiteout for the new entry. ++ */ ++static struct dentry* ++lock_hdir_lkup_wh(struct dentry *dentry, struct au_dtime *dt, ++ struct dentry *src_dentry, struct au_pin *pin, ++ struct au_wr_dir_args *wr_dir_args) ++{ ++ struct dentry *wh_dentry, *h_parent; ++ struct super_block *sb; ++ struct au_branch *br; ++ int err; ++ unsigned int udba; ++ aufs_bindex_t bcpup; ++ ++ AuDbg("%pd\n", dentry); ++ ++ err = au_wr_dir(dentry, src_dentry, wr_dir_args); ++ bcpup = err; ++ wh_dentry = ERR_PTR(err); ++ if (unlikely(err < 0)) ++ goto out; ++ ++ sb = dentry->d_sb; ++ udba = au_opt_udba(sb); ++ err = au_pin(pin, dentry, bcpup, udba, ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ wh_dentry = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out; ++ ++ h_parent = au_pinned_h_parent(pin); ++ if (udba != AuOpt_UDBA_NONE ++ && au_dbstart(dentry) == bcpup) ++ err = au_may_add(dentry, bcpup, h_parent, ++ au_ftest_wrdir(wr_dir_args->flags, ISDIR)); ++ else if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) ++ err = -ENAMETOOLONG; ++ wh_dentry = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out_unpin; ++ ++ br = au_sbr(sb, bcpup); ++ if (dt) { ++ struct path tmp = { ++ .dentry = h_parent, ++ .mnt = au_br_mnt(br) ++ }; ++ au_dtime_store(dt, au_pinned_parent(pin), &tmp); ++ } ++ ++ wh_dentry = NULL; ++ if (bcpup != au_dbwh(dentry)) ++ goto out; /* success */ ++ ++ /* ++ * ENAMETOOLONG here means that if we allowed create such name, then it ++ * would not be able to removed in the future. So we don't allow such ++ * name here and we don't handle ENAMETOOLONG differently here. ++ */ ++ wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, br); ++ ++out_unpin: ++ if (IS_ERR(wh_dentry)) ++ au_unpin(pin); ++out: ++ return wh_dentry; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++enum { Mknod, Symlink, Creat }; ++struct simple_arg { ++ int type; ++ union { ++ struct { ++ umode_t mode; ++ bool want_excl; ++ bool try_aopen; ++ struct vfsub_aopen_args *aopen; ++ } c; ++ struct { ++ const char *symname; ++ } s; ++ struct { ++ umode_t mode; ++ dev_t dev; ++ } m; ++ } u; ++}; ++ ++static int add_simple(struct inode *dir, struct dentry *dentry, ++ struct simple_arg *arg) ++{ ++ int err, rerr; ++ aufs_bindex_t bstart; ++ unsigned char created; ++ const unsigned char try_aopen ++ = (arg->type == Creat && arg->u.c.try_aopen); ++ struct dentry *wh_dentry, *parent; ++ struct inode *h_dir; ++ struct super_block *sb; ++ struct au_branch *br; ++ /* to reuduce stack size */ ++ struct { ++ struct au_dtime dt; ++ struct au_pin pin; ++ struct path h_path; ++ struct au_wr_dir_args wr_dir_args; ++ } *a; ++ ++ AuDbg("%pd\n", dentry); ++ IMustLock(dir); ++ ++ err = -ENOMEM; ++ a = kmalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ a->wr_dir_args.force_btgt = -1; ++ a->wr_dir_args.flags = AuWrDir_ADD_ENTRY; ++ ++ parent = dentry->d_parent; /* dir inode is locked */ ++ if (!try_aopen) { ++ err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); ++ if (unlikely(err)) ++ goto out_free; ++ } ++ err = au_d_may_add(dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ if (!try_aopen) ++ di_write_lock_parent(parent); ++ wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, ++ &a->pin, &a->wr_dir_args); ++ err = PTR_ERR(wh_dentry); ++ if (IS_ERR(wh_dentry)) ++ goto out_parent; ++ ++ bstart = au_dbstart(dentry); ++ sb = dentry->d_sb; ++ br = au_sbr(sb, bstart); ++ a->h_path.dentry = au_h_dptr(dentry, bstart); ++ a->h_path.mnt = au_br_mnt(br); ++ h_dir = au_pinned_h_dir(&a->pin); ++ switch (arg->type) { ++ case Creat: ++ err = 0; ++ if (!try_aopen || !h_dir->i_op->atomic_open) ++ err = vfsub_create(h_dir, &a->h_path, arg->u.c.mode, ++ arg->u.c.want_excl); ++ else ++ err = vfsub_atomic_open(h_dir, a->h_path.dentry, ++ arg->u.c.aopen, br); ++ break; ++ case Symlink: ++ err = vfsub_symlink(h_dir, &a->h_path, arg->u.s.symname); ++ break; ++ case Mknod: ++ err = vfsub_mknod(h_dir, &a->h_path, arg->u.m.mode, ++ arg->u.m.dev); ++ break; ++ default: ++ BUG(); ++ } ++ created = !err; ++ if (!err) ++ err = epilog(dir, bstart, wh_dentry, dentry); ++ ++ /* revert */ ++ if (unlikely(created && err && d_is_positive(a->h_path.dentry))) { ++ /* no delegation since it is just created */ ++ rerr = vfsub_unlink(h_dir, &a->h_path, /*delegated*/NULL, ++ /*force*/0); ++ if (rerr) { ++ AuIOErr("%pd revert failure(%d, %d)\n", ++ dentry, err, rerr); ++ err = -EIO; ++ } ++ au_dtime_revert(&a->dt); ++ } ++ ++ if (!err && try_aopen && !h_dir->i_op->atomic_open) ++ *arg->u.c.aopen->opened |= FILE_CREATED; ++ ++ au_unpin(&a->pin); ++ dput(wh_dentry); ++ ++out_parent: ++ if (!try_aopen) ++ di_write_unlock(parent); ++out_unlock: ++ if (unlikely(err)) { ++ au_update_dbstart(dentry); ++ d_drop(dentry); ++ } ++ if (!try_aopen) ++ aufs_read_unlock(dentry, AuLock_DW); ++out_free: ++ kfree(a); ++out: ++ return err; ++} ++ ++int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, ++ dev_t dev) ++{ ++ struct simple_arg arg = { ++ .type = Mknod, ++ .u.m = { ++ .mode = mode, ++ .dev = dev ++ } ++ }; ++ return add_simple(dir, dentry, &arg); ++} ++ ++int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) ++{ ++ struct simple_arg arg = { ++ .type = Symlink, ++ .u.s.symname = symname ++ }; ++ return add_simple(dir, dentry, &arg); ++} ++ ++int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, ++ bool want_excl) ++{ ++ struct simple_arg arg = { ++ .type = Creat, ++ .u.c = { ++ .mode = mode, ++ .want_excl = want_excl ++ } ++ }; ++ return add_simple(dir, dentry, &arg); ++} ++ ++int au_aopen_or_create(struct inode *dir, struct dentry *dentry, ++ struct vfsub_aopen_args *aopen_args) ++{ ++ struct simple_arg arg = { ++ .type = Creat, ++ .u.c = { ++ .mode = aopen_args->create_mode, ++ .want_excl = aopen_args->open_flag & O_EXCL, ++ .try_aopen = true, ++ .aopen = aopen_args ++ } ++ }; ++ return add_simple(dir, dentry, &arg); ++} ++ ++int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ struct super_block *sb; ++ struct dentry *parent, *h_parent, *h_dentry; ++ struct inode *h_dir, *inode; ++ struct vfsmount *h_mnt; ++ struct au_wr_dir_args wr_dir_args = { ++ .force_btgt = -1, ++ .flags = AuWrDir_TMPFILE ++ }; ++ ++ /* copy-up may happen */ ++ mutex_lock(&dir->i_mutex); ++ ++ sb = dir->i_sb; ++ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (unlikely(err)) ++ goto out; ++ ++ err = au_di_init(dentry); ++ if (unlikely(err)) ++ goto out_si; ++ ++ err = -EBUSY; ++ parent = d_find_any_alias(dir); ++ AuDebugOn(!parent); ++ di_write_lock_parent(parent); ++ if (unlikely(d_inode(parent) != dir)) ++ goto out_parent; ++ ++ err = au_digen_test(parent, au_sigen(sb)); ++ if (unlikely(err)) ++ goto out_parent; ++ ++ bindex = au_dbstart(parent); ++ au_set_dbstart(dentry, bindex); ++ au_set_dbend(dentry, bindex); ++ err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); ++ bindex = err; ++ if (unlikely(err < 0)) ++ goto out_parent; ++ ++ err = -EOPNOTSUPP; ++ h_dir = au_h_iptr(dir, bindex); ++ if (unlikely(!h_dir->i_op->tmpfile)) ++ goto out_parent; ++ ++ h_mnt = au_sbr_mnt(sb, bindex); ++ err = vfsub_mnt_want_write(h_mnt); ++ if (unlikely(err)) ++ goto out_parent; ++ ++ h_parent = au_h_dptr(parent, bindex); ++ err = inode_permission(d_inode(h_parent), MAY_WRITE | MAY_EXEC); ++ if (unlikely(err)) ++ goto out_mnt; ++ ++ err = -ENOMEM; ++ h_dentry = d_alloc(h_parent, &dentry->d_name); ++ if (unlikely(!h_dentry)) ++ goto out_mnt; ++ ++ err = h_dir->i_op->tmpfile(h_dir, h_dentry, mode); ++ if (unlikely(err)) ++ goto out_dentry; ++ ++ au_set_dbstart(dentry, bindex); ++ au_set_dbend(dentry, bindex); ++ au_set_h_dptr(dentry, bindex, dget(h_dentry)); ++ inode = au_new_inode(dentry, /*must_new*/1); ++ if (IS_ERR(inode)) { ++ err = PTR_ERR(inode); ++ au_set_h_dptr(dentry, bindex, NULL); ++ au_set_dbstart(dentry, -1); ++ au_set_dbend(dentry, -1); ++ } else { ++ if (!inode->i_nlink) ++ set_nlink(inode, 1); ++ d_tmpfile(dentry, inode); ++ au_di(dentry)->di_tmpfile = 1; ++ ++ /* update without i_mutex */ ++ if (au_ibstart(dir) == au_dbstart(dentry)) ++ au_cpup_attr_timesizes(dir); ++ } ++ ++out_dentry: ++ dput(h_dentry); ++out_mnt: ++ vfsub_mnt_drop_write(h_mnt); ++out_parent: ++ di_write_unlock(parent); ++ dput(parent); ++ di_write_unlock(dentry); ++ if (!err) ++#if 0 ++ /* verbose coding for lock class name */ ++ au_rw_class(&au_di(dentry)->di_rwsem, ++ au_lc_key + AuLcNonDir_DIINFO); ++#else ++ ; ++#endif ++ else { ++ au_di_fin(dentry); ++ dentry->d_fsdata = NULL; ++ } ++out_si: ++ si_read_unlock(sb); ++out: ++ mutex_unlock(&dir->i_mutex); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_link_args { ++ aufs_bindex_t bdst, bsrc; ++ struct au_pin pin; ++ struct path h_path; ++ struct dentry *src_parent, *parent; ++}; ++ ++static int au_cpup_before_link(struct dentry *src_dentry, ++ struct au_link_args *a) ++{ ++ int err; ++ struct dentry *h_src_dentry; ++ struct au_cp_generic cpg = { ++ .dentry = src_dentry, ++ .bdst = a->bdst, ++ .bsrc = a->bsrc, ++ .len = -1, ++ .pin = &a->pin, ++ .flags = AuCpup_DTIME | AuCpup_HOPEN /* | AuCpup_KEEPLINO */ ++ }; ++ ++ di_read_lock_parent(a->src_parent, AuLock_IR); ++ err = au_test_and_cpup_dirs(src_dentry, a->bdst); ++ if (unlikely(err)) ++ goto out; ++ ++ h_src_dentry = au_h_dptr(src_dentry, a->bsrc); ++ err = au_pin(&a->pin, src_dentry, a->bdst, ++ au_opt_udba(src_dentry->d_sb), ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ if (unlikely(err)) ++ goto out; ++ ++ err = au_sio_cpup_simple(&cpg); ++ au_unpin(&a->pin); ++ ++out: ++ di_read_unlock(a->src_parent, AuLock_IR); ++ return err; ++} ++ ++static int au_cpup_or_link(struct dentry *src_dentry, struct dentry *dentry, ++ struct au_link_args *a) ++{ ++ int err; ++ unsigned char plink; ++ aufs_bindex_t bend; ++ struct dentry *h_src_dentry; ++ struct inode *h_inode, *inode, *delegated; ++ struct super_block *sb; ++ struct file *h_file; ++ ++ plink = 0; ++ h_inode = NULL; ++ sb = src_dentry->d_sb; ++ inode = d_inode(src_dentry); ++ if (au_ibstart(inode) <= a->bdst) ++ h_inode = au_h_iptr(inode, a->bdst); ++ if (!h_inode || !h_inode->i_nlink) { ++ /* copyup src_dentry as the name of dentry. */ ++ bend = au_dbend(dentry); ++ if (bend < a->bsrc) ++ au_set_dbend(dentry, a->bsrc); ++ au_set_h_dptr(dentry, a->bsrc, ++ dget(au_h_dptr(src_dentry, a->bsrc))); ++ dget(a->h_path.dentry); ++ au_set_h_dptr(dentry, a->bdst, NULL); ++ AuDbg("temporary d_inode...\n"); ++ spin_lock(&dentry->d_lock); ++ dentry->d_inode = d_inode(src_dentry); /* tmp */ ++ spin_unlock(&dentry->d_lock); ++ h_file = au_h_open_pre(dentry, a->bsrc, /*force_wr*/0); ++ if (IS_ERR(h_file)) ++ err = PTR_ERR(h_file); ++ else { ++ struct au_cp_generic cpg = { ++ .dentry = dentry, ++ .bdst = a->bdst, ++ .bsrc = -1, ++ .len = -1, ++ .pin = &a->pin, ++ .flags = AuCpup_KEEPLINO ++ }; ++ err = au_sio_cpup_simple(&cpg); ++ au_h_open_post(dentry, a->bsrc, h_file); ++ if (!err) { ++ dput(a->h_path.dentry); ++ a->h_path.dentry = au_h_dptr(dentry, a->bdst); ++ } else ++ au_set_h_dptr(dentry, a->bdst, ++ a->h_path.dentry); ++ } ++ spin_lock(&dentry->d_lock); ++ dentry->d_inode = NULL; /* restore */ ++ spin_unlock(&dentry->d_lock); ++ AuDbg("temporary d_inode...done\n"); ++ au_set_h_dptr(dentry, a->bsrc, NULL); ++ au_set_dbend(dentry, bend); ++ } else { ++ /* the inode of src_dentry already exists on a.bdst branch */ ++ h_src_dentry = d_find_alias(h_inode); ++ if (!h_src_dentry && au_plink_test(inode)) { ++ plink = 1; ++ h_src_dentry = au_plink_lkup(inode, a->bdst); ++ err = PTR_ERR(h_src_dentry); ++ if (IS_ERR(h_src_dentry)) ++ goto out; ++ ++ if (unlikely(d_is_negative(h_src_dentry))) { ++ dput(h_src_dentry); ++ h_src_dentry = NULL; ++ } ++ ++ } ++ if (h_src_dentry) { ++ delegated = NULL; ++ err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), ++ &a->h_path, &delegated); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal link\n"); ++ iput(delegated); ++ } ++ dput(h_src_dentry); ++ } else { ++ AuIOErr("no dentry found for hi%lu on b%d\n", ++ h_inode->i_ino, a->bdst); ++ err = -EIO; ++ } ++ } ++ ++ if (!err && !plink) ++ au_plink_append(inode, a->bdst, a->h_path.dentry); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int aufs_link(struct dentry *src_dentry, struct inode *dir, ++ struct dentry *dentry) ++{ ++ int err, rerr; ++ struct au_dtime dt; ++ struct au_link_args *a; ++ struct dentry *wh_dentry, *h_src_dentry; ++ struct inode *inode, *delegated; ++ struct super_block *sb; ++ struct au_wr_dir_args wr_dir_args = { ++ /* .force_btgt = -1, */ ++ .flags = AuWrDir_ADD_ENTRY ++ }; ++ ++ IMustLock(dir); ++ inode = d_inode(src_dentry); ++ IMustLock(inode); ++ ++ err = -ENOMEM; ++ a = kzalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ ++ a->parent = dentry->d_parent; /* dir inode is locked */ ++ err = aufs_read_and_write_lock2(dentry, src_dentry, ++ AuLock_NOPLM | AuLock_GEN); ++ if (unlikely(err)) ++ goto out_kfree; ++ err = au_d_linkable(src_dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ err = au_d_may_add(dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ ++ a->src_parent = dget_parent(src_dentry); ++ wr_dir_args.force_btgt = au_ibstart(inode); ++ ++ di_write_lock_parent(a->parent); ++ wr_dir_args.force_btgt = au_wbr(dentry, wr_dir_args.force_btgt); ++ wh_dentry = lock_hdir_lkup_wh(dentry, &dt, src_dentry, &a->pin, ++ &wr_dir_args); ++ err = PTR_ERR(wh_dentry); ++ if (IS_ERR(wh_dentry)) ++ goto out_parent; ++ ++ err = 0; ++ sb = dentry->d_sb; ++ a->bdst = au_dbstart(dentry); ++ a->h_path.dentry = au_h_dptr(dentry, a->bdst); ++ a->h_path.mnt = au_sbr_mnt(sb, a->bdst); ++ a->bsrc = au_ibstart(inode); ++ h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); ++ if (!h_src_dentry && au_di(src_dentry)->di_tmpfile) ++ h_src_dentry = dget(au_hi_wh(inode, a->bsrc)); ++ if (!h_src_dentry) { ++ a->bsrc = au_dbstart(src_dentry); ++ h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); ++ AuDebugOn(!h_src_dentry); ++ } else if (IS_ERR(h_src_dentry)) { ++ err = PTR_ERR(h_src_dentry); ++ goto out_parent; ++ } ++ ++ if (au_opt_test(au_mntflags(sb), PLINK)) { ++ if (a->bdst < a->bsrc ++ /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) ++ err = au_cpup_or_link(src_dentry, dentry, a); ++ else { ++ delegated = NULL; ++ err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), ++ &a->h_path, &delegated); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal link\n"); ++ iput(delegated); ++ } ++ } ++ dput(h_src_dentry); ++ } else { ++ /* ++ * copyup src_dentry to the branch we process, ++ * and then link(2) to it. ++ */ ++ dput(h_src_dentry); ++ if (a->bdst < a->bsrc ++ /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) { ++ au_unpin(&a->pin); ++ di_write_unlock(a->parent); ++ err = au_cpup_before_link(src_dentry, a); ++ di_write_lock_parent(a->parent); ++ if (!err) ++ err = au_pin(&a->pin, dentry, a->bdst, ++ au_opt_udba(sb), ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ if (unlikely(err)) ++ goto out_wh; ++ } ++ if (!err) { ++ h_src_dentry = au_h_dptr(src_dentry, a->bdst); ++ err = -ENOENT; ++ if (h_src_dentry && d_is_positive(h_src_dentry)) { ++ delegated = NULL; ++ err = vfsub_link(h_src_dentry, ++ au_pinned_h_dir(&a->pin), ++ &a->h_path, &delegated); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry" ++ " for NFSv4 delegation" ++ " for an internal link\n"); ++ iput(delegated); ++ } ++ } ++ } ++ } ++ if (unlikely(err)) ++ goto out_unpin; ++ ++ if (wh_dentry) { ++ a->h_path.dentry = wh_dentry; ++ err = au_wh_unlink_dentry(au_pinned_h_dir(&a->pin), &a->h_path, ++ dentry); ++ if (unlikely(err)) ++ goto out_revert; ++ } ++ ++ au_dir_ts(dir, a->bdst); ++ dir->i_version++; ++ inc_nlink(inode); ++ inode->i_ctime = dir->i_ctime; ++ d_instantiate(dentry, au_igrab(inode)); ++ if (d_unhashed(a->h_path.dentry)) ++ /* some filesystem calls d_drop() */ ++ d_drop(dentry); ++ /* some filesystems consume an inode even hardlink */ ++ au_fhsm_wrote(sb, a->bdst, /*force*/0); ++ goto out_unpin; /* success */ ++ ++out_revert: ++ /* no delegation since it is just created */ ++ rerr = vfsub_unlink(au_pinned_h_dir(&a->pin), &a->h_path, ++ /*delegated*/NULL, /*force*/0); ++ if (unlikely(rerr)) { ++ AuIOErr("%pd reverting failed(%d, %d)\n", dentry, err, rerr); ++ err = -EIO; ++ } ++ au_dtime_revert(&dt); ++out_unpin: ++ au_unpin(&a->pin); ++out_wh: ++ dput(wh_dentry); ++out_parent: ++ di_write_unlock(a->parent); ++ dput(a->src_parent); ++out_unlock: ++ if (unlikely(err)) { ++ au_update_dbstart(dentry); ++ d_drop(dentry); ++ } ++ aufs_read_and_write_unlock2(dentry, src_dentry); ++out_kfree: ++ kfree(a); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) ++{ ++ int err, rerr; ++ aufs_bindex_t bindex; ++ unsigned char diropq; ++ struct path h_path; ++ struct dentry *wh_dentry, *parent, *opq_dentry; ++ struct mutex *h_mtx; ++ struct super_block *sb; ++ struct { ++ struct au_pin pin; ++ struct au_dtime dt; ++ } *a; /* reduce the stack usage */ ++ struct au_wr_dir_args wr_dir_args = { ++ .force_btgt = -1, ++ .flags = AuWrDir_ADD_ENTRY | AuWrDir_ISDIR ++ }; ++ ++ IMustLock(dir); ++ ++ err = -ENOMEM; ++ a = kmalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ ++ err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); ++ if (unlikely(err)) ++ goto out_free; ++ err = au_d_may_add(dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ ++ parent = dentry->d_parent; /* dir inode is locked */ ++ di_write_lock_parent(parent); ++ wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, ++ &a->pin, &wr_dir_args); ++ err = PTR_ERR(wh_dentry); ++ if (IS_ERR(wh_dentry)) ++ goto out_parent; ++ ++ sb = dentry->d_sb; ++ bindex = au_dbstart(dentry); ++ h_path.dentry = au_h_dptr(dentry, bindex); ++ h_path.mnt = au_sbr_mnt(sb, bindex); ++ err = vfsub_mkdir(au_pinned_h_dir(&a->pin), &h_path, mode); ++ if (unlikely(err)) ++ goto out_unpin; ++ ++ /* make the dir opaque */ ++ diropq = 0; ++ h_mtx = &d_inode(h_path.dentry)->i_mutex; ++ if (wh_dentry ++ || au_opt_test(au_mntflags(sb), ALWAYS_DIROPQ)) { ++ mutex_lock_nested(h_mtx, AuLsc_I_CHILD); ++ opq_dentry = au_diropq_create(dentry, bindex); ++ mutex_unlock(h_mtx); ++ err = PTR_ERR(opq_dentry); ++ if (IS_ERR(opq_dentry)) ++ goto out_dir; ++ dput(opq_dentry); ++ diropq = 1; ++ } ++ ++ err = epilog(dir, bindex, wh_dentry, dentry); ++ if (!err) { ++ inc_nlink(dir); ++ goto out_unpin; /* success */ ++ } ++ ++ /* revert */ ++ if (diropq) { ++ AuLabel(revert opq); ++ mutex_lock_nested(h_mtx, AuLsc_I_CHILD); ++ rerr = au_diropq_remove(dentry, bindex); ++ mutex_unlock(h_mtx); ++ if (rerr) { ++ AuIOErr("%pd reverting diropq failed(%d, %d)\n", ++ dentry, err, rerr); ++ err = -EIO; ++ } ++ } ++ ++out_dir: ++ AuLabel(revert dir); ++ rerr = vfsub_rmdir(au_pinned_h_dir(&a->pin), &h_path); ++ if (rerr) { ++ AuIOErr("%pd reverting dir failed(%d, %d)\n", ++ dentry, err, rerr); ++ err = -EIO; ++ } ++ au_dtime_revert(&a->dt); ++out_unpin: ++ au_unpin(&a->pin); ++ dput(wh_dentry); ++out_parent: ++ di_write_unlock(parent); ++out_unlock: ++ if (unlikely(err)) { ++ au_update_dbstart(dentry); ++ d_drop(dentry); ++ } ++ aufs_read_unlock(dentry, AuLock_DW); ++out_free: ++ kfree(a); ++out: ++ return err; ++} +diff -Nurp linux-4.4.3/fs/aufs/i_op.c linux-4.4.3-aufs/fs/aufs/i_op.c +--- linux-4.4.3/fs/aufs/i_op.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/i_op.c 2016-03-02 17:59:37.367498731 +0200 +@@ -0,0 +1,1477 @@ ++/* ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -15443,6 +17780,12 @@ index 0000000..daad67a + break; + } + } ++ /* ++ * regardless aufs 'acl' option setting. ++ * why don't all acl-aware fs call this func from their ->setattr()? ++ */ ++ if (!err && (ia->ia_valid & ATTR_MODE)) ++ err = vfsub_acl_chmod(a->h_inode, ia->ia_mode); + if (!err) + au_cpup_attr_changeable(inode); + @@ -15949,939 +18292,12 @@ index 0000000..daad67a + .update_time = aufs_update_time + } +}; -diff --git a/fs/aufs/i_op_add.c b/fs/aufs/i_op_add.c -new file mode 100644 -index 0000000..0c3530e ---- /dev/null -+++ b/fs/aufs/i_op_add.c -@@ -0,0 +1,919 @@ -+/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima -+ */ -+ -+/* -+ * inode operations (add entry) -+ */ -+ -+#include "aufs.h" -+ -+/* -+ * final procedure of adding a new entry, except link(2). -+ * remove whiteout, instantiate, copyup the parent dir's times and size -+ * and update version. -+ * if it failed, re-create the removed whiteout. -+ */ -+static int epilog(struct inode *dir, aufs_bindex_t bindex, -+ struct dentry *wh_dentry, struct dentry *dentry) -+{ -+ int err, rerr; -+ aufs_bindex_t bwh; -+ struct path h_path; -+ struct super_block *sb; -+ struct inode *inode, *h_dir; -+ struct dentry *wh; -+ -+ bwh = -1; -+ sb = dir->i_sb; -+ if (wh_dentry) { -+ h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ -+ IMustLock(h_dir); -+ AuDebugOn(au_h_iptr(dir, bindex) != h_dir); -+ bwh = au_dbwh(dentry); -+ h_path.dentry = wh_dentry; -+ h_path.mnt = au_sbr_mnt(sb, bindex); -+ err = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, -+ dentry); -+ if (unlikely(err)) -+ goto out; -+ } -+ -+ inode = au_new_inode(dentry, /*must_new*/1); -+ if (!IS_ERR(inode)) { -+ d_instantiate(dentry, inode); -+ dir = d_inode(dentry->d_parent); /* dir inode is locked */ -+ IMustLock(dir); -+ au_dir_ts(dir, bindex); -+ dir->i_version++; -+ au_fhsm_wrote(sb, bindex, /*force*/0); -+ return 0; /* success */ -+ } -+ -+ err = PTR_ERR(inode); -+ if (!wh_dentry) -+ goto out; -+ -+ /* revert */ -+ /* dir inode is locked */ -+ wh = au_wh_create(dentry, bwh, wh_dentry->d_parent); -+ rerr = PTR_ERR(wh); -+ if (IS_ERR(wh)) { -+ AuIOErr("%pd reverting whiteout failed(%d, %d)\n", -+ dentry, err, rerr); -+ err = -EIO; -+ } else -+ dput(wh); -+ -+out: -+ return err; -+} -+ -+static int au_d_may_add(struct dentry *dentry) -+{ -+ int err; -+ -+ err = 0; -+ if (unlikely(d_unhashed(dentry))) -+ err = -ENOENT; -+ if (unlikely(d_really_is_positive(dentry))) -+ err = -EEXIST; -+ return err; -+} -+ -+/* -+ * simple tests for the adding inode operations. -+ * following the checks in vfs, plus the parent-child relationship. -+ */ -+int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, -+ struct dentry *h_parent, int isdir) -+{ -+ int err; -+ umode_t h_mode; -+ struct dentry *h_dentry; -+ struct inode *h_inode; -+ -+ err = -ENAMETOOLONG; -+ if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) -+ goto out; -+ -+ h_dentry = au_h_dptr(dentry, bindex); -+ if (d_really_is_negative(dentry)) { -+ err = -EEXIST; -+ if (unlikely(d_is_positive(h_dentry))) -+ goto out; -+ } else { -+ /* rename(2) case */ -+ err = -EIO; -+ if (unlikely(d_is_negative(h_dentry))) -+ goto out; -+ h_inode = d_inode(h_dentry); -+ if (unlikely(!h_inode->i_nlink)) -+ goto out; -+ -+ h_mode = h_inode->i_mode; -+ if (!isdir) { -+ err = -EISDIR; -+ if (unlikely(S_ISDIR(h_mode))) -+ goto out; -+ } else if (unlikely(!S_ISDIR(h_mode))) { -+ err = -ENOTDIR; -+ goto out; -+ } -+ } -+ -+ err = 0; -+ /* expected parent dir is locked */ -+ if (unlikely(h_parent != h_dentry->d_parent)) -+ err = -EIO; -+ -+out: -+ AuTraceErr(err); -+ return err; -+} -+ -+/* -+ * initial procedure of adding a new entry. -+ * prepare writable branch and the parent dir, lock it, -+ * and lookup whiteout for the new entry. -+ */ -+static struct dentry* -+lock_hdir_lkup_wh(struct dentry *dentry, struct au_dtime *dt, -+ struct dentry *src_dentry, struct au_pin *pin, -+ struct au_wr_dir_args *wr_dir_args) -+{ -+ struct dentry *wh_dentry, *h_parent; -+ struct super_block *sb; -+ struct au_branch *br; -+ int err; -+ unsigned int udba; -+ aufs_bindex_t bcpup; -+ -+ AuDbg("%pd\n", dentry); -+ -+ err = au_wr_dir(dentry, src_dentry, wr_dir_args); -+ bcpup = err; -+ wh_dentry = ERR_PTR(err); -+ if (unlikely(err < 0)) -+ goto out; -+ -+ sb = dentry->d_sb; -+ udba = au_opt_udba(sb); -+ err = au_pin(pin, dentry, bcpup, udba, -+ AuPin_DI_LOCKED | AuPin_MNT_WRITE); -+ wh_dentry = ERR_PTR(err); -+ if (unlikely(err)) -+ goto out; -+ -+ h_parent = au_pinned_h_parent(pin); -+ if (udba != AuOpt_UDBA_NONE -+ && au_dbstart(dentry) == bcpup) -+ err = au_may_add(dentry, bcpup, h_parent, -+ au_ftest_wrdir(wr_dir_args->flags, ISDIR)); -+ else if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) -+ err = -ENAMETOOLONG; -+ wh_dentry = ERR_PTR(err); -+ if (unlikely(err)) -+ goto out_unpin; -+ -+ br = au_sbr(sb, bcpup); -+ if (dt) { -+ struct path tmp = { -+ .dentry = h_parent, -+ .mnt = au_br_mnt(br) -+ }; -+ au_dtime_store(dt, au_pinned_parent(pin), &tmp); -+ } -+ -+ wh_dentry = NULL; -+ if (bcpup != au_dbwh(dentry)) -+ goto out; /* success */ -+ -+ /* -+ * ENAMETOOLONG here means that if we allowed create such name, then it -+ * would not be able to removed in the future. So we don't allow such -+ * name here and we don't handle ENAMETOOLONG differently here. -+ */ -+ wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, br); -+ -+out_unpin: -+ if (IS_ERR(wh_dentry)) -+ au_unpin(pin); -+out: -+ return wh_dentry; -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+enum { Mknod, Symlink, Creat }; -+struct simple_arg { -+ int type; -+ union { -+ struct { -+ umode_t mode; -+ bool want_excl; -+ bool try_aopen; -+ struct vfsub_aopen_args *aopen; -+ } c; -+ struct { -+ const char *symname; -+ } s; -+ struct { -+ umode_t mode; -+ dev_t dev; -+ } m; -+ } u; -+}; -+ -+static int add_simple(struct inode *dir, struct dentry *dentry, -+ struct simple_arg *arg) -+{ -+ int err, rerr; -+ aufs_bindex_t bstart; -+ unsigned char created; -+ const unsigned char try_aopen -+ = (arg->type == Creat && arg->u.c.try_aopen); -+ struct dentry *wh_dentry, *parent; -+ struct inode *h_dir; -+ struct super_block *sb; -+ struct au_branch *br; -+ /* to reuduce stack size */ -+ struct { -+ struct au_dtime dt; -+ struct au_pin pin; -+ struct path h_path; -+ struct au_wr_dir_args wr_dir_args; -+ } *a; -+ -+ AuDbg("%pd\n", dentry); -+ IMustLock(dir); -+ -+ err = -ENOMEM; -+ a = kmalloc(sizeof(*a), GFP_NOFS); -+ if (unlikely(!a)) -+ goto out; -+ a->wr_dir_args.force_btgt = -1; -+ a->wr_dir_args.flags = AuWrDir_ADD_ENTRY; -+ -+ parent = dentry->d_parent; /* dir inode is locked */ -+ if (!try_aopen) { -+ err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); -+ if (unlikely(err)) -+ goto out_free; -+ } -+ err = au_d_may_add(dentry); -+ if (unlikely(err)) -+ goto out_unlock; -+ if (!try_aopen) -+ di_write_lock_parent(parent); -+ wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, -+ &a->pin, &a->wr_dir_args); -+ err = PTR_ERR(wh_dentry); -+ if (IS_ERR(wh_dentry)) -+ goto out_parent; -+ -+ bstart = au_dbstart(dentry); -+ sb = dentry->d_sb; -+ br = au_sbr(sb, bstart); -+ a->h_path.dentry = au_h_dptr(dentry, bstart); -+ a->h_path.mnt = au_br_mnt(br); -+ h_dir = au_pinned_h_dir(&a->pin); -+ switch (arg->type) { -+ case Creat: -+ err = 0; -+ if (!try_aopen || !h_dir->i_op->atomic_open) -+ err = vfsub_create(h_dir, &a->h_path, arg->u.c.mode, -+ arg->u.c.want_excl); -+ else -+ err = vfsub_atomic_open(h_dir, a->h_path.dentry, -+ arg->u.c.aopen, br); -+ break; -+ case Symlink: -+ err = vfsub_symlink(h_dir, &a->h_path, arg->u.s.symname); -+ break; -+ case Mknod: -+ err = vfsub_mknod(h_dir, &a->h_path, arg->u.m.mode, -+ arg->u.m.dev); -+ break; -+ default: -+ BUG(); -+ } -+ created = !err; -+ if (!err) -+ err = epilog(dir, bstart, wh_dentry, dentry); -+ -+ /* revert */ -+ if (unlikely(created && err && d_is_positive(a->h_path.dentry))) { -+ /* no delegation since it is just created */ -+ rerr = vfsub_unlink(h_dir, &a->h_path, /*delegated*/NULL, -+ /*force*/0); -+ if (rerr) { -+ AuIOErr("%pd revert failure(%d, %d)\n", -+ dentry, err, rerr); -+ err = -EIO; -+ } -+ au_dtime_revert(&a->dt); -+ } -+ -+ if (!err && try_aopen && !h_dir->i_op->atomic_open) -+ *arg->u.c.aopen->opened |= FILE_CREATED; -+ -+ au_unpin(&a->pin); -+ dput(wh_dentry); -+ -+out_parent: -+ if (!try_aopen) -+ di_write_unlock(parent); -+out_unlock: -+ if (unlikely(err)) { -+ au_update_dbstart(dentry); -+ d_drop(dentry); -+ } -+ if (!try_aopen) -+ aufs_read_unlock(dentry, AuLock_DW); -+out_free: -+ kfree(a); -+out: -+ return err; -+} -+ -+int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, -+ dev_t dev) -+{ -+ struct simple_arg arg = { -+ .type = Mknod, -+ .u.m = { -+ .mode = mode, -+ .dev = dev -+ } -+ }; -+ return add_simple(dir, dentry, &arg); -+} -+ -+int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) -+{ -+ struct simple_arg arg = { -+ .type = Symlink, -+ .u.s.symname = symname -+ }; -+ return add_simple(dir, dentry, &arg); -+} -+ -+int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, -+ bool want_excl) -+{ -+ struct simple_arg arg = { -+ .type = Creat, -+ .u.c = { -+ .mode = mode, -+ .want_excl = want_excl -+ } -+ }; -+ return add_simple(dir, dentry, &arg); -+} -+ -+int au_aopen_or_create(struct inode *dir, struct dentry *dentry, -+ struct vfsub_aopen_args *aopen_args) -+{ -+ struct simple_arg arg = { -+ .type = Creat, -+ .u.c = { -+ .mode = aopen_args->create_mode, -+ .want_excl = aopen_args->open_flag & O_EXCL, -+ .try_aopen = true, -+ .aopen = aopen_args -+ } -+ }; -+ return add_simple(dir, dentry, &arg); -+} -+ -+int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) -+{ -+ int err; -+ aufs_bindex_t bindex; -+ struct super_block *sb; -+ struct dentry *parent, *h_parent, *h_dentry; -+ struct inode *h_dir, *inode; -+ struct vfsmount *h_mnt; -+ struct au_wr_dir_args wr_dir_args = { -+ .force_btgt = -1, -+ .flags = AuWrDir_TMPFILE -+ }; -+ -+ /* copy-up may happen */ -+ mutex_lock(&dir->i_mutex); -+ -+ sb = dir->i_sb; -+ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); -+ if (unlikely(err)) -+ goto out; -+ -+ err = au_di_init(dentry); -+ if (unlikely(err)) -+ goto out_si; -+ -+ err = -EBUSY; -+ parent = d_find_any_alias(dir); -+ AuDebugOn(!parent); -+ di_write_lock_parent(parent); -+ if (unlikely(d_inode(parent) != dir)) -+ goto out_parent; -+ -+ err = au_digen_test(parent, au_sigen(sb)); -+ if (unlikely(err)) -+ goto out_parent; -+ -+ bindex = au_dbstart(parent); -+ au_set_dbstart(dentry, bindex); -+ au_set_dbend(dentry, bindex); -+ err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); -+ bindex = err; -+ if (unlikely(err < 0)) -+ goto out_parent; -+ -+ err = -EOPNOTSUPP; -+ h_dir = au_h_iptr(dir, bindex); -+ if (unlikely(!h_dir->i_op->tmpfile)) -+ goto out_parent; -+ -+ h_mnt = au_sbr_mnt(sb, bindex); -+ err = vfsub_mnt_want_write(h_mnt); -+ if (unlikely(err)) -+ goto out_parent; -+ -+ h_parent = au_h_dptr(parent, bindex); -+ err = inode_permission(d_inode(h_parent), MAY_WRITE | MAY_EXEC); -+ if (unlikely(err)) -+ goto out_mnt; -+ -+ err = -ENOMEM; -+ h_dentry = d_alloc(h_parent, &dentry->d_name); -+ if (unlikely(!h_dentry)) -+ goto out_mnt; -+ -+ err = h_dir->i_op->tmpfile(h_dir, h_dentry, mode); -+ if (unlikely(err)) -+ goto out_dentry; -+ -+ au_set_dbstart(dentry, bindex); -+ au_set_dbend(dentry, bindex); -+ au_set_h_dptr(dentry, bindex, dget(h_dentry)); -+ inode = au_new_inode(dentry, /*must_new*/1); -+ if (IS_ERR(inode)) { -+ err = PTR_ERR(inode); -+ au_set_h_dptr(dentry, bindex, NULL); -+ au_set_dbstart(dentry, -1); -+ au_set_dbend(dentry, -1); -+ } else { -+ if (!inode->i_nlink) -+ set_nlink(inode, 1); -+ d_tmpfile(dentry, inode); -+ au_di(dentry)->di_tmpfile = 1; -+ -+ /* update without i_mutex */ -+ if (au_ibstart(dir) == au_dbstart(dentry)) -+ au_cpup_attr_timesizes(dir); -+ } -+ -+out_dentry: -+ dput(h_dentry); -+out_mnt: -+ vfsub_mnt_drop_write(h_mnt); -+out_parent: -+ di_write_unlock(parent); -+ dput(parent); -+ di_write_unlock(dentry); -+ if (!err) -+#if 0 -+ /* verbose coding for lock class name */ -+ au_rw_class(&au_di(dentry)->di_rwsem, -+ au_lc_key + AuLcNonDir_DIINFO); -+#else -+ ; -+#endif -+ else { -+ au_di_fin(dentry); -+ dentry->d_fsdata = NULL; -+ } -+out_si: -+ si_read_unlock(sb); -+out: -+ mutex_unlock(&dir->i_mutex); -+ return err; -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+struct au_link_args { -+ aufs_bindex_t bdst, bsrc; -+ struct au_pin pin; -+ struct path h_path; -+ struct dentry *src_parent, *parent; -+}; -+ -+static int au_cpup_before_link(struct dentry *src_dentry, -+ struct au_link_args *a) -+{ -+ int err; -+ struct dentry *h_src_dentry; -+ struct au_cp_generic cpg = { -+ .dentry = src_dentry, -+ .bdst = a->bdst, -+ .bsrc = a->bsrc, -+ .len = -1, -+ .pin = &a->pin, -+ .flags = AuCpup_DTIME | AuCpup_HOPEN /* | AuCpup_KEEPLINO */ -+ }; -+ -+ di_read_lock_parent(a->src_parent, AuLock_IR); -+ err = au_test_and_cpup_dirs(src_dentry, a->bdst); -+ if (unlikely(err)) -+ goto out; -+ -+ h_src_dentry = au_h_dptr(src_dentry, a->bsrc); -+ err = au_pin(&a->pin, src_dentry, a->bdst, -+ au_opt_udba(src_dentry->d_sb), -+ AuPin_DI_LOCKED | AuPin_MNT_WRITE); -+ if (unlikely(err)) -+ goto out; -+ -+ err = au_sio_cpup_simple(&cpg); -+ au_unpin(&a->pin); -+ -+out: -+ di_read_unlock(a->src_parent, AuLock_IR); -+ return err; -+} -+ -+static int au_cpup_or_link(struct dentry *src_dentry, struct dentry *dentry, -+ struct au_link_args *a) -+{ -+ int err; -+ unsigned char plink; -+ aufs_bindex_t bend; -+ struct dentry *h_src_dentry; -+ struct inode *h_inode, *inode, *delegated; -+ struct super_block *sb; -+ struct file *h_file; -+ -+ plink = 0; -+ h_inode = NULL; -+ sb = src_dentry->d_sb; -+ inode = d_inode(src_dentry); -+ if (au_ibstart(inode) <= a->bdst) -+ h_inode = au_h_iptr(inode, a->bdst); -+ if (!h_inode || !h_inode->i_nlink) { -+ /* copyup src_dentry as the name of dentry. */ -+ bend = au_dbend(dentry); -+ if (bend < a->bsrc) -+ au_set_dbend(dentry, a->bsrc); -+ au_set_h_dptr(dentry, a->bsrc, -+ dget(au_h_dptr(src_dentry, a->bsrc))); -+ dget(a->h_path.dentry); -+ au_set_h_dptr(dentry, a->bdst, NULL); -+ AuDbg("temporary d_inode...\n"); -+ spin_lock(&dentry->d_lock); -+ dentry->d_inode = d_inode(src_dentry); /* tmp */ -+ spin_unlock(&dentry->d_lock); -+ h_file = au_h_open_pre(dentry, a->bsrc, /*force_wr*/0); -+ if (IS_ERR(h_file)) -+ err = PTR_ERR(h_file); -+ else { -+ struct au_cp_generic cpg = { -+ .dentry = dentry, -+ .bdst = a->bdst, -+ .bsrc = -1, -+ .len = -1, -+ .pin = &a->pin, -+ .flags = AuCpup_KEEPLINO -+ }; -+ err = au_sio_cpup_simple(&cpg); -+ au_h_open_post(dentry, a->bsrc, h_file); -+ if (!err) { -+ dput(a->h_path.dentry); -+ a->h_path.dentry = au_h_dptr(dentry, a->bdst); -+ } else -+ au_set_h_dptr(dentry, a->bdst, -+ a->h_path.dentry); -+ } -+ spin_lock(&dentry->d_lock); -+ dentry->d_inode = NULL; /* restore */ -+ spin_unlock(&dentry->d_lock); -+ AuDbg("temporary d_inode...done\n"); -+ au_set_h_dptr(dentry, a->bsrc, NULL); -+ au_set_dbend(dentry, bend); -+ } else { -+ /* the inode of src_dentry already exists on a.bdst branch */ -+ h_src_dentry = d_find_alias(h_inode); -+ if (!h_src_dentry && au_plink_test(inode)) { -+ plink = 1; -+ h_src_dentry = au_plink_lkup(inode, a->bdst); -+ err = PTR_ERR(h_src_dentry); -+ if (IS_ERR(h_src_dentry)) -+ goto out; -+ -+ if (unlikely(d_is_negative(h_src_dentry))) { -+ dput(h_src_dentry); -+ h_src_dentry = NULL; -+ } -+ -+ } -+ if (h_src_dentry) { -+ delegated = NULL; -+ err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), -+ &a->h_path, &delegated); -+ if (unlikely(err == -EWOULDBLOCK)) { -+ pr_warn("cannot retry for NFSv4 delegation" -+ " for an internal link\n"); -+ iput(delegated); -+ } -+ dput(h_src_dentry); -+ } else { -+ AuIOErr("no dentry found for hi%lu on b%d\n", -+ h_inode->i_ino, a->bdst); -+ err = -EIO; -+ } -+ } -+ -+ if (!err && !plink) -+ au_plink_append(inode, a->bdst, a->h_path.dentry); -+ -+out: -+ AuTraceErr(err); -+ return err; -+} -+ -+int aufs_link(struct dentry *src_dentry, struct inode *dir, -+ struct dentry *dentry) -+{ -+ int err, rerr; -+ struct au_dtime dt; -+ struct au_link_args *a; -+ struct dentry *wh_dentry, *h_src_dentry; -+ struct inode *inode, *delegated; -+ struct super_block *sb; -+ struct au_wr_dir_args wr_dir_args = { -+ /* .force_btgt = -1, */ -+ .flags = AuWrDir_ADD_ENTRY -+ }; -+ -+ IMustLock(dir); -+ inode = d_inode(src_dentry); -+ IMustLock(inode); -+ -+ err = -ENOMEM; -+ a = kzalloc(sizeof(*a), GFP_NOFS); -+ if (unlikely(!a)) -+ goto out; -+ -+ a->parent = dentry->d_parent; /* dir inode is locked */ -+ err = aufs_read_and_write_lock2(dentry, src_dentry, -+ AuLock_NOPLM | AuLock_GEN); -+ if (unlikely(err)) -+ goto out_kfree; -+ err = au_d_linkable(src_dentry); -+ if (unlikely(err)) -+ goto out_unlock; -+ err = au_d_may_add(dentry); -+ if (unlikely(err)) -+ goto out_unlock; -+ -+ a->src_parent = dget_parent(src_dentry); -+ wr_dir_args.force_btgt = au_ibstart(inode); -+ -+ di_write_lock_parent(a->parent); -+ wr_dir_args.force_btgt = au_wbr(dentry, wr_dir_args.force_btgt); -+ wh_dentry = lock_hdir_lkup_wh(dentry, &dt, src_dentry, &a->pin, -+ &wr_dir_args); -+ err = PTR_ERR(wh_dentry); -+ if (IS_ERR(wh_dentry)) -+ goto out_parent; -+ -+ err = 0; -+ sb = dentry->d_sb; -+ a->bdst = au_dbstart(dentry); -+ a->h_path.dentry = au_h_dptr(dentry, a->bdst); -+ a->h_path.mnt = au_sbr_mnt(sb, a->bdst); -+ a->bsrc = au_ibstart(inode); -+ h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); -+ if (!h_src_dentry && au_di(src_dentry)->di_tmpfile) -+ h_src_dentry = dget(au_hi_wh(inode, a->bsrc)); -+ if (!h_src_dentry) { -+ a->bsrc = au_dbstart(src_dentry); -+ h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); -+ AuDebugOn(!h_src_dentry); -+ } else if (IS_ERR(h_src_dentry)) { -+ err = PTR_ERR(h_src_dentry); -+ goto out_parent; -+ } -+ -+ if (au_opt_test(au_mntflags(sb), PLINK)) { -+ if (a->bdst < a->bsrc -+ /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) -+ err = au_cpup_or_link(src_dentry, dentry, a); -+ else { -+ delegated = NULL; -+ err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), -+ &a->h_path, &delegated); -+ if (unlikely(err == -EWOULDBLOCK)) { -+ pr_warn("cannot retry for NFSv4 delegation" -+ " for an internal link\n"); -+ iput(delegated); -+ } -+ } -+ dput(h_src_dentry); -+ } else { -+ /* -+ * copyup src_dentry to the branch we process, -+ * and then link(2) to it. -+ */ -+ dput(h_src_dentry); -+ if (a->bdst < a->bsrc -+ /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) { -+ au_unpin(&a->pin); -+ di_write_unlock(a->parent); -+ err = au_cpup_before_link(src_dentry, a); -+ di_write_lock_parent(a->parent); -+ if (!err) -+ err = au_pin(&a->pin, dentry, a->bdst, -+ au_opt_udba(sb), -+ AuPin_DI_LOCKED | AuPin_MNT_WRITE); -+ if (unlikely(err)) -+ goto out_wh; -+ } -+ if (!err) { -+ h_src_dentry = au_h_dptr(src_dentry, a->bdst); -+ err = -ENOENT; -+ if (h_src_dentry && d_is_positive(h_src_dentry)) { -+ delegated = NULL; -+ err = vfsub_link(h_src_dentry, -+ au_pinned_h_dir(&a->pin), -+ &a->h_path, &delegated); -+ if (unlikely(err == -EWOULDBLOCK)) { -+ pr_warn("cannot retry" -+ " for NFSv4 delegation" -+ " for an internal link\n"); -+ iput(delegated); -+ } -+ } -+ } -+ } -+ if (unlikely(err)) -+ goto out_unpin; -+ -+ if (wh_dentry) { -+ a->h_path.dentry = wh_dentry; -+ err = au_wh_unlink_dentry(au_pinned_h_dir(&a->pin), &a->h_path, -+ dentry); -+ if (unlikely(err)) -+ goto out_revert; -+ } -+ -+ au_dir_ts(dir, a->bdst); -+ dir->i_version++; -+ inc_nlink(inode); -+ inode->i_ctime = dir->i_ctime; -+ d_instantiate(dentry, au_igrab(inode)); -+ if (d_unhashed(a->h_path.dentry)) -+ /* some filesystem calls d_drop() */ -+ d_drop(dentry); -+ /* some filesystems consume an inode even hardlink */ -+ au_fhsm_wrote(sb, a->bdst, /*force*/0); -+ goto out_unpin; /* success */ -+ -+out_revert: -+ /* no delegation since it is just created */ -+ rerr = vfsub_unlink(au_pinned_h_dir(&a->pin), &a->h_path, -+ /*delegated*/NULL, /*force*/0); -+ if (unlikely(rerr)) { -+ AuIOErr("%pd reverting failed(%d, %d)\n", dentry, err, rerr); -+ err = -EIO; -+ } -+ au_dtime_revert(&dt); -+out_unpin: -+ au_unpin(&a->pin); -+out_wh: -+ dput(wh_dentry); -+out_parent: -+ di_write_unlock(a->parent); -+ dput(a->src_parent); -+out_unlock: -+ if (unlikely(err)) { -+ au_update_dbstart(dentry); -+ d_drop(dentry); -+ } -+ aufs_read_and_write_unlock2(dentry, src_dentry); -+out_kfree: -+ kfree(a); -+out: -+ AuTraceErr(err); -+ return err; -+} -+ -+int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) -+{ -+ int err, rerr; -+ aufs_bindex_t bindex; -+ unsigned char diropq; -+ struct path h_path; -+ struct dentry *wh_dentry, *parent, *opq_dentry; -+ struct mutex *h_mtx; -+ struct super_block *sb; -+ struct { -+ struct au_pin pin; -+ struct au_dtime dt; -+ } *a; /* reduce the stack usage */ -+ struct au_wr_dir_args wr_dir_args = { -+ .force_btgt = -1, -+ .flags = AuWrDir_ADD_ENTRY | AuWrDir_ISDIR -+ }; -+ -+ IMustLock(dir); -+ -+ err = -ENOMEM; -+ a = kmalloc(sizeof(*a), GFP_NOFS); -+ if (unlikely(!a)) -+ goto out; -+ -+ err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); -+ if (unlikely(err)) -+ goto out_free; -+ err = au_d_may_add(dentry); -+ if (unlikely(err)) -+ goto out_unlock; -+ -+ parent = dentry->d_parent; /* dir inode is locked */ -+ di_write_lock_parent(parent); -+ wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, -+ &a->pin, &wr_dir_args); -+ err = PTR_ERR(wh_dentry); -+ if (IS_ERR(wh_dentry)) -+ goto out_parent; -+ -+ sb = dentry->d_sb; -+ bindex = au_dbstart(dentry); -+ h_path.dentry = au_h_dptr(dentry, bindex); -+ h_path.mnt = au_sbr_mnt(sb, bindex); -+ err = vfsub_mkdir(au_pinned_h_dir(&a->pin), &h_path, mode); -+ if (unlikely(err)) -+ goto out_unpin; -+ -+ /* make the dir opaque */ -+ diropq = 0; -+ h_mtx = &d_inode(h_path.dentry)->i_mutex; -+ if (wh_dentry -+ || au_opt_test(au_mntflags(sb), ALWAYS_DIROPQ)) { -+ mutex_lock_nested(h_mtx, AuLsc_I_CHILD); -+ opq_dentry = au_diropq_create(dentry, bindex); -+ mutex_unlock(h_mtx); -+ err = PTR_ERR(opq_dentry); -+ if (IS_ERR(opq_dentry)) -+ goto out_dir; -+ dput(opq_dentry); -+ diropq = 1; -+ } -+ -+ err = epilog(dir, bindex, wh_dentry, dentry); -+ if (!err) { -+ inc_nlink(dir); -+ goto out_unpin; /* success */ -+ } -+ -+ /* revert */ -+ if (diropq) { -+ AuLabel(revert opq); -+ mutex_lock_nested(h_mtx, AuLsc_I_CHILD); -+ rerr = au_diropq_remove(dentry, bindex); -+ mutex_unlock(h_mtx); -+ if (rerr) { -+ AuIOErr("%pd reverting diropq failed(%d, %d)\n", -+ dentry, err, rerr); -+ err = -EIO; -+ } -+ } -+ -+out_dir: -+ AuLabel(revert dir); -+ rerr = vfsub_rmdir(au_pinned_h_dir(&a->pin), &h_path); -+ if (rerr) { -+ AuIOErr("%pd reverting dir failed(%d, %d)\n", -+ dentry, err, rerr); -+ err = -EIO; -+ } -+ au_dtime_revert(&a->dt); -+out_unpin: -+ au_unpin(&a->pin); -+ dput(wh_dentry); -+out_parent: -+ di_write_unlock(parent); -+out_unlock: -+ if (unlikely(err)) { -+ au_update_dbstart(dentry); -+ d_drop(dentry); -+ } -+ aufs_read_unlock(dentry, AuLock_DW); -+out_free: -+ kfree(a); -+out: -+ return err; -+} -diff --git a/fs/aufs/i_op_del.c b/fs/aufs/i_op_del.c -new file mode 100644 -index 0000000..3cd4c7b ---- /dev/null -+++ b/fs/aufs/i_op_del.c +diff -Nurp linux-4.4.3/fs/aufs/i_op_del.c linux-4.4.3-aufs/fs/aufs/i_op_del.c +--- linux-4.4.3/fs/aufs/i_op_del.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/i_op_del.c 2016-03-02 17:59:37.368498738 +0200 @@ -0,0 +1,497 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -17377,14 +18793,12 @@ index 0000000..3cd4c7b + AuTraceErr(err); + return err; +} -diff --git a/fs/aufs/i_op_ren.c b/fs/aufs/i_op_ren.c -new file mode 100644 -index 0000000..fd815fd ---- /dev/null -+++ b/fs/aufs/i_op_ren.c +diff -Nurp linux-4.4.3/fs/aufs/i_op_ren.c linux-4.4.3-aufs/fs/aufs/i_op_ren.c +--- linux-4.4.3/fs/aufs/i_op_ren.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/i_op_ren.c 2016-03-02 17:59:37.368498738 +0200 @@ -0,0 +1,1002 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -18385,1695 +19799,201 @@ index 0000000..fd815fd + AuTraceErr(err); + return err; +} -diff --git a/fs/aufs/iinfo.c b/fs/aufs/iinfo.c -new file mode 100644 -index 0000000..c604f69 ---- /dev/null -+++ b/fs/aufs/iinfo.c -@@ -0,0 +1,264 @@ -+/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima -+ */ -+ -+/* -+ * inode private data -+ */ -+ -+#include "aufs.h" -+ -+struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex) -+{ -+ struct inode *h_inode; -+ -+ IiMustAnyLock(inode); -+ -+ h_inode = au_ii(inode)->ii_hinode[0 + bindex].hi_inode; -+ AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); -+ return h_inode; -+} -+ -+/* todo: hard/soft set? */ -+void au_hiput(struct au_hinode *hinode) -+{ -+ au_hn_free(hinode); -+ dput(hinode->hi_whdentry); -+ iput(hinode->hi_inode); -+} -+ -+unsigned int au_hi_flags(struct inode *inode, int isdir) -+{ -+ unsigned int flags; -+ const unsigned int mnt_flags = au_mntflags(inode->i_sb); -+ -+ flags = 0; -+ if (au_opt_test(mnt_flags, XINO)) -+ au_fset_hi(flags, XINO); -+ if (isdir && au_opt_test(mnt_flags, UDBA_HNOTIFY)) -+ au_fset_hi(flags, HNOTIFY); -+ return flags; -+} -+ -+void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, -+ struct inode *h_inode, unsigned int flags) -+{ -+ struct au_hinode *hinode; -+ struct inode *hi; -+ struct au_iinfo *iinfo = au_ii(inode); -+ -+ IiMustWriteLock(inode); -+ -+ hinode = iinfo->ii_hinode + bindex; -+ hi = hinode->hi_inode; -+ AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); -+ -+ if (hi) -+ au_hiput(hinode); -+ hinode->hi_inode = h_inode; -+ if (h_inode) { -+ int err; -+ struct super_block *sb = inode->i_sb; -+ struct au_branch *br; -+ -+ AuDebugOn(inode->i_mode -+ && (h_inode->i_mode & S_IFMT) -+ != (inode->i_mode & S_IFMT)); -+ if (bindex == iinfo->ii_bstart) -+ au_cpup_igen(inode, h_inode); -+ br = au_sbr(sb, bindex); -+ hinode->hi_id = br->br_id; -+ if (au_ftest_hi(flags, XINO)) { -+ err = au_xino_write(sb, bindex, h_inode->i_ino, -+ inode->i_ino); -+ if (unlikely(err)) -+ AuIOErr1("failed au_xino_write() %d\n", err); -+ } -+ -+ if (au_ftest_hi(flags, HNOTIFY) -+ && au_br_hnotifyable(br->br_perm)) { -+ err = au_hn_alloc(hinode, inode); -+ if (unlikely(err)) -+ AuIOErr1("au_hn_alloc() %d\n", err); -+ } -+ } -+} -+ -+void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, -+ struct dentry *h_wh) -+{ -+ struct au_hinode *hinode; -+ -+ IiMustWriteLock(inode); -+ -+ hinode = au_ii(inode)->ii_hinode + bindex; -+ AuDebugOn(hinode->hi_whdentry); -+ hinode->hi_whdentry = h_wh; -+} -+ -+void au_update_iigen(struct inode *inode, int half) -+{ -+ struct au_iinfo *iinfo; -+ struct au_iigen *iigen; -+ unsigned int sigen; -+ -+ sigen = au_sigen(inode->i_sb); -+ iinfo = au_ii(inode); -+ iigen = &iinfo->ii_generation; -+ spin_lock(&iigen->ig_spin); -+ iigen->ig_generation = sigen; -+ if (half) -+ au_ig_fset(iigen->ig_flags, HALF_REFRESHED); -+ else -+ au_ig_fclr(iigen->ig_flags, HALF_REFRESHED); -+ spin_unlock(&iigen->ig_spin); -+} -+ -+/* it may be called at remount time, too */ -+void au_update_ibrange(struct inode *inode, int do_put_zero) -+{ -+ struct au_iinfo *iinfo; -+ aufs_bindex_t bindex, bend; -+ -+ iinfo = au_ii(inode); -+ if (!iinfo) -+ return; -+ -+ IiMustWriteLock(inode); -+ -+ if (do_put_zero && iinfo->ii_bstart >= 0) { -+ for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; -+ bindex++) { -+ struct inode *h_i; -+ -+ h_i = iinfo->ii_hinode[0 + bindex].hi_inode; -+ if (h_i -+ && !h_i->i_nlink -+ && !(h_i->i_state & I_LINKABLE)) -+ au_set_h_iptr(inode, bindex, NULL, 0); -+ } -+ } -+ -+ iinfo->ii_bstart = -1; -+ iinfo->ii_bend = -1; -+ bend = au_sbend(inode->i_sb); -+ for (bindex = 0; bindex <= bend; bindex++) -+ if (iinfo->ii_hinode[0 + bindex].hi_inode) { -+ iinfo->ii_bstart = bindex; -+ break; -+ } -+ if (iinfo->ii_bstart >= 0) -+ for (bindex = bend; bindex >= iinfo->ii_bstart; bindex--) -+ if (iinfo->ii_hinode[0 + bindex].hi_inode) { -+ iinfo->ii_bend = bindex; -+ break; -+ } -+ AuDebugOn(iinfo->ii_bstart > iinfo->ii_bend); -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+void au_icntnr_init_once(void *_c) -+{ -+ struct au_icntnr *c = _c; -+ struct au_iinfo *iinfo = &c->iinfo; -+ static struct lock_class_key aufs_ii; -+ -+ spin_lock_init(&iinfo->ii_generation.ig_spin); -+ au_rw_init(&iinfo->ii_rwsem); -+ au_rw_class(&iinfo->ii_rwsem, &aufs_ii); -+ inode_init_once(&c->vfs_inode); -+} -+ -+int au_iinfo_init(struct inode *inode) -+{ -+ struct au_iinfo *iinfo; -+ struct super_block *sb; -+ int nbr, i; -+ -+ sb = inode->i_sb; -+ iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); -+ nbr = au_sbend(sb) + 1; -+ if (unlikely(nbr <= 0)) -+ nbr = 1; -+ iinfo->ii_hinode = kcalloc(nbr, sizeof(*iinfo->ii_hinode), GFP_NOFS); -+ if (iinfo->ii_hinode) { -+ au_ninodes_inc(sb); -+ for (i = 0; i < nbr; i++) -+ iinfo->ii_hinode[i].hi_id = -1; -+ -+ iinfo->ii_generation.ig_generation = au_sigen(sb); -+ iinfo->ii_bstart = -1; -+ iinfo->ii_bend = -1; -+ iinfo->ii_vdir = NULL; -+ return 0; -+ } -+ return -ENOMEM; -+} -+ -+int au_ii_realloc(struct au_iinfo *iinfo, int nbr) -+{ -+ int err, sz; -+ struct au_hinode *hip; -+ -+ AuRwMustWriteLock(&iinfo->ii_rwsem); -+ -+ err = -ENOMEM; -+ sz = sizeof(*hip) * (iinfo->ii_bend + 1); -+ if (!sz) -+ sz = sizeof(*hip); -+ hip = au_kzrealloc(iinfo->ii_hinode, sz, sizeof(*hip) * nbr, GFP_NOFS); -+ if (hip) { -+ iinfo->ii_hinode = hip; -+ err = 0; -+ } -+ -+ return err; -+} -+ -+void au_iinfo_fin(struct inode *inode) -+{ -+ struct au_iinfo *iinfo; -+ struct au_hinode *hi; -+ struct super_block *sb; -+ aufs_bindex_t bindex, bend; -+ const unsigned char unlinked = !inode->i_nlink; -+ -+ iinfo = au_ii(inode); -+ /* bad_inode case */ -+ if (!iinfo) -+ return; -+ -+ sb = inode->i_sb; -+ au_ninodes_dec(sb); -+ if (si_pid_test(sb)) -+ au_xino_delete_inode(inode, unlinked); -+ else { -+ /* -+ * it is safe to hide the dependency between sbinfo and -+ * sb->s_umount. -+ */ -+ lockdep_off(); -+ si_noflush_read_lock(sb); -+ au_xino_delete_inode(inode, unlinked); -+ si_read_unlock(sb); -+ lockdep_on(); -+ } -+ -+ if (iinfo->ii_vdir) -+ au_vdir_free(iinfo->ii_vdir); -+ -+ bindex = iinfo->ii_bstart; -+ if (bindex >= 0) { -+ hi = iinfo->ii_hinode + bindex; -+ bend = iinfo->ii_bend; -+ while (bindex++ <= bend) { -+ if (hi->hi_inode) -+ au_hiput(hi); -+ hi++; -+ } -+ } -+ kfree(iinfo->ii_hinode); -+ iinfo->ii_hinode = NULL; -+ AuRwDestroy(&iinfo->ii_rwsem); -+} -diff --git a/fs/aufs/inode.c b/fs/aufs/inode.c -new file mode 100644 -index 0000000..6db3d6f ---- /dev/null -+++ b/fs/aufs/inode.c -@@ -0,0 +1,515 @@ -+/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima -+ */ -+ -+/* -+ * inode functions -+ */ -+ -+#include "aufs.h" -+ -+struct inode *au_igrab(struct inode *inode) -+{ -+ if (inode) { -+ AuDebugOn(!atomic_read(&inode->i_count)); -+ ihold(inode); -+ } -+ return inode; -+} -+ -+static void au_refresh_hinode_attr(struct inode *inode, int do_version) -+{ -+ au_cpup_attr_all(inode, /*force*/0); -+ au_update_iigen(inode, /*half*/1); -+ if (do_version) -+ inode->i_version++; -+} -+ -+static int au_ii_refresh(struct inode *inode, int *update) -+{ -+ int err, e; -+ umode_t type; -+ aufs_bindex_t bindex, new_bindex; -+ struct super_block *sb; -+ struct au_iinfo *iinfo; -+ struct au_hinode *p, *q, tmp; -+ -+ IiMustWriteLock(inode); -+ -+ *update = 0; -+ sb = inode->i_sb; -+ type = inode->i_mode & S_IFMT; -+ iinfo = au_ii(inode); -+ err = au_ii_realloc(iinfo, au_sbend(sb) + 1); -+ if (unlikely(err)) -+ goto out; -+ -+ AuDebugOn(iinfo->ii_bstart < 0); -+ p = iinfo->ii_hinode + iinfo->ii_bstart; -+ for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; -+ bindex++, p++) { -+ if (!p->hi_inode) -+ continue; -+ -+ AuDebugOn(type != (p->hi_inode->i_mode & S_IFMT)); -+ new_bindex = au_br_index(sb, p->hi_id); -+ if (new_bindex == bindex) -+ continue; -+ -+ if (new_bindex < 0) { -+ *update = 1; -+ au_hiput(p); -+ p->hi_inode = NULL; -+ continue; -+ } -+ -+ if (new_bindex < iinfo->ii_bstart) -+ iinfo->ii_bstart = new_bindex; -+ if (iinfo->ii_bend < new_bindex) -+ iinfo->ii_bend = new_bindex; -+ /* swap two lower inode, and loop again */ -+ q = iinfo->ii_hinode + new_bindex; -+ tmp = *q; -+ *q = *p; -+ *p = tmp; -+ if (tmp.hi_inode) { -+ bindex--; -+ p--; -+ } -+ } -+ au_update_ibrange(inode, /*do_put_zero*/0); -+ e = au_dy_irefresh(inode); -+ if (unlikely(e && !err)) -+ err = e; -+ -+out: -+ AuTraceErr(err); -+ return err; -+} -+ -+void au_refresh_iop(struct inode *inode, int force_getattr) -+{ -+ int type; -+ struct au_sbinfo *sbi = au_sbi(inode->i_sb); -+ const struct inode_operations *iop -+ = force_getattr ? aufs_iop : sbi->si_iop_array; -+ -+ if (inode->i_op == iop) -+ return; -+ -+ switch (inode->i_mode & S_IFMT) { -+ case S_IFDIR: -+ type = AuIop_DIR; -+ break; -+ case S_IFLNK: -+ type = AuIop_SYMLINK; -+ break; -+ default: -+ type = AuIop_OTHER; -+ break; -+ } -+ -+ inode->i_op = iop + type; -+ /* unnecessary smp_wmb() */ -+} -+ -+int au_refresh_hinode_self(struct inode *inode) -+{ -+ int err, update; -+ -+ err = au_ii_refresh(inode, &update); -+ if (!err) -+ au_refresh_hinode_attr(inode, update && S_ISDIR(inode->i_mode)); -+ -+ AuTraceErr(err); -+ return err; -+} -+ -+int au_refresh_hinode(struct inode *inode, struct dentry *dentry) -+{ -+ int err, e, update; -+ unsigned int flags; -+ umode_t mode; -+ aufs_bindex_t bindex, bend; -+ unsigned char isdir; -+ struct au_hinode *p; -+ struct au_iinfo *iinfo; -+ -+ err = au_ii_refresh(inode, &update); -+ if (unlikely(err)) -+ goto out; -+ -+ update = 0; -+ iinfo = au_ii(inode); -+ p = iinfo->ii_hinode + iinfo->ii_bstart; -+ mode = (inode->i_mode & S_IFMT); -+ isdir = S_ISDIR(mode); -+ flags = au_hi_flags(inode, isdir); -+ bend = au_dbend(dentry); -+ for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) { -+ struct inode *h_i, *h_inode; -+ struct dentry *h_d; -+ -+ h_d = au_h_dptr(dentry, bindex); -+ if (!h_d || d_is_negative(h_d)) -+ continue; -+ -+ h_inode = d_inode(h_d); -+ AuDebugOn(mode != (h_inode->i_mode & S_IFMT)); -+ if (iinfo->ii_bstart <= bindex && bindex <= iinfo->ii_bend) { -+ h_i = au_h_iptr(inode, bindex); -+ if (h_i) { -+ if (h_i == h_inode) -+ continue; -+ err = -EIO; -+ break; -+ } -+ } -+ if (bindex < iinfo->ii_bstart) -+ iinfo->ii_bstart = bindex; -+ if (iinfo->ii_bend < bindex) -+ iinfo->ii_bend = bindex; -+ au_set_h_iptr(inode, bindex, au_igrab(h_inode), flags); -+ update = 1; -+ } -+ au_update_ibrange(inode, /*do_put_zero*/0); -+ e = au_dy_irefresh(inode); -+ if (unlikely(e && !err)) -+ err = e; -+ if (!err) -+ au_refresh_hinode_attr(inode, update && isdir); -+ -+out: -+ AuTraceErr(err); -+ return err; -+} -+ -+static int set_inode(struct inode *inode, struct dentry *dentry) -+{ -+ int err; -+ unsigned int flags; -+ umode_t mode; -+ aufs_bindex_t bindex, bstart, btail; -+ unsigned char isdir; -+ struct dentry *h_dentry; -+ struct inode *h_inode; -+ struct au_iinfo *iinfo; -+ struct inode_operations *iop; -+ -+ IiMustWriteLock(inode); -+ -+ err = 0; -+ isdir = 0; -+ iop = au_sbi(inode->i_sb)->si_iop_array; -+ bstart = au_dbstart(dentry); -+ h_dentry = au_h_dptr(dentry, bstart); -+ h_inode = d_inode(h_dentry); -+ mode = h_inode->i_mode; -+ switch (mode & S_IFMT) { -+ case S_IFREG: -+ btail = au_dbtail(dentry); -+ inode->i_op = iop + AuIop_OTHER; -+ inode->i_fop = &aufs_file_fop; -+ err = au_dy_iaop(inode, bstart, h_inode); -+ if (unlikely(err)) -+ goto out; -+ break; -+ case S_IFDIR: -+ isdir = 1; -+ btail = au_dbtaildir(dentry); -+ inode->i_op = iop + AuIop_DIR; -+ inode->i_fop = &aufs_dir_fop; -+ break; -+ case S_IFLNK: -+ btail = au_dbtail(dentry); -+ inode->i_op = iop + AuIop_SYMLINK; -+ break; -+ case S_IFBLK: -+ case S_IFCHR: -+ case S_IFIFO: -+ case S_IFSOCK: -+ btail = au_dbtail(dentry); -+ inode->i_op = iop + AuIop_OTHER; -+ init_special_inode(inode, mode, h_inode->i_rdev); -+ break; -+ default: -+ AuIOErr("Unknown file type 0%o\n", mode); -+ err = -EIO; -+ goto out; -+ } -+ -+ /* do not set hnotify for whiteouted dirs (SHWH mode) */ -+ flags = au_hi_flags(inode, isdir); -+ if (au_opt_test(au_mntflags(dentry->d_sb), SHWH) -+ && au_ftest_hi(flags, HNOTIFY) -+ && dentry->d_name.len > AUFS_WH_PFX_LEN -+ && !memcmp(dentry->d_name.name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) -+ au_fclr_hi(flags, HNOTIFY); -+ iinfo = au_ii(inode); -+ iinfo->ii_bstart = bstart; -+ iinfo->ii_bend = btail; -+ for (bindex = bstart; bindex <= btail; bindex++) { -+ h_dentry = au_h_dptr(dentry, bindex); -+ if (h_dentry) -+ au_set_h_iptr(inode, bindex, -+ au_igrab(d_inode(h_dentry)), flags); -+ } -+ au_cpup_attr_all(inode, /*force*/1); -+ /* -+ * to force calling aufs_get_acl() every time, -+ * do not call cache_no_acl() for aufs inode. -+ */ -+ -+out: -+ return err; -+} -+ -+/* -+ * successful returns with iinfo write_locked -+ * minus: errno -+ * zero: success, matched -+ * plus: no error, but unmatched -+ */ -+static int reval_inode(struct inode *inode, struct dentry *dentry) -+{ -+ int err; -+ unsigned int gen; -+ struct au_iigen iigen; -+ aufs_bindex_t bindex, bend; -+ struct inode *h_inode, *h_dinode; -+ struct dentry *h_dentry; -+ -+ /* -+ * before this function, if aufs got any iinfo lock, it must be only -+ * one, the parent dir. -+ * it can happen by UDBA and the obsoleted inode number. -+ */ -+ err = -EIO; -+ if (unlikely(inode->i_ino == parent_ino(dentry))) -+ goto out; -+ -+ err = 1; -+ ii_write_lock_new_child(inode); -+ h_dentry = au_h_dptr(dentry, au_dbstart(dentry)); -+ h_dinode = d_inode(h_dentry); -+ bend = au_ibend(inode); -+ for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { -+ h_inode = au_h_iptr(inode, bindex); -+ if (!h_inode || h_inode != h_dinode) -+ continue; -+ -+ err = 0; -+ gen = au_iigen(inode, &iigen); -+ if (gen == au_digen(dentry) -+ && !au_ig_ftest(iigen.ig_flags, HALF_REFRESHED)) -+ break; -+ -+ /* fully refresh inode using dentry */ -+ err = au_refresh_hinode(inode, dentry); -+ if (!err) -+ au_update_iigen(inode, /*half*/0); -+ break; -+ } -+ -+ if (unlikely(err)) -+ ii_write_unlock(inode); -+out: -+ return err; -+} -+ -+int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, -+ unsigned int d_type, ino_t *ino) -+{ -+ int err; -+ struct mutex *mtx; -+ -+ /* prevent hardlinked inode number from race condition */ -+ mtx = NULL; -+ if (d_type != DT_DIR) { -+ mtx = &au_sbr(sb, bindex)->br_xino.xi_nondir_mtx; -+ mutex_lock(mtx); -+ } -+ err = au_xino_read(sb, bindex, h_ino, ino); -+ if (unlikely(err)) -+ goto out; -+ -+ if (!*ino) { -+ err = -EIO; -+ *ino = au_xino_new_ino(sb); -+ if (unlikely(!*ino)) -+ goto out; -+ err = au_xino_write(sb, bindex, h_ino, *ino); -+ if (unlikely(err)) -+ goto out; -+ } -+ -+out: -+ if (mtx) -+ mutex_unlock(mtx); -+ return err; -+} -+ -+/* successful returns with iinfo write_locked */ -+/* todo: return with unlocked? */ -+struct inode *au_new_inode(struct dentry *dentry, int must_new) -+{ -+ struct inode *inode, *h_inode; -+ struct dentry *h_dentry; -+ struct super_block *sb; -+ struct mutex *mtx; -+ ino_t h_ino, ino; -+ int err; -+ aufs_bindex_t bstart; -+ -+ sb = dentry->d_sb; -+ bstart = au_dbstart(dentry); -+ h_dentry = au_h_dptr(dentry, bstart); -+ h_inode = d_inode(h_dentry); -+ h_ino = h_inode->i_ino; -+ -+ /* -+ * stop 'race'-ing between hardlinks under different -+ * parents. -+ */ -+ mtx = NULL; -+ if (!d_is_dir(h_dentry)) -+ mtx = &au_sbr(sb, bstart)->br_xino.xi_nondir_mtx; -+ -+new_ino: -+ if (mtx) -+ mutex_lock(mtx); -+ err = au_xino_read(sb, bstart, h_ino, &ino); -+ inode = ERR_PTR(err); -+ if (unlikely(err)) -+ goto out; -+ -+ if (!ino) { -+ ino = au_xino_new_ino(sb); -+ if (unlikely(!ino)) { -+ inode = ERR_PTR(-EIO); -+ goto out; -+ } -+ } -+ -+ AuDbg("i%lu\n", (unsigned long)ino); -+ inode = au_iget_locked(sb, ino); -+ err = PTR_ERR(inode); -+ if (IS_ERR(inode)) -+ goto out; -+ -+ AuDbg("%lx, new %d\n", inode->i_state, !!(inode->i_state & I_NEW)); -+ if (inode->i_state & I_NEW) { -+ /* verbose coding for lock class name */ -+ if (unlikely(d_is_symlink(h_dentry))) -+ au_rw_class(&au_ii(inode)->ii_rwsem, -+ au_lc_key + AuLcSymlink_IIINFO); -+ else if (unlikely(d_is_dir(h_dentry))) -+ au_rw_class(&au_ii(inode)->ii_rwsem, -+ au_lc_key + AuLcDir_IIINFO); -+ else /* likely */ -+ au_rw_class(&au_ii(inode)->ii_rwsem, -+ au_lc_key + AuLcNonDir_IIINFO); -+ -+ ii_write_lock_new_child(inode); -+ err = set_inode(inode, dentry); -+ if (!err) { -+ unlock_new_inode(inode); -+ goto out; /* success */ -+ } -+ -+ /* -+ * iget_failed() calls iput(), but we need to call -+ * ii_write_unlock() after iget_failed(). so dirty hack for -+ * i_count. -+ */ -+ atomic_inc(&inode->i_count); -+ iget_failed(inode); -+ ii_write_unlock(inode); -+ au_xino_write(sb, bstart, h_ino, /*ino*/0); -+ /* ignore this error */ -+ goto out_iput; -+ } else if (!must_new && !IS_DEADDIR(inode) && inode->i_nlink) { -+ /* -+ * horrible race condition between lookup, readdir and copyup -+ * (or something). -+ */ -+ if (mtx) -+ mutex_unlock(mtx); -+ err = reval_inode(inode, dentry); -+ if (unlikely(err < 0)) { -+ mtx = NULL; -+ goto out_iput; -+ } -+ -+ if (!err) { -+ mtx = NULL; -+ goto out; /* success */ -+ } else if (mtx) -+ mutex_lock(mtx); -+ } -+ -+ if (unlikely(au_test_fs_unique_ino(h_inode))) -+ AuWarn1("Warning: Un-notified UDBA or repeatedly renamed dir," -+ " b%d, %s, %pd, hi%lu, i%lu.\n", -+ bstart, au_sbtype(h_dentry->d_sb), dentry, -+ (unsigned long)h_ino, (unsigned long)ino); -+ ino = 0; -+ err = au_xino_write(sb, bstart, h_ino, /*ino*/0); -+ if (!err) { -+ iput(inode); -+ if (mtx) -+ mutex_unlock(mtx); -+ goto new_ino; -+ } -+ -+out_iput: -+ iput(inode); -+ inode = ERR_PTR(err); -+out: -+ if (mtx) -+ mutex_unlock(mtx); -+ return inode; -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, -+ struct inode *inode) -+{ -+ int err; -+ struct inode *hi; -+ -+ err = au_br_rdonly(au_sbr(sb, bindex)); -+ -+ /* pseudo-link after flushed may happen out of bounds */ -+ if (!err -+ && inode -+ && au_ibstart(inode) <= bindex -+ && bindex <= au_ibend(inode)) { -+ /* -+ * permission check is unnecessary since vfsub routine -+ * will be called later -+ */ -+ hi = au_h_iptr(inode, bindex); -+ if (hi) -+ err = IS_IMMUTABLE(hi) ? -EROFS : 0; -+ } -+ -+ return err; -+} -+ -+int au_test_h_perm(struct inode *h_inode, int mask) -+{ -+ if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) -+ return 0; -+ return inode_permission(h_inode, mask); -+} -+ -+int au_test_h_perm_sio(struct inode *h_inode, int mask) -+{ -+ if (au_test_nfs(h_inode->i_sb) -+ && (mask & MAY_WRITE) -+ && S_ISDIR(h_inode->i_mode)) -+ mask |= MAY_READ; /* force permission check */ -+ return au_test_h_perm(h_inode, mask); -+} -diff --git a/fs/aufs/inode.h b/fs/aufs/inode.h -new file mode 100644 -index 0000000..31e31f4 ---- /dev/null -+++ b/fs/aufs/inode.h -@@ -0,0 +1,672 @@ -+/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima -+ */ -+ -+/* -+ * inode operations -+ */ -+ -+#ifndef __AUFS_INODE_H__ -+#define __AUFS_INODE_H__ -+ -+#ifdef __KERNEL__ -+ -+#include -+#include "rwsem.h" -+ -+struct vfsmount; -+ -+struct au_hnotify { -+#ifdef CONFIG_AUFS_HNOTIFY -+#ifdef CONFIG_AUFS_HFSNOTIFY -+ /* never use fsnotify_add_vfsmount_mark() */ -+ struct fsnotify_mark hn_mark; -+#endif -+ struct inode *hn_aufs_inode; /* no get/put */ -+#endif -+} ____cacheline_aligned_in_smp; -+ -+struct au_hinode { -+ struct inode *hi_inode; -+ aufs_bindex_t hi_id; -+#ifdef CONFIG_AUFS_HNOTIFY -+ struct au_hnotify *hi_notify; -+#endif -+ -+ /* reference to the copied-up whiteout with get/put */ -+ struct dentry *hi_whdentry; -+}; -+ -+/* ig_flags */ -+#define AuIG_HALF_REFRESHED 1 -+#define au_ig_ftest(flags, name) ((flags) & AuIG_##name) -+#define au_ig_fset(flags, name) \ -+ do { (flags) |= AuIG_##name; } while (0) -+#define au_ig_fclr(flags, name) \ -+ do { (flags) &= ~AuIG_##name; } while (0) -+ -+struct au_iigen { -+ spinlock_t ig_spin; -+ __u32 ig_generation, ig_flags; -+}; -+ -+struct au_vdir; -+struct au_iinfo { -+ struct au_iigen ii_generation; -+ struct super_block *ii_hsb1; /* no get/put */ -+ -+ struct au_rwsem ii_rwsem; -+ aufs_bindex_t ii_bstart, ii_bend; -+ __u32 ii_higen; -+ struct au_hinode *ii_hinode; -+ struct au_vdir *ii_vdir; -+}; -+ -+struct au_icntnr { -+ struct au_iinfo iinfo; -+ struct inode vfs_inode; -+} ____cacheline_aligned_in_smp; -+ -+/* au_pin flags */ -+#define AuPin_DI_LOCKED 1 -+#define AuPin_MNT_WRITE (1 << 1) -+#define au_ftest_pin(flags, name) ((flags) & AuPin_##name) -+#define au_fset_pin(flags, name) \ -+ do { (flags) |= AuPin_##name; } while (0) -+#define au_fclr_pin(flags, name) \ -+ do { (flags) &= ~AuPin_##name; } while (0) -+ -+struct au_pin { -+ /* input */ -+ struct dentry *dentry; -+ unsigned int udba; -+ unsigned char lsc_di, lsc_hi, flags; -+ aufs_bindex_t bindex; -+ -+ /* output */ -+ struct dentry *parent; -+ struct au_hinode *hdir; -+ struct vfsmount *h_mnt; -+ -+ /* temporary unlock/relock for copyup */ -+ struct dentry *h_dentry, *h_parent; -+ struct au_branch *br; -+ struct task_struct *task; -+}; -+ -+void au_pin_hdir_unlock(struct au_pin *p); -+int au_pin_hdir_lock(struct au_pin *p); -+int au_pin_hdir_relock(struct au_pin *p); -+void au_pin_hdir_set_owner(struct au_pin *p, struct task_struct *task); -+void au_pin_hdir_acquire_nest(struct au_pin *p); -+void au_pin_hdir_release(struct au_pin *p); -+ -+/* ---------------------------------------------------------------------- */ -+ -+static inline struct au_iinfo *au_ii(struct inode *inode) -+{ -+ struct au_iinfo *iinfo; -+ -+ iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); -+ if (iinfo->ii_hinode) -+ return iinfo; -+ return NULL; /* debugging bad_inode case */ -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+/* inode.c */ -+struct inode *au_igrab(struct inode *inode); -+void au_refresh_iop(struct inode *inode, int force_getattr); -+int au_refresh_hinode_self(struct inode *inode); -+int au_refresh_hinode(struct inode *inode, struct dentry *dentry); -+int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, -+ unsigned int d_type, ino_t *ino); -+struct inode *au_new_inode(struct dentry *dentry, int must_new); -+int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, -+ struct inode *inode); -+int au_test_h_perm(struct inode *h_inode, int mask); -+int au_test_h_perm_sio(struct inode *h_inode, int mask); -+ -+static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex, -+ ino_t h_ino, unsigned int d_type, ino_t *ino) -+{ -+#ifdef CONFIG_AUFS_SHWH -+ return au_ino(sb, bindex, h_ino, d_type, ino); -+#else -+ return 0; -+#endif -+} -+ -+/* i_op.c */ -+enum { -+ AuIop_SYMLINK, -+ AuIop_DIR, -+ AuIop_OTHER, -+ AuIop_Last -+}; -+extern struct inode_operations aufs_iop[AuIop_Last], -+ aufs_iop_nogetattr[AuIop_Last]; -+ -+/* au_wr_dir flags */ -+#define AuWrDir_ADD_ENTRY 1 -+#define AuWrDir_ISDIR (1 << 1) -+#define AuWrDir_TMPFILE (1 << 2) -+#define au_ftest_wrdir(flags, name) ((flags) & AuWrDir_##name) -+#define au_fset_wrdir(flags, name) \ -+ do { (flags) |= AuWrDir_##name; } while (0) -+#define au_fclr_wrdir(flags, name) \ -+ do { (flags) &= ~AuWrDir_##name; } while (0) -+ -+struct au_wr_dir_args { -+ aufs_bindex_t force_btgt; -+ unsigned char flags; -+}; -+int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, -+ struct au_wr_dir_args *args); -+ -+struct dentry *au_pinned_h_parent(struct au_pin *pin); -+void au_pin_init(struct au_pin *pin, struct dentry *dentry, -+ aufs_bindex_t bindex, int lsc_di, int lsc_hi, -+ unsigned int udba, unsigned char flags); -+int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, -+ unsigned int udba, unsigned char flags) __must_check; -+int au_do_pin(struct au_pin *pin) __must_check; -+void au_unpin(struct au_pin *pin); -+int au_reval_for_attr(struct dentry *dentry, unsigned int sigen); -+ -+#define AuIcpup_DID_CPUP 1 -+#define au_ftest_icpup(flags, name) ((flags) & AuIcpup_##name) -+#define au_fset_icpup(flags, name) \ -+ do { (flags) |= AuIcpup_##name; } while (0) -+#define au_fclr_icpup(flags, name) \ -+ do { (flags) &= ~AuIcpup_##name; } while (0) -+ -+struct au_icpup_args { -+ unsigned char flags; -+ unsigned char pin_flags; -+ aufs_bindex_t btgt; -+ unsigned int udba; -+ struct au_pin pin; -+ struct path h_path; -+ struct inode *h_inode; -+}; -+ -+int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, -+ struct au_icpup_args *a); -+ -+int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path); -+ -+/* i_op_add.c */ -+int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, -+ struct dentry *h_parent, int isdir); -+int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, -+ dev_t dev); -+int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname); -+int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, -+ bool want_excl); -+struct vfsub_aopen_args; -+int au_aopen_or_create(struct inode *dir, struct dentry *dentry, -+ struct vfsub_aopen_args *args); -+int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode); -+int aufs_link(struct dentry *src_dentry, struct inode *dir, -+ struct dentry *dentry); -+int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); -+ -+/* i_op_del.c */ -+int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup); -+int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, -+ struct dentry *h_parent, int isdir); -+int aufs_unlink(struct inode *dir, struct dentry *dentry); -+int aufs_rmdir(struct inode *dir, struct dentry *dentry); -+ -+/* i_op_ren.c */ -+int au_wbr(struct dentry *dentry, aufs_bindex_t btgt); -+int aufs_rename(struct inode *src_dir, struct dentry *src_dentry, -+ struct inode *dir, struct dentry *dentry); -+ -+/* iinfo.c */ -+struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex); -+void au_hiput(struct au_hinode *hinode); -+void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, -+ struct dentry *h_wh); -+unsigned int au_hi_flags(struct inode *inode, int isdir); -+ -+/* hinode flags */ -+#define AuHi_XINO 1 -+#define AuHi_HNOTIFY (1 << 1) -+#define au_ftest_hi(flags, name) ((flags) & AuHi_##name) -+#define au_fset_hi(flags, name) \ -+ do { (flags) |= AuHi_##name; } while (0) -+#define au_fclr_hi(flags, name) \ -+ do { (flags) &= ~AuHi_##name; } while (0) -+ -+#ifndef CONFIG_AUFS_HNOTIFY -+#undef AuHi_HNOTIFY -+#define AuHi_HNOTIFY 0 -+#endif -+ -+void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, -+ struct inode *h_inode, unsigned int flags); -+ -+void au_update_iigen(struct inode *inode, int half); -+void au_update_ibrange(struct inode *inode, int do_put_zero); -+ -+void au_icntnr_init_once(void *_c); -+int au_iinfo_init(struct inode *inode); -+void au_iinfo_fin(struct inode *inode); -+int au_ii_realloc(struct au_iinfo *iinfo, int nbr); -+ -+#ifdef CONFIG_PROC_FS -+/* plink.c */ -+int au_plink_maint(struct super_block *sb, int flags); -+struct au_sbinfo; -+void au_plink_maint_leave(struct au_sbinfo *sbinfo); -+int au_plink_maint_enter(struct super_block *sb); -+#ifdef CONFIG_AUFS_DEBUG -+void au_plink_list(struct super_block *sb); -+#else -+AuStubVoid(au_plink_list, struct super_block *sb) -+#endif -+int au_plink_test(struct inode *inode); -+struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex); -+void au_plink_append(struct inode *inode, aufs_bindex_t bindex, -+ struct dentry *h_dentry); -+void au_plink_put(struct super_block *sb, int verbose); -+void au_plink_clean(struct super_block *sb, int verbose); -+void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id); -+#else -+AuStubInt0(au_plink_maint, struct super_block *sb, int flags); -+AuStubVoid(au_plink_maint_leave, struct au_sbinfo *sbinfo); -+AuStubInt0(au_plink_maint_enter, struct super_block *sb); -+AuStubVoid(au_plink_list, struct super_block *sb); -+AuStubInt0(au_plink_test, struct inode *inode); -+AuStub(struct dentry *, au_plink_lkup, return NULL, -+ struct inode *inode, aufs_bindex_t bindex); -+AuStubVoid(au_plink_append, struct inode *inode, aufs_bindex_t bindex, -+ struct dentry *h_dentry); -+AuStubVoid(au_plink_put, struct super_block *sb, int verbose); -+AuStubVoid(au_plink_clean, struct super_block *sb, int verbose); -+AuStubVoid(au_plink_half_refresh, struct super_block *sb, aufs_bindex_t br_id); -+#endif /* CONFIG_PROC_FS */ -+ -+#ifdef CONFIG_AUFS_XATTR -+/* xattr.c */ -+int au_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, int ignore_flags, -+ unsigned int verbose); -+ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size); -+ssize_t aufs_getxattr(struct dentry *dentry, const char *name, void *value, -+ size_t size); -+int aufs_setxattr(struct dentry *dentry, const char *name, const void *value, -+ size_t size, int flags); -+int aufs_removexattr(struct dentry *dentry, const char *name); -+ -+/* void au_xattr_init(struct super_block *sb); */ -+#else -+AuStubInt0(au_cpup_xattr, struct dentry *h_dst, struct dentry *h_src, -+ int ignore_flags, unsigned int verbose); -+/* AuStubVoid(au_xattr_init, struct super_block *sb); */ -+#endif -+ -+#ifdef CONFIG_FS_POSIX_ACL -+struct posix_acl *aufs_get_acl(struct inode *inode, int type); -+int aufs_set_acl(struct inode *inode, struct posix_acl *acl, int type); -+#endif -+ -+#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) -+enum { -+ AU_XATTR_SET, -+ AU_XATTR_REMOVE, -+ AU_ACL_SET -+}; -+ -+struct au_srxattr { -+ int type; -+ union { -+ struct { -+ const char *name; -+ const void *value; -+ size_t size; -+ int flags; -+ } set; -+ struct { -+ const char *name; -+ } remove; -+ struct { -+ struct posix_acl *acl; -+ int type; -+ } acl_set; -+ } u; -+}; -+ssize_t au_srxattr(struct dentry *dentry, struct au_srxattr *arg); -+#endif -+ -+/* ---------------------------------------------------------------------- */ -+ -+/* lock subclass for iinfo */ -+enum { -+ AuLsc_II_CHILD, /* child first */ -+ AuLsc_II_CHILD2, /* rename(2), link(2), and cpup at hnotify */ -+ AuLsc_II_CHILD3, /* copyup dirs */ -+ AuLsc_II_PARENT, /* see AuLsc_I_PARENT in vfsub.h */ -+ AuLsc_II_PARENT2, -+ AuLsc_II_PARENT3, /* copyup dirs */ -+ AuLsc_II_NEW_CHILD -+}; -+ -+/* -+ * ii_read_lock_child, ii_write_lock_child, -+ * ii_read_lock_child2, ii_write_lock_child2, -+ * ii_read_lock_child3, ii_write_lock_child3, -+ * ii_read_lock_parent, ii_write_lock_parent, -+ * ii_read_lock_parent2, ii_write_lock_parent2, -+ * ii_read_lock_parent3, ii_write_lock_parent3, -+ * ii_read_lock_new_child, ii_write_lock_new_child, -+ */ -+#define AuReadLockFunc(name, lsc) \ -+static inline void ii_read_lock_##name(struct inode *i) \ -+{ \ -+ au_rw_read_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ -+} -+ -+#define AuWriteLockFunc(name, lsc) \ -+static inline void ii_write_lock_##name(struct inode *i) \ -+{ \ -+ au_rw_write_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ -+} -+ -+#define AuRWLockFuncs(name, lsc) \ -+ AuReadLockFunc(name, lsc) \ -+ AuWriteLockFunc(name, lsc) -+ -+AuRWLockFuncs(child, CHILD); -+AuRWLockFuncs(child2, CHILD2); -+AuRWLockFuncs(child3, CHILD3); -+AuRWLockFuncs(parent, PARENT); -+AuRWLockFuncs(parent2, PARENT2); -+AuRWLockFuncs(parent3, PARENT3); -+AuRWLockFuncs(new_child, NEW_CHILD); -+ -+#undef AuReadLockFunc -+#undef AuWriteLockFunc -+#undef AuRWLockFuncs -+ -+/* -+ * ii_read_unlock, ii_write_unlock, ii_downgrade_lock -+ */ -+AuSimpleUnlockRwsemFuncs(ii, struct inode *i, &au_ii(i)->ii_rwsem); -+ -+#define IiMustNoWaiters(i) AuRwMustNoWaiters(&au_ii(i)->ii_rwsem) -+#define IiMustAnyLock(i) AuRwMustAnyLock(&au_ii(i)->ii_rwsem) -+#define IiMustWriteLock(i) AuRwMustWriteLock(&au_ii(i)->ii_rwsem) -+ -+/* ---------------------------------------------------------------------- */ -+ -+static inline void au_icntnr_init(struct au_icntnr *c) -+{ -+#ifdef CONFIG_AUFS_DEBUG -+ c->vfs_inode.i_mode = 0; -+#endif -+} -+ -+static inline unsigned int au_iigen(struct inode *inode, struct au_iigen *iigen_arg) -+{ -+ unsigned int gen; -+ struct au_iinfo *iinfo; -+ struct au_iigen *iigen; -+ -+ iinfo = au_ii(inode); -+ iigen = &iinfo->ii_generation; -+ spin_lock(&iigen->ig_spin); -+ if (iigen_arg) -+ *iigen_arg = *iigen; -+ gen = iigen->ig_generation; -+ spin_unlock(&iigen->ig_spin); -+ -+ return gen; -+} -+ -+/* tiny test for inode number */ -+/* tmpfs generation is too rough */ -+static inline int au_test_higen(struct inode *inode, struct inode *h_inode) -+{ -+ struct au_iinfo *iinfo; -+ -+ iinfo = au_ii(inode); -+ AuRwMustAnyLock(&iinfo->ii_rwsem); -+ return !(iinfo->ii_hsb1 == h_inode->i_sb -+ && iinfo->ii_higen == h_inode->i_generation); -+} -+ -+static inline void au_iigen_dec(struct inode *inode) -+{ -+ struct au_iinfo *iinfo; -+ struct au_iigen *iigen; -+ -+ iinfo = au_ii(inode); -+ iigen = &iinfo->ii_generation; -+ spin_lock(&iigen->ig_spin); -+ iigen->ig_generation--; -+ spin_unlock(&iigen->ig_spin); -+} -+ -+static inline int au_iigen_test(struct inode *inode, unsigned int sigen) -+{ -+ int err; -+ -+ err = 0; -+ if (unlikely(inode && au_iigen(inode, NULL) != sigen)) -+ err = -EIO; -+ -+ return err; -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+static inline aufs_bindex_t au_ii_br_id(struct inode *inode, -+ aufs_bindex_t bindex) -+{ -+ IiMustAnyLock(inode); -+ return au_ii(inode)->ii_hinode[0 + bindex].hi_id; -+} -+ -+static inline aufs_bindex_t au_ibstart(struct inode *inode) -+{ -+ IiMustAnyLock(inode); -+ return au_ii(inode)->ii_bstart; -+} -+ -+static inline aufs_bindex_t au_ibend(struct inode *inode) -+{ -+ IiMustAnyLock(inode); -+ return au_ii(inode)->ii_bend; -+} -+ -+static inline struct au_vdir *au_ivdir(struct inode *inode) -+{ -+ IiMustAnyLock(inode); -+ return au_ii(inode)->ii_vdir; -+} -+ -+static inline struct dentry *au_hi_wh(struct inode *inode, aufs_bindex_t bindex) -+{ -+ IiMustAnyLock(inode); -+ return au_ii(inode)->ii_hinode[0 + bindex].hi_whdentry; -+} -+ -+static inline void au_set_ibstart(struct inode *inode, aufs_bindex_t bindex) -+{ -+ IiMustWriteLock(inode); -+ au_ii(inode)->ii_bstart = bindex; -+} -+ -+static inline void au_set_ibend(struct inode *inode, aufs_bindex_t bindex) -+{ -+ IiMustWriteLock(inode); -+ au_ii(inode)->ii_bend = bindex; -+} -+ -+static inline void au_set_ivdir(struct inode *inode, struct au_vdir *vdir) -+{ -+ IiMustWriteLock(inode); -+ au_ii(inode)->ii_vdir = vdir; -+} -+ -+static inline struct au_hinode *au_hi(struct inode *inode, aufs_bindex_t bindex) -+{ -+ IiMustAnyLock(inode); -+ return au_ii(inode)->ii_hinode + bindex; -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+static inline struct dentry *au_pinned_parent(struct au_pin *pin) -+{ -+ if (pin) -+ return pin->parent; -+ return NULL; -+} -+ -+static inline struct inode *au_pinned_h_dir(struct au_pin *pin) -+{ -+ if (pin && pin->hdir) -+ return pin->hdir->hi_inode; -+ return NULL; -+} -+ -+static inline struct au_hinode *au_pinned_hdir(struct au_pin *pin) -+{ -+ if (pin) -+ return pin->hdir; -+ return NULL; -+} -+ -+static inline void au_pin_set_dentry(struct au_pin *pin, struct dentry *dentry) -+{ -+ if (pin) -+ pin->dentry = dentry; -+} -+ -+static inline void au_pin_set_parent_lflag(struct au_pin *pin, -+ unsigned char lflag) -+{ -+ if (pin) { -+ if (lflag) -+ au_fset_pin(pin->flags, DI_LOCKED); -+ else -+ au_fclr_pin(pin->flags, DI_LOCKED); -+ } -+} -+ -+#if 0 /* reserved */ -+static inline void au_pin_set_parent(struct au_pin *pin, struct dentry *parent) -+{ -+ if (pin) { -+ dput(pin->parent); -+ pin->parent = dget(parent); -+ } -+} -+#endif -+ -+/* ---------------------------------------------------------------------- */ -+ -+struct au_branch; -+#ifdef CONFIG_AUFS_HNOTIFY -+struct au_hnotify_op { -+ void (*ctl)(struct au_hinode *hinode, int do_set); -+ int (*alloc)(struct au_hinode *hinode); -+ -+ /* -+ * if it returns true, the the caller should free hinode->hi_notify, -+ * otherwise ->free() frees it. -+ */ -+ int (*free)(struct au_hinode *hinode, -+ struct au_hnotify *hn) __must_check; -+ -+ void (*fin)(void); -+ int (*init)(void); -+ -+ int (*reset_br)(unsigned int udba, struct au_branch *br, int perm); -+ void (*fin_br)(struct au_branch *br); -+ int (*init_br)(struct au_branch *br, int perm); -+}; -+ -+/* hnotify.c */ -+int au_hn_alloc(struct au_hinode *hinode, struct inode *inode); -+void au_hn_free(struct au_hinode *hinode); -+void au_hn_ctl(struct au_hinode *hinode, int do_set); -+void au_hn_reset(struct inode *inode, unsigned int flags); -+int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, -+ struct qstr *h_child_qstr, struct inode *h_child_inode); -+int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm); -+int au_hnotify_init_br(struct au_branch *br, int perm); -+void au_hnotify_fin_br(struct au_branch *br); -+int __init au_hnotify_init(void); -+void au_hnotify_fin(void); -+ -+/* hfsnotify.c */ -+extern const struct au_hnotify_op au_hnotify_op; -+ -+static inline -+void au_hn_init(struct au_hinode *hinode) -+{ -+ hinode->hi_notify = NULL; -+} -+ -+static inline struct au_hnotify *au_hn(struct au_hinode *hinode) -+{ -+ return hinode->hi_notify; -+} -+ -+#else -+AuStub(int, au_hn_alloc, return -EOPNOTSUPP, -+ struct au_hinode *hinode __maybe_unused, -+ struct inode *inode __maybe_unused) -+AuStub(struct au_hnotify *, au_hn, return NULL, struct au_hinode *hinode) -+AuStubVoid(au_hn_free, struct au_hinode *hinode __maybe_unused) -+AuStubVoid(au_hn_ctl, struct au_hinode *hinode __maybe_unused, -+ int do_set __maybe_unused) -+AuStubVoid(au_hn_reset, struct inode *inode __maybe_unused, -+ unsigned int flags __maybe_unused) -+AuStubInt0(au_hnotify_reset_br, unsigned int udba __maybe_unused, -+ struct au_branch *br __maybe_unused, -+ int perm __maybe_unused) -+AuStubInt0(au_hnotify_init_br, struct au_branch *br __maybe_unused, -+ int perm __maybe_unused) -+AuStubVoid(au_hnotify_fin_br, struct au_branch *br __maybe_unused) -+AuStubInt0(__init au_hnotify_init, void) -+AuStubVoid(au_hnotify_fin, void) -+AuStubVoid(au_hn_init, struct au_hinode *hinode __maybe_unused) -+#endif /* CONFIG_AUFS_HNOTIFY */ -+ -+static inline void au_hn_suspend(struct au_hinode *hdir) -+{ -+ au_hn_ctl(hdir, /*do_set*/0); -+} -+ -+static inline void au_hn_resume(struct au_hinode *hdir) -+{ -+ au_hn_ctl(hdir, /*do_set*/1); -+} -+ -+static inline void au_hn_imtx_lock(struct au_hinode *hdir) -+{ -+ mutex_lock(&hdir->hi_inode->i_mutex); -+ au_hn_suspend(hdir); -+} -+ -+static inline void au_hn_imtx_lock_nested(struct au_hinode *hdir, -+ unsigned int sc __maybe_unused) -+{ -+ mutex_lock_nested(&hdir->hi_inode->i_mutex, sc); -+ au_hn_suspend(hdir); -+} -+ -+static inline void au_hn_imtx_unlock(struct au_hinode *hdir) -+{ -+ au_hn_resume(hdir); -+ mutex_unlock(&hdir->hi_inode->i_mutex); -+} -+ -+#endif /* __KERNEL__ */ -+#endif /* __AUFS_INODE_H__ */ -diff --git a/fs/aufs/ioctl.c b/fs/aufs/ioctl.c -new file mode 100644 -index 0000000..87e3ddc ---- /dev/null -+++ b/fs/aufs/ioctl.c -@@ -0,0 +1,206 @@ -+/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima -+ */ -+ -+/* -+ * ioctl -+ * plink-management and readdir in userspace. -+ * assist the pathconf(3) wrapper library. -+ * move-down -+ * File-based Hierarchical Storage Management. -+ */ -+ -+#include -+#include -+#include "aufs.h" -+ -+static int au_wbr_fd(struct path *path, struct aufs_wbr_fd __user *arg) -+{ -+ int err, fd; -+ aufs_bindex_t wbi, bindex, bend; -+ struct file *h_file; -+ struct super_block *sb; -+ struct dentry *root; -+ struct au_branch *br; -+ struct aufs_wbr_fd wbrfd = { -+ .oflags = au_dir_roflags, -+ .brid = -1 -+ }; -+ const int valid = O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_DIRECTORY -+ | O_NOATIME | O_CLOEXEC; -+ -+ AuDebugOn(wbrfd.oflags & ~valid); -+ -+ if (arg) { -+ err = copy_from_user(&wbrfd, arg, sizeof(wbrfd)); -+ if (unlikely(err)) { -+ err = -EFAULT; -+ goto out; -+ } -+ -+ err = -EINVAL; -+ AuDbg("wbrfd{0%o, %d}\n", wbrfd.oflags, wbrfd.brid); -+ wbrfd.oflags |= au_dir_roflags; -+ AuDbg("0%o\n", wbrfd.oflags); -+ if (unlikely(wbrfd.oflags & ~valid)) -+ goto out; -+ } -+ -+ fd = get_unused_fd_flags(0); -+ err = fd; -+ if (unlikely(fd < 0)) -+ goto out; -+ -+ h_file = ERR_PTR(-EINVAL); -+ wbi = 0; -+ br = NULL; -+ sb = path->dentry->d_sb; -+ root = sb->s_root; -+ aufs_read_lock(root, AuLock_IR); -+ bend = au_sbend(sb); -+ if (wbrfd.brid >= 0) { -+ wbi = au_br_index(sb, wbrfd.brid); -+ if (unlikely(wbi < 0 || wbi > bend)) -+ goto out_unlock; -+ } -+ -+ h_file = ERR_PTR(-ENOENT); -+ br = au_sbr(sb, wbi); -+ if (!au_br_writable(br->br_perm)) { -+ if (arg) -+ goto out_unlock; -+ -+ bindex = wbi + 1; -+ wbi = -1; -+ for (; bindex <= bend; bindex++) { -+ br = au_sbr(sb, bindex); -+ if (au_br_writable(br->br_perm)) { -+ wbi = bindex; -+ br = au_sbr(sb, wbi); -+ break; -+ } -+ } -+ } -+ AuDbg("wbi %d\n", wbi); -+ if (wbi >= 0) -+ h_file = au_h_open(root, wbi, wbrfd.oflags, NULL, -+ /*force_wr*/0); -+ -+out_unlock: -+ aufs_read_unlock(root, AuLock_IR); -+ err = PTR_ERR(h_file); -+ if (IS_ERR(h_file)) -+ goto out_fd; -+ -+ atomic_dec(&br->br_count); /* cf. au_h_open() */ -+ fd_install(fd, h_file); -+ err = fd; -+ goto out; /* success */ -+ -+out_fd: -+ put_unused_fd(fd); -+out: -+ AuTraceErr(err); -+ return err; -+} -+ -+/* ---------------------------------------------------------------------- */ -+ -+long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg) -+{ -+ long err; -+ struct dentry *dentry; -+ -+ switch (cmd) { -+ case AUFS_CTL_RDU: -+ case AUFS_CTL_RDU_INO: -+ err = au_rdu_ioctl(file, cmd, arg); -+ break; -+ -+ case AUFS_CTL_WBR_FD: -+ err = au_wbr_fd(&file->f_path, (void __user *)arg); -+ break; -+ -+ case AUFS_CTL_IBUSY: -+ err = au_ibusy_ioctl(file, arg); -+ break; -+ -+ case AUFS_CTL_BRINFO: -+ err = au_brinfo_ioctl(file, arg); -+ break; -+ -+ case AUFS_CTL_FHSM_FD: -+ dentry = file->f_path.dentry; -+ if (IS_ROOT(dentry)) -+ err = au_fhsm_fd(dentry->d_sb, arg); -+ else -+ err = -ENOTTY; -+ break; -+ -+ default: -+ /* do not call the lower */ -+ AuDbg("0x%x\n", cmd); -+ err = -ENOTTY; -+ } -+ -+ AuTraceErr(err); -+ return err; -+} -+ -+long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg) -+{ -+ long err; -+ -+ switch (cmd) { -+ case AUFS_CTL_MVDOWN: -+ err = au_mvdown(file->f_path.dentry, (void __user *)arg); -+ break; -+ -+ case AUFS_CTL_WBR_FD: -+ err = au_wbr_fd(&file->f_path, (void __user *)arg); -+ break; -+ -+ default: -+ /* do not call the lower */ -+ AuDbg("0x%x\n", cmd); -+ err = -ENOTTY; -+ } -+ -+ AuTraceErr(err); -+ return err; -+} -+ -+#ifdef CONFIG_COMPAT -+long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, -+ unsigned long arg) -+{ -+ long err; -+ -+ switch (cmd) { -+ case AUFS_CTL_RDU: -+ case AUFS_CTL_RDU_INO: -+ err = au_rdu_compat_ioctl(file, cmd, arg); -+ break; -+ -+ case AUFS_CTL_IBUSY: -+ err = au_ibusy_compat_ioctl(file, arg); -+ break; -+ -+ case AUFS_CTL_BRINFO: -+ err = au_brinfo_compat_ioctl(file, arg); -+ break; -+ -+ default: -+ err = aufs_ioctl_dir(file, cmd, arg); -+ } -+ -+ AuTraceErr(err); -+ return err; -+} -+ -+long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, -+ unsigned long arg) -+{ -+ return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); -+} -+#endif -diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c -new file mode 100644 -index 0000000..f324758 ---- /dev/null -+++ b/fs/aufs/loop.c +diff -Nurp linux-4.4.3/fs/aufs/Kconfig linux-4.4.3-aufs/fs/aufs/Kconfig +--- linux-4.4.3/fs/aufs/Kconfig 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/Kconfig 2016-03-02 17:59:37.360498681 +0200 +@@ -0,0 +1,185 @@ ++config AUFS_FS ++ bool "Aufs (Advanced multi layered unification filesystem) support" ++ help ++ Aufs is a stackable unification filesystem such as Unionfs, ++ which unifies several directories and provides a merged single ++ directory. ++ In the early days, aufs was entirely re-designed and ++ re-implemented Unionfs Version 1.x series. Introducing many ++ original ideas, approaches and improvements, it becomes totally ++ different from Unionfs while keeping the basic features. ++ ++if AUFS_FS ++choice ++ prompt "Maximum number of branches" ++ default AUFS_BRANCH_MAX_127 ++ help ++ Specifies the maximum number of branches (or member directories) ++ in a single aufs. The larger value consumes more system ++ resources and has a minor impact to performance. ++config AUFS_BRANCH_MAX_127 ++ bool "127" ++ help ++ Specifies the maximum number of branches (or member directories) ++ in a single aufs. The larger value consumes more system ++ resources and has a minor impact to performance. ++config AUFS_BRANCH_MAX_511 ++ bool "511" ++ help ++ Specifies the maximum number of branches (or member directories) ++ in a single aufs. The larger value consumes more system ++ resources and has a minor impact to performance. ++config AUFS_BRANCH_MAX_1023 ++ bool "1023" ++ help ++ Specifies the maximum number of branches (or member directories) ++ in a single aufs. The larger value consumes more system ++ resources and has a minor impact to performance. ++config AUFS_BRANCH_MAX_32767 ++ bool "32767" ++ help ++ Specifies the maximum number of branches (or member directories) ++ in a single aufs. The larger value consumes more system ++ resources and has a minor impact to performance. ++endchoice ++ ++config AUFS_SBILIST ++ bool ++ depends on AUFS_MAGIC_SYSRQ || PROC_FS ++ default y ++ help ++ Automatic configuration for internal use. ++ When aufs supports Magic SysRq or /proc, enabled automatically. ++ ++config AUFS_HNOTIFY ++ bool "Detect direct branch access (bypassing aufs)" ++ help ++ If you want to modify files on branches directly, eg. bypassing aufs, ++ and want aufs to detect the changes of them fully, then enable this ++ option and use 'udba=notify' mount option. ++ Currently there is only one available configuration, "fsnotify". ++ It will have a negative impact to the performance. ++ See detail in aufs.5. ++ ++choice ++ prompt "method" if AUFS_HNOTIFY ++ default AUFS_HFSNOTIFY ++config AUFS_HFSNOTIFY ++ bool "fsnotify" ++ select FSNOTIFY ++endchoice ++ ++config AUFS_EXPORT ++ bool "NFS-exportable aufs" ++ depends on EXPORTFS = y ++ help ++ If you want to export your mounted aufs via NFS, then enable this ++ option. There are several requirements for this configuration. ++ See detail in aufs.5. ++ ++config AUFS_INO_T_64 ++ bool ++ depends on AUFS_EXPORT ++ depends on 64BIT && !(ALPHA || S390) ++ default y ++ help ++ Automatic configuration for internal use. ++ /* typedef unsigned long/int __kernel_ino_t */ ++ /* alpha and s390x are int */ ++ ++config AUFS_XATTR ++ bool "support for XATTR/EA (including Security Labels)" ++ help ++ If your branch fs supports XATTR/EA and you want to make them ++ available in aufs too, then enable this opsion and specify the ++ branch attributes for EA. ++ See detail in aufs.5. ++ ++config AUFS_FHSM ++ bool "File-based Hierarchical Storage Management" ++ help ++ Hierarchical Storage Management (or HSM) is a well-known feature ++ in the storage world. Aufs provides this feature as file-based. ++ with multiple branches. ++ These multiple branches are prioritized, ie. the topmost one ++ should be the fastest drive and be used heavily. ++ ++config AUFS_RDU ++ bool "Readdir in userspace" ++ help ++ Aufs has two methods to provide a merged view for a directory, ++ by a user-space library and by kernel-space natively. The latter ++ is always enabled but sometimes large and slow. ++ If you enable this option, install the library in aufs2-util ++ package, and set some environment variables for your readdir(3), ++ then the work will be handled in user-space which generally ++ shows better performance in most cases. ++ See detail in aufs.5. ++ ++config AUFS_SHWH ++ bool "Show whiteouts" ++ help ++ If you want to make the whiteouts in aufs visible, then enable ++ this option and specify 'shwh' mount option. Although it may ++ sounds like philosophy or something, but in technically it ++ simply shows the name of whiteout with keeping its behaviour. ++ ++config AUFS_BR_RAMFS ++ bool "Ramfs (initramfs/rootfs) as an aufs branch" ++ help ++ If you want to use ramfs as an aufs branch fs, then enable this ++ option. Generally tmpfs is recommended. ++ Aufs prohibited them to be a branch fs by default, because ++ initramfs becomes unusable after switch_root or something ++ generally. If you sets initramfs as an aufs branch and boot your ++ system by switch_root, you will meet a problem easily since the ++ files in initramfs may be inaccessible. ++ Unless you are going to use ramfs as an aufs branch fs without ++ switch_root or something, leave it N. ++ ++config AUFS_BR_FUSE ++ bool "Fuse fs as an aufs branch" ++ depends on FUSE_FS ++ select AUFS_POLL ++ help ++ If you want to use fuse-based userspace filesystem as an aufs ++ branch fs, then enable this option. ++ It implements the internal poll(2) operation which is ++ implemented by fuse only (curretnly). ++ ++config AUFS_POLL ++ bool ++ help ++ Automatic configuration for internal use. ++ ++config AUFS_BR_HFSPLUS ++ bool "Hfsplus as an aufs branch" ++ depends on HFSPLUS_FS ++ default y ++ help ++ If you want to use hfsplus fs as an aufs branch fs, then enable ++ this option. This option introduces a small overhead at ++ copying-up a file on hfsplus. ++ ++config AUFS_BDEV_LOOP ++ bool ++ depends on BLK_DEV_LOOP ++ default y ++ help ++ Automatic configuration for internal use. ++ Convert =[ym] into =y. ++ ++config AUFS_DEBUG ++ bool "Debug aufs" ++ help ++ Enable this to compile aufs internal debug code. ++ It will have a negative impact to the performance. ++ ++config AUFS_MAGIC_SYSRQ ++ bool ++ depends on AUFS_DEBUG && MAGIC_SYSRQ ++ default y ++ help ++ Automatic configuration for internal use. ++ When aufs supports Magic SysRq, enabled automatically. ++endif +diff -Nurp linux-4.4.3/fs/aufs/loop.c linux-4.4.3-aufs/fs/aufs/loop.c +--- linux-4.4.3/fs/aufs/loop.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/loop.c 2016-03-02 17:59:37.369498746 +0200 @@ -0,0 +1,133 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -20205,14 +20125,12 @@ index 0000000..f324758 + symbol_put(loop_backing_file); + kfree(au_warn_loopback_array); +} -diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h -new file mode 100644 -index 0000000..6d9864d ---- /dev/null -+++ b/fs/aufs/loop.h +diff -Nurp linux-4.4.3/fs/aufs/loop.h linux-4.4.3-aufs/fs/aufs/loop.h +--- linux-4.4.3/fs/aufs/loop.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/loop.h 2016-03-02 17:59:37.369498746 +0200 @@ -0,0 +1,39 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -20250,11 +20168,9 @@ index 0000000..6d9864d + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LOOP_H__ */ -diff --git a/fs/aufs/magic.mk b/fs/aufs/magic.mk -new file mode 100644 -index 0000000..4f83bdf ---- /dev/null -+++ b/fs/aufs/magic.mk +diff -Nurp linux-4.4.3/fs/aufs/magic.mk linux-4.4.3-aufs/fs/aufs/magic.mk +--- linux-4.4.3/fs/aufs/magic.mk 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/magic.mk 2016-03-02 17:59:37.369498746 +0200 @@ -0,0 +1,30 @@ + +# defined in ${srctree}/fs/fuse/inode.c @@ -20286,14 +20202,52 @@ index 0000000..4f83bdf +ifdef CONFIG_HFSPLUS_FS +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b +endif -diff --git a/fs/aufs/module.c b/fs/aufs/module.c -new file mode 100644 -index 0000000..3268e62 ---- /dev/null -+++ b/fs/aufs/module.c +diff -Nurp linux-4.4.3/fs/aufs/Makefile linux-4.4.3-aufs/fs/aufs/Makefile +--- linux-4.4.3/fs/aufs/Makefile 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/Makefile 2016-03-02 17:59:37.361498688 +0200 +@@ -0,0 +1,36 @@ ++ ++include ${srctree}/${src}/magic.mk ++ ++# cf. include/linux/kernel.h ++# enable pr_debug ++ccflags-y += -DDEBUG ++# sparse requires the full pathname ++ccflags-y += -include ${srctree}/include/uapi/linux/aufs_type.h ++ ++obj-$(CONFIG_AUFS_FS) += aufs.o ++aufs-y := module.o sbinfo.o super.o branch.o xino.o sysaufs.o opts.o \ ++ wkq.o vfsub.o dcsub.o \ ++ cpup.o whout.o wbr_policy.o \ ++ dinfo.o dentry.o \ ++ dynop.o \ ++ finfo.o file.o f_op.o \ ++ dir.o vdir.o \ ++ iinfo.o inode.o i_op.o i_op_add.o i_op_del.o i_op_ren.o \ ++ mvdown.o ioctl.o ++ ++# all are boolean ++aufs-$(CONFIG_PROC_FS) += procfs.o plink.o ++aufs-$(CONFIG_SYSFS) += sysfs.o ++aufs-$(CONFIG_DEBUG_FS) += dbgaufs.o ++aufs-$(CONFIG_AUFS_BDEV_LOOP) += loop.o ++aufs-$(CONFIG_AUFS_HNOTIFY) += hnotify.o ++aufs-$(CONFIG_AUFS_HFSNOTIFY) += hfsnotify.o ++aufs-$(CONFIG_AUFS_EXPORT) += export.o ++aufs-$(CONFIG_AUFS_XATTR) += xattr.o ++aufs-$(CONFIG_FS_POSIX_ACL) += posix_acl.o ++aufs-$(CONFIG_AUFS_FHSM) += fhsm.o ++aufs-$(CONFIG_AUFS_POLL) += poll.o ++aufs-$(CONFIG_AUFS_RDU) += rdu.o ++aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o ++aufs-$(CONFIG_AUFS_DEBUG) += debug.o ++aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o +diff -Nurp linux-4.4.3/fs/aufs/module.c linux-4.4.3-aufs/fs/aufs/module.c +--- linux-4.4.3/fs/aufs/module.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/module.c 2016-03-02 17:59:37.369498746 +0200 @@ -0,0 +1,207 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -20389,7 +20343,7 @@ index 0000000..3268e62 +module_param_named(brs, sysaufs_brs, int, S_IRUGO); + +/* this module parameter has no meaning when USER_NS is disabled */ -+static bool au_userns; ++bool au_userns; +MODULE_PARM_DESC(allow_userns, "allow unprivileged to mount under userns"); +module_param_named(allow_userns, au_userns, bool, S_IRUGO); + @@ -20499,14 +20453,12 @@ index 0000000..3268e62 + +module_init(aufs_init); +module_exit(aufs_exit); -diff --git a/fs/aufs/module.h b/fs/aufs/module.h -new file mode 100644 -index 0000000..adee827 ---- /dev/null -+++ b/fs/aufs/module.h -@@ -0,0 +1,91 @@ +diff -Nurp linux-4.4.3/fs/aufs/module.h linux-4.4.3-aufs/fs/aufs/module.h +--- linux-4.4.3/fs/aufs/module.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/module.h 2016-03-02 17:59:37.369498746 +0200 +@@ -0,0 +1,92 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -20525,6 +20477,7 @@ index 0000000..adee827 + +/* module parameters */ +extern int sysaufs_brs; ++extern bool au_userns; + +/* ---------------------------------------------------------------------- */ + @@ -20596,14 +20549,12 @@ index 0000000..adee827 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_MODULE_H__ */ -diff --git a/fs/aufs/mvdown.c b/fs/aufs/mvdown.c -new file mode 100644 -index 0000000..53e0f6a ---- /dev/null -+++ b/fs/aufs/mvdown.c +diff -Nurp linux-4.4.3/fs/aufs/mvdown.c linux-4.4.3-aufs/fs/aufs/mvdown.c +--- linux-4.4.3/fs/aufs/mvdown.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/mvdown.c 2016-03-02 17:59:37.370498753 +0200 @@ -0,0 +1,690 @@ +/* -+ * Copyright (C) 2011-2015 Junjiro R. Okajima ++ * Copyright (C) 2011-2016 Junjiro R. Okajima + */ + +/* @@ -21292,14 +21243,12 @@ index 0000000..53e0f6a + AuTraceErr(err); + return err; +} -diff --git a/fs/aufs/opts.c b/fs/aufs/opts.c -new file mode 100644 -index 0000000..f79d15e ---- /dev/null -+++ b/fs/aufs/opts.c +diff -Nurp linux-4.4.3/fs/aufs/opts.c linux-4.4.3-aufs/fs/aufs/opts.c +--- linux-4.4.3/fs/aufs/opts.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/opts.c 2016-03-02 17:59:37.370498753 +0200 @@ -0,0 +1,1846 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -23144,14 +23093,12 @@ index 0000000..f79d15e +{ + return au_mntflags(sb) & AuOptMask_UDBA; +} -diff --git a/fs/aufs/opts.h b/fs/aufs/opts.h -new file mode 100644 -index 0000000..3899e92 ---- /dev/null -+++ b/fs/aufs/opts.h +diff -Nurp linux-4.4.3/fs/aufs/opts.h linux-4.4.3-aufs/fs/aufs/opts.h +--- linux-4.4.3/fs/aufs/opts.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/opts.h 2016-03-02 17:59:37.370498753 +0200 @@ -0,0 +1,198 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -23348,14 +23295,12 @@ index 0000000..3899e92 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_OPTS_H__ */ -diff --git a/fs/aufs/plink.c b/fs/aufs/plink.c -new file mode 100644 -index 0000000..af2246c ---- /dev/null -+++ b/fs/aufs/plink.c +diff -Nurp linux-4.4.3/fs/aufs/plink.c linux-4.4.3-aufs/fs/aufs/plink.c +--- linux-4.4.3/fs/aufs/plink.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/plink.c 2016-03-02 17:59:37.370498753 +0200 @@ -0,0 +1,515 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -23869,14 +23814,12 @@ index 0000000..af2246c + } + } +} -diff --git a/fs/aufs/poll.c b/fs/aufs/poll.c -new file mode 100644 -index 0000000..c324fc7 ---- /dev/null -+++ b/fs/aufs/poll.c +diff -Nurp linux-4.4.3/fs/aufs/poll.c linux-4.4.3-aufs/fs/aufs/poll.c +--- linux-4.4.3/fs/aufs/poll.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/poll.c 2016-03-02 17:59:37.370498753 +0200 @@ -0,0 +1,39 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -23914,14 +23857,12 @@ index 0000000..c324fc7 + AuTraceErr((int)mask); + return mask; +} -diff --git a/fs/aufs/posix_acl.c b/fs/aufs/posix_acl.c -new file mode 100644 -index 0000000..d9ce957 ---- /dev/null -+++ b/fs/aufs/posix_acl.c -@@ -0,0 +1,86 @@ +diff -Nurp linux-4.4.3/fs/aufs/posix_acl.c linux-4.4.3-aufs/fs/aufs/posix_acl.c +--- linux-4.4.3/fs/aufs/posix_acl.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/posix_acl.c 2016-03-02 17:59:37.371498760 +0200 +@@ -0,0 +1,85 @@ +/* -+ * Copyright (C) 2014-2015 Junjiro R. Okajima ++ * Copyright (C) 2014-2016 Junjiro R. Okajima + */ + +/* @@ -23929,7 +23870,6 @@ index 0000000..d9ce957 + */ + +#include -+#include +#include "aufs.h" + +struct posix_acl *aufs_get_acl(struct inode *inode, int type) @@ -24006,14 +23946,12 @@ index 0000000..d9ce957 + mutex_unlock(&inode->i_mutex); + return err; +} -diff --git a/fs/aufs/procfs.c b/fs/aufs/procfs.c -new file mode 100644 -index 0000000..ead2a00 ---- /dev/null -+++ b/fs/aufs/procfs.c +diff -Nurp linux-4.4.3/fs/aufs/procfs.c linux-4.4.3-aufs/fs/aufs/procfs.c +--- linux-4.4.3/fs/aufs/procfs.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/procfs.c 2016-03-02 17:59:37.371498760 +0200 @@ -0,0 +1,156 @@ +/* -+ * Copyright (C) 2010-2015 Junjiro R. Okajima ++ * Copyright (C) 2010-2016 Junjiro R. Okajima + */ + +/* @@ -24168,14 +24106,12 @@ index 0000000..ead2a00 +out: + return err; +} -diff --git a/fs/aufs/rdu.c b/fs/aufs/rdu.c -new file mode 100644 -index 0000000..f11d9bb ---- /dev/null -+++ b/fs/aufs/rdu.c +diff -Nurp linux-4.4.3/fs/aufs/rdu.c linux-4.4.3-aufs/fs/aufs/rdu.c +--- linux-4.4.3/fs/aufs/rdu.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/rdu.c 2016-03-02 17:59:37.371498760 +0200 @@ -0,0 +1,375 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -24549,14 +24485,12 @@ index 0000000..f11d9bb + return err; +} +#endif -diff --git a/fs/aufs/rwsem.h b/fs/aufs/rwsem.h -new file mode 100644 -index 0000000..171ee0c ---- /dev/null -+++ b/fs/aufs/rwsem.h +diff -Nurp linux-4.4.3/fs/aufs/rwsem.h linux-4.4.3-aufs/fs/aufs/rwsem.h +--- linux-4.4.3/fs/aufs/rwsem.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/rwsem.h 2016-03-02 17:59:37.371498760 +0200 @@ -0,0 +1,178 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -24733,14 +24667,12 @@ index 0000000..171ee0c + +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ -diff --git a/fs/aufs/sbinfo.c b/fs/aufs/sbinfo.c -new file mode 100644 -index 0000000..8f2ec55 ---- /dev/null -+++ b/fs/aufs/sbinfo.c +diff -Nurp linux-4.4.3/fs/aufs/sbinfo.c linux-4.4.3-aufs/fs/aufs/sbinfo.c +--- linux-4.4.3/fs/aufs/sbinfo.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/sbinfo.c 2016-03-02 17:59:37.371498760 +0200 @@ -0,0 +1,353 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -25092,14 +25024,12 @@ index 0000000..8f2ec55 + p = radix_tree_delete(&sbinfo->au_si_pid.tree, current->pid); + spin_unlock(&sbinfo->au_si_pid.tree_lock); +} -diff --git a/fs/aufs/spl.h b/fs/aufs/spl.h -new file mode 100644 -index 0000000..a66d39e ---- /dev/null -+++ b/fs/aufs/spl.h +diff -Nurp linux-4.4.3/fs/aufs/spl.h linux-4.4.3-aufs/fs/aufs/spl.h +--- linux-4.4.3/fs/aufs/spl.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/spl.h 2016-03-02 17:59:37.371498760 +0200 @@ -0,0 +1,98 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -25196,14 +25126,12 @@ index 0000000..a66d39e + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SPL_H__ */ -diff --git a/fs/aufs/super.c b/fs/aufs/super.c -new file mode 100644 -index 0000000..98cfd64 ---- /dev/null -+++ b/fs/aufs/super.c +diff -Nurp linux-4.4.3/fs/aufs/super.c linux-4.4.3-aufs/fs/aufs/super.c +--- linux-4.4.3/fs/aufs/super.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/super.c 2016-03-02 17:59:37.372498767 +0200 @@ -0,0 +1,1026 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -26228,14 +26156,12 @@ index 0000000..98cfd64 + /* no need to __module_get() and module_put(). */ + .owner = THIS_MODULE, +}; -diff --git a/fs/aufs/super.h b/fs/aufs/super.h -new file mode 100644 -index 0000000..d151729 ---- /dev/null -+++ b/fs/aufs/super.h +diff -Nurp linux-4.4.3/fs/aufs/super.h linux-4.4.3-aufs/fs/aufs/super.h +--- linux-4.4.3/fs/aufs/super.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/super.h 2016-03-02 17:59:37.372498767 +0200 @@ -0,0 +1,628 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -26862,14 +26788,12 @@ index 0000000..d151729 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ -diff --git a/fs/aufs/sysaufs.c b/fs/aufs/sysaufs.c -new file mode 100644 -index 0000000..29ac6fa ---- /dev/null -+++ b/fs/aufs/sysaufs.c +diff -Nurp linux-4.4.3/fs/aufs/sysaufs.c linux-4.4.3-aufs/fs/aufs/sysaufs.c +--- linux-4.4.3/fs/aufs/sysaufs.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/sysaufs.c 2016-03-02 17:59:37.372498767 +0200 @@ -0,0 +1,91 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -26959,14 +26883,12 @@ index 0000000..29ac6fa +out: + return err; +} -diff --git a/fs/aufs/sysaufs.h b/fs/aufs/sysaufs.h -new file mode 100644 -index 0000000..feb78fd ---- /dev/null -+++ b/fs/aufs/sysaufs.h +diff -Nurp linux-4.4.3/fs/aufs/sysaufs.h linux-4.4.3-aufs/fs/aufs/sysaufs.h +--- linux-4.4.3/fs/aufs/sysaufs.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/sysaufs.h 2016-03-02 17:59:37.372498767 +0200 @@ -0,0 +1,88 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -27053,14 +26975,12 @@ index 0000000..feb78fd + +#endif /* __KERNEL__ */ +#endif /* __SYSAUFS_H__ */ -diff --git a/fs/aufs/sysfs.c b/fs/aufs/sysfs.c -new file mode 100644 -index 0000000..ec8df8f ---- /dev/null -+++ b/fs/aufs/sysfs.c +diff -Nurp linux-4.4.3/fs/aufs/sysfs.c linux-4.4.3-aufs/fs/aufs/sysfs.c +--- linux-4.4.3/fs/aufs/sysfs.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/sysfs.c 2016-03-02 17:59:37.372498767 +0200 @@ -0,0 +1,340 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -27399,14 +27319,12 @@ index 0000000..ec8df8f + } + } +} -diff --git a/fs/aufs/sysrq.c b/fs/aufs/sysrq.c -new file mode 100644 -index 0000000..3a0182b ---- /dev/null -+++ b/fs/aufs/sysrq.c +diff -Nurp linux-4.4.3/fs/aufs/sysrq.c linux-4.4.3-aufs/fs/aufs/sysrq.c +--- linux-4.4.3/fs/aufs/sysrq.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/sysrq.c 2016-03-02 17:59:37.372498767 +0200 @@ -0,0 +1,144 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -27549,14 +27467,12 @@ index 0000000..3a0182b + if (unlikely(err)) + pr_err("err %d (ignored)\n", err); +} -diff --git a/fs/aufs/vdir.c b/fs/aufs/vdir.c -new file mode 100644 -index 0000000..db81f49 ---- /dev/null -+++ b/fs/aufs/vdir.c +diff -Nurp linux-4.4.3/fs/aufs/vdir.c linux-4.4.3-aufs/fs/aufs/vdir.c +--- linux-4.4.3/fs/aufs/vdir.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/vdir.c 2016-03-02 17:59:37.372498767 +0200 @@ -0,0 +1,875 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -28430,14 +28346,12 @@ index 0000000..db81f49 + /* smp_mb(); */ + return 0; +} -diff --git a/fs/aufs/vfsub.c b/fs/aufs/vfsub.c -new file mode 100644 -index 0000000..da0df5a ---- /dev/null -+++ b/fs/aufs/vfsub.c -@@ -0,0 +1,835 @@ +diff -Nurp linux-4.4.3/fs/aufs/vfsub.c linux-4.4.3-aufs/fs/aufs/vfsub.c +--- linux-4.4.3/fs/aufs/vfsub.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/vfsub.c 2016-03-02 17:59:37.373498774 +0200 +@@ -0,0 +1,853 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -28445,10 +28359,28 @@ index 0000000..da0df5a + */ + +#include ++#include +#include +#include ++#include "../fs/mount.h" +#include "aufs.h" + ++#ifdef CONFIG_AUFS_BR_FUSE ++int vfsub_test_mntns(struct vfsmount *mnt, struct super_block *h_sb) ++{ ++ struct nsproxy *ns; ++ ++ if (!au_test_fuse(h_sb) || !au_userns) ++ return 0; ++ ++ ns = current->nsproxy; ++ /* no {get,put}_nsproxy(ns) */ ++ return real_mount(mnt)->mnt_ns == ns->mnt_ns ? 0 : -EACCES; ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ +int vfsub_update_h_iattr(struct path *h_path, int *did) +{ + int err; @@ -29271,14 +29203,12 @@ index 0000000..da0df5a + + return err; +} -diff --git a/fs/aufs/vfsub.h b/fs/aufs/vfsub.h -new file mode 100644 -index 0000000..4218da1 ---- /dev/null -+++ b/fs/aufs/vfsub.h -@@ -0,0 +1,274 @@ +diff -Nurp linux-4.4.3/fs/aufs/vfsub.h linux-4.4.3-aufs/fs/aufs/vfsub.h +--- linux-4.4.3/fs/aufs/vfsub.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/vfsub.h 2016-03-02 17:59:37.373498774 +0200 +@@ -0,0 +1,295 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -29292,6 +29222,7 @@ index 0000000..4218da1 + +#include +#include ++#include +#include +#include "debug.h" + @@ -29342,6 +29273,12 @@ index 0000000..4218da1 + || IS_IMMUTABLE(inode); +} + ++#ifdef CONFIG_AUFS_BR_FUSE ++int vfsub_test_mntns(struct vfsmount *mnt, struct super_block *h_sb); ++#else ++AuStubInt0(vfsub_test_mntns, struct vfsmount *mnt, struct super_block *h_sb); ++#endif ++ +/* ---------------------------------------------------------------------- */ + +int vfsub_update_h_iattr(struct path *h_path, int *did); @@ -29481,6 +29418,20 @@ index 0000000..4218da1 + /* no vfsub_update_h_iattr() since we don't have struct path */ +} + ++#ifdef CONFIG_FS_POSIX_ACL ++static inline int vfsub_acl_chmod(struct inode *h_inode, umode_t h_mode) ++{ ++ int err; ++ ++ err = posix_acl_chmod(h_inode, h_mode); ++ if (err == -EOPNOTSUPP) ++ err = 0; ++ return err; ++} ++#else ++AuStubInt0(vfsub_acl_chmod, struct inode *h_inode, umode_t h_mode); ++#endif ++ +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); @@ -29551,14 +29502,12 @@ index 0000000..4218da1 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_VFSUB_H__ */ -diff --git a/fs/aufs/wbr_policy.c b/fs/aufs/wbr_policy.c -new file mode 100644 -index 0000000..53a01fb ---- /dev/null -+++ b/fs/aufs/wbr_policy.c +diff -Nurp linux-4.4.3/fs/aufs/wbr_policy.c linux-4.4.3-aufs/fs/aufs/wbr_policy.c +--- linux-4.4.3/fs/aufs/wbr_policy.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/wbr_policy.c 2016-03-02 17:59:37.373498774 +0200 @@ -0,0 +1,752 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -30309,14 +30258,12 @@ index 0000000..53a01fb + .fin = au_wbr_create_fin_mfs + } +}; -diff --git a/fs/aufs/whout.c b/fs/aufs/whout.c -new file mode 100644 -index 0000000..05ba085 ---- /dev/null -+++ b/fs/aufs/whout.c +diff -Nurp linux-4.4.3/fs/aufs/whout.c linux-4.4.3-aufs/fs/aufs/whout.c +--- linux-4.4.3/fs/aufs/whout.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/whout.c 2016-03-02 17:59:37.374498781 +0200 @@ -0,0 +1,1047 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -31362,14 +31309,12 @@ index 0000000..05ba085 + au_whtmp_rmdir_free(args); + } +} -diff --git a/fs/aufs/whout.h b/fs/aufs/whout.h -new file mode 100644 -index 0000000..b39acea ---- /dev/null -+++ b/fs/aufs/whout.h +diff -Nurp linux-4.4.3/fs/aufs/whout.h linux-4.4.3-aufs/fs/aufs/whout.h +--- linux-4.4.3/fs/aufs/whout.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/whout.h 2016-03-02 17:59:37.374498781 +0200 @@ -0,0 +1,72 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -31440,14 +31385,12 @@ index 0000000..b39acea + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WHOUT_H__ */ -diff --git a/fs/aufs/wkq.c b/fs/aufs/wkq.c -new file mode 100644 -index 0000000..08870ec ---- /dev/null -+++ b/fs/aufs/wkq.c +diff -Nurp linux-4.4.3/fs/aufs/wkq.c linux-4.4.3-aufs/fs/aufs/wkq.c +--- linux-4.4.3/fs/aufs/wkq.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/wkq.c 2016-03-02 17:59:37.374498781 +0200 @@ -0,0 +1,200 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -31646,14 +31589,12 @@ index 0000000..08870ec + + return err; +} -diff --git a/fs/aufs/wkq.h b/fs/aufs/wkq.h -new file mode 100644 -index 0000000..8f01343 ---- /dev/null -+++ b/fs/aufs/wkq.h +diff -Nurp linux-4.4.3/fs/aufs/wkq.h linux-4.4.3-aufs/fs/aufs/wkq.h +--- linux-4.4.3/fs/aufs/wkq.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/wkq.h 2016-03-02 17:59:37.374498781 +0200 @@ -0,0 +1,78 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -31730,14 +31671,12 @@ index 0000000..8f01343 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WKQ_H__ */ -diff --git a/fs/aufs/xattr.c b/fs/aufs/xattr.c -new file mode 100644 -index 0000000..c1695b3 ---- /dev/null -+++ b/fs/aufs/xattr.c +diff -Nurp linux-4.4.3/fs/aufs/xattr.c linux-4.4.3-aufs/fs/aufs/xattr.c +--- linux-4.4.3/fs/aufs/xattr.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/xattr.c 2016-03-02 17:59:37.375498789 +0200 @@ -0,0 +1,331 @@ +/* -+ * Copyright (C) 2014-2015 Junjiro R. Okajima ++ * Copyright (C) 2014-2016 Junjiro R. Okajima + */ + +/* @@ -32067,14 +32006,12 @@ index 0000000..c1695b3 + /* sb->s_xattr = au_xattr_handlers; */ +} +#endif -diff --git a/fs/aufs/xino.c b/fs/aufs/xino.c -new file mode 100644 -index 0000000..90de8c5 ---- /dev/null -+++ b/fs/aufs/xino.c -@@ -0,0 +1,1283 @@ +diff -Nurp linux-4.4.3/fs/aufs/xino.c linux-4.4.3-aufs/fs/aufs/xino.c +--- linux-4.4.3/fs/aufs/xino.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/fs/aufs/xino.c 2016-03-02 17:59:37.376498796 +0200 +@@ -0,0 +1,1305 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +/* @@ -32115,6 +32052,9 @@ index 0000000..90de8c5 + +/* ---------------------------------------------------------------------- */ + ++static ssize_t xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf, ++ size_t size, loff_t *pos); ++ +static ssize_t do_xino_fwrite(vfs_writef_t func, struct file *file, void *kbuf, + size_t size, loff_t *pos) +{ @@ -32124,14 +32064,26 @@ index 0000000..90de8c5 + void *k; + const char __user *u; + } buf; ++ int i; ++ const int prevent_endless = 10; + ++ i = 0; + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { -+ /* todo: signal_pending? */ + err = func(file, buf.u, size, pos); -+ } while (err == -EAGAIN || err == -EINTR); ++ if (err == -EINTR ++ && !au_wkq_test() ++ && fatal_signal_pending(current)) { ++ set_fs(oldfs); ++ err = xino_fwrite_wkq(func, file, kbuf, size, pos); ++ BUG_ON(err == -EINTR); ++ oldfs = get_fs(); ++ set_fs(KERNEL_DS); ++ } ++ } while (i++ < prevent_endless ++ && (err == -EAGAIN || err == -EINTR)); + set_fs(oldfs); + +#if 0 /* reserved for future use */ @@ -32157,35 +32109,42 @@ index 0000000..90de8c5 + *a->errp = do_xino_fwrite(a->func, a->file, a->buf, a->size, a->pos); +} + ++static ssize_t xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf, ++ size_t size, loff_t *pos) ++{ ++ ssize_t err; ++ int wkq_err; ++ struct do_xino_fwrite_args args = { ++ .errp = &err, ++ .func = func, ++ .file = file, ++ .buf = buf, ++ .size = size, ++ .pos = pos ++ }; ++ ++ /* ++ * it breaks RLIMIT_FSIZE and normal user's limit, ++ * users should care about quota and real 'filesystem full.' ++ */ ++ wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ ++ return err; ++} ++ +ssize_t xino_fwrite(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos) +{ + ssize_t err; + -+ /* todo: signal block and no wkq? */ + if (rlimit(RLIMIT_FSIZE) == RLIM_INFINITY) { + lockdep_off(); + err = do_xino_fwrite(func, file, buf, size, pos); + lockdep_on(); -+ } else { -+ /* -+ * it breaks RLIMIT_FSIZE and normal user's limit, -+ * users should care about quota and real 'filesystem full.' -+ */ -+ int wkq_err; -+ struct do_xino_fwrite_args args = { -+ .errp = &err, -+ .func = func, -+ .file = file, -+ .buf = buf, -+ .size = size, -+ .pos = pos -+ }; -+ -+ wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); -+ if (unlikely(wkq_err)) -+ err = wkq_err; -+ } ++ } else ++ err = xino_fwrite_wkq(func, file, buf, size, pos); + + return err; +} @@ -33356,10 +33315,9 @@ index 0000000..90de8c5 +out: + return err; +} -diff --git a/fs/dcache.c b/fs/dcache.c -index 5c33aeb..8aa7f26 100644 ---- a/fs/dcache.c -+++ b/fs/dcache.c +diff -Nurp linux-4.4.3/fs/dcache.c linux-4.4.3-aufs/fs/dcache.c +--- linux-4.4.3/fs/dcache.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/fs/dcache.c 2016-03-02 17:59:37.376498796 +0200 @@ -1167,7 +1167,7 @@ enum d_walk_ret { * * The @enter() and @finish() callbacks are called with d_lock held. @@ -33369,11 +33327,50 @@ index 5c33aeb..8aa7f26 100644 enum d_walk_ret (*enter)(void *, struct dentry *), void (*finish)(void *)) { -diff --git a/fs/proc/base.c b/fs/proc/base.c -index bd3e9e6..fc42216 100644 ---- a/fs/proc/base.c -+++ b/fs/proc/base.c -@@ -1921,7 +1921,7 @@ static int proc_map_files_get_link(struct dentry *dentry, struct path *path) +diff -Nurp linux-4.4.3/fs/fcntl.c linux-4.4.3-aufs/fs/fcntl.c +--- linux-4.4.3/fs/fcntl.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/fs/fcntl.c 2016-03-02 17:59:37.376498796 +0200 +@@ -29,7 +29,7 @@ + + #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME) + +-static int setfl(int fd, struct file * filp, unsigned long arg) ++int setfl(int fd, struct file * filp, unsigned long arg) + { + struct inode * inode = file_inode(filp); + int error = 0; +@@ -59,6 +59,8 @@ static int setfl(int fd, struct file * f + + if (filp->f_op->check_flags) + error = filp->f_op->check_flags(arg); ++ if (!error && filp->f_op->setfl) ++ error = filp->f_op->setfl(filp, arg); + if (error) + return error; + +diff -Nurp linux-4.4.3/fs/Kconfig linux-4.4.3-aufs/fs/Kconfig +--- linux-4.4.3/fs/Kconfig 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/fs/Kconfig 2016-03-02 17:59:37.360498681 +0200 +@@ -221,6 +221,7 @@ source "fs/pstore/Kconfig" + source "fs/sysv/Kconfig" + source "fs/ufs/Kconfig" + source "fs/exofs/Kconfig" ++source "fs/aufs/Kconfig" + + endif # MISC_FILESYSTEMS + +diff -Nurp linux-4.4.3/fs/Makefile linux-4.4.3-aufs/fs/Makefile +--- linux-4.4.3/fs/Makefile 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/fs/Makefile 2016-03-02 17:59:37.360498681 +0200 +@@ -126,3 +126,4 @@ obj-y += exofs/ # Multiple modules + obj-$(CONFIG_CEPH_FS) += ceph/ + obj-$(CONFIG_PSTORE) += pstore/ + obj-$(CONFIG_EFIVAR_FS) += efivarfs/ ++obj-$(CONFIG_AUFS_FS) += aufs/ +diff -Nurp linux-4.4.3/fs/proc/base.c linux-4.4.3-aufs/fs/proc/base.c +--- linux-4.4.3/fs/proc/base.c 2016-03-02 17:42:59.444713286 +0200 ++++ linux-4.4.3-aufs/fs/proc/base.c 2016-03-02 17:59:37.376498796 +0200 +@@ -1922,7 +1922,7 @@ static int proc_map_files_get_link(struc down_read(&mm->mmap_sem); vma = find_exact_vma(mm, vm_start, vm_end); if (vma && vma->vm_file) { @@ -33382,11 +33379,10 @@ index bd3e9e6..fc42216 100644 path_get(path); rc = 0; } -diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c -index f8595e8..cb8eda0 100644 ---- a/fs/proc/nommu.c -+++ b/fs/proc/nommu.c -@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region) +diff -Nurp linux-4.4.3/fs/proc/nommu.c linux-4.4.3-aufs/fs/proc/nommu.c +--- linux-4.4.3/fs/proc/nommu.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/fs/proc/nommu.c 2016-03-02 17:59:37.377498803 +0200 +@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_ file = region->vm_file; if (file) { @@ -33398,11 +33394,10 @@ index f8595e8..cb8eda0 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; } -diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c -index 187b3b5..e03793e 100644 ---- a/fs/proc/task_mmu.c -+++ b/fs/proc/task_mmu.c -@@ -281,7 +281,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid) +diff -Nurp linux-4.4.3/fs/proc/task_mmu.c linux-4.4.3-aufs/fs/proc/task_mmu.c +--- linux-4.4.3/fs/proc/task_mmu.c 2016-03-02 17:42:59.444713286 +0200 ++++ linux-4.4.3-aufs/fs/proc/task_mmu.c 2016-03-02 17:59:37.377498803 +0200 +@@ -281,7 +281,10 @@ show_map_vma(struct seq_file *m, struct const char *name = NULL; if (file) { @@ -33414,7 +33409,7 @@ index 187b3b5..e03793e 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; -@@ -1505,7 +1508,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid) +@@ -1506,7 +1509,7 @@ static int show_numa_map(struct seq_file struct proc_maps_private *proc_priv = &numa_priv->proc_maps; struct vm_area_struct *vma = v; struct numa_maps *md = &numa_priv->md; @@ -33423,11 +33418,10 @@ index 187b3b5..e03793e 100644 struct mm_struct *mm = vma->vm_mm; struct mm_walk walk = { .hugetlb_entry = gather_hugetlb_stats, -diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c -index e0d64c9..7aa92db 100644 ---- a/fs/proc/task_nommu.c -+++ b/fs/proc/task_nommu.c -@@ -160,7 +160,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma, +diff -Nurp linux-4.4.3/fs/proc/task_nommu.c linux-4.4.3-aufs/fs/proc/task_nommu.c +--- linux-4.4.3/fs/proc/task_nommu.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/fs/proc/task_nommu.c 2016-03-02 17:59:37.377498803 +0200 +@@ -160,7 +160,10 @@ static int nommu_vma_show(struct seq_fil file = vma->vm_file; if (file) { @@ -33439,11 +33433,10 @@ index e0d64c9..7aa92db 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; -diff --git a/fs/read_write.c b/fs/read_write.c -index 819ef3f..fd0414e 100644 ---- a/fs/read_write.c -+++ b/fs/read_write.c -@@ -494,6 +494,28 @@ ssize_t __vfs_write(struct file *file, const char __user *p, size_t count, +diff -Nurp linux-4.4.3/fs/read_write.c linux-4.4.3-aufs/fs/read_write.c +--- linux-4.4.3/fs/read_write.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/fs/read_write.c 2016-03-02 17:59:37.377498803 +0200 +@@ -494,6 +494,28 @@ ssize_t __vfs_write(struct file *file, c } EXPORT_SYMBOL(__vfs_write); @@ -33472,10 +33465,9 @@ index 819ef3f..fd0414e 100644 ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos) { mm_segment_t old_fs; -diff --git a/fs/splice.c b/fs/splice.c -index 4cf700d..30a091d 100644 ---- a/fs/splice.c -+++ b/fs/splice.c +diff -Nurp linux-4.4.3/fs/splice.c linux-4.4.3-aufs/fs/splice.c +--- linux-4.4.3/fs/splice.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/fs/splice.c 2016-03-02 17:59:37.377498803 +0200 @@ -1110,8 +1110,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); /* * Attempt to initiate a splice from pipe to file. @@ -33487,7 +33479,7 @@ index 4cf700d..30a091d 100644 { ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); -@@ -1127,9 +1127,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, +@@ -1127,9 +1127,9 @@ static long do_splice_from(struct pipe_i /* * Attempt to initiate a splice from a file to a pipe. */ @@ -33500,10 +33492,9 @@ index 4cf700d..30a091d 100644 { ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); -diff --git a/include/linux/file.h b/include/linux/file.h -index f87d308..9a290b3 100644 ---- a/include/linux/file.h -+++ b/include/linux/file.h +diff -Nurp linux-4.4.3/include/linux/file.h linux-4.4.3-aufs/include/linux/file.h +--- linux-4.4.3/include/linux/file.h 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/include/linux/file.h 2016-03-02 17:59:37.377498803 +0200 @@ -19,6 +19,7 @@ struct dentry; struct path; extern struct file *alloc_file(struct path *, fmode_t mode, @@ -33512,11 +33503,26 @@ index f87d308..9a290b3 100644 static inline void fput_light(struct file *file, int fput_needed) { -diff --git a/include/linux/fs.h b/include/linux/fs.h -index 3aa5142..8d48506 100644 ---- a/include/linux/fs.h -+++ b/include/linux/fs.h -@@ -1672,6 +1672,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, +diff -Nurp linux-4.4.3/include/linux/fs.h linux-4.4.3-aufs/include/linux/fs.h +--- linux-4.4.3/include/linux/fs.h 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/include/linux/fs.h 2016-03-02 17:59:37.378498810 +0200 +@@ -1233,6 +1233,7 @@ extern void fasync_free(struct fasync_st + /* can be called from interrupts */ + extern void kill_fasync(struct fasync_struct **, int, int); + ++extern int setfl(int fd, struct file * filp, unsigned long arg); + extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); + extern void f_setown(struct file *filp, unsigned long arg, int force); + extern void f_delown(struct file *filp); +@@ -1619,6 +1620,7 @@ struct file_operations { + ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); + unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); + int (*check_flags)(int); ++ int (*setfl)(struct file *, unsigned long); + int (*flock) (struct file *, int, struct file_lock *); + ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); + ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); +@@ -1672,6 +1674,12 @@ ssize_t rw_copy_check_uvector(int type, struct iovec *fast_pointer, struct iovec **ret_pointer); @@ -33529,11 +33535,10 @@ index 3aa5142..8d48506 100644 extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *); extern ssize_t __vfs_write(struct file *, const char __user *, size_t, loff_t *); extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *); -diff --git a/include/linux/mm.h b/include/linux/mm.h -index 00bad77..cc616b0 100644 ---- a/include/linux/mm.h -+++ b/include/linux/mm.h -@@ -1183,6 +1183,28 @@ static inline int fixup_user_fault(struct task_struct *tsk, +diff -Nurp linux-4.4.3/include/linux/mm.h linux-4.4.3-aufs/include/linux/mm.h +--- linux-4.4.3/include/linux/mm.h 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/include/linux/mm.h 2016-03-02 17:59:37.378498810 +0200 +@@ -1183,6 +1183,28 @@ static inline int fixup_user_fault(struc } #endif @@ -33562,10 +33567,9 @@ index 00bad77..cc616b0 100644 extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, int len, int write); -diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index f8d1492..c3a3760 100644 ---- a/include/linux/mm_types.h -+++ b/include/linux/mm_types.h +diff -Nurp linux-4.4.3/include/linux/mm_types.h linux-4.4.3-aufs/include/linux/mm_types.h +--- linux-4.4.3/include/linux/mm_types.h 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/include/linux/mm_types.h 2016-03-02 17:59:37.378498810 +0200 @@ -272,6 +272,7 @@ struct vm_region { unsigned long vm_top; /* region allocated to here */ unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ @@ -33582,11 +33586,10 @@ index f8d1492..c3a3760 100644 void * vm_private_data; /* was vm_pte (shared mem) */ #ifndef CONFIG_MMU -diff --git a/include/linux/splice.h b/include/linux/splice.h -index da2751d..2e0fca6 100644 ---- a/include/linux/splice.h -+++ b/include/linux/splice.h -@@ -83,4 +83,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *); +diff -Nurp linux-4.4.3/include/linux/splice.h linux-4.4.3-aufs/include/linux/splice.h +--- linux-4.4.3/include/linux/splice.h 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/include/linux/splice.h 2016-03-02 17:59:37.378498810 +0200 +@@ -83,4 +83,10 @@ extern void splice_shrink_spd(struct spl extern void spd_release_page(struct splice_pipe_desc *, unsigned int); extern const struct pipe_buf_operations page_cache_pipe_buf_ops; @@ -33597,26 +33600,12 @@ index da2751d..2e0fca6 100644 + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); #endif -diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild -index 628e6e6..6dd5765 100644 ---- a/include/uapi/linux/Kbuild -+++ b/include/uapi/linux/Kbuild -@@ -59,6 +59,7 @@ header-y += atmsvc.h - header-y += atm_tcp.h - header-y += atm_zatm.h - header-y += audit.h -+header-y += aufs_type.h - header-y += auto_fs4.h - header-y += auto_fs.h - header-y += auxvec.h -diff --git a/include/uapi/linux/aufs_type.h b/include/uapi/linux/aufs_type.h -new file mode 100644 -index 0000000..a06c985 ---- /dev/null -+++ b/include/uapi/linux/aufs_type.h +diff -Nurp linux-4.4.3/include/uapi/linux/aufs_type.h linux-4.4.3-aufs/include/uapi/linux/aufs_type.h +--- linux-4.4.3/include/uapi/linux/aufs_type.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/include/uapi/linux/aufs_type.h 2016-03-02 17:59:37.378498810 +0200 @@ -0,0 +1,406 @@ +/* -+ * Copyright (C) 2005-2015 Junjiro R. Okajima ++ * Copyright (C) 2005-2016 Junjiro R. Okajima + */ + +#ifndef __AUFS_TYPE_H__ @@ -33643,7 +33632,7 @@ index 0000000..a06c985 + +#include + -+#define AUFS_VERSION "4.x-rcN" ++#define AUFS_VERSION "4.4" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') @@ -34021,11 +34010,21 @@ index 0000000..a06c985 +#define AUFS_CTL_FHSM_FD _IOW(AuCtlType, AuCtl_FHSM_FD, int) + +#endif /* __AUFS_TYPE_H__ */ -diff --git a/kernel/fork.c b/kernel/fork.c -index fce002e..2230a0f 100644 ---- a/kernel/fork.c -+++ b/kernel/fork.c -@@ -464,7 +464,7 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) +diff -Nurp linux-4.4.3/include/uapi/linux/Kbuild linux-4.4.3-aufs/include/uapi/linux/Kbuild +--- linux-4.4.3/include/uapi/linux/Kbuild 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/include/uapi/linux/Kbuild 2016-03-02 17:59:37.378498810 +0200 +@@ -59,6 +59,7 @@ header-y += atmsvc.h + header-y += atm_tcp.h + header-y += atm_zatm.h + header-y += audit.h ++header-y += aufs_type.h + header-y += auto_fs4.h + header-y += auto_fs.h + header-y += auxvec.h +diff -Nurp linux-4.4.3/kernel/fork.c linux-4.4.3-aufs/kernel/fork.c +--- linux-4.4.3/kernel/fork.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/kernel/fork.c 2016-03-02 17:59:37.379498817 +0200 +@@ -465,7 +465,7 @@ static int dup_mmap(struct mm_struct *mm struct inode *inode = file_inode(file); struct address_space *mapping = file->f_mapping; @@ -34034,24 +34033,33 @@ index fce002e..2230a0f 100644 if (tmp->vm_flags & VM_DENYWRITE) atomic_dec(&inode->i_writecount); i_mmap_lock_write(mapping); -diff --git a/mm/Makefile b/mm/Makefile -index 2ed4319..e3a53f5 100644 ---- a/mm/Makefile -+++ b/mm/Makefile -@@ -21,7 +21,7 @@ obj-y := filemap.o mempool.o oom_kill.o \ - mm_init.o mmu_context.o percpu.o slab_common.o \ - compaction.o vmacache.o \ - interval_tree.o list_lru.o workingset.o \ -- debug.o $(mmu-y) -+ prfile.o debug.o $(mmu-y) +diff -Nurp linux-4.4.3/MAINTAINERS linux-4.4.3-aufs/MAINTAINERS +--- linux-4.4.3/MAINTAINERS 2016-03-02 17:42:59.404713024 +0200 ++++ linux-4.4.3-aufs/MAINTAINERS 2016-03-02 17:59:37.360498681 +0200 +@@ -2029,6 +2029,19 @@ F: include/linux/audit.h + F: include/uapi/linux/audit.h + F: kernel/audit* - obj-y += init-mm.o - -diff --git a/mm/filemap.c b/mm/filemap.c -index 1bb0076..8eaece8 100644 ---- a/mm/filemap.c -+++ b/mm/filemap.c -@@ -2128,7 +2128,7 @@ int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) ++AUFS (advanced multi layered unification filesystem) FILESYSTEM ++M: "J. R. Okajima" ++L: linux-unionfs@vger.kernel.org ++L: aufs-users@lists.sourceforge.net (members only) ++W: http://aufs.sourceforge.net ++T: git://github.com/sfjro/aufs4-linux.git ++S: Supported ++F: Documentation/filesystems/aufs/ ++F: Documentation/ABI/testing/debugfs-aufs ++F: Documentation/ABI/testing/sysfs-aufs ++F: fs/aufs/ ++F: include/uapi/linux/aufs_type.h ++ + AUXILIARY DISPLAY DRIVERS + M: Miguel Ojeda Sandonis + W: http://miguelojeda.es/auxdisplay.htm +diff -Nurp linux-4.4.3/mm/filemap.c linux-4.4.3-aufs/mm/filemap.c +--- linux-4.4.3/mm/filemap.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/mm/filemap.c 2016-03-02 17:59:37.379498817 +0200 +@@ -2128,7 +2128,7 @@ int filemap_page_mkwrite(struct vm_area_ int ret = VM_FAULT_LOCKED; sb_start_pagefault(inode->i_sb); @@ -34060,11 +34068,22 @@ index 1bb0076..8eaece8 100644 lock_page(page); if (page->mapping != inode->i_mapping) { unlock_page(page); -diff --git a/mm/memory.c b/mm/memory.c -index c387430..d434404 100644 ---- a/mm/memory.c -+++ b/mm/memory.c -@@ -2035,7 +2035,7 @@ static inline int wp_page_reuse(struct mm_struct *mm, +diff -Nurp linux-4.4.3/mm/Makefile linux-4.4.3-aufs/mm/Makefile +--- linux-4.4.3/mm/Makefile 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/mm/Makefile 2016-03-02 17:59:37.379498817 +0200 +@@ -21,7 +21,7 @@ obj-y := filemap.o mempool.o oom_kill. + mm_init.o mmu_context.o percpu.o slab_common.o \ + compaction.o vmacache.o \ + interval_tree.o list_lru.o workingset.o \ +- debug.o $(mmu-y) ++ prfile.o debug.o $(mmu-y) + + obj-y += init-mm.o + +diff -Nurp linux-4.4.3/mm/memory.c linux-4.4.3-aufs/mm/memory.c +--- linux-4.4.3/mm/memory.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/mm/memory.c 2016-03-02 17:59:37.379498817 +0200 +@@ -2035,7 +2035,7 @@ static inline int wp_page_reuse(struct m } if (!page_mkwrite) @@ -34073,11 +34092,10 @@ index c387430..d434404 100644 } return VM_FAULT_WRITE; -diff --git a/mm/mmap.c b/mm/mmap.c -index 2ce04a6..f555c0a 100644 ---- a/mm/mmap.c -+++ b/mm/mmap.c -@@ -275,7 +275,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) +diff -Nurp linux-4.4.3/mm/mmap.c linux-4.4.3-aufs/mm/mmap.c +--- linux-4.4.3/mm/mmap.c 2016-03-02 17:42:59.457713370 +0200 ++++ linux-4.4.3-aufs/mm/mmap.c 2016-03-02 17:59:37.380498824 +0200 +@@ -275,7 +275,7 @@ static struct vm_area_struct *remove_vma if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -34086,7 +34104,7 @@ index 2ce04a6..f555c0a 100644 mpol_put(vma_policy(vma)); kmem_cache_free(vm_area_cachep, vma); return next; -@@ -887,7 +887,7 @@ again: remove_next = 1 + (end > next->vm_end); +@@ -891,7 +891,7 @@ again: remove_next = 1 + (end > next-> if (remove_next) { if (file) { uprobe_munmap(next, next->vm_start, next->vm_end); @@ -34095,7 +34113,7 @@ index 2ce04a6..f555c0a 100644 } if (next->anon_vma) anon_vma_merge(vma, next); -@@ -1681,8 +1681,8 @@ out: +@@ -1685,8 +1685,8 @@ out: return addr; unmap_and_free_vma: @@ -34105,7 +34123,7 @@ index 2ce04a6..f555c0a 100644 /* Undo any partial mapping done by a device driver. */ unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); -@@ -2488,7 +2488,7 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2483,7 +2483,7 @@ static int __split_vma(struct mm_struct goto out_free_mpol; if (new->vm_file) @@ -34114,7 +34132,7 @@ index 2ce04a6..f555c0a 100644 if (new->vm_ops && new->vm_ops->open) new->vm_ops->open(new); -@@ -2507,7 +2507,7 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2502,7 +2502,7 @@ static int __split_vma(struct mm_struct if (new->vm_ops && new->vm_ops->close) new->vm_ops->close(new); if (new->vm_file) @@ -34123,7 +34141,7 @@ index 2ce04a6..f555c0a 100644 unlink_anon_vmas(new); out_free_mpol: mpol_put(vma_policy(new)); -@@ -2649,7 +2649,6 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, +@@ -2644,7 +2644,6 @@ SYSCALL_DEFINE5(remap_file_pages, unsign struct vm_area_struct *vma; unsigned long populate = 0; unsigned long ret = -EINVAL; @@ -34131,8 +34149,8 @@ index 2ce04a6..f555c0a 100644 pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. " "See Documentation/vm/remap_file_pages.txt.\n", -@@ -2693,10 +2692,10 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, - munlock_vma_pages_range(vma, start, start + size); +@@ -2712,10 +2711,10 @@ SYSCALL_DEFINE5(remap_file_pages, unsign + } } - file = get_file(vma->vm_file); @@ -34144,7 +34162,7 @@ index 2ce04a6..f555c0a 100644 out: up_write(&mm->mmap_sem); if (populate) -@@ -2966,7 +2965,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, +@@ -2985,7 +2984,7 @@ struct vm_area_struct *copy_vma(struct v if (anon_vma_clone(new_vma, vma)) goto out_free_mempol; if (new_vma->vm_file) @@ -34153,11 +34171,10 @@ index 2ce04a6..f555c0a 100644 if (new_vma->vm_ops && new_vma->vm_ops->open) new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); -diff --git a/mm/nommu.c b/mm/nommu.c -index 92be862..29179f7 100644 ---- a/mm/nommu.c -+++ b/mm/nommu.c -@@ -671,7 +671,7 @@ static void __put_nommu_region(struct vm_region *region) +diff -Nurp linux-4.4.3/mm/nommu.c linux-4.4.3-aufs/mm/nommu.c +--- linux-4.4.3/mm/nommu.c 2016-01-11 01:01:32.000000000 +0200 ++++ linux-4.4.3-aufs/mm/nommu.c 2016-03-02 17:59:37.380498824 +0200 +@@ -671,7 +671,7 @@ static void __put_nommu_region(struct vm up_write(&nommu_region_sem); if (region->vm_file) @@ -34166,7 +34183,7 @@ index 92be862..29179f7 100644 /* IO memory and memory shared directly out of the pagecache * from ramfs/tmpfs mustn't be released here */ -@@ -829,7 +829,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -829,7 +829,7 @@ static void delete_vma(struct mm_struct if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -34197,11 +34214,9 @@ index 92be862..29179f7 100644 kmem_cache_free(vm_area_cachep, vma); return ret; -diff --git a/mm/prfile.c b/mm/prfile.c -new file mode 100644 -index 0000000..b323b8a ---- /dev/null -+++ b/mm/prfile.c +diff -Nurp linux-4.4.3/mm/prfile.c linux-4.4.3-aufs/mm/prfile.c +--- linux-4.4.3/mm/prfile.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-4.4.3-aufs/mm/prfile.c 2016-03-02 17:59:37.380498824 +0200 @@ -0,0 +1,86 @@ +/* + * Mainly for aufs which mmap(2) diffrent file and wants to print different path diff --git a/kernel/kernel/files/patches/mageia/fs-ovl-allow-zero-size-xattr.patch b/kernel/kernel/files/patches/mageia/fs-ovl-allow-zero-size-xattr.patch deleted file mode 100644 index e506728f..00000000 --- a/kernel/kernel/files/patches/mageia/fs-ovl-allow-zero-size-xattr.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 97daf8b97ad6f913a34c82515be64dc9ac08d63e Mon Sep 17 00:00:00 2001 -From: Miklos Szeredi -Date: Tue, 10 Nov 2015 17:08:41 +0100 -Subject: [PATCH 1/6] ovl: allow zero size xattr - -When ovl_copy_xattr() encountered a zero size xattr no more xattrs were -copied and the function returned success. This is clearly not the desired -behavior. - -Signed-off-by: Miklos Szeredi -Cc: ---- - fs/overlayfs/copy_up.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c -index 871fcb6..394e87f 100644 ---- a/fs/overlayfs/copy_up.c -+++ b/fs/overlayfs/copy_up.c -@@ -54,7 +54,7 @@ int ovl_copy_xattr(struct dentry *old, struct dentry *new) - - for (name = buf; name < (buf + list_size); name += strlen(name) + 1) { - size = vfs_getxattr(old, name, value, XATTR_SIZE_MAX); -- if (size <= 0) { -+ if (size < 0) { - error = size; - goto out_free_value; - } --- -2.7.0 - diff --git a/kernel/kernel/files/patches/mageia/fs-ovl-check-dentry-positiveness-in-ovl_cleanup_whiteou.patch b/kernel/kernel/files/patches/mageia/fs-ovl-check-dentry-positiveness-in-ovl_cleanup_whiteou.patch deleted file mode 100644 index d2c30236..00000000 --- a/kernel/kernel/files/patches/mageia/fs-ovl-check-dentry-positiveness-in-ovl_cleanup_whiteou.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 84889d49335627bc770b32787c1ef9ebad1da232 Mon Sep 17 00:00:00 2001 -From: Konstantin Khlebnikov -Date: Mon, 16 Nov 2015 18:44:11 +0300 -Subject: [PATCH 6/6] ovl: check dentry positiveness in ovl_cleanup_whiteouts() - -This patch fixes kernel crash at removing directory which contains -whiteouts from lower layers. - -Cache of directory content passed as "list" contains entries from all -layers, including whiteouts from lower layers. So, lookup in upper dir -(moved into work at this stage) will return negative entry. Plus this -cache is filled long before and we can race with external removal. - -Example: - mkdir -p lower0/dir lower1/dir upper work overlay - touch lower0/dir/a lower0/dir/b - mknod lower1/dir/a c 0 0 - mount -t overlay none overlay -o lowerdir=lower1:lower0,upperdir=upper,workdir=work - rm -fr overlay/dir - -Signed-off-by: Konstantin Khlebnikov -Signed-off-by: Miklos Szeredi -Cc: # 3.18+ ---- - fs/overlayfs/readdir.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/fs/overlayfs/readdir.c b/fs/overlayfs/readdir.c -index 70e9af5..adcb139 100644 ---- a/fs/overlayfs/readdir.c -+++ b/fs/overlayfs/readdir.c -@@ -571,7 +571,8 @@ void ovl_cleanup_whiteouts(struct dentry *upper, struct list_head *list) - (int) PTR_ERR(dentry)); - continue; - } -- ovl_cleanup(upper->d_inode, dentry); -+ if (dentry->d_inode) -+ ovl_cleanup(upper->d_inode, dentry); - dput(dentry); - } - mutex_unlock(&upper->d_inode->i_mutex); --- -2.7.0 - diff --git a/kernel/kernel/files/patches/mageia/fs-ovl-root-copy-attr.patch b/kernel/kernel/files/patches/mageia/fs-ovl-root-copy-attr.patch deleted file mode 100644 index 73613b7e..00000000 --- a/kernel/kernel/files/patches/mageia/fs-ovl-root-copy-attr.patch +++ /dev/null @@ -1,33 +0,0 @@ -From ed06e069775ad9236087594a1c1667367e983fb5 Mon Sep 17 00:00:00 2001 -From: Miklos Szeredi -Date: Wed, 9 Dec 2015 16:11:59 +0100 -Subject: [PATCH 4/6] ovl: root: copy attr - -We copy i_uid and i_gid of underlying inode into overlayfs inode. Except -for the root inode. - -Fix this omission. - -Signed-off-by: Miklos Szeredi -Cc: ---- - fs/overlayfs/super.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c -index 32f3124..ec31711 100644 ---- a/fs/overlayfs/super.c -+++ b/fs/overlayfs/super.c -@@ -1079,6 +1079,9 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent) - - root_dentry->d_fsdata = oe; - -+ ovl_copyattr(ovl_dentry_real(root_dentry)->d_inode, -+ root_dentry->d_inode); -+ - sb->s_magic = OVERLAYFS_SUPER_MAGIC; - sb->s_op = &ovl_super_operations; - sb->s_root = root_dentry; --- -2.7.0 - diff --git a/kernel/kernel/files/patches/mageia/fs-ovl-setattr-check-permissions-before-copy-up.patch b/kernel/kernel/files/patches/mageia/fs-ovl-setattr-check-permissions-before-copy-up.patch deleted file mode 100644 index 91014154..00000000 --- a/kernel/kernel/files/patches/mageia/fs-ovl-setattr-check-permissions-before-copy-up.patch +++ /dev/null @@ -1,65 +0,0 @@ -From cf9a6784f7c1b5ee2b9159a1246e327c331c5697 Mon Sep 17 00:00:00 2001 -From: Miklos Szeredi -Date: Fri, 11 Dec 2015 16:30:49 +0100 -Subject: [PATCH 5/6] ovl: setattr: check permissions before copy-up - -Without this copy-up of a file can be forced, even without actually being -allowed to do anything on the file. - -[Arnd Bergmann] include for PAGE_CACHE_SIZE (used by -MAX_LFS_FILESIZE definition). - -Signed-off-by: Miklos Szeredi -Cc: ---- - fs/overlayfs/inode.c | 13 +++++++++++++ - fs/overlayfs/super.c | 2 ++ - 2 files changed, 15 insertions(+) - -diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c -index 7654631..213a726 100644 ---- a/fs/overlayfs/inode.c -+++ b/fs/overlayfs/inode.c -@@ -45,6 +45,19 @@ int ovl_setattr(struct dentry *dentry, struct iattr *attr) - int err; - struct dentry *upperdentry; - -+ /* -+ * Check for permissions before trying to copy-up. This is redundant -+ * since it will be rechecked later by ->setattr() on upper dentry. But -+ * without this, copy-up can be triggered by just about anybody. -+ * -+ * We don't initialize inode->size, which just means that -+ * inode_newsize_ok() will always check against MAX_LFS_FILESIZE and not -+ * check for a swapfile (which this won't be anyway). -+ */ -+ err = inode_change_ok(dentry->d_inode, attr); -+ if (err) -+ return err; -+ - err = ovl_want_write(dentry); - if (err) - goto out; -diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c -index ec31711..b08bf4d 100644 ---- a/fs/overlayfs/super.c -+++ b/fs/overlayfs/super.c -@@ -9,6 +9,7 @@ - - #include - #include -+#include - #include - #include - #include -@@ -936,6 +937,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent) - } - - sb->s_stack_depth = 0; -+ sb->s_maxbytes = MAX_LFS_FILESIZE; - if (ufs->config.upperdir) { - if (!ufs->config.workdir) { - pr_err("overlayfs: missing 'workdir'\n"); --- -2.7.0 - diff --git a/kernel/kernel/files/patches/mageia/fs-ovl-use-a-minimal-buffer-in-ovl_copy_xattr.patch b/kernel/kernel/files/patches/mageia/fs-ovl-use-a-minimal-buffer-in-ovl_copy_xattr.patch deleted file mode 100644 index 59eb828b..00000000 --- a/kernel/kernel/files/patches/mageia/fs-ovl-use-a-minimal-buffer-in-ovl_copy_xattr.patch +++ /dev/null @@ -1,89 +0,0 @@ -From e4ad29fa0d224d05e08b2858e65f112fd8edd4fe Mon Sep 17 00:00:00 2001 -From: Vito Caputo -Date: Sat, 24 Oct 2015 07:19:46 -0500 -Subject: [PATCH 2/6] ovl: use a minimal buffer in ovl_copy_xattr - -Rather than always allocating the high-order XATTR_SIZE_MAX buffer -which is costly and prone to failure, only allocate what is needed and -realloc if necessary. - -Fixes https://github.com/coreos/bugs/issues/489 - -Signed-off-by: Miklos Szeredi -Cc: ---- - fs/overlayfs/copy_up.c | 39 +++++++++++++++++++++++++-------------- - 1 file changed, 25 insertions(+), 14 deletions(-) - -diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c -index 394e87f..758012b 100644 ---- a/fs/overlayfs/copy_up.c -+++ b/fs/overlayfs/copy_up.c -@@ -22,9 +22,9 @@ - - int ovl_copy_xattr(struct dentry *old, struct dentry *new) - { -- ssize_t list_size, size; -- char *buf, *name, *value; -- int error; -+ ssize_t list_size, size, value_size = 0; -+ char *buf, *name, *value = NULL; -+ int uninitialized_var(error); - - if (!old->d_inode->i_op->getxattr || - !new->d_inode->i_op->getxattr) -@@ -41,29 +41,40 @@ int ovl_copy_xattr(struct dentry *old, struct dentry *new) - if (!buf) - return -ENOMEM; - -- error = -ENOMEM; -- value = kmalloc(XATTR_SIZE_MAX, GFP_KERNEL); -- if (!value) -- goto out; -- - list_size = vfs_listxattr(old, buf, list_size); - if (list_size <= 0) { - error = list_size; -- goto out_free_value; -+ goto out; - } - - for (name = buf; name < (buf + list_size); name += strlen(name) + 1) { -- size = vfs_getxattr(old, name, value, XATTR_SIZE_MAX); -+retry: -+ size = vfs_getxattr(old, name, value, value_size); -+ if (size == -ERANGE) -+ size = vfs_getxattr(old, name, NULL, 0); -+ - if (size < 0) { - error = size; -- goto out_free_value; -+ break; -+ } -+ -+ if (size > value_size) { -+ void *new; -+ -+ new = krealloc(value, size, GFP_KERNEL); -+ if (!new) { -+ error = -ENOMEM; -+ break; -+ } -+ value = new; -+ value_size = size; -+ goto retry; - } -+ - error = vfs_setxattr(new, name, value, size, 0); - if (error) -- goto out_free_value; -+ break; - } -- --out_free_value: - kfree(value); - out: - kfree(buf); --- -2.7.0 - diff --git a/kernel/kernel/files/patches/mageia/fs-xfs-Revert-xfs-clear-PF_NOFREEZE-for-xfsaild-kthread.patch b/kernel/kernel/files/patches/mageia/fs-xfs-Revert-xfs-clear-PF_NOFREEZE-for-xfsaild-kthread.patch deleted file mode 100644 index 5c483f7f..00000000 --- a/kernel/kernel/files/patches/mageia/fs-xfs-Revert-xfs-clear-PF_NOFREEZE-for-xfsaild-kthread.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 3e85286e75224fa3f08bdad20e78c8327742634e Mon Sep 17 00:00:00 2001 -From: Dave Chinner -Date: Tue, 19 Jan 2016 08:21:46 +1100 -Subject: [PATCH] Revert "xfs: clear PF_NOFREEZE for xfsaild kthread" - -This reverts commit 24ba16bb3d499c49974669cd8429c3e4138ab102 as it -prevents machines from suspending. This regression occurs when the -xfsaild is idle on entry to suspend, and so there s no activity to -wake it from it's idle sleep and hence see that it is supposed to -freeze. Hence the freezer times out waiting for it and suspend is -cancelled. - -There is no obvious fix for this short of freezing the filesystem -properly, so revert this change for now. - -cc: # 4.4 -Signed-off-by: Dave Chinner -Acked-by: Jiri Kosina -Reviewed-by: Brian Foster -Signed-off-by: Dave Chinner ---- - fs/xfs/xfs_trans_ail.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c -index aa67339..4f18fd9 100644 ---- a/fs/xfs/xfs_trans_ail.c -+++ b/fs/xfs/xfs_trans_ail.c -@@ -497,7 +497,6 @@ xfsaild( - long tout = 0; /* milliseconds */ - - current->flags |= PF_MEMALLOC; -- set_freezable(); - - while (!kthread_should_stop()) { - if (tout && tout <= 20) --- -2.7.1 - diff --git a/kernel/kernel/files/patches/mageia/gpu-drm-Fix-drm_vblank_pre_post_modeset-regression-from-Linux-4.4.patch b/kernel/kernel/files/patches/mageia/gpu-drm-Fix-drm_vblank_pre_post_modeset-regression-from-Linux-4.4.patch deleted file mode 100644 index df761c07..00000000 --- a/kernel/kernel/files/patches/mageia/gpu-drm-Fix-drm_vblank_pre_post_modeset-regression-from-Linux-4.4.patch +++ /dev/null @@ -1,82 +0,0 @@ -From: Mario Kleiner -Subject: [PATCH 3/6] drm: Fix drm_vblank_pre/post_modeset regression from Linux 4.4 -Date: Fri, 12 Feb 2016 20:30:29 +0100 - -Changes to drm_update_vblank_count() in Linux 4.4 broke the -behaviour of the pre/post modeset functions as the new update -code doesn't deal with hw vblank counter resets inbetween calls -to drm_vblank_pre_modeset an drm_vblank_post_modeset, as it -should. - -This causes mistreatment of such hw counter resets as counter -wraparound, and thereby large forward jumps of the software -vblank counter which in turn cause vblank event dispatching -and vblank waits to fail/hang --> userspace clients hang. - -This symptom was reported on radeon-kms to cause a infinite -hang of KDE Plasma 5 shell's login procedure, preventing users -from logging in. - -Fix this by detecting when drm_update_vblank_count() is called -inside a pre->post modeset interval. If so, clamp valid vblank -increments to the safe values 0 and 1, pretty much restoring -the update behavior of the old update code of Linux 4.3 and -earlier. Also reset the last recorded hw vblank count at call -to drm_vblank_post_modeset() to be safe against hw that after -modesetting, dpms on etc. only fires its first vblank irq after -drm_vblank_post_modeset() was already called. - -Reported-by: Vlastimil Babka -Signed-off-by: Mario Kleiner -Reviewed-by: Daniel Vetter -Tested-by: Vlastimil Babka - -Cc: # 4.4+ -Cc: michel@daenzer.net -Cc: vbabka@suse.cz -Cc: ville.syrjala@linux.intel.com -Cc: daniel.vetter@ffwll.ch -Cc: dri-devel@lists.freedesktop.org -Cc: alexander.deucher@amd.com -Cc: christian.koenig@amd.com ---- - drivers/gpu/drm/drm_irq.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c -index 92ad62f..055b0fa 100644 ---- a/drivers/gpu/drm/drm_irq.c -+++ b/drivers/gpu/drm/drm_irq.c -@@ -222,6 +222,21 @@ static void drm_update_vblank_count(struct drm_device *dev, unsigned int pipe, - } - - /* -+ * Within a drm_vblank_pre_modeset - drm_vblank_post_modeset -+ * interval? If so then vblank irqs keep running and it will likely -+ * happen that the hardware vblank counter is not trustworthy as it -+ * might reset at some point in that interval and vblank timestamps -+ * are not trustworthy either in that interval. Iow. this can result -+ * in a bogus diff >> 1 which must be avoided as it would cause -+ * random large forward jumps of the software vblank counter. -+ */ -+ if (diff > 1 && (vblank->inmodeset & 0x2)) { -+ DRM_DEBUG_VBL("clamping vblank bump to 1 on crtc %u: diffr=%u" -+ " due to pre-modeset.\n", pipe, diff); -+ diff = 1; -+ } -+ -+ /* - * FIMXE: Need to replace this hack with proper seqlocks. - * - * Restrict the bump of the software vblank counter to a safe maximum -@@ -1575,6 +1590,7 @@ void drm_vblank_post_modeset(struct drm_device *dev, unsigned int pipe) - if (vblank->inmodeset) { - spin_lock_irqsave(&dev->vbl_lock, irqflags); - dev->vblank_disable_allowed = true; -+ drm_reset_vblank_timestamp(dev, pipe); - spin_unlock_irqrestore(&dev->vbl_lock, irqflags); - - if (vblank->inmodeset & 0x2) --- -1.9.1 - diff --git a/kernel/kernel/files/patches/mageia/gpu-drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vblank_on-v2.patch b/kernel/kernel/files/patches/mageia/gpu-drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vblank_on-v2.patch deleted file mode 100644 index 246229bd..00000000 --- a/kernel/kernel/files/patches/mageia/gpu-drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vblank_on-v2.patch +++ /dev/null @@ -1,64 +0,0 @@ -From: Mario Kleiner -Subject: [PATCH 4/6] drm: Fix treatment of drm_vblank_offdelay in drm_vblank_on() (v2) -Date: Fri, 12 Feb 2016 20:30:30 +0100 - -drm_vblank_offdelay can have three different types of values: - -< 0 is to be always treated the same as dev->vblank_disable_immediate -= 0 is to be treated as "never disable vblanks" -> 0 is to be treated as disable immediate if kms driver wants it - that way via dev->vblank_disable_immediate. Otherwise it is - a disable timeout in msecs. - -This got broken in Linux 3.18+ for the implementation of -drm_vblank_on. If the user specified a value of zero which should -always reenable vblank irqs in this function, a kms driver could -override the users choice by setting vblank_disable_immediate -to true. This patch fixes the regression and keeps the user in -control. - -v2: Only reenable vblank if there are clients left or the user - requested to "never disable vblanks" via offdelay 0. Enabling - vblanks even in the "delayed disable" case (offdelay > 0) was - specifically added by Ville in commit cd19e52aee922 - ("drm: Kick start vblank interrupts at drm_vblank_on()"), - but after discussion it turns out that this was done by accident. - - Citing Ville: "I think it just ended up as a mess due to changing - some of the semantics of offdelay<0 vs. offdelay==0 vs. - disable_immediate during the review of the series. So yeah, given - how drm_vblank_put() works now, I'd just make this check for - offdelay==0." - -Signed-off-by: Mario Kleiner -Reviewed-by: Daniel Vetter - -Cc: # 3.18+ -Cc: michel@daenzer.net -Cc: vbabka@suse.cz -Cc: ville.syrjala@linux.intel.com -Cc: daniel.vetter@ffwll.ch -Cc: dri-devel@lists.freedesktop.org -Cc: alexander.deucher@amd.com -Cc: christian.koenig@amd.com ---- - drivers/gpu/drm/drm_irq.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c -index 055b0fa..8090989 100644 ---- a/drivers/gpu/drm/drm_irq.c -+++ b/drivers/gpu/drm/drm_irq.c -@@ -1494,8 +1494,7 @@ void drm_vblank_on(struct drm_device *dev, unsigned int pipe) - * re-enable interrupts if there are users left, or the - * user wishes vblank interrupts to be enabled all the time. - */ -- if (atomic_read(&vblank->refcount) != 0 || -- (!dev->vblank_disable_immediate && drm_vblank_offdelay == 0)) -+ if (atomic_read(&vblank->refcount) != 0 || drm_vblank_offdelay == 0) - WARN_ON(drm_vblank_enable(dev, pipe)); - spin_unlock_irqrestore(&dev->vbl_lock, irqflags); - } --- -1.9.1 - diff --git a/kernel/kernel/files/patches/mageia/gpu-drm-No-Op-redundant-calls-to-drm_vblank_off-v2.patch b/kernel/kernel/files/patches/mageia/gpu-drm-No-Op-redundant-calls-to-drm_vblank_off-v2.patch deleted file mode 100644 index 480c88ba..00000000 --- a/kernel/kernel/files/patches/mageia/gpu-drm-No-Op-redundant-calls-to-drm_vblank_off-v2.patch +++ /dev/null @@ -1,76 +0,0 @@ -From: Mario Kleiner -Subject: [PATCH 1/6] drm: No-Op redundant calls to drm_vblank_off() (v2) -Date: Fri, 12 Feb 2016 20:30:27 +0100 - -Otherwise if a kms driver calls into drm_vblank_off() more than once -before calling drm_vblank_on() again, the redundant calls to -vblank_disable_and_save() will call drm_update_vblank_count() -while hw vblank counters and vblank timestamping are in a undefined -state during modesets, dpms off etc. - -At least with the legacy drm helpers it is not unusual to -get multiple calls to drm_vblank_off and drm_vblank_on, e.g., -half a dozen calls to drm_vblank_off and two calls to drm_vblank_on -were observed on radeon-kms during dpms-off -> dpms-on transition. - -We don't no-op calls from atomic modesetting drivers, as they -should do a proper job of tracking hw state. - -Fixes large jumps of the software maintained vblank counter due to -the hardware vblank counter resetting to zero during dpms off or -modeset, e.g., if radeon-kms is modified to use drm_vblank_off/on -instead of drm_vblank_pre/post_modeset(). - -This fixes a regression caused by the changes made to -drm_update_vblank_count() in Linux 4.4. - -v2: Don't no-op on atomic modesetting drivers, per suggestion - of Daniel Vetter. - -Signed-off-by: Mario Kleiner -Reviewed-by: Daniel Vetter - -Cc: # 4.4+ -Cc: michel@daenzer.net -Cc: vbabka@suse.cz -Cc: ville.syrjala@linux.intel.com -Cc: daniel.vetter@ffwll.ch -Cc: dri-devel@lists.freedesktop.org -Cc: alexander.deucher@amd.com -Cc: christian.koenig@amd.com ---- - drivers/gpu/drm/drm_irq.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c -index 607f493..1a18033 100644 ---- a/drivers/gpu/drm/drm_irq.c -+++ b/drivers/gpu/drm/drm_irq.c -@@ -1313,7 +1313,13 @@ void drm_vblank_off(struct drm_device *dev, unsigned int pipe) - spin_lock_irqsave(&dev->event_lock, irqflags); - - spin_lock(&dev->vbl_lock); -- vblank_disable_and_save(dev, pipe); -+ DRM_DEBUG_VBL("crtc %d, vblank enabled %d, inmodeset %d\n", -+ pipe, vblank->enabled, vblank->inmodeset); -+ -+ /* Avoid redundant vblank disables without previous drm_vblank_on(). */ -+ if (drm_core_check_feature(dev, DRIVER_ATOMIC) || !vblank->inmodeset) -+ vblank_disable_and_save(dev, pipe); -+ - wake_up(&vblank->queue); - - /* -@@ -1415,6 +1421,9 @@ void drm_vblank_on(struct drm_device *dev, unsigned int pipe) - return; - - spin_lock_irqsave(&dev->vbl_lock, irqflags); -+ DRM_DEBUG_VBL("crtc %d, vblank enabled %d, inmodeset %d\n", -+ pipe, vblank->enabled, vblank->inmodeset); -+ - /* Drop our private "prevent drm_vblank_get" refcount */ - if (vblank->inmodeset) { - atomic_dec(&vblank->refcount); --- -1.9.1 - diff --git a/kernel/kernel/files/patches/mageia/gpu-drm-Prevent-vblank-counter-bumps-1-with-active-vblank-clients-v2.patch b/kernel/kernel/files/patches/mageia/gpu-drm-Prevent-vblank-counter-bumps-1-with-active-vblank-clients-v2.patch deleted file mode 100644 index c65efe96..00000000 --- a/kernel/kernel/files/patches/mageia/gpu-drm-Prevent-vblank-counter-bumps-1-with-active-vblank-clients-v2.patch +++ /dev/null @@ -1,120 +0,0 @@ -From: Mario Kleiner -Subject: [PATCH 2/6] drm: Prevent vblank counter bumps > 1 with active vblank clients. (v2) -Date: Fri, 12 Feb 2016 20:30:28 +0100 - -This fixes a regression introduced by the new drm_update_vblank_count() -implementation in Linux 4.4: - -Restrict the bump of the software vblank counter in drm_update_vblank_count() -to a safe maximum value of +1 whenever there is the possibility that -concurrent readers of vblank timestamps could be active at the moment, -as the current implementation of the timestamp caching and updating is -not safe against concurrent readers for calls to store_vblank() with a -bump of anything but +1. A bump != 1 would very likely return corrupted -timestamps to userspace, because the same slot in the cache could -be concurrently written by store_vblank() and read by one of those -readers in a non-atomic fashion and without the read-retry logic -detecting this collision. - -Concurrent readers can exist while drm_update_vblank_count() is called -from the drm_vblank_off() or drm_vblank_on() functions or other non-vblank- -irq callers. However, all those calls are happening with the vbl_lock -locked thereby preventing a drm_vblank_get(), so the vblank refcount -can't increase while drm_update_vblank_count() is executing. Therefore -a zero vblank refcount during execution of that function signals that -is safe for arbitrary counter bumps if called from outside vblank irq, -whereas a non-zero count is not safe. - -Whenever the function is called from vblank irq, we have to assume concurrent -readers could show up any time during its execution, even if the refcount -is currently zero, as vblank irqs are usually only enabled due to the -presence of readers, and because when it is called from vblank irq it -can't hold the vbl_lock to protect it from sudden bumps in vblank refcount. -Therefore also restrict bumps to +1 when the function is called from vblank -irq. - -Such bumps of more than +1 can happen at other times than reenabling -vblank irqs, e.g., when regular vblank interrupts get delayed by more -than 1 frame due to long held locks, long irq off periods, realtime -preemption on RT kernels, or system management interrupts. - -A better solution would be to rewrite the timestamp caching to use -full seqlocks to allow concurrent writes and reads for arbitrary -vblank counter increments. - -v2: Add code comment that this is essentially a hack and should - be replaced by a full seqlock implementation for caching of - timestamps. - -Signed-off-by: Mario Kleiner -Reviewed-by: Daniel Vetter - -Cc: # 4.4+ -Cc: michel@daenzer.net -Cc: vbabka@suse.cz -Cc: ville.syrjala@linux.intel.com -Cc: daniel.vetter@ffwll.ch -Cc: dri-devel@lists.freedesktop.org -Cc: alexander.deucher@amd.com -Cc: christian.koenig@amd.com ---- - drivers/gpu/drm/drm_irq.c | 43 +++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 43 insertions(+) - -diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c -index 1a18033..92ad62f 100644 ---- a/drivers/gpu/drm/drm_irq.c -+++ b/drivers/gpu/drm/drm_irq.c -@@ -221,6 +221,49 @@ static void drm_update_vblank_count(struct drm_device *dev, unsigned int pipe, - diff = (flags & DRM_CALLED_FROM_VBLIRQ) != 0; - } - -+ /* -+ * FIMXE: Need to replace this hack with proper seqlocks. -+ * -+ * Restrict the bump of the software vblank counter to a safe maximum -+ * value of +1 whenever there is the possibility that concurrent readers -+ * of vblank timestamps could be active at the moment, as the current -+ * implementation of the timestamp caching and updating is not safe -+ * against concurrent readers for calls to store_vblank() with a bump -+ * of anything but +1. A bump != 1 would very likely return corrupted -+ * timestamps to userspace, because the same slot in the cache could -+ * be concurrently written by store_vblank() and read by one of those -+ * readers without the read-retry logic detecting the collision. -+ * -+ * Concurrent readers can exist when we are called from the -+ * drm_vblank_off() or drm_vblank_on() functions and other non-vblank- -+ * irq callers. However, all those calls to us are happening with the -+ * vbl_lock locked to prevent drm_vblank_get(), so the vblank refcount -+ * can't increase while we are executing. Therefore a zero refcount at -+ * this point is safe for arbitrary counter bumps if we are called -+ * outside vblank irq, a non-zero count is not 100% safe. Unfortunately -+ * we must also accept a refcount of 1, as whenever we are called from -+ * drm_vblank_get() -> drm_vblank_enable() the refcount will be 1 and -+ * we must let that one pass through in order to not lose vblank counts -+ * during vblank irq off - which would completely defeat the whole -+ * point of this routine. -+ * -+ * Whenever we are called from vblank irq, we have to assume concurrent -+ * readers exist or can show up any time during our execution, even if -+ * the refcount is currently zero, as vblank irqs are usually only -+ * enabled due to the presence of readers, and because when we are called -+ * from vblank irq we can't hold the vbl_lock to protect us from sudden -+ * bumps in vblank refcount. Therefore also restrict bumps to +1 when -+ * called from vblank irq. -+ */ -+ if ((diff > 1) && (atomic_read(&vblank->refcount) > 1 || -+ (flags & DRM_CALLED_FROM_VBLIRQ))) { -+ DRM_DEBUG_VBL("clamping vblank bump to 1 on crtc %u: diffr=%u " -+ "refcount %u, vblirq %u\n", pipe, diff, -+ atomic_read(&vblank->refcount), -+ (flags & DRM_CALLED_FROM_VBLIRQ) != 0); -+ diff = 1; -+ } -+ - DRM_DEBUG_VBL("updating vblank count on crtc %u:" - " current=%u, diff=%u, hw=%u hw_last=%u\n", - pipe, vblank->count, diff, cur_vblank, vblank->last); --- -1.9.1 - diff --git a/kernel/kernel/files/patches/mageia/gpu-drm_nouveau_display-Enable-vblank-irqs-after-display-engine-is-on-again.patch b/kernel/kernel/files/patches/mageia/gpu-drm_nouveau_display-Enable-vblank-irqs-after-display-engine-is-on-again.patch deleted file mode 100644 index 1db4ce1c..00000000 --- a/kernel/kernel/files/patches/mageia/gpu-drm_nouveau_display-Enable-vblank-irqs-after-display-engine-is-on-again.patch +++ /dev/null @@ -1,57 +0,0 @@ -From: Mario Kleiner -Subject: [PATCH 6/6] drm/nouveau/display: Enable vblank irqs after display engine is on again. -Date: Fri, 12 Feb 2016 20:30:32 +0100 - -In the display resume path, move the calls to drm_vblank_on() -after the point when the display engine is running again. - -Since changes were made to drm_update_vblank_count() in Linux 4.4+ -to emulate hw vblank counters via vblank timestamping, the function -drm_vblank_on() now needs working high precision vblank timestamping -and therefore working scanout position queries at time of call. -These don't work before the display engine gets restarted, causing -miscalculation of vblank counter increments and thereby large forward -jumps in vblank count at display resume. These jumps can cause client -hangs on resume, or desktop hangs in the case of composited desktops. - -Fix this Linux 4.4 regression by reordering calls accordingly. - -Signed-off-by: Mario Kleiner -Cc: # 4.4+ -Cc: Ben Skeggs -Cc: ville.syrjala@linux.intel.com -Cc: daniel.vetter@ffwll.ch -Cc: dri-devel@lists.freedesktop.org ---- - drivers/gpu/drm/nouveau/nouveau_display.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c -index 18676b8..1f8e51b 100644 ---- a/drivers/gpu/drm/nouveau/nouveau_display.c -+++ b/drivers/gpu/drm/nouveau/nouveau_display.c -@@ -634,10 +634,6 @@ nouveau_display_resume(struct drm_device *dev, bool runtime) - nv_crtc->lut.depth = 0; - } - -- /* Make sure that drm and hw vblank irqs get resumed if needed. */ -- for (head = 0; head < dev->mode_config.num_crtc; head++) -- drm_vblank_on(dev, head); -- - /* This should ensure we don't hit a locking problem when someone - * wakes us up via a connector. We should never go into suspend - * while the display is on anyways. -@@ -647,6 +643,10 @@ nouveau_display_resume(struct drm_device *dev, bool runtime) - - drm_helper_resume_force_mode(dev); - -+ /* Make sure that drm and hw vblank irqs get resumed if needed. */ -+ for (head = 0; head < dev->mode_config.num_crtc; head++) -+ drm_vblank_on(dev, head); -+ - list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { - struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); - --- -1.9.1 - diff --git a/kernel/kernel/files/patches/mageia/libata-Align-ata_device-s-id-on-a-cacheline.patch b/kernel/kernel/files/patches/mageia/libata-Align-ata_device-s-id-on-a-cacheline.patch new file mode 100644 index 00000000..2892b5f1 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/libata-Align-ata_device-s-id-on-a-cacheline.patch @@ -0,0 +1,39 @@ +From 4ee34ea3a12396f35b26d90a094c75db95080baa Mon Sep 17 00:00:00 2001 +From: Harvey Hunt +Date: Wed, 24 Feb 2016 15:16:43 +0000 +Subject: [PATCH] libata: Align ata_device's id on a cacheline + +The id buffer in ata_device is a DMA target, but it isn't explicitly +cacheline aligned. Due to this, adjacent fields can be overwritten with +stale data from memory on non coherent architectures. As a result, the +kernel is sometimes unable to communicate with an ATA device. + +Fix this by ensuring that the id buffer is cacheline aligned. + +This issue is similar to that fixed by Commit 84bda12af31f +("libata: align ap->sector_buf"). + +Signed-off-by: Harvey Hunt +Cc: linux-kernel@vger.kernel.org +Cc: # 2.6.18 +Signed-off-by: Tejun Heo +--- + include/linux/libata.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/linux/libata.h b/include/linux/libata.h +index bec2abb..2c4ebef 100644 +--- a/include/linux/libata.h ++++ b/include/linux/libata.h +@@ -720,7 +720,7 @@ struct ata_device { + union { + u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ + u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ +- }; ++ } ____cacheline_aligned; + + /* DEVSLP Timing Variables from Identify Device Data Log */ + u8 devslp_timing[ATA_LOG_DEVSLP_SIZE]; +-- +2.7.2 + diff --git a/kernel/kernel/files/patches/mageia/libata-fix-HDIO_GET_32BIT-ioctl.patch b/kernel/kernel/files/patches/mageia/libata-fix-HDIO_GET_32BIT-ioctl.patch new file mode 100644 index 00000000..b6a453cf --- /dev/null +++ b/kernel/kernel/files/patches/mageia/libata-fix-HDIO_GET_32BIT-ioctl.patch @@ -0,0 +1,98 @@ +From 287e6611ab1eac76c2c5ebf6e345e04c80ca9c61 Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Thu, 11 Feb 2016 14:16:27 +0100 +Subject: [PATCH] libata: fix HDIO_GET_32BIT ioctl + +As reported by Soohoon Lee, the HDIO_GET_32BIT ioctl does not +work correctly in compat mode with libata. + +I have investigated the issue further and found multiple problems +that all appeared with the same commit that originally introduced +HDIO_GET_32BIT handling in libata back in linux-2.6.8 and presumably +also linux-2.4, as the code uses "copy_to_user(arg, &val, 1)" to copy +a 'long' variable containing either 0 or 1 to user space. + +The problems with this are: + +* On big-endian machines, this will always write a zero because it + stores the wrong byte into user space. + +* In compat mode, the upper three bytes of the variable are updated + by the compat_hdio_ioctl() function, but they now contain + uninitialized stack data. + +* The hdparm tool calling this ioctl uses a 'static long' variable + to store the result. This means at least the upper bytes are + initialized to zero, but calling another ioctl like HDIO_GET_MULTCOUNT + would fill them with data that remains stale when the low byte + is overwritten. Fortunately libata doesn't implement any of the + affected ioctl commands, so this would only happen when we query + both an IDE and an ATA device in the same command such as + "hdparm -N -c /dev/hda /dev/sda" + +* The libata code for unknown reasons started using ATA_IOC_GET_IO32 + and ATA_IOC_SET_IO32 as aliases for HDIO_GET_32BIT and HDIO_SET_32BIT, + while the ioctl commands that were added later use the normal + HDIO_* names. This is harmless but rather confusing. + +This addresses all four issues by changing the code to use put_user() +on an 'unsigned long' variable in HDIO_GET_32BIT, like the IDE subsystem +does, and by clarifying the names of the ioctl commands. + +Signed-off-by: Arnd Bergmann +Reported-by: Soohoon Lee +Tested-by: Soohoon Lee +Cc: stable@vger.kernel.org +Signed-off-by: Tejun Heo +--- + drivers/ata/libata-scsi.c | 11 +++++------ + include/linux/ata.h | 4 ++-- + 2 files changed, 7 insertions(+), 8 deletions(-) + +diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c +index 7e959f9..e417e1a 100644 +--- a/drivers/ata/libata-scsi.c ++++ b/drivers/ata/libata-scsi.c +@@ -675,19 +675,18 @@ static int ata_ioc32(struct ata_port *ap) + int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *scsidev, + int cmd, void __user *arg) + { +- int val = -EINVAL, rc = -EINVAL; ++ unsigned long val; ++ int rc = -EINVAL; + unsigned long flags; + + switch (cmd) { +- case ATA_IOC_GET_IO32: ++ case HDIO_GET_32BIT: + spin_lock_irqsave(ap->lock, flags); + val = ata_ioc32(ap); + spin_unlock_irqrestore(ap->lock, flags); +- if (copy_to_user(arg, &val, 1)) +- return -EFAULT; +- return 0; ++ return put_user(val, (unsigned long __user *)arg); + +- case ATA_IOC_SET_IO32: ++ case HDIO_SET_32BIT: + val = (unsigned long) arg; + rc = 0; + spin_lock_irqsave(ap->lock, flags); +diff --git a/include/linux/ata.h b/include/linux/ata.h +index d2992bf..c1a2f34 100644 +--- a/include/linux/ata.h ++++ b/include/linux/ata.h +@@ -487,8 +487,8 @@ enum ata_tf_protocols { + }; + + enum ata_ioctls { +- ATA_IOC_GET_IO32 = 0x309, +- ATA_IOC_SET_IO32 = 0x324, ++ ATA_IOC_GET_IO32 = 0x309, /* HDIO_GET_32BIT */ ++ ATA_IOC_SET_IO32 = 0x324, /* HDIO_SET_32BIT */ + }; + + /* core structures */ +-- +2.7.2 + diff --git a/kernel/kernel/files/patches/mageia/series b/kernel/kernel/files/patches/mageia/series index 331e7847..9a73c795 100644 --- a/kernel/kernel/files/patches/mageia/series +++ b/kernel/kernel/files/patches/mageia/series @@ -14,6 +14,27 @@ ### ### Stable Queue ### +stable-use-d_seq-to-get-coherency-between-d_inode-and-d_flags.patch +stable-drivers-sh-restore-legacy-clock-domain-on-superh-platforms.patch +stable-btrfs-fix-deadlock-running-delayed-iputs-at-transaction-commit-time.patch +stable-btrfs-fix-no_space-in-write-and-rm-loop.patch +stable-btrfs-async-thread-fix-a-use-after-free-error-for-trace.patch +stable-drm-amdgpu-mask-out-wc-from-bo-on-unsupported-arches.patch +stable-block-initialize-max_dev_sectors-to-0.patch +stable-pci-keystone-fix-msi-code-that-retrieves-struct-pcie_port-pointer.patch +stable-parisc-fix-ptrace-syscall-number-and-return-value-modification.patch +stable-mips-kvm-fix-ioctl-error-handling.patch +stable-kvm-x86-update-tsc-multiplier-on-change.patch +stable-fbcon-set-a-default-value-to-blink-interval.patch +stable-cifs-fix-out-of-bounds-access-in-lease-parsing.patch +stable-cifs-fix-smb2-interim-response-processing-for-read-requests.patch +stable-fix-cifs_uniqueid_to_ino_t-function-for-s390x.patch +stable-vfio-fix-ioctl-error-handling.patch +stable-kvm-x86-fix-root-cause-for-missed-hardware-breakpoints.patch +stable-arm-arm64-kvm-fix-ioctl-error-handling.patch +stable-iommu-amd-apply-workaround-for-ats-write-permission-check.patch +stable-iommu-amd-fix-boot-warning-when-device-00-00.0-is-not-iommu-covered.patch +stable-iommu-vt-d-use-bus_notify_removed_device-in-hotplug-path.patch ### ### Arch x86 @@ -121,6 +142,14 @@ block-Make-CFQ-default-to-IOPS-mode-on-SSDs.patch # ahci ids ahci-add-new-Intel-device-IDs.patch +ata-Adding-Intel-Lewisburg-device-IDs-for-SATA.patch + +# fix unwanted automounting of partitions +ata-ahci-don-t-mark-HotPlugCapable-Ports-as-external.patch + +# libata fixes +libata-Align-ata_device-s-id-on-a-cacheline.patch +libata-fix-HDIO_GET_32BIT-ioctl.patch ### ### File-system @@ -131,15 +160,7 @@ fs-aufs-4.4.patch fs-aufs-4.4-modular.patch # ovl fixes -fs-ovl-allow-zero-size-xattr.patch -fs-ovl-use-a-minimal-buffer-in-ovl_copy_xattr.patch fs-ovl-move-super-block-magic-number-to-magic.h.patch -fs-ovl-root-copy-attr.patch -fs-ovl-setattr-check-permissions-before-copy-up.patch -fs-ovl-check-dentry-positiveness-in-ovl_cleanup_whiteou.patch - -# xfs trace fix (mga#17489) -fs-xfs-Revert-xfs-clear-PF_NOFREEZE-for-xfsaild-kthread.patch ### ### FireWire @@ -200,13 +221,6 @@ gpu-drm-0109-drm-vc4-Add-an-interface-for-capturing-the-GPU-state.patch gpu-drm-radeon-Update-radeon_get_vblank_counter_kms.patch gpu-drm-radeon-Drop-unnecessary-unsigned-int-0-check.patch -# vblank fixes -gpu-drm-No-Op-redundant-calls-to-drm_vblank_off-v2.patch -gpu-drm-Prevent-vblank-counter-bumps-1-with-active-vblank-clients-v2.patch -gpu-drm-Fix-drm_vblank_pre_post_modeset-regression-from-Linux-4.4.patch -gpu-drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vblank_on-v2.patch -gpu-drm_nouveau_display-Enable-vblank-irqs-after-display-engine-is-on-again.patch - ### ### Hardware Monitoring ### @@ -402,3 +416,7 @@ arm-0032-ARM-bcm2835-enable-auxiliary-spi-driver-in-defconfig.patch ### ### Tools ### + +### +### UAPI +### diff --git a/kernel/kernel/files/patches/mageia/stable-arm-arm64-kvm-fix-ioctl-error-handling.patch b/kernel/kernel/files/patches/mageia/stable-arm-arm64-kvm-fix-ioctl-error-handling.patch new file mode 100644 index 00000000..507fd847 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-arm-arm64-kvm-fix-ioctl-error-handling.patch @@ -0,0 +1,51 @@ +From 4cad67fca3fc952d6f2ed9e799621f07666a560f Mon Sep 17 00:00:00 2001 +From: "Michael S. Tsirkin" +Date: Sun, 28 Feb 2016 17:32:07 +0200 +Subject: arm/arm64: KVM: Fix ioctl error handling + +From: Michael S. Tsirkin + +commit 4cad67fca3fc952d6f2ed9e799621f07666a560f upstream. + +Calling return copy_to_user(...) in an ioctl will not +do the right thing if there's a pagefault: +copy_to_user returns the number of bytes not copied +in this case. + +Fix up kvm to do + return copy_to_user(...)) ? -EFAULT : 0; + +everywhere. + +Acked-by: Christoffer Dall +Signed-off-by: Michael S. Tsirkin +Signed-off-by: Marc Zyngier +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/kvm/guest.c | 2 +- + arch/arm64/kvm/guest.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/arm/kvm/guest.c ++++ b/arch/arm/kvm/guest.c +@@ -155,7 +155,7 @@ static int get_timer_reg(struct kvm_vcpu + u64 val; + + val = kvm_arm_timer_get_reg(vcpu, reg->id); +- return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)); ++ return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)) ? -EFAULT : 0; + } + + static unsigned long num_core_regs(void) +--- a/arch/arm64/kvm/guest.c ++++ b/arch/arm64/kvm/guest.c +@@ -186,7 +186,7 @@ static int get_timer_reg(struct kvm_vcpu + u64 val; + + val = kvm_arm_timer_get_reg(vcpu, reg->id); +- return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)); ++ return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)) ? -EFAULT : 0; + } + + /** diff --git a/kernel/kernel/files/patches/mageia/stable-block-initialize-max_dev_sectors-to-0.patch b/kernel/kernel/files/patches/mageia/stable-block-initialize-max_dev_sectors-to-0.patch new file mode 100644 index 00000000..9546bf7a --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-block-initialize-max_dev_sectors-to-0.patch @@ -0,0 +1,36 @@ +From 5f009d3f8e6685fe8c6215082c1696a08b411220 Mon Sep 17 00:00:00 2001 +From: Keith Busch +Date: Wed, 10 Feb 2016 16:52:47 -0700 +Subject: block: Initialize max_dev_sectors to 0 + +From: Keith Busch + +commit 5f009d3f8e6685fe8c6215082c1696a08b411220 upstream. + +The new queue limit is not used by the majority of block drivers, and +should be initialized to 0 for the driver's requested settings to be used. + +Signed-off-by: Keith Busch +Acked-by: Martin K. Petersen +Reviewed-by: Sagi Grimberg +Reviewed-by: Christoph Hellwig +Signed-off-by: Jens Axboe +Signed-off-by: Greg Kroah-Hartman + +--- + block/blk-settings.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/block/blk-settings.c ++++ b/block/blk-settings.c +@@ -91,8 +91,8 @@ void blk_set_default_limits(struct queue + lim->seg_boundary_mask = BLK_SEG_BOUNDARY_MASK; + lim->virt_boundary_mask = 0; + lim->max_segment_size = BLK_MAX_SEGMENT_SIZE; +- lim->max_sectors = lim->max_dev_sectors = lim->max_hw_sectors = +- BLK_SAFE_MAX_SECTORS; ++ lim->max_sectors = lim->max_hw_sectors = BLK_SAFE_MAX_SECTORS; ++ lim->max_dev_sectors = 0; + lim->chunk_sectors = 0; + lim->max_write_same_sectors = 0; + lim->max_discard_sectors = 0; diff --git a/kernel/kernel/files/patches/mageia/stable-btrfs-async-thread-fix-a-use-after-free-error-for-trace.patch b/kernel/kernel/files/patches/mageia/stable-btrfs-async-thread-fix-a-use-after-free-error-for-trace.patch new file mode 100644 index 00000000..25c4845c --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-btrfs-async-thread-fix-a-use-after-free-error-for-trace.patch @@ -0,0 +1,36 @@ +From 0a95b851370b84a4b9d92ee6d1fa0926901d0454 Mon Sep 17 00:00:00 2001 +From: Qu Wenruo +Date: Fri, 22 Jan 2016 09:28:38 +0800 +Subject: btrfs: async-thread: Fix a use-after-free error for trace + +From: Qu Wenruo + +commit 0a95b851370b84a4b9d92ee6d1fa0926901d0454 upstream. + +Parameter of trace_btrfs_work_queued() can be freed in its workqueue. +So no one use use that pointer after queue_work(). + +Fix the user-after-free bug by move the trace line before queue_work(). + +Reported-by: Dave Jones +Signed-off-by: Qu Wenruo +Reviewed-by: David Sterba +Signed-off-by: Chris Mason +Signed-off-by: Greg Kroah-Hartman + +--- + fs/btrfs/async-thread.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/btrfs/async-thread.c ++++ b/fs/btrfs/async-thread.c +@@ -328,8 +328,8 @@ static inline void __btrfs_queue_work(st + list_add_tail(&work->ordered_list, &wq->ordered_list); + spin_unlock_irqrestore(&wq->list_lock, flags); + } +- queue_work(wq->normal_wq, &work->normal_work); + trace_btrfs_work_queued(work); ++ queue_work(wq->normal_wq, &work->normal_work); + } + + void btrfs_queue_work(struct btrfs_workqueue *wq, diff --git a/kernel/kernel/files/patches/mageia/stable-btrfs-fix-deadlock-running-delayed-iputs-at-transaction-commit-time.patch b/kernel/kernel/files/patches/mageia/stable-btrfs-fix-deadlock-running-delayed-iputs-at-transaction-commit-time.patch new file mode 100644 index 00000000..2519f320 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-btrfs-fix-deadlock-running-delayed-iputs-at-transaction-commit-time.patch @@ -0,0 +1,238 @@ +From c2d6cb1636d235257086f939a8194ef0bf93af6e Mon Sep 17 00:00:00 2001 +From: Filipe Manana +Date: Fri, 15 Jan 2016 11:05:12 +0000 +Subject: Btrfs: fix deadlock running delayed iputs at transaction commit time + +From: Filipe Manana + +commit c2d6cb1636d235257086f939a8194ef0bf93af6e upstream. + +While running a stress test I ran into a deadlock when running the delayed +iputs at transaction time, which produced the following report and trace: + +[ 886.399989] ============================================= +[ 886.400871] [ INFO: possible recursive locking detected ] +[ 886.401663] 4.4.0-rc6-btrfs-next-18+ #1 Not tainted +[ 886.402384] --------------------------------------------- +[ 886.403182] fio/8277 is trying to acquire lock: +[ 886.403568] (&fs_info->delayed_iput_sem){++++..}, at: [] btrfs_run_delayed_iputs+0x36/0xbf [btrfs] +[ 886.403568] +[ 886.403568] but task is already holding lock: +[ 886.403568] (&fs_info->delayed_iput_sem){++++..}, at: [] btrfs_run_delayed_iputs+0x36/0xbf [btrfs] +[ 886.403568] +[ 886.403568] other info that might help us debug this: +[ 886.403568] Possible unsafe locking scenario: +[ 886.403568] +[ 886.403568] CPU0 +[ 886.403568] ---- +[ 886.403568] lock(&fs_info->delayed_iput_sem); +[ 886.403568] lock(&fs_info->delayed_iput_sem); +[ 886.403568] +[ 886.403568] *** DEADLOCK *** +[ 886.403568] +[ 886.403568] May be due to missing lock nesting notation +[ 886.403568] +[ 886.403568] 3 locks held by fio/8277: +[ 886.403568] #0: (sb_writers#11){.+.+.+}, at: [] __sb_start_write+0x5f/0xb0 +[ 886.403568] #1: (&sb->s_type->i_mutex_key#15){+.+.+.}, at: [] btrfs_file_write_iter+0x73/0x408 [btrfs] +[ 886.403568] #2: (&fs_info->delayed_iput_sem){++++..}, at: [] btrfs_run_delayed_iputs+0x36/0xbf [btrfs] +[ 886.403568] +[ 886.403568] stack backtrace: +[ 886.403568] CPU: 6 PID: 8277 Comm: fio Not tainted 4.4.0-rc6-btrfs-next-18+ #1 +[ 886.403568] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS by qemu-project.org 04/01/2014 +[ 886.403568] 0000000000000000 ffff88009f80f770 ffffffff8125d4fd ffffffff82af1fc0 +[ 886.403568] ffff88009f80f830 ffffffff8108e5f9 0000000200000000 ffff88009fd92290 +[ 886.403568] 0000000000000000 ffffffff82af1fc0 ffffffff829cfb01 00042b216d008804 +[ 886.403568] Call Trace: +[ 886.403568] [] dump_stack+0x4e/0x79 +[ 886.403568] [] __lock_acquire+0xd42/0xf0b +[ 886.403568] [] ? __module_address+0xdf/0x108 +[ 886.403568] [] lock_acquire+0x10d/0x194 +[ 886.403568] [] ? lock_acquire+0x10d/0x194 +[ 886.403568] [] ? btrfs_run_delayed_iputs+0x36/0xbf [btrfs] +[ 886.489542] [] down_read+0x3e/0x4d +[ 886.489542] [] ? btrfs_run_delayed_iputs+0x36/0xbf [btrfs] +[ 886.489542] [] btrfs_run_delayed_iputs+0x36/0xbf [btrfs] +[ 886.489542] [] btrfs_commit_transaction+0x8f5/0x96e [btrfs] +[ 886.489542] [] flush_space+0x435/0x44a [btrfs] +[ 886.489542] [] ? reserve_metadata_bytes+0x26a/0x384 [btrfs] +[ 886.489542] [] reserve_metadata_bytes+0x28d/0x384 [btrfs] +[ 886.489542] [] ? btrfs_block_rsv_refill+0x58/0x96 [btrfs] +[ 886.489542] [] btrfs_block_rsv_refill+0x70/0x96 [btrfs] +[ 886.489542] [] btrfs_evict_inode+0x394/0x55a [btrfs] +[ 886.489542] [] evict+0xa7/0x15c +[ 886.489542] [] iput+0x1d3/0x266 +[ 886.489542] [] btrfs_run_delayed_iputs+0x8f/0xbf [btrfs] +[ 886.489542] [] btrfs_commit_transaction+0x8f5/0x96e [btrfs] +[ 886.489542] [] ? signal_pending_state+0x31/0x31 +[ 886.489542] [] btrfs_alloc_data_chunk_ondemand+0x1d7/0x288 [btrfs] +[ 886.489542] [] btrfs_check_data_free_space+0x40/0x59 [btrfs] +[ 886.489542] [] btrfs_delalloc_reserve_space+0x1e/0x4e [btrfs] +[ 886.489542] [] btrfs_direct_IO+0x10c/0x27e [btrfs] +[ 886.489542] [] generic_file_direct_write+0xb3/0x128 +[ 886.489542] [] btrfs_file_write_iter+0x229/0x408 [btrfs] +[ 886.489542] [] ? __lock_is_held+0x38/0x50 +[ 886.489542] [] __vfs_write+0x7c/0xa5 +[ 886.489542] [] vfs_write+0xa0/0xe4 +[ 886.489542] [] SyS_write+0x50/0x7e +[ 886.489542] [] entry_SYSCALL_64_fastpath+0x12/0x6f +[ 1081.852335] INFO: task fio:8244 blocked for more than 120 seconds. +[ 1081.854348] Not tainted 4.4.0-rc6-btrfs-next-18+ #1 +[ 1081.857560] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. +[ 1081.863227] fio D ffff880213f9bb28 0 8244 8240 0x00000000 +[ 1081.868719] ffff880213f9bb28 00ffffff810fc6b0 ffffffff0000000a ffff88023ed55240 +[ 1081.872499] ffff880206b5d400 ffff880213f9c000 ffff88020a4d5318 ffff880206b5d400 +[ 1081.876834] ffffffff00000001 ffff880206b5d400 ffff880213f9bb40 ffffffff81482ba4 +[ 1081.880782] Call Trace: +[ 1081.881793] [] schedule+0x7f/0x97 +[ 1081.883340] [] rwsem_down_write_failed+0x2d5/0x325 +[ 1081.895525] [] ? trace_hardirqs_on_caller+0x16/0x1ab +[ 1081.897419] [] call_rwsem_down_write_failed+0x13/0x20 +[ 1081.899251] [] ? call_rwsem_down_write_failed+0x13/0x20 +[ 1081.901063] [] ? __down_write_nested.isra.0+0x1f/0x21 +[ 1081.902365] [] down_write+0x43/0x57 +[ 1081.903846] [] ? btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs] +[ 1081.906078] [] btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs] +[ 1081.908846] [] ? mark_held_locks+0x56/0x6c +[ 1081.910409] [] btrfs_check_data_free_space+0x40/0x59 [btrfs] +[ 1081.912482] [] btrfs_delalloc_reserve_space+0x1e/0x4e [btrfs] +[ 1081.914597] [] btrfs_direct_IO+0x10c/0x27e [btrfs] +[ 1081.919037] [] generic_file_direct_write+0xb3/0x128 +[ 1081.920754] [] btrfs_file_write_iter+0x229/0x408 [btrfs] +[ 1081.922496] [] ? __lock_is_held+0x38/0x50 +[ 1081.923922] [] __vfs_write+0x7c/0xa5 +[ 1081.925275] [] vfs_write+0xa0/0xe4 +[ 1081.926584] [] SyS_write+0x50/0x7e +[ 1081.927968] [] entry_SYSCALL_64_fastpath+0x12/0x6f +[ 1081.985293] INFO: lockdep is turned off. +[ 1081.986132] INFO: task fio:8249 blocked for more than 120 seconds. +[ 1081.987434] Not tainted 4.4.0-rc6-btrfs-next-18+ #1 +[ 1081.988534] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. +[ 1081.990147] fio D ffff880218febbb8 0 8249 8240 0x00000000 +[ 1081.991626] ffff880218febbb8 00ffffff81486b8e ffff88020000000b ffff88023ed75240 +[ 1081.993258] ffff8802120a9a00 ffff880218fec000 ffff88020a4d5318 ffff8802120a9a00 +[ 1081.994850] ffffffff00000001 ffff8802120a9a00 ffff880218febbd0 ffffffff81482ba4 +[ 1081.996485] Call Trace: +[ 1081.997037] [] schedule+0x7f/0x97 +[ 1081.998017] [] rwsem_down_write_failed+0x2d5/0x325 +[ 1081.999241] [] ? finish_wait+0x6d/0x76 +[ 1082.000306] [] call_rwsem_down_write_failed+0x13/0x20 +[ 1082.001533] [] ? call_rwsem_down_write_failed+0x13/0x20 +[ 1082.002776] [] ? __down_write_nested.isra.0+0x1f/0x21 +[ 1082.003995] [] down_write+0x43/0x57 +[ 1082.005000] [] ? btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs] +[ 1082.007403] [] btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs] +[ 1082.008988] [] btrfs_fallocate+0x7c1/0xc2f [btrfs] +[ 1082.010193] [] ? percpu_down_read+0x4e/0x77 +[ 1082.011280] [] ? __sb_start_write+0x5f/0xb0 +[ 1082.012265] [] ? __sb_start_write+0x5f/0xb0 +[ 1082.013021] [] vfs_fallocate+0x170/0x1ff +[ 1082.013738] [] ioctl_preallocate+0x89/0x9b +[ 1082.014778] [] do_vfs_ioctl+0x40a/0x4ea +[ 1082.015778] [] ? SYSC_newfstat+0x25/0x2e +[ 1082.016806] [] ? __fget_light+0x4d/0x71 +[ 1082.017789] [] SyS_ioctl+0x57/0x79 +[ 1082.018706] [] entry_SYSCALL_64_fastpath+0x12/0x6f + +This happens because we can recursively acquire the semaphore +fs_info->delayed_iput_sem when attempting to allocate space to satisfy +a file write request as shown in the first trace above - when committing +a transaction we acquire (down_read) the semaphore before running the +delayed iputs, and when running a delayed iput() we can end up calling +an inode's eviction handler, which in turn commits another transaction +and attempts to acquire (down_read) again the semaphore to run more +delayed iput operations. +This results in a deadlock because if a task acquires multiple times a +semaphore it should invoke down_read_nested() with a different lockdep +class for each level of recursion. + +Fix this by simplifying the implementation and use a mutex instead that +is acquired by the cleaner kthread before it runs the delayed iputs +instead of always acquiring a semaphore before delayed references are +run from anywhere. + +Fixes: d7c151717a1e (btrfs: Fix NO_SPACE bug caused by delayed-iput) +Signed-off-by: Filipe Manana +Signed-off-by: Chris Mason +Signed-off-by: Greg Kroah-Hartman + +--- + fs/btrfs/ctree.h | 2 +- + fs/btrfs/disk-io.c | 5 ++++- + fs/btrfs/extent-tree.c | 9 +++++---- + fs/btrfs/inode.c | 4 ---- + 4 files changed, 10 insertions(+), 10 deletions(-) + +--- a/fs/btrfs/ctree.h ++++ b/fs/btrfs/ctree.h +@@ -1572,7 +1572,7 @@ struct btrfs_fs_info { + + spinlock_t delayed_iput_lock; + struct list_head delayed_iputs; +- struct rw_semaphore delayed_iput_sem; ++ struct mutex cleaner_delayed_iput_mutex; + + /* this protects tree_mod_seq_list */ + spinlock_t tree_mod_seq_lock; +--- a/fs/btrfs/disk-io.c ++++ b/fs/btrfs/disk-io.c +@@ -1796,7 +1796,10 @@ static int cleaner_kthread(void *arg) + goto sleep; + } + ++ mutex_lock(&root->fs_info->cleaner_delayed_iput_mutex); + btrfs_run_delayed_iputs(root); ++ mutex_unlock(&root->fs_info->cleaner_delayed_iput_mutex); ++ + again = btrfs_clean_one_deleted_snapshot(root); + mutex_unlock(&root->fs_info->cleaner_mutex); + +@@ -2556,8 +2559,8 @@ int open_ctree(struct super_block *sb, + mutex_init(&fs_info->delete_unused_bgs_mutex); + mutex_init(&fs_info->reloc_mutex); + mutex_init(&fs_info->delalloc_root_mutex); ++ mutex_init(&fs_info->cleaner_delayed_iput_mutex); + seqlock_init(&fs_info->profiles_lock); +- init_rwsem(&fs_info->delayed_iput_sem); + + INIT_LIST_HEAD(&fs_info->dirty_cowonly_roots); + INIT_LIST_HEAD(&fs_info->space_info); +--- a/fs/btrfs/extent-tree.c ++++ b/fs/btrfs/extent-tree.c +@@ -4100,11 +4100,12 @@ commit_trans: + if (ret) + return ret; + /* +- * make sure that all running delayed iput are +- * done ++ * The cleaner kthread might still be doing iput ++ * operations. Wait for it to finish so that ++ * more space is released. + */ +- down_write(&root->fs_info->delayed_iput_sem); +- up_write(&root->fs_info->delayed_iput_sem); ++ mutex_lock(&root->fs_info->cleaner_delayed_iput_mutex); ++ mutex_unlock(&root->fs_info->cleaner_delayed_iput_mutex); + goto again; + } else { + btrfs_end_transaction(trans, root); +--- a/fs/btrfs/inode.c ++++ b/fs/btrfs/inode.c +@@ -3142,8 +3142,6 @@ void btrfs_run_delayed_iputs(struct btrf + if (empty) + return; + +- down_read(&fs_info->delayed_iput_sem); +- + spin_lock(&fs_info->delayed_iput_lock); + list_splice_init(&fs_info->delayed_iputs, &list); + spin_unlock(&fs_info->delayed_iput_lock); +@@ -3154,8 +3152,6 @@ void btrfs_run_delayed_iputs(struct btrf + iput(delayed->inode); + kfree(delayed); + } +- +- up_read(&root->fs_info->delayed_iput_sem); + } + + /* diff --git a/kernel/kernel/files/patches/mageia/stable-btrfs-fix-no_space-in-write-and-rm-loop.patch b/kernel/kernel/files/patches/mageia/stable-btrfs-fix-no_space-in-write-and-rm-loop.patch new file mode 100644 index 00000000..6197e535 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-btrfs-fix-no_space-in-write-and-rm-loop.patch @@ -0,0 +1,47 @@ +From e1746e8381cd2af421f75557b5cae3604fc18b35 Mon Sep 17 00:00:00 2001 +From: Zhao Lei +Date: Tue, 1 Dec 2015 18:39:40 +0800 +Subject: btrfs: Fix no_space in write and rm loop + +From: Zhao Lei + +commit e1746e8381cd2af421f75557b5cae3604fc18b35 upstream. + +I see no_space in v4.4-rc1 again in xfstests generic/102. +It happened randomly in some node only. +(one of 4 phy-node, and a kvm with non-virtio block driver) + +By bisect, we can found the first-bad is: + commit bdced438acd8 ("block: setup bi_phys_segments after splitting")' +But above patch only triggered the bug by making bio operation +faster(or slower). + +Main reason is in our space_allocating code, we need to commit +page writeback before wait it complish, this patch fixed above +bug. + +BTW, there is another reason for generic/102 fail, caused by +disable default mixed-blockgroup, I'll fix it in xfstests. + +Signed-off-by: Zhao Lei +Signed-off-by: Chris Mason +Signed-off-by: Greg Kroah-Hartman + +--- + fs/btrfs/extent-tree.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/fs/btrfs/extent-tree.c ++++ b/fs/btrfs/extent-tree.c +@@ -4086,8 +4086,10 @@ commit_trans: + !atomic_read(&root->fs_info->open_ioctl_trans)) { + need_commit--; + +- if (need_commit > 0) ++ if (need_commit > 0) { ++ btrfs_start_delalloc_roots(fs_info, 0, -1); + btrfs_wait_ordered_roots(fs_info, -1); ++ } + + trans = btrfs_join_transaction(root); + if (IS_ERR(trans)) diff --git a/kernel/kernel/files/patches/mageia/stable-cifs-fix-out-of-bounds-access-in-lease-parsing.patch b/kernel/kernel/files/patches/mageia/stable-cifs-fix-out-of-bounds-access-in-lease-parsing.patch new file mode 100644 index 00000000..f29a9f19 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-cifs-fix-out-of-bounds-access-in-lease-parsing.patch @@ -0,0 +1,104 @@ +From deb7deff2f00bdbbcb3d560dad2a89ef37df837d Mon Sep 17 00:00:00 2001 +From: Justin Maggard +Date: Tue, 9 Feb 2016 15:52:08 -0800 +Subject: cifs: fix out-of-bounds access in lease parsing + +From: Justin Maggard + +commit deb7deff2f00bdbbcb3d560dad2a89ef37df837d upstream. + +When opening a file, SMB2_open() attempts to parse the lease state from the +SMB2 CREATE Response. However, the parsing code was not careful to ensure +that the create contexts are not empty or invalid, which can lead to out- +of-bounds memory access. This can be seen easily by trying +to read a file from a OSX 10.11 SMB3 server. Here is sample crash output: + +BUG: unable to handle kernel paging request at ffff8800a1a77cc6 +IP: [] SMB2_open+0x804/0x960 +PGD 8f77067 PUD 0 +Oops: 0000 [#1] SMP +Modules linked in: +CPU: 3 PID: 2876 Comm: cp Not tainted 4.5.0-rc3.x86_64.1+ #14 +Hardware name: NETGEAR ReadyNAS 314 /ReadyNAS 314 , BIOS 4.6.5 10/11/2012 +task: ffff880073cdc080 ti: ffff88005b31c000 task.ti: ffff88005b31c000 +RIP: 0010:[] [] SMB2_open+0x804/0x960 +RSP: 0018:ffff88005b31fa08 EFLAGS: 00010282 +RAX: 0000000000000015 RBX: 0000000000000000 RCX: 0000000000000006 +RDX: 0000000000000000 RSI: 0000000000000246 RDI: ffff88007eb8c8b0 +RBP: ffff88005b31fad8 R08: 666666203d206363 R09: 6131613030383866 +R10: 3030383866666666 R11: 00000000000002b0 R12: ffff8800660fd800 +R13: ffff8800a1a77cc2 R14: 00000000424d53fe R15: ffff88005f5a28c0 +FS: 00007f7c8a2897c0(0000) GS:ffff88007eb80000(0000) knlGS:0000000000000000 +CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b +CR2: ffff8800a1a77cc6 CR3: 000000005b281000 CR4: 00000000000006e0 +Stack: + ffff88005b31fa70 ffffffff88278789 00000000000001d3 ffff88005f5a2a80 + ffffffff00000003 ffff88005d029d00 ffff88006fde05a0 0000000000000000 + ffff88005b31fc78 ffff88006fde0780 ffff88005b31fb2f 0000000100000fe0 +Call Trace: + [] ? cifsConvertToUTF16+0x159/0x2d0 + [] smb2_open_file+0x98/0x210 + [] ? __kmalloc+0x1c/0xe0 + [] cifs_open+0x2a4/0x720 + [] do_dentry_open+0x1ff/0x310 + [] ? cifsFileInfo_get+0x30/0x30 + [] vfs_open+0x52/0x60 + [] path_openat+0x170/0xf70 + [] ? remove_wait_queue+0x48/0x50 + [] do_filp_open+0x79/0xd0 + [] ? __alloc_fd+0x3a/0x170 + [] do_sys_open+0x114/0x1e0 + [] SyS_open+0x19/0x20 + [] entry_SYSCALL_64_fastpath+0x12/0x6a +Code: 4d 8d 6c 07 04 31 c0 4c 89 ee e8 47 6f e5 ff 31 c9 41 89 ce 44 89 f1 48 c7 c7 28 b1 bd 88 31 c0 49 01 cd 4c 89 ee e8 2b 6f e5 ff <45> 0f b7 75 04 48 c7 c7 31 b1 bd 88 31 c0 4d 01 ee 4c 89 f6 e8 +RIP [] SMB2_open+0x804/0x960 + RSP +CR2: ffff8800a1a77cc6 +---[ end trace d9f69ba64feee469 ]--- + +Signed-off-by: Justin Maggard +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman + +--- + fs/cifs/smb2pdu.c | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) + +--- a/fs/cifs/smb2pdu.c ++++ b/fs/cifs/smb2pdu.c +@@ -1109,21 +1109,25 @@ parse_lease_state(struct TCP_Server_Info + { + char *data_offset; + struct create_context *cc; +- unsigned int next = 0; ++ unsigned int next; ++ unsigned int remaining; + char *name; + + data_offset = (char *)rsp + 4 + le32_to_cpu(rsp->CreateContextsOffset); ++ remaining = le32_to_cpu(rsp->CreateContextsLength); + cc = (struct create_context *)data_offset; +- do { +- cc = (struct create_context *)((char *)cc + next); ++ while (remaining >= sizeof(struct create_context)) { + name = le16_to_cpu(cc->NameOffset) + (char *)cc; +- if (le16_to_cpu(cc->NameLength) != 4 || +- strncmp(name, "RqLs", 4)) { +- next = le32_to_cpu(cc->Next); +- continue; +- } +- return server->ops->parse_lease_buf(cc, epoch); +- } while (next != 0); ++ if (le16_to_cpu(cc->NameLength) == 4 && ++ strncmp(name, "RqLs", 4) == 0) ++ return server->ops->parse_lease_buf(cc, epoch); ++ ++ next = le32_to_cpu(cc->Next); ++ if (!next) ++ break; ++ remaining -= next; ++ cc = (struct create_context *)((char *)cc + next); ++ } + + return 0; + } diff --git a/kernel/kernel/files/patches/mageia/stable-cifs-fix-smb2-interim-response-processing-for-read-requests.patch b/kernel/kernel/files/patches/mageia/stable-cifs-fix-smb2-interim-response-processing-for-read-requests.patch new file mode 100644 index 00000000..49789516 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-cifs-fix-smb2-interim-response-processing-for-read-requests.patch @@ -0,0 +1,72 @@ +From 6cc3b24235929b54acd5ecc987ef11a425bd209e Mon Sep 17 00:00:00 2001 +From: Pavel Shilovsky +Date: Sat, 27 Feb 2016 11:58:18 +0300 +Subject: CIFS: Fix SMB2+ interim response processing for read requests + +From: Pavel Shilovsky + +commit 6cc3b24235929b54acd5ecc987ef11a425bd209e upstream. + +For interim responses we only need to parse a header and update +a number credits. Now it is done for all SMB2+ command except +SMB2_READ which is wrong. Fix this by adding such processing. + +Signed-off-by: Pavel Shilovsky +Tested-by: Shirish Pargaonkar +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman + +--- + fs/cifs/cifssmb.c | 21 ++++++++++++++++++--- + 1 file changed, 18 insertions(+), 3 deletions(-) + +--- a/fs/cifs/cifssmb.c ++++ b/fs/cifs/cifssmb.c +@@ -1396,11 +1396,10 @@ openRetry: + * current bigbuf. + */ + static int +-cifs_readv_discard(struct TCP_Server_Info *server, struct mid_q_entry *mid) ++discard_remaining_data(struct TCP_Server_Info *server) + { + unsigned int rfclen = get_rfc1002_length(server->smallbuf); + int remaining = rfclen + 4 - server->total_read; +- struct cifs_readdata *rdata = mid->callback_data; + + while (remaining > 0) { + int length; +@@ -1414,10 +1413,20 @@ cifs_readv_discard(struct TCP_Server_Inf + remaining -= length; + } + +- dequeue_mid(mid, rdata->result); + return 0; + } + ++static int ++cifs_readv_discard(struct TCP_Server_Info *server, struct mid_q_entry *mid) ++{ ++ int length; ++ struct cifs_readdata *rdata = mid->callback_data; ++ ++ length = discard_remaining_data(server); ++ dequeue_mid(mid, rdata->result); ++ return length; ++} ++ + int + cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid) + { +@@ -1446,6 +1455,12 @@ cifs_readv_receive(struct TCP_Server_Inf + return length; + server->total_read += length; + ++ if (server->ops->is_status_pending && ++ server->ops->is_status_pending(buf, server, 0)) { ++ discard_remaining_data(server); ++ return -1; ++ } ++ + /* Was the SMB read successful? */ + rdata->result = server->ops->map_error(buf, false); + if (rdata->result != 0) { diff --git a/kernel/kernel/files/patches/mageia/stable-drivers-sh-restore-legacy-clock-domain-on-superh-platforms.patch b/kernel/kernel/files/patches/mageia/stable-drivers-sh-restore-legacy-clock-domain-on-superh-platforms.patch new file mode 100644 index 00000000..e0f47f2d --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-drivers-sh-restore-legacy-clock-domain-on-superh-platforms.patch @@ -0,0 +1,39 @@ +From 0378ba4899d5fbd8494ed6580cbc81d7b44dbac6 Mon Sep 17 00:00:00 2001 +From: Geert Uytterhoeven +Date: Wed, 24 Feb 2016 09:43:23 +0100 +Subject: drivers: sh: Restore legacy clock domain on SuperH platforms + +From: Geert Uytterhoeven + +commit 0378ba4899d5fbd8494ed6580cbc81d7b44dbac6 upstream. + +CONFIG_ARCH_SHMOBILE is not only enabled for Renesas ARM platforms +(which are DT based and multi-platform), but also on a select set of +Renesas SuperH platforms (SH7722/SH7723/SH7724/SH7343/SH7366). Hence +since commit 0ba58de231066e47 ("drivers: sh: Get rid of +CONFIG_ARCH_SHMOBILE_MULTI"), the legacy clock domain is no longer +installed on these SuperH platforms, and module clocks may not be +enabled when needed, leading to driver failures. + +To fix this, add an additional check for CONFIG_OF. + +Fixes: 0ba58de231066e47 ("drivers: sh: Get rid of CONFIG_ARCH_SHMOBILE_MULTI"). +Signed-off-by: Geert Uytterhoeven +Signed-off-by: Simon Horman +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/sh/pm_runtime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/sh/pm_runtime.c ++++ b/drivers/sh/pm_runtime.c +@@ -34,7 +34,7 @@ static struct pm_clk_notifier_block plat + + static int __init sh_pm_runtime_init(void) + { +- if (IS_ENABLED(CONFIG_ARCH_SHMOBILE)) { ++ if (IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_ARCH_SHMOBILE)) { + if (!of_find_compatible_node(NULL, NULL, + "renesas,cpg-mstp-clocks")) + return 0; diff --git a/kernel/kernel/files/patches/mageia/stable-drm-amdgpu-mask-out-wc-from-bo-on-unsupported-arches.patch b/kernel/kernel/files/patches/mageia/stable-drm-amdgpu-mask-out-wc-from-bo-on-unsupported-arches.patch new file mode 100644 index 00000000..fedcd4e3 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-drm-amdgpu-mask-out-wc-from-bo-on-unsupported-arches.patch @@ -0,0 +1,46 @@ +From a187f17f0e15a046aa5d7263b35df55230d92779 Mon Sep 17 00:00:00 2001 +From: Oded Gabbay +Date: Sat, 30 Jan 2016 07:59:34 +0200 +Subject: drm/amdgpu: mask out WC from BO on unsupported arches +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Oded Gabbay + +commit a187f17f0e15a046aa5d7263b35df55230d92779 upstream. + +Reviewed-by: Christian König +Reviewed-by: Michel Dänzer +Signed-off-by: Oded Gabbay +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + #include "amdgpu.h" + #include "amdgpu_trace.h" + +@@ -261,6 +262,13 @@ int amdgpu_bo_create_restricted(struct a + AMDGPU_GEM_DOMAIN_OA); + + bo->flags = flags; ++ ++ /* For architectures that don't support WC memory, ++ * mask out the WC flag from the BO ++ */ ++ if (!drm_arch_can_wc_memory()) ++ bo->flags &= ~AMDGPU_GEM_CREATE_CPU_GTT_USWC; ++ + amdgpu_fill_placement_to_bo(bo, placement); + /* Kernel allocation are uninterruptible */ + r = ttm_bo_init(&adev->mman.bdev, &bo->tbo, size, type, diff --git a/kernel/kernel/files/patches/mageia/stable-fbcon-set-a-default-value-to-blink-interval.patch b/kernel/kernel/files/patches/mageia/stable-fbcon-set-a-default-value-to-blink-interval.patch new file mode 100644 index 00000000..4f006707 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-fbcon-set-a-default-value-to-blink-interval.patch @@ -0,0 +1,66 @@ +From a1e533ec07d583d01349ef13c0c965b8633e1b91 Mon Sep 17 00:00:00 2001 +From: Jean-Philippe Brucker +Date: Mon, 15 Feb 2016 18:41:33 +0000 +Subject: fbcon: set a default value to blink interval + +From: Jean-Philippe Brucker + +commit a1e533ec07d583d01349ef13c0c965b8633e1b91 upstream. + +Since commit 27a4c827c34ac4256a190cc9d24607f953c1c459 + fbcon: use the cursor blink interval provided by vt + +two attempts have been made at fixing a possible hang caused by +cursor_timer_handler. That function registers a timer to be triggered at +"jiffies + fbcon_ops.cur_blink_jiffies". + +A new case had been encountered during initialisation of clcd-pl11x: + + fbcon_fb_registered + do_fbcon_takeover + + -> do_register_con_driver + fbcon_startup + (A) add_cursor_timer (with cur_blink_jiffies = 0) + + -> do_bind_con_driver + visual_init + fbcon_init + (B) cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms); + +If we take an softirq anywhere between A and B (and we do), +cursor_timer_handler executes indefinitely. + +Instead of patching all possible paths that lead to this case one at a +time, fix the issue at the source and initialise cur_blink_jiffies to +200ms when allocating fbcon_ops. This was its default value before +aforesaid commit. fbcon_cursor or fbcon_init will refine this value +downstream. + +Signed-off-by: Jean-Philippe Brucker +Tested-by: Scot Doyle +Signed-off-by: Tomi Valkeinen +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/video/console/fbcon.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/video/console/fbcon.c ++++ b/drivers/video/console/fbcon.c +@@ -709,6 +709,7 @@ static int con2fb_acquire_newinfo(struct + } + + if (!err) { ++ ops->cur_blink_jiffies = HZ / 5; + info->fbcon_par = ops; + + if (vc) +@@ -956,6 +957,7 @@ static const char *fbcon_startup(void) + ops->currcon = -1; + ops->graphics = 1; + ops->cur_rotate = -1; ++ ops->cur_blink_jiffies = HZ / 5; + info->fbcon_par = ops; + p->con_rotate = initial_rotation; + set_blitting_type(vc, info); diff --git a/kernel/kernel/files/patches/mageia/stable-fix-cifs_uniqueid_to_ino_t-function-for-s390x.patch b/kernel/kernel/files/patches/mageia/stable-fix-cifs_uniqueid_to_ino_t-function-for-s390x.patch new file mode 100644 index 00000000..966e1f1f --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-fix-cifs_uniqueid_to_ino_t-function-for-s390x.patch @@ -0,0 +1,63 @@ +From 1ee9f4bd1a97026a7b2d7ae9f1f74b45680d0003 Mon Sep 17 00:00:00 2001 +From: Yadan Fan +Date: Mon, 29 Feb 2016 14:44:57 +0800 +Subject: Fix cifs_uniqueid_to_ino_t() function for s390x + +From: Yadan Fan + +commit 1ee9f4bd1a97026a7b2d7ae9f1f74b45680d0003 upstream. + +This issue is caused by commit 02323db17e3a7 ("cifs: fix +cifs_uniqueid_to_ino_t not to ever return 0"), when BITS_PER_LONG +is 64 on s390x, the corresponding cifs_uniqueid_to_ino_t() +function will cast 64-bit fileid to 32-bit by using (ino_t)fileid, +because ino_t (typdefed __kernel_ino_t) is int type. + +It's defined in arch/s390/include/uapi/asm/posix_types.h + + #ifndef __s390x__ + + typedef unsigned long __kernel_ino_t; + ... + #else /* __s390x__ */ + + typedef unsigned int __kernel_ino_t; + +So the #ifdef condition is wrong for s390x, we can just still use +one cifs_uniqueid_to_ino_t() function with comparing sizeof(ino_t) +and sizeof(u64) to choose the correct execution accordingly. + +Signed-off-by: Yadan Fan +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman + +--- + fs/cifs/cifsfs.h | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +--- a/fs/cifs/cifsfs.h ++++ b/fs/cifs/cifsfs.h +@@ -31,19 +31,15 @@ + * so that it will fit. We use hash_64 to convert the value to 31 bits, and + * then add 1, to ensure that we don't end up with a 0 as the value. + */ +-#if BITS_PER_LONG == 64 + static inline ino_t + cifs_uniqueid_to_ino_t(u64 fileid) + { ++ if ((sizeof(ino_t)) < (sizeof(u64))) ++ return (ino_t)hash_64(fileid, (sizeof(ino_t) * 8) - 1) + 1; ++ + return (ino_t)fileid; ++ + } +-#else +-static inline ino_t +-cifs_uniqueid_to_ino_t(u64 fileid) +-{ +- return (ino_t)hash_64(fileid, (sizeof(ino_t) * 8) - 1) + 1; +-} +-#endif + + extern struct file_system_type cifs_fs_type; + extern const struct address_space_operations cifs_addr_ops; diff --git a/kernel/kernel/files/patches/mageia/stable-iommu-amd-apply-workaround-for-ats-write-permission-check.patch b/kernel/kernel/files/patches/mageia/stable-iommu-amd-apply-workaround-for-ats-write-permission-check.patch new file mode 100644 index 00000000..2b6ca214 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-iommu-amd-apply-workaround-for-ats-write-permission-check.patch @@ -0,0 +1,78 @@ +From 358875fd52ab8f00f66328cbf1a1d2486f265829 Mon Sep 17 00:00:00 2001 +From: Jay Cornwall +Date: Wed, 10 Feb 2016 15:48:01 -0600 +Subject: iommu/amd: Apply workaround for ATS write permission check + +From: Jay Cornwall + +commit 358875fd52ab8f00f66328cbf1a1d2486f265829 upstream. + +The AMD Family 15h Models 30h-3Fh (Kaveri) BIOS and Kernel Developer's +Guide omitted part of the BIOS IOMMU L2 register setup specification. +Without this setup the IOMMU L2 does not fully respect write permissions +when handling an ATS translation request. + +The IOMMU L2 will set PTE dirty bit when handling an ATS translation with +write permission request, even when PTE RW bit is clear. This may occur by +direct translation (which would cause a PPR) or by prefetch request from +the ATC. + +This is observed in practice when the IOMMU L2 modifies a PTE which maps a +pagecache page. The ext4 filesystem driver BUGs when asked to writeback +these (non-modified) pages. + +Enable ATS write permission check in the Kaveri IOMMU L2 if BIOS has not. + +Signed-off-by: Jay Cornwall +Signed-off-by: Joerg Roedel +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/iommu/amd_iommu_init.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +--- a/drivers/iommu/amd_iommu_init.c ++++ b/drivers/iommu/amd_iommu_init.c +@@ -1016,6 +1016,34 @@ static void amd_iommu_erratum_746_workar + } + + /* ++ * Family15h Model 30h-3fh (IOMMU Mishandles ATS Write Permission) ++ * Workaround: ++ * BIOS should enable ATS write permission check by setting ++ * L2_DEBUG_3[AtsIgnoreIWDis](D0F2xF4_x47[0]) = 1b ++ */ ++static void amd_iommu_ats_write_check_workaround(struct amd_iommu *iommu) ++{ ++ u32 value; ++ ++ if ((boot_cpu_data.x86 != 0x15) || ++ (boot_cpu_data.x86_model < 0x30) || ++ (boot_cpu_data.x86_model > 0x3f)) ++ return; ++ ++ /* Test L2_DEBUG_3[AtsIgnoreIWDis] == 1 */ ++ value = iommu_read_l2(iommu, 0x47); ++ ++ if (value & BIT(0)) ++ return; ++ ++ /* Set L2_DEBUG_3[AtsIgnoreIWDis] = 1 */ ++ iommu_write_l2(iommu, 0x47, value | BIT(0)); ++ ++ pr_info("AMD-Vi: Applying ATS write check workaround for IOMMU at %s\n", ++ dev_name(&iommu->dev->dev)); ++} ++ ++/* + * This function clues the initialization function for one IOMMU + * together and also allocates the command buffer and programs the + * hardware. It does NOT enable the IOMMU. This is done afterwards. +@@ -1284,6 +1312,7 @@ static int iommu_init_pci(struct amd_iom + } + + amd_iommu_erratum_746_workaround(iommu); ++ amd_iommu_ats_write_check_workaround(iommu); + + iommu->iommu_dev = iommu_device_create(&iommu->dev->dev, iommu, + amd_iommu_groups, "ivhd%d", diff --git a/kernel/kernel/files/patches/mageia/stable-iommu-amd-fix-boot-warning-when-device-00-00.0-is-not-iommu-covered.patch b/kernel/kernel/files/patches/mageia/stable-iommu-amd-fix-boot-warning-when-device-00-00.0-is-not-iommu-covered.patch new file mode 100644 index 00000000..3d0cee23 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-iommu-amd-fix-boot-warning-when-device-00-00.0-is-not-iommu-covered.patch @@ -0,0 +1,92 @@ +From 38e45d02ea9f194b89d6bf41e52ccafc8e2c2b47 Mon Sep 17 00:00:00 2001 +From: Suravee Suthikulpanit +Date: Tue, 23 Feb 2016 13:03:30 +0100 +Subject: iommu/amd: Fix boot warning when device 00:00.0 is not iommu covered + +From: Suravee Suthikulpanit + +commit 38e45d02ea9f194b89d6bf41e52ccafc8e2c2b47 upstream. + +The setup code for the performance counters in the AMD IOMMU driver +tests whether the counters can be written. It tests to setup a counter +for device 00:00.0, which fails on systems where this particular device +is not covered by the IOMMU. + +Fix this by not relying on device 00:00.0 but only on the IOMMU being +present. + +Signed-off-by: Suravee Suthikulpanit +Signed-off-by: Joerg Roedel +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/iommu/amd_iommu_init.c | 34 ++++++++++++++++++++++------------ + 1 file changed, 22 insertions(+), 12 deletions(-) + +--- a/drivers/iommu/amd_iommu_init.c ++++ b/drivers/iommu/amd_iommu_init.c +@@ -228,6 +228,10 @@ static int amd_iommu_enable_interrupts(v + static int __init iommu_go_to_state(enum iommu_init_state state); + static void init_device_table_dma(void); + ++static int iommu_pc_get_set_reg_val(struct amd_iommu *iommu, ++ u8 bank, u8 cntr, u8 fxn, ++ u64 *value, bool is_write); ++ + static inline void update_last_devid(u16 devid) + { + if (devid > amd_iommu_last_bdf) +@@ -1170,8 +1174,8 @@ static void init_iommu_perf_ctr(struct a + amd_iommu_pc_present = true; + + /* Check if the performance counters can be written to */ +- if ((0 != amd_iommu_pc_get_set_reg_val(0, 0, 0, 0, &val, true)) || +- (0 != amd_iommu_pc_get_set_reg_val(0, 0, 0, 0, &val2, false)) || ++ if ((0 != iommu_pc_get_set_reg_val(iommu, 0, 0, 0, &val, true)) || ++ (0 != iommu_pc_get_set_reg_val(iommu, 0, 0, 0, &val2, false)) || + (val != val2)) { + pr_err("AMD-Vi: Unable to write to IOMMU perf counter.\n"); + amd_iommu_pc_present = false; +@@ -2312,22 +2316,15 @@ u8 amd_iommu_pc_get_max_counters(u16 dev + } + EXPORT_SYMBOL(amd_iommu_pc_get_max_counters); + +-int amd_iommu_pc_get_set_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn, ++static int iommu_pc_get_set_reg_val(struct amd_iommu *iommu, ++ u8 bank, u8 cntr, u8 fxn, + u64 *value, bool is_write) + { +- struct amd_iommu *iommu; + u32 offset; + u32 max_offset_lim; + +- /* Make sure the IOMMU PC resource is available */ +- if (!amd_iommu_pc_present) +- return -ENODEV; +- +- /* Locate the iommu associated with the device ID */ +- iommu = amd_iommu_rlookup_table[devid]; +- + /* Check for valid iommu and pc register indexing */ +- if (WARN_ON((iommu == NULL) || (fxn > 0x28) || (fxn & 7))) ++ if (WARN_ON((fxn > 0x28) || (fxn & 7))) + return -ENODEV; + + offset = (u32)(((0x40|bank) << 12) | (cntr << 8) | fxn); +@@ -2351,3 +2348,16 @@ int amd_iommu_pc_get_set_reg_val(u16 dev + return 0; + } + EXPORT_SYMBOL(amd_iommu_pc_get_set_reg_val); ++ ++int amd_iommu_pc_get_set_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn, ++ u64 *value, bool is_write) ++{ ++ struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; ++ ++ /* Make sure the IOMMU PC resource is available */ ++ if (!amd_iommu_pc_present || iommu == NULL) ++ return -ENODEV; ++ ++ return iommu_pc_get_set_reg_val(iommu, bank, cntr, fxn, ++ value, is_write); ++} diff --git a/kernel/kernel/files/patches/mageia/stable-iommu-vt-d-use-bus_notify_removed_device-in-hotplug-path.patch b/kernel/kernel/files/patches/mageia/stable-iommu-vt-d-use-bus_notify_removed_device-in-hotplug-path.patch new file mode 100644 index 00000000..9250c977 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-iommu-vt-d-use-bus_notify_removed_device-in-hotplug-path.patch @@ -0,0 +1,68 @@ +From e6a8c9b337eed56eb481e1b4dd2180c25a1e5310 Mon Sep 17 00:00:00 2001 +From: Joerg Roedel +Date: Mon, 29 Feb 2016 23:49:47 +0100 +Subject: iommu/vt-d: Use BUS_NOTIFY_REMOVED_DEVICE in hotplug path + +From: Joerg Roedel + +commit e6a8c9b337eed56eb481e1b4dd2180c25a1e5310 upstream. + +In the PCI hotplug path of the Intel IOMMU driver, replace +the usage of the BUS_NOTIFY_DEL_DEVICE notifier, which is +executed before the driver is unbound from the device, with +BUS_NOTIFY_REMOVED_DEVICE, which runs after that. + +This fixes a kernel BUG being triggered in the VT-d code +when the device driver tries to unmap DMA buffers and the +VT-d driver already destroyed all mappings. + +Reported-by: Stefani Seibold +Signed-off-by: Joerg Roedel +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/iommu/dmar.c | 5 +++-- + drivers/iommu/intel-iommu.c | 4 ++-- + 2 files changed, 5 insertions(+), 4 deletions(-) + +--- a/drivers/iommu/dmar.c ++++ b/drivers/iommu/dmar.c +@@ -329,7 +329,8 @@ static int dmar_pci_bus_notifier(struct + /* Only care about add/remove events for physical functions */ + if (pdev->is_virtfn) + return NOTIFY_DONE; +- if (action != BUS_NOTIFY_ADD_DEVICE && action != BUS_NOTIFY_DEL_DEVICE) ++ if (action != BUS_NOTIFY_ADD_DEVICE && ++ action != BUS_NOTIFY_REMOVED_DEVICE) + return NOTIFY_DONE; + + info = dmar_alloc_pci_notify_info(pdev, action); +@@ -339,7 +340,7 @@ static int dmar_pci_bus_notifier(struct + down_write(&dmar_global_lock); + if (action == BUS_NOTIFY_ADD_DEVICE) + dmar_pci_bus_add_dev(info); +- else if (action == BUS_NOTIFY_DEL_DEVICE) ++ else if (action == BUS_NOTIFY_REMOVED_DEVICE) + dmar_pci_bus_del_dev(info); + up_write(&dmar_global_lock); + +--- a/drivers/iommu/intel-iommu.c ++++ b/drivers/iommu/intel-iommu.c +@@ -4367,7 +4367,7 @@ int dmar_iommu_notify_scope_dev(struct d + rmrru->devices_cnt); + if(ret < 0) + return ret; +- } else if (info->event == BUS_NOTIFY_DEL_DEVICE) { ++ } else if (info->event == BUS_NOTIFY_REMOVED_DEVICE) { + dmar_remove_dev_scope(info, rmrr->segment, + rmrru->devices, rmrru->devices_cnt); + } +@@ -4387,7 +4387,7 @@ int dmar_iommu_notify_scope_dev(struct d + break; + else if(ret < 0) + return ret; +- } else if (info->event == BUS_NOTIFY_DEL_DEVICE) { ++ } else if (info->event == BUS_NOTIFY_REMOVED_DEVICE) { + if (dmar_remove_dev_scope(info, atsr->segment, + atsru->devices, atsru->devices_cnt)) + break; diff --git a/kernel/kernel/files/patches/mageia/stable-kvm-x86-fix-root-cause-for-missed-hardware-breakpoints.patch b/kernel/kernel/files/patches/mageia/stable-kvm-x86-fix-root-cause-for-missed-hardware-breakpoints.patch new file mode 100644 index 00000000..19c33135 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-kvm-x86-fix-root-cause-for-missed-hardware-breakpoints.patch @@ -0,0 +1,56 @@ +From 70e4da7a8ff62f2775337b705f45c804bb450454 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini +Date: Fri, 26 Feb 2016 12:28:40 +0100 +Subject: KVM: x86: fix root cause for missed hardware breakpoints + +From: Paolo Bonzini + +commit 70e4da7a8ff62f2775337b705f45c804bb450454 upstream. + +Commit 172b2386ed16 ("KVM: x86: fix missed hardware breakpoints", +2016-02-10) worked around a case where the debug registers are not loaded +correctly on preemption and on the first entry to KVM_RUN. + +However, Xiao Guangrong pointed out that the root cause must be that +KVM_DEBUGREG_BP_ENABLED is not being set correctly. This can indeed +happen due to the lazy debug exit mechanism, which does not call +kvm_update_dr7. Fix it by replacing the existing loop (more or less +equivalent to kvm_update_dr0123) with calls to all the kvm_update_dr* +functions. + +Fixes: 172b2386ed16a9143d9a456aae5ec87275c61489 +Reviewed-by: Xiao Guangrong +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/x86.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -2736,7 +2736,6 @@ void kvm_arch_vcpu_load(struct kvm_vcpu + } + + kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu); +- vcpu->arch.switch_db_regs |= KVM_DEBUGREG_RELOAD; + } + + void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu) +@@ -6545,12 +6544,12 @@ static int vcpu_enter_guest(struct kvm_v + * KVM_DEBUGREG_WONT_EXIT again. + */ + if (unlikely(vcpu->arch.switch_db_regs & KVM_DEBUGREG_WONT_EXIT)) { +- int i; +- + WARN_ON(vcpu->guest_debug & KVM_GUESTDBG_USE_HW_BP); + kvm_x86_ops->sync_dirty_debug_regs(vcpu); +- for (i = 0; i < KVM_NR_DB_REGS; i++) +- vcpu->arch.eff_db[i] = vcpu->arch.db[i]; ++ kvm_update_dr0123(vcpu); ++ kvm_update_dr6(vcpu); ++ kvm_update_dr7(vcpu); ++ vcpu->arch.switch_db_regs &= ~KVM_DEBUGREG_RELOAD; + } + + /* diff --git a/kernel/kernel/files/patches/mageia/stable-kvm-x86-update-tsc-multiplier-on-change.patch b/kernel/kernel/files/patches/mageia/stable-kvm-x86-update-tsc-multiplier-on-change.patch new file mode 100644 index 00000000..ea436218 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-kvm-x86-update-tsc-multiplier-on-change.patch @@ -0,0 +1,56 @@ +From 2680d6da455b636dd006636780c0f235c6561d70 Mon Sep 17 00:00:00 2001 +From: Owen Hofmann +Date: Tue, 1 Mar 2016 13:36:13 -0800 +Subject: kvm: x86: Update tsc multiplier on change. + +From: Owen Hofmann + +commit 2680d6da455b636dd006636780c0f235c6561d70 upstream. + +vmx.c writes the TSC_MULTIPLIER field in vmx_vcpu_load, but only when a +vcpu has migrated physical cpus. Record the last value written and +update in vmx_vcpu_load on any change, otherwise a cpu migration must +occur for TSC frequency scaling to take effect. + +Fixes: ff2c3a1803775cc72dc6f624b59554956396b0ee +Signed-off-by: Owen Hofmann +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/vmx.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +--- a/arch/x86/kvm/vmx.c ++++ b/arch/x86/kvm/vmx.c +@@ -595,6 +595,8 @@ struct vcpu_vmx { + /* Support for PML */ + #define PML_ENTITY_NUM 512 + struct page *pml_pg; ++ ++ u64 current_tsc_ratio; + }; + + enum segment_cache_field { +@@ -2062,14 +2064,16 @@ static void vmx_vcpu_load(struct kvm_vcp + rdmsrl(MSR_IA32_SYSENTER_ESP, sysenter_esp); + vmcs_writel(HOST_IA32_SYSENTER_ESP, sysenter_esp); /* 22.2.3 */ + +- /* Setup TSC multiplier */ +- if (cpu_has_vmx_tsc_scaling()) +- vmcs_write64(TSC_MULTIPLIER, +- vcpu->arch.tsc_scaling_ratio); +- + vmx->loaded_vmcs->cpu = cpu; + } + ++ /* Setup TSC multiplier */ ++ if (kvm_has_tsc_control && ++ vmx->current_tsc_ratio != vcpu->arch.tsc_scaling_ratio) { ++ vmx->current_tsc_ratio = vcpu->arch.tsc_scaling_ratio; ++ vmcs_write64(TSC_MULTIPLIER, vmx->current_tsc_ratio); ++ } ++ + vmx_vcpu_pi_load(vcpu, cpu); + } + diff --git a/kernel/kernel/files/patches/mageia/stable-mips-kvm-fix-ioctl-error-handling.patch b/kernel/kernel/files/patches/mageia/stable-mips-kvm-fix-ioctl-error-handling.patch new file mode 100644 index 00000000..aa79661b --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-mips-kvm-fix-ioctl-error-handling.patch @@ -0,0 +1,49 @@ +From 0178fd7dcc4451fcb90bec5e91226586962478d2 Mon Sep 17 00:00:00 2001 +From: "Michael S. Tsirkin" +Date: Sun, 28 Feb 2016 17:35:59 +0200 +Subject: mips/kvm: fix ioctl error handling + +From: Michael S. Tsirkin + +commit 0178fd7dcc4451fcb90bec5e91226586962478d2 upstream. + +Returning directly whatever copy_to_user(...) or copy_from_user(...) +returns may not do the right thing if there's a pagefault: +copy_to_user/copy_from_user return the number of bytes not copied in +this case, but ioctls need to return -EFAULT instead. + +Fix up kvm on mips to do + return copy_to_user(...)) ? -EFAULT : 0; +and + return copy_from_user(...)) ? -EFAULT : 0; + +everywhere. + +Signed-off-by: Michael S. Tsirkin +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/mips/kvm/mips.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/mips/kvm/mips.c ++++ b/arch/mips/kvm/mips.c +@@ -702,7 +702,7 @@ static int kvm_mips_get_reg(struct kvm_v + } else if ((reg->id & KVM_REG_SIZE_MASK) == KVM_REG_SIZE_U128) { + void __user *uaddr = (void __user *)(long)reg->addr; + +- return copy_to_user(uaddr, vs, 16); ++ return copy_to_user(uaddr, vs, 16) ? -EFAULT : 0; + } else { + return -EINVAL; + } +@@ -732,7 +732,7 @@ static int kvm_mips_set_reg(struct kvm_v + } else if ((reg->id & KVM_REG_SIZE_MASK) == KVM_REG_SIZE_U128) { + void __user *uaddr = (void __user *)(long)reg->addr; + +- return copy_from_user(vs, uaddr, 16); ++ return copy_from_user(vs, uaddr, 16) ? -EFAULT : 0; + } else { + return -EINVAL; + } diff --git a/kernel/kernel/files/patches/mageia/stable-parisc-fix-ptrace-syscall-number-and-return-value-modification.patch b/kernel/kernel/files/patches/mageia/stable-parisc-fix-ptrace-syscall-number-and-return-value-modification.patch new file mode 100644 index 00000000..ef7b3cca --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-parisc-fix-ptrace-syscall-number-and-return-value-modification.patch @@ -0,0 +1,94 @@ +From 98e8b6c9ac9d1b1e9d1122dfa6783d5d566bb8f7 Mon Sep 17 00:00:00 2001 +From: Helge Deller +Date: Tue, 19 Jan 2016 16:08:49 +0100 +Subject: parisc: Fix ptrace syscall number and return value modification + +From: Helge Deller + +commit 98e8b6c9ac9d1b1e9d1122dfa6783d5d566bb8f7 upstream. + +Mike Frysinger reported that his ptrace testcase showed strange +behaviour on parisc: It was not possible to avoid a syscall and the +return value of a syscall couldn't be changed. + +To modify a syscall number, we were missing to save the new syscall +number to gr20 which is then picked up later in assembly again. + +The effect that the return value couldn't be changed is a side-effect of +another bug in the assembly code. When a process is ptraced, userspace +expects each syscall to report entrance and exit of a syscall. If a +syscall number was given which doesn't exist, we jumped to the normal +syscall exit code instead of informing userspace that the (non-existant) +syscall exits. This unexpected behaviour confuses userspace and thus the +bug was misinterpreted as if we can't change the return value. + +This patch fixes both problems and was tested on 64bit kernel with +32bit userspace. + +Signed-off-by: Helge Deller +Cc: Mike Frysinger +Tested-by: Mike Frysinger +Signed-off-by: Greg Kroah-Hartman + +--- + arch/parisc/kernel/ptrace.c | 16 +++++++++++----- + arch/parisc/kernel/syscall.S | 5 ++++- + 2 files changed, 15 insertions(+), 6 deletions(-) + +--- a/arch/parisc/kernel/ptrace.c ++++ b/arch/parisc/kernel/ptrace.c +@@ -269,14 +269,19 @@ long compat_arch_ptrace(struct task_stru + + long do_syscall_trace_enter(struct pt_regs *regs) + { +- long ret = 0; +- + /* Do the secure computing check first. */ + secure_computing_strict(regs->gr[20]); + + if (test_thread_flag(TIF_SYSCALL_TRACE) && +- tracehook_report_syscall_entry(regs)) +- ret = -1L; ++ tracehook_report_syscall_entry(regs)) { ++ /* ++ * Tracing decided this syscall should not happen or the ++ * debugger stored an invalid system call number. Skip ++ * the system call and the system call restart handling. ++ */ ++ regs->gr[20] = -1UL; ++ goto out; ++ } + + #ifdef CONFIG_64BIT + if (!is_compat_task()) +@@ -290,7 +295,8 @@ long do_syscall_trace_enter(struct pt_re + regs->gr[24] & 0xffffffff, + regs->gr[23] & 0xffffffff); + +- return ret ? : regs->gr[20]; ++out: ++ return regs->gr[20]; + } + + void do_syscall_trace_exit(struct pt_regs *regs) +--- a/arch/parisc/kernel/syscall.S ++++ b/arch/parisc/kernel/syscall.S +@@ -343,7 +343,7 @@ tracesys_next: + #endif + + comiclr,>>= __NR_Linux_syscalls, %r20, %r0 +- b,n .Lsyscall_nosys ++ b,n .Ltracesys_nosys + + LDREGX %r20(%r19), %r19 + +@@ -359,6 +359,9 @@ tracesys_next: + be 0(%sr7,%r19) + ldo R%tracesys_exit(%r2),%r2 + ++.Ltracesys_nosys: ++ ldo -ENOSYS(%r0),%r28 /* set errno */ ++ + /* Do *not* call this function on the gateway page, because it + makes a direct call to syscall_trace. */ + diff --git a/kernel/kernel/files/patches/mageia/stable-pci-keystone-fix-msi-code-that-retrieves-struct-pcie_port-pointer.patch b/kernel/kernel/files/patches/mageia/stable-pci-keystone-fix-msi-code-that-retrieves-struct-pcie_port-pointer.patch new file mode 100644 index 00000000..e598869f --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-pci-keystone-fix-msi-code-that-retrieves-struct-pcie_port-pointer.patch @@ -0,0 +1,78 @@ +From 79e3f4a853ed161cd4c06d84b50beebf961a47c6 Mon Sep 17 00:00:00 2001 +From: Murali Karicheri +Date: Mon, 29 Feb 2016 17:18:22 -0600 +Subject: PCI: keystone: Fix MSI code that retrieves struct pcie_port pointer + +From: Murali Karicheri + +commit 79e3f4a853ed161cd4c06d84b50beebf961a47c6 upstream. + +Commit cbce7900598c ("PCI: designware: Make driver arch-agnostic") changed +the host bridge sysdata pointer from the ARM pci_sys_data to the DesignWare +pcie_port structure, and changed pcie-designware.c to reflect that. But it +did not change the corresponding code in pci-keystone-dw.c, so it caused +crashes on Keystone: + + Unable to handle kernel NULL pointer dereference at virtual address 00000030 + pgd = c0003000 + [00000030] *pgd=80000800004003, *pmd=00000000 + Internal error: Oops: 206 [#1] PREEMPT SMP ARM + CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.2-00139-gb74f926 #2 + Hardware name: Keystone + PC is at ks_dw_pcie_msi_irq_unmask+0x24/0x58 + +Change pci-keystone-dw.c to expect sysdata to be the struct pcie_port +pointer. + +[bhelgaas: changelog] +Fixes: cbce7900598c ("PCI: designware: Make driver arch-agnostic") +Signed-off-by: Murali Karicheri +Signed-off-by: Bjorn Helgaas +CC: Zhou Wang +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pci/host/pci-keystone-dw.c | 11 +++-------- + 1 file changed, 3 insertions(+), 8 deletions(-) + +--- a/drivers/pci/host/pci-keystone-dw.c ++++ b/drivers/pci/host/pci-keystone-dw.c +@@ -58,11 +58,6 @@ + + #define to_keystone_pcie(x) container_of(x, struct keystone_pcie, pp) + +-static inline struct pcie_port *sys_to_pcie(struct pci_sys_data *sys) +-{ +- return sys->private_data; +-} +- + static inline void update_reg_offset_bit_pos(u32 offset, u32 *reg_offset, + u32 *bit_pos) + { +@@ -108,7 +103,7 @@ static void ks_dw_pcie_msi_irq_ack(struc + struct pcie_port *pp; + + msi = irq_data_get_msi_desc(d); +- pp = sys_to_pcie(msi_desc_to_pci_sysdata(msi)); ++ pp = (struct pcie_port *) msi_desc_to_pci_sysdata(msi); + ks_pcie = to_keystone_pcie(pp); + offset = d->irq - irq_linear_revmap(pp->irq_domain, 0); + update_reg_offset_bit_pos(offset, ®_offset, &bit_pos); +@@ -146,7 +141,7 @@ static void ks_dw_pcie_msi_irq_mask(stru + u32 offset; + + msi = irq_data_get_msi_desc(d); +- pp = sys_to_pcie(msi_desc_to_pci_sysdata(msi)); ++ pp = (struct pcie_port *) msi_desc_to_pci_sysdata(msi); + ks_pcie = to_keystone_pcie(pp); + offset = d->irq - irq_linear_revmap(pp->irq_domain, 0); + +@@ -167,7 +162,7 @@ static void ks_dw_pcie_msi_irq_unmask(st + u32 offset; + + msi = irq_data_get_msi_desc(d); +- pp = sys_to_pcie(msi_desc_to_pci_sysdata(msi)); ++ pp = (struct pcie_port *) msi_desc_to_pci_sysdata(msi); + ks_pcie = to_keystone_pcie(pp); + offset = d->irq - irq_linear_revmap(pp->irq_domain, 0); + diff --git a/kernel/kernel/files/patches/mageia/stable-use-d_seq-to-get-coherency-between-d_inode-and-d_flags.patch b/kernel/kernel/files/patches/mageia/stable-use-d_seq-to-get-coherency-between-d_inode-and-d_flags.patch new file mode 100644 index 00000000..b68d85b9 --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-use-d_seq-to-get-coherency-between-d_inode-and-d_flags.patch @@ -0,0 +1,100 @@ +From a528aca7f359f4b0b1d72ae406097e491a5ba9ea Mon Sep 17 00:00:00 2001 +From: Al Viro +Date: Mon, 29 Feb 2016 12:12:46 -0500 +Subject: use ->d_seq to get coherency between ->d_inode and ->d_flags + +From: Al Viro + +commit a528aca7f359f4b0b1d72ae406097e491a5ba9ea upstream. + +Games with ordering and barriers are way too brittle. Just +bump ->d_seq before and after updating ->d_inode and ->d_flags +type bits, so that verifying ->d_seq would guarantee they are +coherent. + +Signed-off-by: Al Viro +Signed-off-by: Greg Kroah-Hartman + +--- + fs/dcache.c | 20 +++++--------------- + include/linux/dcache.h | 4 +--- + 2 files changed, 6 insertions(+), 18 deletions(-) + +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -269,9 +269,6 @@ static inline int dname_external(const s + return dentry->d_name.name != dentry->d_iname; + } + +-/* +- * Make sure other CPUs see the inode attached before the type is set. +- */ + static inline void __d_set_inode_and_type(struct dentry *dentry, + struct inode *inode, + unsigned type_flags) +@@ -279,28 +276,18 @@ static inline void __d_set_inode_and_typ + unsigned flags; + + dentry->d_inode = inode; +- smp_wmb(); + flags = READ_ONCE(dentry->d_flags); + flags &= ~(DCACHE_ENTRY_TYPE | DCACHE_FALLTHRU); + flags |= type_flags; + WRITE_ONCE(dentry->d_flags, flags); + } + +-/* +- * Ideally, we want to make sure that other CPUs see the flags cleared before +- * the inode is detached, but this is really a violation of RCU principles +- * since the ordering suggests we should always set inode before flags. +- * +- * We should instead replace or discard the entire dentry - but that sucks +- * performancewise on mass deletion/rename. +- */ + static inline void __d_clear_type_and_inode(struct dentry *dentry) + { + unsigned flags = READ_ONCE(dentry->d_flags); + + flags &= ~(DCACHE_ENTRY_TYPE | DCACHE_FALLTHRU); + WRITE_ONCE(dentry->d_flags, flags); +- smp_wmb(); + dentry->d_inode = NULL; + } + +@@ -370,9 +357,11 @@ static void dentry_unlink_inode(struct d + __releases(dentry->d_inode->i_lock) + { + struct inode *inode = dentry->d_inode; ++ ++ raw_write_seqcount_begin(&dentry->d_seq); + __d_clear_type_and_inode(dentry); + hlist_del_init(&dentry->d_u.d_alias); +- dentry_rcuwalk_invalidate(dentry); ++ raw_write_seqcount_end(&dentry->d_seq); + spin_unlock(&dentry->d_lock); + spin_unlock(&inode->i_lock); + if (!inode->i_nlink) +@@ -1757,8 +1746,9 @@ static void __d_instantiate(struct dentr + spin_lock(&dentry->d_lock); + if (inode) + hlist_add_head(&dentry->d_u.d_alias, &inode->i_dentry); ++ raw_write_seqcount_begin(&dentry->d_seq); + __d_set_inode_and_type(dentry, inode, add_flags); +- dentry_rcuwalk_invalidate(dentry); ++ raw_write_seqcount_end(&dentry->d_seq); + spin_unlock(&dentry->d_lock); + fsnotify_d_instantiate(dentry, inode); + } +--- a/include/linux/dcache.h ++++ b/include/linux/dcache.h +@@ -409,9 +409,7 @@ static inline bool d_mountpoint(const st + */ + static inline unsigned __d_entry_type(const struct dentry *dentry) + { +- unsigned type = READ_ONCE(dentry->d_flags); +- smp_rmb(); +- return type & DCACHE_ENTRY_TYPE; ++ return dentry->d_flags & DCACHE_ENTRY_TYPE; + } + + static inline bool d_is_miss(const struct dentry *dentry) diff --git a/kernel/kernel/files/patches/mageia/stable-vfio-fix-ioctl-error-handling.patch b/kernel/kernel/files/patches/mageia/stable-vfio-fix-ioctl-error-handling.patch new file mode 100644 index 00000000..9b803d1e --- /dev/null +++ b/kernel/kernel/files/patches/mageia/stable-vfio-fix-ioctl-error-handling.patch @@ -0,0 +1,116 @@ +From 8160c4e455820d5008a1116d2dca35f0363bb062 Mon Sep 17 00:00:00 2001 +From: "Michael S. Tsirkin" +Date: Sun, 28 Feb 2016 16:31:39 +0200 +Subject: vfio: fix ioctl error handling + +From: Michael S. Tsirkin + +commit 8160c4e455820d5008a1116d2dca35f0363bb062 upstream. + +Calling return copy_to_user(...) in an ioctl will not +do the right thing if there's a pagefault: +copy_to_user returns the number of bytes not copied +in this case. + +Fix up vfio to do + return copy_to_user(...)) ? + -EFAULT : 0; + +everywhere. + +Signed-off-by: Michael S. Tsirkin +Signed-off-by: Alex Williamson +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/vfio/pci/vfio_pci.c | 9 ++++++--- + drivers/vfio/platform/vfio_platform_common.c | 9 ++++++--- + drivers/vfio/vfio_iommu_type1.c | 6 ++++-- + 3 files changed, 16 insertions(+), 8 deletions(-) + +--- a/drivers/vfio/pci/vfio_pci.c ++++ b/drivers/vfio/pci/vfio_pci.c +@@ -446,7 +446,8 @@ static long vfio_pci_ioctl(void *device_ + info.num_regions = VFIO_PCI_NUM_REGIONS; + info.num_irqs = VFIO_PCI_NUM_IRQS; + +- return copy_to_user((void __user *)arg, &info, minsz); ++ return copy_to_user((void __user *)arg, &info, minsz) ? ++ -EFAULT : 0; + + } else if (cmd == VFIO_DEVICE_GET_REGION_INFO) { + struct pci_dev *pdev = vdev->pdev; +@@ -520,7 +521,8 @@ static long vfio_pci_ioctl(void *device_ + return -EINVAL; + } + +- return copy_to_user((void __user *)arg, &info, minsz); ++ return copy_to_user((void __user *)arg, &info, minsz) ? ++ -EFAULT : 0; + + } else if (cmd == VFIO_DEVICE_GET_IRQ_INFO) { + struct vfio_irq_info info; +@@ -555,7 +557,8 @@ static long vfio_pci_ioctl(void *device_ + else + info.flags |= VFIO_IRQ_INFO_NORESIZE; + +- return copy_to_user((void __user *)arg, &info, minsz); ++ return copy_to_user((void __user *)arg, &info, minsz) ? ++ -EFAULT : 0; + + } else if (cmd == VFIO_DEVICE_SET_IRQS) { + struct vfio_irq_set hdr; +--- a/drivers/vfio/platform/vfio_platform_common.c ++++ b/drivers/vfio/platform/vfio_platform_common.c +@@ -219,7 +219,8 @@ static long vfio_platform_ioctl(void *de + info.num_regions = vdev->num_regions; + info.num_irqs = vdev->num_irqs; + +- return copy_to_user((void __user *)arg, &info, minsz); ++ return copy_to_user((void __user *)arg, &info, minsz) ? ++ -EFAULT : 0; + + } else if (cmd == VFIO_DEVICE_GET_REGION_INFO) { + struct vfio_region_info info; +@@ -240,7 +241,8 @@ static long vfio_platform_ioctl(void *de + info.size = vdev->regions[info.index].size; + info.flags = vdev->regions[info.index].flags; + +- return copy_to_user((void __user *)arg, &info, minsz); ++ return copy_to_user((void __user *)arg, &info, minsz) ? ++ -EFAULT : 0; + + } else if (cmd == VFIO_DEVICE_GET_IRQ_INFO) { + struct vfio_irq_info info; +@@ -259,7 +261,8 @@ static long vfio_platform_ioctl(void *de + info.flags = vdev->irqs[info.index].flags; + info.count = vdev->irqs[info.index].count; + +- return copy_to_user((void __user *)arg, &info, minsz); ++ return copy_to_user((void __user *)arg, &info, minsz) ? ++ -EFAULT : 0; + + } else if (cmd == VFIO_DEVICE_SET_IRQS) { + struct vfio_irq_set hdr; +--- a/drivers/vfio/vfio_iommu_type1.c ++++ b/drivers/vfio/vfio_iommu_type1.c +@@ -999,7 +999,8 @@ static long vfio_iommu_type1_ioctl(void + + info.iova_pgsizes = vfio_pgsize_bitmap(iommu); + +- return copy_to_user((void __user *)arg, &info, minsz); ++ return copy_to_user((void __user *)arg, &info, minsz) ? ++ -EFAULT : 0; + + } else if (cmd == VFIO_IOMMU_MAP_DMA) { + struct vfio_iommu_type1_dma_map map; +@@ -1032,7 +1033,8 @@ static long vfio_iommu_type1_ioctl(void + if (ret) + return ret; + +- return copy_to_user((void __user *)arg, &unmap, minsz); ++ return copy_to_user((void __user *)arg, &unmap, minsz) ? ++ -EFAULT : 0; + } + + return -ENOTTY; diff --git a/kernel/kernel/pspec.xml b/kernel/kernel/pspec.xml index 1d4be546..206e09f8 100644 --- a/kernel/kernel/pspec.xml +++ b/kernel/kernel/pspec.xml @@ -28,10 +28,35 @@ - patches/linux/patch-4.4.2.xz - + patches/linux/patch-4.4.4.xz + + patches/mageia/stable-use-d_seq-to-get-coherency-between-d_inode-and-d_flags.patch + patches/mageia/stable-drivers-sh-restore-legacy-clock-domain-on-superh-platforms.patch + patches/mageia/stable-btrfs-fix-deadlock-running-delayed-iputs-at-transaction-commit-time.patch + patches/mageia/stable-btrfs-fix-no_space-in-write-and-rm-loop.patch + patches/mageia/stable-btrfs-async-thread-fix-a-use-after-free-error-for-trace.patch + patches/mageia/stable-drm-amdgpu-mask-out-wc-from-bo-on-unsupported-arches.patch + patches/mageia/stable-block-initialize-max_dev_sectors-to-0.patch + patches/mageia/stable-pci-keystone-fix-msi-code-that-retrieves-struct-pcie_port-pointer.patch + patches/mageia/stable-parisc-fix-ptrace-syscall-number-and-return-value-modification.patch + patches/mageia/stable-mips-kvm-fix-ioctl-error-handling.patch + patches/mageia/stable-kvm-x86-update-tsc-multiplier-on-change.patch + patches/mageia/stable-fbcon-set-a-default-value-to-blink-interval.patch + patches/mageia/stable-cifs-fix-out-of-bounds-access-in-lease-parsing.patch + patches/mageia/stable-cifs-fix-smb2-interim-response-processing-for-read-requests.patch + patches/mageia/stable-fix-cifs_uniqueid_to_ino_t-function-for-s390x.patch + patches/mageia/stable-vfio-fix-ioctl-error-handling.patch + patches/mageia/stable-kvm-x86-fix-root-cause-for-missed-hardware-breakpoints.patch + patches/mageia/stable-arm-arm64-kvm-fix-ioctl-error-handling.patch + patches/mageia/stable-iommu-amd-apply-workaround-for-ats-write-permission-check.patch + patches/mageia/stable-iommu-amd-fix-boot-warning-when-device-00-00.0-is-not-iommu-covered.patch + patches/mageia/stable-iommu-vt-d-use-bus_notify_removed_device-in-hotplug-path.patch + patches/mageia/ata-Adding-Intel-Lewisburg-device-IDs-for-SATA.patch + patches/mageia/ata-ahci-don-t-mark-HotPlugCapable-Ports-as-external.patch + patches/mageia/libata-Align-ata_device-s-id-on-a-cacheline.patch + patches/mageia/libata-fix-HDIO_GET_32BIT-ioctl.patch patches/mageia/x86-pci-toshiba-equium-a60-assign-busses.patch patches/mageia/x86-boot-video-80x25-if-break.patch patches/mageia/x86-default_poweroff_up_machines.patch @@ -59,13 +84,7 @@ patches/mageia/block-Make-CFQ-default-to-IOPS-mode-on-SSDs.patch patches/mageia/fs-aufs-4.4.patch patches/mageia/fs-aufs-4.4-modular.patch - patches/mageia/fs-ovl-allow-zero-size-xattr.patch - patches/mageia/fs-ovl-use-a-minimal-buffer-in-ovl_copy_xattr.patch patches/mageia/fs-ovl-move-super-block-magic-number-to-magic.h.patch - patches/mageia/fs-ovl-root-copy-attr.patch - patches/mageia/fs-ovl-setattr-check-permissions-before-copy-up.patch - patches/mageia/fs-ovl-check-dentry-positiveness-in-ovl_cleanup_whiteou.patch - patches/mageia/fs-xfs-Revert-xfs-clear-PF_NOFREEZE-for-xfsaild-kthread.patch patches/mageia/firewire-ieee1394-module-aliases.patch patches/mageia/char-agp-intel-new-Q57-id.patch patches/mageia/gpu-drm-mach64.patch @@ -103,11 +122,6 @@ patches/mageia/gpu-drm-0109-drm-vc4-Add-an-interface-for-capturing-the-GPU-state.patch patches/mageia/gpu-drm-radeon-Update-radeon_get_vblank_counter_kms.patch patches/mageia/gpu-drm-radeon-Drop-unnecessary-unsigned-int-0-check.patch - patches/mageia/gpu-drm-No-Op-redundant-calls-to-drm_vblank_off-v2.patch - patches/mageia/gpu-drm-Prevent-vblank-counter-bumps-1-with-active-vblank-clients-v2.patch - patches/mageia/gpu-drm-Fix-drm_vblank_pre_post_modeset-regression-from-Linux-4.4.patch - patches/mageia/gpu-drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vblank_on-v2.patch - patches/mageia/gpu-drm_nouveau_display-Enable-vblank-irqs-after-display-engine-is-on-again.patch patches/mageia/input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch patches/mageia/net-sis190-fix-list-usage.patch patches/mageia/net-netfilter-IFWLOG.patch @@ -224,9 +238,9 @@ - 2016-02-18 - 4.4.2 - Version bump to 4.4.2 https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.2 + 2016-03-06 + 4.4.4 + Version bump to 4.4.4 https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.4 security systemRestart From 59c829bb7653150aa75e6cedba2dfffc0203d5fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 6 Mar 2016 09:41:54 +0200 Subject: [PATCH 4/4] index. --- pisi-index.xml | 43539 +++++++++++++++++------------------- pisi-index.xml.sha1sum | 6 +- pisi-index.xml.xz | Bin 104192 -> 104992 bytes pisi-index.xml.xz.sha1sum | 6 +- 4 files changed, 20393 insertions(+), 23158 deletions(-) diff --git a/pisi-index.xml b/pisi-index.xml index d3dbaeb6..e3918998 100644 --- a/pisi-index.xml +++ b/pisi-index.xml @@ -404,3156 +404,34 @@ - freetype - http://www.freetype.org/ - - PisiLinux Community - admins@pisilinux.org - - FTL - GPLv2 - library - desktop.font - A high-quality and portable font engine - Yüksek kaliteli ve taşınabilir yazıtipi düzeneği - FreeType2 est un moteur logiciel de fontes conçu pour être petit, efficace, très flexible et portable tout en étant capable de produire une sortie de très haute qualité. Il peut être utilisé dans les librairies graphiques, les serveurs d'affichage, les outils de conversion, les outils de génération d'images textuelles, ainsi que beaucoup d'autres produits. - FreeType 2 is a software font engine that is designed to be small, efficient, highly customizable, and portable while capable of producing high-quality output. It can be used in graphics libraries, display servers, font conversion tools, text image generation tools, and many other products as well. - FreeType 2; küçük, verimli, özelleştirilebilir, taşınabilir ve yüksek kaliteli çıktı oluşturan bir yazıtipi düzeneğidir. Grafik kütüphaneleri, görüntü sunucuları ve yazıtipi değiştirme araçları gibi birçok üründe kullanılabilir. - mirrors://sourceforge/freetype/freetype-2.6.2.tar.bz2 - - zlib-devel - bzip2 - libpng-devel - - desktop/font/freetype/pspec.xml - - - freetype - - zlib - bzip2 - libpng - - - /usr/lib - /usr/share/doc - /usr/share/man - - - - freetype-devel - Development files for freetype - freetype için geliştirme dosyaları - - freetype - zlib-devel - libpng-devel - - - /usr/bin - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/share/aclocal - - - - freetype-32bit - 32-bit shared libraries for freetype - freetype için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - zlib-32bit - libpng-32bit - - - glibc-32bit - zlib-32bit - libpng-32bit - - - /usr/lib32 - - - - - 2016-01-28 - 2.6.2 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-07-29 - 2.6 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-22 - 2.5.5 - Version bump. - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org - - - 2014-05-11 - 2.5.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 2.5.3 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-12-11 - 2.5.2 - Version bump, cleanup. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-11-26 - 2.5.1 - Version bump - Richard de Bruin - richdb@pisilinux.org - - - 2013-10-28 - 2.5.0.1 - rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-26 - 2.5.0.1 - Fix deps,release bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-06-28 - 2.5.0.1 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-14 - 2.4.11 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-11-24 - 2.4.10 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - slang - http://www.jedsoft.org/slang/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - Artistic - app:console - programming.library - Console display library used by most text viewer - Bir çok metin gösterici yazılım tarfından kullanılan konsol görüntüleme kütüphanesi - S-Lang est une librarie de programmation multi-plateforme conçue pour permettre aux développeur de développer des logiciels robustes et portables. Elle fournit les mécanismes requis pour développer une application interactive telle que la gestion d'affichages/écrans, entrées clavier, disposition de touches et ainsi de suite. La fonctionnalité la plus attractive de cette librairie reste l'interpréteur slang qui peut être embarqué au sein même d'un programme pour le rendre extensible. - S-Lang is a multi-platform programmer's library designed to allow a developer to create robust multi-platform software. It provides facilities required by interactive applications such as display/screen management, keyboard input, keymaps, and so on. The most exciting feature of the library is the slang interpreter that may be easily embedded into a program to make it extensible. - S-lang, yazılım geliştiricilerin bütün işletim sistemlerinde çalışabilen güçlü uygulamalar geliştirmesine yardımcı olan bir uygulama kitaplığıdır. İnteraktif uygulamalar için ekran yönetimi ve klavye girişi gibi araçlar sunar. Kitaplığın en ilginç özelliği programların içine kolayca gömülebilen ve programı genişletilebilir kılan slang yorumlayıcısıdır. - ftp://ftp.ntua.gr/pub/lang/slang/slang/v2.2/slang-2.2.4.tar.bz2 - - libpng-devel - libpcre-devel - ncurses-devel - readline-devel - zlib-devel - -<<<<<<< HEAD - - patches/linux/patch-4.4.2.xz - patches/mageia/x86-pci-toshiba-equium-a60-assign-busses.patch - patches/mageia/x86-boot-video-80x25-if-break.patch - patches/mageia/x86-default_poweroff_up_machines.patch - patches/mageia/x86-increase-default-minimum-vmalloc-area-by-64MB-to-192MB.patch - patches/mageia/Revert-cpufreq-pcc-Enable-autoload-of-pcc-cpufreq-fo.patch - patches/mageia/Revert-x86-mm-mtrr-Remove-kernel-internal-MTRR-inter.patch - patches/mageia/base-cacheinfo-silence-DT-warnings.patch - patches/mageia/pci-add-ALI-M5229-ide-compatibility-mode-quirk.patch - patches/mageia/pci-quirks-drop-devinit-exit.patch - patches/mageia/acpi-CLEVO-M360S-disable_acpi_irq.patch - patches/mageia/acpi-processor-M720SR-limit-to-C2.patch - patches/mageia/ACPI-video-Add-a-quirk-to-force-acpi-video-backlight.patch - patches/mageia/scsi-megaraid-new-sysfs-name.patch - patches/mageia/ide-pci-sis5513-965.patch - patches/mageia/mpt-vmware-fix.patch - patches/mageia/dm-raid-aliases.patch - patches/mageia/block-floppy-disable-pnp-modalias.patch - patches/mageia/ata-prefer-ata-drivers-over-ide-drivers-when-both-are-built.patch - patches/mageia/block-Make-CFQ-default-to-IOPS-mode-on-SSDs.patch - patches/mageia/fs-aufs-4.4.patch - patches/mageia/fs-aufs-4.4-modular.patch - patches/mageia/fs-ovl-allow-zero-size-xattr.patch - patches/mageia/fs-ovl-use-a-minimal-buffer-in-ovl_copy_xattr.patch - patches/mageia/fs-ovl-move-super-block-magic-number-to-magic.h.patch - patches/mageia/fs-ovl-root-copy-attr.patch - patches/mageia/fs-ovl-setattr-check-permissions-before-copy-up.patch - patches/mageia/fs-ovl-check-dentry-positiveness-in-ovl_cleanup_whiteou.patch - patches/mageia/fs-xfs-Revert-xfs-clear-PF_NOFREEZE-for-xfsaild-kthread.patch - patches/mageia/firewire-ieee1394-module-aliases.patch - patches/mageia/char-agp-intel-new-Q57-id.patch - patches/mageia/gpu-drm-mach64.patch - patches/mageia/gpu-drm-mach64-fixes.patch - patches/mageia/gpu-drm-mach64-2.6.31.patch - patches/mageia/gpu-drm-mach64-fix-for-changed-drm_pci_alloc.patch - patches/mageia/gpu-drm-mach64-fix-for-changed-drm_ioctl.patch - patches/mageia/gpu-drm-mach64-2.6.36-buildfix.patch - patches/mageia/gpu-drm-mach64-2.6.37-buildfix.patch - patches/mageia/gpu-drm-mach64-3.0-buildfix.patch - patches/mageia/gpu-drm-mach64-include-module.h.patch - patches/mageia/gpu-drm-mach64-3.3-buildfix.patch - patches/mageia/gpu-drm-mach64-3.6-buildfix.patch - patches/mageia/gpu-drm-mach64-3.7-buildfix.patch - patches/mageia/gpu-drm-mach64-3.12-buildfix.patch - patches/mageia/gpu-drm-mach64-restore-mach64_PCI_IDS.patch - patches/mageia/gpu-drm-mach64-linux-3.14-buildfix.patch - patches/mageia/gpu-drm-mach64-3.17-buildfix.patch - patches/mageia/gpu-drm-mach64-3.18-buildfix.patch - patches/mageia/gpu-drm-i915-Fix-RPS-pointer-passed-from-wait_ioctl-to-i915_wait_request.patch - patches/mageia/gpu-drm-0001-devicetree-add-vendor-prefix-for-Vivante-Corporation.patch - patches/mageia/gpu-drm-0002-drm-etnaviv-add-devicetree-bindings.patch - patches/mageia/gpu-drm-0003-drm-etnaviv-add-initial-etnaviv-DRM-driver.patch - patches/mageia/gpu-drm-0004-MAINTAINERS-add-maintainer-and-reviewers-for-the-etn.patch - patches/mageia/gpu-drm-0005-drm-etnaviv-unlock-on-error-in-etnaviv_gem_get_iova.patch - patches/mageia/gpu-drm-0006-drm-etnaviv-fix-workaround-for-GC500.patch - patches/mageia/gpu-drm-0101-drm-Create-a-driver-hook-for-allocating-GEM-object-s.patch - patches/mageia/gpu-drm-0102-drm-vc4-Add-a-BO-cache.patch - patches/mageia/gpu-drm-0103-drm-vc4-Add-create-and-map-BO-ioctls.patch - patches/mageia/gpu-drm-0104-drm-vc4-Add-an-API-for-creating-GPU-shaders-in-GEM-B.patch - patches/mageia/gpu-drm-0105-drm-vc4-Fix-a-typo-in-a-V3D-debug-register.patch - patches/mageia/gpu-drm-0106-drm-vc4-Bind-and-initialize-the-V3D-engine.patch - patches/mageia/gpu-drm-0107-drm-vc4-Add-support-for-drawing-3D-frames.patch - patches/mageia/gpu-drm-0108-drm-vc4-Add-support-for-async-pageflips.patch - patches/mageia/gpu-drm-0109-drm-vc4-Add-an-interface-for-capturing-the-GPU-state.patch - patches/mageia/gpu-drm-radeon-Update-radeon_get_vblank_counter_kms.patch - patches/mageia/gpu-drm-radeon-Drop-unnecessary-unsigned-int-0-check.patch - patches/mageia/gpu-drm-No-Op-redundant-calls-to-drm_vblank_off-v2.patch - patches/mageia/gpu-drm-Prevent-vblank-counter-bumps-1-with-active-vblank-clients-v2.patch - patches/mageia/gpu-drm-Fix-drm_vblank_pre_post_modeset-regression-from-Linux-4.4.patch - patches/mageia/gpu-drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vblank_on-v2.patch - patches/mageia/gpu-drm_nouveau_display-Enable-vblank-irqs-after-display-engine-is-on-again.patch - patches/mageia/input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch - patches/mageia/net-sis190-fix-list-usage.patch - patches/mageia/net-netfilter-IFWLOG.patch - patches/mageia/net-netfilter-IFWLOG-mdv.patch - patches/mageia/net-netfilter-IFWLOG-2.6.35-buildfix.patch - patches/mageia/net-netfilter-IFWLOG-2.6.37-buildfix.patch - patches/mageia/net-ipv4-netfilter-ipt_IFWLOG-3.6-buildfix.patch - patches/mageia/net-netfilter-IFWLOG-3.7-buildfix.patch - patches/mageia/net-netfilter-IFWLOG-remove-unused-label.patch - patches/mageia/net-netfilter-psd.patch - patches/mageia/net-netfilter-psd-mdv.patch - patches/mageia/net-netfilter-psd-2.6.35-buildfix.patch - patches/mageia/platform-x86-add-shuttle-wmi-driver.patch - patches/mageia/platform-x86-shuttle-wmi-drop-devinit-exit.patch - patches/mageia/platform-x86-shuttle-wmi-4.2-buildfix.patch - patches/mageia/include-kbuild-export-pci_ids.patch - patches/mageia/hid-usbhid-IBM-BladeCenterHS20-quirk.patch - patches/mageia/usb-storage-unusual_devs-add-id.patch - patches/mageia/usb-storage-unusual_devs-add-id-2.6.37-buildfix.patch - patches/mageia/media-usb-pwc-lie-in-proc-usb-devices.patch - patches/mageia/3rd-3rdparty-1.0-tree.patch - patches/mageia/3rd-3rdparty-merge.patch - patches/mageia/3rd-acerhk-0.5.35.patch - patches/mageia/3rd-acerhk-kbuild.patch - patches/mageia/3rd-acerhk-extra-cflags.patch - patches/mageia/3rd-acerhk-proc_dir_entry-owner.patch - patches/mageia/3rd-acerhk-fix-build-with-function-tracer.patch - patches/mageia/3rd-acerhk-2.6.36-buildfix.patch - patches/mageia/3rd-acerhk-fix-include.patch - patches/mageia/3rd-ndiswrapper-1.59.patch - patches/mageia/3rd-ndiswrapper-Kconfig.patch - patches/mageia/3rd-ndiswrapper-Makefile-build-fix.patch - patches/mageia/3rd-ndiswrapper-linux-3.14-buildfix.patch - patches/mageia/3rd-ndiswrapper-4.0-buildfix.patch - patches/mageia/3rd-ndiswrapper-4.2-buildfix.patch - patches/mageia/3rd-rfswitch-1.3.patch - patches/mageia/3rd-rfswitch-build-fix.patch - patches/mageia/3rd-rfswitch-3.0-buildfix.patch - patches/mageia/3rd-viahss-0.92.patch - patches/mageia/3rd-viahss-config.patch - patches/mageia/3rd-viahss-module-license.patch - patches/mageia/3rd-viahss-2.6.35-buildfix.patch - patches/mageia/3rd-viahss-3.0-buildfix.patch - patches/mageia/3rd-rtl8723bs.patch - patches/mageia/ahci-add-new-Intel-device-IDs.patch - patches/mageia/arm-0001-dt-bindings-Add-root-properties-for-Raspberry-Pi-2.patch - patches/mageia/arm-0002-ARM-bcm2835-Add-a-compat-string-for-bcm2836-machine-.patch - patches/mageia/arm-0003-ARM-bcm2835-Add-Kconfig-support-for-bcm2836.patch - patches/mageia/arm-0011-ARM-bcm2835-Define-two-new-packets-from-the-latest-f.patch - patches/mageia/arm-0012-dt-bindings-add-rpi-power-domain-driver-bindings.patch - patches/mageia/arm-0013-ARM-bcm2835-add-rpi-power-domain-driver.patch - patches/mageia/arm-0021-ARM-bcm2835-Split-the-DT-for-peripherals-from-the-DT.patch - patches/mageia/arm-0022-ARM-bcm2835-Move-the-CPU-peripheral-include-out-of-c.patch - patches/mageia/arm-0023-ARM-bcm2835-Add-devicetree-for-bcm2836-and-Raspberry.patch - patches/mageia/arm-0024-ARM-bcm2835-Add-the-auxiliary-clocks-to-the-device-t.patch - patches/mageia/arm-0031-ARM-bcm2835-enable-all-bcm2835-relevant-in-defconfig.patch - patches/mageia/arm-0032-ARM-bcm2835-enable-auxiliary-spi-driver-in-defconfig.patch - - kernel/kernel/pspec.xml -======= - programming/library/slang/pspec.xml ->>>>>>> master - - - slang - - libpng - libpcre - zlib - - - /etc - /usr/bin - /usr/share/slsh - /usr/lib - /usr/share/doc/slang - /usr/share/man - - - - slang-devel - Development files for slang - slang için geliştirme dosyaları - system.devel - - slang - - - /usr/include - /usr/lib/pkgconfig - /usr/share/doc/slang/html - /usr/share/man/man3 - - - - - 2014-05-11 - 2.2.4 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-31 - 2.2.4 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-08-23 - 2.2.4 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - pycurl - http://pycurl.sourceforge.net/ - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - system.base - Python cURL Module - Python cURL Modülü - PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program. - PycURL, python libcurl için python arayüzüdür. PycURL, URL tarafında tanımlanan nesneleri indirmek için bir python programı tarafından kullanılabilir. - https://dl.bintray.com/pycurl/pycurl/pycurl-7.43.0.tar.gz - - curl-devel - python-devel - openssl-devel - - system/base/pycurl/pspec.xml - - - pycurl - - curl - python - openssl - - - /usr/lib - /usr/share/doc - - - -<<<<<<< HEAD - - security - 2016-02-18 - 4.4.2 - Version bump to 4.4.2 https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.2 - Ertuğrul Erata - ertugrulerata@gmail.com - - systemRestart - - - - security - 2016-02-02 - 4.4.1 - Version bump to 4.4.1 https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.1 - Ertuğrul Erata - ertugrulerata@gmail.com - - systemRestart - - - - security - 2016-01-30 - 4.4.0 - Version bump to 4.4.0,add CVE-2016-0728 patch. -======= - - 2016-03-02 - 7.43.0 - Version bump. ->>>>>>> master - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 7.19.3.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-01 - 7.19.3.1 - Version bump. - Kamil Atlı - suvarice@gmail.com - - - 2013-12-19 - 7.19.0.2 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2013-03-12 - 7.19.0.2 - Version bum. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-03-12 - 7.19.0 - Fix pisi https issue - Pisi Linux Admins - marcin@pisilinux.org - - - 2010-10-11 - 7.19.0 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - libgcrypt - http://www.gnupg.org/ - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - system.base - Librairie générale de cryptographie basée sur le code utilisé dans GnuPG. - General purpose crypto library - Genel amaçlı bir şifreleme kitaplığı - Libgcrypt is a general purpose crypto library based on the code used in GNU Privacy Guard. - Libgcrypt, GNU Privacy Guard kodunu temel alan genel amaçlı bir şifreleme kitaplığıdır. - http://source.pisilinux.org/1.0/libgcrypt-1.6.3.tar.bz2 - - libgpg-error-devel - - system/base/libgcrypt/pspec.xml - - - libgcrypt - - libgpg-error - - - /usr/lib - /usr/share/man - /usr/share/doc - /etc/gcrypt - /usr/bin - /usr/share/info - - - - libgcrypt-devel - Development files for libgcrypt - libgcrypt için geliştirme dosyaları - system.devel - - libgcrypt - libgpg-error-devel - - - /usr/include - /usr/lib/pkgconfig - /usr/share/aclocal - /usr/lib32/pkgconfig - /usr/bin/*-config - - - - libgcrypt-32bit - 32-bit shared libraries for libgcrypt - libgcrypt için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - libgpg-error-32bit - glibc-32bit - - - libgpg-error-32bit - glibc-32bit - libgcrypt - - - /usr/lib32 - - - - - 2015-04-13 - 1.6.3 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.6.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 1.6.1 - Version bump. - PisiLinux Community - admins@pisilinux.org - - - 2011-05-03 - 1.5.0 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - db - http://www.oracle.com/technology/products/berkeley-db/db/index.html - - PisiLinux Community - admins@pisilinux.org - - DB - app:console - system.base - Quatrième version de Berkeley DB - Oracle Berkeley DB - Oracle Berkeley DB - Ein einbettbares Datenbank Engine, dass die Entwickler mit schnellen, zuverlässigen und lokalen Persistenz unterstützt und null Administration erfordert. - The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. The Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching, and database recovery. The Berkeley DB supports C, C++, Java, and Perl APIs. It is used by many applications, including Python and Perl, so this should be installed on all systems. - Berkeley DB geliştiricilere yerel süreklilik sağlayan ve herhangi bir ayar gerektirmeden (zero administration) kullanılan, hızlı ve gömülebilir bir veritabanı motorudur. - http://download.oracle.com/berkeley-db/db-6.1.26.tar.gz - system/base/db/pspec.xml - - - db - - libgcc - - - /usr/bin - /usr/lib - /usr/sbin - - - db5 - - - - db-devel - Development files for db - - db - - - /usr/include - - - db5-devel - - - - db-docs - Documentation for db - system.doc - - db - - - /usr/share/doc - - - db5-docs - - - - - 2016-03-02 - 6.1.26 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-09-10 - 5.3.28 - Rebuild for component change. - Perl depends on db, so we need it in system.base. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-07-15 - 5.3.28 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 5.3.28 - Version bump - PisiLinux Community - admins@pisilinux.org - - - 2013-08-29 - 5.3.21 - Rename and clean db pack. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-26 - 5.3.21 - Fix dep, release bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-08-31 - 5.3.21 - First release - Erdem Artan - admins@pisilinux.org - - - - - - lsb-release - http://www.linuxbase.org - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - LSB version query program - LSB sürüm sorgulama aracı - lsb-release prints certain LSB (Linux Standard Base) and distribution information. - lsb-release bazı dağıtıma özel tanımlayıcı bilgileri ekrana basan bir terminal aracıdır. - mirrors://sourceforge/project/lsb/lsb_release/1.4/lsb-release-1.4.tar.gz - - util-linux - - system/base/lsb-release/pspec.xml - - - lsb-release - - /usr/bin - /etc - /usr/share/man - /usr/share/doc - - - lsb-release - - - - - 2016-01-16 - 1.4 - Release 2.0Alfa7. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-11-01 - 1.4 - Release PisiLinux 2.0Alfa6. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-29 - 1.4 - Release Pisi Linux 2.0Alfa5 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-01-16 - 1.4 - Release Pisi Linux 1.2 - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-11-03 - 1.4 - Release Pisi Linux 1.1 - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-07-16 - 1.4 - Release Pisi Linux 1.0 - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 1.4 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-16 - 1.4 - Rc2 name Erdinc for Erdinç Gültekin. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-12-20 - 1.4 - Rc2 - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-20 - 1.4 - RC1 - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-08-11 - 1.4 - sueno - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2012-08-23 - 1.4 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - shadow - http://pkg-shadow.alioth.debian.org/ - - PisiLinux Community - admins@pisilinux.org - - BSD - app:console - system.base - Utilities to deal with user accounts - Kullanıcı hesapları yönetimi için araçlar - Le paquet des utilitaires pour le fichier de mot de passe Shadow regroupe les programmes nécessaires à convertir les fichiers de mots de passe traditionnels V7*NIX au format de mot passe shadow SVR4 ainsi que d'autres outils destinés à la gestion des fichiers des groupes et de mots de passe (qui fonctionnent aussi bien pour les mots de passe shadow que non-shadow). - The Shadow password file utilities package includes programs necessary to convert traditional V7 *NIX password files to the SVR4 shadow password format, and additional tools to maintain password and group files (that work with both shadow and non-shadow passwords). - Shadow parola dosyası yardımcı uygulamalar paketi, geleneksel V7 *nix parola dosyalarını SVR4 shadow parola biçimine dönüştüren programlar ile parola ve grup dosyalarının bakımı için ilave araçlar içerir. - http://pkg-shadow.alioth.debian.org/releases/shadow-4.2.1.tar.xz - - pam-devel - gettext-devel - acl-devel - attr-devel - - - shadow-strncpy-usage.patch - xstrdup.patch - - system/base/shadow/pspec.xml - - - shadow - Utilitaires pour gérer les comptes utilisateurs - Kullanıcı hesaplarını düzenlemek için araçlar. - - acl - attr - pam - - - /bin - /usr/bin - /sbin - /usr/sbin - /etc - /lib - /usr/share/man - /usr/share/doc - /usr/share/info - /usr/share/locale - - - securetty - default/useradd - pam.d/login - pam.d/other - pam.d/passwd - pam.d/shadow - pam.d/shadow - pam.d/shadow - pam.d/shadow - pam.d/shadow - pam.d/shadow - pam.d/shadow - pam.d/shadow - pam.d/shadow - pam.d/shadow - pam.d/shadow - pam.d/shadow - pam.d/su - pam.d/system-auth - login.defs - - - - - 2015-04-01 - 4.2.1 - Version bump., remove build with audit - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 4.1.5.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 4.1.5.1 - Rebuild without-libcrack, clean shadow, fix login defs. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-30 - 4.1.5.1 - Rebuild with-libcrack, clean shadow. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-26 - 4.1.5.1 - Release bump for rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-08-23 - 4.1.5.1 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - wireless-tools - http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - A collection of tools to configure wireless lan cards - Kablosuz ağ kartlarını yapılandırmak için kullanılan bir araç seti - Les outils sans fil (Wireless Tools ou WT) est un ensemble d'outils permettant de manipuler les extensions sans fil, c'est une interface de programmation d'application (API) générique permettant à un pilote d'exposer à l'espace utilisateur la configuration ainsi que des statistiques spécifiques aux LANs sans fil communs. Ils utilisent une interface textuelle assez rugueuse, mais ont pour objectif de couvrir la totalité de l'extension sans fil. - The Wireless Tools (WT) is a set of tools allowing to manipulate the Wireless Extensions, a generic application programming interface allowing a driver to expose to the user space configuration and statistics specific to common Wireless LANs. They use a textual interface and are rather crude, but aim to support the full Wireless Extension. - Wireless Extensions, sürücülerin bilinen kablosuz ağların ayarlarını yapmak ve istatistiklerini görüntülemek amacıyla kullandığı bir yazılım programlama arayüzüdür. Wireless Tools ise Wireless Extensions ayarlarını modifiye etmek için kullanılan araçları içeren bir pakettir. Grafik arayüzü bulunmaz, biraz da kabadır; ancak Wireless Extension'u tam olarak desteklemeyi hedefler. - http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.30.pre9.tar.gz - - no-ldconfig.patch - wireless_tools.27-wireless-man-upd.patch - wireless-tools-29-makefile.patch - - system/base/wireless-tools/pspec.xml - - - wireless-tools - - comar - - - /sbin - /usr/lib - /usr/share/man - /usr/share/doc - - - - wireless-tools-devel - Development files for wireless-tools - wireless-tools için geliştirme dosyaları - system.devel - - wireless-tools - - - /usr/include - /usr/share/man/man3 - - - - - 2016-03-04 - 30 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-08 - 30 - Release bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 30 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 30 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2013-02-11 - 30 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2011-06-01 - 29 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - cryptsetup - https://gitlab.com/cryptsetup/cryptsetup - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:cli - system.base - Userspace setup tool for transparent encryption of block devices using dm-crypt - Şifreli dosya sistemleri yaratmak için bir araç - Userspace setup tool for transparent encryption of block devices using dm-crypt - cryptsetup device mapper kullanarak şifrelenmiş dosya sistemleri yaratmak için gerekli bir araçtır. - cryptsetup - https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/cryptsetup-1.7.0.tar.xz - - device-mapper-devel - libgpg-error-devel - libgcrypt-devel - python-devel - libutil-linux-devel - popt-devel - popt - - system/base/cryptsetup/pspec.xml - - - cryptsetup - util.crypt - - libcryptsetup - popt - - - /sbin - /usr/share/man - /usr/share/locale - /usr/share/doc - - - - libcryptsetup - cryptsetup libraries - cryptsetup kütüphaneleri - util.crypt - - device-mapper - libgpg-error - libgcrypt - libutil-linux - - - /lib/libcryptsetup.so* - - - - libcryptsetup-devel - libcryptsetup devel files - libcryptsetup için geliştirme dosyaları - programming.devel - - libcryptsetup - - - /usr/include - /usr/lib/pkgconfig/libcryptsetup.pc - - - - python-pycryptsetup - Python backend for cryptsetup - cryptsetup Python bağlayıcısı - programming.language.python - - python - libcryptsetup - - - /usr/lib/python2.7/site-packages/pycryptsetup.so - - - - - 2016-01-28 - 1.7.0 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-04-30 - 1.6.7 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-01 - 1.6.4 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 1.6.4 - Version bump - PisiLinux Community - admins@pisilinux.org - - - 2014-03-06 - 1.6.0 - Rebuild Unused - Varol Maksutoğlu - waroi@pisilinux.org - - - 2013-07-26 - 1.6.0 - Fix dep, release bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-15 - 1.6.0 - New version - Ertan Güven - ertan@pisilinux.org - - - 2012-10-05 - 1.5.0 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - cpio - http://www.gnu.org/software/cpio/cpio.html - - PisiLinux Community - admins@pisilinux.org - - GPLv3 - app:console - system.base - A file archival tool which can also read and write tar files - Tar ve cpio dosyaları içine yazıp okuyabilen bir dosya arşivleme uygulaması - GNU cpio permet de copier des fichiers du système dans une archive cpio ou tar et vice-versa. L'archive peut être un simple fichier sur le disque, une cassette magnétique, ou un tuyau unix (pipe). GNU cpio gère les formats d'archive suivant : binaire, ASCII ancien, ASCII nouveau, crc, binaire HPUX, ASCII ancien HPUX, tar ancien et tar POSIX.1. - GNU cpio copies files into or out of a cpio or tar archive. The archive can be another file on the disk, a magnetic tape, or a pipe. GNU cpio supports the following archive formats: binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, and POSIX.1 tar. - GNU cpio dosyaları cpio veya tar arşivlerine kopyalamaya veya bu arşivlerden çıkarmak için tasarlanmıştır. Arşiv diskteki başka bir dosya, manyetik bir teyp veya bir boru sistemi olabilir. GNU cpio şu arşiv formatlarını destekler: ikili, eski ASCII, yeni ASCII, crc, HPUX ikili, HPUX eski ASCII, eski tar ve POSIX.1 tar. - mirrors://gnu/cpio/cpio-2.12.tar.bz2 - - cpio-2.9-exitCode.patch - CVE-2010-0624-rpatelib-overflow.patch - - system/base/cpio/pspec.xml - - - cpio - - /bin - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/locale - - - - - 2016-03-01 - 2.12 - Rebuild for toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-03 - 2.12 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 2.11 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 2.11 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-08-24 - 2.11 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - file - http://www.darwinsys.com/file/ - - PisiLinux Community - admins@pisilinux.org - - as-is - app:console - system.base - Program to identify a file's format by scanning binary data for patterns - Dosya tipini belirlemek için kullanılan bir uygulamadır - Programme servant à identifiant le format d'un fichier en analysant les données binaires en cherchant des patrons connus. - Program to identify a file's format by scanning binary data for patterns. - İkili veri taraması kullanarak (dosya uzantısına bakmadan) dosya biçimini tanımlamaya yarayan bir uygulamadır. - ftp://ftp.astron.com/pub/file/file-5.25.tar.gz - - zlib-devel - python-devel - - system/base/file/pspec.xml - - - file - - zlib - python - - - /usr/bin - /usr/lib - /usr/share/doc - /usr/share/man - /usr/share/misc - /usr/include - - - - - 2016-02-28 - 5.25 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-27 - 5.25 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-24 - 5.24 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-17 - 5.23 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-02 - 5.22 - Release bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 5.18 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 5.18 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-22 - 5.15 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-03-04 - 5.13 - Version bump - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-16 - 5.12 - New Release - PisiLinux Community - admins@pisilinux.org - - - 2012-11-22 - 5.11 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - openssl - http://www.openssl.org/ - - PisiLinux Community - admins@pisilinux.org - - as-is - app:console - library - system.base - Toolkit for SSL v2/v3 and TLS v1 - SSL v2/v3 ve TLS v1 için araç kiti - OpenSSL est un outil cryptographique implémentant une couche de communication sécurisée (SSL v2/v3) et une couche de transport sécurisée (TLS v1) - OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them. - OpenSSL, Güvenlik Soketleri Katmanı (SSL v2/v3) ve Aktarım Katmanı Güvenliği (TLSv1) ağ protokolleri ile bu protokollerin gerektirdiği şifreleme standartlarını uygulayan bir şifreleme aracıdır. - OpenSSL ist ein Kryptographie Werkzeug, das die Netzwerkprotokolle Secure Sockets Layer (SSL v2/v3) und Transport Layer Security (TLS v1) sowie deren erforderliche zugehörige Kryptographie Standards implementiert. - ftp://ftp.openssl.org/source/openssl-1.0.2g.tar.gz - - openssl-1.0.0-beta4-ca-dir.patch - - - zlib-devel - xorg-util - perl - sed - - -<<<<<<< HEAD - patches/linux/patch-4.4.1.xz - - kernel/tools/cpupowertools/pspec.xml -======= - openssl-1.0.0a-ldflags-norpath.patch - openssl-1.0.0-beta4-ca-dir.patch - openssl-1.0.0-beta5-enginesdir.patch - openssl-1.0.2-ipv6.patch - openssl-include.patch - openssl_fix_for_x32_2.patch - openssl-ca-certificates.patch - CVE-2014-0198.patch - openssl-1.0.2a-x32-asm.patch - - system/base/openssl/pspec.xml ->>>>>>> master - - - openssl - - zlib - ca-certificates - - - /etc - /usr/bin - /usr/lib - /usr/share/doc - - - System.Package - - - - openssl-devel - Development files for openssl - openssl için geliştirme dosyaları - system.devel - - openssl - - - /usr/include - /usr/share/man - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - - - - openssl-32bit - 32-bit shared libraries for openssl - openssl için 32-bit paylaşımlı kitaplıklar - emul32 - _emul32 - - zlib-32bit - - - openssl - zlib-32bit - glibc-32bit - - - /usr/lib32 - - - -<<<<<<< HEAD - - 2016-02-03 - 4.4.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-16 - 4.4.0 -======= - - 2016-03-02 - 1.0.2g ->>>>>>> master - Version bump. - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org - - - 2015-12-14 - 1.0.2e - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-02 - 1.0.2d - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-13 - 1.0.2c - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-23 - 1.0.2a - Rebuild. - Vedat Demir - vedat@pisilinux.org - - - 2015-04-11 - 1.0.2a - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-02-17 - 1.0.2 - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-11-05 - 1.0.1j - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-06-05 - 1.0.1h - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 1.0.1g - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-09 - 1.0.1g - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-02-02 - 1.0.1f - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-28 - 1.0.1e - Clean openssl. - Serdar Soytetir - kaptan@pisilinux.org - - - security - 2013-01-14 - 1.0.1e - New release - PisiLinux Community - admins@pisilinux.org - - - security - 2012-08-31 - 1.0.1c - First release - Erdem Artan - admins@pisilinux.org - - - - - - perl - http://www.perl.org/ - - PisiLinux Community - admins@pisilinux.org - - Artistic - GPLv2 - app:console - system.base - Larry Wall's Practical Extraction and Reporting Language - Perl dili - Perl est un langage de programmation multi-plateforme stable. - Perl is a high-level programming language with roots in C, sed, awk and shell scripting. Perl is good at handling processes and files, and is especially good at handling text. Perl's hallmarks are practicality and efficiency. While it is used to do a lot of different things, Perl's most common applications are system administration utilities and web programming. A large proportion of the CGI scripts on the web are written in Perl. You need the perl package installed on your system so that your system can handle Perl scripts. - Perl kararlı, platform bağımsız programlama dilidir. - Perl ist eine stabile, plattformunabhängige Programmiersprache - http://www.cpan.org/src/5.0/perl-5.22.1.tar.bz2 - - db-devel - gdbm-devel - zlib-devel - - - perl-5.10.0-x86_64-io-test-failure.patch - perl-5.14.1-offtest.patch - - system/base/perl/pspec.xml - - - perl-docs - Documentation files for perl - programming.language.perl - - /usr/share/doc/html - /usr/share/doc/perl/html - /usr/share/man/ - - - - perl - - db - gdbm - zlib - - - /usr/bin - /usr/lib - /usr/share/doc - - - Turkish.pm - - - - - 2016-03-01 - 5.22.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-09-10 - 5.20.0 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 5.18.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-08-28 - 5.18.1 - Version bump, clean perl. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-26 - 5.16.2 - Release bump, rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-19 - 5.16.2 - First release - PisiLinux Community - admins@pisilinux.org - - - 2012-09-06 - 5.16.1 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - libffi - http://sourceware.org/libffi - - PisiLinux Community - admins@pisilinux.org - - BSD - library - system.base - A portable foreign function interface library - Yabancı işlev arayüzleri için taşınabilir bir kitaplık - The libffi library provides a portable, high level programming interface to various calling conventions. - libffi kitaplığı, çeşitli işlev çağırma konvansiyonları için taşınabilir ve yüksek düzeyli bir programlama arayüzü sunar. - ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz - system/base/libffi/pspec.xml - - - libffi - - /usr/lib/libffi.* - /usr/share/doc - - - - libffi-devel - Development files for libffi - libffi için geliştirme dosyaları - system.devel - - libffi - - - /usr/lib/libffi-* - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/share/info - /usr/share/man - - - - libffi-32bit - 32-bit shared libraries for libffi - libffi için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - glibc-32bit - - - libffi - - - /usr/lib32/libffi.* - /usr/lib32/libffi-* - - - - - 2016-03-01 - 3.2.1 - Rebuild for toolchain. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-12-02 - 3.2.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 3.0.13 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 3.0.13 - Version bump, clean libffi. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-17 - 3.0.12 - New Release - PisiLinux Community - admins@pisilinux.org - - - 2012-07-11 - 3.0.11 - First release - Erdem Artan - admins@pisilinux.org - - - - - - nss-mdns - http://0pointer.de/lennart/projects/nss-mdns/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - Name Service Switch module - İsim servisi değiştirme modülü - Module d'échange de service de nom pour le DNS Multicast. - Name Service Switch module for Multicast DNS. - Çoklu gönderim yapan DNS'ler için isim servisi seçme modülü. - http://0pointer.de/lennart/projects/nss-mdns/nss-mdns-0.10.tar.gz - - nss-mdns-0.8-avahi-socket.patch - - system/base/nss-mdns/pspec.xml - - - nss-mdns - - /etc - /usr/lib - /usr/share/doc - - - mdns.allow - - - - - 2014-05-11 - 0.10 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 0.10 - Rebuild - Pisi Linux Admins - admins@pisilinux.org - - - 2010-10-11 - 0.10 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - comar-api - http://www.pisilinux.org - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - Utility functions for Comar scripts - Çomar betikleri için yardımcı fonksiyonlar - Librairie utilitaire générique pour les opérations communes de scripts Comar. - Generic utility library for common Comar script operations. - Çomar betiklerinde sıkça yapılan ortak işlemler için yardımcı fonksiyonlar kitaplığı. - http://source.pisilinux.org/1.0/comar-api-2.4.9.tar.gz - - python - - - run_dir.patch - pisilinux.patch - add-stopdependencies.patch - - system/base/comar-api/pspec.xml - - - comar-api - - python - pisilinux-python - - - /usr/lib/pisilinux - /usr/lib/python2.7 - - - - - 2014-08-20 - 2.4.9 - Fix paths. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 2.4.9 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 2.4.9 - Release bump, clean comar-api. - Serdar Soytetir - kaptan@pisilinux.org - - - 2010-11-29 - 2.4.9 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - expat - http://expat.sourceforge.net/ + libpng + http://www.libpng.org/ PisiLinux Community admins@pisilinux.org as-is library - system.base - librairies d'analyse XML - XML parsing libraries - XML ayrıştırıcı kütüphaneleri - XML Parser Bibliotheken - This is expat, the C library for parsing XML, written by James Clark. Expat is a stream oriented XML parser. This means that you register handlers with the parser prior to starting the parse. These handlers are called when the parser discovers the associated structures in the document being parsed. A start tag is an example of the kind of structures for which you may register handlers. - mirrors://sourceforge/expat/expat-2.1.0.tar.gz - - gnuconfig - glibc-devel - - system/base/expat/pspec.xml - - - expat - - /usr/bin - /usr/lib - /usr/share/doc - /usr/share/man - - - - expat-devel - Development files for expat - expat için geliştirme dosyaları - system.devel - - glibc-32bit - - - expat - - - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/share/doc/expat/html - - - - expat-32bit - 32-bit shared libraries for expat - expat için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - expat - - - /usr/lib32 - - - - - 2016-03-02 - 2.1.0 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 2.1.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-27 - 2.1.0 - Move pc files to devel pack, rebuild - PisiLinux Community - admins@pisilinux.org - - - 2013-01-21 - 2.1.0 - Remove patch which causing test error for perl-XML-Parser. - Marcin Bojara - marcin@pisilinux.org - - - 2011-03-01 - 2.1.0 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - nettle - http://www.gnu.org - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - system.base - The Nettle package contains the low-level cryptographic library. - Nettle - biblioteka kryptograficzna. - The Nettle package contains the low-level cryptographic library that is designed to fit easily in many contexts. - ftp://ftp.gnu.org/gnu/nettle/nettle-3.1.1.tar.gz - - gmp-devel - - system/base/nettle/pspec.xml - - - nettle - - gmp - - - /usr/bin - /usr/lib - /usr/share/info - /usr/share/doc - - - - nettle-devel - Nettle için geliştirme dosyaları - nettle için geliştirme dosyaları. - Pliki nagłówkowe biblioteki nettle. - - nettle - - - /usr/include - /usr/lib/pkgconfig/nettle.pc - /usr/lib/pkgconfig/hogweed.pc - /usr/lib32/pkgconfig/nettle.pc - /usr/lib32/pkgconfig/hogweed.pc - - - - nettle-32bit - 32-bit shared libraries for nettle - emul32 - emul32 - - gmp-32bit - glibc-32bit - - - nettle - glibc-32bit - gmp - - - /usr/lib32/ - - - - - 2015-07-05 - 3.1.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 2.7.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-28 - 2.7.1 - Version bump, clean nettle. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-26 - 2.6 - Move pc files to devel pack, rebuild. - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-02-14 - 2.6 - Version bump - Ertan Güven - ertan@pisilinux.org - - - 2012-09-29 - 2.5 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - python-psutil - https://github.com/giampaolo/psutil - - PisiLinux Community - admins@pisilinux.org - - BSD - library - system.base - A cross-platform process utilities module for Python - Platform bağımsız, süreçler hakkında bilgi sağlayan bir Python modülü - python-psutil is a module providing an interface for retrieving information on all running processes and system utilization (CPU, memory) in a portable way by using Python, implementing many functionalities offered by command line tools like ps, top, kill, lsof and netstat. - python-psutil, bütün çalışan süreçler ve sistem kullanımı (MİB - Merkezi İşlem Birim(CPU) ve hafıza gibi) hakkında bilgilere erişimek için arayüz sunan bir Python modülüdür. ps, top, kill, lsof, netstat gibi bir çok komut satırı araçlarının sunduğu işlevselliği sağlamaktadır. - https://github.com/giampaolo/psutil/archive/release-4.0.0.tar.gz - - python-devel - - system/base/python-psutil/pspec.xml - - - python-psutil - - python - - - /usr/lib - /usr/share/doc - - - - - 2016-03-02 - 4.0.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-12 - 2.2.1 - Version bump - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2013-11-19 - 1.1.3 - Version bump - Burak Fazıl Ertürk - burakerturk@pisilinux.org - - - 2012-11-16 - 0.6.1 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - net-tools - http://sites.inka.de/lina/linux/NetTools/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Standard Linux networking tools - Linux ağ araçları - net-tools est une collection de programmes représentant les outils réseau de base du système d'exploitation Linux. S'y trouvent arp, hostname, ifconfig, ipmaddr, iptunnel, mii-tool, nameif, netstat, plipconfig, rarp, route et slattach. - net-tools is a collection of programs that form the base set of the networking tools for the Linux operating system. It includes arp, hostname, ifconfig, ipmaddr, iptunnel, mii-tool, nameif, netstat, plipconfig, rarp, route and slattach. - Net-tools, Linux işletim sisteminde kullanılan ağ ile ilgili temel araçların bir birleşimidir. Arp, hostname, ifconfig, ipmaddr, iptunnel, mii-tool, nameif, netstat, plipconfig, rarp, route ve slattach programlarını içerir. - ftp://ftp.linux.org.tr/pub/mirrors/gentoo/distfiles/net-tools-1.60.tar.bz2 - - 01_all_net-tools-1.60-2.6-compilefix.patch.bz2 - 02_all_net-tools-1.60-gcc34.patch.bz2 - 03_all_net-tools-1.60-cleanup-list-handling.patch.bz2 - 04_all_net-tools-1.60-get_name.patch.bz2 - 20_all_net-tools-1.54-ipvs.patch.bz2 - 21_all_net-tools-1.57-bug22040.patch.bz2 - 22_all_net-tools-1.60-manydevs.patch.bz2 - 23_all_net-tools-1.60-miiioctl.patch.bz2 - 24_all_net-tools-1.60-virtualname.patch.bz2 - 25_all_net-tools-1.60-cycle.patch.bz2 - 26_all_net-tools-1.60-overflow.patch.bz2 - 27_all_net-tools-1.60-netstat_ulong.patch.bz2 - 50_all_net-tools-1.60-multiline-string.patch.bz2 - 51_all_net-tools-1.60-man.patch.bz2 - 52_all_net-tools-1.60-numeric-ports.patch.bz2 - 53_all_net-tools-1.60-appletalk.patch.bz2 - 54_all_net-tools-1.60-wide.patch.bz2 - 55_all_net-tools-1.60-Makefile.patch.bz2 - 56_all_net-tools-1.60-ipv6-hostname.patch.bz2 - 57_all_net-tools-1.60-ifconfig-infiniband.patch.bz2 - 60_all_net-tools-1.60-headers.patch.bz2 - net-tools-missing.patch - kernel_headers.patch - gcc-4.3.patch - large-buffer.patch - - system/base/net-tools/pspec.xml - - - net-tools - - comar - comar-api - - - /bin - /sbin - /usr/bin - /usr/sbin - /usr/share/doc - /usr/share/man - /usr/share/locale - - - - - 2014-05-11 - 1.60 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-30 - 1.60 - Rebuild - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-10-13 - 1.60 - First release - Erdem Artan - admins@pisilinux.org - - - - - - findutils - http://www.gnu.org/software/findutils/findutils.html - - PisiLinux Community - admins@pisilinux.org - - GPLv3+ - app:console - system.base - GNU utilities to find files - Dosya bulmak için kullanılan GNU uygulamaları - Les utilitaires de recherche GNU sont les utilitaire de recherche de répertoire basique du système d'exploitation GNU. Ces programmes sont typiquement associés à d'autres programmes pour leur fournir une capacité de recherche de fichier et de répertoire puissante et modulaire à d'autres commandes. - The GNU Find Utilities are the basic directory searching utilities of the GNU operating system. These programs are typically used in conjunction with other programs to provide modular and powerful directory search and file locating capabilities to other commands. - GNU Find Utilities GNU işletim sisteminin temel dizin arama uygulamalarıdır. Bu uygulamalar diğer komutlara başka programlar ile birlikte çalışarak modüler ve güçlü dizin ve dosya arama yetenekleri sunar. - http://ftp.gnu.org/pub/gnu/findutils/findutils-4.6.0.tar.gz - -<<<<<<< HEAD - kernel-module-headers -======= - gettext-devel - texinfo ->>>>>>> master - - system/base/findutils/pspec.xml - - -<<<<<<< HEAD - module-virtualbox - - noDelta - - - kernel - module-virtualbox-userspace - - - /lib/modules - - - - module-virtualbox-userspace - Userspace documentation, tools, udev and modprobe rules for the kernel driver virtualbox - virtualbox çekirdek sürücüsü için kullanıcı tarafı belgeler, araçlar, udev ve modprobe kuralları - - noDelta - -======= - findutils ->>>>>>> master - - /usr/bin - /usr/lib/find - /usr/libexec - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/locale - /var - - - -<<<<<<< HEAD - - 2016-02-03 - 5.0.12 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-16 - 5.0.12 - Rebuild. -======= - - 2016-02-28 - 4.6.0 - Rebuild with new toolchain. ->>>>>>> master - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-03 - 4.6.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 4.4.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-09-01 - 4.4.2 - Revert back to stable version, clean findutils. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-14 - 4.5.9 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - rsyslog - http://www.rsyslog.com - - PisiLinux Community - admins@pisilinux.org - - GPLv3+ - service - system.base - Enhanced system logging and kernel message trapping daemons - Gelişmiş sistem günlükleme hizmeti - rsyslog is an enhanced multi-threaded syslogd supporting, among others, MySQL, syslog/tcp, RFC 3195, permitted sender lists, filtering on any message part, and fine grain output format control. It is quite compatible with stock sysklogd and can be used as a drop-in replacement. - rsyslog, çoklu iş parçacığı, MySQL, syslog/tcp, RFC 3195, izin verilen gönderici listesi, gelişmiş ileti filtreleme gibi özelliklere sahip gelişmiş bir sistem günlükleme hizmetidir. - http://www.rsyslog.com/files/download/rsyslog/rsyslog-8.11.0.tar.gz + multimedia.graphics + Portable Network Graphics library + PNG kütüphanesi + Le format de Graphique Réseau Portable (Portable Network Graphics - PNG) a été conçu pour remplacer le format GIF plus simple et vieillissant ainsi que, d'une certaine manière, le format TIFF beaucoup plus complexe. L'objectif principal du projet est de se concentrer sur deux aspects majeurs : La toile mondiale (World Wide Web - WWW) et l'édition d'image. + The Portable Network Graphics (PNG) format was designed to replace the older and simpler GIF format and, to some extent, the much more complex TIFF format. Project's main aim is to concentrate on two major uses: the World Wide Web (WWW) and image-editing. + Taşınabilir Ağ Grafikleri (PNG) formatı eski ve daha basit GIF formatının yerine geçmek ve daha karmaşık yapıdaki TIFF formatını biraz daha genişletmek için tasarlanmıştır. Projenin ana hedefi iki önemli parça üzerine konsantre olmaktır: World Wide Web (WWW) ve resim düzenleme. + mirrors://sourceforge/libpng/libpng-1.6.18.tar.xz zlib-devel - json-c-devel - libestr-devel - libgcrypt-devel - liblogging-devel - system/base/rsyslog/pspec.xml + + libpng-1.6.18-apng.patch.gz + libpng-multilib.patch + + multimedia/graphics/libpng/pspec.xml - rsyslog + libpng zlib - json-c - libestr - libgcrypt - liblogging - - - /usr/bin/rsyslogd - /usr/lib/rsyslog - /usr/share/man - /usr/share/doc - /etc/logrotate.d - /etc/conf.d - /etc/rsyslog.d - /etc/rsyslog.conf - /var - - - System.Service - - - rsyslog.logrotate - rsyslog.conf - 50-default.conf - rsyslog.sysconfig - - - - - 2015-07-13 - 8.11.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-05 - 8.9.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 7.6.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-30 - 7.6.3 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-13 - 7.2.5 - Rebuild Unused - Varol Maksutoğlu - waroi@pisilinux.org - - - 2013-07-26 - 7.2.5 - Release bump, fix dep. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-01-14 - 7.2.5 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-11-21 - 7.2.3 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - time - ftp://prep.ai.mit.edu/pub/gnu/time - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - A GNU utility for monitoring a program's use of system resources - Bir programın sistem kaynak kullanımını izleyen GNU aracı - time utility runs another program, collects information about the resources used by that program while it is running, and displays the results. - time başka bir programı çalıştırarak o programın sistem kaynaklarını nasıl kullandığını izler ve topladığı bilgileri ekrana basar. - ftp://prep.ai.mit.edu/pub/gnu/time/time-1.7.tar.gz - - time-1.7-destdir.patch - - system/base/time/pspec.xml - - - time - - /usr/bin/ - /usr/share/info - - - - - 2014-05-11 - 1.7 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-09-01 - 1.7 - Clean time, add patches. - Serdar Soytetir - kaptan@pisilinux.org - - - 2010-10-11 - 1.7 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - comar - http://www.pisilinux.org - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - service - system.base - Manages system configuration - Sistem yapılandırmasını yönetir - Les programmes Pisi Linux sont mis sous forme de paquets à l'aide de petits scripts. Ces derniers les configure afin qu'ils s'intègrent entre eux et avec le système. Çomar est l'outil qui gère et exécute ces scripts. - Pisi Linux programs are packaged with small scripts which configures them to entegrate with system and each other. Çomar is the tool which manages and executes these scripts. - Pisi Linux yazılımları, birbirleri ve sistemle otomatik olarak uyum sağlayabilmek için yanlarında ufak programcıklar ile paketlenmektedir. Bu programcıkların yönetimi ve işletilmesi Çomar aracı tarafından yapılmaktadır. - Pisi Linux Programme werden mit einem kleinen Skript paketiert, welches sie konfiguriert, um die Integrität mit dem System und anderen Programmen sicherzustellen. Comar ist das Werkzeug, das diese Skripte verwaltet und ausführt. - http://source.pisilinux.org/1.0/comar-3.0.3.tar.bz2 - - dbus-devel - python-devel - cmake - - - run_dir.patch - fix-flags.patch - update-system-manager-model.patch - - system/base/comar/pspec.xml - - - comar - - dbus - python - polkit - dbus-python - - - /usr/bin - /usr/sbin - /etc - /usr/share/dbus-1/system-services - /usr/share/polkit-1/actions - /usr/share/doc/ - /var/db - - - System.Package - - - - - 2015-04-22 - 3.0.3 - Fix run dir path. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 3.0.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 3.0.3 - Release bump, clean comar. - Serdar Soytetir - kaptan@pisilinux.org - - - 2011-05-18 - 3.0.3 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - bzip2 - http://www.bzip.org/ - - PisiLinux Community - admins@pisilinux.org - - BZIP2 - app:console - system.base - A high-quality data compressor - Yüksek kaliteli bir veri sıkıştırma uygulaması - bzip2 est un compresseur de données de très grand qualité. Il compresse typiquement les fichiers à un ratio entre 10 et 15% des meilleurs techniques disponibles (la famille des compresseurs statistiques de famille PPM) tout en étant environ deux fois plus rapide à la compression et six fois plus rapide à la décompression. - bzip2 is high-quality data compressor. It typically compresses files to within 10% to 15% of the best available techniques (the PPM family of statistical compressors), whilst being around twice as fast at compression and six times faster at decompression. - bzip2 yüksek kaliteli bir veri sıkıştırma programıdır. Program genellikle dosyaları mümkün olan en iyi teknikler ile (PPM istatistiksel sıkıştırıcı ailesi) %10 - %15'e kadar sıkışıtırabilmektedir. Sıkıştırma işleminde iki kata kadar hızlı iken açma hızında yaklaşık altı kat daha hızlıdır. - bzip2 ist ein hochwertiger Daten-Kompressor. Es komprimiert Dateien üblicherweise auf 10% bis 15% der bestmöglichen Techniken (die PPM Familie der statistischen Kompressoren), während es ungefähr doppelt so schnell komprimiert und sechsfach schneller extrahiert - http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz - - bzip2-1.0.2-progress.patch - bzip2-1.0.4-bzip2recover.patch - bzip2-1.0.4-man-links.patch - bzip2-1.0.6-saneso.patch - manpath.patch - - system/base/bzip2/pspec.xml - - - bzip2 - - /bin - /lib - /usr/lib - /usr/share/doc - /usr/share/man - /usr/include - - - - - 2016-02-28 - 1.0.6 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-17 - 1.0.6 - rebuild for fix #190. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-09-30 - 1.0.6 - Rebuild,cleanup, enable tests. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 1.0.6 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-28 - 1.0.6 - Release bump,clean bzip2. - Serdar Soytetir - kaptan@pisilinux.org - - - 2010-10-11 - 1.0.6 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - baselayout - http://www.pisilinux.org - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - library - data - system.base - Filesystem baselayout - Dosya sisteminin temel planı - Ce paquet crée la hiérarchie du système de fichier principal de Pisi Linux. - baselayout creates the Pisi Linux Linux main filesystem hierarchy. - Bu paket, Pisi Linux dosya sisteminin temelini oluşturur. - http://source.pisilinux.org/1.0/baselayout-3.10.0.tar.gz - system/base/baselayout/pspec.xml - - - baselayout - - pypolkit - - - /bin - /sbin - /lib* - /etc - /etc/pisilinux-release - /media - /boot - /proc - /home - /mnt - /opt - /dev - /run - /sys - /srv - /tmp - /usr - /var - /usr/lib/tmpfiles.d/baselayout.conf - - - System.PackageHandler - System.Package - User.Manager - Network.Stack - - - baselayout.conf - services - protocols - sysctl.conf - pisilinux-release - start-stop-daemon.8 - - - - - 2016-01-16 - 3.10.0 - Release Alfa7, New Cat in town... - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-30 - 3.10.0 - Release Alfa6. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-18 - 3.10.0 - Release bump - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-07-16 - 3.10.0 - Add vboxusers - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-07-16 - 3.10.0 - Release Pisi Linux 1.0 - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 3.10.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-15 - 3.10.0 - Rebuild. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-19 - 3.10.0 - Update baselayout.conf - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-08 - 3.10.0 - Add baselayout.conf - Marcin Bojara - marcin@pisilinux.org - - - 2013-12-20 - 3.10.0 - Release Pisi Linux Rc2 - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-27 - 3.10.0 - Add gdm user and group, apply chmod 1777 to dev/shm aka run/shm. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-09-10 - 3.10.0 - Add shm dir to run, new archive. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-09-05 - 3.8.0 - Add missing method to pakhandler.py - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 3.8.0 - release Izmir - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-03-24 - 3.8.0 - Pisi Linux changes. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-01-11 - 3.7.1 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - curl - http://curl.haxx.se/ - - PisiLinux Community - admins@pisilinux.org - - MIT - X11 - app:console - library - system.base - Un client qui maîtrise tout ce qui concerne les URLs - A utility for getting files from remote servers - Uzak sunuculardan dosya indirmek için bir araç - Ein Client, der URLs versteht - curl is a command line tool for transferring data with URL syntax, supporting various protocols. - curl çeşitli protokolleri destekleyen, URL söz dizimini kullanarak uzak sunuculardan veri aktarmak için kullanılan bir komut satırı aracıdır. - http://curl.haxx.se/download/curl-7.47.1.tar.bz2 - -<<<<<<< HEAD - kernel-module-headers -======= - glibc-devel - zlib-devel - openssl-devel - libidn-devel - libssh2-devel - ca-certificates ->>>>>>> master - - - curl-ac.patch - - system/base/curl/pspec.xml - - - curl - - zlib - libidn - libssh2 - openssl - ca-certificates - - - /usr/bin - /usr/lib - /usr/share/doc/ - /usr/share/man/ - /usr/share/curl - /usr/share/zsh - - - curl-devel - - - - curl-devel - Development files for curl - curl için geliştirme dosyaları - system.devel - -<<<<<<< HEAD - kernel -======= - curl ->>>>>>> master - - - /usr/lib/pkgconfig - /usr/bin/curl-config - /usr/include/curl - /usr/share/aclocal - - - -<<<<<<< HEAD - - 2016-02-03 - 1.59 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-16 - 1.59 -======= - - 2016-03-02 - 7.47.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-28 - 7.47.0 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-05-28 - 7.42.1 ->>>>>>> master - Rebuild. - Vedat Demir - vedat@pisilinux.org - - - 2015-05-01 - 7.42.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2015-04-27 - 7.42.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2015-01-11 - 7.40.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-01-10 - 7.39.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-07-18 - 7.37.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-29 - 7.37.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 7.36 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 7.36 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-12-19 - 7.34.0 - Version bump. - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2013-10-25 - 7.33.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-06-28 - 7.31.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-11 - 7.28.1 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 7.27.0 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - libssh2 - http://www.libssh2.org/ - - PisiLinux Community - admins@pisilinux.org - - BSD - library - system.base - A library implementing the SSH2 protocol - SSH2 protokolü için kütüphane - libssh2 is a library implementing the SSH2 protocol as defined by Internet Drafts: SECSH-TRANS, SECSH-USERAUTH, SECSH-CONNECTION, SECSH-ARCH, SECSH-FILEXFER, SECSH-DHGEX, SECSH-NUMBERS, and SECSH-PUBLICKEY. - libssh2, SECSH-TRANS, SECSH-USERAUTH, SECSH-CONNECTION, SECSH-ARCH, SECSH-FILEXFER, SECSH-DHGEX, SECSH-NUMBERS ve SECSH-PUBLICKEY gibi Internet Taslakları tarafından belirlenen SSH2 protokolü için geliştirilmiş bir kütüphanedir. - http://www.libssh2.org/download/libssh2-1.4.3.tar.gz - -<<<<<<< HEAD - kernel-module-headers -======= - openssl-devel - zlib-devel ->>>>>>> master - - system/base/libssh2/pspec.xml - - - libssh2 - -<<<<<<< HEAD - kernel -======= - openssl - zlib ->>>>>>> master /usr/lib @@ -3561,18740 +439,103 @@ - libssh2-devel - Development files for libssh2 - libssh2 için geliştirme dosyaları - system.devel + libpng-devel + Development files for libpng + libpng için geliştirme dosyaları - libssh2 - - - /usr/include - /usr/lib/pkgconfig - /usr/share/man - - - -<<<<<<< HEAD - - 2016-02-03 - 0.8 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-16 - 0.8 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com -======= - - 2014-05-11 - 1.4.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org ->>>>>>> master - - - 2013-02-15 - 1.4.3 - Version bump - Ertan Güven - ertan@pisilinux.org - - - 2012-06-12 - 1.4.2 - First release - Erdem Artan - admins@pisilinux.org - - - - - - mudur - http://www.pisilinux.org - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Pisi Linux boot and initialization system - Pisi Linux açılış sistemi - Gère le montage de systèmes de fichier, le chargement de pilotes de périphérique, le démarrage des services système et d'autres tâches pendant les séquences de démarrage et d'arrêt de Pisi Linux. - mudur handles mounting of the filesystems, loading of the device drivers, starting of the system services, and other jobs during the Pisi Linux boot and shutdown sequences. - Pisi Linux açılış ve kapanışı sırasında, dosya sistemlerinin bağlanması, donanım sürücülerinin yüklenmesi, servislerin başlatılması gibi işleri yürütür. - http://source.pisilinux.org/1.0/mudur-4.4.0.tar.xz - - set_file_mode.patch - no_err-no_msg.patch - recreate_dir_if_new_uid_or_gid.patch - boot_option.patch - mount_cgroupfs.patch - - system/base/mudur/pspec.xml - - - mudur - - kbd - bash - dbus - kmod - eudev - comar - procps - python - rsyslog - sysvinit - coreutils - e2fsprogs - net-tools - baselayout - util-linux - wireless-tools - pisilinux-python - - - /etc/conf.d - /etc/mudur/services - /etc/init.d - /sbin - /bin - /usr/share/locale - - - System.PackageHandler - System.Service - System.Package - System.Settings - Disk.Manager - - - - - 2016-01-03 - 4.4.0 - fix issue #562, rebuild, depend new kbd and eudev, mount cgroups - Marcin Bojara - marcin@pisilinux.org - - - 2014-08-03 - 4.4.0 - Set mode for newly created files. - Marcin Bojara - marcin@pisilinux.org - - - 2014-06-11 - 4.4.0 - Recreate dir if uid or gid has been changed. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 4.4.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-06 - 4.4.0 - No error line in log file when tmpfiles created successfully. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-16 - 4.4.0 - Remove /dev/shm line from /etc/fstab. - Add mounting /run to fstab for fresh installed system. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-07 - 4.4.0 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-02-13 - 4.3.1 - Mount or remount tmpfs at /run. - Starts with kmod.conf and baselayout.conf at the begining. - Strip mudur_tmpfiles output. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-10 - 4.3.1 - Try to fix D-Bus start issue using cleanup_run. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-01-21 - 4.3.1 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-19 - 4.3.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 4.2.0 - rebuild - Marcin Bojara - marcin@pisilinux.org - - - 2013-09-10 - 4.2.0 - Run udev after remount rootfs. - Fix /run/shm mode. - Marcin Bojara - marcin@pisilinux.org - - - 2013-09-05 - 4.2.0 - Add missing method to pakhandler.py - Marcin Bojara - marcin@pisilinux.org - - - 2013-06-26 - 4.2.0 - Fix migration from /var/run to /run - Marcin Bojara - marcin@pisilinux.org - - - 2013-05-15 - 4.2.0 - Fix default groups for /sbin/useradd - Marcin Bojara - marcin@pisilinux.org - - - 2012-12-02 - 4.2.0 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - man-db - http://www.nongnu.org/man-db/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2+ - GPLv3+ - app:console - data:doc - system.base - Application to read Linux man pages - Kapsamlı Linux kılavuzları - Man package consists of programs which is used to read most of the documentation available in linux system. For example, you can write "man nameoftheprogram" into the konsole or "man:nameoftheprogram" into the konqueror to get a detailed usage information for many programs. - man-db paketi Linux ile ilgili yazılmış dökümanların büyük çoğunluğunu okunması için gerekli programları sunar. Örneğin, konsola "man programadı" ya da konquerora "man:programadı" yazarak birçok program hakkında detaylı kullanım bilgisi alabilirsiniz. - http://download.savannah.gnu.org/releases/man-db/man-db-2.7.5.tar.xz - -<<<<<<< HEAD - kernel-module-headers -======= - less - gzip - groff - gdbm-devel - zlib-devel - gettext-devel - libpipeline-devel ->>>>>>> master - - system/base/man-db/pspec.xml - - - man-db - -<<<<<<< HEAD - kernel - baselayout - module-virtualbox-guest-userspace -======= - gdbm - zlib - libpipeline ->>>>>>> master - - - /etc - /usr/lib - /usr/bin - /usr/sbin - /usr/libexec - /usr/share/locale - /usr/share/doc - /usr/share/man - /var/cache - - - mandb.conf - mandb.cron.daily - - - -<<<<<<< HEAD - - 2016-02-03 - 5.0.12 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-16 - 5.0.12 - Rebuild -======= - - 2015-11-29 - 2.7.5 - Version bump. ->>>>>>> master - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-27 - 2.7.4 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-25 - 2.7.2 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-06 - 2.7.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 2.6.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-03 - 2.6.3 - Rebuild for openjdk. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-28 - 2.6.3 - rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-03-04 - 2.6.3 - Add some patches, cleanup. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-27 - 2.6.3 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - sqlite - http://www.sqlite.org/ - - PisiLinux Community - admins@pisilinux.org - - as-is - library - system.base - An SQL Database Engine in a C Library - Bir C kütüphanesi içindeki bir SQL veritabanı motoru - SQLite est une petite librairie C implémentant un moteur de base de données SQL auto-configurée, auto-suffisante, pouvant être embarquée. Gère des bases de données de tailles allant jusqu'à 2 téraOctets. - SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine. Supports databases up to 2 terabytes in size. - SQLite hiçbir ayar gerektirmeyen, başka programların içine gömülebilir bir SQL veritabanı motorudur. 2 terabayta kadar büyüklükteki veritabanlarını tutabilir. - http://www.sqlite.org/2016/sqlite-autoconf-3110000.tar.gz - http://www.sqlite.org/2016/sqlite-doc-3110000.zip - - readline-devel - - system/base/sqlite/pspec.xml - - - sqlite - - readline - - - /usr/lib - /usr/share/man - /usr/bin - /usr/share/doc/sqlite/README - - - - sqlite-devel - Development files for sqlite - sqlite için geliştirme dosyaları - system.devel - - sqlite - - - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - - - - sqlite-32bit - 32-bit shared libraries for sqlite - emul32 - emul32 - - glibc-32bit - - - glibc-32bit - sqlite - - - /usr/lib32 - - - - sqlite-doc - sqlite-doc, sqlite için doküman belgeleri - - sqlite - - - /usr/share/doc/sqlite/ - - - - - 2016-03-02 - 3.11.0.0 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-06-08 - 3.8.10.2 - Version bump. - Osman Erkan - osman.erkan@pisilinux.org - - - 2015-02-28 - 3.8.8.3 - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2015-01-31 - 3.8.8.2 - Version bump. - Hakan Yıldız - hknyldz93@gmail.com - - - 2015-01-24 - 3.8.8.1 - Version bump. - Hakan Yıldız - hknyldz93@gmail.com - - - 2014-12-05 - 3.8.7.2 - Version bump. - Osman Erkan - osman.erkan@pisilinux.org - - - 2014-07-09 - 3.8.5 - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 3.8.4.3 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-03-29 - 3.8.4.2 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 3.8.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-06-28 - 3.7.17 - Move pc files to devel pack, increase release no. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-06-28 - 3.7.17 - Version bump - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-21 - 3.7.15.2 - bump - Erdinç Gültekin - admins@pisilinux.org - - - 2012-12-15 - 3.7.14 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - gzip - http://www.gnu.org/software/gzip - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - LGPLv2.1 - app:console - system.base - Standard GNU compressor - GNU dosya arşiv aracı - gzip (GNU zip) est un programme populaire de compression de donnée écrit pour le projet GNU. - gzip (GNU zip) is a popular data compression program written for the GNU project. - Gzip (GNU zip) GNU projesi için geliştirilmiş popüler bir veri sıkıştırma programıdır. - http://ftp.gnu.org/gnu/gzip/gzip-1.6.tar.xz - system/base/gzip/pspec.xml - - - gzip - - /bin - /usr/share/doc - /usr/share/man - /usr/share/info - - - - - 2016-02-28 - 1.6 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.6 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 1.6 - Version bumm, clean gzip. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-08-23 - 1.5 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - fuse - http://fuse.sourceforge.net - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - Interface implémentée dans l'environnement utilisateur (userpace) pour les systèmes de fichier. - An interface for filesystems implemented in userspace - Kullanıcı düzeyinde dosya sistemi oluştumaya yarayan kitaplık - Una interfaz para sistemas de archivos implementados en el espacio de usuario - fuse is a backend allowing regular users to (un)mount filesystems for their own use. - FUSE, kullanıcıların kendileri için dosya sistemleri oluşturmasına, bağlamasına ve bağı koparmasına imkân veren bir arkauç kitaplıktır. - https://github.com/libfuse/libfuse/releases/download/fuse_2_9_5/fuse-2.9.5.tar.gz - - gettext-devel - - - skip_umount_test.patch - - system/base/fuse/pspec.xml - - - fuse - - glibc - - - /bin - /sbin - /usr/bin - /lib - /usr/share/doc - /usr/share/man - - - - fuse-devel - Development files for fuse - fuse için geliştirme dosyaları - system.devel - - fuse - - - /usr/include - /usr/lib/pkgconfig - - - - - 2015-08-18 - 2.9.5 - Version bump. - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org - - - 2015-08-18 - 2.9.4 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 2.9.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-24 - 2.9.3 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2014-01-20 - 2.9.3 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-12-21 - 2.9.2 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - pypolkit - http://www.pisilinux.org - - PisiLinux Community - admins@pisilinux.org - - MIT - library - system.base - Python binding of PolicyKit - PolicyKit için Python bağlayıcısı - pypolkit is a Python binding for the PolicyKit library. - pypolkit PolicyKit için geliştirilmiş bir Python bağlayıcısıdır. - http://source.pisilinux.org/1.0/pypolkit-1.0.2.tar.gz - - glib2-devel - python-devel - polkit-devel - - system/base/pypolkit/pspec.xml - - - pypolkit - - glib2 - polkit - python - - - /usr/lib - /usr/share/doc - - - - - 2015-07-22 - 1.0.2 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.0.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-01 - 1.0.2 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-30 - 1.0.2 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2010-11-26 - 1.0.2 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - pcmciautils - http://www.kernel.org/pub/linux/utils/kernel/pcmcia/pcmcia.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Utilitaires divers concernant le bus PCMCIA. - Various utilities dealing with the PCMCIA bus - PCMCIA veriyolu işlevleri ile ilgili çeşitli araçlar - Verschiedene Werkzeuge, um mit dem PCMCIA Bus umzugehen - pcmciautils contains the initialization tools necessary to allow the PCMCIA subsystem to behave as every other hotpluggable bus system. - pcmciautils PCMCIA altyapısının tak/çıkar veriyolları gibi davranmasını sağlayan araçları içerir. - https://sources.archlinux.org/other/pcmciautils/pcmciautils-018.tar.xz - -<<<<<<< HEAD - kernel-module-headers -======= - sysfsutils-devel ->>>>>>> master - - system/base/pcmciautils/pspec.xml - - - pcmciautils - -<<<<<<< HEAD - kernel - module-broadcom-wl-userspace -======= - sysfsutils ->>>>>>> master - - - /sbin - /lib/udev - /etc/pcmcia - /usr/share/doc - /usr/share/man - /lib/udev/rules.d - - - - - 2014-05-11 - 018 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-21 - 018 - rebuild - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-01-21 - 018 - Version bump - Marcin Bojara - marcin@pisilinux.org - - - 2010-10-11 - 017 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - pisi - http://www.pisilinux.org/ - - Marcin Bojara - marcin@pisilinux.org - - GPLv2 - app:console - system.base - PISI is the package management system of Pisi Linux - PİSİ PiSi Linux'un paket yönetim sistemidir - PiSi – menadżer pakietów dla PiSi Linux. - PISI est gestionnaire de paquets moderne implémenté en Python.Ces principales fonctionnalités sont les suivantes : - Les paquets sources sont écrits en XML et en python - Implemente tout les fonctions à travers une API simple d'utilisation - Intègre aussi bien les fonctionnalités de bas niveaux que de haut niveau de gestion de paquets. - PISI is a modern package management system implemented in Python. Some of its main features are: package sources are written in XML and python, implements all functions through a simple-to-use API, integrates low-level and high-level package management features. - PİSİ Python'da yazılmış modern bir paket yöneticisidir. Bazı ana özellikleri: Paket kaynakları XML ve python kullanılarak yazılır, bütün işlevleri kullanması kolay bir API ile sağlar ve düşük ve yüksek seviyeli paket yönetim işlevlerini birleştirir. - PISI jest podstawowym narzędziem do instalacji, aktualizacji i usuwania pakietów. Obsługuje zależności dla poszczególnych pakietów, bibliotek i zadań ÇOMAR-a. Instalacja oprogramowania odbywa się w łatwy i przyjazny sposób. Do przechowywania informacji o pakietach wykorzystuje bazę Berkeley DP, co zapewnia większą stabilność i szybkość. - http://source.pisilinux.org/1.0/pisi-2.6.tar.xz - - pisi.conf-i686 - pisi.conf-x86_64 - - - comar - plyvel - python - gettext - libunwind-devel - intltool - leveldb-devel - - - initialize_filesdb_once.patch - no_clean_if_ignore_comar.patch - orphaned_pkgs.patch - improve_pisi_ix.patch - fix_emul32_flags.patch - pisi-2.6-pisitools.dopixmaps-add.patch - - system/base/pisi/pspec.xml - - - pisi - - tar - file - comar - plyvel - python - gettext - leveldb - piksemel - comar-api - urlgrabber - python-psutil - libunwind - python-pyliblzma - mudur - - - /usr/bin - /usr/sbin - /usr/lib/pardus/pisi - /usr/lib/pisilinux/pisi - /usr/share/locale - /usr/share/doc - /etc/pisi - /usr/share/mime/packages - /usr/lib/tmpfiles.d/pisi.conf - /run/lock/files.ldb/LOCK - /var/lib/pisi/info/files.ldb/LOCK - - - System.Package - System.Manager - - - mirrors.conf - sandbox.conf - pisi.xml - pkgconfig.py - tmpfiles.conf - qt5.py - kde5.py - - - -<<<<<<< HEAD - - 2016-02-03 - 6.30.223.248 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-16 - 6.30.223.248 - Rebuild. -======= - - 2015-08-31 - 2.6 - fix configdir in kde5 to '/etc/xdg'. ->>>>>>> master - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-14 - 2.6 - Rebuild for leveldb and plyvel. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-01 - 2.6 - fix kde5 api, remove python3 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-03 - 2.6 - Add kde5 api - Vedat Demir - vedat@pisilinux.org - - - 2015-05-04 - 2.6 - Add qt5 api - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org - - - 2014-12-07 - 2.6 - Add new pisitools.dopixmaps - Osman Erkan - osman.erkan@pisilinux.org - - - 2014-09-15 - 2.6 - Add new pisi commands: list-orphaned and remove-orphaned. - Improve pisi index. - Marcin Bojara - marcin@pisilinux.org - - - 2014-08-04 - 2.6 - pisi search-file works without sudo now. - Marcin Bojara - marcin@pisilinux.org - - - 2014-07-25 - 2.6 - Rebuild for version number. - Aydın Demirel - aydin.demirel@pisilinux.org - - - 2014-06-24 - 2.6 - Add patch for initialize filesdb once. - Marcin Bojara - marcin@pisilinux.org - - - 2014-06-15 - 2.6 - Version bump. - revdep-rebuild rewritten in python. - Marcin Bojara - marcin@pisilinux.org - - - 2014-06-08 - 2.5 - Add case sensitive for 'pisi sr'. - Change install path. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-27 - 2.5 - Add patch level auto detection feature, - sha1sum for install.tar.xz file, - check sha1sum for upgrade. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 2.5 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 2.5 - Some improvements for buildfarm. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-04 - 2.5 - Handle error for file command. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-16 - 2.5 - Workaround for update espeak package. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-07 - 2.5 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-02-28 - 2.4 - Fix pisitools.dosed output. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-13 - 2.4 - Workaround for the case where old dir /a/b/c is replaced by file c in /a/b dir. - Marcin Bojara - marcin@pisilinux.org - - - 2013-11-12 - 2.4 - Fix stripping issues, in file info: LSB executable, LSB shared syntax. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-22 - 2.4 - Disable python_installation patch to check python upgrading breaks pisi or not. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-25 - 2.4 - Fix autocompletion for local uncompressed index file. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-21 - 2.4 - Fix upgrading python package. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-01 - 2.4 - Improve managing CFLAGS, CXXFLAGS and LDFLAGS, - export HOME=get.workDIR() as default. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-25 - 2.4 - Fix and improve kerneltools. - Avoid double slashes pisi error. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-11 - 2.4 - adjust takeback to new dir structure. - Marcin Bojara - marcin@pisilinux.org - - - 2013-06-21 - 2.4 - No capital letters in directory names. - Marcin Bojara - marcin@pisilinux.org - - - 2013-06-17 - 2.4 - Fix overwrite 64bit libs by 32bit for some packages - Marcin Bojara - marcin@pisilinux.org - - - 2013-06-02 - 2.4 - Add sorting packages for pisi ix - Marcin Bojara - marcin@pisilinux.org - - - 2013-05-15 - 2.4 - Add pisitools.flags() and pisitools.ldflags() - Marcin Bojara - marcin@pisilinux.org - - - 2013-05-12 - 2.4 - Sandbox.conf edit. - PisiLinux Community - admins@pisilinux.org - - - 2013-03-20 - 2.4 - Add patch for speed up packaging process - Marcin Bojara - marcin@pisilinux.org - - - 2013-03-14 - 2.4 - Improve dosed - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-14 - 2.4 - Add assign-devel-and-doc-packages.patch. - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-18 - 2.4 - First release. - Marcin Bojara - marcin@pisilinux.org - - - - - - tcp-wrappers - http://ftp.porcupine.org/pub/security/index.html - - PisiLinux Community - admins@pisilinux.org - - BSD - app:console - system.base - TCP Wrappers - TCP Wrappers - Avec ce paquet, vous pouvez surveiller et filtrer les requêtes entrante pour les services réseaux SYSTAT, FINGER, FTP, TELNET, RLOGIN, RSH, EXEC, TFTP, TALK et autres. Il supporte à la fois les canaux de communication (sockets) de type 4.3BSD et TLI de type System V.4. - With this package you can monitor and filter incoming requests for the SYSTAT, FINGER, FTP, TELNET, RLOGIN, RSH, EXEC, TFTP, TALK, and other network services. It supports both 4.3BSD-style sockets and System V.4-style TLI. - Bu paket ile birlikte SYSTAT, FINGER, FTP, TELNET, RLOGIN, RSH, EXEC, TFTP, TALK ve diğer ağ servisleri için gelen istekleri izleyebilir ve süzebilirsiniz. Program 4.3BSD-tipi soketler ve System V.4-tipi TLI'ın ikisini de destekler. - http://ftp.porcupine.org/pub/security/tcp_wrappers_7.6.tar.gz - - sed - - - Makefile-Pisi.patch - tcp-wrappers-7.6-makefile.patch - tcp_wrappers-7.6-ldflags.patch - 01_all_redhat-bug11881.patch - 02_all_redhat-bug17795.patch - 03_all_wildcard.patch - 04_all_fixgethostbyname.patch - 07_all_sig.patch - 08_all_strerror.patch - 09_all_gcc-3.4.patch - 10_all_more-headers.patch - tcp-wrappers-7.6-ipv6-1.14.diff - tcp-wrappers-7.6-shared.patch - host.allow.example.patch - match-port.patch - - system/base/tcp-wrappers/pspec.xml - - - tcp-wrappers - - /usr/sbin - /usr/lib - /lib - /etc - /usr/share/man - /usr/share/doc - - - hosts.allow - hosts.deny - - - - tcp-wrappers-devel - Development files for tcp-wrappers - tcp-wrappers için geliştirme dosyaları - system.devel - - tcp-wrappers - - - /usr/include - /usr/share/man/man3 - - - - - 2014-05-11 - 7.6 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2010-10-11 - 7.6 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - timezone - ftp://elsie.nci.nih.gov/pub/ - - PisiLinux Community - admins@pisilinux.org - - BSD - public-domain - app:console - data -<<<<<<< HEAD - office.docbook - Docbook XML DTD - Docbook XML DTD - Contains Docbook DTD for XML. A widely used XML scheme for writing documentation and help - Docbook XML belirtimi (DTD) sürümlerini içerir. - http://www.docbook.org/xml/4.1.2/docbkx412.zip - http://www.oasis-open.org/docbook/xml/4.1/docbkx41.zip - http://www.docbook.org/xml/4.2/docbook-xml-4.2.zip - http://www.docbook.org/xml/4.3/docbook-xml-4.3.zip - http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip - http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip - http://www.docbook.org/xml/5.0/docbook-5.0.zip - office/docbook/docbook-xml/pspec.xml - - - docbook-xml - - sgml-common - libxml2 - - - /usr/share/doc/ - /usr/share/xml - /etc/xml/docbook - /etc/xml/catalog - - - docbook - catalog - - - - - 2016-01-28 - 5.0 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-11-17 - 4.5 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2014-05-18 - 4.5 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2014-01-22 - 4.5 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2011-09-16 - 4.5 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - docbook-xsl - http://wiki.docbook.org/topic/DocBookXslStylesheets - - PisiLinux Community - admins@pisilinux.org - - BSD - data - office.docbook - Norman Walsh's XSL stylesheets for DocBook XML - Docbook XSL biçemyaprakları - These XSL stylesheets allow you to transform any DocBook XML document to other formats such as HTML, FO and XHTML. - Docbook XSL biçemyapraklarını (stylesheets) içerir. - http://sourceforge.net/projects/docbook/files/docbook-xsl/1.79.1/docbook-xsl-1.79.1.tar.bz2 - - Makefile - - - docbook-xsl-pagesetup.patch - docbook-xsl-newmethods.patch - docbook-xsl-non-constant-expressions.patch - docbook-xsl-list-item-body.patch -======= - system.base - Timezone data files and tools - Zamandilimi veri dosyaları ve araçları - timezone includes timezone data files and tools to use them. Package contents are synchronized with glibc tree. - timezone zamandilimi veri dosyaları ve bu dosyaları kullanmak için gerekli araçları içerir. Paket içeriği glibc gelişim ağacından oluşturulmaktadır. - http://www.iana.org/time-zones/repository/releases/tzdata2015g.tar.gz - - perl - gawk - - - timezone-data-2015c-makefile.patch ->>>>>>> master - - system/base/timezone/pspec.xml - - - timezone - - /usr/share/zoneinfo - - - - -<<<<<<< HEAD - 2015-01-28 - 1.79.1 - Version bump - Alihan Öztürk - alihan@pisilinux.org -======= - 2015-10-27 - 2015g - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com ->>>>>>> master - - - 2015-05-09 - 2015d - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 2014b - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 2014b - Version bump. - Burak Fazıl Ertürk - burakerturk@pisilinux.org - - - 2012-09-27 - 0.0_20120927 - First release - Erdem Artan - admins@pisilinux.org - - - - - - gdbm - http://www.gnu.org/software/gdbm/gdbm.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - Standard GNU database libraries included for compatibility with Perl - Perl uyumlu standart GNU veritabanı kütüphaneleri - GNU dbm est un ensemble de routines de base de données utilisant extensivement les dictionnaires (hashing). Il fonctionne de manière similaire aux routines dbm UNIX standards. - GNU dbm is a set of database routines that use extensible hashing. It works similar to the standard UNIX dbm routines. - GNU dbm genişletilebilir hash yapabilen veritabanı işlevleri sağlar. Standart UNIX dbm uygulamaları ile aynı şekilde çalışır. - mirrors://gnu/gdbm/gdbm-1.11.tar.gz - - gdbm-1.10-zeroheaders.patch - - system/base/gdbm/pspec.xml - - - gdbm - - /usr/bin - /usr/lib - /usr/share/doc - /usr/share/locale - /usr/share/man - /usr/share/info - - - - gdbm-devel - Development files for gdbm - gdbm için geliştirme dosyaları - system.devel - - gdbm - - - /usr/include - - - - - 2016-03-02 - 1.11 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.11 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 1.11 - Version bump - PisiLinux Community - admins@pisilinux.org - - - 2013-08-29 - 1.10 - Clean gdbm. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-08-31 - 1.10 - First release - Erdem Artan - admins@pisilinux.org - - - - - - plyvel - https://pypi.python.org/pypi/plyvel - - Alihan Öztürk - alihan@pisilinux.org - - BSD - app:console -<<<<<<< HEAD - office.docbook - A frontend to an XSL toolchain - XML ve DocBook için dönüşüm aracı - The purpose of xmlto is to convert an XML file to the desired format using whatever means necessary. - xmlto uygulamasının amacı verilen bir XML dosyasını istenen bir biçime dönüştürmektir. - https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.28.tar.gz -======= - system.base - Plyvel, a fast and feature-rich Python interface to LevelDB. - Plyvel, LevelDB için, hızlı ve zengin özellikli Python arabirimi. - Plyvel has a rich feature set, high performance, and a friendly Pythonic API. - Plyvel zengin özelliklere sahip bir set, yüksek performanslı, ve kullanıcı dostu bir Pythonic API. - https://pypi.python.org/packages/source/p/plyvel/plyvel-0.9.tar.gz ->>>>>>> master - - cython - python-devel - leveldb-devel - python-setuptools - - system/base/plyvel/pspec.xml - - - plyvel - - libgcc - python - leveldb - - -<<<<<<< HEAD - /usr/bin - /usr/share/doc/xmlto - /usr/share/xmlto - /usr/share/man - - - - - 2014-05-18 - 0.0.28 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-05-18 - 0.0.26 - Version bump. - Richard de Bruin - richdb@pisilinux.org - - - 2014-01-18 - 0.0.25 - Rebuild for 1.0 - Richard de Bruin - richdb@pisilinux.org - - - 2012-09-17 - 0.0.25 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - os-prober - http://joey.kitenet.net/code/os-prober/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2+ - app:console - system.boot - Utility to detect other OSes on a set of drives - Narzędzie do wykrywania innych systemów operacyjnych na dyskach - os-probe detects other OSes available on a system and outputs the results in a generic machine-readable format. Support for new OSes and Linux distributions can be added easily. - os-prober wykrywa inne systemy operacyjne dostępne na komputerze i przekazuje rezultaty w standardowym, odczytywalnym maszynowo, formacie. - http://http.debian.net/debian/pool/main/o/os-prober/os-prober_1.65.tar.xz - system/boot/os-prober/pspec.xml - - - os-prober - - /usr/bin - /usr/lib - /var/lib/os-prober - /usr/share/os-prober - /usr/share/doc/os-prober -======= - /usr/lib - /usr/share/doc ->>>>>>> master - - - - - 2016-03-02 - 0.9 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-14 - 0.9 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-17 - 0.9 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-06-08 - 0.8 - Rebuild. - Aydın Demirel - aydin.demirel@pisilinux.org - - - 2014-06-01 - 0.8 - First release. - Alihan Öztürk - alihan@pisilinux.org - - - - - - util-linux - http://userweb.kernel.org/~kzak/util-linux-ng/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - library - system.base - Divers utilitaires Linux utiles. - Various useful Linux utilities - Çeşitli kullanışlı Linux araçları - The util-linux package contains a large variety of low-level system utilities that are necessary for a Linux system to function. - util-linux paketi, bir Linux sisteminin işlevsel olması için gerekli olan birçok düşük seviye sistem uygulamasını içerir. - https://www.kernel.org/pub/linux/utils/util-linux/v2.27/util-linux-2.27.1.tar.xz - - zlib-devel - eudev-devel - python-devel - readline-devel - shadow - ncurses-devel - libcap-ng-devel - glibc-32bit - - - ntfs-3g.patch - upstream/util-linux-ng-2.21-login-lastlog.patch - - system/base/util-linux/pspec.xml - - - util-linux - - libutil-linux - zlib - perl - ncurses - readline - eudev - libcap-ng - - - /etc - /bin - /sbin - /usr/bin - /usr/sbin - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/misc - /usr/share/getopt - /usr/share/bash-completion/completions - /usr/share/locale - - - util-linux - - - - uuidd - Helper daemon to guarantee uniqueness of time-based UUIDs - Zaman tabanlı UUID'lerin benzersizliğini garantileyen sistem hizmeti - service - app:console - util.misc - - libutil-linux - - - /usr/bin/uuidgen - /usr/sbin/uuidd - /usr/lib/tmpfiles.d/uuidd.conf - /usr/share/man/man1/uuidgen.1 - /usr/share/man/man8/uuidd.8 - - - uuidd - - - uuidd.tmpfiles - - - - libutil-linux - util-linux runtime library - util-linux için kitaplıklar - library - - python - - - /lib - /usr/lib - /usr/share/man/man3/uuid* - /usr/share/man/man3/libblkid* - /usr/share/man/man8/blkid* - - - libblkid - libuuid - - - libblkid - libuuid - - - - libutil-linux-devel - libutil-linux header files - util-linux kitaplıkları için başlık dosyaları - header - system.devel - - libutil-linux - - - /usr/include/ - /usr/lib/pkgconfig/*.pc - - - libblkid-devel - libuuid-devel - - - libblkid-devel - libuuid-devel - - - - libutil-linux-32bit - 32-bit shared libraries for libutil-linux - util-linux için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - glibc-32bit - - - /usr/lib32/ - - - libblkid-32bit - libuuid-32bit - - - libblkid-32bit - libuuid-32bit - - - - - 2016-02-28 - 2.27.1 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-11-12 - 2.27.1 - Version Bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-09 - 2.27 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-05 - 2.26.2 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-29 - 2.26.1 - Version bump, change pisi - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-01 - 2.26.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 2.24.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-08 - 2.24.1 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-20 - 2.24 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-27 - 2.22.2 - Move pc files to devel pack, rebuild - PisiLinux Community - admins@pisilinux.org - - - 2013-07-26 - 2.22.2 - Release bump for rebuild. - PisiLinux Community - admins@pisilinux.org - - - 2013-01-14 - 2.22.2 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-11-17 - 2.22.1 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - libestr - http://libestr.adiscon.com - - Marcin Bojara - marcin@pisilinux.org - - LGPLv2.1 - library - system.base - Library for some string essentials - libestr - some essentials for string handling (and a bit more) - http://libestr.adiscon.com/files/download/libestr-0.1.9.tar.gz - system/base/libestr/pspec.xml - - - libestr - - /usr/lib/libestr.so* - /usr/share/doc/libestr - - - - libestr-devel - Development files for libestr - system.devel - - libestr - - - /usr/include/libestr.h - /usr/lib/pkgconfig/libestr.pc - - - - - 2014-05-11 - 0.1.9 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 0.1.9 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-11-21 - 0.1.4 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - snappy - http://code.google.com/p/snappy/ - - Alihan Öztürk - alihan@pisilinux.org - - BSD - library - system.base - A fast compressor/decompressor librar - Linux için sıkıştırma/ayıklama kütüphanesidir. - Snappy is a compression/decompression library. It does not aim for maximum compression, or compatibility with any other compression library; instead, it aims for very high speeds and reasonable compression. - Linux için sıkıştırma/ayıklama kütüphanesidir. Yüksek hızda sıkıştırma yapmak için yazılmış bir kütüphanedir. - https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz - - lzo-devel - zlib-devel - - - snappy-unittest.patch - - system/base/snappy/pspec.xml - - - snappy - - libgcc - - - /usr/lib - /usr/share/doc - /usr/share - - - - snappy-devel - snappy için geliştirme dosyaları - - snappy - - - /usr/include - - - - - 2016-03-02 - 1.1.3 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-06-02 - 1.1.1 - Rebuild - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-12-12 - 1.1.1 - First Release - Alihan Öztürk - alihan@pisilinux.org - - - - - - nspr - http://www.mozilla.org/projects/nspr/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - Netscape Portable Runtime - Netscape Taşınabilir Çalışma Zamanı - Netscape Portable Runtime (NSPR -- Exécutable Portable Netscape) fourni une API neutre au sens de la plate-forme pour les fonctions de niveau système ou de type libc. Cette API est utilisée au sein du client Mozilla ainsi que de nombreuses solutions logicielles de Netscape/AOL/iPlanet. - Netscape Portable Runtime (NSPR) provides a platform-neutral API for system level and libc like functions. The API is used in the Mozilla client, many of Netscape/AOL/iPlanet's and other software offerings. - Netscape Taşınabilir çalışma Zamanı (NSPR) sistem seviyesindeki libc ve benzeri fonksiyonlar için platform bağımsız bir programlama arayüzü sunar. Bu arayüz, Mozilla istemcilerinde, Netscape/AOL/iPlanet'in diğer yazılımlarında kullanılmaktadır. - Netscape Portable Runtime (NSPR) provee un API independiente de la plataforma a nivel de sistema y funciones como libc. El API está usado en el cliente Mozilla, y muchos otros software de Netscape/AOL/iPlanet. - https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v4.10.10/src/nspr-4.10.10.tar.gz - - nspr.pc.in - generate-pc-config.sh - - system/base/nspr/pspec.xml - - - nspr - - /usr/lib - - - - nspr-devel - Development files for nspr - nspr için geliştirme dosyaları - system.devel - - nspr - - - /usr/include - /usr/lib/pkgconfig - /usr/bin - - - - - 2015-11-08 - 4.10.10 - Version bump. - Osman Erkan - osman.erkan@pisilinux.org - - - 2015-04-02 - 4.10.8 - Version bump. - Hakan Yıldız - hknyldz93@gmail.com - - - 2014-12-06 - 4.10.7 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-07-05 - 4.10.6 - Release bump. - PisiLinux Community - admins@pisilinux.org - - - 2014-05-11 - 4.10.4 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 4.10.4 - Version bump. - PisiLinux Community - admins@pisilinux.org - - - 2013-11-18 - 4.10.2 - Version bump. - PisiLinux Community - admins@pisilinux.org - - - 2013-10-23 - 4.10.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2013-07-18 - 4.10 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-05-17 - 4.9.6 - v.bump - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-01-14 - 4.9.5 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-11-25 - 4.9.4 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - less - http://www.greenwoodsoftware.com/ - - PisiLinux Community - admins@pisilinux.org - - GPLv3 - app:console - system.base - Excellent lecteur de fichier texte - Excellent text file viewer - Mükemmel bir metin görüntüleyici - Ausgezeichneter Textbetrachter - The less utility is a text file browser that resembles more, but has more capabilities. Less allows you to move backwards in the file as well as forwards. Since less doesn't have to read the entire input file before it starts, less starts up more quickly than text editors (for example, vi). - http://www.greenwoodsoftware.com/less/less-481.tar.gz - - ncurses-devel - - system/base/less/pspec.xml - - - less - - ncurses - - - /etc/env.d - /usr/bin - /usr/share/doc - /usr/share/man - - - lesspipe.sh - 70less - code2color - - - - - 2016-02-29 - 481 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-27 - 481 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 458 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-24 - 458 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2012-09-15 - 451 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - libusb-compat - http://libusb.sourceforge.net/ - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - system.base - Userspace access to USB devices - Project's main aim is to create a library for use by user level applications to access USB devices regardless of OS. - mirrors://sourceforge/libusb/libusb-compat-0.1.5.tar.bz2 - - libtool - libusb-devel - - system/base/libusb-compat/pspec.xml - - - libusb-compat - - libusb - - - /usr/lib - /usr/share/doc - - - - libusb-compat-devel - Development files for libusb - system.devel - - libusb-devel - libusb-compat + libpng /usr/bin /usr/include /usr/lib/pkgconfig /usr/lib32/pkgconfig + /usr/share/man - libusb-compat-32bit - 32-bit shared libraries for libXt + libpng-32bit + 32-bit shared libraries for libpng + libpng için 32-bit paylaşımlı kitaplıklar emul32 emul32 - libusb-32bit - glibc-32bit - - - libusb-32bit - libusb - glibc-32bit - libusb-compat - - - /usr/lib32 - - - - - 2015-05-05 - 0.1.5 - Rebuild for libusbx libusb changes - Use auto-emul32, cleanup actions.py - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 0.1.5 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 0.1.5 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-07-21 - 0.1.4 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - python-pyliblzma - http://pypi.python.org/pypi/pyliblzma - - PisiLinux Community - admins@pisilinux.org - - LGPLv3 - library - system.base - Python bindings for lzma - Python için lzma bağlayıcıları - pyliblzma provides a python interface for the liblzma library to read/write data that has been compressed/decompressed with lzma utils. - pyliblzma, lzma araçlarıyla sıkıştırılmış verileri açmak ve lzma kitaplığı kullanarak veri sıkıştırmak için python programlama arayüzü sunan bir pakettir. - http://pypi.python.org/packages/source/p/pyliblzma/pyliblzma-0.5.3.tar.bz2 - - xz-devel - python-setuptools - python-devel - - system/base/python-pyliblzma/pspec.xml - - - python-pyliblzma - - xz - python - - - /usr/lib/python2* - /usr/share/doc - - - - - 2016-03-02 - 0.5.3 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 0.5.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 0.5.3 - rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-28 - 0.5.3 - Fix deps. - Serdar Soytetir - kaptan@pisilinux.org - - - 2010-10-11 - 0.5.3 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - mingetty - ftp://ftp.suse.com/pub/projects/init/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - A compact getty program for virtual consoles only - Sadece sanal konsollar için yekpare bir getty programı - mingetty, est getty poids plume minimaliste à utiliser exclusivement sur les consoles virtuelles. - mingetty, is a lightweight, minimalist getty for use on virtual consoles only. - mingetty yalnızca sanal konsollar için tasarlanmış basit ve yalın getty uygulamasıdır. - http://sourceforge.net/projects/mingetty/files/mingetty/1.08/mingetty-1.08.tar.gz - - gettext - - - tr.patch - - system/base/mingetty/pspec.xml - - - mingetty - - glibc - - - /sbin - /usr/share/locale - /usr/share/man - /usr/share/doc - - - - - 2014-05-11 - 1.0.8 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-09 - 1.0.8 - Rebuild - Kamil Atlı - suvarice@gmail.com - - - 2012-08-23 - 1.0.8 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - cracklib - http://www.sourceforge.net/projects/cracklib - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - Librairie de vérification de mot de passe. - Password Checking Library - Parola Kontrol Kütüphanesi - Bibliothek, um Passwörter zu prüfen - CrackLib tests passwords to determine whether they match certain security-oriented characteristics, with the purpose of stopping users from choosing passwords that are easy to guess. - CrackLib, kullanıcıların kolay tahmin edilebilir parolalar seçmelerini engellemek amacıyla parolaların güvenlik odaklı bazı özelliklere sahip olup olmadıklarını denetler. - https://github.com/cracklib/cracklib/releases/download/cracklib-2.9.6/cracklib-2.9.6.tar.gz - - zlib-devel - python-devel - miscfiles - - system/base/cracklib/pspec.xml - - - cracklib - - zlib - python - - - /lib - /usr/lib - /usr/sbin - /usr/share/locale - /usr/share/doc - /usr/share/cracklib - - - - cracklib-devel - Development files for cracklib - cracklib için geliştirme dosyaları - system.devel - - cracklib - - - /usr/include - - - - - 2016-03-03 - 2.9.6 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2016-01-28 - 2.9.4 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-10-31 - 2.9.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 2.9.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-30 - 2.9.0 - Version bump, clean cracklib. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-15 - 2.8.22 - New version - Ertan Güven - ertan@pisilinux.org - - - 2012-08-23 - 2.8.19 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - libunistring - http://www.gnu.org/software/libunistring - - PisiLinux Community - admins@pisilinux.org - - GPLv3 - LGPLv3 - library - system.base - Unicode string library - Unicode karakter dizisi kitaplığı - This library provides functions for manipulating Unicode strings and for manipulating C strings according to the Unicode standard. - Bu kitaplığı unicode standartına göre unicode ve C karakter dizilerinde değişiklik yapmak için kullanılabilecek fonksiyonlar sunar. - mirrors://gnu/libunistring/libunistring-0.9.3.tar.gz - system/base/libunistring/pspec.xml - - - libunistring - - /usr/lib - /usr/share/doc - /usr/share/info - - - - libunistring-devel - Development files for libunistring - libunistring için geliştirme dosyaları - system.devel - - libunistring - - - /usr/include - - - - - 2014-05-11 - 0.9.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-30 - 0.9.3 - Rebuild - Pisi Linux Admins - admins@pisilinux.org - - - 2011-02-10 - 0.9.3 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - usbutils - http://linux-usb.sourceforge.net/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2+ - app:console - system.base - Linux USB utilities - USB listeleme araçları - Usbutils fournit des utilitaires d'énumération usb. - usbutils provides utilities for inspecting devices connected to a USB bus. - usbutils, USB aygıt veritabanı ile sistemdeki USB aygıtları listelemeye yarayan lsusb aracını içerir. - https://www.kernel.org/pub/linux/utils/usb/usbutils/usbutils-008.tar.xz - - usb.ids - - - libusb-devel - eudev-devel - - system/base/usbutils/pspec.xml - - - usbutils - - libusb - eudev - - - /usr/bin - /usr/sbin - /usr/share/man - /usr/share/doc - /usr/share/misc - /usr/share/pkgconfig - - - - - 2015-12-26 - 008 - Version bump and update usb.ids. - Stefan Gronewold - groni@pisilinux.org - - - 2014-09-12 - 007 - Update usb.ids. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 007 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 007 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-07-03 - 007 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-08-23 - 006 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - help2man - http://www.gnu.org/software/help2man - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - GNU utility to convert program --help output to a man page - Geleneksel --help çıktılarını man sayfalarına dönüştüren bir GNU yazılımı - Help2man is a tool which generate man page from help text of programs. - Help2man programların help çıktılarını man sayfalarına dönüştüren bir araçtır. - http://ftp.gnu.org/gnu/help2man/help2man-1.46.4.tar.xz - - perl-Locale-gettext - - system/base/help2man/pspec.xml - - - help2man - - perl-Locale-gettext - - - /usr/bin - /usr/lib - /usr/share/doc - /usr/share/info - /usr/share/locale - /usr/share/man - - - - - 2015-02-12 - 1.46.4 - Version bump. - Hakan Yıldız - hknyldz93@gmail.com - - - 2014-05-11 - 1.41.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-14 - 1.41.1 - New release - PisiLinux Community - admins@pisilinux.org - - - 2011-09-07 - 1.40.4 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - texinfo - http://www.gnu.org/software/texinfo/ - - PisiLinux Community - admins@pisilinux.org - - GPLv3 - app:console - system.base - programme et utilitaires GNU info. - The GNU info program and utilities - GNU info (bilgi) programı ve araçları - GNU Info Prgramm und Werkzeuge - Texinfo is a documentation system that can produce both online information and printed output from a single source file. The GNU Project uses the Texinfo file format for most of its documentation. - mirrors://gnu/texinfo/texinfo-6.1.tar.gz - - ncurses - - system/base/texinfo/pspec.xml - - - texinfo - - ncurses - - - /usr/bin - /usr/lib/texinfo - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/texinfo - /usr/share/texmf/tex/texinfo - /usr/share/locale - /usr/share/texmf/ - - - System.PackageHandler - - - - - 2016-02-28 - 6.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-24 - 6.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-25 - 5.2 - Release bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 5.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-22 - 5.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-09-05 - 4.13 - Add missing method to pakhandler.py - Marcin Bojara - marcin@pisilinux.org - - - 2010-10-11 - 4.13 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - libuser - https://fedorahosted.org/libuser - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - A user and group account administration library - Kullanıcı ve grup hesap yönetim kitaplığı - libuser implements a standardized interface for manipulating and administering user and group accounts. The library uses pluggable back-ends to interface to its data sources. - libuser kullanıcı ve grup hesaplarını yönetmek ve işlemek için standart bir arayüz sunar. Kitaplık, sağladığı arayüzün verilere erişimi için genişletilebilir arkauçlar kullanmaktadır. - https://fedorahosted.org/releases/l/i/libuser/libuser-0.61.tar.xz - - pam-devel - popt-devel - glib2-devel - python-devel - - - libuser-0.56.15-fix_blowfish.patch - libuser-0.56.9-fix-str-fmt.patch - - system/base/libuser/pspec.xml - - - libuser - - pam - popt - glib2 - python - - - /etc - /usr/share/man - /usr/share/doc - /usr/share/locale - /usr/bin - /usr/sbin - /usr/lib - - - - libuser-devel - Development files for libuser - libuser için geliştirme dosyaları - system.devel - - libuser - glib2-devel - - - /usr/include - /usr/lib/pkgconfig - - - - - 2015-04-07 - 0.61 - Version bump, build without-sasl - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 0.60 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 0.60 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-07-28 - 0.59 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-14 - 0.58.0 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 0.57.6 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - lzo - http://www.oberhumer.com/opensource/lzo/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - An extremely fast compression and decompression library - Çok hızlı bir sıkıştırma/açma kütüphanesi - lzo is a library with very high compression and decompression speeds and very small memory usage. Provides low compression ratios but very high speeds. - lzo hızlı bir sıkıştırma/açma kütüphanesidir. Düşük sıkıştırma oranları verir fakat hem sıkıştırma hem açma işleminde bellek kullanımı çok düşüktür ve işlem hızı yüksektir. - http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz - system/base/lzo/pspec.xml - - - lzo - - /usr/lib - /usr/share/doc - - - - lzo-devel - Development files for lzo - lzo için geliştirme dosyaları - - lzo - - - /usr/include - - - - lzo-32bit - 32-bit shared libraries for lzo - emul32 - emul32 - - glibc-32bit - - - glibc-32bit - - - /usr/lib32 - - - - - 2015-04-12 - 2.09 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-07-03 - 2.08 - Version bump and security update (CVE-2014-4607). - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 2.06 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-28 - 2.06 - Clean lzo. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-10-23 - 2.06 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - liblogging - http://www.liblogging.org - - Marcin Bojara - marcin@pisilinux.org - - BSD-2 - library - system.base - Easy to use, portable, open source library for system logging - Liblogging offers an enhanced replacement for the syslog() call, but retains its ease of use. - http://download.rsyslog.com/liblogging/liblogging-1.0.3.tar.gz - system/base/liblogging/pspec.xml - - - liblogging - - /usr/lib - /usr/bin - /usr/share/man - /usr/share/doc/liblogging - - - - liblogging-devel - Development files for liblogging - system.devel - - liblogging - - - /usr/include/liblogging/stdlog.h - /usr/lib/pkgconfig/liblogging-stdlog.pc - - - - - 2014-05-11 - 1.0.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-30 - 1.0.3 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - e2fsprogs - http://e2fsprogs.sourceforge.net/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Standard ext2/3/4 filesystem utilities - Standart ext2, ext3, ext4 dosya sistemi uygulamaları - e2frprogs fournit les outils de système de fichier à utiliser avec les systèmes de fichier de type ext2. Il prend également en charge les système de fichier de type ext3/4 avec support de la journalisation. - e2fsprogs provides the filesystem utilities for use with the ext2 filesystem. It also supports the ext3/4 filesystem with journaling support. - e2fsprogs ext2 dosya sistemi için standart dosya sistemi uygulamaları sağlar. ext3/4 dosya sistemlerinin günlüğe kaydetme özelliklerini de destekler. - mirrors://sourceforge/e2fsprogs/e2fsprogs-1.42.13.tar.gz - - libutil-linux-devel - libutil-linux - gettext - util-linux - - - ntfs-3g.patch - - system/base/e2fsprogs/pspec.xml - - - e2fsprogs - - libutil-linux - - - /etc - /bin - /usr/bin - /lib - /usr/lib - /sbin - /usr/sbin - /usr/share/et - /usr/share/ss - /usr/share/locale - /usr/share/info - /usr/share/man - /usr/share/doc - - - - e2fsprogs-devel - Development files for e2fsprogs - e2fsprogs için geliştirme dosyaları - system.devel - - e2fsprogs - - - /usr/include - /usr/lib/pkgconfig - /usr/share/man/man3 - - - - - 2016-03-05 - 1.42.13 - Rebuild with new toolchain. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-06-08 - 1.42.13 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-30 - 1.42.12 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-07-10 - 1.42.11 - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 1.42.9 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 1.42.9 - Version bump - PisiLinux Community - admins@pisilinux.org - - - 2013-10-28 - 1.42.8 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-07-26 - 1.42.8 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-15 - 1.42.7 - New version - Ertan Güven - ertan@pisilinux.org - - - 2012-11-25 - 1.42.6 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - procps - http://gitorious.org/procps - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Standard informational utilities and process-handling tools - Geleneksel bilgilendirme yardımcı programları ve süreç işleme araçları - procps est un paquet regroupant une multitude de petits utilitaires utiles donnant des informations concernant les process en utilisant le système de fichier /proc. Le paquet inclus les programmes ps, top, vmstat, w, kill, free, slabtop et skill. - procps is the package that has a bunch of small useful utilities that give information about processes using the /proc filesystem. The package includes the programs ps, top, vmstat, w, kill, free, slabtop, and skill. - Procps /proc dosya sistemini kullanarak çalışan süreçler hakkında bilgi vermeye yarayan bazı kullanışlı uygulamaları içeren bir pakettir. Paket ps, top, vmstat, w, kill, free, slabtop ve skill gibi uygulamaları içerir. - http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-3.3.11.tar.xz - - ncurses-devel - - system/base/procps/pspec.xml - - - procps - - ncurses - - - /bin - /sbin - /lib - /usr/lib - /usr/bin - /usr/share/doc - /usr/share/man - /usr/share/locale - /usr/include - - - - - 2015-08-25 - 3.3.11 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-06 - 3.3.10 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 3.2.8 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2010-10-12 - 3.2.8 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - json-c - http://oss.metaparadigm.com/json-c - - PisiLinux Community - admins@pisilinux.org - - MIT - library - system.base - A JSON implementation in C - C dilinde JSON gerçeklemesi - json-c implements a reference counting object model that allows you to easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into the C representation of JSON objects. - json-c, C dilinde kolayca JSON nesneleri yaratılmasını sağlayan bir referans sayma modeli gerçekleyen bir kitaplıktır. - https://github.com/json-c/json-c/archive/json-c-0.12-20140410.tar.gz - - wno-werror.patch - - system/base/json-c/pspec.xml - - - json-c - - /usr/share/doc - /usr/share/man - /usr/lib - - - - json-c-devel - Development files for json-c - json-c için geliştirme dosyaları - system.devel - - json-c - - - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - - - - json-c-32bit - 32-bit shared libraries for json-c - emul32 - emul32 - - glibc-32bit - - - /usr/lib32 - - - - - 2015-04-30 - 0.12 - Version bump and security update(CVE-2013-6371, CVE-2013-6370). - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 0.11 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 0.11 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-07-09 - 0.11 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-04-02 - 0.9 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - coreutils - http://www.gnu.org/software/coreutils/ - - Pisi Linux Admins - admins@pisilinux.org - - GPLv3+ - app:console - system.base - A set of basic GNU tools commonly used in shell scripts - Standart dosya, metin ve kabuk uygulamaları - Utilitaires standards GNU pour fichiers (chmod, cp, dd, dir, ls...), utilitaires texte (sort, tr, head, wc...) et utilitaires d'interpréteur de commande (shell) (whoami, who...) - GNU dosya uygulamaları (chmod, cp, dd, dir, ls...), sh uygulamaları (whoami, who,...) ve metin uygulamalarının (sort, tr, head, wc..) birlikteliğinden oluşmaktadır. - http://ftp.gnu.org/gnu/coreutils/coreutils-8.25.tar.xz - - acl-devel - attr-devel - perl - shadow - gettext-devel - ncurses-devel - gmp-devel - libcap-devel - texinfo - - - remove_am_silent_rules.patch - - system/base/coreutils/pspec.xml - - - coreutils - - acl - attr - gmp - libcap - - - /bin - /etc - /usr/bin - /usr/libexec - /usr/lib - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/locale - - - - - 2016-02-28 - 8.25 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-27 - 8.25 - Version bump. - Stefan Gronewold - groni@pisilinux.org - - - 2015-08-25 - 8.24 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-01 - 8.23 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 8.22 - Rebuild, add patch. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-04-02 - 8.22 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 8.21 - Clean coreutils. - Serdar Soytetir - kaptanan@pisilinux.org - - - 2013-07-26 - 8.21 - Fix deps, release bump. - Serdar Soytetir - kaptanan@pisilinux.org - - - 2013-02-11 - 8.21 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2012-08-31 - 8.19 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - psmisc - http://psmisc.sourceforge.net/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - A set of tools that use the proc filesystem - proc dosya sistemi kullanan bir araç takımı - PSmisc est une collection de petits utilitaires utilisant le système de fichier /proc, et assiste l'administrateur système dans ses tâches habituelles. - PSmisc is a collection of small utilities using /proc file system, and providing the system administrator with some help in common tasks. - PSmisc, /proc dosya sistemini kullanan küçük araçlar yardımıyla sistem yöneticisine bazı genel görevlerde yardımcı olmayı amaçlar. - PSmisc ist eine Sammlung von kleinen Anwendungen, die das /proc Dateisystem verwenden und dem System Administrator Hilfe für gängige Aufgaben bieten. - mirrors://sourceforge/psmisc/psmisc-22.21.tar.gz - - ncurses-devel - gettext - - - psmisc-fuser.patch - - system/base/psmisc/pspec.xml - - - psmisc - - ncurses - - - /bin - /usr/bin - /usr/share/man - /usr/share/doc - /usr/share/locale - - - - - 2015-05-03 - 22.21 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 22.20 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-14 - 22.20 - New version - Ertan Güven - ertan@pisilinux.org - - - 2012-08-24 - 22.19 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - bc - http://www.gnu.org/software/bc - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Console-based calculator utility - Konsol temelli hesap makinesi - bc est un langage de calcul numérique à précision arbitraire qui peut être utilisé comme calculatrice. La syntaxe est similaire au C, avec quelques différences notables. Il supporte par exemple l'exécution interactive de commandes. - bc is an arbitrary precision numeric processing language and can be used as a calculator. Syntax is similar to C, but differs in many substantial areas. For example, it supports interactive execution of statements. - bc, herhangi bir keskinlikte sayısal işlemler yapmayı sağlayan bir programlama dilidir ve bir hesap makinesi olarak kullanılabilir. Sözdizimi C programlama diline benzer, ancak C'den birçok önemli farkları vardır. Örneğin, ifadelerin etkileşimli bir şekilde çalışmasına olanak tanır. - ftp://alpha.gnu.org/gnu/bc/bc-1.06.95.tar.bz2 - - flex - texinfo - readline-devel - - - fedora/bc-1.06.95-memleak.patch - fedora/bc-1.06-dc_ibase.patch - fedora/bc-1.06.95-matlib.patch - - system/base/bc/pspec.xml - - - bc - - readline - - - /usr/bin - /usr/share/doc - /usr/share/man - /usr/share/info - - - - - 2016-03-05 - 1.06.95 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.06.95 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 1.06.95 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2011-01-02 - 1.06.95 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - libpcre - http://www.pcre.org/ - - PisiLinux Community - admins@pisilinux.org - - BSD - library - system.base - Perl-compatible regular expression library - Perl-uyumlu sıradan ifade kütüphanesi - La librairie PCRE (Expressions Régulières Compatible avec Perl) est un ensemble de fonctions implémentant la recherche de motifs de texte à l'aide d'expressions régulières utilisant la même syntaxe et la même sémantique que Perl5. - The PCRE (Perl Compatible Regular Expressions) library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5. - PCRE kütüphanesi, Perl 5 programlama dili sözdizimi ve semantiği ile kalıp eşleştirme (pattern matching) görevini yürüten fonksiyonları barındırır. - http://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.bz2 - - readline-devel - - system/base/libpcre/pspec.xml - - - libpcre - - libgcc - readline - - - /usr/lib - /usr/share/man - /usr/share/doc - /usr/bin - - - - libpcre-devel - Development files for libpcre - libpcre için geliştirme dosyaları - system.devel - - libpcre - - - /usr/include - /usr/share/man/man3 - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/share/doc/libpcre/html - /usr/bin/pcre-config - /usr/share/man/man1/pcre-config.1* - /usr/share/doc/libpcre/pcre-config.txt - - - - libpcre-32bit - 32-bit shared libraries for libpcre - libpcre için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - readline-32bit - glibc-32bit - - - libgcc - glibc-32bit - libpcre - - - /usr/lib32 - - - - - 2016-02-25 - 8.38 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-01-25 - 8.36 - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 8.34 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 8.34 - Version bump. - Osman Erkan - osman.erkan@pisilinux.org - - - 2013-09-01 - 8.33 - Version bump, clean pcre. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-28 - 8.32 - Fix deps. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-05-20 - 8.32 - adress fixed - Osman Erkan - osman.erkan@pisilinux.org - - - 2013-02-16 - 8.32 - Update - Osman Erkan - osman.erkan@pisilinux.org - - - 2011-03-11 - 8.31 - First release - Erdem Artan - admins@pisilinux.org - - - - - - spidermonkey - http://www.mozilla.org/js/spidermonkey/ - - PisiLinux Community - admins@pisilinux.org - - NPL-1.1 - library - system.base - Stand-alone JavaScript C Library - Javascript C Kitaplığı - Spidermonkey est l'Implémentation C de Javascript par Mozilla. - Spidermonkey is Mozilla's C implementation of JavaScript. - Mozilla'nın Javascript'in C implementasyonu. - Spidermonkey es la implementación de JavaScript con C de Mozilla. - http://ftp.mozilla.org/pub/mozilla.org/js/mozjs17.0.0.tar.gz - - zlib-devel - nspr-devel - readline-devel - libffi-devel - - system/base/spidermonkey/pspec.xml - - - spidermonkey - - nspr - zlib - libgcc - readline - - - /usr/bin - /usr/lib - /usr/share/doc - - - - spidermonkey-devel - Development files for spidermonkey - spidermonkey için geliştirme dosyaları - system.devel - - spidermonkey - nspr-devel - - - /usr/include - /usr/lib/pkgconfig - /usr/bin/js17-config - - - - - 2015-05-08 - 17.0.0 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 17.0.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-30 - 17.0.0 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-28 - 17.0.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-28 - 1.8.5 - Move pc files to devel pack,rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-20 - 1.8.5 - Release bump for rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-20 - 1.8.5 - Cleanup package, bump for new build - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-20 - 1.8.5 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - acl - http://acl.bestbits.at/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2+ - LGPLv2.1 - app:console - library - system.base - Utilitaires, librairies et fichiers d'entête de liste de contrôle d'accès. - Access control list utilities - Erişim denetim listesi için çeşitli araçlar - acl contains the getfacl and setfacl utilities needed for manipulating access control lists along with the needed libraries. - acl erişim denetim listelerini yönetmeye yarayan getfacl ve setfacl araçlarıyla gerekli kütüphaneleri içeren bir pakettir. - http://download.savannah.gnu.org/releases-noredirect/acl/acl-2.2.52.src.tar.gz - - attr-devel - -<<<<<<< HEAD - - ntfs-3g.patch - upstream/util-linux-ng-2.21-login-lastlog.patch - - system/base/util-linux/pspec.xml -======= - system/base/acl/pspec.xml ->>>>>>> master - - - acl - - attr - - - /bin - /lib - /usr/share/locale - /usr/share/doc - /usr/share/man - - - - acl-devel - Development files for acl - acl için geliştirme dosyaları - system.devel - - acl - - - /usr/include - /usr/share/man/man3 - - - - - 2016-03-01 - 2.2.52 - Rebuild for toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-22 - 2.2.52 - fix build deps. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-09-30 - 2.2.52 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 2.2.52 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-28 - 2.2.52 - Version bump, clean acl. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-06-04 - 2.2.51 - First release - Erdem Artan - admins@pisilinux.org - - - - - - leveldb - https://code.google.com/p/leveldb - - Alihan Öztürk - alihan@pisilinux.org - - BSD - app:console - system.base - A fast and lightweight key/value database library - Hızlı ve hafif bir anahtar/değer veri kütüphanesi - LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. - LevelDB dize değerleri ile dize anahtarlarını eşleme sağlayan, Google'da yazılmış hızlı bir anahtar-değer depolama kütüphanesidir. - https://github.com/google/leveldb/archive/v1.18.tar.gz - - gperftools-devel - snappy-devel - - system/base/leveldb/pspec.xml - - - leveldb - - libgcc - snappy - gperftools - - - /usr/lib - /usr/share/doc - - - - leveldb-devel - - leveldb - - - /usr/include - - - - - 2016-03-02 - 1.18 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-14 - 1.18 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-06-02 - 1.17 - First release - Alihan Öztürk - alihan@pisilinux.org - - - - - - gettext - http://www.gnu.org/software/gettext/gettext.html - - PisiLinux Community - admins@pisilinux.org - - GPLv3+ - app:console - library - system.base - GNU libraries and utilities for producing multi-lingual messages - Farklı dillerde ileti katalogları üretmek için gerekli GNU araçları ve kütüphaneleri - gettext est une librairie d'internationalisation GNU. - The GNU gettext package provides a set of tools and documentation for producing multi-lingual messages in programs. Tools include a set of conventions about how programs should be written to support message catalogs, a directory and file naming organization for the message catalogs, a runtime library which supports the retrieval of translated messages, and stand-alone programs for handling the translatable and the already translated strings. Gettext provides an easy to use library and tools for creating, using, and modifying natural language catalogs and is a powerful and simple method for internationalizing programs. - gettext, uygulamalarda farklı dillerde iletiler kullanılmasını sağlayan yerelleştirme araçları ve kütüphanelerini içerir. - gettext ist eine GNU Bibliothek für Internationalisierung - http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.7.tar.gz - - acl-devel - glib2-devel - ncurses-devel - libunistring-devel - libxml2-devel - - system/base/gettext/pspec.xml - - - gettext-docs - system.doc - - gettext - - - /usr/share/doc/gettext/html - - - - gettext - - acl - glib2 - ncurses - libgcc - libunistring - libgomp - libxml2 - - - /usr/bin - /usr/lib - /usr/share/gettext - /usr/share/locale - /usr/share/info - /usr/share/man - /usr/share/doc - - - - gettext-devel - Development files for gettext - gettext için geliştirme dosyaları - system.devel - - gettext - - - /usr/share/aclocal - /usr/include - /usr/share/man/man3 - - - - - 2016-02-28 - 0.19.7 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-03 - 0.19.7 - Version bump - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-27 - 0.19.6 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-25 - 0.19.5.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-03 - 0.19.4 - Version bump. - Hakan Yıldız - hknyldz93@gmail.com - - - 2014-05-11 - 0.18.3.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 0.18.3.2 - Minor version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-27 - 0.18.3.1 - Version bump, clean gettext. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-11 - 0.18.2 - Fix dep, release bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-11 - 0.18.2 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2010-10-11 - 0.18.1.1 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - dbus-glib - http://dbus.freedesktop.org/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - AFL-2.1 - library - system.base - Glib bindings for D-Bus - D-Bus için GLib bağlayıcıları - dbus-glib is an add-on library to integrate the standard D-Bus library with the GLib thread abstraction and main loop. - dbus-glib, standart D-Bus kitaplığını GLib ana döngüsüyle bütünleştirmek için kullanılan bir kitaplıktır. - http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.104.tar.gz - - dbus-devel - glib2-devel - libpcre-devel - expat-devel - libxml2 - - system/base/dbus-glib/pspec.xml - - - dbus-glib - - dbus - glib2 - expat - libxml2 - - - /usr/bin - /usr/libexec/dbus-bash-completion-helper - /usr/lib - /usr/share/doc - /usr/share/man/man1 - /etc/bash_completion.d - /usr/share/bash-completion - /usr/libexec - - - - dbus-glib-devel - Development files for dbus-glib - dbus-glib için geliştirme dosyaları - system.devel - - dbus-glib - dbus-devel - glib2-devel - - - /usr/include/dbus-1.0 - /usr/lib/pkgconfig - /usr/share/man/man3 - - - - - 2016-03-03 - 0.104 - Rebuild with new toolchain. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-05-12 - 0.104 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-01 - 0.102 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-18 - 0.102 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-11 - 0.100.1 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 0.100 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - eudev - https://www.gentoo.org/proj/en/eudev/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - console - system.base - eudev is a fork of system-udev - eudev sistemd-udev uygulamasının çatalı - eudev is a fork of system-udev with the goal of obtaining better compatibility with existing software such as OpenRC and Upstart, older kernels, various toolchains and anything else required by users and various distributions. - eudev sistem-udev uygulamasının OpenRC, Upstart gibi başlangıç sistemleri ile uyumu için hazırlanmış çatalı - https://github.com/gentoo/eudev/archive/v3.1.5.tar.gz - - config.cache - - - glibc-devel - libkmod-devel - libpcre-devel - gperf - - system/base/eudev/pspec.xml - - - eudev - - libkmod - - - /bin - /sbin - /usr/bin - /usr/sbin - /lib/udev - /lib - /usr/lib - /etc - /usr/lib/tmpfiles.d/udev.conf - /run/udev - /lib/systemd - /etc/udev/rules.d - /lib/udev/rules.d - /usr/share/doc - /usr/share/man - - - udev - libudev - libgudev1 - - - udev - libudev - libgudev1 - - - System.Package - - - tmpfiles.conf - 60-persistent-storage.rules - 70-yali.rules - - - - eudev-devel - Development files for eudev - system.devel - - eudev - - - /usr/include/ - /usr/lib/pkgconfig - /usr/share/pkgconfig - - - udev-devel - libudev-devel - libgudev1-devel - - - - eudev-32bit - 32-bit shared libraries for eudev - emul32 - emul32 - - glibc-32bit - libkmod-32bit - - - glibc-32bit - - - /lib32 - /usr/lib32 - - - libudev-32bit - libgudev1-32bit - - - libudev-32bit - libgudev1-32bit - - - - - 2016-03-05 - 3.1.5 - Rebuild with new toolchain. - Alihan Öztürk - alihan@pisilinux.org - - - 2016-01-17 - 3.1.5 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-04 - 3.1.2 - Add rules for mount storage, ntfs usb disc too. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-20 - 3.1.2 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-05 - 3.1.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-30 - 3.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-11 - 3.0 - build emul32 and static too. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-29 - 3.0 - First release. - Ertuğrul Erata - ertugrulerata@gmail.com - - - - - - libxml2 - http://www.xmlsoft.org/ - - PisiLinux Community - admins@pisilinux.org - - MIT - library - system.base - Version 2 of the library to manipulate XML files - XML türü dosyaları işlemeye aracılık eden kütüphanenin 2. sürümü - Libxml2 est l'analyseur et la boîte à outils XML écrit en C pour le projet Gnome (mais utilisable en dehors de la plateforme Gnome). - Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside of the Gnome platform). - Libxml2, Gnome projesi için geliştirilmiş C dilinde XML ayrıştırıcısıdır. Gnome platformu olmadan da kullanılabilir. - ftp://xmlsoft.org/libxml2/libxml2-2.9.3.tar.gz - - python-devel - xz-devel - zlib-devel - readline-devel - - system/base/libxml2/pspec.xml - - - libxml2-docs - system.doc - - libxml2 - - - /usr/share/doc - - - - libxml2 - - xz - zlib - python - readline - - - /usr/bin - /usr/lib - /usr/share/man - - - - libxml2-devel - Development files for libxml2 - libxml2 için geliştirme dosyaları - system.devel - - libxml2 - - - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/include - /usr/share/aclocal - /usr/share/man/man3 - - - - libxml2-32bit - 32-bit shared libraries for libxml2 - libxml2 için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - xz-32bit zlib-32bit - readline-32bit - glibc-32bit - libxml2 - xz-32bit + libpng zlib-32bit - glibc-32bit /usr/lib32 - - - 2016-03-04 - 2.9.3 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-07-06 - 2.9.1 - Security update(CVE-2014-0191). - Vedta Demir - vedat@pisilinux.org - - - 2014-05-24 - 2.9.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 2.9.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-11-11 - 2.9.0 - Fix dep,release bump, binary file goes to main package. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-31 - 2.9.1 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-26 - 2.9.0 - Fix dep,release bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-10-22 - 2.9.0 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - biosdevname - http://linux.dell.com/biosdevname/ - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv2 - app:gui - system.base - Biosdevname is a udev helper utility developed - Biosdevname is a udev helper utility developed by Dell and released under the GNU General Public License (GPL). It provides a consistent naming mechanism for network devices based on their physical location as suggested by the system BIOS. - http://linux.dell.com/biosdevname/biosdevname-0.7.1/biosdevname-0.7.1.tar.gz - - pciutils-devel - glibc-devel - zlib-devel - - system/base/biosdevname/pspec.xml - - - biosdevname - - pciutils - - - /sbin - /lib/udev/rules.d - /usr/sbin - /usr/share/doc - /usr/share/man - - - - - 2016-01-10 - 0.7.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-30 - 0.6.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 0.6.0 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 0.4.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-19 - 0.4.1 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2012-10-05 - 0.4.1 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - zip - http://www.info-zip.org/Zip.html - - PisiLinux Community - admins@pisilinux.org - - Info-ZIP - app:console - system.base - Info ZIP (encryption support) - ZIP programı (şifreleme desteği ile birlikte) - Zip est un outil de compression et d'archivage/packaging. Zip est utile pour distribuer un ensemble de fichier sous forme de paquets, et pour sauvegarder de l'espace disque en compressant temporairement les fichiers et répertoires inutilisés. - Zip is a compression and file packaging/archive utility. Zip is useful for packaging a set of files for distribution, for archiving files, and for saving disk space by temporarily compressing unused files or directories. - Zip bir sıkıştırma ve dosya paketleme/arşivleme uygulamasıdır. Zip dosyaları dağıtmak, arşivlemek ve kullanılmayan dosyaları ve dizinleri geçici olarak sıkıştırarak disk boşluğundan tasarruf için kullanılabilecek kullanışlı bir uygulamadır. - mirrors://sourceforge/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz - system/base/zip/pspec.xml - - - zip - - bzip2 - - - /usr/bin - /usr/share/doc - /usr/share/man - - - - - 2016-03-02 - 3.0 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-10-01 - 3.0 - Cleanup,rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 3.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 3.0 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-07-26 - 3.0 - Release bump for rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2010-10-11 - 3.0 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - urlgrabber - http://urlgrabber.baseurl.org/ - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - system.base - High level cross-protocol url-grabber library for Python - Python için yüksek seviyeli, platform bağımsız bir url-grabber kütüphanesi - urlgrabber provides a clean library interface to protocol-independant file-access for Python programs - urlgrabber Python uygulamaları için protokol bağımsız dosya erişimi sağlayan temiz bir kütüphanedir. - http://urlgrabber.baseurl.org/download/urlgrabber-3.10.1.tar.gz - - python - - system/base/urlgrabber/pspec.xml - - - urlgrabber - - python - pycurl - - - /usr/lib - /usr/libexec - /usr/share/doc - - - - - 2016-03-02 - 3.10.1 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 3.10.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2013-10-28 - 3.10 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-03-12 - 3.9.1 - Fix pisi https issue - Pisi Linux Admins - marcin@pisilinux.org - - - 2010-10-11 - 3.9.1 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - diffutils - http://www.gnu.org/software/diffutils/diffutils.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Tools to make diffs and compare files - Dosyaları karşılaştırmak ve fark dosyaları oluşturmak için kullanılan araçlar - Vous pouvez utiliser la commande diff pour voir les différences entre deux fichiers en particulier, ou les différences entre deux répertoires fichiers par fichier. Diff peut afficher les différences entre fichiers ligne par ligne dans différents formats pouvant être choisis avec les options de la ligne de commande. - You can use the diff command to show differences between two files, or each corresponding file in two directories. diff outputs differences between files line by line in any of several formats, selectable by command line options. - İki dosya arasındaki ya da iki klasör içindeki dosyaları karşılaştırarak farklılıkları belirleyebileceğiniz araç. Farklılıkları satır satır olarak, komut satırı seçenekleri ile farklı formatta dosyalara yazdırabilirsiniz. - http://ftp.gnu.org/gnu/diffutils/diffutils-3.3.tar.xz - - patch - - system/base/diffutils/pspec.xml - - - diffutils - - /usr/bin - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/locale - - - - - 2016-02-28 - 3.3 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 3.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-09-01 - 3.3 - Version bump, clean diffutils. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-08-23 - 3.2 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - vixie-cron - http://www.gentoo.org/ - - PisiLinux Community - admins@pisilinux.org - - as-is - service - system.base - Paul Vixie's cron daemon, a fully featured crond implementation - Tam teşekküllü bir crond uyarlaması - Vixie cron (Cron est un daemon qui lance des tâches planifiées) est une implémentation riche basée sur le cron SysV. Chaque utilisateur possède sa propre table de planification (ou crontab - la CRON TABle de Crontab) est un fichier qui contient le planning de cron) et a la possibilité de spécifier des variables d'environnement au sein de la table. - Vixie cron (Cron is a daemon that runs scheduled tasks.) is a full featured cron implementation based on SysV cron. Each user has his own crontab ( Crontab (CRON TABle) is a file which contains the schedule of cron) and is allowed to specify environment variables within that crontab. - Vixie-cron (cron, zamanlanmış görevleri çalıştıran dinleyici programdır.) SysV cron tabanlı tam sürüm cron uygulamasıdır. Her kullanıcı kendi crontab 'ına (crontab cron listesini içeren dosyadır.) sahiptir ve bu crontab içinde ortam değişkenlerini yazmasına müsade edilmiştir. - ftp://ftp.linux.org.tr/pub/gentoo/distfiles/vixie-cron-4.1.tar.bz2 - - sed - pam-devel - - - vixie-cron-4.1-gentoo-r4.patch.bz2 - crontab.5.diff - vixie-cron-4.1-commandline.patch - vixie-cron-4.1-pam.patch - vixie-cron-4.1-CAN-2005-1038.patch - CVE-2006-2607.patch - CVE-2007-1856.patch - - system/base/vixie-cron/pspec.xml - - - vixie-cron - - pam - comar-api - - - /usr/sbin - /usr/bin - /etc - /var/spool - /usr/share/doc - /usr/share/man - - - System.Package - System.Service - - - run-crons-0.3.1 - crontab - vixie-cron-4.1-cron.deny - cron.pam.d - - - - - 2015-05-04 - 4.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2010-10-11 - 4.1 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - unzip - ftp://ftp.info-zip.org/pub/infozip/UnZip.html - - PisiLinux Community - admins@pisilinux.org - - Info-ZIP - app:console - system.base - Unzipper for pkzip-compressed files - pkzip ile sıkıştırılmış dosyalar için açıcı - Unzip nous permet d'extraires des archives compressées aux format .zip (également appelées "fichiers zip"). - UnZip enables us to extract archives compressed in .zip format (also called "zipfiles"). - UnZip, zip formatında sıkıştırılmış dosyaları açmamızı sağlar. - mirrors://sourceforge/infozip/unzip610b.zip - - unzip-6.0-attribs-overflow.patch - unzip-6.0-exec-shield.patch - unzip-6.0-close.patch - - system/base/unzip/pspec.xml - - - unzip - - /usr/bin - /usr/share/doc - /usr/share/man - - - - - 2016-03-05 - 610b - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 610b - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 610b - Rebuild - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-01-14 - 610b - New release - PisiLinux Community - admins@pisilinux.org - - - 2010-10-11 - 6.0 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - dbus-python - http://dbus.freedesktop.org/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - AFL-2.1 - library - system.base - D-Bus Python bindings - D-Bus için Python bağlayıcıları - dbus-python provides a Python module which wraps the D-Bus programming API. - http://dbus.freedesktop.org/releases/dbus-python/dbus-python-1.2.0.tar.gz - - python-devel - dbus-devel - dbus-glib-devel - glib2-devel - libpcre-devel - - - suppress-warnings.patch - - system/base/dbus-python/pspec.xml - - - dbus-python-common - Common dbus-python files shared between dbus-python and dbus-python3 - system.devel - - dbus-devel - dbus-python - - - /usr/include - /usr/lib/pkgconfig - /usr/share/doc - - - - dbus-python - - python - dbus - glib2 - dbus-glib - - - /usr/lib/python2* - - - - - 2016-01-23 - 1.2.0 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-22 - 1.2.0 - Release bump. - Kamil Atlı - suvarice@gmail.com - - - 2014-05-11 - 1.2.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 1.2.0 - rebuild. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-23 - 1.2.0 - Version bump. Remove dbus-devel from runtime dependencies. - Marcin Bojara - marcin@pisilinux.org - - - 2013-04-25 - 1.1.1 - Dep Fixed. - PisiLinux Community - admins@pisilinux.org - - - 2012-11-10 - 1.1.1 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - sysvinit - http://freshmeat.net/projects/sysvinit/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Programs which control basic system processes - sysvinit package contains a group of utilities that control the very basic functions of your system. sysvinit contains the init program, the first program started by the Linux kernel when the system boots. - http://download.savannah.gnu.org/releases/sysvinit/sysvinit-2.88dsf.tar.bz2 - - sysvinit-2.86-ctrlc.patch - sysvinit-2.78-man.patch - sysvinit-2.86-loginshell.patch - sysvinit-2.86-single.patch - sysvinit-2.88-quiet.patch - sysvinit-2.88-ipv6.patch - sysvinit-2.88-omit.patch - sysvinit-2.88-wall-maxlines.patch - - system/base/sysvinit/pspec.xml - - - sysvinit - - /bin - /sbin - /usr/bin - /usr/share/man - /usr/include - - - System.Package - - - - sysvinit-tools - Tools used for process and utmp management - Süreç ve utmp yönetim araçları - - /bin/mountpoint - /sbin/pidof - /sbin/killall5 - /sbin/sulogin - /usr/bin/wall - /usr/bin/last - /usr/bin/lastb - /usr/bin/mesg - /usr/bin/utmpdump - /usr/share/man/man1 - /usr/share/man/man8/killall5* - /usr/share/man/man8/pidof* - /usr/share/man/man8/sulogin* - - - - - 2014-05-11 - 2.88 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2011-06-01 - 2.88 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - readline - http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - Another cute console display library - Diğer bir şirin konsol gösterim kütüphanesi - La librairie GNU Readline fourni un ensemble de fonctions utilisables par des applications permettant aux utilisateurs d'éditer les lignes de commandes en cours de frappe. Les modes d'éditions Emacs et vi sont disponibles. La librairie Readline inclus des fonctions supplémentaires de mémorisation de la liste de commandes entrées précédemment, afin de le rappeler et éventuellement les rééditer, ainsi que l'expansion d'historiques de commandes précédentes à la mode csh. - The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. Both Emacs and vi editing modes are available. The Readline library includes additional functions to maintain a list of previously-entered command lines, to recall and perhaps reedit those lines, and perform csh-like history expansion on previous commands. - GNU Readline kütüphanesi uygulamalara sanki kullanıcılar kendileri yazıyormuş gibi komut satırı girişlerini düzenleme imkanı veren işlev setini sunar. Readline kütüphanesi daha önce girilmiş bir komut satırları listesini düzenleme, tekrar çağırma ve belki de bu satırları tekrar düzenleme ve csh tipi geçmiş bilgisi genişletmelerindeki önceki komutları yürütme imkanı sağlayan ek işlevler sağlar. - mirrors://gnu/readline/readline-6.3.tar.gz - - ncurses-devel - - - readline63-001.patch - readline63-002.patch - readline63-003.patch - - system/base/readline/pspec.xml - - - readline - - ncurses - - - /usr/lib - /usr/share/doc - /usr/share/man - /usr/share/info - - - - readline-devel - Development files for readline - readline için geliştirme dosyaları - system.devel - - glibc-32bit - - - readline - - - /usr/include - /usr/share/man/man3 - - - - readline-32bit - 32-bit shared libraries for readline - readline için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - ncurses-32bit - - - readline - ncurses-32bit - glibc-32bit - - - /usr/lib32 - - - - - 2016-02-29 - 6.3 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 6.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-05 - 6.3 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 6.2_004 - Clean readline. - Marcin Bojara - marcin@pisilinux.org - - - 2012-08-31 - 6.2 - First release - Erdem Artan - admins@pisilinux.org - - - - - - gperf - http://www.gnu.org/software/gperf/gperf.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - A perfect hash function generator - Mükemmel hash üreticisi - gperf is a perfect hash function generator. For a given list of strings, it produces a hash function and hash table, in form of C or C++ code, for looking up a value depending on the input string. The hash function is perfect, which means that the hash table has no collisions, and the hash table lookup needs a single string comparison only. - gperf mükemmel hash fonksiyonu üretecidir. Verilen bir katar listesi için C ve C++ kodu biçiminde bir hash fonksiyonu ve hash tablosu üretir. - GNU gperf es un generador de perfect hash. Produce una función hash y una tabla hash a base de una lista de cadenas, en forma de código C o C++ , para revisar valores dependiendo de una cadena de entrada. La función de hash es perfecta, lo que quiere decir que no hay colisiones en la tabla de hash, y para la búsqueda en la tabla hash se necesita solamente una comparación. - mirrors://gnu/gperf/gperf-3.0.4.tar.gz - system/base/gperf/pspec.xml - - - gperf - - libgcc - - - /usr/bin - /usr/share/doc - /usr/share/info - /usr/share/man - - - - - 2016-03-05 - 3.0.4 - Rebuild with new toolchain. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-05-11 - 3.0.4 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-24 - 3.0.4 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2013-07-26 - 3.0.4 - Fix dep,release bump. - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 3.0.4 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - gperftools - http://code.google.com/p/gperftools/ - - PisiLinux Community - admins@pisilinux.org - - BSD - library - app:console - system.base - Google Performance Tools - Google Performans Araçları - Perf Tools is a collection of a high-performance multi-threaded malloc() implementation, plus some pretty nifty performance analysis tools. - gperftools yüksek performanslı ve yararlı performans analizi araçları içerir. - https://github.com/gperftools/gperftools/releases/download/gperftools-2.4/gperftools-2.4.tar.gz - - libunwind-devel - - system/base/gperftools/pspec.xml - - - gperftools - - libunwind - libgcc - - - /usr/bin - /usr/lib - /usr/share/doc/gperftools/COPYING - /usr/share/man - - - - gperftools-devel - Development headers for gperftools - gperftools için geliştirme başlıkları - gperftools-devel provides development headers for gperftools. - gperftools için geliştirme başlıklarını içerir. - library - - gperftools - - - /usr/include - /usr/lib/pkgconfig - - - - gperftools-docs - Documentation files for gperftools - gperftools için belgelendirme dosyaları - gperftools-docs provides documentation files for gperftools. - gperftools için belgelendirme dosyalarını içerir. - data:doc - system.doc - - gperftools - - - /usr/share/doc/gperftools - - - - - 2016-03-02 - 2.4 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-25 - 2.4 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-06-02 - 2.2 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-02-24 - 2.1 - Version bump. - Kamil Atlı - suvarice@gmail.com - - - 2013-01-27 - 2.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2011-02-20 - 1.7 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - busybox - http://www.busybox.net - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Statically linked binary providing simplified versions of system commands - Statik bağlanmış sistem komutları bütünü - busybox is a single binary which includes versions of a large number of system commands, including a shell. - busybox, kabuk da dahil olmak üzere çeşitli sistem komutlarını içeren tek bir çalıştırılabilir dosyadır. - http://busybox.net/downloads/busybox-1.24.1.tar.bz2 - - config - - system/base/busybox/pspec.xml - - - busybox - - /bin - - - - - 2016-01-29 - 1.24.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.22.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-03-29 - 1.22.1 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-01-14 - 1.21.0 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 1.20.2 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - glib2 - http://www.gtk.org/ - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - system.base - La librairie GLib2 de routines C. - A library of handy utility functions - C programlama dili için glib kütüphanesi - glib2 is the low-level core library that forms the basis for projects such as GTK+ and GNOME. It provides data structure handling for C, portability wrappers, and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system. - glib2, GTK+ ve GNOME gibi projelerin temelini oluşturan düşük seviyeli çekirdek kütüphanedir. C için veri yapıları, taşınabilirlik katmanları ve çeşitli çalışma zamanı işlevleri için arabirimler sunar. - mirrors://gnome/glib/2.46/glib-2.46.2.tar.xz - - libpcre-devel - zlib-devel - libffi-devel - - - revert-warn-glib-compile-schemas.patch - - system/base/glib2/pspec.xml - - - glib2 - - libpcre - zlib - libffi - - - /etc/profile.d - /usr/bin - /usr/lib - /usr/share/bash-completion/completions/ - /usr/share/locale - /usr/share/man - /usr/share/doc - /usr/share/glib-2.0 - /usr/share/systemtap - /usr/share/glib-2.0/schemas - - - System.PackageHandler - - - glib2.sh - glib2.csh - - - - glib2-devel - Development files for glib2 - glib2 için geliştirme dosyaları - system.devel - - glib2 - libpcre-devel - - - /usr/bin/gtester - /usr/bin/gtester-report - /usr/bin/gobject-query - /usr/bin/glib-genmarshal - /usr/bin/glib-gettextize - /usr/bin/glib-mkenums - /usr/include - /usr/lib/glib-2.0/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/share/aclocal - /usr/share/glib-2.0/schemas/gschema.dtd - /usr/share/glib-2.0/gettext - /usr/share/glib-2.0/gdb - /usr/share/gdb/auto-load/libglib-2.0.so.*-gdb.py* - /usr/share/gdb/auto-load/libgobject-2.0.so.*-gdb.py* - /usr/share/man/man3 - /usr/share/man/man1/glib-genmarshal.1 - /usr/share/man/man1/glib-gettextize.1 - /usr/share/man/man1/glib-mkenums.1 - /usr/share/man/man1/gobject-query.1 - /usr/share/man/man1/gtester-report.1 - /usr/share/man/man1/gtester.1 - - - - glib2-32bit - 32-bit shared libraries for glib2 - glib2 için 32-bit paylaşımlı kitaplıklar - emul32 - _emul32 - - libpcre-32bit - zlib-32bit - libffi-32bit - dbus-32bit - glibc-32bit - - - glib2 - libpcre-32bit - zlib-32bit - libffi-32bit - dbus-32bit - glibc-32bit - - - /usr/bin/32 - /usr/lib32 - - - System.PackageHandler - - - - glib2-docs - Documentation files for glib2 - Extensive documentation for developers wanting to use the GLib Library - - /usr/share/gtk-doc - - - - - 2016-01-25 - 2.46.2 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-08 - 2.44.0 - Version bump. - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org - - - 2014-10-01 - 2.42.0 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 2.40.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-15 - 2.40.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-03-29 - 2.38.2 - Minor version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-22 - 2.38.1 - Minor version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-10 - 2.38.0 - Bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-09-05 - 2.36.3 - Add missing method to pakhandler.py - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-26 - 2.36.3 - Fix dep, release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-14 - 2.36.3 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-06-11 - 2.36.0 - add missing dep. - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-05-16 - 2.36.0 - Path Fixed. - PisiLinux Community - admins@pisilinux.org - - - 2013-03-30 - 2.36.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-11-21 - 2.35.2 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - glibc - http://www.gnu.org/software/libc - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv2 - LGPLv2.1 - library - system.base - GNU libc6 (also called glibc2) C library - GNU libc6 (glibc2 olarak da bilinir) C kitaplığı - Glibc, La librairie GNU X est utilisée comme la librairie C dans le système GNU et la plupart des système utilisant le noyau Linux. Elle définit les appels système et autres fonctionnalités du langage de programmation C. - The GNU C library is used as the C library in the GNU system and most systems with the Linux kernel. It defines the system calls and other basic C programming language facilities. - Glibc, GNU C kitaplığı, GNU sisteminde ve Linux dağıtımlarının büyük çoğunluğunda C programlama dili kütüphanesi olarak kullanılır. İçinde sistem çağrıları ve C programlama dili için temel fonksiyonları bulundurur. - http://ftp.gnu.org/gnu/libc/glibc-2.23.tar.xz - - kernel-headers - gettext - binutils - - system/base/glibc/pspec.xml - - - glibc - - gettext - timezone - - - /etc - /lib - /usr/bin - /usr/lib - /usr/sbin - /usr/share/man - /usr/share/i18n - /usr/lib/locale/tr_* - /usr/share/locale/tr* - /usr/share/locale/locale.alias - /sbin - /var - - - timezone - - - System.Package - System.Service - - - host.conf - nsswitch.conf - nscd.conf - - - - glibc-devel - system.devel - - glibc - - - /usr/include - /usr/lib/*.o - /usr/lib32/*.o - /usr/lib/*.a - /usr/lib32/*.a - - - - glibc-32bit - 32-bit shared libraries for glibc - system.base - emul32 - - glibc - - - /etc/ld.so.conf.d/60-glibc-32bit.conf - /usr/lib32 - /lib32 - /lib/ld-linux.so.2 - - - - glibc-docs - system.doc - - /usr/share/doc - /usr/share/info - - - - glibc-locales-aa - locale:aa - system.locale - - /usr/lib/locale/aa_* - /usr/share/locale/aa* - - - - glibc-locales-af - locale:af - system.locale - - /usr/lib/locale/af_* - /usr/share/locale/af* - - - - glibc-locales-am - locale:am - system.locale - - /usr/lib/locale/am_* - /usr/share/locale/am* - - - - glibc-locales-an - locale:an - system.locale - - /usr/lib/locale/an_* - /usr/share/locale/an* - - - - glibc-locales-ar - locale:ar - system.locale - - /usr/lib/locale/ar_* - /usr/share/locale/ar* - - - - glibc-locales-as - locale:as - system.locale - - /usr/lib/locale/as_* - /usr/share/locale/as* - - - - glibc-locales-ast - locale:ast - system.locale - - /usr/lib/locale/ast_* - /usr/share/locale/ast* - - - - glibc-locales-az - locale:az - system.locale - - /usr/lib/locale/az_* - /usr/share/locale/az* - - - - glibc-locales-be - locale:be - system.locale - - /usr/lib/locale/be_* - /usr/share/locale/be* - - - - glibc-locales-bem - locale:bem - system.locale - - /usr/lib/locale/bem_* - /usr/share/locale/bem* - - - - glibc-locales-ber - locale:ber - system.locale - - /usr/lib/locale/ber_* - /usr/share/locale/ber* - - - - glibc-locales-bg - locale:bg - system.locale - - /usr/lib/locale/bg_* - /usr/share/locale/bg* - - - - glibc-locales-bho - locale:bho - system.locale - - /usr/lib/locale/bho_* - /usr/share/locale/bho* - - - - glibc-locales-bn - locale:bn - system.locale - - /usr/lib/locale/bn_* - /usr/share/locale/bn* - - - - glibc-locales-bo - locale:bo - system.locale - - /usr/lib/locale/bo_* - /usr/share/locale/bo* - - - - glibc-locales-br - locale:br - system.locale - - /usr/lib/locale/br_* - /usr/share/locale/br* - - - - glibc-locales-brx - locale:brx - system.locale - - /usr/lib/locale/brx_* - /usr/share/locale/brx* - - - - glibc-locales-bs - locale:bs - system.locale - - /usr/lib/locale/bs_* - /usr/share/locale/bs* - - - - glibc-locales-byn - locale:byn - system.locale - - /usr/lib/locale/byn_* - /usr/share/locale/byn* - - - - glibc-locales-ca - locale:ca - system.locale - - /usr/lib/locale/ca_* - /usr/share/locale/ca* - - - - glibc-locales-crh - locale:crh - system.locale - - /usr/lib/locale/crh_* - /usr/share/locale/crh* - - - - glibc-locales-cs - locale:cs - system.locale - - /usr/lib/locale/cs_* - /usr/share/locale/cs* - - - - glibc-locales-csb - locale:csb - system.locale - - /usr/lib/locale/csb_* - /usr/share/locale/csb* - - - - glibc-locales-cv - locale:cv - system.locale - - /usr/lib/locale/cv_* - /usr/share/locale/cv* - - - - glibc-locales-cy - locale:cy - system.locale - - /usr/lib/locale/cy_* - /usr/share/locale/cy* - - - - glibc-locales-da - locale:da - system.locale - - /usr/lib/locale/da_* - /usr/share/locale/da* - - - - glibc-locales-de - locale:de - system.locale - - /usr/lib/locale/de_* - /usr/share/locale/de* - - - - glibc-locales-dv - locale:dv - system.locale - - /usr/lib/locale/dv_* - /usr/share/locale/dv* - - - - glibc-locales-dz - locale:dz - system.locale - - /usr/lib/locale/dz_* - /usr/share/locale/dz* - - - - glibc-locales-el - locale:el - system.locale - - /usr/lib/locale/el_* - /usr/share/locale/el* - - - - glibc-locales-en - locale:en - system.locale - - /usr/lib/locale/en_AG - /usr/share/locale/en_AG - /usr/lib/locale/en_AU - /usr/share/locale/en_AU - /usr/lib/locale/en_AU.utf8 - /usr/share/locale/en_AU.utf8 - /usr/lib/locale/en_BW - /usr/share/locale/en_BW - /usr/lib/locale/en_BW.utf8 - /usr/share/locale/en_BW.utf8 - /usr/lib/locale/en_CA - /usr/share/locale/en_CA - /usr/lib/locale/en_CA.utf8 - /usr/share/locale/en_CA.utf8 - /usr/lib/locale/en_DK - /usr/share/locale/en_DK - /usr/lib/locale/en_DK.utf8 - /usr/share/locale/en_DK.utf8 - /usr/lib/locale/en_GB - /usr/share/locale/en_GB - /usr/lib/locale/en_GB.utf8 - /usr/share/locale/en_GB.utf8 - /usr/lib/locale/en_HK - /usr/share/locale/en_HK - /usr/lib/locale/en_HK.utf8 - /usr/share/locale/en_HK.utf8 - /usr/lib/locale/en_IE - /usr/share/locale/en_IE - /usr/lib/locale/en_IE@euro - /usr/share/locale/en_IE@euro - /usr/lib/locale/en_IE.utf8 - /usr/share/locale/en_IE.utf8 - /usr/lib/locale/en_IN - /usr/share/locale/en_IN - /usr/lib/locale/en_NG - /usr/share/locale/en_NG - /usr/lib/locale/en_NZ - /usr/share/locale/en_NZ - /usr/lib/locale/en_NZ.utf8 - /usr/share/locale/en_NZ.utf8 - /usr/lib/locale/en_PH - /usr/share/locale/en_PH - /usr/lib/locale/en_PH.utf8 - /usr/share/locale/en_PH.utf8 - /usr/lib/locale/en_SG - /usr/share/locale/en_SG - /usr/lib/locale/en_SG.utf8 - /usr/share/locale/en_SG.utf8 - /usr/lib/locale/en_ZA - /usr/share/locale/en_ZA - /usr/lib/locale/en_ZA.utf8 - /usr/share/locale/en_ZA.utf8 - /usr/lib/locale/en_ZW - /usr/share/locale/en_ZW - /usr/lib/locale/en_ZW.utf8 - /usr/share/locale/en_ZW.utf8 - - - - glibc-locales-es - locale:el - system.locale - - /usr/lib/locale/es* - /usr/share/locale/es* - - - - glibc-locales-eo - locale:eo - system.locale - - /usr/lib/locale/eo* - /usr/share/locale/eo* - - - - glibc-locales-et - locale:et - system.locale - - /usr/lib/locale/et_* - /usr/share/locale/et* - - - - glibc-locales-eu - locale:eu - system.locale - - /usr/lib/locale/eu_* - /usr/share/locale/eu* - - - - glibc-locales-fa - locale:fa - system.locale - - /usr/lib/locale/fa_* - /usr/share/locale/fa* - - - - glibc-locales-ff - locale:ff - system.locale - - /usr/lib/locale/ff_* - /usr/share/locale/ff* - - - - glibc-locales-fi - locale:fi - system.locale - - /usr/lib/locale/fi_* - /usr/share/locale/fi* - - - - glibc-locales-fil - locale:fil - system.locale - - /usr/lib/locale/fil_* - /usr/share/locale/fil* - - - - glibc-locales-fo - locale:fo - system.locale - - /usr/lib/locale/fo_* - /usr/share/locale/fo* - - - - glibc-locales-fr - locale:fr - system.locale - - /usr/lib/locale/fr_* - /usr/share/locale/fr* - - - - glibc-locales-fur - locale:fur - system.locale - - /usr/lib/locale/fur_* - /usr/share/locale/fur* - - - - glibc-locales-fy - locale:fy - system.locale - - /usr/lib/locale/fy_* - /usr/share/locale/fy* - - -<<<<<<< HEAD - 2015-07-09 - 4.3_p39 - Update - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - 2015-08-20 - 4.3_p33 - Update - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-10-13 - 4.3_p30 - Update - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-09-27 - 4.3_p26 - Update - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 4.3_p8 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 4.3_p8 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-28 - 4.2_p45 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-11-24 - 4.2_p45 - Update - Marcin Bojara - marcin@pisilinux.org - - - 2012-11-24 - 4.2_p39 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - cracklib - http://www.sourceforge.net/projects/cracklib - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - Librairie de vérification de mot de passe. - Password Checking Library - Parola Kontrol Kütüphanesi - Bibliothek, um Passwörter zu prüfen - CrackLib tests passwords to determine whether they match certain security-oriented characteristics, with the purpose of stopping users from choosing passwords that are easy to guess. - CrackLib, kullanıcıların kolay tahmin edilebilir parolalar seçmelerini engellemek amacıyla parolaların güvenlik odaklı bazı özelliklere sahip olup olmadıklarını denetler. - mirrors://sourceforge/cracklib/cracklib-2.9.4.tar.gz - - zlib - python - miscfiles - - system/base/cracklib/pspec.xml - -======= ->>>>>>> master - - glibc-locales-ga - locale:ga - system.locale - - /usr/lib/locale/ga_* - /usr/share/locale/ga* - - - -<<<<<<< HEAD - cracklib-devel - Development files for cracklib - cracklib için geliştirme dosyaları - system.devel - - cracklib - -======= - glibc-locales-gd - locale:gd - system.locale ->>>>>>> master - - /usr/lib/locale/gd_* - /usr/share/locale/gd* - - -<<<<<<< HEAD - - - 2016-01-28 - 2.9.4 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-10-31 - 2.9.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 2.9.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-30 - 2.9.0 - Version bump, clean cracklib. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-15 - 2.8.22 - New version - Ertan Güven - ertan@pisilinux.org - - - 2012-08-23 - 2.8.19 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - less - http://www.greenwoodsoftware.com/ - - PisiLinux Community - admins@pisilinux.org - - GPLv3 - app:console - system.base - Excellent lecteur de fichier texte - Excellent text file viewer - Mükemmel bir metin görüntüleyici - Ausgezeichneter Textbetrachter - The less utility is a text file browser that resembles more, but has more capabilities. Less allows you to move backwards in the file as well as forwards. Since less doesn't have to read the entire input file before it starts, less starts up more quickly than text editors (for example, vi). - http://www.greenwoodsoftware.com/less/less-481.tar.gz - - ncurses-devel - - system/base/less/pspec.xml - -======= ->>>>>>> master - - glibc-locales-gez - locale:gez - system.locale - - /usr/lib/locale/gez_* - /usr/share/locale/gez* - - - - glibc-locales-gl - locale:gl - system.locale - - /usr/lib/locale/gl_* - /usr/share/locale/gl* - - - - glibc-locales-gu - locale:gu - system.locale - - /usr/lib/locale/gu_* - /usr/share/locale/gu* - - - - glibc-locales-gv - locale:gv - system.locale - - /usr/lib/locale/gv_* - /usr/share/locale/gv* - - - - glibc-locales-ha - locale:ha - system.locale - - /usr/lib/locale/ha_* - /usr/share/locale/ha* - - - - glibc-locales-he - locale:he - system.locale - - /usr/lib/locale/he_* - /usr/share/locale/he* - - - - glibc-locales-hi - locale:hi - system.locale - - /usr/lib/locale/hi_* - /usr/share/locale/hi* - - - - glibc-locales-hne - locale:hne - system.locale - - /usr/lib/locale/hne_* - /usr/share/locale/hne* - - - - glibc-locales-hr - locale:hr - system.locale - - /usr/lib/locale/hr_* - /usr/share/locale/hr* - - - - glibc-locales-hsb - locale:hsb - system.locale - - /usr/lib/locale/hsb_* - /usr/share/locale/hsb* - - -<<<<<<< HEAD - - - 2015-08-18 - 2.9.4 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 2.9.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-24 - 2.9.3 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2014-01-20 - 2.9.3 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-12-21 - 2.9.2 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - coreutils - http://www.gnu.org/software/coreutils/ - - Pisi Linux Admins - admins@pisilinux.org - - GPLv3+ - app:console - system.base - A set of basic GNU tools commonly used in shell scripts - Standart dosya, metin ve kabuk uygulamaları - Utilitaires standards GNU pour fichiers (chmod, cp, dd, dir, ls...), utilitaires texte (sort, tr, head, wc...) et utilitaires d'interpréteur de commande (shell) (whoami, who...) - GNU dosya uygulamaları (chmod, cp, dd, dir, ls...), sh uygulamaları (whoami, who,...) ve metin uygulamalarının (sort, tr, head, wc..) birlikteliğinden oluşmaktadır. - http://ftp.gnu.org/gnu/coreutils/coreutils-8.25.tar.xz - - acl-devel - attr-devel - perl - shadow - gettext-devel - ncurses-devel - gmp-devel - libcap-devel - texinfo - - - remove_am_silent_rules.patch - - system/base/coreutils/pspec.xml - -======= ->>>>>>> master - - glibc-locales-ht - locale:ht - system.locale - - /usr/lib/locale/ht_* - /usr/share/locale/ht* - - -<<<<<<< HEAD - - - 2016-01-27 - 8.25 - Version bump. - Stefan Gronewold - groni@pisilinux.org - - - 2015-08-25 - 8.24 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-01 - 8.23 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 8.22 - Rebuild, add patch. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-04-02 - 8.22 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 8.21 - Clean coreutils. - Serdar Soytetir - kaptanan@pisilinux.org - - - 2013-07-26 - 8.21 - Fix deps, release bump. - Serdar Soytetir - kaptanan@pisilinux.org - - - 2013-02-11 - 8.21 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2012-08-31 - 8.19 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - gettext - http://www.gnu.org/software/gettext/gettext.html - - PisiLinux Community - admins@pisilinux.org - - GPLv3+ - app:console - library - system.base - GNU libraries and utilities for producing multi-lingual messages - Farklı dillerde ileti katalogları üretmek için gerekli GNU araçları ve kütüphaneleri - gettext est une librairie d'internationalisation GNU. - The GNU gettext package provides a set of tools and documentation for producing multi-lingual messages in programs. Tools include a set of conventions about how programs should be written to support message catalogs, a directory and file naming organization for the message catalogs, a runtime library which supports the retrieval of translated messages, and stand-alone programs for handling the translatable and the already translated strings. Gettext provides an easy to use library and tools for creating, using, and modifying natural language catalogs and is a powerful and simple method for internationalizing programs. - gettext, uygulamalarda farklı dillerde iletiler kullanılmasını sağlayan yerelleştirme araçları ve kütüphanelerini içerir. - gettext ist eine GNU Bibliothek für Internationalisierung - http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.7.tar.gz - - acl-devel - glib2-devel - ncurses-devel - libunistring-devel - libxml2-devel - - system/base/gettext/pspec.xml - -======= ->>>>>>> master - - glibc-locales-hu - locale:hu - system.locale - - /usr/lib/locale/hu_* - /usr/share/locale/hu* - - - - glibc-locales-hy - locale:hy - system.locale - - /usr/lib/locale/hy_* - /usr/share/locale/hy* - - - - glibc-locales-ia - locale:ia - system.locale - - /usr/lib/locale/ia_* - /usr/share/locale/ia* - - - - glibc-locales-id - locale:id - system.locale - - /usr/lib/locale/id_* - /usr/share/locale/id* - - - - glibc-locales-ig - locale:ig - system.locale - - /usr/lib/locale/ig_* - /usr/share/locale/ig* - - - - glibc-locales-ik - locale:ik - system.locale - - /usr/lib/locale/ik_* - /usr/share/locale/ik* - - - - glibc-locales-is - locale:is - system.locale - - /usr/lib/locale/is_* - /usr/share/locale/is* - - - - glibc-locales-it - locale:it - system.locale - - /usr/lib/locale/it_* - /usr/share/locale/it* - - - - glibc-locales-iu - locale:iu - system.locale - - /usr/lib/locale/iu_* - /usr/share/locale/iu* - - - - glibc-locales-iw - locale:iw - system.locale - - /usr/lib/locale/iw_* - /usr/share/locale/iw* - - - - glibc-locales-ja - locale:ja - system.locale - - /usr/lib/locale/ja_* - /usr/share/locale/ja* - - - - glibc-locales-ka - locale:ka - system.locale - - /usr/lib/locale/ka_* - /usr/share/locale/ka* - - - - glibc-locales-kk - locale:kk - system.locale - - /usr/lib/locale/kk_* - /usr/share/locale/kk* - - - - glibc-locales-kl - locale:kl - system.locale - - /usr/lib/locale/kl_* - /usr/share/locale/kl* - - - - glibc-locales-km - locale:km - system.locale - - /usr/lib/locale/km_* - /usr/share/locale/km* - - - - glibc-locales-kn - locale:kn - system.locale - - /usr/lib/locale/kn_* - /usr/share/locale/kn* - - - - glibc-locales-ko - locale:ko - system.locale - - /usr/lib/locale/ko_* - /usr/share/locale/ko* - - - - glibc-locales-kok - locale:kok - system.locale - - /usr/lib/locale/kok_* - /usr/share/locale/kok* - - - - glibc-locales-ks - locale:ks - system.locale - - /usr/lib/locale/ks_* - /usr/share/locale/ks* - - - - glibc-locales-ku - locale:ku - system.locale - -<<<<<<< HEAD - /usr/bin - /usr/sbin - /usr/lib/pardus/pisi - /usr/lib/pisilinux/pisi - /usr/share/locale - /usr/share/doc - /etc/pisi - /usr/share/mime/packages - /usr/lib/tmpfiles.d/pisi.conf - /run/lock/files.ldb/LOCK - /var/lib/pisi/info/files.ldb/LOCK - - - System.Package - System.Manager - - - mirrors.conf - sandbox.conf - pisi.xml - pkgconfig.py - tmpfiles.conf - qt5.py - kde5.py - - - - - 2015-08-31 - 2.6 - fix configdir in kde5 to '/etc/xdg'. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-14 - 2.6 - Rebuild for leveldb and plyvel. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-01 - 2.6 - fix kde5 api, remove python3 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-03 - 2.6 - Add kde5 api - Vedat Demir - vedat@pisilinux.org - - - 2015-05-04 - 2.6 - Add qt5 api - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org - - - 2014-12-07 - 2.6 - Add new pisitools.dopixmaps - Osman Erkan - osman.erkan@pisilinux.org - - - 2014-09-15 - 2.6 - Add new pisi commands: list-orphaned and remove-orphaned. - Improve pisi index. - Marcin Bojara - marcin@pisilinux.org - - - 2014-08-04 - 2.6 - pisi search-file works without sudo now. - Marcin Bojara - marcin@pisilinux.org - - - 2014-07-25 - 2.6 - Rebuild for version number. - Aydın Demirel - aydin.demirel@pisilinux.org - - - 2014-06-24 - 2.6 - Add patch for initialize filesdb once. - Marcin Bojara - marcin@pisilinux.org - - - 2014-06-15 - 2.6 - Version bump. - revdep-rebuild rewritten in python. - Marcin Bojara - marcin@pisilinux.org - - - 2014-06-08 - 2.5 - Add case sensitive for 'pisi sr'. - Change install path. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-27 - 2.5 - Add patch level auto detection feature, - sha1sum for install.tar.xz file, - check sha1sum for upgrade. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 2.5 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 2.5 - Some improvements for buildfarm. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-04 - 2.5 - Handle error for file command. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-16 - 2.5 - Workaround for update espeak package. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-07 - 2.5 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-02-28 - 2.4 - Fix pisitools.dosed output. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-13 - 2.4 - Workaround for the case where old dir /a/b/c is replaced by file c in /a/b dir. - Marcin Bojara - marcin@pisilinux.org - - - 2013-11-12 - 2.4 - Fix stripping issues, in file info: LSB executable, LSB shared syntax. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-22 - 2.4 - Disable python_installation patch to check python upgrading breaks pisi or not. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-25 - 2.4 - Fix autocompletion for local uncompressed index file. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-21 - 2.4 - Fix upgrading python package. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-01 - 2.4 - Improve managing CFLAGS, CXXFLAGS and LDFLAGS, - export HOME=get.workDIR() as default. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-25 - 2.4 - Fix and improve kerneltools. - Avoid double slashes pisi error. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-11 - 2.4 - adjust takeback to new dir structure. - Marcin Bojara - marcin@pisilinux.org - - - 2013-06-21 - 2.4 - No capital letters in directory names. - Marcin Bojara - marcin@pisilinux.org - - - 2013-06-17 - 2.4 - Fix overwrite 64bit libs by 32bit for some packages - Marcin Bojara - marcin@pisilinux.org - - - 2013-06-02 - 2.4 - Add sorting packages for pisi ix - Marcin Bojara - marcin@pisilinux.org - - - 2013-05-15 - 2.4 - Add pisitools.flags() and pisitools.ldflags() - Marcin Bojara - marcin@pisilinux.org - - - 2013-05-12 - 2.4 - Sandbox.conf edit. - PisiLinux Community - admins@pisilinux.org - - - 2013-03-20 - 2.4 - Add patch for speed up packaging process - Marcin Bojara - marcin@pisilinux.org - - - 2013-03-14 - 2.4 - Improve dosed - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-14 - 2.4 - Add assign-devel-and-doc-packages.patch. - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-18 - 2.4 - First release. - Marcin Bojara - marcin@pisilinux.org - - - - - - wireless-tools - http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - A collection of tools to configure wireless lan cards - Kablosuz ağ kartlarını yapılandırmak için kullanılan bir araç seti - Les outils sans fil (Wireless Tools ou WT) est un ensemble d'outils permettant de manipuler les extensions sans fil, c'est une interface de programmation d'application (API) générique permettant à un pilote d'exposer à l'espace utilisateur la configuration ainsi que des statistiques spécifiques aux LANs sans fil communs. Ils utilisent une interface textuelle assez rugueuse, mais ont pour objectif de couvrir la totalité de l'extension sans fil. - The Wireless Tools (WT) is a set of tools allowing to manipulate the Wireless Extensions, a generic application programming interface allowing a driver to expose to the user space configuration and statistics specific to common Wireless LANs. They use a textual interface and are rather crude, but aim to support the full Wireless Extension. - Wireless Extensions, sürücülerin bilinen kablosuz ağların ayarlarını yapmak ve istatistiklerini görüntülemek amacıyla kullandığı bir yazılım programlama arayüzüdür. Wireless Tools ise Wireless Extensions ayarlarını modifiye etmek için kullanılan araçları içeren bir pakettir. Grafik arayüzü bulunmaz, biraz da kabadır; ancak Wireless Extension'u tam olarak desteklemeyi hedefler. - http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.30.pre9.tar.gz - - no-ldconfig.patch - wireless_tools.27-wireless-man-upd.patch - wireless-tools-29-makefile.patch - - system/base/wireless-tools/pspec.xml - - - wireless-tools - - comar - - - /sbin - /usr/lib - /usr/share/man - /usr/share/doc - - - - wireless-tools-devel - Development files for wireless-tools - wireless-tools için geliştirme dosyaları - system.devel - - wireless-tools - - - /usr/include - /usr/share/man/man3 - - - - - 2015-05-08 - 30 - Release bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 30 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 30 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2013-02-11 - 30 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2011-06-01 - 29 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - libee - http://www.libee.org/ - - Marcin Bojara - marcin@pisilinux.org - - LGPLv2.1 - library - system.base - An Event Expression Library inspired by CEE - Libee - An Event Expression Library inspired by CEE - http://www.libee.org/download/files/download/libee-0.4.1.tar.gz - - libestr-devel - - system/base/libee/pspec.xml - - - libee - - libestr - - - /usr/sbin - /usr/lib/libee.so* - /usr/share/doc/libee - - - - libee-devel - Development files for libestr - system.devel - - libee - - - /usr/include/libee - /usr/lib/pkgconfig/libee.pc - - - - - 2014-05-11 - 0.4.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 0.4.1 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-11-21 - 0.4.1 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - busybox - http://www.busybox.net - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Statically linked binary providing simplified versions of system commands - Statik bağlanmış sistem komutları bütünü - busybox is a single binary which includes versions of a large number of system commands, including a shell. - busybox, kabuk da dahil olmak üzere çeşitli sistem komutlarını içeren tek bir çalıştırılabilir dosyadır. - http://busybox.net/downloads/busybox-1.24.1.tar.bz2 - - config - - system/base/busybox/pspec.xml - - - busybox - - /bin - - - - - 2016-01-29 - 1.24.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.22.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-03-29 - 1.22.1 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-01-14 - 1.21.0 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 1.20.2 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - lzo - http://www.oberhumer.com/opensource/lzo/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - An extremely fast compression and decompression library - Çok hızlı bir sıkıştırma/açma kütüphanesi - lzo is a library with very high compression and decompression speeds and very small memory usage. Provides low compression ratios but very high speeds. - lzo hızlı bir sıkıştırma/açma kütüphanesidir. Düşük sıkıştırma oranları verir fakat hem sıkıştırma hem açma işleminde bellek kullanımı çok düşüktür ve işlem hızı yüksektir. - http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz - system/base/lzo/pspec.xml - - - lzo - - /usr/lib - /usr/share/doc - - - - lzo-devel - Development files for lzo - lzo için geliştirme dosyaları - - lzo - - - /usr/include - - - - lzo-32bit - 32-bit shared libraries for lzo - emul32 - emul32 - - glibc-32bit - - - glibc-32bit - - - /usr/lib32 - - - - - 2015-04-12 - 2.09 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-07-03 - 2.08 - Version bump and security update (CVE-2014-4607). - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 2.06 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-28 - 2.06 - Clean lzo. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-10-23 - 2.06 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - libusb-compat - http://libusb.sourceforge.net/ - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - system.base - Userspace access to USB devices - Project's main aim is to create a library for use by user level applications to access USB devices regardless of OS. - mirrors://sourceforge/libusb/libusb-compat-0.1.5.tar.bz2 - - libtool - libusb-devel - - system/base/libusb-compat/pspec.xml - - - libusb-compat - - libusb - - - /usr/lib - /usr/share/doc - - - - libusb-compat-devel - Development files for libusb - system.devel - - libusb-devel - libusb-compat - - - /usr/bin - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - - - - libusb-compat-32bit - 32-bit shared libraries for libXt - emul32 - emul32 - - libusb-32bit - glibc-32bit - - - libusb-32bit - libusb - glibc-32bit - libusb-compat - - - /usr/lib32 - - - - - 2015-05-05 - 0.1.5 - Rebuild for libusbx libusb changes - Use auto-emul32, cleanup actions.py - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 0.1.5 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 0.1.5 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-07-21 - 0.1.4 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - dhcpcd - http://roy.marples.name/dhcpcd - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - A dhcp client only - DHCP protokolü için istemci - Un client daemon DHCP conforme aux RFC2131 et RFC1541. dhcpcd obtient une adresse IP ainsi que d'autres informations depuis le serveur DHCP correspondant, configure l'interface réseau automatiquement et essaie de renouveler le bail selont les RFC2131 et EFC1541 en fonction des options de la ligne de commande. - An RFC2131 and RFC1541 compliant DHCP client daemon. dhcpcd gets an IP address and other information from a corresponding DHCP server, configures the network interface automatically, and tries to renew the lease time according to RFC2131 or RFC1541 depending on the command line option. - RFC2131 ve RFC1541 uyumlu bir DHCP istemci servisi.dhcpcd ilgili bir DHCP sunucusundan bir IP adresi ve gerekli diğer bilgileri alır, ağ arayüzünü otomatik olarak yapılandırır ve RFC2131 veya RFC1541 komut satırı özelliğine bağlı olarak kiralama zamanını yenilemeyi dener. - http://ftp.osuosl.org/pub/blfs/conglomeration/dhcpcd/dhcpcd-6.10.1.tar.xz - system/base/dhcpcd/pspec.xml - - - dhcpcd - - /etc - /lib/dhcpcd - /usr/lib/dhcpcd/dev/udev.so - /sbin - /usr/share/doc - /usr/share/man - /usr/share/dhcpcd - /var/lib/dhcpcd - - - - - 2016-01-28 - 6.10.1 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-05-03 - 6.8.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-02-03 - 6.7.1 - Version bump. - Hakan Yıldız - hknyldz93@gmail.com - - - 2014-05-11 - 6.3.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 6.3.2 - Version bump. - PisiLinux Community - admins@pisilinux.org - - - 2013-10-31 - 6.0.5 - Really revert back to 6.0.5. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-28 - 6.0.5 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-01-14 - 5.6.7 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 5.6.1 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - findutils - http://www.gnu.org/software/findutils/findutils.html - - PisiLinux Community - admins@pisilinux.org - - GPLv3+ - app:console - system.base - GNU utilities to find files - Dosya bulmak için kullanılan GNU uygulamaları - Les utilitaires de recherche GNU sont les utilitaire de recherche de répertoire basique du système d'exploitation GNU. Ces programmes sont typiquement associés à d'autres programmes pour leur fournir une capacité de recherche de fichier et de répertoire puissante et modulaire à d'autres commandes. - The GNU Find Utilities are the basic directory searching utilities of the GNU operating system. These programs are typically used in conjunction with other programs to provide modular and powerful directory search and file locating capabilities to other commands. - GNU Find Utilities GNU işletim sisteminin temel dizin arama uygulamalarıdır. Bu uygulamalar diğer komutlara başka programlar ile birlikte çalışarak modüler ve güçlü dizin ve dosya arama yetenekleri sunar. - http://ftp.gnu.org/pub/gnu/findutils/findutils-4.6.0.tar.gz - - gettext-devel - texinfo - - system/base/findutils/pspec.xml - - - findutils - - /usr/bin - /usr/lib/find - /usr/libexec - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/locale - /var - - - - - 2016-01-03 - 4.6.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 4.4.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-09-01 - 4.4.2 - Revert back to stable version, clean findutils. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-14 - 4.5.9 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - gperftools - http://code.google.com/p/gperftools/ - - PisiLinux Community - admins@pisilinux.org - - BSD - library - app:console - system.base - Google Performance Tools - Google Performans Araçları - Perf Tools is a collection of a high-performance multi-threaded malloc() implementation, plus some pretty nifty performance analysis tools. - gperftools yüksek performanslı ve yararlı performans analizi araçları içerir. - https://github.com/gperftools/gperftools/releases/download/gperftools-2.4/gperftools-2.4.tar.gz - - libunwind-devel - - system/base/gperftools/pspec.xml - - - gperftools - - libunwind - libgcc - - - /usr/bin - /usr/lib - /usr/share/doc/gperftools/COPYING - /usr/share/man - - - - gperftools-devel - Development headers for gperftools - gperftools için geliştirme başlıkları - gperftools-devel provides development headers for gperftools. - gperftools için geliştirme başlıklarını içerir. - library - - gperftools - - - /usr/include - /usr/lib/pkgconfig - - - - gperftools-docs - Documentation files for gperftools - gperftools için belgelendirme dosyaları - gperftools-docs provides documentation files for gperftools. - gperftools için belgelendirme dosyalarını içerir. - data:doc - system.doc - - gperftools - - - /usr/share/doc/gperftools - - - - - 2016-01-25 - 2.4 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-06-02 - 2.2 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-02-24 - 2.1 - Version bump. - Kamil Atlı - suvarice@gmail.com - - - 2013-01-27 - 2.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2011-02-20 - 1.7 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - openssl - http://www.openssl.org/ - - PisiLinux Community - admins@pisilinux.org - - as-is - app:console - library - system.base - Toolkit for SSL v2/v3 and TLS v1 - SSL v2/v3 ve TLS v1 için araç kiti - OpenSSL est un outil cryptographique implémentant une couche de communication sécurisée (SSL v2/v3) et une couche de transport sécurisée (TLS v1) - OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them. - OpenSSL, Güvenlik Soketleri Katmanı (SSL v2/v3) ve Aktarım Katmanı Güvenliği (TLSv1) ağ protokolleri ile bu protokollerin gerektirdiği şifreleme standartlarını uygulayan bir şifreleme aracıdır. - OpenSSL ist ein Kryptographie Werkzeug, das die Netzwerkprotokolle Secure Sockets Layer (SSL v2/v3) und Transport Layer Security (TLS v1) sowie deren erforderliche zugehörige Kryptographie Standards implementiert. - ftp://ftp.openssl.org/source/openssl-1.0.2e.tar.gz - - openssl-1.0.0-beta4-ca-dir.patch - - - zlib-devel - xorg-util - perl - sed - - - openssl-1.0.0a-ldflags-norpath.patch - openssl-1.0.0-beta4-ca-dir.patch - openssl-1.0.0-beta5-enginesdir.patch - openssl-1.0.2-ipv6.patch - openssl-include.patch - openssl_fix_for_x32.patch - openssl_fix_for_x32_2.patch - openssl-ca-certificates.patch - CVE-2014-0198.patch - openssl-1.0.2a-x32-asm.patch - - system/base/openssl/pspec.xml - - - openssl - - zlib - ca-certificates - - - /etc - /usr/bin - /usr/lib - /usr/share/doc - - - System.Package - - - - openssl-devel - Development files for openssl - openssl için geliştirme dosyaları - system.devel - - openssl - - - /usr/include - /usr/share/man - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - - - - openssl-32bit - 32-bit shared libraries for openssl - openssl için 32-bit paylaşımlı kitaplıklar - emul32 - _emul32 - - zlib-32bit - - - openssl - zlib-32bit - glibc-32bit - - - /usr/lib32 - - - - - 2015-12-14 - 1.0.2e - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-02 - 1.0.2d - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-13 - 1.0.2c - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-23 - 1.0.2a - Rebuild. - Vedat Demir - vedat@pisilinux.org - - - 2015-04-11 - 1.0.2a - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-02-17 - 1.0.2 - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-11-05 - 1.0.1j - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-06-05 - 1.0.1h - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 1.0.1g - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-09 - 1.0.1g - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-02-02 - 1.0.1f - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-28 - 1.0.1e - Clean openssl. - Serdar Soytetir - kaptan@pisilinux.org - - - security - 2013-01-14 - 1.0.1e - New release - PisiLinux Community - admins@pisilinux.org - - - security - 2012-08-31 - 1.0.1c - First release - Erdem Artan - admins@pisilinux.org - - - - - - kmod - http://git.kernel.org/?p=utils/kernel/kmod/kmod.git;a=summary - - PisiLinux Community - admins@pisilinux.org - - GPLv2+ - app:console - system.base - Linux kernel module management utilities - Linux kernel modülleri yönetim araçları - Linux kernel module management utilities - Linux kernel modülleri yönetim araçları - https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-22.tar.xz - - chrpath - xz-32bit - xz-devel - zlib-32bit - zlib-devel - kernel-module-headers - - - kmod-15-dynamic-kmod.patch - - system/base/kmod/pspec.xml - - - kmod - - xz - zlib - glibc - libkmod - - - /usr/bin - /bin - /sbin - /usr/share/man - /usr/share/doc - /etc - /usr/share/bash-completion/completions/kmod - - - Boot.Modules - System.PackageHandler - - - blacklist/blacklist.conf - blacklist/blacklist-firewire.conf - blacklist/blacklist-framebuffer.conf - blacklist/blacklist-watchdog.conf - modprobe.conf - depmod.conf - depmod-search.conf - - - - libkmod-devel - system.devel - - libkmod - - - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - - - - libkmod - kmod libraries - - xz - zlib - - - /usr/lib - - - - libkmod-32bit - 32bit libraries of libkmod - emul32 - emul32 - - xz-32bit - zlib-32bit - glibc-32bit - - - /usr/lib32 - - - - - 2015-11-29 - 22 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-17 - 21 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-26 - 20 - Version bump,add patch and fix deps. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-11-18 - 19 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-23 - 17 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 16 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-21 - 16 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-09-05 - 15 - Add missing method to pakhandler.py - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 15 - Version bump, clean kmod. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-20 - 14 - rebuild for kernel 3.10.9 - PisiLinux Community - admins@pisilinux.org - - - 2013-08-11 - 14 - rebuild for kernel 3.10.5 - PisiLinux Community - admins@pisilinux.org - - - 2013-07-27 - 14 - Move pc files to devel pack, rebuild - PisiLinux Community - admins@pisilinux.org - - - 2013-07-04 - 14 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-04-14 - 13 - Version bump - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-22 - 12 - Version bump, add comar scripts - Marcin Bojara - marcin@pisilinux.org - - - 2012-11-15 - 11 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - cryptsetup - https://gitlab.com/cryptsetup/cryptsetup - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:cli - system.base - Userspace setup tool for transparent encryption of block devices using dm-crypt - Şifreli dosya sistemleri yaratmak için bir araç - Userspace setup tool for transparent encryption of block devices using dm-crypt - cryptsetup device mapper kullanarak şifrelenmiş dosya sistemleri yaratmak için gerekli bir araçtır. - cryptsetup - https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/cryptsetup-1.7.0.tar.xz - - device-mapper-devel - libgpg-error-devel - libgcrypt-devel - python-devel - libutil-linux-devel - popt-devel - popt - - system/base/cryptsetup/pspec.xml - - - cryptsetup - util.crypt - - libcryptsetup - popt - - - /sbin - /usr/share/man - /usr/share/locale - /usr/share/doc -======= - /usr/lib/locale/ku_* - /usr/share/locale/ku* ->>>>>>> master - - - - glibc-locales-kw - locale:kw - system.locale - - /usr/lib/locale/kw_* - /usr/share/locale/kw* - - - -<<<<<<< HEAD - libcryptsetup-devel - libcryptsetup devel files - libcryptsetup için geliştirme dosyaları - programming.devel - - libcryptsetup - -======= - glibc-locales-ky - locale:ky - system.locale ->>>>>>> master - - /usr/lib/locale/ky_* - /usr/share/locale/ky* - - - -<<<<<<< HEAD - python-pycryptsetup - Python backend for cryptsetup - cryptsetup Python bağlayıcısı - programming.language.python - - python - libcryptsetup - -======= - glibc-locales-lb - locale:lb - system.locale ->>>>>>> master - - /usr/lib/locale/lb_* - /usr/share/locale/lb* - - -<<<<<<< HEAD - - - 2016-01-28 - 1.7.0 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-04-30 - 1.6.7 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-01 - 1.6.4 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 1.6.4 - Version bump - PisiLinux Community - admins@pisilinux.org - - - 2014-03-06 - 1.6.0 - Rebuild Unused - Varol Maksutoğlu - waroi@pisilinux.org - - - 2013-07-26 - 1.6.0 - Fix dep, release bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-15 - 1.6.0 - New version - Ertan Güven - ertan@pisilinux.org - - - 2012-10-05 - 1.5.0 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - libidn - http://www.gnu.org/software/libidn - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - GPLv3 - app:console - library - system.base - Internationalized Domain Names (IDN) implementation - Uluslararası Alan Adları (IDN) destek kütüphanesi - GNU Libidn est une implémentation de Stringprep, Punycode et des spécifications IDNA définies par le groupe de travail Internationalized Domain Names (IDN) de l'IETF servant pour les noms de domaines internationalisés. La librairie C est disponible sous la Licence Publique Générale Lesser. - GNU Libidn is an implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group, used for internationalized domain names. The C library is available under the GNU Lesser General Public License. - GNU Libidn, IETF Uluslararasılaştırılmış Domain Adları (IDN) çalışma grubu tarafından tanımlanmış Stringgrep, Punycode ve IDNA tariflerinin bir uygulamasıdır, uluslararası domain adlarının kullanımına olanak sağlar. C kütüphanesi GNU Lesser General Public License altında sağlanabilir. - http://ftp.gnu.org/gnu/libidn/libidn-1.28.tar.gz - system/base/libidn/pspec.xml - -======= ->>>>>>> master - - glibc-locales-lg - locale:lg - system.locale - - /usr/lib/locale/lg_* - /usr/share/locale/lg* - - - - glibc-locales-li - locale:li - system.locale - - /usr/lib/locale/li_* - /usr/share/locale/li* - - - - glibc-locales-lo - locale:lo - system.locale - - /usr/lib/locale/lo_* - /usr/share/locale/lo_* - - - - glibc-locales-lt - locale:lt - system.locale - - /usr/lib/locale/lt_* - /usr/share/locale/lt* - - - - glibc-locales-lv - locale:lv - system.locale - - /usr/lib/locale/lv_* - /usr/share/locale/lv* - - - - glibc-locales-mag - locale:mag - system.locale - - /usr/lib/locale/mag_* - /usr/share/locale/mag* - - - - glibc-locales-mai - locale:mai - system.locale - - /usr/lib/locale/mai_* - /usr/share/locale/mai* - - - - glibc-locales-mg - locale:mg - system.locale - - /usr/lib/locale/mg_* - /usr/share/locale/mg* - - - - glibc-locales-mhr - locale:mhr - system.locale - - /usr/lib/locale/mhr_* - /usr/share/locale/mhr* - - - - glibc-locales-mi - locale:mi - system.locale - - /usr/lib/locale/mi_* - /usr/share/locale/mi* - - - - glibc-locales-mk - locale:mk - system.locale - - /usr/lib/locale/mk_* - /usr/share/locale/mk* - - - - glibc-locales-ml - locale:ml - system.locale - - /usr/lib/locale/ml_* - /usr/share/locale/ml* - - - - glibc-locales-mn - locale:mn - system.locale - - /usr/lib/locale/mn_* - /usr/share/locale/mn* - - - - glibc-locales-mr - locale:mr - system.locale - - /usr/lib/locale/mr_* - /usr/share/locale/mr* - - - - glibc-locales-ms - locale:ms - system.locale - - /usr/lib/locale/ms_* - /usr/share/locale/ms* - - - - glibc-locales-mt - locale:mt - system.locale - - /usr/lib/locale/mt_* - /usr/share/locale/mt* - - - - glibc-locales-my - locale:my - system.locale - - /usr/lib/locale/my_* - /usr/share/locale/my* - - - - glibc-locales-nan - locale:nan - system.locale - - /usr/lib/locale/nan_* - /usr/share/locale/nan* - - - - glibc-locales-nb - locale:nb - system.locale - - /usr/lib/locale/nb_* - /usr/share/locale/nb* - - - - glibc-locales-nds - locale:nds - system.locale - - /usr/lib/locale/nds_* - /usr/share/locale/nds* - - - - glibc-locales-ne - locale:ne - system.locale - - /usr/lib/locale/ne_* - /usr/share/locale/ne* - - - - glibc-locales-nl - locale:nl - system.locale - - /usr/lib/locale/nl_* - /usr/share/locale/nl* - - - - glibc-locales-nn - locale:nn - system.locale - - /usr/lib/locale/nn_* - /usr/share/locale/nn* - - - - glibc-locales-nr - locale:nr - system.locale - - /usr/lib/locale/nr_* - /usr/share/locale/nr* - - - - glibc-locales-nso - locale:nso - system.locale - - /usr/lib/locale/nso_* - /usr/share/locale/nso* - - - - glibc-locales-oc - locale:oc - system.locale - - /usr/lib/locale/oc_* - /usr/share/locale/oc* - - - - glibc-locales-om - locale:om - system.locale - - /usr/lib/locale/om_* - /usr/share/locale/om* - - - - glibc-locales-or - locale:or - system.locale - - /usr/lib/locale/or_* - /usr/share/locale/or* - - - - glibc-locales-os - locale:os - system.locale - - /usr/lib/locale/os_* - /usr/share/locale/os* - - - - glibc-locales-pa - locale:pa - system.locale - - /usr/lib/locale/pa_* - /usr/share/locale/pa* - - - - glibc-locales-pap - locale:pap - system.locale - - /usr/lib/locale/pap_* - /usr/share/locale/pap* - - - - glibc-locales-pl - locale:pl - system.locale - - /usr/lib/locale/pl_* - /usr/share/locale/pl* - - - - glibc-locales-ps - locale:ps - system.locale - - /usr/lib/locale/ps_* - /usr/share/locale/ps* - - - - glibc-locales-pt - locale:pt - system.locale - - /usr/lib/locale/pt_* - /usr/share/locale/pt* - - - - glibc-locales-ro - locale:ro - system.locale - - /usr/lib/locale/ro_* - /usr/share/locale/ro* - - -<<<<<<< HEAD - - - 2015-04-01 - 1.1.8 - Rebuild, remove unused. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-06-10 - 1.1.8 - Add patch CVE. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-05-11 - 1.1.8 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-22 - 1.1.8 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-05-16 - 1.1.6 - Sandbox fixed. - PisiLinux Community - admins@pisilinux.org - - - 2013-02-21 - 1.1.6 - Build with new automake, enable tests. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-13 - 1.1.6 - First release - Erdem Artan - admins@pisilinux.org - - - - - - curl - http://curl.haxx.se/ - - PisiLinux Community - admins@pisilinux.org - - MIT - X11 - app:console - library - system.base - Un client qui maîtrise tout ce qui concerne les URLs - A utility for getting files from remote servers - Uzak sunuculardan dosya indirmek için bir araç - Ein Client, der URLs versteht - curl is a command line tool for transferring data with URL syntax, supporting various protocols. - curl çeşitli protokolleri destekleyen, URL söz dizimini kullanarak uzak sunuculardan veri aktarmak için kullanılan bir komut satırı aracıdır. - http://curl.haxx.se/download/curl-7.47.0.tar.bz2 - - glibc-devel - zlib-devel - openssl-devel - libidn-devel - libssh2-devel - ca-certificates - - - curl-ac.patch - - system/base/curl/pspec.xml - -======= ->>>>>>> master - - glibc-locales-ru - locale:ru - system.locale - -<<<<<<< HEAD - /usr/bin - /usr/lib - /usr/share/doc/ - /usr/share/man/ - /usr/share/curl - /usr/share/zsh -======= - /usr/lib/locale/ru_* - /usr/share/locale/ru* ->>>>>>> master - - - -<<<<<<< HEAD - curl-devel - Development files for curl - curl için geliştirme dosyaları - system.devel - - curl - -======= - glibc-locales-rw - locale:rw - system.locale ->>>>>>> master - - /usr/lib/locale/rw_* - /usr/share/locale/rw* - - -<<<<<<< HEAD - - - 2016-01-28 - 7.47.0 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-05-28 - 7.42.1 - Rebuild. - Vedat Demir - vedat@pisilinux.org - - - 2015-05-01 - 7.42.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2015-04-27 - 7.42.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2015-01-11 - 7.40.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-01-10 - 7.39.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-07-18 - 7.37.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-29 - 7.37.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 7.36 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 7.36 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-12-19 - 7.34.0 - Version bump. - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2013-10-25 - 7.33.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-06-28 - 7.31.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-11 - 7.28.1 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 7.27.0 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - xz - http://tukaani.org/xz/ - - PisiLinux Community - admins@pisilinux.org - - LGPLv2+ - GPLv2+ - GPLv3 - app:console - library - system.base - XZ compression utilities - XZ sıkıştırma araçları - XZ Utils provide a general purpose data compression library and command line tools. The .xz format supports multiple compression algorithms, which are called "filters" in context of XZ Utils. The primary filter is currently LZMA2. - xz, genel amaçlı bir veri sıkıştırma kütüphanesi ve konut satırı araçları içerir. xz dosya biçimi filtre adı verilen sıkıştırma algoritmalarını destekler, öntanımlı filtre ise LZMA2 algoritmasıdır. - http://tukaani.org/xz/xz-5.2.2.tar.xz - system/base/xz/pspec.xml - -======= ->>>>>>> master - - glibc-locales-sa - locale:sa - system.locale - - /usr/lib/locale/sa_* - /usr/share/locale/sa* - - - - glibc-locales-sc - locale:sc - system.locale - - /usr/lib/locale/sc_* - /usr/share/locale/sc* - - - - glibc-locales-sd - locale:sd - system.locale - - /usr/lib/locale/sd_* - /usr/share/locale/sd* - - - - glibc-locales-se - locale:se - system.locale - - /usr/lib/locale/se_* - /usr/share/locale/se* - - - - glibc-locales-shs - locale:shs - system.locale - - /usr/lib/locale/shs_* - /usr/share/locale/shs* - - - - glibc-locales-si - locale:si - system.locale - - /usr/lib/locale/si_* - /usr/share/locale/si* - - - - glibc-locales-sid - locale:sid - system.locale - - /usr/lib/locale/sid_* - /usr/share/locale/sid* - - - - glibc-locales-sk - locale:sk - system.locale - - /usr/lib/locale/sk_* - /usr/share/locale/sk* - - - - glibc-locales-sl - locale:sl - system.locale - - /usr/lib/locale/sl_* - /usr/share/locale/sl* - - - - glibc-locales-so - locale:so - system.locale - - /usr/lib/locale/so_* - /usr/share/locale/so* - - - - glibc-locales-sq - locale:sq - system.locale - - /usr/lib/locale/sq_* - /usr/share/locale/sq* - - - - glibc-locales-sr - locale:sr - system.locale - - /usr/lib/locale/sr_* - /usr/share/locale/sr* - - - - glibc-locales-ss - locale:ss - system.locale - - /usr/lib/locale/ss_* - /usr/share/locale/ss* - - - - glibc-locales-st - locale:st - system.locale - - /usr/lib/locale/st_* - /usr/share/locale/st* - - - - glibc-locales-sv - locale:sv - system.locale - - /usr/lib/locale/sv_* - /usr/share/locale/sv* - - - - glibc-locales-sw - locale:sw - system.locale - - /usr/lib/locale/sw_* - /usr/share/locale/sw* - - - - glibc-locales-ta - locale:ta - system.locale - - /usr/lib/locale/ta_* - /usr/share/locale/ta* - - - - glibc-locales-te - locale:te - system.locale - - /usr/lib/locale/te_* - /usr/share/locale/te* - - - - glibc-locales-tg - locale:tg - system.locale - - /usr/lib/locale/tg_* - /usr/share/locale/tg* - - - - glibc-locales-th - locale:th - system.locale - - /usr/lib/locale/th_* - /usr/share/locale/th* - - - - glibc-locales-ti - locale:ti - system.locale - - /usr/lib/locale/ti_* - /usr/share/locale/ti* - - - - glibc-locales-tig - locale:tig - system.locale - - /usr/lib/locale/tig_* - /usr/share/locale/tig* - - - - glibc-locales-tk - locale:tk - system.locale - - /usr/lib/locale/tk_* - /usr/share/locale/tk* - - - - glibc-locales-tl - locale:tl - system.locale - - /usr/lib/locale/tl_* - /usr/share/locale/tl* - - - - glibc-locales-tn - locale:tn - system.locale - - /usr/lib/locale/tn_* - /usr/share/locale/tn* - - - - glibc-locales-ts - locale:ts - system.locale - - /usr/lib/locale/ts_* - /usr/share/locale/ts* - - - - glibc-locales-tt - locale:tt - system.locale - - /usr/lib/locale/tt_* - /usr/share/locale/tt* - - - - glibc-locales-ug - locale:ug - system.locale - - /usr/lib/locale/ug_* - /usr/share/locale/ug* - - - - glibc-locales-uk - locale:uk - system.locale - - /usr/lib/locale/uk_* - /usr/share/locale/uk* - - - - glibc-locales-unm - locale:unm - system.locale - - /usr/lib/locale/unm_* - /usr/share/locale/unm* - - - - glibc-locales-ur - locale:ur - system.locale - - /usr/lib/locale/ur_* - /usr/share/locale/ur* - - - - glibc-locales-uz - locale:uz - system.locale - - /usr/lib/locale/uz_* - /usr/share/locale/uz* - - - - glibc-locales-ve - locale:ve - system.locale - - /usr/lib/locale/ve_* - /usr/share/locale/ve* - - - - glibc-locales-vi - locale:vi - system.locale - - /usr/lib/locale/vi_* - /usr/share/locale/vi* - - - - glibc-locales-wa - locale:wa - system.locale - - /usr/lib/locale/wa_* - /usr/share/locale/wa* - - - - glibc-locales-wae - locale:wae - system.locale - - /usr/lib/locale/wae_* - /usr/share/locale/wae* - - - - glibc-locales-wal - locale:wal - system.locale - - /usr/lib/locale/wal_* - /usr/share/locale/wal* - - - - glibc-locales-wo - locale:wo - system.locale - - /usr/lib/locale/wo_* - /usr/share/locale/wo* - - - - glibc-locales-xh - locale:xh - system.locale - - /usr/lib/locale/xh_* - /usr/share/locale/xh* - - - - glibc-locales-yi - locale:yi - system.locale - - /usr/lib/locale/yi_* - /usr/share/locale/yi* - - - - glibc-locales-yo - locale:yo - system.locale - - /usr/lib/locale/yo_* - /usr/share/locale/yo* - - - - glibc-locales-yue - locale:yue - system.locale - - /usr/lib/locale/yue_* - /usr/share/locale/yue* - - - - glibc-locales-zh - locale:zh - system.locale - - /usr/lib/locale/zh_* - /usr/share/locale/zh* - - - - glibc-locales-zu - locale:zu - system.locale - - /usr/lib/locale/zu_* - /usr/share/locale/zu* - - - - - 2016-02-27 - 2.23 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-04 - 2.21 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-11-28 - 2.20 - Rebuild, cleanup. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-09-18 - 2.20 - Rebuild, add patches, fix one memleak and segfault. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-09-12 - 2.20 - Add emul32 support. - We have a new package named glibc-32bit. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-09-06 - 2.19 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 2.19 - Rebuild, fix xattr patch. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-03-29 - 2.19 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-11-12 - 2.18 - Add patch. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-22 - 2.18 - Version bump, cleanup. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-16 - 2.17 - New release. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-07-22 - 2.16 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - zlib - http://www.gzip.org/zlib/ - - PisiLinux Community - admins@pisilinux.org - - ZLIB - library - system.base - Librairie de compression/extraction standard - Standard (de)compression library - Standart sıkıştırma/açma kütüphanesi - Zlib is a general-purpose, patent-free, lossless data compression library which is used by many different programs. - mirrors://sourceforge/libpng/zlib-1.2.8.tar.xz - - dont-call-ldconfig.patch - - system/base/zlib/pspec.xml - - - minizip - Library for manipulating files from a zip archive - zip arşivlerindeki dosyaları yönetmek için kitaplık - util.archive - minizip - - zlib - - - /usr/lib/libminizip* - - - - minizip-devel - Development files for minizip - minizip için geliştirme dosyaları - util.archive - minizip - - minizip - zlib-devel - - - /usr/include/minizip - /usr/lib/pkgconfig/minizip.pc - - - - zlib - - /lib/libz.so* - /usr/lib/libz.so* - /usr/share/doc - /usr/share/man - - - - zlib-devel - Development files for zlib - zlib için geliştirme dosyaları - system.devel - - zlib - - - /usr/lib/pkgconfig/zlib.pc - /usr/lib32/pkgconfig - /usr/include/z*.h - /usr/share/man/man3 - /usr/share/doc/zlib/algorithm.txt - /usr/share/doc/zlib/example.c - - - - zlib-32bit - 32-bit shared libraries for zlib - zlib için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - glibc-32bit - - - glibc-32bit - zlib - - - /usr/lib32/libz.so* - - - - - 2016-02-28 - 1.2.8 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.2.8 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-27 - 1.2.8 - Clean zlib. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-06-29 - 1.2.8 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-06-03 - 1.2.7 - First release - Erdem Artan - admins@pisilinux.org - - - - - - libcap - http://www.kernel.org/pub/linux/libs/security/linux-privs/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - BSD - library - system.base - capacités POSIX 1003.1e. - POSIX 1003.1e capabilities library - POSIX 1003.1e desteği - libcap is a library for getting and setting POSIX.1e (formerly POSIX 6) draft 15 capabilities. - https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.25.tar.xz - - attr-devel - pam-devel - - system/base/libcap/pspec.xml - - - libcap - - pam - attr - - - /sbin - /lib - /usr/lib - /usr/share/man - /usr/share/doc - /etc - - - - libcap-devel - Development files for libcap - libcap için geliştirme dosyaları - system.devel - - libcap - - - /usr/include - /usr/share/man/man3 - - - - libcap-32bit - 32-bit shared libraries for libcap - libcap için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - attr-32bit - glibc-32bit - - - glibc-32bit - attr-32bit - - - /usr/lib32 - - - - - 2016-03-02 - 2.25 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-16 - 2.24 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 2.24 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 2.24 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 2.22 - Rebuild - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-01-24 - 2.22 - Use flags form pisi.conf, fix emul32 - Marcin Bojara - marcin@pisilinux.org - - - 2012-10-01 - 2.22 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - miscfiles - http://freshmeat.net/projects/miscfiles/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - data - system.base - Fichiers divers. - Miscellaneous files - Çeşitli dosyalar - Verschiedene Dateien - miscfiles is a collection of data files for freely available information, like airport, country, currencies, city information, and codes. It also includes the Unicode character database. - miscfiles havalanı, ülke, para birimi, şehir bilgisi ve kodları gibi bir çok ulaşılabilir bilgiyi veri dosyaları halinde tutmaktadır. - http://ftp.gnu.org/gnu/miscfiles/miscfiles-1.5.tar.gz - system/base/miscfiles/pspec.xml - - - miscfiles - - /usr/share/doc - /usr/share/rfc - /usr/share/dict - /usr/share/misc - - - - - 2016-03-03 - 1.5 - Rebuild with new toolchain. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-05-11 - 1.5 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-30 - 1.5 - Rebuild - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-11-24 - 1.5 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - ncurses - http://www.gnu.org/software/ncurses/ncurses.html - - PisiLinux Community - admins@pisilinux.org - - MIT - library - system.base - Console display library - Konsol görsel kütüphanesi - NCurses est une librairie de fonction gérant l'affichage des applications pour terminaux en mode caractères. La libraries NCurses défini de nombreuses fonctionalités telles le mouvement de la souris et du curseur, la disposition du clavier et l'affichage en couleur. - The NCurses is a library of functions that manage an application's display on character-cell terminals. The NCurses library defines many functions such as moving mouse and cursor, keyboard mapping and dispaying in color. - NCurses, bir uygulamanın karakter tabanlı uçbirimlerde görüntüleri üzerinde çalışabilmeyi sağlayan işlevler kütüphanesidir. Uygulama programları için imleci hareket ettirmek, pencereler oluşturmak, renkler üretmek, fare ile oynamak v.b. işlevler sağlamaktadır. - mirrors://gnu/ncurses/ncurses-6.0.tar.gz - - gnuconfig - - system/base/ncurses/pspec.xml - - - ncurses - - /etc - /lib - /usr/bin - /usr/lib - /usr/share/terminfo - /usr/share/tabset - /usr/share/man - /usr/share/doc - - - - ncurses-devel - Development files for ncurses - ncurses için geliştirme dosyaları - system.devel - - ncurses - - - /usr/include - /usr/lib/pkgconfig - /usr/lib/static - /usr/lib32/static - /usr/share/man/man3 - /usr/share/pkgconfig - - - - ncurses-32bit - 32-bit shared libraries for ncurses - emul32 - _emul32 - - glibc-32bit - - - ncurses - glibc-32bit - - - /usr/lib32 - /usr/lib32/pkgconfig - - - - - 2016-02-28 - 6.0 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-24 - 6.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-09-14 - 5.9 - Fix build .pc files. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 5.9 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 5.9 - Rebuild. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-27 - 5.9_20121110 - Clean ncurses - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-11-14 - 5.9_20121110 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - pam - http://www.kernel.org/pub/linux/libs/pam/ - - PisiLinux Community - admins@pisilinux.org - - PAM - library - system.base - Modules d'Authentification en Greffon (Pluggable Authentication Modules) - Pluggable Authentication Modules - PAM - Eklenebilir Yetkilendirme Modülleri - PAM (Pluggable Authentication Modules) is a system security tool that allows system administrators to set authentication policy without having to recompile programs that handle authentication. - http://www.linux-pam.org/library/Linux-PAM-1.2.1.tar.bz2 - - dlopen.sh - dlopen-test.sh - - - perl - gettext - cracklib-devel - libxslt-devel - docbook-xsl - - system/base/pam/pspec.xml - - - pam - - cracklib - - - /etc - /lib - /var/run/console - /usr/lib - /sbin - /usr/sbin - /usr/share/doc - /usr/share/man - /usr/share/locale - - - System.Package - - - 90-nproc.conf - - - - pam-devel - Development files for pam - pam için geliştirme dosyaları - system.devel - - pam - - - /usr/include - /usr/share/man/man3 - - - - - 2016-03-05 - 1.2.1 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-04-01 - 1.1.8 - Rebuild, remove unused. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-06-10 - 1.1.8 - Add patch CVE. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-05-11 - 1.1.8 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-22 - 1.1.8 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-05-16 - 1.1.6 - Sandbox fixed. - PisiLinux Community - admins@pisilinux.org - - - 2013-02-21 - 1.1.6 - Build with new automake, enable tests. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-13 - 1.1.6 - First release - Erdem Artan - admins@pisilinux.org - - - - - - sed - http://sed.sourceforge.net/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - GNU Stream Editor - GNU stream düzenleyici - Sed est un éditeur de flux. Un éditeur de flux est utilisé pour réaliser des opérations basiques de modification de texte sur un flux d'entrée (un fichier ou un tuyau unix). - Sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). - Sed bir dosyadan veya standart girdiden (klavyeden) bilgi okur ve standart çıktıya (ekrana) okuduğu bilgileri kullanıcının belirlediği düzene sokarak yazar. - mirrors://gnu/sed/sed-4.2.2.tar.gz - - gettext-devel - - system/base/sed/pspec.xml - - - sed - - acl - - - /bin - /usr/bin - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/locale - - - - - 2016-02-28 - 4.2.2 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 4.2.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-27 - 4.2.2 - Clean sed. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-01-14 - 4.2.2 - Release bump for rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-01-14 - 4.2.2 - New release - PisiLinux Community - admins@pisilinux.org - - - 2010-10-11 - 4.2.1 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - dbus - http://dbus.freedesktop.org/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - AFL-2.1 - service - system.base - A message bus system, a simple way for applications to talk to each other - Uygulamaların birbirleriyle haberleşmesinin basit bir yöntemi - D-Bus fourni à la fois un daemon système (pour les événements els que l'"ajout d'un nouveau périphérique" ou "file d'impression changée") et un daemon propre à chaque session utilisateur (pour les besoins généraux de communication entre processus utilisateurs). De plus, le bus de message est construit en se basant sur un framework (cadre de développement) de passage de message de un-vers-un pouvant être utilisé par n'importe quelles applications pour communiquer directement (sans passer par le daemon de bus de message). Pour l'instant les applications pouvant communiquer doivent être situées sur le même ordinateur, mais l'option TCP/IP est disponible et le support de processus distant est prévu. - D-Bus supplies both a system daemon (for events such as "new hardware device added" or "printer queue changed") and a per-user-login-session daemon (for general IPC needs among user applications). Also, the message bus is built on top of a general one-to-one message passing framework, which can be used by any two apps to communicate directly (without going through the message bus daemon). Currently the communicating applications are on one computer, but TCP/IP option is available and remote support planned. - D-Bus, sistem ve kullanıcılar için olmak üzere iki tane artalan süreci (daemon) sunar. Mesaj yolu, bire bir mesaj geçiş araçları üzerine inşa edilmiştir. Bu sayede iki program birbiriyle bir mesaj yolu artalan süreci kullanmadan, direkt olarak haberleşebilir. Şu an için haberleşme araçları aynı bilgisayar üzerinde çalışabilmektedir, fakat TCP/IP ile uzaktan haberleşme de planlanmaktadır. - http://dbus.freedesktop.org/releases/dbus/dbus-1.10.6.tar.gz - - expat-devel - libX11-devel - libcap-ng-devel - - system/base/dbus/pspec.xml - - - dbus - - expat - libcap-ng - - - /etc/dbus-1 - /usr/lib/tmpfiles.d/dbus.conf - /usr/bin - /usr/lib - /usr/libexec - /usr/share/dbus-1 - /usr/share/doc - /usr/share/man - /run/dbus - /var/lib/dbus - /lib/systemd/system - - - System.Package - - - tmpfiles.conf - - - - dbus-x11 - x11.util - - libX11 - dbus - - - /usr/bin/dbus-launch - - - - dbus-devel - Development files for dbus - dbus için geliştirme dosyaları - system.devel - - dbus - - - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/lib/dbus-1.0/include - /usr/share/man/man3 - - - - dbus-32bit - 32-bit shared libraries for dbus - dbus için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - expat-32bit - glibc-32bit - - - glibc-32bit - - - /usr/lib32 - - - - - 2016-03-03 - 1.10.6 - Rebuild with new toolchain. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-12-23 - 1.10.6 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-11-12 - 1.10.2 - Version Bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-09 - 1.10.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-11 - 1.9.14 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-02-15 - 1.9.10 - Version bump and security fixes CVE-2015-0245. - Vedat Demir - vedat@pisilinux.org - - - 2015-01-25 - 1.9.6 - Version bump and security update (CVE-2014-3636, CVE-2014-3637,CVE-2014-3638, CVE-2014-3639) . - Vedat Demir - vedat@pisilinux.org - - - 2014-09-19 - 1.8.8 - Version bump and security update (CVE-2014-3636, CVE-2014-3637,CVE-2014-3638, CVE-2014-3639) . - Vedat Demir - vedat@pisilinux.org - - - 2014-07-04 - 1.8.6 - Version bump and security update CVE-2014-3532 CVE-2014-3533. - Vedat Demir - vedat@pisilinux.org - - - 2014-06-23 - 1.8.4 - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 1.8.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-18 - 1.8.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-01-09 1.6.18 Version bump. - Marcin Bojara - marcin@pisilinux.org + Osman Erkan + osman.erkan@pisilinux.org - - 2013-10-23 + + 2015-07-14 1.6.16 Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-09-08 - 1.6.14 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-10-16 - 1.6.8 - First release - Erdem Artan - admins@pisilinux.org - - - - - - bash - http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - - Pisi Linux Admins - admins@pisilinux.org - - GPLv2 - app:console - system.base - The standard GNU Bourne again shell - GNU Bource again kabuğu - Bash est le Bourne Again SHell du projet GNU, une implémentation complête du POSIX IEEE et des spécifications d'interprétation de commande (shell) de l'Open Group, avec édition interactive de ligne de commande et des fonctionnalités à la csh tels que la substitution dans l'historique de commande. - 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. - Bash, IEEE POSIX ve Open Group'un interaktif komut satırı düzenleme, geçmiş komutları tamamlama gibi csh tipi özellikler gibi kabuk uygulamaları tariflerinin tam olarak uygulayan GNU Projesinin Bourne Again SHell kabuk programıdır. - mirrors://gnu/bash/bash-4.3.30.tar.gz - - ncurses-devel - - - official/bash43-031.tar.gz - official/bash43-032.tar.gz - official/bash43-033.tar.gz - official/bash43-034.tar.gz - official/bash43-035.tar.gz - official/bash43-036.tar.gz - official/bash43-037.tar.gz - official/bash43-038.tar.gz - official/bash43-039.tar.gz - fedora/bash-2.02-security.patch - fedora/bash-2.03-paths.patch - fedora/bash-2.03-profile.patch - fedora/bash-2.05a-interpreter.patch - fedora/bash-2.05b-debuginfo.patch - fedora/bash-2.05b-manso.patch - fedora/bash-2.05b-pgrp_sync.patch - fedora/bash-2.05b-readline-oom.patch - fedora/bash-2.05b-xcc.patch - fedora/bash-3.2-audit.patch - fedora/bash-3.2-ssh_source_bash.patch - fedora/bash-4.0-nobits.patch - fedora/bash-4.1-broken_pipe.patch - fedora/bash-4.1-defer-sigchld-trap.patch - fedora/bash-4.1-examples.patch - fedora/bash-4.2-coverity.patch - fedora/bash-4.2-manpage_trap.patch - fedora/bash-4.2-rc2-logout.patch - fedora/bash-4.2-size_type.patch - fedora/bash-bashbug.patch - fedora/bash-infotags.patch - fedora/bash-requires.patch - fedora/bash-setlocale.patch - fedora/bash-tty-tests.patch - - system/base/bash/pspec.xml - - - bash - - ncurses - - - /etc - /bin - /usr/bin - /usr/share/doc - /usr/share/info - /usr/share/man - /usr/share/locale - - - bashrc - command-not-found.sh - - - - - 2016-02-28 - 4.3_p39 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-07-09 - 4.3_p39 - Update - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2015-08-20 - 4.3_p33 - Update - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-10-13 - 4.3_p30 - Update - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-09-27 - 4.3_p26 - Update - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 4.3_p8 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 4.3_p8 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-28 - 4.2_p45 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-11-24 - 4.2_p45 - Update - Marcin Bojara - marcin@pisilinux.org - - - 2012-11-24 - 4.2_p39 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - libcap-ng - http://people.redhat.com/sgrubb/libcap-ng - - PisiLinux Community - admins@pisilinux.org - - LGPLv2+ - library - system.base - An alternate POSIX capabilities library - Alternatif bir POSIX yetenekleri kütüphanesi - libcap-ng is a library that makes using POSIX capabilities easier. - libcap-ng POSIX yeteneklerinin yönetimini kolaylaştıran bir kütüphanedir. - http://people.redhat.com/sgrubb/libcap-ng/libcap-ng-0.7.7.tar.gz - - attr-devel - python-devel - - system/base/libcap-ng/pspec.xml - - - libcap-ng - - /usr/lib - /usr/share/doc - - - - python-libcap-ng - Python bindings for libcap-ng - Python için libcap-ng bağlayıcıları - programming.language.python - - libcap-ng - - - /usr/lib/python* - - - - libcap-ng-utils - Utilities to analyse the POSIX capabilities on running processes - Çalışan süreçlerin sahip olduğu POSIX yeteneklerini incelemeye yarayan araçlar - util.admin - - libcap-ng - - - /usr/bin - /usr/share/man/man8/* - - - - libcap-ng-devel - Development files for libcap-ng - libcap-ng için geliştirme dosyaları - system.devel - - libcap-ng - - - /usr/share/aclocal - /usr/include - /usr/lib/pkgconfig - /usr/share/man/man3 - - - - - 2016-03-03 - 0.7.7 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-05-11 - 0.7.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 0.7.3 - Rebuild - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-11 - 0.7.3 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 0.7 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - man-pages - http://www.win.tue.nl/~aeb/linux/man/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - data:doc - system.base - Une collection de pages de manuel Linux compréhensibles d'une certaine manière. - A somewhat comprehensive collection of Linux man pages - Kapsamlı Linux kılavuz dökümanları - A large collection of man pages (documentation) from the Linux Documentation Project (LDP). - https://www.kernel.org/pub/linux/docs/man-pages/man-pages-4.04.tar.xz - http://www.kernel.org/pub/linux/docs/man-pages/man-pages-posix/man-pages-posix-2003-a.tar.xz - system/base/man-pages/pspec.xml - - - man-pages - - man-db - - - /usr/share/doc - /usr/share/man - - - man1/getent.1 - man1/sprof.1 - - - - - 2016-01-03 - 4.04 - Version bump - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-25 - 4.02 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-08 - 4.00 - Version bump. Ertuğrul Erata ertugrulerata@gmail.com - 2015-03-09 - 3.81 + 2014-12-05 + 1.6.15 Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com + Osman Erkan + osman.erkan@pisilinux.org - 2014-07-13 - 3.70 + 2014-07-07 + 1.6.12 Version bump. Vedat Demir vedat@pisilinux.org 2014-05-11 - 3.55 + 1.6.10 Release bump. Marcin Bojara marcin@pisilinux.org - 2013-10-28 - 3.55 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-28 - 3.47 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-03-04 - 3.47 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2011-01-04 - 3.32 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - polkit - http://www.freedesktop.org/wiki/Software/PolicyKit - - PisiLinux Community - admins@pisilinux.org - - LGPLv2+ - service - library - app:console - system.base - PolicyKit Authorization Framework - Sistem bileşenleri için erişim politikası servisi - polkit est un cadre de développement (framework) pour définir des politiques à appliquer à des composants du système ainsi que fournir à des parties du bureau la possibilité de les configurer. - polkit is a toolkit for defining and handling authorizations. It is used for allowing unprivileged processes to speak to privileged processes. - polkit, sistem genelindeki bileşenlerin ve masaüstü bileşenlerinin ayarlayabileceği şekilde ilkeler tanımlamak için araçlardan oluşur. - http://www.freedesktop.org/software/polkit/releases/polkit-0.113.tar.gz - - dbus-devel - pam-devel - glib2-devel - expat-devel - spidermonkey-devel - gobject-introspection-devel - intltool - - - use-system-locale-in-gobject-api.diff - - system/base/polkit/pspec.xml - - - polkit-devel - Development headers for polkit - polkit geliştirme başlıkları - system.devel - - polkit - glib2-devel - - - /usr/include - /usr/lib/pkgconfig - - - - polkit - - pam - glib2 - expat - spidermonkey - - - /etc - /usr/lib - /usr/libexec - /usr/bin - /usr/sbin - /usr/share/locale - /usr/share/polkit-1 - /usr/share/dbus-1 - /usr/share/gir-1.0 - /var/lib/polkit-1 - /lib/systemd - /usr/share/man - /usr/share/doc - - - man/pklocalauthority.8 - man/polkit.8 - man/polkitd.8 - man/pkaction.1 - man/pkcheck.1 - man/pkexec.1 - 70-desktop-policy.conf - - - - - 2015-07-21 - 0.113 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-14 - 0.112 - Rebuild, enable-introspection. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-06-10 - 0.112 - Release bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-05-11 - 0.112 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-01 - 0.112 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-28 - 0.111 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-11 - 0.110 - Güncellendi. - PisiLinux Community - admins@pisilinux.org - - - 2013-01-11 - 0.107 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - ca-certificates - http://packages.qa.debian.org/c/ca-certificates.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - MPL-1.1 - app:web - system.base - Common CA certificates - Common CA certificates - http://ftp.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_20160104.tar.xz - system/base/ca-certificates/pspec.xml - - - ca-certificates - - run-parts - - - /etc - /usr/share/man - /usr/sbin - /usr/share/ca-certificates - - - System.Package - - - - - 2016-03-03 - 20160104 - Rebuild with new toolchain. - Alihan Öztürk - alihan@pisilinux.org - - - 2016-01-15 - 20160104 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-01-10 - 20141019 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-01-10 - 20141019 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 20140325 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-01 - 20140325 - Version bump, fix installation. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-03-03 - 20130906 - First Release - PisiLinux Community - admins@pisilinux.org - - - - - - gawk - http://www.gnu.org/software/gawk/gawk.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - GNU awk pattern-matching language - Metin işleme uygulaması olan awk'ın GNU versiyonu - L'outil awk interprète un langage de programmation spécifique permettant d'effectuer les tâches de modifications simples de données en quelques lignes de code. Il vous permet de faire des changements dans différents fichiers texte lorsqu'un certain patron apparaît ou d'extraire des données de fragments de lignes tout en laissant de côté le reste. Gawk est l'implémentation GNU d'awk. - The awk utility interprets a special-purpose programming language that makes it possible to handle simple data-reformatting jobs with just a few lines of code. It helps you to make changes in various text files wherever certain patterns appear, or extract data from parts of certain lines while discarding the rest. Gawk is the GNU implementation of awk. - awk uygulaması az bir kod ile basit veri formatı düzenleme işlerinizi yapabilmenize olanak sağlayan özel amaçlı bir programlama dilidir. Uygulama birçok farklı metin dosyası içinde aradığınız parçaları bulup değiştirmenize veya diğer satırlardan ayırarak işlemenize yardımcı olur. Gawk programı awk'ın GNU sürümüdür. - ftp://mirrors.kernel.org/gnu/gawk/gawk-4.1.3.tar.xz - - gettext-devel - - system/base/gawk/pspec.xml - - - gawk - - readline - gmp - mpfr - - - /usr/bin - /usr/libexec - /usr/lib/gawk - /usr/include - /usr/share/awk - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/locale - - - - - 2016-02-28 - 4.1.3 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-05 - 4.1.3 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 4.1.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-03-10 - 4.1.0 - Release bump for update eror - Burak Fazıl Ertürk - burakerturk@pisilinux.org - - - 2014-01-05 - 4.1.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-26 - 4.0.2 - Fix dep, release bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-14 - 4.0.2 + 2014-03-29 + 1.6.10 Version bump - Ertan Güven - ertan@pisilinux.org - - - 2012-08-23 - 4.01 - First release PisiLinux Community admins@pisilinux.org - - - - - tar - http://www.gnu.org/software/tar/ - - PisiLinux Community - admins@pisilinux.org - - GPLv3+ - app:console - system.base - A GNU file archiving program - GNU dosya arşivleme uygulaması - Le programme tar fournit la possibilité de manipuler des archives de type tar. Vous pouvez l'utiliser pour créer ou extraires des archives. Ajouter des fichiers à des archives existantes, les mettre à jour ou tout simplement lister leur contenu. - The GNU tar program saves many files together in one archive and can restore individual files (or all of the files) from that archive. - GNU tar birden fazla dosyayı tek bir arşiv dosyasında birleştiren ve daha sonra bu arşiv dosyasından geri çıkartabilen bir uygulamadır. - http://mirrors.kernel.org/gnu/tar/tar-1.28.tar.xz - - tar.1 - - - acl-devel - gettext - - system/base/tar/pspec.xml - - - tar - - acl - glibc - - - /bin - /sbin - /usr/share/doc - /usr/share/man - /usr/share/locale - /usr/share/info - - - - - 2016-02-28 - 1.28 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-09-06 - 1.28 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.27.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-11-23 - 1.27.1 - Version bump - Richard de Bruin - richdb@pisilinux.org - - 2013-10-24 - 1.27 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2013-07-31 - 1.26 - Fix deps. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-08-23 - 1.26 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - which - http://www.xs4all.nl/~carlo17/which/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Prints the location of specified executable in your path - Verilen komutun çalıştırma yolundaki önceliğe göre yerini gösterir - which, localise un programme dans le chemin de l'utilisateur. - which , Locates a program file in the user's path. - which, kullanıcı dizinindeki program dosyalarının yarini bulur. - which, findet eine Anwendungsdatei im Benutzerverzeichnis - mirrors://gnu/which/which-2.21.tar.gz - system/base/which/pspec.xml - - - which - - /usr/bin - /usr/share/doc - /usr/share/man - /usr/share/info - - - - - 2016-03-02 - 2.21 - Release bump. - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org - - - 2015-04-06 - 2.21 - Version bump. - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org - - - 2014-05-11 - 2.20 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 2.20 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2010-10-11 - 2.20 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - python - http://www.python.org/ - - PisiLinux Community - admins@pisilinux.org - - PSF-2.2 - app:console - system.base - An interpreted, interactive, object-orientated programming language - Nesneye yönelik bir programlama dili - Python est un langage de programmation dynamique orienté objet pouvant être utilisé pour différents types de développements logiciels. Il offre une intégration renforcée aussi bien avec les autres langages qu'avec des outils. Il est livré avec des librairies standards couvrant un large périmètre et peut être appris en quelques jours. - Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. - Python, yazılım geliştirmenin birçok aşamasında kullanılabilen, dinamik nesne tabanlı bir programlama dilidir. Diğer programlama dilleriyle bütünleşme için sağlam bir destek sunar, kapsamlı standart kütüphanelerle sunulur ve birkaç günde öğrenilebilir. - http://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz - - bzip2 - gdbm-devel - zlib-devel - expat-devel - libffi-devel - sqlite-devel - ncurses-devel - openssl-devel - readline-devel - - - pisilinux_platform.patch - add-pisilinux-to-search-path.patch - default-utf8.patch - disable-egginfo.patch - trfix_emaillib.patch - - system/base/python/pspec.xml - - - python - - noDelta - - - gdbm - zlib - bzip2 - expat - libffi - sqlite - ncurses - openssl - readline - - - /etc - /usr/bin - /usr/include/python2.7/pyconfig.h - /usr/lib - /usr/share/doc - /usr/share/man - - - System.PackageHandler - - - pythonstart - 04python - - - - python-devel - Development files for python - python için geliştirme dosyaları - system.devel - - python - - - /usr/include - /usr/lib/pkgconfig - - - - - 2016-03-02 - 2.7.11 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-12-12 - 2.7.9 - Version bump and security fixes. - Vedat Demir - vedat@pisilinux.org - - - 2014-07-05 - 2.7.8 - Version bump and security fixes. - Vedat Demir - vedat@pisilinux.org - - - 2014-06-02 - 2.7.7 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 2.7.6 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-25 - 2.7.6 - Add upstream patch. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-20 - 2.7.6 + 2013-10-30 + 1.5.17 Version bump. Yusuf Aydemir yusuf.aydemir@pisilinux.org - - 2013-09-05 - 2.7.5 - Add missing method to pakhandler.py - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 2.7.5 - Clean python. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-21 - 2.7.5 - Add some patches. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-16 - 2.7.5 - Version bump. - Marcin Bojara - marcin@pisilinux.org + + 2013-01-14 + 1.5.14 + New release + PisiLinux Community + admins@pisilinux.org - 2012-07-11 - 2.7.3 + 2012-11-03 + 1.5.13 First release Erdem Artan admins@pisilinux.org - - - dhcpcd - http://roy.marples.name/dhcpcd - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - A dhcp client only - DHCP protokolü için istemci - Un client daemon DHCP conforme aux RFC2131 et RFC1541. dhcpcd obtient une adresse IP ainsi que d'autres informations depuis le serveur DHCP correspondant, configure l'interface réseau automatiquement et essaie de renouveler le bail selont les RFC2131 et EFC1541 en fonction des options de la ligne de commande. - An RFC2131 and RFC1541 compliant DHCP client daemon. dhcpcd gets an IP address and other information from a corresponding DHCP server, configures the network interface automatically, and tries to renew the lease time according to RFC2131 or RFC1541 depending on the command line option. - RFC2131 ve RFC1541 uyumlu bir DHCP istemci servisi.dhcpcd ilgili bir DHCP sunucusundan bir IP adresi ve gerekli diğer bilgileri alır, ağ arayüzünü otomatik olarak yapılandırır ve RFC2131 veya RFC1541 komut satırı özelliğine bağlı olarak kiralama zamanını yenilemeyi dener. - http://ftp.osuosl.org/pub/blfs/conglomeration/dhcpcd/dhcpcd-6.10.1.tar.xz - system/base/dhcpcd/pspec.xml - - - dhcpcd - - /etc - /lib/dhcpcd - /usr/lib/dhcpcd/dev/udev.so - /sbin - /usr/share/doc - /usr/share/man - /usr/share/dhcpcd - /var/lib/dhcpcd - - - - - 2016-01-28 - 6.10.1 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-05-03 - 6.8.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-02-03 - 6.7.1 - Version bump. - Hakan Yıldız - hknyldz93@gmail.com - - - 2014-05-11 - 6.3.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 6.3.2 - Version bump. - PisiLinux Community - admins@pisilinux.org - - - 2013-10-31 - 6.0.5 - Really revert back to 6.0.5. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-28 - 6.0.5 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-01-14 - 5.6.7 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 5.6.1 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - libpipeline - http://libpipeline.nongnu.org - - PisiLinux Community - admins@pisilinux.org - - GPLv3+ - library - system.base - pipeline manipulation library - pipeline yönetim kitaplığı - libpipeline is a C library for manipulating pipelines of subprocesses in a flexible and convenient way. - libpipeline, alt-süreç girdi/çıktı hatlarını (pipeline) yönetmek için geliştirilmiş bir C kitaplığıdır. - http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.4.1.tar.gz - system/base/libpipeline/pspec.xml - - - libpipeline - - /usr/lib - /usr/share/doc - - - - libpipeline-devel - Development files for libpipeline - libpipeline için geliştirme dosyaları - system.devel - - libpipeline - - - /usr/include - /usr/lib/pkgconfig - /usr/share/man - - - - - 2015-08-24 - 1.4.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-06 - 1.4.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.3.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 1.3.0 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-24 - 1.2.4 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2013-01-14 - 1.2.2 - New release - PisiLinux Community - admins@pisilinux.org - - - 2011-12-16 - 1.2.0 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - perl-Locale-gettext - http://search.cpan.org/dist/gettext - - PisiLinux Community - admins@pisilinux.org - - Artistic - library - system.base - A Perl module for accessing the GNU locale utilities - GNU yerel araçlarına erişim için Perl modülü - The gettext module permits access from Perl to the gettext() family of functions for retrieving message strings from databases constructed to internationalize software. - Bu modül, çoklu dil desteğini sağlayan gettext() ailesine Perl üzerinden erişimi sağlar. - El módulo gettext permite Perl acceder a la familia de funciones gettext() para obtener cadenas de mensajes (traducidos) desde bases de datos para la internacionalización de software. - http://search.cpan.org/CPAN/authors/id/P/PV/PVANDRY/gettext-1.07.tar.gz - - perl - - system/base/perl-Locale-gettext/pspec.xml - - - perl-Locale-gettext - - perl - - - /usr/lib - /usr/share/perl - /usr/share/doc - /usr/share/man - - - - - 2016-03-03 - 1.07 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-09-10 - 1.05 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 1.05 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-09-04 - 1.05 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-10-07 - 1.05 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - grep - http://www.gnu.org/software/grep/grep.html - - PisiLinux Community - admins@pisilinux.org - - GPLv3 - app:console - system.base - GNU regular expression matcher - Grep düzenli ifade eşleme aracı - La commande grep recherche dans un ou plusieurs fichiers les lignes correspondant à un motif défini. Par défaut grep affiche les lignes éligibles. - The grep command searches one or more input files for lines containing a match to a specified pattern. By default, grep prints the matching lines. - Grep komutu bir veya daha fazla verilen dosyada aranan parçayı bulmaya yarayan bir programdır. Ön tanımlı olarak grep eşleşen satırları çıktıya verir. - ftp://mirrors.kernel.org/gnu/grep/grep-2.23.tar.xz - - gettext - libpcre-devel - - system/base/grep/pspec.xml - - - grep - - libpcre - - - /bin - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/locale - - - - - 2016-02-28 - 2.23 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-11-07 - 2.22 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-05 - 2.21 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-06-04 - 2.20 - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 2.18 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 2.18 - Version bump - PisiLinux Community - admins@pisilinux.org - - - 2013-10-27 - 2.15 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-10-22 - 2.14 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2010-10-11 - 2.14 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - mailcap - http://git.fedorahosted.org/git/mailcap.git - - PisiLinux Community - admins@pisilinux.org - - MIT - public-domain - data - system.base - Helper application and MIME type associations for file types - Dosya türleri için yardımcı uygulama ve MIME türü ilişkilendirmeleri - mailcap file is used by the metamail program. Metamail reads the mailcap file to determine how it should display non-text or multimedia material. - mailcap dosyası metamail ve bazı diğer uygulamalar tarafından, metin olmayan dosyaların ya da çokluortam dosyalarının nasıl açılacağını keşfetmek için kullanılır. - https://fedorahosted.org/released/mailcap/mailcap-2.1.42.tar.xz - - extend-mailcap.patch - - system/base/mailcap/pspec.xml - - - mailcap - - /etc - /usr/share/doc - /usr/share/man - - - - - 2014-05-11 - 2.1.42 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 2.1.42 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2011-06-01 - 2.1.37 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - libunwind - http://www.nongnu.org/libunwind/ - - PisiLinux Community - admins@pisilinux.org - - MIT - library - system.base - Call chain tracer of a program - Yazılım çağrıları geri izleme aracı - libunwind is a portable and efficient C programming interface (API) to determine the call chain of a program. - libunwind bir yazılımın çağrı sıralamasını takip etmek için kullanılan, hızlı çalışan ve taşınabilir bir C programlama arabirimidir. - http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz - - xz-devel - - system/base/libunwind/pspec.xml - - - libunwind - - xz - - - /usr/lib - /usr/share/doc/libunwind - /usr/share/man - /usr/share/man/man3 - - - - libunwind-devel - Development files for libunwind - libunwind için geliştirme dosyaları - - libunwind - - - /usr/include - /usr/lib/pkgconfig - - - - - 2016-03-02 - 1.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-01-30 - 1.1 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-20 - 1.1 - Rebuild Unused - Varol Maksutoğlu - waroi@pisilinux.org - - - 2013-07-27 - 1.1 - Move pc files to devel pack, rebuild - PisiLinux Community - admins@pisilinux.org - - - 2013-02-16 - 1.1 - New release - Serdar Soytetir - kaptan@pisilinux.org - - - 2011-12-09 - 1.0.1 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - kbd - http://freshmeat.net/projects/kbd/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Keyboard and console utilities - Klavye ve konsol araçları - Le paquet kbd contient les fichiers de configuration de touches ainsi que divers utilitaires pour claviers compatible avec le noyau 1.1.54 et suivants. - The kbd package contains keytable files and keyboard utilities compatible with kernel version 1.1.54 and later. - Kbd paketi, çekirdek sürüm 1.1.54 ve sonraki sürümlerle uyumlu anahtar tablo dosyaları ve klavye yardımcı uygulamaları içerir. - https://www.kernel.org/pub/linux/utils/kbd/kbd-2.0.3.tar.xz - http://source.pisilinux.org/1.0/kbd-latarcyrheb-16-fixed.tar.bz2 - http://source.pisilinux.org/1.0/kbd-latsun-fonts.tar.bz2 - http://source.pisilinux.org/1.0/ro_maps.tar.bz2 - - gettext - gzip - pam-devel - check-devel - - - mandriva/kbd-1.15-mandriva.patch - mandriva/kbd-1.15-tilde_twosuperior_french_kbd.patch - mandriva/kbd-1.12-data_thai.patch - mandriva/kbd-1.15-remove-unneeded-calls.patch - archlinux/fix-euro2.patch - pisilinux/unicode_start-default-font.patch - pisilinux/tr-keypad-comma.patch - pisilinux/tr-no-meta_space.patch - pisilinux/trq-capslock-fix.patch - pisilinux/currency.patch - pisilinux/trf-keymap-fixes.patch - pisilinux/trf-capslock-fix.patch - - system/base/kbd/pspec.xml - - - kbd - - pam - - - /bin - /usr/bin - /usr/share/doc - /usr/share/man - /usr/share/kbd/keymaps - /usr/share/kbd/locale - /usr/share/kbd/unimaps - /usr/share/kbd/consolefonts - /usr/share/kbd/consoletrans - - - pisilinux/lat5u-12.psf.gz - pisilinux/lat5u-14.psf.gz - pisilinux/lat5u-16.psf.gz - mandriva/mac-fr-ext_new.kmap.gz - - - - - 2015-08-25 - 2.0.3 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-08 - 2.0.2 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.15.5 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 1.15.5 - rebuild. - PisiLinux Community - admins@pisilinux.org - - - 2013-07-26 - 1.15.5 - Fix dep, release bump. - PisiLinux Community - admins@pisilinux.org - - - 2013-05-30 - 1.15.5 - Fix dep, release bump. - PisiLinux Community - admins@pisilinux.org - - - 2013-01-14 - 1.15.5 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 1.15.2 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - pisilinux-python - http://www.pisilinux.org - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - Python modules for Pisi Linux - PiSi Linux için Python modülleri - Python modules for Pisi Linux provides functions for common task, with the aim of easing development. - PiSi Linux için Python modülleri genel işler için fonksiyonlar sunarak geliştirme işini kolaylaştırmayı amaçlamaktadır. - Módulos Python para PiSi Linux facilitan funciones para tareas comunes, para simplificar el desarrollo. - http://source.pisilinux.org/1.0/pisilinux-python-0.4.8.tar.gz - - python-devel - libX11-devel - - system/base/pisilinux-python/pspec.xml - - - pisilinux-python - - python - - - /usr/lib - /usr/share/doc - /usr/share/locale - - - - pisilinux-python-xorg - x11.library - - python - libX11 - - - /usr/lib/python2.7/site-packages/pardus/xorg - - - - - 2016-03-02 - 0.4.8 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-05 - 0.4.8 - Revert libX11 dependency, yali need this. separe package - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-11 - 0.4.8 - Remove libX11 dependency. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 0.4.8 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-07 - 0.4.8 - Release bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-09-04 - 0.4.8 - Release bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2010-12-09 - 0.4.8 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - popt - http://www.rpm5.org/ - - PisiLinux Community - admins@pisilinux.org - - as-is - app:console - library - system.base - Popt command line option parser - Popt komut satırında çalıştıran bir seçenek ayrıştırıcıdır. - La librairie popt existe essentiellement pour analyser des options de ligne de commande. Elle procure de nombreux avantages tels que l'absence de variables globales, la possibilité d'analyser un tableau arbitraire d'éléments de type argv, d'exécuter des filtres d'options extérieurs, la génération automaituqe des messages d'aide et d'utilisation ainsi qu'un méthode standard pour synonymes d'options. - The popt library exists essentially for parsing command line options with advantages such as there are no global variables, ability to parse an arbitrary array of argv-style elements, to exec external option filters, and automatic generation of help and usage messages, a standard method of option aliasing. - Popt, komut satırında seçenek ayrıştırma için gerekli bir kütüphanedir. Genel değişken olmaması, dağınık dizi bileşenlerini ayrıştırabilmesi, harici uygulama filtreleri kullanabilmesi, otomatik mesaj ve yardım dosyaları üretimi gibi başarılı özellikleri bulunur. - ftp://anduin.linuxfromscratch.org/BLFS/svn/p/popt-1.16.tar.gz - system/base/popt/pspec.xml - - - popt - - gettext - - - /usr/lib - /usr/share/doc - /usr/share/man - /usr/share/locale - - - - popt-devel - Development files for popt - popt için geliştirme dosyaları - system.devel - - popt - - - /usr/include/popt.h - /usr/share/man/man3 - /usr/lib/pkgconfig - - - - - 2014-05-11 - 1.16 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2010-10-11 - 1.16 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - libee - http://www.libee.org/ - - Marcin Bojara - marcin@pisilinux.org - - LGPLv2.1 - library - system.base - An Event Expression Library inspired by CEE - Libee - An Event Expression Library inspired by CEE - http://www.libee.org/download/files/download/libee-0.4.1.tar.gz - - libestr-devel - - system/base/libee/pspec.xml - - - libee - - libestr - - - /usr/sbin - /usr/lib/libee.so* - /usr/share/doc/libee - - - - libee-devel - Development files for libestr - system.devel - - libee - - - /usr/include/libee - /usr/lib/pkgconfig/libee.pc - - - - - 2014-05-11 - 0.4.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 0.4.1 - rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-11-21 - 0.4.1 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - xz - http://tukaani.org/xz/ - - PisiLinux Community - admins@pisilinux.org - - LGPLv2+ - GPLv2+ - GPLv3 - app:console - library - system.base - XZ compression utilities - XZ sıkıştırma araçları - XZ Utils provide a general purpose data compression library and command line tools. The .xz format supports multiple compression algorithms, which are called "filters" in context of XZ Utils. The primary filter is currently LZMA2. - xz, genel amaçlı bir veri sıkıştırma kütüphanesi ve konut satırı araçları içerir. xz dosya biçimi filtre adı verilen sıkıştırma algoritmalarını destekler, öntanımlı filtre ise LZMA2 algoritmasıdır. - http://tukaani.org/xz/xz-5.2.2.tar.xz - system/base/xz/pspec.xml - - - xz - - /usr/bin - /usr/lib - /usr/share/man - /usr/share/doc - /usr/share/locale - - - - xz-devel - Development files for XZ - XZ için geliştirme dosyaları - system.devel - - xz - - - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - - - - xz-32bit - 32bit shared libraries for xz - XZ için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - glibc-32bit - - - glibc-32bit - xz - - - /usr/lib32 - - - - - 2016-02-28 - 5.2.2 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-27 - 5.2.2 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-08 - 5.2.1 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-10-01 - 5.0.7 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 5.0.5 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-28 - 5.0.5 - Version bump, clean xz. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-26 - 5.0.4 - Move pc files to devel pack, increase release no. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-08-24 - 5.0.4 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - attr - http://acl.bestbits.at/ - - Pisi Linux Admins - admins@pisilinux.org - - LGPLv2.1 - app:console - library - system.base - Utilities for managing filesystems extended attributes - Gelişkin öznitelikler araçları - attr offre des utilitaires qui servent à manipuler les attributs étendus des objects de système de fichier. - attr contains a set of tools for manipulating extended attributes on filesystem objects, in particular getfattr and setfattr. - attr dosya sistemi nesnelerinin özniteliklerini değiştirmek için gerekli bir dizi araç sunar. - http://download.savannah.gnu.org/releases-noredirect/attr/attr-2.4.47.src.tar.gz - system/base/attr/pspec.xml - - - attr - - /bin - /lib - /usr/share/locale - /usr/share/doc - /usr/share/man - - - - attr-devel - Development files for attr - attr için geliştirme dosyaları - system.devel - - attr - - - /usr/include - /usr/share/man/man3 - - - - attr-32bit - 32-bit shared libraries for attr - emul32 - emul32 - - glibc-32bit - - - glibc-32bit - attr - - - /lib32 - - - - - 2016-03-01 - 2.4.47 - Rebuild for toolchain. - Serdar Soytetir - kaptan@pisilinux.org - - - 2015-03-15 - 2.4.47 - fix build emul32. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-09-30 - 2.4.47 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 2.4.47 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-28 - 2.4.47 - Version bump, clean attr. - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-24 - 2.4.46 - Add emul32 - Marcin Bojara - marcin@pisilinux.org - - - 2012-06-04 - 2.4.46 - First release - Erdem Artan - admins@pisilinux.org - - - - - - piksemel - http://pisilinux.org - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.base - Python binding for iksemel - iksemel için python desteği - Un analyseur XML simple, rapide, petit et robuste pour Python basé sur iksemel. - A simple, fast, small and robust XML parser for Python, based on iksemel. - Python için basit, hızlı, ufak ve sağlam bir XML ayrıştırıcısı, iksemel tabanlıdır. - http://source.pisilinux.org/1.0/piksemel-1.3.1.tar.gz - - python-devel - - - symbol-visibility.patch - - system/base/piksemel/pspec.xml - - - piksemel - - python - - - /usr/lib - /usr/share/doc - - - - - 2014-05-11 - 1.3.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-28 - 1.3.1 - rebuild - Pisi Linux Admins - admins@pisilinux.org - - - 2010-10-11 - 1.3.1 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - kmod - http://git.kernel.org/?p=utils/kernel/kmod/kmod.git;a=summary - - PisiLinux Community - admins@pisilinux.org - - GPLv2+ - app:console - system.base - Linux kernel module management utilities - Linux kernel modülleri yönetim araçları - Linux kernel module management utilities - Linux kernel modülleri yönetim araçları - https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-22.tar.xz - - chrpath - xz-32bit - xz-devel - zlib-32bit - zlib-devel - kernel-module-headers - - - kmod-15-dynamic-kmod.patch - - system/base/kmod/pspec.xml - - - kmod - - xz - zlib - glibc - libkmod - - - /usr/bin - /bin - /sbin - /usr/share/man - /usr/share/doc - /etc - /usr/share/bash-completion/completions/kmod - - - Boot.Modules - System.PackageHandler - - - blacklist/blacklist.conf - blacklist/blacklist-firewire.conf - blacklist/blacklist-framebuffer.conf - blacklist/blacklist-watchdog.conf - modprobe.conf - depmod.conf - depmod-search.conf - - - - libkmod-devel - system.devel - - libkmod - - - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - - - - libkmod - kmod libraries - - xz - zlib - - - /usr/lib - - - - libkmod-32bit - 32bit libraries of libkmod - emul32 - emul32 - - xz-32bit - zlib-32bit - glibc-32bit - - - /usr/lib32 - - - - - 2016-03-05 - 22 - Rebuild with new toolchain. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-11-29 - 22 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-17 - 21 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-26 - 20 - Version bump,add patch and fix deps. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-11-18 - 19 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-23 - 17 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 16 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-21 - 16 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-09-05 - 15 - Add missing method to pakhandler.py - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 15 - Version bump, clean kmod. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-20 - 14 - rebuild for kernel 3.10.9 - PisiLinux Community - admins@pisilinux.org - - - 2013-08-11 - 14 - rebuild for kernel 3.10.5 - PisiLinux Community - admins@pisilinux.org - - - 2013-07-27 - 14 - Move pc files to devel pack, rebuild - PisiLinux Community - admins@pisilinux.org - - - 2013-07-04 - 14 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-04-14 - 13 - Version bump - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-22 - 12 - Version bump, add comar scripts - Marcin Bojara - marcin@pisilinux.org - - - 2012-11-15 - 11 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - libusb - http://libusb.org/ - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - system.base - Userspace access to USB devices - Project's main aim is to create a library for use by user level applications to access USB devices regardless of OS. - http://downloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.19/libusb-1.0.19.tar.bz2 - - eudev-devel - - system/base/libusb/pspec.xml - - - libusb - - eudev - - - /usr/bin - /usr/lib - /usr/share/doc - - - libusbx - - - libusbx - - - - libusb-devel - Development files for libusb - system.devel - - libusb - - - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - - - libusbx-devel - - - libusbx-devel - - - - libusb-32bit - 32-bit shared libraries for libusb - emul32 - emul32 - - glibc-32bit - - - libusb - eudev-32bit - glibc-32bit - - - /usr/lib32 - - - libusbx-32bit - - - libusbx-32bit - - - - - 2014-04-30 - 1.0.19 - rename libusbx to libusb like upsteam - version bump to 19 - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-16 - 1.0.18 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-29 - 1.0.17 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-07-27 - 1.0.16 - Move pc files to devel pack, rebuild - PisiLinux Community - admins@pisilinux.org - - - 2013-07-27 - 1.0.16 - Move .pc files to devel package - Fatih Turgel - hitaf@pisilinux.org - - - 2013-07-23 - 1.0.16 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-10-12 - 1.0.14 - First release - Erdem Artan - admins@pisilinux.org - - - - - - pciutils - http://atrey.karlin.mff.cuni.cz/~mj/pciutils.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - Various utilities dealing with the PCI bus - PCI veriyolu işlevleri ile ilgili çeşitli programlar - Les utilitaires PCI sont une collection de programmes d'inspection et de manipulation de la configuration des périphériques PCI. - The PCI Utilities are a collection of programs for inspecting and manipulating configuration of PCI devices. - Pakette bulunan PCI araçları, PCI veriyolunu kullanan donanımlarınızın görüntülenmesi ve ayarlanması işlevini yürütür. - ftp://ftp.kernel.org/pub/software/utils/pciutils/pciutils-3.4.1.tar.xz - - pci.ids - - - pciutils-nogz.patch - pciutils-remove-update-pciids.patch - makefile.patch - - system/base/pciutils/pspec.xml - - - pciutils - - zlib - eudev - libkmod - - - /usr/sbin - /usr/lib - /usr/share/man - /usr/share/misc - - - - pciutils-devel - Development files for pciutils - pciutils için geliştirme dosyaları - system.devel - - pciutils - - - /usr/lib/pkgconfig - /usr/include - - - - - 2016-03-03 - 3.4.1 - pci.ids update. - Alihan Öztürk - alihan@pisilinux.org - - - 2016-01-03 - 3.4.1 - Version bump. - Kamil Alı - suvari@pisilinux.org - - - 2014-05-11 - 3.2.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-03 - 3.2.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-10-30 - 3.1.10 - Rebuild - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-10-05 - 3.1.10 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - libgpg-error - http://www.gnupg.org/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - LGPLv2.1 - library - system.base - Contient les fonctions de gestion d'erreur utilisées par le logiciel GnuPG. - Library for error values used by GnuPG components - GnuPG bileşenlerinin kullandığı hata değerleri için kitaplık - libgpg-error is a library that defines common error values for all GnuPG components. - libgpg-error, tüm GnuPG bileşenleri için ortak olan hata değerlerini tanımlayan bir kitaplıktır. - ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.19.tar.bz2 - system/base/libgpg-error/pspec.xml - - - libgpg-error - - /usr/bin - /usr/lib - /usr/share/doc - /usr/share/info - /usr/share/man - /usr/share/locale - - - - libgpg-error-devel - Development files for libgpg-error - libgpg-error için geliştirme dosyaları - system.devel - - libgpg-error - - - /usr/bin/gpg-error-config - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/share/aclocal - - - - libgpg-error-32bit - 32-bit shared libraries for libgpg-error - libgpg-error için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - glibc-32bit - - - libgpg-error - glibc-32bit - - - /usr/lib32 - - - - - 2015-04-13 - 1.19 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.12 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-26 - 1.12 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-15 - 1.10 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - v86d - http://dev.gentoo.org/~spock/projects/uvesafb/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - service - system.base - Userspace helper for uvesafb - uvesafb için kullanıcı uzayı yardımcısı - Program pomocniczy uvesafb uruchamiający kod x86 w emulowanym środowisku - v86d is a userspace helper that runs x86 code in an emulated environment. It is used by the kernel framebuffer driver uvesafb. - v86d, öykünmüş bir ortamda x86 kodu çalıştıran yardımcı bir kullanıcı uzayı yardımcısıdır. Çekirdekteki uvesafb framebuffer sürücüsü tarafından kullanılır. - v86d to działający w przestrzeni użytkownika program pomocniczy uruchamiający kod x86. Jest wykorzystywany przez sterownik jądra Linuksa uvesafb. - http://source.pisilinux.org/1.0/v86d-0.1.10.tar.bz2 - system/base/v86d/pspec.xml - - - v86d - - /sbin - /usr/share/doc - - - - - 2016-03-05 - 0.1.10 - Rebuild with new toolchain. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-05-11 - 0.1.10 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 0.1.10 - Rebuild - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-12-19 - 0.1.10 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - ncompress - http://ncompress.sourceforge.net - - PisiLinux Community - admins@pisilinux.org - - public-domain - app:console - system.base - Un autre outil de décompression de données pour compatibilité - Another uncompressor for compatibility - Bir başka sıkışmış dosya açma programı - Ein weiterer Nichtkompressor zu Kompatibilitätszwecken - The ncompress package contains the compress and uncompress file compression and decompression utilities, which are compatible with the original UNIX compress utility (.Z file extensions). These utilities can't handle gzipped (.gz file extensions) files, but gzip can handle compressed files. - mirrors://sourceforge/ncompress/ncompress-4.2.4.4.tar.gz - - ncompress-4.2.4-make.patch - ncompress-4.2.4-lfs2.patch - ncompress-2GB.patch - ncompress-4.2.4-endians.patch - - system/base/ncompress/pspec.xml - - - ncompress - - /usr/bin - /usr/share/man - - - - - 2014-05-11 - 4.2.4.4 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2011-12-20 - 4.2.4.4 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - sysfsutils - http://linux-diag.sourceforge.net/Sysfsutils.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.base - System Utilities Based on Sysfs - Çeşitli sistem araç ve gereçleri - Ceci est un ensemble d'utilitaires se basant sur sysfsm un nouveau système de fichier virtuel des noyaux Linux 2.5 et + exposant l'arbre des périphériques du système. - These are a set of utilites built upon sysfs, a new virtual filesystem in Linux kernel versions 2.5+ that exposes a system's device tree. - sysfsutils sysfs sanal dosya sistemi üzerine kurulu bir araç setidir. - mirrors://sourceforge/linux-diag/sysfsutils-2.1.0.tar.gz - - sysfsutils-2.0.0-class-dup.patch - sysfsutils-2.1.0-get_link.patch - - system/base/sysfsutils/pspec.xml - - - sysfsutils - - /usr/bin - /lib - /usr/lib - /usr/share/doc - /usr/share/man - - - - sysfsutils-devel - Development files for sysfsutils - sysfsutils için geliştirme dosyaları - system.devel - - sysfsutils - - - /usr/include - /usr/share/man/man3 - - - - - 2014-05-11 - 2.1.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 2.1.0 - Rebuild - Pisi Linux Admins - admins@pisilinux.org - - - 2010-10-11 - 2.1.0 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - libidn - http://www.gnu.org/software/libidn - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - GPLv3 - app:console - library - system.base - Internationalized Domain Names (IDN) implementation - Uluslararası Alan Adları (IDN) destek kütüphanesi - GNU Libidn est une implémentation de Stringprep, Punycode et des spécifications IDNA définies par le groupe de travail Internationalized Domain Names (IDN) de l'IETF servant pour les noms de domaines internationalisés. La librairie C est disponible sous la Licence Publique Générale Lesser. - GNU Libidn is an implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group, used for internationalized domain names. The C library is available under the GNU Lesser General Public License. - GNU Libidn, IETF Uluslararasılaştırılmış Domain Adları (IDN) çalışma grubu tarafından tanımlanmış Stringgrep, Punycode ve IDNA tariflerinin bir uygulamasıdır, uluslararası domain adlarının kullanımına olanak sağlar. C kütüphanesi GNU Lesser General Public License altında sağlanabilir. - http://ftp.gnu.org/gnu/libidn/libidn-1.28.tar.gz - system/base/libidn/pspec.xml - - - libidn - - /usr/bin - /usr/lib/libidn* - /usr/share/emacs - /usr/share/locale - /usr/share/man/man1 - /usr/share/info - /usr/share/doc - - - - libidn-devel - Development files for libidn - libidn için geliştirme dosyaları - system.devel - - libidn - - - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/share/man/man3 - - - - libidn-32bit - 32-bit shared libraries for libidn - libidn için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - glibc-32bit - - - glibc-32bit - libidn - - - /usr/lib32/libidn* - - - - - 2014-05-11 - 1.28 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 1.28 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-01-14 - 1.26 - New release - PisiLinux Community - admins@pisilinux.org - - - 2012-08-23 - 1.25 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - groff - http://www.gnu.org/software/groff/groff.html - - PisiLinux Community - admins@pisilinux.org - - GPLv3+ - BSD - MIT - app:console - system.base - S'occupe de la mise en forme de texte utilisé pour les pages de manuel - A document formatting system - Belge biçimlendirme sistemi - Text Formatierer für man pages - groff is a document formatting system. Groff takes standard text and formatting commands as input and produces formatted output. - groff bir belge biçimlendirme sistemidir. Groff standart metni ve biçimlendirme komutlarını alır ve biçimlendirilmiş çıktı oluşturur. - http://ftp.gnu.org/gnu/groff/groff-1.22.3.tar.gz - - texinfo - - - groff-1.19.2-man-unicode-dashes.patch - groff-1.22.3-parallel-mom.patch - - system/base/groff/pspec.xml - - - groff - - texinfo - libgcc - - - /etc - /usr/bin - /usr/lib - /usr/share/groff - - - - groff-doc - system.doc - - groff - - - /usr/share/doc - /usr/share/man - /usr/share/info - - - - - 2015-04-02 - 1.22.3 - Release bump, remove X builddep. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.22.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-29 - 1.22.2 - Rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-07-26 - 1.22.2 - Fix dep, release bump. - PisiLinux Community - admins@pisilinux.org - - - 2013-02-16 - 1.22.2 - Updated - PisiLinux Community - admins@pisilinux.org - - - 2012-11-25 - 1.21 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - run-parts - http://packages.qa.debian.org/d/debianutils.html - - PisiLinux Community - osman.erkan@yandex.com - - GPLv2+ - system.base - run scripts or programs in a directory - run scripts or programs in a directory - https://sources.archlinux.org/other/run-parts/debianutils_4.7.tar.xz - system/base/run-parts/pspec.xml - - - run-parts - - /usr/share/man - /usr/bin - /usr/sbin - - - - - 2016-03-03 - 4.7 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-04-11 - 4.4 - Release bump, fix source url - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-02 - 4.4 - rm unneeded files. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-04-01 - 4.4 - Release bump for component change. - PisiLinux Community - osman.erkan@yandex.com - - - 2014-03-02 - 4.4 - First Release - PisiLinux Community - osman.erkan@yandex.com - - - - - - guile - http://www.gnu.org/software/guile/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2+ - LGPLv2+ - app:console - library - system.devel - Interpréteur et librairie GNU Scheme. - GNU Scheme interpreter and library - GNU Scheme yorumlayıcısı ve kitaplığı - Język GNU Extension language. - GUILE (GNU's Ubiquitous Intelligent Language for Extension) is a library implementation of the Scheme programming language, written in C. GUILE provides a machine-independent execution platform that can be linked in as a library during the building of extensible programs. - mirrors://gnu/guile/guile-2.0.11.tar.xz - - gc-devel - gettext-devel - gmp-devel - libunistring-devel - libffi-devel - - system/devel/guile/pspec.xml - - - guile - - gc - gmp - libffi - libtool-ltdl - libunistring - readline - - - /etc - /usr/share/doc - /usr/share/man - /usr/bin - /usr/share/info - /usr/lib/lib* - /usr/share/guile - /usr/share/emacs - /usr/share/gdb/auto-load - /usr/lib/guile/2.0 - - - - guile-devel - Development files for guile - guile için geliştirme dosyaları - Pliki nagłówkowe guile. - - guile - gc-devel - gmp-devel - - - /usr/include - /usr/lib/pkgconfig - /usr/share/aclocal - /usr/bin/guile-snarf - /usr/bin/guile-config - - - - - 2014-11-30 - 2.0.11 - Rebuild - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-24 - 2.0.11 - Rebuild for gcc. - PisiLinux Community - admins@pisilinux.org - - - 2014-05-11 - 2.0.9 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-25 - 2.0.9 - Rebuild Unused - Varol Maksutoğlu - waroi@pisilinux.org - - - 2013-08-27 - 2.0.9 - Clean guile. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-22 - 2.09 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-18 - 2.0.7 - v.bump - PisiLinux Community - admins@pisilinux.org - - - 2012-10-03 - 2.0.6 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - scons - http://www.scons.org - - PisiLinux Community - admins@pisilinux.org - - MIT - app:console - system.devel - An Open Source software construction tool - Python temelli, esnek, geliştirilebilir inşa aracı - Utilitaire extensible écrit en python. On peut considérer SCons comme un substitut amélioré multi-plateforme de Make intégrant des fonctionnalités similaires à celles d'autoconf/automake et un gestionnaire de cache de compilateur tel ccache. - Think of SCons as an improved, cross-platform substitute for the classic Make utility with integrated functionality similar to autoconf/automake and compiler caches such as ccache. - Python temelli, esnek, geliştirilebilir inşa aracı. SCons, klasik "make" aracına "autconf/automake" özellikleri ve "ccache" gibi derleyici önbelleği eklenmiş, gelişmiş bir araç olarak düşünülebilir. - mirrors://sourceforge/scons/scons-2.3.1.tar.gz - - python - - - scons-1.0.0-qt-handle-missing-moc-files.patch - fix-gnu-link-handling.patch - - system/devel/scons/pspec.xml - - - scons - - python - - - /usr/bin - /usr/lib - /usr/share/man - /usr/share/doc - - - - - 2014-05-11 - 2.3.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 2.3.1 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-22 - 2.3.0 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-24 - 2.3.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-17 - 2.2.0 - Version bump - Ertan Güven - ertan@pisilinux.org - - - 2011-12-14 - 2.1.0 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - check - http://sourceforge.net/projects/check/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.devel - A unit test framework for C - C için birim test ortamı - check is a unit testing framework for C. It features a simple interface for defining unit tests, putting little in the way of the developer. Tests are run in a separate address space, so Check can catch both assertion failures and code errors that cause segmentation faults or other signals. The output from unit tests can be used within source code editors and IDEs. - check C dili için yazılmış bir birim test ortamıdır. Birim test tanımlamak için bir arayüz sunan check, geliştiriciye test yapabilmesi için kolay bir ortam sağlar. - mirrors://sourceforge/check/0.10/check-0.10.0.tar.gz - system/devel/check/pspec.xml - - - check - - /usr/bin - /usr/lib - /usr/share/info - /usr/share/man/man1/checkmk.1 - /usr/share/doc - - - - check-devel - Development files for check - check için geliştirme dosyaları - - check - - - /usr/include - /usr/lib/pkgconfig - /usr/share/aclocal - - - - check-docs - Documents for check - check için geliştirme belgeleri - - /usr/share/doc/check/example - - - - - 2016-02-28 - 0.10.0 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-02-28 - 0.10 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-15 - 0.10.0 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-10-31 - 0.9.14 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-20 - 0.9.12 - Verson bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-03-06 - 0.9.11 - Rebuild Unused - Varol Maksutoğlu - waroi@pisilinux.org - - - 2013-11-27 - 0.9.11 - Version bump. - Richard de Bruin - richdb@pisilinux.org - - - 2013-10-26 - 0.9.10 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-03-04 - 0.9.9 - Version bump - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2010-10-12 - 0.9.8 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - cmake - http://www.cmake.org - - PisiLinux Community - admins@pisilinux.org - - BSD - app:console - system.devel - Cross-platform, open-source make system - Cmake, açık kaynak kodlu ve birden fazla platformda çalışan bir 'make' sistemidir. - CMake, système make open-source et multi-plateforme. CMake est utilisé pour contrôler le processus de compilation de logiciel en utilisant une plate-forme de fichiers de configuration simple et indépendante de compilateur. CMake génère des makefiles et un environnement de travail natifs pouvant être utilisés dans l'environnement du compilateur de votre choix. - CMake, the cross-platform, open-source make system. CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice. - Cmake, açık kaynak kodlu ve birden fazla platformda çalışan bir 'make' sistemidir. Yazılım derleme sürecini kontrol etmek için kullanılan CMake, derleyici bağımsız yapılandırma dosyalarının oluşturulmasını sağlar. - http://www.cmake.org/files/v3.4/cmake-3.4.0.tar.gz - - curl-devel - expat-devel - libarchive-devel - ncurses-devel - zlib-devel - xz-devel - - system/devel/cmake/pspec.xml - - - cmake - - curl - expat - libarchive - libgcc - ncurses - zlib - - - /usr/bin - /usr/share/cmake - /usr/share/aclocal/ - /usr/share/doc - /usr/share/man - - - - - 2015-11-15 - 3.4.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2015-08-20 - 3.3.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2015-07-28 - 3.2.3 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-17 - 3.2.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2015-04-04 - 3.2.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2015-02-27 - 3.1.3 - Version bump. - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2014-12-17 - 3.0.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-08-23 - 3.0.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 2.8.12.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 2.8.12.2 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-12-11 - 2.8.12.1 - Fix finding freetype issue. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-11-24 - 2.8.12.1 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-23 - 2.8.12 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-08-28 - 2.8.11.2 - Clean cmake. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-01 - 2.8.10.2 - Fix deps. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-17 - 2.8.10.2 - Version bump - Ertan Güven - ertan@pisilinux.org - - - 2012-12-01 - 2.8.10 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - yasm - http://www.tortall.net/projects/yasm/ - - PisiLinux Community - admins@pisilinux.org - - BSD - GPLv2 - LGPLv2 - Artistic - app:console - system.devel - Assembler that supports many syntaxes and architectures - Bir çok sentaks ve mimari destekleyen Assembler - A complete rewrite of the NASM assembler under the "new" BSD License. Yasm currently supports the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes, outputs binary, ELF32, ELF64, 32 and 64-bit Mach-O, RDOFF2, COFF, Win32, and Win64 object formats and generates source debugging information in STABS, DWARF 2, and CodeView? 8 formats. - NASM Assembler programının yeni BSD lisansı ile baştan yazılmış bir Assembler. En önemli özellikleri x86 ve AMD64 komutsetlerini, NASM ve GAS sentaksını desteklemesidir. İkilik, ELF32, ELF64, 32 ve 64-bit Mach-O, RDOFF2, COFF, Win32 ve Win64 obje formatlarında çıktı üretebilir, hata ayıklamak için STABS, DWARF 2 ve CodeView? 8 formatlarını desteklemektedir. - http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz - system/devel/yasm/pspec.xml - - - yasm - - /usr/bin - /usr/lib - /usr/share/doc - /usr/share/man - - - - yasm-devel - Development files for yasm - yasm için geliştirme dosyaları - - yasm - - - /usr/include - /usr/lib/libyasm.a - - - - - 2014-05-11 - 1.2.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-22 - 1.2.0 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2011-12-09 - 1.2.0 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - elfutils - http://www.redhat.com/ - - PisiLinux Community - admins@pisilinux.org - - OpenSoftware - app:console - library - system.devel - Libraries/utilities to handle ELF objects - Derlenmiş objeleri işlemek için gereken aletler koleksiyonu - elfutils contains libraries and utilities to handle ELF objects and is a replacement for libelf. - elfutils derlenmiş objeleri işlemek için gereken çeşitli araçlar içerir. - https://fedorahosted.org/releases/e/l/elfutils/0.165/elfutils-0.165.tar.bz2 - - bzip2 - xz-devel - zlib-devel - - system/devel/elfutils/pspec.xml - - - elfutils - - xz - zlib - bzip2 - libgcc - - - /usr/bin - /usr/lib - /usr/share/doc - /usr/include - - - - - 2016-01-28 - 0.165 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-04-09 - 0.161 - Version bump. - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org - - - 2014-11-23 - 0.160 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 0.158 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-29 - 0.158 - Add upstream patch. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-22 - 0.158 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-08-27 - 0.156 - Clean elfutils. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-01 - 0.156 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-16 - 0.155 - New release - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-07-30 - 0.154 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - chrpath - http://freshmeat.net/projects/chrpath/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.devel - Change the dynamic library load path (rpath) of binaries - Dinamik kitaplık yükleme yolunu (rpath) değiştirme aracı - chrpath allows you to modify the dynamic library load path (rpath and runpath) of compiled programs and libraries. - chrpath ile derlenmiş kitaplıkların ve programların dinamik kitaplık yükleme yolunu (rpath ve runpath) değiştirebilirsiniz. - http://source.pisilinux.org/1.0/chrpath-0.16.tar.gz - - docdir.patch - - system/devel/chrpath/pspec.xml - - - chrpath - - /usr/bin - /usr/share/doc - /usr/share/man - - - - - 2016-03-05 - 0.16 - Rebuild with new toolchain. - Alihn Öztürk - alihan@pisilinux.org - - - 2014-05-11 - 0.16 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 0.16 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-28 - 0.13 - Clean chrpath - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-07-14 - 0.13 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - gmp - http://gmplib.org/ - - Serdar Soytetir - kaptan@pisilinux.org - - LGPLv3+ - library - system.devel - Arbitrary precision arithmetic library - İstenilen duyarlıkta çalışabilen aritmetik işlem kitaplığı - GMP est une librairie libre pour l'arithmétique à précision arbitraire, opérant sur : les entiers signés, les nombres rationnels et les nombres à virgule flottante. Il n'y a aucune limite pratique sur la précision des calculs exceptée celle impliquée par la mémoire présente sur la machine exécutant GMP. GMP est dotée d'un large panel de fonctions, dotées d'interfaces régulières. - GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. There is no practical limit to the precision except the ones implied by the available memory in the machine GMP runs on. GMP has a rich set of functions, and the functions have a regular interface. - GMP işaretli tamsayılar, rasyonel ve ondalık sayılar üzerinde istenilen kadar duyarlı aritmetik işlemler yapan bir kitaplıktır. Yüklü olduğu makinenin hafıza sınırı dışında herhangi bir duyarlılık limiti yoktur. Zengin fonksiyonları ve düzenli bir arabirimi vardır. - GMP es una librería libre para aritmética con precisión arbitraria, operando con signed integers, números racionales, y punto flotante. Practicamente no hay límite de precisión excepto los de la memoria disponible en el equipo donde se está ejecutando GMP. GMP tiene un amplio conjunto de funciones y las funciones tienen una interfaz regular. - mirrors://gnu/gmp/gmp-6.1.0.tar.xz - system/devel/gmp/pspec.xml - - - gmp - - libgcc - - - /usr/lib - /usr/share/doc - /usr/share/info - - - - gmp-devel - Development files for gmp - gmp için geliştirme dosyaları - - gmp - - - /usr/include - /usr/lib/*.a - - - - gmp-32bit - 32-bit shared libraries for gmp - emul32 - emul32 - - glibc-32bit - - - libgcc - glibc-32bit - gmp - - - /usr/lib32 - - - - - 2016-02-28 - 6.1.0 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-12-09 - 6.1.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-09-06 - 6.0.0 - Rebuild with new options, fix version number. - Clean up actions.py, remove unneeded lines, we have auto-emul32 :) - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 6.0.0a - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-01 - 6.0.0a - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-22 - 5.1.3 - Minor version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-27 - 5.1.2 - Clean gmp. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-23 - 5.1.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-16 - 5.1.1 - New release - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-30 - 5.0.5 - First release - Erdem Artan - admins@pisilinux.org - - - - - - nasm - http://nasm.sourceforge.net/ - - PisiLinux Community - admins@pisilinux.org - - BSD - app:console - system.devel - Groovy little assembler - Assembler derleyicisi - NASM est l'assembleur Netwide, un assembleur libre et portable pour les processeurs des séries Intel 80x86 - NASM is the Netwide Assembler, a free portable assembler for the Intel 80x86 microprocessor series. - Intel 80x86 mikroişlemci serisi için aktarılabilir Assembler derleyicisi. - http://www.nasm.us/pub/nasm/releasebuilds/2.11.01/nasm-2.11.01.tar.xz - - texinfo - - system/devel/nasm/pspec.xml - - - nasm - - /usr/bin - /usr/share/doc - /usr/share/man - - - - - 2014-05-11 - 2.11.01 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 2.11.01 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-22 - 2.10.09 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-24 - 2.10.09 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-18 - 2.10.07 - Version bump - Ertan Güven - ertan@pisilinux.org - - - 2012-09-15 - 2.10.05 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - patch - http://www.gnu.org/software/patch/patch.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.devel - Applies patch files - Yama dosyalarını uygular - Aplicación de archivos de parches - Permet d'appliquer un patch générer par la commande diff aux fichiers originels, obtenant ainsi les fichiers patchés. - Patch takes a patch file generated by diff command, and applies it to the original files, thus producing patched files. - Özgün dosyaları, diff komutu ile üretilmiş yama dosyasını uygulayarak, yeni biçimlerine çevirir. - Recibe una archivo de parche generado por el comando diff y lo aplica a los archivos originales, así produciendo archivos parcheados. - ftp://ftp.gnu.org/gnu/patch/patch-2.7.5.tar.xz - - attr-devel - - system/devel/patch/pspec.xml - - - patch - - attr - - - /usr/bin - /usr/share/doc - /usr/share/man - - - - - 2016-02-29 - 2.7.5 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-05 - 2.7.5 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-02-01 - 2.7.4 - Version bump. - Hakan Yıldız - hknyldz93@gmail.com - - - 2014-05-11 - 2.7.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-27 - 2.7.1 - Add patch. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-01 - 2.7.1 - Fix deps. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-17 - 2.7.1 - New release - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-23 - 2.7 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - bison - http://www.gnu.org/software/bison/bison.html - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv2 - app:console - system.devel - A yacc-compatible parser generator - Yacc uyumlu yazım ayrıştırma üreteci - Un générateur d'analyseur syntaxique compatible avec yacc. Une fois que vous maîtrisez Bison, vous pouvez l'utiliser pour développer des analyseur léxicaux pour un grand nombres de langages, de ceux qui sont utilisés dans les simples calculatrices de bureau aux complexes langages de programmation. - A yacc-compatible parser generator. Once you are proficient with Bison, you can use it to develop a wide range of language parsers, from those used in simple desk calculators to complex programming languages - Yacc uyumlu yazım ayrıştırma üreteci. Bison'da ustalık kazandığınızda, basit hesap makinalarından, karmaşık programlama dillerine kadar uzanan geniş yazım ayrıştırıcılar geliştirebilirsiniz. - mirrors://gnu/bison/bison-3.0.4.tar.xz - - m4 - gettext - patch - - system/devel/bison/pspec.xml - - - bison - - m4 - gettext - - - /usr/bin - /usr/lib - /usr/share/doc - /usr/share/man - /usr/share/aclocal - /usr/share/info - /usr/share/bison - /usr/share/locale - - - - - 2015-03-01 - 3.0.4 - Version bump. - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2014-09-06 - 3.0.2 - Rebuild, fix pspec.xml. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 3.0.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-24 - 3.0.2 - Version bump - Burak Fazıl Ertürk - burakerturk@pisilinux.org - - - 2013-11-18 - 3.0.1 - Version bump - Richard de Bruin - richdb@pisilinux.org - - - 2013-08-27 - 3.0 - Version bump, clean. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-23 - 2.7.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-16 - 2.7 - Version bump - Ertan Güven - ertangvn@istanbul.com - - - 2012-10-24 - 2.6.4 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - dietlibc - http://www.fefe.de/dietlibc - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.devel - A libc optimized for small size - Düşük boyut için optimize edilmiş C kütüphanesi - dietlibc is a libc that is optimized for small size. It can be used to create small statically linked binaries for Linux on various architectures. - dietlibc, düşük boyutlu olması için optimize edilmiş bir C kütüphanesidir. Farklı mimarilerde statik bağlanmış ve düşük boyutlu ikili dosyalar oluşturmak için kullanılabilir. - http://pkgs.fedoraproject.org/repo/pkgs/dietlibc/dietlibc-0.33.20120825.tar.xz/016865b8c40d40a57b2ddb5862f2e338/dietlibc-0.33.20120825.tar.xz - http://pkgs.fedoraproject.org/repo/pkgs/dietlibc/dietlibc-github-c3f1cf67fcc186bb859e64a085bf98aaa6182a82.patch.gz/734e14b59b7f017ae5843ee9b9b6d34e/dietlibc-github-c3f1cf67fcc186bb859e64a085bf98aaa6182a82.patch.gz - - dietlibc-0.33-biarch.patch - - system/devel/dietlibc/pspec.xml - - - dietlibc - - /usr/bin - /usr/lib/dietlibc/include - /usr/lib/dietlibc/lib-i386 - /usr/lib/dietlibc/lib-x86_64 - /usr/share/man - /usr/share/doc - - - - - 2014-05-11 - 0.33.20120825 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-11-03 - 0.33.20120825 - Version bump - Marcin Bojara - marcin@pisilinux.org - - - 2010-10-11 - 0.32 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - util-macros - http://www.x.org/ - - PisiLinux Community - admins@pisilinux.org - - MIT - library - system.devel - Macros X.Org utilisées pour compiler X.Org - X.Org X11 Autotools macros - X.Org X11 Autotools makroları - X.Org Makros zum Kompilieren von X.Org - X.Org X11 autotools macros are required for building the various packages that comprise the X Window System. - X.Org X11 Autotools makroları, X pencere sistemini oluşturan çeşitli paketleri derlemek için gereklidir. - http://xorg.freedesktop.org/releases/individual/util/util-macros-1.19.0.tar.bz2 - - doc.patch - - system/devel/util-macros/pspec.xml - - - util-macros - - /usr/share/aclocal - /usr/share/pkgconfig - /usr/share/doc - - - - - 2016-03-02 - 1.19.0 - Rebuild with new toolchain. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-07-11 - 1.19.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 1.18.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-07 - 1.18.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-10-08 - 1.17.1 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-09-12 - 1.17.1 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-08-19 - 1.17 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - gobject-introspection - http://live.gnome.org/GObjectIntrospection - - Pisi Linux Admins - admins@pisilinux.org - - LGPLv2+ - GPLv2+ - library - app:console - system.devel - Introspection system for GObject-based libraries - gobject-introspection can scan C header and source files in order to generate introspection typelib files. It also provides an API to examine typelib files, useful for creating language bindings among other things. - mirrors://gnome/gobject-introspection/1.46/gobject-introspection-1.46.0.tar.xz - - libffi-devel - python-devel - glib2-devel - - system/devel/gobject-introspection/pspec.xml - - - gobject-introspection - - libffi - glib2 - - - /usr/lib/lib*.so* - /usr/lib/girepository-1.0/*.typelib - /usr/share/locale - /usr/share/doc - - - - gobject-introspection-devel - Development files for gobject-introspection - - gobject-introspection - libffi - glib2 - libffi-devel - glib2-devel - - - /usr/include - /usr/lib/gobject-introspection - /usr/bin/g-ir-* - /usr/lib/pkgconfig - /usr/share/gir-1.0 - /usr/share/aclocal - /usr/share/gobject-introspection-1.0 - /usr/share/man - - - - - 2016-01-25 - 1.46.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-06 - 1.44.0 - Version bump. - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org - - - 2014-05-11 - 1.40.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-14 - 1.40.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-04-06 - 1.38.0 - Rebuild - Varol Maksutoğlu - waroi@pisilinux.org - - - 2014-02-01 - 1.38.0 - Rebuild Unused - Varol Maksutoğlu - waroi@pisilinux.org - - - 2013-10.12 - 1.38.0 - V.Bump - PisiLinux Community - admins@pisilinux.org - - - 2013-07-24 - 1.37.4 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-04-07 - 1.36.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-24 - 1.35.8 - V.Bump. - PisiLinux Community - admins@pisilinux.org - - - 2013-02-04 - 1.35.4 - New version bump to 1.35.4. - Idris Kalp - admins@pisilinux.org - - - 2012-12-31 - 1.34.2 - First release - Idris Kalp - yaralikurt15@hotmail.com - - - - - - klibc - http://www.zytor.com/mailman/listinfo/klibc - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - GPLv2 - library - system.devel - A minimal libc subset for use with initramfs - Küçük bir C kütüphanesi (libc) uyarlaması - klibc ou "espace utilisateur tôt", est une librairie résultante de l'effort pour transférer autant de code d'initialisation de Linux que possible hors du noyau. - klibc, or "early userspace", is library part of an effort which tries to move as much initialization code in Linux as possible out of the kernel. - klibc, sistem başlangıcı için gerekli olan kodların mümkün olduğunca çok kısmını Linux çekirdeği dışına atma hedefiyle oluşturulmuş bir kütüphanedir. - https://www.kernel.org/pub/linux/libs/klibc/2.0/klibc-2.0.4.tar.xz - - perl - kernel-module-headers - - system/devel/klibc/pspec.xml - - - klibc - - /lib - /usr/bin - /usr/lib/klibc/bin - /usr/lib/klibc/include - /usr/lib/klibc/lib - /usr/share/aclocal - /usr/share/doc - /usr/share/man/ - - - klibc.m4 - - - - - 2015-06-19 - 2.0.4 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 2.0.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-28 - 2.0.3 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-22 - 2.0.2 - Rebuild, cleanup. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-01-04 - 2.0.2 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - yacc - http://dinosaur.compilertools.net/#yacc - - PisiLinux Community - admins@pisilinux.org - - as-is - app:console - system.devel - Yacc: Yet Another Compiler-Compiler - Yacc: Yet Another Compiler-Compiler - Yacc fourni un outil général de description d'entrée pour un logiciel. L'utilisateur de Yacc spécifie la structure de l'entrée avec le code à invoquer lorsque de tels structures sont reconnues. Yacc transforme ce qui a été spécifié en sous-routine gérant le processus d'entrée. - Yacc provides a general tool for describing the input to a computer program. The Yacc user specifies the structures of his input, together with code to be invoked as each such structure is recognized. Yacc turns such a specification into a subroutine that handles the input process - Yacc, bir uygulamaya girdi açıklamasını yapan bir araçtır. Yacc kullanıcısı, girdinin yapısını ve bu yapının her seferinde tanındığı kodu belirtir. Yacc; bu tür bir belirlemeyi, girdi sürecini işleyen bir alt yordama çevirir. - ftp://metalab.unc.edu/pub/Linux/devel/compiler-tools/yacc-1.9.1.tar.Z - - mkstemp.patch - skeleton.c.diff - yacc-1.9.1-ia64.patch - - system/devel/yacc/pspec.xml - - - yacc - - /usr/bin - /usr/share/doc - /usr/share/man - - - - - 2014-05-11 - 1.9.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-17 - 1.9.1 - Rebuild for 1.0 - Richard de Bruin - richdb@pisilinux.org - - - 2010-10-11 - 1.9.1 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - ppl - http://www.cs.unipr.it/ppl/ - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv3 - app:console - library - system.devel - Pharma Polyhedra library - Pharma Polyhedra kitaplığı - ppl is the Parma Polyhedra Library that provides numerical abstractions for analysis of complex systems. - ppl, kompleks sistemlerin analizi için sayısal ayrım sağlayan Pharma Polyhedra kitaplığıdır. - http://bugseng.com/external/ppl/download/ftp/releases/1.1/ppl-1.1.tar.xz - - gmp-devel - glpk-devel - - system/devel/ppl/pspec.xml - - - ppl - - gmp - glpk - libgcc - - - /usr/bin - /usr/lib - /usr/share/doc/COPYING - /usr/share/doc/CREDITS - /usr/share/doc/README - /usr/share/doc/NEWS - /usr/share/man - - - - ppl-docs - Documentation for ppl - ppl kitaplığı belgeleri - system.doc - - ppl - - - /usr/share/doc/ppl - - - - ppl-devel - Development files for ppl - ppl için geliştirme dosyaları - - ppl - gmp-devel - - - /usr/bin/ppl-config - /usr/include - /usr/share/aclocal - /usr/share/man/man3 - - - - - 2014-09-06 - 1.1 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 1.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 1.1 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-27 - 1.0 - Clean ppl, version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-01 - 1.0 - Fix deps. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-19 - 1.0 - Add patch for gmp 5.10. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-07-13 - 1.0 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - pkgconfig - http://www.freedesktop.org/software/pkgconfig/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.devel - Package Config system that manages compile/link flags for libraries - Kütüphaneler için derleme bayraklarını yöneten bir paket yapılandırma sistemi - Sistema de configuración de paquetes que soporta banderas de compilación/link para librerías - Paquet de configuration système qui gère les fanions (flags) de compilation et chaînage (link) pour les librairies. Il aide à insérer les options adéquates dans la ligne de commande d'appel au compilateur. - Package Config system that manages compile/link flags for libraries. It helps you insert the correct compiler options on the command line. - Kütüphaneler için derleme bayraklarını yöneten, bir paket yapılandırma sistemi. Komut satırından, doğru derleme seçenekleri sunma olanağı sağlar - Sistema de configuración de paquetes que soporta banderas de compilación/link para librerías. Facilita la inserción de las opciones correctos de compilador en línea de comando - http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.tar.gz - - gnuconfig - glib2-devel - - system/devel/pkgconfig/pspec.xml - - - pkgconfig - - glib2 - - - /usr/bin - /usr/share/doc - /usr/share/man - /usr/share/aclocal - /usr/share/pkgconfig - /usr/lib/pkgconfig - - - - - 2016-02-28 - 0.29 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-27 - 0.29 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 0.28 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-31 - 0.28 - Clean pkgconfig. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-01 - 0.28 - Fix deps. - PisiLinux Community - admins@pisilinux.org - - - 2013-02-18 - 0.28 - Fixed - PisiLinux Community - admins@pisilinux.org - - - 2012-09-15 - 0.27.1 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - libatomic_ops - https://github.com/ivmai/libatomic_ops/ - - Pisi Linux Admins - admins@pisilinux.org - - GPLv2 - MIT - library - system.devel - Atomic memory update operations library - Atomik bellek işlemleri kütüphanesi - libatomic_ops provides implementations for atomic memory update operations on a number of architectures. This allows direct use of these in reasonably portable code. - libatomic_ops, çeşitli mimarilerde atomik bellek işlemleri yapılmasını sağlayarak taşınabilir kod yazma olanağı veren bir kütüphanedir. - https://github.com/ivmai/libatomic_ops/archive/libatomic_ops-7_4_2.tar.gz - system/devel/libatomic_ops/pspec.xml - - - libatomic_ops - - /usr/lib - /usr/share/doc - - - - libatomic_ops-devel - libatomic_ops için geliştirme dosyaları - libatomic_ops için geliştirme dosyaları - - libatomic_ops - - - /usr/include - /usr/lib/pkgconfig - - - - - 2014-12-01 - 7.4.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-01-02 - 7.2d - Bump to usable version. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-01-01 - 1.2 - Rebuild for conflicting files. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-28 - 1.2 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-10-13 - 1.2 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - binutils - http://www.gnu.org/software/binutils/ - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv2 - app:console - system.devel - Assembler and linker tools - Makine dili derleme ve bağlama araçları - Contient des commandes telles que as, ld, nm, objdump, ar, ranlib pour compiler du code assembleur en langage machine ainsi que pour chaîner (link) et manipuler les fichiers binaires objets. - Contains commands like as, ld, nm, objdump, ar, ranlib for compiling assembly code to the machine language, and for linking and manipulating the binary object files. - Assembly kodlarını makine diline derlemek, oluşan obje dosyalarını bağlamak ve ikili dosyalar üzerinde işlemler yapmak için kullanılan as, ld, nm, objdump, ar, ranlib gibi komutları içermektedir. - http://ftp.gnu.org/gnu/binutils/binutils-2.26.tar.bz2 - - glibc-32bit - - system/devel/binutils/pspec.xml - - - binutils - - zlib - - - /usr/bin - /usr/lib - /usr/include - /usr/share/info - /usr/share/man - - - - - 2016-02-28 - 2.26 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-02-05 - 2.26 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-09 - 2.25 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-11-28 - 2.24 - Fix CVE issues. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-09-12 - 2.24 - Rebuild for new glibc. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-09-06 - 2.24 - Rebuild for new gcc, add pie and lto testsuite patch. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-14 - 2.24 - Add upstream patch. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-30 - 2.24 - Rebuild for new gcc. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-03-29 - 2.24 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-27 - 2.23.2 - Back to 2.23.2, cleanup. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-23 - 2.23.52.0.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-16 - 2.23.51.0.9 - New release. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-01-16 - 2.23.51.0.8 - New toolchain up. - Erdinç Gültekin - admins@pisilinux.org - - - - - - xorg-proto - http://x.org/ - - PisiLinux Community - admins@pisilinux.org - - MIT - library - system.devel - Entêtes de protocole de X.Org. - X.Org Protocol Headers - X.Org Protokol Başlıkları - X.Org Protokoll Header - This package includes the protocol headers needed for X11 development. - Bu paket, X11 geliştirme için gerekli protokol başlıklarını içerir. - mirrors://xorg/individual/proto/bigreqsproto-1.1.2.tar.bz2 - mirrors://xorg/individual/proto/presentproto-1.0.tar.bz2 - mirrors://xorg/individual/proto/compositeproto-0.4.2.tar.bz2 - mirrors://xorg/individual/proto/damageproto-1.2.1.tar.bz2 - mirrors://xorg/individual/proto/dmxproto-2.3.1.tar.bz2 - mirrors://xorg/individual/proto/dri2proto-2.8.tar.bz2 - mirrors://xorg/individual/proto/dri3proto-1.0.tar.bz2 - mirrors://xorg/individual/proto/fixesproto-5.0.tar.bz2 - mirrors://xorg/individual/proto/fontsproto-2.1.3.tar.bz2 - mirrors://xorg/individual/proto/glproto-1.4.17.tar.bz2 - mirrors://xorg/individual/proto/inputproto-2.3.1.tar.bz2 - mirrors://xorg/individual/proto/kbproto-1.0.7.tar.gz - mirrors://xorg/individual/proto/printproto-1.0.5.tar.bz2 - mirrors://xorg/individual/proto/randrproto-1.5.0.tar.gz - mirrors://xorg/individual/proto/recordproto-1.14.2.tar.bz2 - mirrors://xorg/individual/proto/renderproto-0.11.1.tar.bz2 - mirrors://xorg/individual/proto/resourceproto-1.2.0.tar.bz2 - mirrors://xorg/individual/proto/scrnsaverproto-1.2.2.tar.bz2 - mirrors://xorg/individual/proto/videoproto-2.3.2.tar.bz2 - mirrors://xorg/individual/proto/xcmiscproto-1.2.2.tar.bz2 - mirrors://xorg/individual/proto/xextproto-7.3.0.tar.bz2 - mirrors://xorg/individual/proto/xf86bigfontproto-1.2.0.tar.bz2 - mirrors://xorg/individual/proto/xf86dgaproto-2.1.tar.bz2 - mirrors://xorg/individual/proto/xf86driproto-2.1.1.tar.bz2 - mirrors://xorg/individual/proto/xf86vidmodeproto-2.3.1.tar.bz2 - mirrors://xorg/individual/proto/xineramaproto-1.2.1.tar.bz2 - mirrors://xorg/individual/proto/xproto-7.0.28.tar.gz - mirrors://xorg/individual/proto/xproxymanagementprotocol-1.0.3.tar.bz2 - https://github.com/bbidulock/vncproto/releases/download/vncproto-1.1/vncproto-1.1.tar.bz2 - - util-macros - libxslt - - - docdir.patch - - system/devel/xorg-proto/pspec.xml - - - xorg-proto - - /usr/include - /usr/lib/pkgconfig - /usr/share/doc - /usr/share/man/man7/Xprint.7 - - - - - 2015-08-12 - 7.6 - Update kbproto, randrproto and xproto - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-01-27 - 7.6 - Update xproto - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-09-20 - 7.6 - Update vncproto, fix dependencies. - Marcin Bojara - marcin@pisilinux.org - - - 2014-08-31 - 7.6 - Update. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 7.6 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-15 - 7.6 - xproto fontsproto version bump - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-03-07 - 7.6 - add presentproto dri3proto - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-04-13 - 7.6 - Update: - xproto to version 7.0.24 - inputproto to version 2.3 (needed for xorg-server-0.14.0) - Marcin Bojara - marcin@pisilinux.org - - - 2012-10-15 - 7.6 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - catbox - http://pisilinux.org - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.devel - Python sandboxing module - Python için sandbox modülü - catbox is a Python sandboxing module commonly used by the package management system of PiSi Linux, PiSi. - https://github.com/baris/catbox/archive/catbox-1.6.1.tar.gz - - python-setuptools - python-devel - - system/devel/catbox/pspec.xml - - - catbox - - python - - - /usr/bin - /usr/lib - /usr/share/doc - - - - - 2015-03-19 - 1.6.1 - Fix Buildeps. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.6.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-08 - 1.6.1 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-10-22 - 1.6 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-24 - 1.6 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2010-10-11 - 1.2 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - mpfr - http://www.mpfr.org - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv2+ - LGPLv2+ - library - system.devel - Multiple precision floating point library - La librairie MPFR est une librairie C pour les calculs à virgules flottantes à précisions multiples à arrondi exact (également appelé arrondi correct). Elle est basée sur la librairie à précision multiple GMP. - The MPFR library is a C library for multiple-precision floating-point computations with exact rounding (also called correct rounding). It is based on the GMP multiple-precision library. - MPFR es una librería en C para computaciones de punto flotante de múltiple precisión con redondeo exacto (también llamado redondeo correcto). Está basada en la librería de múltiple precisión GMP. - http://www.mpfr.org/mpfr-current/mpfr-3.1.3.tar.xz - - gmp-devel - - system/devel/mpfr/pspec.xml - - - mpfr - - gmp - - - /usr/lib - /usr/share/info - /usr/share/doc/mpfr - - - - mpfr-devel - Development files for mpfr - mpfr için geliştirme dosyaları - - mpfr - - - /usr/include - /usr/share/doc/mpfr/examples - /usr/share/doc/mpfr/html - - - - - 2016-02-28 - 3.1.3 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-23 - 3.1.3 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-09-06 - 3.1.2_p10 - Patch version bump to 10. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 3.1.2_p5 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-04-01 - 3.1.2_p5 - Version bump to patch level 5. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-27 - 3.1.2 - Clean mpfr. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-23 - 3.1.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-07-13 - 3.1.1 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - xcb-proto - http://xcb.freedesktop.org/ - - PisiLinux Community - admins@pisilinux.org - - MIT - data - system.devel - XCB protocol descriptions - XCB protokol tanımlamaları - XCB is a project to enable efficient language bindings to the X11 protocol. This package contains the protocol descriptions themselves. Language bindings use these protocol descriptions to generate code for marshalling the protocol. - http://xcb.freedesktop.org/dist/xcb-proto-1.11.tar.bz2 - - libxml2 - - system/devel/xcb-proto/pspec.xml - - - xcb-proto - - /usr/lib/pkgconfig - /usr/lib/python* - /usr/share/doc - /usr/share/xcb - - - - - 2014-09-02 - 1.11 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 1.10 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-03 - 1.10 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-10-22 - 1.8 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-11-18 - 1.8 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-11-18 - 1.8 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - numactl - ftp://oss.sgi.com/www/projects/libnuma/download - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - LGPLv2 - library - app:console - system.devel - Library for tuning NUMA machines - NUMA makineleri optimize etmek için bir kitaplık - numactl consists of a numactl program to run other programs with a specific NUMA policy and a libnuma to do allocations with NUMA policy in applications. - numactl, uygulamaları farklı NUMA (Tekdüze Olmayan Bellek Erişimi) politikalarıyla çalıştırmak için gerekli bir araç ve kitaplıktır. - ftp://oss.sgi.com/www/projects/libnuma/download/numactl-2.0.11.tar.gz - system/devel/numactl/pspec.xml - - - numactl - - /usr/bin - /usr/lib - /usr/share/doc - /usr/share/man - - - - numactl-devel - Development files for numactl - numactl için geliştirme dosyaları - - numactl - - - /usr/include - /usr/share/man/man3 - - - - - 2016-03-02 - 2.0.11 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-05-16 - 2.0.10 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-31 - 2.0.9 - Rebuild. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-01-31 - 2.0.9 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2013-01-07 - 2.0.8 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - gcc - http://gcc.gnu.org - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv3+ - LGPLv3+ - app:console - library - system.devel - The GNU Compiler Collection, includes C, C++, Objective-C and Fortran compilers - C/C++ ve Fortran derleyicisi - La collection de compilateurs GNU inclus des façades pour le C, C++, Objective-C, Fortran, hava et Ada ainsi que des librairies pour ces langages (libstdc++, libgcj...) - The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, as well as libraries for these languages - C, C++, Objective-C, Fortran programlama dilleri ile bu dillere ait kütüphaneleri içeren, GNU derleyici paketi - ftp://gd.tuwien.ac.at/gnu/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.bz2 - - binutils - bison - gettext - ncurses - zlib - gnuconfig - patch - sed - texinfo - gmp-devel - mpfr-devel - libmpc-devel - ppl - zlib-devel - isl-devel - elfutils - - - pisilinux/64.patch - pisilinux/gcc_47_based-record_gcc_options.patch - - system/devel/gcc/pspec.xml - - - libquadmath - The GNU Fortran Compiler Quadmath Runtime Library - library - system.base - - /usr/lib/libquadmath.so* - /usr/lib/libquadmath.spec* - /usr/lib32/libquadmath.so* - /usr/lib32/libquadmath.spec* - /usr/share/info/libquadmath.info - - - - libgcc - Contains a shared library of support routines used by GCC's runtime, and thus by every program on the system - library - system.base - - /etc - /usr/lib/libstdc++.so* - /usr/lib/libgcc_s.so* - /usr/lib32/libstdc++.so* - /usr/lib32/libgcc_s.so* - /usr/share/gcc-* - /usr/share/gdb - - - - libgomp - Contains GCC shared support library which is needed for OpenMP 2.5 support - library - - /usr/lib/libgomp.so* - /usr/lib/libgomp.spec* - /usr/lib32/libgomp.so* - /usr/lib32/libgomp.spec* - /usr/share/info/libgomp.info - - - - libgfortran - Contains GCC shared support library for gfortran - library - - libquadmath - - - /usr/lib/libgfortran.so* - /usr/lib32/libgfortran.so* - - - - libobjc - Contains GCC shared support library for objc - library - - /usr/lib/libobjc.so* - /usr/lib32/libobjc.so* - - - - gcc-l10n - Contains available GCC localization files, includes also turkish translations - system.locale - - gcc - - - /usr/share/locale - - - - gcc - - gmp - isl - mpfr - zlib - libmpc - - - /lib - /usr/bin - /usr/lib - /usr/lib32 - /usr/libexec - /usr/include - /usr/share/man - /usr/share/info - - - gfilt - gSTLFilt.pl - - - - - 2016-02-05 - 5.3.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-11-28 - 4.9.2 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-09-12 - 4.9.1 - Rebuild for new glibc. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-09-06 - 4.9.1 - Version bump, cleanup. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 4.9.0 - Rebuild, add patch. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-04-28 - 4.9.0 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-04-01 - 4.8.2 - Rebuild for dependency changes. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-11-11 - 4.8.2 - backport ICE fix - http://gcc.gnu.org/bugzilla//show_bug.cgi?id=56710 - commit 3d1f8279 - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57653 - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-10-22 - 4.8.2 - Cleanup, version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-14 - 4.8.1 - Rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-07-23 - 4.8.1 - Version bump, cleanup patches. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-10-14 - 4.7.2 - Cleanup package, add some patches. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-10-14 - 4.7.2 - First release - Erdem Artan - admins@pisilinux.org - - - - - - intltool - https://launchpad.net/intltool - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.devel - Utility for internationalizing various kinds of data files - Çeşitli kaynak kod dosyalarından satırları ayıklamak için kullanılan betikler - Scripts d'extraction depuis divers fichiers sources de chaînes traduisibles. - intltool automatically extracts translatable strings from oaf, glade, bonobo ui, nautilus theme, .desktop files, etc. and puts them in the po files. - Çeşitli kaynak kod dosyalarından satırları ayıklamak için kullanılan betikler. - https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz - - perl - perl-XML-Parser - - system/devel/intltool/pspec.xml - - - intltool - - perl-XML-Parser - - - /usr/bin - /usr/share/aclocal - /usr/share/intltool - /usr/share/man - /usr/share/doc - - - - - 2015-06-06 - 0.51.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 0.50.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-28 - 0.50.2 - Clean intltool. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-19 - 0.50.2 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - libseccomp - http://sourceforge.net/projects/libseccomp/ - - Aydın Demirel - aydin.demirel@pisilinux.org - - LGPLv2.1 - app:library - system.devel - Enhanced seccomp library - Gelişmiş seccomp kütüphanesi - High level interface to the Linux Kernel's seccomp filter. - Linux Kernel'in seccomp süzgecine yüksek seviyeli arayüz - http://downloads.sourceforge.net/project/libseccomp/libseccomp-2.1.1/libseccomp-2.1.1.tar.gz - - glibc - util-linux - - system/devel/libseccomp/pspec.xml - - - libseccomp - - /usr/bin - /usr/share/man - /usr/lib/* - - - - libseccomp-devel - Development files for libseccomp - - libseccomp - - - /usr/include - - - - - 2014-06-27 - 2.1.1 - First release - Aydın Demirel - aydin.demirel@pisilinux.org - - - - - - autoconf - http://www.gnu.org/software/autoconf/autoconf.html - - PisiLinux Community - admins@pisilinux.org - - GPLv3 - app:console - system.devel - Used to create autoconfiguration files - Used to create autoconfiguration files, Autoconf is an extensible package of m4 macros that produce shell scripts to automatically configure software source code packages. - mirrors://gnu/autoconf/autoconf-2.69.tar.xz - - texinfo - m4 - perl - - system/devel/autoconf/pspec.xml - - - autoconf - - texinfo - m4 - - - /usr/bin - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/autoconf - - - - - 2014-11-30 - 2.69 - Rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 2.69 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-27 - 2.69 - Clean autoconf. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-07-14 - 2.69 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - xtrans - http://www.x.org/ - - PisiLinux Community - admins@pisilinux.org - - MIT - library - system.devel - Librairie trans de X.Org. - X.Org trans library - X.Org trans kitaplığı. - X.Org trans Bibliothek - xtrans includes a number of routines to make X implementations transport-independent. - xtrans, X gerçeklemelerini taşıma türünden bağımsız yapmak için kullanılan bazı yordamları içerir. - mirrors://xorg/individual/lib/xtrans-1.3.5.tar.bz2 - - util-macros - - system/devel/xtrans/pspec.xml - - - xtrans - - /usr/include/X11/Xtrans - /usr/share/aclocal - /usr/share/pkgconfig - - - - - 2015-05-05 - 1.3.5 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-07-11 - 1.3.4 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 1.3.3 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-05 - 1.3.3 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-01-17 - 1.3.2 - Version bump - Richard de Bruin - richdb@pisilinux.org - - - 2012-08-19 - 1.2.7 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - gnuconfig - http://savannah.gnu.org/projects/config - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv2+ - data - system.devel - Base config files for autofoo - Autofoo için temel config dosyaları - fichiers GNU config.sub et config.guess mis à jour. - gnuconfig contains updated config.sub and config.guess files from GNU. - gnuconfig güncel GNU config.sub ve config.guess dosyaları içerir. - http://source.pisilinux.org/1.0/config-20141105.tar.gz - system/devel/gnuconfig/pspec.xml - - - gnuconfig - - /usr/share/gnuconfig - /usr/share/doc - - - - - 2014-12-04 - 20141105 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 20140511 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-04-01 - 20140401 - New git snapshot. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-27 - 20130930 - Clean, new git snapshot. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-04-07 - 20130212 - Fix git archive - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-27 - 20130217 - New git archive - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-01-23 - 20130123 - bump - Erdinç Gültekin - admins@pisilinux.org - - - 2012-07-13 - 20120712 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - automake - http://www.gnu.org/software/automake/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2+ - app:console - system.devel - A tool for automatically generating Makefile.in files compliant with the GNU Coding Standards - Makefile.am yapılandırma dosyalarından Makefile.in dosyası üreten program - Automake est un outil de génération automatique de Makefiles compatibles avec les standards de Codage GNU. Vous aurez également besoin d'installer le paquet GNU AutoConf - Automake is a tool for automatically generating Makefile.in files compliant with the GNU Coding Standards. - Makefile.am yapılandırma dosyalarından GNU kodlama standartlarına uygun Makefile.in dosyası üreten program. Bununla birlikte Autoconf paketini de yüklemelisiniz. - mirrors://gnu/automake/automake-1.15.tar.xz - - perl - autoconf - gnuconfig - patch - - system/devel/automake/pspec.xml - - - automake - - perl - autoconf - - - /usr/bin - /usr/share/automake-* - /usr/share/aclocal-* - /usr/share/aclocal - /usr/share/info - /usr/share/doc - /usr/share/man - - - - - 2015-01-28 - 1.15 - Version bump. - Hakan Yıldız - hknyldz93@gmail.com - - - 2014-11-30 - 1.14 - Rebuild. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-11 - 1.14.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-30 - 1.14.1 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-27 - 1.14 - Clean automake. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-22 - 1.14 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-16 - 1.13.1 - Version bump - Ertan Güven - ertan@pisilinux.org - - - 2012-08-13 - 1.12.2 - First release - Ramazan Utku - admins@pisilinux.org - - - - - - cloog - http://www.cloog.org/ - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv2+ - app:console - library - system.devel - Chunky Loop Generator - cloog is CLooG is a free software and library to generate code for scanning Z-polyhedra. It is used by the GCC Graphite optimization framework. - http://www.bastoul.net/cloog/pages/download/cloog-0.18.4.tar.gz - - gmp-devel - ppl-devel - isl-devel - - system/devel/cloog/pspec.xml - - - cloog - - gmp - isl - - - /usr/bin - /usr/lib - /usr/share/doc/cloog/ - /usr/share/info - - - - cloog-devel - Development files for cloog - - cloog - - - /usr/include - /usr/lib/pkgconfig/cloog.pc - - - - - 2016-01-27 - 0.18.4 - Version bump - Alihan Öztürk - alihan@pisilinux.org - - - 2014-09-06 - 0.18.1 - Rebuild for new isl and new toolchain. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 0.18.1 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 0.18.1 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-27 - 0.18.0 - Clean cloog. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-26 - 0.18.0 - Move pc files to devel pack, rebuild. - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-04-23 - 0.18.0 - Dep fixed - PisiLinux Community - admins@pisilinux.org - - - 2012-02-16 - 0.18.0 - New release - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-06-22 - 0.17.0 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - cython - http://www.cython.org - - Pisi Linux Admins - admins@pisilinux.org - - Apache-2.0 - app:console - library - system.devel - C extensions for the Python - Python için C eklentileri - Cython is a language that makes writing C extensions for the Python language as easy as Python itself. - Cython, Python için C eklentileri yazmayı kolaylaştıran bir dildir. - http://cython.org/release/Cython-0.23.4.tar.gz - - python-devel - - system/devel/cython/pspec.xml - - - cython - - python - - - /usr/bin - /usr/lib - /usr/share/doc - - - - - 2016-01-15 - 0.23.4 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-08-14 - 0.23 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-22 - 0.22.1 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-02-16 - 0.22 - Version bump. - Hakan Yıldız - hknyldz93@gmail.com - - - 2015-02-03 - 0.21.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-07-05 - 0.20.2 - Version bump - Vedat Demir - vedat@pisilinux.org - - - 2013-11-07 - 0.19.2 - Version bump - Burak Fazıl Ertürk - burakerturk@pisilinux.org - - - 2013-05-02 - 0.19 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-09-15 - 0.17 - First release - Erdinç Gültekin - admins@pisilinux.org - - - - - - glpk - http://www.gnu.org/software/glpk/glpk.html - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv2 - library - system.devel - GNU Linear Programming Kit - GNU Doğrusal Programlama Kiti - Le paquet GLPK (GNU Linear Programming Kit - Kit de Programmation Linéaire) a pour objectif de résoudre le problème de programmation linéaire (LP) de grande envergure, la programmation d'entiers mixés (MIP), et autres problèmes de la sorte. Il s'agit d'un ensemble de routines écrites en C ANSI et organisées de manière à former une librairie que l'on peut appeler. - The GLPK (GNU Linear Programming Kit) package is intended for solving large-scale linear programming (LP), mixed integer programming (MIP), and other related problems. It is a set of routines written in ANSI C and organized in the form of a callable library. - mirrors://gnu/glpk/glpk-4.55.tar.gz - system/devel/glpk/pspec.xml - - - glpk - - /usr/bin - /usr/lib - /usr/share/doc - - - - glpk-devel - Development files for glpk - glpk için geliştirme dosyaları - - glpk - - - /usr/include - - - - - 2014-09-06 - 4.55 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 4.54 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-02-27 - 4.52 - Rebuild Unused - Varol Maksutoğlu - waroi@pisilinux.org - - - 2013-08-28 - 4.52 - Version bump, clean glpk. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-18 - 4.48 - v.bump - PisiLinux Community - admins@pisilinux.org - - - 2012-08-16 - 4.47 - First release - Ramazan Utku - admins@pisilinux.org - - - - - - gc - http://www.hpl.hp.com/personal/Hans_Boehm/gc - - PisiLinux Community - admins@pisilinux.org - - BSD - GPLv2 - library - system.devel - A garbage collector for C and C++ - C ve C++ için bir çöp toplama kitaplığı - Ostrożny odśmiecacz dla C i C++ - The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C malloc or C++ new. - gc, C malloc veya C++ new yerine kullanılabilecek, Boehm-Demers-Weiser çöp toplayıcısı kitaplığıdır. - Boehm's GC jest odśmiecającym alokatorem pamięci, który został zaprojektowany z zamiarem używania jako zastępcza wtyczka dla funkcji C malloc. - http://www.hboehm.info/gc/gc_source/gc-7.4.2.tar.gz - - libatomic_ops-devel - - - noelision.patch - - system/devel/gc/pspec.xml - - - gc - - /usr/lib - /usr/share/doc - - - - gc-devel - Development files for gc - gc için geliştirme dosyaları - Pliki nagłówkowe gc - - gc - - - /usr/include/ - /usr/lib/pkgconfig - - - - - 2014-12-01 - 7.4.2 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-24 - 7.2d - Rebuild for gcc. - PisiLinux Community - admins@pisilinux.org - - - 2014-01-02 - 7.2d - Remove libatomic_ops-devel package, we have standalone one. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-27 - 7.2d - Clean gc. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-11-02 - 7.2d - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - libxslt - http://xmlsoft.org/XSLT/ - - PisiLinux Community - admins@pisilinux.org - - MIT - library - system.devel - XSLT libraries and tools - XSLT kitaplığı ve araçları - Libxslt est la librairie XSLT C développée pour le projet GNOME. XSLT étant lui-même un langage XML permettant de définir une transformation de contenu XML. - Libxslt is the XSLT C library developed for the GNOME project. XSLT itself is a an XML language to define transformation for XML. - Libxslt, GNOME projesi için geliştirilen XSLT C kitaplığıdır. XSLT'nin kendisi, XML oluşumunu tanımlayan bir XML dilidir. - ftp://ftp.xmlsoft.org/libxml2/libxslt-1.1.28.tar.gz - - libxml2-devel - libgcrypt-devel - - system/devel/libxslt/pspec.xml - - - libxslt-docs - libxslt için belgelendirme dosyaları - - libxslt - - - /usr/share/doc - - - - libxslt-devel - libxslt için geliştirme dosyaları - - libxml2-devel - libxslt - - - /usr/bin/*-config - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/share/aclocal - - - - libxslt - - libgcrypt - libxml2 - - - /usr/bin - /usr/lib - /usr/share/man - - - - libxslt-32bit - 32-bit shared libraries for libxslt - libxslt için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - libxml2-32bit - libgcrypt-32bit - - - libxslt - libxml2-32bit - libgcrypt-32bit - glibc-32bit - - - /usr/lib32 - - - - - 2014-08-07 - 1.1.28 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2013-08-31 - 1.1.28 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2012-09-15 - 1.1.27 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - python-setuptools - http://pypi.python.org/pypi/setuptools - - PisiLinux Community - admins@pisilinux.org - - PSF-2.2 - library - system.devel - Python setuptools - Python kurulum araçları - python-setuptools is a collection of enhancements to the Python distutils that allow you to more easily build and distribute Python packages, especially ones that have dependencies on other packages. - python-setuptools, Python distutils'e yapılan, özellikle başka paketlere bağımlılığı olan Python paketlerini daha kolay oluşturmaya ve dağıtmaya yarayan iyileştirmeler koleksiyonudur. - http://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz - system/devel/python-setuptools/pspec.xml - - - python-setuptools - - /usr/bin - /usr/lib/python* - /usr/share/doc - - - - - 2014-05-11 - 0.6.49 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-24 - 0.6.49 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-17 - 0.6.35 - Version bump - Ertan Güven - ertan@pisilinux.org - - - 2012-08-19 - 0.6.28 - First release - Ramazan Utku - admins@pisilinux.org - - - - - - perl-XML-Parser - http://search.cpan.org/dist/XML-Parser/ - - PisiLinux Community - admins@pisilinux.org - - Artistic - library - system.devel - A Perl extension interface to James Clark's XML parser, expat - James Clark'ın XML ayırıştırıcısına bir Perl uzantısı arayüzü - Una extensión Perl al parseador XML de James Clark, expat - This module provides an interface to James Clark's XML parser, expat. As in expat, a single instance of the parser can only parse one document. Calls to parsestring after the first for a given instance will die. - Bu modül James Clark'ın XML ayrıştırıcısı expat için bir arayüz sağlar. Expat'ta olduğu gibi ayrıştırıcıdan türetilen her nesne sadece bir dosyayı ayrıştırabilir. - Este módulo facilita una interfaz al parser XML de James Clark, expat. Como en expat, una sola instancia del parser puede analizar solamente un documento. Llamadas a parsestring después del primero de una instancia determinada morirán. - mirrors://cpan/authors/id/T/TO/TODDR/XML-Parser-2.44.tar.gz - - expat-devel - perl - - system/devel/perl-XML-Parser/pspec.xml - - - perl-XML-Parser - - expat - perl - - - /usr/share/doc - /usr/lib - /usr/share/man - - - - - 2015-06-07 - 2.44 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-09-12 - 2.41 - Release bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 2.41 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-28 - 2.41 - New release. - Serdar Soytetir - kaptan@pisilinux.org - - - 2011-12-09 - 2.41 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - unifdef - http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/unifdef/ - - PisiLinux Community - admins@pisilinux.org - - BSD - app:console - system.devel - The unifdef utility selectively processes conditional cpp(1) directives - L'utilitaire unifdef traite sélectivement les directives conditionnelles cpp(1). Il supprime d'un fichier les directives ainsi que le texte additionnel qu'elles indiquent comme à supprimer tout en laissant le reste du fichier intact. - The unifdef utility selectively processes conditional cpp(1) directives. It removes from a file both the directives and any additional text that they specify should be removed, while otherwise leaving the file alone. - http://dotat.at/prog/unifdef/unifdef-2.10.tar.gz - system/devel/unifdef/pspec.xml - - - unifdef - - /usr/bin - /usr/share/man - /usr/share/doc/unifdef - - - - - 2014-05-11 - 2.10 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 2.10 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-07-24 - 2.9 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-09-17 - 2.6 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - m4 - http://www.gnu.org/software/m4/m4.html - - PisiLinux Community - admins@pisilinux.org - - GPLv3 - app:console - system.devel - GNU macro processor - GNU makro işleyicisi - L'utilitaire m4 est processeur de macro permettant de lire un ou plusieurs fichiers, les traiter en fonction leurs directives macro puis écrire le résultat dans la sortie standard. - The m4 utility is a macro processor that shall read one or more text files, process them according to their included macro statements, and write the results to standard output - m4, bir ya da daha fazla metin dosyasını okuyan; içerdikleri makro kurallarına göre bu dosyaları işleyen ve sonuçlarını standart çıktıya ileten bir makro işlemcisidir. - mirrors://gnu/m4/m4-1.4.17.tar.gz - - gettext-devel - libsigsegv - - system/devel/m4/pspec.xml - - - m4 - - libsigsegv - - - /usr/bin - /usr/share/doc - /usr/share/info - /usr/share/man - - - - - 2016-02-28 - 1.4.17 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.4.17 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-23 - 1.4.17 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-07-12 - 1.4.16 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - libsigsegv - http://libsigsegv.sourceforge.net/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - system.devel - Une librairie pour gérer les erreurs de pagination en mode utilisateur. - A library for handling page faults in user mode - Oluşan bellek hatalarının kullanıcı kipinde işlenmesini sağlayan bir kitaplık - This is a library for handling page faults in user mode. A page fault occurs when a program tries to access to a region of memory that is currently not available. - libsigsegv, oluşan bellek hatalarının kullanıcı kipinde işlenmesini sağlayan bir kitaplıktır. - mirrors://gnu/libsigsegv/libsigsegv-2.10.tar.gz - system/devel/libsigsegv/pspec.xml - - - libsigsegv - - /usr/lib - /usr/share/doc - - - - libsigsegv-devel - Development files for libsigsegv - libsigsegv için geliştirme dosyaları - - libsigsegv - - - /usr/include - - - - - 2014-05-11 - 2.10 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-15 - 2.10 - Release bump - Burak Ertürk - burakerturk@pisilinux.org - - - 2013-10-22 - 2.10 - Rebuild. - Pisi Linux Admins - admins@pisilinux.org - - - 2011-12-09 - 2.10 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - libarchive - http://code.google.com/p/libarchive/ - - PisiLinux Community - admins@pisilinux.org - - BSD - library - system.devel - Library for reading and writing streaming archives - Birçok farklı akış arşiv formatını yaratan ve okuyan programlama kitaplığı - libarchive includes a library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats. - libarchive, tar, cpio, zip, ISO ve diğer arşiv biçimlerini okumak ve yazmak için bir kitaplık ve komut satırı araçları içerir. - http://www.libarchive.org/downloads/libarchive-3.1.2.tar.gz - - acl-devel - nettle-devel - attr-devel - bzip2 - libxml2-devel - openssl-devel - xz-devel - lzo-devel - zlib-devel - - system/devel/libarchive/pspec.xml - - - libarchive - - lzo - nettle - xz - acl - zlib - attr - bzip2 - libxml2 - - - /usr/lib - /usr/share/man - /usr/share/doc/libarchive - - - - libarchive-devel - Development files for libarchive - libarchive için geliştirme dosyaları - - libarchive - - - /usr/include - /usr/lib/pkgconfig - /usr/share/man/man3 - - - - - 2015-07-05 - 3.1.2 - Rebuild with nettle. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 3.1.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-28 - 3.1.2 - unused fix. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-08-28 - 3.1.2 - Clean libarchive. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-01 - 3.1.2 - Fix deps. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-18 - 3.1.2 - Version bump - Ertan Güven - ertan@pisilinux.org - - - 2012-08-19 - 3.0.4 - First release - Ramazan Utku - admins@pisilinux.org - - - - - - libmpc - http://www.multiprecision.org/ - - Serdar Soytetir - kaptan@pisilinux.org - - LGPLv2.1 - library - system.devel - High precision and correct rounding library - Yüksek hassasiyet ve yuvarlama kitaplığı - libmpc is a library for arithmetic of complex numbers with arbitrarily high precision and correct rounding. - libmpc aritmetik kompleks sayılarla yüksek hassasiyette ve doğru yuvarlama ile işlem yapılmasını sağlayan bir kitaplıktır. - ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz - - gmp-devel - mpfr-devel - - system/devel/libmpc/pspec.xml - - - libmpc - - gmp - mpfr - - - /usr/lib - /usr/share/doc/libmpc - /usr/share/info - - - - libmpc-devel - Development files for libmpc - libmpc için geliştirme dosyaları - - libmpc - - - /usr/include - - - - - 2016-02-28 - 1.0.3 - Rebuild with new toolchain. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-08 - 1.0.3 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-09-06 - 1.0.2 - Rebuild with new mpfr for new gcc. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 1.0.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-30 - 1.0.2 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-27 - 1.0.1 - Clean libpmc. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-09 - 1.0.1 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - isl - http://www.kotnet.org/~skimo/isl/ - - Serdar Soytetir - kaptan@pisilinux.org - - LGPLv2.1 - library - system.devel - Integer Set Library - isl is a library for manipulating sets and relations of integer points bounded by linear constraints. - http://isl.gforge.inria.fr/isl-0.16.1.tar.bz2 - - gmp-devel - - system/devel/isl/pspec.xml - - - isl - - gmp - - - /usr/lib - /usr/share/doc - - - - isl-devel - Development files for isl - isl için geliştirme dosyaları - - isl - - - /usr/include - /usr/lib/pkgconfig - - - - - 2016-01-27 - 0.16.1 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-05-05 - 0.13 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 0.12.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 0.12.2 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-22 - 0.12.1 - New release - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-28 - 0.12 - Move pc files to devel pack, rebuild - PisiLinux Community - admins@pisilinux.org - - - 2013-07-24 - 0.12 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-16 - 0.11.1 - New release - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-09-05 - 0.10 - First release - Erdem Artan - admins@pisilinux.org - - - - - - xorg-util - http://www.x.org/ - - PisiLinux Community - admins@pisilinux.org - - MIT - app:console - system.devel - Utilitaires de X.Org - X.Org utilities - X.Org araçları - X.Org Werkzeuge - xorg-util contains some Xorg X11 command-line utilities, but more importantly, X11 configuration and rule files. - mirrors://xorg/individual/util/gccmakedep-1.0.3.tar.bz2 - mirrors://xorg/individual/util/imake-1.0.7.tar.bz2 - mirrors://xorg/individual/util/lndir-1.0.3.tar.bz2 - mirrors://xorg/individual/util/makedepend-1.0.5.tar.bz2 - mirrors://xorg/individual/util/xorg-cf-files-1.0.5.tar.bz2 - - xorg-proto - - - host-defaults.patch - - system/devel/xorg-util/pspec.xml - - - xorg-util - - /usr/bin - /usr/share/X11/config - /usr/share/man - - - - - 2015-06-14 - 7.6 - Rebuild, fix deps. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-08-31 - 7.6 - Update. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 7.6 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-07 - 7.6 - Release bump - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2012-08-19 - 7.6 - First release - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - - - - make - http://www.gnu.org/software/make/make.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.devel - Standard tool to compile source trees - Geleneksel kaynak kod ağaçlarını derleme aracı - Herramienta estándar para compilación de arboles de fuentes - Outil standard de compilation de hiérarchie de sources. Make détermine ce qu'il faut faire pour construire votre programme à partir d'un fichier appelé makefile. Une fois votre programme écrit, il suffit d'éditer un makefile pour lui afin de pouvoir utiliser Make pour le compiler et l'installer. - Standard tool to compile source trees. Make gets its knowledge of how to build your program from a file called the makefile. When you write a program, you should write a makefile for it, so that it is possible to use Make to build and install the program - Geleneksel kaynak kod ağaçlarını derleme aracı. Make, programınızı nasıl derleyeceği konusundaki bilgiyi "makefile" dosyasından alır. Bir uygulama yazdığınızda bunun için "makefile" dosyasını da hazırlamalısınız ki uygulamanız derlenebilsin ve yüklenebilsin. - mirrors://gnu/make/make-4.1.tar.gz - - gettext - gnuconfig - patch - gc-devel - guile-devel - - system/devel/make/pspec.xml - - - make - - guile - - - /usr/bin - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/share/locale - /usr/include - - - - - 2016-02-28 - 4.1 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-02-21 - 4.1 - Version bump - denizgu - denizgu@users.noreply.github.com - - - 2014-05-11 - 4.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-23 - 4.0 - Cleanup, bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-10-24 - 3.82 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - flex - http://flex.sourceforge.net/ - - PisiLinux Community - admins@pisilinux.org - - FLEX - app:console - system.devel - GNU lexical analyser generator - GNU sözcüksel analiz üreteci - Flex est un outil de génération d'analyseur (scanner). Un analyseur (également appelé tokenizer en anglais) est un programme qui repère les motifs lexicaux (ou lexème) dans du texte. - Flex is a tool for generating scanners. A scanner, sometimes called a tokenizer, is a program which recognizes lexical patterns in text - Flex, metin içindeki sözcüksel kalıpları tanıyan, analiz aracı üretecidir. - mirrors://sourceforge/flex/flex-2.6.0.tar.gz - - patch - texinfo - - - flex-2.5.37-notex.patch - - system/devel/flex/pspec.xml - - - flex - - /usr/bin - /usr/lib - /usr/share/doc - /usr/share/man - /usr/share/info - /usr/include - /usr/share/locale - - - - - 2015-11-29 - 2.6.0 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-06-02 - 2.5.39 - Version bump. - Vedat Demir - vedat@pisilinux.org - - - 2014-05-11 - 2.5.38 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 2.5.38 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-08-28 - 2.5.37 - Clean flex. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-18 - 2.5.37 - v.bump - PisiLinux Community - admins@pisilinux.org - - - 2012-07-14 - 2.5.35 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - colorgcc - http://www.console-colors.de - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - system.devel - GCC output colorizer - GCC çıktısını renklendiren bir araç. - A tool that colorizes GCC output. - http://source.pisilinux.org/1.0/colorgcc-1.3.2.tar.gz - - colorgcc-1.3.2-handle-translated-output.patch - colorgcc-1.3.2-mdkconf.patch - add-i686-gnu-stuff.patch - - system/devel/colorgcc/pspec.xml - - - colorgcc - - gcc - - - /usr/bin - /usr/share/colorgcc - /etc - /usr/share/doc - - - colorgcc.sh - colorgcc.csh - - - - - 2014-01-21 - 1.3.2 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2011-02-28 - 1.3.2 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - libtool - http://www.gnu.org/software/libtool/libtool.html - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv2 - library - system.devel - A shared library tool for developers - Program geliştiriciler için ortak kütüphane aracı - Libtool est une librairie utilitaire partagée pour développeurs. - Libtool is a shared library tool for developers. - Libtool, program geliştiriciler için bir paylaşımlı kütüphane aracıdır. - mirrors://gnu/libtool/libtool-2.4.6.tar.xz - - gnuconfig - autoconf - automake - - system/devel/libtool/pspec.xml - - - libtool-ltdl - system.base - - /usr/lib - - - - libtool - - gnuconfig - - - /usr/bin - /lib - /usr/share/doc - /usr/share/info - /usr/share/man - /usr/include - /usr/share/libtool - /usr/share/aclocal - - - - libtool-ltdl-32bit - 32-bit shared libraries for libtool-ltdl - libtool için 32-bit paylaşımlı kitaplıklar - emul32 - emul32 - - glibc-32bit - - - libtool-ltdl - glibc-32bit - - - /usr/lib32 - - - - - 2016-02-06 - 2.4.6 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-11-28 - 2.4.2 - Rebuild for new gcc. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-09-12 - 2.4.2 - Rebuild for new gcc. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 2.4.2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-27 - 2.4.2 - Clean libtool. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-07-14 - 2.4.2 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - autogen - http://www.gnu.org/software/autogen - - PisiLinux Community - admins@pisilinux.org - - GPLv3 - app:console - system.devel - The automated text and program generation tool - Otomatik metin ve program üretme aracı - Herramienta para simplificar creación y mantenimiento de programas que contienen muchos textos repetitivos - autogen is a tool designed to simplify the creation and maintenance of programs that contain large amounts of repetitious text. - autogen büyük miktarda tekrarlı metin içeren uygulamaların otomatik üretilmesini sağlayan bir araçtır. - ftp://ftp.gnu.org/gnu/autogen/autogen-5.18.7.tar.xz - - gc-devel - gmp-devel - guile-devel - libxml2-devel - which - - system/devel/autogen/pspec.xml - - - autogen - - guile - libxml2 - - - /usr/lib - /usr/share/doc - /usr/share/man - /usr/bin - /usr/share/info - /usr/share/autogen - - - - autogen-devel - Development files for autogen - autogen için geliştirme dosyaları - - autogen - - - /usr/include - /usr/share/aclocal - /usr/lib/pkgconfig - /usr/share/man/man3 - /usr/bin/autoopts-config - /usr/share/man/man1/autoopts-config.1 - - - - - 2016-01-11 - 5.18.7 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-11-23 - 5.18.4 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-24 - 5.18 - Rebuild for gcc. - PisiLinux Community - admins@pisilinux.org - - - 2014-05-11 - 5.18 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-27 - 5.18 - Clean autogen. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-22 - 5.18 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-02-17 - 5.17.1 - New release - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-10-04 - 5.16.2 - First release - PisiLinux Community - admins@pisilinux.org - - - - - - grub2 - http://www.gnu.org/software/grub/ - - Serdar Soytetir - kaptan@pisilinux.org - - GPLv3 - app:gui - system.boot - GNU GRUB is a Multiboot boot loader. - GNU GRUB (short for GNU GRand Unified Bootloader) is a boot loader package from the GNU Project. - ftp://alpha.gnu.org/gnu/grub/grub-2.02~beta2.tar.xz - http://source.pisilinux.org/1.0/grub2_extras_915resolution_r10.tar.xz - http://ftp.gnu.org/gnu/unifont/unifont-6.3.20131217/unifont-6.3.20131217.bdf.gz - http://source.pisilinux.org/1.0/grub2-theme-pisilinux-0.2.tar.xz - - autogen - binutils - bison - flex - gcc - help2man - texinfo - freetype-devel - zlib-devel - ncurses-devel - xz-devel - fuse-devel - lvm2-devel - device-mapper-devel - gettext-devel - - - pisi_name_and_initramfs.patch - mkconfig-fix.patch - - system/boot/grub2/pspec.xml - - - grub2 - - freetype - xz - fuse - lvm2 - device-mapper - mtools - os-prober - - - /usr/bin - /usr/sbin - /usr/lib/grub/i386-pc/ - /usr/share/doc - /usr/share/grub - /usr/share/info - /boot/grub2 - /usr/share/locale - /usr/share/man/man1 - /usr/share/man/man8 - /etc/bash_completion.d - /etc/grub.d - /etc/default - - - pisi-grub-bg.png - grub-defaults - - - - - 2015-08-01 - 2.02_beta2 - Rebuild with new freetype. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-07-20 - 2.02_beta2 - New artwork. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-11 - 2.02_beta2 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-21 - 2.02_beta2 - Version bump - Marcin Bojara - marcin@pisilinux.org - - - 2013-12-31 - 2.00_5148 - Fix finding other distros. - Fix build with current freetype. - Marcin Bojara - marcin@pisilinux.org - - - 2013-09-02 - 2.00_5148 - Version bump - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-24 - 2.00 - Comment GRUB_GFXPAYLOAD_LINUX=keep out. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-07-28 - 2.00 - Fix deps. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-06-17 - 2.00 - Set default grub2 resolution to 1024x768 - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-03-03 - 2.00 - Add default Pisi Linux theme - Remove unneeded unifont dep - Manually create Dejavu pf2 fonts - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-02-09 - 2.00 - Enable splash again. - Serdar Soytetir - kaptan@pisilinux.org - - - 2012-11-28 - 2.00 - First release - Marcin Bojara - marcin@pisilinux.org - - - - - - os-prober - http://joey.kitenet.net/code/os-prober/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2+ - app:console - system.boot - Utility to detect other OSes on a set of drives - Narzędzie do wykrywania innych systemów operacyjnych na dyskach - os-probe detects other OSes available on a system and outputs the results in a generic machine-readable format. Support for new OSes and Linux distributions can be added easily. - os-prober wykrywa inne systemy operacyjne dostępne na komputerze i przekazuje rezultaty w standardowym, odczytywalnym maszynowo, formacie. - http://http.debian.net/debian/pool/main/o/os-prober/os-prober_1.65.tar.xz - system/boot/os-prober/pspec.xml - - - os-prober - - /usr/bin - /usr/lib - /var/lib/os-prober - /usr/share/os-prober - /usr/share/doc/os-prober - - - - - 2015-05-03 - 1.65 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-05-11 - 1.63 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-24 - 1.63 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-07-28 - 1.58 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-03 - 1.57 - First release - Erdinç Gültekin - admins@pisilinux.org - - - kernel @@ -22326,7 +567,32 @@ xmlto - patches/linux/patch-4.4.2.xz + patches/linux/patch-4.4.4.xz + patches/mageia/stable-use-d_seq-to-get-coherency-between-d_inode-and-d_flags.patch + patches/mageia/stable-drivers-sh-restore-legacy-clock-domain-on-superh-platforms.patch + patches/mageia/stable-btrfs-fix-deadlock-running-delayed-iputs-at-transaction-commit-time.patch + patches/mageia/stable-btrfs-fix-no_space-in-write-and-rm-loop.patch + patches/mageia/stable-btrfs-async-thread-fix-a-use-after-free-error-for-trace.patch + patches/mageia/stable-drm-amdgpu-mask-out-wc-from-bo-on-unsupported-arches.patch + patches/mageia/stable-block-initialize-max_dev_sectors-to-0.patch + patches/mageia/stable-pci-keystone-fix-msi-code-that-retrieves-struct-pcie_port-pointer.patch + patches/mageia/stable-parisc-fix-ptrace-syscall-number-and-return-value-modification.patch + patches/mageia/stable-mips-kvm-fix-ioctl-error-handling.patch + patches/mageia/stable-kvm-x86-update-tsc-multiplier-on-change.patch + patches/mageia/stable-fbcon-set-a-default-value-to-blink-interval.patch + patches/mageia/stable-cifs-fix-out-of-bounds-access-in-lease-parsing.patch + patches/mageia/stable-cifs-fix-smb2-interim-response-processing-for-read-requests.patch + patches/mageia/stable-fix-cifs_uniqueid_to_ino_t-function-for-s390x.patch + patches/mageia/stable-vfio-fix-ioctl-error-handling.patch + patches/mageia/stable-kvm-x86-fix-root-cause-for-missed-hardware-breakpoints.patch + patches/mageia/stable-arm-arm64-kvm-fix-ioctl-error-handling.patch + patches/mageia/stable-iommu-amd-apply-workaround-for-ats-write-permission-check.patch + patches/mageia/stable-iommu-amd-fix-boot-warning-when-device-00-00.0-is-not-iommu-covered.patch + patches/mageia/stable-iommu-vt-d-use-bus_notify_removed_device-in-hotplug-path.patch + patches/mageia/ata-Adding-Intel-Lewisburg-device-IDs-for-SATA.patch + patches/mageia/ata-ahci-don-t-mark-HotPlugCapable-Ports-as-external.patch + patches/mageia/libata-Align-ata_device-s-id-on-a-cacheline.patch + patches/mageia/libata-fix-HDIO_GET_32BIT-ioctl.patch patches/mageia/x86-pci-toshiba-equium-a60-assign-busses.patch patches/mageia/x86-boot-video-80x25-if-break.patch patches/mageia/x86-default_poweroff_up_machines.patch @@ -22348,13 +614,7 @@ patches/mageia/block-Make-CFQ-default-to-IOPS-mode-on-SSDs.patch patches/mageia/fs-aufs-4.4.patch patches/mageia/fs-aufs-4.4-modular.patch - patches/mageia/fs-ovl-allow-zero-size-xattr.patch - patches/mageia/fs-ovl-use-a-minimal-buffer-in-ovl_copy_xattr.patch patches/mageia/fs-ovl-move-super-block-magic-number-to-magic.h.patch - patches/mageia/fs-ovl-root-copy-attr.patch - patches/mageia/fs-ovl-setattr-check-permissions-before-copy-up.patch - patches/mageia/fs-ovl-check-dentry-positiveness-in-ovl_cleanup_whiteou.patch - patches/mageia/fs-xfs-Revert-xfs-clear-PF_NOFREEZE-for-xfsaild-kthread.patch patches/mageia/firewire-ieee1394-module-aliases.patch patches/mageia/char-agp-intel-new-Q57-id.patch patches/mageia/gpu-drm-mach64.patch @@ -22392,11 +652,6 @@ patches/mageia/gpu-drm-0109-drm-vc4-Add-an-interface-for-capturing-the-GPU-state.patch patches/mageia/gpu-drm-radeon-Update-radeon_get_vblank_counter_kms.patch patches/mageia/gpu-drm-radeon-Drop-unnecessary-unsigned-int-0-check.patch - patches/mageia/gpu-drm-No-Op-redundant-calls-to-drm_vblank_off-v2.patch - patches/mageia/gpu-drm-Prevent-vblank-counter-bumps-1-with-active-vblank-clients-v2.patch - patches/mageia/gpu-drm-Fix-drm_vblank_pre_post_modeset-regression-from-Linux-4.4.patch - patches/mageia/gpu-drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vblank_on-v2.patch - patches/mageia/gpu-drm_nouveau_display-Enable-vblank-irqs-after-display-engine-is-on-again.patch patches/mageia/input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch patches/mageia/net-sis190-fix-list-usage.patch patches/mageia/net-netfilter-IFWLOG.patch @@ -22514,9 +769,9 @@ security - 2016-02-18 - 4.4.2 - Version bump to 4.4.2 https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.2 + 2016-03-06 + 4.4.4 + Version bump to 4.4.4 https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.4.4 Ertuğrul Erata ertugrulerata@gmail.com @@ -24277,70 +2532,12 @@ Ertuğrul Erata ertugrulerata@gmail.com -<<<<<<< HEAD - - - - - elfutils - http://www.redhat.com/ - - PisiLinux Community - admins@pisilinux.org - - OpenSoftware - app:console - library - system.devel - Libraries/utilities to handle ELF objects - Derlenmiş objeleri işlemek için gereken aletler koleksiyonu - elfutils contains libraries and utilities to handle ELF objects and is a replacement for libelf. - elfutils derlenmiş objeleri işlemek için gereken çeşitli araçlar içerir. - https://fedorahosted.org/releases/e/l/elfutils/0.165/elfutils-0.165.tar.bz2 - - bzip2 - xz-devel - zlib-devel - - system/devel/elfutils/pspec.xml - - - elfutils - - xz - zlib - bzip2 - libgcc - - - /usr/bin - /usr/lib - /usr/share/doc - /usr/include - - - - - 2016-01-28 - 0.165 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2015-04-09 - 0.161 - Version bump. - Ayhan Yalçınsoy - ayhanyalcinsoy@pisilinux.org -======= 2015-03-01 4.3.20 Rebuild for kernel 3.19.0 Ertuğrul Erata ertugrulerata@gmail.com ->>>>>>> master 2015-01-28 @@ -24739,6 +2936,801 @@ + + + module-bbswitch + https://github.com/Bumblebee-Project/bbswitch + + Serdar Soytetir + kaptan@pisilinux.org + + GPL + app:gui + kernel.drivers + Kernel module allowing to switch dedicated graphics card on Optimus laptops + Optimus grafik kartlı bir dizüstü bilgisayarda grafik kartını seçmeye yarayan çekirdek modülüdür. + kernel module allowing to switch dedicated graphics card on Optimus laptops + Eski ve yeni optimus teknolojisine sahip dizüstü bilgisyarlarda çalışabilmektedir. + https://github.com/Bumblebee-Project/bbswitch/archive/v0.8.tar.gz + + kernel-module-headers + + kernel/drivers/module-bbswitch/pspec.xml + + + module-bbswitch + + kernel + + + /lib/modules + /etc + /usr/share/doc + + + bbswitch.conf + kmod-bbswitch.conf + + + + + 2016-02-03 + 0.8 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-16 + 0.8 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-12-13 + 0.8 + Rebuild for kernel-4.3.2. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-12-01 + 0.8 + Rebuild for kernel-4.3.0. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-11-11 + 0.8 + Rebuild for kernel-4.2.6. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-11-30 + 0.8 + Rebuild for kernel-4.2.5. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-11-27 + 0.8 + Rebuild for kernel-4.2.4. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-05 + 0.8 + Rebuild for kernel-4.2.3. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-01 + 0.8 + Rebuild for kernel-4.2.2. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-09-23 + 0.8 + Rebuild for kernel-4.1.8. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-09-18 + 0.8 + Rebuild for kernel-4.1.7. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-18 + 0.8 + Rebuild for kernel-4.1.6. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-13 + 0.8 + Rebuild for kernel-4.1.5. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-07-23 + 0.8 + Rebuild for kernel-4.1.3. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-07-20 + 0.8 + Rebuild for kernel-4.1.2. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-07-13 + 0.8 + Rebuild for kernel-4.0.8. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-30 + 0.8 + Rebuild for kernel-4.0.7. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-24 + 0.8 + Rebuild for kernel-4.0.6. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-16 + 0.8 + Rebuild for new kernel + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-22 + 0.8 + Rebuild for kernel 3.19.8 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-05 + 0.8 + Rebuild for kernel 3.19.6 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-24 + 0.8 + Rebuild for kernel 3.19.5 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-16 + 0.8 + Rebuild for kernel 3.19.4 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-02 + 0.8 + Rebuild for kernel 3.19.3 + Hakan Yıldız + hknyldz93@gmail.com + + + 2015-03-08 + 0.8 + Rebuild for kernel 3.19.1 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-01 + 0.8 + Rebuild for kernel 3.19.0 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-01-28 + 0.8 + Rebuild for kernel 3.18.3 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-01-09 + 0.8 + Rebuild for kernel 3.18.1 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-11-29 + 0.8 + Rebuild for kernel 3.17.4 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-10-18 + 0.8 + Rebuild for kernel 3.17.1 + Kamil Atlı + suvari@pisilinux.org + + + 2014-09-19 + 0.8 + Rebuild for kernel 3.16.3 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-03 + 0.8 + Rebuild for kernel 3.16.1 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-07-24 + 0.8 + Rebuild for kernel 3.15.6 + Vedat Demir + vedat@pisilinux.org + + + 2014-06-15 + 0.8 + Rebuild for kernel 3.15.0 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-29 + 0.8 + Rebuild for kernel 3.14.4. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-02 + 0.8 + Rebuild for kernel 3.14.2. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-04-15 + 0.8 + Rebuild for kernel 3.13.10. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-03-29 + 0.8 + Rebuild for kernel 3.13.6. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-09 + 0.8 + First release. + Marcin Bojara + marcin@pisilinux.org + + + + + + module-virtualbox-guest + http://www.virtualbox.org + + Ertuğrul Erata + ertugrulerata@gmail.com + + GPLv2 + driver + kernel.drivers + Kernel modules for VirtualBox guest machines + VirtualBox misafir makineleri için çekirdek modülleri + This package provides the kernel modules needed for mouse integration and shared folder support between VirtualBox host and guest systems. + Bu paket VirtualBox sunucu makinesi ile misafir sistemler arası fare entegrasyonu ve paylaşımlı dizin desteği için gerekli çekirdek modüllerini içerir. + http://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-guest-5.0.12.tar.xz + + kernel-module-headers + + kernel/drivers/module-virtualbox-guest/pspec.xml + + + module-virtualbox-guest + + noDelta + + + kernel + baselayout + module-virtualbox-guest-userspace + + + /lib/modules + + + + module-virtualbox-guest-userspace + Userspace documentation, tools, udev and modprobe rules for the kernel driver virtualbox-guest + virtualbox-guest çekirdek sürücüsü için kullanıcı tarafı belgeler, araçlar, udev ve modprobe kuralları + + noDelta + + + /etc/conf.d + /lib/udev/rules.d + /lib/udev/vbox-guest.sh + + + virtualbox-guest.conf + vbox-guest.sh + 48-vbox-guest.rules + + + + + 2016-02-03 + 5.0.12 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-16 + 5.0.12 + Rebuild + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-12-30 + 5.0.12 + Verbump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-12-13 + 5.0.4 + Rebuild for kernel-4.3.2. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-12-01 + 5.0.4 + Rebuild for kernel-4.3.0. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-11-11 + 5.0.4 + Rebuild for kernel-4.2.6. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-11-30 + 5.0.4 + Rebuild for kernel-4.2.5. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-11-27 + 5.0.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-05 + 4.3.28 + Rebuild for kernel-4.2.3. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-01 + 4.3.28 + Rebuild for kernel-4.2.2. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-23 + 4.3.28 + Rebuild for kernel-4.1.8. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-18 + 4.3.28 + Rebuild for kernel-4.1.7. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-13 + 4.3.28 + Rebuild for kernel-4.1.5. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-07-23 + 4.3.28 + Rebuild for kernel-4.1.3. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-07-20 + 4.3.28 + Rebuild for kernel-4.1.2. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-07-13 + 4.3.28 + Rebuild for kernel-4.0.8. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-24 + 4.3.28 + Rebuild for kernel-4.0.7. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-24 + 4.3.28 + Rebuild for kernel-4.0.6. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-09 + 4.3.28 + Version Bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-14 + 4.3.20 + Rebuild for kernel 3.19.8 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-05 + 4.3.20 + Rebuild for kernel 3.19.6 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-24 + 4.3.20 + Rebuild for kernel 3.19.5 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-16 + 4.3.20 + Rebuild for kernel 3.19.4 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-02 + 4.3.20 + Rebuild for kernel 3.19.3 + Hakan Yıldız + hknyldz93@gmail.com + + + 2015-03-08 + 4.3.20 + Rebuild for kernel 3.19.1 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-01 + 4.3.20 + Rebuild for kernel 3.19.0 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-01-28 + 4.3.20 + Rebuild for kernel 3.18.3 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-01-09 + 4.3.20 + Version bump, kernel 3.18.1 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-11-29 + 4.3.18 + Version bump, kernel 3.17.4 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-10-19 + 4.3.18 + Version bump, kernel 3.17.1 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-19 + 4.3.16 + Version bump, kernel 3.16.3 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-03 + 4.3.14 + Rebuild for kernel 3.16.1 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-07-24 + 4.3.14 + Version bump for kernel 3.15.6 + Vedat Demir + vedatn@pisilinux.org + + + 2014-06-15 + 4.3.10 + Rebuild for kernel 3.15.0 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-29 + 4.3.10 + Rebuild for kernel 3.14.4. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-02 + 4.3.10 + Rebuild for kernel 3.14.2. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-04-15 + 4.3.10 + Rebuild for kernel 3.13.10. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-04-07 + 4.3.10 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 4.3.8 + Rebuild for 3.13.6 + PisiLinux Community + admins@pisilinux.org + + + 2014-03-09 + 4.3.8 + Rebuild for 3.12.13 + PisiLinux Community + admins@pisilinux.org + + + 2014-03-01 + 4.3.8 + Rebuild for 3.12.13 + PisiLinux Community + admins@pisilinux.org + + + 2014-01-17 + 4.3.6 + Rebuild for 3.12.8 + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-12-21 + 4.3.6 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-12-17 + 4.3.2 + Rebuild for 3.12.5 + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-12-12 + 4.3.2 + Rebuild for 3.12.5 + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-23 + 4.3.2 + Rebuild for 3.10.20 + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-11 + 4.3.2 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-05 + 4.2.18 + Rebuild for 3.10.18 + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-10 + 4.2.18 + version bump + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-09-28 + 4.2.16 + 3.10.13 + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-09-18 + 4.2.16 + 3.10.12 + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-08-30 + 4.2.16 + 3.10.10 + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-08-20 + 4.2.16 + 3.10.9 + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-08-20 + 4.2.16 + Kernel 3.10.6 + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-07-06 + 4.2.16 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-01 + 4.2.12 + Kernel 3.8.13 + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-06-01 + 4.2.12 + Kernel 3.9.4 + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-05-04 + 4.2.12 + Update + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-14 + 4.2.12 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-02 + 4.2.8 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-22 + 4.2.6 + First release + Marcin Bojara + marcin@pisilinux.org + + + module-broadcom-wl @@ -24747,15 +3739,6 @@ Serdar Soytetir kaptan@pisilinux.org -<<<<<<< HEAD - GPLv2+ - app:console - library - system.devel - Chunky Loop Generator - cloog is CLooG is a free software and library to generate code for scanning Z-polyhedra. It is used by the GCC Graphite optimization framework. - http://www.bastoul.net/cloog/pages/download/cloog-0.18.4.tar.gz -======= freedist driver kernel.drivers @@ -24765,13 +3748,9 @@ Bu paket Broadcom'un BCM4311, BCM4312, BCM4321 ve BCM4322 tabanlı kablosuz bağdaştırıcıları ile kullanımı için IEEE 802.11a/b/g/n aygıt sürücülerini içerir. Bu yazılımı kullanmadan önce belgeler dizinindeki LICENSE.txt dosyasında yer alan lisans sözleşmesini okumalısınız. http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_248.tar.gz http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_248.tar.gz ->>>>>>> master kernel-module-headers -<<<<<<< HEAD - system/devel/cloog/pspec.xml -======= patch/linux-40.patch patch/linux-recent.patch @@ -24782,7 +3761,6 @@ patch/0018-cfg80211_disconnected.patch kernel/drivers/module-broadcom-wl/pspec.xml ->>>>>>> master module-broadcom-wl @@ -24801,20 +3779,12 @@ -<<<<<<< HEAD - cloog-devel - Development files for cloog - - cloog - -======= module-broadcom-wl-userspace modprobe rules and documents for broadcom-wl kernel driver broadcom-wl çekirdek sürücüsü için modprobe kuralları ve belgeler noDelta ->>>>>>> master /etc/modprobe.d /usr/share/doc @@ -24826,28 +3796,12 @@ -<<<<<<< HEAD - - 2016-01-27 - 0.18.4 - Version bump - Alihan Öztürk - alihan@pisilinux.org - - - 2014-09-06 - 0.18.1 - Rebuild for new isl and new toolchain. - Serdar Soytetir - kaptan@pisilinux.org -======= 2016-02-03 6.30.223.248 Version bump. Ertuğrul Erata ertugrulerata@gmail.com ->>>>>>> master 2016-01-16 @@ -25252,310 +4206,18759 @@ - module-virtualbox-guest - http://www.virtualbox.org + slang + http://www.jedsoft.org/slang/ - Ertuğrul Erata - ertugrulerata@gmail.com + PisiLinux Community + admins@pisilinux.org GPLv2 - driver - kernel.drivers - Kernel modules for VirtualBox guest machines - VirtualBox misafir makineleri için çekirdek modülleri - This package provides the kernel modules needed for mouse integration and shared folder support between VirtualBox host and guest systems. - Bu paket VirtualBox sunucu makinesi ile misafir sistemler arası fare entegrasyonu ve paylaşımlı dizin desteği için gerekli çekirdek modüllerini içerir. - http://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-guest-5.0.12.tar.xz + Artistic + app:console + programming.library + Console display library used by most text viewer + Bir çok metin gösterici yazılım tarfından kullanılan konsol görüntüleme kütüphanesi + S-Lang est une librarie de programmation multi-plateforme conçue pour permettre aux développeur de développer des logiciels robustes et portables. Elle fournit les mécanismes requis pour développer une application interactive telle que la gestion d'affichages/écrans, entrées clavier, disposition de touches et ainsi de suite. La fonctionnalité la plus attractive de cette librairie reste l'interpréteur slang qui peut être embarqué au sein même d'un programme pour le rendre extensible. + S-Lang is a multi-platform programmer's library designed to allow a developer to create robust multi-platform software. It provides facilities required by interactive applications such as display/screen management, keyboard input, keymaps, and so on. The most exciting feature of the library is the slang interpreter that may be easily embedded into a program to make it extensible. + S-lang, yazılım geliştiricilerin bütün işletim sistemlerinde çalışabilen güçlü uygulamalar geliştirmesine yardımcı olan bir uygulama kitaplığıdır. İnteraktif uygulamalar için ekran yönetimi ve klavye girişi gibi araçlar sunar. Kitaplığın en ilginç özelliği programların içine kolayca gömülebilen ve programı genişletilebilir kılan slang yorumlayıcısıdır. + ftp://ftp.ntua.gr/pub/lang/slang/slang/v2.2/slang-2.2.4.tar.bz2 - kernel-module-headers + libpng-devel + libpcre-devel + ncurses-devel + readline-devel + zlib-devel - kernel/drivers/module-virtualbox-guest/pspec.xml + programming/library/slang/pspec.xml - module-virtualbox-guest - - noDelta - + slang - kernel - baselayout - module-virtualbox-guest-userspace + libpng + libpcre + zlib - /lib/modules + /etc + /usr/bin + /usr/share/slsh + /usr/lib + /usr/share/doc/slang + /usr/share/man - module-virtualbox-guest-userspace - Userspace documentation, tools, udev and modprobe rules for the kernel driver virtualbox-guest - virtualbox-guest çekirdek sürücüsü için kullanıcı tarafı belgeler, araçlar, udev ve modprobe kuralları - - noDelta - + slang-devel + Development files for slang + slang için geliştirme dosyaları + system.devel + + slang + - /etc/conf.d - /lib/udev/rules.d - /lib/udev/vbox-guest.sh + /usr/include + /usr/lib/pkgconfig + /usr/share/doc/slang/html + /usr/share/man/man3 + + + + + 2014-05-11 + 2.2.4 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-31 + 2.2.4 + rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-08-23 + 2.2.4 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + docbook-xml + http://www.docbook.org/xml/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + data + office.docbook + Docbook XML DTD + Docbook XML DTD + Contains Docbook DTD for XML. A widely used XML scheme for writing documentation and help + Docbook XML belirtimi (DTD) sürümlerini içerir. + https://www.oasis-open.org/docbook/xml/4.1.2/docbkx412.zip + https://www.oasis-open.org/docbook/xml/4.1/docbkx41.zip + https://www.oasis-open.org/docbook/xml/4.2/docbook-xml-4.2.zip + https://www.oasis-open.org/docbook/xml/4.3/docbook-xml-4.3.zip + https://www.oasis-open.org/docbook/xml/4.4/docbook-xml-4.4.zip + https://www.oasis-open.org/docbook/xml/4.5/docbook-xml-4.5.zip + http://www.docbook.org/xml/5.0/docbook-5.0.zip + office/docbook/docbook-xml/pspec.xml + + + docbook-xml + + sgml-common + libxml2 + + + /usr/share/doc/ + /usr/share/xml + /etc/xml/docbook + /etc/xml/catalog - virtualbox-guest.conf - vbox-guest.sh - 48-vbox-guest.rules + docbook + catalog - - 2016-02-03 - 5.0.12 + + 2016-03-25 + 5.0 Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com + Alihan Öztürk + alihan@pisilinux.org - - 2016-01-16 - 5.0.12 + + 2014-11-17 + 4.5 Rebuild - Ertuğrul Erata - ertugrulerata@gmail.com + Stefan Gronewold(groni) + groni@pisilinux.org - - 2015-12-30 - 5.0.12 - Verbump. - Ertuğrul Erata - ertugrulerata@gmail.com + + 2014-05-18 + 4.5 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org - - 2015-12-13 - 5.0.4 - Rebuild for kernel-4.3.2. - Ertuğrul Erata - ertugrulerata@gmail.com + + 2014-01-22 + 4.5 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org - - 2015-12-01 - 5.0.4 - Rebuild for kernel-4.3.0. - Ertuğrul Erata - ertugrulerata@gmail.com + + 2011-09-16 + 4.5 + First release + Pisi Linux Admins + admins@pisilinux.org - - 2015-11-11 - 5.0.4 - Rebuild for kernel-4.2.6. - Ertuğrul Erata - ertugrulerata@gmail.com + + + + + docbook-xsl + http://wiki.docbook.org/topic/DocBookXslStylesheets + + PisiLinux Community + admins@pisilinux.org + + BSD + data + office.docbook + Norman Walsh's XSL stylesheets for DocBook XML + Docbook XSL biçemyaprakları + These XSL stylesheets allow you to transform any DocBook XML document to other formats such as HTML, FO and XHTML. + Docbook XSL biçemyapraklarını (stylesheets) içerir. + http://sourceforge.net/projects/docbook/files/docbook-xsl/1.79.1/docbook-xsl-1.79.1.tar.bz2 + + Makefile + + + docbook-xsl-pagesetup.patch + docbook-xsl-newmethods.patch + docbook-xsl-non-constant-expressions.patch + docbook-xsl-list-item-body.patch + + office/docbook/docbook-xsl/pspec.xml + + + docbook-xsl + + docbook-xml + + + /usr/share/doc/docbook-xsl + /usr/share/xml + + + System.Package + + + + + 2015-03-05 + 1.79.1 + Version bump + Alihan Öztürk + alihan@pisilinux.org - - 2015-11-30 - 5.0.4 - Rebuild for kernel-4.2.5. - Ertuğrul Erata - ertugrulerata@gmail.com + + 2014-11-17 + 1.78.1 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org - - 2015-11-27 - 5.0.4 + + 2014-05-18 + 1.78.1 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-01-22 + 1.78.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-10-10 + 1.77.1 + First release + Erdem Artan + admins@pisilinux.org + + + + + + sgml-common + http://www.linuxfromscratch.org/blfs/view/svn/pst/sgml-common.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + data + office.docbook + Base ISO character entities and utilities for SGML + SGML ISO karakter nesneleri ve yardımcı programları + Sgml-common is a collection of entities and document type definitions (DTDs) useful for SGML processing. + sgml-common SGML uygulamaları için kullanışlı olan içerikler ve belge tip belirtimleri (DTD) topluluğudur. + http://gd.tuwien.ac.at/hci/kde/devel/docbook/SOURCES/sgml-common-0.6.3.tgz + + sgml-common-0.6.3-configure.in.patch + sgml-common-0.6.3-manpage-1.patch + + office/docbook/sgml-common/pspec.xml + + + sgml-common + + /etc/sgml + /usr/bin + /usr/share/doc/sgml-common + /usr/share/man + /usr/share/sgml + + + System.Package + + + + + 2014-05-18 + 0.6.3 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-10-13 + 0.6.3 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + xmlto + https://fedorahosted.org/xmlto/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + app:console + office.docbook + A frontend to an XSL toolchain + XML ve DocBook için dönüşüm aracı + The purpose of xmlto is to convert an XML file to the desired format using whatever means necessary. + xmlto uygulamasının amacı verilen bir XML dosyasını istenen bir biçime dönüştürmektir. + https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.28.tar.gz + + libxslt + util-linux + docbook-xsl + docbook-xml + + office/docbook/xmlto/pspec.xml + + + xmlto + + docbook-xsl + docbook-xml + + + /usr/bin + /usr/share/doc/xmlto + /usr/share/xmlto + /usr/share/man + + + + + 2016-03-05 + 0.0.28 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-05-18 + 0.0.26 + Version bump. + Richard de Bruin + richdb@pisilinux.org + + + 2014-01-18 + 0.0.25 + Rebuild for 1.0 + Richard de Bruin + richdb@pisilinux.org + + + 2012-09-17 + 0.0.25 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + os-prober + http://joey.kitenet.net/code/os-prober/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + app:console + system.boot + Utility to detect other OSes on a set of drives + Narzędzie do wykrywania innych systemów operacyjnych na dyskach + os-probe detects other OSes available on a system and outputs the results in a generic machine-readable format. Support for new OSes and Linux distributions can be added easily. + os-prober wykrywa inne systemy operacyjne dostępne na komputerze i przekazuje rezultaty w standardowym, odczytywalnym maszynowo, formacie. + http://http.debian.net/debian/pool/main/o/os-prober/os-prober_1.65.tar.xz + system/boot/os-prober/pspec.xml + + + os-prober + + /usr/bin + /usr/lib + /var/lib/os-prober + /usr/share/os-prober + /usr/share/doc/os-prober + + + + + 2015-05-03 + 1.65 Version bump. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-10-05 - 4.3.28 - Rebuild for kernel-4.2.3. + + 2014-05-11 + 1.63 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-24 + 1.63 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-28 + 1.58 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-03 + 1.57 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + grub2 + http://www.gnu.org/software/grub/ + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv3 + app:gui + system.boot + GNU GRUB is a Multiboot boot loader. + GNU GRUB (short for GNU GRand Unified Bootloader) is a boot loader package from the GNU Project. + ftp://alpha.gnu.org/gnu/grub/grub-2.02~beta2.tar.xz + http://source.pisilinux.org/1.0/grub2_extras_915resolution_r10.tar.xz + http://ftp.gnu.org/gnu/unifont/unifont-6.3.20131217/unifont-6.3.20131217.bdf.gz + http://source.pisilinux.org/1.0/grub2-theme-pisilinux-0.2.tar.xz + + autogen + binutils + bison + flex + gcc + help2man + texinfo + freetype-devel + zlib-devel + ncurses-devel + xz-devel + fuse-devel + lvm2-devel + device-mapper-devel + gettext-devel + + + pisi_name_and_initramfs.patch + mkconfig-fix.patch + + system/boot/grub2/pspec.xml + + + grub2 + + freetype + xz + fuse + lvm2 + device-mapper + mtools + os-prober + + + /usr/bin + /usr/sbin + /usr/lib/grub/i386-pc/ + /usr/share/doc + /usr/share/grub + /usr/share/info + /boot/grub2 + /usr/share/locale + /usr/share/man/man1 + /usr/share/man/man8 + /etc/bash_completion.d + /etc/grub.d + /etc/default + + + pisi-grub-bg.png + grub-defaults + + + + + 2015-08-01 + 2.02_beta2 + Rebuild with new freetype. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-10-01 - 4.3.28 - Rebuild for kernel-4.2.2. + + 2014-07-20 + 2.02_beta2 + New artwork. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 2.02_beta2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-21 + 2.02_beta2 + Version bump + Marcin Bojara + marcin@pisilinux.org + + + 2013-12-31 + 2.00_5148 + Fix finding other distros. + Fix build with current freetype. + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-02 + 2.00_5148 + Version bump + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-24 + 2.00 + Comment GRUB_GFXPAYLOAD_LINUX=keep out. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-28 + 2.00 + Fix deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-06-17 + 2.00 + Set default grub2 resolution to 1024x768 + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-03-03 + 2.00 + Add default Pisi Linux theme + Remove unneeded unifont dep + Manually create Dejavu pf2 fonts + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-09 + 2.00 + Enable splash again. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-11-28 + 2.00 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + perl + http://www.perl.org/ + + PisiLinux Community + admins@pisilinux.org + + Artistic + GPLv2 + app:console + system.base + Larry Wall's Practical Extraction and Reporting Language + Perl dili + Perl est un langage de programmation multi-plateforme stable. + Perl is a high-level programming language with roots in C, sed, awk and shell scripting. Perl is good at handling processes and files, and is especially good at handling text. Perl's hallmarks are practicality and efficiency. While it is used to do a lot of different things, Perl's most common applications are system administration utilities and web programming. A large proportion of the CGI scripts on the web are written in Perl. You need the perl package installed on your system so that your system can handle Perl scripts. + Perl kararlı, platform bağımsız programlama dilidir. + Perl ist eine stabile, plattformunabhängige Programmiersprache + http://www.cpan.org/src/5.0/perl-5.22.1.tar.bz2 + + db-devel + gdbm-devel + zlib-devel + + + perl-5.10.0-x86_64-io-test-failure.patch + perl-5.14.1-offtest.patch + + system/base/perl/pspec.xml + + + perl-docs + Documentation files for perl + programming.language.perl + + /usr/share/doc/html + /usr/share/doc/perl/html + /usr/share/man/ + + + + perl + + db + gdbm + zlib + + + /usr/bin + /usr/lib + /usr/share/doc + + + Turkish.pm + + + + + 2016-03-01 + 5.22.1 + Version bump. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-08-23 - 4.3.28 - Rebuild for kernel-4.1.8. + + 2014-09-10 + 5.20.0 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 5.18.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-28 + 5.18.1 + Version bump, clean perl. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-26 + 5.16.2 + Release bump, rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-19 + 5.16.2 + First release + PisiLinux Community + admins@pisilinux.org + + + 2012-09-06 + 5.16.1 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + perl-Locale-gettext + http://search.cpan.org/dist/gettext + + PisiLinux Community + admins@pisilinux.org + + Artistic + library + system.base + A Perl module for accessing the GNU locale utilities + GNU yerel araçlarına erişim için Perl modülü + The gettext module permits access from Perl to the gettext() family of functions for retrieving message strings from databases constructed to internationalize software. + Bu modül, çoklu dil desteğini sağlayan gettext() ailesine Perl üzerinden erişimi sağlar. + El módulo gettext permite Perl acceder a la familia de funciones gettext() para obtener cadenas de mensajes (traducidos) desde bases de datos para la internacionalización de software. + http://search.cpan.org/CPAN/authors/id/P/PV/PVANDRY/gettext-1.07.tar.gz + + perl + + system/base/perl-Locale-gettext/pspec.xml + + + perl-Locale-gettext + + perl + + + /usr/lib + /usr/share/perl + /usr/share/doc + /usr/share/man + + + + + 2016-03-03 + 1.07 + Version bump. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-08-18 - 4.3.28 - Rebuild for kernel-4.1.7. + + 2014-09-10 + 1.05 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 1.05 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-04 + 1.05 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-07 + 1.05 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + pypolkit + http://www.pisilinux.org + + PisiLinux Community + admins@pisilinux.org + + MIT + library + system.base + Python binding of PolicyKit + PolicyKit için Python bağlayıcısı + pypolkit is a Python binding for the PolicyKit library. + pypolkit PolicyKit için geliştirilmiş bir Python bağlayıcısıdır. + http://source.pisilinux.org/1.0/pypolkit-1.0.2.tar.gz + + glib2-devel + python-devel + polkit-devel + + system/base/pypolkit/pspec.xml + + + pypolkit + + glib2 + polkit + python + + + /usr/lib + /usr/share/doc + + + + + 2015-07-22 + 1.0.2 + Rebuild. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-08-13 - 4.3.28 - Rebuild for kernel-4.1.5. + + 2014-05-11 + 1.0.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-01 + 1.0.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-30 + 1.0.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-11-26 + 1.0.2 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libestr + http://libestr.adiscon.com + + Marcin Bojara + marcin@pisilinux.org + + LGPLv2.1 + library + system.base + Library for some string essentials + libestr - some essentials for string handling (and a bit more) + http://libestr.adiscon.com/files/download/libestr-0.1.9.tar.gz + system/base/libestr/pspec.xml + + + libestr + + /usr/lib/libestr.so* + /usr/share/doc/libestr + + + + libestr-devel + Development files for libestr + system.devel + + libestr + + + /usr/include/libestr.h + /usr/lib/pkgconfig/libestr.pc + + + + + 2014-05-11 + 0.1.9 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 0.1.9 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-11-21 + 0.1.4 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + zip + http://www.info-zip.org/Zip.html + + PisiLinux Community + admins@pisilinux.org + + Info-ZIP + app:console + system.base + Info ZIP (encryption support) + ZIP programı (şifreleme desteği ile birlikte) + Zip est un outil de compression et d'archivage/packaging. Zip est utile pour distribuer un ensemble de fichier sous forme de paquets, et pour sauvegarder de l'espace disque en compressant temporairement les fichiers et répertoires inutilisés. + Zip is a compression and file packaging/archive utility. Zip is useful for packaging a set of files for distribution, for archiving files, and for saving disk space by temporarily compressing unused files or directories. + Zip bir sıkıştırma ve dosya paketleme/arşivleme uygulamasıdır. Zip dosyaları dağıtmak, arşivlemek ve kullanılmayan dosyaları ve dizinleri geçici olarak sıkıştırarak disk boşluğundan tasarruf için kullanılabilecek kullanışlı bir uygulamadır. + mirrors://sourceforge/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz + system/base/zip/pspec.xml + + + zip + + bzip2 + + + /usr/bin + /usr/share/doc + /usr/share/man + + + + + 2016-03-02 + 3.0 + Rebuild. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-07-23 - 4.3.28 - Rebuild for kernel-4.1.3. + + 2014-10-01 + 3.0 + Cleanup,rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 3.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 3.0 + rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-26 + 3.0 + Release bump for rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-10-11 + 3.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + pciutils + http://atrey.karlin.mff.cuni.cz/~mj/pciutils.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Various utilities dealing with the PCI bus + PCI veriyolu işlevleri ile ilgili çeşitli programlar + Les utilitaires PCI sont une collection de programmes d'inspection et de manipulation de la configuration des périphériques PCI. + The PCI Utilities are a collection of programs for inspecting and manipulating configuration of PCI devices. + Pakette bulunan PCI araçları, PCI veriyolunu kullanan donanımlarınızın görüntülenmesi ve ayarlanması işlevini yürütür. + ftp://ftp.kernel.org/pub/software/utils/pciutils/pciutils-3.4.1.tar.xz + + pci.ids + + + pciutils-nogz.patch + pciutils-remove-update-pciids.patch + makefile.patch + + system/base/pciutils/pspec.xml + + + pciutils + + zlib + eudev + libkmod + + + /usr/sbin + /usr/lib + /usr/share/man + /usr/share/misc + + + + pciutils-devel + Development files for pciutils + pciutils için geliştirme dosyaları + system.devel + + pciutils + + + /usr/lib/pkgconfig + /usr/include + + + + + 2016-03-03 + 3.4.1 + pci.ids update. + Alihan Öztürk + alihan@pisilinux.org + + + 2016-01-03 + 3.4.1 + Version bump. + Kamil Alı + suvari@pisilinux.org + + + 2014-05-11 + 3.2.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-03 + 3.2.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-30 + 3.1.10 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-10-05 + 3.1.10 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libgcrypt + http://www.gnupg.org/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + system.base + Librairie générale de cryptographie basée sur le code utilisé dans GnuPG. + General purpose crypto library + Genel amaçlı bir şifreleme kitaplığı + Libgcrypt is a general purpose crypto library based on the code used in GNU Privacy Guard. + Libgcrypt, GNU Privacy Guard kodunu temel alan genel amaçlı bir şifreleme kitaplığıdır. + http://source.pisilinux.org/1.0/libgcrypt-1.6.3.tar.bz2 + + libgpg-error-devel + + system/base/libgcrypt/pspec.xml + + + libgcrypt + + libgpg-error + + + /usr/lib + /usr/share/man + /usr/share/doc + /etc/gcrypt + /usr/bin + /usr/share/info + + + + libgcrypt-devel + Development files for libgcrypt + libgcrypt için geliştirme dosyaları + system.devel + + libgcrypt + libgpg-error-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/share/aclocal + /usr/lib32/pkgconfig + /usr/bin/*-config + + + + libgcrypt-32bit + 32-bit shared libraries for libgcrypt + libgcrypt için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + libgpg-error-32bit + glibc-32bit + + + libgpg-error-32bit + glibc-32bit + libgcrypt + + + /usr/lib32 + + + + + 2015-04-13 + 1.6.3 + Version bump. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-07-20 - 4.3.28 - Rebuild for kernel-4.1.2. + + 2014-05-11 + 1.6.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-03 + 1.6.1 + Version bump. + PisiLinux Community + admins@pisilinux.org + + + 2011-05-03 + 1.5.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + gzip + http://www.gnu.org/software/gzip + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + LGPLv2.1 + app:console + system.base + Standard GNU compressor + GNU dosya arşiv aracı + gzip (GNU zip) est un programme populaire de compression de donnée écrit pour le projet GNU. + gzip (GNU zip) is a popular data compression program written for the GNU project. + Gzip (GNU zip) GNU projesi için geliştirilmiş popüler bir veri sıkıştırma programıdır. + http://ftp.gnu.org/gnu/gzip/gzip-1.6.tar.xz + system/base/gzip/pspec.xml + + + gzip + + /bin + /usr/share/doc + /usr/share/man + /usr/share/info + + + + + 2016-02-28 + 1.6 + Rebuild. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-07-13 - 4.3.28 - Rebuild for kernel-4.0.8. + + 2014-05-11 + 1.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 1.6 + Version bumm, clean gzip. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-08-23 + 1.5 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + grep + http://www.gnu.org/software/grep/grep.html + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + app:console + system.base + GNU regular expression matcher + Grep düzenli ifade eşleme aracı + La commande grep recherche dans un ou plusieurs fichiers les lignes correspondant à un motif défini. Par défaut grep affiche les lignes éligibles. + The grep command searches one or more input files for lines containing a match to a specified pattern. By default, grep prints the matching lines. + Grep komutu bir veya daha fazla verilen dosyada aranan parçayı bulmaya yarayan bir programdır. Ön tanımlı olarak grep eşleşen satırları çıktıya verir. + ftp://mirrors.kernel.org/gnu/grep/grep-2.23.tar.xz + + gettext + libpcre-devel + + system/base/grep/pspec.xml + + + grep + + libpcre + + + /bin + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/locale + + + + + 2016-02-28 + 2.23 + Rebuild with new toolchain. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-06-24 - 4.3.28 - Rebuild for kernel-4.0.7. + + 2015-11-07 + 2.22 + Version bump. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-06-24 - 4.3.28 - Rebuild for kernel-4.0.6. + + 2015-06-05 + 2.21 + Version bump. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-06-09 - 4.3.28 + + 2014-06-04 + 2.20 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 2.18 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 2.18 + Version bump + PisiLinux Community + admins@pisilinux.org + + + 2013-10-27 + 2.15 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-22 + 2.14 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-10-11 + 2.14 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + comar-api + http://www.pisilinux.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + Utility functions for Comar scripts + Çomar betikleri için yardımcı fonksiyonlar + Librairie utilitaire générique pour les opérations communes de scripts Comar. + Generic utility library for common Comar script operations. + Çomar betiklerinde sıkça yapılan ortak işlemler için yardımcı fonksiyonlar kitaplığı. + http://source.pisilinux.org/1.0/comar-api-2.4.9.tar.gz + + python + + + run_dir.patch + pisilinux.patch + add-stopdependencies.patch + + system/base/comar-api/pspec.xml + + + comar-api + + python + pisilinux-python + + + /usr/lib/pisilinux + /usr/lib/python2.7 + + + + + 2014-08-20 + 2.4.9 + Fix paths. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 2.4.9 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 2.4.9 + Release bump, clean comar-api. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-11-29 + 2.4.9 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + pisilinux-python + http://www.pisilinux.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + Python modules for Pisi Linux + PiSi Linux için Python modülleri + Python modules for Pisi Linux provides functions for common task, with the aim of easing development. + PiSi Linux için Python modülleri genel işler için fonksiyonlar sunarak geliştirme işini kolaylaştırmayı amaçlamaktadır. + Módulos Python para PiSi Linux facilitan funciones para tareas comunes, para simplificar el desarrollo. + http://source.pisilinux.org/1.0/pisilinux-python-0.4.8.tar.gz + + python-devel + libX11-devel + + system/base/pisilinux-python/pspec.xml + + + pisilinux-python + + python + + + /usr/lib + /usr/share/doc + /usr/share/locale + + + + pisilinux-python-xorg + x11.library + + python + libX11 + + + /usr/lib/python2.7/site-packages/pardus/xorg + + + + + 2016-03-02 + 0.4.8 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-05 + 0.4.8 + Revert libX11 dependency, yali need this. separe package + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-11 + 0.4.8 + Remove libX11 dependency. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 0.4.8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 0.4.8 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-04 + 0.4.8 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-12-09 + 0.4.8 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + popt + http://www.rpm5.org/ + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + library + system.base + Popt command line option parser + Popt komut satırında çalıştıran bir seçenek ayrıştırıcıdır. + La librairie popt existe essentiellement pour analyser des options de ligne de commande. Elle procure de nombreux avantages tels que l'absence de variables globales, la possibilité d'analyser un tableau arbitraire d'éléments de type argv, d'exécuter des filtres d'options extérieurs, la génération automaituqe des messages d'aide et d'utilisation ainsi qu'un méthode standard pour synonymes d'options. + The popt library exists essentially for parsing command line options with advantages such as there are no global variables, ability to parse an arbitrary array of argv-style elements, to exec external option filters, and automatic generation of help and usage messages, a standard method of option aliasing. + Popt, komut satırında seçenek ayrıştırma için gerekli bir kütüphanedir. Genel değişken olmaması, dağınık dizi bileşenlerini ayrıştırabilmesi, harici uygulama filtreleri kullanabilmesi, otomatik mesaj ve yardım dosyaları üretimi gibi başarılı özellikleri bulunur. + ftp://anduin.linuxfromscratch.org/BLFS/svn/p/popt-1.16.tar.gz + system/base/popt/pspec.xml + + + popt + + gettext + + + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/locale + + + + popt-devel + Development files for popt + popt için geliştirme dosyaları + system.devel + + popt + + + /usr/include/popt.h + /usr/share/man/man3 + /usr/lib/pkgconfig + + + + + 2014-05-11 + 1.16 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2010-10-11 + 1.16 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + sysvinit + http://freshmeat.net/projects/sysvinit/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Programs which control basic system processes + sysvinit package contains a group of utilities that control the very basic functions of your system. sysvinit contains the init program, the first program started by the Linux kernel when the system boots. + http://download.savannah.gnu.org/releases/sysvinit/sysvinit-2.88dsf.tar.bz2 + + sysvinit-2.86-ctrlc.patch + sysvinit-2.78-man.patch + sysvinit-2.86-loginshell.patch + sysvinit-2.86-single.patch + sysvinit-2.88-quiet.patch + sysvinit-2.88-ipv6.patch + sysvinit-2.88-omit.patch + sysvinit-2.88-wall-maxlines.patch + + system/base/sysvinit/pspec.xml + + + sysvinit + + /bin + /sbin + /usr/bin + /usr/share/man + /usr/include + + + System.Package + + + + sysvinit-tools + Tools used for process and utmp management + Süreç ve utmp yönetim araçları + + /bin/mountpoint + /sbin/pidof + /sbin/killall5 + /sbin/sulogin + /usr/bin/wall + /usr/bin/last + /usr/bin/lastb + /usr/bin/mesg + /usr/bin/utmpdump + /usr/share/man/man1 + /usr/share/man/man8/killall5* + /usr/share/man/man8/pidof* + /usr/share/man/man8/sulogin* + + + + + 2014-05-11 + 2.88 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2011-06-01 + 2.88 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + diffutils + http://www.gnu.org/software/diffutils/diffutils.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Tools to make diffs and compare files + Dosyaları karşılaştırmak ve fark dosyaları oluşturmak için kullanılan araçlar + Vous pouvez utiliser la commande diff pour voir les différences entre deux fichiers en particulier, ou les différences entre deux répertoires fichiers par fichier. Diff peut afficher les différences entre fichiers ligne par ligne dans différents formats pouvant être choisis avec les options de la ligne de commande. + You can use the diff command to show differences between two files, or each corresponding file in two directories. diff outputs differences between files line by line in any of several formats, selectable by command line options. + İki dosya arasındaki ya da iki klasör içindeki dosyaları karşılaştırarak farklılıkları belirleyebileceğiniz araç. Farklılıkları satır satır olarak, komut satırı seçenekleri ile farklı formatta dosyalara yazdırabilirsiniz. + http://ftp.gnu.org/gnu/diffutils/diffutils-3.3.tar.xz + + patch + + system/base/diffutils/pspec.xml + + + diffutils + + /usr/bin + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/locale + + + + + 2016-02-28 + 3.3 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 3.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-01 + 3.3 + Version bump, clean diffutils. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-08-23 + 3.2 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + man-pages + http://www.win.tue.nl/~aeb/linux/man/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + data:doc + system.base + Une collection de pages de manuel Linux compréhensibles d'une certaine manière. + A somewhat comprehensive collection of Linux man pages + Kapsamlı Linux kılavuz dökümanları + A large collection of man pages (documentation) from the Linux Documentation Project (LDP). + https://www.kernel.org/pub/linux/docs/man-pages/man-pages-4.04.tar.xz + http://www.kernel.org/pub/linux/docs/man-pages/man-pages-posix/man-pages-posix-2003-a.tar.xz + system/base/man-pages/pspec.xml + + + man-pages + + man-db + + + /usr/share/doc + /usr/share/man + + + man1/getent.1 + man1/sprof.1 + + + + + 2016-01-03 + 4.04 + Version bump + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-25 + 4.02 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-08 + 4.00 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-09 + 3.81 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-07-13 + 3.70 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 3.55 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 3.55 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-28 + 3.47 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-03-04 + 3.47 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2011-01-04 + 3.32 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + sysfsutils + http://linux-diag.sourceforge.net/Sysfsutils.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + System Utilities Based on Sysfs + Çeşitli sistem araç ve gereçleri + Ceci est un ensemble d'utilitaires se basant sur sysfsm un nouveau système de fichier virtuel des noyaux Linux 2.5 et + exposant l'arbre des périphériques du système. + These are a set of utilites built upon sysfs, a new virtual filesystem in Linux kernel versions 2.5+ that exposes a system's device tree. + sysfsutils sysfs sanal dosya sistemi üzerine kurulu bir araç setidir. + mirrors://sourceforge/linux-diag/sysfsutils-2.1.0.tar.gz + + sysfsutils-2.0.0-class-dup.patch + sysfsutils-2.1.0-get_link.patch + + system/base/sysfsutils/pspec.xml + + + sysfsutils + + /usr/bin + /lib + /usr/lib + /usr/share/doc + /usr/share/man + + + + sysfsutils-devel + Development files for sysfsutils + sysfsutils için geliştirme dosyaları + system.devel + + sysfsutils + + + /usr/include + /usr/share/man/man3 + + + + + 2014-05-11 + 2.1.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 2.1.0 + Rebuild + Pisi Linux Admins + admins@pisilinux.org + + + 2010-10-11 + 2.1.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + miscfiles + http://freshmeat.net/projects/miscfiles/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + data + system.base + Fichiers divers. + Miscellaneous files + Çeşitli dosyalar + Verschiedene Dateien + miscfiles is a collection of data files for freely available information, like airport, country, currencies, city information, and codes. It also includes the Unicode character database. + miscfiles havalanı, ülke, para birimi, şehir bilgisi ve kodları gibi bir çok ulaşılabilir bilgiyi veri dosyaları halinde tutmaktadır. + http://ftp.gnu.org/gnu/miscfiles/miscfiles-1.5.tar.gz + system/base/miscfiles/pspec.xml + + + miscfiles + + /usr/share/doc + /usr/share/rfc + /usr/share/dict + /usr/share/misc + + + + + 2016-03-03 + 1.5 + Rebuild with new toolchain. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-05-11 + 1.5 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-30 + 1.5 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-11-24 + 1.5 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + libssh2 + http://www.libssh2.org/ + + PisiLinux Community + admins@pisilinux.org + + BSD + library + system.base + A library implementing the SSH2 protocol + SSH2 protokolü için kütüphane + libssh2 is a library implementing the SSH2 protocol as defined by Internet Drafts: SECSH-TRANS, SECSH-USERAUTH, SECSH-CONNECTION, SECSH-ARCH, SECSH-FILEXFER, SECSH-DHGEX, SECSH-NUMBERS, and SECSH-PUBLICKEY. + libssh2, SECSH-TRANS, SECSH-USERAUTH, SECSH-CONNECTION, SECSH-ARCH, SECSH-FILEXFER, SECSH-DHGEX, SECSH-NUMBERS ve SECSH-PUBLICKEY gibi Internet Taslakları tarafından belirlenen SSH2 protokolü için geliştirilmiş bir kütüphanedir. + http://www.libssh2.org/download/libssh2-1.4.3.tar.gz + + openssl-devel + zlib-devel + + system/base/libssh2/pspec.xml + + + libssh2 + + openssl + zlib + + + /usr/lib + /usr/share/doc + + + + libssh2-devel + Development files for libssh2 + libssh2 için geliştirme dosyaları + system.devel + + libssh2 + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man + + + + + 2014-05-11 + 1.4.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-15 + 1.4.3 + Version bump + Ertan Güven + ertan@pisilinux.org + + + 2012-06-12 + 1.4.2 + First release + Erdem Artan + admins@pisilinux.org + + + + + + e2fsprogs + http://e2fsprogs.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Standard ext2/3/4 filesystem utilities + Standart ext2, ext3, ext4 dosya sistemi uygulamaları + e2frprogs fournit les outils de système de fichier à utiliser avec les systèmes de fichier de type ext2. Il prend également en charge les système de fichier de type ext3/4 avec support de la journalisation. + e2fsprogs provides the filesystem utilities for use with the ext2 filesystem. It also supports the ext3/4 filesystem with journaling support. + e2fsprogs ext2 dosya sistemi için standart dosya sistemi uygulamaları sağlar. ext3/4 dosya sistemlerinin günlüğe kaydetme özelliklerini de destekler. + mirrors://sourceforge/e2fsprogs/e2fsprogs-1.42.13.tar.gz + + libutil-linux-devel + libutil-linux + gettext + util-linux + + + ntfs-3g.patch + + system/base/e2fsprogs/pspec.xml + + + e2fsprogs + + libutil-linux + + + /etc + /bin + /usr/bin + /lib + /usr/lib + /sbin + /usr/sbin + /usr/share/et + /usr/share/ss + /usr/share/locale + /usr/share/info + /usr/share/man + /usr/share/doc + + + + e2fsprogs-devel + Development files for e2fsprogs + e2fsprogs için geliştirme dosyaları + system.devel + + e2fsprogs + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + 2016-03-05 + 1.42.13 + Rebuild with new toolchain. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-06-08 + 1.42.13 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-30 + 1.42.12 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-07-10 + 1.42.11 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 1.42.9 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-03 + 1.42.9 + Version bump + PisiLinux Community + admins@pisilinux.org + + + 2013-10-28 + 1.42.8 + rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-26 + 1.42.8 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-15 + 1.42.7 + New version + Ertan Güven + ertan@pisilinux.org + + + 2012-11-25 + 1.42.6 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + dbus-glib + http://dbus.freedesktop.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + AFL-2.1 + library + system.base + Glib bindings for D-Bus + D-Bus için GLib bağlayıcıları + dbus-glib is an add-on library to integrate the standard D-Bus library with the GLib thread abstraction and main loop. + dbus-glib, standart D-Bus kitaplığını GLib ana döngüsüyle bütünleştirmek için kullanılan bir kitaplıktır. + http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.104.tar.gz + + dbus-devel + glib2-devel + libpcre-devel + expat-devel + libxml2 + + system/base/dbus-glib/pspec.xml + + + dbus-glib + + dbus + glib2 + expat + libxml2 + + + /usr/bin + /usr/libexec/dbus-bash-completion-helper + /usr/lib + /usr/share/doc + /usr/share/man/man1 + /etc/bash_completion.d + /usr/share/bash-completion + /usr/libexec + + + + dbus-glib-devel + Development files for dbus-glib + dbus-glib için geliştirme dosyaları + system.devel + + dbus-glib + dbus-devel + glib2-devel + + + /usr/include/dbus-1.0 + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + 2016-03-03 + 0.104 + Rebuild with new toolchain. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-05-12 + 0.104 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-01 + 0.102 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-18 + 0.102 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-11 + 0.100.1 + Güncellendi. + PisiLinux Community + admins@pisilinux.org + + + 2012-08-23 + 0.100 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + run-parts + http://packages.qa.debian.org/d/debianutils.html + + PisiLinux Community + osman.erkan@yandex.com + + GPLv2+ + system.base + run scripts or programs in a directory + run scripts or programs in a directory + https://sources.archlinux.org/other/run-parts/debianutils_4.7.tar.xz + system/base/run-parts/pspec.xml + + + run-parts + + /usr/share/man + /usr/bin + /usr/sbin + + + + + 2016-03-03 + 4.7 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-04-11 + 4.4 + Release bump, fix source url + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-02 + 4.4 + rm unneeded files. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-04-01 + 4.4 + Release bump for component change. + PisiLinux Community + osman.erkan@yandex.com + + + 2014-03-02 + 4.4 + First Release + PisiLinux Community + osman.erkan@yandex.com + + + + + + biosdevname + http://linux.dell.com/biosdevname/ + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv2 + app:gui + system.base + Biosdevname is a udev helper utility developed + Biosdevname is a udev helper utility developed by Dell and released under the GNU General Public License (GPL). It provides a consistent naming mechanism for network devices based on their physical location as suggested by the system BIOS. + http://linux.dell.com/biosdevname/biosdevname-0.7.1/biosdevname-0.7.1.tar.gz + + pciutils-devel + glibc-devel + zlib-devel + + system/base/biosdevname/pspec.xml + + + biosdevname + + pciutils + + + /sbin + /lib/udev/rules.d + /usr/sbin + /usr/share/doc + /usr/share/man + + + + + 2016-01-10 + 0.7.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-30 + 0.6.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 0.6.0 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 0.4.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-19 + 0.4.1 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-10-05 + 0.4.1 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + pcmciautils + http://www.kernel.org/pub/linux/utils/kernel/pcmcia/pcmcia.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Utilitaires divers concernant le bus PCMCIA. + Various utilities dealing with the PCMCIA bus + PCMCIA veriyolu işlevleri ile ilgili çeşitli araçlar + Verschiedene Werkzeuge, um mit dem PCMCIA Bus umzugehen + pcmciautils contains the initialization tools necessary to allow the PCMCIA subsystem to behave as every other hotpluggable bus system. + pcmciautils PCMCIA altyapısının tak/çıkar veriyolları gibi davranmasını sağlayan araçları içerir. + https://sources.archlinux.org/other/pcmciautils/pcmciautils-018.tar.xz + + sysfsutils-devel + + system/base/pcmciautils/pspec.xml + + + pcmciautils + + sysfsutils + + + /sbin + /lib/udev + /etc/pcmcia + /usr/share/doc + /usr/share/man + /lib/udev/rules.d + + + + + 2014-05-11 + 018 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-21 + 018 + rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-01-21 + 018 + Version bump + Marcin Bojara + marcin@pisilinux.org + + + 2010-10-11 + 017 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libffi + http://sourceware.org/libffi + + PisiLinux Community + admins@pisilinux.org + + BSD + library + system.base + A portable foreign function interface library + Yabancı işlev arayüzleri için taşınabilir bir kitaplık + The libffi library provides a portable, high level programming interface to various calling conventions. + libffi kitaplığı, çeşitli işlev çağırma konvansiyonları için taşınabilir ve yüksek düzeyli bir programlama arayüzü sunar. + ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz + system/base/libffi/pspec.xml + + + libffi + + /usr/lib/libffi.* + /usr/share/doc + + + + libffi-devel + Development files for libffi + libffi için geliştirme dosyaları + system.devel + + libffi + + + /usr/lib/libffi-* + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/info + /usr/share/man + + + + libffi-32bit + 32-bit shared libraries for libffi + libffi için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + libffi + + + /usr/lib32/libffi.* + /usr/lib32/libffi-* + + + + + 2016-03-01 + 3.2.1 + Rebuild for toolchain. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-12-02 + 3.2.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 3.0.13 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 3.0.13 + Version bump, clean libffi. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-17 + 3.0.12 + New Release + PisiLinux Community + admins@pisilinux.org + + + 2012-07-11 + 3.0.11 + First release + Erdem Artan + admins@pisilinux.org + + + + + + help2man + http://www.gnu.org/software/help2man + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + GNU utility to convert program --help output to a man page + Geleneksel --help çıktılarını man sayfalarına dönüştüren bir GNU yazılımı + Help2man is a tool which generate man page from help text of programs. + Help2man programların help çıktılarını man sayfalarına dönüştüren bir araçtır. + http://ftp.gnu.org/gnu/help2man/help2man-1.46.4.tar.xz + + perl-Locale-gettext + + system/base/help2man/pspec.xml + + + help2man + + perl-Locale-gettext + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/info + /usr/share/locale + /usr/share/man + + + + + 2015-02-12 + 1.46.4 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-05-11 + 1.41.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-14 + 1.41.1 + New release + PisiLinux Community + admins@pisilinux.org + + + 2011-09-07 + 1.40.4 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + polkit + http://www.freedesktop.org/wiki/Software/PolicyKit + + PisiLinux Community + admins@pisilinux.org + + LGPLv2+ + service + library + app:console + system.base + PolicyKit Authorization Framework + Sistem bileşenleri için erişim politikası servisi + polkit est un cadre de développement (framework) pour définir des politiques à appliquer à des composants du système ainsi que fournir à des parties du bureau la possibilité de les configurer. + polkit is a toolkit for defining and handling authorizations. It is used for allowing unprivileged processes to speak to privileged processes. + polkit, sistem genelindeki bileşenlerin ve masaüstü bileşenlerinin ayarlayabileceği şekilde ilkeler tanımlamak için araçlardan oluşur. + http://www.freedesktop.org/software/polkit/releases/polkit-0.113.tar.gz + + dbus-devel + pam-devel + glib2-devel + expat-devel + spidermonkey-devel + gobject-introspection-devel + intltool + + + use-system-locale-in-gobject-api.diff + + system/base/polkit/pspec.xml + + + polkit-devel + Development headers for polkit + polkit geliştirme başlıkları + system.devel + + polkit + glib2-devel + + + /usr/include + /usr/lib/pkgconfig + + + + polkit + + pam + glib2 + expat + spidermonkey + + + /etc + /usr/lib + /usr/libexec + /usr/bin + /usr/sbin + /usr/share/locale + /usr/share/polkit-1 + /usr/share/dbus-1 + /usr/share/gir-1.0 + /var/lib/polkit-1 + /lib/systemd + /usr/share/man + /usr/share/doc + + + man/pklocalauthority.8 + man/polkit.8 + man/polkitd.8 + man/pkaction.1 + man/pkcheck.1 + man/pkexec.1 + 70-desktop-policy.conf + + + + + 2015-07-21 + 0.113 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-14 + 0.112 + Rebuild, enable-introspection. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-10 + 0.112 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-05-11 + 0.112 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-01 + 0.112 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-28 + 0.111 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-11 + 0.110 + Güncellendi. + PisiLinux Community + admins@pisilinux.org + + + 2013-01-11 + 0.107 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + util-linux + http://userweb.kernel.org/~kzak/util-linux-ng/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + library + system.base + Divers utilitaires Linux utiles. + Various useful Linux utilities + Çeşitli kullanışlı Linux araçları + The util-linux package contains a large variety of low-level system utilities that are necessary for a Linux system to function. + util-linux paketi, bir Linux sisteminin işlevsel olması için gerekli olan birçok düşük seviye sistem uygulamasını içerir. + https://www.kernel.org/pub/linux/utils/util-linux/v2.27/util-linux-2.27.1.tar.xz + + zlib-devel + eudev-devel + python-devel + readline-devel + shadow + ncurses-devel + libcap-ng-devel + glibc-32bit + + + ntfs-3g.patch + upstream/util-linux-ng-2.21-login-lastlog.patch + + system/base/util-linux/pspec.xml + + + util-linux + + libutil-linux + zlib + perl + ncurses + readline + eudev + libcap-ng + + + /etc + /bin + /sbin + /usr/bin + /usr/sbin + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/misc + /usr/share/getopt + /usr/share/bash-completion/completions + /usr/share/locale + + + util-linux + + + + uuidd + Helper daemon to guarantee uniqueness of time-based UUIDs + Zaman tabanlı UUID'lerin benzersizliğini garantileyen sistem hizmeti + service + app:console + util.misc + + libutil-linux + + + /usr/bin/uuidgen + /usr/sbin/uuidd + /usr/lib/tmpfiles.d/uuidd.conf + /usr/share/man/man1/uuidgen.1 + /usr/share/man/man8/uuidd.8 + + + uuidd + + + uuidd.tmpfiles + + + + libutil-linux + util-linux runtime library + util-linux için kitaplıklar + library + + python + + + /lib + /usr/lib + /usr/share/man/man3/uuid* + /usr/share/man/man3/libblkid* + /usr/share/man/man8/blkid* + + + libblkid + libuuid + + + libblkid + libuuid + + + + libutil-linux-devel + libutil-linux header files + util-linux kitaplıkları için başlık dosyaları + header + system.devel + + libutil-linux + + + /usr/include/ + /usr/lib/pkgconfig/*.pc + + + libblkid-devel + libuuid-devel + + + libblkid-devel + libuuid-devel + + + + libutil-linux-32bit + 32-bit shared libraries for libutil-linux + util-linux için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + /usr/lib32/ + + + libblkid-32bit + libuuid-32bit + + + libblkid-32bit + libuuid-32bit + + + + + 2016-02-28 + 2.27.1 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-11-12 + 2.27.1 Version Bump. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-05-14 - 4.3.20 - Rebuild for kernel 3.19.8 + + 2015-10-09 + 2.27 + Version bump. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-05-05 - 4.3.20 - Rebuild for kernel 3.19.6 + + 2015-06-05 + 2.26.2 + Version bump. Ertuğrul Erata ertugrulerata@gmail.com - - 2015-04-24 - 4.3.20 - Rebuild for kernel 3.19.5 + + 2015-04-29 + 2.26.1 + Version bump, change pisi Ertuğrul Erata ertugrulerata@gmail.com - - 2015-04-16 - 4.3.20 - Rebuild for kernel 3.19.4 + + 2015-04-01 + 2.26.1 + Version bump. Ertuğrul Erata ertugrulerata@gmail.com - + + 2014-05-11 + 2.24.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-08 + 2.24.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-20 + 2.24 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-27 + 2.22.2 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-07-26 + 2.22.2 + Release bump for rebuild. + PisiLinux Community + admins@pisilinux.org + + + 2013-01-14 + 2.22.2 + New release + PisiLinux Community + admins@pisilinux.org + + + 2012-11-17 + 2.22.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + which + http://www.xs4all.nl/~carlo17/which/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Prints the location of specified executable in your path + Verilen komutun çalıştırma yolundaki önceliğe göre yerini gösterir + which, localise un programme dans le chemin de l'utilisateur. + which , Locates a program file in the user's path. + which, kullanıcı dizinindeki program dosyalarının yarini bulur. + which, findet eine Anwendungsdatei im Benutzerverzeichnis + mirrors://gnu/which/which-2.21.tar.gz + system/base/which/pspec.xml + + + which + + /usr/bin + /usr/share/doc + /usr/share/man + /usr/share/info + + + + + 2016-03-02 + 2.21 + Release bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2015-04-06 + 2.21 + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-05-11 + 2.20 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 2.20 + rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2010-10-11 + 2.20 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + json-c + http://oss.metaparadigm.com/json-c + + PisiLinux Community + admins@pisilinux.org + + MIT + library + system.base + A JSON implementation in C + C dilinde JSON gerçeklemesi + json-c implements a reference counting object model that allows you to easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into the C representation of JSON objects. + json-c, C dilinde kolayca JSON nesneleri yaratılmasını sağlayan bir referans sayma modeli gerçekleyen bir kitaplıktır. + https://github.com/json-c/json-c/archive/json-c-0.12-20140410.tar.gz + + wno-werror.patch + + system/base/json-c/pspec.xml + + + json-c + + /usr/share/doc + /usr/share/man + /usr/lib + + + + json-c-devel + Development files for json-c + json-c için geliştirme dosyaları + system.devel + + json-c + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + json-c-32bit + 32-bit shared libraries for json-c + emul32 + emul32 + + glibc-32bit + + + /usr/lib32 + + + + + 2015-04-30 + 0.12 + Version bump and security update(CVE-2013-6371, CVE-2013-6370). + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 0.11 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 0.11 + rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-09 + 0.11 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-04-02 + 0.9 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + urlgrabber + http://urlgrabber.baseurl.org/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + system.base + High level cross-protocol url-grabber library for Python + Python için yüksek seviyeli, platform bağımsız bir url-grabber kütüphanesi + urlgrabber provides a clean library interface to protocol-independant file-access for Python programs + urlgrabber Python uygulamaları için protokol bağımsız dosya erişimi sağlayan temiz bir kütüphanedir. + http://urlgrabber.baseurl.org/download/urlgrabber-3.10.1.tar.gz + + python + + system/base/urlgrabber/pspec.xml + + + urlgrabber + + python + pycurl + + + /usr/lib + /usr/libexec + /usr/share/doc + + + + + 2016-03-02 + 3.10.1 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 3.10.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-10-28 + 3.10 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-03-12 + 3.9.1 + Fix pisi https issue + Pisi Linux Admins + marcin@pisilinux.org + + + 2010-10-11 + 3.9.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + readline + http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + Another cute console display library + Diğer bir şirin konsol gösterim kütüphanesi + La librairie GNU Readline fourni un ensemble de fonctions utilisables par des applications permettant aux utilisateurs d'éditer les lignes de commandes en cours de frappe. Les modes d'éditions Emacs et vi sont disponibles. La librairie Readline inclus des fonctions supplémentaires de mémorisation de la liste de commandes entrées précédemment, afin de le rappeler et éventuellement les rééditer, ainsi que l'expansion d'historiques de commandes précédentes à la mode csh. + The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. Both Emacs and vi editing modes are available. The Readline library includes additional functions to maintain a list of previously-entered command lines, to recall and perhaps reedit those lines, and perform csh-like history expansion on previous commands. + GNU Readline kütüphanesi uygulamalara sanki kullanıcılar kendileri yazıyormuş gibi komut satırı girişlerini düzenleme imkanı veren işlev setini sunar. Readline kütüphanesi daha önce girilmiş bir komut satırları listesini düzenleme, tekrar çağırma ve belki de bu satırları tekrar düzenleme ve csh tipi geçmiş bilgisi genişletmelerindeki önceki komutları yürütme imkanı sağlayan ek işlevler sağlar. + mirrors://gnu/readline/readline-6.3.tar.gz + + ncurses-devel + + + readline63-001.patch + readline63-002.patch + readline63-003.patch + + system/base/readline/pspec.xml + + + readline + + ncurses + + + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/info + + + + readline-devel + Development files for readline + readline için geliştirme dosyaları + system.devel + + glibc-32bit + + + readline + + + /usr/include + /usr/share/man/man3 + + + + readline-32bit + 32-bit shared libraries for readline + readline için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + ncurses-32bit + + + readline + ncurses-32bit + glibc-32bit + + + /usr/lib32 + + + + + 2016-02-29 + 6.3 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 6.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-05 + 6.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 6.2_004 + Clean readline. + Marcin Bojara + marcin@pisilinux.org + + + 2012-08-31 + 6.2 + First release + Erdem Artan + admins@pisilinux.org + + + + + + unzip + ftp://ftp.info-zip.org/pub/infozip/UnZip.html + + PisiLinux Community + admins@pisilinux.org + + Info-ZIP + app:console + system.base + Unzipper for pkzip-compressed files + pkzip ile sıkıştırılmış dosyalar için açıcı + Unzip nous permet d'extraires des archives compressées aux format .zip (également appelées "fichiers zip"). + UnZip enables us to extract archives compressed in .zip format (also called "zipfiles"). + UnZip, zip formatında sıkıştırılmış dosyaları açmamızı sağlar. + mirrors://sourceforge/infozip/unzip610b.zip + + unzip-6.0-attribs-overflow.patch + unzip-6.0-exec-shield.patch + unzip-6.0-close.patch + + system/base/unzip/pspec.xml + + + unzip + + /usr/bin + /usr/share/doc + /usr/share/man + + + + + 2016-03-05 + 610b + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 610b + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 610b + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-01-14 + 610b + New release + PisiLinux Community + admins@pisilinux.org + + + 2010-10-11 + 6.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + snappy + http://code.google.com/p/snappy/ + + Alihan Öztürk + alihan@pisilinux.org + + BSD + library + system.base + A fast compressor/decompressor librar + Linux için sıkıştırma/ayıklama kütüphanesidir. + Snappy is a compression/decompression library. It does not aim for maximum compression, or compatibility with any other compression library; instead, it aims for very high speeds and reasonable compression. + Linux için sıkıştırma/ayıklama kütüphanesidir. Yüksek hızda sıkıştırma yapmak için yazılmış bir kütüphanedir. + https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz + + lzo-devel + zlib-devel + + + snappy-unittest.patch + + system/base/snappy/pspec.xml + + + snappy + + libgcc + + + /usr/lib + /usr/share/doc + /usr/share + + + + snappy-devel + snappy için geliştirme dosyaları + + snappy + + + /usr/include + + + + + 2016-03-02 + 1.1.3 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-02 + 1.1.1 + Rebuild + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-12-12 + 1.1.1 + First Release + Alihan Öztürk + alihan@pisilinux.org + + + + + + bzip2 + http://www.bzip.org/ + + PisiLinux Community + admins@pisilinux.org + + BZIP2 + app:console + system.base + A high-quality data compressor + Yüksek kaliteli bir veri sıkıştırma uygulaması + bzip2 est un compresseur de données de très grand qualité. Il compresse typiquement les fichiers à un ratio entre 10 et 15% des meilleurs techniques disponibles (la famille des compresseurs statistiques de famille PPM) tout en étant environ deux fois plus rapide à la compression et six fois plus rapide à la décompression. + bzip2 is high-quality data compressor. It typically compresses files to within 10% to 15% of the best available techniques (the PPM family of statistical compressors), whilst being around twice as fast at compression and six times faster at decompression. + bzip2 yüksek kaliteli bir veri sıkıştırma programıdır. Program genellikle dosyaları mümkün olan en iyi teknikler ile (PPM istatistiksel sıkıştırıcı ailesi) %10 - %15'e kadar sıkışıtırabilmektedir. Sıkıştırma işleminde iki kata kadar hızlı iken açma hızında yaklaşık altı kat daha hızlıdır. + bzip2 ist ein hochwertiger Daten-Kompressor. Es komprimiert Dateien üblicherweise auf 10% bis 15% der bestmöglichen Techniken (die PPM Familie der statistischen Kompressoren), während es ungefähr doppelt so schnell komprimiert und sechsfach schneller extrahiert + http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz + + bzip2-1.0.2-progress.patch + bzip2-1.0.4-bzip2recover.patch + bzip2-1.0.4-man-links.patch + bzip2-1.0.6-saneso.patch + manpath.patch + + system/base/bzip2/pspec.xml + + + bzip2 + + /bin + /lib + /usr/lib + /usr/share/doc + /usr/share/man + /usr/include + + + + + 2016-02-28 + 1.0.6 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-17 + 1.0.6 + rebuild for fix #190. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-09-30 + 1.0.6 + Rebuild,cleanup, enable tests. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 1.0.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-28 + 1.0.6 + Release bump,clean bzip2. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-10-11 + 1.0.6 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + tcp-wrappers + http://ftp.porcupine.org/pub/security/index.html + + PisiLinux Community + admins@pisilinux.org + + BSD + app:console + system.base + TCP Wrappers + TCP Wrappers + Avec ce paquet, vous pouvez surveiller et filtrer les requêtes entrante pour les services réseaux SYSTAT, FINGER, FTP, TELNET, RLOGIN, RSH, EXEC, TFTP, TALK et autres. Il supporte à la fois les canaux de communication (sockets) de type 4.3BSD et TLI de type System V.4. + With this package you can monitor and filter incoming requests for the SYSTAT, FINGER, FTP, TELNET, RLOGIN, RSH, EXEC, TFTP, TALK, and other network services. It supports both 4.3BSD-style sockets and System V.4-style TLI. + Bu paket ile birlikte SYSTAT, FINGER, FTP, TELNET, RLOGIN, RSH, EXEC, TFTP, TALK ve diğer ağ servisleri için gelen istekleri izleyebilir ve süzebilirsiniz. Program 4.3BSD-tipi soketler ve System V.4-tipi TLI'ın ikisini de destekler. + http://ftp.porcupine.org/pub/security/tcp_wrappers_7.6.tar.gz + + sed + + + Makefile-Pisi.patch + tcp-wrappers-7.6-makefile.patch + tcp_wrappers-7.6-ldflags.patch + 01_all_redhat-bug11881.patch + 02_all_redhat-bug17795.patch + 03_all_wildcard.patch + 04_all_fixgethostbyname.patch + 07_all_sig.patch + 08_all_strerror.patch + 09_all_gcc-3.4.patch + 10_all_more-headers.patch + tcp-wrappers-7.6-ipv6-1.14.diff + tcp-wrappers-7.6-shared.patch + host.allow.example.patch + match-port.patch + + system/base/tcp-wrappers/pspec.xml + + + tcp-wrappers + + /usr/sbin + /usr/lib + /lib + /etc + /usr/share/man + /usr/share/doc + + + hosts.allow + hosts.deny + + + + tcp-wrappers-devel + Development files for tcp-wrappers + tcp-wrappers için geliştirme dosyaları + system.devel + + tcp-wrappers + + + /usr/include + /usr/share/man/man3 + + + + + 2014-05-11 + 7.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2010-10-11 + 7.6 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + plyvel + https://pypi.python.org/pypi/plyvel + + Alihan Öztürk + alihan@pisilinux.org + + BSD + app:console + system.base + Plyvel, a fast and feature-rich Python interface to LevelDB. + Plyvel, LevelDB için, hızlı ve zengin özellikli Python arabirimi. + Plyvel has a rich feature set, high performance, and a friendly Pythonic API. + Plyvel zengin özelliklere sahip bir set, yüksek performanslı, ve kullanıcı dostu bir Pythonic API. + https://pypi.python.org/packages/source/p/plyvel/plyvel-0.9.tar.gz + + cython + python-devel + leveldb-devel + python-setuptools + + system/base/plyvel/pspec.xml + + + plyvel + + libgcc + python + leveldb + + + /usr/lib + /usr/share/doc + + + + + 2016-03-02 + 0.9 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-14 + 0.9 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-17 + 0.9 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-08 + 0.8 + Rebuild. + Aydın Demirel + aydin.demirel@pisilinux.org + + + 2014-06-01 + 0.8 + First release. + Alihan Öztürk + alihan@pisilinux.org + + + + + + dbus-python + http://dbus.freedesktop.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + AFL-2.1 + library + system.base + D-Bus Python bindings + D-Bus için Python bağlayıcıları + dbus-python provides a Python module which wraps the D-Bus programming API. + http://dbus.freedesktop.org/releases/dbus-python/dbus-python-1.2.0.tar.gz + + python-devel + dbus-devel + dbus-glib-devel + glib2-devel + libpcre-devel + + + suppress-warnings.patch + + system/base/dbus-python/pspec.xml + + + dbus-python-common + Common dbus-python files shared between dbus-python and dbus-python3 + system.devel + + dbus-devel + dbus-python + + + /usr/include + /usr/lib/pkgconfig + /usr/share/doc + + + + dbus-python + + python + dbus + glib2 + dbus-glib + + + /usr/lib/python2* + + + + + 2016-01-23 + 1.2.0 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-22 + 1.2.0 + Release bump. + Kamil Atlı + suvarice@gmail.com + + + 2014-05-11 + 1.2.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 1.2.0 + rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-23 + 1.2.0 + Version bump. Remove dbus-devel from runtime dependencies. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-25 + 1.1.1 + Dep Fixed. + PisiLinux Community + admins@pisilinux.org + + + 2012-11-10 + 1.1.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + acl + http://acl.bestbits.at/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + LGPLv2.1 + app:console + library + system.base + Utilitaires, librairies et fichiers d'entête de liste de contrôle d'accès. + Access control list utilities + Erişim denetim listesi için çeşitli araçlar + acl contains the getfacl and setfacl utilities needed for manipulating access control lists along with the needed libraries. + acl erişim denetim listelerini yönetmeye yarayan getfacl ve setfacl araçlarıyla gerekli kütüphaneleri içeren bir pakettir. + http://download.savannah.gnu.org/releases-noredirect/acl/acl-2.2.52.src.tar.gz + + attr-devel + + system/base/acl/pspec.xml + + + acl + + attr + + + /bin + /lib + /usr/share/locale + /usr/share/doc + /usr/share/man + + + + acl-devel + Development files for acl + acl için geliştirme dosyaları + system.devel + + acl + + + /usr/include + /usr/share/man/man3 + + + + + 2016-03-01 + 2.2.52 + Rebuild for toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-22 + 2.2.52 + fix build deps. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-09-30 + 2.2.52 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 2.2.52 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-28 + 2.2.52 + Version bump, clean acl. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-06-04 + 2.2.51 + First release + Erdem Artan + admins@pisilinux.org + + + + + + gawk + http://www.gnu.org/software/gawk/gawk.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + GNU awk pattern-matching language + Metin işleme uygulaması olan awk'ın GNU versiyonu + L'outil awk interprète un langage de programmation spécifique permettant d'effectuer les tâches de modifications simples de données en quelques lignes de code. Il vous permet de faire des changements dans différents fichiers texte lorsqu'un certain patron apparaît ou d'extraire des données de fragments de lignes tout en laissant de côté le reste. Gawk est l'implémentation GNU d'awk. + The awk utility interprets a special-purpose programming language that makes it possible to handle simple data-reformatting jobs with just a few lines of code. It helps you to make changes in various text files wherever certain patterns appear, or extract data from parts of certain lines while discarding the rest. Gawk is the GNU implementation of awk. + awk uygulaması az bir kod ile basit veri formatı düzenleme işlerinizi yapabilmenize olanak sağlayan özel amaçlı bir programlama dilidir. Uygulama birçok farklı metin dosyası içinde aradığınız parçaları bulup değiştirmenize veya diğer satırlardan ayırarak işlemenize yardımcı olur. Gawk programı awk'ın GNU sürümüdür. + ftp://mirrors.kernel.org/gnu/gawk/gawk-4.1.3.tar.xz + + gettext-devel + + system/base/gawk/pspec.xml + + + gawk + + readline + gmp + mpfr + + + /usr/bin + /usr/libexec + /usr/lib/gawk + /usr/include + /usr/share/awk + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/locale + + + + + 2016-02-28 + 4.1.3 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-05 + 4.1.3 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 4.1.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-03-10 + 4.1.0 + Release bump for update eror + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2014-01-05 + 4.1.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-26 + 4.0.2 + Fix dep, release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-14 + 4.0.2 + Version bump + Ertan Güven + ertan@pisilinux.org + + + 2012-08-23 + 4.01 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + baselayout + http://www.pisilinux.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + library + data + system.base + Filesystem baselayout + Dosya sisteminin temel planı + Ce paquet crée la hiérarchie du système de fichier principal de Pisi Linux. + baselayout creates the Pisi Linux Linux main filesystem hierarchy. + Bu paket, Pisi Linux dosya sisteminin temelini oluşturur. + http://source.pisilinux.org/1.0/baselayout-3.10.0.tar.gz + system/base/baselayout/pspec.xml + + + baselayout + + pypolkit + + + /bin + /sbin + /lib* + /etc + /etc/pisilinux-release + /media + /boot + /proc + /home + /mnt + /opt + /dev + /run + /sys + /srv + /tmp + /usr + /var + /usr/lib/tmpfiles.d/baselayout.conf + + + System.PackageHandler + System.Package + User.Manager + Network.Stack + + + baselayout.conf + services + protocols + sysctl.conf + pisilinux-release + start-stop-daemon.8 + + + + + 2016-01-16 + 3.10.0 + Release Alfa7, New Cat in town... + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-30 + 3.10.0 + Release Alfa6. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-18 + 3.10.0 + Release bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-07-16 + 3.10.0 + Add vboxusers + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-07-16 + 3.10.0 + Release Pisi Linux 1.0 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 3.10.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-15 + 3.10.0 + Rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-19 + 3.10.0 + Update baselayout.conf + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-08 + 3.10.0 + Add baselayout.conf + Marcin Bojara + marcin@pisilinux.org + + + 2013-12-20 + 3.10.0 + Release Pisi Linux Rc2 + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-27 + 3.10.0 + Add gdm user and group, apply chmod 1777 to dev/shm aka run/shm. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-10 + 3.10.0 + Add shm dir to run, new archive. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-05 + 3.8.0 + Add missing method to pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 3.8.0 + release Izmir + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-03-24 + 3.8.0 + Pisi Linux changes. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-11 + 3.7.1 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + mingetty + ftp://ftp.suse.com/pub/projects/init/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + A compact getty program for virtual consoles only + Sadece sanal konsollar için yekpare bir getty programı + mingetty, est getty poids plume minimaliste à utiliser exclusivement sur les consoles virtuelles. + mingetty, is a lightweight, minimalist getty for use on virtual consoles only. + mingetty yalnızca sanal konsollar için tasarlanmış basit ve yalın getty uygulamasıdır. + http://sourceforge.net/projects/mingetty/files/mingetty/1.08/mingetty-1.08.tar.gz + + gettext + + + tr.patch + + system/base/mingetty/pspec.xml + + + mingetty + + glibc + + + /sbin + /usr/share/locale + /usr/share/man + /usr/share/doc + + + + + 2014-05-11 + 1.0.8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-09 + 1.0.8 + Rebuild + Kamil Atlı + suvarice@gmail.com + + + 2012-08-23 + 1.0.8 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + attr + http://acl.bestbits.at/ + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2.1 + app:console + library + system.base + Utilities for managing filesystems extended attributes + Gelişkin öznitelikler araçları + attr offre des utilitaires qui servent à manipuler les attributs étendus des objects de système de fichier. + attr contains a set of tools for manipulating extended attributes on filesystem objects, in particular getfattr and setfattr. + attr dosya sistemi nesnelerinin özniteliklerini değiştirmek için gerekli bir dizi araç sunar. + http://download.savannah.gnu.org/releases-noredirect/attr/attr-2.4.47.src.tar.gz + system/base/attr/pspec.xml + + + attr + + /bin + /lib + /usr/share/locale + /usr/share/doc + /usr/share/man + + + + attr-devel + Development files for attr + attr için geliştirme dosyaları + system.devel + + attr + + + /usr/include + /usr/share/man/man3 + + + + attr-32bit + 32-bit shared libraries for attr + emul32 + emul32 + + glibc-32bit + + + glibc-32bit + attr + + + /lib32 + + + + + 2016-03-01 + 2.4.47 + Rebuild for toolchain. + Serdar Soytetir + kaptan@pisilinux.org + + + 2015-03-15 + 2.4.47 + fix build emul32. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-30 + 2.4.47 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 2.4.47 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-28 + 2.4.47 + Version bump, clean attr. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-24 + 2.4.46 + Add emul32 + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-04 + 2.4.46 + First release + Erdem Artan + admins@pisilinux.org + + + + + + texinfo + http://www.gnu.org/software/texinfo/ + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + app:console + system.base + programme et utilitaires GNU info. + The GNU info program and utilities + GNU info (bilgi) programı ve araçları + GNU Info Prgramm und Werkzeuge + Texinfo is a documentation system that can produce both online information and printed output from a single source file. The GNU Project uses the Texinfo file format for most of its documentation. + mirrors://gnu/texinfo/texinfo-6.1.tar.gz + + ncurses + + system/base/texinfo/pspec.xml + + + texinfo + + ncurses + + + /usr/bin + /usr/lib/texinfo + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/texinfo + /usr/share/texmf/tex/texinfo + /usr/share/locale + /usr/share/texmf/ + + + System.PackageHandler + + + + + 2016-02-28 + 6.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-24 + 6.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-25 + 5.2 + Release bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 5.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-22 + 5.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-09-05 + 4.13 + Add missing method to pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2010-10-11 + 4.13 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libcap-ng + http://people.redhat.com/sgrubb/libcap-ng + + PisiLinux Community + admins@pisilinux.org + + LGPLv2+ + library + system.base + An alternate POSIX capabilities library + Alternatif bir POSIX yetenekleri kütüphanesi + libcap-ng is a library that makes using POSIX capabilities easier. + libcap-ng POSIX yeteneklerinin yönetimini kolaylaştıran bir kütüphanedir. + http://people.redhat.com/sgrubb/libcap-ng/libcap-ng-0.7.7.tar.gz + + attr-devel + python-devel + + system/base/libcap-ng/pspec.xml + + + libcap-ng + + /usr/lib + /usr/share/doc + + + + python-libcap-ng + Python bindings for libcap-ng + Python için libcap-ng bağlayıcıları + programming.language.python + + libcap-ng + + + /usr/lib/python* + + + + libcap-ng-utils + Utilities to analyse the POSIX capabilities on running processes + Çalışan süreçlerin sahip olduğu POSIX yeteneklerini incelemeye yarayan araçlar + util.admin + + libcap-ng + + + /usr/bin + /usr/share/man/man8/* + + + + libcap-ng-devel + Development files for libcap-ng + libcap-ng için geliştirme dosyaları + system.devel + + libcap-ng + + + /usr/share/aclocal + /usr/include + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + 2016-03-03 + 0.7.7 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-05-11 + 0.7.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 0.7.3 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-11 + 0.7.3 + Güncellendi. + PisiLinux Community + admins@pisilinux.org + + + 2012-08-23 + 0.7 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + glib2 + http://www.gtk.org/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + system.base + La librairie GLib2 de routines C. + A library of handy utility functions + C programlama dili için glib kütüphanesi + glib2 is the low-level core library that forms the basis for projects such as GTK+ and GNOME. It provides data structure handling for C, portability wrappers, and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system. + glib2, GTK+ ve GNOME gibi projelerin temelini oluşturan düşük seviyeli çekirdek kütüphanedir. C için veri yapıları, taşınabilirlik katmanları ve çeşitli çalışma zamanı işlevleri için arabirimler sunar. + mirrors://gnome/glib/2.46/glib-2.46.2.tar.xz + + libpcre-devel + zlib-devel + libffi-devel + + + revert-warn-glib-compile-schemas.patch + + system/base/glib2/pspec.xml + + + glib2 + + libpcre + zlib + libffi + + + /etc/profile.d + /usr/bin + /usr/lib + /usr/share/bash-completion/completions/ + /usr/share/locale + /usr/share/man + /usr/share/doc + /usr/share/glib-2.0 + /usr/share/systemtap + /usr/share/glib-2.0/schemas + + + System.PackageHandler + + + glib2.sh + glib2.csh + + + + glib2-devel + Development files for glib2 + glib2 için geliştirme dosyaları + system.devel + + glib2 + libpcre-devel + + + /usr/bin/gtester + /usr/bin/gtester-report + /usr/bin/gobject-query + /usr/bin/glib-genmarshal + /usr/bin/glib-gettextize + /usr/bin/glib-mkenums + /usr/include + /usr/lib/glib-2.0/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/aclocal + /usr/share/glib-2.0/schemas/gschema.dtd + /usr/share/glib-2.0/gettext + /usr/share/glib-2.0/gdb + /usr/share/gdb/auto-load/libglib-2.0.so.*-gdb.py* + /usr/share/gdb/auto-load/libgobject-2.0.so.*-gdb.py* + /usr/share/man/man3 + /usr/share/man/man1/glib-genmarshal.1 + /usr/share/man/man1/glib-gettextize.1 + /usr/share/man/man1/glib-mkenums.1 + /usr/share/man/man1/gobject-query.1 + /usr/share/man/man1/gtester-report.1 + /usr/share/man/man1/gtester.1 + + + + glib2-32bit + 32-bit shared libraries for glib2 + glib2 için 32-bit paylaşımlı kitaplıklar + emul32 + _emul32 + + libpcre-32bit + zlib-32bit + libffi-32bit + dbus-32bit + glibc-32bit + + + glib2 + libpcre-32bit + zlib-32bit + libffi-32bit + dbus-32bit + glibc-32bit + + + /usr/bin/32 + /usr/lib32 + + + System.PackageHandler + + + + glib2-docs + Documentation files for glib2 + Extensive documentation for developers wanting to use the GLib Library + + /usr/share/gtk-doc + + + + + 2016-01-25 + 2.46.2 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-08 + 2.44.0 + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-10-01 + 2.42.0 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 2.40.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-15 + 2.40.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-03-29 + 2.38.2 + Minor version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-22 + 2.38.1 + Minor version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-10 + 2.38.0 + Bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-05 + 2.36.3 + Add missing method to pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-26 + 2.36.3 + Fix dep, release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-14 + 2.36.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-11 + 2.36.0 + add missing dep. + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-05-16 + 2.36.0 + Path Fixed. + PisiLinux Community + admins@pisilinux.org + + + 2013-03-30 + 2.36.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-21 + 2.35.2 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libxml2 + http://www.xmlsoft.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + system.base + Version 2 of the library to manipulate XML files + XML türü dosyaları işlemeye aracılık eden kütüphanenin 2. sürümü + Libxml2 est l'analyseur et la boîte à outils XML écrit en C pour le projet Gnome (mais utilisable en dehors de la plateforme Gnome). + Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside of the Gnome platform). + Libxml2, Gnome projesi için geliştirilmiş C dilinde XML ayrıştırıcısıdır. Gnome platformu olmadan da kullanılabilir. + ftp://xmlsoft.org/libxml2/libxml2-2.9.3.tar.gz + + python-devel + xz-devel + zlib-devel + readline-devel + + system/base/libxml2/pspec.xml + + + libxml2-docs + system.doc + + libxml2 + + + /usr/share/doc + + + + libxml2 + + xz + zlib + python + readline + + + /usr/bin + /usr/lib + /usr/share/man + + + + libxml2-devel + Development files for libxml2 + libxml2 için geliştirme dosyaları + system.devel + + libxml2 + + + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/include + /usr/share/aclocal + /usr/share/man/man3 + + + + libxml2-32bit + 32-bit shared libraries for libxml2 + libxml2 için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + xz-32bit + zlib-32bit + readline-32bit + glibc-32bit + + + libxml2 + xz-32bit + zlib-32bit + glibc-32bit + + + /usr/lib32 + + + + + 2016-03-04 + 2.9.3 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-07-06 + 2.9.1 + Security update(CVE-2014-0191). + Vedta Demir + vedat@pisilinux.org + + + 2014-05-24 + 2.9.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 2.9.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-11-11 + 2.9.0 + Fix dep,release bump, binary file goes to main package. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-31 + 2.9.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-26 + 2.9.0 + Fix dep,release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-10-22 + 2.9.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + tar + http://www.gnu.org/software/tar/ + + PisiLinux Community + admins@pisilinux.org + + GPLv3+ + app:console + system.base + A GNU file archiving program + GNU dosya arşivleme uygulaması + Le programme tar fournit la possibilité de manipuler des archives de type tar. Vous pouvez l'utiliser pour créer ou extraires des archives. Ajouter des fichiers à des archives existantes, les mettre à jour ou tout simplement lister leur contenu. + The GNU tar program saves many files together in one archive and can restore individual files (or all of the files) from that archive. + GNU tar birden fazla dosyayı tek bir arşiv dosyasında birleştiren ve daha sonra bu arşiv dosyasından geri çıkartabilen bir uygulamadır. + http://mirrors.kernel.org/gnu/tar/tar-1.28.tar.xz + + tar.1 + + + acl-devel + gettext + + system/base/tar/pspec.xml + + + tar + + acl + glibc + + + /bin + /sbin + /usr/share/doc + /usr/share/man + /usr/share/locale + /usr/share/info + + + + + 2016-02-28 + 1.28 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-09-06 + 1.28 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.27.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-11-23 + 1.27.1 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2013-10-24 + 1.27 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-07-31 + 1.26 + Fix deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-08-23 + 1.26 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + spidermonkey + http://www.mozilla.org/js/spidermonkey/ + + PisiLinux Community + admins@pisilinux.org + + NPL-1.1 + library + system.base + Stand-alone JavaScript C Library + Javascript C Kitaplığı + Spidermonkey est l'Implémentation C de Javascript par Mozilla. + Spidermonkey is Mozilla's C implementation of JavaScript. + Mozilla'nın Javascript'in C implementasyonu. + Spidermonkey es la implementación de JavaScript con C de Mozilla. + http://ftp.mozilla.org/pub/mozilla.org/js/mozjs17.0.0.tar.gz + + zlib-devel + nspr-devel + readline-devel + libffi-devel + + system/base/spidermonkey/pspec.xml + + + spidermonkey + + nspr + zlib + libgcc + readline + + + /usr/bin + /usr/lib + /usr/share/doc + + + + spidermonkey-devel + Development files for spidermonkey + spidermonkey için geliştirme dosyaları + system.devel + + spidermonkey + nspr-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/bin/js17-config + + + + + 2015-05-08 + 17.0.0 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 17.0.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-30 + 17.0.0 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-28 + 17.0.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-28 + 1.8.5 + Move pc files to devel pack,rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-20 + 1.8.5 + Release bump for rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-20 + 1.8.5 + Cleanup package, bump for new build + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-09-20 + 1.8.5 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libpcre + http://www.pcre.org/ + + PisiLinux Community + admins@pisilinux.org + + BSD + library + system.base + Perl-compatible regular expression library + Perl-uyumlu sıradan ifade kütüphanesi + La librairie PCRE (Expressions Régulières Compatible avec Perl) est un ensemble de fonctions implémentant la recherche de motifs de texte à l'aide d'expressions régulières utilisant la même syntaxe et la même sémantique que Perl5. + The PCRE (Perl Compatible Regular Expressions) library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5. + PCRE kütüphanesi, Perl 5 programlama dili sözdizimi ve semantiği ile kalıp eşleştirme (pattern matching) görevini yürüten fonksiyonları barındırır. + http://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.bz2 + + readline-devel + + system/base/libpcre/pspec.xml + + + libpcre + + libgcc + readline + + + /usr/lib + /usr/share/man + /usr/share/doc + /usr/bin + + + + libpcre-devel + Development files for libpcre + libpcre için geliştirme dosyaları + system.devel + + libpcre + + + /usr/include + /usr/share/man/man3 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/doc/libpcre/html + /usr/bin/pcre-config + /usr/share/man/man1/pcre-config.1* + /usr/share/doc/libpcre/pcre-config.txt + + + + libpcre-32bit + 32-bit shared libraries for libpcre + libpcre için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + readline-32bit + glibc-32bit + + + libgcc + glibc-32bit + libpcre + + + /usr/lib32 + + + + + 2016-02-25 + 8.38 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-01-25 + 8.36 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 8.34 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-03 + 8.34 + Version bump. + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-09-01 + 8.33 + Version bump, clean pcre. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-28 + 8.32 + Fix deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-05-20 + 8.32 + adress fixed + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-02-16 + 8.32 + Update + Osman Erkan + osman.erkan@pisilinux.org + + + 2011-03-11 + 8.31 + First release + Erdem Artan + admins@pisilinux.org + + + + + + groff + http://www.gnu.org/software/groff/groff.html + + PisiLinux Community + admins@pisilinux.org + + GPLv3+ + BSD + MIT + app:console + system.base + S'occupe de la mise en forme de texte utilisé pour les pages de manuel + A document formatting system + Belge biçimlendirme sistemi + Text Formatierer für man pages + groff is a document formatting system. Groff takes standard text and formatting commands as input and produces formatted output. + groff bir belge biçimlendirme sistemidir. Groff standart metni ve biçimlendirme komutlarını alır ve biçimlendirilmiş çıktı oluşturur. + http://ftp.gnu.org/gnu/groff/groff-1.22.3.tar.gz + + texinfo + + + groff-1.19.2-man-unicode-dashes.patch + groff-1.22.3-parallel-mom.patch + + system/base/groff/pspec.xml + + + groff + + texinfo + libgcc + + + /etc + /usr/bin + /usr/lib + /usr/share/groff + + + + groff-doc + system.doc + + groff + + + /usr/share/doc + /usr/share/man + /usr/share/info + + + + 2015-04-02 - 4.3.20 - Rebuild for kernel 3.19.3 + 1.22.3 + Release bump, remove X builddep. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.22.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 1.22.2 + Rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-26 + 1.22.2 + Fix dep, release bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-02-16 + 1.22.2 + Updated + PisiLinux Community + admins@pisilinux.org + + + 2012-11-25 + 1.21 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + ncompress + http://ncompress.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + public-domain + app:console + system.base + Un autre outil de décompression de données pour compatibilité + Another uncompressor for compatibility + Bir başka sıkışmış dosya açma programı + Ein weiterer Nichtkompressor zu Kompatibilitätszwecken + The ncompress package contains the compress and uncompress file compression and decompression utilities, which are compatible with the original UNIX compress utility (.Z file extensions). These utilities can't handle gzipped (.gz file extensions) files, but gzip can handle compressed files. + mirrors://sourceforge/ncompress/ncompress-4.2.4.4.tar.gz + + ncompress-4.2.4-make.patch + ncompress-4.2.4-lfs2.patch + ncompress-2GB.patch + ncompress-4.2.4-endians.patch + + system/base/ncompress/pspec.xml + + + ncompress + + /usr/bin + /usr/share/man + + + + + 2014-05-11 + 4.2.4.4 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2011-12-20 + 4.2.4.4 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + pycurl + http://pycurl.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + system.base + Python cURL Module + Python cURL Modülü + PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program. + PycURL, python libcurl için python arayüzüdür. PycURL, URL tarafında tanımlanan nesneleri indirmek için bir python programı tarafından kullanılabilir. + https://dl.bintray.com/pycurl/pycurl/pycurl-7.43.0.tar.gz + + curl-devel + python-devel + openssl-devel + + system/base/pycurl/pspec.xml + + + pycurl + + curl + python + openssl + + + /usr/lib + /usr/share/doc + + + + + 2016-03-02 + 7.43.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 7.19.3.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-01 + 7.19.3.1 + Version bump. + Kamil Atlı + suvarice@gmail.com + + + 2013-12-19 + 7.19.0.2 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-03-12 + 7.19.0.2 + Version bum. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-03-12 + 7.19.0 + Fix pisi https issue + Pisi Linux Admins + marcin@pisilinux.org + + + 2010-10-11 + 7.19.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + usbutils + http://linux-usb.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + app:console + system.base + Linux USB utilities + USB listeleme araçları + Usbutils fournit des utilitaires d'énumération usb. + usbutils provides utilities for inspecting devices connected to a USB bus. + usbutils, USB aygıt veritabanı ile sistemdeki USB aygıtları listelemeye yarayan lsusb aracını içerir. + https://www.kernel.org/pub/linux/utils/usb/usbutils/usbutils-008.tar.xz + + usb.ids + + + libusb-devel + eudev-devel + + system/base/usbutils/pspec.xml + + + usbutils + + libusb + eudev + + + /usr/bin + /usr/sbin + /usr/share/man + /usr/share/doc + /usr/share/misc + /usr/share/pkgconfig + + + + + 2015-12-26 + 008 + Version bump and update usb.ids. + Stefan Gronewold + groni@pisilinux.org + + + 2014-09-12 + 007 + Update usb.ids. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 007 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 007 + rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-03 + 007 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-08-23 + 006 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + shadow + http://pkg-shadow.alioth.debian.org/ + + PisiLinux Community + admins@pisilinux.org + + BSD + app:console + system.base + Utilities to deal with user accounts + Kullanıcı hesapları yönetimi için araçlar + Le paquet des utilitaires pour le fichier de mot de passe Shadow regroupe les programmes nécessaires à convertir les fichiers de mots de passe traditionnels V7*NIX au format de mot passe shadow SVR4 ainsi que d'autres outils destinés à la gestion des fichiers des groupes et de mots de passe (qui fonctionnent aussi bien pour les mots de passe shadow que non-shadow). + The Shadow password file utilities package includes programs necessary to convert traditional V7 *NIX password files to the SVR4 shadow password format, and additional tools to maintain password and group files (that work with both shadow and non-shadow passwords). + Shadow parola dosyası yardımcı uygulamalar paketi, geleneksel V7 *nix parola dosyalarını SVR4 shadow parola biçimine dönüştüren programlar ile parola ve grup dosyalarının bakımı için ilave araçlar içerir. + http://pkg-shadow.alioth.debian.org/releases/shadow-4.2.1.tar.xz + + pam-devel + gettext-devel + acl-devel + attr-devel + + + shadow-strncpy-usage.patch + xstrdup.patch + + system/base/shadow/pspec.xml + + + shadow + Utilitaires pour gérer les comptes utilisateurs + Kullanıcı hesaplarını düzenlemek için araçlar. + + acl + attr + pam + + + /bin + /usr/bin + /sbin + /usr/sbin + /etc + /lib + /usr/share/man + /usr/share/doc + /usr/share/info + /usr/share/locale + + + securetty + default/useradd + pam.d/login + pam.d/other + pam.d/passwd + pam.d/shadow + pam.d/shadow + pam.d/shadow + pam.d/shadow + pam.d/shadow + pam.d/shadow + pam.d/shadow + pam.d/shadow + pam.d/shadow + pam.d/shadow + pam.d/shadow + pam.d/shadow + pam.d/su + pam.d/system-auth + login.defs + + + + + 2015-04-01 + 4.2.1 + Version bump., remove build with audit + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 4.1.5.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 4.1.5.1 + Rebuild without-libcrack, clean shadow, fix login defs. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-30 + 4.1.5.1 + Rebuild with-libcrack, clean shadow. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-26 + 4.1.5.1 + Release bump for rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-08-23 + 4.1.5.1 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + kbd + http://freshmeat.net/projects/kbd/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Keyboard and console utilities + Klavye ve konsol araçları + Le paquet kbd contient les fichiers de configuration de touches ainsi que divers utilitaires pour claviers compatible avec le noyau 1.1.54 et suivants. + The kbd package contains keytable files and keyboard utilities compatible with kernel version 1.1.54 and later. + Kbd paketi, çekirdek sürüm 1.1.54 ve sonraki sürümlerle uyumlu anahtar tablo dosyaları ve klavye yardımcı uygulamaları içerir. + https://www.kernel.org/pub/linux/utils/kbd/kbd-2.0.3.tar.xz + http://source.pisilinux.org/1.0/kbd-latarcyrheb-16-fixed.tar.bz2 + http://source.pisilinux.org/1.0/kbd-latsun-fonts.tar.bz2 + http://source.pisilinux.org/1.0/ro_maps.tar.bz2 + + gettext + gzip + pam-devel + check-devel + + + mandriva/kbd-1.15-mandriva.patch + mandriva/kbd-1.15-tilde_twosuperior_french_kbd.patch + mandriva/kbd-1.12-data_thai.patch + mandriva/kbd-1.15-remove-unneeded-calls.patch + archlinux/fix-euro2.patch + pisilinux/unicode_start-default-font.patch + pisilinux/tr-keypad-comma.patch + pisilinux/tr-no-meta_space.patch + pisilinux/trq-capslock-fix.patch + pisilinux/currency.patch + pisilinux/trf-keymap-fixes.patch + pisilinux/trf-capslock-fix.patch + + system/base/kbd/pspec.xml + + + kbd + + pam + + + /bin + /usr/bin + /usr/share/doc + /usr/share/man + /usr/share/kbd/keymaps + /usr/share/kbd/locale + /usr/share/kbd/unimaps + /usr/share/kbd/consolefonts + /usr/share/kbd/consoletrans + + + pisilinux/lat5u-12.psf.gz + pisilinux/lat5u-14.psf.gz + pisilinux/lat5u-16.psf.gz + mandriva/mac-fr-ext_new.kmap.gz + + + + + 2015-08-25 + 2.0.3 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-08 + 2.0.2 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.15.5 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 1.15.5 + rebuild. + PisiLinux Community + admins@pisilinux.org + + + 2013-07-26 + 1.15.5 + Fix dep, release bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-05-30 + 1.15.5 + Fix dep, release bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-01-14 + 1.15.5 + New release + PisiLinux Community + admins@pisilinux.org + + + 2012-08-23 + 1.15.2 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + vixie-cron + http://www.gentoo.org/ + + PisiLinux Community + admins@pisilinux.org + + as-is + service + system.base + Paul Vixie's cron daemon, a fully featured crond implementation + Tam teşekküllü bir crond uyarlaması + Vixie cron (Cron est un daemon qui lance des tâches planifiées) est une implémentation riche basée sur le cron SysV. Chaque utilisateur possède sa propre table de planification (ou crontab - la CRON TABle de Crontab) est un fichier qui contient le planning de cron) et a la possibilité de spécifier des variables d'environnement au sein de la table. + Vixie cron (Cron is a daemon that runs scheduled tasks.) is a full featured cron implementation based on SysV cron. Each user has his own crontab ( Crontab (CRON TABle) is a file which contains the schedule of cron) and is allowed to specify environment variables within that crontab. + Vixie-cron (cron, zamanlanmış görevleri çalıştıran dinleyici programdır.) SysV cron tabanlı tam sürüm cron uygulamasıdır. Her kullanıcı kendi crontab 'ına (crontab cron listesini içeren dosyadır.) sahiptir ve bu crontab içinde ortam değişkenlerini yazmasına müsade edilmiştir. + ftp://ftp.linux.org.tr/pub/gentoo/distfiles/vixie-cron-4.1.tar.bz2 + + sed + pam-devel + + + vixie-cron-4.1-gentoo-r4.patch.bz2 + crontab.5.diff + vixie-cron-4.1-commandline.patch + vixie-cron-4.1-pam.patch + vixie-cron-4.1-CAN-2005-1038.patch + CVE-2006-2607.patch + CVE-2007-1856.patch + + system/base/vixie-cron/pspec.xml + + + vixie-cron + + pam + comar-api + + + /usr/sbin + /usr/bin + /etc + /var/spool + /usr/share/doc + /usr/share/man + + + System.Package + System.Service + + + run-crons-0.3.1 + crontab + vixie-cron-4.1-cron.deny + cron.pam.d + + + + + 2015-05-04 + 4.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2010-10-11 + 4.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + leveldb + https://code.google.com/p/leveldb + + Alihan Öztürk + alihan@pisilinux.org + + BSD + app:console + system.base + A fast and lightweight key/value database library + Hızlı ve hafif bir anahtar/değer veri kütüphanesi + LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. + LevelDB dize değerleri ile dize anahtarlarını eşleme sağlayan, Google'da yazılmış hızlı bir anahtar-değer depolama kütüphanesidir. + https://github.com/google/leveldb/archive/v1.18.tar.gz + + gperftools-devel + snappy-devel + + system/base/leveldb/pspec.xml + + + leveldb + + libgcc + snappy + gperftools + + + /usr/lib + /usr/share/doc + + + + leveldb-devel + + leveldb + + + /usr/include + + + + + 2016-03-02 + 1.18 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-14 + 1.18 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-02 + 1.17 + First release + Alihan Öztürk + alihan@pisilinux.org + + + + + + ca-certificates + http://packages.qa.debian.org/c/ca-certificates.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + MPL-1.1 + app:web + system.base + Common CA certificates + Common CA certificates + http://ftp.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_20160104.tar.xz + system/base/ca-certificates/pspec.xml + + + ca-certificates + + run-parts + + + /etc + /usr/share/man + /usr/sbin + /usr/share/ca-certificates + + + System.Package + + + + + 2016-03-03 + 20160104 + Rebuild with new toolchain. + Alihan Öztürk + alihan@pisilinux.org + + + 2016-01-15 + 20160104 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-01-10 + 20141019 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-01-10 + 20141019 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 20140325 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-01 + 20140325 + Version bump, fix installation. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-03-03 + 20130906 + First Release + PisiLinux Community + admins@pisilinux.org + + + + + + python + http://www.python.org/ + + PisiLinux Community + admins@pisilinux.org + + PSF-2.2 + app:console + system.base + An interpreted, interactive, object-orientated programming language + Nesneye yönelik bir programlama dili + Python est un langage de programmation dynamique orienté objet pouvant être utilisé pour différents types de développements logiciels. Il offre une intégration renforcée aussi bien avec les autres langages qu'avec des outils. Il est livré avec des librairies standards couvrant un large périmètre et peut être appris en quelques jours. + Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. + Python, yazılım geliştirmenin birçok aşamasında kullanılabilen, dinamik nesne tabanlı bir programlama dilidir. Diğer programlama dilleriyle bütünleşme için sağlam bir destek sunar, kapsamlı standart kütüphanelerle sunulur ve birkaç günde öğrenilebilir. + http://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz + + bzip2 + gdbm-devel + zlib-devel + expat-devel + libffi-devel + sqlite-devel + ncurses-devel + openssl-devel + readline-devel + + + pisilinux_platform.patch + add-pisilinux-to-search-path.patch + default-utf8.patch + disable-egginfo.patch + trfix_emaillib.patch + + system/base/python/pspec.xml + + + python + + noDelta + + + gdbm + zlib + bzip2 + expat + libffi + sqlite + ncurses + openssl + readline + + + /etc + /usr/bin + /usr/include/python2.7/pyconfig.h + /usr/lib + /usr/share/doc + /usr/share/man + + + System.PackageHandler + + + pythonstart + 04python + + + + python-devel + Development files for python + python için geliştirme dosyaları + system.devel + + python + + + /usr/include + /usr/lib/pkgconfig + + + + + 2016-03-02 + 2.7.11 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-12-12 + 2.7.9 + Version bump and security fixes. + Vedat Demir + vedat@pisilinux.org + + + 2014-07-05 + 2.7.8 + Version bump and security fixes. + Vedat Demir + vedat@pisilinux.org + + + 2014-06-02 + 2.7.7 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 2.7.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-25 + 2.7.6 + Add upstream patch. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-20 + 2.7.6 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-09-05 + 2.7.5 + Add missing method to pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 2.7.5 + Clean python. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-21 + 2.7.5 + Add some patches. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-16 + 2.7.5 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-07-11 + 2.7.3 + First release + Erdem Artan + admins@pisilinux.org + + + + + + python-psutil + https://github.com/giampaolo/psutil + + PisiLinux Community + admins@pisilinux.org + + BSD + library + system.base + A cross-platform process utilities module for Python + Platform bağımsız, süreçler hakkında bilgi sağlayan bir Python modülü + python-psutil is a module providing an interface for retrieving information on all running processes and system utilization (CPU, memory) in a portable way by using Python, implementing many functionalities offered by command line tools like ps, top, kill, lsof and netstat. + python-psutil, bütün çalışan süreçler ve sistem kullanımı (MİB - Merkezi İşlem Birim(CPU) ve hafıza gibi) hakkında bilgilere erişimek için arayüz sunan bir Python modülüdür. ps, top, kill, lsof, netstat gibi bir çok komut satırı araçlarının sunduğu işlevselliği sağlamaktadır. + https://github.com/giampaolo/psutil/archive/release-4.0.0.tar.gz + + python-devel + + system/base/python-psutil/pspec.xml + + + python-psutil + + python + + + /usr/lib + /usr/share/doc + + + + + 2016-03-02 + 4.0.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-12 + 2.2.1 + Version bump + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-11-19 + 1.1.3 + Version bump + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2012-11-16 + 0.6.1 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + gdbm + http://www.gnu.org/software/gdbm/gdbm.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + Standard GNU database libraries included for compatibility with Perl + Perl uyumlu standart GNU veritabanı kütüphaneleri + GNU dbm est un ensemble de routines de base de données utilisant extensivement les dictionnaires (hashing). Il fonctionne de manière similaire aux routines dbm UNIX standards. + GNU dbm is a set of database routines that use extensible hashing. It works similar to the standard UNIX dbm routines. + GNU dbm genişletilebilir hash yapabilen veritabanı işlevleri sağlar. Standart UNIX dbm uygulamaları ile aynı şekilde çalışır. + mirrors://gnu/gdbm/gdbm-1.11.tar.gz + + gdbm-1.10-zeroheaders.patch + + system/base/gdbm/pspec.xml + + + gdbm + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/locale + /usr/share/man + /usr/share/info + + + + gdbm-devel + Development files for gdbm + gdbm için geliştirme dosyaları + system.devel + + gdbm + + + /usr/include + + + + + 2016-03-02 + 1.11 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.11 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 1.11 + Version bump + PisiLinux Community + admins@pisilinux.org + + + 2013-08-29 + 1.10 + Clean gdbm. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-08-31 + 1.10 + First release + Erdem Artan + admins@pisilinux.org + + + + + + cpio + http://www.gnu.org/software/cpio/cpio.html + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + app:console + system.base + A file archival tool which can also read and write tar files + Tar ve cpio dosyaları içine yazıp okuyabilen bir dosya arşivleme uygulaması + GNU cpio permet de copier des fichiers du système dans une archive cpio ou tar et vice-versa. L'archive peut être un simple fichier sur le disque, une cassette magnétique, ou un tuyau unix (pipe). GNU cpio gère les formats d'archive suivant : binaire, ASCII ancien, ASCII nouveau, crc, binaire HPUX, ASCII ancien HPUX, tar ancien et tar POSIX.1. + GNU cpio copies files into or out of a cpio or tar archive. The archive can be another file on the disk, a magnetic tape, or a pipe. GNU cpio supports the following archive formats: binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, and POSIX.1 tar. + GNU cpio dosyaları cpio veya tar arşivlerine kopyalamaya veya bu arşivlerden çıkarmak için tasarlanmıştır. Arşiv diskteki başka bir dosya, manyetik bir teyp veya bir boru sistemi olabilir. GNU cpio şu arşiv formatlarını destekler: ikili, eski ASCII, yeni ASCII, crc, HPUX ikili, HPUX eski ASCII, eski tar ve POSIX.1 tar. + mirrors://gnu/cpio/cpio-2.12.tar.bz2 + + cpio-2.9-exitCode.patch + CVE-2010-0624-rpatelib-overflow.patch + + system/base/cpio/pspec.xml + + + cpio + + /bin + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/locale + + + + + 2016-03-01 + 2.12 + Rebuild for toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-03 + 2.12 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 2.11 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 2.11 + rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-08-24 + 2.11 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + expat + http://expat.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + as-is + library + system.base + librairies d'analyse XML + XML parsing libraries + XML ayrıştırıcı kütüphaneleri + XML Parser Bibliotheken + This is expat, the C library for parsing XML, written by James Clark. Expat is a stream oriented XML parser. This means that you register handlers with the parser prior to starting the parse. These handlers are called when the parser discovers the associated structures in the document being parsed. A start tag is an example of the kind of structures for which you may register handlers. + mirrors://sourceforge/expat/expat-2.1.0.tar.gz + + gnuconfig + glibc-devel + + system/base/expat/pspec.xml + + + expat + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + + + + expat-devel + Development files for expat + expat için geliştirme dosyaları + system.devel + + glibc-32bit + + + expat + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/doc/expat/html + + + + expat-32bit + 32-bit shared libraries for expat + expat için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + expat + + + /usr/lib32 + + + + + 2016-03-02 + 2.1.0 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 2.1.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-27 + 2.1.0 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-01-21 + 2.1.0 + Remove patch which causing test error for perl-XML-Parser. + Marcin Bojara + marcin@pisilinux.org + + + 2011-03-01 + 2.1.0 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + net-tools + http://sites.inka.de/lina/linux/NetTools/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Standard Linux networking tools + Linux ağ araçları + net-tools est une collection de programmes représentant les outils réseau de base du système d'exploitation Linux. S'y trouvent arp, hostname, ifconfig, ipmaddr, iptunnel, mii-tool, nameif, netstat, plipconfig, rarp, route et slattach. + net-tools is a collection of programs that form the base set of the networking tools for the Linux operating system. It includes arp, hostname, ifconfig, ipmaddr, iptunnel, mii-tool, nameif, netstat, plipconfig, rarp, route and slattach. + Net-tools, Linux işletim sisteminde kullanılan ağ ile ilgili temel araçların bir birleşimidir. Arp, hostname, ifconfig, ipmaddr, iptunnel, mii-tool, nameif, netstat, plipconfig, rarp, route ve slattach programlarını içerir. + ftp://ftp.linux.org.tr/pub/mirrors/gentoo/distfiles/net-tools-1.60.tar.bz2 + + 01_all_net-tools-1.60-2.6-compilefix.patch.bz2 + 02_all_net-tools-1.60-gcc34.patch.bz2 + 03_all_net-tools-1.60-cleanup-list-handling.patch.bz2 + 04_all_net-tools-1.60-get_name.patch.bz2 + 20_all_net-tools-1.54-ipvs.patch.bz2 + 21_all_net-tools-1.57-bug22040.patch.bz2 + 22_all_net-tools-1.60-manydevs.patch.bz2 + 23_all_net-tools-1.60-miiioctl.patch.bz2 + 24_all_net-tools-1.60-virtualname.patch.bz2 + 25_all_net-tools-1.60-cycle.patch.bz2 + 26_all_net-tools-1.60-overflow.patch.bz2 + 27_all_net-tools-1.60-netstat_ulong.patch.bz2 + 50_all_net-tools-1.60-multiline-string.patch.bz2 + 51_all_net-tools-1.60-man.patch.bz2 + 52_all_net-tools-1.60-numeric-ports.patch.bz2 + 53_all_net-tools-1.60-appletalk.patch.bz2 + 54_all_net-tools-1.60-wide.patch.bz2 + 55_all_net-tools-1.60-Makefile.patch.bz2 + 56_all_net-tools-1.60-ipv6-hostname.patch.bz2 + 57_all_net-tools-1.60-ifconfig-infiniband.patch.bz2 + 60_all_net-tools-1.60-headers.patch.bz2 + net-tools-missing.patch + kernel_headers.patch + gcc-4.3.patch + large-buffer.patch + + system/base/net-tools/pspec.xml + + + net-tools + + comar + comar-api + + + /bin + /sbin + /usr/bin + /usr/sbin + /usr/share/doc + /usr/share/man + /usr/share/locale + + + + + 2014-05-11 + 1.60 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-30 + 1.60 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-10-13 + 1.60 + First release + Erdem Artan + admins@pisilinux.org + + + + + + libunwind + http://www.nongnu.org/libunwind/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + system.base + Call chain tracer of a program + Yazılım çağrıları geri izleme aracı + libunwind is a portable and efficient C programming interface (API) to determine the call chain of a program. + libunwind bir yazılımın çağrı sıralamasını takip etmek için kullanılan, hızlı çalışan ve taşınabilir bir C programlama arabirimidir. + http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz + + xz-devel + + system/base/libunwind/pspec.xml + + + libunwind + + xz + + + /usr/lib + /usr/share/doc/libunwind + /usr/share/man + /usr/share/man/man3 + + + + libunwind-devel + Development files for libunwind + libunwind için geliştirme dosyaları + + libunwind + + + /usr/include + /usr/lib/pkgconfig + + + + + 2016-03-02 + 1.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-01-30 + 1.1 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-20 + 1.1 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-07-27 + 1.1 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-02-16 + 1.1 + New release + Serdar Soytetir + kaptan@pisilinux.org + + + 2011-12-09 + 1.0.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libusb + http://libusb.org/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + system.base + Userspace access to USB devices + Project's main aim is to create a library for use by user level applications to access USB devices regardless of OS. + http://downloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.19/libusb-1.0.19.tar.bz2 + + eudev-devel + + system/base/libusb/pspec.xml + + + libusb + + eudev + + + /usr/bin + /usr/lib + /usr/share/doc + + + libusbx + + + libusbx + + + + libusb-devel + Development files for libusb + system.devel + + libusb + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + libusbx-devel + + + libusbx-devel + + + + libusb-32bit + 32-bit shared libraries for libusb + emul32 + emul32 + + glibc-32bit + + + libusb + eudev-32bit + glibc-32bit + + + /usr/lib32 + + + libusbx-32bit + + + libusbx-32bit + + + + + 2014-04-30 + 1.0.19 + rename libusbx to libusb like upsteam + version bump to 19 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-16 + 1.0.18 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-29 + 1.0.17 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-27 + 1.0.16 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-07-27 + 1.0.16 + Move .pc files to devel package + Fatih Turgel + hitaf@pisilinux.org + + + 2013-07-23 + 1.0.16 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-12 + 1.0.14 + First release + Erdem Artan + admins@pisilinux.org + + + + + + liblogging + http://www.liblogging.org + + Marcin Bojara + marcin@pisilinux.org + + BSD-2 + library + system.base + Easy to use, portable, open source library for system logging + Liblogging offers an enhanced replacement for the syslog() call, but retains its ease of use. + http://download.rsyslog.com/liblogging/liblogging-1.0.3.tar.gz + system/base/liblogging/pspec.xml + + + liblogging + + /usr/lib + /usr/bin + /usr/share/man + /usr/share/doc/liblogging + + + + liblogging-devel + Development files for liblogging + system.devel + + liblogging + + + /usr/include/liblogging/stdlog.h + /usr/lib/pkgconfig/liblogging-stdlog.pc + + + + + 2014-05-11 + 1.0.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-30 + 1.0.3 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + python-pyliblzma + http://pypi.python.org/pypi/pyliblzma + + PisiLinux Community + admins@pisilinux.org + + LGPLv3 + library + system.base + Python bindings for lzma + Python için lzma bağlayıcıları + pyliblzma provides a python interface for the liblzma library to read/write data that has been compressed/decompressed with lzma utils. + pyliblzma, lzma araçlarıyla sıkıştırılmış verileri açmak ve lzma kitaplığı kullanarak veri sıkıştırmak için python programlama arayüzü sunan bir pakettir. + http://pypi.python.org/packages/source/p/pyliblzma/pyliblzma-0.5.3.tar.bz2 + + xz-devel + python-setuptools + python-devel + + system/base/python-pyliblzma/pspec.xml + + + python-pyliblzma + + xz + python + + + /usr/lib/python2* + /usr/share/doc + + + + + 2016-03-02 + 0.5.3 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 0.5.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 0.5.3 + rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-28 + 0.5.3 + Fix deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-10-11 + 0.5.3 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + gperf + http://www.gnu.org/software/gperf/gperf.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + A perfect hash function generator + Mükemmel hash üreticisi + gperf is a perfect hash function generator. For a given list of strings, it produces a hash function and hash table, in form of C or C++ code, for looking up a value depending on the input string. The hash function is perfect, which means that the hash table has no collisions, and the hash table lookup needs a single string comparison only. + gperf mükemmel hash fonksiyonu üretecidir. Verilen bir katar listesi için C ve C++ kodu biçiminde bir hash fonksiyonu ve hash tablosu üretir. + GNU gperf es un generador de perfect hash. Produce una función hash y una tabla hash a base de una lista de cadenas, en forma de código C o C++ , para revisar valores dependiendo de una cadena de entrada. La función de hash es perfecta, lo que quiere decir que no hay colisiones en la tabla de hash, y para la búsqueda en la tabla hash se necesita solamente una comparación. + mirrors://gnu/gperf/gperf-3.0.4.tar.gz + system/base/gperf/pspec.xml + + + gperf + + libgcc + + + /usr/bin + /usr/share/doc + /usr/share/info + /usr/share/man + + + + + 2016-03-05 + 3.0.4 + Rebuild with new toolchain. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-05-11 + 3.0.4 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-24 + 3.0.4 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-07-26 + 3.0.4 + Fix dep,release bump. + PisiLinux Community + admins@pisilinux.org + + + 2012-08-23 + 3.0.4 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + psmisc + http://psmisc.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + A set of tools that use the proc filesystem + proc dosya sistemi kullanan bir araç takımı + PSmisc est une collection de petits utilitaires utilisant le système de fichier /proc, et assiste l'administrateur système dans ses tâches habituelles. + PSmisc is a collection of small utilities using /proc file system, and providing the system administrator with some help in common tasks. + PSmisc, /proc dosya sistemini kullanan küçük araçlar yardımıyla sistem yöneticisine bazı genel görevlerde yardımcı olmayı amaçlar. + PSmisc ist eine Sammlung von kleinen Anwendungen, die das /proc Dateisystem verwenden und dem System Administrator Hilfe für gängige Aufgaben bieten. + mirrors://sourceforge/psmisc/psmisc-22.21.tar.gz + + ncurses-devel + gettext + + + psmisc-fuser.patch + + system/base/psmisc/pspec.xml + + + psmisc + + ncurses + + + /bin + /usr/bin + /usr/share/man + /usr/share/doc + /usr/share/locale + + + + + 2015-05-03 + 22.21 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 22.20 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-14 + 22.20 + New version + Ertan Güven + ertan@pisilinux.org + + + 2012-08-24 + 22.19 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libunistring + http://www.gnu.org/software/libunistring + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + LGPLv3 + library + system.base + Unicode string library + Unicode karakter dizisi kitaplığı + This library provides functions for manipulating Unicode strings and for manipulating C strings according to the Unicode standard. + Bu kitaplığı unicode standartına göre unicode ve C karakter dizilerinde değişiklik yapmak için kullanılabilecek fonksiyonlar sunar. + mirrors://gnu/libunistring/libunistring-0.9.3.tar.gz + system/base/libunistring/pspec.xml + + + libunistring + + /usr/lib + /usr/share/doc + /usr/share/info + + + + libunistring-devel + Development files for libunistring + libunistring için geliştirme dosyaları + system.devel + + libunistring + + + /usr/include + + + + + 2014-05-11 + 0.9.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-30 + 0.9.3 + Rebuild + Pisi Linux Admins + admins@pisilinux.org + + + 2011-02-10 + 0.9.3 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + nss-mdns + http://0pointer.de/lennart/projects/nss-mdns/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + Name Service Switch module + İsim servisi değiştirme modülü + Module d'échange de service de nom pour le DNS Multicast. + Name Service Switch module for Multicast DNS. + Çoklu gönderim yapan DNS'ler için isim servisi seçme modülü. + http://0pointer.de/lennart/projects/nss-mdns/nss-mdns-0.10.tar.gz + + nss-mdns-0.8-avahi-socket.patch + + system/base/nss-mdns/pspec.xml + + + nss-mdns + + /etc + /usr/lib + /usr/share/doc + + + mdns.allow + + + + + 2014-05-11 + 0.10 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 0.10 + Rebuild + Pisi Linux Admins + admins@pisilinux.org + + + 2010-10-11 + 0.10 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + sed + http://sed.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + GNU Stream Editor + GNU stream düzenleyici + Sed est un éditeur de flux. Un éditeur de flux est utilisé pour réaliser des opérations basiques de modification de texte sur un flux d'entrée (un fichier ou un tuyau unix). + Sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). + Sed bir dosyadan veya standart girdiden (klavyeden) bilgi okur ve standart çıktıya (ekrana) okuduğu bilgileri kullanıcının belirlediği düzene sokarak yazar. + mirrors://gnu/sed/sed-4.2.2.tar.gz + + gettext-devel + + system/base/sed/pspec.xml + + + sed + + acl + + + /bin + /usr/bin + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/locale + + + + + 2016-02-28 + 4.2.2 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 4.2.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-27 + 4.2.2 + Clean sed. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-14 + 4.2.2 + Release bump for rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-14 + 4.2.2 + New release + PisiLinux Community + admins@pisilinux.org + + + 2010-10-11 + 4.2.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + bc + http://www.gnu.org/software/bc + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Console-based calculator utility + Konsol temelli hesap makinesi + bc est un langage de calcul numérique à précision arbitraire qui peut être utilisé comme calculatrice. La syntaxe est similaire au C, avec quelques différences notables. Il supporte par exemple l'exécution interactive de commandes. + bc is an arbitrary precision numeric processing language and can be used as a calculator. Syntax is similar to C, but differs in many substantial areas. For example, it supports interactive execution of statements. + bc, herhangi bir keskinlikte sayısal işlemler yapmayı sağlayan bir programlama dilidir ve bir hesap makinesi olarak kullanılabilir. Sözdizimi C programlama diline benzer, ancak C'den birçok önemli farkları vardır. Örneğin, ifadelerin etkileşimli bir şekilde çalışmasına olanak tanır. + ftp://alpha.gnu.org/gnu/bc/bc-1.06.95.tar.bz2 + + flex + texinfo + readline-devel + + + fedora/bc-1.06.95-memleak.patch + fedora/bc-1.06-dc_ibase.patch + fedora/bc-1.06.95-matlib.patch + + system/base/bc/pspec.xml + + + bc + + readline + + + /usr/bin + /usr/share/doc + /usr/share/man + /usr/share/info + + + + + 2016-03-05 + 1.06.95 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.06.95 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 1.06.95 + rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2011-01-02 + 1.06.95 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + bash + http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + + Pisi Linux Admins + admins@pisilinux.org + + GPLv2 + app:console + system.base + The standard GNU Bourne again shell + GNU Bource again kabuğu + Bash est le Bourne Again SHell du projet GNU, une implémentation complête du POSIX IEEE et des spécifications d'interprétation de commande (shell) de l'Open Group, avec édition interactive de ligne de commande et des fonctionnalités à la csh tels que la substitution dans l'historique de commande. + 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. + Bash, IEEE POSIX ve Open Group'un interaktif komut satırı düzenleme, geçmiş komutları tamamlama gibi csh tipi özellikler gibi kabuk uygulamaları tariflerinin tam olarak uygulayan GNU Projesinin Bourne Again SHell kabuk programıdır. + mirrors://gnu/bash/bash-4.3.30.tar.gz + + ncurses-devel + + + official/bash43-031.tar.gz + official/bash43-032.tar.gz + official/bash43-033.tar.gz + official/bash43-034.tar.gz + official/bash43-035.tar.gz + official/bash43-036.tar.gz + official/bash43-037.tar.gz + official/bash43-038.tar.gz + official/bash43-039.tar.gz + fedora/bash-2.02-security.patch + fedora/bash-2.03-paths.patch + fedora/bash-2.03-profile.patch + fedora/bash-2.05a-interpreter.patch + fedora/bash-2.05b-debuginfo.patch + fedora/bash-2.05b-manso.patch + fedora/bash-2.05b-pgrp_sync.patch + fedora/bash-2.05b-readline-oom.patch + fedora/bash-2.05b-xcc.patch + fedora/bash-3.2-audit.patch + fedora/bash-3.2-ssh_source_bash.patch + fedora/bash-4.0-nobits.patch + fedora/bash-4.1-broken_pipe.patch + fedora/bash-4.1-defer-sigchld-trap.patch + fedora/bash-4.1-examples.patch + fedora/bash-4.2-coverity.patch + fedora/bash-4.2-manpage_trap.patch + fedora/bash-4.2-rc2-logout.patch + fedora/bash-4.2-size_type.patch + fedora/bash-bashbug.patch + fedora/bash-infotags.patch + fedora/bash-requires.patch + fedora/bash-setlocale.patch + fedora/bash-tty-tests.patch + + system/base/bash/pspec.xml + + + bash + + ncurses + + + /etc + /bin + /usr/bin + /usr/share/doc + /usr/share/info + /usr/share/man + /usr/share/locale + + + bashrc + command-not-found.sh + + + + + 2016-02-28 + 4.3_p39 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-07-09 + 4.3_p39 + Update + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2015-08-20 + 4.3_p33 + Update + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-10-13 + 4.3_p30 + Update + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-09-27 + 4.3_p26 + Update + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 4.3_p8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-03 + 4.3_p8 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-28 + 4.2_p45 + rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-11-24 + 4.2_p45 + Update + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-24 + 4.2_p39 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + cracklib + http://www.sourceforge.net/projects/cracklib + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + Librairie de vérification de mot de passe. + Password Checking Library + Parola Kontrol Kütüphanesi + Bibliothek, um Passwörter zu prüfen + CrackLib tests passwords to determine whether they match certain security-oriented characteristics, with the purpose of stopping users from choosing passwords that are easy to guess. + CrackLib, kullanıcıların kolay tahmin edilebilir parolalar seçmelerini engellemek amacıyla parolaların güvenlik odaklı bazı özelliklere sahip olup olmadıklarını denetler. + https://github.com/cracklib/cracklib/releases/download/cracklib-2.9.6/cracklib-2.9.6.tar.gz + + zlib-devel + python-devel + miscfiles + + system/base/cracklib/pspec.xml + + + cracklib + + zlib + python + + + /lib + /usr/lib + /usr/sbin + /usr/share/locale + /usr/share/doc + /usr/share/cracklib + + + + cracklib-devel + Development files for cracklib + cracklib için geliştirme dosyaları + system.devel + + cracklib + + + /usr/include + + + + + 2016-03-03 + 2.9.6 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2016-01-28 + 2.9.4 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-10-31 + 2.9.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 2.9.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-30 + 2.9.0 + Version bump, clean cracklib. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-15 + 2.8.22 + New version + Ertan Güven + ertan@pisilinux.org + + + 2012-08-23 + 2.8.19 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + less + http://www.greenwoodsoftware.com/ + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + app:console + system.base + Excellent lecteur de fichier texte + Excellent text file viewer + Mükemmel bir metin görüntüleyici + Ausgezeichneter Textbetrachter + The less utility is a text file browser that resembles more, but has more capabilities. Less allows you to move backwards in the file as well as forwards. Since less doesn't have to read the entire input file before it starts, less starts up more quickly than text editors (for example, vi). + http://www.greenwoodsoftware.com/less/less-481.tar.gz + + ncurses-devel + + system/base/less/pspec.xml + + + less + + ncurses + + + /etc/env.d + /usr/bin + /usr/share/doc + /usr/share/man + + + lesspipe.sh + 70less + code2color + + + + + 2016-02-29 + 481 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-27 + 481 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 458 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-24 + 458 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2012-09-15 + 451 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + lsb-release + http://www.linuxbase.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + LSB version query program + LSB sürüm sorgulama aracı + lsb-release prints certain LSB (Linux Standard Base) and distribution information. + lsb-release bazı dağıtıma özel tanımlayıcı bilgileri ekrana basan bir terminal aracıdır. + mirrors://sourceforge/project/lsb/lsb_release/1.4/lsb-release-1.4.tar.gz + + util-linux + + system/base/lsb-release/pspec.xml + + + lsb-release + + /usr/bin + /etc + /usr/share/man + /usr/share/doc + + + lsb-release + + + + + 2016-01-16 + 1.4 + Release 2.0Alfa7. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-11-01 + 1.4 + Release PisiLinux 2.0Alfa6. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-29 + 1.4 + Release Pisi Linux 2.0Alfa5 + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-01-16 + 1.4 + Release Pisi Linux 1.2 + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-11-03 + 1.4 + Release Pisi Linux 1.1 + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-07-16 + 1.4 + Release Pisi Linux 1.0 + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 1.4 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-16 + 1.4 + Rc2 name Erdinc for Erdinç Gültekin. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-12-20 + 1.4 + Rc2 + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-20 + 1.4 + RC1 + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-08-11 + 1.4 + sueno + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2012-08-23 + 1.4 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + nettle + http://www.gnu.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + system.base + The Nettle package contains the low-level cryptographic library. + Nettle - biblioteka kryptograficzna. + The Nettle package contains the low-level cryptographic library that is designed to fit easily in many contexts. + ftp://ftp.gnu.org/gnu/nettle/nettle-3.1.1.tar.gz + + gmp-devel + + system/base/nettle/pspec.xml + + + nettle + + gmp + + + /usr/bin + /usr/lib + /usr/share/info + /usr/share/doc + + + + nettle-devel + Nettle için geliştirme dosyaları + nettle için geliştirme dosyaları. + Pliki nagłówkowe biblioteki nettle. + + nettle + + + /usr/include + /usr/lib/pkgconfig/nettle.pc + /usr/lib/pkgconfig/hogweed.pc + /usr/lib32/pkgconfig/nettle.pc + /usr/lib32/pkgconfig/hogweed.pc + + + + nettle-32bit + 32-bit shared libraries for nettle + emul32 + emul32 + + gmp-32bit + glibc-32bit + + + nettle + glibc-32bit + gmp + + + /usr/lib32/ + + + + + 2015-07-05 + 3.1.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 2.7.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-28 + 2.7.1 + Version bump, clean nettle. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-26 + 2.6 + Move pc files to devel pack, rebuild. + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-02-14 + 2.6 + Version bump + Ertan Güven + ertan@pisilinux.org + + + 2012-09-29 + 2.5 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + db + http://www.oracle.com/technology/products/berkeley-db/db/index.html + + PisiLinux Community + admins@pisilinux.org + + DB + app:console + system.base + Quatrième version de Berkeley DB + Oracle Berkeley DB + Oracle Berkeley DB + Ein einbettbares Datenbank Engine, dass die Entwickler mit schnellen, zuverlässigen und lokalen Persistenz unterstützt und null Administration erfordert. + The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. The Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching, and database recovery. The Berkeley DB supports C, C++, Java, and Perl APIs. It is used by many applications, including Python and Perl, so this should be installed on all systems. + Berkeley DB geliştiricilere yerel süreklilik sağlayan ve herhangi bir ayar gerektirmeden (zero administration) kullanılan, hızlı ve gömülebilir bir veritabanı motorudur. + http://download.oracle.com/berkeley-db/db-6.1.26.tar.gz + system/base/db/pspec.xml + + + db + + libgcc + + + /usr/bin + /usr/lib + /usr/sbin + + + db5 + + + + db-devel + Development files for db + + db + + + /usr/include + + + db5-devel + + + + db-docs + Documentation for db + system.doc + + db + + + /usr/share/doc + + + db5-docs + + + + + 2016-03-02 + 6.1.26 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-09-10 + 5.3.28 + Rebuild for component change. + Perl depends on db, so we need it in system.base. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-07-15 + 5.3.28 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 5.3.28 + Version bump + PisiLinux Community + admins@pisilinux.org + + + 2013-08-29 + 5.3.21 + Rename and clean db pack. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-26 + 5.3.21 + Fix dep, release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-08-31 + 5.3.21 + First release + Erdem Artan + admins@pisilinux.org + + + + + + fuse + http://fuse.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + Interface implémentée dans l'environnement utilisateur (userpace) pour les systèmes de fichier. + An interface for filesystems implemented in userspace + Kullanıcı düzeyinde dosya sistemi oluştumaya yarayan kitaplık + Una interfaz para sistemas de archivos implementados en el espacio de usuario + fuse is a backend allowing regular users to (un)mount filesystems for their own use. + FUSE, kullanıcıların kendileri için dosya sistemleri oluşturmasına, bağlamasına ve bağı koparmasına imkân veren bir arkauç kitaplıktır. + https://github.com/libfuse/libfuse/releases/download/fuse_2_9_5/fuse-2.9.5.tar.gz + + gettext-devel + + + skip_umount_test.patch + + system/base/fuse/pspec.xml + + + fuse + + glibc + + + /bin + /sbin + /usr/bin + /lib + /usr/share/doc + /usr/share/man + + + + fuse-devel + Development files for fuse + fuse için geliştirme dosyaları + system.devel + + fuse + + + /usr/include + /usr/lib/pkgconfig + + + + + 2015-08-18 + 2.9.5 + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2015-08-18 + 2.9.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 2.9.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-24 + 2.9.3 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-01-20 + 2.9.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-12-21 + 2.9.2 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + coreutils + http://www.gnu.org/software/coreutils/ + + Pisi Linux Admins + admins@pisilinux.org + + GPLv3+ + app:console + system.base + A set of basic GNU tools commonly used in shell scripts + Standart dosya, metin ve kabuk uygulamaları + Utilitaires standards GNU pour fichiers (chmod, cp, dd, dir, ls...), utilitaires texte (sort, tr, head, wc...) et utilitaires d'interpréteur de commande (shell) (whoami, who...) + GNU dosya uygulamaları (chmod, cp, dd, dir, ls...), sh uygulamaları (whoami, who,...) ve metin uygulamalarının (sort, tr, head, wc..) birlikteliğinden oluşmaktadır. + http://ftp.gnu.org/gnu/coreutils/coreutils-8.25.tar.xz + + acl-devel + attr-devel + perl + shadow + gettext-devel + ncurses-devel + gmp-devel + libcap-devel + texinfo + + + remove_am_silent_rules.patch + + system/base/coreutils/pspec.xml + + + coreutils + + acl + attr + gmp + libcap + + + /bin + /etc + /usr/bin + /usr/libexec + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/locale + + + + + 2016-02-28 + 8.25 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-27 + 8.25 + Version bump. + Stefan Gronewold + groni@pisilinux.org + + + 2015-08-25 + 8.24 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-01 + 8.23 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 8.22 + Rebuild, add patch. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-04-02 + 8.22 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 8.21 + Clean coreutils. + Serdar Soytetir + kaptanan@pisilinux.org + + + 2013-07-26 + 8.21 + Fix deps, release bump. + Serdar Soytetir + kaptanan@pisilinux.org + + + 2013-02-11 + 8.21 + Güncellendi. + PisiLinux Community + admins@pisilinux.org + + + 2012-08-31 + 8.19 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + gettext + http://www.gnu.org/software/gettext/gettext.html + + PisiLinux Community + admins@pisilinux.org + + GPLv3+ + app:console + library + system.base + GNU libraries and utilities for producing multi-lingual messages + Farklı dillerde ileti katalogları üretmek için gerekli GNU araçları ve kütüphaneleri + gettext est une librairie d'internationalisation GNU. + The GNU gettext package provides a set of tools and documentation for producing multi-lingual messages in programs. Tools include a set of conventions about how programs should be written to support message catalogs, a directory and file naming organization for the message catalogs, a runtime library which supports the retrieval of translated messages, and stand-alone programs for handling the translatable and the already translated strings. Gettext provides an easy to use library and tools for creating, using, and modifying natural language catalogs and is a powerful and simple method for internationalizing programs. + gettext, uygulamalarda farklı dillerde iletiler kullanılmasını sağlayan yerelleştirme araçları ve kütüphanelerini içerir. + gettext ist eine GNU Bibliothek für Internationalisierung + http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.7.tar.gz + + acl-devel + glib2-devel + ncurses-devel + libunistring-devel + libxml2-devel + + system/base/gettext/pspec.xml + + + gettext-docs + system.doc + + gettext + + + /usr/share/doc/gettext/html + + + + gettext + + acl + glib2 + ncurses + libgcc + libunistring + libgomp + libxml2 + + + /usr/bin + /usr/lib + /usr/share/gettext + /usr/share/locale + /usr/share/info + /usr/share/man + /usr/share/doc + + + + gettext-devel + Development files for gettext + gettext için geliştirme dosyaları + system.devel + + gettext + + + /usr/share/aclocal + /usr/include + /usr/share/man/man3 + + + + + 2016-02-28 + 0.19.7 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-03 + 0.19.7 + Version bump + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-27 + 0.19.6 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-25 + 0.19.5.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-03 + 0.19.4 + Version bump. Hakan Yıldız hknyldz93@gmail.com - - 2015-03-08 - 4.3.20 - Rebuild for kernel 3.19.1 + + 2014-05-11 + 0.18.3.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 0.18.3.2 + Minor version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-27 + 0.18.3.1 + Version bump, clean gettext. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-11 + 0.18.2 + Fix dep, release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-11 + 0.18.2 + Güncellendi. + PisiLinux Community + admins@pisilinux.org + + + 2010-10-11 + 0.18.1.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libcap + http://www.kernel.org/pub/linux/libs/security/linux-privs/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + BSD + library + system.base + capacités POSIX 1003.1e. + POSIX 1003.1e capabilities library + POSIX 1003.1e desteği + libcap is a library for getting and setting POSIX.1e (formerly POSIX 6) draft 15 capabilities. + https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.25.tar.xz + + attr-devel + pam-devel + + system/base/libcap/pspec.xml + + + libcap + + pam + attr + + + /sbin + /lib + /usr/lib + /usr/share/man + /usr/share/doc + /etc + + + + libcap-devel + Development files for libcap + libcap için geliştirme dosyaları + system.devel + + libcap + + + /usr/include + /usr/share/man/man3 + + + + libcap-32bit + 32-bit shared libraries for libcap + libcap için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + attr-32bit + glibc-32bit + + + glibc-32bit + attr-32bit + + + /usr/lib32 + + + + + 2016-03-02 + 2.25 + Version bump. Ertuğrul Erata ertugrulerata@gmail.com + + 2015-03-16 + 2.24 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 2.24 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-03 + 2.24 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 2.22 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-01-24 + 2.22 + Use flags form pisi.conf, fix emul32 + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-01 + 2.22 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + timezone + ftp://elsie.nci.nih.gov/pub/ + + PisiLinux Community + admins@pisilinux.org + + BSD + public-domain + app:console + data + system.base + Timezone data files and tools + Zamandilimi veri dosyaları ve araçları + timezone includes timezone data files and tools to use them. Package contents are synchronized with glibc tree. + timezone zamandilimi veri dosyaları ve bu dosyaları kullanmak için gerekli araçları içerir. Paket içeriği glibc gelişim ağacından oluşturulmaktadır. + http://www.iana.org/time-zones/repository/releases/tzdata2015g.tar.gz + + perl + gawk + + + timezone-data-2015c-makefile.patch + + system/base/timezone/pspec.xml + + + timezone + + /usr/share/zoneinfo + + + + + 2015-10-27 + 2015g + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-09 + 2015d + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 2014b + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 2014b + Version bump. + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2012-09-27 + 0.0_20120927 + First release + Erdem Artan + admins@pisilinux.org + + + + + + ncurses + http://www.gnu.org/software/ncurses/ncurses.html + + PisiLinux Community + admins@pisilinux.org + + MIT + library + system.base + Console display library + Konsol görsel kütüphanesi + NCurses est une librairie de fonction gérant l'affichage des applications pour terminaux en mode caractères. La libraries NCurses défini de nombreuses fonctionalités telles le mouvement de la souris et du curseur, la disposition du clavier et l'affichage en couleur. + The NCurses is a library of functions that manage an application's display on character-cell terminals. The NCurses library defines many functions such as moving mouse and cursor, keyboard mapping and dispaying in color. + NCurses, bir uygulamanın karakter tabanlı uçbirimlerde görüntüleri üzerinde çalışabilmeyi sağlayan işlevler kütüphanesidir. Uygulama programları için imleci hareket ettirmek, pencereler oluşturmak, renkler üretmek, fare ile oynamak v.b. işlevler sağlamaktadır. + mirrors://gnu/ncurses/ncurses-6.0.tar.gz + + gnuconfig + + system/base/ncurses/pspec.xml + + + ncurses + + /etc + /lib + /usr/bin + /usr/lib + /usr/share/terminfo + /usr/share/tabset + /usr/share/man + /usr/share/doc + + + + ncurses-devel + Development files for ncurses + ncurses için geliştirme dosyaları + system.devel + + ncurses + + + /usr/include + /usr/lib/pkgconfig + /usr/lib/static + /usr/lib32/static + /usr/share/man/man3 + /usr/share/pkgconfig + + + + ncurses-32bit + 32-bit shared libraries for ncurses + emul32 + _emul32 + + glibc-32bit + + + ncurses + glibc-32bit + + + /usr/lib32 + /usr/lib32/pkgconfig + + + + + 2016-02-28 + 6.0 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-24 + 6.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-09-14 + 5.9 + Fix build .pc files. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 5.9 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 5.9 + Rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-27 + 5.9_20121110 + Clean ncurses + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-11-14 + 5.9_20121110 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + time + ftp://prep.ai.mit.edu/pub/gnu/time + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + A GNU utility for monitoring a program's use of system resources + Bir programın sistem kaynak kullanımını izleyen GNU aracı + time utility runs another program, collects information about the resources used by that program while it is running, and displays the results. + time başka bir programı çalıştırarak o programın sistem kaynaklarını nasıl kullandığını izler ve topladığı bilgileri ekrana basar. + ftp://prep.ai.mit.edu/pub/gnu/time/time-1.7.tar.gz + + time-1.7-destdir.patch + + system/base/time/pspec.xml + + + time + + /usr/bin/ + /usr/share/info + + + + + 2014-05-11 + 1.7 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-01 + 1.7 + Clean time, add patches. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-10-11 + 1.7 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + file + http://www.darwinsys.com/file/ + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + system.base + Program to identify a file's format by scanning binary data for patterns + Dosya tipini belirlemek için kullanılan bir uygulamadır + Programme servant à identifiant le format d'un fichier en analysant les données binaires en cherchant des patrons connus. + Program to identify a file's format by scanning binary data for patterns. + İkili veri taraması kullanarak (dosya uzantısına bakmadan) dosya biçimini tanımlamaya yarayan bir uygulamadır. + ftp://ftp.astron.com/pub/file/file-5.25.tar.gz + + zlib-devel + python-devel + + system/base/file/pspec.xml + + + file + + zlib + python + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/misc + /usr/include + + + + + 2016-02-28 + 5.25 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-27 + 5.25 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-24 + 5.24 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-17 + 5.23 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-02 + 5.22 + Release bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 5.18 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 5.18 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-22 + 5.15 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-03-04 + 5.13 + Version bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-16 + 5.12 + New Release + PisiLinux Community + admins@pisilinux.org + + + 2012-11-22 + 5.11 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + mudur + http://www.pisilinux.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Pisi Linux boot and initialization system + Pisi Linux açılış sistemi + Gère le montage de systèmes de fichier, le chargement de pilotes de périphérique, le démarrage des services système et d'autres tâches pendant les séquences de démarrage et d'arrêt de Pisi Linux. + mudur handles mounting of the filesystems, loading of the device drivers, starting of the system services, and other jobs during the Pisi Linux boot and shutdown sequences. + Pisi Linux açılış ve kapanışı sırasında, dosya sistemlerinin bağlanması, donanım sürücülerinin yüklenmesi, servislerin başlatılması gibi işleri yürütür. + http://source.pisilinux.org/1.0/mudur-4.4.0.tar.xz + + set_file_mode.patch + no_err-no_msg.patch + recreate_dir_if_new_uid_or_gid.patch + boot_option.patch + mount_cgroupfs.patch + + system/base/mudur/pspec.xml + + + mudur + + kbd + bash + dbus + kmod + eudev + comar + procps + python + rsyslog + sysvinit + coreutils + e2fsprogs + net-tools + baselayout + util-linux + wireless-tools + pisilinux-python + + + /etc/conf.d + /etc/mudur/services + /etc/init.d + /sbin + /bin + /usr/share/locale + + + System.PackageHandler + System.Service + System.Package + System.Settings + Disk.Manager + + + + + 2016-01-03 + 4.4.0 + fix issue #562, rebuild, depend new kbd and eudev, mount cgroups + Marcin Bojara + marcin@pisilinux.org + + + 2014-08-03 + 4.4.0 + Set mode for newly created files. + Marcin Bojara + marcin@pisilinux.org + + + 2014-06-11 + 4.4.0 + Recreate dir if uid or gid has been changed. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 4.4.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-06 + 4.4.0 + No error line in log file when tmpfiles created successfully. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-16 + 4.4.0 + Remove /dev/shm line from /etc/fstab. + Add mounting /run to fstab for fresh installed system. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 4.4.0 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-13 + 4.3.1 + Mount or remount tmpfs at /run. + Starts with kmod.conf and baselayout.conf at the begining. + Strip mudur_tmpfiles output. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-10 + 4.3.1 + Try to fix D-Bus start issue using cleanup_run. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-21 + 4.3.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-19 + 4.3.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 4.2.0 + rebuild + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-10 + 4.2.0 + Run udev after remount rootfs. + Fix /run/shm mode. + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-05 + 4.2.0 + Add missing method to pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-26 + 4.2.0 + Fix migration from /var/run to /run + Marcin Bojara + marcin@pisilinux.org + + + 2013-05-15 + 4.2.0 + Fix default groups for /sbin/useradd + Marcin Bojara + marcin@pisilinux.org + + + 2012-12-02 + 4.2.0 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + nspr + http://www.mozilla.org/projects/nspr/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + Netscape Portable Runtime + Netscape Taşınabilir Çalışma Zamanı + Netscape Portable Runtime (NSPR -- Exécutable Portable Netscape) fourni une API neutre au sens de la plate-forme pour les fonctions de niveau système ou de type libc. Cette API est utilisée au sein du client Mozilla ainsi que de nombreuses solutions logicielles de Netscape/AOL/iPlanet. + Netscape Portable Runtime (NSPR) provides a platform-neutral API for system level and libc like functions. The API is used in the Mozilla client, many of Netscape/AOL/iPlanet's and other software offerings. + Netscape Taşınabilir çalışma Zamanı (NSPR) sistem seviyesindeki libc ve benzeri fonksiyonlar için platform bağımsız bir programlama arayüzü sunar. Bu arayüz, Mozilla istemcilerinde, Netscape/AOL/iPlanet'in diğer yazılımlarında kullanılmaktadır. + Netscape Portable Runtime (NSPR) provee un API independiente de la plataforma a nivel de sistema y funciones como libc. El API está usado en el cliente Mozilla, y muchos otros software de Netscape/AOL/iPlanet. + https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v4.10.10/src/nspr-4.10.10.tar.gz + + nspr.pc.in + generate-pc-config.sh + + system/base/nspr/pspec.xml + + + nspr + + /usr/lib + + + + nspr-devel + Development files for nspr + nspr için geliştirme dosyaları + system.devel + + nspr + + + /usr/include + /usr/lib/pkgconfig + /usr/bin + + + + + 2015-11-08 + 4.10.10 + Version bump. + Osman Erkan + osman.erkan@pisilinux.org + + + 2015-04-02 + 4.10.8 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-12-06 + 4.10.7 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-07-05 + 4.10.6 + Release bump. + PisiLinux Community + admins@pisilinux.org + + + 2014-05-11 + 4.10.4 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 4.10.4 + Version bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-11-18 + 4.10.2 + Version bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-10-23 + 4.10.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-07-18 + 4.10 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-05-17 + 4.9.6 + v.bump + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-01-14 + 4.9.5 + New release + PisiLinux Community + admins@pisilinux.org + + + 2012-11-25 + 4.9.4 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + libuser + https://fedorahosted.org/libuser + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + A user and group account administration library + Kullanıcı ve grup hesap yönetim kitaplığı + libuser implements a standardized interface for manipulating and administering user and group accounts. The library uses pluggable back-ends to interface to its data sources. + libuser kullanıcı ve grup hesaplarını yönetmek ve işlemek için standart bir arayüz sunar. Kitaplık, sağladığı arayüzün verilere erişimi için genişletilebilir arkauçlar kullanmaktadır. + https://fedorahosted.org/releases/l/i/libuser/libuser-0.61.tar.xz + + pam-devel + popt-devel + glib2-devel + python-devel + + + libuser-0.56.15-fix_blowfish.patch + libuser-0.56.9-fix-str-fmt.patch + + system/base/libuser/pspec.xml + + + libuser + + pam + popt + glib2 + python + + + /etc + /usr/share/man + /usr/share/doc + /usr/share/locale + /usr/bin + /usr/sbin + /usr/lib + + + + libuser-devel + Development files for libuser + libuser için geliştirme dosyaları + system.devel + + libuser + glib2-devel + + + /usr/include + /usr/lib/pkgconfig + + + + + 2015-04-07 + 0.61 + Version bump, build without-sasl + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 0.60 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 0.60 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-28 + 0.59 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-14 + 0.58.0 + New release + PisiLinux Community + admins@pisilinux.org + + + 2012-08-23 + 0.57.6 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + procps + http://gitorious.org/procps + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Standard informational utilities and process-handling tools + Geleneksel bilgilendirme yardımcı programları ve süreç işleme araçları + procps est un paquet regroupant une multitude de petits utilitaires utiles donnant des informations concernant les process en utilisant le système de fichier /proc. Le paquet inclus les programmes ps, top, vmstat, w, kill, free, slabtop et skill. + procps is the package that has a bunch of small useful utilities that give information about processes using the /proc filesystem. The package includes the programs ps, top, vmstat, w, kill, free, slabtop, and skill. + Procps /proc dosya sistemini kullanarak çalışan süreçler hakkında bilgi vermeye yarayan bazı kullanışlı uygulamaları içeren bir pakettir. Paket ps, top, vmstat, w, kill, free, slabtop ve skill gibi uygulamaları içerir. + http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-3.3.11.tar.xz + + ncurses-devel + + system/base/procps/pspec.xml + + + procps + + ncurses + + + /bin + /sbin + /lib + /usr/lib + /usr/bin + /usr/share/doc + /usr/share/man + /usr/share/locale + /usr/include + + + + + 2015-08-25 + 3.3.11 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-06 + 3.3.10 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 3.2.8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2010-10-12 + 3.2.8 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + mailcap + http://git.fedorahosted.org/git/mailcap.git + + PisiLinux Community + admins@pisilinux.org + + MIT + public-domain + data + system.base + Helper application and MIME type associations for file types + Dosya türleri için yardımcı uygulama ve MIME türü ilişkilendirmeleri + mailcap file is used by the metamail program. Metamail reads the mailcap file to determine how it should display non-text or multimedia material. + mailcap dosyası metamail ve bazı diğer uygulamalar tarafından, metin olmayan dosyaların ya da çokluortam dosyalarının nasıl açılacağını keşfetmek için kullanılır. + https://fedorahosted.org/released/mailcap/mailcap-2.1.42.tar.xz + + extend-mailcap.patch + + system/base/mailcap/pspec.xml + + + mailcap + + /etc + /usr/share/doc + /usr/share/man + + + + + 2014-05-11 + 2.1.42 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 2.1.42 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2011-06-01 + 2.1.37 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + pisi + http://www.pisilinux.org/ + + Marcin Bojara + marcin@pisilinux.org + + GPLv2 + app:console + system.base + PISI is the package management system of Pisi Linux + PİSİ PiSi Linux'un paket yönetim sistemidir + PiSi – menadżer pakietów dla PiSi Linux. + PISI est gestionnaire de paquets moderne implémenté en Python.Ces principales fonctionnalités sont les suivantes : - Les paquets sources sont écrits en XML et en python - Implemente tout les fonctions à travers une API simple d'utilisation - Intègre aussi bien les fonctionnalités de bas niveaux que de haut niveau de gestion de paquets. + PISI is a modern package management system implemented in Python. Some of its main features are: package sources are written in XML and python, implements all functions through a simple-to-use API, integrates low-level and high-level package management features. + PİSİ Python'da yazılmış modern bir paket yöneticisidir. Bazı ana özellikleri: Paket kaynakları XML ve python kullanılarak yazılır, bütün işlevleri kullanması kolay bir API ile sağlar ve düşük ve yüksek seviyeli paket yönetim işlevlerini birleştirir. + PISI jest podstawowym narzędziem do instalacji, aktualizacji i usuwania pakietów. Obsługuje zależności dla poszczególnych pakietów, bibliotek i zadań ÇOMAR-a. Instalacja oprogramowania odbywa się w łatwy i przyjazny sposób. Do przechowywania informacji o pakietach wykorzystuje bazę Berkeley DP, co zapewnia większą stabilność i szybkość. + http://source.pisilinux.org/1.0/pisi-2.6.tar.xz + + pisi.conf-i686 + pisi.conf-x86_64 + + + comar + plyvel + python + gettext + libunwind-devel + intltool + leveldb-devel + + + initialize_filesdb_once.patch + no_clean_if_ignore_comar.patch + orphaned_pkgs.patch + improve_pisi_ix.patch + fix_emul32_flags.patch + pisi-2.6-pisitools.dopixmaps-add.patch + + system/base/pisi/pspec.xml + + + pisi + + tar + file + comar + plyvel + python + gettext + leveldb + piksemel + comar-api + urlgrabber + python-psutil + libunwind + python-pyliblzma + mudur + + + /usr/bin + /usr/sbin + /usr/lib/pardus/pisi + /usr/lib/pisilinux/pisi + /usr/share/locale + /usr/share/doc + /etc/pisi + /usr/share/mime/packages + /usr/lib/tmpfiles.d/pisi.conf + /run/lock/files.ldb/LOCK + /var/lib/pisi/info/files.ldb/LOCK + + + System.Package + System.Manager + + + mirrors.conf + sandbox.conf + pisi.xml + pkgconfig.py + tmpfiles.conf + qt5.py + kde5.py + + + - 2015-03-01 - 4.3.20 - Rebuild for kernel 3.19.0 + 2015-08-31 + 2.6 + fix configdir in kde5 to '/etc/xdg'. Ertuğrul Erata ertugrulerata@gmail.com - 2015-01-28 - 4.3.20 - Rebuild for kernel 3.18.3 + 2015-08-14 + 2.6 + Rebuild for leveldb and plyvel. Ertuğrul Erata ertugrulerata@gmail.com - 2015-01-09 - 4.3.20 - Version bump, kernel 3.18.1 + 2015-08-01 + 2.6 + fix kde5 api, remove python3 Ertuğrul Erata ertugrulerata@gmail.com - 2014-11-29 - 4.3.18 - Version bump, kernel 3.17.4 - Serdar Soytetir - kaptan@pisilinux.org + 2015-06-03 + 2.6 + Add kde5 api + Vedat Demir + vedat@pisilinux.org - 2014-10-19 - 4.3.18 - Version bump, kernel 3.17.1 - Serdar Soytetir - kaptan@pisilinux.org + 2015-05-04 + 2.6 + Add qt5 api + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org - 2014-09-19 - 4.3.16 - Version bump, kernel 3.16.3 - Serdar Soytetir - kaptan@pisilinux.org + 2014-12-07 + 2.6 + Add new pisitools.dopixmaps + Osman Erkan + osman.erkan@pisilinux.org - 2014-09-03 - 4.3.14 - Rebuild for kernel 3.16.1 - Serdar Soytetir - kaptan@pisilinux.org + 2014-09-15 + 2.6 + Add new pisi commands: list-orphaned and remove-orphaned. + Improve pisi index. + Marcin Bojara + marcin@pisilinux.org - 2014-07-24 - 4.3.14 - Version bump for kernel 3.15.6 - Vedat Demir - vedatn@pisilinux.org + 2014-08-04 + 2.6 + pisi search-file works without sudo now. + Marcin Bojara + marcin@pisilinux.org - 2014-06-15 - 4.3.10 - Rebuild for kernel 3.15.0 - Serdar Soytetir - kaptan@pisilinux.org + 2014-07-25 + 2.6 + Rebuild for version number. + Aydın Demirel + aydin.demirel@pisilinux.org - 2014-05-29 - 4.3.10 - Rebuild for kernel 3.14.4. + 2014-06-24 + 2.6 + Add patch for initialize filesdb once. + Marcin Bojara + marcin@pisilinux.org + + + 2014-06-15 + 2.6 + Version bump. + revdep-rebuild rewritten in python. + Marcin Bojara + marcin@pisilinux.org + + + 2014-06-08 + 2.5 + Add case sensitive for 'pisi sr'. + Change install path. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-27 + 2.5 + Add patch level auto detection feature, + sha1sum for install.tar.xz file, + check sha1sum for upgrade. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 2.5 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 2.5 + Some improvements for buildfarm. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-04 + 2.5 + Handle error for file command. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-16 + 2.5 + Workaround for update espeak package. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 2.5 + Version bump. Serdar Soytetir kaptan@pisilinux.org - - 2014-05-02 - 4.3.10 - Rebuild for kernel 3.14.2. + + 2014-02-28 + 2.4 + Fix pisitools.dosed output. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-13 + 2.4 + Workaround for the case where old dir /a/b/c is replaced by file c in /a/b dir. + Marcin Bojara + marcin@pisilinux.org + + + 2013-11-12 + 2.4 + Fix stripping issues, in file info: LSB executable, LSB shared syntax. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-22 + 2.4 + Disable python_installation patch to check python upgrading breaks pisi or not. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 2.4 + Fix autocompletion for local uncompressed index file. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-21 + 2.4 + Fix upgrading python package. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-01 + 2.4 + Improve managing CFLAGS, CXXFLAGS and LDFLAGS, + export HOME=get.workDIR() as default. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-25 + 2.4 + Fix and improve kerneltools. + Avoid double slashes pisi error. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-11 + 2.4 + adjust takeback to new dir structure. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-21 + 2.4 + No capital letters in directory names. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-17 + 2.4 + Fix overwrite 64bit libs by 32bit for some packages + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-02 + 2.4 + Add sorting packages for pisi ix + Marcin Bojara + marcin@pisilinux.org + + + 2013-05-15 + 2.4 + Add pisitools.flags() and pisitools.ldflags() + Marcin Bojara + marcin@pisilinux.org + + + 2013-05-12 + 2.4 + Sandbox.conf edit. + PisiLinux Community + admins@pisilinux.org + + + 2013-03-20 + 2.4 + Add patch for speed up packaging process + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-14 + 2.4 + Improve dosed + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-14 + 2.4 + Add assign-devel-and-doc-packages.patch. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-18 + 2.4 + First release. + Marcin Bojara + marcin@pisilinux.org + + + + + + wireless-tools + http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + A collection of tools to configure wireless lan cards + Kablosuz ağ kartlarını yapılandırmak için kullanılan bir araç seti + Les outils sans fil (Wireless Tools ou WT) est un ensemble d'outils permettant de manipuler les extensions sans fil, c'est une interface de programmation d'application (API) générique permettant à un pilote d'exposer à l'espace utilisateur la configuration ainsi que des statistiques spécifiques aux LANs sans fil communs. Ils utilisent une interface textuelle assez rugueuse, mais ont pour objectif de couvrir la totalité de l'extension sans fil. + The Wireless Tools (WT) is a set of tools allowing to manipulate the Wireless Extensions, a generic application programming interface allowing a driver to expose to the user space configuration and statistics specific to common Wireless LANs. They use a textual interface and are rather crude, but aim to support the full Wireless Extension. + Wireless Extensions, sürücülerin bilinen kablosuz ağların ayarlarını yapmak ve istatistiklerini görüntülemek amacıyla kullandığı bir yazılım programlama arayüzüdür. Wireless Tools ise Wireless Extensions ayarlarını modifiye etmek için kullanılan araçları içeren bir pakettir. Grafik arayüzü bulunmaz, biraz da kabadır; ancak Wireless Extension'u tam olarak desteklemeyi hedefler. + http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.30.pre9.tar.gz + + no-ldconfig.patch + wireless_tools.27-wireless-man-upd.patch + wireless-tools-29-makefile.patch + + system/base/wireless-tools/pspec.xml + + + wireless-tools + + comar + + + /sbin + /usr/lib + /usr/share/man + /usr/share/doc + + + + wireless-tools-devel + Development files for wireless-tools + wireless-tools için geliştirme dosyaları + system.devel + + wireless-tools + + + /usr/include + /usr/share/man/man3 + + + + + 2016-03-04 + 30 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-08 + 30 + Release bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 30 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 30 + Güncellendi. + PisiLinux Community + admins@pisilinux.org + + + 2013-02-11 + 30 + Güncellendi. + PisiLinux Community + admins@pisilinux.org + + + 2011-06-01 + 29 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libee + http://www.libee.org/ + + Marcin Bojara + marcin@pisilinux.org + + LGPLv2.1 + library + system.base + An Event Expression Library inspired by CEE + Libee - An Event Expression Library inspired by CEE + http://www.libee.org/download/files/download/libee-0.4.1.tar.gz + + libestr-devel + + system/base/libee/pspec.xml + + + libee + + libestr + + + /usr/sbin + /usr/lib/libee.so* + /usr/share/doc/libee + + + + libee-devel + Development files for libestr + system.devel + + libee + + + /usr/include/libee + /usr/lib/pkgconfig/libee.pc + + + + + 2014-05-11 + 0.4.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 0.4.1 + rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-11-21 + 0.4.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + busybox + http://www.busybox.net + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Statically linked binary providing simplified versions of system commands + Statik bağlanmış sistem komutları bütünü + busybox is a single binary which includes versions of a large number of system commands, including a shell. + busybox, kabuk da dahil olmak üzere çeşitli sistem komutlarını içeren tek bir çalıştırılabilir dosyadır. + http://busybox.net/downloads/busybox-1.24.1.tar.bz2 + + config + + system/base/busybox/pspec.xml + + + busybox + + /bin + + + + + 2016-01-29 + 1.24.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.22.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-29 + 1.22.1 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-14 + 1.21.0 + New release + PisiLinux Community + admins@pisilinux.org + + + 2012-08-23 + 1.20.2 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + lzo + http://www.oberhumer.com/opensource/lzo/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + An extremely fast compression and decompression library + Çok hızlı bir sıkıştırma/açma kütüphanesi + lzo is a library with very high compression and decompression speeds and very small memory usage. Provides low compression ratios but very high speeds. + lzo hızlı bir sıkıştırma/açma kütüphanesidir. Düşük sıkıştırma oranları verir fakat hem sıkıştırma hem açma işleminde bellek kullanımı çok düşüktür ve işlem hızı yüksektir. + http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz + system/base/lzo/pspec.xml + + + lzo + + /usr/lib + /usr/share/doc + + + + lzo-devel + Development files for lzo + lzo için geliştirme dosyaları + + lzo + + + /usr/include + + + + lzo-32bit + 32-bit shared libraries for lzo + emul32 + emul32 + + glibc-32bit + + + glibc-32bit + + + /usr/lib32 + + + + + 2015-04-12 + 2.09 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-07-03 + 2.08 + Version bump and security update (CVE-2014-4607). + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 2.06 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-28 + 2.06 + Clean lzo. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-10-23 + 2.06 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + libusb-compat + http://libusb.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + system.base + Userspace access to USB devices + Project's main aim is to create a library for use by user level applications to access USB devices regardless of OS. + mirrors://sourceforge/libusb/libusb-compat-0.1.5.tar.bz2 + + libtool + libusb-devel + + system/base/libusb-compat/pspec.xml + + + libusb-compat + + libusb + + + /usr/lib + /usr/share/doc + + + + libusb-compat-devel + Development files for libusb + system.devel + + libusb-devel + libusb-compat + + + /usr/bin + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + libusb-compat-32bit + 32-bit shared libraries for libXt + emul32 + emul32 + + libusb-32bit + glibc-32bit + + + libusb-32bit + libusb + glibc-32bit + libusb-compat + + + /usr/lib32 + + + + + 2015-05-05 + 0.1.5 + Rebuild for libusbx libusb changes + Use auto-emul32, cleanup actions.py + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 0.1.5 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 0.1.5 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-07-21 + 0.1.4 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + dhcpcd + http://roy.marples.name/dhcpcd + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + A dhcp client only + DHCP protokolü için istemci + Un client daemon DHCP conforme aux RFC2131 et RFC1541. dhcpcd obtient une adresse IP ainsi que d'autres informations depuis le serveur DHCP correspondant, configure l'interface réseau automatiquement et essaie de renouveler le bail selont les RFC2131 et EFC1541 en fonction des options de la ligne de commande. + An RFC2131 and RFC1541 compliant DHCP client daemon. dhcpcd gets an IP address and other information from a corresponding DHCP server, configures the network interface automatically, and tries to renew the lease time according to RFC2131 or RFC1541 depending on the command line option. + RFC2131 ve RFC1541 uyumlu bir DHCP istemci servisi.dhcpcd ilgili bir DHCP sunucusundan bir IP adresi ve gerekli diğer bilgileri alır, ağ arayüzünü otomatik olarak yapılandırır ve RFC2131 veya RFC1541 komut satırı özelliğine bağlı olarak kiralama zamanını yenilemeyi dener. + http://ftp.osuosl.org/pub/blfs/conglomeration/dhcpcd/dhcpcd-6.10.1.tar.xz + system/base/dhcpcd/pspec.xml + + + dhcpcd + + /etc + /lib/dhcpcd + /usr/lib/dhcpcd/dev/udev.so + /sbin + /usr/share/doc + /usr/share/man + /usr/share/dhcpcd + /var/lib/dhcpcd + + + + + 2016-01-28 + 6.10.1 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-05-03 + 6.8.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-03 + 6.7.1 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-05-11 + 6.3.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-03 + 6.3.2 + Version bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-10-31 + 6.0.5 + Really revert back to 6.0.5. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-28 + 6.0.5 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-01-14 + 5.6.7 + New release + PisiLinux Community + admins@pisilinux.org + + + 2012-08-23 + 5.6.1 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + findutils + http://www.gnu.org/software/findutils/findutils.html + + PisiLinux Community + admins@pisilinux.org + + GPLv3+ + app:console + system.base + GNU utilities to find files + Dosya bulmak için kullanılan GNU uygulamaları + Les utilitaires de recherche GNU sont les utilitaire de recherche de répertoire basique du système d'exploitation GNU. Ces programmes sont typiquement associés à d'autres programmes pour leur fournir une capacité de recherche de fichier et de répertoire puissante et modulaire à d'autres commandes. + The GNU Find Utilities are the basic directory searching utilities of the GNU operating system. These programs are typically used in conjunction with other programs to provide modular and powerful directory search and file locating capabilities to other commands. + GNU Find Utilities GNU işletim sisteminin temel dizin arama uygulamalarıdır. Bu uygulamalar diğer komutlara başka programlar ile birlikte çalışarak modüler ve güçlü dizin ve dosya arama yetenekleri sunar. + http://ftp.gnu.org/pub/gnu/findutils/findutils-4.6.0.tar.gz + + gettext-devel + texinfo + + system/base/findutils/pspec.xml + + + findutils + + /usr/bin + /usr/lib/find + /usr/libexec + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/locale + /var + + + + + 2016-02-28 + 4.6.0 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-03 + 4.6.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 4.4.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-01 + 4.4.2 + Revert back to stable version, clean findutils. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-09-14 + 4.5.9 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + gperftools + http://code.google.com/p/gperftools/ + + PisiLinux Community + admins@pisilinux.org + + BSD + library + app:console + system.base + Google Performance Tools + Google Performans Araçları + Perf Tools is a collection of a high-performance multi-threaded malloc() implementation, plus some pretty nifty performance analysis tools. + gperftools yüksek performanslı ve yararlı performans analizi araçları içerir. + https://github.com/gperftools/gperftools/releases/download/gperftools-2.4/gperftools-2.4.tar.gz + + libunwind-devel + + system/base/gperftools/pspec.xml + + + gperftools + + libunwind + libgcc + + + /usr/bin + /usr/lib + /usr/share/doc/gperftools/COPYING + /usr/share/man + + + + gperftools-devel + Development headers for gperftools + gperftools için geliştirme başlıkları + gperftools-devel provides development headers for gperftools. + gperftools için geliştirme başlıklarını içerir. + library + + gperftools + + + /usr/include + /usr/lib/pkgconfig + + + + gperftools-docs + Documentation files for gperftools + gperftools için belgelendirme dosyaları + gperftools-docs provides documentation files for gperftools. + gperftools için belgelendirme dosyalarını içerir. + data:doc + system.doc + + gperftools + + + /usr/share/doc/gperftools + + + + + 2016-03-02 + 2.4 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-25 + 2.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-02 + 2.2 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-24 + 2.1 + Version bump. + Kamil Atlı + suvarice@gmail.com + + + 2013-01-27 + 2.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2011-02-20 + 1.7 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + openssl + http://www.openssl.org/ + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + library + system.base + Toolkit for SSL v2/v3 and TLS v1 + SSL v2/v3 ve TLS v1 için araç kiti + OpenSSL est un outil cryptographique implémentant une couche de communication sécurisée (SSL v2/v3) et une couche de transport sécurisée (TLS v1) + OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them. + OpenSSL, Güvenlik Soketleri Katmanı (SSL v2/v3) ve Aktarım Katmanı Güvenliği (TLSv1) ağ protokolleri ile bu protokollerin gerektirdiği şifreleme standartlarını uygulayan bir şifreleme aracıdır. + OpenSSL ist ein Kryptographie Werkzeug, das die Netzwerkprotokolle Secure Sockets Layer (SSL v2/v3) und Transport Layer Security (TLS v1) sowie deren erforderliche zugehörige Kryptographie Standards implementiert. + ftp://ftp.openssl.org/source/openssl-1.0.2g.tar.gz + + openssl-1.0.0-beta4-ca-dir.patch + + + zlib-devel + xorg-util + perl + sed + + + openssl-1.0.0a-ldflags-norpath.patch + openssl-1.0.0-beta4-ca-dir.patch + openssl-1.0.0-beta5-enginesdir.patch + openssl-1.0.2-ipv6.patch + openssl-include.patch + openssl_fix_for_x32_2.patch + openssl-ca-certificates.patch + CVE-2014-0198.patch + openssl-1.0.2a-x32-asm.patch + + system/base/openssl/pspec.xml + + + openssl + + zlib + ca-certificates + + + /etc + /usr/bin + /usr/lib + /usr/share/doc + + + System.Package + + + + openssl-devel + Development files for openssl + openssl için geliştirme dosyaları + system.devel + + openssl + + + /usr/include + /usr/share/man + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + openssl-32bit + 32-bit shared libraries for openssl + openssl için 32-bit paylaşımlı kitaplıklar + emul32 + _emul32 + + zlib-32bit + + + openssl + zlib-32bit + glibc-32bit + + + /usr/lib32 + + + + + 2016-03-02 + 1.0.2g + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2015-12-14 + 1.0.2e + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-02 + 1.0.2d + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-13 + 1.0.2c + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-23 + 1.0.2a + Rebuild. + Vedat Demir + vedat@pisilinux.org + + + 2015-04-11 + 1.0.2a + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-17 + 1.0.2 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-11-05 + 1.0.1j + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-06-05 + 1.0.1h + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 1.0.1g + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-09 + 1.0.1g + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-02 + 1.0.1f + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-28 + 1.0.1e + Clean openssl. + Serdar Soytetir + kaptan@pisilinux.org + + + security + 2013-01-14 + 1.0.1e + New release + PisiLinux Community + admins@pisilinux.org + + + security + 2012-08-31 + 1.0.1c + First release + Erdem Artan + admins@pisilinux.org + + + + + + kmod + http://git.kernel.org/?p=utils/kernel/kmod/kmod.git;a=summary + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + app:console + system.base + Linux kernel module management utilities + Linux kernel modülleri yönetim araçları + Linux kernel module management utilities + Linux kernel modülleri yönetim araçları + https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-22.tar.xz + + chrpath + xz-32bit + xz-devel + zlib-32bit + zlib-devel + kernel-module-headers + + + kmod-15-dynamic-kmod.patch + + system/base/kmod/pspec.xml + + + kmod + + xz + zlib + glibc + libkmod + + + /usr/bin + /bin + /sbin + /usr/share/man + /usr/share/doc + /etc + /usr/share/bash-completion/completions/kmod + + + Boot.Modules + System.PackageHandler + + + blacklist/blacklist.conf + blacklist/blacklist-firewire.conf + blacklist/blacklist-framebuffer.conf + blacklist/blacklist-watchdog.conf + modprobe.conf + depmod.conf + depmod-search.conf + + + + libkmod-devel + system.devel + + libkmod + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + libkmod + kmod libraries + + xz + zlib + + + /usr/lib + + + + libkmod-32bit + 32bit libraries of libkmod + emul32 + emul32 + + xz-32bit + zlib-32bit + glibc-32bit + + + /usr/lib32 + + + + + 2016-03-05 + 22 + Rebuild with new toolchain. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-11-29 + 22 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-17 + 21 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-26 + 20 + Version bump,add patch and fix deps. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-11-18 + 19 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-23 + 17 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 16 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-21 + 16 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-05 + 15 + Add missing method to pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 15 + Version bump, clean kmod. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-20 + 14 + rebuild for kernel 3.10.9 + PisiLinux Community + admins@pisilinux.org + + + 2013-08-11 + 14 + rebuild for kernel 3.10.5 + PisiLinux Community + admins@pisilinux.org + + + 2013-07-27 + 14 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-07-04 + 14 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-14 + 13 + Version bump + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-22 + 12 + Version bump, add comar scripts + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-15 + 11 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + cryptsetup + https://gitlab.com/cryptsetup/cryptsetup + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:cli + system.base + Userspace setup tool for transparent encryption of block devices using dm-crypt + Şifreli dosya sistemleri yaratmak için bir araç + Userspace setup tool for transparent encryption of block devices using dm-crypt + cryptsetup device mapper kullanarak şifrelenmiş dosya sistemleri yaratmak için gerekli bir araçtır. + cryptsetup + https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/cryptsetup-1.7.0.tar.xz + + device-mapper-devel + libgpg-error-devel + libgcrypt-devel + python-devel + libutil-linux-devel + popt-devel + popt + + system/base/cryptsetup/pspec.xml + + + cryptsetup + util.crypt + + libcryptsetup + popt + + + /sbin + /usr/share/man + /usr/share/locale + /usr/share/doc + + + + libcryptsetup + cryptsetup libraries + cryptsetup kütüphaneleri + util.crypt + + device-mapper + libgpg-error + libgcrypt + libutil-linux + + + /lib/libcryptsetup.so* + + + + libcryptsetup-devel + libcryptsetup devel files + libcryptsetup için geliştirme dosyaları + programming.devel + + libcryptsetup + + + /usr/include + /usr/lib/pkgconfig/libcryptsetup.pc + + + + python-pycryptsetup + Python backend for cryptsetup + cryptsetup Python bağlayıcısı + programming.language.python + + python + libcryptsetup + + + /usr/lib/python2.7/site-packages/pycryptsetup.so + + + + + 2016-01-28 + 1.7.0 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-04-30 + 1.6.7 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-01 + 1.6.4 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-03 + 1.6.4 + Version bump + PisiLinux Community + admins@pisilinux.org + + + 2014-03-06 + 1.6.0 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-07-26 + 1.6.0 + Fix dep, release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-15 + 1.6.0 + New version + Ertan Güven + ertan@pisilinux.org + + + 2012-10-05 + 1.5.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libidn + http://www.gnu.org/software/libidn + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + GPLv3 + app:console + library + system.base + Internationalized Domain Names (IDN) implementation + Uluslararası Alan Adları (IDN) destek kütüphanesi + GNU Libidn est une implémentation de Stringprep, Punycode et des spécifications IDNA définies par le groupe de travail Internationalized Domain Names (IDN) de l'IETF servant pour les noms de domaines internationalisés. La librairie C est disponible sous la Licence Publique Générale Lesser. + GNU Libidn is an implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group, used for internationalized domain names. The C library is available under the GNU Lesser General Public License. + GNU Libidn, IETF Uluslararasılaştırılmış Domain Adları (IDN) çalışma grubu tarafından tanımlanmış Stringgrep, Punycode ve IDNA tariflerinin bir uygulamasıdır, uluslararası domain adlarının kullanımına olanak sağlar. C kütüphanesi GNU Lesser General Public License altında sağlanabilir. + http://ftp.gnu.org/gnu/libidn/libidn-1.28.tar.gz + system/base/libidn/pspec.xml + + + libidn + + /usr/bin + /usr/lib/libidn* + /usr/share/emacs + /usr/share/locale + /usr/share/man/man1 + /usr/share/info + /usr/share/doc + + + + libidn-devel + Development files for libidn + libidn için geliştirme dosyaları + system.devel + + libidn + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/man/man3 + + + + libidn-32bit + 32-bit shared libraries for libidn + libidn için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + glibc-32bit + libidn + + + /usr/lib32/libidn* + + + + + 2014-05-11 + 1.28 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 1.28 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-01-14 + 1.26 + New release + PisiLinux Community + admins@pisilinux.org + + + 2012-08-23 + 1.25 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + zlib + http://www.gzip.org/zlib/ + + PisiLinux Community + admins@pisilinux.org + + ZLIB + library + system.base + Librairie de compression/extraction standard + Standard (de)compression library + Standart sıkıştırma/açma kütüphanesi + Zlib is a general-purpose, patent-free, lossless data compression library which is used by many different programs. + mirrors://sourceforge/libpng/zlib-1.2.8.tar.xz + + dont-call-ldconfig.patch + + system/base/zlib/pspec.xml + + + minizip + Library for manipulating files from a zip archive + zip arşivlerindeki dosyaları yönetmek için kitaplık + util.archive + minizip + + zlib + + + /usr/lib/libminizip* + + + + minizip-devel + Development files for minizip + minizip için geliştirme dosyaları + util.archive + minizip + + minizip + zlib-devel + + + /usr/include/minizip + /usr/lib/pkgconfig/minizip.pc + + + + zlib + + /lib/libz.so* + /usr/lib/libz.so* + /usr/share/doc + /usr/share/man + + + + zlib-devel + Development files for zlib + zlib için geliştirme dosyaları + system.devel + + zlib + + + /usr/lib/pkgconfig/zlib.pc + /usr/lib32/pkgconfig + /usr/include/z*.h + /usr/share/man/man3 + /usr/share/doc/zlib/algorithm.txt + /usr/share/doc/zlib/example.c + + + + zlib-32bit + 32-bit shared libraries for zlib + zlib için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + glibc-32bit + zlib + + + /usr/lib32/libz.so* + + + + + 2016-02-28 + 1.2.8 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.2.8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-27 + 1.2.8 + Clean zlib. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-06-29 + 1.2.8 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-03 + 1.2.7 + First release + Erdem Artan + admins@pisilinux.org + + + + + + comar + http://www.pisilinux.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + service + system.base + Manages system configuration + Sistem yapılandırmasını yönetir + Les programmes Pisi Linux sont mis sous forme de paquets à l'aide de petits scripts. Ces derniers les configure afin qu'ils s'intègrent entre eux et avec le système. Çomar est l'outil qui gère et exécute ces scripts. + Pisi Linux programs are packaged with small scripts which configures them to entegrate with system and each other. Çomar is the tool which manages and executes these scripts. + Pisi Linux yazılımları, birbirleri ve sistemle otomatik olarak uyum sağlayabilmek için yanlarında ufak programcıklar ile paketlenmektedir. Bu programcıkların yönetimi ve işletilmesi Çomar aracı tarafından yapılmaktadır. + Pisi Linux Programme werden mit einem kleinen Skript paketiert, welches sie konfiguriert, um die Integrität mit dem System und anderen Programmen sicherzustellen. Comar ist das Werkzeug, das diese Skripte verwaltet und ausführt. + http://source.pisilinux.org/1.0/comar-3.0.3.tar.bz2 + + dbus-devel + python-devel + cmake + + + run_dir.patch + fix-flags.patch + update-system-manager-model.patch + + system/base/comar/pspec.xml + + + comar + + dbus + python + polkit + dbus-python + + + /usr/bin + /usr/sbin + /etc + /usr/share/dbus-1/system-services + /usr/share/polkit-1/actions + /usr/share/doc/ + /var/db + + + System.Package + + + + + 2015-04-22 + 3.0.3 + Fix run dir path. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 3.0.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 3.0.3 + Release bump, clean comar. + Serdar Soytetir + kaptan@pisilinux.org + + + 2011-05-18 + 3.0.3 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + rsyslog + http://www.rsyslog.com + + PisiLinux Community + admins@pisilinux.org + + GPLv3+ + service + system.base + Enhanced system logging and kernel message trapping daemons + Gelişmiş sistem günlükleme hizmeti + rsyslog is an enhanced multi-threaded syslogd supporting, among others, MySQL, syslog/tcp, RFC 3195, permitted sender lists, filtering on any message part, and fine grain output format control. It is quite compatible with stock sysklogd and can be used as a drop-in replacement. + rsyslog, çoklu iş parçacığı, MySQL, syslog/tcp, RFC 3195, izin verilen gönderici listesi, gelişmiş ileti filtreleme gibi özelliklere sahip gelişmiş bir sistem günlükleme hizmetidir. + http://www.rsyslog.com/files/download/rsyslog/rsyslog-8.11.0.tar.gz + + zlib-devel + json-c-devel + libestr-devel + libgcrypt-devel + liblogging-devel + + system/base/rsyslog/pspec.xml + + + rsyslog + + zlib + json-c + libestr + libgcrypt + liblogging + + + /usr/bin/rsyslogd + /usr/lib/rsyslog + /usr/share/man + /usr/share/doc + /etc/logrotate.d + /etc/conf.d + /etc/rsyslog.d + /etc/rsyslog.conf + /var + + + System.Service + + + rsyslog.logrotate + rsyslog.conf + 50-default.conf + rsyslog.sysconfig + + + + + 2015-07-13 + 8.11.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-05 + 8.9.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 7.6.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-30 + 7.6.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-13 + 7.2.5 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-07-26 + 7.2.5 + Release bump, fix dep. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-14 + 7.2.5 + New release + PisiLinux Community + admins@pisilinux.org + + + 2012-11-21 + 7.2.3 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + v86d + http://dev.gentoo.org/~spock/projects/uvesafb/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + service + system.base + Userspace helper for uvesafb + uvesafb için kullanıcı uzayı yardımcısı + Program pomocniczy uvesafb uruchamiający kod x86 w emulowanym środowisku + v86d is a userspace helper that runs x86 code in an emulated environment. It is used by the kernel framebuffer driver uvesafb. + v86d, öykünmüş bir ortamda x86 kodu çalıştıran yardımcı bir kullanıcı uzayı yardımcısıdır. Çekirdekteki uvesafb framebuffer sürücüsü tarafından kullanılır. + v86d to działający w przestrzeni użytkownika program pomocniczy uruchamiający kod x86. Jest wykorzystywany przez sterownik jądra Linuksa uvesafb. + http://source.pisilinux.org/1.0/v86d-0.1.10.tar.bz2 + system/base/v86d/pspec.xml + + + v86d + + /sbin + /usr/share/doc + + + + + 2016-03-05 + 0.1.10 + Rebuild with new toolchain. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-05-11 + 0.1.10 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 0.1.10 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-12-19 + 0.1.10 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + libpipeline + http://libpipeline.nongnu.org + + PisiLinux Community + admins@pisilinux.org + + GPLv3+ + library + system.base + pipeline manipulation library + pipeline yönetim kitaplığı + libpipeline is a C library for manipulating pipelines of subprocesses in a flexible and convenient way. + libpipeline, alt-süreç girdi/çıktı hatlarını (pipeline) yönetmek için geliştirilmiş bir C kitaplığıdır. + http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.4.1.tar.gz + system/base/libpipeline/pspec.xml + + + libpipeline + + /usr/lib + /usr/share/doc + + + + libpipeline-devel + Development files for libpipeline + libpipeline için geliştirme dosyaları + system.devel + + libpipeline + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man + + + + + 2015-08-24 + 1.4.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-06 + 1.4.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.3.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 1.3.0 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-24 + 1.2.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-01-14 + 1.2.2 + New release + PisiLinux Community + admins@pisilinux.org + + + 2011-12-16 + 1.2.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + piksemel + http://pisilinux.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.base + Python binding for iksemel + iksemel için python desteği + Un analyseur XML simple, rapide, petit et robuste pour Python basé sur iksemel. + A simple, fast, small and robust XML parser for Python, based on iksemel. + Python için basit, hızlı, ufak ve sağlam bir XML ayrıştırıcısı, iksemel tabanlıdır. + http://source.pisilinux.org/1.0/piksemel-1.3.1.tar.gz + + python-devel + + + symbol-visibility.patch + + system/base/piksemel/pspec.xml + + + piksemel + + python + + + /usr/lib + /usr/share/doc + + + + + 2014-05-11 + 1.3.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 1.3.1 + rebuild + Pisi Linux Admins + admins@pisilinux.org + + + 2010-10-11 + 1.3.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + eudev + https://www.gentoo.org/proj/en/eudev/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + console + system.base + eudev is a fork of system-udev + eudev sistemd-udev uygulamasının çatalı + eudev is a fork of system-udev with the goal of obtaining better compatibility with existing software such as OpenRC and Upstart, older kernels, various toolchains and anything else required by users and various distributions. + eudev sistem-udev uygulamasının OpenRC, Upstart gibi başlangıç sistemleri ile uyumu için hazırlanmış çatalı + https://github.com/gentoo/eudev/archive/v3.1.5.tar.gz + + config.cache + + + glibc-devel + libkmod-devel + libpcre-devel + gperf + + system/base/eudev/pspec.xml + + + eudev + + libkmod + + + /bin + /sbin + /usr/bin + /usr/sbin + /lib/udev + /lib + /usr/lib + /etc + /usr/lib/tmpfiles.d/udev.conf + /run/udev + /lib/systemd + /etc/udev/rules.d + /lib/udev/rules.d + /usr/share/doc + /usr/share/man + + + udev + libudev + libgudev1 + + + udev + libudev + libgudev1 + + + System.Package + + + tmpfiles.conf + 60-persistent-storage.rules + 70-yali.rules + + + + eudev-devel + Development files for eudev + system.devel + + eudev + + + /usr/include/ + /usr/lib/pkgconfig + /usr/share/pkgconfig + + + udev-devel + libudev-devel + libgudev1-devel + + + + eudev-32bit + 32-bit shared libraries for eudev + emul32 + emul32 + + glibc-32bit + libkmod-32bit + + + glibc-32bit + + + /lib32 + /usr/lib32 + + + libudev-32bit + libgudev1-32bit + + + libudev-32bit + libgudev1-32bit + + + + + 2016-03-05 + 3.1.5 + Rebuild with new toolchain. + Alihan Öztürk + alihan@pisilinux.org + + + 2016-01-17 + 3.1.5 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-04 + 3.1.2 + Add rules for mount storage, ntfs usb disc too. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-20 + 3.1.2 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-05 + 3.1.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-30 + 3.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-11 + 3.0 + build emul32 and static too. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-29 + 3.0 + First release. + Ertuğrul Erata + ertugrulerata@gmail.com + + + + + + sqlite + http://www.sqlite.org/ + + PisiLinux Community + admins@pisilinux.org + + as-is + library + system.base + An SQL Database Engine in a C Library + Bir C kütüphanesi içindeki bir SQL veritabanı motoru + SQLite est une petite librairie C implémentant un moteur de base de données SQL auto-configurée, auto-suffisante, pouvant être embarquée. Gère des bases de données de tailles allant jusqu'à 2 téraOctets. + SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine. Supports databases up to 2 terabytes in size. + SQLite hiçbir ayar gerektirmeyen, başka programların içine gömülebilir bir SQL veritabanı motorudur. 2 terabayta kadar büyüklükteki veritabanlarını tutabilir. + http://www.sqlite.org/2016/sqlite-autoconf-3110000.tar.gz + http://www.sqlite.org/2016/sqlite-doc-3110000.zip + + readline-devel + + system/base/sqlite/pspec.xml + + + sqlite + + readline + + + /usr/lib + /usr/share/man + /usr/bin + /usr/share/doc/sqlite/README + + + + sqlite-devel + Development files for sqlite + sqlite için geliştirme dosyaları + system.devel + + sqlite + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + sqlite-32bit + 32-bit shared libraries for sqlite + emul32 + emul32 + + glibc-32bit + + + glibc-32bit + sqlite + + + /usr/lib32 + + + + sqlite-doc + sqlite-doc, sqlite için doküman belgeleri + + sqlite + + + /usr/share/doc/sqlite/ + + + + + 2016-03-02 + 3.11.0.0 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-06-08 + 3.8.10.2 + Version bump. + Osman Erkan + osman.erkan@pisilinux.org + + + 2015-02-28 + 3.8.8.3 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2015-01-31 + 3.8.8.2 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2015-01-24 + 3.8.8.1 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-12-05 + 3.8.7.2 + Version bump. + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-07-09 + 3.8.5 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 3.8.4.3 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-03-29 + 3.8.4.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-28 + 3.8.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-06-28 + 3.7.17 + Move pc files to devel pack, increase release no. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-06-28 + 3.7.17 + Version bump + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-21 + 3.7.15.2 + bump + Erdinç Gültekin + admins@pisilinux.org + + + 2012-12-15 + 3.7.14 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + pam + http://www.kernel.org/pub/linux/libs/pam/ + + PisiLinux Community + admins@pisilinux.org + + PAM + library + system.base + Modules d'Authentification en Greffon (Pluggable Authentication Modules) + Pluggable Authentication Modules + PAM - Eklenebilir Yetkilendirme Modülleri + PAM (Pluggable Authentication Modules) is a system security tool that allows system administrators to set authentication policy without having to recompile programs that handle authentication. + http://www.linux-pam.org/library/Linux-PAM-1.2.1.tar.bz2 + + dlopen.sh + dlopen-test.sh + + + perl + gettext + cracklib-devel + libxslt-devel + docbook-xsl + + system/base/pam/pspec.xml + + + pam + + cracklib + + + /etc + /lib + /var/run/console + /usr/lib + /sbin + /usr/sbin + /usr/share/doc + /usr/share/man + /usr/share/locale + + + System.Package + + + 90-nproc.conf + + + + pam-devel + Development files for pam + pam için geliştirme dosyaları + system.devel + + pam + + + /usr/include + /usr/share/man/man3 + + + + + 2016-03-05 + 1.2.1 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-04-01 + 1.1.8 + Rebuild, remove unused. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-10 + 1.1.8 + Add patch CVE. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-05-11 + 1.1.8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-22 + 1.1.8 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-05-16 + 1.1.6 + Sandbox fixed. + PisiLinux Community + admins@pisilinux.org + + + 2013-02-21 + 1.1.6 + Build with new automake, enable tests. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-09-13 + 1.1.6 + First release + Erdem Artan + admins@pisilinux.org + + + + + + curl + http://curl.haxx.se/ + + PisiLinux Community + admins@pisilinux.org + + MIT + X11 + app:console + library + system.base + Un client qui maîtrise tout ce qui concerne les URLs + A utility for getting files from remote servers + Uzak sunuculardan dosya indirmek için bir araç + Ein Client, der URLs versteht + curl is a command line tool for transferring data with URL syntax, supporting various protocols. + curl çeşitli protokolleri destekleyen, URL söz dizimini kullanarak uzak sunuculardan veri aktarmak için kullanılan bir komut satırı aracıdır. + http://curl.haxx.se/download/curl-7.47.1.tar.bz2 + + glibc-devel + zlib-devel + openssl-devel + libidn-devel + libssh2-devel + ca-certificates + + + curl-ac.patch + + system/base/curl/pspec.xml + + + curl + + zlib + libidn + libssh2 + openssl + ca-certificates + + + /usr/bin + /usr/lib + /usr/share/doc/ + /usr/share/man/ + /usr/share/curl + /usr/share/zsh + + + curl-devel + + + + curl-devel + Development files for curl + curl için geliştirme dosyaları + system.devel + + curl + + + /usr/lib/pkgconfig + /usr/bin/curl-config + /usr/include/curl + /usr/share/aclocal + + + + + 2016-03-02 + 7.47.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-28 + 7.47.0 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-05-28 + 7.42.1 + Rebuild. + Vedat Demir + vedat@pisilinux.org + + + 2015-05-01 + 7.42.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2015-04-27 + 7.42.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2015-01-11 + 7.40.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-01-10 + 7.39.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-07-18 + 7.37.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-29 + 7.37.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 7.36 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 7.36 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-12-19 + 7.34.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-10-25 + 7.33.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-06-28 + 7.31.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-11 + 7.28.1 + Güncellendi. + PisiLinux Community + admins@pisilinux.org + + + 2012-08-23 + 7.27.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + xz + http://tukaani.org/xz/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2+ + GPLv2+ + GPLv3 + app:console + library + system.base + XZ compression utilities + XZ sıkıştırma araçları + XZ Utils provide a general purpose data compression library and command line tools. The .xz format supports multiple compression algorithms, which are called "filters" in context of XZ Utils. The primary filter is currently LZMA2. + xz, genel amaçlı bir veri sıkıştırma kütüphanesi ve konut satırı araçları içerir. xz dosya biçimi filtre adı verilen sıkıştırma algoritmalarını destekler, öntanımlı filtre ise LZMA2 algoritmasıdır. + http://tukaani.org/xz/xz-5.2.2.tar.xz + system/base/xz/pspec.xml + + + xz + + /usr/bin + /usr/lib + /usr/share/man + /usr/share/doc + /usr/share/locale + + + + xz-devel + Development files for XZ + XZ için geliştirme dosyaları + system.devel + + xz + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + xz-32bit + 32bit shared libraries for xz + XZ için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + glibc-32bit + xz + + + /usr/lib32 + + + + + 2016-02-28 + 5.2.2 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-27 + 5.2.2 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-08 + 5.2.1 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-10-01 + 5.0.7 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 5.0.5 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-28 + 5.0.5 + Version bump, clean xz. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-26 + 5.0.4 + Move pc files to devel pack, increase release no. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-08-24 + 5.0.4 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + man-db + http://www.nongnu.org/man-db/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + GPLv3+ + app:console + data:doc + system.base + Application to read Linux man pages + Kapsamlı Linux kılavuzları + Man package consists of programs which is used to read most of the documentation available in linux system. For example, you can write "man nameoftheprogram" into the konsole or "man:nameoftheprogram" into the konqueror to get a detailed usage information for many programs. + man-db paketi Linux ile ilgili yazılmış dökümanların büyük çoğunluğunu okunması için gerekli programları sunar. Örneğin, konsola "man programadı" ya da konquerora "man:programadı" yazarak birçok program hakkında detaylı kullanım bilgisi alabilirsiniz. + http://download.savannah.gnu.org/releases/man-db/man-db-2.7.5.tar.xz + + less + gzip + groff + gdbm-devel + zlib-devel + gettext-devel + libpipeline-devel + + system/base/man-db/pspec.xml + + + man-db + + gdbm + zlib + libpipeline + + + /etc + /usr/lib + /usr/bin + /usr/sbin + /usr/libexec + /usr/share/locale + /usr/share/doc + /usr/share/man + /var/cache + + + mandb.conf + mandb.cron.daily + + + + + 2015-11-29 + 2.7.5 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-27 + 2.7.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-08-25 + 2.7.2 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-06 + 2.7.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 2.6.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-03 + 2.6.3 + Rebuild for openjdk. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-28 + 2.6.3 + rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-03-04 + 2.6.3 + Add some patches, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-09-27 + 2.6.3 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + glibc + http://www.gnu.org/software/libc + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv2 + LGPLv2.1 + library + system.base + GNU libc6 (also called glibc2) C library + GNU libc6 (glibc2 olarak da bilinir) C kitaplığı + Glibc, La librairie GNU X est utilisée comme la librairie C dans le système GNU et la plupart des système utilisant le noyau Linux. Elle définit les appels système et autres fonctionnalités du langage de programmation C. + The GNU C library is used as the C library in the GNU system and most systems with the Linux kernel. It defines the system calls and other basic C programming language facilities. + Glibc, GNU C kitaplığı, GNU sisteminde ve Linux dağıtımlarının büyük çoğunluğunda C programlama dili kütüphanesi olarak kullanılır. İçinde sistem çağrıları ve C programlama dili için temel fonksiyonları bulundurur. + http://ftp.gnu.org/gnu/libc/glibc-2.23.tar.xz + + kernel-headers + gettext + binutils + + system/base/glibc/pspec.xml + + + glibc + + gettext + timezone + + + /etc + /lib + /usr/bin + /usr/lib + /usr/sbin + /usr/share/man + /usr/share/i18n + /usr/lib/locale/tr_* + /usr/share/locale/tr* + /usr/share/locale/locale.alias + /sbin + /var + + + timezone + + + System.Package + System.Service + + + host.conf + nsswitch.conf + nscd.conf + + + + glibc-devel + system.devel + + glibc + + + /usr/include + /usr/lib/*.o + /usr/lib32/*.o + /usr/lib/*.a + /usr/lib32/*.a + + + + glibc-32bit + 32-bit shared libraries for glibc + system.base + emul32 + + glibc + + + /etc/ld.so.conf.d/60-glibc-32bit.conf + /usr/lib32 + /lib32 + /lib/ld-linux.so.2 + + + + glibc-docs + system.doc + + /usr/share/doc + /usr/share/info + + + + glibc-locales-aa + locale:aa + system.locale + + /usr/lib/locale/aa_* + /usr/share/locale/aa* + + + + glibc-locales-af + locale:af + system.locale + + /usr/lib/locale/af_* + /usr/share/locale/af* + + + + glibc-locales-am + locale:am + system.locale + + /usr/lib/locale/am_* + /usr/share/locale/am* + + + + glibc-locales-an + locale:an + system.locale + + /usr/lib/locale/an_* + /usr/share/locale/an* + + + + glibc-locales-ar + locale:ar + system.locale + + /usr/lib/locale/ar_* + /usr/share/locale/ar* + + + + glibc-locales-as + locale:as + system.locale + + /usr/lib/locale/as_* + /usr/share/locale/as* + + + + glibc-locales-ast + locale:ast + system.locale + + /usr/lib/locale/ast_* + /usr/share/locale/ast* + + + + glibc-locales-az + locale:az + system.locale + + /usr/lib/locale/az_* + /usr/share/locale/az* + + + + glibc-locales-be + locale:be + system.locale + + /usr/lib/locale/be_* + /usr/share/locale/be* + + + + glibc-locales-bem + locale:bem + system.locale + + /usr/lib/locale/bem_* + /usr/share/locale/bem* + + + + glibc-locales-ber + locale:ber + system.locale + + /usr/lib/locale/ber_* + /usr/share/locale/ber* + + + + glibc-locales-bg + locale:bg + system.locale + + /usr/lib/locale/bg_* + /usr/share/locale/bg* + + + + glibc-locales-bho + locale:bho + system.locale + + /usr/lib/locale/bho_* + /usr/share/locale/bho* + + + + glibc-locales-bn + locale:bn + system.locale + + /usr/lib/locale/bn_* + /usr/share/locale/bn* + + + + glibc-locales-bo + locale:bo + system.locale + + /usr/lib/locale/bo_* + /usr/share/locale/bo* + + + + glibc-locales-br + locale:br + system.locale + + /usr/lib/locale/br_* + /usr/share/locale/br* + + + + glibc-locales-brx + locale:brx + system.locale + + /usr/lib/locale/brx_* + /usr/share/locale/brx* + + + + glibc-locales-bs + locale:bs + system.locale + + /usr/lib/locale/bs_* + /usr/share/locale/bs* + + + + glibc-locales-byn + locale:byn + system.locale + + /usr/lib/locale/byn_* + /usr/share/locale/byn* + + + + glibc-locales-ca + locale:ca + system.locale + + /usr/lib/locale/ca_* + /usr/share/locale/ca* + + + + glibc-locales-crh + locale:crh + system.locale + + /usr/lib/locale/crh_* + /usr/share/locale/crh* + + + + glibc-locales-cs + locale:cs + system.locale + + /usr/lib/locale/cs_* + /usr/share/locale/cs* + + + + glibc-locales-csb + locale:csb + system.locale + + /usr/lib/locale/csb_* + /usr/share/locale/csb* + + + + glibc-locales-cv + locale:cv + system.locale + + /usr/lib/locale/cv_* + /usr/share/locale/cv* + + + + glibc-locales-cy + locale:cy + system.locale + + /usr/lib/locale/cy_* + /usr/share/locale/cy* + + + + glibc-locales-da + locale:da + system.locale + + /usr/lib/locale/da_* + /usr/share/locale/da* + + + + glibc-locales-de + locale:de + system.locale + + /usr/lib/locale/de_* + /usr/share/locale/de* + + + + glibc-locales-dv + locale:dv + system.locale + + /usr/lib/locale/dv_* + /usr/share/locale/dv* + + + + glibc-locales-dz + locale:dz + system.locale + + /usr/lib/locale/dz_* + /usr/share/locale/dz* + + + + glibc-locales-el + locale:el + system.locale + + /usr/lib/locale/el_* + /usr/share/locale/el* + + + + glibc-locales-en + locale:en + system.locale + + /usr/lib/locale/en_AG + /usr/share/locale/en_AG + /usr/lib/locale/en_AU + /usr/share/locale/en_AU + /usr/lib/locale/en_AU.utf8 + /usr/share/locale/en_AU.utf8 + /usr/lib/locale/en_BW + /usr/share/locale/en_BW + /usr/lib/locale/en_BW.utf8 + /usr/share/locale/en_BW.utf8 + /usr/lib/locale/en_CA + /usr/share/locale/en_CA + /usr/lib/locale/en_CA.utf8 + /usr/share/locale/en_CA.utf8 + /usr/lib/locale/en_DK + /usr/share/locale/en_DK + /usr/lib/locale/en_DK.utf8 + /usr/share/locale/en_DK.utf8 + /usr/lib/locale/en_GB + /usr/share/locale/en_GB + /usr/lib/locale/en_GB.utf8 + /usr/share/locale/en_GB.utf8 + /usr/lib/locale/en_HK + /usr/share/locale/en_HK + /usr/lib/locale/en_HK.utf8 + /usr/share/locale/en_HK.utf8 + /usr/lib/locale/en_IE + /usr/share/locale/en_IE + /usr/lib/locale/en_IE@euro + /usr/share/locale/en_IE@euro + /usr/lib/locale/en_IE.utf8 + /usr/share/locale/en_IE.utf8 + /usr/lib/locale/en_IN + /usr/share/locale/en_IN + /usr/lib/locale/en_NG + /usr/share/locale/en_NG + /usr/lib/locale/en_NZ + /usr/share/locale/en_NZ + /usr/lib/locale/en_NZ.utf8 + /usr/share/locale/en_NZ.utf8 + /usr/lib/locale/en_PH + /usr/share/locale/en_PH + /usr/lib/locale/en_PH.utf8 + /usr/share/locale/en_PH.utf8 + /usr/lib/locale/en_SG + /usr/share/locale/en_SG + /usr/lib/locale/en_SG.utf8 + /usr/share/locale/en_SG.utf8 + /usr/lib/locale/en_ZA + /usr/share/locale/en_ZA + /usr/lib/locale/en_ZA.utf8 + /usr/share/locale/en_ZA.utf8 + /usr/lib/locale/en_ZW + /usr/share/locale/en_ZW + /usr/lib/locale/en_ZW.utf8 + /usr/share/locale/en_ZW.utf8 + + + + glibc-locales-es + locale:el + system.locale + + /usr/lib/locale/es* + /usr/share/locale/es* + + + + glibc-locales-eo + locale:eo + system.locale + + /usr/lib/locale/eo* + /usr/share/locale/eo* + + + + glibc-locales-et + locale:et + system.locale + + /usr/lib/locale/et_* + /usr/share/locale/et* + + + + glibc-locales-eu + locale:eu + system.locale + + /usr/lib/locale/eu_* + /usr/share/locale/eu* + + + + glibc-locales-fa + locale:fa + system.locale + + /usr/lib/locale/fa_* + /usr/share/locale/fa* + + + + glibc-locales-ff + locale:ff + system.locale + + /usr/lib/locale/ff_* + /usr/share/locale/ff* + + + + glibc-locales-fi + locale:fi + system.locale + + /usr/lib/locale/fi_* + /usr/share/locale/fi* + + + + glibc-locales-fil + locale:fil + system.locale + + /usr/lib/locale/fil_* + /usr/share/locale/fil* + + + + glibc-locales-fo + locale:fo + system.locale + + /usr/lib/locale/fo_* + /usr/share/locale/fo* + + + + glibc-locales-fr + locale:fr + system.locale + + /usr/lib/locale/fr_* + /usr/share/locale/fr* + + + + glibc-locales-fur + locale:fur + system.locale + + /usr/lib/locale/fur_* + /usr/share/locale/fur* + + + + glibc-locales-fy + locale:fy + system.locale + + /usr/lib/locale/fy_* + /usr/share/locale/fy* + + + + glibc-locales-ga + locale:ga + system.locale + + /usr/lib/locale/ga_* + /usr/share/locale/ga* + + + + glibc-locales-gd + locale:gd + system.locale + + /usr/lib/locale/gd_* + /usr/share/locale/gd* + + + + glibc-locales-gez + locale:gez + system.locale + + /usr/lib/locale/gez_* + /usr/share/locale/gez* + + + + glibc-locales-gl + locale:gl + system.locale + + /usr/lib/locale/gl_* + /usr/share/locale/gl* + + + + glibc-locales-gu + locale:gu + system.locale + + /usr/lib/locale/gu_* + /usr/share/locale/gu* + + + + glibc-locales-gv + locale:gv + system.locale + + /usr/lib/locale/gv_* + /usr/share/locale/gv* + + + + glibc-locales-ha + locale:ha + system.locale + + /usr/lib/locale/ha_* + /usr/share/locale/ha* + + + + glibc-locales-he + locale:he + system.locale + + /usr/lib/locale/he_* + /usr/share/locale/he* + + + + glibc-locales-hi + locale:hi + system.locale + + /usr/lib/locale/hi_* + /usr/share/locale/hi* + + + + glibc-locales-hne + locale:hne + system.locale + + /usr/lib/locale/hne_* + /usr/share/locale/hne* + + + + glibc-locales-hr + locale:hr + system.locale + + /usr/lib/locale/hr_* + /usr/share/locale/hr* + + + + glibc-locales-hsb + locale:hsb + system.locale + + /usr/lib/locale/hsb_* + /usr/share/locale/hsb* + + + + glibc-locales-ht + locale:ht + system.locale + + /usr/lib/locale/ht_* + /usr/share/locale/ht* + + + + glibc-locales-hu + locale:hu + system.locale + + /usr/lib/locale/hu_* + /usr/share/locale/hu* + + + + glibc-locales-hy + locale:hy + system.locale + + /usr/lib/locale/hy_* + /usr/share/locale/hy* + + + + glibc-locales-ia + locale:ia + system.locale + + /usr/lib/locale/ia_* + /usr/share/locale/ia* + + + + glibc-locales-id + locale:id + system.locale + + /usr/lib/locale/id_* + /usr/share/locale/id* + + + + glibc-locales-ig + locale:ig + system.locale + + /usr/lib/locale/ig_* + /usr/share/locale/ig* + + + + glibc-locales-ik + locale:ik + system.locale + + /usr/lib/locale/ik_* + /usr/share/locale/ik* + + + + glibc-locales-is + locale:is + system.locale + + /usr/lib/locale/is_* + /usr/share/locale/is* + + + + glibc-locales-it + locale:it + system.locale + + /usr/lib/locale/it_* + /usr/share/locale/it* + + + + glibc-locales-iu + locale:iu + system.locale + + /usr/lib/locale/iu_* + /usr/share/locale/iu* + + + + glibc-locales-iw + locale:iw + system.locale + + /usr/lib/locale/iw_* + /usr/share/locale/iw* + + + + glibc-locales-ja + locale:ja + system.locale + + /usr/lib/locale/ja_* + /usr/share/locale/ja* + + + + glibc-locales-ka + locale:ka + system.locale + + /usr/lib/locale/ka_* + /usr/share/locale/ka* + + + + glibc-locales-kk + locale:kk + system.locale + + /usr/lib/locale/kk_* + /usr/share/locale/kk* + + + + glibc-locales-kl + locale:kl + system.locale + + /usr/lib/locale/kl_* + /usr/share/locale/kl* + + + + glibc-locales-km + locale:km + system.locale + + /usr/lib/locale/km_* + /usr/share/locale/km* + + + + glibc-locales-kn + locale:kn + system.locale + + /usr/lib/locale/kn_* + /usr/share/locale/kn* + + + + glibc-locales-ko + locale:ko + system.locale + + /usr/lib/locale/ko_* + /usr/share/locale/ko* + + + + glibc-locales-kok + locale:kok + system.locale + + /usr/lib/locale/kok_* + /usr/share/locale/kok* + + + + glibc-locales-ks + locale:ks + system.locale + + /usr/lib/locale/ks_* + /usr/share/locale/ks* + + + + glibc-locales-ku + locale:ku + system.locale + + /usr/lib/locale/ku_* + /usr/share/locale/ku* + + + + glibc-locales-kw + locale:kw + system.locale + + /usr/lib/locale/kw_* + /usr/share/locale/kw* + + + + glibc-locales-ky + locale:ky + system.locale + + /usr/lib/locale/ky_* + /usr/share/locale/ky* + + + + glibc-locales-lb + locale:lb + system.locale + + /usr/lib/locale/lb_* + /usr/share/locale/lb* + + + + glibc-locales-lg + locale:lg + system.locale + + /usr/lib/locale/lg_* + /usr/share/locale/lg* + + + + glibc-locales-li + locale:li + system.locale + + /usr/lib/locale/li_* + /usr/share/locale/li* + + + + glibc-locales-lo + locale:lo + system.locale + + /usr/lib/locale/lo_* + /usr/share/locale/lo_* + + + + glibc-locales-lt + locale:lt + system.locale + + /usr/lib/locale/lt_* + /usr/share/locale/lt* + + + + glibc-locales-lv + locale:lv + system.locale + + /usr/lib/locale/lv_* + /usr/share/locale/lv* + + + + glibc-locales-mag + locale:mag + system.locale + + /usr/lib/locale/mag_* + /usr/share/locale/mag* + + + + glibc-locales-mai + locale:mai + system.locale + + /usr/lib/locale/mai_* + /usr/share/locale/mai* + + + + glibc-locales-mg + locale:mg + system.locale + + /usr/lib/locale/mg_* + /usr/share/locale/mg* + + + + glibc-locales-mhr + locale:mhr + system.locale + + /usr/lib/locale/mhr_* + /usr/share/locale/mhr* + + + + glibc-locales-mi + locale:mi + system.locale + + /usr/lib/locale/mi_* + /usr/share/locale/mi* + + + + glibc-locales-mk + locale:mk + system.locale + + /usr/lib/locale/mk_* + /usr/share/locale/mk* + + + + glibc-locales-ml + locale:ml + system.locale + + /usr/lib/locale/ml_* + /usr/share/locale/ml* + + + + glibc-locales-mn + locale:mn + system.locale + + /usr/lib/locale/mn_* + /usr/share/locale/mn* + + + + glibc-locales-mr + locale:mr + system.locale + + /usr/lib/locale/mr_* + /usr/share/locale/mr* + + + + glibc-locales-ms + locale:ms + system.locale + + /usr/lib/locale/ms_* + /usr/share/locale/ms* + + + + glibc-locales-mt + locale:mt + system.locale + + /usr/lib/locale/mt_* + /usr/share/locale/mt* + + + + glibc-locales-my + locale:my + system.locale + + /usr/lib/locale/my_* + /usr/share/locale/my* + + + + glibc-locales-nan + locale:nan + system.locale + + /usr/lib/locale/nan_* + /usr/share/locale/nan* + + + + glibc-locales-nb + locale:nb + system.locale + + /usr/lib/locale/nb_* + /usr/share/locale/nb* + + + + glibc-locales-nds + locale:nds + system.locale + + /usr/lib/locale/nds_* + /usr/share/locale/nds* + + + + glibc-locales-ne + locale:ne + system.locale + + /usr/lib/locale/ne_* + /usr/share/locale/ne* + + + + glibc-locales-nl + locale:nl + system.locale + + /usr/lib/locale/nl_* + /usr/share/locale/nl* + + + + glibc-locales-nn + locale:nn + system.locale + + /usr/lib/locale/nn_* + /usr/share/locale/nn* + + + + glibc-locales-nr + locale:nr + system.locale + + /usr/lib/locale/nr_* + /usr/share/locale/nr* + + + + glibc-locales-nso + locale:nso + system.locale + + /usr/lib/locale/nso_* + /usr/share/locale/nso* + + + + glibc-locales-oc + locale:oc + system.locale + + /usr/lib/locale/oc_* + /usr/share/locale/oc* + + + + glibc-locales-om + locale:om + system.locale + + /usr/lib/locale/om_* + /usr/share/locale/om* + + + + glibc-locales-or + locale:or + system.locale + + /usr/lib/locale/or_* + /usr/share/locale/or* + + + + glibc-locales-os + locale:os + system.locale + + /usr/lib/locale/os_* + /usr/share/locale/os* + + + + glibc-locales-pa + locale:pa + system.locale + + /usr/lib/locale/pa_* + /usr/share/locale/pa* + + + + glibc-locales-pap + locale:pap + system.locale + + /usr/lib/locale/pap_* + /usr/share/locale/pap* + + + + glibc-locales-pl + locale:pl + system.locale + + /usr/lib/locale/pl_* + /usr/share/locale/pl* + + + + glibc-locales-ps + locale:ps + system.locale + + /usr/lib/locale/ps_* + /usr/share/locale/ps* + + + + glibc-locales-pt + locale:pt + system.locale + + /usr/lib/locale/pt_* + /usr/share/locale/pt* + + + + glibc-locales-ro + locale:ro + system.locale + + /usr/lib/locale/ro_* + /usr/share/locale/ro* + + + + glibc-locales-ru + locale:ru + system.locale + + /usr/lib/locale/ru_* + /usr/share/locale/ru* + + + + glibc-locales-rw + locale:rw + system.locale + + /usr/lib/locale/rw_* + /usr/share/locale/rw* + + + + glibc-locales-sa + locale:sa + system.locale + + /usr/lib/locale/sa_* + /usr/share/locale/sa* + + + + glibc-locales-sc + locale:sc + system.locale + + /usr/lib/locale/sc_* + /usr/share/locale/sc* + + + + glibc-locales-sd + locale:sd + system.locale + + /usr/lib/locale/sd_* + /usr/share/locale/sd* + + + + glibc-locales-se + locale:se + system.locale + + /usr/lib/locale/se_* + /usr/share/locale/se* + + + + glibc-locales-shs + locale:shs + system.locale + + /usr/lib/locale/shs_* + /usr/share/locale/shs* + + + + glibc-locales-si + locale:si + system.locale + + /usr/lib/locale/si_* + /usr/share/locale/si* + + + + glibc-locales-sid + locale:sid + system.locale + + /usr/lib/locale/sid_* + /usr/share/locale/sid* + + + + glibc-locales-sk + locale:sk + system.locale + + /usr/lib/locale/sk_* + /usr/share/locale/sk* + + + + glibc-locales-sl + locale:sl + system.locale + + /usr/lib/locale/sl_* + /usr/share/locale/sl* + + + + glibc-locales-so + locale:so + system.locale + + /usr/lib/locale/so_* + /usr/share/locale/so* + + + + glibc-locales-sq + locale:sq + system.locale + + /usr/lib/locale/sq_* + /usr/share/locale/sq* + + + + glibc-locales-sr + locale:sr + system.locale + + /usr/lib/locale/sr_* + /usr/share/locale/sr* + + + + glibc-locales-ss + locale:ss + system.locale + + /usr/lib/locale/ss_* + /usr/share/locale/ss* + + + + glibc-locales-st + locale:st + system.locale + + /usr/lib/locale/st_* + /usr/share/locale/st* + + + + glibc-locales-sv + locale:sv + system.locale + + /usr/lib/locale/sv_* + /usr/share/locale/sv* + + + + glibc-locales-sw + locale:sw + system.locale + + /usr/lib/locale/sw_* + /usr/share/locale/sw* + + + + glibc-locales-ta + locale:ta + system.locale + + /usr/lib/locale/ta_* + /usr/share/locale/ta* + + + + glibc-locales-te + locale:te + system.locale + + /usr/lib/locale/te_* + /usr/share/locale/te* + + + + glibc-locales-tg + locale:tg + system.locale + + /usr/lib/locale/tg_* + /usr/share/locale/tg* + + + + glibc-locales-th + locale:th + system.locale + + /usr/lib/locale/th_* + /usr/share/locale/th* + + + + glibc-locales-ti + locale:ti + system.locale + + /usr/lib/locale/ti_* + /usr/share/locale/ti* + + + + glibc-locales-tig + locale:tig + system.locale + + /usr/lib/locale/tig_* + /usr/share/locale/tig* + + + + glibc-locales-tk + locale:tk + system.locale + + /usr/lib/locale/tk_* + /usr/share/locale/tk* + + + + glibc-locales-tl + locale:tl + system.locale + + /usr/lib/locale/tl_* + /usr/share/locale/tl* + + + + glibc-locales-tn + locale:tn + system.locale + + /usr/lib/locale/tn_* + /usr/share/locale/tn* + + + + glibc-locales-ts + locale:ts + system.locale + + /usr/lib/locale/ts_* + /usr/share/locale/ts* + + + + glibc-locales-tt + locale:tt + system.locale + + /usr/lib/locale/tt_* + /usr/share/locale/tt* + + + + glibc-locales-ug + locale:ug + system.locale + + /usr/lib/locale/ug_* + /usr/share/locale/ug* + + + + glibc-locales-uk + locale:uk + system.locale + + /usr/lib/locale/uk_* + /usr/share/locale/uk* + + + + glibc-locales-unm + locale:unm + system.locale + + /usr/lib/locale/unm_* + /usr/share/locale/unm* + + + + glibc-locales-ur + locale:ur + system.locale + + /usr/lib/locale/ur_* + /usr/share/locale/ur* + + + + glibc-locales-uz + locale:uz + system.locale + + /usr/lib/locale/uz_* + /usr/share/locale/uz* + + + + glibc-locales-ve + locale:ve + system.locale + + /usr/lib/locale/ve_* + /usr/share/locale/ve* + + + + glibc-locales-vi + locale:vi + system.locale + + /usr/lib/locale/vi_* + /usr/share/locale/vi* + + + + glibc-locales-wa + locale:wa + system.locale + + /usr/lib/locale/wa_* + /usr/share/locale/wa* + + + + glibc-locales-wae + locale:wae + system.locale + + /usr/lib/locale/wae_* + /usr/share/locale/wae* + + + + glibc-locales-wal + locale:wal + system.locale + + /usr/lib/locale/wal_* + /usr/share/locale/wal* + + + + glibc-locales-wo + locale:wo + system.locale + + /usr/lib/locale/wo_* + /usr/share/locale/wo* + + + + glibc-locales-xh + locale:xh + system.locale + + /usr/lib/locale/xh_* + /usr/share/locale/xh* + + + + glibc-locales-yi + locale:yi + system.locale + + /usr/lib/locale/yi_* + /usr/share/locale/yi* + + + + glibc-locales-yo + locale:yo + system.locale + + /usr/lib/locale/yo_* + /usr/share/locale/yo* + + + + glibc-locales-yue + locale:yue + system.locale + + /usr/lib/locale/yue_* + /usr/share/locale/yue* + + + + glibc-locales-zh + locale:zh + system.locale + + /usr/lib/locale/zh_* + /usr/share/locale/zh* + + + + glibc-locales-zu + locale:zu + system.locale + + /usr/lib/locale/zu_* + /usr/share/locale/zu* + + + + + 2016-02-27 + 2.23 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-04 + 2.21 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-11-28 + 2.20 + Rebuild, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-18 + 2.20 + Rebuild, add patches, fix one memleak and segfault. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-12 + 2.20 + Add emul32 support. + We have a new package named glibc-32bit. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-06 + 2.19 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 2.19 + Rebuild, fix xattr patch. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-03-29 + 2.19 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-12 + 2.18 + Add patch. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-22 + 2.18 + Version bump, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-16 + 2.17 + New release. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-07-22 + 2.16 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + dbus + http://dbus.freedesktop.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + AFL-2.1 + service + system.base + A message bus system, a simple way for applications to talk to each other + Uygulamaların birbirleriyle haberleşmesinin basit bir yöntemi + D-Bus fourni à la fois un daemon système (pour les événements els que l'"ajout d'un nouveau périphérique" ou "file d'impression changée") et un daemon propre à chaque session utilisateur (pour les besoins généraux de communication entre processus utilisateurs). De plus, le bus de message est construit en se basant sur un framework (cadre de développement) de passage de message de un-vers-un pouvant être utilisé par n'importe quelles applications pour communiquer directement (sans passer par le daemon de bus de message). Pour l'instant les applications pouvant communiquer doivent être situées sur le même ordinateur, mais l'option TCP/IP est disponible et le support de processus distant est prévu. + D-Bus supplies both a system daemon (for events such as "new hardware device added" or "printer queue changed") and a per-user-login-session daemon (for general IPC needs among user applications). Also, the message bus is built on top of a general one-to-one message passing framework, which can be used by any two apps to communicate directly (without going through the message bus daemon). Currently the communicating applications are on one computer, but TCP/IP option is available and remote support planned. + D-Bus, sistem ve kullanıcılar için olmak üzere iki tane artalan süreci (daemon) sunar. Mesaj yolu, bire bir mesaj geçiş araçları üzerine inşa edilmiştir. Bu sayede iki program birbiriyle bir mesaj yolu artalan süreci kullanmadan, direkt olarak haberleşebilir. Şu an için haberleşme araçları aynı bilgisayar üzerinde çalışabilmektedir, fakat TCP/IP ile uzaktan haberleşme de planlanmaktadır. + http://dbus.freedesktop.org/releases/dbus/dbus-1.10.6.tar.gz + + expat-devel + libX11-devel + libcap-ng-devel + + system/base/dbus/pspec.xml + + + dbus + + expat + libcap-ng + + + /etc/dbus-1 + /usr/lib/tmpfiles.d/dbus.conf + /usr/bin + /usr/lib + /usr/libexec + /usr/share/dbus-1 + /usr/share/doc + /usr/share/man + /run/dbus + /var/lib/dbus + /lib/systemd/system + + + System.Package + + + tmpfiles.conf + + + + dbus-x11 + x11.util + + libX11 + dbus + + + /usr/bin/dbus-launch + + + + dbus-devel + Development files for dbus + dbus için geliştirme dosyaları + system.devel + + dbus + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/lib/dbus-1.0/include + /usr/share/man/man3 + + + + dbus-32bit + 32-bit shared libraries for dbus + dbus için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + expat-32bit + glibc-32bit + + + glibc-32bit + + + /usr/lib32 + + + + + 2016-03-03 + 1.10.6 + Rebuild with new toolchain. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-12-23 + 1.10.6 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-11-12 + 1.10.2 + Version Bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-09 + 1.10.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-11 + 1.9.14 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-15 + 1.9.10 + Version bump and security fixes CVE-2015-0245. + Vedat Demir + vedat@pisilinux.org + + + 2015-01-25 + 1.9.6 + Version bump and security update (CVE-2014-3636, CVE-2014-3637,CVE-2014-3638, CVE-2014-3639) . + Vedat Demir + vedat@pisilinux.org + + + 2014-09-19 + 1.8.8 + Version bump and security update (CVE-2014-3636, CVE-2014-3637,CVE-2014-3638, CVE-2014-3639) . + Vedat Demir + vedat@pisilinux.org + + + 2014-07-04 + 1.8.6 + Version bump and security update CVE-2014-3532 CVE-2014-3533. + Vedat Demir + vedat@pisilinux.org + + + 2014-06-23 + 1.8.4 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 1.8.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-18 + 1.8.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-09 + 1.6.18 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-23 + 1.6.16 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-09-08 + 1.6.14 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-16 + 1.6.8 + First release + Erdem Artan + admins@pisilinux.org + + + + + + libgpg-error + http://www.gnupg.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + LGPLv2.1 + library + system.base + Contient les fonctions de gestion d'erreur utilisées par le logiciel GnuPG. + Library for error values used by GnuPG components + GnuPG bileşenlerinin kullandığı hata değerleri için kitaplık + libgpg-error is a library that defines common error values for all GnuPG components. + libgpg-error, tüm GnuPG bileşenleri için ortak olan hata değerlerini tanımlayan bir kitaplıktır. + ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.19.tar.bz2 + system/base/libgpg-error/pspec.xml + + + libgpg-error + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/info + /usr/share/man + /usr/share/locale + + + + libgpg-error-devel + Development files for libgpg-error + libgpg-error için geliştirme dosyaları + system.devel + + libgpg-error + + + /usr/bin/gpg-error-config + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/aclocal + + + + libgpg-error-32bit + 32-bit shared libraries for libgpg-error + libgpg-error için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + libgpg-error + glibc-32bit + + + /usr/lib32 + + + + + 2015-04-13 + 1.19 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.12 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-26 + 1.12 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-09-15 + 1.10 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + patch + http://www.gnu.org/software/patch/patch.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.devel + Applies patch files + Yama dosyalarını uygular + Aplicación de archivos de parches + Permet d'appliquer un patch générer par la commande diff aux fichiers originels, obtenant ainsi les fichiers patchés. + Patch takes a patch file generated by diff command, and applies it to the original files, thus producing patched files. + Özgün dosyaları, diff komutu ile üretilmiş yama dosyasını uygulayarak, yeni biçimlerine çevirir. + Recibe una archivo de parche generado por el comando diff y lo aplica a los archivos originales, así produciendo archivos parcheados. + ftp://ftp.gnu.org/gnu/patch/patch-2.7.5.tar.xz + + attr-devel + + system/devel/patch/pspec.xml + + + patch + + attr + + + /usr/bin + /usr/share/doc + /usr/share/man + + + + + 2016-02-29 + 2.7.5 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-05 + 2.7.5 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-01 + 2.7.4 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-05-11 + 2.7.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-27 + 2.7.1 + Add patch. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-01 + 2.7.1 + Fix deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-17 + 2.7.1 + New release + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-09-23 + 2.7 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + flex + http://flex.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + FLEX + app:console + system.devel + GNU lexical analyser generator + GNU sözcüksel analiz üreteci + Flex est un outil de génération d'analyseur (scanner). Un analyseur (également appelé tokenizer en anglais) est un programme qui repère les motifs lexicaux (ou lexème) dans du texte. + Flex is a tool for generating scanners. A scanner, sometimes called a tokenizer, is a program which recognizes lexical patterns in text + Flex, metin içindeki sözcüksel kalıpları tanıyan, analiz aracı üretecidir. + mirrors://sourceforge/flex/flex-2.6.0.tar.gz + + patch + texinfo + + + flex-2.5.37-notex.patch + + system/devel/flex/pspec.xml + + + flex + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/include + /usr/share/locale + + + + + 2015-11-29 + 2.6.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-02 + 2.5.39 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 2.5.38 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 2.5.38 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-28 + 2.5.37 + Clean flex. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-18 + 2.5.37 + v.bump + PisiLinux Community + admins@pisilinux.org + + + 2012-07-14 + 2.5.35 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + numactl + ftp://oss.sgi.com/www/projects/libnuma/download + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + LGPLv2 + library + app:console + system.devel + Library for tuning NUMA machines + NUMA makineleri optimize etmek için bir kitaplık + numactl consists of a numactl program to run other programs with a specific NUMA policy and a libnuma to do allocations with NUMA policy in applications. + numactl, uygulamaları farklı NUMA (Tekdüze Olmayan Bellek Erişimi) politikalarıyla çalıştırmak için gerekli bir araç ve kitaplıktır. + ftp://oss.sgi.com/www/projects/libnuma/download/numactl-2.0.11.tar.gz + system/devel/numactl/pspec.xml + + + numactl + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + + + + numactl-devel + Development files for numactl + numactl için geliştirme dosyaları + + numactl + + + /usr/include + /usr/share/man/man3 + + + + + 2016-03-02 + 2.0.11 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-05-16 + 2.0.10 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-31 + 2.0.9 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-01-31 + 2.0.9 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2013-01-07 + 2.0.8 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + xtrans + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + system.devel + Librairie trans de X.Org. + X.Org trans library + X.Org trans kitaplığı. + X.Org trans Bibliothek + xtrans includes a number of routines to make X implementations transport-independent. + xtrans, X gerçeklemelerini taşıma türünden bağımsız yapmak için kullanılan bazı yordamları içerir. + mirrors://xorg/individual/lib/xtrans-1.3.5.tar.bz2 + + util-macros + + system/devel/xtrans/pspec.xml + + + xtrans + + /usr/include/X11/Xtrans + /usr/share/aclocal + /usr/share/pkgconfig + + + + + 2015-05-05 + 1.3.5 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-07-11 + 1.3.4 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 1.3.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-05 + 1.3.3 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-17 + 1.3.2 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2012-08-19 + 1.2.7 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + intltool + https://launchpad.net/intltool + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.devel + Utility for internationalizing various kinds of data files + Çeşitli kaynak kod dosyalarından satırları ayıklamak için kullanılan betikler + Scripts d'extraction depuis divers fichiers sources de chaînes traduisibles. + intltool automatically extracts translatable strings from oaf, glade, bonobo ui, nautilus theme, .desktop files, etc. and puts them in the po files. + Çeşitli kaynak kod dosyalarından satırları ayıklamak için kullanılan betikler. + https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz + + perl + perl-XML-Parser + + system/devel/intltool/pspec.xml + + + intltool + + perl-XML-Parser + + + /usr/bin + /usr/share/aclocal + /usr/share/intltool + /usr/share/man + /usr/share/doc + + + + + 2015-06-06 + 0.51.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 0.50.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-28 + 0.50.2 + Clean intltool. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-09-19 + 0.50.2 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + cmake + http://www.cmake.org + + PisiLinux Community + admins@pisilinux.org + + BSD + app:console + system.devel + Cross-platform, open-source make system + Cmake, açık kaynak kodlu ve birden fazla platformda çalışan bir 'make' sistemidir. + CMake, système make open-source et multi-plateforme. CMake est utilisé pour contrôler le processus de compilation de logiciel en utilisant une plate-forme de fichiers de configuration simple et indépendante de compilateur. CMake génère des makefiles et un environnement de travail natifs pouvant être utilisés dans l'environnement du compilateur de votre choix. + CMake, the cross-platform, open-source make system. CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice. + Cmake, açık kaynak kodlu ve birden fazla platformda çalışan bir 'make' sistemidir. Yazılım derleme sürecini kontrol etmek için kullanılan CMake, derleyici bağımsız yapılandırma dosyalarının oluşturulmasını sağlar. + http://www.cmake.org/files/v3.4/cmake-3.4.0.tar.gz + + curl-devel + expat-devel + libarchive-devel + ncurses-devel + zlib-devel + xz-devel + + system/devel/cmake/pspec.xml + + + cmake + + curl + expat + libarchive + libgcc + ncurses + zlib + + + /usr/bin + /usr/share/cmake + /usr/share/aclocal/ + /usr/share/doc + /usr/share/man + + + + + 2015-11-15 + 3.4.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2015-08-20 + 3.3.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2015-07-28 + 3.2.3 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-17 + 3.2.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2015-04-04 + 3.2.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2015-02-27 + 3.1.3 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-12-17 + 3.0.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-08-23 + 3.0.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 2.8.12.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 2.8.12.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-12-11 + 2.8.12.1 + Fix finding freetype issue. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-24 + 2.8.12.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-23 + 2.8.12 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-28 + 2.8.11.2 + Clean cmake. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-01 + 2.8.10.2 + Fix deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-17 + 2.8.10.2 + Version bump + Ertan Güven + ertan@pisilinux.org + + + 2012-12-01 + 2.8.10 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + pkgconfig + http://www.freedesktop.org/software/pkgconfig/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.devel + Package Config system that manages compile/link flags for libraries + Kütüphaneler için derleme bayraklarını yöneten bir paket yapılandırma sistemi + Sistema de configuración de paquetes que soporta banderas de compilación/link para librerías + Paquet de configuration système qui gère les fanions (flags) de compilation et chaînage (link) pour les librairies. Il aide à insérer les options adéquates dans la ligne de commande d'appel au compilateur. + Package Config system that manages compile/link flags for libraries. It helps you insert the correct compiler options on the command line. + Kütüphaneler için derleme bayraklarını yöneten, bir paket yapılandırma sistemi. Komut satırından, doğru derleme seçenekleri sunma olanağı sağlar + Sistema de configuración de paquetes que soporta banderas de compilación/link para librerías. Facilita la inserción de las opciones correctos de compilador en línea de comando + http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.tar.gz + + gnuconfig + glib2-devel + + system/devel/pkgconfig/pspec.xml + + + pkgconfig + + glib2 + + + /usr/bin + /usr/share/doc + /usr/share/man + /usr/share/aclocal + /usr/share/pkgconfig + /usr/lib/pkgconfig + + + + + 2016-02-28 + 0.29 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-10-27 + 0.29 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 0.28 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-31 + 0.28 + Clean pkgconfig. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-01 + 0.28 + Fix deps. + PisiLinux Community + admins@pisilinux.org + + + 2013-02-18 + 0.28 + Fixed + PisiLinux Community + admins@pisilinux.org + + + 2012-09-15 + 0.27.1 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + libsigsegv + http://libsigsegv.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.devel + Une librairie pour gérer les erreurs de pagination en mode utilisateur. + A library for handling page faults in user mode + Oluşan bellek hatalarının kullanıcı kipinde işlenmesini sağlayan bir kitaplık + This is a library for handling page faults in user mode. A page fault occurs when a program tries to access to a region of memory that is currently not available. + libsigsegv, oluşan bellek hatalarının kullanıcı kipinde işlenmesini sağlayan bir kitaplıktır. + mirrors://gnu/libsigsegv/libsigsegv-2.10.tar.gz + system/devel/libsigsegv/pspec.xml + + + libsigsegv + + /usr/lib + /usr/share/doc + + + + libsigsegv-devel + Development files for libsigsegv + libsigsegv için geliştirme dosyaları + + libsigsegv + + + /usr/include + + + + + 2014-05-11 + 2.10 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-15 + 2.10 + Release bump + Burak Ertürk + burakerturk@pisilinux.org + + + 2013-10-22 + 2.10 + Rebuild. + Pisi Linux Admins + admins@pisilinux.org + + + 2011-12-09 + 2.10 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + cython + http://www.cython.org + + Pisi Linux Admins + admins@pisilinux.org + + Apache-2.0 + app:console + library + system.devel + C extensions for the Python + Python için C eklentileri + Cython is a language that makes writing C extensions for the Python language as easy as Python itself. + Cython, Python için C eklentileri yazmayı kolaylaştıran bir dildir. + http://cython.org/release/Cython-0.23.4.tar.gz + + python-devel + + system/devel/cython/pspec.xml + + + cython + + python + + + /usr/bin + /usr/lib + /usr/share/doc + + + + + 2016-01-15 + 0.23.4 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-08-14 + 0.23 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-22 + 0.22.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-16 + 0.22 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2015-02-03 + 0.21.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-07-05 + 0.20.2 + Version bump + Vedat Demir + vedat@pisilinux.org + + + 2013-11-07 + 0.19.2 + Version bump + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2013-05-02 + 0.19 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-09-15 + 0.17 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + gcc + http://gcc.gnu.org + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv3+ + LGPLv3+ + app:console + library + system.devel + The GNU Compiler Collection, includes C, C++, Objective-C and Fortran compilers + C/C++ ve Fortran derleyicisi + La collection de compilateurs GNU inclus des façades pour le C, C++, Objective-C, Fortran, hava et Ada ainsi que des librairies pour ces langages (libstdc++, libgcj...) + The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, as well as libraries for these languages + C, C++, Objective-C, Fortran programlama dilleri ile bu dillere ait kütüphaneleri içeren, GNU derleyici paketi + ftp://gd.tuwien.ac.at/gnu/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.bz2 + + binutils + bison + gettext + ncurses + zlib + gnuconfig + patch + sed + texinfo + gmp-devel + mpfr-devel + libmpc-devel + ppl + zlib-devel + isl-devel + elfutils + + + pisilinux/64.patch + pisilinux/gcc_47_based-record_gcc_options.patch + + system/devel/gcc/pspec.xml + + + libquadmath + The GNU Fortran Compiler Quadmath Runtime Library + library + system.base + + /usr/lib/libquadmath.so* + /usr/lib/libquadmath.spec* + /usr/lib32/libquadmath.so* + /usr/lib32/libquadmath.spec* + /usr/share/info/libquadmath.info + + + + libgcc + Contains a shared library of support routines used by GCC's runtime, and thus by every program on the system + library + system.base + + /etc + /usr/lib/libstdc++.so* + /usr/lib/libgcc_s.so* + /usr/lib32/libstdc++.so* + /usr/lib32/libgcc_s.so* + /usr/share/gcc-* + /usr/share/gdb + + + + libgomp + Contains GCC shared support library which is needed for OpenMP 2.5 support + library + + /usr/lib/libgomp.so* + /usr/lib/libgomp.spec* + /usr/lib32/libgomp.so* + /usr/lib32/libgomp.spec* + /usr/share/info/libgomp.info + + + + libgfortran + Contains GCC shared support library for gfortran + library + + libquadmath + + + /usr/lib/libgfortran.so* + /usr/lib32/libgfortran.so* + + + + libobjc + Contains GCC shared support library for objc + library + + /usr/lib/libobjc.so* + /usr/lib32/libobjc.so* + + + + gcc-l10n + Contains available GCC localization files, includes also turkish translations + system.locale + + gcc + + + /usr/share/locale + + + + gcc + + gmp + isl + mpfr + zlib + libmpc + + + /lib + /usr/bin + /usr/lib + /usr/lib32 + /usr/libexec + /usr/include + /usr/share/man + /usr/share/info + + + gfilt + gSTLFilt.pl + + + + + 2016-02-05 + 5.3.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-11-28 + 4.9.2 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-12 + 4.9.1 + Rebuild for new glibc. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-06 + 4.9.1 + Version bump, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 4.9.0 + Rebuild, add patch. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-04-28 + 4.9.0 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-04-01 + 4.8.2 + Rebuild for dependency changes. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-11 + 4.8.2 + backport ICE fix + http://gcc.gnu.org/bugzilla//show_bug.cgi?id=56710 - commit 3d1f8279 + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57653 + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-22 + 4.8.2 + Cleanup, version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-14 + 4.8.1 + Rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-23 + 4.8.1 + Version bump, cleanup patches. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-10-14 + 4.7.2 + Cleanup package, add some patches. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-10-14 + 4.7.2 + First release + Erdem Artan + admins@pisilinux.org + + + + + + perl-XML-Parser + http://search.cpan.org/dist/XML-Parser/ + + PisiLinux Community + admins@pisilinux.org + + Artistic + library + system.devel + A Perl extension interface to James Clark's XML parser, expat + James Clark'ın XML ayırıştırıcısına bir Perl uzantısı arayüzü + Una extensión Perl al parseador XML de James Clark, expat + This module provides an interface to James Clark's XML parser, expat. As in expat, a single instance of the parser can only parse one document. Calls to parsestring after the first for a given instance will die. + Bu modül James Clark'ın XML ayrıştırıcısı expat için bir arayüz sağlar. Expat'ta olduğu gibi ayrıştırıcıdan türetilen her nesne sadece bir dosyayı ayrıştırabilir. + Este módulo facilita una interfaz al parser XML de James Clark, expat. Como en expat, una sola instancia del parser puede analizar solamente un documento. Llamadas a parsestring después del primero de una instancia determinada morirán. + mirrors://cpan/authors/id/T/TO/TODDR/XML-Parser-2.44.tar.gz + + expat-devel + perl + + system/devel/perl-XML-Parser/pspec.xml + + + perl-XML-Parser + + expat + perl + + + /usr/share/doc + /usr/lib + /usr/share/man + + + + + 2015-06-07 + 2.44 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-09-12 + 2.41 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 2.41 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-28 + 2.41 + New release. + Serdar Soytetir + kaptan@pisilinux.org + + + 2011-12-09 + 2.41 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + python-setuptools + http://pypi.python.org/pypi/setuptools + + PisiLinux Community + admins@pisilinux.org + + PSF-2.2 + library + system.devel + Python setuptools + Python kurulum araçları + python-setuptools is a collection of enhancements to the Python distutils that allow you to more easily build and distribute Python packages, especially ones that have dependencies on other packages. + python-setuptools, Python distutils'e yapılan, özellikle başka paketlere bağımlılığı olan Python paketlerini daha kolay oluşturmaya ve dağıtmaya yarayan iyileştirmeler koleksiyonudur. + http://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz + system/devel/python-setuptools/pspec.xml + + + python-setuptools + + /usr/bin + /usr/lib/python* + /usr/share/doc + + + + + 2014-05-11 + 0.6.49 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-24 + 0.6.49 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-17 + 0.6.35 + Version bump + Ertan Güven + ertan@pisilinux.org + + + 2012-08-19 + 0.6.28 + First release + Ramazan Utku + admins@pisilinux.org + + + + + + gobject-introspection + http://live.gnome.org/GObjectIntrospection + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2+ + GPLv2+ + library + app:console + system.devel + Introspection system for GObject-based libraries + gobject-introspection can scan C header and source files in order to generate introspection typelib files. It also provides an API to examine typelib files, useful for creating language bindings among other things. + mirrors://gnome/gobject-introspection/1.46/gobject-introspection-1.46.0.tar.xz + + libffi-devel + python-devel + glib2-devel + + system/devel/gobject-introspection/pspec.xml + + + gobject-introspection + + libffi + glib2 + + + /usr/lib/lib*.so* + /usr/lib/girepository-1.0/*.typelib + /usr/share/locale + /usr/share/doc + + + + gobject-introspection-devel + Development files for gobject-introspection + + gobject-introspection + libffi + glib2 + libffi-devel + glib2-devel + + + /usr/include + /usr/lib/gobject-introspection + /usr/bin/g-ir-* + /usr/lib/pkgconfig + /usr/share/gir-1.0 + /usr/share/aclocal + /usr/share/gobject-introspection-1.0 + /usr/share/man + + + + + 2016-01-25 + 1.46.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-06 + 1.44.0 + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-05-11 + 1.40.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-14 + 1.40.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-04-06 + 1.38.0 + Rebuild + Varol Maksutoğlu + waroi@pisilinux.org + + + 2014-02-01 + 1.38.0 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-10.12 + 1.38.0 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2013-07-24 + 1.37.4 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-04-07 + 1.36.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-24 + 1.35.8 + V.Bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-02-04 + 1.35.4 + New version bump to 1.35.4. + Idris Kalp + admins@pisilinux.org + + + 2012-12-31 + 1.34.2 + First release + Idris Kalp + yaralikurt15@hotmail.com + + + + + + glpk + http://www.gnu.org/software/glpk/glpk.html + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv2 + library + system.devel + GNU Linear Programming Kit + GNU Doğrusal Programlama Kiti + Le paquet GLPK (GNU Linear Programming Kit - Kit de Programmation Linéaire) a pour objectif de résoudre le problème de programmation linéaire (LP) de grande envergure, la programmation d'entiers mixés (MIP), et autres problèmes de la sorte. Il s'agit d'un ensemble de routines écrites en C ANSI et organisées de manière à former une librairie que l'on peut appeler. + The GLPK (GNU Linear Programming Kit) package is intended for solving large-scale linear programming (LP), mixed integer programming (MIP), and other related problems. It is a set of routines written in ANSI C and organized in the form of a callable library. + mirrors://gnu/glpk/glpk-4.55.tar.gz + system/devel/glpk/pspec.xml + + + glpk + + /usr/bin + /usr/lib + /usr/share/doc + + + + glpk-devel + Development files for glpk + glpk için geliştirme dosyaları + + glpk + + + /usr/include + + + + + 2014-09-06 + 4.55 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 4.54 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-27 + 4.52 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-08-28 + 4.52 + Version bump, clean glpk. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-18 + 4.48 + v.bump + PisiLinux Community + admins@pisilinux.org + + + 2012-08-16 + 4.47 + First release + Ramazan Utku + admins@pisilinux.org + + + + + + binutils + http://www.gnu.org/software/binutils/ + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv2 + app:console + system.devel + Assembler and linker tools + Makine dili derleme ve bağlama araçları + Contient des commandes telles que as, ld, nm, objdump, ar, ranlib pour compiler du code assembleur en langage machine ainsi que pour chaîner (link) et manipuler les fichiers binaires objets. + Contains commands like as, ld, nm, objdump, ar, ranlib for compiling assembly code to the machine language, and for linking and manipulating the binary object files. + Assembly kodlarını makine diline derlemek, oluşan obje dosyalarını bağlamak ve ikili dosyalar üzerinde işlemler yapmak için kullanılan as, ld, nm, objdump, ar, ranlib gibi komutları içermektedir. + http://ftp.gnu.org/gnu/binutils/binutils-2.26.tar.bz2 + + glibc-32bit + + system/devel/binutils/pspec.xml + + + binutils + + zlib + + + /usr/bin + /usr/lib + /usr/include + /usr/share/info + /usr/share/man + + + + + 2016-02-28 + 2.26 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-02-05 + 2.26 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-09 + 2.25 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-11-28 + 2.24 + Fix CVE issues. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-12 + 2.24 + Rebuild for new glibc. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-06 + 2.24 + Rebuild for new gcc, add pie and lto testsuite patch. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-14 + 2.24 + Add upstream patch. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-30 + 2.24 + Rebuild for new gcc. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-03-29 + 2.24 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-27 + 2.23.2 + Back to 2.23.2, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-23 + 2.23.52.0.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-16 + 2.23.51.0.9 + New release. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-16 + 2.23.51.0.8 + New toolchain up. + Erdinç Gültekin + admins@pisilinux.org + + + + + + guile + http://www.gnu.org/software/guile/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + LGPLv2+ + app:console + library + system.devel + Interpréteur et librairie GNU Scheme. + GNU Scheme interpreter and library + GNU Scheme yorumlayıcısı ve kitaplığı + Język GNU Extension language. + GUILE (GNU's Ubiquitous Intelligent Language for Extension) is a library implementation of the Scheme programming language, written in C. GUILE provides a machine-independent execution platform that can be linked in as a library during the building of extensible programs. + mirrors://gnu/guile/guile-2.0.11.tar.xz + + gc-devel + gettext-devel + gmp-devel + libunistring-devel + libffi-devel + + system/devel/guile/pspec.xml + + + guile + + gc + gmp + libffi + libtool-ltdl + libunistring + readline + + + /etc + /usr/share/doc + /usr/share/man + /usr/bin + /usr/share/info + /usr/lib/lib* + /usr/share/guile + /usr/share/emacs + /usr/share/gdb/auto-load + /usr/lib/guile/2.0 + + + + guile-devel + Development files for guile + guile için geliştirme dosyaları + Pliki nagłówkowe guile. + + guile + gc-devel + gmp-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/share/aclocal + /usr/bin/guile-snarf + /usr/bin/guile-config + + + + + 2014-11-30 + 2.0.11 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-24 + 2.0.11 + Rebuild for gcc. + PisiLinux Community + admins@pisilinux.org + + + 2014-05-11 + 2.0.9 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-25 + 2.0.9 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-08-27 + 2.0.9 + Clean guile. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-22 + 2.09 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-18 + 2.0.7 + v.bump + PisiLinux Community + admins@pisilinux.org + + + 2012-10-03 + 2.0.6 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + automake + http://www.gnu.org/software/automake/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + app:console + system.devel + A tool for automatically generating Makefile.in files compliant with the GNU Coding Standards + Makefile.am yapılandırma dosyalarından Makefile.in dosyası üreten program + Automake est un outil de génération automatique de Makefiles compatibles avec les standards de Codage GNU. Vous aurez également besoin d'installer le paquet GNU AutoConf + Automake is a tool for automatically generating Makefile.in files compliant with the GNU Coding Standards. + Makefile.am yapılandırma dosyalarından GNU kodlama standartlarına uygun Makefile.in dosyası üreten program. Bununla birlikte Autoconf paketini de yüklemelisiniz. + mirrors://gnu/automake/automake-1.15.tar.xz + + perl + autoconf + gnuconfig + patch + + system/devel/automake/pspec.xml + + + automake + + perl + autoconf + + + /usr/bin + /usr/share/automake-* + /usr/share/aclocal-* + /usr/share/aclocal + /usr/share/info + /usr/share/doc + /usr/share/man + + + + + 2015-01-28 + 1.15 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-11-30 + 1.14 + Rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 1.14.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-30 + 1.14.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-27 + 1.14 + Clean automake. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-22 + 1.14 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-16 + 1.13.1 + Version bump + Ertan Güven + ertan@pisilinux.org + + + 2012-08-13 + 1.12.2 + First release + Ramazan Utku + admins@pisilinux.org + + + + + + libatomic_ops + https://github.com/ivmai/libatomic_ops/ + + Pisi Linux Admins + admins@pisilinux.org + + GPLv2 + MIT + library + system.devel + Atomic memory update operations library + Atomik bellek işlemleri kütüphanesi + libatomic_ops provides implementations for atomic memory update operations on a number of architectures. This allows direct use of these in reasonably portable code. + libatomic_ops, çeşitli mimarilerde atomik bellek işlemleri yapılmasını sağlayarak taşınabilir kod yazma olanağı veren bir kütüphanedir. + https://github.com/ivmai/libatomic_ops/archive/libatomic_ops-7_4_2.tar.gz + system/devel/libatomic_ops/pspec.xml + + + libatomic_ops + + /usr/lib + /usr/share/doc + + + + libatomic_ops-devel + libatomic_ops için geliştirme dosyaları + libatomic_ops için geliştirme dosyaları + + libatomic_ops + + + /usr/include + /usr/lib/pkgconfig + + + + + 2014-12-01 + 7.4.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-02 + 7.2d + Bump to usable version. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-01 + 1.2 + Rebuild for conflicting files. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-28 + 1.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-10-13 + 1.2 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libseccomp + http://sourceforge.net/projects/libseccomp/ + + Aydın Demirel + aydin.demirel@pisilinux.org + + LGPLv2.1 + app:library + system.devel + Enhanced seccomp library + Gelişmiş seccomp kütüphanesi + High level interface to the Linux Kernel's seccomp filter. + Linux Kernel'in seccomp süzgecine yüksek seviyeli arayüz + http://downloads.sourceforge.net/project/libseccomp/libseccomp-2.1.1/libseccomp-2.1.1.tar.gz + + glibc + util-linux + + system/devel/libseccomp/pspec.xml + + + libseccomp + + /usr/bin + /usr/share/man + /usr/lib/* + + + + libseccomp-devel + Development files for libseccomp + + libseccomp + + + /usr/include + + + + + 2014-06-27 + 2.1.1 + First release + Aydın Demirel + aydin.demirel@pisilinux.org + + + + + + libtool + http://www.gnu.org/software/libtool/libtool.html + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv2 + library + system.devel + A shared library tool for developers + Program geliştiriciler için ortak kütüphane aracı + Libtool est une librairie utilitaire partagée pour développeurs. + Libtool is a shared library tool for developers. + Libtool, program geliştiriciler için bir paylaşımlı kütüphane aracıdır. + mirrors://gnu/libtool/libtool-2.4.6.tar.xz + + gnuconfig + autoconf + automake + + system/devel/libtool/pspec.xml + + + libtool-ltdl + system.base + + /usr/lib + + + + libtool + + gnuconfig + + + /usr/bin + /lib + /usr/share/doc + /usr/share/info + /usr/share/man + /usr/include + /usr/share/libtool + /usr/share/aclocal + + + + libtool-ltdl-32bit + 32-bit shared libraries for libtool-ltdl + libtool için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + libtool-ltdl + glibc-32bit + + + /usr/lib32 + + + + + 2016-02-06 + 2.4.6 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-11-28 + 2.4.2 + Rebuild for new gcc. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-09-12 + 2.4.2 + Rebuild for new gcc. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 2.4.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-27 + 2.4.2 + Clean libtool. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-07-14 + 2.4.2 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + autoconf + http://www.gnu.org/software/autoconf/autoconf.html + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + app:console + system.devel + Used to create autoconfiguration files + Used to create autoconfiguration files, Autoconf is an extensible package of m4 macros that produce shell scripts to automatically configure software source code packages. + mirrors://gnu/autoconf/autoconf-2.69.tar.xz + + texinfo + m4 + perl + + system/devel/autoconf/pspec.xml + + + autoconf + + texinfo + m4 + + + /usr/bin + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/autoconf + + + + + 2014-11-30 + 2.69 + Rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 2.69 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-27 + 2.69 + Clean autoconf. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-07-14 + 2.69 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + xorg-proto + http://x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + system.devel + Entêtes de protocole de X.Org. + X.Org Protocol Headers + X.Org Protokol Başlıkları + X.Org Protokoll Header + This package includes the protocol headers needed for X11 development. + Bu paket, X11 geliştirme için gerekli protokol başlıklarını içerir. + mirrors://xorg/individual/proto/bigreqsproto-1.1.2.tar.bz2 + mirrors://xorg/individual/proto/presentproto-1.0.tar.bz2 + mirrors://xorg/individual/proto/compositeproto-0.4.2.tar.bz2 + mirrors://xorg/individual/proto/damageproto-1.2.1.tar.bz2 + mirrors://xorg/individual/proto/dmxproto-2.3.1.tar.bz2 + mirrors://xorg/individual/proto/dri2proto-2.8.tar.bz2 + mirrors://xorg/individual/proto/dri3proto-1.0.tar.bz2 + mirrors://xorg/individual/proto/fixesproto-5.0.tar.bz2 + mirrors://xorg/individual/proto/fontsproto-2.1.3.tar.bz2 + mirrors://xorg/individual/proto/glproto-1.4.17.tar.bz2 + mirrors://xorg/individual/proto/inputproto-2.3.1.tar.bz2 + mirrors://xorg/individual/proto/kbproto-1.0.7.tar.gz + mirrors://xorg/individual/proto/printproto-1.0.5.tar.bz2 + mirrors://xorg/individual/proto/randrproto-1.5.0.tar.gz + mirrors://xorg/individual/proto/recordproto-1.14.2.tar.bz2 + mirrors://xorg/individual/proto/renderproto-0.11.1.tar.bz2 + mirrors://xorg/individual/proto/resourceproto-1.2.0.tar.bz2 + mirrors://xorg/individual/proto/scrnsaverproto-1.2.2.tar.bz2 + mirrors://xorg/individual/proto/videoproto-2.3.2.tar.bz2 + mirrors://xorg/individual/proto/xcmiscproto-1.2.2.tar.bz2 + mirrors://xorg/individual/proto/xextproto-7.3.0.tar.bz2 + mirrors://xorg/individual/proto/xf86bigfontproto-1.2.0.tar.bz2 + mirrors://xorg/individual/proto/xf86dgaproto-2.1.tar.bz2 + mirrors://xorg/individual/proto/xf86driproto-2.1.1.tar.bz2 + mirrors://xorg/individual/proto/xf86vidmodeproto-2.3.1.tar.bz2 + mirrors://xorg/individual/proto/xineramaproto-1.2.1.tar.bz2 + mirrors://xorg/individual/proto/xproto-7.0.28.tar.gz + mirrors://xorg/individual/proto/xproxymanagementprotocol-1.0.3.tar.bz2 + https://github.com/bbidulock/vncproto/releases/download/vncproto-1.1/vncproto-1.1.tar.bz2 + + util-macros + libxslt + + + docdir.patch + + system/devel/xorg-proto/pspec.xml + + + xorg-proto + + /usr/include + /usr/lib/pkgconfig + /usr/share/doc + /usr/share/man/man7/Xprint.7 + + + + + 2015-08-12 + 7.6 + Update kbproto, randrproto and xproto + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-01-27 + 7.6 + Update xproto + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-09-20 + 7.6 + Update vncproto, fix dependencies. + Marcin Bojara + marcin@pisilinux.org + + + 2014-08-31 + 7.6 + Update. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 7.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-15 + 7.6 + xproto fontsproto version bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-03-07 + 7.6 + add presentproto dri3proto + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-04-13 + 7.6 + Update: + xproto to version 7.0.24 + inputproto to version 2.3 (needed for xorg-server-0.14.0) + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-15 + 7.6 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + libmpc + http://www.multiprecision.org/ + + Serdar Soytetir + kaptan@pisilinux.org + + LGPLv2.1 + library + system.devel + High precision and correct rounding library + Yüksek hassasiyet ve yuvarlama kitaplığı + libmpc is a library for arithmetic of complex numbers with arbitrarily high precision and correct rounding. + libmpc aritmetik kompleks sayılarla yüksek hassasiyette ve doğru yuvarlama ile işlem yapılmasını sağlayan bir kitaplıktır. + ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz + + gmp-devel + mpfr-devel + + system/devel/libmpc/pspec.xml + + + libmpc + + gmp + mpfr + + + /usr/lib + /usr/share/doc/libmpc + /usr/share/info + + + + libmpc-devel + Development files for libmpc + libmpc için geliştirme dosyaları + + libmpc + + + /usr/include + + + + + 2016-02-28 + 1.0.3 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-08 + 1.0.3 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-09-06 + 1.0.2 + Rebuild with new mpfr for new gcc. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 1.0.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-30 + 1.0.2 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-27 + 1.0.1 + Clean libpmc. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-09-09 + 1.0.1 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + libarchive + http://code.google.com/p/libarchive/ + + PisiLinux Community + admins@pisilinux.org + + BSD + library + system.devel + Library for reading and writing streaming archives + Birçok farklı akış arşiv formatını yaratan ve okuyan programlama kitaplığı + libarchive includes a library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats. + libarchive, tar, cpio, zip, ISO ve diğer arşiv biçimlerini okumak ve yazmak için bir kitaplık ve komut satırı araçları içerir. + http://www.libarchive.org/downloads/libarchive-3.1.2.tar.gz + + acl-devel + nettle-devel + attr-devel + bzip2 + libxml2-devel + openssl-devel + xz-devel + lzo-devel + zlib-devel + + system/devel/libarchive/pspec.xml + + + libarchive + + lzo + nettle + xz + acl + zlib + attr + bzip2 + libxml2 + + + /usr/lib + /usr/share/man + /usr/share/doc/libarchive + + + + libarchive-devel + Development files for libarchive + libarchive için geliştirme dosyaları + + libarchive + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + 2015-07-05 + 3.1.2 + Rebuild with nettle. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 3.1.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-28 + 3.1.2 + unused fix. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-28 + 3.1.2 + Clean libarchive. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-01 + 3.1.2 + Fix deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-18 + 3.1.2 + Version bump + Ertan Güven + ertan@pisilinux.org + + + 2012-08-19 + 3.0.4 + First release + Ramazan Utku + admins@pisilinux.org + + + + + + libxslt + http://xmlsoft.org/XSLT/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + system.devel + XSLT libraries and tools + XSLT kitaplığı ve araçları + Libxslt est la librairie XSLT C développée pour le projet GNOME. XSLT étant lui-même un langage XML permettant de définir une transformation de contenu XML. + Libxslt is the XSLT C library developed for the GNOME project. XSLT itself is a an XML language to define transformation for XML. + Libxslt, GNOME projesi için geliştirilen XSLT C kitaplığıdır. XSLT'nin kendisi, XML oluşumunu tanımlayan bir XML dilidir. + ftp://ftp.xmlsoft.org/libxml2/libxslt-1.1.28.tar.gz + + libxml2-devel + libgcrypt-devel + + system/devel/libxslt/pspec.xml + + + libxslt-docs + libxslt için belgelendirme dosyaları + + libxslt + + + /usr/share/doc + + + + libxslt-devel + libxslt için geliştirme dosyaları + + libxml2-devel + libxslt + + + /usr/bin/*-config + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/aclocal + + + + libxslt + + libgcrypt + libxml2 + + + /usr/bin + /usr/lib + /usr/share/man + + + + libxslt-32bit + 32-bit shared libraries for libxslt + libxslt için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + libxml2-32bit + libgcrypt-32bit + + + libxslt + libxml2-32bit + libgcrypt-32bit + glibc-32bit + + + /usr/lib32 + + + + + 2014-08-07 + 1.1.28 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-08-31 + 1.1.28 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-09-15 + 1.1.27 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + gmp + http://gmplib.org/ + + Serdar Soytetir + kaptan@pisilinux.org + + LGPLv3+ + library + system.devel + Arbitrary precision arithmetic library + İstenilen duyarlıkta çalışabilen aritmetik işlem kitaplığı + GMP est une librairie libre pour l'arithmétique à précision arbitraire, opérant sur : les entiers signés, les nombres rationnels et les nombres à virgule flottante. Il n'y a aucune limite pratique sur la précision des calculs exceptée celle impliquée par la mémoire présente sur la machine exécutant GMP. GMP est dotée d'un large panel de fonctions, dotées d'interfaces régulières. + GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. There is no practical limit to the precision except the ones implied by the available memory in the machine GMP runs on. GMP has a rich set of functions, and the functions have a regular interface. + GMP işaretli tamsayılar, rasyonel ve ondalık sayılar üzerinde istenilen kadar duyarlı aritmetik işlemler yapan bir kitaplıktır. Yüklü olduğu makinenin hafıza sınırı dışında herhangi bir duyarlılık limiti yoktur. Zengin fonksiyonları ve düzenli bir arabirimi vardır. + GMP es una librería libre para aritmética con precisión arbitraria, operando con signed integers, números racionales, y punto flotante. Practicamente no hay límite de precisión excepto los de la memoria disponible en el equipo donde se está ejecutando GMP. GMP tiene un amplio conjunto de funciones y las funciones tienen una interfaz regular. + mirrors://gnu/gmp/gmp-6.1.0.tar.xz + system/devel/gmp/pspec.xml + + + gmp + + libgcc + + + /usr/lib + /usr/share/doc + /usr/share/info + + + + gmp-devel + Development files for gmp + gmp için geliştirme dosyaları + + gmp + + + /usr/include + /usr/lib/*.a + + + + gmp-32bit + 32-bit shared libraries for gmp + emul32 + emul32 + + glibc-32bit + + + libgcc + glibc-32bit + gmp + + + /usr/lib32 + + + + + 2016-02-28 + 6.1.0 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-12-09 + 6.1.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-09-06 + 6.0.0 + Rebuild with new options, fix version number. + Clean up actions.py, remove unneeded lines, we have auto-emul32 :) + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 6.0.0a + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-01 + 6.0.0a + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-22 + 5.1.3 + Minor version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-27 + 5.1.2 + Clean gmp. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-23 + 5.1.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-16 + 5.1.1 + New release + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-09-30 + 5.0.5 + First release + Erdem Artan + admins@pisilinux.org + + + + + + dietlibc + http://www.fefe.de/dietlibc + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.devel + A libc optimized for small size + Düşük boyut için optimize edilmiş C kütüphanesi + dietlibc is a libc that is optimized for small size. It can be used to create small statically linked binaries for Linux on various architectures. + dietlibc, düşük boyutlu olması için optimize edilmiş bir C kütüphanesidir. Farklı mimarilerde statik bağlanmış ve düşük boyutlu ikili dosyalar oluşturmak için kullanılabilir. + http://pkgs.fedoraproject.org/repo/pkgs/dietlibc/dietlibc-0.33.20120825.tar.xz/016865b8c40d40a57b2ddb5862f2e338/dietlibc-0.33.20120825.tar.xz + http://pkgs.fedoraproject.org/repo/pkgs/dietlibc/dietlibc-github-c3f1cf67fcc186bb859e64a085bf98aaa6182a82.patch.gz/734e14b59b7f017ae5843ee9b9b6d34e/dietlibc-github-c3f1cf67fcc186bb859e64a085bf98aaa6182a82.patch.gz + + dietlibc-0.33-biarch.patch + + system/devel/dietlibc/pspec.xml + + + dietlibc + + /usr/bin + /usr/lib/dietlibc/include + /usr/lib/dietlibc/lib-i386 + /usr/lib/dietlibc/lib-x86_64 + /usr/share/man + /usr/share/doc + + + + + 2014-05-11 + 0.33.20120825 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-11-03 + 0.33.20120825 + Version bump + Marcin Bojara + marcin@pisilinux.org + + + 2010-10-11 + 0.32 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + util-macros + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + system.devel + Macros X.Org utilisées pour compiler X.Org + X.Org X11 Autotools macros + X.Org X11 Autotools makroları + X.Org Makros zum Kompilieren von X.Org + X.Org X11 autotools macros are required for building the various packages that comprise the X Window System. + X.Org X11 Autotools makroları, X pencere sistemini oluşturan çeşitli paketleri derlemek için gereklidir. + http://xorg.freedesktop.org/releases/individual/util/util-macros-1.19.0.tar.bz2 + + doc.patch + + system/devel/util-macros/pspec.xml + + + util-macros + + /usr/share/aclocal + /usr/share/pkgconfig + /usr/share/doc + + + + + 2016-03-02 + 1.19.0 + Rebuild with new toolchain. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-07-11 + 1.19.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 1.18.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 1.18.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-08 + 1.17.1 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-12 + 1.17.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-08-19 + 1.17 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + check + http://sourceforge.net/projects/check/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.devel + A unit test framework for C + C için birim test ortamı + check is a unit testing framework for C. It features a simple interface for defining unit tests, putting little in the way of the developer. Tests are run in a separate address space, so Check can catch both assertion failures and code errors that cause segmentation faults or other signals. The output from unit tests can be used within source code editors and IDEs. + check C dili için yazılmış bir birim test ortamıdır. Birim test tanımlamak için bir arayüz sunan check, geliştiriciye test yapabilmesi için kolay bir ortam sağlar. + mirrors://sourceforge/check/0.10/check-0.10.0.tar.gz + system/devel/check/pspec.xml + + + check + + /usr/bin + /usr/lib + /usr/share/info + /usr/share/man/man1/checkmk.1 + /usr/share/doc + + + + check-devel + Development files for check + check için geliştirme dosyaları + + check + + + /usr/include + /usr/lib/pkgconfig + /usr/share/aclocal + + + + check-docs + Documents for check + check için geliştirme belgeleri + + /usr/share/doc/check/example + + + + + 2016-02-28 + 0.10.0 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-02-28 + 0.10 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-15 + 0.10.0 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-10-31 + 0.9.14 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-20 + 0.9.12 + Verson bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-03-06 + 0.9.11 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-11-27 + 0.9.11 + Version bump. + Richard de Bruin + richdb@pisilinux.org + + + 2013-10-26 + 0.9.10 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-03-04 + 0.9.9 + Version bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2010-10-12 + 0.9.8 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + elfutils + http://www.redhat.com/ + + PisiLinux Community + admins@pisilinux.org + + OpenSoftware + app:console + library + system.devel + Libraries/utilities to handle ELF objects + Derlenmiş objeleri işlemek için gereken aletler koleksiyonu + elfutils contains libraries and utilities to handle ELF objects and is a replacement for libelf. + elfutils derlenmiş objeleri işlemek için gereken çeşitli araçlar içerir. + https://fedorahosted.org/releases/e/l/elfutils/0.165/elfutils-0.165.tar.bz2 + + bzip2 + xz-devel + zlib-devel + + system/devel/elfutils/pspec.xml + + + elfutils + + xz + zlib + bzip2 + libgcc + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/include + + + + + 2016-01-28 + 0.165 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2015-04-09 + 0.161 + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-11-23 + 0.160 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-11 + 0.158 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-29 + 0.158 + Add upstream patch. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-22 + 0.158 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-27 + 0.156 + Clean elfutils. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-01 + 0.156 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-16 + 0.155 + New release + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-07-30 + 0.154 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + xorg-util + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + app:console + system.devel + Utilitaires de X.Org + X.Org utilities + X.Org araçları + X.Org Werkzeuge + xorg-util contains some Xorg X11 command-line utilities, but more importantly, X11 configuration and rule files. + mirrors://xorg/individual/util/gccmakedep-1.0.3.tar.bz2 + mirrors://xorg/individual/util/imake-1.0.7.tar.bz2 + mirrors://xorg/individual/util/lndir-1.0.3.tar.bz2 + mirrors://xorg/individual/util/makedepend-1.0.5.tar.bz2 + mirrors://xorg/individual/util/xorg-cf-files-1.0.5.tar.bz2 + + xorg-proto + + + host-defaults.patch + + system/devel/xorg-util/pspec.xml + + + xorg-util + + /usr/bin + /usr/share/X11/config + /usr/share/man + + + + + 2015-06-14 + 7.6 + Rebuild, fix deps. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-08-31 + 7.6 + Update. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 7.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 7.6 + Release bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-08-19 + 7.6 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + xcb-proto + http://xcb.freedesktop.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + data + system.devel + XCB protocol descriptions + XCB protokol tanımlamaları + XCB is a project to enable efficient language bindings to the X11 protocol. This package contains the protocol descriptions themselves. Language bindings use these protocol descriptions to generate code for marshalling the protocol. + http://xcb.freedesktop.org/dist/xcb-proto-1.11.tar.bz2 + + libxml2 + + system/devel/xcb-proto/pspec.xml + + + xcb-proto + + /usr/lib/pkgconfig + /usr/lib/python* + /usr/share/doc + /usr/share/xcb + + + + + 2014-09-02 + 1.11 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 1.10 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-03 + 1.10 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-22 + 1.8 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-11-18 + 1.8 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-11-18 + 1.8 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + gc + http://www.hpl.hp.com/personal/Hans_Boehm/gc + + PisiLinux Community + admins@pisilinux.org + + BSD + GPLv2 + library + system.devel + A garbage collector for C and C++ + C ve C++ için bir çöp toplama kitaplığı + Ostrożny odśmiecacz dla C i C++ + The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C malloc or C++ new. + gc, C malloc veya C++ new yerine kullanılabilecek, Boehm-Demers-Weiser çöp toplayıcısı kitaplığıdır. + Boehm's GC jest odśmiecającym alokatorem pamięci, który został zaprojektowany z zamiarem używania jako zastępcza wtyczka dla funkcji C malloc. + http://www.hboehm.info/gc/gc_source/gc-7.4.2.tar.gz + + libatomic_ops-devel + + + noelision.patch + + system/devel/gc/pspec.xml + + + gc + + /usr/lib + /usr/share/doc + + + + gc-devel + Development files for gc + gc için geliştirme dosyaları + Pliki nagłówkowe gc + + gc + + + /usr/include/ + /usr/lib/pkgconfig + + + + + 2014-12-01 + 7.4.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-24 + 7.2d + Rebuild for gcc. + PisiLinux Community + admins@pisilinux.org + + + 2014-01-02 + 7.2d + Remove libatomic_ops-devel package, we have standalone one. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-27 + 7.2d + Clean gc. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-11-02 + 7.2d + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + chrpath + http://freshmeat.net/projects/chrpath/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.devel + Change the dynamic library load path (rpath) of binaries + Dinamik kitaplık yükleme yolunu (rpath) değiştirme aracı + chrpath allows you to modify the dynamic library load path (rpath and runpath) of compiled programs and libraries. + chrpath ile derlenmiş kitaplıkların ve programların dinamik kitaplık yükleme yolunu (rpath ve runpath) değiştirebilirsiniz. + http://source.pisilinux.org/1.0/chrpath-0.16.tar.gz + + docdir.patch + + system/devel/chrpath/pspec.xml + + + chrpath + + /usr/bin + /usr/share/doc + /usr/share/man + + + + + 2016-03-05 + 0.16 + Rebuild with new toolchain. + Alihn Öztürk + alihan@pisilinux.org + + + 2014-05-11 + 0.16 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 0.16 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-28 + 0.13 + Clean chrpath + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-07-14 + 0.13 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + yasm + http://www.tortall.net/projects/yasm/ + + PisiLinux Community + admins@pisilinux.org + + BSD + GPLv2 + LGPLv2 + Artistic + app:console + system.devel + Assembler that supports many syntaxes and architectures + Bir çok sentaks ve mimari destekleyen Assembler + A complete rewrite of the NASM assembler under the "new" BSD License. Yasm currently supports the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes, outputs binary, ELF32, ELF64, 32 and 64-bit Mach-O, RDOFF2, COFF, Win32, and Win64 object formats and generates source debugging information in STABS, DWARF 2, and CodeView? 8 formats. + NASM Assembler programının yeni BSD lisansı ile baştan yazılmış bir Assembler. En önemli özellikleri x86 ve AMD64 komutsetlerini, NASM ve GAS sentaksını desteklemesidir. İkilik, ELF32, ELF64, 32 ve 64-bit Mach-O, RDOFF2, COFF, Win32 ve Win64 obje formatlarında çıktı üretebilir, hata ayıklamak için STABS, DWARF 2 ve CodeView? 8 formatlarını desteklemektedir. + http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz + system/devel/yasm/pspec.xml + + + yasm + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + + + + yasm-devel + Development files for yasm + yasm için geliştirme dosyaları + + yasm + + + /usr/include + /usr/lib/libyasm.a + + + + + 2014-05-11 + 1.2.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-22 + 1.2.0 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2011-12-09 + 1.2.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + cloog + http://www.cloog.org/ + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv2+ + app:console + library + system.devel + Chunky Loop Generator + cloog is CLooG is a free software and library to generate code for scanning Z-polyhedra. It is used by the GCC Graphite optimization framework. + http://www.bastoul.net/cloog/pages/download/cloog-0.18.4.tar.gz + + gmp-devel + ppl-devel + isl-devel + + system/devel/cloog/pspec.xml + + + cloog + + gmp + isl + + + /usr/bin + /usr/lib + /usr/share/doc/cloog/ + /usr/share/info + + + + cloog-devel + Development files for cloog + + cloog + + + /usr/include + /usr/lib/pkgconfig/cloog.pc + + + + + 2016-01-27 + 0.18.4 + Version bump + Alihan Öztürk + alihan@pisilinux.org + + + 2014-09-06 + 0.18.1 + Rebuild for new isl and new toolchain. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 0.18.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 0.18.1 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-27 + 0.18.0 + Clean cloog. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-26 + 0.18.0 + Move pc files to devel pack, rebuild. + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-04-23 + 0.18.0 + Dep fixed + PisiLinux Community + admins@pisilinux.org + + + 2012-02-16 + 0.18.0 + New release + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-06-22 + 0.17.0 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + unifdef + http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/unifdef/ + + PisiLinux Community + admins@pisilinux.org + + BSD + app:console + system.devel + The unifdef utility selectively processes conditional cpp(1) directives + L'utilitaire unifdef traite sélectivement les directives conditionnelles cpp(1). Il supprime d'un fichier les directives ainsi que le texte additionnel qu'elles indiquent comme à supprimer tout en laissant le reste du fichier intact. + The unifdef utility selectively processes conditional cpp(1) directives. It removes from a file both the directives and any additional text that they specify should be removed, while otherwise leaving the file alone. + http://dotat.at/prog/unifdef/unifdef-2.10.tar.gz + system/devel/unifdef/pspec.xml + + + unifdef + + /usr/bin + /usr/share/man + /usr/share/doc/unifdef + + + + + 2014-05-11 + 2.10 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 2.10 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-24 + 2.9 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-09-17 + 2.6 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + scons + http://www.scons.org + + PisiLinux Community + admins@pisilinux.org + + MIT + app:console + system.devel + An Open Source software construction tool + Python temelli, esnek, geliştirilebilir inşa aracı + Utilitaire extensible écrit en python. On peut considérer SCons comme un substitut amélioré multi-plateforme de Make intégrant des fonctionnalités similaires à celles d'autoconf/automake et un gestionnaire de cache de compilateur tel ccache. + Think of SCons as an improved, cross-platform substitute for the classic Make utility with integrated functionality similar to autoconf/automake and compiler caches such as ccache. + Python temelli, esnek, geliştirilebilir inşa aracı. SCons, klasik "make" aracına "autconf/automake" özellikleri ve "ccache" gibi derleyici önbelleği eklenmiş, gelişmiş bir araç olarak düşünülebilir. + mirrors://sourceforge/scons/scons-2.3.1.tar.gz + + python + + + scons-1.0.0-qt-handle-missing-moc-files.patch + fix-gnu-link-handling.patch + + system/devel/scons/pspec.xml + + + scons + + python + + + /usr/bin + /usr/lib + /usr/share/man + /usr/share/doc + + + + + 2014-05-11 + 2.3.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-29 + 2.3.1 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-22 + 2.3.0 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-24 + 2.3.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-17 + 2.2.0 + Version bump + Ertan Güven + ertan@pisilinux.org + + + 2011-12-14 + 2.1.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + catbox + http://pisilinux.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.devel + Python sandboxing module + Python için sandbox modülü + catbox is a Python sandboxing module commonly used by the package management system of PiSi Linux, PiSi. + https://github.com/baris/catbox/archive/catbox-1.6.1.tar.gz + + python-setuptools + python-devel + + system/devel/catbox/pspec.xml + + + catbox + + python + + + /usr/bin + /usr/lib + /usr/share/doc + + + + + 2015-03-19 + 1.6.1 + Fix Buildeps. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.6.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-08 + 1.6.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-22 + 1.6 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-24 + 1.6 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2010-10-11 + 1.2 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + mpfr + http://www.mpfr.org + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv2+ + LGPLv2+ + library + system.devel + Multiple precision floating point library + La librairie MPFR est une librairie C pour les calculs à virgules flottantes à précisions multiples à arrondi exact (également appelé arrondi correct). Elle est basée sur la librairie à précision multiple GMP. + The MPFR library is a C library for multiple-precision floating-point computations with exact rounding (also called correct rounding). It is based on the GMP multiple-precision library. + MPFR es una librería en C para computaciones de punto flotante de múltiple precisión con redondeo exacto (también llamado redondeo correcto). Está basada en la librería de múltiple precisión GMP. + http://www.mpfr.org/mpfr-current/mpfr-3.1.3.tar.xz + + gmp-devel + + system/devel/mpfr/pspec.xml + + + mpfr + + gmp + + + /usr/lib + /usr/share/info + /usr/share/doc/mpfr + + + + mpfr-devel + Development files for mpfr + mpfr için geliştirme dosyaları + + mpfr + + + /usr/include + /usr/share/doc/mpfr/examples + /usr/share/doc/mpfr/html + + + + + 2016-02-28 + 3.1.3 + Rebuild with new toolchain. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-23 + 3.1.3 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-09-06 + 3.1.2_p10 + Patch version bump to 10. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 3.1.2_p5 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-01 + 3.1.2_p5 + Version bump to patch level 5. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-27 + 3.1.2 + Clean mpfr. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-23 + 3.1.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-07-13 + 3.1.1 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + bison + http://www.gnu.org/software/bison/bison.html + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv2 + app:console + system.devel + A yacc-compatible parser generator + Yacc uyumlu yazım ayrıştırma üreteci + Un générateur d'analyseur syntaxique compatible avec yacc. Une fois que vous maîtrisez Bison, vous pouvez l'utiliser pour développer des analyseur léxicaux pour un grand nombres de langages, de ceux qui sont utilisés dans les simples calculatrices de bureau aux complexes langages de programmation. + A yacc-compatible parser generator. Once you are proficient with Bison, you can use it to develop a wide range of language parsers, from those used in simple desk calculators to complex programming languages + Yacc uyumlu yazım ayrıştırma üreteci. Bison'da ustalık kazandığınızda, basit hesap makinalarından, karmaşık programlama dillerine kadar uzanan geniş yazım ayrıştırıcılar geliştirebilirsiniz. + mirrors://gnu/bison/bison-3.0.4.tar.xz + + m4 + gettext + patch + + system/devel/bison/pspec.xml + + + bison + + m4 + gettext + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/aclocal + /usr/share/info + /usr/share/bison + /usr/share/locale + + + + + 2015-03-01 + 3.0.4 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-09-06 + 3.0.2 + Rebuild, fix pspec.xml. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 3.0.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-24 + 3.0.2 + Version bump + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2013-11-18 + 3.0.1 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2013-08-27 + 3.0 + Version bump, clean. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-23 + 2.7.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-16 + 2.7 + Version bump + Ertan Güven + ertangvn@istanbul.com + + + 2012-10-24 + 2.6.4 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + autogen + http://www.gnu.org/software/autogen + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + app:console + system.devel + The automated text and program generation tool + Otomatik metin ve program üretme aracı + Herramienta para simplificar creación y mantenimiento de programas que contienen muchos textos repetitivos + autogen is a tool designed to simplify the creation and maintenance of programs that contain large amounts of repetitious text. + autogen büyük miktarda tekrarlı metin içeren uygulamaların otomatik üretilmesini sağlayan bir araçtır. + ftp://ftp.gnu.org/gnu/autogen/autogen-5.18.7.tar.xz + + gc-devel + gmp-devel + guile-devel + libxml2-devel + which + + system/devel/autogen/pspec.xml + + + autogen + + guile + libxml2 + + + /usr/lib + /usr/share/doc + /usr/share/man + /usr/bin + /usr/share/info + /usr/share/autogen + + + + autogen-devel + Development files for autogen + autogen için geliştirme dosyaları + + autogen + + + /usr/include + /usr/share/aclocal + /usr/lib/pkgconfig + /usr/share/man/man3 + /usr/bin/autoopts-config + /usr/share/man/man1/autoopts-config.1 + + + + + 2016-01-11 + 5.18.7 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-11-23 + 5.18.4 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-24 + 5.18 + Rebuild for gcc. + PisiLinux Community + admins@pisilinux.org + + + 2014-05-11 + 5.18 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-27 + 5.18 + Clean autogen. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-22 + 5.18 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-17 + 5.17.1 + New release + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-10-04 + 5.16.2 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + yacc + http://dinosaur.compilertools.net/#yacc + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + system.devel + Yacc: Yet Another Compiler-Compiler + Yacc: Yet Another Compiler-Compiler + Yacc fourni un outil général de description d'entrée pour un logiciel. L'utilisateur de Yacc spécifie la structure de l'entrée avec le code à invoquer lorsque de tels structures sont reconnues. Yacc transforme ce qui a été spécifié en sous-routine gérant le processus d'entrée. + Yacc provides a general tool for describing the input to a computer program. The Yacc user specifies the structures of his input, together with code to be invoked as each such structure is recognized. Yacc turns such a specification into a subroutine that handles the input process + Yacc, bir uygulamaya girdi açıklamasını yapan bir araçtır. Yacc kullanıcısı, girdinin yapısını ve bu yapının her seferinde tanındığı kodu belirtir. Yacc; bu tür bir belirlemeyi, girdi sürecini işleyen bir alt yordama çevirir. + ftp://metalab.unc.edu/pub/Linux/devel/compiler-tools/yacc-1.9.1.tar.Z + + mkstemp.patch + skeleton.c.diff + yacc-1.9.1-ia64.patch + + system/devel/yacc/pspec.xml + + + yacc + + /usr/bin + /usr/share/doc + /usr/share/man + + + + + 2014-05-11 + 1.9.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-17 + 1.9.1 + Rebuild for 1.0 + Richard de Bruin + richdb@pisilinux.org + + + 2010-10-11 + 1.9.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + isl + http://www.kotnet.org/~skimo/isl/ + Serdar Soytetir kaptan@pisilinux.org -<<<<<<< HEAD LGPLv2.1 library @@ -25602,180 +23005,373 @@ 2015-05-05 0.13 Version bump. -======= - - - 2014-04-15 - 4.3.10 - Rebuild for kernel 3.13.10. ->>>>>>> master Serdar Soytetir kaptan@pisilinux.org - - 2014-04-07 - 4.3.10 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-29 - 4.3.8 - Rebuild for 3.13.6 - PisiLinux Community - admins@pisilinux.org - - - 2014-03-09 - 4.3.8 - Rebuild for 3.12.13 - PisiLinux Community - admins@pisilinux.org - - - 2014-03-01 - 4.3.8 - Rebuild for 3.12.13 - PisiLinux Community - admins@pisilinux.org - - - 2014-01-17 - 4.3.6 - Rebuild for 3.12.8 - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-12-21 - 4.3.6 - Version bump - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-12-17 - 4.3.2 - Rebuild for 3.12.5 - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-12-12 - 4.3.2 - Rebuild for 3.12.5 - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-11-23 - 4.3.2 - Rebuild for 3.10.20 - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-11-11 - 4.3.2 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-11-05 - 4.2.18 - Rebuild for 3.10.18 - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-10 - 4.2.18 - version bump - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-09-28 - 4.2.16 - 3.10.13 - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-09-18 - 4.2.16 - 3.10.12 - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-08-30 - 4.2.16 - 3.10.10 - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-08-20 - 4.2.16 - 3.10.9 - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-08-20 - 4.2.16 - Kernel 3.10.6 - Erdinç Gültekin - erdincgultekin@pisilinux.org - - 2013-07-06 - 4.2.16 - Version bump. + 2014-05-11 + 0.12.2 + Release bump. Marcin Bojara marcin@pisilinux.org - 2013-06-01 - 4.2.12 - Kernel 3.8.13 - Erdinç Gültekin - erdincgultekin@pisilinux.org + 2014-03-29 + 0.12.2 + Version bump + Serdar Soytetir + kaptan@pisilinux.org - 2013-06-01 - 4.2.12 - Kernel 3.9.4 - Erdinç Gültekin - erdincgultekin@pisilinux.org + 2013-10-22 + 0.12.1 + New release + Serdar Soytetir + kaptan@pisilinux.org - 2013-05-04 - 4.2.12 - Update - Marcin Bojara - marcin@pisilinux.org + 2013-07-28 + 0.12 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org - 2013-04-14 - 4.2.12 + 2013-07-24 + 0.12 Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-02-16 + 0.11.1 + New release + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-09-05 + 0.10 + First release + Erdem Artan + admins@pisilinux.org + + + + + + colorgcc + http://www.console-colors.de + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.devel + GCC output colorizer + GCC çıktısını renklendiren bir araç. + A tool that colorizes GCC output. + http://source.pisilinux.org/1.0/colorgcc-1.3.2.tar.gz + + colorgcc-1.3.2-handle-translated-output.patch + colorgcc-1.3.2-mdkconf.patch + add-i686-gnu-stuff.patch + + system/devel/colorgcc/pspec.xml + + + colorgcc + + gcc + + + /usr/bin + /usr/share/colorgcc + /etc + /usr/share/doc + + + colorgcc.sh + colorgcc.csh + + + + + 2014-01-21 + 1.3.2 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2011-02-28 + 1.3.2 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + m4 + http://www.gnu.org/software/m4/m4.html + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + app:console + system.devel + GNU macro processor + GNU makro işleyicisi + L'utilitaire m4 est processeur de macro permettant de lire un ou plusieurs fichiers, les traiter en fonction leurs directives macro puis écrire le résultat dans la sortie standard. + The m4 utility is a macro processor that shall read one or more text files, process them according to their included macro statements, and write the results to standard output + m4, bir ya da daha fazla metin dosyasını okuyan; içerdikleri makro kurallarına göre bu dosyaları işleyen ve sonuçlarını standart çıktıya ileten bir makro işlemcisidir. + mirrors://gnu/m4/m4-1.4.17.tar.gz + + gettext-devel + libsigsegv + + system/devel/m4/pspec.xml + + + m4 + + libsigsegv + + + /usr/bin + /usr/share/doc + /usr/share/info + /usr/share/man + + + + + 2016-02-28 + 1.4.17 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 1.4.17 + Release bump. Marcin Bojara marcin@pisilinux.org - 2013-03-02 - 4.2.8 + 2013-10-23 + 1.4.17 Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-07-12 + 1.4.16 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + ppl + http://www.cs.unipr.it/ppl/ + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv3 + app:console + library + system.devel + Pharma Polyhedra library + Pharma Polyhedra kitaplığı + ppl is the Parma Polyhedra Library that provides numerical abstractions for analysis of complex systems. + ppl, kompleks sistemlerin analizi için sayısal ayrım sağlayan Pharma Polyhedra kitaplığıdır. + http://bugseng.com/external/ppl/download/ftp/releases/1.1/ppl-1.1.tar.xz + + gmp-devel + glpk-devel + + system/devel/ppl/pspec.xml + + + ppl + + gmp + glpk + libgcc + + + /usr/bin + /usr/lib + /usr/share/doc/COPYING + /usr/share/doc/CREDITS + /usr/share/doc/README + /usr/share/doc/NEWS + /usr/share/man + + + + ppl-docs + Documentation for ppl + ppl kitaplığı belgeleri + system.doc + + ppl + + + /usr/share/doc/ppl + + + + ppl-devel + Development files for ppl + ppl için geliştirme dosyaları + + ppl + gmp-devel + + + /usr/bin/ppl-config + /usr/include + /usr/share/aclocal + /usr/share/man/man3 + + + + + 2014-09-06 + 1.1 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 1.1 + Release bump. Marcin Bojara marcin@pisilinux.org + + 2014-03-29 + 1.1 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-27 + 1.0 + Clean ppl, version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-01 + 1.0 + Fix deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-19 + 1.0 + Add patch for gmp 5.10. + Serdar Soytetir + kaptan@pisilinux.org + - 2013-01-22 - 4.2.6 + 2012-07-13 + 1.0 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + make + http://www.gnu.org/software/make/make.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.devel + Standard tool to compile source trees + Geleneksel kaynak kod ağaçlarını derleme aracı + Herramienta estándar para compilación de arboles de fuentes + Outil standard de compilation de hiérarchie de sources. Make détermine ce qu'il faut faire pour construire votre programme à partir d'un fichier appelé makefile. Une fois votre programme écrit, il suffit d'éditer un makefile pour lui afin de pouvoir utiliser Make pour le compiler et l'installer. + Standard tool to compile source trees. Make gets its knowledge of how to build your program from a file called the makefile. When you write a program, you should write a makefile for it, so that it is possible to use Make to build and install the program + Geleneksel kaynak kod ağaçlarını derleme aracı. Make, programınızı nasıl derleyeceği konusundaki bilgiyi "makefile" dosyasından alır. Bir uygulama yazdığınızda bunun için "makefile" dosyasını da hazırlamalısınız ki uygulamanız derlenebilsin ve yüklenebilsin. + mirrors://gnu/make/make-4.1.tar.gz + + gettext + gnuconfig + patch + gc-devel + guile-devel + + system/devel/make/pspec.xml + + + make + + guile + + + /usr/bin + /usr/share/doc + /usr/share/man + /usr/share/info + /usr/share/locale + /usr/include + + + + + 2016-02-28 + 4.1 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-21 + 4.1 + Version bump + denizgu + denizgu@users.noreply.github.com + + + 2014-05-11 + 4.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-23 + 4.0 + Cleanup, bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-10-24 + 3.82 First release Marcin Bojara marcin@pisilinux.org @@ -25784,345 +23380,28 @@ - module-bbswitch - https://github.com/Bumblebee-Project/bbswitch - - Serdar Soytetir - kaptan@pisilinux.org - - GPL - app:gui - kernel.drivers - Kernel module allowing to switch dedicated graphics card on Optimus laptops - Optimus grafik kartlı bir dizüstü bilgisayarda grafik kartını seçmeye yarayan çekirdek modülüdür. - kernel module allowing to switch dedicated graphics card on Optimus laptops - Eski ve yeni optimus teknolojisine sahip dizüstü bilgisyarlarda çalışabilmektedir. - https://github.com/Bumblebee-Project/bbswitch/archive/v0.8.tar.gz - - kernel-module-headers - - kernel/drivers/module-bbswitch/pspec.xml - - - module-bbswitch - - kernel - - - /lib/modules - /etc - /usr/share/doc - - - bbswitch.conf - kmod-bbswitch.conf - - - - - 2016-02-03 - 0.8 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-16 - 0.8 - Rebuild. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-12-13 - 0.8 - Rebuild for kernel-4.3.2. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-12-01 - 0.8 - Rebuild for kernel-4.3.0. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-11-11 - 0.8 - Rebuild for kernel-4.2.6. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-11-30 - 0.8 - Rebuild for kernel-4.2.5. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-11-27 - 0.8 - Rebuild for kernel-4.2.4. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-05 - 0.8 - Rebuild for kernel-4.2.3. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-10-01 - 0.8 - Rebuild for kernel-4.2.2. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-09-23 - 0.8 - Rebuild for kernel-4.1.8. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-09-18 - 0.8 - Rebuild for kernel-4.1.7. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-18 - 0.8 - Rebuild for kernel-4.1.6. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-08-13 - 0.8 - Rebuild for kernel-4.1.5. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-07-23 - 0.8 - Rebuild for kernel-4.1.3. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-07-20 - 0.8 - Rebuild for kernel-4.1.2. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-07-13 - 0.8 - Rebuild for kernel-4.0.8. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-30 - 0.8 - Rebuild for kernel-4.0.7. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-24 - 0.8 - Rebuild for kernel-4.0.6. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-06-16 - 0.8 - Rebuild for new kernel - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-22 - 0.8 - Rebuild for kernel 3.19.8 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-05-05 - 0.8 - Rebuild for kernel 3.19.6 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-24 - 0.8 - Rebuild for kernel 3.19.5 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-16 - 0.8 - Rebuild for kernel 3.19.4 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-04-02 - 0.8 - Rebuild for kernel 3.19.3 - Hakan Yıldız - hknyldz93@gmail.com - - - 2015-03-08 - 0.8 - Rebuild for kernel 3.19.1 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-01 - 0.8 - Rebuild for kernel 3.19.0 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-01-28 - 0.8 - Rebuild for kernel 3.18.3 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-01-09 - 0.8 - Rebuild for kernel 3.18.1 - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-11-29 - 0.8 - Rebuild for kernel 3.17.4 - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-10-18 - 0.8 - Rebuild for kernel 3.17.1 - Kamil Atlı - suvari@pisilinux.org - - - 2014-09-19 - 0.8 - Rebuild for kernel 3.16.3 - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-09-03 - 0.8 - Rebuild for kernel 3.16.1 - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-07-24 - 0.8 - Rebuild for kernel 3.15.6 - Vedat Demir - vedat@pisilinux.org - - - 2014-06-15 - 0.8 - Rebuild for kernel 3.15.0 - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-29 - 0.8 - Rebuild for kernel 3.14.4. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-05-02 - 0.8 - Rebuild for kernel 3.14.2. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-04-15 - 0.8 - Rebuild for kernel 3.13.10. - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-03-29 - 0.8 - Rebuild for kernel 3.13.6. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-09 - 0.8 - First release. - Marcin Bojara - marcin@pisilinux.org - - - - - - disktype - http://disktype.sourceforge.net/ + nasm + http://nasm.sourceforge.net/ PisiLinux Community admins@pisilinux.org BSD app:console - hardware.disk - Detect the content format of a disk or disk image - Disk veya disk görüntüsünün biçimsel içeriğini saptar - The purpose of disktype is to detect the content format of a disk or disk image. It knows about common file systems, partition tables, and boot codes.The program is written in C and is designed to compile on any modern Unix flavour. - Disktype'ın amacı disk veya disk görüntüsünün içerik yapısını denetlemektir. Yaygın dosya sistemlerini, bölümleme tablolarını ve önyükleme kodlarını bilir. C dilinde yazılmış, herhangi bir modern Unix derleme tadında tasarlanmıştır. - mirrors://sourceforge/disktype/disktype-9.tar.gz + system.devel + Groovy little assembler + Assembler derleyicisi + NASM est l'assembleur Netwide, un assembleur libre et portable pour les processeurs des séries Intel 80x86 + NASM is the Netwide Assembler, a free portable assembler for the Intel 80x86 microprocessor series. + Intel 80x86 mikroişlemci serisi için aktarılabilir Assembler derleyicisi. + http://www.nasm.us/pub/nasm/releasebuilds/2.11.01/nasm-2.11.01.tar.xz - klibc - colorgcc + texinfo - - disktype.patch - vfat.patch - ext4.patch - - hardware/disk/disktype/pspec.xml + system/devel/nasm/pspec.xml - disktype + nasm /usr/bin /usr/share/doc @@ -26130,26 +23409,415 @@ - - 2015-04-01 - 9 + + 2014-05-11 + 2.11.01 Release bump. Marcin Bojara marcin@pisilinux.org - - 2013-10-29 - 9 - Rebuild + + 2014-03-29 + 2.11.01 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-22 + 2.10.09 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-24 + 2.10.09 + Version bump. Yusuf Aydemir yusuf.aydemir@pisilinux.org + + 2013-02-18 + 2.10.07 + Version bump + Ertan Güven + ertan@pisilinux.org + - 2012-08-23 - 9 + 2012-09-15 + 2.10.05 First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + gnuconfig + http://savannah.gnu.org/projects/config + + Serdar Soytetir + kaptan@pisilinux.org + + GPLv2+ + data + system.devel + Base config files for autofoo + Autofoo için temel config dosyaları + fichiers GNU config.sub et config.guess mis à jour. + gnuconfig contains updated config.sub and config.guess files from GNU. + gnuconfig güncel GNU config.sub ve config.guess dosyaları içerir. + http://source.pisilinux.org/1.0/config-20141105.tar.gz + system/devel/gnuconfig/pspec.xml + + + gnuconfig + + /usr/share/gnuconfig + /usr/share/doc + + + + + 2014-12-04 + 20141105 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 20140511 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-04-01 + 20140401 + New git snapshot. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-27 + 20130930 + Clean, new git snapshot. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-04-07 + 20130212 + Fix git archive + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-27 + 20130217 + New git archive + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-23 + 20130123 + bump + Erdinç Gültekin + admins@pisilinux.org + + + 2012-07-13 + 20120712 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + klibc + http://www.zytor.com/mailman/listinfo/klibc + PisiLinux Community admins@pisilinux.org + + LGPLv2.1 + GPLv2 + library + system.devel + A minimal libc subset for use with initramfs + Küçük bir C kütüphanesi (libc) uyarlaması + klibc ou "espace utilisateur tôt", est une librairie résultante de l'effort pour transférer autant de code d'initialisation de Linux que possible hors du noyau. + klibc, or "early userspace", is library part of an effort which tries to move as much initialization code in Linux as possible out of the kernel. + klibc, sistem başlangıcı için gerekli olan kodların mümkün olduğunca çok kısmını Linux çekirdeği dışına atma hedefiyle oluşturulmuş bir kütüphanedir. + https://www.kernel.org/pub/linux/libs/klibc/2.0/klibc-2.0.4.tar.xz + + perl + kernel-module-headers + + system/devel/klibc/pspec.xml + + + klibc + + /lib + /usr/bin + /usr/lib/klibc/bin + /usr/lib/klibc/include + /usr/lib/klibc/lib + /usr/share/aclocal + /usr/share/doc + /usr/share/man/ + + + klibc.m4 + + + + + 2015-06-19 + 2.0.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-11 + 2.0.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-28 + 2.0.3 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-22 + 2.0.2 + Rebuild, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-04 + 2.0.2 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + linux-firmware + http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/ + + PisiLinux Community + admins@pisilinux.org + + ipw2100-fw + ipw2200-fw + freedist + GPLv2+ + GPLv2 + MIT + data + hardware.firmware + Firmware files used by the Linux kernel + Linux çekirdeği tarafından kullanılan firmware dosyaları + linux-firmware contains different firmware files required for some devices to operate correctly. + linux-firmware, bazı aygıtların düzgün çalışabilmesi için gerekli firmware dosyalarını içerir. + http://sourceforge.net/projects/pisilinux/files/source/linux-firmware-20160111.tar.bz2 + http://source.pisilinux.org/erdinc/common-fw.tar.xz + http://source.pisilinux.org/erdinc/firmware-ipw.tar.xz + http://source.pisilinux.org/erdinc/firmware/firmware-nonfreebox-2-tar.bz2 + http://source.pisilinux.org/erdinc/firmware/ar9170.tar.bz2 + http://source.pisilinux.org/erdinc/firmware/ipw2x00-firmware.tar.bz2 + http://source.pisilinux.org/erdinc/firmware/aic94xx-seq.tar.bz2 + http://source.pisilinux.org/erdinc/firmware/accessrunner-firmware.tar.bz2 + http://source.pisilinux.org/erdinc/firmware/rtl8192se-firmware.tar.bz2 + http://sourceforge.net/projects/pisilinux/files/source/zd12x1.tar.bz2 + http://sourceforge.net/projects/pisilinux/files/source/nouveau-340-32.tar.xz + + iwlwifi-7260-14.ucode + iwlwifi-7260-15.ucode + iwlwifi-7260-17.ucode + + hardware/firmware/linux-firmware/pspec.xml + + + linux-firmware + + noDelta + + + /lib/firmware + /usr/share/doc + + + + + 2016-01-22 + 20160111 + Update nouveau and zd12x1 firmware. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2016-01-16 + 20160111 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-12-02 + 20151127 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-09-06 + 20150924 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-09-06 + 20150824 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-07-20 + 20150716 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-26 + 20150320 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-14 + 20150214 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-12-16 + 20141216 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-11-07 + 20141107 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-07-23 + 20140603 + Version bump. + Marcin Bojara + marcin.bojara@pisilinux.org + + + 2014-04-02 + 20140316 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-03-01 + 20140217 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-30 + 20131013 + Remove unneeded build dep,fix unpack problem. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-11-23 + 20131013 + Version bump to 20131013 git. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-30 + 20130811 + add update Intel-Bluetooth patchs + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-08-11 + 20130811 + add update patchs + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-07-19 + 20130609 + add update patchs + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-06-09 + 20130609 + bump + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-04-07 + 20130421 + bump + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-03-07 + 20130224 + bump + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2012-12-12 + 20121212 + First release + Erdinç Gültekin + erdincgultekin@pisilinux.org @@ -26240,6 +23908,65 @@ + + + disktype + http://disktype.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + BSD + app:console + hardware.disk + Detect the content format of a disk or disk image + Disk veya disk görüntüsünün biçimsel içeriğini saptar + The purpose of disktype is to detect the content format of a disk or disk image. It knows about common file systems, partition tables, and boot codes.The program is written in C and is designed to compile on any modern Unix flavour. + Disktype'ın amacı disk veya disk görüntüsünün içerik yapısını denetlemektir. Yaygın dosya sistemlerini, bölümleme tablolarını ve önyükleme kodlarını bilir. C dilinde yazılmış, herhangi bir modern Unix derleme tadında tasarlanmıştır. + mirrors://sourceforge/disktype/disktype-9.tar.gz + + klibc + colorgcc + + + disktype.patch + vfat.patch + ext4.patch + + hardware/disk/disktype/pspec.xml + + + disktype + + /usr/bin + /usr/share/doc + /usr/share/man + + + + + 2015-04-01 + 9 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-29 + 9 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-08-23 + 9 + First release + PisiLinux Community + admins@pisilinux.org + + + mtools @@ -26529,497 +24256,15 @@ - linux-firmware - http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/ + freetype + http://www.freetype.org/ PisiLinux Community admins@pisilinux.org - ipw2100-fw - ipw2200-fw - freedist - GPLv2+ + FTL GPLv2 - MIT - data - hardware.firmware - Firmware files used by the Linux kernel - Linux çekirdeği tarafından kullanılan firmware dosyaları - linux-firmware contains different firmware files required for some devices to operate correctly. - linux-firmware, bazı aygıtların düzgün çalışabilmesi için gerekli firmware dosyalarını içerir. - http://sourceforge.net/projects/pisilinux/files/source/linux-firmware-20160111.tar.bz2 - http://source.pisilinux.org/erdinc/common-fw.tar.xz - http://source.pisilinux.org/erdinc/firmware-ipw.tar.xz - http://source.pisilinux.org/erdinc/firmware/firmware-nonfreebox-2-tar.bz2 - http://source.pisilinux.org/erdinc/firmware/ar9170.tar.bz2 - http://source.pisilinux.org/erdinc/firmware/ipw2x00-firmware.tar.bz2 - http://source.pisilinux.org/erdinc/firmware/aic94xx-seq.tar.bz2 - http://source.pisilinux.org/erdinc/firmware/accessrunner-firmware.tar.bz2 - http://source.pisilinux.org/erdinc/firmware/rtl8192se-firmware.tar.bz2 - http://sourceforge.net/projects/pisilinux/files/source/zd12x1.tar.bz2 - http://sourceforge.net/projects/pisilinux/files/source/nouveau-340-32.tar.xz - - iwlwifi-7260-14.ucode - iwlwifi-7260-15.ucode - iwlwifi-7260-17.ucode - - hardware/firmware/linux-firmware/pspec.xml - - - linux-firmware - - noDelta - - - /lib/firmware - /usr/share/doc - - - - - 2016-01-22 - 20160111 - Update nouveau and zd12x1 firmware. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2016-01-16 - 20160111 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-12-02 - 20151127 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-09-06 - 20150924 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-09-06 - 20150824 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-07-20 - 20150716 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-03-26 - 20150320 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2015-02-14 - 20150214 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-12-16 - 20141216 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-11-07 - 20141107 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-07-23 - 20140603 - Version bump. - Marcin Bojara - marcin.bojara@pisilinux.org - - - 2014-04-02 - 20140316 - Version bump. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2014-03-01 - 20140217 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-11-30 - 20131013 - Remove unneeded build dep,fix unpack problem. - Ertuğrul Erata - ertugrulerata@gmail.com - - - 2013-11-23 - 20131013 - Version bump to 20131013 git. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-09-30 - 20130811 - add update Intel-Bluetooth patchs - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-08-11 - 20130811 - add update patchs - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-07-19 - 20130609 - add update patchs - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-06-09 - 20130609 - bump - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-04-07 - 20130421 - bump - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2013-03-07 - 20130224 - bump - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - 2012-12-12 - 20121212 - First release - Erdinç Gültekin - erdincgultekin@pisilinux.org - - - - - - sgml-common - http://www.linuxfromscratch.org/blfs/view/svn/pst/sgml-common.html - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - data - office.docbook - Base ISO character entities and utilities for SGML - SGML ISO karakter nesneleri ve yardımcı programları - Sgml-common is a collection of entities and document type definitions (DTDs) useful for SGML processing. - sgml-common SGML uygulamaları için kullanışlı olan içerikler ve belge tip belirtimleri (DTD) topluluğudur. - http://gd.tuwien.ac.at/hci/kde/devel/docbook/SOURCES/sgml-common-0.6.3.tgz - - sgml-common-0.6.3-configure.in.patch - sgml-common-0.6.3-manpage-1.patch - - office/docbook/sgml-common/pspec.xml - - - sgml-common - - /etc/sgml - /usr/bin - /usr/share/doc/sgml-common - /usr/share/man - /usr/share/sgml - - - System.Package - - - - - 2014-05-18 - 0.6.3 - Rebuild. - Serdar Soytetir - kaptan@pisilinux.org - - - 2010-10-13 - 0.6.3 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - xmlto - https://fedorahosted.org/xmlto/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2+ - app:console - office.docbook - A frontend to an XSL toolchain - XML ve DocBook için dönüşüm aracı - The purpose of xmlto is to convert an XML file to the desired format using whatever means necessary. - xmlto uygulamasının amacı verilen bir XML dosyasını istenen bir biçime dönüştürmektir. - https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.28.tar.gz - - libxslt - util-linux - docbook-xsl - docbook-xml - - office/docbook/xmlto/pspec.xml - - - xmlto - - docbook-xsl - docbook-xml - - - /usr/bin - /usr/share/doc/xmlto - /usr/share/xmlto - /usr/share/man - - - - - 2016-03-05 - 0.0.28 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-05-18 - 0.0.26 - Version bump. - Richard de Bruin - richdb@pisilinux.org - - - 2014-01-18 - 0.0.25 - Rebuild for 1.0 - Richard de Bruin - richdb@pisilinux.org - - - 2012-09-17 - 0.0.25 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - - - - docbook-xsl - http://wiki.docbook.org/topic/DocBookXslStylesheets - - PisiLinux Community - admins@pisilinux.org - - BSD - data - office.docbook - Norman Walsh's XSL stylesheets for DocBook XML - Docbook XSL biçemyaprakları - These XSL stylesheets allow you to transform any DocBook XML document to other formats such as HTML, FO and XHTML. - Docbook XSL biçemyapraklarını (stylesheets) içerir. - http://sourceforge.net/projects/docbook/files/docbook-xsl/1.79.1/docbook-xsl-1.79.1.tar.bz2 - - Makefile - - - docbook-xsl-pagesetup.patch - docbook-xsl-newmethods.patch - docbook-xsl-non-constant-expressions.patch - docbook-xsl-list-item-body.patch - - office/docbook/docbook-xsl/pspec.xml - - - docbook-xsl - - docbook-xml - - - /usr/share/doc/docbook-xsl - /usr/share/xml - - - System.Package - - - - - 2015-03-05 - 1.79.1 - Version bump - Alihan Öztürk - alihan@pisilinux.org - - - 2014-11-17 - 1.78.1 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2014-05-18 - 1.78.1 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2014-01-22 - 1.78.1 - Version bump. - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2012-10-10 - 1.77.1 - First release - Erdem Artan - admins@pisilinux.org - - - - - - docbook-xml - http://www.docbook.org/xml/ - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - data - office.docbook - Docbook XML DTD - Docbook XML DTD - Contains Docbook DTD for XML. A widely used XML scheme for writing documentation and help - Docbook XML belirtimi (DTD) sürümlerini içerir. - https://www.oasis-open.org/docbook/xml/4.1.2/docbkx412.zip - https://www.oasis-open.org/docbook/xml/4.1/docbkx41.zip - https://www.oasis-open.org/docbook/xml/4.2/docbook-xml-4.2.zip - https://www.oasis-open.org/docbook/xml/4.3/docbook-xml-4.3.zip - https://www.oasis-open.org/docbook/xml/4.4/docbook-xml-4.4.zip - https://www.oasis-open.org/docbook/xml/4.5/docbook-xml-4.5.zip - http://www.docbook.org/xml/5.0/docbook-5.0.zip - office/docbook/docbook-xml/pspec.xml - - - docbook-xml - - sgml-common - libxml2 - - - /usr/share/doc/ - /usr/share/xml - /etc/xml/docbook - /etc/xml/catalog - - - docbook - catalog - - - - - 2016-03-25 - 5.0 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-11-17 - 4.5 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2014-05-18 - 4.5 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2014-01-22 - 4.5 - Rebuild - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2011-09-16 - 4.5 - First release - Pisi Linux Admins - admins@pisilinux.org - - - - - - libpng - http://www.libpng.org/ - - PisiLinux Community - admins@pisilinux.org - - as-is library -<<<<<<< HEAD desktop.font A high-quality and portable font engine Yüksek kaliteli ve taşınabilir yazıtipi düzeneği @@ -27027,74 +24272,63 @@ FreeType 2 is a software font engine that is designed to be small, efficient, highly customizable, and portable while capable of producing high-quality output. It can be used in graphics libraries, display servers, font conversion tools, text image generation tools, and many other products as well. FreeType 2; küçük, verimli, özelleştirilebilir, taşınabilir ve yüksek kaliteli çıktı oluşturan bir yazıtipi düzeneğidir. Grafik kütüphaneleri, görüntü sunucuları ve yazıtipi değiştirme araçları gibi birçok üründe kullanılabilir. mirrors://sourceforge/freetype/freetype-2.6.2.tar.bz2 -======= - multimedia.graphics - Portable Network Graphics library - PNG kütüphanesi - Le format de Graphique Réseau Portable (Portable Network Graphics - PNG) a été conçu pour remplacer le format GIF plus simple et vieillissant ainsi que, d'une certaine manière, le format TIFF beaucoup plus complexe. L'objectif principal du projet est de se concentrer sur deux aspects majeurs : La toile mondiale (World Wide Web - WWW) et l'édition d'image. - The Portable Network Graphics (PNG) format was designed to replace the older and simpler GIF format and, to some extent, the much more complex TIFF format. Project's main aim is to concentrate on two major uses: the World Wide Web (WWW) and image-editing. - Taşınabilir Ağ Grafikleri (PNG) formatı eski ve daha basit GIF formatının yerine geçmek ve daha karmaşık yapıdaki TIFF formatını biraz daha genişletmek için tasarlanmıştır. Projenin ana hedefi iki önemli parça üzerine konsantre olmaktır: World Wide Web (WWW) ve resim düzenleme. - mirrors://sourceforge/libpng/libpng-1.6.18.tar.xz ->>>>>>> master zlib-devel + bzip2 + libpng-devel - - libpng-1.6.18-apng.patch.gz - libpng-multilib.patch - - multimedia/graphics/libpng/pspec.xml + desktop/font/freetype/pspec.xml - libpng + freetype zlib + bzip2 + libpng /usr/lib /usr/share/doc + /usr/share/man - libpng-devel - Development files for libpng - libpng için geliştirme dosyaları + freetype-devel + Development files for freetype + freetype için geliştirme dosyaları -<<<<<<< HEAD freetype zlib-devel libpng-devel -======= - libpng ->>>>>>> master /usr/bin /usr/include /usr/lib/pkgconfig /usr/lib32/pkgconfig - /usr/share/man + /usr/share/aclocal - libpng-32bit - 32-bit shared libraries for libpng - libpng için 32-bit paylaşımlı kitaplıklar + freetype-32bit + 32-bit shared libraries for freetype + freetype için 32-bit paylaşımlı kitaplıklar emul32 emul32 zlib-32bit + libpng-32bit - libpng + glibc-32bit zlib-32bit + libpng-32bit /usr/lib32 -<<<<<<< HEAD 2016-01-28 2.6.2 @@ -27105,70 +24339,79 @@ 2015-07-29 2.6 -======= - - 2015-08-20 - 1.6.18 - Version bump. - Osman Erkan - osman.erkan@pisilinux.org - - - 2015-07-14 - 1.6.16 ->>>>>>> master Version bump. Ertuğrul Erata ertugrulerata@gmail.com - - 2014-12-05 - 1.6.15 + + 2015-05-22 + 2.5.5 Version bump. - Osman Erkan - osman.erkan@pisilinux.org + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org - - 2014-07-07 - 1.6.12 - Version bump. - Vedat Demir - vedat@pisilinux.org - - + 2014-05-11 - 1.6.10 + 2.5.3 Release bump. Marcin Bojara marcin@pisilinux.org - + 2014-03-29 - 1.6.10 + 2.5.3 Version bump - PisiLinux Community - admins@pisilinux.org + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-12-11 + 2.5.2 + Version bump, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-26 + 2.5.1 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2013-10-28 + 2.5.0.1 + rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-26 + 2.5.0.1 + Fix deps,release bump. + Serdar Soytetir + kaptan@pisilinux.org - 2013-10-30 - 1.5.17 + 2013-06-28 + 2.5.0.1 Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org + Marcin Bojara + marcin@pisilinux.org - + 2013-01-14 - 1.5.14 + 2.4.11 New release PisiLinux Community admins@pisilinux.org - - 2012-11-03 - 1.5.13 + + 2012-11-24 + 2.4.10 First release - Erdem Artan - admins@pisilinux.org + Serdar Soytetir + kaptan@pisilinux.org diff --git a/pisi-index.xml.sha1sum b/pisi-index.xml.sha1sum index 56dae762..6a6cabe0 100644 --- a/pisi-index.xml.sha1sum +++ b/pisi-index.xml.sha1sum @@ -1,5 +1 @@ -<<<<<<< HEAD -afe8f9979f666e213f27ce4e01616f817d91d19c -======= -170496d12cc054572405694a8a19009bbfd4d095 ->>>>>>> master +307e14c60d0da53618ff97e5887ff86714cab6d5 \ No newline at end of file diff --git a/pisi-index.xml.xz b/pisi-index.xml.xz index 2a0c0cf3c6f9b1e5011a547133305702a3d7e268..99c3115063ea5e84467eee9088bae110e1bb81d7 100644 GIT binary patch delta 101526 zcmV(zK<2-It_GmA29Oy9V_on6u^pHYe^9a*D|8D}p!xDsD@7G(iems`Gx+ZHS6LsO zUR!0B%}+;GvZRy8-#jY;tMsHm={-NDosJ#4UmM1d19G`|M>Klns~VQ64>ODA9;DYi zX`WE>HAo1ma#+Lm!gZkkKrJa1>?KiGLDKSZ+?uJ-|A&-TQmCC=U) z0ZNiY?^!7ITP3e?!lo`CYqm-ze?dVL) z+4{Jg7JOF4jU5se1bAb19X=*<5{8J)H$30}VUeNeSh71MiT&infe+m+&JDP7< zbksIlnC-&Tz?2&EAX$c!9!?WdrNU$s?zD5`<2iC!@wQjeL?lfX#00z$g$>zbSX9@H zhDFh&G79Jqj|Z6R8zzc3uBG+m+CIOz&f#m{Ftf~mF_9)kZ`g2T!Jr?<-KSugh7gFn z0A$fmp}+}#?d995Dj6{8e?!&}+*a$kc_RQG`{+5-cVB{5UEt?3Z>8FOUxCD~t4ezA z0|J$hROsZhdOtodj?RV+<4=#|(p*m)0WI{ajGK|I?vfG8NS)OdRx^<7+pZxH=!Cv=aU7*kd%eeF=}$O~fw?zQf9g(rGyz*?pa*U(67ac2jn`S~RJKk!d4SW?bf=VG&R5N?Gf&Xb z!nW!g?IwmUVX=C~xQzz^p|?A7g%rCR2x3cGV8?z0^vD65cUtObijO9ReFr(X(WSs^ zLv|x_dm(vQUZ0~0dpAZ1T7U#jr^WU$$X+`MHznK@*qU{9f0l6ev(n{50Ywt!T+Lw_ zM|`Pt_F(*&JI~U{;1=ZV-YIb9Xn|j`CpQzq%nJ=hgTu`3+Nd`(?h>1Ie`EIf)z+RJmRDGQ$KY(`ep8vx=D4>CilRrYAzBlZmUWSsHZ;K$7s6gl4u8rG^PpWKuoO2Y zTjxqAM7u9y8A9YYgphxa!KC#+jn$!)@}i#sE-yq0LyR z98B1gNMQTKYKc+)eEGuTqa291y-E=D_7dx`e>$*25_k~`;mg zwQXRHi-Un22fmEd{OYkqi;EyGCY2tCd4AW)l{oI`u)LZ&cPG)<2H0&~Aw(aDz8-tM z4)N|xxr#K>DVd4|as2MNyiG7ot|kaI#(AYM@Ea(SJ;P0{+z@uNi?$hD^qBc5g59ka ze_!8w=;%FAmza4+YfAx3=71m$kS?Z3@-h{{akZM08SQY~yPhm{d9kE8m^`h<3T=HBG*OudnBtuZi zDKCAy%s0n8hWQBY^(m*qJuj>Yv&9KSvuXf0JR%4_yxS*EVrguXFig^crvjxW&l|7{4vcCrAUL zXeC-Vyt1DGk^|x+Toq0YVFyn$>S#O!XuCxNO+rlJzJ$M`|H5f%O1?{Oq81xIf0(Hz z&iV7Yci7+FvnKK~TatX(vIEh_PqXj%CTU1~K&)p1XzFOxehdh@ zOIvdTOxhxA|8l-0SM1=$bYX|Ne@R3cd)(ADi=5pwy0=)En<;%*BROYUB|iPG<@9mC zP|`z)&^5+`|6u6V{Zmk#V|yO42WD+zvbnai zjJ<@Bf&-oWM$Yx5n^_$jc#bI}=SGub&FYy9|NgZGZSQF6a6o3Kl>5#4e`U0>6not9 zx*&Wp2plAVM5OmSXQkeIjGf)5>4&=VE@KWiu1GQCyb zW_KO8xOUr%-v6^y*IP>T@0mZrxLFW!%k%}??*38-oFF=Vi0XX}Snb0@!@eWHcFk0) z53bfG<_45zQJ1q3GPThte?w|`e1`Bvz_w9Cd{Y~d)A1T%4dVbE3~4sQ+i&oawA{!I zAXR#Ebkkt)ZIr-!A81my-pGGt5M}< z3M#murS<&~ip3rV@X$TCs=#VK22mVkmC50Qzlv2Gyi^Oxg;{zZxAOY`;<~lAPj!8y`3vH>#4SLxjO@cl8!Gz^hx%CClReIsp5#u^Ur@ z5^=7s-E4pf�-sfA@F+wsY$`Kdkj%(;}>7A$vgmLEkcgLA|M- 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

yRy4nI^%jx9x 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 diff --git a/pisi-index.xml.xz.sha1sum b/pisi-index.xml.xz.sha1sum index f455f695..afcce411 100644 --- a/pisi-index.xml.xz.sha1sum +++ b/pisi-index.xml.xz.sha1sum @@ -1,5 +1 @@ -<<<<<<< HEAD -3d81b56768f723d8a75646b10040880842e2355d -======= -4d84dfb66a519441525847e6d31c57a57e4b80e3 ->>>>>>> master +2cf848c8a22f81bd8896b05f47b0b57d587d4fbe \ No newline at end of file

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