From 8861b53d7c6f844e51cd24776d097a450b5e8a6a Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 13:39:24 +0200 Subject: [PATCH 001/175] kdeclarative version bump and check --- desktop/kde/framework/kdeclarative/actions.py | 24 ++++++ desktop/kde/framework/kdeclarative/pspec.xml | 80 +++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100755 desktop/kde/framework/kdeclarative/actions.py create mode 100755 desktop/kde/framework/kdeclarative/pspec.xml diff --git a/desktop/kde/framework/kdeclarative/actions.py b/desktop/kde/framework/kdeclarative/actions.py new file mode 100755 index 0000000000..5945262b06 --- /dev/null +++ b/desktop/kde/framework/kdeclarative/actions.py @@ -0,0 +1,24 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules \ + -DQML_INSTALL_DIR=lib/qt5/qml \ + -DLIB_INSTALL_DIR=lib \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("README.md", "COPYING", "COPYING.LIB") diff --git a/desktop/kde/framework/kdeclarative/pspec.xml b/desktop/kde/framework/kdeclarative/pspec.xml new file mode 100755 index 0000000000..dcc4b860ac --- /dev/null +++ b/desktop/kde/framework/kdeclarative/pspec.xml @@ -0,0 +1,80 @@ + + + + + kdeclarative + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + Integration of QML and KDE workspaces + KDeclarative provides integration of QML and KDE workspaces. + http://download.kde.org/stable/frameworks/5.11/kdeclarative-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + + + + kdeclarative + + qt5-base + libgcc + libepoxy + qt5-declarative + kpackage + kconfig + kservice + kcoreaddons + kglobalaccel + ki18n + kiconthemes + kio + kwidgetsaddons + kwindowsystem + + + /usr/bin + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + kdeclarative-devel + Development files for kdeclarative + + qt5-base-devel + kdeclarative + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-25 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 5eb42ec0fd9f6e0e35a270e44e97ad2c0a1dbcbf Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 13:46:43 +0200 Subject: [PATCH 002/175] kdewebkit version bump and check --- desktop/kde/framework/kdewebkit/actions.py | 26 ++++++++ desktop/kde/framework/kdewebkit/pspec.xml | 76 ++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100755 desktop/kde/framework/kdewebkit/actions.py create mode 100755 desktop/kde/framework/kdewebkit/pspec.xml diff --git a/desktop/kde/framework/kdewebkit/actions.py b/desktop/kde/framework/kdewebkit/actions.py new file mode 100755 index 0000000000..5c3f7e92e2 --- /dev/null +++ b/desktop/kde/framework/kdewebkit/actions.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools +from pisi.actionsapi import get + +def setup(): + #shelltools.makedirs("build") + #shelltools.cd("build") + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DLIB_INSTALL_DIR=lib \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("README.md", "COPYING.LIB", "ISSUES") diff --git a/desktop/kde/framework/kdewebkit/pspec.xml b/desktop/kde/framework/kdewebkit/pspec.xml new file mode 100755 index 0000000000..78a6337cb7 --- /dev/null +++ b/desktop/kde/framework/kdewebkit/pspec.xml @@ -0,0 +1,76 @@ + + + + + kdewebkit + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 WebKit integration + KdeWebkit provides KDE integration of the QtWebKit library. + http://download.kde.org/stable/frameworks/5.11/kdewebkit-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + + + + kdewebkit + + qt5-webkit + libgcc + kconfig + kjobwidgets + qt5-base + kcoreaddons + kparts + kservice + kwallet + kio + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/mkspecs/modules/ + /usr/share/doc + + + + + kdewebkit-devel + Development files for kdewebkit + + qt5-base-devel + kdewebkit + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 6120273c97ab427de57fe74777544e98bf66ecd6 Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 13:51:00 +0200 Subject: [PATCH 003/175] kpeople version bump and check --- desktop/kde/framework/kpeople/actions.py | 29 +++++++++ desktop/kde/framework/kpeople/pspec.xml | 76 ++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100755 desktop/kde/framework/kpeople/actions.py create mode 100755 desktop/kde/framework/kpeople/pspec.xml diff --git a/desktop/kde/framework/kpeople/actions.py b/desktop/kde/framework/kpeople/actions.py new file mode 100755 index 0000000000..3ac5ef81de --- /dev/null +++ b/desktop/kde/framework/kpeople/actions.py @@ -0,0 +1,29 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + pisitools.ldflags.add("-Wl,-rpath,/usr/lib") + cmaketools.configure("-DBUILD_TESTING=OFF \ + -DLIB_INSTALL_DIR=lib \ + -DCMAKE_BUILD_TYPE=Release \ + -DSYSCONF_INSTALL_DIR=/etc \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIBEXEC_INSTALL_DIR=libexec \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DPYTHON_EXECUTABLE=/usr/bin/python3 \ + -DQT_PLUGIN_INSTALL_DIR=lib/qt5/plugins \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules ") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/framework/kpeople/pspec.xml b/desktop/kde/framework/kpeople/pspec.xml new file mode 100755 index 0000000000..e838aabc11 --- /dev/null +++ b/desktop/kde/framework/kpeople/pspec.xml @@ -0,0 +1,76 @@ + + + + + kpeople + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + A contact aggregation library for KDE + KPeople is a Framework for fetching contacts from different sources (Telepathy, Akonadi, Facebook, etc) and unifying them into a same model. + http://download.kde.org/stable/frameworks/5.11/kpeople-5.11.0.tar.xz + + qt5-base-devel + python3 + extra-cmake-modules + + + + + kpeople + + qt5-base + qt5-declarative + libgcc + kconfig + qt5-declarative + kcoreaddons + kservice + kwidgetsaddons + ki18n + kitemviews + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + kpeople-devel + Development files for kpeople + + qt5-base-devel + kpeople + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-25 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From a920112143065216e6046a2e9af63e702b876d7f Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 13:55:23 +0200 Subject: [PATCH 004/175] kcmutils version bump and check --- desktop/kde/framework/kcmutils/actions.py | 24 +++++++ desktop/kde/framework/kcmutils/pspec.xml | 80 +++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100755 desktop/kde/framework/kcmutils/actions.py create mode 100755 desktop/kde/framework/kcmutils/pspec.xml diff --git a/desktop/kde/framework/kcmutils/actions.py b/desktop/kde/framework/kcmutils/actions.py new file mode 100755 index 0000000000..e2f17d2484 --- /dev/null +++ b/desktop/kde/framework/kcmutils/actions.py @@ -0,0 +1,24 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules \ + -DLIB_INSTALL_DIR=lib \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DPYTHON_EXECUTABLE=/usr/bin/python3 \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("README.md", "COPYING.LIB") diff --git a/desktop/kde/framework/kcmutils/pspec.xml b/desktop/kde/framework/kcmutils/pspec.xml new file mode 100755 index 0000000000..3334aec551 --- /dev/null +++ b/desktop/kde/framework/kcmutils/pspec.xml @@ -0,0 +1,80 @@ + + + + + kcmutils + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + Utilities for interacting with KCModules + KCMUtils provides various classes to work with KCModules. KCModules can be created with the KConfigWidgets framework. + http://download.kde.org/stable/frameworks/5.11/kcmutils-5.11.0.tar.xz + + qt5-base-devel + python3 + extra-cmake-modules + + + + + kcmutils + + qt5-base + qt5-declarative + libgcc + kdeclarative + kconfigwidgets + kwidgetsaddons + kconfig + kauth + kcoreaddons + ki18n + kiconthemes + kitemviews + kservice + kxmlgui + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + kcmutils-devel + Development files for kcmutils + + qt5-base-devel + kcmutils + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 6c453223a0a41bc9ffb011586218e0d7c1f0c013 Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 14:18:22 +0200 Subject: [PATCH 005/175] ktexteditor version bump and check --- desktop/kde/framework/ktexteditor/actions.py | 24 ++++++ desktop/kde/framework/ktexteditor/pspec.xml | 87 ++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100755 desktop/kde/framework/ktexteditor/actions.py create mode 100755 desktop/kde/framework/ktexteditor/pspec.xml diff --git a/desktop/kde/framework/ktexteditor/actions.py b/desktop/kde/framework/ktexteditor/actions.py new file mode 100755 index 0000000000..cc99c4db53 --- /dev/null +++ b/desktop/kde/framework/ktexteditor/actions.py @@ -0,0 +1,24 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules \ + -DQT_PLUGIN_INSTALL_DIR=lib/qt5/plugins \ + -DLIB_INSTALL_DIR=lib \ + -DSYSCONF_INSTALL_DIR=/etc \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("README.md", "COPYING.LIB") diff --git a/desktop/kde/framework/ktexteditor/pspec.xml b/desktop/kde/framework/ktexteditor/pspec.xml new file mode 100755 index 0000000000..3971c2ea62 --- /dev/null +++ b/desktop/kde/framework/ktexteditor/pspec.xml @@ -0,0 +1,87 @@ + + + + + ktexteditor + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + KDE5 text editor libraries + KTextEditor provides a powerful text editor component that you can embed in your application. + http://download.kde.org/stable/frameworks/5.11/ktexteditor-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + + + + ktexteditor + + qt5-script + qt5-base + libgcc + ktextwidgets + kwidgetsaddons + kconfigwidgets + kjobwidgets + kiconthemes + kcoreaddons + kcompletion + kitemviews + kxmlgui + kcodecs + karchive + kguiaddons + kconfig + ki18n + kio + ki18n + kparts + sonnet + + + /etc + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + ktexteditor-devel + Development files for ktexteditor + + qt5-base-devel + ktexteditor + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 56af236d87fc390e283d45f45e8fa8d534c47d6d Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 14:26:42 +0200 Subject: [PATCH 006/175] knewstuff version bump and check --- desktop/kde/framework/knewstuff/actions.py | 19 +++++ desktop/kde/framework/knewstuff/pspec.xml | 86 ++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 desktop/kde/framework/knewstuff/actions.py create mode 100755 desktop/kde/framework/knewstuff/pspec.xml diff --git a/desktop/kde/framework/knewstuff/actions.py b/desktop/kde/framework/knewstuff/actions.py new file mode 100644 index 0000000000..11b2858877 --- /dev/null +++ b/desktop/kde/framework/knewstuff/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README.md", "COPYING.LIB") diff --git a/desktop/kde/framework/knewstuff/pspec.xml b/desktop/kde/framework/knewstuff/pspec.xml new file mode 100755 index 0000000000..36e42d5f46 --- /dev/null +++ b/desktop/kde/framework/knewstuff/pspec.xml @@ -0,0 +1,86 @@ + + + + + knewstuff + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + Framework for downloading and sharing additional application data + The KNewStuff library implements collaborative data sharing for applications. + http://download.kde.org/stable/frameworks/5.11/knewstuff-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + + + + knewstuff + + qt5-base + boost + libgcc + kwidgetsaddons + ktextwidgets + kiconthemes + kcompletion + kitemviews + karchive + kf5-attica + kconfig + kcoreaddons + kcmutils + kdeclarative + kdbusaddons + ki18n + kio + kglobalaccel + kservice + kxmlgui + kwindowsystem + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + knewstuff-devel + Development files for knewstuff + + qt5-base-devel + knewstuff + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From b68642016e2dbe612cbeaebe4d7710a486680f99 Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 14:37:06 +0200 Subject: [PATCH 007/175] threadweaver version bump and check --- desktop/kde/framework/threadweaver/actions.py | 23 +++++++ desktop/kde/framework/threadweaver/pspec.xml | 66 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 desktop/kde/framework/threadweaver/actions.py create mode 100644 desktop/kde/framework/threadweaver/pspec.xml diff --git a/desktop/kde/framework/threadweaver/actions.py b/desktop/kde/framework/threadweaver/actions.py new file mode 100644 index 0000000000..25e5a4e58b --- /dev/null +++ b/desktop/kde/framework/threadweaver/actions.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules \ + -DLIB_INSTALL_DIR=lib \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("README.md","COPYING.LIB") diff --git a/desktop/kde/framework/threadweaver/pspec.xml b/desktop/kde/framework/threadweaver/pspec.xml new file mode 100644 index 0000000000..0adb94dee5 --- /dev/null +++ b/desktop/kde/framework/threadweaver/pspec.xml @@ -0,0 +1,66 @@ + + + + + threadweaver + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Multi-threaded programming framework for KDE + ThreadWeaver is a helper for multithreaded programming. It uses a job-based interface to queue tasks and execute them in an efficient way. + http://download.kde.org/stable/frameworks/5.11/threadweaver-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + + + + threadweaver + + qt5-base + libgcc + + + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + threadweaver-devel + Development files for threadweaver + + qt5-base-devel + threadweaver + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From f0d11acbccb6ad4b50bd0a531679ff8bcaaf3f59 Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 14:44:24 +0200 Subject: [PATCH 008/175] kdesignerplugin version bump and check --- .../kde/framework/kdesignerplugin/actions.py | 24 +++++++ .../kde/framework/kdesignerplugin/pspec.xml | 72 +++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100755 desktop/kde/framework/kdesignerplugin/actions.py create mode 100755 desktop/kde/framework/kdesignerplugin/pspec.xml diff --git a/desktop/kde/framework/kdesignerplugin/actions.py b/desktop/kde/framework/kdesignerplugin/actions.py new file mode 100755 index 0000000000..0edd518c7e --- /dev/null +++ b/desktop/kde/framework/kdesignerplugin/actions.py @@ -0,0 +1,24 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules \ + -DQT_PLUGIN_INSTALL_DIR=lib/qt5/plugins \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DLIB_INSTALL_DIR=lib \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("README.md", "COPYING.LIB") diff --git a/desktop/kde/framework/kdesignerplugin/pspec.xml b/desktop/kde/framework/kdesignerplugin/pspec.xml new file mode 100755 index 0000000000..a00d24276d --- /dev/null +++ b/desktop/kde/framework/kdesignerplugin/pspec.xml @@ -0,0 +1,72 @@ + + + + + kdesignerplugin + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + QT Designer integration for KDE5 Frameworks widgets + This framework provides plugins for Qt Designer that allow it to display the widgets provided by various KDE frameworks, as well as a utility (kgendesignerplugin) that can be used to generate other such plugins from ini-style description files. + http://download.kde.org/stable/frameworks/5.11/kdesignerplugin-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + kdoctools-devel + extra-cmake-modules + + + + + kdesignerplugin + + qt5-base + libgcc + kdewebkit + kcoreaddons + kitemviews + kconfig + sonnet + kcompletion + kconfigwidgets + kiconthemes + kio + kplotting + ktextwidgets + kwidgetsaddons + kxmlgui + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + /usr/share/man + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 822344a3b04754a95193afd8e7bcdbc48ce42cd3 Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 15:31:50 +0200 Subject: [PATCH 009/175] kactivities version bump and check --- desktop/kde/framework/kactivities/actions.py | 33 +++++++ .../kactivities/files/build-source.patch | 17 ++++ .../kactivities/files/kamd-rename.patch | 91 ++++++++++++++++++ desktop/kde/framework/kactivities/pspec.xml | 94 +++++++++++++++++++ 4 files changed, 235 insertions(+) create mode 100755 desktop/kde/framework/kactivities/actions.py create mode 100644 desktop/kde/framework/kactivities/files/build-source.patch create mode 100644 desktop/kde/framework/kactivities/files/kamd-rename.patch create mode 100755 desktop/kde/framework/kactivities/pspec.xml diff --git a/desktop/kde/framework/kactivities/actions.py b/desktop/kde/framework/kactivities/actions.py new file mode 100755 index 0000000000..54ae37f90a --- /dev/null +++ b/desktop/kde/framework/kactivities/actions.py @@ -0,0 +1,33 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def setup(): + shelltools.makedirs("%s/build" %get.workDIR()) + + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DKACTIVITIES_ENABLE_EXCEPTIONS=OFF \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules \ + -DQT_PLUGIN_INSTALL_DIR=lib/qt5/plugins \ + -DQML_INSTALL_DIR=lib/qt5/qml \ + -DLIB_INSTALL_DIR=lib \ + -DSYSCONF_INSTALL_DIR=/etc \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DPYTHON_EXECUTABLE=/usr/bin/python3 \ + -DLOCALE_INSTALL_DIR=/usr/share/locale \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("README.md", "MAINTAINER", "TODO") diff --git a/desktop/kde/framework/kactivities/files/build-source.patch b/desktop/kde/framework/kactivities/files/build-source.patch new file mode 100644 index 0000000000..7546123148 --- /dev/null +++ b/desktop/kde/framework/kactivities/files/build-source.patch @@ -0,0 +1,17 @@ +--- a/CMakeLists.txt 2014-09-09 02:40:08.000000000 +0300 ++++ b/CMakeLists.txt 2014-09-22 17:47:14.215639453 +0300 +@@ -6,13 +6,6 @@ + + set(REQUIRED_QT_VERSION 5.2.0) + +-# We don't build in-source +-if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") +- message ( +- FATAL_ERROR +- "kactivities require an out of source build. Please create a separate build directory and run 'cmake path_to_plasma [options]' there." +- ) +-endif () + + # Extra CMake stuff + find_package (ECM 1.2.0 REQUIRED NO_MODULE) + diff --git a/desktop/kde/framework/kactivities/files/kamd-rename.patch b/desktop/kde/framework/kactivities/files/kamd-rename.patch new file mode 100644 index 0000000000..50f109f79a --- /dev/null +++ b/desktop/kde/framework/kactivities/files/kamd-rename.patch @@ -0,0 +1,91 @@ +diff --git a/autotests/Process.cpp b/autotests/Process.cpp +index a7a0507..afa4bf1 100644 +--- a/autotests/Process.cpp ++++ b/autotests/Process.cpp +@@ -83,7 +83,7 @@ void Modifier::initTestCase() + // qDebug() << env; + + s_process->setEnvironment(env); +- s_process->start(QStringLiteral(KAMD_INSTALL_PREFIX "/bin/kactivitymanagerd")); ++ s_process->start(QStringLiteral(KAMD_INSTALL_PREFIX "/bin/kactivitymanagerd5")); + s_process->waitForStarted(); + + +diff --git a/src/lib/core/manager_p.cpp b/src/lib/core/manager_p.cpp +index 077c634..7be66dd 100644 +--- a/src/lib/core/manager_p.cpp ++++ b/src/lib/core/manager_p.cpp +@@ -94,11 +94,11 @@ Manager *Manager::self() + ->property("org.kde.KActivities.core.disableAutostart") + .toBool()) { + qCDebug(KAMD_CORELIB) << "Starting the activity manager daemon"; +- QProcess::startDetached(QStringLiteral("kactivitymanagerd")); ++ QProcess::startDetached(QStringLiteral("kactivitymanagerd5")); + } + + #else +- QProcess::startDetached(QStringLiteral("kactivitymanagerd")); ++ QProcess::startDetached(QStringLiteral("kactivitymanagerd5")); + #endif + } + +diff --git a/src/service/Application.cpp b/src/service/Application.cpp +index 6b0e3e1..3894540 100644 +--- a/src/service/Application.cpp ++++ b/src/service/Application.cpp +@@ -280,7 +280,7 @@ int main(int argc, char **argv) + application.setApplicationName(QStringLiteral("ActivityManager")); + application.setOrganizationDomain(QStringLiteral("kde.org")); + +- // KAboutData about("kactivitymanagerd", Q_NULLPTR, ki18n("KDE Activity Manager"), "3.0", ++ // KAboutData about("kactivitymanagerd5", Q_NULLPTR, ki18n("KDE Activity Manager"), "3.0", + // ki18n("KDE Activity Management Service"), + // KAboutData::License_GPL, + // ki18n("(c) 2010, 2011, 2012 Ivan Cukic"), KLocalizedString(), +@@ -333,7 +333,7 @@ int main(int argc, char **argv) + // Starting the dameon + + QProcess::startDetached( +- KAMD_INSTALL_PREFIX "/bin/kactivitymanagerd", ++ KAMD_INSTALL_PREFIX "/bin/kactivitymanagerd5", + QStringList{"start-daemon"} + ); + +diff --git a/src/service/CMakeLists.txt b/src/service/CMakeLists.txt +index 4b4978b..2220f34 100644 +--- a/src/service/CMakeLists.txt ++++ b/src/service/CMakeLists.txt +@@ -62,9 +62,9 @@ qt5_add_dbus_adaptor ( + Features.h Features + ) + +-add_executable (kactivitymanagerd ${kactivitymanager_SRCS}) ++add_executable (kactivitymanagerd5 ${kactivitymanager_SRCS}) + +-target_link_libraries (kactivitymanagerd ++target_link_libraries (kactivitymanagerd5 + Qt5::Core + Qt5::DBus + Qt5::Widgets +@@ -84,7 +84,7 @@ install (FILES + ) + + install (TARGETS +- kactivitymanagerd ${KF5_INSTALL_TARGETS_DEFAULT_ARGS} ++ kactivitymanagerd5 ${KF5_INSTALL_TARGETS_DEFAULT_ARGS} + ) + + install (FILES +diff --git a/src/service/files/kactivitymanagerd.desktop b/src/service/files/kactivitymanagerd.desktop +index be5faa1..3c9b9a9 100644 +--- a/src/service/files/kactivitymanagerd.desktop ++++ b/src/service/files/kactivitymanagerd.desktop +@@ -4,7 +4,7 @@ Icon=preferences-activities + X-KDE-ServiceTypes= + X-DBUS-StartupType=Unique + X-KDE-StartupNotify=false +-Exec=kactivitymanagerd ++Exec=kactivitymanagerd5 + + Name=Activity Manager + Name[ar]=مدير الأنشطة diff --git a/desktop/kde/framework/kactivities/pspec.xml b/desktop/kde/framework/kactivities/pspec.xml new file mode 100755 index 0000000000..63e573cadc --- /dev/null +++ b/desktop/kde/framework/kactivities/pspec.xml @@ -0,0 +1,94 @@ + + + + + kactivities + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Library for KDE's Plasma Activities support + Kactivities provides an API for using and interacting with the Plasma Activities Manager. + http://download.kde.org/stable/frameworks/5.11/kactivities-5.11.0.tar.xz + + qt5-base-devel + python3 + boost-devel + extra-cmake-modules + + + build-source.patch + + + + + kactivities + + qt5-base + qt5-declarative + libgcc + kconfig + kconfigwidgets + kcoreaddons + kcmutils + kdeclarative + kdbusaddons + ki18n + kio + kglobalaccel + kservice + kxmlgui + kwindowsystem + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kactivities + + + kactivities + + + + + kactivities-devel + Development files for kactivities + + qt5-base-devel + boost-devel + kactivities + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 895aa5691b76af7a17e91a8b953374ae179e11c9 Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 15:59:41 +0200 Subject: [PATCH 010/175] plasma-framework version bump and check --- .../kde/framework/plasma-framework/actions.py | 26 +++++ .../kde/framework/plasma-framework/pspec.xml | 101 ++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100755 desktop/kde/framework/plasma-framework/actions.py create mode 100755 desktop/kde/framework/plasma-framework/pspec.xml diff --git a/desktop/kde/framework/plasma-framework/actions.py b/desktop/kde/framework/plasma-framework/actions.py new file mode 100755 index 0000000000..9cf86fce51 --- /dev/null +++ b/desktop/kde/framework/plasma-framework/actions.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules \ + -DQT_PLUGIN_INSTALL_DIR=lib/qt5/plugins \ + -DQML_INSTALL_DIR=lib/qt5/qml \ + -DLIB_INSTALL_DIR=lib \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DLOCALE_INSTALL_DIR=/usr/share/locale \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("README.md", "COPYING", "COPYING.LIB") diff --git a/desktop/kde/framework/plasma-framework/pspec.xml b/desktop/kde/framework/plasma-framework/pspec.xml new file mode 100755 index 0000000000..d62e3fb732 --- /dev/null +++ b/desktop/kde/framework/plasma-framework/pspec.xml @@ -0,0 +1,101 @@ + + + + + plasma-framework + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Plasma library and runtime components based upon KDE Frameworks 5 and Qt5 + Plasma library and runtime components based upon KF5 and Qt5 + http://download.kde.org/stable/frameworks/5.11/plasma-framework-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + kdoctools-devel + libxcb-devel + libX11-devel + libgcc + extra-cmake-modules + + + + + plasma-framework + + qt5-base + qt5-svg + qt5-script + qt5-x11extras + qt5-declarative + mesa + libgcc + libX11 + libxcb + kf5-kactivities + knotifications + kpackage + karchive + kconfig + kconfigwidgets + kcoreaddons + kdbusaddons + kdeclarative + kdoctools + kglobalaccel + kguiaddons + ki18n + kiconthemes + kio + kparts + kservice + kwindowsystem + kxmlgui + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + plasma-framework-devel + Development files for plasma-framework + + qt5-base-devel + mesa-devel + plasma-framework + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 916de22babc4ec0e426a421548fb9a6a9a05676a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hakan=20Y=C4=B1ld=C4=B1z?= Date: Sun, 28 Jun 2015 17:17:01 +0300 Subject: [PATCH 011/175] gstreamer fixed --- multimedia/video/gstreamer/pspec.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/multimedia/video/gstreamer/pspec.xml b/multimedia/video/gstreamer/pspec.xml index 87a1071184..999787ba04 100644 --- a/multimedia/video/gstreamer/pspec.xml +++ b/multimedia/video/gstreamer/pspec.xml @@ -23,6 +23,14 @@ gstreamer + + gobject-introspection-devel + libxml2-devel + + + gobject-introspection + libxml2 + /usr/bin /usr/lib @@ -55,11 +63,13 @@ emul32 glib2-32bit + glibc-32bit libxml2-32bit gstreamer glib2-32bit + glibc-32bit libxml2-32bit @@ -68,6 +78,13 @@ + + 2015-06-26 + 0.10.36 + Rebuilt, fixed. + Hakan Yıldız + hknyldz93@gmail.com + 2014-05-19 0.10.36 From 86ecb0054073541c4a1b8b39992047cd923ae49b Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 16:32:56 +0200 Subject: [PATCH 012/175] kdelibs4-support version bump and check --- .../porting-aids/kdelibs4-support/actions.py | 19 +++ .../porting-aids/kdelibs4-support/pspec.xml | 108 ++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 desktop/kde/porting-aids/kdelibs4-support/actions.py create mode 100755 desktop/kde/porting-aids/kdelibs4-support/pspec.xml diff --git a/desktop/kde/porting-aids/kdelibs4-support/actions.py b/desktop/kde/porting-aids/kdelibs4-support/actions.py new file mode 100644 index 0000000000..29911258e6 --- /dev/null +++ b/desktop/kde/porting-aids/kdelibs4-support/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure("-DHTML_INSTAL_DIR=/usr/share/doc/kdelibs4support/html") + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README.md", "COPYING.LIB") diff --git a/desktop/kde/porting-aids/kdelibs4-support/pspec.xml b/desktop/kde/porting-aids/kdelibs4-support/pspec.xml new file mode 100755 index 0000000000..395d1784a5 --- /dev/null +++ b/desktop/kde/porting-aids/kdelibs4-support/pspec.xml @@ -0,0 +1,108 @@ + + + + + kdelibs4-support + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Code and utilities to ease the transition to KDE Frameworks 5 + KDELibs4Support provides libraries to port KDE4 programs to QT5/KDE5 + http://download.kde.org/stable/frameworks/5.11/portingAids/kdelibs4support-5.11.0.tar.xz + + qt5-base-devel + perl-URI + qt5-tools-devel + libSM-devel + docbook-xml + openssl-devel + libX11-devel + intltool + kdoctools-devel + NetworkManager-devel + extra-cmake-modules + + + + + kdelibs4-support + + qt5-base + libICE + libgcc + libX11 + qt5-svg + qt5-x11extras + libSM + kauth + solid + kcodecs + kcoreaddons + kjobwidgets + kcompletion + kconfig + kconfigwidgets + kcrash + kdbusaddons + kglobalaccel + kguiaddons + ki18n + kiconthemes + kio + kitemviews + knotifications + kparts + kservice + ktextwidgets + kxmlgui + kwindowsystem + kwidgetsaddons + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + /usr/share/man + + + + + kdelibs4-support-devel + Development files for kdelibs4-support + + qt5-base-devel + kdelibs4-support + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 5715e847aaf10fa94710266c74b50c7fe7e489ff Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 16:51:25 +0200 Subject: [PATCH 013/175] kjs version bump and check --- desktop/kde/porting-aids/kjs/actions.py | 19 +++++++ desktop/kde/porting-aids/kjs/pspec.xml | 73 +++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 desktop/kde/porting-aids/kjs/actions.py create mode 100755 desktop/kde/porting-aids/kjs/pspec.xml diff --git a/desktop/kde/porting-aids/kjs/actions.py b/desktop/kde/porting-aids/kjs/actions.py new file mode 100644 index 0000000000..11b2858877 --- /dev/null +++ b/desktop/kde/porting-aids/kjs/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README.md", "COPYING.LIB") diff --git a/desktop/kde/porting-aids/kjs/pspec.xml b/desktop/kde/porting-aids/kjs/pspec.xml new file mode 100755 index 0000000000..9bd945d05e --- /dev/null +++ b/desktop/kde/porting-aids/kjs/pspec.xml @@ -0,0 +1,73 @@ + + + + + kjs + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + JavaScript engine for KDE + This library provides an ECMAScript compatible interpreter. The ECMA standard is based on well known scripting languages such as Netscape's JavaScript and Microsoft's JScript. + http://download.kde.org/stable/frameworks/5.11/portingAids/kjs-5.11.0.tar.xz + + qt5-base-devel + libpcre-devel + libgcc + kdoctools-devel + extra-cmake-modules + + + + + kjs + + qt5-base + libgcc + libpcre + + + /usr/bin + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + + + kjs-devel + Development files for kjs + + qt5-base-devel + kjs + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 173738e4612eec0cf467b1047a28604b6d672cd3 Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 17:39:49 +0200 Subject: [PATCH 014/175] khtml version bump and check --- desktop/kde/porting-aids/khtml/actions.py | 19 ++++ desktop/kde/porting-aids/khtml/pspec.xml | 102 ++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 desktop/kde/porting-aids/khtml/actions.py create mode 100755 desktop/kde/porting-aids/khtml/pspec.xml diff --git a/desktop/kde/porting-aids/khtml/actions.py b/desktop/kde/porting-aids/khtml/actions.py new file mode 100644 index 0000000000..7ad3db044b --- /dev/null +++ b/desktop/kde/porting-aids/khtml/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README.md") diff --git a/desktop/kde/porting-aids/khtml/pspec.xml b/desktop/kde/porting-aids/khtml/pspec.xml new file mode 100755 index 0000000000..863b15ce33 --- /dev/null +++ b/desktop/kde/porting-aids/khtml/pspec.xml @@ -0,0 +1,102 @@ + + + + + khtml + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + HTML rendering engine for KDE + KHTML is a web rendering engine, based on the KParts technology and using KJS for JavaScript support. + http://download.kde.org/stable/frameworks/5.11/portingAids/khtml-5.11.0.tar.xz + + qt5-base-devel + zlib-devel + libX11-devel + zlib + openssl-devel + extra-cmake-modules + + + + + khtml + + qt5-base + qt5-x11extras + qt5-phonon + zlib + openssl + giflib + zlib + libX11 + libgcc + libpng + libjpeg-turbo + sonnet + kcodecs + kconfig + kjobwidgets + kwidgetsaddons + kcompletion + karchive + kconfigwidgets + kcoreaddons + kglobalaccel + ki18n + kiconthemes + kio + kjs + knotifications + kparts + kservice + ktextwidgets + kwallet + kwindowsystem + kxmlgui + + + /etc + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + khtml-devel + Development files for khtml + + khtml + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From c18ef6b7eaf5bea74e4f308860975ef7b6495431 Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 17:52:22 +0200 Subject: [PATCH 015/175] kjsembed version bump and check --- desktop/kde/porting-aids/kjsembed/actions.py | 19 +++++ desktop/kde/porting-aids/kjsembed/pspec.xml | 75 ++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 desktop/kde/porting-aids/kjsembed/actions.py create mode 100755 desktop/kde/porting-aids/kjsembed/pspec.xml diff --git a/desktop/kde/porting-aids/kjsembed/actions.py b/desktop/kde/porting-aids/kjsembed/actions.py new file mode 100644 index 0000000000..e5ff33ac3c --- /dev/null +++ b/desktop/kde/porting-aids/kjsembed/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README.md", "AUTHORS", "COPYING.LIB") diff --git a/desktop/kde/porting-aids/kjsembed/pspec.xml b/desktop/kde/porting-aids/kjsembed/pspec.xml new file mode 100755 index 0000000000..ef1a0f9d9e --- /dev/null +++ b/desktop/kde/porting-aids/kjsembed/pspec.xml @@ -0,0 +1,75 @@ + + + + + kjsembed + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + JavaScript support for HTML rendering engine on KDE5 + The KJSEmbed library is an easy-to-use wrapper around the KDE ECMAScript interpreter (kjs) that makes it easy to add scriptability to an application. + http://download.kde.org/stable/frameworks/5.11/portingAids/kjsembed-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + kdoctools-devel + python3 + extra-cmake-modules + + + + + kjsembed + + qt5-base + qt5-svg + libgcc + ki18n + kjs + + + /usr/bin + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + + + kjsembed-devel + Development files for kjsembed + + qt5-base-devel + kjsembed + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From d0c888c24b0781efc9e2a7cea6e3a3da48afb480 Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 18:00:09 +0200 Subject: [PATCH 016/175] kmediaplayer version bump and check --- .../kde/porting-aids/kmediaplayer/actions.py | 19 ++++++ .../kde/porting-aids/kmediaplayer/pspec.xml | 68 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 desktop/kde/porting-aids/kmediaplayer/actions.py create mode 100755 desktop/kde/porting-aids/kmediaplayer/pspec.xml diff --git a/desktop/kde/porting-aids/kmediaplayer/actions.py b/desktop/kde/porting-aids/kmediaplayer/actions.py new file mode 100644 index 0000000000..21870af947 --- /dev/null +++ b/desktop/kde/porting-aids/kmediaplayer/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README.md", "LICENSE") diff --git a/desktop/kde/porting-aids/kmediaplayer/pspec.xml b/desktop/kde/porting-aids/kmediaplayer/pspec.xml new file mode 100755 index 0000000000..14bd7b7aee --- /dev/null +++ b/desktop/kde/porting-aids/kmediaplayer/pspec.xml @@ -0,0 +1,68 @@ + + + + + kmediaplayer + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + KDE5 media player Plugin interface for media player features + KMediaPlayer builds on the KParts framework to provide a common interface for KParts that can play media files. + http://download.kde.org/stable/frameworks/5.11/portingAids/kmediaplayer-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + + + + kmediaplayer + + qt5-base + libgcc + kparts + kxmlgui + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + kmediaplayer-devel + Development files for kmediaplayer + + qt5-base-devel + kmediaplayer + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From be136d8764fa72806b5be186f7a093736ee40c3e Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 18:05:51 +0200 Subject: [PATCH 017/175] kross version bump and check --- desktop/kde/porting-aids/kross/actions.py | 19 ++++++ desktop/kde/porting-aids/kross/pspec.xml | 80 +++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 desktop/kde/porting-aids/kross/actions.py create mode 100755 desktop/kde/porting-aids/kross/pspec.xml diff --git a/desktop/kde/porting-aids/kross/actions.py b/desktop/kde/porting-aids/kross/actions.py new file mode 100644 index 0000000000..11b2858877 --- /dev/null +++ b/desktop/kde/porting-aids/kross/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README.md", "COPYING.LIB") diff --git a/desktop/kde/porting-aids/kross/pspec.xml b/desktop/kde/porting-aids/kross/pspec.xml new file mode 100755 index 0000000000..cf031f63b7 --- /dev/null +++ b/desktop/kde/porting-aids/kross/pspec.xml @@ -0,0 +1,80 @@ + + + + + kross + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + KDE5 application scripting helper + Kross is a scripting bridge to embed scripting functionality into an application. It supports QtScript as a scripting interpreter backend. + http://download.kde.org/stable/frameworks/5.11/portingAids/kross-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + kdoctools-devel + extra-cmake-modules + + + + + kross + + qt5-base + qt5-script + libgcc + kcoreaddons + ki18n + kcompletion + kiconthemes + kio + kparts + kwidgetsaddons + kxmlgui + + + /usr/bin + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + /usr/share/man + + + + + kross-devel + Development files for kross + + qt5-base-devel + kross + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 11560ca95f03973b4ba4e64f71141014f6a75c1b Mon Sep 17 00:00:00 2001 From: groni Date: Sun, 28 Jun 2015 18:11:51 +0200 Subject: [PATCH 018/175] krunner version bump and check --- desktop/kde/porting-aids/krunner/actions.py | 19 +++++ desktop/kde/porting-aids/krunner/pspec.xml | 77 +++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 desktop/kde/porting-aids/krunner/actions.py create mode 100755 desktop/kde/porting-aids/krunner/pspec.xml diff --git a/desktop/kde/porting-aids/krunner/actions.py b/desktop/kde/porting-aids/krunner/actions.py new file mode 100644 index 0000000000..7ad3db044b --- /dev/null +++ b/desktop/kde/porting-aids/krunner/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README.md") diff --git a/desktop/kde/porting-aids/krunner/pspec.xml b/desktop/kde/porting-aids/krunner/pspec.xml new file mode 100755 index 0000000000..a76487c485 --- /dev/null +++ b/desktop/kde/porting-aids/krunner/pspec.xml @@ -0,0 +1,77 @@ + + + + + krunner + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Krunner Framework for providing different actions given a string query + Framework Integration is a set of plugins responsible for better integration of Qt applications when running on a KDE Plasma workspace. + http://download.kde.org/stable/frameworks/5.11/portingAids/krunner-5.11.0.tar.xz + + qt5-base-devel + kdoctools-devel + extra-cmake-modules + + + + + krunner + + qt5-base + qt5-declarative + libgcc + kconfig + kcoreaddons + ki18n + kio + kservice + plasma-framework + solid + threadweaver + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + krunner-devel + Development files for krunner + + qt5-base-devel + krunner + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From add6f1e5fe07c027b3d386e82205eb90ccb48977 Mon Sep 17 00:00:00 2001 From: groni Date: Mon, 29 Jun 2015 14:41:54 +0200 Subject: [PATCH 019/175] kate version bump and check --- desktop/kde/kde5-application/kate/actions.py | 19 +++ .../kate/files/org.kde.kate.desktop | 132 ++++++++++++++++++ desktop/kde/kde5-application/kate/pspec.xml | 75 ++++++++++ 3 files changed, 226 insertions(+) create mode 100644 desktop/kde/kde5-application/kate/actions.py create mode 100755 desktop/kde/kde5-application/kate/files/org.kde.kate.desktop create mode 100755 desktop/kde/kde5-application/kate/pspec.xml diff --git a/desktop/kde/kde5-application/kate/actions.py b/desktop/kde/kde5-application/kate/actions.py new file mode 100644 index 0000000000..e5ff33ac3c --- /dev/null +++ b/desktop/kde/kde5-application/kate/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README.md", "AUTHORS", "COPYING.LIB") diff --git a/desktop/kde/kde5-application/kate/files/org.kde.kate.desktop b/desktop/kde/kde5-application/kate/files/org.kde.kate.desktop new file mode 100755 index 0000000000..b5c6c59ae4 --- /dev/null +++ b/desktop/kde/kde5-application/kate/files/org.kde.kate.desktop @@ -0,0 +1,132 @@ +[Desktop Entry] +GenericName=Advanced Text Editor +GenericName[ar]=محرر نصوص متقدّم +GenericName[ast]=Editor de testu avanzáu +GenericName[bg]=Усъвършенстван текстов редактор +GenericName[bs]=Napredni uređivač teksta +GenericName[ca]=Editor de text avançat +GenericName[ca@valencia]=Editor de text avançat +GenericName[cs]=Pokročilý textový editor +GenericName[da]=Avanceret teksteditor +GenericName[de]=Erweiterter Texteditor +GenericName[el]=Προχωρημένος επεξεργαστής κειμένου +GenericName[en_GB]=Advanced Text Editor +GenericName[es]=Editor de texto avanzado +GenericName[et]=Täiustatud tekstiredaktor +GenericName[eu]=Testu-editore aurreratua +GenericName[fi]=Kehittynyt tekstimuokkain +GenericName[fr]=Éditeur de texte avancé +GenericName[ga]=Ardeagarthóir Téacs +GenericName[gl]=Editor avanzado de textos +GenericName[he]=עורך טקסט מתקדם +GenericName[hr]=Napredni uređivač teksta +GenericName[hu]=Speciális szövegszerkesztő +GenericName[ia]=Editor avantiate de texto +GenericName[is]=Þróaður textaritill +GenericName[it]=Editor di testi avanzato +GenericName[ja]=高度なテキストエディタ +GenericName[kk]=Үздік мәтін редакторы +GenericName[km]=កម្មវិធី​និពន្ធ​អត្ថបទ​កម្រិត​ខ្ពស់ +GenericName[ko]=고급 텍스트 편집기 +GenericName[lt]=Sudėtingesnis teksto redaktorius +GenericName[lv]=Jaudīgs teksta redaktors +GenericName[mr]=प्रगत पाठ्य संपादक +GenericName[nb]=Avansert skriveprogram +GenericName[nds]=Verwiedert Texteditor +GenericName[ne]=उन्नत पाठ सम्पादक +GenericName[nl]=Geavanceerde teksteditor +GenericName[nn]=Avansert skriveprogram +GenericName[pa]=ਤਕਨੀਕੀ ਟੈਕਸਟ ਐਡੀਟਰ +GenericName[pl]=Zaawansowany edytor tekstu +GenericName[pt]=Editor de Texto Avançado +GenericName[pt_BR]=Editor de textos avançado +GenericName[ro]=Redactor de text avansat +GenericName[ru]=Улучшенный текстовый редактор +GenericName[si]=උසස් පෙළ සකසනය +GenericName[sk]=Pokročilý textový editor +GenericName[sl]=Napreden urejevalnik besedil +GenericName[sr]=Напредни уређивач текста +GenericName[sr@ijekavian]=Напредни уређивач текста +GenericName[sr@ijekavianlatin]=Napredni uređivač teksta +GenericName[sr@latin]=Napredni uređivač teksta +GenericName[sv]=Avancerad texteditor +GenericName[tg]=Таҳриргари матнии беҳтаршуда +GenericName[tr]=Gelişmiş Metin Düzenleyici +GenericName[ug]=ئالىي تېكىست تەھرىرلىگۈچ +GenericName[uk]=Потужний текстовий редактор +GenericName[vi]=Trình biên tập văn bản nâng cao +GenericName[x-test]=xxAdvanced Text Editorxx +GenericName[zh_CN]=高级文本编辑器 +GenericName[zh_TW]=進階文字編輯器 +Name=Kate +Name[ar]=كيت +Name[ast]=Kate +Name[be]=Kate +Name[bg]=Kate +Name[bs]=Kate +Name[ca]=Kate +Name[ca@valencia]=Kate +Name[cs]=Kate +Name[da]=Kate +Name[de]=Kate +Name[el]=Kate +Name[en_GB]=Kate +Name[eo]=Kate +Name[es]=Kate +Name[et]=Kate +Name[eu]=Kate +Name[fi]=Kate +Name[fr]=Kate +Name[ga]=Kate +Name[gl]=Kate +Name[he]=Kate +Name[hu]=Kate +Name[ia]=Kate +Name[it]=Kate +Name[ja]=Kate +Name[kk]=Kate +Name[km]=Kate +Name[ko]=Kate +Name[lt]=Kate +Name[lv]=Kate +Name[mr]=केट +Name[ms]=Kate +Name[nb]=Kate +Name[nds]=Kate +Name[ne]=केट +Name[nl]=Kate +Name[nn]=Kate +Name[pa]=ਕੇਟ +Name[pl]=Kate +Name[pt]=Kate +Name[pt_BR]=Kate +Name[ro]=Kate +Name[ru]=Kate +Name[si]=Kate +Name[sk]=Kate +Name[sl]=Kate +Name[sr]=Кејт +Name[sr@ijekavian]=Кејт +Name[sr@ijekavianlatin]=Kate +Name[sr@latin]=Kate +Name[sv]=Kate +Name[tg]=Кейт +Name[tr]=Kate +Name[ug]=Kate +Name[uk]=Kate +Name[vi]=Kate +Name[wa]=Kate +Name[x-test]=xxKatexx +Name[zh_CN]=Kate +Name[zh_TW]=Kate +MimeType=text/plain; +Exec=kate -b %U +X-KDE-StartupNotify=false +X-KDE-HasTempFileOption=true +Icon=kate +X-DocPath=kate/index.html +Type=Application +Terminal=false +InitialPreference=9 +X-DBUS-ServiceName=org.kde.kate +Categories=Qt;KDE;Utility;TextEditor; diff --git a/desktop/kde/kde5-application/kate/pspec.xml b/desktop/kde/kde5-application/kate/pspec.xml new file mode 100755 index 0000000000..546b329175 --- /dev/null +++ b/desktop/kde/kde5-application/kate/pspec.xml @@ -0,0 +1,75 @@ + + + + + kate + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + app:gui + Advanced Text Editor + Plasma library and runtime components based upon KF5 and Qt5 + http://download.kde.org/stable/applications/15.04.2/src/kate-15.04.2.tar.xz + + qt5-base-devel + plasma-framework-devel + python3 + kdoctools-devel + extra-cmake-modules + + + + + kate + + qt5-base + libgcc + knewstuff + ki18n + kconfig + kguiaddons + kjobwidgets + kitemmodels + kio + kparts + ktexteditor + kwindowsystem + kxmlgui + plasma-framework + kwallet + kservice + kbookmarks + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + ktextwidgets + threadweaver + kconfigwidgets + knotifications + kwidgetsaddons + + + /usr/share + /etc/xdg + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + + + + 2015-06-03 + 15.04.2 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From f8f2bae43e86c3a0f8c5ea98c83ff865ab8ac441 Mon Sep 17 00:00:00 2001 From: groni Date: Mon, 29 Jun 2015 16:26:59 +0200 Subject: [PATCH 020/175] libdmtx rebuild and check --- desktop/kde/addon/libdmtx/actions.py | 24 +++++++++ desktop/kde/addon/libdmtx/pspec.xml | 61 ++++++++++++++++++++++ desktop/kde/addon/libdmtx/translations.xml | 13 +++++ 3 files changed, 98 insertions(+) create mode 100644 desktop/kde/addon/libdmtx/actions.py create mode 100644 desktop/kde/addon/libdmtx/pspec.xml create mode 100644 desktop/kde/addon/libdmtx/translations.xml diff --git a/desktop/kde/addon/libdmtx/actions.py b/desktop/kde/addon/libdmtx/actions.py new file mode 100644 index 0000000000..6630c0c918 --- /dev/null +++ b/desktop/kde/addon/libdmtx/actions.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + #shelltools.system("./autogen.sh") + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def check(): + autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "NEWS", "README", "README.linux") diff --git a/desktop/kde/addon/libdmtx/pspec.xml b/desktop/kde/addon/libdmtx/pspec.xml new file mode 100644 index 0000000000..1a03ee264d --- /dev/null +++ b/desktop/kde/addon/libdmtx/pspec.xml @@ -0,0 +1,61 @@ + + + + + libdmtx + http://www.libdmtx.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2+ + library + A Library for working with Data Matrix 2D bar-codes + libdmtx is an open source software for reading and writing Data Matrix 2D bar-codes on Linux, Unix, OS X, Windows and mobile devices. + http://sourceforge.net/projects/libdmtx/files/libdmtx/0.7.4/libdmtx-0.7.4.tar.gz + + imagemagick-devel + + + + + libdmtx + + imagemagick + + + /usr/lib + /usr/share/doc + + + + + libdmtx-devel + Development files for libdmtx + + libdmtx + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + + 2015-06-05 + 0.7.4 + Rebuild. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2011-08-09 + 0.7.4 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/desktop/kde/addon/libdmtx/translations.xml b/desktop/kde/addon/libdmtx/translations.xml new file mode 100644 index 0000000000..c47877716e --- /dev/null +++ b/desktop/kde/addon/libdmtx/translations.xml @@ -0,0 +1,13 @@ + + + + libdmtx + Data Matrix 2D barkodlarıyla çalışmak için kitaplık + libdmtx, Linux, Unix, OS X, Windows ve mobil işletim sistemlerinde Data Matrix 2D barkodlarını okumak ve yazmak için kullanılan açık kaynaklı bir kitaplıktır. + + + + libdmtx-devel + libdmtx için geliştirme dosyaları + + From 3f884cf2ae19d75e72a409ab3fa47df9c9a9d791 Mon Sep 17 00:00:00 2001 From: groni Date: Mon, 29 Jun 2015 16:31:14 +0200 Subject: [PATCH 021/175] qrencode check --- desktop/kde/addon/qrencode/actions.py | 27 ++++++++ desktop/kde/addon/qrencode/pspec.xml | 70 +++++++++++++++++++++ desktop/kde/addon/qrencode/translations.xml | 13 ++++ 3 files changed, 110 insertions(+) create mode 100644 desktop/kde/addon/qrencode/actions.py create mode 100644 desktop/kde/addon/qrencode/pspec.xml create mode 100644 desktop/kde/addon/qrencode/translations.xml diff --git a/desktop/kde/addon/qrencode/actions.py b/desktop/kde/addon/qrencode/actions.py new file mode 100644 index 0000000000..f4557c95ee --- /dev/null +++ b/desktop/kde/addon/qrencode/actions.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vif") + shelltools.system("./autogen.sh") + + autotools.configure("--with-tests") + +def build(): + autotools.make() + +def check(): + shelltools.cd("tests") + shelltools.system("./test_all.sh") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("COPYING", "NEWS", "README") diff --git a/desktop/kde/addon/qrencode/pspec.xml b/desktop/kde/addon/qrencode/pspec.xml new file mode 100644 index 0000000000..e49e23820f --- /dev/null +++ b/desktop/kde/addon/qrencode/pspec.xml @@ -0,0 +1,70 @@ + + + + + qrencode + http://fukuchi.org/works/qrencode/index.en.html + + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + LGPLv2.1 + library + A C library for encoding data in a QR code symbol + qrencode is a C library for encoding data in a QR Code symbol, a kind of 2D symbology that can be scanned by handy terminals such as a mobile phone with CCD. The capacity of QR Code is up to 7000 digits or 4000 characters, and is highly robust. + http://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz + + libsdl-devel + m4 + + + + + qrencode + + libpng + + + /usr/lib + /usr/bin/qrencode + /usr/share/man/man1 + /usr/share/doc + + + + + qrencode-devel + Development files for qrencode + + qrencode + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2015-02-22 + 3.4.4 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-22 + 3.3.1 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2012-04-05 + 3.3.1 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + diff --git a/desktop/kde/addon/qrencode/translations.xml b/desktop/kde/addon/qrencode/translations.xml new file mode 100644 index 0000000000..031bf56a9f --- /dev/null +++ b/desktop/kde/addon/qrencode/translations.xml @@ -0,0 +1,13 @@ + + + + qrencode + QR kod sembolüne veri gömmek için bir kitaplık + qrencode, cep telefonları gibi mobil cihazlar tarafından kolaylıkla taranabilen, 2 boyutlu bir sembol olan QR kod içerisinde veri gömmek için kullanılan bir kitaplıktır. + + + + qrencode-devel + qrencode için geliştirme dosyaları + + From 0a65672b02d690441cb13e1f3260183157054627 Mon Sep 17 00:00:00 2001 From: groni Date: Mon, 29 Jun 2015 16:37:29 +0200 Subject: [PATCH 022/175] prison-qt5 check --- desktop/kde/addon/prison-qt5/1actions.py | 29 ++++++++++ desktop/kde/addon/prison-qt5/actions.py | 19 +++++++ desktop/kde/addon/prison-qt5/pspec.xml | 70 ++++++++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100755 desktop/kde/addon/prison-qt5/1actions.py create mode 100644 desktop/kde/addon/prison-qt5/actions.py create mode 100755 desktop/kde/addon/prison-qt5/pspec.xml diff --git a/desktop/kde/addon/prison-qt5/1actions.py b/desktop/kde/addon/prison-qt5/1actions.py new file mode 100755 index 0000000000..4da5561457 --- /dev/null +++ b/desktop/kde/addon/prison-qt5/1actions.py @@ -0,0 +1,29 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import cmaketools +from pisi.actionsapi import pisitools +from pisi.actionsapi import autotools +from pisi.actionsapi import get + +def setup(): + + cmaketools.configure("-DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SKIP_RPATH=ON \ + -DLIB_INSTALL_DIR=lib \ + -DSYSCONF_INSTALL_DIR=/etc \ + -DQML_INSTALL_DIR=/usr/lib/qt5/qml \ + -DPLUGIN_INSTALL_DIR=/usr/lib/qt5/plugins \ + -DQT5_BUILD=ON") + +def build(): + cmaketools.make() + +def install(): + cmaketools.rawInstall("DESTDIR=%s" %get.installDIR()) + + pisitools.dodoc("LICENSE") diff --git a/desktop/kde/addon/prison-qt5/actions.py b/desktop/kde/addon/prison-qt5/actions.py new file mode 100644 index 0000000000..a4d71bd755 --- /dev/null +++ b/desktop/kde/addon/prison-qt5/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("LICENSE") diff --git a/desktop/kde/addon/prison-qt5/pspec.xml b/desktop/kde/addon/prison-qt5/pspec.xml new file mode 100755 index 0000000000..fe1786c510 --- /dev/null +++ b/desktop/kde/addon/prison-qt5/pspec.xml @@ -0,0 +1,70 @@ + + + + + prison-qt5 + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + MIT + library + A barcode API to produce QRCode barcodes and DataMatrix barcode + A barcode API to produce QRCode barcodes and DataMatrix barcode. + http://download.kde.org/stable/prison/1.1/src/prison-1.1.0.tar.xz + + python3 + mesa-devel + + + + + prison-qt5 + + qt + libgcc + mesa + libdmtx + qrencode + + + /usr/lib + /usr/share/doc + + + prison + + + prison + + + + + prison-qt5-devel + Development files for libepoxy + + prison-qt5 + + + /usr/include + /usr/lib/pkgconfig + + + prison-devel + + + prison-devel + + + + + + 2015-06-29 + 1.1.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From ca5a0e28d3888b9e787305ca4ed45d4afb94a7a4 Mon Sep 17 00:00:00 2001 From: groni Date: Mon, 29 Jun 2015 16:38:17 +0200 Subject: [PATCH 023/175] prison-qt5 check --- desktop/kde/addon/prison-qt5/1actions.py | 29 ------------------------ 1 file changed, 29 deletions(-) delete mode 100755 desktop/kde/addon/prison-qt5/1actions.py diff --git a/desktop/kde/addon/prison-qt5/1actions.py b/desktop/kde/addon/prison-qt5/1actions.py deleted file mode 100755 index 4da5561457..0000000000 --- a/desktop/kde/addon/prison-qt5/1actions.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# -# Licensed under the GNU General Public License, version 3. -# See the file http://www.gnu.org/licenses/gpl.txt - -from pisi.actionsapi import cmaketools -from pisi.actionsapi import pisitools -from pisi.actionsapi import autotools -from pisi.actionsapi import get - -def setup(): - - cmaketools.configure("-DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_SKIP_RPATH=ON \ - -DLIB_INSTALL_DIR=lib \ - -DSYSCONF_INSTALL_DIR=/etc \ - -DQML_INSTALL_DIR=/usr/lib/qt5/qml \ - -DPLUGIN_INSTALL_DIR=/usr/lib/qt5/plugins \ - -DQT5_BUILD=ON") - -def build(): - cmaketools.make() - -def install(): - cmaketools.rawInstall("DESTDIR=%s" %get.installDIR()) - - pisitools.dodoc("LICENSE") From fac34072c60d129d522cce3b9caae904f6985714 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Tue, 30 Jun 2015 15:44:09 +0300 Subject: [PATCH 024/175] mesa fix deps. --- x11/library/mesa/pspec.xml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/x11/library/mesa/pspec.xml b/x11/library/mesa/pspec.xml index 2159f2cd9b..ef9d67419b 100755 --- a/x11/library/mesa/pspec.xml +++ b/x11/library/mesa/pspec.xml @@ -22,6 +22,8 @@ libdrm-devel libXext-devel wayland-devel + wayland-server + wayland-client libvdpau-devel libXfixes-devel libtalloc-devel @@ -41,6 +43,9 @@ llvm-libs llvm-clang + libX11 + libgcc + libxcb expat libdrm libXext @@ -54,7 +59,6 @@ libdrm-nouveau wayland-client wayland-server - libclc libxshmfence @@ -114,8 +118,12 @@ libdrm-intel-32bit libdrm-radeon-32bit libdrm-nouveau-32bit + libxshmfence-32bit + glibc-32bit + libgcc + libcxb-32bit expat-32bit libX11-32bit libdrm-32bit @@ -131,6 +139,7 @@ libxshmfence-32bit libdrm-radeon-32bit libdrm-nouveau-32bit + wayland-32bit mesa From 8cda9d8754bc6bc36dac207ff22cbb2c5303ee0f Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 12:59:13 +0200 Subject: [PATCH 025/175] kfilemetadata rebuild and check --- .../kde/kde5-plasma/kfilemetadata/actions.py | 24 +++++++ .../kde/kde5-plasma/kfilemetadata/pspec.xml | 71 +++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100755 desktop/kde/kde5-plasma/kfilemetadata/actions.py create mode 100755 desktop/kde/kde5-plasma/kfilemetadata/pspec.xml diff --git a/desktop/kde/kde5-plasma/kfilemetadata/actions.py b/desktop/kde/kde5-plasma/kfilemetadata/actions.py new file mode 100755 index 0000000000..d4e8d7f374 --- /dev/null +++ b/desktop/kde/kde5-plasma/kfilemetadata/actions.py @@ -0,0 +1,24 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules \ + -DLIB_INSTALL_DIR=lib \ + -DPYTHON_EXECUTABLE=/usr/bin/python \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("COPYING-CMAKE-SCRIPTS", "COPYING.LGPL-3") + diff --git a/desktop/kde/kde5-plasma/kfilemetadata/pspec.xml b/desktop/kde/kde5-plasma/kfilemetadata/pspec.xml new file mode 100755 index 0000000000..14b6375e74 --- /dev/null +++ b/desktop/kde/kde5-plasma/kfilemetadata/pspec.xml @@ -0,0 +1,71 @@ + + + + + kfilemetadata + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 library for extracting meta data from files. + KDE library for extracting meta data from files. + http://download.kde.org/stable/plasma/5.3.1/kfilemetadata-5.9.1.tar.xz + + qt5-base-devel + python + extra-cmake-modules + + + + + kfilemetadata + + qt5-base + ebook-tools + libgcc + exiv2-libs + taglib + ffmpeg + taglib + poppler-qt5 + karchive + ki18n + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + kfilemetadata-devel + Development files for kfilemetadata + + qt5-base-devel + kfilemetadata + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-06-03 + 5.9.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From f97a03b4f8fb1a3198c7a3792d8e526295383315 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 14:12:30 +0200 Subject: [PATCH 026/175] bluez-qt version bump and check --- desktop/kde/plasma/bluez-qt/actions.py | 20 ++++++++ desktop/kde/plasma/bluez-qt/pspec.xml | 65 ++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 desktop/kde/plasma/bluez-qt/actions.py create mode 100755 desktop/kde/plasma/bluez-qt/pspec.xml diff --git a/desktop/kde/plasma/bluez-qt/actions.py b/desktop/kde/plasma/bluez-qt/actions.py new file mode 100644 index 0000000000..8959ab078b --- /dev/null +++ b/desktop/kde/plasma/bluez-qt/actions.py @@ -0,0 +1,20 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import shelltools +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure("-DUDEV_RULES_INSTALL_DIR=/usr/lib/udev/rules.d") + +def build(): + kde5.make() + +def install(): + kde5.install() + + #pisitools.dodoc("README.md", "COPYING.LIB") diff --git a/desktop/kde/plasma/bluez-qt/pspec.xml b/desktop/kde/plasma/bluez-qt/pspec.xml new file mode 100755 index 0000000000..0601c3afe3 --- /dev/null +++ b/desktop/kde/plasma/bluez-qt/pspec.xml @@ -0,0 +1,65 @@ + + + + + bluez-qt + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + GPLv2 + library + Qt wrapper for KDE 5 Bluez DBus API + Qt wrapper for KDE 5 DBus API. + http://download.kde.org/stable/plasma/5.3.2/bluez-qt-5.3.2.tar.xz + + qt5-base-devel + extra-cmake-modules + + + + + bluez-qt + + qt5-base + qt5-declarative + libgcc + + + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + bluez-qt-devel + Development files for bluez-qt + + qt5-base-devel + bluez-qt + + + /usr/include + /usr/lib/cmake + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 1f794e269b91f212f0c28e5b54e70e30141bb84b Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 14:29:20 +0200 Subject: [PATCH 027/175] bluedevil version bump and check --- desktop/kde/plasma/bluedevil/actions.py | 19 +++++++ desktop/kde/plasma/bluedevil/pspec.xml | 70 +++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 desktop/kde/plasma/bluedevil/actions.py create mode 100755 desktop/kde/plasma/bluedevil/pspec.xml diff --git a/desktop/kde/plasma/bluedevil/actions.py b/desktop/kde/plasma/bluedevil/actions.py new file mode 100644 index 0000000000..445fd55022 --- /dev/null +++ b/desktop/kde/plasma/bluedevil/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + #pisitools.dodoc("README.md", "COPYING.LIB") diff --git a/desktop/kde/plasma/bluedevil/pspec.xml b/desktop/kde/plasma/bluedevil/pspec.xml new file mode 100755 index 0000000000..37410fce4f --- /dev/null +++ b/desktop/kde/plasma/bluedevil/pspec.xml @@ -0,0 +1,70 @@ + + + + + bluedevil + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + KDE 5 Bluetooth Stack + Integrate the Bluetooth technology within KDE workspace and applications + http://download.kde.org/stable/plasma/5.3.2/bluedevil-5.3.2.tar.xz + + qt5-base-devel + kded-devel + plasma-framework-devel + extra-cmake-modules + + + + + bluedevil + + qt5-base + libgcc + bluez-qt + kio + ki18n + kconfig + qt5-declarative + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + kconfigwidgets + knotifications + kwidgetsaddons + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From a8e936712876452a2e303c242504b61d74013fe4 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 14:44:19 +0200 Subject: [PATCH 028/175] kfilemetadata version bump --- desktop/kde/plasma/kfilemetadata/actions.py | 24 +++++++ desktop/kde/plasma/kfilemetadata/pspec.xml | 78 +++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100755 desktop/kde/plasma/kfilemetadata/actions.py create mode 100755 desktop/kde/plasma/kfilemetadata/pspec.xml diff --git a/desktop/kde/plasma/kfilemetadata/actions.py b/desktop/kde/plasma/kfilemetadata/actions.py new file mode 100755 index 0000000000..d4e8d7f374 --- /dev/null +++ b/desktop/kde/plasma/kfilemetadata/actions.py @@ -0,0 +1,24 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules \ + -DLIB_INSTALL_DIR=lib \ + -DPYTHON_EXECUTABLE=/usr/bin/python \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("COPYING-CMAKE-SCRIPTS", "COPYING.LGPL-3") + diff --git a/desktop/kde/plasma/kfilemetadata/pspec.xml b/desktop/kde/plasma/kfilemetadata/pspec.xml new file mode 100755 index 0000000000..58611ffc49 --- /dev/null +++ b/desktop/kde/plasma/kfilemetadata/pspec.xml @@ -0,0 +1,78 @@ + + + + + kfilemetadata + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 library for extracting meta data from files. + KDE library for extracting meta data from files. + http://download.kde.org/stable/plasma/5.3.2/kfilemetadata-5.9.2.tar.xz + + qt5-base-devel + python + extra-cmake-modules + + + + + kfilemetadata + + qt5-base + ebook-tools + libgcc + exiv2-libs + taglib + ffmpeg + taglib + poppler-qt5 + karchive + ki18n + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + kfilemetadata-devel + Development files for kfilemetadata + + qt5-base-devel + kfilemetadata + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-07-01 + 5.9.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-03 + 5.9.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 984f5d23edec068c0505dbcd0089c5d1ece1c4ee Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 14:59:40 +0200 Subject: [PATCH 029/175] baloo version bump and check --- desktop/kde/plasma/baloo/actions.py | 19 ++++++ desktop/kde/plasma/baloo/pspec.xml | 99 +++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 desktop/kde/plasma/baloo/actions.py create mode 100755 desktop/kde/plasma/baloo/pspec.xml diff --git a/desktop/kde/plasma/baloo/actions.py b/desktop/kde/plasma/baloo/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/baloo/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/baloo/pspec.xml b/desktop/kde/plasma/baloo/pspec.xml new file mode 100755 index 0000000000..5301eb9950 --- /dev/null +++ b/desktop/kde/plasma/baloo/pspec.xml @@ -0,0 +1,99 @@ + + + + + baloo + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + Framework for searching and managing metadata + Baloo is a framework for searching and managing metada + http://download.kde.org/stable/plasma/5.3.2/baloo-5.9.2.tar.xz + + qt5-base-devel + kdoctools-devel + python3 + extra-cmake-modules + + + + + baloo + + qt5-base + qt5-declarative + xapian-core + kcoreaddons + kdbusaddons + kauth + libgcc + kcmutils + kconfig + kcrash + kdelibs4-support + ki18n + kidletime + kio + krunner + solid + kf5-kfilemetadata + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + baloo + + + baloo + + + + + baloo-devel + Development files for baloo-widgets + + qt5-base-devel + baloo + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + baloo-devel + + + baloo-devel + + + + + + 2015-07-01 + 5.9.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.9.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From ff368f2b540987b8b69a25073d22e6a8339af089 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 15:20:03 +0200 Subject: [PATCH 030/175] kdecorations version bump and check --- desktop/kde/plasma/kdecorations/actions.py | 19 +++++ desktop/kde/plasma/kdecorations/pspec.xml | 74 +++++++++++++++++++ .../kde/plasma/kdecorations/translations.xml | 8 ++ 3 files changed, 101 insertions(+) create mode 100644 desktop/kde/plasma/kdecorations/actions.py create mode 100644 desktop/kde/plasma/kdecorations/pspec.xml create mode 100644 desktop/kde/plasma/kdecorations/translations.xml diff --git a/desktop/kde/plasma/kdecorations/actions.py b/desktop/kde/plasma/kdecorations/actions.py new file mode 100644 index 0000000000..7ad3db044b --- /dev/null +++ b/desktop/kde/plasma/kdecorations/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README.md") diff --git a/desktop/kde/plasma/kdecorations/pspec.xml b/desktop/kde/plasma/kdecorations/pspec.xml new file mode 100644 index 0000000000..85452c9ae9 --- /dev/null +++ b/desktop/kde/plasma/kdecorations/pspec.xml @@ -0,0 +1,74 @@ + + + + + kdecorations + https://projects.kde.org/projects/kde/workspace/kdecoration + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv3 + library + Plugin based library to create window decorations + Plugin based library to create window decorations + http://download.kde.org/stable/plasma/5.3.2/kdecoration-5.3.2.tar.xz + + qt5-base-devel + extra-cmake-modules + + + + + kdecorations + + qt5-base + libgcc + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kdecorations-devel + Development files for kdecorations + + qt5-base-devel + kdecorations + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + kde-workspace-devel + + + kde-workspace-devel + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + diff --git a/desktop/kde/plasma/kdecorations/translations.xml b/desktop/kde/plasma/kdecorations/translations.xml new file mode 100644 index 0000000000..7ceb2c83f3 --- /dev/null +++ b/desktop/kde/plasma/kdecorations/translations.xml @@ -0,0 +1,8 @@ + + + + kde5-kdecorations + Plugin based library to create window decorations + Plugin based library to create window decorations + + From 93bf29dfe8e90b7b61024a2691a718351569fcb1 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 15:30:08 +0200 Subject: [PATCH 031/175] breeze version bump and check --- desktop/kde/plasma/breeze/actions.py | 19 +++++ desktop/kde/plasma/breeze/pspec.xml | 112 +++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 desktop/kde/plasma/breeze/actions.py create mode 100755 desktop/kde/plasma/breeze/pspec.xml diff --git a/desktop/kde/plasma/breeze/actions.py b/desktop/kde/plasma/breeze/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/breeze/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/breeze/pspec.xml b/desktop/kde/plasma/breeze/pspec.xml new file mode 100755 index 0000000000..c163ad6c79 --- /dev/null +++ b/desktop/kde/plasma/breeze/pspec.xml @@ -0,0 +1,112 @@ + + + + + breeze + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 Plasma artwork + Artwork, styles and assets for the Breeze visual style for the Plasma Desktop + http://download.kde.org/stable/plasma/5.3.2/breeze-5.3.2.tar.xz + + qt5-base-devel + libxcb-devel + libgcc + qt5-x11extras-devel + frameworkintegration-devel + kdecorations-devel + kcoreaddons-devel + ki18n-devel + kwindowsystem-devel + kconfig-devel + kguiaddons-devel + kcoreaddons-devel + kconfigwidgets-devel + kwidgetsaddons-devel + extra-cmake-modules + + + + + breeze-style + + qt5-base + libgcc + kconfig + kguiaddons + kcoreaddons + kconfigwidgets + kwidgetsaddons + qt5-x11extras + libxcb + frameworkintegration + kcmutils + kcoreaddons + ki18n + kwindowsystem + kdecorations + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + breeze-icons + + breeze-style + + + /usr/share/icons + + + + + breeze-cursors + + breeze-style + + + /usr/share/icons/breeze_cursors + + + + + breeze-wallpapers + + qt5-base + + + /usr/share/wallpapers + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From a99186eb8b1ff9dd6d6178707d89c41f3cbce076 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 15:40:03 +0200 Subject: [PATCH 032/175] kde-gtk-config version bump and check --- desktop/kde/plasma/kde-gtk-config/actions.py | 18 ++++ desktop/kde/plasma/kde-gtk-config/pspec.xml | 90 ++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 desktop/kde/plasma/kde-gtk-config/actions.py create mode 100755 desktop/kde/plasma/kde-gtk-config/pspec.xml diff --git a/desktop/kde/plasma/kde-gtk-config/actions.py b/desktop/kde/plasma/kde-gtk-config/actions.py new file mode 100644 index 0000000000..ccb7abe2b6 --- /dev/null +++ b/desktop/kde/plasma/kde-gtk-config/actions.py @@ -0,0 +1,18 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + diff --git a/desktop/kde/plasma/kde-gtk-config/pspec.xml b/desktop/kde/plasma/kde-gtk-config/pspec.xml new file mode 100755 index 0000000000..40490998a7 --- /dev/null +++ b/desktop/kde/plasma/kde-gtk-config/pspec.xml @@ -0,0 +1,90 @@ + + + + + kde-gtk-config + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + GTK2 and GTK3 Configurator for KDE + Configuration dialog to adapt GTK+ applications appearance to your taste under KDE. + http://download.kde.org/stable/plasma/5.3.2/kde-gtk-config-5.3.2.tar.xz + + qt5-base-devel + kio-devel + libgcc + glib2-devel + ki18n-devel + kcoreaddons-devel + kiconthemes-devel + kwidgetsaddons-devel + kcmutils-devel + karchive-devel + kauth-devel + kconfigwidgets-devel + knewstuff-devel + gtk2-devel + gtk3-devel + extra-cmake-modules + + + + + kde-gtk-config + + qt5-base + libgcc + glib2 + kio + ki18n + kcoreaddons + kiconthemes + kwidgetsaddons + kcmutils + karchive + kauth + knewstuff + kconfigwidgets + gtk2 + gtk3 + + + /usr/share + /etc/xdg/cgc* + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-runtime + + + kde-runtime + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From ce1d33f7078c7f45836f8b3cdde5e8c9e6ed70ae Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 16:16:56 +0200 Subject: [PATCH 033/175] kde-cli-tools version bump and check --- desktop/kde/plasma/kde-cli-tools/actions.py | 18 ++++ .../kde/plasma/kde-cli-tools/comar/package.py | 7 ++ desktop/kde/plasma/kde-cli-tools/pspec.xml | 82 +++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 desktop/kde/plasma/kde-cli-tools/actions.py create mode 100644 desktop/kde/plasma/kde-cli-tools/comar/package.py create mode 100755 desktop/kde/plasma/kde-cli-tools/pspec.xml diff --git a/desktop/kde/plasma/kde-cli-tools/actions.py b/desktop/kde/plasma/kde-cli-tools/actions.py new file mode 100644 index 0000000000..ccb7abe2b6 --- /dev/null +++ b/desktop/kde/plasma/kde-cli-tools/actions.py @@ -0,0 +1,18 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + diff --git a/desktop/kde/plasma/kde-cli-tools/comar/package.py b/desktop/kde/plasma/kde-cli-tools/comar/package.py new file mode 100644 index 0000000000..296728595f --- /dev/null +++ b/desktop/kde/plasma/kde-cli-tools/comar/package.py @@ -0,0 +1,7 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import os + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + os.system("ln -s /usr/lib/kf5/kdesu /usr/bin/kdesu") diff --git a/desktop/kde/plasma/kde-cli-tools/pspec.xml b/desktop/kde/plasma/kde-cli-tools/pspec.xml new file mode 100755 index 0000000000..f328ddf993 --- /dev/null +++ b/desktop/kde/plasma/kde-cli-tools/pspec.xml @@ -0,0 +1,82 @@ + + + + + kde-cli-tools + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Additional client tools for KDE applications + Tools based on KDE Frameworks 5 to better interact with the system + http://download.kde.org/stable/plasma/5.3.2/kde-cli-tools-5.3.2.tar.xz + + qt5-base-devel + libX11-devel + libgcc + kdoctools-devel + python3 + extra-cmake-modules + + + + + kde-cli-tools + + qt5-base + qt5-svg + libX11 + libgcc + kio + ki18n + kservice + qt5-x11extras + kcompletion + kcoreaddons + kiconthemes + kwindowsystem + kconfigwidgets + kwidgetsaddons + kcmutils + kconfig + kdelibs4-support + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + System.Package + + + kdesu + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From ac001635006e4a0016f39c1ba6701f14b330141e Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 16:40:30 +0200 Subject: [PATCH 034/175] kdeplasma-addons version bump and check --- .../kde/plasma/kdeplasma-addons/actions.py | 19 ++++ desktop/kde/plasma/kdeplasma-addons/pspec.xml | 91 +++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 desktop/kde/plasma/kdeplasma-addons/actions.py create mode 100755 desktop/kde/plasma/kdeplasma-addons/pspec.xml diff --git a/desktop/kde/plasma/kdeplasma-addons/actions.py b/desktop/kde/plasma/kdeplasma-addons/actions.py new file mode 100644 index 0000000000..ce3744176e --- /dev/null +++ b/desktop/kde/plasma/kdeplasma-addons/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + #pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/kdeplasma-addons/pspec.xml b/desktop/kde/plasma/kdeplasma-addons/pspec.xml new file mode 100755 index 0000000000..2014c79183 --- /dev/null +++ b/desktop/kde/plasma/kdeplasma-addons/pspec.xml @@ -0,0 +1,91 @@ + + + + + kdeplasma-addons + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Additional client tools for KDE applications + Additional client tools for KDE applications + http://download.kde.org/stable/plasma/5.3.2/kdeplasma-addons-5.3.2.tar.xz + + qt5-base-devel + libgcc + libxcb-devel + glib2-devel + scim-devel + ibus-devel + kdoctools-devel + kdelibs4-support-devel + extra-cmake-modules + + + + + kdeplasma-addons + + qt5-base + plasma-framework + libgcc + libxcb + glib2 + knewstuff + krunner + kio + ki18n + kross + sonnet + kconfig + kxmlgui + karchive + kpackage + kservice + qt5-x11extras + qt5-declarative + kcompletion + kcoreaddons + kwindowsystem + kconfigwidgets + knotifications + kwidgetsaddons + kunitconversion + kdelibs4-support + ibus + scim-libs + xcb-util-keysyms + + + /usr/share + /etc/xdg + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From d334d0b19060a38b212b264aac4cc926585b0cc3 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 17:10:26 +0200 Subject: [PATCH 035/175] kio-extras version bump and check --- desktop/kde/plasma/kio-extras/actions.py | 19 ++++ desktop/kde/plasma/kio-extras/pspec.xml | 111 +++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 desktop/kde/plasma/kio-extras/actions.py create mode 100755 desktop/kde/plasma/kio-extras/pspec.xml diff --git a/desktop/kde/plasma/kio-extras/actions.py b/desktop/kde/plasma/kio-extras/actions.py new file mode 100644 index 0000000000..1b62c3b92f --- /dev/null +++ b/desktop/kde/plasma/kio-extras/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("DESIGN", "DEBUG.howto") diff --git a/desktop/kde/plasma/kio-extras/pspec.xml b/desktop/kde/plasma/kio-extras/pspec.xml new file mode 100755 index 0000000000..665c8a0947 --- /dev/null +++ b/desktop/kde/plasma/kio-extras/pspec.xml @@ -0,0 +1,111 @@ + + + + + kio-extras + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Additional KIO-slaves for KDE5 applications + Additional KIO-slaves for KDE5 applications + http://download.kde.org/stable/plasma/5.3.2/kio-extras-5.3.2.tar.xz + + qt5-base-devel + python3 + libgcc + gettext + shared-mime-info + libmtp-devel + shared-mime-info + openexr-devel + openslp-devel + karchive-devel + kconfig-devel + kcoreaddons-devel + kdbusaddons-devel + kdelibs4-support-devel + kdnssd-devel + kdoctools-devel + khtml-devel + ki18n-devel + kiconthemes-devel + kio-devel + solid-devel + libjpeg-turbo-devel + libssh-devel + openslp-devel + qt5-phonon-devel + samba-devel + exiv2-devel + extra-cmake-modules + + + + + kio-extras + + qt5-base + qt5-svg + libgcc + libmtp + kpty + kparts + kcodecs + kxmlgui + kservice + kbookmarks + kguiaddons + kconfigwidgets + openexr + karchive + kconfig + kcoreaddons + kdbusaddons + kdelibs4-support + kdnssd + kdoctools + khtml + ki18n + kiconthemes + kio + solid + libjpeg-turbo + libssh + openslp + qt5-phonon + samba + exiv2-libs + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-14 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From e6759340074eab266ee9d5f38086e0cc6ea23abd Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 17:22:27 +0200 Subject: [PATCH 036/175] khelpcenter version bump and check --- desktop/kde/plasma/khelpcenter/actions.py | 19 ++++++ desktop/kde/plasma/khelpcenter/pspec.xml | 79 +++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 desktop/kde/plasma/khelpcenter/actions.py create mode 100755 desktop/kde/plasma/khelpcenter/pspec.xml diff --git a/desktop/kde/plasma/khelpcenter/actions.py b/desktop/kde/plasma/khelpcenter/actions.py new file mode 100644 index 0000000000..0b00c0481d --- /dev/null +++ b/desktop/kde/plasma/khelpcenter/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING", "DESIGN") diff --git a/desktop/kde/plasma/khelpcenter/pspec.xml b/desktop/kde/plasma/khelpcenter/pspec.xml new file mode 100755 index 0000000000..d10fd3fd1a --- /dev/null +++ b/desktop/kde/plasma/khelpcenter/pspec.xml @@ -0,0 +1,79 @@ + + + + + khelpcenter + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE Help Center + KDE help center utility to read help documentation about various KDE applications. + http://download.kde.org/stable/plasma/5.3.2/khelpcenter-5.3.2.tar.xz + + qt5-base-devel + python3 + qt5-libdbusmenu-devel + kinit-devel + libgcc + kcmutils-devel + khtml-devel + kdelibs4-support-devel + extra-cmake-modules + + + + + khelpcenter + + qt5-base + kio + libgcc + khtml + ki18n + kparts + kcodecs + kconfig + kxmlgui + kcmutils + kservice + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + kwindowsystem + kconfigwidgets + kwidgetsaddons + kdelibs4-support + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 9a25647370e663175fd745bc36eaf790f57c0084 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 17:35:55 +0200 Subject: [PATCH 037/175] kwayland version bump and check --- desktop/kde/plasma/kwayland/actions.py | 19 ++++++ desktop/kde/plasma/kwayland/pspec.xml | 65 ++++++++++++++++++++ desktop/kde/plasma/kwayland/translations.xml | 8 +++ 3 files changed, 92 insertions(+) create mode 100644 desktop/kde/plasma/kwayland/actions.py create mode 100644 desktop/kde/plasma/kwayland/pspec.xml create mode 100644 desktop/kde/plasma/kwayland/translations.xml diff --git a/desktop/kde/plasma/kwayland/actions.py b/desktop/kde/plasma/kwayland/actions.py new file mode 100644 index 0000000000..389685f7a8 --- /dev/null +++ b/desktop/kde/plasma/kwayland/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING.LIB") diff --git a/desktop/kde/plasma/kwayland/pspec.xml b/desktop/kde/plasma/kwayland/pspec.xml new file mode 100644 index 0000000000..bd37e89e0a --- /dev/null +++ b/desktop/kde/plasma/kwayland/pspec.xml @@ -0,0 +1,65 @@ + + + + + kwayland + http://www.kde.org + + Stefan Gronewold(groni) + groni@pisilinux.org + + LGPLv3 + library + Qt-style Client and Server library wrapper for the Wayland libraries + Qt-style Client and Server library wrapper for the Wayland libraries + http://download.kde.org/stable/plasma/5.3.2/kwayland-5.3.2.tar.xz + + qt5-base-devel + libgcc + extra-cmake-modules + wayland-devel + + + + + kwayland + + qt5-base + libgcc + wayland-client + wayland-server + + + /usr/lib + /usr/share/doc + + + + kwayland-devel + + qt5-base-devel + kwayland + + + /usr/lib/cmake + /usr/include + /usr/lib/pkgconfig + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + diff --git a/desktop/kde/plasma/kwayland/translations.xml b/desktop/kde/plasma/kwayland/translations.xml new file mode 100644 index 0000000000..949fb38c63 --- /dev/null +++ b/desktop/kde/plasma/kwayland/translations.xml @@ -0,0 +1,8 @@ + + + + kde5-kwayland + Qt-style Client and Server library wrapper for the Wayland libraries + Qt-style Client and Server library wrapper for the Wayland libraries + + From 1b86cac3e5ae1317bca86c293f799590bf63723e Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 18:02:56 +0200 Subject: [PATCH 038/175] kinfocenter version bump and check --- desktop/kde/plasma/kinfocenter/actions.py | 19 +++ .../kinfocenter/files/kcm-about-distrorc | 4 + .../files/pisilinux-kinfocenter.diff | 91 ++++++++++++++ desktop/kde/plasma/kinfocenter/pspec.xml | 114 ++++++++++++++++++ 4 files changed, 228 insertions(+) create mode 100644 desktop/kde/plasma/kinfocenter/actions.py create mode 100644 desktop/kde/plasma/kinfocenter/files/kcm-about-distrorc create mode 100644 desktop/kde/plasma/kinfocenter/files/pisilinux-kinfocenter.diff create mode 100755 desktop/kde/plasma/kinfocenter/pspec.xml diff --git a/desktop/kde/plasma/kinfocenter/actions.py b/desktop/kde/plasma/kinfocenter/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/kinfocenter/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/kinfocenter/files/kcm-about-distrorc b/desktop/kde/plasma/kinfocenter/files/kcm-about-distrorc new file mode 100644 index 0000000000..978beb6866 --- /dev/null +++ b/desktop/kde/plasma/kinfocenter/files/kcm-about-distrorc @@ -0,0 +1,4 @@ +[General] +2 Name=Pisi Linux +3 LogoPath=/usr/share/apps/about-distro/pisilinux.png +4 Website=http://www.pisilinux.org/ diff --git a/desktop/kde/plasma/kinfocenter/files/pisilinux-kinfocenter.diff b/desktop/kde/plasma/kinfocenter/files/pisilinux-kinfocenter.diff new file mode 100644 index 0000000000..97531dd6ed --- /dev/null +++ b/desktop/kde/plasma/kinfocenter/files/pisilinux-kinfocenter.diff @@ -0,0 +1,91 @@ +diff --git a/Modules/infosummary/infosum.cpp b/Modules/infosummary/infosum.cpp +index e58beb0..02f000c 100644 +--- a/Modules/infosummary/infosum.cpp ++++ b/Modules/infosummary/infosum.cpp +@@ -61,12 +61,12 @@ void InfoSumPlugin::createDisplay() + void InfoSumPlugin::createOsBox() + { + DefaultBoxWidget *osWidget = new DefaultBoxWidget(); +- osWidget->setIcon(QIcon::fromTheme(QStringLiteral("kde"))); ++ osWidget->setIcon(QIcon::fromTheme(QStringLiteral("PisiLinux"))); + osWidget->setLabelTitles(i18n("OS Version"),i18n("KDE Plasma Version"), i18n("Hostname")); + + OsDepInfo *osInfo = new OsDepInfo(); + +- osWidget->setLabelOne(osInfo->osVersion()); ++ osWidget->setLabelOne(osInfo->osVersion()+'\n'+osInfo->distroName()); + osWidget->setLabelTwo(QString(PLASMA_VERSION_STRING)); + osWidget->setLabelThree(osInfo->hostName()); + osWidget->setWhatsThis(i18nc("OS whats this","This shows information about your Operating System")); +diff --git a/Modules/infosummary/osdepinfo.cpp b/Modules/infosummary/osdepinfo.cpp +index 34afecc..8b7043f 100644 +--- a/Modules/infosummary/osdepinfo.cpp ++++ b/Modules/infosummary/osdepinfo.cpp +@@ -37,6 +37,11 @@ const QString OsDepInfo::osVersion() + return m_osVersion; + } + ++const QString OsDepInfo::distroName() ++{ ++ return m_distroName; ++} ++ + #if defined(Q_OS_UNIX) + #include "osdepinfo_unix.cpp" + #else +@@ -50,6 +55,7 @@ void OsDepInfo::setDepInfo() + { + m_osVersion.clear(); + m_hostName.clear(); ++ m_distroName.clear(); + } + + #endif // Q_OS_UNIX +diff --git a/Modules/infosummary/osdepinfo.h b/Modules/infosummary/osdepinfo.h +index 3452e8b..564a86c 100644 +--- a/Modules/infosummary/osdepinfo.h ++++ b/Modules/infosummary/osdepinfo.h +@@ -32,12 +32,14 @@ class OsDepInfo + + const QString hostName(); + const QString osVersion(); ++ const QString distroName(); + + private: + void setDepInfo(); + + QString m_hostName; + QString m_osVersion; ++ QString m_distroName; + }; + + #endif //OSDEPINFO +diff --git a/Modules/infosummary/osdepinfo_unix.cpp b/Modules/infosummary/osdepinfo_unix.cpp +index d237337..3971945 100644 +--- a/Modules/infosummary/osdepinfo_unix.cpp ++++ b/Modules/infosummary/osdepinfo_unix.cpp +@@ -23,6 +23,18 @@ + #include "osdepinfo.h" + + #include ++#include ++#include ++#include ++ ++QString getDistro() ++{ ++ KConfig osRelease( "/etc/os-release", KConfig::SimpleConfig ); ++ KConfigGroup osR( &osRelease, "" ); ++ QString pretty = osR.readEntry("PRETTY_NAME"); ++ pretty.remove('"'); ++ return(pretty); ++} + + void OsDepInfo::setDepInfo() + { +@@ -31,4 +43,5 @@ void OsDepInfo::setDepInfo() + + m_osVersion = QString(unixInfo.sysname) + ' ' + QString(unixInfo.release); + m_hostName = QString(unixInfo.nodename); ++ m_distroName = getDistro(); + } diff --git a/desktop/kde/plasma/kinfocenter/pspec.xml b/desktop/kde/plasma/kinfocenter/pspec.xml new file mode 100755 index 0000000000..0485cd9598 --- /dev/null +++ b/desktop/kde/plasma/kinfocenter/pspec.xml @@ -0,0 +1,114 @@ + + + + + kinfocenter + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 info center + KDE5 Utility that provides information about a computer system. + http://download.kde.org/stable/plasma/5.3.2/kinfocenter-5.3.2.tar.xz + + qt5-base-devel + python3 + pciutils-devel + libX11-devel + libgcc + kcmutils-devel + kcompletion-devel + kconfig-devel + kdelibs4-support-devel + kdoctools-devel + ki18n-devel + kio-devel + kwindowsystem-devel + kxmlgui-devel + kservice-devel + kcoreaddons-devel + kdbusaddons-devel + kiconthemes-devel + kconfigwidgets-devel + kwidgetsaddons-devel + libraw1394-devel + plasma-framework-devel + solid-devel + pciutils-devel + mesa-glu-devel + extra-cmake-modules + + + + + + + + kinfocenter + + qt5-base + qt5-declarative + pciutils + libX11 + libgcc + kservice + kcoreaddons + kdbusaddons + kiconthemes + kconfigwidgets + kwidgetsaddons + kcompletion + kconfig + kdelibs4-support + ki18n + kio + kxmlgui + libraw1394 + kwayland + kcmutils + solid + kdeclarative + mesa-glu + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kcm-about-distrorc + + + kde-workspace + + + kde-workspace + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 64f379f55e14e2120fddb2b6e5acacbdedf2518e Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 18:13:56 +0200 Subject: [PATCH 039/175] libksysguard version bump and check --- desktop/kde/plasma/libksysguard/actions.py | 19 + .../files/libksysguard_kauth.diff | 339 ++++++++++++++++++ desktop/kde/plasma/libksysguard/pspec.xml | 103 ++++++ 3 files changed, 461 insertions(+) create mode 100644 desktop/kde/plasma/libksysguard/actions.py create mode 100644 desktop/kde/plasma/libksysguard/files/libksysguard_kauth.diff create mode 100755 desktop/kde/plasma/libksysguard/pspec.xml diff --git a/desktop/kde/plasma/libksysguard/actions.py b/desktop/kde/plasma/libksysguard/actions.py new file mode 100644 index 0000000000..389685f7a8 --- /dev/null +++ b/desktop/kde/plasma/libksysguard/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING.LIB") diff --git a/desktop/kde/plasma/libksysguard/files/libksysguard_kauth.diff b/desktop/kde/plasma/libksysguard/files/libksysguard_kauth.diff new file mode 100644 index 0000000000..b267af97d1 --- /dev/null +++ b/desktop/kde/plasma/libksysguard/files/libksysguard_kauth.diff @@ -0,0 +1,339 @@ +diff --git a/processcore/CMakeLists.txt b/processcore/CMakeLists.txt +index 9fef4ec..939d055 100644 +--- a/processcore/CMakeLists.txt ++++ b/processcore/CMakeLists.txt +@@ -41,18 +41,18 @@ install( FILES processes.h process.h DESTINATION ${INCLUDE_INSTALL_DIR}/ksysguar + #------ KAuth stuff + + # Auth example helper +-# set(ksysguardprocesslist_helper_srcs +-# helper.cpp +-# process.cpp +-# processes_local_p.cpp +-# processes_base_p.cpp) +-# +-# add_executable(ksysguardprocesslist_helper ${ksysguardprocesslist_helper_srcs}) +-# target_link_libraries(ksysguardprocesslist_helper ) +-# install(TARGETS ksysguardprocesslist_helper DESTINATION ${LIBEXEC_INSTALL_DIR}) +-# +-# kauth_install_helper_files(ksysguardprocesslist_helper org.kde.ksysguard.processlisthelper root) +-# kauth_install_actions(org.kde.ksysguard.processlisthelper actions.actions) +-# +-# set_target_properties(ksysguardprocesslist_helper PROPERTIES COMPILE_FLAGS "-Wall -ggdb") ++set(ksysguardprocesslist_helper_srcs ++ helper.cpp ++ process.cpp ++ processes_local_p.cpp ++ processes_base_p.cpp) ++ ++add_executable(ksysguardprocesslist_helper ${ksysguardprocesslist_helper_srcs}) ++target_link_libraries(ksysguardprocesslist_helper Qt5::Core KF5::Auth KF5::I18n) ++install(TARGETS ksysguardprocesslist_helper DESTINATION ${KAUTH_HELPER_INSTALL_DIR}) ++ ++kauth_install_helper_files(ksysguardprocesslist_helper org.kde.ksysguard.processlisthelper root) ++kauth_install_actions(org.kde.ksysguard.processlisthelper actions.actions) ++ ++set_target_properties(ksysguardprocesslist_helper PROPERTIES COMPILE_FLAGS "-Wall -ggdb") + +diff --git a/processcore/helper.cpp b/processcore/helper.cpp +index 6c1f570..c34ab1e 100644 +--- a/processcore/helper.cpp ++++ b/processcore/helper.cpp +@@ -23,24 +23,26 @@ + #include "helper.h" + #include "processes_local_p.h" + ++using namespace KAuth; ++ + KSysGuardProcessListHelper::KSysGuardProcessListHelper() + { + qRegisterMetaType >(); + } + + /* The functions here run as ROOT. So be careful. DO NOT TRUST THE INPUTS TO BE SANE. */ +-#define GET_PID(i) parameters.value(QString("pid%1").arg(i), -1).toULongLong(); if(pid < 0) return KAuth::ActionReply::HelperErrorReply; +-KAuth::ActionReply KSysGuardProcessListHelper::sendsignal(QVariantMap parameters) { +- KAuth::ActionReply errorReply(KAuth::ActionReply::HelperError); ++#define GET_PID(i) parameters.value(QString("pid%1").arg(i), -1).toULongLong(); if(pid < 0) return ActionReply(ActionReply::HelperErrorType); ++ActionReply KSysGuardProcessListHelper::sendsignal(QVariantMap parameters) { ++ ActionReply reply(ActionReply::HelperErrorType); + if(!parameters.contains("signal")) { +- errorReply.setErrorDescription("Internal error - no signal parameter was passed to the helper"); +- errorReply.setErrorCode(1); +- return errorReply; ++ reply.setErrorDescription("Internal error - no signal parameter was passed to the helper"); ++ reply.setErrorCode(static_cast(1)); ++ return reply; + } + if(!parameters.contains("pidcount")) { +- errorReply.setErrorDescription("Internal error - no pidcount parameter was passed to the helper"); +- errorReply.setErrorCode(2); +- return errorReply; ++ reply.setErrorDescription("Internal error - no pidcount parameter was passed to the helper"); ++ reply.setErrorCode(static_cast(2)); ++ return reply; + } + + KSysGuard::ProcessesLocal processes; +@@ -56,17 +58,17 @@ KAuth::ActionReply KSysGuardProcessListHelper::sendsignal(QVariantMap parameters + success = successForThisPid && success; + } + if(success) { +- return KAuth::ActionReply::SuccessReply; ++ return ActionReply::SuccessReply(); + } else { +- errorReply.setErrorDescription(QString("Could not send signal to: ") + errorList.join(", ")); +- errorReply.setErrorCode(0); +- return errorReply; ++ reply.setErrorDescription(QString("Could not send signal to: ") + errorList.join(", ")); ++ reply.setErrorCode(static_cast(0)); ++ return reply; + } + } + +-KAuth::ActionReply KSysGuardProcessListHelper::renice(QVariantMap parameters) { ++ActionReply KSysGuardProcessListHelper::renice(QVariantMap parameters) { + if(!parameters.contains("nicevalue") || !parameters.contains("pidcount")) +- return KAuth::ActionReply::HelperErrorReply; ++ return ActionReply(ActionReply::HelperErrorType); + + KSysGuard::ProcessesLocal processes; + int niceValue = qvariant_cast(parameters.value("nicevalue")); +@@ -77,14 +79,14 @@ KAuth::ActionReply KSysGuardProcessListHelper::renice(QVariantMap parameters) { + success = processes.setNiceness(pid, niceValue) && success; + } + if(success) +- return KAuth::ActionReply::SuccessReply; ++ return ActionReply::SuccessReply(); + else +- return KAuth::ActionReply::HelperErrorReply; ++ return ActionReply(ActionReply::HelperErrorType); + } + +-KAuth::ActionReply KSysGuardProcessListHelper::changeioscheduler(QVariantMap parameters) { ++ActionReply KSysGuardProcessListHelper::changeioscheduler(QVariantMap parameters) { + if(!parameters.contains("ioScheduler") || !parameters.contains("ioSchedulerPriority") || !parameters.contains("pidcount")) +- return KAuth::ActionReply::HelperErrorReply; ++ return ActionReply(ActionReply::HelperErrorType); + + KSysGuard::ProcessesLocal processes; + int ioScheduler = qvariant_cast(parameters.value("ioScheduler")); +@@ -96,14 +98,14 @@ KAuth::ActionReply KSysGuardProcessListHelper::changeioscheduler(QVariantMap par + success = processes.setIoNiceness(pid, ioScheduler, ioSchedulerPriority) && success; + } + if(success) +- return KAuth::ActionReply::SuccessReply; ++ return ActionReply::SuccessReply(); + else +- return KAuth::ActionReply::HelperErrorReply; ++ return ActionReply(ActionReply::HelperErrorType); + + } +-KAuth::ActionReply KSysGuardProcessListHelper::changecpuscheduler(QVariantMap parameters) { ++ActionReply KSysGuardProcessListHelper::changecpuscheduler(QVariantMap parameters) { + if(!parameters.contains("cpuScheduler") || !parameters.contains("cpuSchedulerPriority") || !parameters.contains("pidcount")) +- return KAuth::ActionReply::HelperErrorReply; ++ return ActionReply(ActionReply::HelperErrorType); + + KSysGuard::ProcessesLocal processes; + int cpuScheduler = qvariant_cast(parameters.value("cpuScheduler")); +@@ -116,9 +118,9 @@ KAuth::ActionReply KSysGuardProcessListHelper::changecpuscheduler(QVariantMap pa + success = processes.setScheduler(pid, cpuScheduler, cpuSchedulerPriority) && success; + } + if(success) +- return KAuth::ActionReply::SuccessReply; ++ return ActionReply::SuccessReply(); + else +- return KAuth::ActionReply::HelperErrorReply; ++ return ActionReply(ActionReply::HelperErrorType); + + } + KAUTH_HELPER_MAIN("org.kde.ksysguard.processlisthelper", KSysGuardProcessListHelper) +diff --git a/processcore/processes_linux_p.cpp b/processcore/processes_linux_p.cpp +index 65b8dfd..0cff0e8 100644 +--- a/processcore/processes_linux_p.cpp ++++ b/processcore/processes_linux_p.cpp +@@ -22,7 +22,7 @@ + #include "processes_local_p.h" + #include "process.h" + +-#include ++#include + + #include + #include +diff --git a/processui/ksysguardprocesslist.cpp b/processui/ksysguardprocesslist.cpp +index 1651a0a..ba9d8c9 100644 +--- a/processui/ksysguardprocesslist.cpp ++++ b/processui/ksysguardprocesslist.cpp +@@ -48,6 +48,9 @@ + #include //For SIGTERM + + #include ++#include ++#include ++#include + #include + #include + #include +@@ -188,7 +191,7 @@ struct KSysGuardProcessListPrivate { + int totalRowCount(const QModelIndex &parent) const; + + /** Helper function to setup 'action' with the given pids */ +- void setupKAuthAction(KAuth::Action *action, const QList & pids) const; ++ void setupKAuthAction(KAuth::Action &action, const QList & pids) const; + + /** fire a timer event if we are set to use our internal timer*/ + void fireTimerEvent(); +@@ -392,15 +395,15 @@ int KSysGuardProcessListPrivate::totalRowCount(const QModelIndex &parent ) const + return total; + } + +-void KSysGuardProcessListPrivate::setupKAuthAction(KAuth::Action *action, const QList & pids) const ++void KSysGuardProcessListPrivate::setupKAuthAction(KAuth::Action &action, const QList & pids) const + { +- action->setHelperId("org.kde.ksysguard.processlisthelper"); ++ action.setHelperId("org.kde.ksysguard.processlisthelper"); + + int processCount = pids.count(); + for(int i = 0; i < processCount; i++) { +- action->addArgument(QString("pid%1").arg(i), pids[i]); ++ action.addArgument(QString("pid%1").arg(i), pids[i]); + } +- action->addArgument("pidcount", processCount); ++ action.addArgument("pidcount", processCount); + } + void KSysGuardProcessList::selectionChanged() + { +@@ -1023,23 +1026,19 @@ bool KSysGuardProcessList::reniceProcesses(const QList &pids, int nic + + + #warning KAuth needs porting, but docu is not adjusted, no idea how to do it +-#if 0 +- KAuth::Action *action = new KAuth::Action("org.kde.ksysguard.processlisthelper.renice"); +- action->setParentWidget(window()); ++ KAuth::Action action("org.kde.ksysguard.processlisthelper.renice"); ++ action.setParentWidget(window()); + d->setupKAuthAction( action, unreniced_pids); +- action->addArgument("nicevalue", niceValue); +- KAuth::ActionReply reply = action->execute(); ++ action.addArgument("nicevalue", niceValue); ++ KAuth::ExecuteJob *job = action.execute(); + +- if (reply == KAuth::ActionReply::SuccessReply) { ++ if (job->exec()) { + updateList(); +- delete action; +- } else if (reply != KAuth::ActionReply::UserCancelled && reply != KAuth::ActionReply::AuthorizationDenied) { ++ } else if (!job->exec()) { + KMessageBox::sorry(this, i18n("You do not have the permission to renice the process and there " +- "was a problem trying to run as root. Error %1 %2", reply.errorCode(), reply.errorDescription())); +- delete action; ++ "was a problem trying to run as root. Error %1 %2", job->error(), job->errorString())); + return false; + } +-#endif + return true; + } + +@@ -1189,26 +1188,22 @@ bool KSysGuardProcessList::changeIoScheduler(const QList< long long> &pids, KSys + if(!d->mModel.isLocalhost()) return false; //We can't use kauth to affect non-localhost processes + + #warning KAuth needs porting, but docu is not adjusted, no idea how to do it +-#if 0 +- KAuth::Action *action = new KAuth::Action("org.kde.ksysguard.processlisthelper.changeioscheduler"); +- action->setParentWidget(window()); ++ KAuth::Action action("org.kde.ksysguard.processlisthelper.changeioscheduler"); ++ action.setParentWidget(window()); + + d->setupKAuthAction( action, unchanged_pids); +- action->addArgument("ioScheduler", (int)newIoSched); +- action->addArgument("ioSchedulerPriority", newIoSchedPriority); ++ action.addArgument("ioScheduler", (int)newIoSched); ++ action.addArgument("ioSchedulerPriority", newIoSchedPriority); + +- KAuth::ActionReply reply = action->execute(); ++ KAuth::ExecuteJob *job = action.execute(); + +- if (reply == KAuth::ActionReply::SuccessReply) { ++ if (job->exec()) { + updateList(); +- delete action; +- } else if (reply != KAuth::ActionReply::UserCancelled && reply != KAuth::ActionReply::AuthorizationDenied) { ++ } else if (!job->exec()) { + KMessageBox::sorry(this, i18n("You do not have the permission to change the I/O priority of the process and there " +- "was a problem trying to run as root. Error %1 %2", reply.errorCode(), reply.errorDescription())); +- delete action; ++ "was a problem trying to run as root. Error %1 %2", job->error(), job->errorString())); + return false; + } +-#endif + return true; + } + +@@ -1226,24 +1221,20 @@ bool KSysGuardProcessList::changeCpuScheduler(const QList< long long> &pids, KSy + if(!d->mModel.isLocalhost()) return false; //We can't use KAuth to affect non-localhost processes + + #warning KAuth needs porting, but docu is not adjusted, no idea how to do it +-#if 0 +- KAuth::Action *action = new KAuth::Action("org.kde.ksysguard.processlisthelper.changecpuscheduler"); +- action->setParentWidget(window()); ++ KAuth::Action action("org.kde.ksysguard.processlisthelper.changecpuscheduler"); ++ action.setParentWidget(window()); + d->setupKAuthAction( action, unchanged_pids); +- action->addArgument("cpuScheduler", (int)newCpuSched); +- action->addArgument("cpuSchedulerPriority", newCpuSchedPriority); +- KAuth::ActionReply reply = action->execute(); ++ action.addArgument("cpuScheduler", (int)newCpuSched); ++ action.addArgument("cpuSchedulerPriority", newCpuSchedPriority); ++ KAuth::ExecuteJob *job = action.execute(); + +- if (reply == KAuth::ActionReply::SuccessReply) { ++ if (job->exec()) { + updateList(); +- delete action; +- } else if (reply != KAuth::ActionReply::UserCancelled && reply != KAuth::ActionReply::AuthorizationDenied) { ++ } else if (!job->exec()) { + KMessageBox::sorry(this, i18n("You do not have the permission to change the CPU Scheduler for the process and there " +- "was a problem trying to run as root. Error %1 %2", reply.errorCode(), reply.errorDescription())); +- delete action; ++ "was a problem trying to run as root. Error %1 %2", job->error(), job->errorString())); + return false; + } +-#endif + return true; + } + +@@ -1262,26 +1253,20 @@ bool KSysGuardProcessList::killProcesses(const QList< long long> &pids, int sig) + if(!d->mModel.isLocalhost()) return false; //We can't elevate privileges to kill non-localhost processes + + #warning KAuth needs porting, but docu is not adjusted, no idea how to do it +-#if 0 + KAuth::Action action("org.kde.ksysguard.processlisthelper.sendsignal"); + action.setParentWidget(window()); +- d->setupKAuthAction( &action, unkilled_pids); ++ //action.setHelperId("org.kde.ksysguard.processlisthelper"); ++ d->setupKAuthAction( action, unkilled_pids); + action.addArgument("signal", sig); +- KAuth::ActionReply reply = action.execute(); ++ KAuth::ExecuteJob *job = action.execute(); + +- if (reply == KAuth::ActionReply::SuccessReply) { ++ if (job->exec()) { + updateList(); +- } else if (reply.type() == KAuth::ActionReply::HelperError) { +- if (reply.errorCode() > 0) +- KMessageBox::sorry(this, i18n("You do not have the permission to kill the process and there " +- "was a problem trying to run as root. %1", reply.errorDescription())); +- return false; +- } else if (reply != KAuth::ActionReply::UserCancelled && reply != KAuth::ActionReply::AuthorizationDenied) { ++ } else if (!job->exec()) { + KMessageBox::sorry(this, i18n("You do not have the permission to kill the process and there " +- "was a problem trying to run as root. Error %1 %2", reply.errorCode(), reply.errorDescription())); ++ "was a problem trying to run as root. Error %1 %2", job->error(), job->errorString())); + return false; + } +-#endif + return true; + } + diff --git a/desktop/kde/plasma/libksysguard/pspec.xml b/desktop/kde/plasma/libksysguard/pspec.xml new file mode 100755 index 0000000000..1e5f7b995b --- /dev/null +++ b/desktop/kde/plasma/libksysguard/pspec.xml @@ -0,0 +1,103 @@ + + + + + libksysguard + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Task management and system monitoring library + Task management and system monitoring library + http://download.kde.org/stable/plasma/5.3.2/libksysguard-5.3.2.tar.xz + + qt5-base-devel + python3 + kdoctools-devel + libgcc + libX11-devel + zlib-devel + extra-cmake-modules + + + + + + + + libksysguard + + qt5-base + libgcc + libX11 + zlib + libXres + qt5-webkit + qt5-x11extras + kwindowsystem + kconfigwidgets + kwidgetsaddons + kconfig + kauth + kcoreaddons + kdelibs4-support + ki18n + plasma-framework + + + /etc + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + libksysguard-devel + Development files for libksysguard + + qt5-base-devel + libksysguard + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + kde-workspace-devel + + + kde-workspace-devel + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-12 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 2ba8cd17668d7f0f5f9caf63e8233572900c5612 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 18:22:14 +0200 Subject: [PATCH 040/175] ksysguard version bump and check --- desktop/kde/plasma/ksysguard/actions.py | 19 +++ ...01-Use-run-for-ksysguardd-s-pid-file.patch | 25 ++++ desktop/kde/plasma/ksysguard/pspec.xml | 110 ++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 desktop/kde/plasma/ksysguard/actions.py create mode 100644 desktop/kde/plasma/ksysguard/files/0001-Use-run-for-ksysguardd-s-pid-file.patch create mode 100755 desktop/kde/plasma/ksysguard/pspec.xml diff --git a/desktop/kde/plasma/ksysguard/actions.py b/desktop/kde/plasma/ksysguard/actions.py new file mode 100644 index 0000000000..ec16cb043f --- /dev/null +++ b/desktop/kde/plasma/ksysguard/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING", "COPYING.DOC", "README") diff --git a/desktop/kde/plasma/ksysguard/files/0001-Use-run-for-ksysguardd-s-pid-file.patch b/desktop/kde/plasma/ksysguard/files/0001-Use-run-for-ksysguardd-s-pid-file.patch new file mode 100644 index 0000000000..d6c9a4a4af --- /dev/null +++ b/desktop/kde/plasma/ksysguard/files/0001-Use-run-for-ksysguardd-s-pid-file.patch @@ -0,0 +1,25 @@ +From 69a8d66c4682410537ce8d1f2b7012fb49773005 Mon Sep 17 00:00:00 2001 +From: Hrvoje Senjan +Date: Wed, 3 Sep 2014 23:13:35 +0200 +Subject: [PATCH 1/1] Use /run for ksysguardd's pid file + +--- + ksysguardd/ksysguardd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ksysguardd/ksysguardd.c b/ksysguardd/ksysguardd.c +index a5ecca1..883f8a1 100644 +--- a/ksysguardd/ksysguardd.c ++++ b/ksysguardd/ksysguardd.c +@@ -62,7 +62,7 @@ static ClientInfo ClientList[ MAX_CLIENTS ]; + static int SocketPort = -1; + static unsigned char BindToAllInterfaces = 0; + static int CurrentSocket; +-static const char LockFile[] = "/var/run/ksysguardd.pid"; ++static const char LockFile[] = "/run/ksysguardd.pid"; + static const char *ConfigFile = KSYSGUARDDRCFILE; + + void signalHandler( int sig ); +-- +2.1.0 + diff --git a/desktop/kde/plasma/ksysguard/pspec.xml b/desktop/kde/plasma/ksysguard/pspec.xml new file mode 100755 index 0000000000..ecb9690d8d --- /dev/null +++ b/desktop/kde/plasma/ksysguard/pspec.xml @@ -0,0 +1,110 @@ + + + + + ksysguard + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE system monitor + KDE5 system monitor daemon and service. + http://download.kde.org/stable/plasma/5.3.2/ksysguard-5.3.2.tar.xz + + qt5-base-devel + libgcc + kio-devel + kxmlgui-devel + kcompletion-devel + kdbusaddons-devel + kiconthemes-devel + kwindowsystem-devel + kconfigwidgets-devel + knotifications-devel + kwidgetsaddons-devel + lm_sensors-devel + python3 + extra-cmake-modules + kdoctools-devel + kconfig-devel + kcoreaddons-devel + kdelibs4-support-devel + ki18n-devel + kinit + kitemviews-devel + knewstuff-devel + libksysguard-devel + plasma-framework-devel + + + + + + + + ksysguard + + qt5-base + libgcc + icon-theme-hicolor + kio + kxmlgui + kcompletion + kdbusaddons + kiconthemes + kwindowsystem + kconfigwidgets + knotifications + kwidgetsaddons + lm_sensors + icon-theme-hicolor + xdg-utils + kdoctools + kconfig + kcoreaddons + kdelibs4-support + ki18n + kinit + kitemviews + knewstuff + libksysguard + plasma-framework + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-12 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From c0d9dc88ed93f6323c1ed6835cd78e6e692d0b92 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 18:39:43 +0200 Subject: [PATCH 041/175] system-settings version bump and check --- desktop/kde/plasma/system-settings/actions.py | 19 ++++ desktop/kde/plasma/system-settings/pspec.xml | 88 +++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 desktop/kde/plasma/system-settings/actions.py create mode 100755 desktop/kde/plasma/system-settings/pspec.xml diff --git a/desktop/kde/plasma/system-settings/actions.py b/desktop/kde/plasma/system-settings/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/system-settings/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/system-settings/pspec.xml b/desktop/kde/plasma/system-settings/pspec.xml new file mode 100755 index 0000000000..850c5d7921 --- /dev/null +++ b/desktop/kde/plasma/system-settings/pspec.xml @@ -0,0 +1,88 @@ + + + + + system-settings + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 system settings manager + System-settings is a control panel for KDE5 Plasma + http://download.kde.org/stable/plasma/5.3.2/systemsettings-5.3.2.tar.xz + + qt5-base-devel + kdoctools-devel + libgcc + python3 + extra-cmake-modules + + + + + system-settings + + qt5-base + kauth + libgcc + kcompletion + kcoreaddons + kconfigwidgets + kwidgetsaddons + kcmutils + kconfig + kdbusaddons + khtml + ki18n + kiconthemes + kio + kitemviews + kservice + kwindowsystem + kxmlgui + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + system-settings-devel + Development files for system-settings + + qt5-base-devel + system-settings + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-29 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 433ca872f618293d6044566704018ec9a3f126b9 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 22:30:55 +0200 Subject: [PATCH 042/175] polkit-kde-authentication-agent-1 version bump and check --- .../actions.py | 19 +++++ .../pspec.xml | 77 +++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 desktop/kde/plasma/polkit-kde-authentication-agent-1/actions.py create mode 100755 desktop/kde/plasma/polkit-kde-authentication-agent-1/pspec.xml diff --git a/desktop/kde/plasma/polkit-kde-authentication-agent-1/actions.py b/desktop/kde/plasma/polkit-kde-authentication-agent-1/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/polkit-kde-authentication-agent-1/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/polkit-kde-authentication-agent-1/pspec.xml b/desktop/kde/plasma/polkit-kde-authentication-agent-1/pspec.xml new file mode 100755 index 0000000000..b7998dd088 --- /dev/null +++ b/desktop/kde/plasma/polkit-kde-authentication-agent-1/pspec.xml @@ -0,0 +1,77 @@ + + + + + polkit-kde-authentication-agent-1 + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + app:gui + The KDE Plasma Workspace Components + The Polkit-KDE-Agent package contains a graphical Polkit authentication agent for the KDE Plasma Desktop. + http://download.kde.org/stable/plasma/5.3.2/polkit-kde-agent-1-5.3.2.tar.xz + + qt5-base-devel + kdoctools-devel + libgcc + python3 + extra-cmake-modules + + + + + + + polkit-kde-authentication-agent-1 + + qt5-base + libgcc + kcrash + kcoreaddons + polkit-qt + ki18n + kdbusaddons + kiconthemes + kwindowsystem + knotifications + kwidgetsaddons + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-29 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From e5a6f33006b7bb84e616b439719886e3262e2773 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 22:38:55 +0200 Subject: [PATCH 043/175] ksshaskpass version bump and check --- desktop/kde/plasma/ksshaskpass/actions.py | 19 ++++++ .../plasma/ksshaskpass/files/ksshaskpass.sh | 2 + desktop/kde/plasma/ksshaskpass/pspec.xml | 67 +++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 desktop/kde/plasma/ksshaskpass/actions.py create mode 100644 desktop/kde/plasma/ksshaskpass/files/ksshaskpass.sh create mode 100755 desktop/kde/plasma/ksshaskpass/pspec.xml diff --git a/desktop/kde/plasma/ksshaskpass/actions.py b/desktop/kde/plasma/ksshaskpass/actions.py new file mode 100644 index 0000000000..b7b74bc57e --- /dev/null +++ b/desktop/kde/plasma/ksshaskpass/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README", "COPYING", "ChangeLog") diff --git a/desktop/kde/plasma/ksshaskpass/files/ksshaskpass.sh b/desktop/kde/plasma/ksshaskpass/files/ksshaskpass.sh new file mode 100644 index 0000000000..ae0aaa9e68 --- /dev/null +++ b/desktop/kde/plasma/ksshaskpass/files/ksshaskpass.sh @@ -0,0 +1,2 @@ +test -f /usr/bin/ksshaskpass && export SSH_ASKPASS="/usr/bin/ksshaskpass" + diff --git a/desktop/kde/plasma/ksshaskpass/pspec.xml b/desktop/kde/plasma/ksshaskpass/pspec.xml new file mode 100755 index 0000000000..911c464734 --- /dev/null +++ b/desktop/kde/plasma/ksshaskpass/pspec.xml @@ -0,0 +1,67 @@ + + + + + ksshaskpass + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + ssh-add helper that uses kwallet and kpassworddialog + ssh-add helper that uses kwallet and kpassworddialog + http://download.kde.org/stable/plasma/5.3.2/ksshaskpass-5.3.2.tar.xz + + qt5-base-devel + kdoctools-devel + libgcc + python3 + extra-cmake-modules + + + + + ksshaskpass + + qt5-base + libgcc + kcoreaddons + kwidgetsaddons + ki18n + kwallet + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + ksshaskpass.sh + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-18 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 8727c398bc5eb4cd8c4fd70e6ee30493a74813e4 Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 22:48:00 +0200 Subject: [PATCH 044/175] kmenuedit version bump and check --- desktop/kde/plasma/kmenuedit/actions.py | 19 ++++++ desktop/kde/plasma/kmenuedit/pspec.xml | 78 +++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 desktop/kde/plasma/kmenuedit/actions.py create mode 100755 desktop/kde/plasma/kmenuedit/pspec.xml diff --git a/desktop/kde/plasma/kmenuedit/actions.py b/desktop/kde/plasma/kmenuedit/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/kmenuedit/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/kmenuedit/pspec.xml b/desktop/kde/plasma/kmenuedit/pspec.xml new file mode 100755 index 0000000000..f39a209cbd --- /dev/null +++ b/desktop/kde/plasma/kmenuedit/pspec.xml @@ -0,0 +1,78 @@ + + + + + kmenuedit + http://www.kde.org + + Pisi Linux admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Provides the interface and basic tools for the KDE workspace + Provides the interface and basic tools for the KDE workspace + http://download.kde.org/stable/plasma/5.3.2/kmenuedit-5.3.2.tar.xz + + qt5-base-devel + kdoctools-devel + libgcc + extra-cmake-modules + python3 + + + + + kmenuedit + + qt5-base + libgcc + kconfig + kservice + kcompletion + kcoreaddons + kconfigwidgets + kwidgetsaddons + kdbusaddons + kdelibs4-support + ki18n + kiconthemes + kio + kxmlgui + sonnet + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-15 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 49071d08eabfd801054734702fc194ca713adf3b Mon Sep 17 00:00:00 2001 From: groni Date: Wed, 1 Jul 2015 23:30:22 +0200 Subject: [PATCH 045/175] plasma-nm version bump and check --- desktop/kde/plasma/plasma-nm/actions.py | 19 ++++++ desktop/kde/plasma/plasma-nm/pspec.xml | 91 +++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 desktop/kde/plasma/plasma-nm/actions.py create mode 100755 desktop/kde/plasma/plasma-nm/pspec.xml diff --git a/desktop/kde/plasma/plasma-nm/actions.py b/desktop/kde/plasma/plasma-nm/actions.py new file mode 100644 index 0000000000..f539eaa4b7 --- /dev/null +++ b/desktop/kde/plasma/plasma-nm/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("README", "COPYING.LIB", "COPYING") diff --git a/desktop/kde/plasma/plasma-nm/pspec.xml b/desktop/kde/plasma/plasma-nm/pspec.xml new file mode 100755 index 0000000000..4f776722aa --- /dev/null +++ b/desktop/kde/plasma/plasma-nm/pspec.xml @@ -0,0 +1,91 @@ + + + + + plasma-nm + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + Plasma applet written in QML for managing network connections + Plasma applet written in QML for managing network connections + http://download.kde.org/stable/plasma/5.3.2/plasma-nm-5.3.2.tar.xz + + qt5-base-devel + libgcc + networkmanager-qt-devel + modemmanger-qt-devel + kdelibs4-support-devel + python3 + openconnect-devel + kdoctools-devel + NetworkManager-devel + mobile-broadband-provider-info + extra-cmake-modules + + + + + plasma-nm + + qt5-base + libgcc + openconnect + kio + networkmanager-qt + modemmanager-qt + ki18n + solid + kconfig + kwallet + kxmlgui + kservice + kitemviews + qt5-declarative + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + kwindowsystem + kconfigwidgets + knotifications + kwidgetsaddons + kdelibs4-support + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-14 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + From dd43cb98459216c9c16666d770e2d32112c102b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Thu, 2 Jul 2015 12:38:22 +0300 Subject: [PATCH 046/175] libXrandr fix deps. --- x11/library/libXrandr/pspec.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/x11/library/libXrandr/pspec.xml b/x11/library/libXrandr/pspec.xml index 97f78c4c12..33791b372c 100644 --- a/x11/library/libXrandr/pspec.xml +++ b/x11/library/libXrandr/pspec.xml @@ -16,6 +16,8 @@ libXext-devel libXrender-devel + libX11-devel + util-macros @@ -24,6 +26,7 @@ libXext libXrender + libX11 /usr/lib @@ -53,12 +56,14 @@ 32-bit shared libraries for libXrandr emul32 + glibc-32bit libX11-32bit libXext-32bit libXrender-32bit libXrandr + glibc-32bit libX11-32bit libXext-32bit libXrender-32bit From 5ff905ab217f4be48b6a3e4c3aacba582569ffd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Thu, 2 Jul 2015 12:43:46 +0300 Subject: [PATCH 047/175] libXScrnSaver fix deps. --- x11/library/libXScrnSaver/pspec.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/x11/library/libXScrnSaver/pspec.xml b/x11/library/libXScrnSaver/pspec.xml index a28c593305..088b56ea1d 100644 --- a/x11/library/libXScrnSaver/pspec.xml +++ b/x11/library/libXScrnSaver/pspec.xml @@ -15,6 +15,8 @@ mirrors://xorg/individual/lib/libXScrnSaver-1.2.2.tar.bz2 libXext-devel + libX11-devel + util-macros @@ -22,6 +24,7 @@ libXScrnSaver libXext + libX11 /usr/lib @@ -50,11 +53,13 @@ 32-bit shared libraries for libXScrnSaver emul32 + glibc-32bit libX11-32bit libXext-32bit libXScrnSaver + glibc-32bit libX11-32bit libXext-32bit From c93c39b00ae9b8527cb8df06f4f953410dff2961 Mon Sep 17 00:00:00 2001 From: groni Date: Thu, 2 Jul 2015 12:24:53 +0200 Subject: [PATCH 048/175] libkscreen version bump and check --- desktop/kde/plasma/libkscreen/actions.py | 19 ++++++ desktop/kde/plasma/libkscreen/pspec.xml | 76 ++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 desktop/kde/plasma/libkscreen/actions.py create mode 100755 desktop/kde/plasma/libkscreen/pspec.xml diff --git a/desktop/kde/plasma/libkscreen/actions.py b/desktop/kde/plasma/libkscreen/actions.py new file mode 100644 index 0000000000..1ead2575cd --- /dev/null +++ b/desktop/kde/plasma/libkscreen/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING.LIB", "COPYING") diff --git a/desktop/kde/plasma/libkscreen/pspec.xml b/desktop/kde/plasma/libkscreen/pspec.xml new file mode 100755 index 0000000000..f84f999ea5 --- /dev/null +++ b/desktop/kde/plasma/libkscreen/pspec.xml @@ -0,0 +1,76 @@ + + + + + libkscreen + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 screen management library + Dynamic display management library for KDE + http://download.kde.org/stable/plasma/5.3.2/libkscreen-5.3.2.tar.xz + + qt5-base-devel + qt5-x11extras-devel + libgcc + libxcb-devel + xcb-util-devel + xcb-util-image-devel + xcb-util-keysyms-devel + libXcursor-devel + libXrandr-devel + extra-cmake-modules + + + + + libkscreen + + qt5-base + libxcb + libgcc + qt5-x11extras + + + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + libkscreen-devel + Development files for libkscreen + + qt5-base-devel + libkscreen + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 932e2a103cf6e9c6de87898970ae4abf2b0def64 Mon Sep 17 00:00:00 2001 From: groni Date: Thu, 2 Jul 2015 12:31:46 +0200 Subject: [PATCH 049/175] kscreen version bump and check --- desktop/kde/plasma/kscreen/actions.py | 19 ++++++++ desktop/kde/plasma/kscreen/pspec.xml | 69 +++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 desktop/kde/plasma/kscreen/actions.py create mode 100755 desktop/kde/plasma/kscreen/pspec.xml diff --git a/desktop/kde/plasma/kscreen/actions.py b/desktop/kde/plasma/kscreen/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/kscreen/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/kscreen/pspec.xml b/desktop/kde/plasma/kscreen/pspec.xml new file mode 100755 index 0000000000..4c495b428c --- /dev/null +++ b/desktop/kde/plasma/kscreen/pspec.xml @@ -0,0 +1,69 @@ + + + + + kscreen + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + Provides the interface and basic tools for the KDE workspace + Provides the interface and basic tools for the KDE workspace + http://download.kde.org/stable/plasma/5.3.2/kscreen-5.3.2.tar.xz + + qt5-base-devel + qt5-graphicaleffects + python3 + libgcc + kdoctools-devel + extra-cmake-modules + + + + + kscreen + + qt5-base + libgcc + libkscreen + qt5-declarative + kcoreaddons + kglobalaccel + kconfigwidgets + kwidgetsaddons + kdbusaddons + ki18n + kxmlgui + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From d3b470ec48ef61da626cb57f3738dfa7269bff38 Mon Sep 17 00:00:00 2001 From: groni Date: Thu, 2 Jul 2015 13:28:53 +0200 Subject: [PATCH 050/175] kwin version bump and check --- desktop/kde/plasma/kwin/actions.py | 19 ++++ desktop/kde/plasma/kwin/pspec.xml | 161 +++++++++++++++++++++++++++++ 2 files changed, 180 insertions(+) create mode 100644 desktop/kde/plasma/kwin/actions.py create mode 100755 desktop/kde/plasma/kwin/pspec.xml diff --git a/desktop/kde/plasma/kwin/actions.py b/desktop/kde/plasma/kwin/actions.py new file mode 100644 index 0000000000..f586811bf7 --- /dev/null +++ b/desktop/kde/plasma/kwin/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COMPLIANCE", "CONFIGURING", "COPYING", "HACKING", "README") diff --git a/desktop/kde/plasma/kwin/pspec.xml b/desktop/kde/plasma/kwin/pspec.xml new file mode 100755 index 0000000000..f90267b54e --- /dev/null +++ b/desktop/kde/plasma/kwin/pspec.xml @@ -0,0 +1,161 @@ + + + + + kwin + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 window manager + KWin is the window manager of the K desktop environment. + http://download.kde.org/stable/plasma/5.3.2/kwin-5.3.2.tar.xz + + qt5-base-devel + qt5-tools-devel + qt5-multimedia-devel + kwayland + kdecorations-devel + qt5-script-devel + qt5-x11extras-devel + qt5-declarative-devel + kiconthemes-devel + kauth-devel + libXxf86vm-devel + libXext-devel + kf5-kactivities-devel + kcmutils-devel + kcompletion-devel + kconfig-devel + kconfigwidgets-devel + kcoreaddons-devel + kcrash-devel + kdeclarative-devel + kdoctools-devel + kglobalaccel-devel + ki18n-devel + kinit + kio-devel + knewstuff-devel + knotifications-devel + kservice-devel + kwidgetsaddons-devel + kwindowsystem-devel + kxmlgui-devel + plasma-framework-devel + mesa-devel + libICE-devel + libSM-devel + wayland-devel + wayland-client + wayland-cursor + libxkbcommon-devel + xcb-util-keysyms-devel + xcb-util-image-devel + libXcursor-devel + libepoxy-devel + libgcc + libX11-devel + libxcb-devel + + + + + kwin + + qt5-base + libgcc + libX11 + libxcb + qt5-script+ + kwayland+ + kdecorations+ + qt5-x11extras+ + qt5-declarative+ + kiconthemes+ + kauth+ + kf5-kactivities+ + kcmutils+ + kcompletion+ + kconfig+ + kconfigwidgets+ + kcoreaddons+ + kcrash+ + kdeclarative+ + kglobalaccel+ + ki18n+ + kio+ + knewstuff+ + knotifications+ + kservice+ + kwidgetsaddons+ + kwindowsystem+ + kxmlgui+ + plasma-framework+ + mesa+ + libICE+ + libSM+ + wayland-cursor+ + libxkbcommon+ + xcb-util-keysyms+ + xcb-util-image+ + libepoxy+ + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + kwin-devel + Development files for kwin + + qt5-base-devel + kwin + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + kde-workspace-devel + + + kde-workspace-devel + + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-12 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 51d79a5c04f54f694577dd030b2f60cd1644ea29 Mon Sep 17 00:00:00 2001 From: groni Date: Thu, 2 Jul 2015 15:37:29 +0200 Subject: [PATCH 051/175] plasma-workspace version bump and check --- .../kde/plasma/plasma-workspace/actions.py | 26 +++ .../kde/plasma/plasma-workspace/comar/kde.pam | 6 + .../files/0001-Rename-qdbus-in-startkde.patch | 32 +++ ...0003-Remove-export-of-QT_PLUGIN_PATH.patch | 29 +++ .../files/create_kdehome.patch | 19 ++ .../kde/plasma/plasma-workspace/files/kde.pam | 6 + .../files/lockscreen-focus.patch | 17 ++ desktop/kde/plasma/plasma-workspace/pspec.xml | 207 ++++++++++++++++++ 8 files changed, 342 insertions(+) create mode 100755 desktop/kde/plasma/plasma-workspace/actions.py create mode 100644 desktop/kde/plasma/plasma-workspace/comar/kde.pam create mode 100644 desktop/kde/plasma/plasma-workspace/files/0001-Rename-qdbus-in-startkde.patch create mode 100644 desktop/kde/plasma/plasma-workspace/files/0003-Remove-export-of-QT_PLUGIN_PATH.patch create mode 100644 desktop/kde/plasma/plasma-workspace/files/create_kdehome.patch create mode 100644 desktop/kde/plasma/plasma-workspace/files/kde.pam create mode 100644 desktop/kde/plasma/plasma-workspace/files/lockscreen-focus.patch create mode 100755 desktop/kde/plasma/plasma-workspace/pspec.xml diff --git a/desktop/kde/plasma/plasma-workspace/actions.py b/desktop/kde/plasma/plasma-workspace/actions.py new file mode 100755 index 0000000000..9737c14ca2 --- /dev/null +++ b/desktop/kde/plasma/plasma-workspace/actions.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + cmaketools.configure("-DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + -DLIB_INSTALL_DIR=lib \ + -DLIBEXEC_INSTALL_DIR=lib \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + pisitools.dosym("/usr/lib/drkonqi", "/usr/lib/libexec/drkonqi") + + pisitools.dodoc("COPYING", "HACKING") + diff --git a/desktop/kde/plasma/plasma-workspace/comar/kde.pam b/desktop/kde/plasma/plasma-workspace/comar/kde.pam new file mode 100644 index 0000000000..1e48de3f18 --- /dev/null +++ b/desktop/kde/plasma/plasma-workspace/comar/kde.pam @@ -0,0 +1,6 @@ +#%PAM-1.0 + +auth include system-login +account include system-login +password include system-login +session include system-login diff --git a/desktop/kde/plasma/plasma-workspace/files/0001-Rename-qdbus-in-startkde.patch b/desktop/kde/plasma/plasma-workspace/files/0001-Rename-qdbus-in-startkde.patch new file mode 100644 index 0000000000..30ed016829 --- /dev/null +++ b/desktop/kde/plasma/plasma-workspace/files/0001-Rename-qdbus-in-startkde.patch @@ -0,0 +1,32 @@ +diff --git a/startkde/startkde.cmake b/startkde/startkde.cmake +index 91c8a3c..0c658bd 100644 +--- a/startkde/startkde.cmake ++++ b/startkde/startkde.cmake +@@ -20,13 +20,13 @@ unset DYLD_FORCE_FLAT_NAMESPACE + bindir=`echo "$0" | sed -n 's,^\(/.*\)/[^/][^/]*$,\1,p'` + if [ -n "$bindir" ]; then + qbindir=`qtpaths --binaries-dir` +- qdbus=$qbindir/qdbus ++ qdbus=$qbindir/qdbus-qt5 + case $PATH in + $bindir|$bindir:*|*:$bindir|*:$bindir:*) ;; + *) PATH=$bindir:$PATH; export PATH;; + esac + else +- qdbus=qdbus ++ qdbus=qdbus-qt5 + fi + + # Check if a KDE session already is running and whether it's possible to connect to X +@@ -300,9 +300,9 @@ fi + if $qdbus >/dev/null 2>/dev/null; then + : # ok + else +- echo 'startkde: Could not start D-Bus. Can you call qdbus?' 1>&2 ++ echo 'startkde: Could not start D-Bus. Can you call qdbus-qt5?' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?" ++ xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus-qt5?" + exit 1 + fi + diff --git a/desktop/kde/plasma/plasma-workspace/files/0003-Remove-export-of-QT_PLUGIN_PATH.patch b/desktop/kde/plasma/plasma-workspace/files/0003-Remove-export-of-QT_PLUGIN_PATH.patch new file mode 100644 index 0000000000..75950ada26 --- /dev/null +++ b/desktop/kde/plasma/plasma-workspace/files/0003-Remove-export-of-QT_PLUGIN_PATH.patch @@ -0,0 +1,29 @@ +From dde9b1c1930d333d8daff25c73400e1e67f3c630 Mon Sep 17 00:00:00 2001 +From: Hrvoje Senjan +Date: Sun, 7 Sep 2014 22:55:24 +0200 +Subject: [PATCH 3/3] Remove export of QT_PLUGIN_PATH + +--- + startkde/startkde.cmake | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/startkde/startkde.cmake b/startkde/startkde.cmake +index 51721d1..1d67be0 100644 +--- a/startkde/startkde.cmake ++++ b/startkde/startkde.cmake +@@ -220,12 +220,6 @@ for prefix in `echo $scriptpath`; do + done + done + +-# Set the path for Qt plugins provided by KDE +-QT_PLUGIN_PATH=${QT_PLUGIN_PATH+$QT_PLUGIN_PATH:}`qtpaths --plugin-dir` +-# TODO: Do we really need this? +-QT_PLUGIN_PATH=$QT_PLUGIN_PATH:$kdehome/lib/kde5/plugins/ +-export QT_PLUGIN_PATH +- + # Activate the kde font directories. + # + # There are 4 directories that may be used for supplying fonts for KDE. +-- +2.1.0 + diff --git a/desktop/kde/plasma/plasma-workspace/files/create_kdehome.patch b/desktop/kde/plasma/plasma-workspace/files/create_kdehome.patch new file mode 100644 index 0000000000..b29f4b163a --- /dev/null +++ b/desktop/kde/plasma/plasma-workspace/files/create_kdehome.patch @@ -0,0 +1,19 @@ +diff --git a/startkde/startkde.cmake b/startkde/startkde.cmake +index 0c658bd..51721d1 100644 +--- a/startkde/startkde.cmake ++++ b/startkde/startkde.cmake +@@ -64,6 +64,14 @@ fi + + mkdir -p $configDir + ++kdehome=$HOME/@KDE_DEFAULT_HOME@ ++test -n "$KDEHOME" && kdehome=`echo "$KDEHOME"|sed "s,^~/,$HOME/,"` ++ ++# see kstartupconfig source for usage ++mkdir -m 700 -p $kdehome ++mkdir -m 700 -p $kdehome/share ++mkdir -m 700 -p $kdehome/share/config ++ + #This is basically setting defaults so we can use them with kstartupconfig5 + cat >$configDir/startupconfigkeys < + + + + plasma-workspace + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + app:gui + The KDE5 Plasma Workspace Components + The KDE5 Plasma Workspace Components + http://download.kde.org/stable/plasma/5.3.2/plasma-workspace-5.3.2.tar.xz + + qt5-base-devel + libkscreen-devel + libksysguard-devel + libqalculate-devel + gpsd-devel + kwayland + kf5-baloo-devel + extra-cmake-modules + kdelibs4-support-devel + kdoctools-devel + krunner-devel + kwin-devel + libXcursor-devel + libXrender-devel + xorg-util + xcb-util-keysyms-devel + xcb-util-image-devel + xcb-util-renderutil-devel + networkmanager-qt-devel + kxmlrpcclient-devel + kio-devel + kjs-devel + pam + zlib-devel + libX11-devel + libXau-devel + libgcc + libxcb-devel + kf5-kactivities-devel + extra-cmake-modules + + + + + + + + + plasma-workspace + + qt5-base+ + qt5-tools + cln + kio + kjs + pam + zlib + libX11 + libXau + libgcc + libxcb + kf5-kactivities + gpsd + libSM + libXi + libICE + kio + kjs + libXfixes + kf5-baloo + kauth + kdesu + ki18n + solid + qt5-script + qt5-phonon + qt5-webkit + kcrash + kconfig + kwallet + kxmlgui + kpackage + kservice + qt5-x11extras + kdewebkit + kidletime + wayland-client + wayland-server + kbookmarks + kguiaddons + kitemviews + qt5-declarative + qt5-libdbusmenu + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + kjobwidgets + kdeclarative + kglobalaccel + ktextwidgets + kwindowsystem + kxmlrpcclient + kconfigwidgets + knotifications + kwidgetsaddons + plasma-framework + kde-cli-tools + kjsembed + knewstuff + knotifyconfig + ktexteditor + kwayland + libkscreen + libksysguard + libqalculate + krunner + libksysguard + kdelibs4-support + networkmanager-qt + libXrender + xcb-util-keysyms + + + /etc/pam.d + /etc/xdg + /usr/share + /usr/share/applications + /usr/share/locale + /usr/bin + /usr/lib/qt5/plugins + /usr/lib/qt5/qml + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + plasma-workspace-devel + Development files for kde5 plasma-workspace + + qt5-base-devel + plasma-workspace + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + kde.pam + + + kde-workspace-devel + + + kde-workspace-devel + + + + + drkonqi + KDE crash handler + + kdewebkit + kxmlrpcclient + plasma-workspace + + + /usr/lib/libexec + + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-12 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From ecdf9efff23e5ffeda5f66477f7d5ecd9d2ef66c Mon Sep 17 00:00:00 2001 From: groni Date: Thu, 2 Jul 2015 15:41:06 +0200 Subject: [PATCH 052/175] plasma-workspace remove pisi packages --- desktop/kde/plasma/plasma-workspace/pspec.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/desktop/kde/plasma/plasma-workspace/pspec.xml b/desktop/kde/plasma/plasma-workspace/pspec.xml index 6c9c412425..45186a2e30 100755 --- a/desktop/kde/plasma/plasma-workspace/pspec.xml +++ b/desktop/kde/plasma/plasma-workspace/pspec.xml @@ -22,7 +22,7 @@ libqalculate-devel gpsd-devel kwayland - kf5-baloo-devel + baloo-devel extra-cmake-modules kdelibs4-support-devel kdoctools-devel @@ -44,7 +44,7 @@ libXau-devel libgcc libxcb-devel - kf5-kactivities-devel + kactivities-devel extra-cmake-modules @@ -69,7 +69,7 @@ libXau libgcc libxcb - kf5-kactivities + kactivities gpsd libSM libXi @@ -77,7 +77,7 @@ kio kjs libXfixes - kf5-baloo + baloo kauth kdesu ki18n From bf111299621b61379f154f384bd804901f34f80c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Thu, 2 Jul 2015 23:49:54 +0300 Subject: [PATCH 053/175] xcb-util-image fix deps --- x11/library/xcb-util-image/pspec.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/x11/library/xcb-util-image/pspec.xml b/x11/library/xcb-util-image/pspec.xml index da85a07eba..e7d4560e15 100644 --- a/x11/library/xcb-util-image/pspec.xml +++ b/x11/library/xcb-util-image/pspec.xml @@ -13,12 +13,18 @@ A number of libraries which sit on top of libxcb The xcb-util-image module provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. http://xcb.freedesktop.org/dist/xcb-util-image-0.3.9.tar.bz2 + + util-macros + libxcb-devel + xcb-util-devel + xcb-util-image xcb-util + libxcb /usr/lib @@ -46,8 +52,11 @@ emul32 libxcb-32bit + xcb-util-32bit + glibc-32bit + glibc-32bit xcb-util-32bit libxcb-32bit From fa420defe0b03b8fec40bea3116f92e6d5c52f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 00:38:50 +0300 Subject: [PATCH 054/175] xcb-util-keysyms fix deps --- x11/library/xcb-util-keysyms/pspec.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/x11/library/xcb-util-keysyms/pspec.xml b/x11/library/xcb-util-keysyms/pspec.xml index f633804891..6fb5f67684 100644 --- a/x11/library/xcb-util-keysyms/pspec.xml +++ b/x11/library/xcb-util-keysyms/pspec.xml @@ -13,10 +13,17 @@ A number of libraries which sit on top of libxcb The xcb-util-keysyms module provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. http://xcb.freedesktop.org/dist/xcb-util-keysyms-0.3.9.tar.bz2 + + util-macros + libxcb-devel + xcb-util-keysyms + + libxcb + /usr/lib /usr/share/doc @@ -43,10 +50,12 @@ emul32 libxcb-32bit + glibc-32bit xcb-util-keysyms libxcb-32bit + glibc-32bit /usr/lib32 From 4122b5694ffd107220848b77b7b96e239db2d17a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 00:47:18 +0300 Subject: [PATCH 055/175] xcb-util-renderutil fix deps --- x11/library/xcb-util-renderutil/pspec.xml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/x11/library/xcb-util-renderutil/pspec.xml b/x11/library/xcb-util-renderutil/pspec.xml index e87b73674c..22d73508eb 100644 --- a/x11/library/xcb-util-renderutil/pspec.xml +++ b/x11/library/xcb-util-renderutil/pspec.xml @@ -13,11 +13,18 @@ A number of libraries which sit on top of libxcb The xcb-util-renderutil module provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. http://xcb.freedesktop.org/dist/xcb-util-renderutil-0.3.9.tar.bz2 + + util-macros + libxcb-devel + xcb-util-renderutil - + + libxcb + + /usr/lib /usr/share/doc @@ -42,10 +49,11 @@ 32-bit shared libraries for xcb-util-renderutil emul32 + glibc-32bit libxcb-32bit - xcb-util + glibc-32bit libxcb-32bit From 4b0014fab3eadce31988c7c7d8a54912f5010dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 00:53:37 +0300 Subject: [PATCH 056/175] xcb-util-wm fix deps --- x11/library/xcb-util-wm/pspec.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/x11/library/xcb-util-wm/pspec.xml b/x11/library/xcb-util-wm/pspec.xml index 3e1c2c4ba9..08c2d9d28d 100644 --- a/x11/library/xcb-util-wm/pspec.xml +++ b/x11/library/xcb-util-wm/pspec.xml @@ -13,10 +13,17 @@ A number of libraries which sit on top of libxcb The xcb-util-wm module provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. http://xcb.freedesktop.org/dist/xcb-util-wm-0.4.1.tar.bz2 + + util-macros + libxcb-devel + xcb-util-wm + + libxcb + /usr/lib /usr/share/doc @@ -43,10 +50,12 @@ emul32 libxcb-32bit + glibc-32bit xcb-util-wm libxcb-32bit + glibc-32bit /usr/lib32 From 8ce3d893a7c5d474cd7c901de6f1640a4462c2d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 00:54:13 +0300 Subject: [PATCH 057/175] index . --- pisi-index.xml | 8884 ++++++++++++++++++++++++++++++++++--- pisi-index.xml.sha1sum | 2 +- pisi-index.xml.xz | Bin 65584 -> 78780 bytes pisi-index.xml.xz.sha1sum | 2 +- 4 files changed, 8149 insertions(+), 739 deletions(-) diff --git a/pisi-index.xml b/pisi-index.xml index 0c89d2f1c8..be403907d3 100644 --- a/pisi-index.xml +++ b/pisi-index.xml @@ -82,9 +82,7 @@ JasPer is a software-based implementation of the codec specified in the JPEG-2000 Part-1 standard (ISO/IEC 15444-1:2000). http://www.ece.uvic.ca/~mdadams/jasper/software/jasper-1.900.1.zip - freeglut-devel - mesa-devel - mesa-glu-devel + libjpeg-turbo-devel jasper-1.900.1-fixes-20081208.patch.bz2 @@ -94,9 +92,6 @@ jasper - freeglut - mesa - mesa-glu libjpeg-turbo @@ -119,7 +114,7 @@ Development files for jasper jasper için geliştirme dosyaları - jasper + jasper /usr/include @@ -132,21 +127,26 @@ emul32 emul32 - mesa-32bit - freeglut-32bit + glibc-32bit libjpeg-turbo-32bit - jasper - mesa-32bit - freeglut-32bit + jasper libjpeg-turbo-32bit + glibc-32bit /usr/lib32 + + 2015-06-26 + 1.900.1 + Rebuild, fixed + Hakan Yıldız + hknyldz93@gmail.com + 2014-05-21 1.900.1 @@ -3892,6 +3892,106 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + ocaml + http://www.ocaml.org/ + + Serdar Soytetir + kaptan@pisilinux.org + + OPL + app:console + programming.language.ocaml + Fast modern type-inferring functional programming language + Hızlı ve modern bir programlama dili + A fast modern type-inferring functional programming language descended from the ML (Meta Language) family. + OcaML, ML dilinin soyundan gelen fonksiyonel bir programlama dilidir + http://caml.inria.fr/pub/distrib/ocaml-4.02/ocaml-4.02.1.tar.xz + + zlib-devel + ncurses-devel + libX11-devel + chrpath + + + fedora/0001-Don-t-ignore-.-configure-it-s-a-real-git-file.patch + fedora/0002-Ensure-empty-compilerlibs-directory-is-created-by-gi.patch + fedora/0003-Don-t-add-rpaths-to-libraries.patch + fedora/0004-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch + fedora/0005-configure-Allow-user-defined-C-compiler-flags.patch + fedora/0009-arg-Add-no_arg-and-get_arg-helper-functions.patch + fedora/0010-arg-Allow-flags-such-as-flag-arg-as-well-as-flag-arg.patch + fedora/0011-PR-6517-use-ISO-C99-types-u-int-32-64-_t-in-preferen.patch + + programming/language/ocaml/ocaml/pspec.xml + + + ocaml + + zlib + ncurses + libX11 + + + /usr/bin/ + /usr/lib/ + /usr/share/doc/ + /usr/share/man/ + + + + + 2015-04-04 + 4.02.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-11-16 + 4.00.2 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-09-23 + 4.00.2 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-24 + 3.4.1 + Version bump. + PisiLinux Community + admins@pisilinux.org + + + 2014-02-07 + 4.00.1 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-29 + 4.01.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-09-20 + 4.00.0 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + ruby @@ -4076,6 +4176,408 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + python-MarkupSafe + http://pypi.python.org/pypi/MarkupSafe + + PisiLinux Community + admins@pisilinux.org + + BSD + library + programming.language.python + Implements a XML/HTML/XHTML Markup safe string for Python + XML/HTML/XHTML markup dilleri için güvenli python karakter dizeleri gerçekleştirimi + python-MarkupSafe, implements a unicode subclass that supports HTML strings. + python-MarkupSafe, HTML karakter dizeleri için unicode bir alt sınıf gerçekleştirimi sağlar. + http://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.23.tar.gz + + python-setuptools + + programming/language/python/python-MarkupSafe/pspec.xml + + + python-MarkupSafe + + /usr/lib/python2.* + /usr/share/doc + + + + + 2014-05-29 + 0.23 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2011-11-11 + 0.15 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + python-beaker + http://beaker.groovie.org/ + + PisiLinux Community + admins@pisilinux.org + + BSD + library + programming.language.python + A Session and Caching library with WSGI Middleware + Oturum ve önbellekleme kitaplığı + python-beaker is a web session and general caching library that includes WSGI middleware for use in web applications. + python-beaker, web programları için oturum ve genel önbellekleme fonksiyonlarını içeren bir kitaplıktır. + http://pypi.python.org/packages/source/B/Beaker/Beaker-1.6.4.tar.gz + + python-setuptools + + programming/language/python/python-beaker/pspec.xml + + + python-beaker + + /usr/lib/ + /usr/share/doc + + + + + 2013-11-04 + 1.6.4 + Rebuild + Erdinç Gültekin + admins@pisilinux.org + + + 2012-11-11 + 1.6.4 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + python-mako + http://www.makotemplates.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + app:console + library + programming.language.python + A python templating language + Python şablonlama dili + python-mako is a super-fast templating language that borrows the best ideas from the existing templating languages. + python-mako, varolan şablonlama dillerindeki en iyi fikirleri bir araya getiren süper hızlı bir şablonlama dilidir. + http://pypi.python.org/packages/source/M/Mako/Mako-0.9.1.tar.gz + + python-setuptools + + programming/language/python/python-mako/pspec.xml + + + python-mako + + python-beaker + python-MarkupSafe + + + /usr/bin + /usr/lib + /usr/share/doc + + + + python-mako-docs + python-mako için belgelendirme dosyaları + + python-mako + + + /usr/share/doc/*/html + /usr/share/doc/*/build + /usr/share/doc/*/examples + + + + + 2014-04-16 + 0.9.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-11-11 + 0.7.3 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + tcl + http://www.tcl.tk + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + programming.language.tcl + Tcl programming language + Tcl programlama dili + Tcl provides a powerful platform for creating integration applications that tie together diverse applications, protocols, devices, and frameworks. + Tcl, çeşitli uygulamalar geliştirmek için kullanılabilen bir programlama dilidir. + Tcl provee una plataforma potente para crear aplicaciones de integración de diversos aplicaciones, protocolos, dispositivos y frameworks + mirrors://sourceforge/tcl/tcl8.6.4-src.tar.gz + + zlib-devel + + programming/language/tcl/tcl/pspec.xml + + + tcl + + zlib + + + /usr/bin + /usr/lib + /usr/lib/tcl8.5 + /usr/share/doc + /usr/share/man + + + + tcl-devel + Development files for tcl + tcl için geliştirme dosyaları + + tcl + + + /usr/include + /usr/lib/*.a + /usr/lib/pkgconfig + /usr/lib/tclConfig.sh + /usr/share/man/man3 + + + + sqlite-tcl + files for sqlite-tcl + + tcl + + + /usr/lib/sqlite3.8.8.3/libsqlite* + /usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.3.tm + /usr/share/man/mann/tdbc_sqlite3.n + /usr/share/man/mann/sqlite3.n + + + + + 2015-06-11 + 8.6.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-03 + 8.6.3 + Rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-12-12 + 8.6.3 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-09-30 + 8.6.2 + Version bump. + Kamil Atlı + suvari@pisilinux.org + + + 2014-05-17 + 8.6.1 + Add patch. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-01-06 + 8.6.1 + Rebuild to fix stripping. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-24 + 8.6.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-26 + 8.6.0 + Move pc files to devel pack, increase release no. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-26 + 8.6.0 + bump + Erdinç Gültekin + admins@pisilinux.org + + + 2012-09-15 + 8.5.12 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + tcltk + http://www.tcl.tk + + PisiLinux Community + admins@pisilinux.org + + as-is + library + programming.language.tcl + Tk est une boîte à outils X11 implémentée avec le langage de script Tcl. + An X11 toolkit implemented with the Tcl scripting language + Tcl betik dili ile yazılmış X11 araç ve kitaplıkları + Tk is an X Windows widget set designed to work closely with the tcl scripting language. It allows you to write simple programs with full featured GUIs in only a little more time then it takes to write a text based interface. + Tk, tcl betik dili ile birlikte kullanılması için tasarlanmış bir X Windows araç setidir. Metin tabanlı arayüzlere oranla daha kısa sürede tam özellikli grafik arayüzlere sahip basit programlar yazmanızı sağlar. + mirrors://sourceforge/tcl/tk8.6.3-src.tar.gz + + tcl-devel + libX11-devel + libXft-devel + fontconfig-devel + + + tk-8.6.1-conf.patch + tk-8.6.1-fix-xft.patch + tk-8.6.1-make.patch + + programming/language/tcl/tcltk/pspec.xml + + + tcltk + + tcl + libX11 + libXft + fontconfig + + + /usr/bin + /usr/lib + /usr/lib/tk8.5 + /usr/share/doc + /usr/share/man + + + + tcltk-devel + Development files for tcltk + tcltk için geliştirme dosyaları + + tcltk + + + /usr/include + /usr/lib/*.a + /usr/lib/tkConfig.sh + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + 2014-12-14 + 8.6.3 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-09-30 + 8.6.2 + Version bump. + Kamil Atlı + suvari@pisilinux.org + + + 2014-05-17 + 8.6.1 + Version bump and add patch. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-09 + 8.6.0 + Rebuild + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-07-26 + 8.6.0 + Move pc files to devel pack, increase release no. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-26 + 8.6.0 + bump + Erdinç Gültekin + admins@pisilinux.org + + + 2012-09-15 + 8.5.12 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + libbsd @@ -4373,6 +4875,412 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libedit + http://www.thrysoee.dk/editline + + PisiLinux Community + admins@pisilinux.org + + BSD + library + programming.misc + An autotool and libtoolized port of the NetBSD Editline library + NetBSD Editline kitaplığının Linux portu + libedit is a command line editing and history library. It is designed to be used by interactive programs that allow the user to type commands at a terminal prompt. + libedit, geçmiş bilgisini ve komut satırı düzenleme işlerini kolaylaştıran bir kitaplıktır. + http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz + + ncurses-devel + + programming/misc/libedit/pspec.xml + + + libedit + + ncurses + + + /usr/lib + /usr/share/man + /usr/share/doc + + + + libedit-devel + Development files for libedit + libedit için geliştirme dosyaları + + libedit + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + 2015-06-25 + 3.1_20150325 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-19 + 3.1_20140213 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2013-10-27 + 3.1_20130712 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-10-17 + 3.0_20120601 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + libtalloc + http://talloc.samba.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv3+ + library + programming.misc + Hierarchical pool based memory allocator + Bellek yönetim kitaplığı + libtalloc is a library which implements a hierarchical allocator with destructors which is the core memory allocator in samba. + libtalloc, samba hizmetinin temel bellek ayırıcısını oluşturan hiyerarşik havuz tabanlı ayırıcıyı gerçekleyen kitaplıktır. + http://www.samba.org/ftp/talloc/talloc-2.1.2.tar.gz + + docbook-xsl + libxslt-devel + python-devel + attr-devel + + programming/misc/libtalloc/pspec.xml + + + libtalloc + + python + attr + + + /usr/lib + /usr/share/man + /usr/share/doc + + + + libtalloc-devel + Development files for libtalloc + libtalloc için geliştirme dosyaları + + libtalloc + + + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/include + /usr/share/man/man3 + + + + libtalloc-32bit + 32-bit shared libraries for libtalloc + libtalloc için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + attr-32bit + + + glibc-32bit + attr-32bit + libtalloc + + + /usr/lib32 + + + + + 2015-06-28 + 2.1.2 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-22 + 2.1.1 + Version bump. + Kamil Atlı + suvarice@gmail.com + + + 2014-04-23 + 2.1.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-09 + 2.0.8 + Rebuild for buildhost + PisiLinux Community + admins@pisilinux.org + + + 2013-07-07 + 2.0.8 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-09-25 + 2.0.7 + First release + Erdem Artan + admins@pisilinux.org + + + + + + llvm + http://www.llvm.org/ + + Serdar Soytetir + kaptan@pisilinux.org + + NCSA + programming.build + The Low Level Virtual Machine + Düşük Seviye Sanal Makine (LLVM) + The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them. + LLVM projesi, modüler ve tekrar tekrar kullanılabilir derleyici teknolojileri koleksiyonudur. Adının aksine geleneksel sanal makinelerden çok farklıdır; ancak sanal makineleri oluşturmak için faydalı kitaplıklar içerir. + http://llvm.org/releases/3.5.0/llvm-3.5.0.src.tar.xz + http://llvm.org/releases/3.5.0/cfe-3.5.0.src.tar.xz + http://llvm.org/releases/3.5.0/clang-tools-extra-3.5.0.src.tar.xz + http://llvm.org/releases/3.5.0/compiler-rt-3.5.0.src.tar.xz + + zlib-devel + libxml2-devel + ncurses-devel + ocaml + libffi-devel + groff + libedit-devel + binutils + + + llvm-3.5.0-fix-cmake-llvm-exports.patch + llvm-3.5.0-force-link-pass.o.patch + + programming/build/llvm/pspec.xml + + + llvm + app:console + library + + llvm-libs + libxml2 + libgcc + ncurses + + + /usr/bin + /usr/bin/llvm-config + /usr/include/llvm* + /usr/lib/llvm + /usr/lib + /etc/ld.so.conf.d + /etc/llvm + /usr/share/doc + /usr/share/vim + /usr/share/llvm/cmake + /usr/share/kde4 + /usr/share/man + + + + llvm-libs + library + + zlib + libffi + libedit + libgcc + ncurses + + + /usr/lib/llvm/libLLVM-3* + /usr/share/licenses/llvm-libs/LICENSE + + + + llvm-ocaml + OCaml binding for LLVM + LLVM için OCaml bağlayıcısı + library + programming.language.ocaml + + llvm + ocaml + + + /usr/lib/ocaml + + + + llvm-clang-analyzer + A source code analysis framework + C ve Objective-C için kod analiz altyapısı + The Clang Static Analyzer consists of both a source code analysis framework and a standalone tool that finds bugs in C and Objective-C programs. + app:console + + llvm-clang + + + /usr/lib/clang-analyzer + /usr/bin/scan-* + + + + llvm-clang + A C language family front-end for LLVM + LLVM için C dili ailesi ön ucu + The goal of the Clang project is to create a new C, C++, Objective C and Objective C++ front-end for the LLVM compiler. + + llvm-libs + libgcc + ncurses + + + /usr/bin/clang* + /usr/bin/tblgen + /usr/lib/clang + /usr/lib/clang/libclang.so + /usr/share/man/man1/clang.1 + + + + llvm-clang-devel + Development headers for llvm-clang + llvm-clang için başlık dosyaları + + llvm-clang + + + /usr/include/clang + /usr/include/clang-c + + + + llvm-docs + Documentation for LLVM + LLVM belgeleri + data:doc + programming.docs + + /usr/share/doc/llvm/html + /usr/share/doc/llvm/ocamldoc + + + + llvm-32bit + 32-bit shared libraries for llvm + emul32 + emul32 + + zlib-32bit + libffi-32bit + + + llvm + libgcc + libedit + ncurses-32bit + zlib-32bit + libffi-32bit + + + /usr/lib32 + + + + + 2014-09-23 + 3.5.0 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-11 + 3.4.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 3.4.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-09-01 + 3.3 + Release bump, already cleaned. + marcin bojara + marcin@pisilinux.org + + + 2013-07-26 + 3.3 + Version bump. + marcin bojara + marcin@pisilinux.org + + + 2013-02-18 + 3.2 + version bump + PisiLinux Community + admins@pisilinux.org + + + 2012-06-11 + 3.1 + First release + marcin bojara + marcin@pisilinux.org + + + poppler-data @@ -5822,6 +6730,94 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libxshmfence + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + X.Org libxshmfence library + libxshmfence is the X Window System video extension library. + mirrors://xorg/individual/lib/libxshmfence-1.2.tar.bz2 + + libXext-devel + util-macros + + x11/library/libxshmfence/pspec.xml + + + libxshmfence + + libXext + + + /usr/lib + /usr/share/doc + + + + libxshmfence-devel + Development files for libxshmfence + + libxshmfence + libXext-devel + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/man + + + + libxshmfence-32bit + 32-bit shared libraries for libxshmfence + emul32 + emul32 + + glibc-32bit + libX11-32bit + libXext-32bit + + + libxshmfence + glibc-32bit + libX11-32bit + libXext-32bit + + + /usr/lib32 + + + + + 2015-05-05 + 1.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-16 + 1.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 1.1 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + libXfixes @@ -6155,10 +7151,17 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression The xcb-util-renderutil module provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. xcb-util-renderutil modülü, çekirdek X protokolü ve bazı eklentiler için libxcb temelli kitaplıklar içerir. http://xcb.freedesktop.org/dist/xcb-util-renderutil-0.3.9.tar.bz2 + + util-macros + libxcb-devel + x11/library/xcb-util-renderutil/pspec.xml xcb-util-renderutil + + libxcb + /usr/lib /usr/share/doc @@ -6184,10 +7187,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 emul32 + glibc-32bit libxcb-32bit - xcb-util + glibc-32bit libxcb-32bit @@ -6232,6 +7236,365 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libvdpau + http://freedesktop.org/wiki/Software/VDPAU + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + Wrapper library for the Video Decode and Presentation API + Video kodu çözme ve sunma API'si için ara kitaplık + VDPAU is the Video Decode and Presentation API for UNIX. It provides an interface to video decode acceleration and presentation hardware present in modern GPUs. + VDPAU (Video Decode and Presentation API for UNIX), modern grafik işlemcilerde yer alan video kod çözümü hızlandırma ve sunma donanımına bir arayüz sağlar. + http://people.freedesktop.org/~aplattner/vdpau/libvdpau-0.9.tar.gz + + libXext-devel + + x11/library/libvdpau/pspec.xml + + + libvdpau + + libXext + + + /etc + /usr/lib + /usr/share/doc + + + + libvdpau-devel + Development files for libvdpau + libvdpau için geliştirme dosyaları + + libvdpau + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + libvdpau-32bit + 32-bit shared libraries for libvdpau + libvdpau için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + libXext-32bit + + + libvdpau + glibc-32bit + libXext-32bit + + + /usr/lib32 + + + + + 2015-01-22 + 0.9 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-09-01 + 0.8 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-16 + 0.7 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-20 + 0.7 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-10-07 + 0.7 + Version bump, clean actions.py. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 0.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-06 + 0.6 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-10 + 0.5 + First release + Marcinn Bojara + marcin@pisilinux.org + + + + + + libXv + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + Librairie Xv de X.Org + X.Org Xv library + X.Org Xv kitaplığı + X.Org Xv Bibliothek + LibXv is the X Window System video extension library. + mirrors://xorg/individual/lib/libXv-1.0.10.tar.bz2 + + libX11-devel + libXext-devel + util-macros + + x11/library/libXv/pspec.xml + + + libXv + + libX11 + libXext + + + /usr/lib + /usr/share/doc + + + + libXv-devel + Development files for libXv + libXv için geliştirme dosyaları + + libXv + libXext-devel + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/man + + + + libXv-32bit + 32-bit shared libraries for libXv + libXv için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + libX11-32bit + libXext-32bit + + + libXv + glibc-32bit + libX11-32bit + libXext-32bit + + + /usr/lib32 + + + + + 2014-05-16 + 1.0.10 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 1.0.10 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-12 + 1.0.10 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-25 + 1.0.9 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-30 + 1.0.9 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-21 + 1.0.8 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 1.0.7 + First release + Erdem Artan + admins@pisilinux.org + + + + + + libXxf86vm + http://x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + Librairie Xxf86vm de X.Org + X.Org Xxf86vm library + X.Org Xxf86vm kitaplığı + X.Org Xxf86vm Bibliothek + LibXxf86vm is the client library for the XFree86-VidMode X extension. + mirrors://xorg/individual/lib/libXxf86vm-1.1.3.tar.bz2 + + libXext-devel + libX11-devel + util-macros + + x11/library/libXxf86vm/pspec.xml + + + libXxf86vm + + libX11 + libXext + + + /usr/lib + /usr/share/doc + + + + libXxf86vm-devel + Development files for libXxf86vm + libXxf86vm için geliştirme dosyaları + + libXxf86vm + libXext-devel + + + /usr/include/X11 + /usr/lib/pkgconfig/ + /usr/lib32/pkgconfig + /usr/share/man + + + + libXxf86vm-32bit + 32-bit shared libraries for libXxf86vm + libXxf86vm için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + libXext-32bit + + + libXxf86vm + libXext-32bit + libX11-32bit + + + /usr/lib32 + + + + + 2014-05-16 + 1.1.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 1.1.3 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 1.1.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-26 + 1.1.3 + Move pc files to devel pack, rebuild. + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-06-21 + 1.1.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 1.1.2 + First release + Erdem Artan + admins@pisilinux.org + + + xcb-util-wm @@ -6248,10 +7611,17 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression The xcb-util-wm module provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. xcb-util-wm modülü, çekirdek X protokolü ve bazı eklentiler için libxcb temelli kitaplıklar içerir. http://xcb.freedesktop.org/dist/xcb-util-wm-0.4.1.tar.bz2 + + util-macros + libxcb-devel + x11/library/xcb-util-wm/pspec.xml xcb-util-wm + + libxcb + /usr/lib /usr/share/doc @@ -6278,10 +7648,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 libxcb-32bit + glibc-32bit xcb-util-wm libxcb-32bit + glibc-32bit /usr/lib32 @@ -6343,7 +7715,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression http://dri.freedesktop.org/libdrm/libdrm-2.4.60.tar.bz2 libpciaccess-devel - cairo-32bit x11/library/libdrm/pspec.xml @@ -6432,10 +7803,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 emul32 + glibc-32bit libpciaccess-32bit libdrm + glibc-32bit libpciaccess-32bit @@ -6593,10 +7966,17 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Wayland Compositor Infrastructure Wayland is a protocol for a compositor to talk to its clients as well as a C library implementation of that protocol. http://wayland.freedesktop.org/releases/wayland-1.7.0.tar.xz + + libffi-devel + expat-devel + x11/library/wayland/pspec.xml wayland + + expat + /usr/bin /usr/share/doc/ @@ -6609,6 +7989,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression wayland-client Wayland client library + libffi wayland @@ -6630,6 +8011,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression wayland-server Wayland server library + libffi wayland @@ -6656,10 +8038,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 libffi-32bit + glibc-32bit + expat-32bit wayland + expat-32bit libffi-32bit + glibc-32bit /usr/lib32 @@ -6724,6 +8110,357 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libXvMC + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + Librairie XvMC de X.Org + X.Org XvMC library + X.Org XvMC kitaplığı + X.Org XvMC Bibliothek + LibXvMC is the X-Video Motion Compensation Library. + mirrors://xorg/individual/lib/libXvMC-1.0.8.tar.bz2 + + libX11-devel + libXext-devel + libXv-devel + xorg-proto + util-macros + + x11/library/libXvMC/pspec.xml + + + libXvMC + + libXext + libX11 + + + /usr/lib + /usr/share/doc + + + + libXvMC-devel + Development files for libXvMC + libXvMC için geliştirme dosyaları + + libXv-devel + libXext-devel + libXvMC + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/doc/libXvMC/XvMC_API.txt + + + + libXvMC-32bit + 32-bit shared libraries for libXvMC + libXvMC için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + libXv-32bit + libX11-32bit + libXext-32bit + + + libX11-32bit + libXext-32bit + libXvMC + + + /usr/lib32 + + + + + 2014-05-16 + 1.0.8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-19 + 1.0.8 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-11-06 + 1.0.8 + Fix deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-07 + 1.0.8 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-02 + 1.0.8 + Split 32bit. + PisiLinux Community + admins@pisilinux.org + + + 2013-08-25 + 1.0.8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-30 + 1.0.8 + Rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-06-21 + 1.0.8 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 1.0.7 + First release + Erdem Artan + admins@pisilinux.org + + + + + + libpciaccess + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + X.Org PCI access library + X.Org PCI erişim kitaplığı + libpciaccess is the Xorg library for portable PCI access routines across multiple operating systems. + libpciaccess, değişik işletim sistemleri için taşınabilir PCI erişim rutinleri içeren Xorg kitaplığıdır. + mirrors://xorg/individual/lib/libpciaccess-0.13.4.tar.bz2 + + util-macros + + x11/library/libpciaccess/pspec.xml + + + libpciaccess + + /usr/lib + /usr/share/doc + + + + libpciaccess-devel + Development files for libpciaccess + libpciaccess için geliştirme dosyaları + + libpciaccess + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + libpciaccess-32bit + 32-bit shared libraries for libpciaccess + libpciaccess için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + glibc-32bit + libpciaccess + + + /usr/lib32 + + + + + 2015-05-05 + 0.13.4 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-16 + 0.13.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 0.13.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 0.13.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-21 + 0.13.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-01 + 0.13.1 + rebuild + Erdinc Gültekin + erdincgultekin@pisilinux.org + + + 2012-11-22 + 0.13.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + libXScrnSaver + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + Librairie XScrnSaver de X.Org + X.Org XScrnSaver library + X.Org XScrnSaver kitaplığı + X.Org XScrnSaver Bibliothek + LibXScrnSaver allows using screensavers in X clients. + mirrors://xorg/individual/lib/libXScrnSaver-1.2.2.tar.bz2 + + libXext-devel + libX11-devel + util-macros + + x11/library/libXScrnSaver/pspec.xml + + + libXScrnSaver + + libXext + libX11 + + + /usr/lib + /usr/share/doc + + + + libXScrnSaver-devel + Development files for libXScrnSaver + libXScrnSaver için geliştirme dosyaları + + libXScrnSaver + libXext-devel + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/man + + + + libXScrnSaver-32bit + 32-bit shared libraries for libXScrnSaver + libXScrnSaver için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + libX11-32bit + libXext-32bit + + + libXScrnSaver + glibc-32bit + libX11-32bit + libXext-32bit + + + /usr/lib32 + + + + + 2014-05-16 + 1.2.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 1.2.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 1.2.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 1.2.2 + First release + Erdem Artan + admins@pisilinux.org + + + libX11 @@ -6968,6 +8705,61 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libomxil-bellagio + http://omxil.sourceforge.net + + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + LGPLv2.1 + library + x11.library + An opensource implementation of the OpenMAX Integration Layer API + An opensource implementation of the OpenMAX Integration Layer API + An opensource implementation of the OpenMAX Integration Layer API + An opensource implementation of the OpenMAX Integration Layer API + http://downloads.sourceforge.net/project/omxil/omxil/Bellagio%200.9.3/libomxil-bellagio-0.9.3.tar.gz + + glibc-devel + + + fedora-fixes.patch + + x11/library/libomxil-bellagio/pspec.xml + + + libomxil-bellagio + + /usr/bin + /usr/lib + /usr/share + /usr/share/man + /usr/share/doc + + + + libomxil-bellagio-devel + Development files for mesa + + libomxil-bellagio + + + /usr/include + /usr/lib/pkgconfig + + + + + 2015-04-07 + 0.9.3 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + libXtst @@ -7117,6 +8909,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXdamage libXfixes + libX11 /usr/lib @@ -7130,6 +8923,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXdamage libXfixes-devel + libX11-devel /usr/include/X11 @@ -7144,9 +8938,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 emul32 - libXfixes + glibc-32bit + libX11-32bit + libXfixes-32bit + glibc-32bit libXdamage libXfixes-32bit libX11-32bit @@ -7223,12 +9020,18 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression The xcb-util-image module provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. xcb-util-image modülü, çekirdek X protokolü ve bazı eklentiler için libxcb temelli kitaplıklar içerir. http://xcb.freedesktop.org/dist/xcb-util-image-0.3.9.tar.bz2 + + util-macros + libxcb-devel + xcb-util-devel + x11/library/xcb-util-image/pspec.xml xcb-util-image xcb-util + libxcb /usr/lib @@ -7256,8 +9059,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 libxcb-32bit + xcb-util-32bit + glibc-32bit + glibc-32bit xcb-util-32bit libxcb-32bit @@ -7326,9 +9132,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression llvm-libs llvm-clang-devel xorg-proto + expat-devel libdrm-devel libXext-devel wayland-devel + wayland-server + wayland-client libvdpau-devel libXfixes-devel libtalloc-devel @@ -7337,6 +9146,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXxf86vm-devel libXvMC-devel libXv-devel + eudev-devel python-mako libxshmfence-devel @@ -7346,6 +9156,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression mesa llvm-libs + llvm-clang + libX11 + libgcc + libxcb + expat libdrm libXext libXfixes @@ -7358,8 +9173,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libdrm-nouveau wayland-client wayland-server - llvm-clang - libclc libxshmfence @@ -7410,7 +9223,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libdrm-32bit libXext-32bit libXvMC-32bit - libudev-32bit + eudev-32bit wayland-32bit libvdpau-32bit libXfixes-32bit @@ -7419,8 +9232,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libdrm-intel-32bit libdrm-radeon-32bit libdrm-nouveau-32bit + libxshmfence-32bit + glibc-32bit + libgcc + libcxb-32bit expat-32bit libX11-32bit libdrm-32bit @@ -7436,6 +9253,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libxshmfence-32bit libdrm-radeon-32bit libdrm-nouveau-32bit + wayland-32bit mesa @@ -7604,10 +9422,17 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Library to convert evdev keycodes to keysyms Evdev keycode'larını keysms türüne çeviren bir kitaplık https://github.com/xkbcommon/libxkbcommon/archive/xkbcommon-0.5.0.tar.gz + + util-macros + libxcb-devel + x11/library/libxkbcommon/pspec.xml libxkbcommon + + libxcb + /usr/share/doc/libxkbcommon/ /usr/lib/lib*.so* @@ -7631,9 +9456,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression 32-bit shared libraries for libxkbcommon emul32 emul32 + + libxcb-32bit + glibc-32bit + libxkbcommon libxcb-32bit + glibc-32bit /usr/lib32 @@ -7727,6 +9557,135 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libXft + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + Librairie Xft de X.Org + X.Org Xft library + X.Org Xft kitaplığı + X.Org Xft Bibliothek + libXft is the X FreeType interface library. + mirrors://xorg/individual/lib/libXft-2.3.2.tar.bz2 + + util-macros + freetype-devel + expat-devel + fontconfig-devel + libXrender-devel + + x11/library/libXft/pspec.xml + + + libXft + + libX11 + freetype + fontconfig + libXrender + + + /usr/lib + /usr/share/doc + + + + libXft-devel + Development files for libXft + libXft için geliştirme dosyaları + + libXft + freetype-devel + fontconfig-devel + libXrender-devel + + + /usr/bin + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/man + + + + libXft-32bit + 32-bit shared libraries for libXft + libXft için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + freetype-32bit + fontconfig-32bit + libXrender-32bit + zlib-32bit + libX11-32bit + glibc-32bit + + + libXft + freetype-32bit + fontconfig-32bit + libXrender-32bit + zlib-32bit + libX11-32bit + glibc-32bit + + + /usr/lib32 + + + + + 2014-08-31 + 2.3.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-16 + 2.3.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-01 + 2.3.1 + Rebuild for freetype. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-07 + 2.3.1 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 2.3.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-22 + 2.3.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + libXrandr @@ -7747,6 +9706,8 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXext-devel libXrender-devel + libX11-devel + util-macros x11/library/libXrandr/pspec.xml @@ -7755,6 +9716,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXext libXrender + libX11 /usr/lib @@ -7784,12 +9746,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 emul32 + glibc-32bit libX11-32bit libXext-32bit libXrender-32bit libXrandr + glibc-32bit libX11-32bit libXext-32bit libXrender-32bit @@ -8111,6 +10075,9 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXcursor is the X Cursor management library. It allows using different mouse skins and modifying of the text cursor. mirrors://xorg/individual/lib/libXcursor-1.1.14.tar.bz2 + util-macros + libX11-devel + xorg-proto libXfixes-devel libXrender-devel @@ -8119,6 +10086,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXcursor + libX11 libXfixes libXrender @@ -8134,6 +10102,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXcursor libXfixes-devel + libX11-devel libXrender-devel @@ -8150,12 +10119,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 emul32 + glibc-32bit libX11-32bit libXfixes-32bit libXrender-32bit libXcursor + glibc-32bit libX11-32bit libXfixes-32bit libXrender-32bit @@ -8226,10 +10197,18 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression X.Org Xrender Bibliothek The X Rendering Extension (Render) introduces digital image composition as the foundation of a new rendering model within the X Window System. Rendering geometric figures is accomplished by client-side tesselation into either triangles or trapezoids. mirrors://xorg/individual/lib/libXrender-0.9.8.tar.bz2 + + libX11-devel + xorg-proto + util-macros + x11/library/libXrender/pspec.xml libXrender + + libX11 + /usr/lib /usr/share/doc @@ -8241,6 +10220,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXrender için geliştirme dosyaları libXrender + libX11-devel /usr/include/X11 @@ -8256,10 +10236,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 emul32 + glibc-32bit libX11-32bit libXrender + glibc-32bit libX11-32bit @@ -8320,10 +10302,17 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression The xcb-util-keysyms module provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. xcb-util-keysyms modülü, çekirdek X protokolü ve bazı eklentiler için libxcb temelli kitaplıklar içerir. http://xcb.freedesktop.org/dist/xcb-util-keysyms-0.3.9.tar.bz2 + + util-macros + libxcb-devel + x11/library/xcb-util-keysyms/pspec.xml xcb-util-keysyms + + libxcb + /usr/lib /usr/share/doc @@ -8349,10 +10338,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 libxcb-32bit + glibc-32bit xcb-util-keysyms libxcb-32bit + glibc-32bit /usr/lib32 @@ -8752,10 +10743,17 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression The xcb-util module provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. xcb-util modülü, çekirdek X protokolü ve bazı eklentiler için libxcb temelli kitaplıklar içerir. http://xcb.freedesktop.org/dist/xcb-util-0.3.9.tar.bz2 + + util-macros + libxcb-devel + x11/library/xcb-util/pspec.xml xcb-util + + libxcb + /usr/lib /usr/share/doc @@ -8782,10 +10780,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 libxcb-32bit + glibc-32bit xcb-util libxcb-32bit + glibc-32bit /usr/lib32 @@ -11067,6 +13067,74 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kfilemetadata + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 library for extracting meta data from files. + KDE library for extracting meta data from files. + http://download.kde.org/stable/plasma/5.3.1/kfilemetadata-5.9.1.tar.xz + + qt5-base-devel + python + extra-cmake-modules + + desktop/kde/kde5-plasma/kfilemetadata/pspec.xml + + + kfilemetadata + + qt5-base + ebook-tools + libgcc + exiv2-libs + taglib + ffmpeg + taglib + poppler-qt5 + karchive + ki18n + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kfilemetadata-devel + Development files for kfilemetadata + + qt5-base-devel + kfilemetadata + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-03 + 5.9.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-khelpcenter @@ -12719,6 +14787,281 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + qrencode + http://fukuchi.org/works/qrencode/index.en.html + + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + LGPLv2.1 + library + unknown + A C library for encoding data in a QR code symbol + QR kod sembolüne veri gömmek için bir kitaplık + qrencode is a C library for encoding data in a QR Code symbol, a kind of 2D symbology that can be scanned by handy terminals such as a mobile phone with CCD. The capacity of QR Code is up to 7000 digits or 4000 characters, and is highly robust. + qrencode, cep telefonları gibi mobil cihazlar tarafından kolaylıkla taranabilen, 2 boyutlu bir sembol olan QR kod içerisinde veri gömmek için kullanılan bir kitaplıktır. + http://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz + + libsdl-devel + m4 + + desktop/kde/addon/qrencode/pspec.xml + + + qrencode + + libpng + + + /usr/lib + /usr/bin/qrencode + /usr/share/man/man1 + /usr/share/doc + + + + qrencode-devel + Development files for qrencode + qrencode için geliştirme dosyaları + + qrencode + + + /usr/include + /usr/lib/pkgconfig + + + + + 2015-02-22 + 3.4.4 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-22 + 3.3.1 + Rebuild. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2012-04-05 + 3.3.1 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + prison-qt5 + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + MIT + library + unknown + A barcode API to produce QRCode barcodes and DataMatrix barcode + A barcode API to produce QRCode barcodes and DataMatrix barcode. + http://download.kde.org/stable/prison/1.1/src/prison-1.1.0.tar.xz + + python3 + mesa-devel + + desktop/kde/addon/prison-qt5/pspec.xml + + + prison-qt5 + + qt + libgcc + mesa + libdmtx + qrencode + + + /usr/lib + /usr/share/doc + + + prison + + + prison + + + + prison-qt5-devel + Development files for libepoxy + + prison-qt5 + + + /usr/include + /usr/lib/pkgconfig + + + prison-devel + + + prison-devel + + + + + 2015-06-29 + 1.1.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + libdmtx + http://www.libdmtx.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2+ + library + unknown + A Library for working with Data Matrix 2D bar-codes + Data Matrix 2D barkodlarıyla çalışmak için kitaplık + libdmtx is an open source software for reading and writing Data Matrix 2D bar-codes on Linux, Unix, OS X, Windows and mobile devices. + libdmtx, Linux, Unix, OS X, Windows ve mobil işletim sistemlerinde Data Matrix 2D barkodlarını okumak ve yazmak için kullanılan açık kaynaklı bir kitaplıktır. + http://sourceforge.net/projects/libdmtx/files/libdmtx/0.7.4/libdmtx-0.7.4.tar.gz + + imagemagick-devel + + desktop/kde/addon/libdmtx/pspec.xml + + + libdmtx + + imagemagick + + + /usr/lib + /usr/share/doc + + + + libdmtx-devel + Development files for libdmtx + libdmtx için geliştirme dosyaları + + libdmtx + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + 2015-06-05 + 0.7.4 + Rebuild. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2011-08-09 + 0.7.4 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + kross + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + KDE5 application scripting helper + Kross is a scripting bridge to embed scripting functionality into an application. It supports QtScript as a scripting interpreter backend. + http://download.kde.org/stable/frameworks/5.11/portingAids/kross-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + kdoctools-devel + extra-cmake-modules + + desktop/kde/porting-aids/kross/pspec.xml + + + kross + + qt5-base + qt5-script + libgcc + kcoreaddons + ki18n + kcompletion + kiconthemes + kio + kparts + kwidgetsaddons + kxmlgui + + + /usr/bin + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + /usr/share/man + + + + kross-devel + Development files for kross + + qt5-base-devel + kross + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-kjsembed @@ -12783,6 +15126,71 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kmediaplayer + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + KDE5 media player Plugin interface for media player features + KMediaPlayer builds on the KParts framework to provide a common interface for KParts that can play media files. + http://download.kde.org/stable/frameworks/5.11/portingAids/kmediaplayer-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/porting-aids/kmediaplayer/pspec.xml + + + kmediaplayer + + qt5-base + libgcc + kparts + kxmlgui + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kmediaplayer-devel + Development files for kmediaplayer + + qt5-base-devel + kmediaplayer + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-kjs @@ -12927,7 +15335,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel perl-URI qt5-tools-devel - kde5-kdoctools-devel + libSM-devel + docbook-xml + openssl-devel + intltool + kdoctools-devel NetworkManager-devel extra-cmake-modules @@ -12981,7 +15393,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Development files for kdelibs4-support qt5-base-devel - kde5-kdelibs4-support + kde5-kdelibs4-support /usr/include @@ -12990,6 +15402,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + 2015-06-23 + 5.10.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + 2015-06-01 5.10.0 @@ -13150,6 +15569,253 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kjsembed + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + JavaScript support for HTML rendering engine on KDE5 + The KJSEmbed library is an easy-to-use wrapper around the KDE ECMAScript interpreter (kjs) that makes it easy to add scriptability to an application. + http://download.kde.org/stable/frameworks/5.11/portingAids/kjsembed-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + kdoctools-devel + python3 + extra-cmake-modules + + desktop/kde/porting-aids/kjsembed/pspec.xml + + + kjsembed + + qt5-base + qt5-svg + libgcc + ki18n + kjs + + + /usr/bin + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + + kjsembed-devel + Development files for kjsembed + + qt5-base-devel + kjsembed + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kjs + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + JavaScript engine for KDE + This library provides an ECMAScript compatible interpreter. The ECMA standard is based on well known scripting languages such as Netscape's JavaScript and Microsoft's JScript. + http://download.kde.org/stable/frameworks/5.11/portingAids/kjs-5.11.0.tar.xz + + qt5-base-devel + libpcre-devel + libgcc + kdoctools-devel + extra-cmake-modules + + desktop/kde/porting-aids/kjs/pspec.xml + + + kjs + + qt5-base + libgcc + libpcre + + + /usr/bin + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + + kjs-devel + Development files for kjs + + qt5-base-devel + kjs + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kdelibs4-support + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Code and utilities to ease the transition to KDE Frameworks 5 + KDELibs4Support provides libraries to port KDE4 programs to QT5/KDE5 + http://download.kde.org/stable/frameworks/5.11/portingAids/kdelibs4support-5.11.0.tar.xz + + qt5-base-devel + perl-URI + qt5-tools-devel + libSM-devel + docbook-xml + openssl-devel + libX11-devel + intltool + kdoctools-devel + NetworkManager-devel + extra-cmake-modules + + desktop/kde/porting-aids/kdelibs4-support/pspec.xml + + + kdelibs4-support + + qt5-base + libICE + libgcc + libX11 + qt5-svg + qt5-x11extras + libSM + kauth + solid + kcodecs + kcoreaddons + kjobwidgets + kcompletion + kconfig + kconfigwidgets + kcrash + kdbusaddons + kglobalaccel + kguiaddons + ki18n + kiconthemes + kio + kitemviews + knotifications + kparts + kservice + ktextwidgets + kxmlgui + kwindowsystem + kwidgetsaddons + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + /usr/share/man + + + + kdelibs4-support-devel + Development files for kdelibs4-support + + qt5-base-devel + kdelibs4-support + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-kmediaplayer @@ -13209,6 +15875,179 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + krunner + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Krunner Framework for providing different actions given a string query + Framework Integration is a set of plugins responsible for better integration of Qt applications when running on a KDE Plasma workspace. + http://download.kde.org/stable/frameworks/5.11/portingAids/krunner-5.11.0.tar.xz + + qt5-base-devel + kdoctools-devel + extra-cmake-modules + + desktop/kde/porting-aids/krunner/pspec.xml + + + krunner + + qt5-base + qt5-declarative + libgcc + kconfig + kcoreaddons + ki18n + kio + kservice + plasma-framework + solid + threadweaver + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + krunner-devel + Development files for krunner + + qt5-base-devel + krunner + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + khtml + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + HTML rendering engine for KDE + KHTML is a web rendering engine, based on the KParts technology and using KJS for JavaScript support. + http://download.kde.org/stable/frameworks/5.11/portingAids/khtml-5.11.0.tar.xz + + qt5-base-devel + zlib-devel + libX11-devel + zlib + openssl-devel + extra-cmake-modules + + desktop/kde/porting-aids/khtml/pspec.xml + + + khtml + + qt5-base + qt5-x11extras + qt5-phonon + zlib + openssl + giflib + zlib + libX11 + libgcc + libpng + libjpeg-turbo + sonnet + kcodecs + kconfig + kjobwidgets + kwidgetsaddons + kcompletion + karchive + kconfigwidgets + kcoreaddons + kglobalaccel + ki18n + kiconthemes + kio + kjs + knotifications + kparts + kservice + ktextwidgets + kwallet + kwindowsystem + kxmlgui + + + /etc + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + khtml-devel + Development files for khtml + + khtml + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-02 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-kxmlgui @@ -13231,7 +16070,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression session-restore.patch - desktop/kde/kde5-framework/kde5-kxmlgui/pspec.xml + desktop/kde/framework/kde5-kxmlgui/pspec.xml kde5-kxmlgui @@ -13281,6 +16120,83 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kcmutils + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Utilities for interacting with KCModules + KCMUtils provides various classes to work with KCModules. KCModules can be created with the KConfigWidgets framework. + http://download.kde.org/stable/frameworks/5.11/kcmutils-5.11.0.tar.xz + + qt5-base-devel + python3 + extra-cmake-modules + + desktop/kde/framework/kcmutils/pspec.xml + + + kcmutils + + qt5-base + qt5-declarative + libgcc + kdeclarative + kconfigwidgets + kwidgetsaddons + kconfig + kauth + kcoreaddons + ki18n + kiconthemes + kitemviews + kservice + kxmlgui + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kcmutils-devel + Development files for kcmutils + + qt5-base-devel + kcmutils + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-knotifications @@ -13301,7 +16217,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-knotifications/pspec.xml + desktop/kde/framework/kde5-knotifications/pspec.xml kde5-knotifications @@ -13349,6 +16265,97 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kactivities + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Library for KDE's Plasma Activities support + Kactivities provides an API for using and interacting with the Plasma Activities Manager. + http://download.kde.org/stable/frameworks/5.11/kactivities-5.11.0.tar.xz + + qt5-base-devel + python3 + boost-devel + extra-cmake-modules + + + build-source.patch + + desktop/kde/framework/kactivities/pspec.xml + + + kactivities + + qt5-base + qt5-declarative + libgcc + kconfig + kconfigwidgets + kcoreaddons + kcmutils + kdeclarative + kdbusaddons + ki18n + kio + kglobalaccel + kservice + kxmlgui + kwindowsystem + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kactivities + + + kactivities + + + + kactivities-devel + Development files for kactivities + + qt5-base-devel + boost-devel + kactivities + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-kjobwidgets @@ -13369,7 +16376,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-tools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kjobwidgets/pspec.xml + desktop/kde/framework/kde5-kjobwidgets/pspec.xml kde5-kjobwidgets @@ -13434,7 +16441,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression avahi-compat-libdns_sd-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kdnssd/pspec.xml + desktop/kde/framework/kde5-kdnssd/pspec.xml kde5-kdnssd @@ -13492,7 +16499,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression extra-cmake-modules qt5-x11extras-devel - desktop/kde/kde5-framework/kde5-kidletime/pspec.xml + desktop/kde/framework/kde5-kidletime/pspec.xml kde5-kidletime @@ -13550,7 +16557,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-kunitconversion/pspec.xml + desktop/kde/framework/kde5-kunitconversion/pspec.xml kde5-kunitconversion @@ -13609,7 +16616,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-kwallet/pspec.xml + desktop/kde/framework/kde5-kwallet/pspec.xml kde5-kwallet @@ -13675,7 +16682,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kdeclarative/pspec.xml + desktop/kde/framework/kde5-kdeclarative/pspec.xml kde5-kdeclarative @@ -13728,7 +16735,84 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kauth + kinit + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE applications initialization utility + Process launcher to speed up launching KDE applications. + http://download.kde.org/stable/frameworks/5.11/kinit-5.11.0.tar.xz + + qt5-base-devel + kdoctools-devel + extra-cmake-modules + + desktop/kde/framework/kinit/pspec.xml + + + kinit + + qt5-base + libX11 + libcap + libgcc + kcrash + kcoreaddons + kconfig + kdoctools + ki18n + kio + kservice + kwindowsystem + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/locale + /usr/bin + /usr/share/doc + /usr/share/man + + + + kinit-devel + Development files for kinit + + qt5-base-devel + kinit + + + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kguiaddons http://www.kde.org Pisi Linux Admins @@ -13737,37 +16821,32 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2 library unknown - Abstraction to system policy and authentication features - Framework which lets applications perform actions as a privileged user - http://download.kde.org/stable/frameworks/5.11/kauth-5.11.0.tar.xz + Utilities for graphical user interfaces + The KDE GUI addons provide utilities for graphical user interfaces in the areas of colors, fonts, text, images, keyboard input. Development files. + http://download.kde.org/stable/frameworks/5.11/kguiaddons-5.11.0.tar.xz qt5-base-devel - qt5-tools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kauth/pspec.xml + desktop/kde/framework/kguiaddons/pspec.xml - kde5-kauth + kguiaddons qt5-base - polkit-qt - kde5-kcoreaddons + qt5-x11extras - /etc - /usr/share /usr/lib/qt5 /usr/lib /usr/share/doc - kde5-kauth-devel - Development files for kauth + kguiaddons-devel + Development files for kguiaddons - kde5-kauth - kde5-kcoreaddons-devel + kguiaddons /usr/include @@ -13813,7 +16892,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression kde5-kdoctools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kdesignerplugin/pspec.xml + desktop/kde/framework/kde5-kdesignerplugin/pspec.xml kde5-kdesignerplugin @@ -13854,6 +16933,69 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + attica + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Open Collaboration Service client library, based on Qt 5 + Attica is a library to access Open Collaboration Service servers, based on Qt 5. + http://download.kde.org/stable/frameworks/5.11/attica-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/framework/attica/pspec.xml + + + attica + + qt5-base + libgcc + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + attica-devel + Development files for attica5 + + qt5-base-devel + attica + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-20 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-modemmanger-qt @@ -13874,7 +17016,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression ModemManager-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-modemmanager-qt/pspec.xml + desktop/kde/framework/kde5-modemmanager-qt/pspec.xml kde5-modemmanager-qt @@ -13915,7 +17057,141 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kwidgetsaddons + kauth + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Abstraction to system policy and authentication features + Framework which lets applications perform actions as a privileged user + http://download.kde.org/stable/frameworks/5.11/kauth-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + extra-cmake-modules + + desktop/kde/framework/kauth/pspec.xml + + + kauth + + qt5-base + polkit-qt + kcoreaddons + + + /etc + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kauth-devel + Development files for kauth + + kauth + kcoreaddons-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-21 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + karchive + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Qt 5 addon providing access to numerous types of archives + KArchive provides classes for easy reading, creation and manipulation of "archive" formats like ZIP and TAR. + http://download.kde.org/stable/frameworks/5.11/karchive-5.11.0.tar.xz + + qt5-base-devel + xz-devel + zlib-devel + bzip2 + extra-cmake-modules + + desktop/kde/framework/karchive/pspec.xml + + + karchive + + qt5-base + xz + zlib + bzip2 + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + karchive-devel + Development files for karchive + + qt5-base-devel + karchive + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-20 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kconfig http://www.kde.org Pisi Linux Admins @@ -13924,36 +17200,38 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2 library app:console + app:gui unknown - KDE5 desktop widgets - KdeWidgetsAddons is a framework contains addon widgets and shared libraries for applications using Qt5-Widgets. - http://download.kde.org/stable/frameworks/5.11/kwidgetsaddons-5.11.0.tar.xz + Advanced configuration system for KDE Frameworks 5 + Kconfig provides advanced libraries and tools for accessing configuration files. + http://download.kde.org/stable/frameworks/5.11/kconfig-5.11.0.tar.xz qt5-base-devel qt5-tools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kwidgetsaddons/pspec.xml + desktop/kde/framework/kconfig/pspec.xml - kde5-kwidgetsaddons + kconfig qt5-base /usr/share /usr/share/locale + /usr/bin /usr/lib/qt5 /usr/lib /usr/share/doc - kde5-kwidgetsaddons-devel - Development files for kwidgetsaddons + kconfig-devel + Development files for kconfig qt5-base-devel - kde5-kwidgetsaddons + kconfig /usr/include @@ -13998,7 +17276,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-kdesu/pspec.xml + desktop/kde/framework/kde5-kdesu/pspec.xml kde5-kdesu @@ -14040,6 +17318,104 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + plasma-framework + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Plasma library and runtime components based upon KDE Frameworks 5 and Qt5 + Plasma library and runtime components based upon KF5 and Qt5 + http://download.kde.org/stable/frameworks/5.11/plasma-framework-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + kdoctools-devel + libxcb-devel + libX11-devel + libgcc + extra-cmake-modules + + desktop/kde/framework/plasma-framework/pspec.xml + + + plasma-framework + + qt5-base + qt5-svg + qt5-script + qt5-x11extras + qt5-declarative + mesa + libgcc + libX11 + libxcb + kf5-kactivities + knotifications + kpackage + karchive + kconfig + kconfigwidgets + kcoreaddons + kdbusaddons + kdeclarative + kdoctools + kglobalaccel + kguiaddons + ki18n + kiconthemes + kio + kparts + kservice + kwindowsystem + kxmlgui + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + plasma-framework-devel + Development files for plasma-framework + + qt5-base-devel + mesa-devel + plasma-framework + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-kglobalaccel @@ -14060,7 +17436,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-kglobalaccel/pspec.xml + desktop/kde/framework/kde5-kglobalaccel/pspec.xml kde5-kglobalaccel @@ -14106,6 +17482,159 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + sonnet + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE spell schecking library + This framework contains two main components: Interface to KWallet, the safe desktop-wide storage for passwords on KDE workspaces. The kwalletd used to safely store the passwords on KDE work spaces. + http://download.kde.org/stable/frameworks/5.11/sonnet-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + extra-cmake-modules + + desktop/kde/framework/sonnet/pspec.xml + + + sonnet + + qt5-base + libgcc + aspell + hunspell + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/bin + /usr/share/doc + + + + sonnet-devel + Development files for sonnet + + qt5-base-devel + sonnet + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-24 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kwindowsystem + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 window manager access framework + KWindowSystem provides information about the state of the window manager and allows asking the window manager to change the using a more high-level interface than the NETWinInfo/NETRootInfo low-level classes. + http://download.kde.org/stable/frameworks/5.11/kwindowsystem-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + qt5-x11extras-devel + libX11-devel + libgcc + libxcb-devel + libXrender-devel + libXfixes-devel + xcb-util-devel + xcb-util-keysyms-devel + extra-cmake-modules + + desktop/kde/framework/kwindowsystem/pspec.xml + + + kwindowsystem + + qt5-base + libX11 + libgcc + libxcb + qt5-x11extras + libXfixes + xcb-util-keysyms + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/bin + /usr/share/doc + + + + kwindowsystem-devel + Development files for kwindowsystem + + qt5-base-devel + libXrender-devel + libXfixes-devel + xcb-util-devel + xcb-util-keysyms-devel + kwindowsystem + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-23 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + extra-cmake-modules @@ -14123,7 +17652,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression python-sphinx - desktop/kde/kde5-framework/extra-cmake-modules/pspec.xml + desktop/kde/framework/extra-cmake-modules/pspec.xml extra-cmake-modules @@ -14143,6 +17672,158 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kdeclarative + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Integration of QML and KDE workspaces + KDeclarative provides integration of QML and KDE workspaces. + http://download.kde.org/stable/frameworks/5.11/kdeclarative-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/framework/kdeclarative/pspec.xml + + + kdeclarative + + qt5-base + libgcc + libepoxy + qt5-declarative + kpackage + kconfig + kservice + kcoreaddons + kglobalaccel + ki18n + kiconthemes + kio + kwidgetsaddons + kwindowsystem + + + /usr/bin + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kdeclarative-devel + Development files for kdeclarative + + qt5-base-devel + kdeclarative + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-25 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kglobalaccel + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Global desktop keyboard shortcuts + KGlobalAccel allows you to have global accelerators that are independent of the focused window. + http://download.kde.org/stable/frameworks/5.11/kglobalaccel-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + python3 + extra-cmake-modules + + desktop/kde/framework/kglobalaccel/pspec.xml + + + kglobalaccel + + qt5-base + libgcc + libxcb + ki18n + kcrash + kconfig + qt5-x11extras + kcoreaddons + kdbusaddons + xcb-util-keysyms + kwindowsystem + + + /usr/bin + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kglobalaccel-devel + Development files for kglobalaccel + + kglobalaccel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-25 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-knewstuff @@ -14161,7 +17842,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-knewstuff/pspec.xml + desktop/kde/framework/kde5-knewstuff/pspec.xml kde5-knewstuff @@ -14220,62 +17901,55 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kdoctools - http://www.kde.org + kpackage + https://userbase.kde.org/KPackage - Pisi Linux Admins - admins@pisilinux.org + Stefan Gronewold(groni) + groni@pisilinux.org - LGPLv2 - library - app:console + LGPL + app:library unknown - KDE5 document generator - kdoctools is an application aims to generate documents from DocBook. - http://download.kde.org/stable/frameworks/5.11/kdoctools-5.11.0.tar.xz + Framework that lets applications manage user installable packages of non-binary assets + KPackage is dependent on the Smart package manager. + http://download.kde.org/stable/frameworks/5.11/kpackage-5.11.0.tar.xz qt5-base-devel - perl-URI - python + python3 libgcc - libxml2-devel - docbook-xml - docbook-xsl - docbook-sgml4_5 - kde5-ki18n-devel - kde5-karchive-devel + qt5-tools-devel extra-cmake-modules + kdoctools-devel - desktop/kde/kde5-framework/kde5-kdoctools/pspec.xml + desktop/kde/framework/kpackage/pspec.xml - kde5-kdoctools + kpackage qt5-base - libxml2 libgcc - libxslt - kde5-karchive + libX11 + libgcc + kconfig + ki18n + kcoreaddons + karchive - /usr/share - /usr/share/locale + /usr/bin /usr/lib/qt5 /usr/lib - /usr/bin - /usr/share/doc - /usr/share/man + /usr/share + /usr/share/locale + /usr/share/man/man1 - kde5-kdoctools-devel - Development files for kdoctools + kpackage-devel + Development files for kpackage qt5-base-devel - kde5-kdoctools - kde5-karchive-devel - libgcc - libxml2-devel + kpackage /usr/include @@ -14285,14 +17959,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - 2015-06-21 + 2015-06-23 5.11.0 Version bump. Stefan Gronewold(groni) groni@pisilinux.org - 2015-05-30 + 2015-05-31 5.10.0 First Release. Stefan Gronewold(groni) @@ -14300,6 +17974,75 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kjobwidgets + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Widgets for showing progress of asynchronous jobs + KJobWIdgets provides widgets for showing progress of asynchronous jobs. + http://download.kde.org/stable/frameworks/5.11/kjobwidgets-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + extra-cmake-modules + + desktop/kde/framework/kjobwidgets/pspec.xml + + + kjobwidgets + + qt5-base + libgcc + kcoreaddons + kwidgetsaddons + qt5-x11extras + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kjobwidgets-devel + Development files for kjobwidgets + + qt5-base-devel + kjobwidgets + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-25 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-kplotting @@ -14318,7 +18061,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kplotting/pspec.xml + desktop/kde/framework/kde5-kplotting/pspec.xml kde5-kplotting @@ -14354,6 +18097,59 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kimageformats + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Image formats addons for QT 5 + This framework provides additional image format plugins for QtGui. + http://download.kde.org/stable/frameworks/5.11/kimageformats-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/framework/kimageformats/pspec.xml + + + kimageformats + + qt5-base + libgcc + openexr-libs + ilmbase + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-ktextwidgets @@ -14374,7 +18170,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-ktextwidgets/pspec.xml + desktop/kde/framework/kde5-ktextwidgets/pspec.xml kde5-ktextwidgets @@ -14434,7 +18230,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kcrash + kwallet http://www.kde.org Pisi Linux Admins @@ -14444,22 +18240,115 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression library app:console unknown - KDE5 crash handling application - KCrash provides support for intercepting and handling application crashes. - http://download.kde.org/stable/frameworks/5.10/kcrash-5.10.0.tar.xz + KDE password storage framework + This framework contains two main components: Interface to KWallet, the safe desktop-wide storage for passwords on KDE workspaces. The kwalletd used to safely store the passwords on KDE work spaces. + http://download.kde.org/stable/frameworks/5.11/kwallet-5.11.0.tar.xz + + qt5-base-devel + python3 + extra-cmake-modules + + desktop/kde/framework/kwallet/pspec.xml + + + kwallet + + qt5-base + libgcc + libgcrypt + kconfig + kcoreaddons + kdbusaddons + ki18n + kiconthemes + knotifications + kservice + kwidgetsaddons + kwindowsystem + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/bin + /usr/share/doc + + + + kwallet-devel + Development files for kwallet + + qt5-base-devel + kwallet + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + knewstuff + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Framework for downloading and sharing additional application data + The KNewStuff library implements collaborative data sharing for applications. + http://download.kde.org/stable/frameworks/5.11/knewstuff-5.11.0.tar.xz qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kcrash/pspec.xml + desktop/kde/framework/knewstuff/pspec.xml - kde5-kcrash + knewstuff qt5-base - qt5-x11extras - kde5-kcoreaddons - kde5-kwindowsystem + boost + libgcc + kwidgetsaddons + ktextwidgets + kiconthemes + kcompletion + kitemviews + karchive + kf5-attica + kconfig + kcoreaddons + kcmutils + kdeclarative + kdbusaddons + ki18n + kio + kglobalaccel + kservice + kxmlgui + kwindowsystem /usr/share @@ -14470,14 +18359,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kcrash-devel - Development files for kcrash + knewstuff-devel + Development files for knewstuff qt5-base-devel - qt5-x11extras-devel - kde5-kcrash - kde5-kcoreaddons-devel - kde5-kwindowsystem-devel + knewstuff /usr/include @@ -14486,6 +18372,80 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kdbusaddons + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Extra modules for Qt-DBus + KDE5-KDBusAddons provides convenience classes on top of QtDBus, as well as an API to create KDED modules. + http://download.kde.org/stable/frameworks/5.11/kdbusaddons-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + extra-cmake-modules + + desktop/kde/framework/kdbusaddons/pspec.xml + + + kdbusaddons + + qt5-base + qt5-x11extras + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kdbusaddons-devel + Development files for kdbusaddons + + qt5-base-devel + kdbusaddons + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-21 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + 2015-05-30 5.10.0 @@ -14513,7 +18473,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-framework-integration/pspec.xml + desktop/kde/framework/kde5-framework-integration/pspec.xml kde5-framework-integration @@ -14565,7 +18525,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-karchive + ktexteditor http://www.kde.org Pisi Linux Admins @@ -14574,36 +18534,55 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2 library unknown - Qt 5 addon providing access to numerous types of archives - KArchive provides classes for easy reading, creation and manipulation of "archive" formats like ZIP and TAR. - http://download.kde.org/stable/frameworks/5.11/karchive-5.11.0.tar.xz + KDE5 text editor libraries + KTextEditor provides a powerful text editor component that you can embed in your application. + http://download.kde.org/stable/frameworks/5.11/ktexteditor-5.11.0.tar.xz qt5-base-devel - xz-devel - zlib-devel - bzip2 extra-cmake-modules - desktop/kde/kde5-framework/kde5-karchive/pspec.xml + desktop/kde/framework/ktexteditor/pspec.xml - kde5-karchive + ktexteditor + qt5-script qt5-base + libgcc + ktextwidgets + kwidgetsaddons + kconfigwidgets + kjobwidgets + kiconthemes + kcoreaddons + kcompletion + kitemviews + kxmlgui + kcodecs + karchive + kguiaddons + kconfig + ki18n + kio + ki18n + kparts + sonnet + /etc /usr/share + /usr/share/locale /usr/lib/qt5 /usr/lib /usr/share/doc - kde5-karchive-devel - Development files for karchive + ktexteditor-devel + Development files for ktexteditor qt5-base-devel - kde5-karchive + ktexteditor /usr/include @@ -14613,7 +18592,152 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - 2015-06-20 + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + knotifications + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + KDE5 Desktop notifications + KNotification is used to notify the user of an event. It covers feedback and persistent events. + http://download.kde.org/stable/frameworks/5.11/knotifications-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + python3 + extra-cmake-modules + + desktop/kde/framework/knotifications/pspec.xml + + + knotifications + + qt5-base + qt5-phonon + qt5-libdbusmenu + libgcc + libX11 + libXtst + qt5-x11extras + kconfig + kcodecs + kcoreaddons + kiconthemes + kservice + kwindowsystem + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + knotifications-devel + Development files for knotifications + + qt5-base-devel + knotifications + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-25 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + ki18n + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + KDE Gettext-based UI text internationalization. + KDE grafik arabirim yerelleştirme kitaplığı + KI18n provides functionality for internationalizing user interface text in applications, based on the GNU Gettext translation system. + ki18n, KDE Frameworks 5 için, Gettext tabanlı bir grafik arabirim yerelleştirme kitaplığıdır + http://download.kde.org/stable/frameworks/5.11/ki18n-5.11.0.tar.xz + + qt5-base-devel + python3 + extra-cmake-modules + + desktop/kde/framework/ki18n/pspec.xml + + + ki18n + + qt5-base + qt5-script + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + /usr/share/man + + + + ki18n-devel + Development files for kde5-ki18n + ki18n için geliştirme dosyaları + + ki18n + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-21 5.11.0 Version bump. Stefan Gronewold(groni) @@ -14648,7 +18772,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression extra-cmake-modules python3 - desktop/kde/kde5-framework/kde5-kxmlrpcclient/pspec.xml + desktop/kde/framework/kde5-kxmlrpcclient/pspec.xml kde5-kxmlrpcclient @@ -14711,7 +18835,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-tools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kbookmarks/pspec.xml + desktop/kde/framework/kde5-kbookmarks/pspec.xml kde5-kbookmarks @@ -14776,7 +18900,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression kde5-kdoctools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kio/pspec.xml + desktop/kde/framework/kde5-kio/pspec.xml kde5-kio @@ -14841,78 +18965,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - - - kde5-kservice - http://www.kde.org - - Pisi Linux Admins - admins@pisilinux.org - - LGPLv2 - library - app:console - unknown - KDE5 Desktop Services - Kservice Provides a plugin framework for handling desktop services. Services can be applications or libraries. They can be bound to MIME types or handled by application specific code. - http://download.kde.org/stable/frameworks/5.10/kservice-5.10.0.tar.xz - - qt5-base-devel - python3 - kde5-kdoctools-devel - extra-cmake-modules - - desktop/kde/kde5-framework/kde5-kservice/pspec.xml - - - kde5-kservice - - qt5-base - kde5-kconfig - kde5-kcoreaddons - kde5-kcrash - kde5-kdbusaddons - kde5-ki18n - - - /etc - /usr/share - /usr/share/locale - /usr/bin - /usr/lib/qt5 - /usr/lib - /usr/share/man - /usr/share/doc - - - - kde5-kservice-devel - Development files for kservice - - qt5-base-devel - boost-devel - kde5-kservice - kde5-kconfig-devel - kde5-kcoreaddons-devel - kde5-kdbusaddons-devel - kde5-ki18n-devel - - - /usr/include - /usr/lib/cmake - /usr/lib/pkgconfig - - - - - 2015-05-30 - 5.10.0 - First Release. - Stefan Gronewold(groni) - groni@pisilinux.org - - - kde5-kactivities @@ -14937,7 +18989,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression build-source.patch - desktop/kde/kde5-framework/kde5-kactivities/pspec.xml + desktop/kde/framework/kde5-kactivities/pspec.xml kde5-kactivities @@ -14996,6 +19048,283 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kplotting + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + KDE5 Data plotting + Kplotting contains data plotting classes for QT 5 and KDE + http://download.kde.org/stable/frameworks/5.11/kplotting-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/framework/kplotting/pspec.xml + + + kplotting + + qt5-base + libgcc + + + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kplotting-devel + Development files for kplotting + + qt5-base-devel + kplotting + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kdesignerplugin + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + QT Designer integration for KDE5 Frameworks widgets + This framework provides plugins for Qt Designer that allow it to display the widgets provided by various KDE frameworks, as well as a utility (kgendesignerplugin) that can be used to generate other such plugins from ini-style description files. + http://download.kde.org/stable/frameworks/5.11/kdesignerplugin-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + kdoctools-devel + extra-cmake-modules + + desktop/kde/framework/kdesignerplugin/pspec.xml + + + kdesignerplugin + + qt5-base + libgcc + kdewebkit + kcoreaddons + kitemviews + kconfig + sonnet + kcompletion + kconfigwidgets + kiconthemes + kio + kplotting + ktextwidgets + kwidgetsaddons + kxmlgui + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + /usr/share/man + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kcrash + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Kcrash crash handling application + KCrash provides support for intercepting and handling application crashes. + http://download.kde.org/stable/frameworks/5.11/kcrash-5.11.0.tar.xz + + qt5-base-devel + libX11-devel + libgcc + extra-cmake-modules + + desktop/kde/framework/kcrash/pspec.xml + + + kcrash + + qt5-base + libX11 + libgcc + qt5-x11extras + kcoreaddons + kwindowsystem + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kcrash-devel + Development files for kcrash + + qt5-base-devel + qt5-x11extras-devel + kcrash + kcoreaddons-devel + kwindowsystem-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-23 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kxmlrpcclient + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + unknown + XML-RPC client library for KDE + This library contains simple XML-RPC Client support. It is used mainly by the egroupware module of kdepim, but is a complete client and is quite easy to use. Only one interface is exposed to the world, kxmlrpcclient/client.h and of that interface, you only need to use 3 methods: setUrl, setUserAgent and call. + http://download.kde.org/stable/frameworks/5.11/kxmlrpcclient-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + python3 + + desktop/kde/framework/kxmlrpcclient/pspec.xml + + + kxmlrpcclient + + qt5-base + libgcc + ki18n + kcoreaddons + kio + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kxmlrpcclient-devel + Development files for kdelibs4-support + + qt5-base-devel + kxmlrpcclient + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-plasma-framework @@ -15015,9 +19344,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel qt5-tools-devel kde5-kdoctools-devel + libxcb-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-plasma-framework/pspec.xml + desktop/kde/framework/kde5-plasma-framework/pspec.xml kde5-plasma-framework @@ -15102,7 +19432,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression extra-cmake-modules NetworkManager-devel - desktop/kde/kde5-framework/kde5-networkmanager-qt/pspec.xml + desktop/kde/framework/kde5-networkmanager-qt/pspec.xml kde5-networkmanager-qt @@ -15141,6 +19471,82 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kservice + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 Desktop Services + Kservice Provides a plugin framework for handling desktop services. Services can be applications or libraries. They can be bound to MIME types or handled by application specific code. + http://download.kde.org/stable/frameworks/5.11/kservice-5.11.0.tar.xz + + qt5-base-devel + python3 + kdoctools-devel + extra-cmake-modules + + desktop/kde/framework/kservice/pspec.xml + + + kservice + + qt5-base + libgcc + kconfig + kcoreaddons + kcrash + kdbusaddons + ki18n + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + + kservice-devel + Development files for kservice + + qt5-base-devel + boost-devel + kservice + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-24 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-knotifyconfig @@ -15159,7 +19565,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-knotifyconfig/pspec.xml + desktop/kde/framework/kde5-knotifyconfig/pspec.xml kde5-knotifyconfig @@ -15206,7 +19612,143 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kcompletion + kitemmodels + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Set of item models extending the Qt model-view framework + KItemModels provides a set of item models extending the Qt model-view framework. + http://download.kde.org/stable/frameworks/5.11/kitemmodels-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/framework/kitemmodels/pspec.xml + + + kitemmodels + + qt5-base + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kitemmodels-devel + Development files for kitemmodels + + qt5-base-devel + kitemmodels + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-24 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kpeople + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + A contact aggregation library for KDE + KPeople is a Framework for fetching contacts from different sources (Telepathy, Akonadi, Facebook, etc) and unifying them into a same model. + http://download.kde.org/stable/frameworks/5.11/kpeople-5.11.0.tar.xz + + qt5-base-devel + python3 + extra-cmake-modules + + desktop/kde/framework/kpeople/pspec.xml + + + kpeople + + qt5-base + qt5-declarative + libgcc + kconfig + qt5-declarative + kcoreaddons + kservice + kwidgetsaddons + ki18n + kitemviews + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kpeople-devel + Development files for kpeople + + qt5-base-devel + kpeople + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-25 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kdewebkit http://www.kde.org Pisi Linux Admins @@ -15216,39 +19758,196 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression library app:console unknown - Addon with auto completion widgets and classes - KCompletion provides widgets with advanced completion support as well as a lower-level completion class which can be used with your own widgets. - http://download.kde.org/stable/frameworks/5.11/kcompletion-5.11.0.tar.xz + KDE5 WebKit integration + KdeWebkit provides KDE integration of the QtWebKit library. + http://download.kde.org/stable/frameworks/5.11/kdewebkit-5.11.0.tar.xz qt5-base-devel - qt5-tools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kcompletion/pspec.xml + desktop/kde/framework/kdewebkit/pspec.xml - kde5-kcompletion + kdewebkit + qt5-webkit + libgcc + kconfig + kjobwidgets qt5-base - kde5-kconfig - kde5-kwidgetsaddons + kcoreaddons + kparts + kservice + kwallet + kio /usr/share + /usr/lib/qt5 + /usr/lib + /usr/mkspecs/modules/ + /usr/share/doc + + + + kdewebkit-devel + Development files for kdewebkit + + qt5-base-devel + kdewebkit + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kdesu + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + User interface for running shell commands with root privileges + kdesu provides functionality for building GUI front ends for (password asking) console mode programs. + http://download.kde.org/stable/frameworks/5.11/kdesu-5.11.0.tar.xz + + qt5-base-devel + python3 + extra-cmake-modules + + desktop/kde/framework/kdesu/pspec.xml + + + kdesu + + qt5-base + kcoreaddons + kpty + kservice + ki18n + kconfig + libgcc + libX11 + + /usr/share/locale - /usr/bin /usr/lib/qt5 /usr/lib /usr/share/doc - kde5-kcompletion-devel - Development files for kcompletion + kdesu-devel + Development files for kdesu qt5-base-devel - kde5-kcompletion - kde5-kwidgetsaddons-devel + kdesu + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-25 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kdoctools + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 document generator + kdoctools is an application aims to generate documents from DocBook. + http://download.kde.org/stable/frameworks/5.11/kdoctools-5.11.0.tar.xz + + qt5-base-devel + perl-URI + python + libgcc + libxml2-devel + docbook-xml + docbook-xsl + docbook-sgml4_5 + ki18n-devel + karchive-devel + extra-cmake-modules + + desktop/kde/framework/kdoctools/pspec.xml + + + kdoctools + + qt5-base + libxml2 + libgcc + libxslt + karchive + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/bin + /usr/share/doc + /usr/share/man + + + + kdoctools-devel + Development files for kdoctools + + qt5-base-devel + kdoctools + karchive-devel + libgcc + libxml2-devel /usr/include @@ -15275,7 +19974,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kwindowsystem + ktextwidgets http://www.kde.org Pisi Linux Admins @@ -15285,54 +19984,46 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression library app:console unknown - KDE5 window manager access framework - KWindowSystem provides information about the state of the window manager and allows asking the window manager to change the using a more high-level interface than the NETWinInfo/NETRootInfo low-level classes. - http://download.kde.org/stable/frameworks/5.11/kwindowsystem-5.11.0.tar.xz + KDE5 text editing widgets + KTextWidgets provides widgets for displaying and editing text. It supports rich text as well as plain text. + http://download.kde.org/stable/frameworks/5.11/ktextwidgets-5.11.0.tar.xz qt5-base-devel - qt5-tools-devel - qt5-x11extras-devel - libX11-devel - libgcc - libxcb-devel - libXrender-devel - libXfixes-devel - xcb-util-devel - xcb-util-keysyms-devel + python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-kwindowsystem/pspec.xml + desktop/kde/framework/ktextwidgets/pspec.xml - kde5-kwindowsystem + ktextwidgets qt5-base - libX11 libgcc - libxcb - qt5-x11extras - libXfixes - xcb-util-keysyms + kconfig + kcompletion + kconfigwidgets + kiconthemes + kwidgetsaddons + ki18n + sonnet + kservice + kcoreaddons + kwindowsystem /usr/share /usr/share/locale /usr/lib/qt5 /usr/lib - /usr/bin /usr/share/doc - kde5-kwindowsystem-devel - Development files for kwindowsystem + ktextwidgets-devel + Development files for ktextwidgets qt5-base-devel - libXrender-devel - libXfixes-devel - xcb-util-devel - xcb-util-keysyms-devel - kde5-kwindowsystem + ktextwidgets /usr/include @@ -15342,7 +20033,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - 2015-06-23 + 2015-06-25 5.11.0 Version bump. Stefan Gronewold(groni) @@ -15351,6 +20042,75 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression 2015-05-30 5.10.0 + First Release + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + knotifyconfig + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Configuration dialog for desktop notifications + KNotifyConfig provides a configuration dialog for desktop notifications which can be embedded in your application.. + http://download.kde.org/stable/frameworks/5.11/knotifyconfig-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/framework/knotifyconfig/pspec.xml + + + knotifyconfig + + qt5-base + qt5-phonon + libgcc + kconfig + kcompletion + ki18n + kio + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + knotifyconfig-devel + Development files for knotifyconfig + + qt5-base-devel + knotifyconfig + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 First Release. Stefan Gronewold(groni) groni@pisilinux.org @@ -15376,7 +20136,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-threadweaver/pspec.xml + desktop/kde/framework/kde5-threadweaver/pspec.xml kde5-threadweaver @@ -15414,7 +20174,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kcodecs + networkmanager-qt http://www.kde.org Pisi Linux Admins @@ -15422,36 +20182,40 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2 library + app:console unknown - Plugins allowing Qt applications to access further types of images - KDE5 KCodecs provide a collection of methods to manipulate strings using various encodings. - http://download.kde.org/stable/frameworks/5.11/kcodecs-5.11.0.tar.xz + A QT wrapper around the NetworkManager libraries + A QT wrapper around the NetworkManager libraries + http://download.kde.org/stable/frameworks/5.11/networkmanager-qt-5.11.0.tar.xz qt5-base-devel - qt5-tools-devel extra-cmake-modules + NetworkManager-devel - desktop/kde/kde5-framework/kde5-kcodecs/pspec.xml + desktop/kde/framework/networkmanager-qt/pspec.xml - kde5-kcodecs + networkmanager-qt qt5-base + NetworkManager + libgcc /usr/share /usr/share/locale + /usr/bin /usr/lib/qt5 /usr/lib /usr/share/doc - kde5-kcodecs-devel - Development files for kcodecs + networkmanager-qt-devel + Development files for networkmanager-qt qt5-base-devel - kde5-kcodecs + networkmanager-qt /usr/include @@ -15461,14 +20225,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - 2015-06-21 + 2015-06-25 5.11.0 Version bump. Stefan Gronewold(groni) groni@pisilinux.org - 2015-05-30 + 2015-06-01 5.10.0 First Release. Stefan Gronewold(groni) @@ -15478,7 +20242,81 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-sonnet + kparts + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Plugin framework for user interface components + This library implements the framework for KDE parts, which are elaborate widgets with a user-interface defined in terms of actions (menu items, toolbar icons). + http://download.kde.org/stable/frameworks/5.11/kparts-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/framework/kparts/pspec.xml + + + kparts + + qt5-base + libgcc + kjobwidgets + kconfig + kcoreaddons + ki18n + kiconthemes + knotifications + kservice + kwidgetsaddons + kxmlgui + kio + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kparts-devel + Development files for kparts + + qt5-base-devel + kparts + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kitemviews http://www.kde.org Pisi Linux Admins @@ -15488,38 +20326,37 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression library app:console unknown - KDE spell schecking library - This framework contains two main components: Interface to KWallet, the safe desktop-wide storage for passwords on KDE workspaces. The kwalletd used to safely store the passwords on KDE work spaces. - http://download.kde.org/stable/frameworks/5.10/sonnet-5.10.0.tar.xz + Set of item models extending the Qt model-view framework + KItemViews includes a set of views, which can be used with item models. It includes views for categorizing lists and to add search filters to flat and hierarchical lists. + http://download.kde.org/stable/frameworks/5.11/kitemviews-5.11.0.tar.xz qt5-base-devel + libgcc qt5-tools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-sonnet/pspec.xml + desktop/kde/framework/kitemviews/pspec.xml - kde5-sonnet + kitemviews qt5-base - aspell - hunspell + libgcc /usr/share /usr/share/locale /usr/lib/qt5 /usr/lib - /usr/bin /usr/share/doc - kde5-sonnet-devel - Development files for sonnet + kitemviews-devel + Development files for kitemviews qt5-base-devel - kde5-sonnet + kitemviews /usr/include @@ -15528,71 +20365,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - - 2015-05-30 - 5.10.0 - First Release. + + 2015-06-24 + 5.11.0 + Version bump. Stefan Gronewold(groni) groni@pisilinux.org - - - - - kde5-kiconthemes - http://www.kde.org - - Pisi Linux Admins - admins@pisilinux.org - - LGPLv2 - library - app:console - unknown - KDE5 icon utilities - This library contains classes to improve the handling of icons in applications using the KDE Frameworks. - http://download.kde.org/stable/frameworks/5.10/kiconthemes-5.10.0.tar.xz - - qt5-base-devel - python3 - extra-cmake-modules - - desktop/kde/kde5-framework/kde5-kiconthemes/pspec.xml - - - kde5-kiconthemes - - qt5-base - qt5-svg - kde5-kconfigwidgets - kde5-ki18n - kde5-kitemviews - kde5-kwidgetsaddons - kde5-kconfig - kde5-kcoreaddons - - - /usr/share - /usr/share/locale - /usr/bin - /usr/lib/qt5 - /usr/lib - /usr/share/doc - - - - kde5-kiconthemes-devel - Development files for kiconthemes - - kde5-kiconthemes - - - /usr/include - /usr/lib/cmake - /usr/lib/pkgconfig - - - 2015-05-30 5.10.0 @@ -15621,7 +20400,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-kcmutils/pspec.xml + desktop/kde/framework/kde5-kcmutils/pspec.xml kde5-kcmutils @@ -15671,138 +20450,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - - - kde5-ki18n - http://www.kde.org - - Pisi Linux Admins - admins@pisilinux.org - - LGPLv2 - library - unknown - KDE Gettext-based UI text internationalization. - KI18n provides functionality for internationalizing user interface text in applications, based on the GNU Gettext translation system. - http://download.kde.org/stable/frameworks/5.11/ki18n-5.11.0.tar.xz - - qt5-base-devel - python3 - extra-cmake-modules - - desktop/kde/kde5-framework/kde5-ki18n/pspec.xml - - - kde5-ki18n - - qt5-base - qt5-script - - - /usr/share - /usr/share/locale - /usr/lib/qt5 - /usr/lib - /usr/share/doc - /usr/share/man - - - - kde5-ki18n-devel - Development files for kde5-ki18n - - kde5-ki18n - - - /usr/include - /usr/lib/cmake - /usr/lib/pkgconfig - - - - - 2015-06-21 - 5.11.0 - Version bump. - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2015-05-30 - 5.10.0 - First Release. - Stefan Gronewold(groni) - groni@pisilinux.org - - - - - - kde5-kconfig - http://www.kde.org - - Pisi Linux Admins - admins@pisilinux.org - - LGPLv2 - library - app:console - app:gui - unknown - Advanced configuration system for KDE Frameworks 5 - Kconfig provides advanced libraries and tools for accessing configuration files. - http://download.kde.org/stable/frameworks/5.11/kconfig-5.11.0.tar.xz - - qt5-base-devel - qt5-tools-devel - extra-cmake-modules - - desktop/kde/kde5-framework/kde5-kconfig/pspec.xml - - - kde5-kconfig - - qt5-base - - - /usr/share - /usr/share/locale - /usr/bin - /usr/lib/qt5 - /usr/lib - /usr/share/doc - - - - kde5-kconfig-devel - Development files for kde5-kconfig - - qt5-base-devel - kde5-kconfig - - - /usr/include - /usr/lib/cmake - /usr/lib/pkgconfig - - - - - 2015-06-21 - 5.11.0 - Version bump. - Stefan Gronewold(groni) - groni@pisilinux.org - - - 2015-05-30 - 5.10.0 - First Release. - Stefan Gronewold(groni) - groni@pisilinux.org - - - kde5-kparts @@ -15821,7 +20468,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kparts/pspec.xml + desktop/kde/framework/kde5-kparts/pspec.xml kde5-kparts @@ -15889,7 +20536,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression kde5-kdoctools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kinit/pspec.xml + desktop/kde/framework/kde5-kinit/pspec.xml kde5-kinit @@ -15955,7 +20602,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kimageformats/pspec.xml + desktop/kde/framework/kde5-kimageformats/pspec.xml kde5-kimageformats @@ -15983,7 +20630,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kded + kded http://www.kde.org Pisi Linux Admins @@ -15995,23 +20642,23 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression unknown KDE5 daemon Kded runs in the background and performs a number of small tasks. - http://download.kde.org/stable/frameworks/5.10/kded-5.10.0.tar.xz + http://download.kde.org/stable/frameworks/5.11/kded-5.11.0.tar.xz qt5-base-devel - kde5-kdoctools-devel + kdoctools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kded/pspec.xml + desktop/kde/framework/kde5-kded/pspec.xml - kde5-kded + kded qt5-base - kde5-kcoreaddons - kde5-kconfig - kde5-kcrash - kde5-kdbusaddons - kde5-kservice + kcoreaddons + kconfig + kcrash + kdbusaddons + kservice /usr/share @@ -16023,11 +20670,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kded-devel - Development files for kde5-kded + kded-devel + Development files for kded qt5-base-devel - kde5-kded + kded /usr/lib/cmake @@ -16035,6 +20682,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + 2015-06-24 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + 2015-06-06 5.10.0 @@ -16044,6 +20698,147 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kpty + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Libraries for pseudo terminal devices + Kpty provides primitives to interface with pseudo terminal devices as well as a KProcess derived class for running child processes and communicating with them using kpty. + http://download.kde.org/stable/frameworks/5.11/kpty-5.11.0.tar.xz + + qt5-base-devel + python3 + extra-cmake-modules + + desktop/kde/framework/kpty/pspec.xml + + + kpty + + qt5-base + utempter + libgcc + kcoreaddons + ki18n + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kpty-devel + Development files for kpty + + qt5-base-devel + utempter-devel + kcoreaddons-devel + ki18n-devel + kpty + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-24 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kcompletion + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Addon with auto completion widgets and classes + KCompletion provides widgets with advanced completion support as well as a lower-level completion class which can be used with your own widgets. + http://download.kde.org/stable/frameworks/5.11/kcompletion-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + extra-cmake-modules + + desktop/kde/framework/kcompletion/pspec.xml + + + kcompletion + + qt5-base + libgcc + kconfig + kwidgetsaddons + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kcompletion-devel + Development files for kcompletion + + qt5-base-devel + kcompletion + kwidgetsaddons-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-21 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-kpeople @@ -16063,7 +20858,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-kpeople/pspec.xml + desktop/kde/framework/kde5-kpeople/pspec.xml kde5-kpeople @@ -16110,7 +20905,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-solid + kidletime http://www.kde.org Pisi Linux Admins @@ -16120,38 +20915,42 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression library app:console unknown - KDE5 hardware integration framework - Solid is a device integration framework.It provides a way of querying and interacting with hardware independently of the underlying operating system. - http://download.kde.org/stable/frameworks/5.11/solid-5.11.0.tar.xz + Idle time reporting utility + KIdleTime is a singleton reporting information on idle time. It is useful not only for finding out about the current idle time of the PC, but also for getting notified upon idle time events, such as custom timeouts, or user activity. + http://download.kde.org/stable/frameworks/5.11/kidletime-5.11.0.tar.xz qt5-base-devel - libudev-devel - qt5-tools-devel - qt5-declarative + libX11-devel + libgcc + libxcb-devel extra-cmake-modules + qt5-x11extras-devel - desktop/kde/kde5-framework/kde5-solid/pspec.xml + desktop/kde/framework/kidletime/pspec.xml - kde5-solid + kidletime qt5-base + libX11 + libgcc + libxcb + libXScrnSaver + libXext + qt5-x11extras /usr/share - /usr/share/locale /usr/lib/qt5 /usr/lib - /usr/bin /usr/share/doc - kde5-solid-devel - Development files for solid + kidletime-devel + Development files for kidletime - qt5-base-devel - kde5-solid + kidletime /usr/include @@ -16161,14 +20960,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - 2015-06-23 + 2015-06-27 5.11.0 Version bump. Stefan Gronewold(groni) groni@pisilinux.org - 2015-05-31 + 2015-06-01 5.10.0 First Release. Stefan Gronewold(groni) @@ -16178,7 +20977,213 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kapidox + kcodecs + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Plugins allowing Qt applications to access further types of images + KDE5 KCodecs provide a collection of methods to manipulate strings using various encodings. + http://download.kde.org/stable/frameworks/5.11/kcodecs-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + extra-cmake-modules + + desktop/kde/framework/kcodecs/pspec.xml + + + kcodecs + + qt5-base + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kcodecs-devel + Development files for kcodecs + + qt5-base-devel + kcodecs + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-21 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kwidgetsaddons + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 desktop widgets + KdeWidgetsAddons is a framework contains addon widgets and shared libraries for applications using Qt5-Widgets. + http://download.kde.org/stable/frameworks/5.11/kwidgetsaddons-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + extra-cmake-modules + + desktop/kde/framework/kwidgetsaddons/pspec.xml + + + kwidgetsaddons + + qt5-base + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kwidgetsaddons-devel + Development files for kwidgetsaddons + + qt5-base-devel + kwidgetsaddons + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-21 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kconfigwidgets + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + app:gui + unknown + Kconfig widgets + KConfigWidgets provides easy-to-use classes to create configuration dialogs, as well as a set of widgets which uses KConfig to store their settings. + http://download.kde.org/stable/frameworks/5.11/kconfigwidgets-5.11.0.tar.xz + + qt5-base-devel + python3 + ki18n-devel + kdoctools-devel + extra-cmake-modules + + desktop/kde/framework/kconfigwidgets/pspec.xml + + + kconfigwidgets + + qt5-base + kauth + kcodecs + kdoctools + kconfig + kcoreaddons + kguiaddons + ki18n + kwidgetsaddons + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + /usr/share/man + + + + kconfigwidgets-devel + Development files for kconfigwidgets + + kconfigwidgets + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-21 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-30 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kapidox http://www.kde.org Pisi Linux Admins @@ -16196,10 +21201,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kapidox/pspec.xml + desktop/kde/framework/kapidox/pspec.xml - kde5-kapidox + kapidox qt5-base @@ -16227,6 +21232,73 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kdnssd + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + unknown + Network service discovery using Zeroconf + KDNSSD is a library for handling the DNS-based Service Discovery Protocol (DNS-SD), the layer of Zeroconf that allows network services, such as printers, to be discovered without any user intervention or centralized infrastructure. + http://download.kde.org/stable/frameworks/5.11/kdnssd-5.11.0.tar.xz + + qt5-base-devel + qt5-tools + avahi-devel + avahi-compat-libdns_sd-devel + extra-cmake-modules + + desktop/kde/framework/kdnssd/pspec.xml + + + kdnssd + + qt5-base + libgcc + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kdnssd-devel + Development files for kdnssd. + + qt5-base-devel + kdnssd + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-ktexteditor @@ -16245,7 +21317,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-ktexteditor/pspec.xml + desktop/kde/framework/kde5-ktexteditor/pspec.xml kde5-ktexteditor @@ -16305,70 +21377,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kpty - http://www.kde.org - - Pisi Linux Admins - admins@pisilinux.org - - LGPLv2 - library - unknown - Libraries for pseudo terminal devices - Kpty provides primitives to interface with pseudo terminal devices as well as a KProcess derived class for running child processes and communicating with them using kpty. - http://download.kde.org/stable/frameworks/5.10/kpty-5.10.0.tar.xz - - qt5-base-devel - python3 - extra-cmake-modules - - desktop/kde/kde5-framework/kde5-kpty/pspec.xml - - - kde5-kpty - - qt5-base - utempter - kde5-kcoreaddons - kde5-ki18n - - - /usr/share - /usr/share/locale - /usr/lib/qt5 - /usr/lib - /usr/share/doc - - - - kde5-kpty-devel - Development files for kpty - - qt5-base-devel - utempter-devel - kde5-kcoreaddons-devel - kde5-ki18n-devel - kde5-kpty - - - /usr/include - /usr/lib/cmake - /usr/lib/pkgconfig - - - - - 2015-05-30 - 5.10.0 - First Release. - Stefan Gronewold(groni) - groni@pisilinux.org - - - - - - kde5-kconfigwidgets + kiconthemes http://www.kde.org Pisi Linux Admins @@ -16377,31 +21386,28 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2 library app:console - app:gui unknown - Kconfig widgets - KDE5-KConfigWidgets provides easy-to-use classes to create configuration dialogs, as well as a set of widgets which uses KConfig to store their settings. - http://download.kde.org/stable/frameworks/5.11/kconfigwidgets-5.11.0.tar.xz + KDE5 icon utilities + This library contains classes to improve the handling of icons in applications using the KDE Frameworks. + http://download.kde.org/stable/frameworks/5.11/kiconthemes-5.11.0.tar.xz qt5-base-devel python3 - kde5-ki18n-devel - kde5-kdoctools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kconfigwidgets/pspec.xml + desktop/kde/framework/kiconthemes/pspec.xml - kde5-kconfigwidgets + kiconthemes qt5-base - kde5-kauth - kde5-kcodecs - kde5-kconfig - kde5-kcoreaddons - kde5-kguiaddons - kde5-ki18n - kde5-kwidgetsaddons + qt5-svg + kconfigwidgets + ki18n + kitemviews + kwidgetsaddons + kconfig + kcoreaddons /usr/share @@ -16410,14 +21416,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression /usr/lib/qt5 /usr/lib /usr/share/doc - /usr/share/man - kde5-kconfigwidgets-devel - Development files for kconfigwidgets + kiconthemes-devel + Development files for kiconthemes - kde5-kconfigwidgets + kiconthemes /usr/include @@ -16427,7 +21432,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - 2015-06-21 + 2015-06-22 5.11.0 Version bump. Stefan Gronewold(groni) @@ -16444,7 +21449,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-attica + frameworkintegration http://www.kde.org Pisi Linux Admins @@ -16453,33 +21458,117 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2 library unknown - Open Collaboration Service client library, based on Qt 5 - Attica is a library to access Open Collaboration Service servers, based on Qt 5. - http://download.kde.org/stable/frameworks/5.11/attica-5.11.0.tar.xz + Framework providing components to allow applications to integrate with a KDE Workspace + Framework Integration is a set of plugins responsible for better integration of Qt applications when running on a KDE Plasma workspace. + http://download.kde.org/stable/frameworks/5.11/frameworkintegration-5.11.0.tar.xz qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-attica/pspec.xml + desktop/kde/framework/frameworkintegration/pspec.xml - kde5-attica + frameworkintegration qt5-base + libgcc + libxcb + libXcursor + qt5-x11extras + kconfig + kxmlgui + kcompletion + kcoreaddons + kjobwidgets + kconfigwidgets + kiconthemes + ki18n + kio + knotifications + kwidgetsaddons /usr/share + /usr/share/locale /usr/lib/qt5 /usr/lib /usr/share/doc - kde5-attica-devel - Development files for attica5 + frameworkintegration-devel + Development files for framework-integration qt5-base-devel - kde5-attica + frameworkintegration + + + /usr/include + /usr/lib/cmake + + + + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + New Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kemoticons + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE emoticon manager + KEmoticons converts emoticons from text to a graphical representation with images in HTML. + http://download.kde.org/stable/frameworks/5.11/kemoticons-5.11.0.tar.xz + + qt5-base-devel + python3 + extra-cmake-modules + + desktop/kde/framework/kemoticons/pspec.xml + + + kemoticons + + qt5-base + libgcc + karchive + kcoreaddons + kconfig + kservice + + + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kemoticons-devel + Development files for kemoticons + + kemoticons /usr/include @@ -16488,20 +21577,150 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - - 2015-06-20 + + 2015-06-27 5.11.0 Version bump. Stefan Gronewold(groni) groni@pisilinux.org - - 2015-05-30 + + 2015-05-31 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + modemmanger-qt + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Qt wrapper for ModemManager DBus API + Qt wrapper for ModemManager DBus API + http://download.kde.org/stable/frameworks/5.11/modemmanager-qt-5.11.0.tar.xz + + qt5-base-devel + ModemManager-devel + extra-cmake-modules + + desktop/kde/framework/modemmanager-qt/pspec.xml + + + modemmanager-qt + + qt5-base + libgcc + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + modemmanger-qt-devel + Development files for kde5-modemmanger-qt + + qt5-base-devel + modemmanager-qt + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-27 + 5.11.0 Version bump. Stefan Gronewold(groni) groni@pisilinux.org + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + threadweaver + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Multi-threaded programming framework for KDE + ThreadWeaver is a helper for multithreaded programming. It uses a job-based interface to queue tasks and execute them in an efficient way. + http://download.kde.org/stable/frameworks/5.11/threadweaver-5.11.0.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/framework/threadweaver/pspec.xml + + + threadweaver + + qt5-base + libgcc + + + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + threadweaver-devel + Development files for threadweaver + + qt5-base-devel + threadweaver + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-28 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + @@ -16524,7 +21743,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-kemoticons/pspec.xml + desktop/kde/framework/kde5-kemoticons/pspec.xml kde5-kemoticons @@ -16567,7 +21786,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kcoreaddons + solid http://www.kde.org Pisi Linux Admins @@ -16577,57 +21796,55 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression library app:console unknown - Utilities for core application functionality and accessing the OS - KCoreAddons provides classes built on top of QtCore to perform various tasks such as manipulating mime types, autosaving files, creating backup files, generating random sequences, performing text manipulations such as macro replacement, accessing user information and many more. - http://download.kde.org/stable/frameworks/5.11/kcoreaddons-5.11.0.tar.xz + KDE5 hardware integration framework + Solid is a device integration framework.It provides a way of querying and interacting with hardware independently of the underlying operating system. + http://download.kde.org/stable/frameworks/5.11/solid-5.11.0.tar.xz qt5-base-devel + libudev-devel qt5-tools-devel + qt5-declarative extra-cmake-modules - desktop/kde/kde5-framework/kde5-kcoreaddons/pspec.xml + desktop/kde/framework/solid/pspec.xml - kde5-kcoreaddons + solid qt5-base - gamin /usr/share /usr/share/locale - /usr/bin /usr/lib/qt5 /usr/lib + /usr/bin /usr/share/doc - kde5-kcoreaddons-devel - Development files for kcoreaddons + solid-devel + Development files for solid qt5-base-devel - kde5-kcoreaddons + solid /usr/include /usr/lib/cmake /usr/lib/pkgconfig - - System.Package - - 2015-06-21 + 2015-06-23 5.11.0 Version bump. Stefan Gronewold(groni) groni@pisilinux.org - 2015-05-30 + 2015-05-31 5.10.0 First Release. Stefan Gronewold(groni) @@ -16637,7 +21854,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kdbusaddons + kxmlgui http://www.kde.org Pisi Linux Admins @@ -16645,39 +21862,49 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2 library - app:console unknown - Extra modules for Qt-DBus - KDE5-KDBusAddons provides convenience classes on top of QtDBus, as well as an API to create KDED modules. - http://download.kde.org/stable/frameworks/5.11/kdbusaddons-5.11.0.tar.xz + Framework for managing menu and toolbar actions + Kxmlgui provides a framework for managing menu and toolbar actions in an abstract way. + http://download.kde.org/stable/frameworks/5.11/kxmlgui-5.11.0.tar.xz qt5-base-devel - qt5-tools-devel + python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-kdbusaddons/pspec.xml + desktop/kde/framework/kxmlgui/pspec.xml - kde5-kdbusaddons + kxmlgui qt5-base - qt5-x11extras + libgcc + attica + kcoreaddons + kconfig + kconfigwidgets + kglobalaccel + ki18n + kiconthemes + kitemviews + ktextwidgets + kwidgetsaddons + kwindowsystem + /etc /usr/share /usr/share/locale - /usr/bin /usr/lib/qt5 /usr/lib /usr/share/doc - kde5-kdbusaddons-devel - Development files for kdbusaddons + kxmlgui-devel + Development files for kxmlgui qt5-base-devel - kde5-kdbusaddons + kxmlgui /usr/include @@ -16687,14 +21914,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - 2015-06-21 + 2015-06-25 5.11.0 Version bump. Stefan Gronewold(groni) groni@pisilinux.org - 2015-05-30 + 2015-05-31 5.10.0 First Release. Stefan Gronewold(groni) @@ -16721,7 +21948,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kdewebkit/pspec.xml + desktop/kde/framework/kde5-kdewebkit/pspec.xml kde5-kdewebkit @@ -16769,7 +21996,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kitemmodels + kio http://www.kde.org Pisi Linux Admins @@ -16777,103 +22004,68 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2 library + app:console unknown - Set of item models extending the Qt model-view framework - KItemModels provides a set of item models extending the Qt model-view framework. - http://download.kde.org/stable/frameworks/5.10/kitemmodels-5.10.0.tar.xz + Resource and network access abstraction + Network transparent access to files and data + http://download.kde.org/stable/frameworks/5.11/kio-5.11.0.tar.xz qt5-base-devel + kdoctools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kitemmodels/pspec.xml + desktop/kde/framework/kio/pspec.xml - kde5-kitemmodels + kio qt5-base + acl + attr + libgcc + libxml2 + mit-kerberos + knotifications + libxslt + qt5-script + qt5-x11extras + karchive + kconfig + kcodecs + kbookmarks + kcompletion + kconfigwidgets + kcoreaddons + kdbusaddons + ki18n + kiconthemes + kitemviews + kjobwidgets + kservice + ktextwidgets + kwallet + kwidgetsaddons + kwindowsystem + kxmlgui + solid + /etc/ + /usr/bin /usr/share /usr/share/locale /usr/lib/qt5 /usr/lib /usr/share/doc + /usr/share/man - kde5-kitemmodels-devel - Development files for kitemmodels + kio-devel + Development files for kio qt5-base-devel - kde5-kitemmodels - - - /usr/include - /usr/lib/cmake - /usr/lib/pkgconfig - - - - - 2015-05-30 - 5.10.0 - First Release. - Stefan Gronewold(groni) - groni@pisilinux.org - - - - - - kde5-kpackage - https://userbase.kde.org/KPackage - - Stefan Gronewold(groni) - groni@pisilinux.org - - LGPL - app:library - unknown - Framework that lets applications manage user installable packages of non-binary assets - Framework that lets applications manage user installable packages of non-binary assets - KPackage is dependent on the Smart package manager. - KPackage is dependent on the Smart package manager. - http://download.kde.org/stable/frameworks/5.11/kpackage-5.11.0.tar.xz - - qt5-base-devel - python3 - libgcc - qt5-tools-devel - extra-cmake-modules - kde5-kdoctools-devel - - desktop/kde/kde5-framework/kde5-kpackage/pspec.xml - - - kde5-kpackage - - qt5-base - libgcc - kde5-kconfig - kde5-ki18n - kde5-kcoreaddons - kde5-karchive - - - /usr/bin - /usr/lib/qt5 - /usr/lib - /usr/share - /usr/share/locale - /usr/share/man/man1 - - - - kpackage-devel - Development files for kpackage - - qt5-base-devel - kde5-kpackage + kio /usr/include @@ -16883,7 +22075,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - 2015-06-23 + 2015-06-27 5.11.0 Version bump. Stefan Gronewold(groni) @@ -16900,7 +22092,78 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kguiaddons + kded + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 daemon + Kded runs in the background and performs a number of small tasks. + http://download.kde.org/stable/frameworks/5.11/kded-5.11.0.tar.xz + + qt5-base-devel + kdoctools-devel + extra-cmake-modules + + desktop/kde/framework/kded/pspec.xml + + + kded + + qt5-base + libgcc + kcoreaddons + kconfig + kcrash + kdbusaddons + kservice + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/bin + /usr/share/doc + /usr/share/man + + + + kded-devel + Development files for kded + + qt5-base-devel + kded + + + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-06-24 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kbookmarks http://www.kde.org Pisi Linux Admins @@ -16909,32 +22172,44 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2 library unknown - Utilities for graphical user interfaces - The KDE GUI addons provide utilities for graphical user interfaces in the areas of colors, fonts, text, images, keyboard input. Development files. - http://download.kde.org/stable/frameworks/5.11/kguiaddons-5.11.0.tar.xz + Access and manipulate bookmarks stored using XBEL format + Framework which lets you access and manipulate bookmarks stored using XBEL format + http://download.kde.org/stable/frameworks/5.11/kbookmarks-5.11.0.tar.xz qt5-base-devel + python3 + qt5-tools-devel extra-cmake-modules - desktop/kde/kde5-framework/kde5-kguiaddons/pspec.xml + desktop/kde/framework/kbookmarks/pspec.xml - kde5-kguiaddons + kbookmarks qt5-base - qt5-x11extras + libgcc + kcoreaddons + kcodecs + kconfig + kiconthemes + kwidgetsaddons + kxmlgui + /etc + /usr/share + /usr/share/locale /usr/lib/qt5 /usr/lib /usr/share/doc - kde5-kguiaddons-devel - Development files for kguiaddons + kbookmarks-devel + Development files for kbookmarks - kde5-kguiaddons + qt5-base-devel + kbookmarks /usr/include @@ -16942,6 +22217,76 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression /usr/lib/pkgconfig + + + 2015-06-25 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-31 + 5.10.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kcoreaddons + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Utilities for core application functionality and accessing the OS + KCoreAddons provides classes built on top of QtCore to perform various tasks such as manipulating mime types, autosaving files, creating backup files, generating random sequences, performing text manipulations such as macro replacement, accessing user information and many more. + http://download.kde.org/stable/frameworks/5.11/kcoreaddons-5.11.0.tar.xz + + qt5-base-devel + qt5-tools-devel + extra-cmake-modules + + desktop/kde/framework/kcoreaddons/pspec.xml + + + kcoreaddons + + qt5-base + gamin + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kcoreaddons-devel + Development files for kcoreaddons + + qt5-base-devel + kcoreaddons + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + System.Package + + 2015-06-21 @@ -16961,7 +22306,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kitemviews + kunitconversion http://www.kde.org Pisi Linux Admins @@ -16969,22 +22314,23 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2 library - app:console unknown - Set of item models extending the Qt model-view framework - KItemViews includes a set of views, which can be used with item models. It includes views for categorizing lists and to add search filters to flat and hierarchical lists. - http://download.kde.org/stable/frameworks/5.10/kitemviews-5.10.0.tar.xz + KDE unit conversion framework + KUnitConversion provides functions to convert values in different physical units. + http://download.kde.org/stable/frameworks/5.11/kunitconversion-5.11.0.tar.xz qt5-base-devel - qt5-tools-devel + python3 extra-cmake-modules - desktop/kde/kde5-framework/kde5-kitemviews/pspec.xml + desktop/kde/framework/kunitconversion/pspec.xml - kde5-kitemviews + kunitconversion qt5-base + libgcc + ki18n /usr/share @@ -16995,11 +22341,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - kde5-kitemviews-devel - Development files for kitemviews + kunitconversion-devel + Development files for kunitconversion qt5-base-devel - kde5-kitemviews + kunitconversion /usr/include @@ -17008,10 +22354,17 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - - 2015-05-30 + + 2015-06-27 + 5.11.0 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-01 5.10.0 - First Release. + Version bump. Stefan Gronewold(groni) groni@pisilinux.org @@ -17179,6 +22532,1990 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + ksshaskpass + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + unknown + ssh-add helper that uses kwallet and kpassworddialog + ssh-add helper that uses kwallet and kpassworddialog + http://download.kde.org/stable/plasma/5.3.2/ksshaskpass-5.3.2.tar.xz + + qt5-base-devel + kdoctools-devel + libgcc + python3 + extra-cmake-modules + + desktop/kde/plasma/ksshaskpass/pspec.xml + + + ksshaskpass + + qt5-base + libgcc + kcoreaddons + kwidgetsaddons + ki18n + kwallet + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + ksshaskpass.sh + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-18 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + breeze + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 Plasma artwork + Artwork, styles and assets for the Breeze visual style for the Plasma Desktop + http://download.kde.org/stable/plasma/5.3.2/breeze-5.3.2.tar.xz + + qt5-base-devel + libxcb-devel + libgcc + qt5-x11extras-devel + frameworkintegration-devel + kdecorations-devel + kcoreaddons-devel + ki18n-devel + kwindowsystem-devel + kconfig-devel + kguiaddons-devel + kcoreaddons-devel + kconfigwidgets-devel + kwidgetsaddons-devel + extra-cmake-modules + + desktop/kde/plasma/breeze/pspec.xml + + + breeze-style + + qt5-base + libgcc + kconfig + kguiaddons + kcoreaddons + kconfigwidgets + kwidgetsaddons + qt5-x11extras + libxcb + frameworkintegration + kcmutils + kcoreaddons + ki18n + kwindowsystem + kdecorations + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + breeze-icons + + breeze-style + + + /usr/share/icons + + + + breeze-cursors + + breeze-style + + + /usr/share/icons/breeze_cursors + + + + breeze-wallpapers + + qt5-base + + + /usr/share/wallpapers + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kde-cli-tools + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Additional client tools for KDE applications + Tools based on KDE Frameworks 5 to better interact with the system + http://download.kde.org/stable/plasma/5.3.2/kde-cli-tools-5.3.2.tar.xz + + qt5-base-devel + libX11-devel + libgcc + kdoctools-devel + python3 + extra-cmake-modules + + desktop/kde/plasma/kde-cli-tools/pspec.xml + + + kde-cli-tools + + qt5-base + qt5-svg + libX11 + libgcc + kio + ki18n + kservice + qt5-x11extras + kcompletion + kcoreaddons + kiconthemes + kwindowsystem + kconfigwidgets + kwidgetsaddons + kcmutils + kconfig + kdelibs4-support + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + kdesu + + + System.Package + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + polkit-kde-authentication-agent-1 + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + app:gui + unknown + The KDE Plasma Workspace Components + The Polkit-KDE-Agent package contains a graphical Polkit authentication agent for the KDE Plasma Desktop. + http://download.kde.org/stable/plasma/5.3.2/polkit-kde-agent-1-5.3.2.tar.xz + + qt5-base-devel + kdoctools-devel + libgcc + python3 + extra-cmake-modules + + desktop/kde/plasma/polkit-kde-authentication-agent-1/pspec.xml + + + polkit-kde-authentication-agent-1 + + qt5-base + libgcc + kcrash + kcoreaddons + polkit-qt + ki18n + kdbusaddons + kiconthemes + kwindowsystem + knotifications + kwidgetsaddons + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-29 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kfilemetadata + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 library for extracting meta data from files. + KDE library for extracting meta data from files. + http://download.kde.org/stable/plasma/5.3.2/kfilemetadata-5.9.2.tar.xz + + qt5-base-devel + python + extra-cmake-modules + + desktop/kde/plasma/kfilemetadata/pspec.xml + + + kfilemetadata + + qt5-base + ebook-tools + libgcc + exiv2-libs + taglib + ffmpeg + taglib + poppler-qt5 + karchive + ki18n + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kfilemetadata-devel + Development files for kfilemetadata + + qt5-base-devel + kfilemetadata + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-07-01 + 5.9.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-03 + 5.9.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + libksysguard + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Task management and system monitoring library + Task management and system monitoring library + http://download.kde.org/stable/plasma/5.3.2/libksysguard-5.3.2.tar.xz + + qt5-base-devel + python3 + kdoctools-devel + libgcc + libX11-devel + zlib-devel + extra-cmake-modules + + desktop/kde/plasma/libksysguard/pspec.xml + + + libksysguard + + qt5-base + libgcc + libX11 + zlib + libXres + qt5-webkit + qt5-x11extras + kwindowsystem + kconfigwidgets + kwidgetsaddons + kconfig + kauth + kcoreaddons + kdelibs4-support + ki18n + plasma-framework + + + /etc + /usr/share + /usr/share/locale + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + libksysguard-devel + Development files for libksysguard + + qt5-base-devel + libksysguard + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + kde-workspace-devel + + + kde-workspace-devel + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-12 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + bluez-qt + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + GPLv2 + library + unknown + Qt wrapper for KDE 5 Bluez DBus API + Qt wrapper for KDE 5 DBus API. + http://download.kde.org/stable/plasma/5.3.2/bluez-qt-5.3.2.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/plasma/bluez-qt/pspec.xml + + + bluez-qt + + qt5-base + qt5-declarative + libgcc + + + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + bluez-qt-devel + Development files for bluez-qt + + qt5-base-devel + bluez-qt + + + /usr/include + /usr/lib/cmake + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + baloo + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + unknown + Framework for searching and managing metadata + Baloo is a framework for searching and managing metada + http://download.kde.org/stable/plasma/5.3.2/baloo-5.9.2.tar.xz + + qt5-base-devel + kdoctools-devel + python3 + extra-cmake-modules + + desktop/kde/plasma/baloo/pspec.xml + + + baloo + + qt5-base + qt5-declarative + xapian-core + kcoreaddons + kdbusaddons + kauth + libgcc + kcmutils + kconfig + kcrash + kdelibs4-support + ki18n + kidletime + kio + krunner + solid + kf5-kfilemetadata + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + baloo + + + baloo + + + + baloo-devel + Development files for baloo-widgets + + qt5-base-devel + baloo + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + baloo-devel + + + baloo-devel + + + + + 2015-07-01 + 5.9.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.9.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kdecorations + https://projects.kde.org/projects/kde/workspace/kdecoration + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv3 + library + unknown + Plugin based library to create window decorations + Plugin based library to create window decorations + http://download.kde.org/stable/plasma/5.3.2/kdecoration-5.3.2.tar.xz + + qt5-base-devel + extra-cmake-modules + + desktop/kde/plasma/kdecorations/pspec.xml + + + kdecorations + + qt5-base + libgcc + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + kdecorations-devel + Development files for kdecorations + + qt5-base-devel + kdecorations + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + kde-workspace-devel + + + kde-workspace-devel + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + libkscreen + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 screen management library + Dynamic display management library for KDE + http://download.kde.org/stable/plasma/5.3.2/libkscreen-5.3.2.tar.xz + + qt5-base-devel + qt5-x11extras-devel + libgcc + libxcb-devel + xcb-util-devel + xcb-util-image-devel + xcb-util-keysyms-devel + libXcursor-devel + libXrandr-devel + extra-cmake-modules + + desktop/kde/plasma/libkscreen/pspec.xml + + + libkscreen + + qt5-base + libxcb + libgcc + qt5-x11extras + + + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + libkscreen-devel + Development files for libkscreen + + qt5-base-devel + libkscreen + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kinfocenter + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 info center + KDE5 Utility that provides information about a computer system. + http://download.kde.org/stable/plasma/5.3.2/kinfocenter-5.3.2.tar.xz + + qt5-base-devel + python3 + pciutils-devel + libX11-devel + libgcc + kcmutils-devel + kcompletion-devel + kconfig-devel + kdelibs4-support-devel + kdoctools-devel + ki18n-devel + kio-devel + kwindowsystem-devel + kxmlgui-devel + kservice-devel + kcoreaddons-devel + kdbusaddons-devel + kiconthemes-devel + kconfigwidgets-devel + kwidgetsaddons-devel + libraw1394-devel + plasma-framework-devel + solid-devel + pciutils-devel + mesa-glu-devel + extra-cmake-modules + + desktop/kde/plasma/kinfocenter/pspec.xml + + + kinfocenter + + qt5-base + qt5-declarative + pciutils + libX11 + libgcc + kservice + kcoreaddons + kdbusaddons + kiconthemes + kconfigwidgets + kwidgetsaddons + kcompletion + kconfig + kdelibs4-support + ki18n + kio + kxmlgui + libraw1394 + kwayland + kcmutils + solid + kdeclarative + mesa-glu + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + kcm-about-distrorc + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + system-settings + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 system settings manager + System-settings is a control panel for KDE5 Plasma + http://download.kde.org/stable/plasma/5.3.2/systemsettings-5.3.2.tar.xz + + qt5-base-devel + kdoctools-devel + libgcc + python3 + extra-cmake-modules + + desktop/kde/plasma/system-settings/pspec.xml + + + system-settings + + qt5-base + kauth + libgcc + kcompletion + kcoreaddons + kconfigwidgets + kwidgetsaddons + kcmutils + kconfig + kdbusaddons + khtml + ki18n + kiconthemes + kio + kitemviews + kservice + kwindowsystem + kxmlgui + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + system-settings-devel + Development files for system-settings + + qt5-base-devel + system-settings + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-29 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kmenuedit + http://www.kde.org + + Pisi Linux admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Provides the interface and basic tools for the KDE workspace + Provides the interface and basic tools for the KDE workspace + http://download.kde.org/stable/plasma/5.3.2/kmenuedit-5.3.2.tar.xz + + qt5-base-devel + kdoctools-devel + libgcc + extra-cmake-modules + python3 + + desktop/kde/plasma/kmenuedit/pspec.xml + + + kmenuedit + + qt5-base + libgcc + kconfig + kservice + kcompletion + kcoreaddons + kconfigwidgets + kwidgetsaddons + kdbusaddons + kdelibs4-support + ki18n + kiconthemes + kio + kxmlgui + sonnet + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-15 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + plasma-nm + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + unknown + Plasma applet written in QML for managing network connections + Plasma applet written in QML for managing network connections + http://download.kde.org/stable/plasma/5.3.2/plasma-nm-5.3.2.tar.xz + + qt5-base-devel + libgcc + networkmanager-qt-devel + modemmanger-qt-devel + kdelibs4-support-devel + python3 + openconnect-devel + kdoctools-devel + NetworkManager-devel + mobile-broadband-provider-info + extra-cmake-modules + + desktop/kde/plasma/plasma-nm/pspec.xml + + + plasma-nm + + qt5-base + libgcc + openconnect + kio + networkmanager-qt + modemmanager-qt + ki18n + solid + kconfig + kwallet + kxmlgui + kservice + kitemviews + qt5-declarative + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + kwindowsystem + kconfigwidgets + knotifications + kwidgetsaddons + kdelibs4-support + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-14 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kwayland + http://www.kde.org + + Stefan Gronewold(groni) + groni@pisilinux.org + + LGPLv3 + library + unknown + Qt-style Client and Server library wrapper for the Wayland libraries + Qt-style Client and Server library wrapper for the Wayland libraries + http://download.kde.org/stable/plasma/5.3.2/kwayland-5.3.2.tar.xz + + qt5-base-devel + libgcc + extra-cmake-modules + wayland-devel + + desktop/kde/plasma/kwayland/pspec.xml + + + kwayland + + qt5-base + libgcc + wayland-client + wayland-server + + + /usr/lib + /usr/share/doc + + + + kwayland-devel + + qt5-base-devel + kwayland + + + /usr/lib/cmake + /usr/include + /usr/lib/pkgconfig + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kwin + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 window manager + KWin is the window manager of the K desktop environment. + http://download.kde.org/stable/plasma/5.3.2/kwin-5.3.2.tar.xz + + qt5-base-devel + qt5-tools-devel + qt5-multimedia-devel + kwayland + kdecorations-devel + qt5-script-devel + qt5-x11extras-devel + qt5-declarative-devel + kiconthemes-devel + kauth-devel + libXxf86vm-devel + libXext-devel + kf5-kactivities-devel + kcmutils-devel + kcompletion-devel + kconfig-devel + kconfigwidgets-devel + kcoreaddons-devel + kcrash-devel + kdeclarative-devel + kdoctools-devel + kglobalaccel-devel + ki18n-devel + kinit + kio-devel + knewstuff-devel + knotifications-devel + kservice-devel + kwidgetsaddons-devel + kwindowsystem-devel + kxmlgui-devel + plasma-framework-devel + mesa-devel + libICE-devel + libSM-devel + wayland-devel + wayland-client + wayland-cursor + libxkbcommon-devel + xcb-util-keysyms-devel + xcb-util-image-devel + libXcursor-devel + libepoxy-devel + libgcc + libX11-devel + libxcb-devel + + desktop/kde/plasma/kwin/pspec.xml + + + kwin + + qt5-base + libgcc + libX11 + libxcb + qt5-script + kwayland + kdecorations + qt5-x11extras + qt5-declarative + kiconthemes + kauth + kf5-kactivities + kcmutils + kcompletion + kconfig + kconfigwidgets + kcoreaddons + kcrash + kdeclarative + kglobalaccel + ki18n + kio + knewstuff + knotifications + kservice + kwidgetsaddons + kwindowsystem + kxmlgui + plasma-framework + mesa + libICE + libSM + wayland-cursor + libxkbcommon + xcb-util-keysyms + xcb-util-image + libepoxy + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + kwin-devel + Development files for kwin + + qt5-base-devel + kwin + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + kde-workspace-devel + + + kde-workspace-devel + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-12 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kdeplasma-addons + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Additional client tools for KDE applications + Additional client tools for KDE applications + http://download.kde.org/stable/plasma/5.3.2/kdeplasma-addons-5.3.2.tar.xz + + qt5-base-devel + libgcc + libxcb-devel + glib2-devel + scim-devel + ibus-devel + kdoctools-devel + kdelibs4-support-devel + extra-cmake-modules + + desktop/kde/plasma/kdeplasma-addons/pspec.xml + + + kdeplasma-addons + + qt5-base + plasma-framework + libgcc + libxcb + glib2 + knewstuff + krunner + kio + ki18n + kross + sonnet + kconfig + kxmlgui + karchive + kpackage + kservice + qt5-x11extras + qt5-declarative + kcompletion + kcoreaddons + kwindowsystem + kconfigwidgets + knotifications + kwidgetsaddons + kunitconversion + kdelibs4-support + ibus + scim-libs + xcb-util-keysyms + + + /usr/share + /etc/xdg + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + bluedevil + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE 5 Bluetooth Stack + Integrate the Bluetooth technology within KDE workspace and applications + http://download.kde.org/stable/plasma/5.3.2/bluedevil-5.3.2.tar.xz + + qt5-base-devel + kded-devel + plasma-framework-devel + extra-cmake-modules + + desktop/kde/plasma/bluedevil/pspec.xml + + + bluedevil + + qt5-base + libgcc + bluez-qt + kio + ki18n + kconfig + qt5-declarative + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + kconfigwidgets + knotifications + kwidgetsaddons + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + ksysguard + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE system monitor + KDE5 system monitor daemon and service. + http://download.kde.org/stable/plasma/5.3.2/ksysguard-5.3.2.tar.xz + + qt5-base-devel + libgcc + kio-devel + kxmlgui-devel + kcompletion-devel + kdbusaddons-devel + kiconthemes-devel + kwindowsystem-devel + kconfigwidgets-devel + knotifications-devel + kwidgetsaddons-devel + lm_sensors-devel + python3 + extra-cmake-modules + kdoctools-devel + kconfig-devel + kcoreaddons-devel + kdelibs4-support-devel + ki18n-devel + kinit + kitemviews-devel + knewstuff-devel + libksysguard-devel + plasma-framework-devel + + desktop/kde/plasma/ksysguard/pspec.xml + + + ksysguard + + qt5-base + libgcc + icon-theme-hicolor + kio + kxmlgui + kcompletion + kdbusaddons + kiconthemes + kwindowsystem + kconfigwidgets + knotifications + kwidgetsaddons + lm_sensors + icon-theme-hicolor + xdg-utils + kdoctools + kconfig + kcoreaddons + kdelibs4-support + ki18n + kinit + kitemviews + knewstuff + libksysguard + plasma-framework + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-12 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kio-extras + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Additional KIO-slaves for KDE5 applications + Additional KIO-slaves for KDE5 applications + http://download.kde.org/stable/plasma/5.3.2/kio-extras-5.3.2.tar.xz + + qt5-base-devel + python3 + libgcc + gettext + shared-mime-info + libmtp-devel + shared-mime-info + openexr-devel + openslp-devel + karchive-devel + kconfig-devel + kcoreaddons-devel + kdbusaddons-devel + kdelibs4-support-devel + kdnssd-devel + kdoctools-devel + khtml-devel + ki18n-devel + kiconthemes-devel + kio-devel + solid-devel + libjpeg-turbo-devel + libssh-devel + openslp-devel + qt5-phonon-devel + samba-devel + exiv2-devel + extra-cmake-modules + + desktop/kde/plasma/kio-extras/pspec.xml + + + kio-extras + + qt5-base + qt5-svg + libgcc + libmtp + kpty + kparts + kcodecs + kxmlgui + kservice + kbookmarks + kguiaddons + kconfigwidgets + openexr + karchive + kconfig + kcoreaddons + kdbusaddons + kdelibs4-support + kdnssd + kdoctools + khtml + ki18n + kiconthemes + kio + solid + libjpeg-turbo + libssh + openslp + qt5-phonon + samba + exiv2-libs + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-14 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + khelpcenter + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE Help Center + KDE help center utility to read help documentation about various KDE applications. + http://download.kde.org/stable/plasma/5.3.2/khelpcenter-5.3.2.tar.xz + + qt5-base-devel + python3 + qt5-libdbusmenu-devel + kinit-devel + libgcc + kcmutils-devel + khtml-devel + kdelibs4-support-devel + extra-cmake-modules + + desktop/kde/plasma/khelpcenter/pspec.xml + + + khelpcenter + + qt5-base + kio + libgcc + khtml + ki18n + kparts + kcodecs + kconfig + kxmlgui + kcmutils + kservice + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + kwindowsystem + kconfigwidgets + kwidgetsaddons + kdelibs4-support + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kscreen + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + Provides the interface and basic tools for the KDE workspace + Provides the interface and basic tools for the KDE workspace + http://download.kde.org/stable/plasma/5.3.2/kscreen-5.3.2.tar.xz + + qt5-base-devel + qt5-graphicaleffects + python3 + libgcc + kdoctools-devel + extra-cmake-modules + + desktop/kde/plasma/kscreen/pspec.xml + + + kscreen + + qt5-base + libgcc + libkscreen + qt5-declarative + kcoreaddons + kglobalaccel + kconfigwidgets + kwidgetsaddons + kdbusaddons + ki18n + kxmlgui + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + kde-gtk-config + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + unknown + GTK2 and GTK3 Configurator for KDE + Configuration dialog to adapt GTK+ applications appearance to your taste under KDE. + http://download.kde.org/stable/plasma/5.3.2/kde-gtk-config-5.3.2.tar.xz + + qt5-base-devel + kio-devel + libgcc + glib2-devel + ki18n-devel + kcoreaddons-devel + kiconthemes-devel + kwidgetsaddons-devel + kcmutils-devel + karchive-devel + kauth-devel + kconfigwidgets-devel + knewstuff-devel + gtk2-devel + gtk3-devel + extra-cmake-modules + + desktop/kde/plasma/kde-gtk-config/pspec.xml + + + kde-gtk-config + + qt5-base + libgcc + glib2 + kio + ki18n + kcoreaddons + kiconthemes + kwidgetsaddons + kcmutils + karchive + kauth + knewstuff + kconfigwidgets + gtk2 + gtk3 + + + /usr/share + /etc/xdg/cgc* + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-runtime + + + kde-runtime + + + + + 2015-07-01 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-06 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + prison-qt5 @@ -17245,6 +24582,79 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kate + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + app:gui + unknown + Advanced Text Editor + Plasma library and runtime components based upon KF5 and Qt5 + http://download.kde.org/stable/applications/15.04.2/src/kate-15.04.2.tar.xz + + qt5-base-devel + plasma-framework-devel + python3 + kdoctools-devel + extra-cmake-modules + + desktop/kde/kde5-application/kate/pspec.xml + + + kate + + qt5-base + libgcc + knewstuff + ki18n + kconfig + kguiaddons + kjobwidgets + kitemmodels + kio + kparts + ktexteditor + kwindowsystem + kxmlgui + plasma-framework + kwallet + kservice + kbookmarks + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + ktextwidgets + threadweaver + kconfigwidgets + knotifications + kwidgetsaddons + + + /usr/share + /etc/xdg + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + + + 2015-06-03 + 15.04.2 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kde5-konsole diff --git a/pisi-index.xml.sha1sum b/pisi-index.xml.sha1sum index 6477dfcd57..8cd6932f51 100644 --- a/pisi-index.xml.sha1sum +++ b/pisi-index.xml.sha1sum @@ -1 +1 @@ -21ac95f403ea282848893903c7f2eff06db4d50a \ No newline at end of file +05c7da290a12f3f08864fcb88e9194a2c6b1f6a0 \ No newline at end of file diff --git a/pisi-index.xml.xz b/pisi-index.xml.xz index fff4a55a20144ec28fe8db09688e5cfda3fe4a6e..bc52378c38ae89b8f322d7e2d9ca5dfa265bc5db 100644 GIT binary patch delta 78120 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 delta 64820 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

+VZ!FAZtMUy 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%0D>CxU2ZEy5!*CN4^S_ZLqf7T&&GwW5(KRxkZ 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 BP!j+E diff --git a/pisi-index.xml.xz.sha1sum b/pisi-index.xml.xz.sha1sum index 8a5911512d..09fc8adaf0 100644 --- a/pisi-index.xml.xz.sha1sum +++ b/pisi-index.xml.xz.sha1sum @@ -1 +1 @@ -99495b132ef22892848aaba58d10a369ebda7188 \ No newline at end of file +234d63ce3646d79210e1e22bd24a17a7ee3e6125 \ No newline at end of file From 85bc56cff2aff9e3ff9cc1c5b540ac3f55526b8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 00:58:49 +0300 Subject: [PATCH 058/175] gstreamer cosmetic fix --- multimedia/video/gstreamer/pspec.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/multimedia/video/gstreamer/pspec.xml b/multimedia/video/gstreamer/pspec.xml index 999787ba04..c0e31c9adc 100644 --- a/multimedia/video/gstreamer/pspec.xml +++ b/multimedia/video/gstreamer/pspec.xml @@ -14,6 +14,10 @@

GStreamer streaming media framework runtime GStreamer is a streaming media framework, based on graphs of filters which operate on media data. Applications using this library can do anything from real-time sound processing to playing videos, and just about anything else media-related. http://ftp.gnome.org/pub/gnome/sources/gstreamer/0.10/gstreamer-0.10.36.tar.xz + + gobject-introspection-devel + libxml2-devel + wrapper-plugins.patch @@ -23,13 +27,9 @@ gstreamer - - gobject-introspection-devel - libxml2-devel - - + gobject-introspection - libxml2 + libxml2 /usr/bin @@ -78,10 +78,10 @@ - + 2015-06-26 0.10.36 - Rebuilt, fixed. + Rebuild, fixed. Hakan Yıldız hknyldz93@gmail.com From 4ea77054550e3292f74ea01e2115051b78ab4ef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 10:19:21 +0300 Subject: [PATCH 059/175] icu4c, and firebird verbump --- programming/misc/icu4c/pspec.xml | 23 +++++++++++++++++++++-- server/database/firebird/pspec.xml | 15 +++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/programming/misc/icu4c/pspec.xml b/programming/misc/icu4c/pspec.xml index 449b658c96..09c83f5df0 100644 --- a/programming/misc/icu4c/pspec.xml +++ b/programming/misc/icu4c/pspec.xml @@ -13,8 +13,11 @@ International Components for Unicode ICU is a mature, widely used set of C/C++ and Java libraries for Unicode support, software internationalization and globalization (i18n/g11n). This package contains the C/C++ libraries. - http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.tgz + http://source.icu-project.org/repos/icu/icu/tags/release-55-1/APIChangeReport.html --> + http://download.icu-project.org/files/icu4c/55.1/icu4c-55_1-src.tgz + + libgcc + @@ -22,6 +25,9 @@ icu4c + + libgcc + /usr/bin /usr/sbin @@ -52,8 +58,14 @@ emul32 32-bit shared libraries for icu4c _emul32 + + libgcc + glibc-32bit + icu4c + libgcc + glibc-32bit /usr/lib32/libicu* @@ -62,6 +74,13 @@ + + 2015-07-03 + 55.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2015-01-22 54.1 diff --git a/server/database/firebird/pspec.xml b/server/database/firebird/pspec.xml index 705b0c7ec9..61fd7b20ff 100644 --- a/server/database/firebird/pspec.xml +++ b/server/database/firebird/pspec.xml @@ -15,7 +15,7 @@ library A relational database offering many ANSI SQL-99 features Firebird is an open source relational database management system offering many ANSI SQL-99 features. - http://sourceforge.net/projects/firebird/files/firebird/2.5.2-Release/Firebird-2.5.2.26540-0.tar.bz2/download + http://sourceforge.net/projects/firebird/files/firebird/2.5.4-Release/Firebird-2.5.4.26856-0.tar.bz2 icu4c-devel btyacc @@ -34,6 +34,9 @@ firebird-client + + libgcc + Firebird database client library Firebird relational database client library. @@ -50,12 +53,13 @@ firebird-superserver - Firebird super server firebird-client icu4c libedit + libgcc + Firebird super server /etc/firebird /etc/env.d/50firebird @@ -98,6 +102,13 @@ + + 2015-07-03 + 2.5.4.26856 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2014-05-19 2.5.2.26540 From 3cdda07e29753fee57bded64060d3ee2b345d5dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 10:45:15 +0300 Subject: [PATCH 060/175] unixODBC fix deps --- programming/misc/unixODBC/pspec.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/programming/misc/unixODBC/pspec.xml b/programming/misc/unixODBC/pspec.xml index a485f7aa73..087be40267 100644 --- a/programming/misc/unixODBC/pspec.xml +++ b/programming/misc/unixODBC/pspec.xml @@ -14,10 +14,16 @@ ODBC Interface for Linux The unixODBC Project goals are to develop and promote unixODBC to be the definitive standard for ODBC on non MS Windows platforms. http://www.unixodbc.org/unixODBC-2.3.2.tar.gz + + libtool-ltdl + unixODBC + + libtool-ltdl + /etc /usr/bin From aeea8eafa729c4ddccb2498bb6d5624b2845724b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 10:59:39 +0300 Subject: [PATCH 061/175] libaio in programming/library --- programming/library/libaio/actions.py | 37 ++++++++ .../libaio/files/92_unused_warnings.patch | 44 +++++++++ .../libaio/files/libaio-0.3.106-build.patch | 26 ++++++ .../files/libaio-0.3.107-ar-ranlib.patch | 17 ++++ .../files/libaio-0.3.109-generic-arch.patch | 62 +++++++++++++ .../files/libaio-0.3.109-testcase-8.patch | 19 ++++ .../libaio-0.3.109-unify-bits-endian.patch | 60 ++++++++++++ .../libaio/files/libaio-0.3.109-x32.patch | 63 +++++++++++++ .../files/libaio-install-to-slash.patch | 30 ++++++ programming/library/libaio/pspec.xml | 93 +++++++++++++++++++ programming/library/libaio/translations.xml | 14 +++ 11 files changed, 465 insertions(+) create mode 100644 programming/library/libaio/actions.py create mode 100644 programming/library/libaio/files/92_unused_warnings.patch create mode 100644 programming/library/libaio/files/libaio-0.3.106-build.patch create mode 100644 programming/library/libaio/files/libaio-0.3.107-ar-ranlib.patch create mode 100644 programming/library/libaio/files/libaio-0.3.109-generic-arch.patch create mode 100644 programming/library/libaio/files/libaio-0.3.109-testcase-8.patch create mode 100644 programming/library/libaio/files/libaio-0.3.109-unify-bits-endian.patch create mode 100644 programming/library/libaio/files/libaio-0.3.109-x32.patch create mode 100644 programming/library/libaio/files/libaio-install-to-slash.patch create mode 100644 programming/library/libaio/pspec.xml create mode 100644 programming/library/libaio/translations.xml diff --git a/programming/library/libaio/actions.py b/programming/library/libaio/actions.py new file mode 100644 index 0000000000..309784d537 --- /dev/null +++ b/programming/library/libaio/actions.py @@ -0,0 +1,37 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def build(): + pisitools.dosed("src/Makefile", "=-shared", r"= -Wl,-O1,--as-needed -shared") + if get.buildTYPE() == "emul32": + pisitools.dosed(".", "\/lib$", r"/lib%s\n" % "32" if get.buildTYPE() == "emul32" else "", filePattern="Makefile") + autotools.make() + +#def check(): + #shelltools.cd("harness") + #pisitools.dodir("testdir") + + #autotools.make("check prefix=../src libdir=../src") + + +def install(): + + if get.buildTYPE() == "emul32": + autotools.rawInstall("prefix=%s/usr \ + includedir=%s/usr/include \ + libdir%s/=usr/lib32 " % ((get.installDIR(), ) * 3)) + pisitools.remove("/usr/lib32/libaio.a") + else: + autotools.rawInstall("prefix=%s/usr \ + includedir=%s/usr/include \ + libdir%s/=usr/lib " % ((get.installDIR(), ) * 3)) + pisitools.remove("/usr/lib/libaio.a") + + pisitools.dodoc("ChangeLog", "COPYING", "TODO") diff --git a/programming/library/libaio/files/92_unused_warnings.patch b/programming/library/libaio/files/92_unused_warnings.patch new file mode 100644 index 0000000000..d3b22ab921 --- /dev/null +++ b/programming/library/libaio/files/92_unused_warnings.patch @@ -0,0 +1,44 @@ +Index: b/harness/cases/12.t +=================================================================== +--- a/harness/cases/12.t ++++ b/harness/cases/12.t +@@ -18,7 +18,7 @@ + + int test_main(void) + { +- int res, status; ++ int status; + pid_t pid; + sigset_t set; + +@@ -35,7 +35,7 @@ + if (pid == 0) + test_child(); + +- res = waitpid(pid, &status, 0); ++ waitpid(pid, &status, 0); + + if (WIFEXITED(status)) { + int failed = (WEXITSTATUS(status) != 0); +Index: b/harness/cases/14.t +=================================================================== +--- a/harness/cases/14.t ++++ b/harness/cases/14.t +@@ -59,7 +59,7 @@ + /* from 12.t */ + int test_main(void) + { +- int res, status; ++ int status; + pid_t pid; + sigset_t set; + +@@ -75,7 +75,7 @@ + if (pid == 0) + test_child(); + +- res = waitpid(pid, &status, 0); ++ waitpid(pid, &status, 0); + + if (WIFEXITED(status)) { + int failed = (WEXITSTATUS(status) != 0); \ No newline at end of file diff --git a/programming/library/libaio/files/libaio-0.3.106-build.patch b/programming/library/libaio/files/libaio-0.3.106-build.patch new file mode 100644 index 0000000000..4a8434bb7e --- /dev/null +++ b/programming/library/libaio/files/libaio-0.3.106-build.patch @@ -0,0 +1,26 @@ +--- src/Makefile.orig 2006-07-09 19:46:41.000000000 -0700 ++++ src/Makefile 2006-07-09 19:51:00.000000000 -0700 +@@ -2,11 +2,10 @@ + includedir=$(prefix)/include + libdir=$(prefix)/lib + +-ARCH := $(shell uname -m | sed -e s/i.86/i386/) +-CFLAGS := -nostdlib -nostartfiles -Wall -I. -g -fomit-frame-pointer -O2 -fPIC +-SO_CFLAGS=-shared $(CFLAGS) ++CFLAGS += -nostdlib -nostartfiles -Wall -I. -fPIC ++SO_CFLAGS=-shared $(CFLAGS) + L_CFLAGS=$(CFLAGS) +-LINK_FLAGS= ++LINK_FLAGS=-lgcc -lrt $(LDFLAGS) + + soname=libaio.so.1 + minor=0 +@@ -48,7 +47,7 @@ + ranlib libaio.a + + $(libname): $(libaio_sobjs) libaio.map +- $(CC) $(SO_CFLAGS) -Wl,--version-script=libaio.map -Wl,-soname=$(soname) -o $@ $(libaio_sobjs) $(LINK_FLAGS) ++ $(CC) $(SO_CFLAGS) -Wl,--version-script=libaio.map -Wl,-soname,$(soname) -o $@ $(libaio_sobjs) $(LINK_FLAGS) + + install: $(all_targets) + install -D -m 644 libaio.h $(includedir)/libaio.h diff --git a/programming/library/libaio/files/libaio-0.3.107-ar-ranlib.patch b/programming/library/libaio/files/libaio-0.3.107-ar-ranlib.patch new file mode 100644 index 0000000000..d1ec1403a0 --- /dev/null +++ b/programming/library/libaio/files/libaio-0.3.107-ar-ranlib.patch @@ -0,0 +1,17 @@ +--- a/src/Makefile ++++ b/src/Makefile +@@ -42,10 +42,12 @@ + $(CC) $(L_CFLAGS) -c -o $@ $< + + ++AR ?= ar ++RANLIB ?= ranlib + libaio.a: $(libaio_objs) + rm -f libaio.a +- ar r libaio.a $^ +- ranlib libaio.a ++ $(AR) r libaio.a $^ ++ $(RANLIB) libaio.a + + $(libname): $(libaio_sobjs) libaio.map + $(CC) $(SO_CFLAGS) -Wl,--version-script=libaio.map -Wl,-soname,$(soname) -o $@ $(libaio_sobjs) $(LINK_FLAGS) diff --git a/programming/library/libaio/files/libaio-0.3.109-generic-arch.patch b/programming/library/libaio/files/libaio-0.3.109-generic-arch.patch new file mode 100644 index 0000000000..fea3aeeee4 --- /dev/null +++ b/programming/library/libaio/files/libaio-0.3.109-generic-arch.patch @@ -0,0 +1,62 @@ +From 5e96c73d5dfbdea8d0be82b7f3fc8d6735e5dfa7 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Sun, 17 Jan 2010 17:07:48 -0500 +Subject: [PATCH] add a generic syscall() fallback + +Signed-off-by: Mike Frysinger +--- + src/syscall-generic.h | 29 +++++++++++++++++++++++++++++ + src/syscall.h | 3 ++- + 2 files changed, 31 insertions(+), 1 deletions(-) + create mode 100644 src/syscall-generic.h + +diff --git a/src/syscall-generic.h b/src/syscall-generic.h +new file mode 100644 +index 0000000..24d7c7c +--- /dev/null ++++ b/src/syscall-generic.h +@@ -0,0 +1,29 @@ ++#include ++#include ++#include ++ ++#define _body_io_syscall(sname, args...) \ ++{ \ ++ int ret = syscall(__NR_##sname, ## args); \ ++ return ret < 0 ? -errno : ret; \ ++} ++ ++#define io_syscall1(type,fname,sname,type1,arg1) \ ++type fname(type1 arg1) \ ++_body_io_syscall(sname, (long)arg1) ++ ++#define io_syscall2(type,fname,sname,type1,arg1,type2,arg2) \ ++type fname(type1 arg1,type2 arg2) \ ++_body_io_syscall(sname, (long)arg1, (long)arg2) ++ ++#define io_syscall3(type,fname,sname,type1,arg1,type2,arg2,type3,arg3) \ ++type fname(type1 arg1,type2 arg2,type3 arg3) \ ++_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3) ++ ++#define io_syscall4(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ ++type fname (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ ++_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3, (long)arg4) ++ ++#define io_syscall5(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4, type5,arg5) \ ++type fname (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ ++_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3, (long)arg4, (long)arg5) +diff --git a/src/syscall.h b/src/syscall.h +index 78becfe..d954af0 100644 +--- a/src/syscall.h ++++ b/src/syscall.h +@@ -25,5 +25,6 @@ + #elif defined(__arm__) + #include "syscall-arm.h" + #else +-#error "add syscall-arch.h" ++#warning "using generic syscall method" ++#include "syscall-generic.h" + #endif +-- +1.7.3.1 + diff --git a/programming/library/libaio/files/libaio-0.3.109-testcase-8.patch b/programming/library/libaio/files/libaio-0.3.109-testcase-8.patch new file mode 100644 index 0000000000..de05421b58 --- /dev/null +++ b/programming/library/libaio/files/libaio-0.3.109-testcase-8.patch @@ -0,0 +1,19 @@ +Do not ignore return value of ftruncate(): testcases are compiled with -Werror, +and ftruncate is declared with attribute warn_unused_result. +--- harness/cases/8.t.orig 2012-03-09 16:40:04.074168070 +0100 ++++ harness/cases/8.t 2012-03-09 16:40:57.777278646 +0100 +@@ -9,12 +9,13 @@ + { + long long min = 0, max = 9223372036854775807LL; + char c = 0; ++ int ret; + + while (max - min > 1) { + if (pwrite64(fd, &c, 1, (min + max) / 2) == -1) + max = (min + max) / 2; + else { +- ftruncate(fd, 0); ++ ret = ftruncate(fd, 0); assert(ret == 0); + min = (min + max) / 2; + } + } diff --git a/programming/library/libaio/files/libaio-0.3.109-unify-bits-endian.patch b/programming/library/libaio/files/libaio-0.3.109-unify-bits-endian.patch new file mode 100644 index 0000000000..a94ea20bea --- /dev/null +++ b/programming/library/libaio/files/libaio-0.3.109-unify-bits-endian.patch @@ -0,0 +1,60 @@ +diff --git a/src/libaio.h b/src/libaio.h +index ffe8259..4a6c9fb 100644 +--- a/src/libaio.h ++++ b/src/libaio.h +@@ -49,40 +49,34 @@ typedef enum io_iocb_cmd { + IO_CMD_PWRITEV = 8, + } io_iocb_cmd_t; + +-#if defined(__i386__) /* little endian, 32 bits */ ++/* little endian, 32 bits */ ++#if defined(__i386__) || defined(__sh__) || defined(__bfin__) || \ ++ defined(__ARMEL__) || defined(__MIPSEL__) || defined(__cris__) + #define PADDED(x, y) x; unsigned y + #define PADDEDptr(x, y) x; unsigned y + #define PADDEDul(x, y) unsigned long x; unsigned y ++ ++/* little endian, 64 bits */ + #elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) + #define PADDED(x, y) x, y + #define PADDEDptr(x, y) x + #define PADDEDul(x, y) unsigned long x +-#elif defined(__powerpc64__) /* big endian, 64 bits */ +-#define PADDED(x, y) unsigned y; x +-#define PADDEDptr(x,y) x +-#define PADDEDul(x, y) unsigned long x +-#elif defined(__PPC__) /* big endian, 32 bits */ +-#define PADDED(x, y) unsigned y; x +-#define PADDEDptr(x, y) unsigned y; x +-#define PADDEDul(x, y) unsigned y; unsigned long x +-#elif defined(__s390x__) /* big endian, 64 bits */ ++ ++/* big endian, 64 bits */ ++#elif defined(__powerpc64__) || defined(__s390x__) || \ ++ (defined(__sparc__) && defined(__arch64__)) + #define PADDED(x, y) unsigned y; x + #define PADDEDptr(x,y) x + #define PADDEDul(x, y) unsigned long x +-#elif defined(__s390__) /* big endian, 32 bits */ +-#define PADDED(x, y) unsigned y; x +-#define PADDEDptr(x, y) unsigned y; x +-#define PADDEDul(x, y) unsigned y; unsigned long x +-#elif defined(__arm__) +-# if defined (__ARMEB__) /* big endian, 32 bits */ ++ ++/* big endian, 32 bits */ ++#elif defined(__PPC__) || defined(__s390__) || defined(__ARMEB__) || \ ++ defined(__MIPSEB__) || defined(__sparc__) || defined(__m68k__) || \ ++ defined(__hppa__) || defined(__frv__) || defined(__avr32__) + #define PADDED(x, y) unsigned y; x + #define PADDEDptr(x, y) unsigned y; x + #define PADDEDul(x, y) unsigned y; unsigned long x +-# else /* little endian, 32 bits */ +-#define PADDED(x, y) x; unsigned y +-#define PADDEDptr(x, y) x; unsigned y +-#define PADDEDul(x, y) unsigned long x; unsigned y +-# endif ++ + #else + #error endian? + #endif \ No newline at end of file diff --git a/programming/library/libaio/files/libaio-0.3.109-x32.patch b/programming/library/libaio/files/libaio-0.3.109-x32.patch new file mode 100644 index 0000000000..1d2c2a9050 --- /dev/null +++ b/programming/library/libaio/files/libaio-0.3.109-x32.patch @@ -0,0 +1,63 @@ +http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=f5c071d93c9e6f57930bce56b1e4f009c160a826 + +Upstream-Status: Pending + +Properly load arguments 5 an 6 for x86-64 syscall +Use asm ("r10") and asm ("r8") to load arguments 5 an 6 for x86-64 +syscall so that it works with both x32 and x86-64. + +Received this patch from H.J. Lu + +Signed-Off-By: Nitin A Kamble +2011/12/02 + +--- libaio-0.3.109/src/syscall-x86_64.h.x32 2009-10-09 11:17:02.000000000 -0700 ++++ libaio-0.3.109/src/syscall-x86_64.h 2011-12-02 09:09:07.537603224 -0800 +@@ -1,8 +1,18 @@ ++#ifndef __NR_io_setup + #define __NR_io_setup 206 ++#endif ++#ifndef __NR_io_destroy + #define __NR_io_destroy 207 ++#endif ++#ifndef __NR_io_getevents + #define __NR_io_getevents 208 ++#endif ++#ifndef __NR_io_submit + #define __NR_io_submit 209 ++#endif ++#ifndef __NR_io_cancel + #define __NR_io_cancel 210 ++#endif + + #define __syscall_clobber "r11","rcx","memory" + #define __syscall "syscall" +@@ -42,10 +52,11 @@ return __res; \ + type fname (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ + { \ + long __res; \ +-__asm__ volatile ("movq %5,%%r10 ;" __syscall \ ++register long __a4 asm ("r10") = (long) arg4; \ ++__asm__ volatile (__syscall \ + : "=a" (__res) \ + : "0" (__NR_##sname),"D" ((long)(arg1)),"S" ((long)(arg2)), \ +- "d" ((long)(arg3)),"g" ((long)(arg4)) : __syscall_clobber,"r10" ); \ ++ "d" ((long)(arg3)),"r" (__a4)); \ + return __res; \ + } + +@@ -54,10 +65,11 @@ return __res; \ + type fname (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ + { \ + long __res; \ +-__asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; " __syscall \ ++register long __a4 asm ("r10") = (long) arg4; \ ++register long __a5 asm ("r8") = (long) arg5; \ ++__asm__ volatile ( __syscall \ + : "=a" (__res) \ + : "0" (__NR_##sname),"D" ((long)(arg1)),"S" ((long)(arg2)), \ +- "d" ((long)(arg3)),"g" ((long)(arg4)),"g" ((long)(arg5)) : \ +- __syscall_clobber,"r8","r10" ); \ ++ "d" ((long)(arg3)),"r" (__a4),"r" (__a5)); \ + return __res; \ + } diff --git a/programming/library/libaio/files/libaio-install-to-slash.patch b/programming/library/libaio/files/libaio-install-to-slash.patch new file mode 100644 index 0000000000..98fbfe0d5e --- /dev/null +++ b/programming/library/libaio/files/libaio-install-to-slash.patch @@ -0,0 +1,30 @@ +diff -up libaio-0.3.107/src/Makefile.orig libaio-0.3.107/src/Makefile +--- libaio-0.3.107/src/Makefile.orig 2009-01-20 10:07:31.520105235 -0500 ++++ libaio-0.3.107/src/Makefile 2009-01-20 10:08:51.199104930 -0500 +@@ -1,6 +1,7 @@ + prefix=/usr +-includedir=$(prefix)/include +-libdir=$(prefix)/lib ++includedir=/usr/include ++libdir=/usr/lib ++usrlibdir=/usr/lib + + ARCH := $(shell uname -m | sed -e s/i.86/i386/) + CFLAGS := -nostdlib -nostartfiles -Wall -I. -g -fomit-frame-pointer -O2 -fPIC +@@ -51,11 +52,11 @@ $(libname): $(libaio_sobjs) libaio.map + $(CC) $(SO_CFLAGS) -Wl,--version-script=libaio.map -Wl,-soname=$(soname) -o $@ $(libaio_sobjs) $(LINK_FLAGS) + + install: $(all_targets) +- install -D -m 644 libaio.h $(includedir)/libaio.h +- install -D -m 644 libaio.a $(libdir)/libaio.a +- install -D -m 755 $(libname) $(libdir)/$(libname) +- ln -sf $(libname) $(libdir)/$(soname) +- ln -sf $(libname) $(libdir)/libaio.so ++ install -D -m 644 libaio.h $(destdir)$(includedir)/libaio.h ++ install -D -m 644 libaio.a $(destdir)$(usrlibdir)/libaio.a ++ install -D -m 755 $(libname) $(destdir)$(libdir)/$(libname) ++ ln -sf $(libdir)/$(libname) $(destdir)$(libdir)/$(soname) ++ ln -sf $(libdir)/$(libname) $(destdir)$(usrlibdir)/libaio.so + + $(libaio_objs): libaio.h + \ No newline at end of file diff --git a/programming/library/libaio/pspec.xml b/programming/library/libaio/pspec.xml new file mode 100644 index 0000000000..e8d1b1c762 --- /dev/null +++ b/programming/library/libaio/pspec.xml @@ -0,0 +1,93 @@ + + + + + libaio + http://lse.sourceforge.net/io/aio.html + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + Linux-native asynchronous I/O access library + libaio has a richer API and capability set than the simple POSIX async I/O facility. + http://enterprise-storage-os.googlecode.com/files/libaio-0.3.109.tar.bz2 + + libaio-0.3.106-build.patch + + libaio-0.3.107-ar-ranlib.patch + 92_unused_warnings.patch + libaio-0.3.109-testcase-8.patch + libaio-0.3.109-generic-arch.patch + libaio-0.3.109-unify-bits-endian.patch + libaio-0.3.109-x32.patch + + + + + libaio + + /lib + /usr/lib + /usr/share/doc + + + + + libaio-32bit + emul32 + 32-bit shared libraries for libaio + emul32 + + libaio + + + /usr/lib32 + + + + + libaio-devel + Development files for libaio + + libaio + + + /usr/include + + /usr/share/man/man3 + + + + + + 2014-05-19 + 0.3.109 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-06 + 0.3.109 + Add emul32 + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-16 + 0.3.109 + URL Fixed + PisiLinux Community + admins@pisilinux.org + + + 2012-11-14 + 0.3.109 + First release + PisiLinux Community + admins@pisilinux.org + + + \ No newline at end of file diff --git a/programming/library/libaio/translations.xml b/programming/library/libaio/translations.xml new file mode 100644 index 0000000000..4b27c4a2bf --- /dev/null +++ b/programming/library/libaio/translations.xml @@ -0,0 +1,14 @@ + + + + libaio + Linux asenkron girdi/çıktı kütüphanesi + libaio, basit POSIX asenkron girdi/çıktı desteğinden daha iyi bir programlama arayüzü sunan bir kütüphanedir. + Librairie d'entrée/sortie asynchrone utilisant l'interface native du noyau. + + + + libaio-devel + libaio için geliştirme dosyaları + + From 88c555859c64e554909133fdc67156e5a700d39a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 11:34:04 +0300 Subject: [PATCH 062/175] libevent is dep recommended for mariadb --- programming/misc/libevent/actions.py | 26 ++++++ .../files/libevent-2.0.13-manpages-on.patch | 12 +++ .../libevent-2.0.21-stable-automake-fix.patch | 24 +++++ .../libevent/files/libevent-linkage_fix.diff | 11 +++ programming/misc/libevent/pspec.xml | 89 +++++++++++++++++++ programming/misc/libevent/translations.xml | 14 +++ 6 files changed, 176 insertions(+) create mode 100644 programming/misc/libevent/actions.py create mode 100644 programming/misc/libevent/files/libevent-2.0.13-manpages-on.patch create mode 100644 programming/misc/libevent/files/libevent-2.0.21-stable-automake-fix.patch create mode 100644 programming/misc/libevent/files/libevent-linkage_fix.diff create mode 100644 programming/misc/libevent/pspec.xml create mode 100644 programming/misc/libevent/translations.xml diff --git a/programming/misc/libevent/actions.py b/programming/misc/libevent/actions.py new file mode 100644 index 0000000000..6ec44ad35d --- /dev/null +++ b/programming/misc/libevent/actions.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +WorkDir = "libevent-%s-stable" % get.srcVERSION() + +def setup(): + pisitools.dosed("Makefile.am", "libevent_extra_la_LIBADD =", "libevent_extra_la_LIBADD = libevent.la ") + autotools.autoreconf("-fi") + autotools.configure("--disable-static") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("README") diff --git a/programming/misc/libevent/files/libevent-2.0.13-manpages-on.patch b/programming/misc/libevent/files/libevent-2.0.13-manpages-on.patch new file mode 100644 index 0000000000..97dd633844 --- /dev/null +++ b/programming/misc/libevent/files/libevent-2.0.13-manpages-on.patch @@ -0,0 +1,12 @@ +diff -up libevent-2.0.13-stable/Doxyfile.orig libevent-2.0.13-stable/Doxyfile +--- libevent-2.0.13-stable/Doxyfile.orig 2011-07-05 13:04:30.000000000 -0400 ++++ libevent-2.0.13-stable/Doxyfile 2011-08-10 08:18:42.036654445 -0400 +@@ -175,7 +175,7 @@ LATEX_HIDE_INDICES = NO + # If the GENERATE_MAN tag is set to YES (the default) Doxygen will + # generate man pages + +-GENERATE_MAN = NO ++GENERATE_MAN = YES + + # The MAN_EXTENSION tag determines the extension that is added to + # the generated man pages (default is the subroutine's section .3) diff --git a/programming/misc/libevent/files/libevent-2.0.21-stable-automake-fix.patch b/programming/misc/libevent/files/libevent-2.0.21-stable-automake-fix.patch new file mode 100644 index 0000000000..cf8ab2b916 --- /dev/null +++ b/programming/misc/libevent/files/libevent-2.0.21-stable-automake-fix.patch @@ -0,0 +1,24 @@ +diff -Naur -x '*~' libevent-2.0.21-stable/configure.in libevent-2.0.21-stable-automake-fix/configure.in +--- libevent-2.0.21-stable/configure.in 2012-11-18 07:34:13.000000000 +0100 ++++ libevent-2.0.21-stable-automake-fix/configure.in 2012-12-31 14:04:30.219499020 +0100 +@@ -12,7 +12,7 @@ + AC_CONFIG_MACRO_DIR([m4]) + + AM_INIT_AUTOMAKE(libevent,2.0.21-stable) +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADER(config.h) + AC_DEFINE(NUMERIC_VERSION, 0x02001500, [Numeric representation of the version]) + + dnl Initialize prefix. +diff -Naur -x '*~' libevent-2.0.21-stable/test/Makefile.am libevent-2.0.21-stable-automake-fix/test/Makefile.am +--- libevent-2.0.21-stable/test/Makefile.am 2012-05-31 06:08:19.000000000 +0200 ++++ libevent-2.0.21-stable-automake-fix/test/Makefile.am 2012-12-31 14:10:49.045538012 +0100 +@@ -19,7 +19,7 @@ + EXTRA_PROGRAMS = regress + noinst_HEADERS = tinytest.h tinytest_macros.h regress.h tinytest_local.h + +-TESTS = $(top_srcdir)/test/test.sh ++TESTS = test.sh + + BUILT_SOURCES = + if BUILD_REGRESS diff --git a/programming/misc/libevent/files/libevent-linkage_fix.diff b/programming/misc/libevent/files/libevent-linkage_fix.diff new file mode 100644 index 0000000000..0210239383 --- /dev/null +++ b/programming/misc/libevent/files/libevent-linkage_fix.diff @@ -0,0 +1,11 @@ +--- Makefile.am 2011-06-14 10:17:58.169588904 +0200 ++++ Makefile.am.oden 2011-06-14 10:22:36.410588885 +0200 +@@ -178,7 +178,7 @@ + MAYBE_CORE = libevent_core.la + else + NO_UNDEFINED = +-MAYBE_CORE = ++MAYBE_CORE = libevent_core.la + endif + + GENERIC_LDFLAGS = -version-info $(VERSION_INFO) $(NO_UNDEFINED) diff --git a/programming/misc/libevent/pspec.xml b/programming/misc/libevent/pspec.xml new file mode 100644 index 0000000000..77e2fcff9f --- /dev/null +++ b/programming/misc/libevent/pspec.xml @@ -0,0 +1,89 @@ + + + + + libevent + http://monkey.org/~provos/libevent + + PisiLinux Community + admins@pisilinux.org + + BSD + library + A library to execute a function when a specific event occurs on a file descriptor + The libevent API provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached. libevent is meant to replace the asynchronous event loop found in event driven network servers. An application just needs to call event_dispatch() and can then add or remove events dynamically without having to change the event loop. + https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz + + openssl-devel + zlib-devel + + + libevent-linkage_fix.diff + libevent-2.0.13-manpages-on.patch + libevent-2.0.21-stable-automake-fix.patch + + + + + libevent + + openssl + + + /usr/bin + /usr/lib + /usr/share/doc + + + + + libevent-devel + Development files for libevent + + libevent + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + + 2014-05-31 + 2.0.21 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-02-25 + 2.0.21 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-07-27 + 2.0.21 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-03-27 + 2.0.21 + bump + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2012-10-14 + 2.0.20 + First release + PisiLinux Community + admins@pisilinux.org + + + \ No newline at end of file diff --git a/programming/misc/libevent/translations.xml b/programming/misc/libevent/translations.xml new file mode 100644 index 0000000000..b90b5499da --- /dev/null +++ b/programming/misc/libevent/translations.xml @@ -0,0 +1,14 @@ + + + + libevent + Dosya tanımlayıcıları üzerindeki belirli değişiklerde belirli fonksiyonların çalıştırılmasını sağlayan bir kitaplığı + Une librairie pour exécuter une fonction lorsqu'un événement spécifique a lieu sur un descripteur (descriptor) de fichier. + libevent dosya tanımlayıcısında tanımlı bir olay oluştuğunda ya da zamanaşımı olduğunda belirlenmiş fonksiyonların çalıştırılma mekanizmasını sağlar. Olay güdümlü(event-driven) ağ sunucularının bulundurduğu asenkron olay döngülerinin(event-loop) yerine alması anlamına gelir. Uygulamanın olay döngüsünü degiştirmek zorunda kalmadan dinamik olarak olay ekleme ve silme işlemlerini yapabilmek için yalnızca event_dispatch() fonksiyonunu çağırması yeterli olur. + + + + libevent-devel + libevent için geliştirme dosyaları + + From 823233c94ab527c56583ed81ccfa8c8386b79e01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 12:04:50 +0300 Subject: [PATCH 063/175] mariadb fix deps and version bump --- server/database/mariadb/pspec.xml | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/server/database/mariadb/pspec.xml b/server/database/mariadb/pspec.xml index fd048025ec..27b3e9f4a6 100644 --- a/server/database/mariadb/pspec.xml +++ b/server/database/mariadb/pspec.xml @@ -12,10 +12,18 @@ app:console MariaDB is a drop-in replacement for MySQL MariaDB strives to be the logical choice for database professionals looking for a robust, scalable, and reliable SQL server. - ftp://ftp.ulak.net.tr/pub/MariaDB/mariadb-10.0.17/source/mariadb-10.0.17.tar.gz + ftp://ftp.ulak.net.tr/pub/MariaDB/mariadb-10.0.20/source/mariadb-10.0.20.tar.gz + ncurses-devel + zlib-devel + libxml2-devel + readline-devel + libevent-devel + openssl-devel + libpcre-devel libaio-devel unixODBC-devel + cmake @@ -27,6 +35,11 @@ library The shared libraries required for MariaDB clients + zlib + libgcc + libpcre + libxml2 + openssl libaio unixODBC @@ -73,6 +86,11 @@ mariadb-lib libaio + zlib + libgcc + libpcre + ncurses + openssl mysql-client @@ -89,7 +107,9 @@ mariadb-lib mariadb-client - libaio + zlib + libgcc + openssl mysql-server @@ -150,6 +170,13 @@ + + 2015-07-03 + 10.0.20 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2015-01-25 10.0.17 From cac083e613d6a00ffb79f32f8d767d7a19cc7607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 15:36:10 +0300 Subject: [PATCH 064/175] work 4 postgresql --- server/database/postgresql/pspec.xml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/server/database/postgresql/pspec.xml b/server/database/postgresql/pspec.xml index 260fb7cb12..316334eb63 100644 --- a/server/database/postgresql/pspec.xml +++ b/server/database/postgresql/pspec.xml @@ -12,12 +12,16 @@ service A powerful, open source relational database system PostgreSQL is a powerful, open source relational database system. - http://ftp.postgresql.org/pub/source/v9.3.4/postgresql-9.3.4.tar.bz2 + https://ftp.postgresql.org/pub/source/v9.3.9/postgresql-9.3.9.tar.bz2 mit-kerberos + pam-devel + readline-devel + zlib-devel + openssl-devel tcl-devel - libxslt-devel - libxml2-devel + libxslt + libxml2 @@ -98,6 +102,13 @@ + + 2015-07-03 + 9.3.9 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2014-05-19 9.3.4 From 26e8ef1d572425ff3489592346d6f6e6250f090a Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 15:11:11 +0200 Subject: [PATCH 065/175] powerdevil version bump and check --- desktop/kde/plasma/powerdevil/actions.py | 19 ++++++ desktop/kde/plasma/powerdevil/pspec.xml | 87 ++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 desktop/kde/plasma/powerdevil/actions.py create mode 100755 desktop/kde/plasma/powerdevil/pspec.xml diff --git a/desktop/kde/plasma/powerdevil/actions.py b/desktop/kde/plasma/powerdevil/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/powerdevil/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/powerdevil/pspec.xml b/desktop/kde/plasma/powerdevil/pspec.xml new file mode 100755 index 0000000000..b4b31b4af9 --- /dev/null +++ b/desktop/kde/plasma/powerdevil/pspec.xml @@ -0,0 +1,87 @@ + + + + + powerdevil + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE power manager module + KDE Power Management module. Provides kded daemon DBus helper and KCM for configuring Power settings + http://download.kde.org/stable/plasma/5.3.2/powerdevil-5.3.2.tar.xz + + qt5-base-devel + kdoctools-devel + kidletime-devel + libgcc + libxcb-devel + libudev-devel + plasma-workspace-devel + extra-cmake-modules + + + + + powerdevil + + qt5-base + kdoctools + kidletime + libgcc + libxcb + libudev + plasma-workspace + kio + kauth + ki18n + solid + kconfig + kxmlgui + kservice + qt5-x11extras + libkscreen + kf5-kactivities + kcompletion + kcoreaddons + kdbusaddons + kglobalaccel + knotifyconfig + kconfigwidgets + knotifications + kwidgetsaddons + kdelibs4-support + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-29 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 087fcd1c3e8aea309724b6f61fb825df5af68602 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 16:32:16 +0300 Subject: [PATCH 066/175] works for openldap --- server/auth/cyrus-sasl/actions.py | 76 ++++++ server/auth/cyrus-sasl/comar/package.py | 11 + server/auth/cyrus-sasl/comar/service.py | 26 +++ .../0011_saslauthd_ac_prog_libtool.patch | 15 ++ .../cyrus-sasl/files/0025_ld_as_needed.patch | 27 +++ .../0026_drop_krb5support_dependency.patch | 14 ++ ...ont_use_la_files_for_opening_plugins.patch | 134 +++++++++++ .../auth/cyrus-sasl/files/CVE-2013-4122.patch | 116 ++++++++++ ...yrus-sasl-2.1.20-saslauthd.conf-path.patch | 20 ++ .../files/cyrus-sasl-2.1.21-sizes.patch | 120 ++++++++++ .../files/cyrus-sasl-2.1.22-as-needed.patch | 11 + .../files/cyrus-sasl-2.1.22-kerberos4.patch | 26 +++ .../cyrus-sasl-2.1.22-ldap-timeout.patch | 25 ++ .../files/cyrus-sasl-2.1.22-qa.patch | 22 ++ .../files/cyrus-sasl-2.1.23-man.patch | 37 +++ .../files/cyrus-sasl-2.1.26-keytab.patch | 36 +++ .../files/cyrus-sasl-2.1.26-no_rpath.patch | 19 ++ .../cyrus-sasl-2.1.26-obsolete-macro.patch | 13 ++ ...2.1.26-prefer-SCRAM-SHA-1-over-PLAIN.patch | 51 ++++ .../files/cyrus-sasl-2.1.26-relro.patch | 59 +++++ .../files/cyrus-sasl-2.1.26-size_t.patch | 12 + .../files/cyrus-sasl-2.1.26-warnings.patch | 74 ++++++ server/auth/cyrus-sasl/files/saslauthd.confd | 16 ++ server/auth/cyrus-sasl/files/saslauthd.pam | 6 + server/auth/cyrus-sasl/files/tmpfiles.conf | 1 + server/auth/cyrus-sasl/pspec.xml | 129 +++++++++++ server/auth/cyrus-sasl/translations.xml | 13 ++ server/auth/mit-kerberos/pspec.xml | 2 +- server/database/postgresql/actions.py | 2 +- server/database/postgresql/pspec.xml | 8 +- server/openldap/actions.py | 100 ++++++++ server/openldap/comar/package.py | 17 ++ server/openldap/comar/slapd.py | 23 ++ server/openldap/comar/slurpd.py | 17 ++ .../openldap-autoconf-pkgconfig-nss.patch | 49 ++++ .../files/fedora/openldap-dns-priority.patch | 192 +++++++++++++++ .../files/fedora/openldap-ldapi-sasl.patch | 55 +++++ .../fedora/openldap-ldaprc-currentdir.patch | 20 ++ ...p-nss-certs-from-certdb-fallback-pem.patch | 86 +++++++ ...enldap-nss-ignore-certdb-type-prefix.patch | 47 ++++ .../fedora/openldap-nss-pk11-freeslot.patch | 27 +++ ...p-nss-regex-search-hashed-cacert-dir.patch | 91 ++++++++ .../openldap-nss-update-list-of-ciphers.patch | 193 +++++++++++++++ .../fedora/openldap-reentrant-gethostby.patch | 33 +++ .../files/fedora/openldap-sql-linking.patch | 14 ++ ..._dlopenadvise-to-get-RTLD_GLOBAL-set.patch | 41 ++++ .../openldap-syncrepl-unset-tls-options.patch | 62 +++++ ...openldap-tls-no-reuse-of-tls_session.patch | 92 ++++++++ .../fedora/openldap-userconfig-setgid.patch | 92 ++++++++ server/openldap/files/gencert.sh | 111 +++++++++ .../files/openldap-2.4.39-blfs_paths-1.patch | 188 +++++++++++++++ .../files/openldap-2.4.39-ntlm-1.patch | 219 ++++++++++++++++++ .../openldap-2.4.39-symbol_versions-1.patch | 160 +++++++++++++ server/openldap/files/slapd.conf | 9 + server/openldap/files/tmpfiles.conf | 1 + server/openldap/pspec.xml | 166 +++++++++++++ server/openldap/translations.xml | 13 ++ util/crypt/nss/pspec.xml | 2 + 58 files changed, 3236 insertions(+), 5 deletions(-) create mode 100644 server/auth/cyrus-sasl/actions.py create mode 100644 server/auth/cyrus-sasl/comar/package.py create mode 100644 server/auth/cyrus-sasl/comar/service.py create mode 100644 server/auth/cyrus-sasl/files/0011_saslauthd_ac_prog_libtool.patch create mode 100644 server/auth/cyrus-sasl/files/0025_ld_as_needed.patch create mode 100644 server/auth/cyrus-sasl/files/0026_drop_krb5support_dependency.patch create mode 100644 server/auth/cyrus-sasl/files/0030-dont_use_la_files_for_opening_plugins.patch create mode 100644 server/auth/cyrus-sasl/files/CVE-2013-4122.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.20-saslauthd.conf-path.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.21-sizes.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-as-needed.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-kerberos4.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-ldap-timeout.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-qa.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.23-man.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-keytab.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-no_rpath.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-obsolete-macro.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-prefer-SCRAM-SHA-1-over-PLAIN.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-relro.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-size_t.patch create mode 100644 server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-warnings.patch create mode 100644 server/auth/cyrus-sasl/files/saslauthd.confd create mode 100644 server/auth/cyrus-sasl/files/saslauthd.pam create mode 100644 server/auth/cyrus-sasl/files/tmpfiles.conf create mode 100644 server/auth/cyrus-sasl/pspec.xml create mode 100644 server/auth/cyrus-sasl/translations.xml create mode 100644 server/openldap/actions.py create mode 100644 server/openldap/comar/package.py create mode 100644 server/openldap/comar/slapd.py create mode 100644 server/openldap/comar/slurpd.py create mode 100644 server/openldap/files/fedora/openldap-autoconf-pkgconfig-nss.patch create mode 100644 server/openldap/files/fedora/openldap-dns-priority.patch create mode 100644 server/openldap/files/fedora/openldap-ldapi-sasl.patch create mode 100644 server/openldap/files/fedora/openldap-ldaprc-currentdir.patch create mode 100644 server/openldap/files/fedora/openldap-nss-certs-from-certdb-fallback-pem.patch create mode 100644 server/openldap/files/fedora/openldap-nss-ignore-certdb-type-prefix.patch create mode 100644 server/openldap/files/fedora/openldap-nss-pk11-freeslot.patch create mode 100644 server/openldap/files/fedora/openldap-nss-regex-search-hashed-cacert-dir.patch create mode 100644 server/openldap/files/fedora/openldap-nss-update-list-of-ciphers.patch create mode 100644 server/openldap/files/fedora/openldap-reentrant-gethostby.patch create mode 100644 server/openldap/files/fedora/openldap-sql-linking.patch create mode 100644 server/openldap/files/fedora/openldap-switch-to-lt_dlopenadvise-to-get-RTLD_GLOBAL-set.patch create mode 100644 server/openldap/files/fedora/openldap-syncrepl-unset-tls-options.patch create mode 100644 server/openldap/files/fedora/openldap-tls-no-reuse-of-tls_session.patch create mode 100644 server/openldap/files/fedora/openldap-userconfig-setgid.patch create mode 100644 server/openldap/files/gencert.sh create mode 100644 server/openldap/files/openldap-2.4.39-blfs_paths-1.patch create mode 100644 server/openldap/files/openldap-2.4.39-ntlm-1.patch create mode 100644 server/openldap/files/openldap-2.4.39-symbol_versions-1.patch create mode 100644 server/openldap/files/slapd.conf create mode 100644 server/openldap/files/tmpfiles.conf create mode 100644 server/openldap/pspec.xml create mode 100644 server/openldap/translations.xml diff --git a/server/auth/cyrus-sasl/actions.py b/server/auth/cyrus-sasl/actions.py new file mode 100644 index 0000000000..283514a333 --- /dev/null +++ b/server/auth/cyrus-sasl/actions.py @@ -0,0 +1,76 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +def setup(): + pisitools.dosed("libsasl2.pc.in", "libdir = @libdir@", "prefix=/usr\nexec_prefix=${prefix}\nlibdir = @libdir@") + def cleanup(): + for p in ("config.*", "ltconfig", "ltmain.sh", "libtool.m4"): + shelltools.unlink("config/%s" % p) + + cleanup() + autotools.autoreconf("-vfi --no-recursive -I config -I cmulocal") + shelltools.cd("saslauthd") + cleanup() + autotools.autoreconf("-vi --no-recursive -I config -I ../cmulocal -I ../config") + shelltools.cd("..") + + pisitools.cflags.add("-fPIC") + + # Don't disable ldap support to break circular dep. with openldap + # As workaround, we remove openldap-client runtime dep. in pspec + autotools.configure("--with-saslauthd=/run/saslauthd \ + --with-pwcheck=/var/lib/sasl2 \ + --with-configdir=/etc/sasl2 \ + --with-plugindir=/usr/lib/sasl2 \ + --with-dbpath=/etc/sasl2/sasldb2 \ + --with-pam \ + --with-ldap \ + --with-openssl \ + --with-dblib=gdbm \ + --with-gss_impl=mit \ + --with-devrandom=/dev/urandom \ + --without-pgsql \ + --without-mysql \ + --enable-anon \ + --enable-cram \ + --enable-digest \ + --enable-gssapi \ + --enable-login \ + --enable-ntlm \ + --enable-plain \ + --enable-ldapdb \ + --enable-checkapop \ + --enable-alwaystrue \ + --disable-java \ + --disable-krb4 \ + --disable-otp \ + --disable-srp \ + --disable-sql \ + --disable-passdss \ + --disable-macos-framework \ + --disable-static") + +def build(): + autotools.make("-j1") + autotools.make("-C saslauthd testsaslauthd") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + autotools.rawInstall("DESTDIR=%s -C plugins" % get.installDIR()) + + pisitools.dodir("/etc/sasl2") + pisitools.dodir("/run/saslauthd") + + for doc in ["AUTHORS", "COPYING", "ChangeLog", "LDAP_SASLAUTHD", "NEWS", "README"]: + pisitools.newdoc("saslauthd/%s" % doc, "saslauthd/%s" % doc) + + pisitools.dohtml("doc/*.html") + pisitools.dodoc("AUTHORS", "COPYING", "ChangeLog", "NEWS", "README", "doc/TODO", "doc/*.txt") diff --git a/server/auth/cyrus-sasl/comar/package.py b/server/auth/cyrus-sasl/comar/package.py new file mode 100644 index 0000000000..997efd2baa --- /dev/null +++ b/server/auth/cyrus-sasl/comar/package.py @@ -0,0 +1,11 @@ +#!/usr/bin/python + +import os + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + if not os.path.exists("/etc/sasl2/sasldb2"): + os.system("/usr/sbin/saslpasswd2 -f /etc/sasl2/sasldb2 -p login") + os.system("/usr/sbin/saslpasswd2 -f /etc/sasl2/sasldb2 -d login") + + os.system("/bin/chown root:mail /etc/sasl2/sasldb2") + os.system("/bin/chmod 0640 /etc/sasl2/sasldb2") diff --git a/server/auth/cyrus-sasl/comar/service.py b/server/auth/cyrus-sasl/comar/service.py new file mode 100644 index 0000000000..04ba1f063e --- /dev/null +++ b/server/auth/cyrus-sasl/comar/service.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- + +from comar.service import * + +serviceType = "server" +serviceDesc = _({"en": "Cyrus-SASL Daemon", + "tr": "Cyrus-SASL Servisi"}) +serviceConf = "saslauthd" + +SOCKETDIR = "/run/saslauthd" +PIDFILE = "/run/saslauthd/saslauthd.pid" + +@synchronized +def start(): + startService(command="/usr/sbin/saslauthd", + args="-m %s %s" % (SOCKETDIR, config.get("SASLAUTHD_OPTS", "")), + pidfile=PIDFILE, + donotify=True) + +@synchronized +def stop(): + stopService(pidfile=PIDFILE, + donotify=True) + +def status(): + return isServiceRunning(PIDFILE) diff --git a/server/auth/cyrus-sasl/files/0011_saslauthd_ac_prog_libtool.patch b/server/auth/cyrus-sasl/files/0011_saslauthd_ac_prog_libtool.patch new file mode 100644 index 0000000000..3805b4857c --- /dev/null +++ b/server/auth/cyrus-sasl/files/0011_saslauthd_ac_prog_libtool.patch @@ -0,0 +1,15 @@ +0011_saslauthd_ac_prog_libtool.dpatch by + +Enable libtool use. + +diff -urNad trunk~/saslauthd/configure.in trunk/saslauthd/configure.in +--- trunk~/saslauthd/configure.in 2006-05-29 22:52:42.000000000 +0300 ++++ trunk/saslauthd/configure.in 2006-11-01 23:41:51.000000000 +0200 +@@ -25,6 +25,7 @@ + AC_PROG_MAKE_SET + AC_PROG_LN_S + AC_PROG_INSTALL ++AC_PROG_LIBTOOL + + dnl Checks for build foo + CMU_C___ATTRIBUTE__ diff --git a/server/auth/cyrus-sasl/files/0025_ld_as_needed.patch b/server/auth/cyrus-sasl/files/0025_ld_as_needed.patch new file mode 100644 index 0000000000..67b48b4a49 --- /dev/null +++ b/server/auth/cyrus-sasl/files/0025_ld_as_needed.patch @@ -0,0 +1,27 @@ +Author: Matthias Klose +Desription: Fix FTBFS, add $(SASL_DB_LIB) as dependency to libsasldb, and use +it. +--- a/saslauthd/Makefile.am ++++ b/saslauthd/Makefile.am +@@ -16,7 +16,7 @@ EXTRA_saslauthd_sources = getaddrinfo.c + saslauthd_DEPENDENCIES = saslauthd-main.o @LTLIBOBJS@ + saslauthd_LDADD = @SASL_KRB_LIB@ \ + @GSSAPIBASE_LIBS@ @GSSAPI_LIBS@ @LIB_CRYPT@ @LIB_SIA@ \ +- @LIB_SOCKET@ @SASL_DB_LIB@ @LIB_PAM@ @LDAP_LIBS@ @LTLIBOBJS@ ++ @LIB_SOCKET@ ../sasldb/libsasldb.la @LIB_PAM@ @LDAP_LIBS@ @LTLIBOBJS@ + + testsaslauthd_SOURCES = testsaslauthd.c utils.c + testsaslauthd_LDADD = @LIB_SOCKET@ +--- a/sasldb/Makefile.am ++++ b/sasldb/Makefile.am +@@ -55,8 +55,8 @@ noinst_LIBRARIES = libsasldb.a + + libsasldb_la_SOURCES = allockey.c sasldb.h + EXTRA_libsasldb_la_SOURCES = $(extra_common_sources) +-libsasldb_la_DEPENDENCIES = $(SASL_DB_BACKEND) +-libsasldb_la_LIBADD = $(SASL_DB_BACKEND) ++libsasldb_la_DEPENDENCIES = $(SASL_DB_BACKEND) $(SASL_DB_LIB) ++libsasldb_la_LIBADD = $(SASL_DB_BACKEND) $(SASL_DB_LIB) + + # Prevent make dist stupidity + libsasldb_a_SOURCES = diff --git a/server/auth/cyrus-sasl/files/0026_drop_krb5support_dependency.patch b/server/auth/cyrus-sasl/files/0026_drop_krb5support_dependency.patch new file mode 100644 index 0000000000..cc00867ef0 --- /dev/null +++ b/server/auth/cyrus-sasl/files/0026_drop_krb5support_dependency.patch @@ -0,0 +1,14 @@ +Author: Roberto C. Sanchez +Description: Drop gratuitous dependency on krb5support +--- a/cmulocal/sasl2.m4 ++++ b/cmulocal/sasl2.m4 +@@ -112,9 +112,6 @@ if test "$gssapi" != no; then + fi + + if test "$gss_impl" = "auto" -o "$gss_impl" = "mit"; then +- # check for libkrb5support first +- AC_CHECK_LIB(krb5support,krb5int_getspecific,K5SUP=-lkrb5support K5SUPSTATIC=$gssapi_dir/libkrb5support.a,,${LIB_SOCKET}) +- + gss_failed=0 + AC_CHECK_LIB(gssapi_krb5,gss_unwrap,gss_impl="mit",gss_failed=1, + ${GSSAPIBASE_LIBS} -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err ${K5SUP} ${LIB_SOCKET}) diff --git a/server/auth/cyrus-sasl/files/0030-dont_use_la_files_for_opening_plugins.patch b/server/auth/cyrus-sasl/files/0030-dont_use_la_files_for_opening_plugins.patch new file mode 100644 index 0000000000..14a322496e --- /dev/null +++ b/server/auth/cyrus-sasl/files/0030-dont_use_la_files_for_opening_plugins.patch @@ -0,0 +1,134 @@ +--- a/lib/dlopen.c ++++ b/lib/dlopen.c +@@ -247,105 +247,6 @@ static int _sasl_plugin_load(char *plugi + return result; + } + +-/* this returns the file to actually open. +- * out should be a buffer of size PATH_MAX +- * and may be the same as in. */ +- +-/* We'll use a static buffer for speed unless someone complains */ +-#define MAX_LINE 2048 +- +-static int _parse_la(const char *prefix, const char *in, char *out) +-{ +- FILE *file; +- size_t length; +- char line[MAX_LINE]; +- char *ntmp = NULL; +- +- if(!in || !out || !prefix || out == in) return SASL_BADPARAM; +- +- /* Set this so we can detect failure */ +- *out = '\0'; +- +- length = strlen(in); +- +- if (strcmp(in + (length - strlen(LA_SUFFIX)), LA_SUFFIX)) { +- if(!strcmp(in + (length - strlen(SO_SUFFIX)),SO_SUFFIX)) { +- /* check for a .la file */ +- strcpy(line, prefix); +- strcat(line, in); +- length = strlen(line); +- *(line + (length - strlen(SO_SUFFIX))) = '\0'; +- strcat(line, LA_SUFFIX); +- file = fopen(line, "r"); +- if(file) { +- /* We'll get it on the .la open */ +- fclose(file); +- return SASL_FAIL; +- } +- } +- strcpy(out, prefix); +- strcat(out, in); +- return SASL_OK; +- } +- +- strcpy(line, prefix); +- strcat(line, in); +- +- file = fopen(line, "r"); +- if(!file) { +- _sasl_log(NULL, SASL_LOG_WARN, +- "unable to open LA file: %s", line); +- return SASL_FAIL; +- } +- +- while(!feof(file)) { +- if(!fgets(line, MAX_LINE, file)) break; +- if(line[strlen(line) - 1] != '\n') { +- _sasl_log(NULL, SASL_LOG_WARN, +- "LA file has too long of a line: %s", in); +- return SASL_BUFOVER; +- } +- if(line[0] == '\n' || line[0] == '#') continue; +- if(!strncmp(line, "dlname=", sizeof("dlname=") - 1)) { +- /* We found the line with the name in it */ +- char *end; +- char *start; +- size_t len; +- end = strrchr(line, '\''); +- if(!end) continue; +- start = &line[sizeof("dlname=")-1]; +- len = strlen(start); +- if(len > 3 && start[0] == '\'') { +- ntmp=&start[1]; +- *end='\0'; +- /* Do we have dlname="" ? */ +- if(ntmp == end) { +- _sasl_log(NULL, SASL_LOG_DEBUG, +- "dlname is empty in .la file: %s", in); +- return SASL_FAIL; +- } +- strcpy(out, prefix); +- strcat(out, ntmp); +- } +- break; +- } +- } +- if(ferror(file) || feof(file)) { +- _sasl_log(NULL, SASL_LOG_WARN, +- "Error reading .la: %s\n", in); +- fclose(file); +- return SASL_FAIL; +- } +- fclose(file); +- +- if(!(*out)) { +- _sasl_log(NULL, SASL_LOG_WARN, +- "Could not find a dlname line in .la file: %s", in); +- return SASL_FAIL; +- } +- +- return SASL_OK; +-} + #endif /* DO_DLOPEN */ + + /* loads a plugin library */ +@@ -499,18 +400,18 @@ int _sasl_load_plugins(const add_plugin_ + if (length + pos>=PATH_MAX) continue; /* too big */ + + if (strcmp(dir->d_name + (length - strlen(SO_SUFFIX)), +- SO_SUFFIX) +- && strcmp(dir->d_name + (length - strlen(LA_SUFFIX)), +- LA_SUFFIX)) ++ SO_SUFFIX)) + continue; + ++ /* We only use .so files for loading plugins */ ++ + memcpy(name,dir->d_name,length); + name[length]='\0'; + +- result = _parse_la(prefix, name, tmp); +- if(result != SASL_OK) +- continue; +- ++ /* Create full name with path */ ++ strncpy(tmp, prefix, PATH_MAX); ++ strncat(tmp, name, PATH_MAX); ++ + /* skip "lib" and cut off suffix -- + this only need be approximate */ + strcpy(plugname, name + 3); diff --git a/server/auth/cyrus-sasl/files/CVE-2013-4122.patch b/server/auth/cyrus-sasl/files/CVE-2013-4122.patch new file mode 100644 index 0000000000..d6b9800e66 --- /dev/null +++ b/server/auth/cyrus-sasl/files/CVE-2013-4122.patch @@ -0,0 +1,116 @@ +From dedad73e5e7a75d01a5f3d5a6702ab8ccd2ff40d Mon Sep 17 00:00:00 2001 +From: mancha +Date: Thu, 11 Jul 2013 09:08:07 +0000 +Subject: Handle NULL returns from glibc 2.17+ crypt() + +Starting with glibc 2.17 (eglibc 2.17), crypt() fails with EINVAL +(w/ NULL return) if the salt violates specifications. Additionally, +on FIPS-140 enabled Linux systems, DES/MD5-encrypted passwords +passed to crypt() fail with EPERM (w/ NULL return). + +When using glibc's crypt(), check return value to avoid a possible +NULL pointer dereference. + +Patch by mancha1@hush.com. +--- +diff --git a/pwcheck/pwcheck_getpwnam.c b/pwcheck/pwcheck_getpwnam.c +index 4b34222..400289c 100644 +--- a/pwcheck/pwcheck_getpwnam.c ++++ b/pwcheck/pwcheck_getpwnam.c +@@ -32,6 +32,7 @@ char *userid; + char *password; + { + char* r; ++ char* crpt_passwd; + struct passwd *pwd; + + pwd = getpwnam(userid); +@@ -41,7 +42,7 @@ char *password; + else if (pwd->pw_passwd[0] == '*') { + r = "Account disabled"; + } +- else if (strcmp(pwd->pw_passwd, crypt(password, pwd->pw_passwd)) != 0) { ++ else if (!(crpt_passwd = crypt(password, pwd->pw_passwd)) || strcmp(pwd->pw_passwd, (const char *)crpt_passwd) != 0) { + r = "Incorrect password"; + } + else { +diff --git a/pwcheck/pwcheck_getspnam.c b/pwcheck/pwcheck_getspnam.c +index 2b11286..6d607bb 100644 +--- a/pwcheck/pwcheck_getspnam.c ++++ b/pwcheck/pwcheck_getspnam.c +@@ -32,13 +32,15 @@ char *userid; + char *password; + { + struct spwd *pwd; ++ char *crpt_passwd; + + pwd = getspnam(userid); + if (!pwd) { + return "Userid not found"; + } + +- if (strcmp(pwd->sp_pwdp, crypt(password, pwd->sp_pwdp)) != 0) { ++ crpt_passwd = crypt(password, pwd->sp_pwdp); ++ if (!crpt_passwd || strcmp(pwd->sp_pwdp, (const char *)crpt_passwd) != 0) { + return "Incorrect password"; + } + else { +diff --git a/saslauthd/auth_getpwent.c b/saslauthd/auth_getpwent.c +index fc8029d..d4ebe54 100644 +--- a/saslauthd/auth_getpwent.c ++++ b/saslauthd/auth_getpwent.c +@@ -77,6 +77,7 @@ auth_getpwent ( + { + /* VARIABLES */ + struct passwd *pw; /* pointer to passwd file entry */ ++ char *crpt_passwd; /* encrypted password */ + int errnum; + /* END VARIABLES */ + +@@ -105,7 +106,8 @@ auth_getpwent ( + } + } + +- if (strcmp(pw->pw_passwd, (const char *)crypt(password, pw->pw_passwd))) { ++ crpt_passwd = crypt(password, pw->pw_passwd); ++ if (!crpt_passwd || strcmp(pw->pw_passwd, (const char *)crpt_passwd)) { + if (flags & VERBOSE) { + syslog(LOG_DEBUG, "DEBUG: auth_getpwent: %s: invalid password", login); + } +diff --git a/saslauthd/auth_shadow.c b/saslauthd/auth_shadow.c +index 677131b..1988afd 100644 +--- a/saslauthd/auth_shadow.c ++++ b/saslauthd/auth_shadow.c +@@ -210,8 +210,8 @@ auth_shadow ( + RETURN("NO Insufficient permission to access NIS authentication database (saslauthd)"); + } + +- cpw = strdup((const char *)crypt(password, sp->sp_pwdp)); +- if (strcmp(sp->sp_pwdp, cpw)) { ++ cpw = crypt(password, sp->sp_pwdp); ++ if (!cpw || strcmp(sp->sp_pwdp, (const char *)cpw)) { + if (flags & VERBOSE) { + /* + * This _should_ reveal the SHADOW_PW_LOCKED prefix to an +@@ -221,10 +221,8 @@ auth_shadow ( + syslog(LOG_DEBUG, "DEBUG: auth_shadow: pw mismatch: '%s' != '%s'", + sp->sp_pwdp, cpw); + } +- free(cpw); + RETURN("NO Incorrect password"); + } +- free(cpw); + + /* + * The following fields will be set to -1 if: +@@ -286,7 +284,7 @@ auth_shadow ( + RETURN("NO Invalid username"); + } + +- if (strcmp(upw->upw_passwd, crypt(password, upw->upw_passwd)) != 0) { ++ if (!(cpw = crypt(password, upw->upw_passwd)) || (strcmp(upw->upw_passwd, (const char *)cpw) != 0)) { + if (flags & VERBOSE) { + syslog(LOG_DEBUG, "auth_shadow: pw mismatch: %s != %s", + password, upw->upw_passwd); +-- +cgit v0.9.2 diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.20-saslauthd.conf-path.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.20-saslauthd.conf-path.patch new file mode 100644 index 0000000000..822be9a56d --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.20-saslauthd.conf-path.patch @@ -0,0 +1,20 @@ +--- cyrus-sasl-2.1.20/saslauthd/saslauthd.mdoc 2005-05-06 16:05:44.000000000 -0400 ++++ cyrus-sasl-2.1.20/saslauthd/saslauthd.mdoc 2005-05-06 16:05:39.000000000 -0400 +@@ -216,7 +216,7 @@ + .Em (All platforms that support OpenLDAP 2.0 or higher) + .Pp + Authenticate against an ldap server. The ldap configuration parameters are +-read from /usr/local/etc/saslauthd.conf. The location of this file can be ++read from /etc/saslauthd.conf. The location of this file can be + changed with the -O parameter. See the LDAP_SASLAUTHD file included with the + distribution for the list of available parameters. + .It Li sia +@@ -249,7 +249,7 @@ + .Bl -tag -width "/run/saslauthd/mux" + .It Pa /run/saslauthd/mux + The default communications socket. +-.It Pa /usr/local/etc/saslauthd.conf ++.It Pa /etc/saslauthd.conf + The default configuration file for ldap support. + .El + .Sh SEE ALSO diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.21-sizes.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.21-sizes.patch new file mode 100644 index 0000000000..006962bd24 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.21-sizes.patch @@ -0,0 +1,120 @@ +Prefer types in to our own, because it removes file content +conflicts between 32- and 64-bit architectures. RFEd as #2829. + +--- cyrus-sasl-2.1.21/configure.in 2006-05-16 07:37:52.000000000 -0400 ++++ cyrus-sasl-2.1.21/configure.in 2006-05-16 07:37:52.000000000 -0400 +@@ -1083,6 +1083,10 @@ + AC_HEADER_DIRENT + AC_HEADER_SYS_WAIT + AC_CHECK_HEADERS(des.h dlfcn.h fcntl.h limits.h malloc.h paths.h strings.h sys/file.h sys/time.h syslog.h unistd.h inttypes.h sys/uio.h sys/param.h sysexits.h stdarg.h varargs.h) ++AC_CHECK_TYPES([long long, int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t],,,[ ++#ifdef HAVE_INTTYPES_H ++#include ++#endif]) + + IPv6_CHECK_SS_FAMILY() + IPv6_CHECK_SA_LEN() +--- cyrus-sasl-2.1.21/include/makemd5.c 2003-02-13 14:55:52.000000000 -0500 ++++ cyrus-sasl-2.1.21/include/makemd5.c 2006-05-16 07:45:08.000000000 -0400 +@@ -82,12 +82,19 @@ + */ + + ++#ifdef HAVE_CONFIG_H ++#include "../config.h" ++#endif + + #include + #include + #include + #include + ++#ifdef HAVE_INTTYPES_H ++#include ++#endif ++ + + static void + my_strupr(char *s) +@@ -122,6 +129,18 @@ + static void + try_signed(FILE *f, int len) + { ++#ifdef HAVE_INT8_T ++ BITSIZE(int8_t); ++#endif ++#ifdef HAVE_INT16_T ++ BITSIZE(int16_t); ++#endif ++#ifdef HAVE_INT32_T ++ BITSIZE(int32_t); ++#endif ++#ifdef HAVE_INT64_T ++ BITSIZE(int64_t); ++#endif + BITSIZE(signed char); + BITSIZE(short); + BITSIZE(int); +@@ -135,6 +154,18 @@ + static void + try_unsigned(FILE *f, int len) + { ++#ifdef HAVE_UINT8_T ++ BITSIZE(uint8_t); ++#endif ++#ifdef HAVE_UINT16_T ++ BITSIZE(uint16_t); ++#endif ++#ifdef HAVE_UINT32_T ++ BITSIZE(uint32_t); ++#endif ++#ifdef HAVE_UINT64_T ++ BITSIZE(uint64_t); ++#endif + BITSIZE(unsigned char); + BITSIZE(unsigned short); + BITSIZE(unsigned int); +@@ -165,6 +196,11 @@ + "/* POINTER defines a generic pointer type */\n" + "typedef unsigned char *POINTER;\n" + "\n" ++#ifdef HAVE_INTTYPES_H ++ "/* We try to define integer types for our use */\n" ++ "#include \n" ++ "\n" ++#endif + ); + return 1; + } +@@ -212,31 +248,15 @@ + + print_pre(f); + +-#ifndef HAVE_INT8_T + try_signed (f, 8); +-#endif /* HAVE_INT8_T */ +-#ifndef HAVE_INT16_T + try_signed (f, 16); +-#endif /* HAVE_INT16_T */ +-#ifndef HAVE_INT32_T + try_signed (f, 32); +-#endif /* HAVE_INT32_T */ +-#ifndef HAVE_INT64_T + try_signed (f, 64); +-#endif /* HAVE_INT64_T */ + +-#ifndef HAVE_U_INT8_T + try_unsigned (f, 8); +-#endif /* HAVE_INT8_T */ +-#ifndef HAVE_U_INT16_T + try_unsigned (f, 16); +-#endif /* HAVE_U_INT16_T */ +-#ifndef HAVE_U_INT32_T + try_unsigned (f, 32); +-#endif /* HAVE_U_INT32_T */ +-#ifndef HAVE_U_INT64_T + try_unsigned (f, 64); +-#endif /* HAVE_U_INT64_T */ + + print_post(f); + diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-as-needed.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-as-needed.patch new file mode 100644 index 0000000000..1294cb5077 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-as-needed.patch @@ -0,0 +1,11 @@ +--- saslauthd/configure.in.orig 2006-05-23 15:53:17.000000000 -0700 ++++ saslauthd/configure.in 2006-05-23 15:53:33.000000000 -0700 +@@ -77,7 +77,7 @@ + AC_DEFINE(AUTH_SASLDB,[],[Include SASLdb Support]) + SASL_DB_PATH_CHECK() + SASL_DB_CHECK() +- SASL_DB_LIB="$SASL_DB_LIB ../sasldb/.libs/libsasldb.al" ++ SASL_DB_LIB="../sasldb/.libs/libsasldb.a $SASL_DB_LIB" + fi + + AC_ARG_ENABLE(httpform, [ --enable-httpform enable HTTP form authentication [[no]] ], diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-kerberos4.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-kerberos4.patch new file mode 100644 index 0000000000..09e23d7bc5 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-kerberos4.patch @@ -0,0 +1,26 @@ +diff -up cyrus-sasl-2.1.22/config/kerberos_v4.m4.krb4 cyrus-sasl-2.1.22/config/kerberos_v4.m4 +--- cyrus-sasl-2.1.22/config/kerberos_v4.m4.krb4 2005-05-07 06:14:55.000000000 +0200 ++++ cyrus-sasl-2.1.22/config/kerberos_v4.m4 2008-08-14 23:41:26.000000000 +0200 +@@ -102,7 +102,6 @@ AC_DEFUN([SASL_KERBEROS_V4_CHK], [ + if test -n "${cyrus_krbinclude}"; then + CPPFLAGS="$CPPFLAGS -I${cyrus_krbinclude}" + fi +- LDFLAGS="$LDFLAGS -L$krb4/lib" + fi + + if test "$with_des" != no; then +diff -up cyrus-sasl-2.1.22/plugins/kerberos4.c.krb4 cyrus-sasl-2.1.22/plugins/kerberos4.c +--- cyrus-sasl-2.1.22/plugins/kerberos4.c.krb4 2005-01-10 08:08:53.000000000 +0100 ++++ cyrus-sasl-2.1.22/plugins/kerberos4.c 2008-08-14 23:36:33.000000000 +0200 +@@ -49,11 +49,7 @@ + #include + + #ifdef WITH_DES +-# ifdef WITH_SSL_DES +-# include +-# else + # include +-# endif /* WITH_SSL_DES */ + #endif /* WITH_DES */ + + #ifdef WIN32 diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-ldap-timeout.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-ldap-timeout.patch new file mode 100644 index 0000000000..82c6c826c1 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-ldap-timeout.patch @@ -0,0 +1,25 @@ +commit c9447e1c3ffba88783e5d9396b832be82d3c78fc +Author: Kazuo Ito +Date: Wed Dec 10 12:03:29 2008 +0900 + + support for LDAP_OPT_TIMEOUT + + OpenLDAP since 2.4 implements support for this option in ldap_result(), + among other things. + +diff --git a/saslauthd/lak.c b/saslauthd/lak.c +index 803d51f..8714265 100644 +--- a/saslauthd/lak.c ++++ b/saslauthd/lak.c +@@ -833,6 +833,11 @@ static int lak_connect( + syslog(LOG_WARNING|LOG_AUTH, "Unable to set LDAP_OPT_NETWORK_TIMEOUT %d.%d.", lak->conf->timeout.tv_sec, lak->conf->timeout.tv_usec); + } + ++ rc = ldap_set_option(lak->ld, LDAP_OPT_TIMEOUT, &(lak->conf->timeout)); ++ if (rc != LDAP_OPT_SUCCESS) { ++ syslog(LOG_WARNING|LOG_AUTH, "Unable to set LDAP_OPT_TIMEOUT %d.%d.", lak->conf->timeout.tv_sec, lak->conf->timeout.tv_usec); ++ } ++ + rc = ldap_set_option(lak->ld, LDAP_OPT_TIMELIMIT, &(lak->conf->time_limit)); + if (rc != LDAP_OPT_SUCCESS) { + syslog(LOG_WARNING|LOG_AUTH, "Unable to set LDAP_OPT_TIMELIMIT %d.", lak->conf->time_limit); diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-qa.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-qa.patch new file mode 100644 index 0000000000..4f7b04f135 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.22-qa.patch @@ -0,0 +1,22 @@ +fix missing prototype warnings + +--- cyrus-sasl-2.1.22/lib/auxprop.c ++++ cyrus-sasl-2.1.22/lib/auxprop.c +@@ -43,6 +43,7 @@ + */ + + #include ++#include + #include + #include + #include +--- cyrus-sasl-2.1.22/pwcheck/pwcheck_getspnam.c ++++ cyrus-sasl-2.1.22/pwcheck/pwcheck_getspnam.c +@@ -24,6 +24,7 @@ OF OR IN CONNECTION WITH THE USE OR PERF + ******************************************************************/ + + #include ++#include + + extern char *crypt(); + diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.23-man.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.23-man.patch new file mode 100644 index 0000000000..5a16187f01 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.23-man.patch @@ -0,0 +1,37 @@ +diff -up cyrus-sasl-2.1.23/mac/libdes/src/des_crypt.man cyrus-sasl-2.1.23/mac/libdes/src/des_crypt +diff -up cyrus-sasl-2.1.23/mac/libdes/src/des.man cyrus-sasl-2.1.23/mac/libdes/src/des +diff -up cyrus-sasl-2.1.23/man/Makefile.am.man cyrus-sasl-2.1.23/man/Makefile.am +--- cyrus-sasl-2.1.23/man/Makefile.am.man 2010-02-05 10:40:17.000000000 +0100 ++++ cyrus-sasl-2.1.23/man/Makefile.am 2010-02-05 10:40:47.000000000 +0100 +@@ -54,6 +54,6 @@ man_MANS = sasl_authorize_t.3 sasl_done. + sasl_auxprop_getctx.3 sasl_auxprop.3 sasl_idle.3 \ + sasl_errdetail.3 sasl_user_exists.3 sasl_setpass.3 \ + sasl_server_userdb_checkpass_t.3 sasl_server_userdb_setpass_t.3 \ +- sasl_global_listmech.3 sasl_getconfpath_t.3 ++ sasl_global_listmech.3 sasl_getconfpath_t.3 testsaslauthd.8 + + EXTRA_DIST = $(man_MANS) +diff -up cyrus-sasl-2.1.23/man/testsaslauthd.8.man cyrus-sasl-2.1.23/man/testsaslauthd.8 +--- cyrus-sasl-2.1.23/man/testsaslauthd.8.man 2010-02-05 10:40:07.000000000 +0100 ++++ cyrus-sasl-2.1.23/man/testsaslauthd.8 2010-02-05 09:48:43.000000000 +0100 +@@ -0,0 +1,20 @@ ++.\" Hey, EMACS: -*- nroff -*- ++.TH TESTSASLAUTHD 8 "14 October 2006" ++.SH NAME ++testsaslauthd \- test utility for the SASL authentication server ++.SH SYNOPSIS ++.B testsaslauthd ++.RI "[ " \(hyr " " realm " ] [ " \(hys " " servicename " ] [ " \(hyf " " socket " " path " ] [ " \(hyR " " repeatnum " ]" ++.SH DESCRIPTION ++This manual page documents briefly the ++.B testsaslauthd ++command. ++.PP ++.SH SEE ALSO ++.BR saslauthd (8). ++.br ++.SH AUTHOR ++testsaslauthd was written by Carnegie Mellon University. ++.PP ++This manual page was written by Roberto C. Sanchez , ++for the Debian project (but may be used by others). diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-keytab.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-keytab.patch new file mode 100644 index 0000000000..390b5176a4 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-keytab.patch @@ -0,0 +1,36 @@ +diff --git a/cmulocal/sasl2.m4 b/cmulocal/sasl2.m4 +index 3c2841a..b086b8f 100644 +--- a/cmulocal/sasl2.m4 ++++ b/cmulocal/sasl2.m4 +@@ -269,6 +269,18 @@ if test "$gssapi" != no; then + cmu_save_LIBS="$LIBS" + LIBS="$LIBS $GSSAPIBASE_LIBS" + AC_CHECK_FUNCS(gsskrb5_register_acceptor_identity) ++ if test "$ac_cv_func_gsskrb5_register_acceptor_identity" = no ; then ++ AC_CHECK_HEADERS(gssapi/gssapi_krb5.h) ++ if test "$ac_cv_header_gssapi_gssapi_krb5_h" = "yes"; then ++ AC_CHECK_DECL(gsskrb5_register_acceptor_identity, ++ [AC_DEFINE(HAVE_GSSKRB5_REGISTER_ACCEPTOR_IDENTITY,1, ++ [Define if your GSSAPI implementation defines gsskrb5_register_acceptor_identity])],, ++ [ ++ AC_INCLUDES_DEFAULT ++ #include ++ ]) ++ fi ++ fi + AC_CHECK_FUNCS(gss_decapsulate_token) + AC_CHECK_FUNCS(gss_encapsulate_token) + AC_CHECK_FUNCS(gss_oid_equal) +diff --git a/plugins/gssapi.c b/plugins/gssapi.c +index 6be9d23..e6fcf46 100644 +--- a/plugins/gssapi.c ++++ b/plugins/gssapi.c +@@ -51,6 +51,8 @@ + #include + #endif + ++#include ++ + #ifdef WIN32 + # include + diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-no_rpath.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-no_rpath.patch new file mode 100644 index 0000000000..7028db6fe7 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-no_rpath.patch @@ -0,0 +1,19 @@ +--- cmulocal/cyrus.m4~ 2014-01-09 11:31:10.423302394 +0100 ++++ cmulocal/cyrus.m4 2014-01-09 11:31:56.823302243 +0100 +@@ -32,14 +32,5 @@ + dnl runpath initialization + AC_DEFUN([CMU_GUESS_RUNPATH_SWITCH], [ + # CMU GUESS RUNPATH SWITCH +- AC_CACHE_CHECK(for runpath switch, andrew_cv_runpath_switch, [ +- # first, try -R +- SAVE_LDFLAGS="${LDFLAGS}" +- LDFLAGS="-R /usr/lib" +- AC_TRY_LINK([],[],[andrew_cv_runpath_switch="-R"], [ +- LDFLAGS="-Wl,-rpath,/usr/lib" +- AC_TRY_LINK([],[],[andrew_cv_runpath_switch="-Wl,-rpath,"], +- [andrew_cv_runpath_switch="none"]) +- ]) +- LDFLAGS="${SAVE_LDFLAGS}" +- ])]) ++ andrew_runpath_switch="none" ++ ]) diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-obsolete-macro.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-obsolete-macro.patch new file mode 100644 index 0000000000..a836d8fb4e --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-obsolete-macro.patch @@ -0,0 +1,13 @@ +diff --git a/configure.in b/configure.in +index e70c99a..60f366c 100644 +--- a/configure.in ++++ b/configure.in +@@ -1416,7 +1416,7 @@ inline static unsigned int sleep(unsigned int seconds) { + #endif /* CONFIG_H */ + ]) + +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADERS(config.h) + + AC_OUTPUT(Makefile + libsasl2.pc diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-prefer-SCRAM-SHA-1-over-PLAIN.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-prefer-SCRAM-SHA-1-over-PLAIN.patch new file mode 100644 index 0000000000..af88e81ed8 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-prefer-SCRAM-SHA-1-over-PLAIN.patch @@ -0,0 +1,51 @@ +commit 26dcfb2d7176b78e70757aa5d01951a28ca217c7 +Author: Alexey Melnikov +Date: Fri Jul 5 16:37:59 2013 +0100 + + Treat SCRAM-SHA-1/DIGEST-MD5 as more secure than PLAIN when selecting the best client side SASL mechanism + + Both SCRAM-SHA-1 & DIGEST-MD5 are lacking SASL_SEC_PASS_CREDENTIALS security + flag, which prevented them from being chosen over PLAIN when PLAIN is selected + as the best mechanism first. For example the problem can be observed when + the server advertises "PLAIN DIGEST-MD5 SCRAM-SHA-1" (PLAIN just has to be + returned before SCRAM/DIGEST.) + + Cyrus SASL bug # 3793 + +diff --git a/lib/client.c b/lib/client.c +index 62dfb0b..31fe346 100644 +--- a/lib/client.c ++++ b/lib/client.c +@@ -658,6 +658,20 @@ _sasl_cbinding_disp(sasl_client_params_t *cparams, + return SASL_OK; + } + ++static int ++_sasl_are_current_security_flags_worse_then_best(unsigned best_security_flags, ++ unsigned current_security_flags) ++{ ++ /* We don't qualify SASL_SEC_PASS_CREDENTIALS as "secure" flag */ ++ best_security_flags &= ~SASL_SEC_PASS_CREDENTIALS; ++ ++ if ((current_security_flags ^ best_security_flags) & best_security_flags) { ++ return 1; ++ } else { ++ return 0; ++ } ++} ++ + /* select a mechanism for a connection + * mechlist -- mechanisms server has available (punctuation ignored) + * secret -- optional secret from previous session +@@ -823,8 +837,9 @@ int sasl_client_start(sasl_conn_t *conn, + */ + + if (bestm && +- ((m->m.plug->security_flags ^ bestm->m.plug->security_flags) & +- bestm->m.plug->security_flags)) { ++ _sasl_are_current_security_flags_worse_then_best( ++ bestm->m.plug->security_flags, ++ m->m.plug->security_flags)) { + break; + } + diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-relro.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-relro.patch new file mode 100644 index 0000000000..3a405f6541 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-relro.patch @@ -0,0 +1,59 @@ +diff -up cyrus-sasl-2.1.26/lib/Makefile.am.relro cyrus-sasl-2.1.26/lib/Makefile.am +--- cyrus-sasl-2.1.26/lib/Makefile.am.relro 2012-10-12 16:05:48.000000000 +0200 ++++ cyrus-sasl-2.1.26/lib/Makefile.am 2013-02-11 14:18:01.749053772 +0100 +@@ -64,7 +64,7 @@ LIB_DOOR= @LIB_DOOR@ + lib_LTLIBRARIES = libsasl2.la + + libsasl2_la_SOURCES = $(common_sources) $(common_headers) +-libsasl2_la_LDFLAGS = -version-info $(sasl_version) ++libsasl2_la_LDFLAGS = -Wl,-z,relro -version-info $(sasl_version) + libsasl2_la_DEPENDENCIES = $(LTLIBOBJS) + libsasl2_la_LIBADD = $(LTLIBOBJS) $(SASL_DL_LIB) $(LIB_SOCKET) $(LIB_DOOR) + +diff -up cyrus-sasl-2.1.26/lib/Makefile.in.relro cyrus-sasl-2.1.26/lib/Makefile.in +--- cyrus-sasl-2.1.26/lib/Makefile.in.relro 2013-11-13 16:55:09.606555125 +0100 ++++ cyrus-sasl-2.1.26/lib/Makefile.in 2013-11-13 16:56:43.331096795 +0100 +@@ -330,7 +330,7 @@ common_headers = saslint.h + common_sources = auxprop.c canonusr.c checkpw.c client.c common.c config.c external.c md5.c saslutil.c server.c seterror.c dlopen.c ../plugins/plugin_common.c + lib_LTLIBRARIES = libsasl2.la + libsasl2_la_SOURCES = $(common_sources) $(common_headers) +-libsasl2_la_LDFLAGS = -version-info $(sasl_version) ++libsasl2_la_LDFLAGS = -Wl,-z,relro -version-info $(sasl_version) + libsasl2_la_DEPENDENCIES = $(LTLIBOBJS) + libsasl2_la_LIBADD = $(LTLIBOBJS) $(SASL_DL_LIB) $(LIB_SOCKET) $(LIB_DOOR) + @MACOSX_TRUE@framedir = /Library/Frameworks/SASL2.framework +diff -up cyrus-sasl-2.1.26/plugins/Makefile.am.relro cyrus-sasl-2.1.26/plugins/Makefile.am +--- cyrus-sasl-2.1.26/plugins/Makefile.am.relro 2012-10-12 16:05:48.000000000 +0200 ++++ cyrus-sasl-2.1.26/plugins/Makefile.am 2013-02-11 14:18:01.749053772 +0100 +@@ -50,7 +50,7 @@ + plugin_version = 3:0:0 + + INCLUDES=-I$(top_srcdir)/include -I$(top_srcdir)/lib -I$(top_srcdir)/sasldb -I$(top_builddir)/include +-AM_LDFLAGS = -module -export-dynamic -rpath $(plugindir) -version-info $(plugin_version) ++AM_LDFLAGS = -Wl,-z,relro -module -export-dynamic -rpath $(plugindir) -version-info $(plugin_version) + + COMPAT_OBJS = @LTGETADDRINFOOBJS@ @LTGETNAMEINFOOBJS@ @LTSNPRINTFOBJS@ + +diff -up cyrus-sasl-2.1.26/plugins/Makefile.in.relro cyrus-sasl-2.1.26/plugins/Makefile.in +--- cyrus-sasl-2.1.26/plugins/Makefile.in.relro 2013-11-13 16:57:08.430974081 +0100 ++++ cyrus-sasl-2.1.26/plugins/Makefile.in 2013-11-13 16:57:58.911727846 +0100 +@@ -364,7 +364,7 @@ top_srcdir = @top_srcdir@ + # CURRENT:REVISION:AGE + plugin_version = 3:0:0 + INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/lib -I$(top_srcdir)/sasldb -I$(top_builddir)/include +-AM_LDFLAGS = -module -export-dynamic -rpath $(plugindir) -version-info $(plugin_version) ++AM_LDFLAGS = -Wl,-z,relro -module -export-dynamic -rpath $(plugindir) -version-info $(plugin_version) + COMPAT_OBJS = @LTGETADDRINFOOBJS@ @LTGETNAMEINFOOBJS@ @LTSNPRINTFOBJS@ + EXTRA_DIST = makeinit.sh NTMakefile + noinst_SCRIPTS = makeinit.sh +diff -up cyrus-sasl-2.1.26/saslauthd/Makefile.am.relro cyrus-sasl-2.1.26/saslauthd/Makefile.am +--- cyrus-sasl-2.1.26/saslauthd/Makefile.am.relro 2013-02-11 14:18:36.910900647 +0100 ++++ cyrus-sasl-2.1.26/saslauthd/Makefile.am 2013-02-11 14:20:17.336463915 +0100 +@@ -17,6 +17,7 @@ saslauthd_DEPENDENCIES = saslauthd-main. + saslauthd_LDADD = @SASL_KRB_LIB@ \ + @GSSAPIBASE_LIBS@ @GSSAPI_LIBS@ @LIB_CRYPT@ @LIB_SIA@ \ + @LIB_SOCKET@ ../sasldb/libsasldb.la @LIB_PAM@ @LDAP_LIBS@ @LTLIBOBJS@ ++saslauthd_LDFLAGS = -pie -Wl,-z,now + + testsaslauthd_SOURCES = testsaslauthd.c utils.c + testsaslauthd_LDADD = @LIB_SOCKET@ diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-size_t.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-size_t.patch new file mode 100644 index 0000000000..cde823835b --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-size_t.patch @@ -0,0 +1,12 @@ +diff -up cyrus-sasl-2.1.26/include/sasl.h.size_t cyrus-sasl-2.1.26/include/sasl.h +--- cyrus-sasl-2.1.26/include/sasl.h.size_t 2012-10-12 09:05:48.000000000 -0500 ++++ cyrus-sasl-2.1.26/include/sasl.h 2013-01-31 13:21:04.007739327 -0600 +@@ -223,6 +223,8 @@ extern "C" { + * they must be called before all other SASL functions: + */ + ++#include ++ + /* memory allocation functions which may optionally be replaced: + */ + typedef void *sasl_malloc_t(size_t); diff --git a/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-warnings.patch b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-warnings.patch new file mode 100644 index 0000000000..f7127bb0d9 --- /dev/null +++ b/server/auth/cyrus-sasl/files/cyrus-sasl-2.1.26-warnings.patch @@ -0,0 +1,74 @@ +diff -up cyrus-sasl-2.1.26/lib/server.c.warnings cyrus-sasl-2.1.26/lib/server.c +--- cyrus-sasl-2.1.26/lib/server.c.warnings 2012-10-12 16:05:48.000000000 +0200 ++++ cyrus-sasl-2.1.26/lib/server.c 2012-12-20 17:49:39.620254792 +0100 +@@ -650,7 +650,7 @@ static int load_config(const sasl_callba + goto done; + } + +- snprintf(config_filename, len, "%.*s%c%s.conf", path_len, path_to_config, ++ snprintf(config_filename, len, "%.*s%c%s.conf", (int)path_len, path_to_config, + HIER_DELIMITER, global_callbacks.appname); + + /* Ask the application if it's safe to use this file */ +diff -up cyrus-sasl-2.1.26/plugins/gssapi.c.warnings cyrus-sasl-2.1.26/plugins/gssapi.c +--- cyrus-sasl-2.1.26/plugins/gssapi.c.warnings 2012-01-28 00:31:36.000000000 +0100 ++++ cyrus-sasl-2.1.26/plugins/gssapi.c 2012-12-20 17:49:39.620254792 +0100 +@@ -202,7 +202,8 @@ sasl_gss_seterror_(const sasl_utils_t *u + OM_uint32 msg_ctx; + int ret; + char *out = NULL; +- size_t len, curlen = 0; ++ size_t len; ++ unsigned curlen = 0; + const char prefix[] = "GSSAPI Error: "; + + if (!utils) return SASL_OK; +diff -up cyrus-sasl-2.1.26/plugins/ldapdb.c.warnings cyrus-sasl-2.1.26/plugins/ldapdb.c +--- cyrus-sasl-2.1.26/plugins/ldapdb.c.warnings 2012-01-28 00:31:36.000000000 +0100 ++++ cyrus-sasl-2.1.26/plugins/ldapdb.c 2012-12-20 17:49:39.621254788 +0100 +@@ -22,6 +22,7 @@ + + #include "plugin_common.h" + ++#define LDAP_DEPRECATED 1 + #include + + static char ldapdb[] = "ldapdb"; +diff -up cyrus-sasl-2.1.26/plugins/plugin_common.c.warnings cyrus-sasl-2.1.26/plugins/plugin_common.c +--- cyrus-sasl-2.1.26/plugins/plugin_common.c.warnings 2013-09-03 14:40:35.181455452 +0200 ++++ cyrus-sasl-2.1.26/plugins/plugin_common.c 2013-09-03 14:40:38.320441024 +0200 +@@ -94,7 +94,7 @@ static void sockaddr_unmapped( + if (!IN6_IS_ADDR_V4MAPPED((&sin6->sin6_addr))) + return; + sin4 = (struct sockaddr_in *)sa; +- addr = *(uint32_t *)&sin6->sin6_addr.s6_addr[12]; ++ addr = *(uint32_t *)&sin6->sin6_addr.s6_addr32[3]; + port = sin6->sin6_port; + memset(sin4, 0, sizeof(struct sockaddr_in)); + sin4->sin_addr.s_addr = addr; +diff -up cyrus-sasl-2.1.26/saslauthd/auth_httpform.c.warnings cyrus-sasl-2.1.26/saslauthd/auth_httpform.c +--- cyrus-sasl-2.1.26/saslauthd/auth_httpform.c.warnings 2012-10-12 16:05:48.000000000 +0200 ++++ cyrus-sasl-2.1.26/saslauthd/auth_httpform.c 2013-09-03 14:39:25.411776109 +0200 +@@ -574,7 +574,7 @@ auth_httpform ( + "Content-Type: application/x-www-form-urlencoded" CRLF + "Content-Length: %d" TWO_CRLF + "%s", +- r_uri, r_host, r_port, strlen(req), req); ++ r_uri, r_host, r_port, (int)strlen(req), req); + + if (flags & VERBOSE) { + syslog(LOG_DEBUG, "auth_httpform: sending %s %s %s", +diff -up cyrus-sasl-2.1.26/saslauthd/auth_shadow.c.warnings cyrus-sasl-2.1.26/saslauthd/auth_shadow.c +--- cyrus-sasl-2.1.26/saslauthd/auth_shadow.c.warnings 2012-10-12 16:05:48.000000000 +0200 ++++ cyrus-sasl-2.1.26/saslauthd/auth_shadow.c 2012-12-20 17:49:39.621254788 +0100 +@@ -70,6 +70,10 @@ + # include + # endif /* ! HAVE_GETUSERPW */ + ++# ifdef HAVE_CRYPT_H ++# include ++# endif ++ + # include "auth_shadow.h" + # include "globals.h" + /* END PUBLIC DEPENDENCIES */ diff --git a/server/auth/cyrus-sasl/files/saslauthd.confd b/server/auth/cyrus-sasl/files/saslauthd.confd new file mode 100644 index 0000000000..abbb75f86e --- /dev/null +++ b/server/auth/cyrus-sasl/files/saslauthd.confd @@ -0,0 +1,16 @@ +# Specify the authentications mechanism. +# List: getpwent,kerberos5,pam,rimap,shadow,ldap +# *NOTE* For actual list see: saslauthd -v +SASLAUTHD_OPTS="-a pam" + +# Specify the hostname for remote IMAP server. +# *NOTE* Only needed if rimap auth mech is used. +#SASLAUTHD_OPTS="${SASLAUTHD_OPTS} -O localhost" + +# Specify the number of worker processes to create. +#SASLAUTHD_OPTS="${SASLAUTHD_OPTS} -n 5" + +# Enable credential cache, cache size, and timeout. +# *NOTE* Size is measured in kilobytes +# Timeout is measured in seconds +#SASLAUTHD_OPTS="${SASLAUTHD_OPTS} -c -s 128 -t 30" diff --git a/server/auth/cyrus-sasl/files/saslauthd.pam b/server/auth/cyrus-sasl/files/saslauthd.pam new file mode 100644 index 0000000000..2c5a5347ad --- /dev/null +++ b/server/auth/cyrus-sasl/files/saslauthd.pam @@ -0,0 +1,6 @@ +#%PAM-1.0 + +auth required pam_nologin.so +auth include system-auth +account include system-auth +session include system-auth diff --git a/server/auth/cyrus-sasl/files/tmpfiles.conf b/server/auth/cyrus-sasl/files/tmpfiles.conf new file mode 100644 index 0000000000..7258b1a9ff --- /dev/null +++ b/server/auth/cyrus-sasl/files/tmpfiles.conf @@ -0,0 +1 @@ +d /run/saslauthd 0755 root root - - diff --git a/server/auth/cyrus-sasl/pspec.xml b/server/auth/cyrus-sasl/pspec.xml new file mode 100644 index 0000000000..b6ab0d7e00 --- /dev/null +++ b/server/auth/cyrus-sasl/pspec.xml @@ -0,0 +1,129 @@ + + + + + cyrus-sasl + http://asg.web.cmu.edu/sasl/ + + PisiLinux Community + admins@pisilinux.org + + as-is + library + service + The Cyrus SASL (Simple Authentication and Security Layer) + cyrus-sasl is the Simple Authentication and Security Layer, a method for adding authentication support to connection-based protocols. To use SASL, a protocol includes a command for identifying and authenticating a user to a server and for optionally negotiating protection of subsequent protocol interactions. + http://cyrusimap.org/releases/cyrus-sasl-2.1.26.tar.gz + + mit-kerberos + + + + CVE-2013-4122.patch + 0011_saslauthd_ac_prog_libtool.patch + 0025_ld_as_needed.patch + 0026_drop_krb5support_dependency.patch + 0030-dont_use_la_files_for_opening_plugins.patch + cyrus-sasl-2.1.20-saslauthd.conf-path.patch + cyrus-sasl-2.1.21-sizes.patch + cyrus-sasl-2.1.22-as-needed.patch + cyrus-sasl-2.1.22-qa.patch + cyrus-sasl-2.1.22-kerberos4.patch + cyrus-sasl-2.1.22-ldap-timeout.patch + cyrus-sasl-2.1.23-man.patch + cyrus-sasl-2.1.26-keytab.patch + cyrus-sasl-2.1.26-no_rpath.patch + cyrus-sasl-2.1.26-obsolete-macro.patch + cyrus-sasl-2.1.26-prefer-SCRAM-SHA-1-over-PLAIN.patch + cyrus-sasl-2.1.26-relro.patch + cyrus-sasl-2.1.26-size_t.patch + cyrus-sasl-2.1.26-warnings.patch + + + + + cyrus-sasl + + openldap-client + mit-kerberos + + + /etc + /usr/lib/tmpfiles.d/cyrus-sasl.conf + /usr/sbin + /usr/lib + /usr/share/cyrus-sasl-2 + /run + /usr/share/man + /usr/share/doc + + + saslauthd.confd + saslauthd.pam + tmpfiles.conf + + + System.Service + System.Package + + + + + cyrus-sasl-devel + Development files for cyrus-sasl + + cyrus-sasl + + + /usr/include + /usr/lib/pkgconfig + /usr/share/doc/cyrus-sasl/*.txt + /usr/share/man/man3 + + + + + + 2014-07-05 + 2.1.26 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-09 + 2.1.26 + Version bump. Add tmpfiles.conf + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-30 + 2.1.25 + Rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-05-05 + 2.1.25 + Added some patches and remove unused. + Aydın Demirel + aydin@demirel.web.tr + + + 2013-04-25 + 2.1.25 + Dep Fixed. + PisiLinux Community + admins@pisilinux.org + + + 2012-09-29 + 2.1.25 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/server/auth/cyrus-sasl/translations.xml b/server/auth/cyrus-sasl/translations.xml new file mode 100644 index 0000000000..97378329ca --- /dev/null +++ b/server/auth/cyrus-sasl/translations.xml @@ -0,0 +1,13 @@ + + + + cyrus-sasl + Cyrus basit kimlik tanımlama ve güvenlik katmanı + Cyrus-sasl, bağlantı tabanlı protokoller için kullanılan bir kimlik doğrulama uygulamasıdır. Çoğunlukla Smtp doğrulaması için kullanılır. + + + + cyrus-sasl-devel + cyrus-sasl için geliştirme dosyaları + + diff --git a/server/auth/mit-kerberos/pspec.xml b/server/auth/mit-kerberos/pspec.xml index ed87ae8e84..010e9862c2 100644 --- a/server/auth/mit-kerberos/pspec.xml +++ b/server/auth/mit-kerberos/pspec.xml @@ -26,7 +26,7 @@ krb5-config_LDFLAGS.patch - + rebuild-configure-scripts.patch fix-python-detection.patch diff --git a/server/database/postgresql/actions.py b/server/database/postgresql/actions.py index 437615bb7b..e76141a115 100644 --- a/server/database/postgresql/actions.py +++ b/server/database/postgresql/actions.py @@ -21,7 +21,7 @@ def setup(): --with-pam \ --with-libxml \ --with-libxslt \ - --with-ldap \ + --without-ldap \ --enable-integer-datetimes \ --enable-thread-safety \ --enable-depend \ diff --git a/server/database/postgresql/pspec.xml b/server/database/postgresql/pspec.xml index 316334eb63..8ece19e861 100644 --- a/server/database/postgresql/pspec.xml +++ b/server/database/postgresql/pspec.xml @@ -15,13 +15,15 @@ https://ftp.postgresql.org/pub/source/v9.3.9/postgresql-9.3.9.tar.bz2 mit-kerberos - pam-devel + e2fsprogs-devel + pam-devel readline-devel zlib-devel + python-devel openssl-devel tcl-devel - libxslt - libxml2 + libxslt-devel + libxml2-devel diff --git a/server/openldap/actions.py b/server/openldap/actions.py new file mode 100644 index 0000000000..3623aae981 --- /dev/null +++ b/server/openldap/actions.py @@ -0,0 +1,100 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +KeepSpecial = ["libtool"] + +def setup(): + pisitools.dosed( + "include/ldap_defaults.h", + "(#define LDAPI_SOCK).*", + '\\1 "/run/openldap/slapd.sock"' + ) + pisitools.dosed("servers/slapd/Makefile.in", "(\$\(DESTDIR\))\$\(localstatedir\)(\/run)", r"\1\2") + + pisitools.flags.add("-D_REENTRANT -D_GNU_SOURCE -fPIC -Wl,--as-needed -DLDAP_CONNECTIONLESS") + #pisitools.ldflags.add("-pie") + + options = "--prefix=/usr \ + --enable-bdb \ + --enable-hdb=mod \ + --enable-slapd \ + --enable-passwd=mod \ + --enable-dnssrv=mod \ + --enable-ldap \ + --enable-wrappers \ + --enable-meta=mod \ + --enable-monitor=mod \ + --enable-null=mod \ + --enable-shell=mod \ + --enable-rewrite \ + --enable-rlookups \ + --enable-aci \ + --enable-modules \ + --enable-cleartext \ + --enable-lmpasswd \ + --enable-spasswd \ + --enable-slapi \ + --enable-dyngroup \ + --enable-proxycache \ + --enable-perl \ + --enable-syslog \ + --enable-dynamic \ + --enable-local \ + --enable-proctitle \ + --enable-overlays=mod \ + --with-pic \ + --with-cyrus-sasl \ + --with-threads \ + --without-fetch \ + --enable-crypt \ + --enable-ipv6 \ + --enable-dynacl \ + --enable-shared \ + --disable-static \ + --disable-slp \ + --localstatedir=/var/lib" + + if get.buildTYPE() == "emul32": + options += " --prefix=/emul32 \ + --libdir=/usr/lib32 \ + --libexecdir=/emul32/libexec \ + --disable-bdb \ + --disable-hdb \ + --disable-wrappers \ + --disable-spasswd \ + --disable-perl \ + --with-tls \ + --without-cyrus-sasl" + else: options += " --with-tls=moznss" + + shelltools.export("AUTOMAKE", "/bin/true") + autotools.autoreconf("-fi") + autotools.configure(options) + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make("-j1") + +def install(): + if get.buildTYPE() == "emul32": + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + return + + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + + pisitools.dodir("/run/openldap") + pisitools.dodir("/etc/openldap/ssl") + + pisitools.dodoc("ANNOUNCEMENT", "CHANGES", "COPYRIGHT", "README", "LICENSE") + + pisitools.remove("/usr/lib/*.la") + pisitools.remove("/usr/libexec/openldap/*.la") diff --git a/server/openldap/comar/package.py b/server/openldap/comar/package.py new file mode 100644 index 0000000000..4fb89377f2 --- /dev/null +++ b/server/openldap/comar/package.py @@ -0,0 +1,17 @@ +#!/usr/bin/python + +import os +import pwd +import grp + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + os.system("/bin/chown ldap:ldap /var/lib/openldap-data") + os.system("/bin/chown ldap:ldap /var/lib/openldap-slurp") + os.system("/bin/chown ldap:ldap /run/openldap") + os.system("/bin/chown root:ldap /etc/openldap/slapd.conf") + os.system("/bin/chown root:ldap /etc/openldap/slapd.conf.default") + os.system("/bin/chmod 0700 /var/lib/openldap-data") + os.system("/bin/chmod 0700 /var/lib/openldap-slurp") + os.system("/bin/chmod 0755 /run/openldap") + os.system("/bin/chmod 0640 /etc/openldap/slapd.conf") + os.system("/bin/chmod 0640 /etc/openldap/slapd.conf.default") diff --git a/server/openldap/comar/slapd.py b/server/openldap/comar/slapd.py new file mode 100644 index 0000000000..768adf7aef --- /dev/null +++ b/server/openldap/comar/slapd.py @@ -0,0 +1,23 @@ +from comar.service import * + +serviceType = "server" +serviceDesc = _({"en": "OpenLDAP Server", + "tr": "OpenLDAP Sunucusu"}) +serviceConf = "slapd" + +def start(): + import os + os.environ["LC_ALL"] = "C" + os.environ["LANG"] = "C" + + startService(command="/usr/libexec/slapd", + args="-u ldap -g ldap %s" % config.get("OPTS", ""), + pidfile="/run/openldap/slapd.pid", + donotify=True) + +def stop(): + stopService(pidfile="/run/openldap/slapd.pid", + donotify=True) + +def status(): + return isServiceRunning("/run/openldap/slapd.pid") diff --git a/server/openldap/comar/slurpd.py b/server/openldap/comar/slurpd.py new file mode 100644 index 0000000000..dcc9a1f7ca --- /dev/null +++ b/server/openldap/comar/slurpd.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +from comar.service import * + +serviceType = "server" +serviceDesc = _({"en": "Slurpd Daemon", + "tr": "Slurpd Servisi"}) + +def start(): + startService(command="/usr/libexec/slurpd", + donotify=True) + +def stop(): + stopService(command="/usr/libexec/slurpd", + donotify=True) + +def status(): + return isServiceRunning(command="/usr/libexec/slurpd") diff --git a/server/openldap/files/fedora/openldap-autoconf-pkgconfig-nss.patch b/server/openldap/files/fedora/openldap-autoconf-pkgconfig-nss.patch new file mode 100644 index 0000000000..8b4bb199ca --- /dev/null +++ b/server/openldap/files/fedora/openldap-autoconf-pkgconfig-nss.patch @@ -0,0 +1,49 @@ +Use pkg-config for Mozilla NSS library detection + +Author: Jan Vcelak + +--- + configure.in | 22 +++++----------------- + 1 file changed, 5 insertions(+), 17 deletions(-) + +diff --git a/configure.in b/configure.in +index ecffe30..2a9cfb4 100644 +--- a/configure.in ++++ b/configure.in +@@ -1223,28 +1223,16 @@ if test $ol_link_tls = no ; then + fi + fi + +-dnl NOTE: caller must specify -I/path/to/nspr4 and -I/path/to/nss3 +-dnl and -L/path/to/nspr4 libs and -L/path/to/nss3 libs if those libs +-dnl are not in the default system location + if test $ol_link_tls = no ; then + if test $ol_with_tls = moznss || test $ol_with_tls = auto ; then +- have_moznss=no +- AC_CHECK_HEADERS([nssutil.h]) +- if test "$ac_cv_header_nssutil_h" = yes ; then +- AC_CHECK_LIB([nss3], [NSS_Initialize], +- [ have_moznss=yes ], [ have_moznss=no ]) +- fi ++ PKG_CHECK_MODULES(MOZNSS, [nss nspr], [have_moznss=yes], [have_moznss=no]) + +- if test "$have_moznss" = yes ; then ++ if test $have_moznss = yes ; then + ol_with_tls=moznss + ol_link_tls=yes +- AC_DEFINE(HAVE_MOZNSS, 1, +- [define if you have MozNSS]) +- TLS_LIBS="-lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4" +- else +- if test $ol_with_tls = moznss ; then +- AC_MSG_ERROR([MozNSS not found - please specify the location to the NSPR and NSS header files in CPPFLAGS and the location to the NSPR and NSS libraries in LDFLAGS (if not in the system location)]) +- fi ++ AC_DEFINE(HAVE_MOZNSS, 1, [define if you have MozNSS]) ++ TLS_LIBS="$MOZNSS_LIBS" ++ CFLAGS="$CFLAGS $MOZNSS_CFLAGS" + fi + fi + fi +-- +1.7.11.7 + diff --git a/server/openldap/files/fedora/openldap-dns-priority.patch b/server/openldap/files/fedora/openldap-dns-priority.patch new file mode 100644 index 0000000000..8dc0923801 --- /dev/null +++ b/server/openldap/files/fedora/openldap-dns-priority.patch @@ -0,0 +1,192 @@ +Implement priority/weight for DNS SRV records + +From RFC 2782: + + A client MUST attempt to contact the target host with the + lowest-numbered priority it can reach. + +This patch sorts the DNS SRV records by their priority, and +additionally gives records with a larger weight a higher probability +of appearing earlier. This way, the DNS SRV records are tried in the +order of their priority. + +Author: James M Leddy +Upstream ITS: #7027 +Resolves: #733078 + +--- + libraries/libldap/dnssrv.c | 106 ++++++++++++++++++++++++++++++++++---------- + 1 files changed, 83 insertions(+), 23 deletions(-) + +diff --git a/libraries/libldap/dnssrv.c b/libraries/libldap/dnssrv.c +index 16b1544..40f93b4 100644 +--- a/libraries/libldap/dnssrv.c ++++ b/libraries/libldap/dnssrv.c +@@ -174,6 +174,46 @@ int ldap_domain2dn( + return LDAP_SUCCESS; + } + ++#ifdef HAVE_RES_QUERY ++#define DNSBUFSIZ (64*1024) ++typedef struct srv_record { ++ u_short priority; ++ u_short weight; ++ u_short port; ++ char hostname[DNSBUFSIZ]; ++} srv_record; ++ ++ ++static int srv_cmp(const void *aa, const void *bb){ ++ srv_record *a=(srv_record *)aa; ++ srv_record *b=(srv_record *)bb; ++ u_long total; ++ ++ if(a->priority < b->priority) { ++ return -1; ++ } ++ if(a->priority > b->priority) { ++ return 1; ++ } ++ if(a->priority == b->priority){ ++ /* targets with same priority are in psudeo random order */ ++ if (a->weight == 0 && b->weight == 0) { ++ if (rand() % 2) { ++ return -1; ++ } else { ++ return 1; ++ } ++ } ++ total = a->weight + b->weight; ++ if (rand() % total < a->weight) { ++ return -1; ++ } else { ++ return 1; ++ } ++ } ++} ++#endif /* HAVE_RES_QUERY */ ++ + /* + * Lookup and return LDAP servers for domain (using the DNS + * SRV record _ldap._tcp.domain). +@@ -183,15 +223,16 @@ int ldap_domain2hostlist( + char **list ) + { + #ifdef HAVE_RES_QUERY +-#define DNSBUFSIZ (64*1024) +- char *request; +- char *hostlist = NULL; ++ char *request; ++ char *hostlist = NULL; ++ srv_record *hostent_head=NULL; ++ int i; + int rc, len, cur = 0; + unsigned char reply[DNSBUFSIZ]; ++ int hostent_count=0; + + assert( domain != NULL ); + assert( list != NULL ); +- + if( *domain == '\0' ) { + return LDAP_PARAM_ERROR; + } +@@ -223,8 +264,7 @@ int ldap_domain2hostlist( + unsigned char *p; + char host[DNSBUFSIZ]; + int status; +- u_short port; +- /* int priority, weight; */ ++ u_short port, priority, weight; + + /* Parse out query */ + p = reply; +@@ -263,40 +303,56 @@ int ldap_domain2hostlist( + size = (p[0] << 8) | p[1]; + p += 2; + if (type == T_SRV) { +- int buflen; + status = dn_expand(reply, reply + len, p + 6, host, sizeof(host)); + if (status < 0) { + goto out; + } +- /* ignore priority and weight for now */ +- /* priority = (p[0] << 8) | p[1]; */ +- /* weight = (p[2] << 8) | p[3]; */ ++ ++ /* Get priority weight and port */ ++ priority = (p[0] << 8) | p[1]; ++ weight = (p[2] << 8) | p[3]; + port = (p[4] << 8) | p[5]; + + if ( port == 0 || host[ 0 ] == '\0' ) { + goto add_size; + } + +- buflen = strlen(host) + STRLENOF(":65355 "); +- hostlist = (char *) LDAP_REALLOC(hostlist, cur + buflen + 1); +- if (hostlist == NULL) { +- rc = LDAP_NO_MEMORY; +- goto out; ++ hostent_head = (srv_record *) LDAP_REALLOC(hostent_head, (hostent_count+1)*(sizeof(srv_record))); ++ if(hostent_head==NULL){ ++ rc=LDAP_NO_MEMORY; ++ goto out; ++ + } +- if (cur > 0) { +- /* not first time around */ +- hostlist[cur++] = ' '; +- } +- cur += sprintf(&hostlist[cur], "%s:%hu", host, port); ++ hostent_head[hostent_count].priority=priority; ++ hostent_head[hostent_count].weight=weight; ++ hostent_head[hostent_count].port=port; ++ strncpy(hostent_head[hostent_count].hostname, host,255); ++ hostent_count=hostent_count+1; + } + add_size:; + p += size; + } + } ++ qsort(hostent_head, hostent_count, sizeof(srv_record), srv_cmp); ++ ++ for(i=0; i0){ ++ hostlist[cur++]=' '; ++ } ++ cur += sprintf(&hostlist[cur], "%s:%hd", hostent_head[i].hostname, hostent_head[i].port); ++ } ++ + if (hostlist == NULL) { +- /* No LDAP servers found in DNS. */ +- rc = LDAP_UNAVAILABLE; +- goto out; ++ /* No LDAP servers found in DNS. */ ++ rc = LDAP_UNAVAILABLE; ++ goto out; + } + + rc = LDAP_SUCCESS; +@@ -308,8 +364,12 @@ add_size:; + if (request != NULL) { + LDAP_FREE(request); + } ++ if (hostent_head != NULL) { ++ LDAP_FREE(hostent_head); ++ } + if (rc != LDAP_SUCCESS && hostlist != NULL) { + LDAP_FREE(hostlist); ++ + } + return rc; + #else +-- +1.7.6 + diff --git a/server/openldap/files/fedora/openldap-ldapi-sasl.patch b/server/openldap/files/fedora/openldap-ldapi-sasl.patch new file mode 100644 index 0000000000..058cc1c32e --- /dev/null +++ b/server/openldap/files/fedora/openldap-ldapi-sasl.patch @@ -0,0 +1,55 @@ +From 69709289b083c53ba41d2cef7d65120220f8c59b Mon Sep 17 00:00:00 2001 +From: Sumit Bose +Date: Tue, 7 May 2013 17:02:57 +0200 +Subject: [PATCH] LDAPI SASL fix + +Resolves: #960222 +--- + libraries/libldap/cyrus.c | 19 ++++++++++++++++--- + 1 Datei geändert, 16 Zeilen hinzugefügt(+), 3 Zeilen entfernt(-) + +diff --git a/libraries/libldap/cyrus.c b/libraries/libldap/cyrus.c +index 28c241b..a9acf36 100644 +--- a/libraries/libldap/cyrus.c ++++ b/libraries/libldap/cyrus.c +@@ -394,6 +394,8 @@ ldap_int_sasl_bind( + struct berval ccred = BER_BVNULL; + int saslrc, rc; + unsigned credlen; ++ char my_hostname[HOST_NAME_MAX + 1]; ++ int free_saslhost = 0; + + Debug( LDAP_DEBUG_TRACE, "ldap_int_sasl_bind: %s\n", + mechs ? mechs : "", 0, 0 ); +@@ -454,14 +456,25 @@ ldap_int_sasl_bind( + + /* If we don't need to canonicalize just use the host + * from the LDAP URI. ++ * Always use the result of gethostname() for LDAPI. + */ +- if ( nocanon ) ++ if (ld->ld_defconn->lconn_server->lud_scheme != NULL && ++ strcmp("ldapi", ld->ld_defconn->lconn_server->lud_scheme) == 0) { ++ rc = gethostname(my_hostname, HOST_NAME_MAX + 1); ++ if (rc == 0) { ++ saslhost = my_hostname; ++ } else { ++ saslhost = "localhost"; ++ } ++ } else if ( nocanon ) + saslhost = ld->ld_defconn->lconn_server->lud_host; +- else ++ else { + saslhost = ldap_host_connected_to( ld->ld_defconn->lconn_sb, + "localhost" ); ++ free_saslhost = 1; ++ } + rc = ldap_int_sasl_open( ld, ld->ld_defconn, saslhost ); +- if ( !nocanon ) ++ if ( free_saslhost ) + LDAP_FREE( saslhost ); + } + +-- +1.7.11.7 + diff --git a/server/openldap/files/fedora/openldap-ldaprc-currentdir.patch b/server/openldap/files/fedora/openldap-ldaprc-currentdir.patch new file mode 100644 index 0000000000..420c1f98c5 --- /dev/null +++ b/server/openldap/files/fedora/openldap-ldaprc-currentdir.patch @@ -0,0 +1,20 @@ +Disables opening of ldaprc file in current directory. + +Resolves: #38402 +Upstream: ITS #1131 +Author: Henning Schmiedehausen + +diff --git a/libraries/libldap/init.c b/libraries/libldap/init.c +index 8617527..e6b17b4 100644 +--- a/libraries/libldap/init.c ++++ b/libraries/libldap/init.c +@@ -352,9 +352,6 @@ static void openldap_ldap_init_w_userconf(const char *file) + if(path != NULL) { + LDAP_FREE(path); + } +- +- /* try file */ +- openldap_ldap_init_w_conf(file, 1); + } + + static void openldap_ldap_init_w_env( diff --git a/server/openldap/files/fedora/openldap-nss-certs-from-certdb-fallback-pem.patch b/server/openldap/files/fedora/openldap-nss-certs-from-certdb-fallback-pem.patch new file mode 100644 index 0000000000..d20e48aa64 --- /dev/null +++ b/server/openldap/files/fedora/openldap-nss-certs-from-certdb-fallback-pem.patch @@ -0,0 +1,86 @@ +MozNSS: load certificates from certdb, fallback to PEM + +If TLS_CACERT pointed to a PEM file and TLS_CACERTDIR was set to NSS +certificate database, the backend assumed that the certificate is always +located in the certificate database. This assumption might be wrong. + +This patch makes the library to try to load the certificate from NSS +database and fallback to PEM file if unsuccessfull. + +Author: Jan Vcelak +Upstream ITS: #7389 +Resolves: #857455 + +diff --git a/libraries/libldap/tls_m.c b/libraries/libldap/tls_m.c +index 6847bea..8339391 100644 +--- a/libraries/libldap/tls_m.c ++++ b/libraries/libldap/tls_m.c +@@ -1412,7 +1412,7 @@ tlsm_ctx_load_private_key( tlsm_ctx *ctx ) + /* prefer unlocked key, then key from opened certdb, then any other */ + if ( unlocked_key ) + ctx->tc_private_key = unlocked_key; +- else if ( ctx->tc_certdb_slot ) ++ else if ( ctx->tc_certdb_slot && !ctx->tc_using_pem ) + ctx->tc_private_key = PK11_FindKeyByDERCert( ctx->tc_certdb_slot, ctx->tc_certificate, pin_arg ); + else + ctx->tc_private_key = PK11_FindKeyByAnyCert( ctx->tc_certificate, pin_arg ); +@@ -1909,8 +1909,6 @@ tlsm_deferred_init( void *arg ) + } + return -1; + } +- +- ctx->tc_using_pem = PR_TRUE; + } + + NSS_SetDomesticPolicy(); +@@ -2363,15 +2361,9 @@ tlsm_deferred_ctx_init( void *arg ) + + /* set up our cert and key, if any */ + if ( lt->lt_certfile ) { +- /* if using the PEM module, load the PEM file specified by lt_certfile */ +- /* otherwise, assume this is the name of a cert already in the db */ +- if ( ctx->tc_using_pem ) { +- /* this sets ctx->tc_certificate to the correct value */ +- int rc = tlsm_add_cert_from_file( ctx, lt->lt_certfile, PR_FALSE ); +- if ( rc ) { +- return rc; +- } +- } else { ++ ++ /* first search in certdb (lt_certfile is nickname) */ ++ if ( ctx->tc_certdb ) { + char *tmp_certname; + + if ( tlsm_is_tokenname_certnick( lt->lt_certfile )) { +@@ -2391,8 +2383,31 @@ tlsm_deferred_ctx_init( void *arg ) + Debug( LDAP_DEBUG_ANY, + "TLS: error: the certificate '%s' could not be found in the database - error %d:%s.\n", + lt->lt_certfile, errcode, PR_ErrorToString( errcode, PR_LANGUAGE_I_DEFAULT ) ); ++ } ++ } ++ ++ /* fallback to PEM module (lt_certfile is filename) */ ++ if ( !ctx->tc_certificate ) { ++ if ( !pem_module && tlsm_init_pem_module() ) { ++ int pem_errcode = PORT_GetError(); ++ Debug( LDAP_DEBUG_ANY, ++ "TLS: fallback to PEM impossible, module cannot be loaded - error %d:%s.\n", ++ pem_errcode, PR_ErrorToString( pem_errcode, PR_LANGUAGE_I_DEFAULT ), 0 ); + return -1; + } ++ ++ /* this sets ctx->tc_certificate to the correct value */ ++ if ( !tlsm_add_cert_from_file( ctx, lt->lt_certfile, PR_FALSE ) ) { ++ ctx->tc_using_pem = PR_TRUE; ++ } ++ } ++ ++ if ( ctx->tc_certificate ) { ++ Debug( LDAP_DEBUG_ANY, ++ "TLS: certificate '%s' successfully loaded from %s.\n", lt->lt_certfile, ++ ctx->tc_using_pem ? "PEM file" : "moznss database", 0); ++ } else { ++ return -1; + } + } + diff --git a/server/openldap/files/fedora/openldap-nss-ignore-certdb-type-prefix.patch b/server/openldap/files/fedora/openldap-nss-ignore-certdb-type-prefix.patch new file mode 100644 index 0000000000..2fab916e28 --- /dev/null +++ b/server/openldap/files/fedora/openldap-nss-ignore-certdb-type-prefix.patch @@ -0,0 +1,47 @@ +MozNSS: ignore certdb database type prefix when checking existence of the directory + +If the certdb is specified including the database type prefix (e.g. +sql:, dbm:), the prefix has to be ignored when checking the +certificate directory existence. + +Author: Jan Vcelak +Upstream ITS: #7388 +Resolves: #857373 + +--- + libraries/libldap/tls_m.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/libraries/libldap/tls_m.c b/libraries/libldap/tls_m.c +index 49a3f8f..5ee21a2 100644 +--- a/libraries/libldap/tls_m.c ++++ b/libraries/libldap/tls_m.c +@@ -1633,6 +1633,7 @@ tlsm_get_certdb_prefix( const char *certdir, char **realcertdir, char **prefix ) + { + char sep = PR_GetDirectorySeparator(); + char *ptr = NULL; ++ char *chkpath = NULL; + struct PRFileInfo prfi; + PRStatus prc; + +@@ -1643,8 +1644,16 @@ tlsm_get_certdb_prefix( const char *certdir, char **realcertdir, char **prefix ) + return; + } + +- prc = PR_GetFileInfo( certdir, &prfi ); ++ /* ignore database type prefix (e.g. sql:, dbm:) if provided */ ++ chkpath = strchr( certdir, ':' ); ++ if ( chkpath != NULL ) { ++ chkpath += 1; ++ } else { ++ chkpath = certdir; ++ } ++ + /* if certdir exists (file or directory) then it cannot specify a prefix */ ++ prc = PR_GetFileInfo( chkpath, &prfi ); + if ( prc == PR_SUCCESS ) { + return; + } +-- +1.7.11.7 + diff --git a/server/openldap/files/fedora/openldap-nss-pk11-freeslot.patch b/server/openldap/files/fedora/openldap-nss-pk11-freeslot.patch new file mode 100644 index 0000000000..9ac541d22f --- /dev/null +++ b/server/openldap/files/fedora/openldap-nss-pk11-freeslot.patch @@ -0,0 +1,27 @@ +Resolves: #929357 + +From 6330d1b87a45b447f33fe8ffd6fbbce9e60bb0ec Mon Sep 17 00:00:00 2001 +From: Rich Megginson +Date: Thu, 28 Mar 2013 19:05:02 -0600 +Subject: [PATCH] must call PK11_FreeSlot after SECMOD_CloseUserDB to remove ref to slot + +--- + libraries/libldap/tls_m.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/libraries/libldap/tls_m.c b/libraries/libldap/tls_m.c +index 072d41d..c59d303 100644 +--- a/libraries/libldap/tls_m.c ++++ b/libraries/libldap/tls_m.c +@@ -2063,6 +2063,8 @@ tlsm_ctx_free ( tls_ctx *ctx ) + "TLS: could not close certdb slot - error %d:%s.\n", + errcode, PR_ErrorToString( errcode, PR_LANGUAGE_I_DEFAULT ), 0 ); + } ++ PK11_FreeSlot( c->tc_certdb_slot ); ++ c->tc_certdb_slot = NULL; + } + PL_strfree( c->tc_pin_file ); + c->tc_pin_file = NULL; +-- +1.7.1 + diff --git a/server/openldap/files/fedora/openldap-nss-regex-search-hashed-cacert-dir.patch b/server/openldap/files/fedora/openldap-nss-regex-search-hashed-cacert-dir.patch new file mode 100644 index 0000000000..03493db2b0 --- /dev/null +++ b/server/openldap/files/fedora/openldap-nss-regex-search-hashed-cacert-dir.patch @@ -0,0 +1,91 @@ +MozNSS: better file name matching for hashed CA certificate directory + +CA certificate files in OpenSSL compatible CACERTDIR were loaded if the file extension was '.0'. However the file name +should be 8 letters long certificate hash of the certificate subject name, followed by a numeric suffix which is used +to differentiate between two certificates with the same subject name. + +Wit this patch, certificate file names are matched correctly (using regular expressions). + +Author: Jan Vcelak +Upstream ITS: #7374 +Resolves: #852786 + +diff --git a/libraries/libldap/tls_m.c b/libraries/libldap/tls_m.c +index 5e49fc5..61d71d4 100644 +--- a/libraries/libldap/tls_m.c ++++ b/libraries/libldap/tls_m.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + #include "ldap-int.h" + #include "ldap-tls.h" +@@ -118,9 +119,7 @@ static const PRIOMethods tlsm_PR_methods; + + #define PEM_LIBRARY "nsspem" + #define PEM_MODULE "PEM" +-/* hash files for use with cacertdir have this file name suffix */ +-#define PEM_CA_HASH_FILE_SUFFIX ".0" +-#define PEM_CA_HASH_FILE_SUFFIX_LEN 2 ++#define PEM_CA_HASH_FILE_REGEX "^[0-9a-f]{8}\\.[0-9]+$" + + static SECMODModule *pem_module; + +@@ -1541,6 +1540,7 @@ tlsm_init_ca_certs( tlsm_ctx *ctx, const char *cacertfile, const char *cacertdir + PRDir *dir; + PRDirEntry *entry; + PRStatus fistatus = PR_FAILURE; ++ regex_t hashfile_re; + + memset( &fi, 0, sizeof(fi) ); + fistatus = PR_GetFileInfo( cacertdir, &fi ); +@@ -1570,20 +1570,30 @@ tlsm_init_ca_certs( tlsm_ctx *ctx, const char *cacertfile, const char *cacertdir + goto done; + } + ++ if ( regcomp( &hashfile_re, PEM_CA_HASH_FILE_REGEX, REG_NOSUB|REG_EXTENDED ) != 0 ) { ++ Debug( LDAP_DEBUG_ANY, "TLS: cannot compile regex for CA hash files matching\n", 0, 0, 0 ); ++ goto done; ++ } ++ + do { + entry = PR_ReadDir( dir, PR_SKIP_BOTH | PR_SKIP_HIDDEN ); + if ( ( NULL != entry ) && ( NULL != entry->name ) ) { + char *fullpath = NULL; +- char *ptr; ++ int match; + +- ptr = PL_strrstr( entry->name, PEM_CA_HASH_FILE_SUFFIX ); +- if ( ( ptr == NULL ) || ( *(ptr + PEM_CA_HASH_FILE_SUFFIX_LEN) != '\0' ) ) { ++ match = regexec( &hashfile_re, entry->name, 0, NULL, 0 ); ++ if ( match == REG_NOMATCH ) { + Debug( LDAP_DEBUG_TRACE, +- "TLS: file %s does not end in [%s] - does not appear to be a CA certificate " +- "directory file with a properly hashed file name - skipping.\n", +- entry->name, PEM_CA_HASH_FILE_SUFFIX, 0 ); ++ "TLS: skipping '%s' - filename does not have expected format " ++ "(certificate hash with numeric suffix)\n", entry->name, 0, 0 ); ++ continue; ++ } else if ( match != 0 ) { ++ Debug( LDAP_DEBUG_ANY, ++ "TLS: cannot execute regex for CA hash file matching (%d).\n", ++ match, 0, 0 ); + continue; + } ++ + fullpath = PR_smprintf( "%s/%s", cacertdir, entry->name ); + if ( !tlsm_add_cert_from_file( ctx, fullpath, isca ) ) { + Debug( LDAP_DEBUG_TRACE, +@@ -1599,6 +1609,7 @@ tlsm_init_ca_certs( tlsm_ctx *ctx, const char *cacertfile, const char *cacertdir + PR_smprintf_free( fullpath ); + } + } while ( NULL != entry ); ++ regfree ( &hashfile_re ); + PR_CloseDir( dir ); + } + done: +-- +1.7.11.4 + diff --git a/server/openldap/files/fedora/openldap-nss-update-list-of-ciphers.patch b/server/openldap/files/fedora/openldap-nss-update-list-of-ciphers.patch new file mode 100644 index 0000000000..d5986c0031 --- /dev/null +++ b/server/openldap/files/fedora/openldap-nss-update-list-of-ciphers.patch @@ -0,0 +1,193 @@ +MozNSS: update list of supported cipher suites + +The updated list includes all ciphers implemented in Mozilla NSS 3.13.15 + +Author: Jan Vcelak +Upstream ITS: #7374 + +diff --git a/libraries/libldap/tls_m.c b/libraries/libldap/tls_m.c +index 1422ce2..5e49fc5 100644 +--- a/libraries/libldap/tls_m.c ++++ b/libraries/libldap/tls_m.c +@@ -211,27 +211,34 @@ typedef struct { + int num; /* The cipher id */ + int attr; /* cipher attributes: algorithms, etc */ + int version; /* protocol version valid for this cipher */ +- int bits; /* bits of strength */ +- int alg_bits; /* bits of the algorithm */ + int strength; /* LOW, MEDIUM, HIGH */ + int enabled; /* Enabled by default? */ + } cipher_properties; + + /* cipher attributes */ +-#define SSL_kRSA 0x00000001L +-#define SSL_aRSA 0x00000002L +-#define SSL_aDSS 0x00000004L +-#define SSL_DSS SSL_aDSS +-#define SSL_eNULL 0x00000008L +-#define SSL_DES 0x00000010L +-#define SSL_3DES 0x00000020L +-#define SSL_RC4 0x00000040L +-#define SSL_RC2 0x00000080L +-#define SSL_AES 0x00000100L +-#define SSL_MD5 0x00000200L +-#define SSL_SHA1 0x00000400L +-#define SSL_SHA SSL_SHA1 +-#define SSL_RSA (SSL_kRSA|SSL_aRSA) ++#define SSL_kRSA 0x00000001L ++#define SSL_aRSA 0x00000002L ++#define SSL_RSA (SSL_kRSA|SSL_aRSA) ++#define SSL_aDSA 0x00000004L ++#define SSL_DSA SSL_aDSA ++#define SSL_eNULL 0x00000008L ++#define SSL_DES 0x00000010L ++#define SSL_3DES 0x00000020L ++#define SSL_RC4 0x00000040L ++#define SSL_RC2 0x00000080L ++#define SSL_AES128 0x00000100L ++#define SSL_AES256 0x00000200L ++#define SSL_AES (SSL_AES128|SSL_AES256) ++#define SSL_MD5 0x00000400L ++#define SSL_SHA1 0x00000800L ++#define SSL_kEDH 0x00001000L ++#define SSL_CAMELLIA128 0x00002000L ++#define SSL_CAMELLIA256 0x00004000L ++#define SSL_CAMELLIA (SSL_CAMELLIA128|SSL_CAMELLIA256) ++#define SSL_SEED 0x00008000L ++#define SSL_kECDH 0x00010000L ++#define SSL_kECDHE 0x00020000L ++#define SSL_aECDSA 0x00040000L + + /* cipher strength */ + #define SSL_NULL 0x00000001L +@@ -248,29 +255,70 @@ typedef struct { + + /* Cipher translation */ + static cipher_properties ciphers_def[] = { +- /* SSL 2 ciphers */ +- {"DES-CBC3-MD5", SSL_EN_DES_192_EDE3_CBC_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_3DES|SSL_MD5, SSL2, 168, 168, SSL_HIGH, SSL_ALLOWED}, +- {"RC2-CBC-MD5", SSL_EN_RC2_128_CBC_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5, SSL2, 128, 128, SSL_MEDIUM, SSL_ALLOWED}, +- {"RC4-MD5", SSL_EN_RC4_128_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5, SSL2, 128, 128, SSL_MEDIUM, SSL_ALLOWED}, +- {"DES-CBC-MD5", SSL_EN_DES_64_CBC_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_DES|SSL_MD5, SSL2, 56, 56, SSL_LOW, SSL_ALLOWED}, +- {"EXP-RC2-CBC-MD5", SSL_EN_RC2_128_CBC_EXPORT40_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5, SSL2, 40, 128, SSL_EXPORT40, SSL_ALLOWED}, +- {"EXP-RC4-MD5", SSL_EN_RC4_128_EXPORT40_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5, SSL2, 40, 128, SSL_EXPORT40, SSL_ALLOWED}, +- +- /* SSL3 ciphers */ +- {"RC4-MD5", SSL_RSA_WITH_RC4_128_MD5, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5, SSL3, 128, 128, SSL_MEDIUM, SSL_ALLOWED}, +- {"RC4-SHA", SSL_RSA_WITH_RC4_128_SHA, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_SHA1, SSL3, 128, 128, SSL_MEDIUM, SSL_ALLOWED}, +- {"DES-CBC3-SHA", SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_3DES|SSL_SHA1, SSL3, 168, 168, SSL_HIGH, SSL_ALLOWED}, +- {"DES-CBC-SHA", SSL_RSA_WITH_DES_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA1, SSL3, 56, 56, SSL_LOW, SSL_ALLOWED}, +- {"EXP-RC4-MD5", SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5, SSL3, 40, 128, SSL_EXPORT40, SSL_ALLOWED}, +- {"EXP-RC2-CBC-MD5", SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5, SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5, SSL3, 0, 0, SSL_EXPORT40, SSL_ALLOWED}, +- {"NULL-MD5", SSL_RSA_WITH_NULL_MD5, SSL_kRSA|SSL_aRSA|SSL_eNULL|SSL_MD5, SSL3, 0, 0, SSL_NULL, SSL_NOT_ALLOWED}, +- {"NULL-SHA", SSL_RSA_WITH_NULL_SHA, SSL_kRSA|SSL_aRSA|SSL_eNULL|SSL_SHA1, SSL3, 0, 0, SSL_NULL, SSL_NOT_ALLOWED}, ++ ++ /* ++ * Use the same DEFAULT cipher list as OpenSSL, which is defined as: ALL:!aNULL:!eNULL:!SSLv2 ++ */ ++ ++ /* SSLv2 ciphers */ ++ {"DES-CBC-MD5", SSL_EN_DES_64_CBC_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_DES|SSL_MD5, SSL2, SSL_LOW, SSL_NOT_ALLOWED}, ++ {"DES-CBC3-MD5", SSL_EN_DES_192_EDE3_CBC_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_3DES|SSL_MD5, SSL2, SSL_HIGH, SSL_NOT_ALLOWED}, ++ {"RC2-CBC-MD5", SSL_EN_RC2_128_CBC_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5, SSL2, SSL_MEDIUM, SSL_NOT_ALLOWED}, ++ {"RC4-MD5", SSL_EN_RC4_128_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5, SSL2, SSL_MEDIUM, SSL_NOT_ALLOWED}, ++ {"EXP-RC2-CBC-MD5", SSL_EN_RC2_128_CBC_EXPORT40_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5, SSL2, SSL_EXPORT40, SSL_NOT_ALLOWED}, ++ {"EXP-RC4-MD5", SSL_EN_RC4_128_EXPORT40_WITH_MD5, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5, SSL2, SSL_EXPORT40, SSL_NOT_ALLOWED}, ++ ++ /* SSLv3 ciphers */ ++ {"NULL-MD5", SSL_RSA_WITH_NULL_MD5, SSL_kRSA|SSL_aRSA|SSL_eNULL|SSL_MD5, SSL3, SSL_NULL, SSL_NOT_ALLOWED}, ++ {"NULL-SHA", SSL_RSA_WITH_NULL_SHA, SSL_kRSA|SSL_aRSA|SSL_eNULL|SSL_SHA1, SSL3, SSL_NULL, SSL_NOT_ALLOWED}, ++ {"DES-CBC-SHA", SSL_RSA_WITH_DES_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA1, SSL3, SSL_LOW, SSL_ALLOWED}, ++ {"DES-CBC3-SHA", SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_3DES|SSL_SHA1, SSL3, SSL_HIGH, SSL_ALLOWED}, ++ {"RC4-MD5", SSL_RSA_WITH_RC4_128_MD5, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5, SSL3, SSL_MEDIUM, SSL_ALLOWED}, ++ {"RC4-SHA", SSL_RSA_WITH_RC4_128_SHA, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_SHA1, SSL3, SSL_MEDIUM, SSL_ALLOWED}, ++ {"EXP-RC2-CBC-MD5", SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5, SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5, SSL3, SSL_EXPORT40, SSL_ALLOWED}, ++ {"EXP-RC4-MD5", SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5, SSL3, SSL_EXPORT40, SSL_ALLOWED}, ++ {"EDH-RSA-DES-CBC-SHA", SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_kEDH|SSL_aRSA|SSL_DES|SSL_SHA1, SSL3, SSL_LOW, SSL_ALLOWED}, ++ {"EDH-RSA-DES-CBC3-SHA", SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_kEDH|SSL_aRSA|SSL_3DES|SSL_SHA1, SSL3, SSL_HIGH, SSL_ALLOWED}, ++ {"EDH-DSS-DES-CBC-SHA", SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_kEDH|SSL_aDSA|SSL_DES|SSL_SHA1, SSL3, SSL_LOW, SSL_ALLOWED}, ++ {"EDH-DSS-DES-CBC3-SHA", SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_kEDH|SSL_aDSA|SSL_3DES|SSL_SHA1, SSL3, SSL_HIGH, SSL_ALLOWED}, + + /* TLSv1 ciphers */ +- {"EXP1024-DES-CBC-SHA", TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA, TLS1, 56, 56, SSL_EXPORT56, SSL_ALLOWED}, +- {"EXP1024-RC4-SHA", TLS_RSA_EXPORT1024_WITH_RC4_56_SHA, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_SHA, TLS1, 56, 56, SSL_EXPORT56, SSL_ALLOWED}, +- {"AES128-SHA", TLS_RSA_WITH_AES_128_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_AES|SSL_SHA, TLS1, 128, 128, SSL_HIGH, SSL_ALLOWED}, +- {"AES256-SHA", TLS_RSA_WITH_AES_256_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_AES|SSL_SHA, TLS1, 256, 256, SSL_HIGH, SSL_ALLOWED}, ++ {"EXP1024-DES-CBC-SHA", TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA1, TLS1, SSL_EXPORT56, SSL_ALLOWED}, ++ {"EXP1024-RC4-SHA", TLS_RSA_EXPORT1024_WITH_RC4_56_SHA, SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_SHA1, TLS1, SSL_EXPORT56, SSL_ALLOWED}, ++ {"SEED-SHA", TLS_RSA_WITH_SEED_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_SEED|SSL_SHA1, TLS1, SSL_MEDIUM, SSL_ALLOWED}, ++ {"AES128-SHA", TLS_RSA_WITH_AES_128_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_AES128|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"AES256-SHA", TLS_RSA_WITH_AES_256_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_AES256|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"CAMELLIA256-SHA", TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_CAMELLIA|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"CAMELLIA128-SHA", TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, SSL_kRSA|SSL_aRSA|SSL_CAMELLIA|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"DHE-RSA-AES128-SHA", TLS_DHE_RSA_WITH_AES_128_CBC_SHA, SSL_kEDH|SSL_aRSA|SSL_AES128|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"DHE-RSA-AES256-SHA", TLS_DHE_RSA_WITH_AES_256_CBC_SHA, SSL_kEDH|SSL_aRSA|SSL_AES256|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"DHE-RSA-CAMELLIA128-SHA", TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, SSL_kEDH|SSL_aRSA|SSL_CAMELLIA128|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"DHE-RSA-CAMELLIA256-SHA", TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, SSL_kEDH|SSL_aRSA|SSL_CAMELLIA256|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"DHE-DSS-RC4-SHA", TLS_DHE_DSS_WITH_RC4_128_SHA, SSL_kEDH|SSL_aDSA|SSL_RC4|SSL_SHA1, TLS1, SSL_MEDIUM, SSL_ALLOWED}, ++ {"DHE-DSS-AES128-SHA", TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_kEDH|SSL_aDSA|SSL_AES128|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"DHE-DSS-AES256-SHA", TLS_DHE_DSS_WITH_AES_256_CBC_SHA, SSL_kEDH|SSL_aDSA|SSL_AES256|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"DHE-DSS-CAMELLIA128-SHA", TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, SSL_kEDH|SSL_aDSA|SSL_CAMELLIA128|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"DHE-DSS-CAMELLIA256-SHA", TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, SSL_kEDH|SSL_aDSA|SSL_CAMELLIA256|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDH-RSA-NULL-SHA", TLS_ECDH_RSA_WITH_NULL_SHA, SSL_kECDH|SSL_aRSA|SSL_eNULL|SSL_SHA1, TLS1, SSL_NULL, SSL_NOT_ALLOWED}, ++ {"ECDH-RSA-RC4-SHA", TLS_ECDH_RSA_WITH_RC4_128_SHA, SSL_kECDH|SSL_aRSA|SSL_RC4|SSL_SHA1, TLS1, SSL_MEDIUM, SSL_ALLOWED}, ++ {"ECDH-RSA-DES-CBC3-SHA", TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_kECDH|SSL_aRSA|SSL_3DES|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDH-RSA-AES128-SHA", TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, SSL_kECDH|SSL_aRSA|SSL_AES128|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDH-RSA-AES256-SHA", TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, SSL_kECDH|SSL_aRSA|SSL_AES256|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDH-ECDSA-NULL-SHA", TLS_ECDH_ECDSA_WITH_NULL_SHA, SSL_kECDH|SSL_aECDSA|SSL_eNULL|SSL_SHA1, TLS1, SSL_NULL, SSL_NOT_ALLOWED}, ++ {"ECDH-ECDSA-RC4-SHA", TLS_ECDH_ECDSA_WITH_RC4_128_SHA, SSL_kECDH|SSL_aECDSA|SSL_RC4|SSL_SHA1, TLS1, SSL_MEDIUM, SSL_ALLOWED}, ++ {"ECDH-ECDSA-DES-CBC3-SHA", TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, SSL_kECDH|SSL_aECDSA|SSL_3DES|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDH-ECDSA-AES128-SHA", TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, SSL_kECDH|SSL_aECDSA|SSL_AES128|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDH-ECDSA-AES256-SHA", TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, SSL_kECDH|SSL_aECDSA|SSL_AES256|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDHE-RSA-NULL-SHA", TLS_ECDHE_RSA_WITH_NULL_SHA, SSL_kECDHE|SSL_aRSA|SSL_eNULL|SSL_SHA1, TLS1, SSL_NULL, SSL_NOT_ALLOWED}, ++ {"ECDHE-RSA-RC4-SHA", TLS_ECDHE_RSA_WITH_RC4_128_SHA, SSL_kECDHE|SSL_aRSA|SSL_RC4|SSL_SHA1, TLS1, SSL_MEDIUM, SSL_ALLOWED}, ++ {"ECDHE-RSA-DES-CBC3-SHA", TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_kECDHE|SSL_aRSA|SSL_3DES|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDHE-RSA-AES128-SHA", TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, SSL_kECDHE|SSL_aRSA|SSL_AES128|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDHE-RSA-AES256-SHA", TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, SSL_kECDHE|SSL_aRSA|SSL_AES256|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDHE-ECDSA-NULL-SHA", TLS_ECDHE_ECDSA_WITH_NULL_SHA, SSL_kECDHE|SSL_aECDSA|SSL_eNULL|SSL_SHA1, TLS1, SSL_NULL, SSL_NOT_ALLOWED}, ++ {"ECDHE-ECDSA-RC4-SHA", TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, SSL_kECDHE|SSL_aECDSA|SSL_RC4|SSL_SHA1, TLS1, SSL_MEDIUM, SSL_ALLOWED}, ++ {"ECDHE-ECDSA-DES-CBC3-SHA", TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, SSL_kECDHE|SSL_aECDSA|SSL_3DES|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDHE-ECDSA-AES128-SHA", TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, SSL_kECDHE|SSL_aECDSA|SSL_AES128|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, ++ {"ECDHE-ECDSA-AES256-SHA", TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, SSL_kECDHE|SSL_aECDSA|SSL_AES256|SSL_SHA1, TLS1, SSL_HIGH, SSL_ALLOWED}, + }; + + #define ciphernum (sizeof(ciphers_def)/sizeof(cipher_properties)) +@@ -577,6 +625,10 @@ nss_parse_ciphers(const char *cipherstr, int cipher_list[ciphernum]) + mask |= SSL_RSA; + } else if ((!strcmp(cipher, "NULL")) || (!strcmp(cipher, "eNULL"))) { + mask |= SSL_eNULL; ++ } else if (!strcmp(cipher, "AES128")) { ++ mask |= SSL_AES128; ++ } else if (!strcmp(cipher, "AES256")) { ++ mask |= SSL_AES256; + } else if (!strcmp(cipher, "AES")) { + mask |= SSL_AES; + } else if (!strcmp(cipher, "3DES")) { +@@ -591,6 +643,24 @@ nss_parse_ciphers(const char *cipherstr, int cipher_list[ciphernum]) + mask |= SSL_MD5; + } else if ((!strcmp(cipher, "SHA")) || (!strcmp(cipher, "SHA1"))) { + mask |= SSL_SHA1; ++ } else if (!strcmp(cipher, "EDH")) { ++ mask |= SSL_kEDH; ++ } else if (!strcmp(cipher, "DSS")) { ++ mask |= SSL_aDSA; ++ } else if (!strcmp(cipher, "CAMELLIA128")) { ++ mask |= SSL_CAMELLIA128; ++ } else if (!strcmp(cipher, "CAMELLIA256")) { ++ mask |= SSL_CAMELLIA256; ++ } else if (!strcmp(cipher, "CAMELLIA")) { ++ mask |= SSL_CAMELLIA; ++ } else if (!strcmp(cipher, "SEED")) { ++ mask |= SSL_SEED; ++ } else if (!strcmp(cipher, "ECDH")) { ++ mask |= SSL_kECDH; ++ } else if (!strcmp(cipher, "ECDHE")) { ++ mask |= SSL_kECDHE; ++ } else if (!strcmp(cipher, "ECDSA")) { ++ mask |= SSL_aECDSA; + } else if (!strcmp(cipher, "SSLv2")) { + protocol |= SSL2; + } else if (!strcmp(cipher, "SSLv3")) { +-- +1.7.11.4 + diff --git a/server/openldap/files/fedora/openldap-reentrant-gethostby.patch b/server/openldap/files/fedora/openldap-reentrant-gethostby.patch new file mode 100644 index 0000000000..140b6e3381 --- /dev/null +++ b/server/openldap/files/fedora/openldap-reentrant-gethostby.patch @@ -0,0 +1,33 @@ +The non-reentrant gethostbyXXXX() functions deadlock if called recursively, for +example if libldap needs to be initialized from within gethostbyXXXX() (which +actually happens if nss_ldap is used for hostname resolution and earlier +modules can't resolve the local host name), so use the reentrant versions of +the functions, even if we're not being compiled for use in libldap_r + +Resolves: #179730 +Author: Jeffery Layton + +diff --git a/libraries/libldap/util-int.c b/libraries/libldap/util-int.c +index 373c81c..a012062 100644 +--- a/libraries/libldap/util-int.c ++++ b/libraries/libldap/util-int.c +@@ -52,8 +52,8 @@ extern int h_errno; + #ifndef LDAP_R_COMPILE + # undef HAVE_REENTRANT_FUNCTIONS + # undef HAVE_CTIME_R +-# undef HAVE_GETHOSTBYNAME_R +-# undef HAVE_GETHOSTBYADDR_R ++/* # undef HAVE_GETHOSTBYNAME_R */ ++/* # undef HAVE_GETHOSTBYADDR_R */ + + #else + # include +@@ -317,7 +317,7 @@ ldap_pvt_csnstr(char *buf, size_t len, unsigned int replica, unsigned int mod) + #define BUFSTART (1024-32) + #define BUFMAX (32*1024-32) + +-#if defined(LDAP_R_COMPILE) ++#if defined(LDAP_R_COMPILE) || defined(HAVE_GETHOSTBYNAME_R) && defined(HAVE_GETHOSTBYADDR_R) + static char *safe_realloc( char **buf, int len ); + + #if !(defined(HAVE_GETHOSTBYNAME_R) && defined(HAVE_GETHOSTBYADDR_R)) diff --git a/server/openldap/files/fedora/openldap-sql-linking.patch b/server/openldap/files/fedora/openldap-sql-linking.patch new file mode 100644 index 0000000000..c7edf8c6d1 --- /dev/null +++ b/server/openldap/files/fedora/openldap-sql-linking.patch @@ -0,0 +1,14 @@ +Removes unnecessary linking of SQL libraries into slapd. This makes openldap-servers package +independent on libodbc. (SQL backend is packaged separately in openldap-servers-sql.) + +--- openldap-2.4.24.orig/build/top.mk ++++ openldap-2.4.24/build/top.mk +@@ -201,7 +201,7 @@ SLAPD_SQL_LDFLAGS = @SLAPD_SQL_LDFLAGS@ + SLAPD_SQL_INCLUDES = @SLAPD_SQL_INCLUDES@ + SLAPD_SQL_LIBS = @SLAPD_SQL_LIBS@ + +-SLAPD_LIBS = @SLAPD_LIBS@ @SLAPD_PERL_LDFLAGS@ @SLAPD_SQL_LDFLAGS@ @SLAPD_SQL_LIBS@ @SLAPD_SLP_LIBS@ @SLAPD_GMP_LIBS@ $(ICU_LIBS) ++SLAPD_LIBS = @SLAPD_LIBS@ @SLAPD_PERL_LDFLAGS@ @SLAPD_SLP_LIBS@ @SLAPD_GMP_LIBS@ $(ICU_LIBS) + + # Our Defaults + CC = $(AC_CC) diff --git a/server/openldap/files/fedora/openldap-switch-to-lt_dlopenadvise-to-get-RTLD_GLOBAL-set.patch b/server/openldap/files/fedora/openldap-switch-to-lt_dlopenadvise-to-get-RTLD_GLOBAL-set.patch new file mode 100644 index 0000000000..ed4f2ad875 --- /dev/null +++ b/server/openldap/files/fedora/openldap-switch-to-lt_dlopenadvise-to-get-RTLD_GLOBAL-set.patch @@ -0,0 +1,41 @@ +From: Jan-Marek Glogowski +Date: Tue, 18 May 2010 17:47:05 +0200 +Subject: [PATCH] Switch to lt_dlopenadvise() to get RTLD_GLOBAL set. + +Proof of concept for fixing http://bugs.debian.org/327585 +(patch ported from freeradius bug http://bugs.debian.org/416266) + +Resolves: #960048 +--- +--- openldap/servers/slapd/module.c.orig 2010-05-18 17:42:04.000000000 +0200 ++++ openldap/servers/slapd/module.c 2010-05-18 17:45:46.000000000 +0200 +@@ -117,6 +117,20 @@ + return -1; /* not found */ + } + ++static lt_dlhandle slapd_lt_dlopenext_global( const char *filename ) ++{ ++ lt_dlhandle handle = 0; ++ lt_dladvise advise; ++ ++ if (!lt_dladvise_init (&advise) && !lt_dladvise_ext (&advise) ++ && !lt_dladvise_global (&advise)) ++ handle = lt_dlopenadvise (filename, advise); ++ ++ lt_dladvise_destroy (&advise); ++ ++ return handle; ++} ++ + int module_load(const char* file_name, int argc, char *argv[]) + { + module_loaded_t *module; +@@ -180,7 +194,7 @@ + * to calling Debug. This is because Debug is a macro that expands + * into multiple function calls. + */ +- if ((module->lib = lt_dlopenext(file)) == NULL) { ++ if ((module->lib = slapd_lt_dlopenext_global(file)) == NULL) { + error = lt_dlerror(); + #ifdef HAVE_EBCDIC + strcpy( ebuf, error ); diff --git a/server/openldap/files/fedora/openldap-syncrepl-unset-tls-options.patch b/server/openldap/files/fedora/openldap-syncrepl-unset-tls-options.patch new file mode 100644 index 0000000000..156971ad08 --- /dev/null +++ b/server/openldap/files/fedora/openldap-syncrepl-unset-tls-options.patch @@ -0,0 +1,62 @@ +allow unsetting of tls_* syncrepl options + +Author: Patrick Monnerat +Upstream ITS: #7042 +Resolves: #734187 + +diff --git a/libraries/libldap/tls2.c b/libraries/libldap/tls2.c +index 654a4bf..10b993b 100644 +--- a/libraries/libldap/tls2.c ++++ b/libraries/libldap/tls2.c +@@ -735,27 +735,27 @@ ldap_pvt_tls_set_option( LDAP *ld, int option, void *arg ) + return 0; + case LDAP_OPT_X_TLS_CACERTFILE: + if ( lo->ldo_tls_cacertfile ) LDAP_FREE( lo->ldo_tls_cacertfile ); +- lo->ldo_tls_cacertfile = arg ? LDAP_STRDUP( (char *) arg ) : NULL; ++ lo->ldo_tls_cacertfile = (arg && *(char *)arg) ? LDAP_STRDUP( (char *) arg ) : NULL; + return 0; + case LDAP_OPT_X_TLS_CACERTDIR: + if ( lo->ldo_tls_cacertdir ) LDAP_FREE( lo->ldo_tls_cacertdir ); +- lo->ldo_tls_cacertdir = arg ? LDAP_STRDUP( (char *) arg ) : NULL; ++ lo->ldo_tls_cacertdir = (arg && *(char *)arg) ? LDAP_STRDUP( (char *) arg ) : NULL; + return 0; + case LDAP_OPT_X_TLS_CERTFILE: + if ( lo->ldo_tls_certfile ) LDAP_FREE( lo->ldo_tls_certfile ); +- lo->ldo_tls_certfile = arg ? LDAP_STRDUP( (char *) arg ) : NULL; ++ lo->ldo_tls_certfile = (arg && *(char *)arg) ? LDAP_STRDUP( (char *) arg ) : NULL; + return 0; + case LDAP_OPT_X_TLS_KEYFILE: + if ( lo->ldo_tls_keyfile ) LDAP_FREE( lo->ldo_tls_keyfile ); +- lo->ldo_tls_keyfile = arg ? LDAP_STRDUP( (char *) arg ) : NULL; ++ lo->ldo_tls_keyfile = (arg && *(char *)arg) ? LDAP_STRDUP( (char *) arg ) : NULL; + return 0; + case LDAP_OPT_X_TLS_DHFILE: + if ( lo->ldo_tls_dhfile ) LDAP_FREE( lo->ldo_tls_dhfile ); +- lo->ldo_tls_dhfile = arg ? LDAP_STRDUP( (char *) arg ) : NULL; ++ lo->ldo_tls_dhfile = (arg && *(char *)arg) ? LDAP_STRDUP( (char *) arg ) : NULL; + return 0; + case LDAP_OPT_X_TLS_CRLFILE: /* GnuTLS only */ + if ( lo->ldo_tls_crlfile ) LDAP_FREE( lo->ldo_tls_crlfile ); +- lo->ldo_tls_crlfile = arg ? LDAP_STRDUP( (char *) arg ) : NULL; ++ lo->ldo_tls_crlfile = (arg && *(char *)arg) ? LDAP_STRDUP( (char *) arg ) : NULL; + return 0; + case LDAP_OPT_X_TLS_REQUIRE_CERT: + if ( !arg ) return -1; +@@ -783,7 +783,7 @@ ldap_pvt_tls_set_option( LDAP *ld, int option, void *arg ) + #endif + case LDAP_OPT_X_TLS_CIPHER_SUITE: + if ( lo->ldo_tls_ciphersuite ) LDAP_FREE( lo->ldo_tls_ciphersuite ); +- lo->ldo_tls_ciphersuite = arg ? LDAP_STRDUP( (char *) arg ) : NULL; ++ lo->ldo_tls_ciphersuite = (arg && *(char *)arg) ? LDAP_STRDUP( (char *) arg ) : NULL; + return 0; + + case LDAP_OPT_X_TLS_PROTOCOL_MIN: +@@ -794,7 +794,7 @@ ldap_pvt_tls_set_option( LDAP *ld, int option, void *arg ) + if ( ld != NULL ) + return -1; + if ( lo->ldo_tls_randfile ) LDAP_FREE (lo->ldo_tls_randfile ); +- lo->ldo_tls_randfile = arg ? LDAP_STRDUP( (char *) arg ) : NULL; ++ lo->ldo_tls_randfile = (arg && *(char *)arg) ? LDAP_STRDUP( (char *) arg ) : NULL; + break; + case LDAP_OPT_X_TLS_NEWCTX: + if ( !arg ) return -1; diff --git a/server/openldap/files/fedora/openldap-tls-no-reuse-of-tls_session.patch b/server/openldap/files/fedora/openldap-tls-no-reuse-of-tls_session.patch new file mode 100644 index 0000000000..5c397d1ae3 --- /dev/null +++ b/server/openldap/files/fedora/openldap-tls-no-reuse-of-tls_session.patch @@ -0,0 +1,92 @@ +TLS: do not reuse tls_session if hostname check fails + +If multiple servers are specified, the connection to the first one succeeds, and the hostname verification fails, +*tls_session is not dropped, but reused when connecting to the second server. + +This is a problem with Mozilla NSS backend because another handshake cannot be performed on the same file descriptor. +From this reason, hostname checking was moved into ldap_int_tls_connect() before connection error handling. + +Author: Jan Vcelak +Upstream ITS: #7373 +Resolves: #852476 + +diff --git a/libraries/libldap/tls2.c b/libraries/libldap/tls2.c +index 10b993b..a3cd590 100644 +--- a/libraries/libldap/tls2.c ++++ b/libraries/libldap/tls2.c +@@ -320,7 +320,7 @@ update_flags( Sockbuf *sb, tls_session * ssl, int rc ) + */ + + static int +-ldap_int_tls_connect( LDAP *ld, LDAPConn *conn ) ++ldap_int_tls_connect( LDAP *ld, LDAPConn *conn, const char *host ) + { + Sockbuf *sb = conn->lconn_sb; + int err; +@@ -365,6 +365,10 @@ ldap_int_tls_connect( LDAP *ld, LDAPConn *conn ) + errno = WSAGetLastError(); + #endif + ++ if ( err == 0 ) { ++ err = ldap_pvt_tls_check_hostname( ld, ssl, host ); ++ } ++ + if ( err < 0 ) + { + char buf[256], *msg; +@@ -495,7 +499,15 @@ ldap_pvt_tls_check_hostname( LDAP *ld, void *s, const char *name_in ) + { + tls_session *session = s; + +- return tls_imp->ti_session_chkhost( ld, session, name_in ); ++ if (ld->ld_options.ldo_tls_require_cert != LDAP_OPT_X_TLS_NEVER && ++ ld->ld_options.ldo_tls_require_cert != LDAP_OPT_X_TLS_ALLOW) { ++ ld->ld_errno = tls_imp->ti_session_chkhost( ld, session, name_in ); ++ if (ld->ld_errno != LDAP_SUCCESS) { ++ return ld->ld_errno; ++ } ++ } ++ ++ return LDAP_SUCCESS; + } + + int +@@ -857,7 +869,7 @@ ldap_int_tls_start ( LDAP *ld, LDAPConn *conn, LDAPURLDesc *srv ) + #endif /* LDAP_USE_NON_BLOCKING_TLS */ + + ld->ld_errno = LDAP_SUCCESS; +- ret = ldap_int_tls_connect( ld, conn ); ++ ret = ldap_int_tls_connect( ld, conn, host ); + + #ifdef LDAP_USE_NON_BLOCKING_TLS + while ( ret > 0 ) { /* this should only happen for non-blocking io */ +@@ -878,7 +890,7 @@ ldap_int_tls_start ( LDAP *ld, LDAPConn *conn, LDAPURLDesc *srv ) + } else { + /* ldap_int_poll called ldap_pvt_ndelay_off */ + ber_sockbuf_ctrl( ld->ld_sb, LBER_SB_OPT_SET_NONBLOCK, sb ); +- ret = ldap_int_tls_connect( ld, conn ); ++ ret = ldap_int_tls_connect( ld, conn, host ); + if ( ret > 0 ) { /* need to call tls_connect once more */ + struct timeval curr_time_tv, delta_tv; + +@@ -935,20 +947,6 @@ ldap_int_tls_start ( LDAP *ld, LDAPConn *conn, LDAPURLDesc *srv ) + return (ld->ld_errno); + } + +- ssl = ldap_pvt_tls_sb_ctx( sb ); +- assert( ssl != NULL ); +- +- /* +- * compare host with name(s) in certificate +- */ +- if (ld->ld_options.ldo_tls_require_cert != LDAP_OPT_X_TLS_NEVER && +- ld->ld_options.ldo_tls_require_cert != LDAP_OPT_X_TLS_ALLOW) { +- ld->ld_errno = ldap_pvt_tls_check_hostname( ld, ssl, host ); +- if (ld->ld_errno != LDAP_SUCCESS) { +- return ld->ld_errno; +- } +- } +- + return LDAP_SUCCESS; + } + diff --git a/server/openldap/files/fedora/openldap-userconfig-setgid.patch b/server/openldap/files/fedora/openldap-userconfig-setgid.patch new file mode 100644 index 0000000000..8b9be3014a --- /dev/null +++ b/server/openldap/files/fedora/openldap-userconfig-setgid.patch @@ -0,0 +1,92 @@ + + + +openldap.git - openldap + + + + + + +
+ + + + +
+summaryrefslogtreecommitdiffstats
+ + + +
+
+
blob: 70f0d28ecab7c4152aa414adde93e462179ba0f8 (plain) + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+
Normally, skips reading of user configuration file when running with different effective UID.
+This patch adds the same behavior for GID.
+
+Author: Nalin Dahyabhai <nalin@redhat.com>
+
+diff --git a/libraries/libldap/init.c b/libraries/libldap/init.c
+index e6b17b4..fbf4829 100644
+--- a/libraries/libldap/init.c
++++ b/libraries/libldap/init.c
+@@ -678,7 +678,7 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl )
+ 	openldap_ldap_init_w_sysconf(LDAP_CONF_FILE);
+ 
+ #ifdef HAVE_GETEUID
+-	if ( geteuid() != getuid() )
++	if ( geteuid() != getuid() || getegid() != getgid() )
+ 		return;
+ #endif
+ 
+
+
+ +
+ + diff --git a/server/openldap/files/gencert.sh b/server/openldap/files/gencert.sh new file mode 100644 index 0000000000..d8f74ff21f --- /dev/null +++ b/server/openldap/files/gencert.sh @@ -0,0 +1,111 @@ +#!/bin/sh +# Last update 20050401 - Christian Zoffoli + +VERSION="0.3" +openssl="/usr/bin/openssl" +opensslopts="" +ldapconfdir="/etc/openldap/ssl" +pemfile="${ldapconfdir}/ldap.pem" +randfile="${ldapconfdir}/ldap.rand" +cfgfile="${ldapconfdir}/ldap.cfg" + +function fixperms { + chown root:ldap ${ldapconfdir} -R + find ${ldapconfdir} -type f -exec chmod 640 \{\} \; + chmod 750 ${ldapconfdir} +} + + +if [ ! -x ${openssl} ]; then + exit 0 +fi + +if [ ! -d ${ldapconfdir} ]; then + mkdir -p ${ldapconfdir} +fi + +fixperms + +if [ -f ${pemfile} ]; then + echo "${pemfile} already exist, dying" + exit 0 +fi + + +dd if=/dev/urandom of=$randfile count=1 2>/dev/null + +echo "" +echo "______________________________________________________________________${T_ME}" +echo "" +echo "Creating self-signed certificate -- Version ${VERSION}" +echo "" +echo "______________________________________________________________________${T_ME}" +echo "" + + +COMMONNAME=`hostname` +if [ ! -n "$COMMONNAME" ]; then + COMMONNAME="www.openldap.org" +fi + + +if [ -f ${cfgfile} ]; then + echo "${cfgfile} found, would you like to use it ? (y/n)" + read answer + + case "$answer" in + y|Y) + opensslopts="-batch" + ;; + n|N) + cat >${cfgfile} <&2 + exit 1 +else + echo -e "\nCertificate creation done!" +fi + +if [ -f ${randfile} ]; then + rm -f ${randfile} +fi + +if [ -f ${pemfile} ]; then + fixperms +fi diff --git a/server/openldap/files/openldap-2.4.39-blfs_paths-1.patch b/server/openldap/files/openldap-2.4.39-blfs_paths-1.patch new file mode 100644 index 0000000000..5102904788 --- /dev/null +++ b/server/openldap/files/openldap-2.4.39-blfs_paths-1.patch @@ -0,0 +1,188 @@ +Submitted By: Armin K. +Date: 2012-04-06 +Initial Package Version: 2.4.30 +Upstream Status: BLFS Specific +Origin: Self +Description: Patch changes various installation options, such as ldap database path, + configuration file options, slapd install location, etc. + +--- openldap.orig/doc/man/man5/slapd-bdb.5 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/doc/man/man5/slapd-bdb.5 2012-04-06 00:18:54.171136608 +0200 +@@ -131,7 +131,7 @@ + associated indexes live. + A separate directory must be specified for each database. + The default is +-.BR LOCALSTATEDIR/openldap\-data . ++.BR LOCALSTATEDIR/lib/openldap . + .TP + .B dirtyread + Allow reads of modified but not yet committed data. +--- openldap.orig/doc/man/man5/slapd.conf.5 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/doc/man/man5/slapd.conf.5 2012-04-06 00:18:54.174136671 +0200 +@@ -1987,7 +1987,7 @@ + # The database directory MUST exist prior to + # running slapd AND should only be accessible + # by the slapd/tools. Mode 0700 recommended. +-directory LOCALSTATEDIR/openldap\-data ++directory LOCALSTATEDIR/lib/openldap + # Indices to maintain + index objectClass eq + index cn,sn,mail pres,eq,approx,sub +--- openldap.orig/doc/man/man5/slapd-config.5 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/doc/man/man5/slapd-config.5 2012-04-06 00:18:54.194137078 +0200 +@@ -2029,7 +2029,7 @@ + # The database directory MUST exist prior to + # running slapd AND should only be accessible + # by the slapd/tools. Mode 0700 recommended. +-olcDbDirectory: LOCALSTATEDIR/openldap\-data ++olcDbDirectory: LOCALSTATEDIR/lib/openldap + # Indices to maintain + olcDbIndex: objectClass eq + olcDbIndex: cn,sn,mail pres,eq,approx,sub +--- openldap.orig/include/ldap_defaults.h 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/include/ldap_defaults.h 2012-04-06 00:18:54.200137199 +0200 +@@ -39,7 +39,7 @@ + #define LDAP_ENV_PREFIX "LDAP" + + /* default ldapi:// socket */ +-#define LDAPI_SOCK LDAP_RUNDIR LDAP_DIRSEP "run" LDAP_DIRSEP "ldapi" ++#define LDAPI_SOCK LDAP_RUNDIR LDAP_DIRSEP "run" LDAP_DIRSEP "openldap" LDAP_DIRSEP "ldapi" + + /* + * SLAPD DEFINITIONS +@@ -47,7 +47,7 @@ + /* location of the default slapd config file */ + #define SLAPD_DEFAULT_CONFIGFILE LDAP_SYSCONFDIR LDAP_DIRSEP "slapd.conf" + #define SLAPD_DEFAULT_CONFIGDIR LDAP_SYSCONFDIR LDAP_DIRSEP "slapd.d" +-#define SLAPD_DEFAULT_DB_DIR LDAP_RUNDIR LDAP_DIRSEP "openldap-data" ++#define SLAPD_DEFAULT_DB_DIR LDAP_RUNDIR LDAP_DIRSEP "lib" LDAP_DIRSEP "openldap" + #define SLAPD_DEFAULT_DB_MODE 0600 + #define SLAPD_DEFAULT_UCDATA LDAP_DATADIR LDAP_DIRSEP "ucdata" + /* default max deref depth for aliases */ +--- openldap.orig/libraries/liblber/Makefile.in 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/libraries/liblber/Makefile.in 2012-04-06 00:18:54.204137280 +0200 +@@ -48,6 +48,6 @@ + + install-local: FORCE + -$(MKDIR) $(DESTDIR)$(libdir) +- $(LTINSTALL) $(INSTALLFLAGS) -m 644 $(LIBRARY) $(DESTDIR)$(libdir) ++ $(LTINSTALL) $(INSTALLFLAGS) -m 755 $(LIBRARY) $(DESTDIR)$(libdir) + $(LTFINISH) $(DESTDIR)$(libdir) + +--- openldap.orig/libraries/libldap/Makefile.in 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/libraries/libldap/Makefile.in 2012-04-06 00:18:54.204137280 +0200 +@@ -68,7 +68,7 @@ + + install-local: $(CFFILES) FORCE + -$(MKDIR) $(DESTDIR)$(libdir) +- $(LTINSTALL) $(INSTALLFLAGS) -m 644 $(LIBRARY) $(DESTDIR)$(libdir) ++ $(LTINSTALL) $(INSTALLFLAGS) -m 755 $(LIBRARY) $(DESTDIR)$(libdir) + $(LTFINISH) $(DESTDIR)$(libdir) + -$(MKDIR) $(DESTDIR)$(sysconfdir) + @for i in $(CFFILES); do \ +--- openldap.orig/libraries/libldap_r/Makefile.in 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/libraries/libldap_r/Makefile.in 2012-04-06 00:18:54.208137362 +0200 +@@ -83,6 +83,6 @@ + + install-local: $(CFFILES) FORCE + -$(MKDIR) $(DESTDIR)$(libdir) +- $(LTINSTALL) $(INSTALLFLAGS) -m 644 $(LIBRARY) $(DESTDIR)$(libdir) ++ $(LTINSTALL) $(INSTALLFLAGS) -m 755 $(LIBRARY) $(DESTDIR)$(libdir) + $(LTFINISH) $(DESTDIR)$(libdir) + +--- openldap.orig/servers/slapd/Makefile.in 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/servers/slapd/Makefile.in 2012-04-06 00:18:54.208137362 +0200 +@@ -370,10 +370,10 @@ + install-conf install-db-config install-schema install-tools + + install-slapd: FORCE +- -$(MKDIR) $(DESTDIR)$(libexecdir) ++ -$(MKDIR) $(DESTDIR)$(sbindir) + -$(MKDIR) $(DESTDIR)$(localstatedir)/run + $(LTINSTALL) $(INSTALLFLAGS) $(STRIP) -m 755 \ +- slapd$(EXEEXT) $(DESTDIR)$(libexecdir) ++ slapd$(EXEEXT) $(DESTDIR)$(sbindir) + @for i in $(SUBDIRS); do \ + if test -d $$i && test -f $$i/Makefile ; then \ + echo; echo " cd $$i; $(MAKE) $(MFLAGS) install"; \ +@@ -439,9 +439,9 @@ + + install-db-config: FORCE + @-$(MKDIR) $(DESTDIR)$(localstatedir) $(DESTDIR)$(sysconfdir) +- @-$(INSTALL) -m 700 -d $(DESTDIR)$(localstatedir)/openldap-data ++ @-$(INSTALL) -m 700 -d $(DESTDIR)$(localstatedir)/lib/openldap + $(INSTALL) $(INSTALLFLAGS) -m 600 $(srcdir)/DB_CONFIG \ +- $(DESTDIR)$(localstatedir)/openldap-data/DB_CONFIG.example ++ $(DESTDIR)$(localstatedir)/lib/openldap/DB_CONFIG.example + $(INSTALL) $(INSTALLFLAGS) -m 600 $(srcdir)/DB_CONFIG \ + $(DESTDIR)$(sysconfdir)/DB_CONFIG.example + +@@ -449,6 +449,6 @@ + -$(MKDIR) $(DESTDIR)$(sbindir) + for i in $(SLAPTOOLS); do \ + $(RM) $(DESTDIR)$(sbindir)/$$i$(EXEEXT); \ +- $(LN_S) -f $(DESTDIR)$(libexecdir)/slapd$(EXEEXT) $(DESTDIR)$(sbindir)/$$i$(EXEEXT); \ ++ $(LN_S) -f $(DESTDIR)$(sbindir)/slapd$(EXEEXT) $(DESTDIR)$(sbindir)/$$i$(EXEEXT); \ + done + +--- openldap.orig/servers/slapd/slapd.conf 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/servers/slapd/slapd.conf 2012-04-06 00:21:12.891992222 +0200 +@@ -10,14 +10,12 @@ + # service AND an understanding of referrals. + #referral ldap://root.openldap.org + +-pidfile %LOCALSTATEDIR%/run/slapd.pid +-argsfile %LOCALSTATEDIR%/run/slapd.args ++pidfile %LOCALSTATEDIR%/run/openldap/slapd.pid ++argsfile %LOCALSTATEDIR%/run/openldap/slapd.args + + # Load dynamic backend modules: +-# modulepath %MODULEDIR% +-# moduleload back_bdb.la +-# moduleload back_hdb.la +-# moduleload back_ldap.la ++modulepath %MODULEDIR% ++moduleload back_bdb + + # Sample security restrictions + # Require integrity protection (prevent hijacking) +@@ -46,20 +44,26 @@ + # + # rootdn can always read and write EVERYTHING! + ++# Specific Backend Directives for bdb: ++backend bdb ++ + ####################################################################### + # BDB database definitions + ####################################################################### + + database bdb + suffix "dc=my-domain,dc=com" +-rootdn "cn=Manager,dc=my-domain,dc=com" ++#rootdn "cn=Manager,dc=my-domain,dc=com" ++ + # Cleartext passwords, especially for the rootdn, should + # be avoid. See slappasswd(8) and slapd.conf(5) for details. + # Use of strong authentication encouraged. +-rootpw secret ++#rootpw secret ++ + # The database directory MUST exist prior to running slapd AND + # should only be accessible by the slapd and slap tools. + # Mode 700 recommended. +-directory %LOCALSTATEDIR%/openldap-data ++directory %LOCALSTATEDIR%/lib/openldap ++ + # Indices to maintain + index objectClass eq +--- openldap.orig/servers/slapd/slapi/Makefile.in 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/servers/slapd/slapi/Makefile.in 2012-04-06 00:18:54.210137403 +0200 +@@ -46,6 +46,6 @@ + install-local: FORCE + if test "$(BUILD_MOD)" = "yes"; then \ + $(MKDIR) $(DESTDIR)$(libdir); \ +- $(LTINSTALL) $(INSTALLFLAGS) -m 644 $(LIBRARY) $(DESTDIR)$(libdir); \ ++ $(LTINSTALL) $(INSTALLFLAGS) -m 755 $(LIBRARY) $(DESTDIR)$(libdir); \ + fi + diff --git a/server/openldap/files/openldap-2.4.39-ntlm-1.patch b/server/openldap/files/openldap-2.4.39-ntlm-1.patch new file mode 100644 index 0000000000..ae981ebca5 --- /dev/null +++ b/server/openldap/files/openldap-2.4.39-ntlm-1.patch @@ -0,0 +1,219 @@ +Submitted By: Armin K. +Date: 2012-04-06 +Initial Package Version: 2.4.30 +Upstream Status: Unknown +Origin: Debian +Description: Patch from evolution-exchange (2.10.3). The ldap_ntlm_bind function is + actually called by evolution-data-server, checked at version 1.12.2. + Without this patch, the Exchange addressbook integration uses simple binds + with cleartext passwords. + +--- openldap.orig/include/ldap.h 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/include/ldap.h 2012-04-01 00:20:00.059827789 +0200 +@@ -2517,5 +2517,25 @@ + LDAPControl **ctrls, + LDAPDerefRes **drp )); + ++/* ++ * hacks for NTLM ++ */ ++#define LDAP_AUTH_NTLM_REQUEST ((ber_tag_t) 0x8aU) ++#define LDAP_AUTH_NTLM_RESPONSE ((ber_tag_t) 0x8bU) ++LDAP_F( int ) ++ldap_ntlm_bind LDAP_P(( ++ LDAP *ld, ++ LDAP_CONST char *dn, ++ ber_tag_t tag, ++ struct berval *cred, ++ LDAPControl **sctrls, ++ LDAPControl **cctrls, ++ int *msgidp )); ++LDAP_F( int ) ++ldap_parse_ntlm_bind_result LDAP_P(( ++ LDAP *ld, ++ LDAPMessage *res, ++ struct berval *challenge)); ++ + LDAP_END_DECL + #endif /* _LDAP_H */ +--- openldap.orig/libraries/libldap/Makefile.in 2012-04-01 00:18:54.233419658 +0200 ++++ openldap/libraries/libldap/Makefile.in 2012-04-01 00:20:00.060827810 +0200 +@@ -27,7 +27,7 @@ + init.c options.c print.c string.c util-int.c schema.c \ + charray.c os-local.c dnssrv.c utf-8.c utf-8-conv.c \ + tls2.c tls_o.c tls_g.c tls_m.c \ +- turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c \ ++ turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c ntlm.c \ + assertion.c deref.c ldif.c fetch.c + + OBJS = bind.lo open.lo result.lo error.lo compare.lo search.lo \ +@@ -40,7 +40,7 @@ + init.lo options.lo print.lo string.lo util-int.lo schema.lo \ + charray.lo os-local.lo dnssrv.lo utf-8.lo utf-8-conv.lo \ + tls2.lo tls_o.lo tls_g.lo tls_m.lo \ +- turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo \ ++ turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo ntlm.lo \ + assertion.lo deref.lo ldif.lo fetch.lo + + LDAP_INCDIR= ../../include +--- openldap.orig/libraries/libldap/ntlm.c 1970-01-01 01:00:00.000000000 +0100 ++++ openldap/libraries/libldap/ntlm.c 2012-04-01 00:20:00.059827789 +0200 +@@ -0,0 +1,138 @@ ++/* $OpenLDAP: pkg/ldap/libraries/libldap/ntlm.c,v 1.1.4.10 2002/01/04 20:38:21 kurt Exp $ */ ++/* ++ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. ++ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file ++ */ ++ ++/* Mostly copied from sasl.c */ ++ ++#include "portable.h" ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "ldap-int.h" ++ ++int ++ldap_ntlm_bind( ++ LDAP *ld, ++ LDAP_CONST char *dn, ++ ber_tag_t tag, ++ struct berval *cred, ++ LDAPControl **sctrls, ++ LDAPControl **cctrls, ++ int *msgidp ) ++{ ++ BerElement *ber; ++ int rc; ++ ber_int_t id; ++ ++ Debug( LDAP_DEBUG_TRACE, "ldap_ntlm_bind\n", 0, 0, 0 ); ++ ++ assert( ld != NULL ); ++ assert( LDAP_VALID( ld ) ); ++ assert( msgidp != NULL ); ++ ++ if( msgidp == NULL ) { ++ ld->ld_errno = LDAP_PARAM_ERROR; ++ return ld->ld_errno; ++ } ++ ++ /* create a message to send */ ++ if ( (ber = ldap_alloc_ber_with_options( ld )) == NULL ) { ++ ld->ld_errno = LDAP_NO_MEMORY; ++ return ld->ld_errno; ++ } ++ ++ assert( LBER_VALID( ber ) ); ++ ++ LDAP_NEXT_MSGID( ld, id ); ++ rc = ber_printf( ber, "{it{istON}" /*}*/, ++ id, LDAP_REQ_BIND, ++ ld->ld_version, dn, tag, ++ cred ); ++ ++ /* Put Server Controls */ ++ if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) { ++ ber_free( ber, 1 ); ++ return ld->ld_errno; ++ } ++ ++ if ( ber_printf( ber, /*{*/ "N}" ) == -1 ) { ++ ld->ld_errno = LDAP_ENCODING_ERROR; ++ ber_free( ber, 1 ); ++ return ld->ld_errno; ++ } ++ ++ /* send the message */ ++ *msgidp = ldap_send_initial_request( ld, LDAP_REQ_BIND, dn, ber, id ); ++ ++ if(*msgidp < 0) ++ return ld->ld_errno; ++ ++ return LDAP_SUCCESS; ++} ++ ++int ++ldap_parse_ntlm_bind_result( ++ LDAP *ld, ++ LDAPMessage *res, ++ struct berval *challenge) ++{ ++ ber_int_t errcode; ++ ber_tag_t tag; ++ BerElement *ber; ++ ber_len_t len; ++ ++ Debug( LDAP_DEBUG_TRACE, "ldap_parse_ntlm_bind_result\n", 0, 0, 0 ); ++ ++ assert( ld != NULL ); ++ assert( LDAP_VALID( ld ) ); ++ assert( res != NULL ); ++ ++ if ( ld == NULL || res == NULL ) { ++ return LDAP_PARAM_ERROR; ++ } ++ ++ if( res->lm_msgtype != LDAP_RES_BIND ) { ++ ld->ld_errno = LDAP_PARAM_ERROR; ++ return ld->ld_errno; ++ } ++ ++ if ( ld->ld_error ) { ++ LDAP_FREE( ld->ld_error ); ++ ld->ld_error = NULL; ++ } ++ if ( ld->ld_matched ) { ++ LDAP_FREE( ld->ld_matched ); ++ ld->ld_matched = NULL; ++ } ++ ++ /* parse results */ ++ ++ ber = ber_dup( res->lm_ber ); ++ ++ if( ber == NULL ) { ++ ld->ld_errno = LDAP_NO_MEMORY; ++ return ld->ld_errno; ++ } ++ ++ tag = ber_scanf( ber, "{ioa" /*}*/, ++ &errcode, challenge, &ld->ld_error ); ++ ber_free( ber, 0 ); ++ ++ if( tag == LBER_ERROR ) { ++ ld->ld_errno = LDAP_DECODING_ERROR; ++ return ld->ld_errno; ++ } ++ ++ ld->ld_errno = errcode; ++ ++ return( ld->ld_errno ); ++} ++ +--- openldap.orig/libraries/libldap_r/Makefile.in 2012-04-01 00:18:54.234419703 +0200 ++++ openldap/libraries/libldap_r/Makefile.in 2012-04-01 00:20:00.060827810 +0200 +@@ -29,7 +29,7 @@ + init.c options.c print.c string.c util-int.c schema.c \ + charray.c os-local.c dnssrv.c utf-8.c utf-8-conv.c \ + tls2.c tls_o.c tls_g.c tls_m.c \ +- turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c \ ++ turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c ntlm.c \ + assertion.c deref.c ldif.c fetch.c + SRCS = threads.c rdwr.c rmutex.c tpool.c rq.c \ + thr_posix.c thr_cthreads.c thr_thr.c thr_nt.c \ +@@ -47,7 +47,7 @@ + init.lo options.lo print.lo string.lo util-int.lo schema.lo \ + charray.lo os-local.lo dnssrv.lo utf-8.lo utf-8-conv.lo \ + tls2.lo tls_o.lo tls_g.lo tls_m.lo \ +- turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo \ ++ turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo ntlm.lo \ + assertion.lo deref.lo ldif.lo fetch.lo + + LDAP_INCDIR= ../../include diff --git a/server/openldap/files/openldap-2.4.39-symbol_versions-1.patch b/server/openldap/files/openldap-2.4.39-symbol_versions-1.patch new file mode 100644 index 0000000000..f393f01b1d --- /dev/null +++ b/server/openldap/files/openldap-2.4.39-symbol_versions-1.patch @@ -0,0 +1,160 @@ +Submitted By: Armin K. +Date: 2012-04-06 +Initial Package Version: 2.4.30 +Upstream Status: Unknown +Origin: Debian +Description: This patch enables symbol versioning in ldap libraries. Without this + patch some applications might generate a warning about missing symbol + versions. + +--- openldap.orig/build/openldap.m4 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/build/openldap.m4 2012-04-01 17:29:50.973881411 +0200 +@@ -1136,3 +1136,54 @@ + #endif + ], [ol_cv_ssl_crl_compat=yes], [ol_cv_ssl_crl_compat=no])]) + ]) ++ ++dnl ==================================================================== ++dnl check for symbol versioning support ++AC_DEFUN([OL_SYMBOL_VERSIONING], ++[AC_CACHE_CHECK([for .symver assembler directive], ++ [ol_cv_asm_symver_directive],[ ++cat > conftest.s <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then ++ ol_cv_asm_symver_directive=yes ++else ++ ol_cv_asm_symver_directive=no ++fi ++rm -f conftest*]) ++AC_CACHE_CHECK([for ld --version-script], ++ [ol_cv_ld_version_script_option],[ ++if test $ol_cv_asm_symver_directive = yes; then ++ cat > conftest.s < conftest.map <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then ++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared ++ -o conftest.so conftest.o ++ -Wl,--version-script,conftest.map ++ 1>&AS_MESSAGE_LOG_FD]); ++ then ++ ol_cv_ld_version_script_option=yes ++ else ++ ol_cv_ld_version_script_option=no ++ fi ++ else ++ ol_cv_ld_version_script_option=no ++ fi ++else ++ ol_cv_ld_version_script_option=no ++fi ++rm -f conftest*])]) +--- openldap.orig/build/top.mk 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/build/top.mk 2012-04-01 17:29:50.972881390 +0200 +@@ -104,6 +104,9 @@ + # LINK_LIBS referenced in library and module link commands. + LINK_LIBS = $(MOD_LIBS) $(@PLAT@_LINK_LIBS) + ++# option to pass to $(CC) to support library symbol versioning, if any ++VERSION_OPTION = @VERSION_OPTION@ ++ + LTSTATIC = @LTSTATIC@ + + LTLINK = $(LIBTOOL) --mode=link \ +@@ -113,7 +116,7 @@ + $(CC) $(LT_CFLAGS) $(LT_CPPFLAGS) $(LIB_DEFS) -c + + LTLINK_LIB = $(LIBTOOL) $(LTONLY_LIB) --mode=link \ +- $(CC) $(LT_CFLAGS) $(LDFLAGS) $(LTFLAGS_LIB) ++ $(CC) $(LT_CFLAGS) $(LDFLAGS) $(LTFLAGS_LIB) $(VERSION_FLAGS) + + LTCOMPILE_MOD = $(LIBTOOL) $(LTONLY_MOD) --mode=compile \ + $(CC) $(LT_CFLAGS) $(LT_CPPFLAGS) $(MOD_DEFS) -c +--- openldap.orig/configure.in 2012-02-29 18:37:09.000000000 +0100 ++++ openldap/configure.in 2012-04-01 17:29:50.981881580 +0200 +@@ -1907,6 +1907,13 @@ + fi + AC_SUBST(LTSTATIC)dnl + ++VERSION_OPTION="" ++OL_SYMBOL_VERSIONING ++if test $ol_cv_ld_version_script_option = yes ; then ++ VERSION_OPTION="-Wl,--version-script=" ++fi ++AC_SUBST(VERSION_OPTION) ++ + dnl ---------------------------------------------------------------- + if test $ol_enable_wrappers != no ; then + AC_CHECK_HEADERS(tcpd.h,[ +--- openldap.orig/libraries/liblber/liblber.map 1970-01-01 01:00:00.000000000 +0100 ++++ openldap/libraries/liblber/liblber.map 2012-04-01 17:29:50.983881622 +0200 +@@ -0,0 +1,8 @@ ++OPENLDAP_2.4_2 { ++ global: ++ ber_*; ++ der_alloc; ++ lutil_*; ++ local: ++ *; ++}; +--- openldap.orig/libraries/liblber/Makefile.in 2012-04-01 17:27:12.042526978 +0200 ++++ openldap/libraries/liblber/Makefile.in 2012-04-01 17:29:50.982881601 +0200 +@@ -38,6 +38,9 @@ + XXLIBS = + NT_LINK_LIBS = $(AC_LIBS) + UNIX_LINK_LIBS = $(AC_LIBS) ++ifneq (,$(VERSION_OPTION)) ++ VERSION_FLAGS = "$(VERSION_OPTION)$(srcdir)/liblber.map" ++endif + + dtest: $(XLIBS) dtest.o + $(LTLINK) -o $@ dtest.o $(LIBS) +--- openldap.orig/libraries/libldap/libldap.map 1970-01-01 01:00:00.000000000 +0100 ++++ openldap/libraries/libldap/libldap.map 2012-04-01 17:29:50.981881580 +0200 +@@ -0,0 +1,7 @@ ++OPENLDAP_2.4_2 { ++ global: ++ ldap_*; ++ ldif_*; ++ local: ++ *; ++}; +--- openldap.orig/libraries/libldap/Makefile.in 2012-04-01 17:27:12.043527000 +0200 ++++ openldap/libraries/libldap/Makefile.in 2012-04-01 17:29:50.982881601 +0200 +@@ -52,6 +52,9 @@ + XXLIBS = $(SECURITY_LIBS) $(LUTIL_LIBS) + NT_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) + UNIX_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) ++ifneq (,$(VERSION_OPTION)) ++ VERSION_FLAGS = $(VERSION_OPTION)$(srcdir)/libldap.map ++endif + + apitest: $(XLIBS) apitest.o + $(LTLINK) -o $@ apitest.o $(LIBS) +--- openldap.orig/libraries/libldap_r/Makefile.in 2012-04-01 17:27:12.043527000 +0200 ++++ openldap/libraries/libldap_r/Makefile.in 2012-04-01 17:29:50.971881369 +0200 +@@ -61,6 +61,9 @@ + XXXLIBS = $(LTHREAD_LIBS) + NT_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) + UNIX_LINK_LIBS = $(LDAP_LIBLBER_LA) $(AC_LIBS) $(SECURITY_LIBS) $(LTHREAD_LIBS) ++ifneq (,$(VERSION_OPTION)) ++ VERSION_FLAGS = "$(VERSION_OPTION)$(XXDIR)/libldap.map" ++endif + + .links : Makefile + @for i in $(XXSRCS); do \ diff --git a/server/openldap/files/slapd.conf b/server/openldap/files/slapd.conf new file mode 100644 index 0000000000..94cc57adc6 --- /dev/null +++ b/server/openldap/files/slapd.conf @@ -0,0 +1,9 @@ +# conf.d file for openldap +# +# To enable both the standard unciphered server and the ssl encrypted +# one uncomment this line or set any other server starting options +# you may desire. +# +# OPTS="-h 'ldaps:// ldap:// ldapi://%2frun%2fopenldap%2fslapd.sock'" +# Uncomment the below to use the new slapd configuration for openldap 2.3 +OPTS="-h 'ldaps:// ldap:// ldapi://%2frun%2fopenldap%2fslapd.sock'" diff --git a/server/openldap/files/tmpfiles.conf b/server/openldap/files/tmpfiles.conf new file mode 100644 index 0000000000..cdcb10d03a --- /dev/null +++ b/server/openldap/files/tmpfiles.conf @@ -0,0 +1 @@ +d /run/openldap 0755 ldap ldap - - \ No newline at end of file diff --git a/server/openldap/pspec.xml b/server/openldap/pspec.xml new file mode 100644 index 0000000000..61d95fde56 --- /dev/null +++ b/server/openldap/pspec.xml @@ -0,0 +1,166 @@ + + + + + openldap + http://www.openldap.org + + PisiLinux Community + admins@pisilinux.org + + OPENLDAP + Open-source suite of LDAP applications and development tools + OpenLDAP is an open-source suite of LDAP (Lightweight Directory Access Protocol) applications and development tools + ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.41.tgz + + nss-devel + db-devel + tcp-wrappers-devel + + libtool-ltdl + + + openldap-2.4.39-blfs_paths-1.patch + openldap-2.4.39-symbol_versions-1.patch + openldap-2.4.39-ntlm-1.patch + fedora/openldap-sql-linking.patch + fedora/openldap-reentrant-gethostby.patch + fedora/openldap-ldaprc-currentdir.patch + fedora/openldap-userconfig-setgid.patch + + fedora/openldap-syncrepl-unset-tls-options.patch + fedora/openldap-nss-update-list-of-ciphers.patch + fedora/openldap-tls-no-reuse-of-tls_session.patch + fedora/openldap-nss-regex-search-hashed-cacert-dir.patch + fedora/openldap-nss-ignore-certdb-type-prefix.patch + fedora/openldap-nss-certs-from-certdb-fallback-pem.patch + fedora/openldap-nss-pk11-freeslot.patch + fedora/openldap-switch-to-lt_dlopenadvise-to-get-RTLD_GLOBAL-set.patch + fedora/openldap-ldapi-sasl.patch + fedora/openldap-autoconf-pkgconfig-nss.patch + + + + + openldap-client + library + app:console + Command-line ldap client commands (ldapsearch, ldapadd etc..) + + nss + + + + /etc/openldap/ldap.conf* + /usr/include + /usr/bin + /usr/lib + /usr/share/man/man1 + /usr/share/man/man5/ldap.conf.5 + + + + + openldap-server + service + OpenLDAP server slapd and releated tools + OpenLDAP server slapd, additional backends, configuration files, schema definitions required for operation, and database maintenance tools + + nss + cyrus-sasl + openldap-client + + + /etc/conf.d + /etc/openldap + /usr/lib/tmpfiles.d/openldap-server.conf + /usr/sbin + /usr/libexec + /usr/share/man/man3 + /usr/share/man/man5 + /usr/share/man/man8 + /usr/share/doc + /var/lib + /run/openldap + + + tmpfiles.conf + slapd.conf + gencert.sh + + + System.Package + System.Service + + + + + openldap-32bit + emul32 + 32-bit shared libraries for openldap + emul32 + + openssl-32bit + libtool-ltdl-32bit + + + openssl-32bit + openldap-client + + + /usr/lib32 + + + + + + 2015-07-01 + 2.4.41 + Release bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-17 + 2.4.39 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-02-03 + 2.4.39 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-09 + 2.4.38 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-20 + 2.4.33 + ignore cyrus + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2012-09-19 + 2.4.33 + First release + PisiLinux Community + admins@pisilinux.org + + + 2012-09-19 + 2.4.32 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + diff --git a/server/openldap/translations.xml b/server/openldap/translations.xml new file mode 100644 index 0000000000..c95463a4ee --- /dev/null +++ b/server/openldap/translations.xml @@ -0,0 +1,13 @@ + + + + openldap + LDAP uygulamaları ve geliştirme araçları + LDAP hizmeti için gereken uygulamalar ve geliştirme araçlarını içerir + + + + openldap-32bit + openldap için 32-bit paylaşımlı kitaplıklar + + diff --git a/util/crypt/nss/pspec.xml b/util/crypt/nss/pspec.xml index c76c168577..d6d9937737 100644 --- a/util/crypt/nss/pspec.xml +++ b/util/crypt/nss/pspec.xml @@ -24,6 +24,8 @@ nspr-devel + sqlite-devel + zlib-devel nss-3.18.1-standalone-1.patch From 2a17d9368d3beefa6acf2aa2c92cb9f0cea008d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 16:34:31 +0300 Subject: [PATCH 067/175] cyrus-sasl cause circle dep --- server/openldap/actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/openldap/actions.py b/server/openldap/actions.py index 3623aae981..de83f14301 100644 --- a/server/openldap/actions.py +++ b/server/openldap/actions.py @@ -51,7 +51,7 @@ def setup(): --enable-proctitle \ --enable-overlays=mod \ --with-pic \ - --with-cyrus-sasl \ + --without-cyrus-sasl \ --with-threads \ --without-fetch \ --enable-crypt \ From 5bae0bd55d7ad6d9d9e8431ebf9772a0f48dec09 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 15:47:55 +0200 Subject: [PATCH 068/175] plasma-desktop version bump and check --- desktop/kde/plasma/plasma-desktop/actions.py | 19 +++ desktop/kde/plasma/plasma-desktop/pspec.xml | 132 +++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 desktop/kde/plasma/plasma-desktop/actions.py create mode 100755 desktop/kde/plasma/plasma-desktop/pspec.xml diff --git a/desktop/kde/plasma/plasma-desktop/actions.py b/desktop/kde/plasma/plasma-desktop/actions.py new file mode 100644 index 0000000000..05ee11b37a --- /dev/null +++ b/desktop/kde/plasma/plasma-desktop/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("HACKING", "COPYING") diff --git a/desktop/kde/plasma/plasma-desktop/pspec.xml b/desktop/kde/plasma/plasma-desktop/pspec.xml new file mode 100755 index 0000000000..84c7561591 --- /dev/null +++ b/desktop/kde/plasma/plasma-desktop/pspec.xml @@ -0,0 +1,132 @@ + + + + + plasma-desktop + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 plasma workspace + This package contains the basic packages for a Plasma workspace. + http://download.kde.org/stable/plasma/5.3.2/plasma-desktop-5.3.2.tar.xz + + qt5-base-devel + boost-devel + kdoctools-devel + kio-devel + libX11-devel + libgcc + libxcb-devel + freetype-devel + libusb-compat-devel + xorg-server-devel + xorg-input-evdev-devel + xorg-input-synaptics-devel + extra-cmake-modules + + + + + plasma-desktop + + qt5-base + kio + libX11 + libgcc + libxcb + freetype + libusb-compat + kf5-baloo + libxkbfile + kconfigwidgets + kwindowsystem + kpeople + knotifications + kwin + kwindowsystem + knotifyconfig + libcanberra + sonnet + powerdevil + system-settings + libXi+ + libXft + qt5-svg + libXfixes + fontconfig + kauth + ki18n + solid + libXcursor + qt5-phonon + kparts + kcodecs + kconfig + krunner + kwallet + kxmlgui + karchive + kcmutils + kservice + qt5-x11extras + knewstuff + xcb-util-image + kbookmarks + kemoticons + kguiaddons + kitemviews + pulseaudio-libs + qt5-declarative + kf5-kactivities + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + kjobwidgets + kdeclarative + kglobalaccel + kwidgetsaddons + kdelibs4-support + plasma-framework + plasma-workspace + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kcm-touchpad-frameworks + + + kcm-touchpad-frameworks, kdebase-workspace + + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-29 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 9c0c5416188d90678b8add1595d8ff9b3a4f56c7 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 15:53:54 +0200 Subject: [PATCH 069/175] kwrited version bump and check --- desktop/kde/plasma/kwrited/actions.py | 19 +++++++ desktop/kde/plasma/kwrited/pspec.xml | 71 +++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 desktop/kde/plasma/kwrited/actions.py create mode 100755 desktop/kde/plasma/kwrited/pspec.xml diff --git a/desktop/kde/plasma/kwrited/actions.py b/desktop/kde/plasma/kwrited/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/kwrited/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/kwrited/pspec.xml b/desktop/kde/plasma/kwrited/pspec.xml new file mode 100755 index 0000000000..741843fbaf --- /dev/null +++ b/desktop/kde/plasma/kwrited/pspec.xml @@ -0,0 +1,71 @@ + + + + + kwrited + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 daemon listening for wall and write messages + KDE5 daemon listening for wall and write messages + http://download.kde.org/stable/plasma/5.3.2/kwrited-5.3.2.tar.xz + + qt5-base-devel + ki18n-devel + kdoctools-devel + kcoreaddons-devel + knotifications-devel + kpty-devel + libgcc + kdelibs4-support-devel + kdbusaddons-devel + extra-cmake-modules + + + + + kwrited + + qt5-base + kpty + libgcc + kcoreaddons + knotifications + kdbusaddons + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-14 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 0d284c018a990ad86b05da15e3d13aa916803680 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 16:04:58 +0200 Subject: [PATCH 070/175] khotkeys version bump and check --- desktop/kde/plasma/khotkeys/actions.py | 19 +++++ desktop/kde/plasma/khotkeys/pspec.xml | 104 +++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 desktop/kde/plasma/khotkeys/actions.py create mode 100755 desktop/kde/plasma/khotkeys/pspec.xml diff --git a/desktop/kde/plasma/khotkeys/actions.py b/desktop/kde/plasma/khotkeys/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/khotkeys/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/khotkeys/pspec.xml b/desktop/kde/plasma/khotkeys/pspec.xml new file mode 100755 index 0000000000..f0a7f1adf1 --- /dev/null +++ b/desktop/kde/plasma/khotkeys/pspec.xml @@ -0,0 +1,104 @@ + + + + + khotkeys + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 hotkey daemon + KDE hotkey daemon module allows you to configure custom keyboard shortcuts and mouse gestures. + http://download.kde.org/stable/plasma/5.3.2/khotkeys-5.3.2.tar.xz + + qt5-base-devel + python3 + kdoctools-devel + libgcc + libX11-devel + kconfig-devel + kservice-devel + qt5-x11extras-devel + kcompletion-devel + kcoreaddons-devel + ktextwidgets-devel + kwindowsystem-devel + kconfigwidgets-devel + kwidgetsaddons-devel + kcmutils-devel + kdbusaddons-devel + kdelibs4-support-devel + kglobalaccel-devel + ki18n-devel + kio-devel + kxmlgui-devel + plasma-framework-devel + plasma-workspace-devel + libgcc + extra-cmake-modules + + + + + khotkeys + + qt5-base + kconfig + libgcc + libX11 + kservice + qt5-x11extras + kcompletion + kcoreaddons + ktextwidgets + kwindowsystem + kconfigwidgets + kwidgetsaddons + kcmutils + kdbusaddons + kdelibs4-support + kglobalaccel + ki18n + kio + kxmlgui + plasma-framework + plasma-workspace + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-15 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 48e3c65f5b5eb7c9d01ddccf725e575313fee2d0 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 16:07:17 +0200 Subject: [PATCH 071/175] plasma-desktop remove unused dependency --- desktop/kde/plasma/plasma-desktop/pspec.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/kde/plasma/plasma-desktop/pspec.xml b/desktop/kde/plasma/plasma-desktop/pspec.xml index 84c7561591..47cebdb11d 100755 --- a/desktop/kde/plasma/plasma-desktop/pspec.xml +++ b/desktop/kde/plasma/plasma-desktop/pspec.xml @@ -82,7 +82,7 @@ kitemviews pulseaudio-libs qt5-declarative - kf5-kactivities + kactivities kcompletion kcoreaddons kdbusaddons From 17f929152327c0a546aa10fcaa6941ed9a6d9147 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 16:13:53 +0200 Subject: [PATCH 072/175] milou version bump and check --- desktop/kde/plasma/milou/actions.py | 18 ++++++++ desktop/kde/plasma/milou/pspec.xml | 71 +++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 desktop/kde/plasma/milou/actions.py create mode 100755 desktop/kde/plasma/milou/pspec.xml diff --git a/desktop/kde/plasma/milou/actions.py b/desktop/kde/plasma/milou/actions.py new file mode 100644 index 0000000000..ccb7abe2b6 --- /dev/null +++ b/desktop/kde/plasma/milou/actions.py @@ -0,0 +1,18 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + diff --git a/desktop/kde/plasma/milou/pspec.xml b/desktop/kde/plasma/milou/pspec.xml new file mode 100755 index 0000000000..decce922d7 --- /dev/null +++ b/desktop/kde/plasma/milou/pspec.xml @@ -0,0 +1,71 @@ + + + + + milou + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDedicated search application built on top of Baloo + Dedicated search application built on top of Baloo + http://download.kde.org/stable/plasma/5.3.2/milou-5.3.2.tar.xz + + qt5-base-devel + qt5-declarative + python3 + libgcc + kdoctools-devel + kdeclarative-devel + ki18n-devel + krunner-devel + plasma-framework-devel + kconfig-devel + kservice-devel + kcoreaddons-devel + extra-cmake-modules + + + + + milou + + qt5-base + qt5-declarative + krunner + libgcc + kconfig + kservice + kcoreaddons + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-12 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From ec1c0fd2cdda3a60de43065bf5ebd4035af764fb Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 16:40:57 +0200 Subject: [PATCH 073/175] oxygen-themes version bump and check --- desktop/kde/plasma/oxygen-themes/actions.py | 19 +++++ desktop/kde/plasma/oxygen-themes/pspec.xml | 84 +++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 desktop/kde/plasma/oxygen-themes/actions.py create mode 100755 desktop/kde/plasma/oxygen-themes/pspec.xml diff --git a/desktop/kde/plasma/oxygen-themes/actions.py b/desktop/kde/plasma/oxygen-themes/actions.py new file mode 100644 index 0000000000..56638b7e32 --- /dev/null +++ b/desktop/kde/plasma/oxygen-themes/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/oxygen-themes/pspec.xml b/desktop/kde/plasma/oxygen-themes/pspec.xml new file mode 100755 index 0000000000..66f7a7278f --- /dev/null +++ b/desktop/kde/plasma/oxygen-themes/pspec.xml @@ -0,0 +1,84 @@ + + + + + oxygen-themes + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + KDE5 Oxygen themes + KDE5 Oxygen themes + http://download.kde.org/stable/plasma/5.3.2/oxygen-5.3.2.tar.xz + + qt5-base-devel + python3 + kdoctools-devel + libgcc + libxcb-devel + kdecorations-devel + frameworkintegration-devel + automoc4 + gettext + extra-cmake-modules + + + + + oxygen-themes + + qt5-base + python3 + ki18n + kconfig + libgcc + libxcb + kdecorations + qt5-x11extras + kguiaddons + kcompletion + kcoreaddons + kwindowsystem + kconfigwidgets + kwidgetsaddons + frameworkintegration + + + + /usr/share + /usr/share/locale + /usr/share/icons + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 12c3d3fd53b22f3bd99645b1d5da4576f956dc70 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 17:04:00 +0200 Subject: [PATCH 074/175] plasma-sdk version bump and check --- desktop/kde/plasma/plasma-sdk/actions.py | 19 ++++++ desktop/kde/plasma/plasma-sdk/pspec.xml | 81 ++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 desktop/kde/plasma/plasma-sdk/actions.py create mode 100755 desktop/kde/plasma/plasma-sdk/pspec.xml diff --git a/desktop/kde/plasma/plasma-sdk/actions.py b/desktop/kde/plasma/plasma-sdk/actions.py new file mode 100644 index 0000000000..ce3ebf2e23 --- /dev/null +++ b/desktop/kde/plasma/plasma-sdk/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING", "COPYING.LIB") diff --git a/desktop/kde/plasma/plasma-sdk/pspec.xml b/desktop/kde/plasma/plasma-sdk/pspec.xml new file mode 100755 index 0000000000..c2f4b229ae --- /dev/null +++ b/desktop/kde/plasma/plasma-sdk/pspec.xml @@ -0,0 +1,81 @@ + + + + + plasma-sdk + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + app:gui + Applications useful for Plasma development + Applications useful for Plasma development + http://download.kde.org/stable/plasma/5.3.2/plasma-sdk-5.3.2.tar.xz + + qt5-base-devel + qt5-webkit-devel + libgcc + extra-cmake-modules + + + + + + + plasma-sdk + + qt5-base + ktexteditor + plasma-framework + kio + libgcc + ki18n + kconfig + karchive + kpackage + kservice + qt5-declarative + kcompletion + kcoreaddons + kiconthemes + kdeclarative + kconfigwidgets + kwidgetsaddons + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-14 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From d0c982ef00cb54d8ab4e4c6b22970041b8bde149 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 17:14:52 +0200 Subject: [PATCH 075/175] plasma-mediacenter version bump and check --- .../kde/plasma/plasma-mediacenter/actions.py | 19 +++++ .../kde/plasma/plasma-mediacenter/pspec.xml | 69 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 desktop/kde/plasma/plasma-mediacenter/actions.py create mode 100755 desktop/kde/plasma/plasma-mediacenter/pspec.xml diff --git a/desktop/kde/plasma/plasma-mediacenter/actions.py b/desktop/kde/plasma/plasma-mediacenter/actions.py new file mode 100644 index 0000000000..81e02e04ae --- /dev/null +++ b/desktop/kde/plasma/plasma-mediacenter/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("COPYING", "COPYING.LIB", "LICENSE", "README", "ChangeLog") diff --git a/desktop/kde/plasma/plasma-mediacenter/pspec.xml b/desktop/kde/plasma/plasma-mediacenter/pspec.xml new file mode 100755 index 0000000000..8ae271ff15 --- /dev/null +++ b/desktop/kde/plasma/plasma-mediacenter/pspec.xml @@ -0,0 +1,69 @@ + + + + + plasma-mediacenter + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + GPLv2 + library + A mediacenter user interface based on KDE Plasma components + A mediacenter user interface based on KDE Plasma components + http://download.kde.org/stable/plasma/5.3.2/plasma-mediacenter-5.3.2.tar.xz + + qt5-base-devel + qt5-multimedia-devel + libgcc + kf5-kfilemetadata-devel + kf5-baloo-devel + extra-cmake-modules + + + + + plasma-mediacenter + + qt5-base + kf5-baloo + kf5-kfilemetadata + libgcc + kfilemetadata + kcoreaddons + qt5-declarative + kguiaddons + kservice + kconfig + ki18n + kio + taglib + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-18 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From 99f75b5e5df3c344b8f19bf84e86a8990f23c166 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 17:38:33 +0200 Subject: [PATCH 076/175] sddm rebuild and check --- desktop/kde/plasma/sddm/actions.py | 23 + desktop/kde/plasma/sddm/comar/package.py | 46 ++ desktop/kde/plasma/sddm/comar/service.py | 31 + desktop/kde/plasma/sddm/files/sddm | 18 + .../sddm/files/sddm-0.10.0-upower.patch | 12 + .../sddm/files/sddm-0.11.0-consolekit.patch | 13 + desktop/kde/plasma/sddm/files/sddm-autologin | 16 + desktop/kde/plasma/sddm/files/sddm-greeter | 11 + desktop/kde/plasma/sddm/files/sddm.conf | 84 ++ .../kde/plasma/sddm/files/sddm_upstream.patch | 746 ++++++++++++++++++ desktop/kde/plasma/sddm/files/sddm_y | 10 + desktop/kde/plasma/sddm/files/sddm_yedek | 18 + desktop/kde/plasma/sddm/pspec.xml | 78 ++ 13 files changed, 1106 insertions(+) create mode 100644 desktop/kde/plasma/sddm/actions.py create mode 100644 desktop/kde/plasma/sddm/comar/package.py create mode 100644 desktop/kde/plasma/sddm/comar/service.py create mode 100644 desktop/kde/plasma/sddm/files/sddm create mode 100644 desktop/kde/plasma/sddm/files/sddm-0.10.0-upower.patch create mode 100644 desktop/kde/plasma/sddm/files/sddm-0.11.0-consolekit.patch create mode 100644 desktop/kde/plasma/sddm/files/sddm-autologin create mode 100644 desktop/kde/plasma/sddm/files/sddm-greeter create mode 100644 desktop/kde/plasma/sddm/files/sddm.conf create mode 100644 desktop/kde/plasma/sddm/files/sddm_upstream.patch create mode 100644 desktop/kde/plasma/sddm/files/sddm_y create mode 100644 desktop/kde/plasma/sddm/files/sddm_yedek create mode 100755 desktop/kde/plasma/sddm/pspec.xml diff --git a/desktop/kde/plasma/sddm/actions.py b/desktop/kde/plasma/sddm/actions.py new file mode 100644 index 0000000000..7bb0bc98f8 --- /dev/null +++ b/desktop/kde/plasma/sddm/actions.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import cmaketools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +def setup(): + cmaketools.configure("-DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib/sddm \ + -DBUILD_MAN_PAGES=ON") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("COPYING") diff --git a/desktop/kde/plasma/sddm/comar/package.py b/desktop/kde/plasma/sddm/comar/package.py new file mode 100644 index 0000000000..152cbe045e --- /dev/null +++ b/desktop/kde/plasma/sddm/comar/package.py @@ -0,0 +1,46 @@ +#!/usr/bin/python + +import os, re +import shutil + +OUR_ID = 65 +OUR_NAME = "sddm" +OUR_DESC = "sddm" + +DATADIR = "/var/lib/sddm" +DATADIRMODE = 0755 + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + + # On first install... + if not os.path.exists(DATADIR): + os.makedirs(DATADIR, DATADIRMODE) + + try: + os.system ("groupadd -g %d %s" % (OUR_ID, OUR_NAME)) + os.system ("useradd -m -d /var/lib/sddm -r -s /bin/false -u %d -g %d %s -c %s" % (OUR_ID, OUR_ID, OUR_NAME, OUR_DESC)) + os.system ("passwd -l sddm > /dev/null") + os.system("/bin/chown -R sddm:sddm %s" % DATADIR) + except: + pass + +# os.system ("groupadd --system %s" % (OUR_NAME)) +# os.system ("useradd -c 'sddm' --system -d /var/lib/sddm -s /sbin/nologin -g %s %s" % (OUR_NAME, OUR_DESC)) + + + + # os.system("/bin/chown -R sddm:sddm /var/log/sddm.log") + + + +def postRemove(): + try: + os.system ("userdel %s" % OUR_NAME) + os.system ("groupdel %s" % OUR_NAME) + except: + pass + + + + + diff --git a/desktop/kde/plasma/sddm/comar/service.py b/desktop/kde/plasma/sddm/comar/service.py new file mode 100644 index 0000000000..058a771fec --- /dev/null +++ b/desktop/kde/plasma/sddm/comar/service.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +from comar.service import * +import os + +serviceType="server" +serviceDesc=_({"en": "sddm Server", + "tr": "sddm Sunucusu"}) +serviceDefault="on" +PIDFILE="/run/sddm/sddm.pid" +DAEMON="/usr/bin/sddm" + +@synchronized +def start(): + startService(command=DAEMON, + pidfile=PIDFILE, + detach=True, + donotify=True) + + +@synchronized +def stop(): + stopService(pidfile=PIDFILE, + donotify=True) + + try: + os.unlink(PIDFILE) + except OSError: + pass + +def status(): + return isServiceRunning(PIDFILE) diff --git a/desktop/kde/plasma/sddm/files/sddm b/desktop/kde/plasma/sddm/files/sddm new file mode 100644 index 0000000000..b66e9367cc --- /dev/null +++ b/desktop/kde/plasma/sddm/files/sddm @@ -0,0 +1,18 @@ +# Begin /etc/pam.d/sddm + +auth required pam_unix.so try_first_pass nullok +auth optional pam_permit.so +auth required pam_env.so + +account required pam_unix.so +account optional pam_permit.so +account required pam_time.so + +password required pam_unix.so try_first_pass nullok sha512 shadow +password optional pam_permit.so + +session required pam_limits.so +session required pam_unix.so +session optional pam_permit.so + +# End /etc/pam.d/sddm \ No newline at end of file diff --git a/desktop/kde/plasma/sddm/files/sddm-0.10.0-upower.patch b/desktop/kde/plasma/sddm/files/sddm-0.10.0-upower.patch new file mode 100644 index 0000000000..63daf89175 --- /dev/null +++ b/desktop/kde/plasma/sddm/files/sddm-0.10.0-upower.patch @@ -0,0 +1,12 @@ +diff -u -r sddm-0.9.0.orig/src/daemon/PowerManager.cpp sddm-0.9.0/src/daemon/PowerManager.cpp +--- sddm-0.9.0.orig/src/daemon/PowerManager.cpp 2014-10-01 18:40:37.402683578 +0200 ++++ sddm-0.9.0/src/daemon/PowerManager.cpp 2014-10-01 18:40:43.502618164 +0200 +@@ -197,7 +197,7 @@ + m_backends << new Login1Backend(); + + // check if upower interface exists +- if (interface->isServiceRegistered(UPOWER_SERVICE)) ++// if (interface->isServiceRegistered(UPOWER_SERVICE)) + m_backends << new UPowerBackend(); + } + \ No newline at end of file diff --git a/desktop/kde/plasma/sddm/files/sddm-0.11.0-consolekit.patch b/desktop/kde/plasma/sddm/files/sddm-0.11.0-consolekit.patch new file mode 100644 index 0000000000..9295d0ef82 --- /dev/null +++ b/desktop/kde/plasma/sddm/files/sddm-0.11.0-consolekit.patch @@ -0,0 +1,13 @@ +diff --git a/data/scripts/Xsession b/data/scripts/Xsession +index a5d270d..4b48524 100755 +--- a/data/scripts/Xsession ++++ b/data/scripts/Xsession +@@ -74,7 +74,7 @@ case $session in + exec xterm -geometry 80x24-0-0 + ;; + *) +- eval exec "$session" ++ eval exec ck-launch-session "$session" + ;; + esac + exec xmessage -center -buttons OK:0 -default OK "Sorry, cannot execute $session. Check $DESKTOP_SESSION.desktop." \ No newline at end of file diff --git a/desktop/kde/plasma/sddm/files/sddm-autologin b/desktop/kde/plasma/sddm/files/sddm-autologin new file mode 100644 index 0000000000..b24b3bf6cf --- /dev/null +++ b/desktop/kde/plasma/sddm/files/sddm-autologin @@ -0,0 +1,16 @@ +# Begin /etc/pam.d/sddm-autologin + +auth requisite pam_nologin.so +auth required pam_env.so + +auth required pam_succeed_if.so uid >= 1000 quiet +auth required pam_permit.so + +account include system-account + +password required pam_deny.so + +session required pam_limits.so +session include system-session + +# End /etc/pam.d/sddm-autologin \ No newline at end of file diff --git a/desktop/kde/plasma/sddm/files/sddm-greeter b/desktop/kde/plasma/sddm/files/sddm-greeter new file mode 100644 index 0000000000..b039ab5799 --- /dev/null +++ b/desktop/kde/plasma/sddm/files/sddm-greeter @@ -0,0 +1,11 @@ +# Begin /etc/pam.d/sddm-greeter + +auth required pam_env.so +auth required pam_permit.so + +account required pam_permit.so +password required pam_deny.so +session required pam_unix.so +-session optional pam_systemd.so + +# End /etc/pam.d/sddm-greeter \ No newline at end of file diff --git a/desktop/kde/plasma/sddm/files/sddm.conf b/desktop/kde/plasma/sddm/files/sddm.conf new file mode 100644 index 0000000000..311531317b --- /dev/null +++ b/desktop/kde/plasma/sddm/files/sddm.conf @@ -0,0 +1,84 @@ +[Autologin] +# Autologin again on session exit +Relogin=false + +# Autologin session +Session=plasma.desktop + +# Autologin user +User= + + +[General] +# Halt command +HaltCommand=/sbin/shutdown -h -P now + +# Initial NumLock state +# Valid values: on|off|none +# If property is set to none, numlock won't be changed +Numlock=none + +# Reboot command +RebootCommand=/sbin/shutdown -r now + + +[Theme] +# Current theme name +Current=maui + +# Cursor theme +CursorTheme=breeze + +# Face icon directory +# The files should be in username.face.icon format +FacesDir=/usr/share/sddm/faces + +# Theme directory path +ThemeDir=/usr/share/sddm/themes + + +[Users] +# Default $PATH +DefaultPath=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin + +# Hidden shells +# Users with these shells as their default won't be listed +HideShells= + +# Hidden users +HideUsers=git,sddm + +# Maximum user id for displayed users +MaximumUid=65000 + +# Minimum user id for displayed users +MinimumUid=1000 + +# Remember the session of the last successfully logged in user +RememberLastSession=true + +# Remember the last successfully logged in user +RememberLastUser=true + + +[XDisplay] +# Xsetup script path +# A script to execute when starting the display server +DisplayCommand=/usr/share/sddm/scripts/Xsetup + +# Minimum VT +# The lowest virtual terminal number that will be used. +MinimumVT=1 + +# X server path +ServerPath=/usr/bin/X + +# Xsession script path +# A script to execute when starting the desktop session +SessionCommand=/usr/share/sddm/scripts/Xsession + +# Session description directory +SessionDir=/usr/share/xsessions + +# Xauth path +XauthPath=/usr/bin/xauth diff --git a/desktop/kde/plasma/sddm/files/sddm_upstream.patch b/desktop/kde/plasma/sddm/files/sddm_upstream.patch new file mode 100644 index 0000000000..28d9df4d2c --- /dev/null +++ b/desktop/kde/plasma/sddm/files/sddm_upstream.patch @@ -0,0 +1,746 @@ +diff -Nuar sddm-0.11.0/ChangeLog sddm-master/ChangeLog +--- sddm-0.11.0/ChangeLog 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/ChangeLog 2015-03-08 18:18:48.000000000 +0200 +@@ -4,6 +4,10 @@ + - Bug fixes + * Others + ++## 0.12.0 - XXXX-XX-XX ++---------------------- ++ * Add Arabic translation by Safa Alfulaij. ++ + ## 0.11.0 - 2014-11-20 + ---------------------- + + Reload the configuration every time we start a new session +@@ -15,7 +19,6 @@ + + ## 0.10.0 - 2014-10-16 + ---------------------- +- + + Set default icon theme from greeter theme configuration. + + Set cursor theme according to greeter theme configuration. + - Never permit a login as the sddm user (CVE-2014-7271) +diff -Nuar sddm-0.11.0/CMakeLists.txt sddm-master/CMakeLists.txt +--- sddm-0.11.0/CMakeLists.txt 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/CMakeLists.txt 2015-03-08 18:18:48.000000000 +0200 +@@ -77,7 +77,9 @@ + + # find qt5 imports dir + get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION) +-exec_program(${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_QML" RETURN_VALUE return_code OUTPUT_VARIABLE QT_IMPORTS_DIR) ++if(NOT QT_IMPORTS_DIR) ++ exec_program(${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_QML" RETURN_VALUE return_code OUTPUT_VARIABLE QT_IMPORTS_DIR) ++endif() + + # Set components version + set(COMPONENTS_VERSION 2.0) +@@ -98,7 +100,12 @@ + add_definitions(-DHAVE_SYSTEMD) + set(CMAKE_AUTOMOC_MOC_OPTIONS -DHAVE_SYSTEMD) + +- pkg_check_modules(JOURNALD "libsystemd-journal") ++ # libsystemd-journal was merged into libsystemd in 209 ++ if(${SYSTEMD_VERSION} VERSION_LESS 209) ++ pkg_check_modules(JOURNALD "libsystemd-journal") ++ else() ++ pkg_check_modules(JOURNALD "libsystemd") ++ endif() + + if(ENABLE_JOURNALD) + if(JOURNALD_FOUND) +@@ -109,8 +116,11 @@ + endif() + endif() + +- execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=systemdsystemunitdir systemd OUTPUT_VARIABLE SYSTEMD_SYSTEM_UNIT_DIR) +- string(REGEX REPLACE "[ \t\n]+" "" SYSTEMD_SYSTEM_UNIT_DIR ${SYSTEMD_SYSTEM_UNIT_DIR}) ++ if (NOT DEFINED SYSTEMD_SYSTEM_UNIT_DIR) ++ execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=systemdsystemunitdir systemd OUTPUT_VARIABLE SYSTEMD_SYSTEM_UNIT_DIR) ++ string(REGEX REPLACE "[ \t\n]+" "" SYSTEMD_SYSTEM_UNIT_DIR ${SYSTEMD_SYSTEM_UNIT_DIR}) ++ endif() ++ + set(MINIMUM_VT 1) + set(HALT_COMMAND "/usr/bin/systemctl poweroff") + set(REBOOT_COMMAND "/usr/bin/systemctl reboot") +diff -Nuar sddm-0.11.0/CONTRIBUTORS sddm-master/CONTRIBUTORS +--- sddm-0.11.0/CONTRIBUTORS 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/CONTRIBUTORS 2015-03-08 18:18:48.000000000 +0200 +@@ -43,3 +43,4 @@ + a.k.a. Harvey + raffarti + w41l ++Sérgio Marques +diff -Nuar sddm-0.11.0/data/man/sddm.conf.rst.in sddm-master/data/man/sddm.conf.rst.in +--- sddm-0.11.0/data/man/sddm.conf.rst.in 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/data/man/sddm.conf.rst.in 2015-03-08 18:18:48.000000000 +0200 +@@ -65,6 +65,10 @@ + Path of the X server. + Default value is "/usr/bin/X". + ++`XephyrPath=` ++ Path of the Xephyr. ++ Default value is "/usr/bin/Xephyr". ++ + `XauthPath=` + Path of the Xauth. + Default value is "/usr/bin/xauth". +@@ -104,11 +108,11 @@ + Default value is 65000. + + `HideUsers=` +- Users that shouldn't show up in the user list. ++ Comma-separated list of Users that shouldn't show up in the user list. + Default value is empty. + + `HideShells=` +- Shells of users that shouldn't show up in the user list. ++ Comma-separated list of Shells of users that shouldn't show up in the user list. + Default value is empty. + + `RememberLastUser=` +diff -Nuar sddm-0.11.0/data/man/sddm.rst.in sddm-master/data/man/sddm.rst.in +--- sddm-0.11.0/data/man/sddm.rst.in 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/data/man/sddm.rst.in 2015-03-08 18:18:48.000000000 +0200 +@@ -25,9 +25,9 @@ + easily create pleasant, modern looking interfaces for sddm. + + sddm runs the greeter as a system user named **sddm** +-whose home directory need to be set to **/var/lib/sddm**. ++whose home directory needs to be set to **/var/lib/sddm**. + +-If pam and systemd are available, the greeter will go through logind ++If pam and systemd are available, the greeter will go through logind, + which will give it access to drm devices. + + Distributions without pam and systemd will need to put the **sddm** user +diff -Nuar sddm-0.11.0/data/scripts/Xsession sddm-master/data/scripts/Xsession +--- sddm-0.11.0/data/scripts/Xsession 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/data/scripts/Xsession 2015-03-08 18:18:48.000000000 +0200 +@@ -20,9 +20,8 @@ + . $HOME/.profile + fi + ;; +- */zsh) ++*/zsh) + [ -z "$ZSH_NAME" ] && exec $SHELL $0 "$@" +- emulate -R sh + [ -d /etc/zsh ] && zdir=/etc/zsh || zdir=/etc + zhome=${ZDOTDIR:-$HOME} + # zshenv is always sourced automatically. +@@ -30,6 +29,7 @@ + [ -f $zhome/.zprofile ] && . $zhome/.zprofile + [ -f $zdir/zlogin ] && . $zdir/zlogin + [ -f $zhome/.zlogin ] && . $zhome/.zlogin ++ emulate -R sh + ;; + */csh|*/tcsh) + # [t]cshrc is always sourced automatically. +diff -Nuar sddm-0.11.0/data/translations/ar.ts sddm-master/data/translations/ar.ts +--- sddm-0.11.0/data/translations/ar.ts 1970-01-01 02:00:00.000000000 +0200 ++++ sddm-master/data/translations/ar.ts 2015-03-08 18:18:48.000000000 +0200 +@@ -0,0 +1,59 @@ ++ ++ ++ ++ ++ TextConstants ++ ++ Welcome to %1 ++ مرحبًا في %1 ++ ++ ++ Warning, Caps Lock is ON! ++ تحذير، مفتاح Caps Lock ممكّن! ++ ++ ++ Layout ++ التّخطيط ++ ++ ++ Login ++ لِج ++ ++ ++ Login failed ++ فشل الولوج ++ ++ ++ Login succeeded ++ نجح الولوج ++ ++ ++ Password ++ كلمة المرور ++ ++ ++ Enter your username and password ++ أدخِل اسم المستخدم وكلمة مروره ++ ++ ++ Reboot ++ أعد الإقلاع ++ ++ ++ Session ++ الجلسة ++ ++ ++ Shutdown ++ أطفئ ++ ++ ++ User name ++ اسم المستخدم ++ ++ ++ Select your user and enter password ++ اختر مستخدمًا وأدخِل كلمة مروره ++ ++ ++ +diff -Nuar sddm-0.11.0/data/translations/CMakeLists.txt sddm-master/data/translations/CMakeLists.txt +--- sddm-0.11.0/data/translations/CMakeLists.txt 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/data/translations/CMakeLists.txt 2015-03-08 18:18:48.000000000 +0200 +@@ -1,9 +1,11 @@ + set(TRANSLATION_FILES ++ ar.ts + cs.ts + de.ts + et.ts + fi.ts + fr.ts ++ hu.ts + it.ts + ja.ts + pl.ts +diff -Nuar sddm-0.11.0/data/translations/hu.ts sddm-master/data/translations/hu.ts +--- sddm-0.11.0/data/translations/hu.ts 1970-01-01 02:00:00.000000000 +0200 ++++ sddm-master/data/translations/hu.ts 2015-03-08 18:18:48.000000000 +0200 +@@ -0,0 +1,59 @@ ++ ++ ++ ++ ++ TextConstants ++ ++ Welcome to %1 ++ Üdvözöljük - %1 ++ ++ ++ Warning, Caps Lock is ON! ++ Figyelem: a Caps Lock BE van kapcsolva! ++ ++ ++ Layout ++ Nézet ++ ++ ++ Login ++ Bejelentkezés ++ ++ ++ Login failed ++ Bejelentkezés sikertelen ++ ++ ++ Login succeeded ++ Sikeres bejelentkezés ++ ++ ++ Password ++ Jelszó ++ ++ ++ Enter your username and password ++ Írja be a felhasználónevét és a jelszavát ++ ++ ++ Reboot ++ Újraindítás ++ ++ ++ Session ++ Munkamenet ++ ++ ++ Shutdown ++ Leállítás ++ ++ ++ User name ++ Felhasználónév ++ ++ ++ Select your user and enter password ++ Válassza ki a felhasználónevét és írja be a jelszavát ++ ++ ++ +diff -Nuar sddm-0.11.0/data/translations/it.ts sddm-master/data/translations/it.ts +--- sddm-0.11.0/data/translations/it.ts 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/data/translations/it.ts 2015-03-08 18:18:48.000000000 +0200 +@@ -21,7 +21,7 @@ + + + Login failed +- Accesso fallito ++ Accesso non riuscito + + + Login succeeded +diff -Nuar sddm-0.11.0/data/translations/pt_PT.ts sddm-master/data/translations/pt_PT.ts +--- sddm-0.11.0/data/translations/pt_PT.ts 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/data/translations/pt_PT.ts 2015-03-08 18:18:48.000000000 +0200 +@@ -5,11 +5,11 @@ + TextConstants + + Welcome to %1 +- Bem-vindo a %1 ++ Bem-vindo ao %1 + + + Warning, Caps Lock is ON! +- Atenção, Caps Lock está ligada! ++ Atenção, Caps Lock está ativo! + + + Layout +@@ -17,15 +17,15 @@ + + + Login +- Sessão ++ Autenticação + + + Login failed +- A autenticação falhou ++ Falha de autenticação + + + Login succeeded +- Autentificação com sucesso ++ Autenticação efetuada + + + Password +@@ -33,7 +33,7 @@ + + + Enter your username and password +- Escreva o seu nome de utilizador e senha ++ Escreva o seu nome de utilizador e a senha + + + Reboot +diff -Nuar sddm-0.11.0/data/translations/tr.ts sddm-master/data/translations/tr.ts +--- sddm-0.11.0/data/translations/tr.ts 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/data/translations/tr.ts 2015-03-08 18:18:48.000000000 +0200 +@@ -5,7 +5,7 @@ + TextConstants + + Welcome to %1 +- Hoşgeldiniz (%1) ++ Hoş Geldiniz (%1) + + + Warning, Caps Lock is ON! +@@ -29,11 +29,11 @@ + + + Password +- Şifre ++ Parola + + + Enter your username and password +- Kullanıcı adınızı ve şifrenizi giriniz ++ Kullanıcı adınızı ve parolanızı giriniz + + + Reboot +@@ -53,7 +53,7 @@ + + + Select your user and enter password +- Kullanıcınızı seçiniz ve şifrenizi giriniz ++ Kullanıcınızı seçiniz ve parolanızı giriniz + + + +diff -Nuar sddm-0.11.0/README.md sddm-master/README.md +--- sddm-0.11.0/README.md 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/README.md 2015-03-08 18:18:48.000000000 +0200 +@@ -2,7 +2,7 @@ + + [![Build Status](https://travis-ci.org/sddm/sddm.svg?branch=master)](https://travis-ci.org/sddm/sddm) + +-SDDM is a modern display manager for X11 aiming to be fast, simple and beatiful. It uses modern technologies like QtQuick, which in turn gives the designer the ability to create smooth, animated user interfaces. ++SDDM is a modern display manager for X11 aiming to be fast, simple and beautiful. It uses modern technologies like QtQuick, which in turn gives the designer the ability to create smooth, animated user interfaces. + + SDDM is extremely themeable. We put no restrictions on the user interface design, it is completely up to the designer. We simply provide a few callbacks to the user interface which can be used for authentication, suspend etc. To further ease theme creation we provide some premade components like a textbox, a combox etc. + +diff -Nuar sddm-0.11.0/src/common/Configuration.h sddm-master/src/common/Configuration.h +--- sddm-0.11.0/src/common/Configuration.h 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/src/common/Configuration.h 2015-03-08 18:18:48.000000000 +0200 +@@ -54,6 +54,7 @@ + // TODO: Not absolutely sure if everything belongs here. Xsessions, VT and probably some more seem universal + Section(XDisplay, + Entry(ServerPath, QString, _S("/usr/bin/X"), _S("X server path")); ++ Entry(XephyrPath, QString, _S("/usr/bin/Xephyr"), _S("Xephyr path")); + Entry(XauthPath, QString, _S("/usr/bin/xauth"), _S("Xauth path")); + Entry(SessionDir, QString, _S("/usr/share/xsessions"), _S("Session description directory")); + Entry(SessionCommand, QString, _S(SESSION_COMMAND), _S("Xsession script path\n" +diff -Nuar sddm-0.11.0/src/daemon/Display.cpp sddm-master/src/daemon/Display.cpp +--- sddm-0.11.0/src/daemon/Display.cpp 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/src/daemon/Display.cpp 2015-03-08 18:18:48.000000000 +0200 +@@ -40,8 +40,8 @@ + #include + + namespace SDDM { +- Display::Display(const int displayId, const int terminalId, Seat *parent) : QObject(parent), +- m_displayId(displayId), m_terminalId(terminalId), ++ Display::Display(const int terminalId, Seat *parent) : QObject(parent), ++ m_terminalId(terminalId), + m_auth(new Auth(this)), + m_displayServer(new XorgDisplayServer(this)), + m_seat(parent), +@@ -73,8 +73,8 @@ + stop(); + } + +- const int Display::displayId() const { +- return m_displayId; ++ QString Display::displayId() const { ++ return m_displayServer->display(); + } + + const int Display::terminalId() const { +diff -Nuar sddm-0.11.0/src/daemon/Display.h sddm-master/src/daemon/Display.h +--- sddm-0.11.0/src/daemon/Display.h 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/src/daemon/Display.h 2015-03-08 18:18:48.000000000 +0200 +@@ -39,10 +39,10 @@ + Q_OBJECT + Q_DISABLE_COPY(Display) + public: +- explicit Display(const int displayId, const int terminalId, Seat *parent); ++ explicit Display(int terminalId, Seat *parent); + ~Display(); + +- const int displayId() const; ++ QString displayId() const; + const int terminalId() const; + + const QString &name() const; +@@ -71,7 +71,6 @@ + bool m_relogin { true }; + bool m_started { false }; + +- int m_displayId { 0 }; + int m_terminalId { 7 }; + + QString m_passPhrase; +diff -Nuar sddm-0.11.0/src/daemon/Seat.cpp sddm-master/src/daemon/Seat.cpp +--- sddm-0.11.0/src/daemon/Seat.cpp 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/src/daemon/Seat.cpp 2015-03-08 18:18:48.000000000 +0200 +@@ -51,36 +51,25 @@ + return m_name; + } + +- void Seat::createDisplay(int displayId, int terminalId) { ++ void Seat::createDisplay(int terminalId) { + //reload config if needed + mainConfig.load(); + +- if (displayId == -1) { +- // find unused display +- displayId = findUnused(0, [&](const int number) { +- bool alreadyExists = m_displayIds.contains(number); +- if (!alreadyExists) +- alreadyExists = XorgDisplayServer::displayExists(number); +- return alreadyExists; +- }); +- +- // find unused terminal ++ if (terminalId == -1) { ++ // find unused terminal + terminalId = findUnused(mainConfig.XDisplay.MinimumVT.get(), [&](const int number) { + return m_terminalIds.contains(number); + }); + } + +- // mark display as used +- m_displayIds << displayId; +- + // mark terminal as used + m_terminalIds << terminalId; + + // log message +- qDebug() << "Adding new display" << displayId << "on vt" << terminalId << "..."; ++ qDebug() << "Adding new display" << "on vt" << terminalId << "..."; + + // create a new display +- Display *display = new Display(displayId, terminalId, this); ++ Display *display = new Display(terminalId, this); + + // restart display on stop + connect(display, SIGNAL(stopped()), this, SLOT(displayStopped())); +@@ -92,26 +81,14 @@ + display->start(); + } + +- void Seat::removeDisplay(int displayId) { +- qDebug() << "Removing display" << displayId << "..."; +- +- // display object +- Display *display = nullptr; ++ void Seat::removeDisplay(Display* display) { ++ qDebug() << "Removing display" << display->displayId() << "..."; + +- // find display +- for (Display *d: m_displays) +- if (d->displayId() == displayId) +- display = d; +- +- // check if found +- if (display == nullptr) +- return; + + // remove display from list + m_displays.removeAll(display); + + // mark display and terminal ids as unused +- m_displayIds.removeAll(display->displayId()); + m_terminalIds.removeAll(display->terminalId()); + + // stop the display +@@ -127,7 +104,7 @@ + Display *display = qobject_cast(sender()); + + // remove display +- removeDisplay(display->displayId()); ++ removeDisplay(display); + + // restart otherwise + if (m_displays.isEmpty()) +diff -Nuar sddm-0.11.0/src/daemon/Seat.h sddm-master/src/daemon/Seat.h +--- sddm-0.11.0/src/daemon/Seat.h 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/src/daemon/Seat.h 2015-03-08 18:18:48.000000000 +0200 +@@ -34,8 +34,8 @@ + const QString &name() const; + + public slots: +- void createDisplay(int displayId = -1, int terminalId = -1); +- void removeDisplay(int displayId); ++ void createDisplay(int terminalId = -1); ++ void removeDisplay(SDDM::Display* display); + + private slots: + void displayStopped(); +@@ -45,7 +45,6 @@ + + QList m_displays; + QList m_terminalIds; +- QList m_displayIds; + }; + } + +diff -Nuar sddm-0.11.0/src/daemon/Utils.h sddm-master/src/daemon/Utils.h +--- sddm-0.11.0/src/daemon/Utils.h 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/src/daemon/Utils.h 2015-03-08 18:18:48.000000000 +0200 +@@ -21,6 +21,8 @@ + #ifndef SDDM_UTILS_H + #define SDDM_UTILS_H + ++#include ++ + namespace SDDM { + + inline QString generateName(int length) { +diff -Nuar sddm-0.11.0/src/daemon/XorgDisplayServer.cpp sddm-master/src/daemon/XorgDisplayServer.cpp +--- sddm-0.11.0/src/daemon/XorgDisplayServer.cpp 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/src/daemon/XorgDisplayServer.cpp 2015-03-08 18:18:48.000000000 +0200 +@@ -28,6 +28,9 @@ + #include + #include + #include ++#include ++ ++#include + + #include + +@@ -36,9 +39,6 @@ + + namespace SDDM { + XorgDisplayServer::XorgDisplayServer(Display *parent) : DisplayServer(parent) { +- // figure out the X11 display +- m_display = QString(":%1").arg(displayPtr()->displayId()); +- + // get auth directory + QString authDir = RUNTIME_DIR; + +@@ -50,7 +50,7 @@ + QDir().mkpath(authDir); + + // set auth path +- m_authPath = QString("%1/%2").arg(authDir).arg(m_display); ++ m_authPath = QString("%1/%2").arg(authDir).arg(QUuid::createUuid().toString()); + + // generate cookie + std::random_device rd; +@@ -70,10 +70,6 @@ + stop(); + } + +- bool XorgDisplayServer::displayExists(int number) { +- return QFile(QString("/tmp/.X%1-lock").arg(number)).exists(); +- } +- + const QString &XorgDisplayServer::display() const { + return m_display; + } +@@ -136,44 +132,72 @@ + if (daemonApp->testing()) { + QStringList args; + args << m_display << "-ac" << "-br" << "-noreset" << "-screen" << "800x600"; +- process->start("/usr/bin/Xephyr", args); ++ process->start(mainConfig.XDisplay.XephyrPath.get(), args); ++ ++ ++ // wait for display server to start ++ if (!process->waitForStarted()) { ++ // log message ++ qCritical() << "Failed to start display server process."; ++ ++ // return fail ++ return false; ++ } ++ emit started(); + } else { + // set process environment + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); +- env.insert("DISPLAY", m_display); +- env.insert("XAUTHORITY", m_authPath); + env.insert("XCURSOR_THEME", mainConfig.Theme.CursorTheme.get()); + process->setProcessEnvironment(env); + +- // tell the display server to notify us when we can connect +- SignalHandler::ignoreSigusr1(); ++ //create pipe for communicating with X server ++ //0 == read from X, 1== write to from X ++ int pipeFds[2]; ++ if (pipe(pipeFds) != 0) { ++ qCritical("Could not create pipe to start X server"); ++ } + + // start display server + QStringList args; +- args << m_display +- << "-auth" << m_authPath ++ args << "-auth" << m_authPath + << "-nolisten" << "tcp" + << "-background" << "none" + << "-noreset" ++ << "-displayfd" << QString::number(pipeFds[1]) + << QString("vt%1").arg(displayPtr()->terminalId()); + qDebug() << "Running:" + << qPrintable(mainConfig.XDisplay.ServerPath.get()) + << qPrintable(args.join(" ")); + process->start(mainConfig.XDisplay.ServerPath.get(), args); +- SignalHandler::initializeSigusr1(); +- connect(DaemonApp::instance()->signalHandler(), SIGNAL(sigusr1Received()), this, SIGNAL(started())); +- } + +- // wait for display server to start +- if (!process->waitForStarted()) { +- // log message +- qCritical() << "Failed to start display server process."; ++ // wait for display server to start ++ if (!process->waitForStarted()) { ++ // log message ++ qCritical() << "Failed to start display server process."; ++ ++ // return fail ++ close(pipeFds[0]); ++ return false; ++ } ++ ++ QFile readPipe; ++ ++ if (!readPipe.open(pipeFds[0], QIODevice::ReadOnly)) { ++ qCritical("Failed to open pipe to start X Server "); ++ ++ close(pipeFds[0]); ++ return false; ++ } ++ QByteArray displayNumber = readPipe.readLine(); ++ displayNumber.prepend(QByteArray(":")); ++ displayNumber.remove(displayNumber.size() -1, 1); //trim trailing whitespace ++ m_display= displayNumber; ++ ++ // close our pipe ++ close(pipeFds[0]); + +- // return fail +- return false; +- } +- if (daemonApp->testing()) + emit started(); ++ } + + // set flag + m_started = true; +diff -Nuar sddm-0.11.0/src/daemon/XorgDisplayServer.h sddm-master/src/daemon/XorgDisplayServer.h +--- sddm-0.11.0/src/daemon/XorgDisplayServer.h 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/src/daemon/XorgDisplayServer.h 2015-03-08 18:18:48.000000000 +0200 +@@ -33,8 +33,6 @@ + explicit XorgDisplayServer(Display *parent); + ~XorgDisplayServer(); + +- static bool displayExists(int number); +- + const QString &display() const; + const QString &authPath() const; + +diff -Nuar sddm-0.11.0/src/greeter/SessionModel.cpp sddm-master/src/greeter/SessionModel.cpp +--- sddm-0.11.0/src/greeter/SessionModel.cpp 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/src/greeter/SessionModel.cpp 2015-03-08 18:18:48.000000000 +0200 +@@ -57,6 +57,7 @@ + continue; + SessionPtr si { new Session { session, "", "", "" } }; + QTextStream in(&inputFile); ++ bool execAllowed = true; + while (!in.atEnd()) { + QString line = in.readLine(); + if (line.startsWith("Name=")) +@@ -65,9 +66,15 @@ + si->exec = line.mid(5); + if (line.startsWith("Comment=")) + si->comment = line.mid(8); ++ if (line.startsWith("TryExec=")) { ++ QFileInfo fi(line.mid(8)); ++ if (!fi.exists() || !fi.isExecutable()) ++ execAllowed = false; ++ } + } + // add to sessions list +- d->sessions.push_back(si); ++ if (execAllowed) ++ d->sessions.push_back(si); + // close file + inputFile.close(); + } +diff -Nuar sddm-0.11.0/src/helper/backend/PamBackend.cpp sddm-master/src/helper/backend/PamBackend.cpp +--- sddm-0.11.0/src/helper/backend/PamBackend.cpp 2014-11-20 17:47:24.000000000 +0200 ++++ sddm-master/src/helper/backend/PamBackend.cpp 2015-03-08 18:18:48.000000000 +0200 +@@ -251,7 +251,9 @@ + QProcessEnvironment sessionEnv = m_app->session()->processEnvironment(); + QString display = sessionEnv.value("DISPLAY"); + if (!display.isEmpty()) { ++#ifdef PAM_XDISPLAY + m_pam->setItem(PAM_XDISPLAY, qPrintable(display)); ++#endif + m_pam->setItem(PAM_TTY, qPrintable(display)); + } + if (!m_pam->putEnv(sessionEnv)) { diff --git a/desktop/kde/plasma/sddm/files/sddm_y b/desktop/kde/plasma/sddm/files/sddm_y new file mode 100644 index 0000000000..0a76cc169d --- /dev/null +++ b/desktop/kde/plasma/sddm/files/sddm_y @@ -0,0 +1,10 @@ +# Begin /etc/pam.d/sddm +#%PAM-1.0 +auth substack system-auth +auth optional pam_gnome_keyring.so +account include system-auth +session optional pam_keyinit.so force revoke +session include system-auth +session optional pam_console.so +session optional pam_gnome_keyring.so auto_start +session optional pam_selinux.so diff --git a/desktop/kde/plasma/sddm/files/sddm_yedek b/desktop/kde/plasma/sddm/files/sddm_yedek new file mode 100644 index 0000000000..b66e9367cc --- /dev/null +++ b/desktop/kde/plasma/sddm/files/sddm_yedek @@ -0,0 +1,18 @@ +# Begin /etc/pam.d/sddm + +auth required pam_unix.so try_first_pass nullok +auth optional pam_permit.so +auth required pam_env.so + +account required pam_unix.so +account optional pam_permit.so +account required pam_time.so + +password required pam_unix.so try_first_pass nullok sha512 shadow +password optional pam_permit.so + +session required pam_limits.so +session required pam_unix.so +session optional pam_permit.so + +# End /etc/pam.d/sddm \ No newline at end of file diff --git a/desktop/kde/plasma/sddm/pspec.xml b/desktop/kde/plasma/sddm/pspec.xml new file mode 100755 index 0000000000..3aaa4d6dbe --- /dev/null +++ b/desktop/kde/plasma/sddm/pspec.xml @@ -0,0 +1,78 @@ + + + + + sddm + https://github.com/sddm/sddm + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + QML based X11 display manager + KDE Power Management module. Provides kded daemon DBus helper and KCM for configuring Power settings + https://github.com/sddm/sddm/archive/v0.11.0.tar.gz + + qt5-base-devel + qt5-tools-devel + qt5-base-devel + libgcc + pkgconfig + libxcb-devel + libxkbfile-devel + extra-cmake-modules + docutils + + + sddm_upstream.patch + sddm-0.10.0-upower.patch + sddm-0.11.0-consolekit.patch + + + + + sddm + + qt5-base + qt5-declarative + libgcc + libxcb + + + /etc + /usr/share + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + sddm.conf + sddm + + + System.Service + System.Package + + + + + + 2015-07-03 + 0.11 + Rebuild. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-09-20 + 0.11 + First release + Stefan Gronewold (groni) + groni@pisilinux.org + + + From 6fbbf86e5f9863b3209d86b7718c364380b96d44 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 17:46:47 +0200 Subject: [PATCH 077/175] sddm-kcm version bump and check --- desktop/kde/plasma/sddm-kcm/actions.py | 19 +++++ desktop/kde/plasma/sddm-kcm/pspec.xml | 89 ++++++++++++++++++++ desktop/kde/plasma/sddm-kcm/translations.xml | 8 ++ 3 files changed, 116 insertions(+) create mode 100644 desktop/kde/plasma/sddm-kcm/actions.py create mode 100644 desktop/kde/plasma/sddm-kcm/pspec.xml create mode 100644 desktop/kde/plasma/sddm-kcm/translations.xml diff --git a/desktop/kde/plasma/sddm-kcm/actions.py b/desktop/kde/plasma/sddm-kcm/actions.py new file mode 100644 index 0000000000..b6b9ec50d8 --- /dev/null +++ b/desktop/kde/plasma/sddm-kcm/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import pisitools + +def setup(): + kde5.configure() + +def build(): + kde5.make() + +def install(): + kde5.install() + + pisitools.dodoc("CONTRIBUTORS", "COPYING", "README") diff --git a/desktop/kde/plasma/sddm-kcm/pspec.xml b/desktop/kde/plasma/sddm-kcm/pspec.xml new file mode 100644 index 0000000000..ca2e4ecea7 --- /dev/null +++ b/desktop/kde/plasma/sddm-kcm/pspec.xml @@ -0,0 +1,89 @@ + + + + + sddm-kcm + https://projects.kde.org/projects/kde/workspace/sddm-kcm + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + app:console + KDE5 Config Module for SDDM + KDE5 Config Module for SDDM + http://download.kde.org/stable/plasma/5.3.2/sddm-kcm-5.3.2.tar.xz + + kcoreaddons-devel + kdoctools-devel + kconfigwidgets-devel + kauth-devel + libgcc + libX11-devel + kxmlgui-devel + ki18n-devel + qt5-base-devel + kio-devel + qt5-declarative-devel + qt5-tools-devel + qt5-x11extras-devel + kconfig-devel + docutils + libXcursor-devel + extra-cmake-modules + + + + + sddm-kcm + + kcoreaddons + sddm + libgcc + libX11 + kconfigwidgets + kauth + kxmlgui + ki18n + qt5-base + kio + kdoctools + libXcursor + kconfig + qt5-x11extras + qt5-declarative + xorg-server-xephyr + + + /etc/dbus-1/system.d + /usr/share/dbus-1/system-services + /usr/share/kservices5 + /usr/share/ + /usr/share/polkit-1/actions + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5/plugins + /usr/lib/libexec/kauth + /usr/lib + /usr/share/doc + + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-14 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + diff --git a/desktop/kde/plasma/sddm-kcm/translations.xml b/desktop/kde/plasma/sddm-kcm/translations.xml new file mode 100644 index 0000000000..97bfd3908d --- /dev/null +++ b/desktop/kde/plasma/sddm-kcm/translations.xml @@ -0,0 +1,8 @@ + + + + kde5-sddm-kcm + KDE5 Config Module for SDDM + KDE5 Config Module for SDDM + + From cc24f7d958ac24481ff66ef8b458c4e699275d99 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 17:49:10 +0200 Subject: [PATCH 078/175] plasma-mediacenter remove unused dependency --- desktop/kde/plasma/plasma-mediacenter/pspec.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/desktop/kde/plasma/plasma-mediacenter/pspec.xml b/desktop/kde/plasma/plasma-mediacenter/pspec.xml index 8ae271ff15..01fbbc9d7c 100755 --- a/desktop/kde/plasma/plasma-mediacenter/pspec.xml +++ b/desktop/kde/plasma/plasma-mediacenter/pspec.xml @@ -17,8 +17,8 @@ qt5-base-devel qt5-multimedia-devel libgcc - kf5-kfilemetadata-devel - kf5-baloo-devel + kfilemetadata-devel + baloo-devel extra-cmake-modules @@ -27,8 +27,7 @@ plasma-mediacenter qt5-base - kf5-baloo - kf5-kfilemetadata + baloo libgcc kfilemetadata kcoreaddons From 0450ea3b646a9dd0d1919a5bbd92f84ad952d3b5 Mon Sep 17 00:00:00 2001 From: groni Date: Fri, 3 Jul 2015 18:06:38 +0200 Subject: [PATCH 079/175] plasma-workspace-wallpapers version bump and check --- .../plasma-workspace-wallpapers/actions.py | 27 ++++ .../plasma-workspace-wallpapers/pspec.xml | 129 ++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100755 desktop/kde/plasma/plasma-workspace-wallpapers/actions.py create mode 100755 desktop/kde/plasma/plasma-workspace-wallpapers/pspec.xml diff --git a/desktop/kde/plasma/plasma-workspace-wallpapers/actions.py b/desktop/kde/plasma/plasma-workspace-wallpapers/actions.py new file mode 100755 index 0000000000..8f1b9185ee --- /dev/null +++ b/desktop/kde/plasma/plasma-workspace-wallpapers/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools + +def setup(): + cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt5/mkspecs/modules \ + -DLIB_INSTALL_DIR=lib \ + -DPYTHON_EXECUTABLE=/usr/bin/python3 \ + -DQML_INSTALL_DIR=lib/qt5/qml \ + -DQT_PLUGIN_INSTALL_DIR=lib/qt5/plugins \ + -DSYSCONF_INSTALL_DIR=/etc \ + -DBUILD_TESTING=OFF") + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("COPYING", "AUTHORS") + diff --git a/desktop/kde/plasma/plasma-workspace-wallpapers/pspec.xml b/desktop/kde/plasma/plasma-workspace-wallpapers/pspec.xml new file mode 100755 index 0000000000..15e1769d48 --- /dev/null +++ b/desktop/kde/plasma/plasma-workspace-wallpapers/pspec.xml @@ -0,0 +1,129 @@ + + + + + plasma-workspace-wallpapers + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + app:gui + The KDE Plasma Workspace Components + The KDE Plasma Workspace Components + http://download.kde.org/stable/plasma/5.3.2/plasma-workspace-wallpapers-5.3.2.tar.xz + + qt5-base-devel + alsa-lib-devel + baloo-devel + kactivities-devel + kcmutils-devel + kcoreaddons-devel + kcrash-devel + kdeclarative-devel + kdelibs4-support-devel + kdesu-devel + kdewebkit-devel + kdoctools-devel + kidletime-devel + kjsembed-devel + knewstuff-devel + knotifyconfig-devel + krunner-devel + ktexteditor-devel + kwallet-devel + kwin-devel + libkscreen-devel + libksysguard-devel + plasma-framework-devel + solid-devel + frameworkintegration-devel + breeze-style + milou + qt5-phonon-devel + libqalculate-devel + prison-qt5-devel + libXrender-devel + xcb-util-keysyms-devel + xcb-util-image-devel + libXcursor-devel + + + + + + + plasma-workspace-wallpapers + + qt5-base + alsa-lib + baloo + kactivities + kcmutils + kcoreaddons + kcrash + kdeclarative + kdelibs4-support + kdesu + kdewebkit + kdoctools + kidletime + kjsembed + knewstuff + knotifyconfig + krunner + ktexteditor + kwallet + kwin + libkscreen + libksysguard + plasma-framework + solid + frameworkintegration + breeze-style + milou + qt5-phonon + libqalculate + prison-qt5 + libXrender + xcb-util-keysyms + xcb-util-image + libXcursor + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-25 + 5.3.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + From ac9620acb74c809bd308012259e65c83ee437801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 20:03:26 +0300 Subject: [PATCH 080/175] cyrus-sasl fix deps, openldap dependency cause circledep, removed. --- server/auth/cyrus-sasl/actions.py | 7 +++++-- server/auth/cyrus-sasl/pspec.xml | 11 ++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/server/auth/cyrus-sasl/actions.py b/server/auth/cyrus-sasl/actions.py index 283514a333..dff49fe666 100644 --- a/server/auth/cyrus-sasl/actions.py +++ b/server/auth/cyrus-sasl/actions.py @@ -32,7 +32,7 @@ def setup(): --with-plugindir=/usr/lib/sasl2 \ --with-dbpath=/etc/sasl2/sasldb2 \ --with-pam \ - --with-ldap \ + --without-ldap \ --with-openssl \ --with-dblib=gdbm \ --with-gss_impl=mit \ @@ -46,7 +46,7 @@ def setup(): --enable-login \ --enable-ntlm \ --enable-plain \ - --enable-ldapdb \ + --disable-ldapdb \ --enable-checkapop \ --enable-alwaystrue \ --disable-java \ @@ -57,6 +57,9 @@ def setup(): --disable-passdss \ --disable-macos-framework \ --disable-static") + + # for remove unused + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") def build(): autotools.make("-j1") diff --git a/server/auth/cyrus-sasl/pspec.xml b/server/auth/cyrus-sasl/pspec.xml index b6ab0d7e00..53f3baca73 100644 --- a/server/auth/cyrus-sasl/pspec.xml +++ b/server/auth/cyrus-sasl/pspec.xml @@ -16,6 +16,11 @@ http://cyrusimap.org/releases/cyrus-sasl-2.1.26.tar.gz mit-kerberos + pam-devel + gdbm-devel + e2fsprogs-devel + openssl-devel + groff @@ -44,8 +49,12 @@ cyrus-sasl - openldap-client + mit-kerberos + pam + gdbm + e2fsprogs + openssl /etc From bc4340e0fcf783c3a6f064739dbbc58af40f579b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 20:29:59 +0300 Subject: [PATCH 081/175] work for openldap emul32bit not build --- server/openldap/actions.py | 5 +++-- server/openldap/pspec.xml | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/server/openldap/actions.py b/server/openldap/actions.py index de83f14301..ed0df63a30 100644 --- a/server/openldap/actions.py +++ b/server/openldap/actions.py @@ -51,8 +51,8 @@ def setup(): --enable-proctitle \ --enable-overlays=mod \ --with-pic \ - --without-cyrus-sasl \ --with-threads \ + --with-cyrus-sasl \ --without-fetch \ --enable-crypt \ --enable-ipv6 \ @@ -71,13 +71,14 @@ def setup(): --disable-wrappers \ --disable-spasswd \ --disable-perl \ - --with-tls \ + --without-tls \ --without-cyrus-sasl" else: options += " --with-tls=moznss" shelltools.export("AUTOMAKE", "/bin/true") autotools.autoreconf("-fi") autotools.configure(options) + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") def build(): diff --git a/server/openldap/pspec.xml b/server/openldap/pspec.xml index 61d95fde56..e5998232bb 100644 --- a/server/openldap/pspec.xml +++ b/server/openldap/pspec.xml @@ -15,9 +15,11 @@ nss-devel db-devel + openssl-devel tcp-wrappers-devel - + cyrus-sasl-devel libtool-ltdl + groff openldap-2.4.39-blfs_paths-1.patch From 798e300d08e61c6d3828e0e53a18fc4369f90fdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 21:20:39 +0300 Subject: [PATCH 082/175] openldap fix deps and verbump --- server/openldap/actions.py | 2 +- server/openldap/pspec.xml | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/server/openldap/actions.py b/server/openldap/actions.py index ed0df63a30..b68f5e7834 100644 --- a/server/openldap/actions.py +++ b/server/openldap/actions.py @@ -63,7 +63,7 @@ def setup(): --localstatedir=/var/lib" if get.buildTYPE() == "emul32": - options += " --prefix=/emul32 \ + options = " --prefix=/emul32 \ --libdir=/usr/lib32 \ --libexecdir=/emul32/libexec \ --disable-bdb \ diff --git a/server/openldap/pspec.xml b/server/openldap/pspec.xml index e5998232bb..b7700171ec 100644 --- a/server/openldap/pspec.xml +++ b/server/openldap/pspec.xml @@ -50,7 +50,8 @@ Command-line ldap client commands (ldapsearch, ldapadd etc..) nss - + nspr + cyrus-sasl /etc/openldap/ldap.conf* @@ -68,6 +69,10 @@ OpenLDAP server slapd and releated tools OpenLDAP server slapd, additional backends, configuration files, schema definitions required for operation, and database maintenance tools + db + perl + tcp-wrappers + libtool-ltdl nss cyrus-sasl openldap-client @@ -103,9 +108,11 @@ emul32 openssl-32bit + glibc-32bit libtool-ltdl-32bit + glibc-32bit openssl-32bit openldap-client From e96342070c88b01491c161c5f3800dc826dc0a25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 21:37:32 +0300 Subject: [PATCH 083/175] postgresql fix deps and verbump --- server/database/postgresql/actions.py | 2 +- server/database/postgresql/pspec.xml | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/server/database/postgresql/actions.py b/server/database/postgresql/actions.py index e76141a115..437615bb7b 100644 --- a/server/database/postgresql/actions.py +++ b/server/database/postgresql/actions.py @@ -21,7 +21,7 @@ def setup(): --with-pam \ --with-libxml \ --with-libxslt \ - --without-ldap \ + --with-ldap \ --enable-integer-datetimes \ --enable-thread-safety \ --enable-depend \ diff --git a/server/database/postgresql/pspec.xml b/server/database/postgresql/pspec.xml index 8ece19e861..c4532f251b 100644 --- a/server/database/postgresql/pspec.xml +++ b/server/database/postgresql/pspec.xml @@ -24,6 +24,7 @@ tcl-devel libxslt-devel libxml2-devel + openldap-server @@ -36,7 +37,11 @@ Essential shared libraries for any PostgreSQL client program or interface mit-kerberos - tcl + python + zlib + libxml2 + openssl + e2fsprogs libxslt openldap-client @@ -66,6 +71,12 @@ service postgresql-lib + pam + zlib + libxml2 + openssl + readline + e2fsprogs mit-kerberos openldap-client @@ -91,6 +102,7 @@ postgresql-lib tcl + perl /usr/bin/pltcl_listmod From 0b1f785d3bd6a1da497dd85e217e03f31c0f1c9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 22:04:33 +0300 Subject: [PATCH 084/175] gstramer fix deps --- multimedia/video/gstreamer/pspec.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/multimedia/video/gstreamer/pspec.xml b/multimedia/video/gstreamer/pspec.xml index c0e31c9adc..09b0d18ee2 100644 --- a/multimedia/video/gstreamer/pspec.xml +++ b/multimedia/video/gstreamer/pspec.xml @@ -15,7 +15,8 @@ GStreamer is a streaming media framework, based on graphs of filters which operate on media data. Applications using this library can do anything from real-time sound processing to playing videos, and just about anything else media-related. http://ftp.gnome.org/pub/gnome/sources/gstreamer/0.10/gstreamer-0.10.36.tar.xz - gobject-introspection-devel + glib2-devel + gobject-introspection-devel libxml2-devel @@ -28,7 +29,7 @@ gstreamer - gobject-introspection + glib2 libxml2 From c4d868ed55a6c967e161625d7edd56b09e1e2154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Fri, 3 Jul 2015 23:52:42 +0300 Subject: [PATCH 085/175] opps is no gnome is gtkopps is no gnome is gtk --- .../toolkit/{gnome => gtk}/gtk2/actions.py | 0 .../{gnome => gtk}/gtk2/comar/pakhandler.py | 0 .../gtk2/files/fedora/icon-padding.patch | 0 .../gtk2/files/fedora/system-python.patch | 0 .../files/fedora/tooltip-positioning.patch | 0 .../gtk2/files/fedora/window-dragging.patch | 0 .../toolkit/{gnome => gtk}/gtk2/files/gtkrc | 0 .../gtk2/files/xid-collision-debug.patch | 0 desktop/toolkit/{gnome => gtk}/gtk2/pspec.xml | 0 .../{gnome => gtk}/gtk2/translations.xml | 0 x11/library/pixman/actions.py | 21 ++++ x11/library/pixman/pspec.xml | 114 ++++++++++++++++++ x11/library/pixman/translations.xml | 18 +++ 13 files changed, 153 insertions(+) rename desktop/toolkit/{gnome => gtk}/gtk2/actions.py (100%) rename desktop/toolkit/{gnome => gtk}/gtk2/comar/pakhandler.py (100%) rename desktop/toolkit/{gnome => gtk}/gtk2/files/fedora/icon-padding.patch (100%) rename desktop/toolkit/{gnome => gtk}/gtk2/files/fedora/system-python.patch (100%) rename desktop/toolkit/{gnome => gtk}/gtk2/files/fedora/tooltip-positioning.patch (100%) rename desktop/toolkit/{gnome => gtk}/gtk2/files/fedora/window-dragging.patch (100%) rename desktop/toolkit/{gnome => gtk}/gtk2/files/gtkrc (100%) rename desktop/toolkit/{gnome => gtk}/gtk2/files/xid-collision-debug.patch (100%) rename desktop/toolkit/{gnome => gtk}/gtk2/pspec.xml (100%) rename desktop/toolkit/{gnome => gtk}/gtk2/translations.xml (100%) create mode 100644 x11/library/pixman/actions.py create mode 100644 x11/library/pixman/pspec.xml create mode 100644 x11/library/pixman/translations.xml diff --git a/desktop/toolkit/gnome/gtk2/actions.py b/desktop/toolkit/gtk/gtk2/actions.py similarity index 100% rename from desktop/toolkit/gnome/gtk2/actions.py rename to desktop/toolkit/gtk/gtk2/actions.py diff --git a/desktop/toolkit/gnome/gtk2/comar/pakhandler.py b/desktop/toolkit/gtk/gtk2/comar/pakhandler.py similarity index 100% rename from desktop/toolkit/gnome/gtk2/comar/pakhandler.py rename to desktop/toolkit/gtk/gtk2/comar/pakhandler.py diff --git a/desktop/toolkit/gnome/gtk2/files/fedora/icon-padding.patch b/desktop/toolkit/gtk/gtk2/files/fedora/icon-padding.patch similarity index 100% rename from desktop/toolkit/gnome/gtk2/files/fedora/icon-padding.patch rename to desktop/toolkit/gtk/gtk2/files/fedora/icon-padding.patch diff --git a/desktop/toolkit/gnome/gtk2/files/fedora/system-python.patch b/desktop/toolkit/gtk/gtk2/files/fedora/system-python.patch similarity index 100% rename from desktop/toolkit/gnome/gtk2/files/fedora/system-python.patch rename to desktop/toolkit/gtk/gtk2/files/fedora/system-python.patch diff --git a/desktop/toolkit/gnome/gtk2/files/fedora/tooltip-positioning.patch b/desktop/toolkit/gtk/gtk2/files/fedora/tooltip-positioning.patch similarity index 100% rename from desktop/toolkit/gnome/gtk2/files/fedora/tooltip-positioning.patch rename to desktop/toolkit/gtk/gtk2/files/fedora/tooltip-positioning.patch diff --git a/desktop/toolkit/gnome/gtk2/files/fedora/window-dragging.patch b/desktop/toolkit/gtk/gtk2/files/fedora/window-dragging.patch similarity index 100% rename from desktop/toolkit/gnome/gtk2/files/fedora/window-dragging.patch rename to desktop/toolkit/gtk/gtk2/files/fedora/window-dragging.patch diff --git a/desktop/toolkit/gnome/gtk2/files/gtkrc b/desktop/toolkit/gtk/gtk2/files/gtkrc similarity index 100% rename from desktop/toolkit/gnome/gtk2/files/gtkrc rename to desktop/toolkit/gtk/gtk2/files/gtkrc diff --git a/desktop/toolkit/gnome/gtk2/files/xid-collision-debug.patch b/desktop/toolkit/gtk/gtk2/files/xid-collision-debug.patch similarity index 100% rename from desktop/toolkit/gnome/gtk2/files/xid-collision-debug.patch rename to desktop/toolkit/gtk/gtk2/files/xid-collision-debug.patch diff --git a/desktop/toolkit/gnome/gtk2/pspec.xml b/desktop/toolkit/gtk/gtk2/pspec.xml similarity index 100% rename from desktop/toolkit/gnome/gtk2/pspec.xml rename to desktop/toolkit/gtk/gtk2/pspec.xml diff --git a/desktop/toolkit/gnome/gtk2/translations.xml b/desktop/toolkit/gtk/gtk2/translations.xml similarity index 100% rename from desktop/toolkit/gnome/gtk2/translations.xml rename to desktop/toolkit/gtk/gtk2/translations.xml diff --git a/x11/library/pixman/actions.py b/x11/library/pixman/actions.py new file mode 100644 index 0000000000..39cd676b25 --- /dev/null +++ b/x11/library/pixman/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "COPYING", "ChangeLog", "README") diff --git a/x11/library/pixman/pspec.xml b/x11/library/pixman/pspec.xml new file mode 100644 index 0000000000..743394d2a0 --- /dev/null +++ b/x11/library/pixman/pspec.xml @@ -0,0 +1,114 @@ + + + + + pixman + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + Pixel manipulation library + Pixman contains lowlevel pixel manipulation routines. + mirrors://xorg/individual/lib/pixman-0.32.6.tar.bz2 + + + + pixman + + /usr/lib + /usr/share/doc + + + + + pixman-devel + Development files for pixman + + pixman + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + pixman-32bit + emul32 + 32-bit shared libraries for pixman + emul32 + + glibc-32bit + + + pixman + glibc-32bit + + + /usr/lib32 + + + + + + 2014-08-31 + 0.32.6 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-16 + 0.32.4 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 0.32.4 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-07 + 0.30.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-12 + 0.30.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-25 + 0.30.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-21 + 0.30.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-22 + 0.28.0 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/x11/library/pixman/translations.xml b/x11/library/pixman/translations.xml new file mode 100644 index 0000000000..fde90a91fd --- /dev/null +++ b/x11/library/pixman/translations.xml @@ -0,0 +1,18 @@ + + + + pixman + Piksel işleme kitaplığı + Pixman, düşük düzey piksel işleme yordamlarını içerir. + + + + pixman-devel + pixman için geliştirme dosyaları + + + + pixman-32bit + pixman için 32-bit paylaşımlı kitaplıklar + + From 9cdbed48796dc76856d591526ea9accf2036559e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sat, 4 Jul 2015 00:34:05 +0300 Subject: [PATCH 086/175] fix mesa --- desktop/toolkit/gtk/cairo/actions.py | 37 ++++ ...-crash-when-swapping-a-0-sized-glyph.patch | 43 ++++ ...-crash-when-swapping-a-0-sized-glyph.patch | 43 ++++ .../toolkit/gtk/cairo/files/git_fixes.diff | 33 +++ desktop/toolkit/gtk/cairo/pspec.xml | 198 +++++++++++++++++ desktop/toolkit/gtk/cairo/translations.xml | 18 ++ desktop/toolkit/gtk/pango/actions.py | 37 ++++ desktop/toolkit/gtk/pango/comar/package.py | 10 + .../gtk/pango/files/pango-1.32.1-lib64.patch | 44 ++++ desktop/toolkit/gtk/pango/pspec.xml | 202 ++++++++++++++++++ desktop/toolkit/gtk/pango/translations.xml | 24 +++ x11/library/mesa/pspec.xml | 11 +- 12 files changed, 695 insertions(+), 5 deletions(-) create mode 100644 desktop/toolkit/gtk/cairo/actions.py create mode 100644 desktop/toolkit/gtk/cairo/files/0001-xlib-Don-t-crash-when-swapping-a-0-sized-glyph.patch create mode 100644 desktop/toolkit/gtk/cairo/files/0002-xcb-Don-t-crash-when-swapping-a-0-sized-glyph.patch create mode 100644 desktop/toolkit/gtk/cairo/files/git_fixes.diff create mode 100644 desktop/toolkit/gtk/cairo/pspec.xml create mode 100644 desktop/toolkit/gtk/cairo/translations.xml create mode 100644 desktop/toolkit/gtk/pango/actions.py create mode 100644 desktop/toolkit/gtk/pango/comar/package.py create mode 100644 desktop/toolkit/gtk/pango/files/pango-1.32.1-lib64.patch create mode 100644 desktop/toolkit/gtk/pango/pspec.xml create mode 100644 desktop/toolkit/gtk/pango/translations.xml diff --git a/desktop/toolkit/gtk/cairo/actions.py b/desktop/toolkit/gtk/cairo/actions.py new file mode 100644 index 0000000000..f7bc4bd107 --- /dev/null +++ b/desktop/toolkit/gtk/cairo/actions.py @@ -0,0 +1,37 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + pisitools.flags.add("-flto -ffat-lto-objects") + autotools.autoreconf("-vfi") + autotools.configure("--disable-static \ + --enable-xlib \ + --enable-ft \ + --enable-ps \ + --enable-pdf \ + --enable-svg \ + --enable-tee \ + --enable-gl \ + --enable-gobject \ + --disable-gtk-doc") + + pisitools.dosed("libtool", "^(hardcode_libdir_flag_spec=).*", '\\1""') + pisitools.dosed("libtool", "^(runpath_var=)LD_RUN_PATH", "\\1DIE_RPATH_DIE") + pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.removeDir("/usr/share/gtk-doc") + pisitools.dodoc("AUTHORS", "README", "ChangeLog", "NEWS", "COPYING", "COPYING-LGPL-2.1", "COPYING-MPL-1.1") diff --git a/desktop/toolkit/gtk/cairo/files/0001-xlib-Don-t-crash-when-swapping-a-0-sized-glyph.patch b/desktop/toolkit/gtk/cairo/files/0001-xlib-Don-t-crash-when-swapping-a-0-sized-glyph.patch new file mode 100644 index 0000000000..c94d7b32c1 --- /dev/null +++ b/desktop/toolkit/gtk/cairo/files/0001-xlib-Don-t-crash-when-swapping-a-0-sized-glyph.patch @@ -0,0 +1,43 @@ +From 8dc3b629434ce256f8e6a584c5853ae9b4230c33 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Wed, 31 Oct 2012 16:06:51 -0400 +Subject: [PATCH 1/2] xlib: Don't crash when swapping a 0-sized glyph + +malloc(0) needn't return NULL, and on glibc, doesn't. Then we encounter +a loop of the form do { ... } while (--c), which doesn't do quite what +you were hoping for when c is initially 0. + +Since there's nothing to swap in this case, just bomb out. + +Signed-off-by: Adam Jackson +--- + src/cairo-xlib-render-compositor.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/cairo-xlib-render-compositor.c b/src/cairo-xlib-render-compositor.c +index 74c43e9..e38a659 100644 +--- a/src/cairo-xlib-render-compositor.c ++++ b/src/cairo-xlib-render-compositor.c +@@ -1251,6 +1251,9 @@ _cairo_xlib_surface_add_glyph (cairo_xlib_display_t *display, + unsigned char *d; + unsigned char *new, *n; + ++ if (c == 0) ++ break; ++ + new = malloc (c); + if (!new) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); +@@ -1276,6 +1279,9 @@ _cairo_xlib_surface_add_glyph (cairo_xlib_display_t *display, + const uint32_t *d; + uint32_t *new, *n; + ++ if (c == 0) ++ break; ++ + new = malloc (4 * c); + if (unlikely (new == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); +-- +1.7.12.1 + diff --git a/desktop/toolkit/gtk/cairo/files/0002-xcb-Don-t-crash-when-swapping-a-0-sized-glyph.patch b/desktop/toolkit/gtk/cairo/files/0002-xcb-Don-t-crash-when-swapping-a-0-sized-glyph.patch new file mode 100644 index 0000000000..7d2b40554e --- /dev/null +++ b/desktop/toolkit/gtk/cairo/files/0002-xcb-Don-t-crash-when-swapping-a-0-sized-glyph.patch @@ -0,0 +1,43 @@ +From 4cad9bf9f0744efe17f1b70548cd2059df071e81 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Wed, 31 Oct 2012 16:12:58 -0400 +Subject: [PATCH 2/2] xcb: Don't crash when swapping a 0-sized glyph + +malloc(0) needn't return NULL, and on glibc, doesn't. Then we encounter +a loop of the form do { ... } while (--c), which doesn't do quite what +you were hoping for when c is initially 0. + +Since there's nothing to swap in this case, just bomb out. + +Signed-off-by: Adam Jackson +--- + src/cairo-xcb-surface-render.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/cairo-xcb-surface-render.c b/src/cairo-xcb-surface-render.c +index 27ed113..16d1ef8 100644 +--- a/src/cairo-xcb-surface-render.c ++++ b/src/cairo-xcb-surface-render.c +@@ -4461,6 +4461,9 @@ _cairo_xcb_surface_add_glyph (cairo_xcb_connection_t *connection, + const uint8_t *d; + uint8_t *new, *n; + ++ if (c == 0) ++ break; ++ + new = malloc (c); + if (unlikely (new == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); +@@ -4489,6 +4492,9 @@ _cairo_xcb_surface_add_glyph (cairo_xcb_connection_t *connection, + const uint32_t *d; + uint32_t *new, *n; + ++ if (c == 0) ++ break; ++ + new = malloc (4 * c); + if (unlikely (new == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); +-- +1.7.12.1 + diff --git a/desktop/toolkit/gtk/cairo/files/git_fixes.diff b/desktop/toolkit/gtk/cairo/files/git_fixes.diff new file mode 100644 index 0000000000..93af054eef --- /dev/null +++ b/desktop/toolkit/gtk/cairo/files/git_fixes.diff @@ -0,0 +1,33 @@ +From 2de69581c28bf115852037ca41eba13cb7335976 Mon Sep 17 00:00:00 2001 +From: Massimo Valentini +Date: Sun, 19 Oct 2014 09:19:10 +0200 +Subject: tor-scan-converter: can't do_fullrow when intersection in row + + 0.5subrow + +the active edges list must be left sorted at the next possible use +and since full_row does not deal with intersections it is not usable +when there is an intersection in the top half of the next row first +subrow + +Reported-and-tested-by: Matthew Leach +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85151 +Reviewed-by: Chris Wilson + +diff --git a/src/cairo-tor-scan-converter.c b/src/cairo-tor-scan-converter.c +index 4adcafb..14922d0 100644 +--- a/src/cairo-tor-scan-converter.c ++++ b/src/cairo-tor-scan-converter.c +@@ -1167,8 +1167,8 @@ can_do_full_row (struct active_list *active) + + if (e->dy) { + struct quorem x = e->x; +- x.quo += e->dxdy_full.quo - e->dxdy.quo/2; +- x.rem += e->dxdy_full.rem - e->dxdy.rem/2; ++ x.quo += e->dxdy_full.quo; ++ x.rem += e->dxdy_full.rem; + if (x.rem < 0) { + x.quo--; + x.rem += e->dy; +-- +cgit v0.10.2 + diff --git a/desktop/toolkit/gtk/cairo/pspec.xml b/desktop/toolkit/gtk/cairo/pspec.xml new file mode 100644 index 0000000000..3cfc351b96 --- /dev/null +++ b/desktop/toolkit/gtk/cairo/pspec.xml @@ -0,0 +1,198 @@ + + + + + cairo + http://cairographics.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + MPL-1.1 + library + 2D graphics library with bindings of many programming languages + Cairo is a 2D graphics library with support for multiple output devices (and fileformats). + http://cairographics.org/releases/cairo-1.14.2.tar.xz + + zlib-devel + glib2-devel + libX11-devel + libpng-devel + libxcb-devel + freetype-devel + libgcc + fontconfig-devel + libXrender-devel + pixman-devel + xcb-util-devel + libXext-devel + mesa-devel + + + + + + + + + + + + cairo + + zlib + glib2 + libX11 + libpng + libxcb + freetype + libgcc + fontconfig + libXrender + pixman + libXext + mesa + lzo + + + /usr/bin + /usr/share/man + /usr/share/doc + /usr/share/gtk-doc + /usr/share/info + /usr/lib + + + + + cairo-devel + Development files for cairo + + cairo + mesa-devel + pixman-devel + libXext-devel + fontconfig-devel + libXrender-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + cairo-32bit + emul32 + 32-bit shared libraries for cairo + emul32 + + lzo-32bit + mesa-32bit + zlib-32bit + glib2-32bit + libX11-32bit + pixman-32bit + libpng-32bit + libxcb-32bit + libXext-32bit + freetype-32bit + fontconfig-32bit + libXrender-32bit + + + + cairo + mesa-32bit + zlib-32bit + glib2-32bit + libX11-32bit + pixman-32bit + libpng-32bit + libxcb-32bit + libXext-32bit + freetype-32bit + fontconfig-32bit + libXrender-32bit + lzo-32bit + + + /usr/lib32/lib* + /usr/lib32/cairo + + + + + + 2015-04-18 + 1.14.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2015-01-28 + 1.14.0 + Version bump. + Ergün Salman + Poyraz76@pisilinux.org + + + 2014-05-17 + 1.12.16 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2013-10-09 + 1.12.16 + Version bump, fixes. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-29 + 1.12.14 + Fix dependencies. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-23 + 1.12.14 + Dep fixed + PisiLinux Community + admins@pisilinux.org + + + 2013-02-24 + 1.12.14 + Version bump, missing dep. + Ertan Güven + ertan@pisilinux.org + + + 2013-01-22 + 1.12.10 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-23 + 1.12.8 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/desktop/toolkit/gtk/cairo/translations.xml b/desktop/toolkit/gtk/cairo/translations.xml new file mode 100644 index 0000000000..f944d55157 --- /dev/null +++ b/desktop/toolkit/gtk/cairo/translations.xml @@ -0,0 +1,18 @@ + + + + cairo + Birden çok çıktı cihazına destek veren bir 2 boyutlu grafik kitaplığı + Cairo est une librairie graphique 2D supportant de nombreux périphériques de sortie. + + + + cairo-devel + cairo için geliştirme dosyaları + + + + cairo-32bit + cairo için 32-bit paylaşımlı kitaplıklar + + diff --git a/desktop/toolkit/gtk/pango/actions.py b/desktop/toolkit/gtk/pango/actions.py new file mode 100644 index 0000000000..bb26feb83e --- /dev/null +++ b/desktop/toolkit/gtk/pango/actions.py @@ -0,0 +1,37 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + + +def setup(): + if get.buildTYPE()=="emul32": + pisitools.dosed("pango/modules.c", "(pango\.modules)", r"\1-32") + autotools.autoreconf("-fiv") + autotools.configure("--disable-static \ + --sysconfdir=/etc \ + --with-included-modules=basic-fc \ + --%sable-introspection" % ("dis" if get.buildTYPE()=="emul32" else "en")) + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + if get.buildTYPE()=="emul32": + shelltools.move("pango/.libs/pango-querymodules", "pango/.libs/pango-querymodules-32") + pisitools.dobin("pango/.libs/pango-querymodules-32") + return + + pisitools.dodir("/etc/pango") + shelltools.touch(get.installDIR() +"/etc/pango/pango.modules") + + pisitools.dodoc("AUTHORS", "ChangeLog*", "COPYING", "README", "NEWS") diff --git a/desktop/toolkit/gtk/pango/comar/package.py b/desktop/toolkit/gtk/pango/comar/package.py new file mode 100644 index 0000000000..e3eebd3b5b --- /dev/null +++ b/desktop/toolkit/gtk/pango/comar/package.py @@ -0,0 +1,10 @@ +#!/usr/bin/python + +import os + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + f = open("/etc/pango/pango.modules", "w") + p = os.popen("/usr/bin/pango-querymodules", "r") + f.writelines(p.readlines()) + f.close() + p.close() diff --git a/desktop/toolkit/gtk/pango/files/pango-1.32.1-lib64.patch b/desktop/toolkit/gtk/pango/files/pango-1.32.1-lib64.patch new file mode 100644 index 0000000000..0820c78f12 --- /dev/null +++ b/desktop/toolkit/gtk/pango/files/pango-1.32.1-lib64.patch @@ -0,0 +1,44 @@ +From c41144ce0d72cb19d347a46ef9386f257f14fb58 Mon Sep 17 00:00:00 2001 +From: Gilles Dartiguelongue +Date: Sun, 28 Oct 2012 23:19:39 +0100 +Subject: [PATCH] Add multilib support + +pango.modules list modules specific to a host architecture. +Add host triplet in path so that machine able to run multiple +triplet have a proper file per pango library. +--- + pango/Makefile.am | 1 + + pango/pango-utils.c | 4 ++-- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/pango/Makefile.am b/pango/Makefile.am +index ab092c9..558108b 100644 +--- a/pango/Makefile.am ++++ b/pango/Makefile.am +@@ -17,6 +17,7 @@ INCLUDES = \ + -DPANGO_ENABLE_BACKEND \ + -DPANGO_ENABLE_ENGINE \ + -DSYSCONFDIR=\"$(sysconfdir)\" \ ++ -DHOST=\"$(host_triplet)\" \ + -DLIBDIR=\"$(libdir)\" \ + -I$(top_srcdir) \ + -I$(top_builddir) \ +diff --git a/pango/pango-utils.c b/pango/pango-utils.c +index 18ffa26..3b88f15 100644 +--- a/pango/pango-utils.c ++++ b/pango/pango-utils.c +@@ -738,9 +738,9 @@ pango_get_sysconf_subdirectory (void) + #else + const char *sysconfdir = g_getenv ("PANGO_SYSCONFDIR"); + if (sysconfdir != NULL) +- tmp_result = g_build_filename (sysconfdir, "pango", NULL); ++ tmp_result = g_build_filename (sysconfdir, "pango", HOST, NULL); + else +- tmp_result = SYSCONFDIR "/pango"; ++ tmp_result = SYSCONFDIR "/pango/" HOST; + #endif + g_once_init_leave((gsize*)&result, (gsize)tmp_result); + } +-- +1.7.12.4 + diff --git a/desktop/toolkit/gtk/pango/pspec.xml b/desktop/toolkit/gtk/pango/pspec.xml new file mode 100644 index 0000000000..b9b19eb868 --- /dev/null +++ b/desktop/toolkit/gtk/pango/pspec.xml @@ -0,0 +1,202 @@ + + + + + pango + http://www.pango.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + FTL + library + Text rendering and layout library + Pango is a library for laying out and rendering of text, with an emphasis on internationalization. Pango can be used anywhere that text layout is needed, though most of the work on Pango so far has been done in the context of the GTK+ widget toolkit. Pango forms the core of text and font handling for GTK+-2.x. + mirrors://gnome/pango/1.36/pango-1.36.8.tar.xz + + gtk-doc + glib2-devel + libX11-devel + freetype-devel + cairo-devel + libXft-devel + harfbuzz-devel + fontconfig-devel + libXrender-devel + + + pango-1.32.1-lib64.patch + + + + + pango + + glib2 + libX11 + freetype + cairo + libXft + harfbuzz + + fontconfig + libXrender + + + /etc/pango + /usr/bin + /usr/lib/libpango* + /usr/lib/girepository-1.0 + /usr/lib/pango + /usr/share/gir-1.0 + /usr/share/man + /usr/share/doc + + + System.Package + + + + + pango-devel + Development files for pango + + pango + cairo-devel + libXft-devel + harfbuzz-devel + fontconfig-devel + + + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/include + + + + + pango-docs + data:doc + Pango reference documents + + /usr/share/gtk-doc + + + + + pango-32bit + emul32 + 32-bit shared libraries for pango + emul32 + + cairo-32bit + glib2-32bit + libX11-32bit + libXft-32bit + freetype-32bit + libXrender-32bit + fontconfig-32bit + libffi-32bit + harfbuzz-32bit + + + pango + cairo-32bit + glib2-32bit + libX11-32bit + libXft-32bit + freetype-32bit + libXrender-32bit + fontconfig-32bit + libffi-32bit + harfbuzz-32bit + + + /usr/bin/pango-querymodules-32 + /usr/lib32/libpango* + /usr/lib32/girepository-1.0 + /usr/lib32/pango + + + + + + 2015-03-18 + 1.36.8 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-07-07 + 1.36.5 + Version Bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-17 + 1.36.3 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-30 + 1.36.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-05 + 1.36.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-10 + 1.36.0 + Version bump, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-17 + 1.34.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-20 + 1.34.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-07 + 1.32.6 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-22 + 1.32.5 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2011-07-07 + 1.30.1 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + diff --git a/desktop/toolkit/gtk/pango/translations.xml b/desktop/toolkit/gtk/pango/translations.xml new file mode 100644 index 0000000000..2e786da1de --- /dev/null +++ b/desktop/toolkit/gtk/pango/translations.xml @@ -0,0 +1,24 @@ + + + + pango + Metin görüntüleme kitaplığı + Outil de positionnement et de rendu de texte. + Pango, özellikle yerelleştirme ile birlikte metin düzenlemek ve biçimlendirmek için bir kitaplıktır. Pango metin biçimlendirmenin gerekli olduğu her yerde kullanılabilir ama şimdiye kadar ki birçok Pango çalışması GTK+ araç takımının parçası ile tamamlandı. Pango formları, GTK+-2.x. için temel metin ve yazı tipini yönetir. + + + + pango-docs + Pango referans dokümanları + + + + pango-devel + pango için geliştirme dosyaları + + + + pango-32bit + pango için 32-bit paylaşımlı kitaplıklar + + diff --git a/x11/library/mesa/pspec.xml b/x11/library/mesa/pspec.xml index ef9d67419b..04e8daed24 100755 --- a/x11/library/mesa/pspec.xml +++ b/x11/library/mesa/pspec.xml @@ -15,6 +15,7 @@ Mesa is an open-source implementation of the OpenGL specification - a system for rendering interactive 3D graphics. ftp://ftp.freedesktop.org/pub/mesa/10.5.5/mesa-10.5.5.tar.gz + llvm llvm-libs llvm-clang-devel xorg-proto @@ -43,9 +44,9 @@ llvm-libs llvm-clang - libX11 - libgcc - libxcb + libX11 + libgcc + libxcb expat libdrm libXext @@ -122,8 +123,8 @@ glibc-32bit - libgcc - libcxb-32bit + libgcc + libxcb-32bit expat-32bit libX11-32bit libdrm-32bit From 91c9d609a9972e61946f0b3790891a9a770cddb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sat, 4 Jul 2015 13:50:43 +0300 Subject: [PATCH 087/175] mesa need alternatives in comar/package.py --- desktop/toolkit/gtk/component.xml | 3 +++ network/misc/component.xml | 3 +++ util/crypt/component.xml | 3 +++ x11/library/mesa/pspec.xml | 2 ++ 4 files changed, 11 insertions(+) create mode 100644 desktop/toolkit/gtk/component.xml create mode 100644 network/misc/component.xml create mode 100644 util/crypt/component.xml diff --git a/desktop/toolkit/gtk/component.xml b/desktop/toolkit/gtk/component.xml new file mode 100644 index 0000000000..153eeebd74 --- /dev/null +++ b/desktop/toolkit/gtk/component.xml @@ -0,0 +1,3 @@ + + desktop.toolkit.gtk + diff --git a/network/misc/component.xml b/network/misc/component.xml new file mode 100644 index 0000000000..f2e57834ca --- /dev/null +++ b/network/misc/component.xml @@ -0,0 +1,3 @@ + + network.misc + diff --git a/util/crypt/component.xml b/util/crypt/component.xml new file mode 100644 index 0000000000..a4f01a0b9f --- /dev/null +++ b/util/crypt/component.xml @@ -0,0 +1,3 @@ + + util.crypt + diff --git a/x11/library/mesa/pspec.xml b/x11/library/mesa/pspec.xml index 04e8daed24..6e343ae13f 100755 --- a/x11/library/mesa/pspec.xml +++ b/x11/library/mesa/pspec.xml @@ -42,6 +42,7 @@ mesa + alternatives llvm-libs llvm-clang libX11 @@ -102,6 +103,7 @@ 32-bit shared libraries for mesa emul32 + alternatives expat-32bit libXt-devel libXv-32bit From 553d40c64af12496d9580a7373c32e200b007eb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sat, 4 Jul 2015 13:52:58 +0300 Subject: [PATCH 088/175] mesa-32bit too --- x11/library/mesa/pspec.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x11/library/mesa/pspec.xml b/x11/library/mesa/pspec.xml index 6e343ae13f..f5cdad798b 100755 --- a/x11/library/mesa/pspec.xml +++ b/x11/library/mesa/pspec.xml @@ -103,7 +103,6 @@ 32-bit shared libraries for mesa emul32 - alternatives expat-32bit libXt-devel libXv-32bit @@ -124,6 +123,7 @@ libxshmfence-32bit + alternatives glibc-32bit libgcc libxcb-32bit From 6da3190be0448f18053aa49bf12999b4521efe74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sat, 4 Jul 2015 14:41:54 +0300 Subject: [PATCH 089/175] works for pango --- desktop/font/fontconfig/pspec.xml | 8 +++ desktop/font/harfbuzz/pspec.xml | 2 + desktop/toolkit/gtk/cairo/actions.py | 20 +++--- desktop/toolkit/gtk/cairo/pspec.xml | 7 +-- office/misc/component.xml | 3 + office/misc/graphite2/actions.py | 20 ++++++ office/misc/graphite2/pspec.xml | 84 ++++++++++++++++++++++++++ office/misc/graphite2/translations.xml | 13 ++++ 8 files changed, 144 insertions(+), 13 deletions(-) create mode 100644 office/misc/component.xml create mode 100644 office/misc/graphite2/actions.py create mode 100644 office/misc/graphite2/pspec.xml create mode 100644 office/misc/graphite2/translations.xml diff --git a/desktop/font/fontconfig/pspec.xml b/desktop/font/fontconfig/pspec.xml index 61b2fc70c0..077918bd05 100644 --- a/desktop/font/fontconfig/pspec.xml +++ b/desktop/font/fontconfig/pspec.xml @@ -14,6 +14,8 @@ Fontconfig is a library designed to provide system-wide font configuration, customization and application access. http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.11.1.tar.bz2 + freetype-devel + expat-devel @@ -31,6 +33,8 @@ fontconfig + freetype + expat /etc/fonts @@ -51,6 +55,8 @@ Development files for fontconfig fontconfig + freetype-devel + expat-devel /usr/include @@ -69,11 +75,13 @@ expat-32bit freetype-32bit + glibc-32bit fontconfig expat-32bit freetype-32bit + glibc-32bit /usr/lib32 diff --git a/desktop/font/harfbuzz/pspec.xml b/desktop/font/harfbuzz/pspec.xml index cf0467dc16..77eae53ff7 100644 --- a/desktop/font/harfbuzz/pspec.xml +++ b/desktop/font/harfbuzz/pspec.xml @@ -18,6 +18,8 @@ glib2-devel icu4c-devel graphite2-devel + freetype-devel + expat-devel diff --git a/desktop/toolkit/gtk/cairo/actions.py b/desktop/toolkit/gtk/cairo/actions.py index f7bc4bd107..8c5488c775 100644 --- a/desktop/toolkit/gtk/cairo/actions.py +++ b/desktop/toolkit/gtk/cairo/actions.py @@ -11,17 +11,19 @@ from pisi.actionsapi import get def setup(): pisitools.flags.add("-flto -ffat-lto-objects") - autotools.autoreconf("-vfi") +# autotools.autoreconf("-vfi") autotools.configure("--disable-static \ - --enable-xlib \ + --enable-xlib \ + --disable-drm \ + --enable-xml \ --enable-ft \ - --enable-ps \ - --enable-pdf \ - --enable-svg \ - --enable-tee \ - --enable-gl \ - --enable-gobject \ - --disable-gtk-doc") + --disable-ps \ + --disable-pdf \ + --disable-svg \ + --enable-tee \ + --enable-gl \ + --enable-gobject \ + --disable-gtk-doc") pisitools.dosed("libtool", "^(hardcode_libdir_flag_spec=).*", '\\1""') pisitools.dosed("libtool", "^(runpath_var=)LD_RUN_PATH", "\\1DIE_RPATH_DIE") diff --git a/desktop/toolkit/gtk/cairo/pspec.xml b/desktop/toolkit/gtk/cairo/pspec.xml index 3cfc351b96..6352076e83 100644 --- a/desktop/toolkit/gtk/cairo/pspec.xml +++ b/desktop/toolkit/gtk/cairo/pspec.xml @@ -15,6 +15,7 @@ Cairo is a 2D graphics library with support for multiple output devices (and fileformats). http://cairographics.org/releases/cairo-1.14.2.tar.xz + lzo-devel zlib-devel glib2-devel libX11-devel @@ -22,6 +23,7 @@ libxcb-devel freetype-devel libgcc + expat-devel fontconfig-devel libXrender-devel pixman-devel @@ -43,19 +45,18 @@ cairo + lzo zlib glib2 libX11 libpng libxcb freetype - libgcc fontconfig libXrender pixman libXext mesa - lzo /usr/bin @@ -91,7 +92,6 @@ 32-bit shared libraries for cairo emul32 - lzo-32bit mesa-32bit zlib-32bit glib2-32bit @@ -122,7 +122,6 @@ freetype-32bit fontconfig-32bit libXrender-32bit - lzo-32bit /usr/lib32/lib* diff --git a/office/misc/component.xml b/office/misc/component.xml new file mode 100644 index 0000000000..9e752cd532 --- /dev/null +++ b/office/misc/component.xml @@ -0,0 +1,3 @@ + + office.misc + diff --git a/office/misc/graphite2/actions.py b/office/misc/graphite2/actions.py new file mode 100644 index 0000000000..951a847ba5 --- /dev/null +++ b/office/misc/graphite2/actions.py @@ -0,0 +1,20 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import cmaketools +from pisi.actionsapi import pisitools + + +def setup(): + cmaketools.configure() + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("COPYING", "Todo*") diff --git a/office/misc/graphite2/pspec.xml b/office/misc/graphite2/pspec.xml new file mode 100644 index 0000000000..ed587de5b5 --- /dev/null +++ b/office/misc/graphite2/pspec.xml @@ -0,0 +1,84 @@ + + + + + graphite2 + http://sourceforge.net/projects/silgraphite + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + graphite2 + app:gui + SILGraphite: rendering non-roman scripts + Graphite is a project within SIL's scripts and software dev groups to provide cross-platform rendering for complex writing systems. + mirrors://sourceforge/silgraphite/graphite2-1.2.4.tgz + + cmake + freetype-devel + + + + + graphite2 + + + + /usr/bin + /usr/share/doc + /usr/share/graphite2 + /usr/lib/ + + + + + graphite2-devel + graphite2 için geliştirme dosyaları + + graphite2 + + + /usr/include + /usr/lib/pkgconfig/ + + + + + + 2014-05-17 + 1.2.4 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-25 + 1.2.1 + Rebuild. + Kamil Atlı + suvarice@gmail.com + + + 2013-08-21 + 1.2.1 + Rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-02 + 1.2.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-12-28 + 1.2.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/office/misc/graphite2/translations.xml b/office/misc/graphite2/translations.xml new file mode 100644 index 0000000000..702e12fe32 --- /dev/null +++ b/office/misc/graphite2/translations.xml @@ -0,0 +1,13 @@ + + + + graphite2 + SILGraphite: rendering non-roman scripts + Graphite is a project within SIL's scripts and software dev groups to provide cross-platform rendering for complex writing systems. + + + + graphite2-devel + graphite2 için geliştirme dosyaları + + From 4b208b46d2503a109ab9c57f7bff734a6d0df32d Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:10:25 +0300 Subject: [PATCH 090/175] newt moved into main for pisi 2.0 --- desktop/toolkit/newt/actions.py | 33 +++++++++++ desktop/toolkit/newt/pspec.xml | 85 +++++++++++++++++++++++++++ desktop/toolkit/newt/translations.xml | 13 ++++ 3 files changed, 131 insertions(+) create mode 100644 desktop/toolkit/newt/actions.py create mode 100644 desktop/toolkit/newt/pspec.xml create mode 100644 desktop/toolkit/newt/translations.xml diff --git a/desktop/toolkit/newt/actions.py b/desktop/toolkit/newt/actions.py new file mode 100644 index 0000000000..9d379e5e61 --- /dev/null +++ b/desktop/toolkit/newt/actions.py @@ -0,0 +1,33 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +def setup(): + # use python2.x + pisitools.dosed("configure", "(\/usr\/include\/)python\*", r"\1python2*") + # fix unused direct dependency + pisitools.dosed("Makefile.in", "(PLFLAGS=)`\$\$pyconfig --libs`", r"\1'-lpython2.7'") + pisitools.dosed("Makefile.in", "(PLDFLAGS=)`\$\$pyconfig --ldflags`", r"\1'-lpython2.7 -Xlinker -export-dynamic'") + + shelltools.echo("config.h.in", "#define USE_INTERP_RESULT 1") + shelltools.export("PYTHON", "/usr/bin/python2.7") + autotools.configure("\ + --with-gpm-support \ + ") + +def build(): + autotools.make() + +def install(): + autotools.install() + + # remove static lib + pisitools.remove("/usr/lib/libnewt.a") + + pisitools.dodoc("CHANGES", "COPYING") diff --git a/desktop/toolkit/newt/pspec.xml b/desktop/toolkit/newt/pspec.xml new file mode 100644 index 0000000000..927aa1b1e8 --- /dev/null +++ b/desktop/toolkit/newt/pspec.xml @@ -0,0 +1,85 @@ + + + + + newt + https://fedorahosted.org/newt/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + app:console + A windowing toolkit for text mode + newt is a windowing toolkit for text mode, which provides many widgets and stackable windows. + https://fedorahosted.org/releases/n/e/newt/newt-0.52.17.tar.gz + + tcl-devel + + + + + newt + + tcl + + + /usr/bin + /usr/lib + /usr/share/locale + /usr/share/doc + /usr/share/man + + + + + newt-devel + Development files for newt + + newt + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-07-05 + 0.52.17 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-05 + 0.52.16 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-26 + 0.52.14 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-01-30 + 0.52.14 + Build with new relaese Tcl + Erdinç Gültekin + admins@pisilinux.org + + + 2012-09-17 + 0.52.14 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + \ No newline at end of file diff --git a/desktop/toolkit/newt/translations.xml b/desktop/toolkit/newt/translations.xml new file mode 100644 index 0000000000..5274ec3a68 --- /dev/null +++ b/desktop/toolkit/newt/translations.xml @@ -0,0 +1,13 @@ + + + + newt + Metin tabanlı bir pencere araç seti. + Newt, metin tabanlı bir pencere araç setidir. Pek çok alet ve istiflenebilir pencere sağlar. + + + + newt-devel + newt için geliştirme dosyaları + + From a421b3e7350fd66caa5c3ebf6df81d6c2b23365f Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:10:40 +0300 Subject: [PATCH 091/175] moved into main for pisi 2.0 --- hardware/bluetooth/bluez/actions.py | 83 ++++++++++ hardware/bluetooth/bluez/comar/service.py | 33 ++++ .../bluez-5.18-obexd_without_systemd-1.patch | 61 +++++++ .../bluez-5.20-obexd_without_systemd-1.patch | 61 +++++++ .../bluez-5.27-obexd_without_systemd-1.patch | 61 +++++++ hardware/bluetooth/bluez/pspec.xml | 156 ++++++++++++++++++ hardware/bluetooth/bluez/translations.xml | 18 ++ 7 files changed, 473 insertions(+) create mode 100644 hardware/bluetooth/bluez/actions.py create mode 100644 hardware/bluetooth/bluez/comar/service.py create mode 100644 hardware/bluetooth/bluez/files/bluez-5.18-obexd_without_systemd-1.patch create mode 100644 hardware/bluetooth/bluez/files/bluez-5.20-obexd_without_systemd-1.patch create mode 100644 hardware/bluetooth/bluez/files/bluez-5.27-obexd_without_systemd-1.patch create mode 100644 hardware/bluetooth/bluez/pspec.xml create mode 100644 hardware/bluetooth/bluez/translations.xml diff --git a/hardware/bluetooth/bluez/actions.py b/hardware/bluetooth/bluez/actions.py new file mode 100644 index 0000000000..9526d3a88c --- /dev/null +++ b/hardware/bluetooth/bluez/actions.py @@ -0,0 +1,83 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + + #shelltools.system("sed -i -e '/SystemdService/d' obexd/src/org.bluez.obex.service.in") + pisitools.dosed("obexd/src/org.bluez.obex.service.in", "SystemdService", deleteLine=True) + autotools.autoreconf("-fi") + autotools.configure("--prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --libexecdir=/usr/libexec/ \ + --enable-sixaxis \ + --enable-experimental \ + --disable-android \ + --enable-datafiles \ + --enable-optimization \ + --enable-pie \ + --enable-threads \ + --enable-library \ + --enable-tools \ + --enable-manpages \ + --enable-monitor \ + --enable-udev \ + --enable-test \ + --disable-systemd") + + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s install-libexecPROGRAMS install-dbussessionbusDATA install-dbussystembusDATA install-dbusDATA install-man8" % get.installDIR()) + + + # Install conf files + for i in ["profiles/input", "profiles/network" ,"src"]: + pisitools.insinto("/etc/bluetooth", "%s/*.conf" % (i)) + + + # Simple test tools + for i in ["bluezutils.py", + "dbusdef.py", + "ftp-client", + "list-devices", + "map-client", + "monitor-bluetooth", + "opp-client", + "pbap-client", + "sap_client.py", + "simple-agent", + "simple-endpoint", + "simple-player", + "test-adapter", + "test-alert", + "test-cyclingspeed", + "test-device", + "test-discovery", + "test-health", + "test-health-sink", + "test-heartrate", + "test-hfp", + "test-manager", + "test-nap", + "test-network", + "test-profile", + "test-proximity", + "test-sap-server", + "test-thermometer"]: + pisitools.dobin("test/%s" % i) + # for i in + # pisitools.dodoc("doc/%s" % i) + # Install documents + pisitools.dodoc("AUTHORS", "ChangeLog", "README") diff --git a/hardware/bluetooth/bluez/comar/service.py b/hardware/bluetooth/bluez/comar/service.py new file mode 100644 index 0000000000..d64306d997 --- /dev/null +++ b/hardware/bluetooth/bluez/comar/service.py @@ -0,0 +1,33 @@ +from comar.service import * +import os + +serviceType = "local" +serviceDesc = _({"en": "Bluetooth Service", + "tr": "Bluetooth Hizmeti"}) +serviceDefault = "on" + +PIDFILE="/run/bluez.pid" +DAEMON ="/usr/libexec/bluetooth/bluetoothd" + +@synchronized +def start(): + + startService(command=DAEMON, + pidfile=PIDFILE, + detach=True, + donotify=True) + + os.system("pidof bluez + /usr/libexec/bluetooth/bluetoothd > /run/bluez.pid") + +@synchronized +def stop(): + stopService(pidfile=PIDFILE, + donotify=True) + + try: + os.unlink(PIDFILE) + except: + pass + +def status(): + return isServiceRunning(pidfile=PIDFILE) diff --git a/hardware/bluetooth/bluez/files/bluez-5.18-obexd_without_systemd-1.patch b/hardware/bluetooth/bluez/files/bluez-5.18-obexd_without_systemd-1.patch new file mode 100644 index 0000000000..749787c5b3 --- /dev/null +++ b/hardware/bluetooth/bluez/files/bluez-5.18-obexd_without_systemd-1.patch @@ -0,0 +1,61 @@ +Submitted By: Armin K. +Date: 2013-04-29 +Initial Package Version: 5.17 +Upstream Status: unknown +Origin: Arch Linux (Giovanni Campagna) +Description: Allow using obexd without systemd in the user session + +Not all sessions run systemd --user (actually, the majority +doesn't), so the dbus daemon must be able to spawn obexd +directly, and to do so it needs the full path of the daemon. +--- + Makefile.obexd | 4 ++-- + obexd/src/org.bluez.obex.service | 4 ---- + obexd/src/org.bluez.obex.service.in | 4 ++++ + 3 files changed, 6 insertions(+), 6 deletions(-) + delete mode 100644 obexd/src/org.bluez.obex.service + create mode 100644 obexd/src/org.bluez.obex.service.in + +diff --git a/Makefile.obexd b/Makefile.obexd +index 3760867..142e7c3 100644 +--- a/Makefile.obexd ++++ b/Makefile.obexd +@@ -2,12 +2,12 @@ + if SYSTEMD + systemduserunitdir = @SYSTEMD_USERUNITDIR@ + systemduserunit_DATA = obexd/src/obex.service ++endif + + dbussessionbusdir = @DBUS_SESSIONBUSDIR@ + dbussessionbus_DATA = obexd/src/org.bluez.obex.service +-endif + +-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service ++EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in + + obex_plugindir = $(libdir)/obex/plugins + +diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service +deleted file mode 100644 +index a538088..0000000 +--- a/obexd/src/org.bluez.obex.service ++++ /dev/null +@@ -1,4 +0,0 @@ +-[D-BUS Service] +-Name=org.bluez.obex +-Exec=/bin/false +-SystemdService=dbus-org.bluez.obex.service +diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in +new file mode 100644 +index 0000000..9c815f2 +--- /dev/null ++++ b/obexd/src/org.bluez.obex.service.in +@@ -0,0 +1,4 @@ ++[D-BUS Service] ++Name=org.bluez.obex ++Exec=@libexecdir@/obexd ++SystemdService=dbus-org.bluez.obex.service +-- +1.8.3.1 + + diff --git a/hardware/bluetooth/bluez/files/bluez-5.20-obexd_without_systemd-1.patch b/hardware/bluetooth/bluez/files/bluez-5.20-obexd_without_systemd-1.patch new file mode 100644 index 0000000000..252e48234a --- /dev/null +++ b/hardware/bluetooth/bluez/files/bluez-5.20-obexd_without_systemd-1.patch @@ -0,0 +1,61 @@ +Submitted By: Armin K. +Date: 2013-04-29 +Initial Package Version: 5.17 +Upstream Status: unknown +Origin: Arch Linux (Giovanni Campagna) +Description: Allow using obexd without systemd in the user session + +Not all sessions run systemd --user (actually, the majority +doesn't), so the dbus daemon must be able to spawn obexd +directly, and to do so it needs the full path of the daemon. +--- + Makefile.obexd | 4 ++-- + obexd/src/org.bluez.obex.service | 4 ---- + obexd/src/org.bluez.obex.service.in | 4 ++++ + 3 files changed, 6 insertions(+), 6 deletions(-) + delete mode 100644 obexd/src/org.bluez.obex.service + create mode 100644 obexd/src/org.bluez.obex.service.in + +diff --git a/Makefile.obexd b/Makefile.obexd +index 3760867..142e7c3 100644 +--- a/Makefile.obexd ++++ b/Makefile.obexd +@@ -2,12 +2,12 @@ + if SYSTEMD + systemduserunitdir = @SYSTEMD_USERUNITDIR@ + systemduserunit_DATA = obexd/src/obex.service ++endif + + dbussessionbusdir = @DBUS_SESSIONBUSDIR@ + dbussessionbus_DATA = obexd/src/org.bluez.obex.service +-endif + +-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service ++EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in + + obex_plugindir = $(libdir)/obex/plugins + +diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service +deleted file mode 100644 +index a538088..0000000 +--- a/obexd/src/org.bluez.obex.service ++++ /dev/null +@@ -1,4 +0,0 @@ +-[D-BUS Service] +-Name=org.bluez.obex +-Exec=/bin/false +-SystemdService=dbus-org.bluez.obex.service +diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in +new file mode 100644 +index 0000000..9c815f2 +--- /dev/null ++++ b/obexd/src/org.bluez.obex.service.in +@@ -0,0 +1,4 @@ ++[D-BUS Service] ++Name=org.bluez.obex ++Exec=@libexecdir@/obexd ++SystemdService=dbus-org.bluez.obex.service +-- +1.8.3.1 + + diff --git a/hardware/bluetooth/bluez/files/bluez-5.27-obexd_without_systemd-1.patch b/hardware/bluetooth/bluez/files/bluez-5.27-obexd_without_systemd-1.patch new file mode 100644 index 0000000000..749787c5b3 --- /dev/null +++ b/hardware/bluetooth/bluez/files/bluez-5.27-obexd_without_systemd-1.patch @@ -0,0 +1,61 @@ +Submitted By: Armin K. +Date: 2013-04-29 +Initial Package Version: 5.17 +Upstream Status: unknown +Origin: Arch Linux (Giovanni Campagna) +Description: Allow using obexd without systemd in the user session + +Not all sessions run systemd --user (actually, the majority +doesn't), so the dbus daemon must be able to spawn obexd +directly, and to do so it needs the full path of the daemon. +--- + Makefile.obexd | 4 ++-- + obexd/src/org.bluez.obex.service | 4 ---- + obexd/src/org.bluez.obex.service.in | 4 ++++ + 3 files changed, 6 insertions(+), 6 deletions(-) + delete mode 100644 obexd/src/org.bluez.obex.service + create mode 100644 obexd/src/org.bluez.obex.service.in + +diff --git a/Makefile.obexd b/Makefile.obexd +index 3760867..142e7c3 100644 +--- a/Makefile.obexd ++++ b/Makefile.obexd +@@ -2,12 +2,12 @@ + if SYSTEMD + systemduserunitdir = @SYSTEMD_USERUNITDIR@ + systemduserunit_DATA = obexd/src/obex.service ++endif + + dbussessionbusdir = @DBUS_SESSIONBUSDIR@ + dbussessionbus_DATA = obexd/src/org.bluez.obex.service +-endif + +-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service ++EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in + + obex_plugindir = $(libdir)/obex/plugins + +diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service +deleted file mode 100644 +index a538088..0000000 +--- a/obexd/src/org.bluez.obex.service ++++ /dev/null +@@ -1,4 +0,0 @@ +-[D-BUS Service] +-Name=org.bluez.obex +-Exec=/bin/false +-SystemdService=dbus-org.bluez.obex.service +diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in +new file mode 100644 +index 0000000..9c815f2 +--- /dev/null ++++ b/obexd/src/org.bluez.obex.service.in +@@ -0,0 +1,4 @@ ++[D-BUS Service] ++Name=org.bluez.obex ++Exec=@libexecdir@/obexd ++SystemdService=dbus-org.bluez.obex.service +-- +1.8.3.1 + + diff --git a/hardware/bluetooth/bluez/pspec.xml b/hardware/bluetooth/bluez/pspec.xml new file mode 100644 index 0000000000..df7725cdce --- /dev/null +++ b/hardware/bluetooth/bluez/pspec.xml @@ -0,0 +1,156 @@ + + + + + bluez + http://bluez.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + service + library + app:console + Official Linux Bluetooth protocol stack + bluez contains the tools and libraries that provides support for the core Bluetooth layers and protocols. + https://www.kernel.org/pub/linux/bluetooth/bluez-5.27.tar.xz + + cups-devel + dbus-devel + libnl-devel + alsa-lib-devel + gstreamer-devel + libsndfile-devel + gst-plugins-base-devel + libical-devel + glib2-devel + libical-devel + + + bluez-5.27-obexd_without_systemd-1.patch + + + + + bluez + + cups + libnl + libusb + libical + alsa-lib + alsa-lib + setserial + gstreamer + libsndfile + gst-plugins-base + bluez-libs + + + /lib/udev/rules.d + /lib/systemd/system + /usr/share/misc + /usr/bin + /usr/sbin + /lib/udev + /lib/bluetooth/obexd + /lib/bluetooth/bluetoothd + /usr/lib + /usr/libexec + /usr/share/man + /var/lib/bluetooth + /usr/share/alsa/bluetooth.conf + /usr/share/dbus-1 + /etc + + + System.Service + + + + + bluez-libs + Libraries for use in Bluetooth applications + + libical + + + /usr/lib/libbluetooth.so* + /usr/share/doc + + + + + bluez-libs-devel + Development files for bluez-libs + + bluez-libs + + + /usr/include/bluetooth + /usr/lib/pkgconfig + + + + + + + + 2015-01-29 + 5.27 + rebuild. + Vedat Demir + vedat@pisilinux.org + + + 2015-01-25 + 5.27 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-07-05 + 5.21 + Version bump and bugs fix. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-23 + 5.18 + Version bump + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2014-01-28 + 4.101 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-08-27 + 4.101 + R.Bump + PisiLinux Community + admins@pisilinux.org + + + 2013-06-28 + 4.101 + Add patches, --enable-hid2hci --enable-wiimote + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-09 + 4.101 + First release + Erdinç Gültekin + admins@pisilinux.org + + + diff --git a/hardware/bluetooth/bluez/translations.xml b/hardware/bluetooth/bluez/translations.xml new file mode 100644 index 0000000000..d6dcaf969f --- /dev/null +++ b/hardware/bluetooth/bluez/translations.xml @@ -0,0 +1,18 @@ + + + + bluez + Linux resmi Bluetooth protokol yığını + Bu projenin genel amacı Linux'ta Bluetooth kablosuz standartların ayrıntılarını yerine getirmektir. + + + + bluez-libs + Uygulamalar için bluetooth erişim kitaplığı + + + + bluez-libs-devel + bluez-libs için geliştirme dosyaları + + From 44aa282132c57ed40910f20914772d1a139f1770 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:10:56 +0300 Subject: [PATCH 092/175] moved into main for pisi 2.0 --- network/connection/ModemManager/actions.py | 29 + network/connection/ModemManager/pspec.xml | 107 + .../connection/ModemManager/translations.xml | 24 + network/connection/linux-atm/actions.py | 21 + .../connection/linux-atm/files/gcc43.patch | 11 + .../linux-atm-2.5.0-disable-ilmidiag.patch | 11 + .../files/linux-atm-2.5.0-open-macro.patch | 11 + .../linux-atm/files/man-pages.patch | 45 + .../linux-atm/files/netdevice.patch | 33 + .../connection/linux-atm/files/sandbox.patch | 17 + network/connection/linux-atm/pspec.xml | 72 + network/connection/linux-atm/translations.xml | 13 + .../mobile-broadband-provider-info/actions.py | 20 + .../mobile-broadband-provider-info/pspec.xml | 34 + .../translations.xml | 8 + network/connection/ppp/actions.py | 47 + network/connection/ppp/files/chat-default | 14 + network/connection/ppp/files/confd.ppp0 | 48 + .../ppp/files/gentoo/02_all_make-vars.patch | 194 ++ .../ppp/files/gentoo/04_all_mpls.patch | 431 +++ .../gentoo/06_all_killaddr-smarter.patch | 134 + .../files/gentoo/08_all_wait-children.patch | 77 + .../files/gentoo/10_all_defaultgateway.patch | 90 + .../ppp/files/gentoo/12_all_linkpidfile.patch | 97 + .../ppp/files/gentoo/16_all_auth-fail.patch | 141 + .../files/gentoo/18_all_defaultmetric.patch | 108 + .../ppp/files/gentoo/20_all_dev-ppp.patch | 20 + .../gentoo/24_all_passwordfd-read-early.patch | 85 + .../gentoo/26_all_pppd-usepeerwins.patch | 256 ++ .../files/gentoo/28_all_connect-errors.patch | 12 + .../ppp/files/gentoo/30_all_Makefile.patch | 37 + .../files/gentoo/32_all_pado-timeout.patch | 254 ++ .../gentoo/34_all_lcp-echo-adaptive.patch | 58 + .../80_all_eaptls-mppe-0.994-gentoo.patch | 2898 ++++++++++++++++ .../files/gentoo/85_all_dhcp-make-vars.patch | 19 + .../86_all_dhcp-sys_error_to_strerror.patch | 128 + network/connection/ppp/files/ip-down | 37 + network/connection/ppp/files/ip-up | 42 + network/connection/ppp/files/nostrip.patch | 92 + network/connection/ppp/files/options-pppoe | 6 + network/connection/ppp/files/options-pptp | 18 + .../ppp/files/ppp-2.3.6-sample.patch | 295 ++ .../files/ppp-2.4.2-change_resolv_conf.patch | 61 + .../ppp/files/ppp-2.4.3-fix64.patch | 10 + .../files/ppp-2.4.3-ipv6-accept-remote.patch | 40 + .../ppp/files/ppp-2.4.3-local.patch | 68 + .../ppp/files/ppp-2.4.5-ppp_resolv.patch | 13 + .../ppp/files/ppp-2.4.5-var_run_ppp.patch | 30 + .../files/ppp-2.4.6-eaptls-mppe-0.99.patch | 2919 +++++++++++++++++ network/connection/ppp/files/ppp.logrotate | 10 + network/connection/ppp/files/ppp.pamd | 5 + network/connection/ppp/files/tmpfiles.conf | 1 + network/connection/ppp/pspec.xml | 124 + network/connection/ppp/translations.xml | 13 + network/connection/wpa_supplicant/actions.py | 36 + .../wpa_supplicant/comar/service.py | 24 + ...-HT40-secondary-channel-is-supported.patch | 52 + .../fedora/wpa_supplicant-assoc-timeout.patch | 16 + .../wpa_supplicant-flush-debug-output.patch | 49 + .../wpa_supplicant-openssl-more-algs.patch | 15 + ...upplicant-quiet-scan-results-message.patch | 12 + .../wpa_supplicant-0.6.3-WEP232.patch | 12 + .../wpa_supplicant-driver-wext-debug.patch | 143 + .../files/suse/wpa_supplicant-errormsg.patch | 19 + ..._use_pkg-config_for_pcsc-lite_module.patch | 17 + .../wpa_supplicant-1.0-dbus-path-fix.patch | 20 + ...t-call-dbus-functions-with-NULL-path.patch | 60 + ..._supplicant-1.0-generate-libeap-peer.patch | 347 ++ .../wpa_supplicant/files/wpa_supplicant.conf | 35 + .../files/wpa_supplicant.conf.fedora | 3 + .../wpa_supplicant/files/wpa_supplicant.confd | 16 + .../files/wpa_supplicant.config | 47 + .../files/wpa_supplicant.logrotate | 6 + .../wpa_supplicant/files/wpa_supplicant.py | 250 ++ network/connection/wpa_supplicant/pspec.xml | 100 + .../wpa_supplicant/translations.xml | 8 + 76 files changed, 10675 insertions(+) create mode 100644 network/connection/ModemManager/actions.py create mode 100644 network/connection/ModemManager/pspec.xml create mode 100644 network/connection/ModemManager/translations.xml create mode 100644 network/connection/linux-atm/actions.py create mode 100644 network/connection/linux-atm/files/gcc43.patch create mode 100644 network/connection/linux-atm/files/linux-atm-2.5.0-disable-ilmidiag.patch create mode 100644 network/connection/linux-atm/files/linux-atm-2.5.0-open-macro.patch create mode 100644 network/connection/linux-atm/files/man-pages.patch create mode 100644 network/connection/linux-atm/files/netdevice.patch create mode 100644 network/connection/linux-atm/files/sandbox.patch create mode 100644 network/connection/linux-atm/pspec.xml create mode 100644 network/connection/linux-atm/translations.xml create mode 100644 network/connection/mobile-broadband-provider-info/actions.py create mode 100644 network/connection/mobile-broadband-provider-info/pspec.xml create mode 100644 network/connection/mobile-broadband-provider-info/translations.xml create mode 100644 network/connection/ppp/actions.py create mode 100644 network/connection/ppp/files/chat-default create mode 100644 network/connection/ppp/files/confd.ppp0 create mode 100644 network/connection/ppp/files/gentoo/02_all_make-vars.patch create mode 100644 network/connection/ppp/files/gentoo/04_all_mpls.patch create mode 100644 network/connection/ppp/files/gentoo/06_all_killaddr-smarter.patch create mode 100644 network/connection/ppp/files/gentoo/08_all_wait-children.patch create mode 100644 network/connection/ppp/files/gentoo/10_all_defaultgateway.patch create mode 100644 network/connection/ppp/files/gentoo/12_all_linkpidfile.patch create mode 100644 network/connection/ppp/files/gentoo/16_all_auth-fail.patch create mode 100644 network/connection/ppp/files/gentoo/18_all_defaultmetric.patch create mode 100644 network/connection/ppp/files/gentoo/20_all_dev-ppp.patch create mode 100644 network/connection/ppp/files/gentoo/24_all_passwordfd-read-early.patch create mode 100644 network/connection/ppp/files/gentoo/26_all_pppd-usepeerwins.patch create mode 100644 network/connection/ppp/files/gentoo/28_all_connect-errors.patch create mode 100644 network/connection/ppp/files/gentoo/30_all_Makefile.patch create mode 100644 network/connection/ppp/files/gentoo/32_all_pado-timeout.patch create mode 100644 network/connection/ppp/files/gentoo/34_all_lcp-echo-adaptive.patch create mode 100644 network/connection/ppp/files/gentoo/80_all_eaptls-mppe-0.994-gentoo.patch create mode 100644 network/connection/ppp/files/gentoo/85_all_dhcp-make-vars.patch create mode 100644 network/connection/ppp/files/gentoo/86_all_dhcp-sys_error_to_strerror.patch create mode 100644 network/connection/ppp/files/ip-down create mode 100644 network/connection/ppp/files/ip-up create mode 100644 network/connection/ppp/files/nostrip.patch create mode 100644 network/connection/ppp/files/options-pppoe create mode 100644 network/connection/ppp/files/options-pptp create mode 100644 network/connection/ppp/files/ppp-2.3.6-sample.patch create mode 100644 network/connection/ppp/files/ppp-2.4.2-change_resolv_conf.patch create mode 100644 network/connection/ppp/files/ppp-2.4.3-fix64.patch create mode 100644 network/connection/ppp/files/ppp-2.4.3-ipv6-accept-remote.patch create mode 100644 network/connection/ppp/files/ppp-2.4.3-local.patch create mode 100644 network/connection/ppp/files/ppp-2.4.5-ppp_resolv.patch create mode 100644 network/connection/ppp/files/ppp-2.4.5-var_run_ppp.patch create mode 100644 network/connection/ppp/files/ppp-2.4.6-eaptls-mppe-0.99.patch create mode 100644 network/connection/ppp/files/ppp.logrotate create mode 100644 network/connection/ppp/files/ppp.pamd create mode 100644 network/connection/ppp/files/tmpfiles.conf create mode 100644 network/connection/ppp/pspec.xml create mode 100644 network/connection/ppp/translations.xml create mode 100644 network/connection/wpa_supplicant/actions.py create mode 100644 network/connection/wpa_supplicant/comar/service.py create mode 100644 network/connection/wpa_supplicant/files/0001-AP-Verify-that-HT40-secondary-channel-is-supported.patch create mode 100644 network/connection/wpa_supplicant/files/fedora/wpa_supplicant-assoc-timeout.patch create mode 100644 network/connection/wpa_supplicant/files/fedora/wpa_supplicant-flush-debug-output.patch create mode 100644 network/connection/wpa_supplicant/files/fedora/wpa_supplicant-openssl-more-algs.patch create mode 100644 network/connection/wpa_supplicant/files/fedora/wpa_supplicant-quiet-scan-results-message.patch create mode 100644 network/connection/wpa_supplicant/files/mandriva/wpa_supplicant-0.6.3-WEP232.patch create mode 100644 network/connection/wpa_supplicant/files/suse/wpa_supplicant-driver-wext-debug.patch create mode 100644 network/connection/wpa_supplicant/files/suse/wpa_supplicant-errormsg.patch create mode 100644 network/connection/wpa_supplicant/files/ubuntu/01_use_pkg-config_for_pcsc-lite_module.patch create mode 100644 network/connection/wpa_supplicant/files/wpa_supplicant-1.0-dbus-path-fix.patch create mode 100644 network/connection/wpa_supplicant/files/wpa_supplicant-1.0-do-not-call-dbus-functions-with-NULL-path.patch create mode 100644 network/connection/wpa_supplicant/files/wpa_supplicant-1.0-generate-libeap-peer.patch create mode 100644 network/connection/wpa_supplicant/files/wpa_supplicant.conf create mode 100644 network/connection/wpa_supplicant/files/wpa_supplicant.conf.fedora create mode 100644 network/connection/wpa_supplicant/files/wpa_supplicant.confd create mode 100644 network/connection/wpa_supplicant/files/wpa_supplicant.config create mode 100644 network/connection/wpa_supplicant/files/wpa_supplicant.logrotate create mode 100644 network/connection/wpa_supplicant/files/wpa_supplicant.py create mode 100644 network/connection/wpa_supplicant/pspec.xml create mode 100644 network/connection/wpa_supplicant/translations.xml diff --git a/network/connection/ModemManager/actions.py b/network/connection/ModemManager/actions.py new file mode 100644 index 0000000000..9fd3f51af4 --- /dev/null +++ b/network/connection/ModemManager/actions.py @@ -0,0 +1,29 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import pisitools +from pisi.actionsapi import autotools +from pisi.actionsapi import get + +def setup(): + #shelltools.system("./autogen.sh") + autotools.configure("--disable-static \ + --enable-more-warnings=yes \ + --with-udev-base-dir=/lib/udev \ + --with-tests=yes \ + --with-polkit=no") + +def build(): + autotools.make() + +def check(): + autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("README", "COPYING") diff --git a/network/connection/ModemManager/pspec.xml b/network/connection/ModemManager/pspec.xml new file mode 100644 index 0000000000..ac51366c1f --- /dev/null +++ b/network/connection/ModemManager/pspec.xml @@ -0,0 +1,107 @@ + + + + + ModemManager + http://projects.gnome.org/NetworkManager + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + app:console + service + A manager framework for mobile broadband modems + ModemManager provides a unified high level API for communicating with mobile broadband modems. + http://www.freedesktop.org/software/ModemManager/ModemManager-1.2.0.tar.xz + + ppp-devel + libqmi-devel + libmbim-devel + + + + + ModemManager + + ppp + libqmi + libmbim + libmm-glib + + + /usr/share/doc + /usr/sbin + /usr/share/icons + /usr/share/locale + /usr/share/dbus-1 + /usr/share/gir-1.0/ModemManager-1.0.gir + /lib/udev/rules.d/ + /etc/dbus-1/system.d/ + /usr/lib/ModemManager + /usr/lib/girepository-1.0/ModemManager-1.0.typelib + /usr/share/man/man8/ModemManager.8 + + + + + ModemManager-devel + Development files for ModemManager + + ModemManager + + + /usr/include/ModemManager/ + /usr/lib/pkgconfig/ModemManager.pc + + + + + libmm-glib + D-Bus service for managing modems - shared libraries + + /usr/bin + /usr/share/vala/vapi/libmm-glib.vapi + /usr/share/vala/vapi/libmm-glib.deps + /usr/lib/libmm-glib.so* + /usr/share/man/man8/mmcli.8 + + + + + libmm-glib-devel + Development files for libmm-glib + + ModemManager-devel + libmm-glib + + + /usr/include/libmm-glib/ + /usr/lib/pkgconfig/mm-glib.pc + + + + + + 2014-02-17 + 1.2.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-20 + 1.0.0 + Version Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-08-28 + 5.3.96 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/network/connection/ModemManager/translations.xml b/network/connection/ModemManager/translations.xml new file mode 100644 index 0000000000..1ab9c10893 --- /dev/null +++ b/network/connection/ModemManager/translations.xml @@ -0,0 +1,24 @@ + + + + ModemManager + Mobil modemler için yönetim katmanı + ModemManager, 3G ve GSM gibi mobil genişbant modemlerle D-Bus üzerinden iletişimi sağlayan bir sistem hizmetidir. + + + + ModemManager-devel + ModemManager için geliştirme dosyaları + + + + libmm-glib + D-Bus service for managing modems - shared libraries + + + + libmm-glib-devel + Development files for libmm-glib + libmm-glib için geliştirme dosyaları + + \ No newline at end of file diff --git a/network/connection/linux-atm/actions.py b/network/connection/linux-atm/actions.py new file mode 100644 index 0000000000..ceb82be774 --- /dev/null +++ b/network/connection/linux-atm/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.configure("--disable-static") + +def build(): + autotools.make("-j1") + +def install(): + autotools.rawInstall("DESTDIR=%s man_prefix=/usr/share/man" % get.installDIR()) + pisitools.insinto("/etc", "src/config/hosts.atm") + + pisitools.dodoc("AUTHORS", "THANKS", "ChangeLog", "BUGS", "NEWS", "README") diff --git a/network/connection/linux-atm/files/gcc43.patch b/network/connection/linux-atm/files/gcc43.patch new file mode 100644 index 0000000000..51b10a7328 --- /dev/null +++ b/network/connection/linux-atm/files/gcc43.patch @@ -0,0 +1,11 @@ +diff -Nur linux-atm-2.5.0-old/src/led/main.c linux-atm-2.5.0/src/led/main.c +--- linux-atm-2.5.0-old/src/led/main.c 2008-04-25 03:39:28.000000000 +0300 ++++ linux-atm-2.5.0/src/led/main.c 2008-04-25 03:39:43.000000000 +0300 +@@ -46,6 +46,7 @@ + #include + + #include ++#include + + /* Local incs */ + #include "join.h" diff --git a/network/connection/linux-atm/files/linux-atm-2.5.0-disable-ilmidiag.patch b/network/connection/linux-atm/files/linux-atm-2.5.0-disable-ilmidiag.patch new file mode 100644 index 0000000000..c420be9c58 --- /dev/null +++ b/network/connection/linux-atm/files/linux-atm-2.5.0-disable-ilmidiag.patch @@ -0,0 +1,11 @@ +--- linux-atm/src/ilmid/Makefile.am~ 2007-07-11 17:07:57.000000000 +0100 ++++ linux-atm/src/ilmid/Makefile.am 2007-08-23 09:22:45.000000000 +0100 +@@ -2,7 +2,7 @@ SUBDIRS = asn1 + + INCLUDES = -I$(srcdir)/../ilmid/asn1 + +-sbin_PROGRAMS = ilmid ilmidiag ++sbin_PROGRAMS = ilmid + + ilmid_SOURCES = rfc1157_snmp.c rfc1157_snmp.h rfc1155_smi.c rfc1155_smi.h \ + util.c util.h io.c io.h message.c message.h \ diff --git a/network/connection/linux-atm/files/linux-atm-2.5.0-open-macro.patch b/network/connection/linux-atm/files/linux-atm-2.5.0-open-macro.patch new file mode 100644 index 0000000000..928222fa28 --- /dev/null +++ b/network/connection/linux-atm/files/linux-atm-2.5.0-open-macro.patch @@ -0,0 +1,11 @@ +--- linux-atm/src/maint/atmtcp.c~ 2007-08-22 14:59:21.000000000 +0100 ++++ linux-atm/src/maint/atmtcp.c 2007-08-22 18:27:24.000000000 +0100 +@@ -109,7 +109,7 @@ static void control(int in_link,struct a + switch (msg->type) { + case ATMTCP_CTRL_OPEN: + if (out->ops->open) +- changed += out->ops->open(out,in_link,msg); ++ changed += (out->ops->open)(out,in_link,msg); + break; + case ATMTCP_CTRL_CLOSE: + if (out->ops->close) diff --git a/network/connection/linux-atm/files/man-pages.patch b/network/connection/linux-atm/files/man-pages.patch new file mode 100644 index 0000000000..c504cfe87d --- /dev/null +++ b/network/connection/linux-atm/files/man-pages.patch @@ -0,0 +1,45 @@ +diff -up linux-atm-2.5.1/src/led/zeppelin.8.fixman linux-atm-2.5.1/src/led/zeppelin.8 +--- linux-atm-2.5.1/src/led/zeppelin.8.fixman 2003-05-02 19:35:04.000000000 +0200 ++++ linux-atm-2.5.1/src/led/zeppelin.8 2010-10-13 12:58:18.000000000 +0200 +@@ -99,7 +99,7 @@ Ring and ATM parts of the ELAN, so using + recommended. Token Ring support has received less testing than its + Ethernet counterpart. + .SH FILES +-.IP \fI/var/run/lec[interface number].pid\fP ++\fI/var/run/lec[interface number].pid\fP + The file containing the process id of zeppelin. + .SH BUGS + John Bonham died 1980 and Led Zeppelin broke. +diff -up linux-atm-2.5.1/src/mpoad/mpcd.8.fixman linux-atm-2.5.1/src/mpoad/mpcd.8 +--- linux-atm-2.5.1/src/mpoad/mpcd.8.fixman 2001-10-10 00:33:07.000000000 +0200 ++++ linux-atm-2.5.1/src/mpoad/mpcd.8 2010-10-13 12:59:14.000000000 +0200 +@@ -28,7 +28,7 @@ mpcd \- ATM MPOA (Multi\-Protocol Over A + .B ]] + .SH DESCRIPTION + MPOA client +-.SM(MPC) is responsible for creating and receiving ++.SM (MPC) is responsible for creating and receiving + internetwork layer shortcuts. Using these shortcuts MPCs forward + unicast internetwork layer packets effectively over ATM without need + for routing protocols. +@@ -43,7 +43,7 @@ accepts shortcuts and packets arriving o + shortcuts is done with the help of + .SM MPOA + server +-.SM(MPS). ++.SM (MPS). + .PP + Just as the Linux + .SM LAN +diff -up linux-atm-2.5.1/src/sigd/atmsigd.conf.4.fixman linux-atm-2.5.1/src/sigd/atmsigd.conf.4 +--- linux-atm-2.5.1/src/sigd/atmsigd.conf.4.fixman 2001-10-10 00:33:07.000000000 +0200 ++++ linux-atm-2.5.1/src/sigd/atmsigd.conf.4 2010-10-13 12:58:49.000000000 +0200 +@@ -125,7 +125,7 @@ a comment. The `#' character cannot be e + .P + If an option is specified in \fBatmsigd.conf\fP and on the command + line, the command line has priority. +-.COMPATIBILITY ++.SH COMPATIBILITY + Certain options used by past versions of \fBatmsigd\fP but no longer documented + on the man page are still recognized and supported, but they also yield a + warning message. Future versions of \fBatmsigd\fP will not recognize those diff --git a/network/connection/linux-atm/files/netdevice.patch b/network/connection/linux-atm/files/netdevice.patch new file mode 100644 index 0000000000..22af6ef27f --- /dev/null +++ b/network/connection/linux-atm/files/netdevice.patch @@ -0,0 +1,33 @@ +diff -Nur linux-atm-2.5.0-old/src/arpd/arp.c linux-atm-2.5.0/src/arpd/arp.c +--- linux-atm-2.5.0-old/src/arpd/arp.c 2008-04-25 03:34:35.000000000 +0300 ++++ linux-atm-2.5.0/src/arpd/arp.c 2008-04-25 03:34:51.000000000 +0300 +@@ -15,7 +15,6 @@ + #include + #include /* for linux/if_arp.h */ + #include /* for ntohs, etc. */ +-#define _LINUX_NETDEVICE_H /* very crude hack for glibc2 */ + #include + #include + #include +diff -Nur linux-atm-2.5.0-old/src/arpd/io.c linux-atm-2.5.0/src/arpd/io.c +--- linux-atm-2.5.0-old/src/arpd/io.c 2008-04-25 03:34:35.000000000 +0300 ++++ linux-atm-2.5.0/src/arpd/io.c 2008-04-25 03:34:51.000000000 +0300 +@@ -21,7 +21,6 @@ + #include + #include /* for CLIP_DEFAULT_IDLETIMER */ + #include +-#define _LINUX_NETDEVICE_H /* glibc2 */ + #include + #include + +diff -Nur linux-atm-2.5.0-old/src/arpd/itf.c linux-atm-2.5.0/src/arpd/itf.c +--- linux-atm-2.5.0-old/src/arpd/itf.c 2008-04-25 03:34:35.000000000 +0300 ++++ linux-atm-2.5.0/src/arpd/itf.c 2008-04-25 03:34:51.000000000 +0300 +@@ -12,7 +12,6 @@ + #include + #include + #include +-#define _LINUX_NETDEVICE_H /* glibc2 */ + #include + #include + diff --git a/network/connection/linux-atm/files/sandbox.patch b/network/connection/linux-atm/files/sandbox.patch new file mode 100644 index 0000000000..69939638fa --- /dev/null +++ b/network/connection/linux-atm/files/sandbox.patch @@ -0,0 +1,17 @@ +Index: linux-atm-2.5.1/src/config/Makefile.in +=================================================================== +--- linux-atm-2.5.1.orig/src/config/Makefile.in ++++ linux-atm-2.5.1/src/config/Makefile.in +@@ -413,10 +413,10 @@ uninstall-am: uninstall-local uninstall- + + + install-exec-local: +- -cp hosts.atm /etc ++ -cp hosts.atm $(DESTDIR)$(sysconfdir) + + uninstall-local: +- -rm /etc/hosts.atm ++ -rm $(DESTDIR)$(sysconfdir)/hosts.atm + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/network/connection/linux-atm/pspec.xml b/network/connection/linux-atm/pspec.xml new file mode 100644 index 0000000000..8b5e594b4e --- /dev/null +++ b/network/connection/linux-atm/pspec.xml @@ -0,0 +1,72 @@ + + + + + linux-atm + http://linux-atm.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + library + Tools to support ATM networking under Liunx + linux-atm contains tools for Asynchronous Transfer Mode. Supports raw ATM connections (PVCs and SVCs), IP over ATM, LAN emulation, MPOA, Arequipa, and some others. + mirrors://sourceforge/project/linux-atm/linux-atm/2.5.2/linux-atm-2.5.2.tar.gz + + flex + + + man-pages.patch + + + + + + linux-atm + + flex + + + /lib/firmware + /usr/sbin + /usr/bin + /etc + /usr/lib + /usr/share/man + /usr/share/doc + + + + + linux-atm-devel + Development files for linux-atm + + linux-atm + + + /usr/include + + + + + + 2015-04-13 + 2.5.2 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2010-10-13 + 2.5.1 + First release + Gökcen Eraslan + admins@pisilinux.org + + + diff --git a/network/connection/linux-atm/translations.xml b/network/connection/linux-atm/translations.xml new file mode 100644 index 0000000000..57d274cb46 --- /dev/null +++ b/network/connection/linux-atm/translations.xml @@ -0,0 +1,13 @@ + + + + linux-atm + ATM ağ bağlantısı desteği için araçlar + linux-atm ATM (Asynchronous Transfer Mode) bağlantısı için gerekli çeşitli araçlar ve kitaplıklarını içerir. + + + + linux-atm-devel + linux-atm için geliştirme dosyaları + + diff --git a/network/connection/mobile-broadband-provider-info/actions.py b/network/connection/mobile-broadband-provider-info/actions.py new file mode 100644 index 0000000000..5a90665eaf --- /dev/null +++ b/network/connection/mobile-broadband-provider-info/actions.py @@ -0,0 +1,20 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt. + +from pisi.actionsapi import pisitools +from pisi.actionsapi import autotools +from pisi.actionsapi import get + +def setup(): + autotools.configure() + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "COPYING", "README*") diff --git a/network/connection/mobile-broadband-provider-info/pspec.xml b/network/connection/mobile-broadband-provider-info/pspec.xml new file mode 100644 index 0000000000..23ae65e547 --- /dev/null +++ b/network/connection/mobile-broadband-provider-info/pspec.xml @@ -0,0 +1,34 @@ + + + + + mobile-broadband-provider-info + http://live.gnome.org/NetworkManager/MobileBroadband/ServiceProviders + + PisiLinux Community + admins@pisilinux.org + + public-domain + data + Service provider specific settings of mobile broadband providers in different countries + The mobile-broadband-provider-info package contains listings of mobile broadband (3G) providers and associated network and plan information. + ftp://ftp.gnome.org/pub/gnome/sources/mobile-broadband-provider-info/20120614/mobile-broadband-provider-info-20120614.tar.xz + + + + mobile-broadband-provider-info + + /usr/share + + + + + + 2012-08-28 + 20120614 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/network/connection/mobile-broadband-provider-info/translations.xml b/network/connection/mobile-broadband-provider-info/translations.xml new file mode 100644 index 0000000000..2d8e6b2f8e --- /dev/null +++ b/network/connection/mobile-broadband-provider-info/translations.xml @@ -0,0 +1,8 @@ + + + + mobile-broadband-provider-info + Çeşitli ülkelerdeki mobil genişbant servis sağlayıcıları hakkında bilgileri içeren ayar veritabanı + mobile-broadband-provider-info paketi, dünya üzerindeki mobil genişbant sağlayıcılarının ve ilgili tarifelerinin listesini tutan bir veritabanıdır. + + diff --git a/network/connection/ppp/actions.py b/network/connection/ppp/actions.py new file mode 100644 index 0000000000..fc5fe5bed2 --- /dev/null +++ b/network/connection/ppp/actions.py @@ -0,0 +1,47 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +def setup(): + pisitools.cflags.add("-fPIC", "-D_GNU_SOURCE") + shelltools.copytree("%s/dhcp" % get.workDIR(), "pppd/plugins") + pisitools.dosed("pppd/plugins/dhcp/Makefile.linux", "^(CFLAGS=.+)\s-O2", "\\1 %s" % get.CFLAGS()) + + # Enable atm + pisitools.dosed("pppd/Makefile.linux", "^#(HAVE_LIBATM=yes)", "\\1") + # Enable pam + pisitools.dosed("pppd/Makefile.linux", "^#(USE_PAM=y)", "\\1") + # Enable CBCP + pisitools.dosed("pppd/Makefile.linux", "^#(CBCP=y)", "\\1") + # Enable IPv6 + pisitools.dosed("pppd/Makefile.linux", "^#(HAVE_INET6)", "\\1") + # Enable dhcp + pisitools.dosed("pppd/plugins/Makefile.linux", "^(SUBDIRS\s:=.+)", "\\1 dhcp") + + autotools.configure() + +def build(): + autotools.make() + +def install(): + # The build mechanism is crap. Don't remove \/usr from DESTDIR or else the paths will fail + autotools.rawInstall("DESTDIR=%s/usr INSTROOT=%s install-etcppp" % ((get.installDIR(),)*2)) + + # No suid libraries + shelltools.chmod("%s/usr/lib/pppd/%s/*.so" % (get.installDIR(),get.srcVERSION()), 0755) + + # Install Radius config files + pisitools.insinto("/etc/radiusclient", "pppd/plugins/radius/etc/*") + + # Create peers directory + pisitools.dodir("/run/ppp") + pisitools.dodir("/etc/ppp/peers") + + pisitools.dodoc("Changes*", "README*", "FAQ") diff --git a/network/connection/ppp/files/chat-default b/network/connection/ppp/files/chat-default new file mode 100644 index 0000000000..72435c136a --- /dev/null +++ b/network/connection/ppp/files/chat-default @@ -0,0 +1,14 @@ +# /etc/ppp/chat-default: + +'ABORT' 'BUSY' +'ABORT' 'ERROR' +'ABORT' 'NO ANSWER' +'ABORT' 'NO CARRIER' +'ABORT' 'NO DIALTONE' +'ABORT' 'Invalid Login' +'ABORT' 'Login incorrect' +'' 'ATZ' +'OK' 'ATDT$NUMBER' +'CONNECT' '' +'TIMEOUT' '5' +'~--' '' diff --git a/network/connection/ppp/files/confd.ppp0 b/network/connection/ppp/files/confd.ppp0 new file mode 100644 index 0000000000..f54ef449b1 --- /dev/null +++ b/network/connection/ppp/files/confd.ppp0 @@ -0,0 +1,48 @@ +# /etc/conf.d/net.ppp0: + +# Config file for /etc/init.d/net.ppp0 + +PEER="MyPeer" # Define peer (aka ISP) +DEBUG="no" # Turn on debugging +PERSIST="no" # Redial after being dropped +ONDEMAND="no" # Only bring the interface up on demand? +MODEMPORT="/dev/ttyS1" # TTY device modem is connected to +LINESPEED="115200" # Speed pppd should try to connect at +INITSTRING="" # Extra init string for the modem +DEFROUTE="yes" # Must pppd set the default route? +HARDFLOWCTL="yes" # Use hardware flow control? +ESCAPECHARS="yes" # Use escape caracters ? +PPPOPTIONS="" # Extra options for pppd +USERNAME="user" # The PAP/CHAP username +PASSWORD="passwd" # Your password/secret. Ugly I know, but i + # will work on something more secure later + # on. 700 permission on /etc/init.d/net.ppp0 + # should be enouth for now. +NUMBER="9180000" # The telephone number of your ISP + # leave blank for leased-line operation. +REMIP="" # The ip of the remote box if it should be set +NETMASK="" # Netmask +IPADDR="" # Our IP if we have a static one +MRU="768" # Sets the MRU +MTU="768" # Sets the MTU +RETRYTIMEOUT="60" # Retry timeout for when ONDEMAND="yes" or + # PERSIST="yes" +IDLETIMEOUT="600" # Idle timeout for when ONDEMAND="yes" +PEERDNS="no" # Should pppd set the peer dns? + +AUTOCFGFILES="yes" # By default this scripts will generate + # /etc/ppp/chat-isp, /etc/ppp/chap-secrets, + # /etc/ppp/pap-secrets and /etc/ppp/peers/isp + # automatically. Set to "no" if you experience + # problems, or need specialized scripts. You + # will have to create these files by hand then. + +AUTOCHATSCRIPT="yes" # By default this script iwll generate + # /etc/ppp/chat-${PEER} automatically. Set to "no" + # if you experience problems, or need specialized + # scripts. You will have to create these files by + # hand then. + + +# Directory where the templates is stored +TEMPLATEDIR=/etc/ppp diff --git a/network/connection/ppp/files/gentoo/02_all_make-vars.patch b/network/connection/ppp/files/gentoo/02_all_make-vars.patch new file mode 100644 index 0000000000..e6898b2b0d --- /dev/null +++ b/network/connection/ppp/files/gentoo/02_all_make-vars.patch @@ -0,0 +1,194 @@ +diff -ur ppp-2.4.5.orig/chat/Makefile.linux ppp-2.4.5/chat/Makefile.linux +--- ppp-2.4.5.orig/chat/Makefile.linux 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/chat/Makefile.linux 2010-08-08 09:19:38.000000000 +0200 +@@ -10,7 +10,6 @@ + CDEF4= -DFNDELAY=O_NDELAY # Old name value + CDEFS= $(CDEF1) $(CDEF2) $(CDEF3) $(CDEF4) + +-COPTS= -O2 -g -pipe + CFLAGS= $(COPTS) $(CDEFS) + + INSTALL= install +@@ -18,7 +17,7 @@ + all: chat + + chat: chat.o +- $(CC) -o chat chat.o ++ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ + + chat.o: chat.c + $(CC) -c $(CFLAGS) -o chat.o chat.c +diff -ur ppp-2.4.5.orig/pppd/Makefile.linux ppp-2.4.5/pppd/Makefile.linux +--- ppp-2.4.5.orig/pppd/Makefile.linux 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/Makefile.linux 2010-08-08 09:19:38.000000000 +0200 +@@ -32,7 +32,7 @@ + + # CC = gcc + # +-COPTS = -O2 -pipe -Wall -g ++COPTS+= -Wall + LIBS = + + # Uncomment the next 2 lines to include support for Microsoft's +diff -ur ppp-2.4.5.orig/pppd/plugins/Makefile.linux ppp-2.4.5/pppd/plugins/Makefile.linux +--- ppp-2.4.5.orig/pppd/plugins/Makefile.linux 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/plugins/Makefile.linux 2010-08-08 09:19:38.000000000 +0200 +@@ -1,7 +1,11 @@ + #CC = gcc +-COPTS = -O2 -g + CFLAGS = $(COPTS) -I.. -I../../include -fPIC +-LDFLAGS = -shared ++LDFLAGS_PROG := $(LDFLAGS) ++export LDFLAGS LDFLAGS_PROG ++LDFLAGS += -shared ++# need the following option, otherwise linking plugins might fail with undef errors (Gentoo bug 210837) ++LDFLAGS += -Wl,--allow-shlib-undefined ++LIBS = + INSTALL = install + + DESTDIR = $(INSTROOT)@DESTDIR@ +@@ -23,7 +27,7 @@ + for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all; done + + %.so: %.c +- $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $^ ++ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBS) + + VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../patchlevel.h) + +diff -ur ppp-2.4.5.orig/pppd/plugins/pppoatm/Makefile.linux ppp-2.4.5/pppd/plugins/pppoatm/Makefile.linux +--- ppp-2.4.5.orig/pppd/plugins/pppoatm/Makefile.linux 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/plugins/pppoatm/Makefile.linux 2010-08-08 09:19:38.000000000 +0200 +@@ -1,7 +1,5 @@ + #CC = gcc +-COPTS = -O2 -g + CFLAGS = $(COPTS) -I../.. -I../../../include -fPIC +-LDFLAGS = -shared + INSTALL = install + + #*********************************************************************** +@@ -33,7 +31,7 @@ + all: $(PLUGIN) + + $(PLUGIN): $(PLUGIN_OBJS) +- $(CC) $(CFLAGS) -o $@ -shared $^ $(LIBS) ++ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBS) + + install: all + $(INSTALL) -d -m 755 $(LIBDIR) +diff -ur ppp-2.4.5.orig/pppd/plugins/pppol2tp/Makefile.linux ppp-2.4.5/pppd/plugins/pppol2tp/Makefile.linux +--- ppp-2.4.5.orig/pppd/plugins/pppol2tp/Makefile.linux 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/plugins/pppol2tp/Makefile.linux 2010-08-08 09:20:02.000000000 +0200 +@@ -1,7 +1,5 @@ + #CC = gcc +-COPTS = -O2 -g + CFLAGS = $(COPTS) -I. -I../.. -I../../../include -fPIC +-LDFLAGS = -shared + INSTALL = install + + #*********************************************************************** +@@ -16,7 +14,7 @@ + all: $(PLUGINS) + + %.so: %.o +- $(CC) $(CFLAGS) -o $@ -shared $^ $(LIBS) ++ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBS) + + install: all + $(INSTALL) -d -m 755 $(LIBDIR) +diff -ur ppp-2.4.5.orig/pppd/plugins/radius/Makefile.linux ppp-2.4.5/pppd/plugins/radius/Makefile.linux +--- ppp-2.4.5.orig/pppd/plugins/radius/Makefile.linux 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/plugins/radius/Makefile.linux 2010-08-08 09:19:38.000000000 +0200 +@@ -12,7 +12,7 @@ + INSTALL = install + + PLUGIN=radius.so radattr.so radrealms.so +-CFLAGS=-I. -I../.. -I../../../include -O2 -fPIC -DRC_LOG_FACILITY=LOG_DAEMON ++CFLAGS=$(COPTS) -I. -I../.. -I../../../include -fPIC -DRC_LOG_FACILITY=LOG_DAEMON + + # Uncomment the next line to include support for Microsoft's + # MS-CHAP authentication protocol. +@@ -43,13 +43,13 @@ + $(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR) + + radius.so: radius.o libradiusclient.a +- $(CC) -o radius.so -shared radius.o libradiusclient.a ++ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ + + radattr.so: radattr.o +- $(CC) -o radattr.so -shared radattr.o ++ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ + + radrealms.so: radrealms.o +- $(CC) -o radrealms.so -shared radrealms.o ++ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ + + CLIENTOBJS = avpair.o buildreq.o config.o dict.o ip_util.o \ + clientid.o sendserver.o lock.o util.o md5.o +diff -ur ppp-2.4.5.orig/pppd/plugins/rp-pppoe/Makefile.linux ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux +--- ppp-2.4.5.orig/pppd/plugins/rp-pppoe/Makefile.linux 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux 2010-08-08 09:19:38.000000000 +0200 +@@ -25,12 +25,11 @@ + # Version is set ONLY IN THE MAKEFILE! Don't delete this! + RP_VERSION=3.8p + +-COPTS=-O2 -g + CFLAGS=$(COPTS) -I../../../include '-DRP_VERSION="$(RP_VERSION)"' + all: rp-pppoe.so pppoe-discovery + + pppoe-discovery: pppoe-discovery.o debug.o +- $(CC) -o pppoe-discovery pppoe-discovery.o debug.o ++ $(CC) $(LDFLAGS_PROG) $(CFLAGS) -o pppoe-discovery pppoe-discovery.o debug.o + + pppoe-discovery.o: pppoe-discovery.c + $(CC) $(CFLAGS) -c -o pppoe-discovery.o pppoe-discovery.c +@@ -39,7 +38,7 @@ + $(CC) $(CFLAGS) -c -o debug.o debug.c + + rp-pppoe.so: plugin.o discovery.o if.o common.o +- $(CC) -o rp-pppoe.so -shared plugin.o discovery.o if.o common.o ++ $(CC) $(LDFLAGS) $(CFLAGS) -o rp-pppoe.so plugin.o discovery.o if.o common.o + + install: all + $(INSTALL) -d -m 755 $(LIBDIR) +diff -ur ppp-2.4.5.orig/pppdump/Makefile.linux ppp-2.4.5/pppdump/Makefile.linux +--- ppp-2.4.5.orig/pppdump/Makefile.linux 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppdump/Makefile.linux 2010-08-08 09:19:38.000000000 +0200 +@@ -2,7 +2,7 @@ + BINDIR = $(DESTDIR)/sbin + MANDIR = $(DESTDIR)/share/man/man8 + +-CFLAGS= -O -I../include/net ++CFLAGS=$(COPTS) -I../include/net + OBJS = pppdump.o bsd-comp.o deflate.o zlib.o + + INSTALL= install +@@ -10,7 +10,7 @@ + all: pppdump + + pppdump: $(OBJS) +- $(CC) -o pppdump $(OBJS) ++ $(CC) $(LDFLAGS) -o pppdump $(OBJS) + + clean: + rm -f pppdump $(OBJS) *~ +diff -ur ppp-2.4.5.orig/pppstats/Makefile.linux ppp-2.4.5/pppstats/Makefile.linux +--- ppp-2.4.5.orig/pppstats/Makefile.linux 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppstats/Makefile.linux 2010-08-08 09:19:38.000000000 +0200 +@@ -10,7 +10,6 @@ + PPPSTATOBJS = pppstats.o + + #CC = gcc +-COPTS = -O + COMPILE_FLAGS = -I../include + LIBS = + +@@ -26,7 +25,7 @@ + $(INSTALL) -c -m 444 pppstats.8 $(MANDIR) + + pppstats: $(PPPSTATSRCS) +- $(CC) $(CFLAGS) -o pppstats pppstats.c $(LIBS) ++ $(CC) $(CFLAGS) $(LDFLAGS) -o pppstats pppstats.c $(LIBS) + + clean: + rm -f pppstats *~ #* core diff --git a/network/connection/ppp/files/gentoo/04_all_mpls.patch b/network/connection/ppp/files/gentoo/04_all_mpls.patch new file mode 100644 index 0000000000..86d79ef557 --- /dev/null +++ b/network/connection/ppp/files/gentoo/04_all_mpls.patch @@ -0,0 +1,431 @@ +diff -Nur ppp-2.4.5.orig/pppd/main.c ppp-2.4.5/pppd/main.c +--- ppp-2.4.5.orig/pppd/main.c 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/main.c 2010-08-08 09:30:23.000000000 +0200 +@@ -96,6 +96,9 @@ + #include "fsm.h" + #include "lcp.h" + #include "ipcp.h" ++ ++#include "mplscp.h" ++ + #ifdef INET6 + #include "ipv6cp.h" + #endif +@@ -283,6 +286,7 @@ + &cbcp_protent, + #endif + &ipcp_protent, ++ &mplscp_protent, + #ifdef INET6 + &ipv6cp_protent, + #endif +diff -Nur ppp-2.4.5.orig/pppd/Makefile.linux ppp-2.4.5/pppd/Makefile.linux +--- ppp-2.4.5.orig/pppd/Makefile.linux 2010-08-08 09:22:22.000000000 +0200 ++++ ppp-2.4.5/pppd/Makefile.linux 2010-08-08 09:31:43.000000000 +0200 +@@ -13,16 +13,16 @@ + + PPPDSRCS = main.c magic.c fsm.c lcp.c ipcp.c upap.c chap-new.c md5.c ccp.c \ + ecp.c ipxcp.c auth.c options.c sys-linux.c md4.c chap_ms.c \ +- demand.c utils.c tty.c eap.c chap-md5.c session.c ++ demand.c utils.c tty.c eap.c chap-md5.c session.c mplscp.c + + HEADERS = ccp.h session.h chap-new.h ecp.h fsm.h ipcp.h \ + ipxcp.h lcp.h magic.h md5.h patchlevel.h pathnames.h pppd.h \ +- upap.h eap.h ++ upap.h eap.h mplscp.h + + MANPAGES = pppd.8 + PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap-new.o md5.o ccp.o \ + ecp.o auth.o options.o demand.o utils.o sys-linux.o ipxcp.o tty.o \ +- eap.o chap-md5.o session.o ++ eap.o chap-md5.o session.o mplscp.o + + # + # include dependencies if present +diff -Nur ppp-2.4.5.orig/pppd/mplscp.c ppp-2.4.5/pppd/mplscp.c +--- ppp-2.4.5.orig/pppd/mplscp.c 1970-01-01 01:00:00.000000000 +0100 ++++ ppp-2.4.5/pppd/mplscp.c 2010-08-08 09:30:23.000000000 +0200 +@@ -0,0 +1,371 @@ ++ ++/* MPLSCP - Serge.Krier@advalvas.be (C) 2001 */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "pppd.h" ++#include "fsm.h" ++#include "mplscp.h" ++ ++ ++/* local vars */ ++/* static int mplscp_is_up; */ /* have called np_up() */ ++ ++/* ++ * Callbacks for fsm code. (CI = Configuration Information) ++ */ ++static void mplscp_resetci __P((fsm *)); /* Reset our CI */ ++static int mplscp_cilen __P((fsm *)); /* Return length of our CI */ ++static void mplscp_addci __P((fsm *, u_char *, int *)); /* Add our CI */ ++static int mplscp_ackci __P((fsm *, u_char *, int)); /* Peer ack'd our CI */ ++static int mplscp_nakci __P((fsm *, u_char *, int)); /* Peer nak'd our CI */ ++static int mplscp_rejci __P((fsm *, u_char *, int)); /* Peer rej'd our CI */ ++static int mplscp_reqci __P((fsm *, u_char *, int *, int)); /* Rcv CI */ ++static void mplscp_up __P((fsm *)); /* We're UP */ ++static void mplscp_down __P((fsm *)); /* We're DOWN */ ++static void mplscp_finished __P((fsm *)); /* Don't need lower layer */ ++ ++fsm mplscp_fsm[NUM_PPP]; /* MPLSCP fsm structure */ ++ ++static fsm_callbacks mplscp_callbacks = { /* MPLSCP callback routines */ ++ mplscp_resetci, /* Reset our Configuration Information */ ++ mplscp_cilen, /* Length of our Configuration Information */ ++ mplscp_addci, /* Add our Configuration Information */ ++ mplscp_ackci, /* ACK our Configuration Information */ ++ mplscp_nakci, /* NAK our Configuration Information */ ++ mplscp_rejci, /* Reject our Configuration Information */ ++ mplscp_reqci, /* Request peer's Configuration Information */ ++ mplscp_up, /* Called when fsm reaches OPENED state */ ++ mplscp_down, /* Called when fsm leaves OPENED state */ ++ NULL, /* Called when we want the lower layer up */ ++ mplscp_finished, /* Called when we want the lower layer down */ ++ NULL, /* Called when Protocol-Reject received */ ++ NULL, /* Retransmission is necessary */ ++ NULL, /* Called to handle protocol-specific codes */ ++ "MPLSCP" /* String name of protocol */ ++}; ++ ++static option_t mplscp_option_list[] = { ++ { "mpls", o_bool, &mplscp_protent.enabled_flag, ++ "Enable MPLSCP (and MPLS)", 1 }, ++ { NULL } }; ++ ++/* ++ * Protocol entry points from main code. ++ */ ++ ++static void mplscp_init __P((int)); ++static void mplscp_open __P((int)); ++static void mplscp_close __P((int, char *)); ++static void mplscp_lowerup __P((int)); ++static void mplscp_lowerdown __P((int)); ++static void mplscp_input __P((int, u_char *, int)); ++static void mplscp_protrej __P((int)); ++static int mplscp_printpkt __P((u_char *, int, ++ void (*) __P((void *, char *, ...)), void *)); ++ ++struct protent mplscp_protent = { ++ PPP_MPLSCP, ++ mplscp_init, ++ mplscp_input, ++ mplscp_protrej, ++ mplscp_lowerup, ++ mplscp_lowerdown, ++ mplscp_open, ++ mplscp_close, ++ mplscp_printpkt, ++ NULL, ++ 0, /* MPLS not enabled by default */ ++ "MPLSCP", ++ "MPLS", ++ mplscp_option_list, ++ NULL, ++ NULL, ++ NULL ++}; ++ ++/* ++ * mplscp_init - Initialize MPLSCP. ++ */ ++static void ++mplscp_init(int unit) { ++ ++ fsm *f = &mplscp_fsm[unit]; ++ ++ f->unit = unit; ++ f->protocol = PPP_MPLSCP; ++ f->callbacks = &mplscp_callbacks; ++ fsm_init(&mplscp_fsm[unit]); ++ ++} ++ ++/* ++ * mplscp_open - MPLSCP is allowed to come up. ++ */ ++static void ++mplscp_open(int unit) { ++ ++ fsm_open(&mplscp_fsm[unit]); ++ ++} ++ ++/* ++ * mplscp_close - Take MPLSCP down. ++ */ ++static void ++mplscp_close(int unit, char *reason) { ++ ++ fsm_close(&mplscp_fsm[unit], reason); ++ ++} ++ ++/* ++ * mplscp_lowerup - The lower layer is up. ++ */ ++static void ++mplscp_lowerup(int unit) { ++ ++ fsm_lowerup(&mplscp_fsm[unit]); ++} ++ ++/* ++ * mplscp_lowerdown - The lower layer is down. ++ */ ++static void ++mplscp_lowerdown(int unit) { ++ ++ fsm_lowerdown(&mplscp_fsm[unit]); ++} ++ ++/* ++ * mplscp_input - Input MPLSCP packet. ++ */ ++static void ++mplscp_input(int unit, u_char *p, int len) { ++ ++ fsm_input(&mplscp_fsm[unit], p, len); ++} ++ ++/* ++ * mplscp_protrej - A Protocol-Reject was received for MPLSCP. ++ * Pretend the lower layer went down, so we shut up. ++ */ ++static void ++mplscp_protrej(int unit) { ++ ++ fsm_lowerdown(&mplscp_fsm[unit]); ++} ++ ++/* ++ * mplscp_resetci - Reset our CI. ++ * Called by fsm_sconfreq, Send Configure Request. ++ */ ++static void ++mplscp_resetci(fsm *f) { ++ ++ return; ++} ++ ++/* ++ * mplscp_cilen - Return length of our CI. ++ * Called by fsm_sconfreq, Send Configure Request. ++ */ ++static int ++mplscp_cilen(fsm *f) { ++ ++ return 0; ++} ++ ++/* ++ * mplscp_addci - Add our desired CIs to a packet. ++ * Called by fsm_sconfreq, Send Configure Request. ++ */ ++static void ++mplscp_addci(fsm *f, u_char *ucp, int *lenp) { ++ ++} ++ ++/* ++ * ipcp_ackci - Ack our CIs. ++ * Called by fsm_rconfack, Receive Configure ACK. ++ * ++ * Returns: ++ * 0 - Ack was bad. ++ * 1 - Ack was good. ++ */ ++static int ++mplscp_ackci(fsm *f, u_char *p, int len) { ++ ++ return 1; ++ ++} ++ ++/* ++ * mplscp_nakci - Peer has sent a NAK for some of our CIs. ++ * This should not modify any state if the Nak is bad ++ * or if MPLSCP is in the OPENED state. ++ * Calback from fsm_rconfnakrej - Receive Configure-Nak or Configure-Reject. ++ * ++ * Returns: ++ * 0 - Nak was bad. ++ * 1 - Nak was good. ++ */ ++static int ++mplscp_nakci(fsm *f, u_char *p, int len) { ++ ++ return 1; ++} ++ ++/* ++ * MPLSVP_rejci - Reject some of our CIs. ++ * Callback from fsm_rconfnakrej. ++ */ ++static int ++mplscp_rejci(fsm *f, u_char *p, int len) { ++ ++ return 1; ++ ++} ++ ++/* ++ * mplscp_reqci - Check the peer's requested CIs and send appropriate response. ++ * Callback from fsm_rconfreq, Receive Configure Request ++ * ++ * Returns: CONFACK, CONFNAK or CONFREJ and input packet modified ++ * appropriately. If reject_if_disagree is non-zero, doesn't return ++ * CONFNAK; returns CONFREJ if it can't return CONFACK. ++ */ ++static int ++mplscp_reqci(fsm *f, u_char *inp, int *len, int reject_if_disagree) { ++ ++ ++ int rc = CONFACK; /* Final packet return code */ ++ ++ PUTCHAR(CONFACK,inp); ++ ++ return rc; ++ ++} ++ ++static void ++mplscp_up(fsm *f) { ++ ++ sifnpmode(f->unit, PPP_MPLS_UC, NPMODE_PASS); ++ /* sifnpmode(f->unit, PPP_MPLS_MC, NPMODE_PASS);*/ ++ ++ np_up(f->unit, PPP_MPLS_UC); ++ /* np_up(f->unit, PPP_MPLS_MC);*/ ++ /* ipcp_is_up = 1;*/ ++ ++ ++#if 1 ++ printf("MPLSCP is OPENED\n"); ++#endif ++ ++} ++ ++static void ++mplscp_down(fsm *f) { ++ ++ sifnpmode(f->unit, PPP_MPLS_UC, NPMODE_DROP); ++ /* sifnpmode(f->unit, PPP_MPLS_MC, NPMODE_DROP);*/ ++ ++ sifdown(f->unit); ++ ++#if 1 ++ printf("MPLSCP is CLOSED\n"); ++#endif ++ ++ ++} ++ ++static void ++mplscp_finished(fsm *f) { ++ ++ np_finished(f->unit, PPP_MPLS_UC); ++ /* np_finished(f->unit, PPP_MPLS_MC);*/ ++ ++} ++ ++/* ++ * mpls_printpkt - print the contents of an MPLSCP packet. ++ */ ++static char *mplscp_codenames[] = { ++ "ConfReq", "ConfAck", "ConfNak", "ConfRej", ++ "TermReq", "TermAck", "CodeRej" ++}; ++ ++static int ++mplscp_printpkt(u_char *p, int plen, ++ void (*printer) __P((void *, char *, ...)), ++ void *arg) { ++ ++ int code, id, len, olen; ++ u_char *pstart, *optend; ++ ++ if (plen < HEADERLEN) ++ return 0; ++ pstart = p; ++ GETCHAR(code, p); ++ GETCHAR(id, p); ++ GETSHORT(len, p); ++ if (len < HEADERLEN || len > plen) ++ return 0; ++ ++ if (code >= 1 && code <= sizeof(mplscp_codenames) / sizeof(char *)) ++ printer(arg, " %s", mplscp_codenames[code-1]); ++ else ++ printer(arg, " code=0x%x", code); ++ printer(arg, " id=0x%x", id); ++ len -= HEADERLEN; ++ switch (code) { ++ case CONFREQ: ++ case CONFACK: ++ case CONFNAK: ++ case CONFREJ: ++ /* print option list */ ++ while (len >= 2) { ++ GETCHAR(code, p); ++ GETCHAR(olen, p); ++ p -= 2; ++ if (olen < 2 || olen > len) { ++ break; ++ } ++ printer(arg, " <"); ++ len -= olen; ++ optend = p + olen; ++ while (p < optend) { ++ GETCHAR(code, p); ++ printer(arg, " %.2x", code); ++ } ++ printer(arg, ">"); ++ } ++ break; ++ ++ case TERMACK: ++ case TERMREQ: ++ if (len > 0 && *p >= ' ' && *p < 0x7f) { ++ printer(arg, " "); ++ print_string((char *)p, len, printer, arg); ++ p += len; ++ len = 0; ++ } ++ break; ++ } ++ ++ /* print the rest of the bytes in the packet */ ++ for (; len > 0; --len) { ++ GETCHAR(code, p); ++ printer(arg, " %.2x", code); ++ } ++ ++ return p - pstart; ++ ++} +diff -Nur ppp-2.4.5.orig/pppd/mplscp.h ppp-2.4.5/pppd/mplscp.h +--- ppp-2.4.5.orig/pppd/mplscp.h 1970-01-01 01:00:00.000000000 +0100 ++++ ppp-2.4.5/pppd/mplscp.h 2010-08-08 09:30:23.000000000 +0200 +@@ -0,0 +1,8 @@ ++ ++/* MPLSCP - Serge.Krier@advalvas.be (C) 2001 */ ++ ++#define PPP_MPLSCP 0x8281 ++#define PPP_MPLS_UC 0x0281 ++#define PPP_MPLS_MC 0x0283 ++ ++extern struct protent mplscp_protent; diff --git a/network/connection/ppp/files/gentoo/06_all_killaddr-smarter.patch b/network/connection/ppp/files/gentoo/06_all_killaddr-smarter.patch new file mode 100644 index 0000000000..6d12dd9edf --- /dev/null +++ b/network/connection/ppp/files/gentoo/06_all_killaddr-smarter.patch @@ -0,0 +1,134 @@ +diff -Nur ppp-2.4.5.orig/pppd/options.c ppp-2.4.5/pppd/options.c +--- ppp-2.4.5.orig/pppd/options.c 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/options.c 2010-08-08 09:43:47.000000000 +0200 +@@ -100,6 +100,9 @@ + char user[MAXNAMELEN]; /* Username for PAP */ + char passwd[MAXSECRETLEN]; /* Password for PAP */ + bool persist = 0; /* Reopen link after it goes down */ ++bool killoldaddr = 0; /* If our IP is reassigned on ++ reconnect, kill active TCP ++ connections using the old IP. */ + char our_name[MAXNAMELEN]; /* Our name for authentication purposes */ + bool demand = 0; /* do dial-on-demand */ + char *ipparam = NULL; /* Extra parameter for ip up/down scripts */ +@@ -231,6 +234,11 @@ + { "demand", o_bool, &demand, + "Dial on demand", OPT_INITONLY | 1, &persist }, + ++ { "killoldaddr", o_bool, &killoldaddr, ++ "Kill connections from an old source address", 1}, ++ { "nokilloldaddr", o_bool,&killoldaddr, ++ "Don't kill connections from an old source address" }, ++ + { "--version", o_special_noarg, (void *)showversion, + "Show version number" }, + { "--help", o_special_noarg, (void *)showhelp, +diff -Nur ppp-2.4.5.orig/pppd/pppd.h ppp-2.4.5/pppd/pppd.h +--- ppp-2.4.5.orig/pppd/pppd.h 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/pppd.h 2010-08-08 09:43:47.000000000 +0200 +@@ -298,6 +298,9 @@ + extern char remote_name[MAXNAMELEN]; /* Peer's name for authentication */ + extern bool explicit_remote;/* remote_name specified with remotename opt */ + extern bool demand; /* Do dial-on-demand */ ++extern bool killoldaddr; /* If our IP is reassigned on ++ reconnect, kill active TCP ++ connections using the old IP. */ + extern char *ipparam; /* Extra parameter for ip up/down scripts */ + extern bool cryptpap; /* Others' PAP passwords are encrypted */ + extern int idle_time_limit;/* Shut down link if idle for this long */ +diff -Nur ppp-2.4.5.orig/pppd/sys-linux.c ppp-2.4.5/pppd/sys-linux.c +--- ppp-2.4.5.orig/pppd/sys-linux.c 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/sys-linux.c 2010-08-08 09:43:47.000000000 +0200 +@@ -165,6 +165,10 @@ + + #endif /* INET6 */ + ++#ifndef SIOCKILLADDR ++#define SIOCKILLADDR 0x8939 ++#endif ++ + /* We can get an EIO error on an ioctl if the modem has hung up */ + #define ok_error(num) ((num)==EIO) + +@@ -209,6 +213,7 @@ + static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */ + static char proxy_arp_dev[16]; /* Device for proxy arp entry */ + static u_int32_t our_old_addr; /* for detecting address changes */ ++static u_int32_t our_current_addr; + static int dynaddr_set; /* 1 if ip_dynaddr set */ + static int looped; /* 1 if using loop */ + static int link_mtu; /* mtu for the link (not bundle) */ +@@ -537,6 +542,27 @@ + return -1; + } + ++static void do_killaddr(u_int32_t oldaddr) ++{ ++ struct ifreq ifr; ++ ++ memset(&ifr,0,sizeof ifr); ++ ++ SET_SA_FAMILY (ifr.ifr_addr, AF_INET); ++ SET_SA_FAMILY (ifr.ifr_dstaddr, AF_INET); ++ SET_SA_FAMILY (ifr.ifr_netmask, AF_INET); ++ ++ SIN_ADDR(ifr.ifr_addr) = oldaddr; ++ ++ strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); ++ ++ if(ioctl(sock_fd,SIOCKILLADDR,&ifr) < 0) { ++ if (!ok_error (errno)) ++ error("ioctl(SIOCKILLADDR): %m(%d)", errno); ++ return; ++ } ++} ++ + /******************************************************************** + * + * tty_disestablish_ppp - Restore the serial port to normal operation. +@@ -2385,21 +2411,29 @@ + } + } + +- /* set ip_dynaddr in demand mode if address changes */ +- if (demand && tune_kernel && !dynaddr_set +- && our_old_addr && our_old_addr != our_adr) { ++ if(persist && our_old_addr && our_old_addr != our_adr) { ++ ++ if(killoldaddr) ++ do_killaddr(our_old_addr); ++ ++ ++ /* set ip_dynaddr in persist mode if address changes */ ++ if (tune_kernel && !dynaddr_set) { + /* set ip_dynaddr if possible */ + char *path; + int fd; + + path = path_to_procfs("/sys/net/ipv4/ip_dynaddr"); + if (path != 0 && (fd = open(path, O_WRONLY)) >= 0) { +- if (write(fd, "1", 1) != 1) +- error("Couldn't enable dynamic IP addressing: %m"); +- close(fd); ++ if (write(fd, "1", 1) != 1) ++ error("Couldn't enable dynamic IP addressing: %m"); ++ close(fd); + } + dynaddr_set = 1; /* only 1 attempt */ ++ } + } ++ ++ our_current_addr = our_adr; + our_old_addr = 0; + + return 1; +@@ -2455,7 +2489,8 @@ + } + + our_old_addr = our_adr; +- ++ our_current_addr = 0; ++ + return 1; + } + diff --git a/network/connection/ppp/files/gentoo/08_all_wait-children.patch b/network/connection/ppp/files/gentoo/08_all_wait-children.patch new file mode 100644 index 0000000000..3a204ea4ed --- /dev/null +++ b/network/connection/ppp/files/gentoo/08_all_wait-children.patch @@ -0,0 +1,77 @@ +diff -Nur ppp-2.4.5.orig/pppd/main.c ppp-2.4.5/pppd/main.c +--- ppp-2.4.5.orig/pppd/main.c 2010-08-08 09:34:32.000000000 +0200 ++++ ppp-2.4.5/pppd/main.c 2010-08-08 09:46:00.000000000 +0200 +@@ -249,6 +249,7 @@ + static void forget_child __P((int pid, int status)); + static int reap_kids __P((void)); + static void childwait_end __P((void *)); ++static void wait_children __P((void)); + + #ifdef USE_TDB + static void update_db_entry __P((void)); +@@ -580,25 +581,11 @@ + if (!persist) + break; + } ++ ++ wait_children(); + } + +- /* Wait for scripts to finish */ +- reap_kids(); +- if (n_children > 0) { +- if (child_wait > 0) +- TIMEOUT(childwait_end, NULL, child_wait); +- if (debug) { +- struct subprocess *chp; +- dbglog("Waiting for %d child processes...", n_children); +- for (chp = children; chp != NULL; chp = chp->next) +- dbglog(" script %s, pid %d", chp->prog, chp->pid); +- } +- while (n_children > 0 && !childwait_done) { +- handle_events(); +- if (kill_link && !childwait_done) +- childwait_end(NULL); +- } +- } ++ wait_children(); + + die(status); + return 0; +@@ -1794,6 +1781,36 @@ + } + + /* ++ * wait_children - wait for scripts to finish. ++ * if child_wait is 0, wait indefinitely. ++ * else, kill'em all at the end of timeout ++ */ ++static void ++wait_children() ++{ ++ /* Wait for scripts to finish */ ++ reap_kids(); ++ if (n_children > 0) { ++ childwait_done = 0; ++ if (child_wait > 0) ++ TIMEOUT(childwait_end, NULL, child_wait); ++ if (debug) { ++ struct subprocess *chp; ++ dbglog("Waiting for %d child processes...", n_children); ++ for (chp = children; chp != NULL; chp = chp->next) ++ dbglog(" script %s, pid %d", chp->prog, chp->pid); ++ } ++ while (n_children > 0 && !childwait_done) { ++ handle_events(); ++ if (asked_to_quit && !childwait_done) ++ childwait_end(NULL); ++ } ++ if (child_wait > 0) ++ UNTIMEOUT(childwait_end, NULL); ++ } ++} ++ ++/* + * childwait_end - we got fed up waiting for the child processes to + * exit, send them all a SIGTERM. + */ diff --git a/network/connection/ppp/files/gentoo/10_all_defaultgateway.patch b/network/connection/ppp/files/gentoo/10_all_defaultgateway.patch new file mode 100644 index 0000000000..799e852c66 --- /dev/null +++ b/network/connection/ppp/files/gentoo/10_all_defaultgateway.patch @@ -0,0 +1,90 @@ +This patch reverses revision 1.114 of the pppd/sys-linux.c file. +The default gateway is needed by the openswan's %defaultroute. +diff -Nur ppp-2.4.5.orig/pppd/sys-linux.c ppp-2.4.5/pppd/sys-linux.c +--- ppp-2.4.5.orig/pppd/sys-linux.c 2010-08-08 09:44:29.000000000 +0200 ++++ ppp-2.4.5/pppd/sys-linux.c 2010-08-08 09:53:02.000000000 +0200 +@@ -209,7 +209,7 @@ + static unsigned char inbuf[512]; /* buffer for chars read from loopback */ + + static int if_is_up; /* Interface has been marked up */ +-static int have_default_route; /* Gateway for default route added */ ++static u_int32_t default_route_gateway; /* Gateway for default route added */ + static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */ + static char proxy_arp_dev[16]; /* Device for proxy arp entry */ + static u_int32_t our_old_addr; /* for detecting address changes */ +@@ -346,8 +346,8 @@ + /* + * Delete any routes through the device. + */ +- if (have_default_route) +- cifdefaultroute(0, 0, 0); ++ if (default_route_gateway != 0) ++ cifdefaultroute(0, 0, default_route_gateway); + + if (has_proxy_arp) + cifproxyarp(0, proxy_arp_addr); +@@ -1639,17 +1639,17 @@ + struct rtentry rt; + + if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) { +- if (rt.rt_flags & RTF_GATEWAY) +- error("not replacing existing default route via %I", +- SIN_ADDR(rt.rt_gateway)); +- else +- error("not replacing existing default route through %s", +- rt.rt_dev); ++ u_int32_t old_gateway = SIN_ADDR(rt.rt_gateway); ++ ++ if (old_gateway != gateway) ++ error("not replacing existing default route to %s [%I]", ++ rt.rt_dev, old_gateway); + return 0; + } + +- memset (&rt, 0, sizeof (rt)); +- SET_SA_FAMILY (rt.rt_dst, AF_INET); ++ memset (&rt, '\0', sizeof (rt)); ++ SET_SA_FAMILY (rt.rt_dst, AF_INET); ++ SET_SA_FAMILY (rt.rt_gateway, AF_INET); + + rt.rt_dev = ifname; + +@@ -1658,14 +1658,16 @@ + SIN_ADDR(rt.rt_genmask) = 0L; + } + +- rt.rt_flags = RTF_UP; ++ SIN_ADDR(rt.rt_gateway) = gateway; ++ ++ rt.rt_flags = RTF_UP | RTF_GATEWAY; + if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) { + if ( ! ok_error ( errno )) + error("default route ioctl(SIOCADDRT): %m"); + return 0; + } + +- have_default_route = 1; ++ default_route_gateway = gateway; + return 1; + } + +@@ -1678,7 +1680,7 @@ + { + struct rtentry rt; + +- have_default_route = 0; ++ default_route_gateway = 0; + + memset (&rt, '\0', sizeof (rt)); + SET_SA_FAMILY (rt.rt_dst, AF_INET); +@@ -1691,7 +1693,9 @@ + SIN_ADDR(rt.rt_genmask) = 0L; + } + +- rt.rt_flags = RTF_UP; ++ SIN_ADDR(rt.rt_gateway) = gateway; ++ ++ rt.rt_flags = RTF_UP | RTF_GATEWAY; + if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) { + if (still_ppp()) { + if ( ! ok_error ( errno )) diff --git a/network/connection/ppp/files/gentoo/12_all_linkpidfile.patch b/network/connection/ppp/files/gentoo/12_all_linkpidfile.patch new file mode 100644 index 0000000000..887597aeef --- /dev/null +++ b/network/connection/ppp/files/gentoo/12_all_linkpidfile.patch @@ -0,0 +1,97 @@ +diff -Nru ppp-2.4.5.orig/pppd/auth.c ppp-2.4.5/pppd/auth.c +--- ppp-2.4.5.orig/pppd/auth.c 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/auth.c 2010-08-08 09:57:01.000000000 +0200 +@@ -637,7 +637,7 @@ + * we delete its pid file. + */ + if (!doing_multilink && !demand) +- remove_pidfiles(); ++ remove_pidfile(pidfilename); + + /* + * If we may want to bring the link up again, transfer +diff -Nru ppp-2.4.5.orig/pppd/main.c ppp-2.4.5/pppd/main.c +--- ppp-2.4.5.orig/pppd/main.c 2010-08-08 09:46:42.000000000 +0200 ++++ ppp-2.4.5/pppd/main.c 2010-08-08 09:57:01.000000000 +0200 +@@ -134,7 +134,7 @@ + + char *progname; /* Name of this program */ + char hostname[MAXNAMELEN]; /* Our hostname */ +-static char pidfilename[MAXPATHLEN]; /* name of pid file */ ++char pidfilename[MAXPATHLEN]; /* name of pid file */ + static char linkpidfile[MAXPATHLEN]; /* name of linkname pid file */ + char ppp_devnam[MAXPATHLEN]; /* name of PPP tty (maybe ttypx) */ + uid_t uid; /* Our real user-id */ +@@ -245,6 +245,7 @@ + static void toggle_debug __P((int)); + static void open_ccp __P((int)); + static void bad_signal __P((int)); ++static void remove_pidfilenames __P((void)); + static void holdoff_end __P((void *)); + static void forget_child __P((int pid, int status)); + static int reap_kids __P((void)); +@@ -835,16 +836,24 @@ + } + + /* +- * remove_pidfile - remove our pid files ++ * remove_pidfile - remove one of the 2 pidfiles (pidfilename or linkpidfile) + */ +-void remove_pidfiles() ++void ++remove_pidfile(filename) ++ char* filename; + { +- if (pidfilename[0] != 0 && unlink(pidfilename) < 0 && errno != ENOENT) +- warn("unable to delete pid file %s: %m", pidfilename); +- pidfilename[0] = 0; +- if (linkpidfile[0] != 0 && unlink(linkpidfile) < 0 && errno != ENOENT) +- warn("unable to delete pid file %s: %m", linkpidfile); +- linkpidfile[0] = 0; ++ if (filename[0] != 0 && unlink(filename) < 0 && errno != ENOENT) ++ warn("unable to delete pid file %s: %m", filename); ++ filename[0] = 0; ++} ++ ++/* ++ * remove_pidfiles - remove our pid files ++ */ ++static void remove_pidfiles() ++{ ++ remove_pidfile(pidfilename); ++ remove_pidfile(linkpidfile); + } + + /* +diff -Nru ppp-2.4.5.orig/pppd/multilink.c ppp-2.4.5/pppd/multilink.c +--- ppp-2.4.5.orig/pppd/multilink.c 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/multilink.c 2010-08-08 09:57:01.000000000 +0200 +@@ -267,7 +267,7 @@ + notice("Connection terminated."); + print_link_stats(); + if (!demand) { +- remove_pidfiles(); ++ remove_pidfile(pidfilename); + script_unsetenv("IFNAME"); + } + +diff -Nru ppp-2.4.5.orig/pppd/pppd.h ppp-2.4.5/pppd/pppd.h +--- ppp-2.4.5.orig/pppd/pppd.h 2010-08-08 09:44:29.000000000 +0200 ++++ ppp-2.4.5/pppd/pppd.h 2010-08-08 09:57:01.000000000 +0200 +@@ -214,6 +214,7 @@ + extern int ifunit; /* Interface unit number */ + extern char ifname[]; /* Interface name */ + extern char hostname[]; /* Our hostname */ ++extern char pidfilename[]; /* name of pid file */ + extern u_char outpacket_buf[]; /* Buffer for outgoing packets */ + extern int devfd; /* fd of underlying device */ + extern int fd_ppp; /* fd for talking PPP */ +@@ -497,7 +498,7 @@ + int ppp_send_config __P((int, int, u_int32_t, int, int)); + int ppp_recv_config __P((int, int, u_int32_t, int, int)); + const char *protocol_name __P((int)); +-void remove_pidfiles __P((void)); ++void remove_pidfile __P((char *)); + void lock_db __P((void)); + void unlock_db __P((void)); + diff --git a/network/connection/ppp/files/gentoo/16_all_auth-fail.patch b/network/connection/ppp/files/gentoo/16_all_auth-fail.patch new file mode 100644 index 0000000000..92487d17e7 --- /dev/null +++ b/network/connection/ppp/files/gentoo/16_all_auth-fail.patch @@ -0,0 +1,141 @@ +diff -Nru ppp-2.4.5.orig/pppd/auth.c ppp-2.4.5/pppd/auth.c +--- ppp-2.4.5.orig/pppd/auth.c 2010-08-08 09:58:19.000000000 +0200 ++++ ppp-2.4.5/pppd/auth.c 2010-08-08 10:06:06.000000000 +0200 +@@ -259,7 +259,7 @@ + struct wordlist **, struct wordlist **, + char *, int)); + static void free_wordlist __P((struct wordlist *)); +-static void auth_script __P((char *)); ++static void auth_script __P((char *, int)); + static void auth_script_done __P((void *)); + static void set_allowed_addrs __P((int, struct wordlist *, struct wordlist *)); + static int some_ip_ok __P((struct wordlist *)); +@@ -690,7 +690,7 @@ + if (auth_script_state == s_up && auth_script_pid == 0) { + update_link_stats(unit); + auth_script_state = s_down; +- auth_script(_PATH_AUTHDOWN); ++ auth_script(_PATH_AUTHDOWN, 0); + } + } + if (!doing_multilink) { +@@ -822,7 +822,7 @@ + auth_state = s_up; + if (auth_script_state == s_down && auth_script_pid == 0) { + auth_script_state = s_up; +- auth_script(_PATH_AUTHUP); ++ auth_script(_PATH_AUTHUP, 0); + } + } + +@@ -923,6 +923,7 @@ + * Authentication failure: take the link down + */ + status = EXIT_PEER_AUTH_FAILED; ++ auth_script(_PATH_AUTHFAIL, 1); + lcp_close(unit, "Authentication failed"); + } + +@@ -1001,6 +1002,7 @@ + * authentication secrets. + */ + status = EXIT_AUTH_TOPEER_FAILED; ++ auth_script(_PATH_AUTHFAIL, 1); + lcp_close(unit, "Failed to authenticate ourselves to peer"); + } + +@@ -1233,6 +1235,8 @@ + if (user[0] == 0 && !explicit_user) + strlcpy(user, our_name, sizeof(user)); + ++ script_setenv("LOCALNAME", user, 0); ++ + /* + * If we have a default route, require the peer to authenticate + * unless the noauth option was given or the real user is root. +@@ -2314,13 +2318,13 @@ + case s_up: + if (auth_state == s_down) { + auth_script_state = s_down; +- auth_script(_PATH_AUTHDOWN); ++ auth_script(_PATH_AUTHDOWN, 0); + } + break; + case s_down: + if (auth_state == s_up) { + auth_script_state = s_up; +- auth_script(_PATH_AUTHUP); ++ auth_script(_PATH_AUTHUP, 0); + } + break; + } +@@ -2331,8 +2335,9 @@ + * interface-name peer-name real-user tty speed + */ + static void +-auth_script(script) ++auth_script(script, wait) + char *script; ++ int wait; + { + char strspeed[32]; + struct passwd *pw; +@@ -2356,5 +2361,8 @@ + argv[5] = strspeed; + argv[6] = NULL; + +- auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL, 0); ++ if (wait) ++ run_program(script, argv, 0, NULL, NULL, 1); ++ else ++ auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL, 0); + } +diff -Nru ppp-2.4.5.orig/pppd/pathnames.h ppp-2.4.5/pppd/pathnames.h +--- ppp-2.4.5.orig/pppd/pathnames.h 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/pathnames.h 2010-08-08 10:06:06.000000000 +0200 +@@ -27,6 +27,7 @@ + #define _PATH_IPPREUP _ROOT_PATH "/etc/ppp/ip-pre-up" + #define _PATH_AUTHUP _ROOT_PATH "/etc/ppp/auth-up" + #define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down" ++#define _PATH_AUTHFAIL _ROOT_PATH "/etc/ppp/auth-fail" + #define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options." + #define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors" + #define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/" +diff -Nru ppp-2.4.5.orig/pppd/pppd.8 ppp-2.4.5/pppd/pppd.8 +--- ppp-2.4.5.orig/pppd/pppd.8 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/pppd.8 2010-08-08 10:06:06.000000000 +0200 +@@ -1553,8 +1553,8 @@ + Pppd invokes scripts at various stages in its processing which can be + used to perform site-specific ancillary processing. These scripts are + usually shell scripts, but could be executable code files instead. +-Pppd does not wait for the scripts to finish (except for the ip-pre-up +-script). The scripts are ++Pppd does not wait for the scripts to finish (except for the ip-pre-up, ++and auth-fail scripts). The scripts are + executed as root (with the real and effective user-id set to 0), so + that they can do things such as update routing tables or run + privileged daemons. Be careful that the contents of these scripts do +@@ -1582,6 +1582,11 @@ + The authenticated name of the peer. This is only set if the peer + authenticates itself. + .TP ++.B LOCALNAME ++The username passed to the user option of the pppd daemon. This is ++handy to identify which account was used for authentication purposes ++when multiple accounts are available. ++.TP + .B SPEED + The baud rate of the tty device. + .TP +@@ -1634,6 +1639,11 @@ + /etc/ppp/auth\-up was previously executed. It is executed in the same + manner with the same parameters as /etc/ppp/auth\-up. + .TP ++.B /etc/ppp/auth\-fail ++A program or script which is executed should authentication fail. pppd ++waits for this script to finish. It is executed in the same manner, with ++the same parameters as /etc/ppp/auth\-up. ++.TP + .B /etc/ppp/ip\-pre\-up + A program or script which is executed just before the ppp network + interface is brought up. It is executed with the same parameters as diff --git a/network/connection/ppp/files/gentoo/18_all_defaultmetric.patch b/network/connection/ppp/files/gentoo/18_all_defaultmetric.patch new file mode 100644 index 0000000000..c71bf324ba --- /dev/null +++ b/network/connection/ppp/files/gentoo/18_all_defaultmetric.patch @@ -0,0 +1,108 @@ +diff -Nru ppp-2.4.5.orig/pppd/options.c ppp-2.4.5/pppd/options.c +--- ppp-2.4.5.orig/pppd/options.c 2010-08-08 09:44:29.000000000 +0200 ++++ ppp-2.4.5/pppd/options.c 2010-08-08 10:07:50.000000000 +0200 +@@ -94,6 +94,7 @@ + int kdebugflag = 0; /* Tell kernel to print debug messages */ + int default_device = 1; /* Using /dev/tty or equivalent */ + char devnam[MAXPATHLEN]; /* Device name */ ++int defaultmetric = 0; /* Metric of the default route */ + bool nodetach = 0; /* Don't detach from controlling tty */ + bool updetach = 0; /* Detach once link is up */ + int maxconnect = 0; /* Maximum connect time */ +@@ -289,6 +290,10 @@ + "Number of seconds to wait for child processes at exit", + OPT_PRIO }, + ++ { "defaultmetric", o_int, &defaultmetric, ++ "The metric of the default route", ++ OPT_LIMITS, 0, 32766 }, ++ + #ifdef HAVE_MULTILINK + { "multilink", o_bool, &multilink, + "Enable multilink operation", OPT_PRIO | 1 }, +diff -Nru ppp-2.4.5.orig/pppd/pppd.8 ppp-2.4.5/pppd/pppd.8 +--- ppp-2.4.5.orig/pppd/pppd.8 2010-08-08 10:06:57.000000000 +0200 ++++ ppp-2.4.5/pppd/pppd.8 2010-08-08 10:07:50.000000000 +0200 +@@ -121,6 +121,9 @@ + This entry is removed when the PPP connection is broken. This option + is privileged if the \fInodefaultroute\fR option has been specified. + .TP ++.B defaultmetric \fIn ++The metric of the default route configured by pppd; default is 0. ++.TP + .B disconnect \fIscript + Execute the command specified by \fIscript\fR, by passing it to a + shell, after +diff -Nru ppp-2.4.5.orig/pppd/pppd.h ppp-2.4.5/pppd/pppd.h +--- ppp-2.4.5.orig/pppd/pppd.h 2010-08-08 09:58:19.000000000 +0200 ++++ ppp-2.4.5/pppd/pppd.h 2010-08-08 10:07:50.000000000 +0200 +@@ -276,6 +276,7 @@ + extern int kdebugflag; /* Tell kernel to print debug messages */ + extern int default_device; /* Using /dev/tty or equivalent */ + extern char devnam[MAXPATHLEN]; /* Device name */ ++extern int defaultmetric; /* Metric of the default route */ + extern int crtscts; /* Use hardware flow control */ + extern bool modem; /* Use modem control lines */ + extern int inspeed; /* Input/Output speed requested */ +diff -Nru ppp-2.4.5.orig/pppd/sys-linux.c ppp-2.4.5/pppd/sys-linux.c +--- ppp-2.4.5.orig/pppd/sys-linux.c 2010-08-08 09:53:56.000000000 +0200 ++++ ppp-2.4.5/pppd/sys-linux.c 2010-08-08 10:07:50.000000000 +0200 +@@ -1465,7 +1465,7 @@ + FILE *route_fd = (FILE *) 0; + static char route_buffer[512]; + static int route_dev_col, route_dest_col, route_gw_col; +-static int route_flags_col, route_mask_col; ++static int route_flags_col, route_mask_col, route_metric_col; + static int route_num_cols; + + static int open_route_table (void); +@@ -1508,6 +1508,7 @@ + route_dest_col = 1; + route_gw_col = 2; + route_flags_col = 3; ++ route_metric_col = 6; + route_mask_col = 7; + route_num_cols = 8; + +@@ -1527,6 +1528,8 @@ + route_gw_col = col; + else if (strcasecmp(q, "flags") == 0) + route_flags_col = col; ++ else if (strcasecmp(q, "metric") == 0) ++ route_metric_col = col; + else if (strcasecmp(q, "mask") == 0) + route_mask_col = col; + else +@@ -1569,6 +1572,7 @@ + + rt->rt_flags = (short) strtoul(cols[route_flags_col], NULL, 16); + rt->rt_dev = cols[route_dev_col]; ++ rt->rt_metric = (short) strtoul(cols[route_metric_col], NULL, 16); + + return 1; + } +@@ -1591,6 +1595,8 @@ + + if (kernel_version > KVERSION(2,1,0) && SIN_ADDR(rt->rt_genmask) != 0) + continue; ++ if (rt->rt_metric != defaultmetric) /* consider only routes with the same metric */ ++ continue; + if (SIN_ADDR(rt->rt_dst) == 0L) { + result = 1; + break; +@@ -1661,6 +1667,7 @@ + SIN_ADDR(rt.rt_gateway) = gateway; + + rt.rt_flags = RTF_UP | RTF_GATEWAY; ++ rt.rt_metric = defaultmetric + 1; /* +1 for binary compatibility */ + if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) { + if ( ! ok_error ( errno )) + error("default route ioctl(SIOCADDRT): %m"); +@@ -1696,6 +1703,7 @@ + SIN_ADDR(rt.rt_gateway) = gateway; + + rt.rt_flags = RTF_UP | RTF_GATEWAY; ++ rt.rt_metric = defaultmetric + 1; /* +1 for binary compatibility */ + if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) { + if (still_ppp()) { + if ( ! ok_error ( errno )) diff --git a/network/connection/ppp/files/gentoo/20_all_dev-ppp.patch b/network/connection/ppp/files/gentoo/20_all_dev-ppp.patch new file mode 100644 index 0000000000..eff3e37f08 --- /dev/null +++ b/network/connection/ppp/files/gentoo/20_all_dev-ppp.patch @@ -0,0 +1,20 @@ +--- ppp-2.4.6/pppd/sys-linux.c ++++ ppp-2.4.6/pppd/sys-linux.c +@@ -2031,6 +2031,17 @@ + kernel_version = KVERSION(osmaj, osmin, ospatch); + + fd = open("/dev/ppp", O_RDWR); ++ if (fd < 0) { ++ /* try making it and see if that helps. */ ++ if (errno == ENOENT && mknod("/dev/ppp", S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, ++ makedev(108, 0)) >= 0) { ++ fd = open("/dev/ppp", O_RDWR); ++ if (fd >= 0) ++ info("Created /dev/ppp device node"); ++ else ++ unlink("/dev/ppp"); /* didn't work, undo the mknod */ ++ } ++ } + if (fd >= 0) { + new_style_driver = 1; + diff --git a/network/connection/ppp/files/gentoo/24_all_passwordfd-read-early.patch b/network/connection/ppp/files/gentoo/24_all_passwordfd-read-early.patch new file mode 100644 index 0000000000..f64f09366f --- /dev/null +++ b/network/connection/ppp/files/gentoo/24_all_passwordfd-read-early.patch @@ -0,0 +1,85 @@ +diff -Nru ppp-2.4.5.orig/pppd/plugins/passwordfd.c ppp-2.4.5/pppd/plugins/passwordfd.c +--- ppp-2.4.5.orig/pppd/plugins/passwordfd.c 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/plugins/passwordfd.c 2010-08-08 10:41:39.000000000 +0200 +@@ -16,11 +16,11 @@ + + char pppd_version[] = VERSION; + +-static int passwdfd = -1; + static char save_passwd[MAXSECRETLEN]; + ++static int readpassword __P((char **)); + static option_t options[] = { +- { "passwordfd", o_int, &passwdfd, ++ { "passwordfd", o_special, (void *)readpassword, + "Receive password on this file descriptor" }, + { NULL } + }; +@@ -30,43 +30,39 @@ + return 1; + } + +-static int pwfd_passwd (char *user, char *passwd) ++static int readpassword(char **argv) + { +- int readgood, red; +- +- if (passwdfd == -1) +- return -1; +- +- if (passwd == NULL) +- return 1; +- +- if (passwdfd == -2) { +- strcpy (passwd, save_passwd); +- return 1; ++ char *arg = *argv; ++ int passwdfd = -1; ++ int chunk, len; ++ ++ if (sscanf(arg, "%d", &passwdfd) != 1 || passwdfd < 0) ++ { ++ error ("\"%s\" is not a valid file descriptor number", arg); ++ return 0; + } + +- readgood = 0; ++ len = 0; + do { +- red = read (passwdfd, passwd + readgood, MAXSECRETLEN - 1 - readgood); +- if (red == 0) +- break; +- if (red < 0) { +- error ("Can't read secret from fd\n"); +- readgood = -1; ++ chunk = read (passwdfd, save_passwd + len, MAXSECRETLEN - 1 - len); ++ if (chunk == 0) + break; ++ if (chunk < 0) { ++ error ("Can't read secret from fd %d", passwdfd); ++ return 0; + } +- readgood += red; +- } while (readgood < MAXSECRETLEN - 1); +- ++ len += chunk; ++ } while (len < MAXSECRETLEN - 1); ++ save_passwd[len] = 0; + close (passwdfd); + +- if (readgood < 0) +- return 0; +- +- passwd[readgood] = 0; +- strcpy (save_passwd, passwd); +- passwdfd = -2; ++ return 1; ++} + ++static int pwfd_passwd (char *user, char *passwd) ++{ ++ if (passwd != NULL) ++ strcpy (passwd, save_passwd); + return 1; + } + diff --git a/network/connection/ppp/files/gentoo/26_all_pppd-usepeerwins.patch b/network/connection/ppp/files/gentoo/26_all_pppd-usepeerwins.patch new file mode 100644 index 0000000000..d66fbe0b1c --- /dev/null +++ b/network/connection/ppp/files/gentoo/26_all_pppd-usepeerwins.patch @@ -0,0 +1,256 @@ +--- ppp-2.4.6/pppd/ipcp.c ++++ ppp-2.4.6/pppd/ipcp.c +@@ -91,6 +91,7 @@ + static int default_route_set[NUM_PPP]; /* Have set up a default route */ + static int proxy_arp_set[NUM_PPP]; /* Have created proxy arp entry */ + static bool usepeerdns; /* Ask peer for DNS addrs */ ++static bool usepeerwins; /* Ask peer for WINS addrs */ + static int ipcp_is_up; /* have called np_up() */ + static int ipcp_is_open; /* haven't called np_finished() */ + static bool ask_for_local; /* request our address from peer */ +@@ -210,6 +211,9 @@ + { "usepeerdns", o_bool, &usepeerdns, + "Ask peer for DNS address(es)", 1 }, + ++ { "usepeerwins", o_bool, &usepeerwins, ++ "Ask peer for WINS address(es)", 1 }, ++ + { "netmask", o_special, (void *)setnetmask, + "set netmask", OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, netmask_str }, + +@@ -703,6 +707,8 @@ + wo->accept_remote = 1; + wo->req_dns1 = usepeerdns; /* Request DNS addresses from the peer */ + wo->req_dns2 = usepeerdns; ++ wo->req_wins1 = usepeerwins; /* Request WINS addresses from the peer */ ++ wo->req_wins2 = usepeerwins; + *go = *wo; + if (!ask_for_local) + go->ouraddr = 0; +@@ -755,8 +761,8 @@ + LENCIADDR(go->neg_addr) + + LENCIDNS(go->req_dns1) + + LENCIDNS(go->req_dns2) + +- LENCIWINS(go->winsaddr[0]) + +- LENCIWINS(go->winsaddr[1])) ; ++ LENCIWINS(go->req_wins1) + ++ LENCIWINS(go->req_wins2)) ; + } + + +@@ -830,8 +836,8 @@ + neg = 0; \ + } + +-#define ADDCIWINS(opt, addr) \ +- if (addr) { \ ++#define ADDCIWINS(opt, neg, addr) \ ++ if (neg) { \ + if (len >= CILEN_ADDR) { \ + u_int32_t l; \ + PUTCHAR(opt, ucp); \ +@@ -840,7 +846,7 @@ + PUTLONG(l, ucp); \ + len -= CILEN_ADDR; \ + } else \ +- addr = 0; \ ++ neg = 0; \ + } + + ADDCIADDRS(CI_ADDRS, !go->neg_addr && go->old_addrs, go->ouraddr, +@@ -855,9 +861,9 @@ + + ADDCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]); + +- ADDCIWINS(CI_MS_WINS1, go->winsaddr[0]); ++ ADDCIWINS(CI_MS_WINS1, go->req_wins1, go->winsaddr[0]); + +- ADDCIWINS(CI_MS_WINS2, go->winsaddr[1]); ++ ADDCIWINS(CI_MS_WINS2, go->req_wins2, go->winsaddr[1]); + + *lenp -= len; + } +@@ -962,8 +968,8 @@ + goto bad; \ + } + +-#define ACKCIWINS(opt, addr) \ +- if (addr) { \ ++#define ACKCIWINS(opt, neg, addr) \ ++ if (neg) { \ + u_int32_t l; \ + if ((len -= CILEN_ADDR) < 0) \ + goto bad; \ +@@ -989,9 +995,9 @@ + + ACKCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]); + +- ACKCIWINS(CI_MS_WINS1, go->winsaddr[0]); ++ ACKCIWINS(CI_MS_WINS1, go->req_wins1, go->winsaddr[0]); + +- ACKCIWINS(CI_MS_WINS2, go->winsaddr[1]); ++ ACKCIWINS(CI_MS_WINS2, go->req_wins2, go->winsaddr[1]); + + /* + * If there are any remaining CIs, then this packet is bad. +@@ -1026,7 +1032,7 @@ + u_char cimaxslotindex, cicflag; + u_char citype, cilen, *next; + u_short cishort; +- u_int32_t ciaddr1, ciaddr2, l, cidnsaddr; ++ u_int32_t ciaddr1, ciaddr2, l, cidnsaddr, ciwinsaddr; + ipcp_options no; /* options we've seen Naks for */ + ipcp_options try; /* options to request next time */ + +@@ -1091,6 +1097,19 @@ + code \ + } + ++#define NAKCIWINS(opt, neg, code) \ ++ if (go->neg && \ ++ ((cilen = p[1]) == CILEN_ADDR) && \ ++ len >= cilen && \ ++ p[0] == opt) { \ ++ len -= cilen; \ ++ INCPTR(2, p); \ ++ GETLONG(l, p); \ ++ ciwinsaddr = htonl(l); \ ++ no.neg = 1; \ ++ code \ ++ } ++ + /* + * Accept the peer's idea of {our,his} address, if different + * from our idea, only if the accept_{local,remote} flag is set. +@@ -1167,6 +1186,22 @@ + } + ); + ++ NAKCIWINS(CI_MS_WINS1, req_wins1, ++ if (treat_as_reject) { ++ try.req_wins1 = 0; ++ } else { ++ try.winsaddr[0] = ciwinsaddr; ++ } ++ ); ++ ++ NAKCIWINS(CI_MS_WINS2, req_wins2, ++ if (treat_as_reject) { ++ try.req_wins2 = 0; ++ } else { ++ try.winsaddr[1] = ciwinsaddr; ++ } ++ ); ++ + /* + * There may be remaining CIs, if the peer is requesting negotiation + * on an option that we didn't include in our request packet. +@@ -1259,7 +1294,6 @@ + return 0; + } + +- + /* + * ipcp_rejci - Reject some of our CIs. + * Callback from fsm_rconfnakrej. +@@ -1357,8 +1391,8 @@ + try.neg = 0; \ + } + +-#define REJCIWINS(opt, addr) \ +- if (addr && \ ++#define REJCIWINS(opt, neg, addr) \ ++ if (go->neg && \ + ((cilen = p[1]) == CILEN_ADDR) && \ + len >= cilen && \ + p[0] == opt) { \ +@@ -1370,7 +1404,7 @@ + /* Check rejected value. */ \ + if (cilong != addr) \ + goto bad; \ +- try.winsaddr[opt == CI_MS_WINS2] = 0; \ ++ try.neg = 0; \ + } + + REJCIADDRS(CI_ADDRS, !go->neg_addr && go->old_addrs, +@@ -1385,9 +1419,9 @@ + + REJCIDNS(CI_MS_DNS2, req_dns2, go->dnsaddr[1]); + +- REJCIWINS(CI_MS_WINS1, go->winsaddr[0]); ++ REJCIWINS(CI_MS_WINS1, req_wins1, go->winsaddr[0]); + +- REJCIWINS(CI_MS_WINS2, go->winsaddr[1]); ++ REJCIWINS(CI_MS_WINS2, req_wins2, go->winsaddr[1]); + + /* + * If there are any remaining CIs, then this packet is bad. +@@ -1581,7 +1615,7 @@ + /* Microsoft primary or secondary WINS request */ + d = citype == CI_MS_WINS2; + +- /* If we do not have a DNS address then we cannot send it */ ++ /* If we do not have a WINS address then we cannot send it */ + if (ao->winsaddr[d] == 0 || + cilen != CILEN_ADDR) { /* Check CI length */ + orc = CONFREJ; /* Reject CI */ +@@ -1830,6 +1864,13 @@ + create_resolv(go->dnsaddr[0], go->dnsaddr[1]); + } + ++ if (go->winsaddr[0]) ++ script_setenv("WINS1", ip_ntoa(go->winsaddr[0]), 0); ++ if (go->winsaddr[1]) ++ script_setenv("WINS2", ip_ntoa(go->winsaddr[1]), 0); ++ if (usepeerwins && (go->winsaddr[0] || go->winsaddr[1])) ++ script_setenv("USEPEERWINS", "1", 0); ++ + /* + * Check that the peer is allowed to use the IP address it wants. + */ +--- ppp-2.4.6/pppd/ipcp.h ++++ ppp-2.4.6/pppd/ipcp.h +@@ -77,6 +77,8 @@ + bool accept_remote; /* accept peer's value for hisaddr */ + bool req_dns1; /* Ask peer to send primary DNS address? */ + bool req_dns2; /* Ask peer to send secondary DNS address? */ ++ bool req_wins1; /* Ask peer to send primary WINS address? */ ++ bool req_wins2; /* Ask peer to send secondary WINS address? */ + int vj_protocol; /* protocol value to use in VJ option */ + int maxslotindex; /* values for RFC1332 VJ compression neg. */ + bool cflag; +--- ppp-2.4.6/pppd/pppd.8 ++++ ppp-2.4.6/pppd/pppd.8 +@@ -1102,6 +1102,16 @@ + /etc/ppp/resolv.conf file containing one or two nameserver lines with + the address(es) supplied by the peer. + .TP ++.B usepeerwins ++Ask the peer for up to 2 WINS server addresses. The addresses supplied ++by the peer (if any) are passed to the /etc/ppp/ip\-up script in the ++environment variables WINS1 and WINS2, and the environment variable ++USEPEERWINS will be set to 1. ++.LP ++Please note that some modems (like the Huawei E220) requires this option in ++order to avoid a race condition that results in the incorrect DNS servers ++being assigned. ++.TP + .B user \fIname + Sets the name used for authenticating the local system to the peer to + \fIname\fR. +@@ -1650,6 +1660,15 @@ + If the peer supplies DNS server addresses, this variable is set to the + second DNS server address supplied (whether or not the usepeerdns + option was given). ++.TP ++.B WINS1 ++If the peer supplies WINS server addresses, this variable is set to the ++first WINS server address supplied. ++.TP ++.B WINS2 ++If the peer supplies WINS server addresses, this variable is set to the ++second WINS server address supplied. ++.P + .P + Pppd invokes the following scripts, if they exist. It is not an error + if they don't exist. diff --git a/network/connection/ppp/files/gentoo/28_all_connect-errors.patch b/network/connection/ppp/files/gentoo/28_all_connect-errors.patch new file mode 100644 index 0000000000..f3b7b18cb6 --- /dev/null +++ b/network/connection/ppp/files/gentoo/28_all_connect-errors.patch @@ -0,0 +1,12 @@ +diff -Nru ppp-2.4.5.orig/pppd/pathnames.h ppp-2.4.5/pppd/pathnames.h +--- ppp-2.4.5.orig/pppd/pathnames.h 2010-08-08 10:06:57.000000000 +0200 ++++ ppp-2.4.5/pppd/pathnames.h 2010-08-08 10:53:51.000000000 +0200 +@@ -29,7 +29,7 @@ + #define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down" + #define _PATH_AUTHFAIL _ROOT_PATH "/etc/ppp/auth-fail" + #define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options." +-#define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors" ++#define _PATH_CONNERRS _ROOT_PATH "/var/log/ppp-connect-errors" + #define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/" + #define _PATH_RESOLV _ROOT_PATH "/etc/ppp/resolv.conf" + diff --git a/network/connection/ppp/files/gentoo/30_all_Makefile.patch b/network/connection/ppp/files/gentoo/30_all_Makefile.patch new file mode 100644 index 0000000000..e3a406240e --- /dev/null +++ b/network/connection/ppp/files/gentoo/30_all_Makefile.patch @@ -0,0 +1,37 @@ +Ensure that the build process aborts if there is an error in one of +the plugin subdirectories. + +2010-09-01 Martin von Gagern + +References: +http://bugs.gentoo.org/334727 + +Index: ppp-2.4.5/pppd/plugins/Makefile.linux +=================================================================== +--- ppp-2.4.5.orig/pppd/plugins/Makefile.linux ++++ ppp-2.4.5/pppd/plugins/Makefile.linux +@@ -20,7 +20,7 @@ include .depend + endif + + all: $(PLUGINS) +- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all; done ++ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all || exit $?; done + + %.so: %.c + $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $^ +@@ -30,12 +30,12 @@ VERSION = $(shell awk -F '"' '/VERSION/ + install: $(PLUGINS) + $(INSTALL) -d $(LIBDIR) + $(INSTALL) $? $(LIBDIR) +- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d install; done ++ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d install || exit $?; done + + clean: + rm -f *.o *.so *.a +- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d clean; done ++ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d clean || exit $?; done + + depend: + $(CPP) -M $(CFLAGS) *.c >.depend +- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d depend; done ++ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d depend || exit $?; done diff --git a/network/connection/ppp/files/gentoo/32_all_pado-timeout.patch b/network/connection/ppp/files/gentoo/32_all_pado-timeout.patch new file mode 100644 index 0000000000..72f1adbb1e --- /dev/null +++ b/network/connection/ppp/files/gentoo/32_all_pado-timeout.patch @@ -0,0 +1,254 @@ +--- ppp-2.4.6/pppd/plugins/rp-pppoe/discovery.c ++++ ppp-2.4.6/pppd/plugins/rp-pppoe/discovery.c +@@ -39,6 +39,7 @@ + #endif + + #include ++#include + + /* Calculate time remaining until *exp, return 0 if now >= *exp */ + static int time_left(struct timeval *diff, struct timeval *exp) +@@ -251,6 +252,80 @@ + } + + /*********************************************************************** ++*%FUNCTION: recvPacketForMe ++*%ARGUMENTS: ++* packet -- output parameter ++* len -- output parameter length ++* conn -- connection ++* start -- operation startup timestamp ++* timeout -- how long to wait (in seconds) ++*%RETURNS: ++* -1: error ++* 0: timed out ++* 1: packet received ++*%DESCRIPTION: ++* receive and filter junk packets ++***********************************************************************/ ++ ++static int ++recvPacketForMe(PPPoEPacket *packet, int *len, PPPoEConnection *conn, time_t start, int timeout) ++{ ++ fd_set readable; ++ int r; ++ struct timeval tv; ++ time_t now; ++ int time_remain; ++ ++ do { ++ time(&now); ++ time_remain = timeout - (int)difftime(now, start); ++ if (time_remain <= 0) return 0; /* Timed out */ ++ ++ if (BPF_BUFFER_IS_EMPTY) { ++ tv.tv_sec = time_remain; ++ tv.tv_usec = 0; ++ ++ FD_ZERO(&readable); ++ FD_SET(conn->discoverySocket, &readable); ++ ++ r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv); ++ if (r < 0) ++ { ++ if (errno == EINTR) ++ { ++ continue; /* interrupted, so retry */ ++ }else ++ { ++ error("pppoe: recvPacketForMe: select: %m"); ++ return -1; ++ } ++ } ++ ++ if (r == 0) return 0; /* Timed out */ ++ } ++ ++ /* Get the packet */ ++ receivePacket(conn->discoverySocket, packet, len); ++ ++ /* Check length */ ++ if (ntohs(packet->length) + HDR_SIZE > *len) { ++ error("Bogus PPPoE length field (%u)", ++ (unsigned int) ntohs(packet->length)); ++ continue; ++ } ++ ++#ifdef USE_BPF ++ /* If it's not a Discovery packet, loop again */ ++ if (etherType(&packet) != Eth_PPPOE_Discovery) continue; ++#endif ++ /* If it's not for us, loop again */ ++ }while ( ! packetIsForMe(conn, packet)); ++ ++ return 1; ++} ++ ++ ++/*********************************************************************** + *%FUNCTION: sendPADI + *%ARGUMENTS: + * conn -- PPPoEConnection structure +@@ -344,13 +419,12 @@ + void + waitForPADO(PPPoEConnection *conn, int timeout) + { +- fd_set readable; + int r; +- struct timeval tv; + struct timeval expire_at; + + PPPoEPacket packet; + int len; ++ time_t start; + + struct PacketCriteria pc; + pc.conn = conn; +@@ -367,43 +441,10 @@ + } + expire_at.tv_sec += timeout; + ++ time(&start); + do { +- if (BPF_BUFFER_IS_EMPTY) { +- if (!time_left(&tv, &expire_at)) +- return; /* Timed out */ +- +- FD_ZERO(&readable); +- FD_SET(conn->discoverySocket, &readable); +- +- while(1) { +- r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv); +- if (r >= 0 || errno != EINTR) break; +- } +- if (r < 0) { +- error("select (waitForPADO): %m"); +- return; +- } +- if (r == 0) +- return; /* Timed out */ +- } +- +- /* Get the packet */ +- receivePacket(conn->discoverySocket, &packet, &len); +- +- /* Check length */ +- if (ntohs(packet.length) + HDR_SIZE > len) { +- error("Bogus PPPoE length field (%u)", +- (unsigned int) ntohs(packet.length)); +- continue; +- } +- +-#ifdef USE_BPF +- /* If it's not a Discovery packet, loop again */ +- if (etherType(&packet) != Eth_PPPOE_Discovery) continue; +-#endif +- +- /* If it's not for us, loop again */ +- if (!packetIsForMe(conn, &packet)) continue; ++ r = recvPacketForMe(&packet, &len, conn, start, timeout); ++ if (r<=0) return; /* Timed out or error */ + + if (packet.code == CODE_PADO) { + if (NOT_UNICAST(packet.ethHdr.h_source)) { +@@ -537,13 +578,12 @@ + static void + waitForPADS(PPPoEConnection *conn, int timeout) + { +- fd_set readable; + int r; +- struct timeval tv; + struct timeval expire_at; + + PPPoEPacket packet; + int len; ++ time_t start; + + if (gettimeofday(&expire_at, NULL) < 0) { + error("gettimeofday (waitForPADS): %m"); +@@ -551,48 +591,15 @@ + } + expire_at.tv_sec += timeout; + ++ time(&start); + conn->error = 0; + do { +- if (BPF_BUFFER_IS_EMPTY) { +- if (!time_left(&tv, &expire_at)) +- return; /* Timed out */ +- +- FD_ZERO(&readable); +- FD_SET(conn->discoverySocket, &readable); +- +- while(1) { +- r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv); +- if (r >= 0 || errno != EINTR) break; +- } +- if (r < 0) { +- error("select (waitForPADS): %m"); +- return; +- } +- if (r == 0) +- return; /* Timed out */ +- } +- +- /* Get the packet */ +- receivePacket(conn->discoverySocket, &packet, &len); +- +- /* Check length */ +- if (ntohs(packet.length) + HDR_SIZE > len) { +- error("Bogus PPPoE length field (%u)", +- (unsigned int) ntohs(packet.length)); +- continue; +- } +- +-#ifdef USE_BPF +- /* If it's not a Discovery packet, loop again */ +- if (etherType(&packet) != Eth_PPPOE_Discovery) continue; +-#endif ++ r = recvPacketForMe(&packet, &len, conn, start, timeout); ++ if (r<=0) return; /* Timed out or error */ + + /* If it's not from the AC, it's not for me */ + if (memcmp(packet.ethHdr.h_source, conn->peerEth, ETH_ALEN)) continue; + +- /* If it's not for us, loop again */ +- if (!packetIsForMe(conn, &packet)) continue; +- + /* Is it PADS? */ + if (packet.code == CODE_PADS) { + /* Parse for goodies */ +--- ppp-2.4.6/pppd/plugins/rp-pppoe/pppoe-discovery.c ++++ ppp-2.4.6/pppd/plugins/rp-pppoe/pppoe-discovery.c +@@ -14,6 +14,7 @@ + #include + #include + #include ++#include + + #include "pppoe.h" + +@@ -513,6 +514,8 @@ + struct timeval tv; + PPPoEPacket packet; + int len; ++ time_t start, now; ++ int time_remain; + + struct PacketCriteria pc; + pc.conn = conn; +@@ -522,9 +525,13 @@ + pc.seenServiceName = 0; + conn->error = 0; + ++ time(&start); + do { ++ time(&now); ++ time_remain = timeout - (int)difftime(now, start); ++ if (time_remain <= 0) return; /* Timed out */ + if (BPF_BUFFER_IS_EMPTY) { +- tv.tv_sec = timeout; ++ tv.tv_sec = time_remain; + tv.tv_usec = 0; + + FD_ZERO(&readable); diff --git a/network/connection/ppp/files/gentoo/34_all_lcp-echo-adaptive.patch b/network/connection/ppp/files/gentoo/34_all_lcp-echo-adaptive.patch new file mode 100644 index 0000000000..b1549deb38 --- /dev/null +++ b/network/connection/ppp/files/gentoo/34_all_lcp-echo-adaptive.patch @@ -0,0 +1,58 @@ +diff -Nru ppp-2.4.5.orig/pppd/lcp.c ppp-2.4.5/pppd/lcp.c +--- ppp-2.4.5.orig/pppd/lcp.c 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/lcp.c 2010-11-27 10:46:26.000000000 +0100 +@@ -73,6 +73,7 @@ + */ + int lcp_echo_interval = 0; /* Interval between LCP echo-requests */ + int lcp_echo_fails = 0; /* Tolerance to unanswered echo-requests */ ++bool lcp_echo_adaptive = 0; /* request echo only if the link was idle */ + bool lax_recv = 0; /* accept control chars in asyncmap */ + bool noendpoint = 0; /* don't send/accept endpoint discriminator */ + +@@ -151,6 +152,8 @@ + OPT_PRIO }, + { "lcp-echo-interval", o_int, &lcp_echo_interval, + "Set time in seconds between LCP echo requests", OPT_PRIO }, ++ { "lcp-echo-adaptive", o_bool, &lcp_echo_adaptive, ++ "Suppress LCP echo requests if traffic was received", 1 }, + { "lcp-restart", o_int, &lcp_fsm[0].timeouttime, + "Set time in seconds between LCP retransmissions", OPT_PRIO }, + { "lcp-max-terminate", o_int, &lcp_fsm[0].maxtermtransmits, +@@ -2322,6 +2325,22 @@ + } + + /* ++ * If adaptive echos have been enabled, only send the echo request if ++ * no traffic was received since the last one. ++ */ ++ if (lcp_echo_adaptive) { ++ static unsigned int last_pkts_in = 0; ++ ++ update_link_stats(f->unit); ++ link_stats_valid = 0; ++ ++ if (link_stats.pkts_in != last_pkts_in) { ++ last_pkts_in = link_stats.pkts_in; ++ return; ++ } ++ } ++ ++ /* + * Make and send the echo request frame. + */ + if (f->state == OPENED) { +diff -Nru ppp-2.4.5.orig/pppd/pppd.8 ppp-2.4.5/pppd/pppd.8 +--- ppp-2.4.5.orig/pppd/pppd.8 2009-11-16 23:26:07.000000000 +0100 ++++ ppp-2.4.5/pppd/pppd.8 2010-11-27 10:44:58.000000000 +0100 +@@ -549,6 +549,11 @@ + dynamic IP address option (i.e. set /proc/sys/net/ipv4/ip_dynaddr to + 1) in demand mode if the local address changes. + .TP ++.B lcp\-echo\-adaptive ++If this option is used with the \fIlcp\-echo\-failure\fR option then ++pppd will send LCP echo\-request frames only if no traffic was received ++from the peer since the last echo\-request was sent. ++.TP + .B lcp\-echo\-failure \fIn + If this option is given, pppd will presume the peer to be dead + if \fIn\fR LCP echo\-requests are sent without receiving a valid LCP diff --git a/network/connection/ppp/files/gentoo/80_all_eaptls-mppe-0.994-gentoo.patch b/network/connection/ppp/files/gentoo/80_all_eaptls-mppe-0.994-gentoo.patch new file mode 100644 index 0000000000..3735e0c264 --- /dev/null +++ b/network/connection/ppp/files/gentoo/80_all_eaptls-mppe-0.994-gentoo.patch @@ -0,0 +1,2898 @@ +Taken from http://www.nikhef.nl/~janjust/ppp/ and modified to fit for +ppp-2.4.6 + +--- ppp-2.4.6/etc.ppp/eaptls-client ++++ ppp-2.4.6/etc.ppp/eaptls-client +@@ -0,0 +1,10 @@ ++# Parameters for authentication using EAP-TLS (client) ++ ++# client name (can be *) ++# server name (can be *) ++# client certificate file (required) ++# server certificate file (optional, if unused put '-') ++# CA certificate file (required) ++# client private key file (required) ++ ++#client server /root/cert/client.crt - /root/cert/ca.crt /root/cert/client.key +--- ppp-2.4.6/etc.ppp/eaptls-server ++++ ppp-2.4.6/etc.ppp/eaptls-server +@@ -0,0 +1,11 @@ ++# Parameters for authentication using EAP-TLS (server) ++ ++# client name (can be *) ++# server name (can be *) ++# client certificate file (optional, if unused put '-') ++# server certificate file (required) ++# CA certificate file (required) ++# server private key file (required) ++# allowed addresses (required, can be *) ++ ++#client server - /root/cert/server.crt /root/cert/ca.crt /root/cert/server.key 192.168.1.0/24 +--- ppp-2.4.6/etc.ppp/openssl.cnf ++++ ppp-2.4.6/etc.ppp/openssl.cnf +@@ -0,0 +1,14 @@ ++openssl_conf = openssl_def ++ ++[ openssl_def ] ++engines = engine_section ++ ++[ engine_section ] ++pkcs11 = pkcs11_section ++ ++[ pkcs11_section ] ++engine_id = pkcs11 ++dynamic_path = /usr/lib64/openssl/engines/engine_pkcs11.so ++MODULE_PATH = /usr/lib64/libeTPkcs11.so ++init = 0 ++ +--- ppp-2.4.6/linux/Makefile.top ++++ ppp-2.4.6/linux/Makefile.top +@@ -26,7 +26,7 @@ + cd pppdump; $(MAKE) $(MFLAGS) install + + install-etcppp: $(ETCDIR) $(ETCDIR)/options $(ETCDIR)/pap-secrets \ +- $(ETCDIR)/chap-secrets ++ $(ETCDIR)/chap-secrets $(ETCDIR)/eaptls-server $(ETCDIR)/eaptls-client + + install-devel: + cd pppd; $(MAKE) $(MFLAGS) install-devel +@@ -37,6 +37,10 @@ + $(INSTALL) -c -m 600 etc.ppp/pap-secrets $@ + $(ETCDIR)/chap-secrets: + $(INSTALL) -c -m 600 etc.ppp/chap-secrets $@ ++$(ETCDIR)/eaptls-server: ++ $(INSTALL) -c -m 600 etc.ppp/eaptls-server $@ ++$(ETCDIR)/eaptls-client: ++ $(INSTALL) -c -m 600 etc.ppp/eaptls-client $@ + + $(BINDIR): + $(INSTALL) -d -m 755 $@ +--- ppp-2.4.6/pppd/auth.c ++++ ppp-2.4.6/pppd/auth.c +@@ -109,6 +109,9 @@ + #include "upap.h" + #include "chap-new.h" + #include "eap.h" ++#ifdef USE_EAPTLS ++#include "eap-tls.h" ++#endif + #ifdef CBCP_SUPPORT + #include "cbcp.h" + #endif +@@ -183,6 +186,11 @@ + /* Hook for a plugin to get the CHAP password for authenticating us */ + int (*chap_passwd_hook) __P((char *user, char *passwd)) = NULL; + ++#ifdef USE_EAPTLS ++/* Hook for a plugin to get the EAP-TLS password for authenticating us */ ++int (*eaptls_passwd_hook) __P((char *user, char *passwd)) = NULL; ++#endif ++ + /* Hook for a plugin to say whether it is OK if the peer + refuses to authenticate. */ + int (*null_auth_hook) __P((struct wordlist **paddrs, +@@ -238,6 +246,13 @@ + bool explicit_user = 0; /* Set if "user" option supplied */ + bool explicit_passwd = 0; /* Set if "password" option supplied */ + char remote_name[MAXNAMELEN]; /* Peer's name for authentication */ ++#ifdef USE_EAPTLS ++char *cacert_file = NULL; /* CA certificate file (pem format) */ ++char *cert_file = NULL; /* client certificate file (pem format) */ ++char *privkey_file = NULL; /* client private key file (pem format) */ ++char *crl_dir = NULL; /* directory containing CRL files */ ++bool need_peer_eap = 0; /* Require peer to authenticate us */ ++#endif + + static char *uafname; /* name of most recent +ua file */ + +@@ -254,6 +269,19 @@ + static int have_chap_secret __P((char *, char *, int, int *)); + static int have_srp_secret __P((char *client, char *server, int need_ip, + int *lacks_ipp)); ++ ++#ifdef USE_EAPTLS ++static int have_eaptls_secret_server ++__P((char *client, char *server, int need_ip, int *lacks_ipp)); ++static int have_eaptls_secret_client __P((char *client, char *server)); ++static int scan_authfile_eaptls __P((FILE * f, char *client, char *server, ++ char *cli_cert, char *serv_cert, ++ char *ca_cert, char *pk, ++ struct wordlist ** addrs, ++ struct wordlist ** opts, ++ char *filename, int flags)); ++#endif ++ + static int ip_addr_check __P((u_int32_t, struct permitted_ip *)); + static int scan_authfile __P((FILE *, char *, char *, char *, + struct wordlist **, struct wordlist **, +@@ -401,6 +429,14 @@ + "Set telephone number(s) which are allowed to connect", + OPT_PRIV | OPT_A2LIST }, + ++#ifdef USE_EAPTLS ++ { "ca", o_string, &cacert_file, "EAP-TLS CA certificate in PEM format" }, ++ { "cert", o_string, &cert_file, "EAP-TLS client certificate in PEM format" }, ++ { "key", o_string, &privkey_file, "EAP-TLS client private key in PEM format" }, ++ { "crl-dir", o_string, &crl_dir, "Use CRLs in directory" }, ++ { "need-peer-eap", o_bool, &need_peer_eap, ++ "Require the peer to authenticate us", 1 }, ++#endif /* USE_EAPTLS */ + { NULL } + }; + +@@ -730,6 +766,9 @@ + lcp_options *wo = &lcp_wantoptions[unit]; + lcp_options *go = &lcp_gotoptions[unit]; + lcp_options *ho = &lcp_hisoptions[unit]; ++#ifdef USE_EAPTLS ++ lcp_options *ao = &lcp_allowoptions[unit]; ++#endif + int i; + struct protent *protp; + +@@ -764,6 +803,22 @@ + } + } + ++#ifdef USE_EAPTLS ++ if (need_peer_eap && !ao->neg_eap) { ++ warn("eap required to authenticate us but no suitable secrets"); ++ lcp_close(unit, "couldn't negotiate eap"); ++ status = EXIT_AUTH_TOPEER_FAILED; ++ return; ++ } ++ ++ if (need_peer_eap && !ho->neg_eap) { ++ warn("peer doesn't want to authenticate us with eap"); ++ lcp_close(unit, "couldn't negotiate eap"); ++ status = EXIT_PEER_AUTH_FAILED; ++ return; ++ } ++#endif ++ + new_phase(PHASE_AUTHENTICATE); + auth = 0; + if (go->neg_eap) { +@@ -1277,6 +1332,15 @@ + our_name, 1, &lacks_ip); + } + ++#ifdef USE_EAPTLS ++ if (!can_auth && wo->neg_eap) { ++ can_auth = ++ have_eaptls_secret_server((explicit_remote ? remote_name : ++ NULL), our_name, 1, &lacks_ip); ++ ++ } ++#endif ++ + if (auth_required && !can_auth && noauth_addrs == NULL) { + if (default_auth) { + option_error( +@@ -1331,7 +1395,11 @@ + passwd[0] != 0 || + (hadchap == 1 || (hadchap == -1 && have_chap_secret(user, + (explicit_remote? remote_name: NULL), 0, NULL))) || +- have_srp_secret(user, (explicit_remote? remote_name: NULL), 0, NULL)); ++ have_srp_secret(user, (explicit_remote? remote_name: NULL), 0, NULL) ++#ifdef USE_EAPTLS ++ || have_eaptls_secret_client(user, (explicit_remote? remote_name: NULL)) ++#endif ++ ); + + hadchap = -1; + if (go->neg_upap && !uselogin && !have_pap_secret(NULL)) +@@ -1346,8 +1414,14 @@ + !have_chap_secret((explicit_remote? remote_name: NULL), our_name, + 1, NULL))) && + !have_srp_secret((explicit_remote? remote_name: NULL), our_name, 1, +- NULL)) ++ NULL) ++#ifdef USE_EAPTLS ++ && !have_eaptls_secret_server((explicit_remote? remote_name: NULL), ++ our_name, 1, NULL) ++#endif ++ ) + go->neg_eap = 0; ++ + } + + +@@ -1707,6 +1781,7 @@ + } + + ++ + /* + * get_secret - open the CHAP secret file and return the secret + * for authenticating the given client on the given server. +@@ -2359,3 +2434,335 @@ + + auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL, 0); + } ++ ++ ++#ifdef USE_EAPTLS ++static int ++have_eaptls_secret_server(client, server, need_ip, lacks_ipp) ++ char *client; ++ char *server; ++ int need_ip; ++ int *lacks_ipp; ++{ ++ FILE *f; ++ int ret; ++ char *filename; ++ struct wordlist *addrs; ++ char servcertfile[MAXWORDLEN]; ++ char clicertfile[MAXWORDLEN]; ++ char cacertfile[MAXWORDLEN]; ++ char pkfile[MAXWORDLEN]; ++ ++ filename = _PATH_EAPTLSSERVFILE; ++ f = fopen(filename, "r"); ++ if (f == NULL) ++ return 0; ++ ++ if (client != NULL && client[0] == 0) ++ client = NULL; ++ else if (server != NULL && server[0] == 0) ++ server = NULL; ++ ++ ret = ++ scan_authfile_eaptls(f, client, server, clicertfile, servcertfile, ++ cacertfile, pkfile, &addrs, NULL, filename, ++ 0); ++ ++ fclose(f); ++ ++/* ++ if (ret >= 0 && !eaptls_init_ssl(1, cacertfile, servcertfile, ++ clicertfile, pkfile)) ++ ret = -1; ++*/ ++ ++ if (ret >= 0 && need_ip && !some_ip_ok(addrs)) { ++ if (lacks_ipp != 0) ++ *lacks_ipp = 1; ++ ret = -1; ++ } ++ if (addrs != 0) ++ free_wordlist(addrs); ++ ++ return ret >= 0; ++} ++ ++ ++static int ++have_eaptls_secret_client(client, server) ++ char *client; ++ char *server; ++{ ++ FILE *f; ++ int ret; ++ char *filename; ++ struct wordlist *addrs = NULL; ++ char servcertfile[MAXWORDLEN]; ++ char clicertfile[MAXWORDLEN]; ++ char cacertfile[MAXWORDLEN]; ++ char pkfile[MAXWORDLEN]; ++ ++ if (client != NULL && client[0] == 0) ++ client = NULL; ++ else if (server != NULL && server[0] == 0) ++ server = NULL; ++ ++ if (cacert_file && cert_file && privkey_file) ++ return 1; ++ ++ filename = _PATH_EAPTLSCLIFILE; ++ f = fopen(filename, "r"); ++ if (f == NULL) ++ return 0; ++ ++ ret = ++ scan_authfile_eaptls(f, client, server, clicertfile, servcertfile, ++ cacertfile, pkfile, &addrs, NULL, filename, ++ 0); ++ fclose(f); ++ ++/* ++ if (ret >= 0 && !eaptls_init_ssl(0, cacertfile, clicertfile, ++ servcertfile, pkfile)) ++ ret = -1; ++*/ ++ ++ if (addrs != 0) ++ free_wordlist(addrs); ++ ++ return ret >= 0; ++} ++ ++ ++static int ++scan_authfile_eaptls(f, client, server, cli_cert, serv_cert, ca_cert, pk, ++ addrs, opts, filename, flags) ++ FILE *f; ++ char *client; ++ char *server; ++ char *cli_cert; ++ char *serv_cert; ++ char *ca_cert; ++ char *pk; ++ struct wordlist **addrs; ++ struct wordlist **opts; ++ char *filename; ++ int flags; ++{ ++ int newline; ++ int got_flag, best_flag; ++ struct wordlist *ap, *addr_list, *alist, **app; ++ char word[MAXWORDLEN]; ++ ++ if (addrs != NULL) ++ *addrs = NULL; ++ if (opts != NULL) ++ *opts = NULL; ++ addr_list = NULL; ++ if (!getword(f, word, &newline, filename)) ++ return -1; /* file is empty??? */ ++ newline = 1; ++ best_flag = -1; ++ for (;;) { ++ /* ++ * Skip until we find a word at the start of a line. ++ */ ++ while (!newline && getword(f, word, &newline, filename)); ++ if (!newline) ++ break; /* got to end of file */ ++ ++ /* ++ * Got a client - check if it's a match or a wildcard. ++ */ ++ got_flag = 0; ++ if (client != NULL && strcmp(word, client) != 0 && !ISWILD(word)) { ++ newline = 0; ++ continue; ++ } ++ if (!ISWILD(word)) ++ got_flag = NONWILD_CLIENT; ++ ++ /* ++ * Now get a server and check if it matches. ++ */ ++ if (!getword(f, word, &newline, filename)) ++ break; ++ if (newline) ++ continue; ++ if (!ISWILD(word)) { ++ if (server != NULL && strcmp(word, server) != 0) ++ continue; ++ got_flag |= NONWILD_SERVER; ++ } ++ ++ /* ++ * Got some sort of a match - see if it's better than what ++ * we have already. ++ */ ++ if (got_flag <= best_flag) ++ continue; ++ ++ /* ++ * Get the cli_cert ++ */ ++ if (!getword(f, word, &newline, filename)) ++ break; ++ if (newline) ++ continue; ++ if (strcmp(word, "-") != 0) { ++ strlcpy(cli_cert, word, MAXWORDLEN); ++ } else ++ cli_cert[0] = 0; ++ ++ /* ++ * Get serv_cert ++ */ ++ if (!getword(f, word, &newline, filename)) ++ break; ++ if (newline) ++ continue; ++ if (strcmp(word, "-") != 0) { ++ strlcpy(serv_cert, word, MAXWORDLEN); ++ } else ++ serv_cert[0] = 0; ++ ++ /* ++ * Get ca_cert ++ */ ++ if (!getword(f, word, &newline, filename)) ++ break; ++ if (newline) ++ continue; ++ strlcpy(ca_cert, word, MAXWORDLEN); ++ ++ /* ++ * Get pk ++ */ ++ if (!getword(f, word, &newline, filename)) ++ break; ++ if (newline) ++ continue; ++ strlcpy(pk, word, MAXWORDLEN); ++ ++ ++ /* ++ * Now read address authorization info and make a wordlist. ++ */ ++ app = &alist; ++ for (;;) { ++ if (!getword(f, word, &newline, filename) || newline) ++ break; ++ ap = (struct wordlist *) ++ malloc(sizeof(struct wordlist) + strlen(word) + 1); ++ if (ap == NULL) ++ novm("authorized addresses"); ++ ap->word = (char *) (ap + 1); ++ strcpy(ap->word, word); ++ *app = ap; ++ app = &ap->next; ++ } ++ *app = NULL; ++ /* ++ * This is the best so far; remember it. ++ */ ++ best_flag = got_flag; ++ if (addr_list) ++ free_wordlist(addr_list); ++ addr_list = alist; ++ ++ if (!newline) ++ break; ++ } ++ ++ /* scan for a -- word indicating the start of options */ ++ for (app = &addr_list; (ap = *app) != NULL; app = &ap->next) ++ if (strcmp(ap->word, "--") == 0) ++ break; ++ /* ap = start of options */ ++ if (ap != NULL) { ++ ap = ap->next; /* first option */ ++ free(*app); /* free the "--" word */ ++ *app = NULL; /* terminate addr list */ ++ } ++ if (opts != NULL) ++ *opts = ap; ++ else if (ap != NULL) ++ free_wordlist(ap); ++ if (addrs != NULL) ++ *addrs = addr_list; ++ else if (addr_list != NULL) ++ free_wordlist(addr_list); ++ ++ return best_flag; ++} ++ ++ ++int ++get_eaptls_secret(unit, client, server, clicertfile, servcertfile, ++ cacertfile, pkfile, am_server) ++ int unit; ++ char *client; ++ char *server; ++ char *clicertfile; ++ char *servcertfile; ++ char *cacertfile; ++ char *pkfile; ++ int am_server; ++{ ++ FILE *fp; ++ int ret; ++ char *filename = NULL; ++ struct wordlist *addrs = NULL; ++ struct wordlist *opts = NULL; ++ ++ /* in client mode the ca+cert+privkey can also be specified as options */ ++ if (!am_server && cacert_file && cert_file && privkey_file ) ++ { ++ strlcpy( clicertfile, cert_file, MAXWORDLEN ); ++ strlcpy( cacertfile, cacert_file, MAXWORDLEN ); ++ strlcpy( pkfile, privkey_file, MAXWORDLEN ); ++ servcertfile[0] = '\0'; ++ } ++ else ++ { ++ filename = (am_server ? _PATH_EAPTLSSERVFILE : _PATH_EAPTLSCLIFILE); ++ addrs = NULL; ++ ++ fp = fopen(filename, "r"); ++ if (fp == NULL) ++ { ++ error("Can't open eap-tls secret file %s: %m", filename); ++ return 0; ++ } ++ ++ check_access(fp, filename); ++ ++ ret = scan_authfile_eaptls(fp, client, server, clicertfile, servcertfile, ++ cacertfile, pkfile, &addrs, &opts, filename, 0); ++ ++ fclose(fp); ++ ++ if (ret < 0) return 0; ++ } ++ ++ if (eaptls_passwd_hook) ++ { ++ dbglog( "Calling eaptls password hook" ); ++ if ( (*eaptls_passwd_hook)(pkfile, passwd) < 0) ++ { ++ error("Unable to obtain EAP-TLS password for %s (%s) from plugin", ++ client, pkfile); ++ return 0; ++ } ++ } ++ if (am_server) ++ set_allowed_addrs(unit, addrs, opts); ++ else if (opts != NULL) ++ free_wordlist(opts); ++ if (addrs != NULL) ++ free_wordlist(addrs); ++ ++ return 1; ++} ++#endif ++ +--- ppp-2.4.6/pppd/ccp.c ++++ ppp-2.4.6/pppd/ccp.c +@@ -540,6 +540,9 @@ + if (go->mppe) { + ccp_options *ao = &ccp_allowoptions[f->unit]; + int auth_mschap_bits = auth_done[f->unit]; ++#ifdef USE_EAPTLS ++ int auth_eap_bits = auth_done[f->unit]; ++#endif + int numbits; + + /* +@@ -567,8 +570,23 @@ + lcp_close(f->unit, "MPPE required but not available"); + return; + } ++ ++#ifdef USE_EAPTLS ++ /* ++ * MPPE is also possible in combination with EAP-TLS. ++ * It is not possible to detect if we're doing EAP or EAP-TLS ++ * at this stage, hence we accept all forms of EAP. If TLS is ++ * not used then the MPPE keys will not be derived anyway. ++ */ ++ /* Leave only the eap auth bits set */ ++ auth_eap_bits &= (EAP_WITHPEER | EAP_PEER ); ++ ++ if ((numbits == 0) && (auth_eap_bits == 0)) { ++ error("MPPE required, but MS-CHAP[v2] nor EAP-TLS auth are performed."); ++#else + if (!numbits) { +- error("MPPE required, but MS-CHAP[v2] auth not performed."); ++ error("MPPE required, but MS-CHAP[v2] auth not performed."); ++#endif + lcp_close(f->unit, "MPPE required but not available"); + return; + } +--- ppp-2.4.6/pppd/chap-md5.c ++++ ppp-2.4.6/pppd/chap-md5.c +@@ -36,7 +36,11 @@ + #include "chap-new.h" + #include "chap-md5.h" + #include "magic.h" ++#ifdef USE_EAPTLS ++#include "eap-tls.h" ++#else + #include "md5.h" ++#endif /* USE_EAPTLS */ + + #define MD5_HASH_SIZE 16 + #define MD5_MIN_CHALLENGE 16 +--- ppp-2.4.6/pppd/eap.c ++++ ppp-2.4.6/pppd/eap.c +@@ -43,6 +43,11 @@ + * Based on draft-ietf-pppext-eap-srp-03.txt. + */ + ++/* ++ * Modification by Beniamino Galvani, Mar 2005 ++ * Implemented EAP-TLS authentication ++ */ ++ + #define RCSID "$Id: eap.c,v 1.4 2004/11/09 22:39:25 paulus Exp $" + + /* +@@ -62,8 +67,12 @@ + + #include "pppd.h" + #include "pathnames.h" +-#include "md5.h" + #include "eap.h" ++#ifdef USE_EAPTLS ++#include "eap-tls.h" ++#else ++#include "md5.h" ++#endif /* USE_EAPTLS */ + + #ifdef USE_SRP + #include +@@ -209,6 +218,9 @@ + esp->es_server.ea_id = (u_char)(drand48() * 0x100); + esp->es_client.ea_timeout = EAP_DEFREQTIME; + esp->es_client.ea_maxrequests = EAP_DEFALLOWREQ; ++#ifdef USE_EAPTLS ++ esp->es_client.ea_using_eaptls = 0; ++#endif /* USE_EAPTLS */ + } + + /* +@@ -436,8 +448,16 @@ + u_char vals[2]; + struct b64state bs; + #endif /* USE_SRP */ ++#ifdef USE_EAPTLS ++ struct eaptls_session *ets; ++ int secret_len; ++ char secret[MAXWORDLEN]; ++#endif /* USE_EAPTLS */ + + esp->es_server.ea_timeout = esp->es_savedtime; ++#ifdef USE_EAPTLS ++ esp->es_server.ea_prev_state = esp->es_server.ea_state; ++#endif /* USE_EAPTLS */ + switch (esp->es_server.ea_state) { + case eapBadAuth: + return; +@@ -562,9 +582,81 @@ + break; + } + #endif /* USE_SRP */ ++#ifdef USE_EAPTLS ++ if (!get_secret(esp->es_unit, esp->es_server.ea_peer, ++ esp->es_server.ea_name, secret, &secret_len, 1)) { ++ ++ esp->es_server.ea_state = eapTlsStart; ++ break; ++ } ++#endif /* USE_EAPTLS */ ++ + esp->es_server.ea_state = eapMD5Chall; + break; + ++#ifdef USE_EAPTLS ++ case eapTlsStart: ++ /* Initialize ssl session */ ++ if(!eaptls_init_ssl_server(esp)) { ++ esp->es_server.ea_state = eapBadAuth; ++ break; ++ } ++ ++ esp->es_server.ea_state = eapTlsRecv; ++ break; ++ ++ case eapTlsRecv: ++ ets = (struct eaptls_session *) esp->es_server.ea_session; ++ ++ if(ets->alert_sent) { ++ esp->es_server.ea_state = eapTlsSendAlert; ++ break; ++ } ++ ++ if (status) { ++ esp->es_server.ea_state = eapBadAuth; ++ break; ++ } ++ ets = (struct eaptls_session *) esp->es_server.ea_session; ++ ++ if(ets->frag) ++ esp->es_server.ea_state = eapTlsSendAck; ++ else ++ esp->es_server.ea_state = eapTlsSend; ++ break; ++ ++ case eapTlsSend: ++ ets = (struct eaptls_session *) esp->es_server.ea_session; ++ ++ if(SSL_is_init_finished(ets->ssl)) { ++ esp->es_server.ea_state = eapTlsRecvClient; ++ break; ++ } ++ ++ if(ets->frag) ++ esp->es_server.ea_state = eapTlsRecvAck; ++ else ++ esp->es_server.ea_state = eapTlsRecv; ++ break; ++ ++ case eapTlsSendAck: ++ esp->es_server.ea_state = eapTlsRecv; ++ break; ++ ++ case eapTlsRecvAck: ++ if (status) { ++ esp->es_server.ea_state = eapBadAuth; ++ break; ++ } ++ ++ esp->es_server.ea_state = eapTlsSend; ++ break; ++ ++ case eapTlsSendAlert: ++ esp->es_server.ea_state = eapTlsRecvAlertAck; ++ break; ++#endif /* USE_EAPTLS */ ++ + case eapSRP1: + #ifdef USE_SRP + ts = (struct t_server *)esp->es_server.ea_session; +@@ -718,6 +810,30 @@ + INCPTR(esp->es_server.ea_namelen, outp); + break; + ++#ifdef USE_EAPTLS ++ case eapTlsStart: ++ PUTCHAR(EAPT_TLS, outp); ++ PUTCHAR(EAP_TLS_FLAGS_START, outp); ++ eap_figure_next_state(esp, 0); ++ break; ++ ++ case eapTlsSend: ++ eaptls_send(esp->es_server.ea_session, &outp); ++ eap_figure_next_state(esp, 0); ++ break; ++ ++ case eapTlsSendAck: ++ PUTCHAR(EAPT_TLS, outp); ++ PUTCHAR(0, outp); ++ eap_figure_next_state(esp, 0); ++ break; ++ ++ case eapTlsSendAlert: ++ eaptls_send(esp->es_server.ea_session, &outp); ++ eap_figure_next_state(esp, 0); ++ break; ++#endif /* USE_EAPTLS */ ++ + #ifdef USE_SRP + case eapSRP1: + PUTCHAR(EAPT_SRP, outp); +@@ -904,11 +1020,57 @@ + eap_server_timeout(arg) + void *arg; + { ++#ifdef USE_EAPTLS ++ u_char *outp; ++ u_char *lenloc; ++ int outlen; ++#endif /* USE_EAPTLS */ ++ + eap_state *esp = (eap_state *) arg; + + if (!eap_server_active(esp)) + return; + ++#ifdef USE_EAPTLS ++ switch(esp->es_server.ea_prev_state) { ++ ++ /* ++ * In eap-tls the state changes after a request, so we return to ++ * previous state ... ++ */ ++ case(eapTlsStart): ++ case(eapTlsSendAck): ++ esp->es_server.ea_state = esp->es_server.ea_prev_state; ++ break; ++ ++ /* ++ * ... or resend the stored data ++ */ ++ case(eapTlsSend): ++ case(eapTlsSendAlert): ++ outp = outpacket_buf; ++ MAKEHEADER(outp, PPP_EAP); ++ PUTCHAR(EAP_REQUEST, outp); ++ PUTCHAR(esp->es_server.ea_id, outp); ++ lenloc = outp; ++ INCPTR(2, outp); ++ ++ eaptls_retransmit(esp->es_server.ea_session, &outp); ++ ++ outlen = (outp - outpacket_buf) - PPP_HDRLEN; ++ PUTSHORT(outlen, lenloc); ++ output(esp->es_unit, outpacket_buf, outlen + PPP_HDRLEN); ++ esp->es_server.ea_requests++; ++ ++ if (esp->es_server.ea_timeout > 0) ++ TIMEOUT(eap_server_timeout, esp, esp->es_server.ea_timeout); ++ ++ return; ++ default: ++ break; ++ } ++#endif /* USE_EAPTLS */ ++ + /* EAP ID number must not change on timeout. */ + eap_send_request(esp); + } +@@ -1166,6 +1328,81 @@ + } + #endif /* USE_SRP */ + ++#ifdef USE_EAPTLS ++/* ++ * Send an EAP-TLS response message with tls data ++ */ ++static void ++eap_tls_response(esp, id) ++eap_state *esp; ++u_char id; ++{ ++ u_char *outp; ++ int outlen; ++ u_char *lenloc; ++ ++ outp = outpacket_buf; ++ ++ MAKEHEADER(outp, PPP_EAP); ++ ++ PUTCHAR(EAP_RESPONSE, outp); ++ PUTCHAR(id, outp); ++ ++ lenloc = outp; ++ INCPTR(2, outp); ++ ++ /* ++ If the id in the request is unchanged, we must retransmit ++ the old data ++ */ ++ if(id == esp->es_client.ea_id) ++ eaptls_retransmit(esp->es_client.ea_session, &outp); ++ else ++ eaptls_send(esp->es_client.ea_session, &outp); ++ ++ outlen = (outp - outpacket_buf) - PPP_HDRLEN; ++ PUTSHORT(outlen, lenloc); ++ ++ output(esp->es_unit, outpacket_buf, PPP_HDRLEN + outlen); ++ ++ esp->es_client.ea_id = id; ++ ++} ++ ++/* ++ * Send an EAP-TLS ack ++ */ ++static void ++eap_tls_sendack(esp, id) ++eap_state *esp; ++u_char id; ++{ ++ u_char *outp; ++ int outlen; ++ u_char *lenloc; ++ ++ outp = outpacket_buf; ++ ++ MAKEHEADER(outp, PPP_EAP); ++ ++ PUTCHAR(EAP_RESPONSE, outp); ++ PUTCHAR(id, outp); ++ esp->es_client.ea_id = id; ++ ++ lenloc = outp; ++ INCPTR(2, outp); ++ ++ PUTCHAR(EAPT_TLS, outp); ++ PUTCHAR(0, outp); ++ ++ outlen = (outp - outpacket_buf) - PPP_HDRLEN; ++ PUTSHORT(outlen, lenloc); ++ ++ output(esp->es_unit, outpacket_buf, PPP_HDRLEN + outlen); ++ ++} ++#endif /* USE_EAPTLS */ ++ + static void + eap_send_nak(esp, id, type) + eap_state *esp; +@@ -1320,6 +1557,11 @@ + char rhostname[256]; + MD5_CTX mdContext; + u_char hash[MD5_SIGNATURE_SIZE]; ++#ifdef USE_EAPTLS ++ u_char flags; ++ struct eaptls_session *ets = esp->es_client.ea_session; ++#endif /* USE_EAPTLS */ ++ + #ifdef USE_SRP + struct t_client *tc; + struct t_num sval, gval, Nval, *Ap, Bval; +@@ -1456,6 +1698,90 @@ + esp->es_client.ea_namelen); + break; + ++#ifdef USE_EAPTLS ++ case EAPT_TLS: ++ ++ switch(esp->es_client.ea_state) { ++ ++ case eapListen: ++ ++ GETCHAR(flags, inp); ++ if(flags & EAP_TLS_FLAGS_START){ ++ ++ esp->es_client.ea_using_eaptls = 1; ++ ++ if (explicit_remote){ ++ esp->es_client.ea_peer = strdup(remote_name); ++ esp->es_client.ea_peerlen = strlen(remote_name); ++ } else ++ esp->es_client.ea_peer = NULL; ++ ++ /* Init ssl session */ ++ if(!eaptls_init_ssl_client(esp)) { ++ dbglog("cannot init ssl"); ++ eap_send_nak(esp, id, EAPT_TLS); ++ esp->es_client.ea_using_eaptls = 0; ++ break; ++ } ++ ++ ets = esp->es_client.ea_session; ++ eap_tls_response(esp, id); ++ esp->es_client.ea_state = (ets->frag ? eapTlsRecvAck : ++ eapTlsRecv); ++ break; ++ } ++ ++ /* The server has sent a bad start packet. */ ++ eap_send_nak(esp, id, EAPT_TLS); ++ break; ++ ++ case eapTlsRecvAck: ++ eap_tls_response(esp, id); ++ esp->es_client.ea_state = (ets->frag ? eapTlsRecvAck : ++ eapTlsRecv); ++ break; ++ ++ case eapTlsRecv: ++ eaptls_receive(ets, inp, len); ++ ++ if(ets->frag) { ++ eap_tls_sendack(esp, id); ++ esp->es_client.ea_state = eapTlsRecv; ++ break; ++ } ++ ++ if(ets->alert_recv) { ++ eap_tls_sendack(esp, id); ++ esp->es_client.ea_state = eapTlsRecvFailure; ++ break; ++ } ++ ++ /* Check if TLS handshake is finished */ ++ if(SSL_is_init_finished(ets->ssl)){ ++#ifdef MPPE ++ eaptls_gen_mppe_keys( ets, "client EAP encryption", 1 ); ++#endif ++ eaptls_free_session(ets); ++ eap_tls_sendack(esp, id); ++ esp->es_client.ea_state = eapTlsRecvSuccess; ++ break; ++ } ++ ++ eap_tls_response(esp,id); ++ esp->es_client.ea_state = (ets->frag ? eapTlsRecvAck : ++ eapTlsRecv); ++ ++ break; ++ ++ default: ++ eap_send_nak(esp, id, EAPT_TLS); ++ esp->es_client.ea_using_eaptls = 0; ++ break; ++ } ++ ++ break; ++#endif /* USE_EAPTLS */ ++ + #ifdef USE_SRP + case EAPT_SRP: + if (len < 1) { +@@ -1737,6 +2063,11 @@ + u_char dig[SHA_DIGESTSIZE]; + #endif /* USE_SRP */ + ++#ifdef USE_EAPTLS ++ struct eaptls_session *ets; ++ u_char flags; ++#endif /* USE_EAPTLS */ ++ + if (esp->es_server.ea_id != id) { + dbglog("EAP: discarding Response %d; expected ID %d", id, + esp->es_server.ea_id); +@@ -1776,6 +2107,60 @@ + eap_figure_next_state(esp, 0); + break; + ++#ifdef USE_EAPTLS ++ case EAPT_TLS: ++ switch(esp->es_server.ea_state) { ++ ++ case eapTlsRecv: ++ ets = (struct eaptls_session *) esp->es_server.ea_session; ++ eap_figure_next_state(esp, ++ eaptls_receive(esp->es_server.ea_session, inp, len)); ++ ++ if(ets->alert_recv) { ++ eap_send_failure(esp); ++ break; ++ } ++ break; ++ ++ case eapTlsRecvAck: ++ if(len > 1) { ++ dbglog("EAP-TLS ACK with extra data"); ++ } ++ eap_figure_next_state(esp, 0); ++ break; ++ ++ case eapTlsRecvClient: ++ /* Receive authentication response from client */ ++ ++ GETCHAR(flags, inp); ++ ++ if(len == 1 && !flags) { /* Ack = ok */ ++#ifdef MPPE ++ eaptls_gen_mppe_keys( esp->es_server.ea_session, "client EAP encryption", 0 ); ++#endif ++ eap_send_success(esp); ++ } ++ else { /* failure */ ++ eaptls_receive(esp->es_server.ea_session, inp, len); ++ warn("Server authentication failed"); ++ eap_send_failure(esp); ++ } ++ ++ eaptls_free_session(esp->es_server.ea_session); ++ ++ break; ++ ++ case eapTlsRecvAlertAck: ++ eap_send_failure(esp); ++ break; ++ ++ default: ++ eap_figure_next_state(esp, 1); ++ break; ++ } ++ break; ++#endif /* USE_EAPTLS */ ++ + case EAPT_NOTIFICATION: + dbglog("EAP unexpected Notification; response discarded"); + break; +@@ -1807,6 +2192,13 @@ + esp->es_server.ea_state = eapMD5Chall; + break; + ++#ifdef USE_EAPTLS ++ /* Send EAP-TLS start packet */ ++ case EAPT_TLS: ++ esp->es_server.ea_state = eapTlsStart; ++ break; ++#endif /* USE_EAPTLS */ ++ + default: + dbglog("EAP: peer requesting unknown Type %d", vallen); + switch (esp->es_server.ea_state) { +@@ -2018,13 +2410,27 @@ + int id; + int len; + { +- if (esp->es_client.ea_state != eapOpen && !eap_client_active(esp)) { ++ if (esp->es_client.ea_state != eapOpen && !eap_client_active(esp) ++#ifdef USE_EAPTLS ++ && esp->es_client.ea_state != eapTlsRecvSuccess ++#endif /* USE_EAPTLS */ ++ ) { + dbglog("EAP unexpected success message in state %s (%d)", + eap_state_name(esp->es_client.ea_state), + esp->es_client.ea_state); + return; + } + ++#ifdef USE_EAPTLS ++ if(esp->es_client.ea_using_eaptls && esp->es_client.ea_state != ++ eapTlsRecvSuccess) { ++ dbglog("EAP-TLS unexpected success message in state %s (%d)", ++ eap_state_name(esp->es_client.ea_state), ++ esp->es_client.ea_state); ++ return; ++ } ++#endif /* USE_EAPTLS */ ++ + if (esp->es_client.ea_timeout > 0) { + UNTIMEOUT(eap_client_timeout, (void *)esp); + } +@@ -2150,6 +2556,9 @@ + int code, id, len, rtype, vallen; + u_char *pstart; + u_int32_t uval; ++#ifdef USE_EAPTLS ++ u_char flags; ++#endif /* USE_EAPTLS */ + + if (inlen < EAP_HEADERLEN) + return (0); +@@ -2214,6 +2623,24 @@ + } + break; + ++#ifdef USE_EAPTLS ++ case EAPT_TLS: ++ if (len < 1) ++ break; ++ GETCHAR(flags, inp); ++ len--; ++ ++ if(flags == 0 && len == 0){ ++ printer(arg, " Ack"); ++ break; ++ } ++ ++ printer(arg, flags & EAP_TLS_FLAGS_LI ? " L":" -"); ++ printer(arg, flags & EAP_TLS_FLAGS_MF ? "M":"-"); ++ printer(arg, flags & EAP_TLS_FLAGS_START ? "S":"- "); ++ break; ++#endif /* USE_EAPTLS */ ++ + case EAPT_SRP: + if (len < 3) + goto truncated; +@@ -2325,6 +2752,25 @@ + } + break; + ++#ifdef USE_EAPTLS ++ case EAPT_TLS: ++ if (len < 1) ++ break; ++ GETCHAR(flags, inp); ++ len--; ++ ++ if(flags == 0 && len == 0){ ++ printer(arg, " Ack"); ++ break; ++ } ++ ++ printer(arg, flags & EAP_TLS_FLAGS_LI ? " L":" -"); ++ printer(arg, flags & EAP_TLS_FLAGS_MF ? "M":"-"); ++ printer(arg, flags & EAP_TLS_FLAGS_START ? "S":"- "); ++ ++ break; ++#endif /* USE_EAPTLS */ ++ + case EAPT_NAK: + if (len <= 0) { + printer(arg, " "); +@@ -2426,3 +2872,4 @@ + + return (inp - pstart); + } ++ +--- ppp-2.4.6/pppd/eap.h ++++ ppp-2.4.6/pppd/eap.h +@@ -84,6 +84,16 @@ + eapClosed, /* Authentication not in use */ + eapListen, /* Client ready (and timer running) */ + eapIdentify, /* EAP Identify sent */ ++ eapTlsStart, /* Send EAP-TLS start packet */ ++ eapTlsRecv, /* Receive EAP-TLS tls data */ ++ eapTlsSendAck, /* Send EAP-TLS ack */ ++ eapTlsSend, /* Send EAP-TLS tls data */ ++ eapTlsRecvAck, /* Receive EAP-TLS ack */ ++ eapTlsRecvClient, /* Receive EAP-TLS auth response from client*/ ++ eapTlsSendAlert, /* Send EAP-TLS tls alert (server)*/ ++ eapTlsRecvAlertAck, /* Receive EAP-TLS ack after sending alert */ ++ eapTlsRecvSuccess, /* Receive EAP success */ ++ eapTlsRecvFailure, /* Receive EAP failure */ + eapSRP1, /* Sent EAP SRP-SHA1 Subtype 1 */ + eapSRP2, /* Sent EAP SRP-SHA1 Subtype 2 */ + eapSRP3, /* Sent EAP SRP-SHA1 Subtype 3 */ +@@ -95,9 +105,18 @@ + + #define EAP_STATES \ + "Initial", "Pending", "Closed", "Listen", "Identify", \ ++ "TlsStart", "TlsRecv", "TlsSendAck", "TlsSend", "TlsRecvAck", "TlsRecvClient",\ ++ "TlsSendAlert", "TlsRecvAlertAck" , "TlsRecvSuccess", "TlsRecvFailure", \ + "SRP1", "SRP2", "SRP3", "MD5Chall", "Open", "SRP4", "BadAuth" + +-#define eap_client_active(esp) ((esp)->es_client.ea_state == eapListen) ++#ifdef USE_EAPTLS ++#define eap_client_active(esp) ((esp)->es_client.ea_state != eapInitial ||\ ++ (esp)->es_client.ea_state != eapPending ||\ ++ (esp)->es_client.ea_state != eapClosed) ++#else ++#define eap_client_active(esp) ((esp)->es_client.ea_state == eapListen) ++#endif /* USE_EAPTLS */ ++ + #define eap_server_active(esp) \ + ((esp)->es_server.ea_state >= eapIdentify && \ + (esp)->es_server.ea_state <= eapMD5Chall) +@@ -112,11 +131,17 @@ + u_short ea_namelen; /* Length of our name */ + u_short ea_peerlen; /* Length of peer's name */ + enum eap_state_code ea_state; ++#ifdef USE_EAPTLS ++ enum eap_state_code ea_prev_state; ++#endif + u_char ea_id; /* Current id */ + u_char ea_requests; /* Number of Requests sent/received */ + u_char ea_responses; /* Number of Responses */ + u_char ea_type; /* One of EAPT_* */ + u_int32_t ea_keyflags; /* SRP shared key usage flags */ ++#ifdef USE_EAPTLS ++ bool ea_using_eaptls; ++#endif + }; + + /* +@@ -139,7 +164,12 @@ + * Timeouts. + */ + #define EAP_DEFTIMEOUT 3 /* Timeout (seconds) for rexmit */ ++#ifdef USE_EAPTLS ++#define EAP_DEFTRANSMITS 30 /* max # times to transmit */ ++ /* certificates can be long ... */ ++#else + #define EAP_DEFTRANSMITS 10 /* max # times to transmit */ ++#endif /* USE_EAPTLS */ + #define EAP_DEFREQTIME 20 /* Time to wait for peer request */ + #define EAP_DEFALLOWREQ 20 /* max # times to accept requests */ + +--- ppp-2.4.6/pppd/eap-tls.c ++++ ppp-2.4.6/pppd/eap-tls.c +@@ -0,0 +1,1174 @@ ++/* ++ * eap-tls.c - EAP-TLS implementation for PPP ++ * ++ * Copyright (c) Beniamino Galvani 2005 All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * 3. The name(s) of the authors of this software must not be used to ++ * endorse or promote products derived from this software without ++ * prior written permission. ++ * ++ * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO ++ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ++ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY ++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "pppd.h" ++#include "eap.h" ++#include "eap-tls.h" ++#include "fsm.h" ++#include "lcp.h" ++#include "pathnames.h" ++ ++/* The openssl configuration file and engines can be loaded only once */ ++static CONF *ssl_config = NULL; ++static ENGINE *cert_engine = NULL; ++static ENGINE *pkey_engine = NULL; ++ ++#ifdef MPPE ++ ++/* ++ * TLS PRF from RFC 2246 ++ */ ++static void P_hash(const EVP_MD *evp_md, ++ const unsigned char *secret, unsigned int secret_len, ++ const unsigned char *seed, unsigned int seed_len, ++ unsigned char *out, unsigned int out_len) ++{ ++ HMAC_CTX ctx_a, ctx_out; ++ unsigned char a[HMAC_MAX_MD_CBLOCK]; ++ unsigned int size; ++ ++ HMAC_CTX_init(&ctx_a); ++ HMAC_CTX_init(&ctx_out); ++ HMAC_Init_ex(&ctx_a, secret, secret_len, evp_md, NULL); ++ HMAC_Init_ex(&ctx_out, secret, secret_len, evp_md, NULL); ++ ++ size = HMAC_size(&ctx_out); ++ ++ /* Calculate A(1) */ ++ HMAC_Update(&ctx_a, seed, seed_len); ++ HMAC_Final(&ctx_a, a, NULL); ++ ++ while (1) { ++ /* Calculate next part of output */ ++ HMAC_Update(&ctx_out, a, size); ++ HMAC_Update(&ctx_out, seed, seed_len); ++ ++ /* Check if last part */ ++ if (out_len < size) { ++ HMAC_Final(&ctx_out, a, NULL); ++ memcpy(out, a, out_len); ++ break; ++ } ++ ++ /* Place digest in output buffer */ ++ HMAC_Final(&ctx_out, out, NULL); ++ HMAC_Init_ex(&ctx_out, NULL, 0, NULL, NULL); ++ out += size; ++ out_len -= size; ++ ++ /* Calculate next A(i) */ ++ HMAC_Init_ex(&ctx_a, NULL, 0, NULL, NULL); ++ HMAC_Update(&ctx_a, a, size); ++ HMAC_Final(&ctx_a, a, NULL); ++ } ++ ++ HMAC_CTX_cleanup(&ctx_a); ++ HMAC_CTX_cleanup(&ctx_out); ++ memset(a, 0, sizeof(a)); ++} ++ ++static void PRF(const unsigned char *secret, unsigned int secret_len, ++ const unsigned char *seed, unsigned int seed_len, ++ unsigned char *out, unsigned char *buf, unsigned int out_len) ++{ ++ unsigned int i; ++ unsigned int len = (secret_len + 1) / 2; ++ const unsigned char *s1 = secret; ++ const unsigned char *s2 = secret + (secret_len - len); ++ ++ P_hash(EVP_md5(), s1, len, seed, seed_len, out, out_len); ++ P_hash(EVP_sha1(), s2, len, seed, seed_len, buf, out_len); ++ ++ for (i=0; i < out_len; i++) { ++ out[i] ^= buf[i]; ++ } ++} ++ ++#define EAPTLS_MPPE_KEY_LEN 32 ++ ++/* ++ * Generate keys according to RFC 2716 and add to reply ++ */ ++void eaptls_gen_mppe_keys(struct eaptls_session *ets, const char *prf_label, ++ int client) ++{ ++ unsigned char out[4*EAPTLS_MPPE_KEY_LEN], buf[4*EAPTLS_MPPE_KEY_LEN]; ++ unsigned char seed[64 + 2*SSL3_RANDOM_SIZE]; ++ unsigned char *p = seed; ++ SSL *s = ets->ssl; ++ size_t prf_size; ++ ++ prf_size = strlen(prf_label); ++ ++ memcpy(p, prf_label, prf_size); ++ p += prf_size; ++ ++ memcpy(p, s->s3->client_random, SSL3_RANDOM_SIZE); ++ p += SSL3_RANDOM_SIZE; ++ prf_size += SSL3_RANDOM_SIZE; ++ ++ memcpy(p, s->s3->server_random, SSL3_RANDOM_SIZE); ++ prf_size += SSL3_RANDOM_SIZE; ++ ++ PRF(s->session->master_key, s->session->master_key_length, ++ seed, prf_size, out, buf, sizeof(out)); ++ ++ /* ++ * We now have the master send and receive keys. ++ * From these, generate the session send and receive keys. ++ * (see RFC3079 / draft-ietf-pppext-mppe-keys-03.txt for details) ++ */ ++ if (client) ++ { ++ p = out; ++ BCOPY( p, mppe_send_key, sizeof(mppe_send_key) ); ++ p += EAPTLS_MPPE_KEY_LEN; ++ BCOPY( p, mppe_recv_key, sizeof(mppe_recv_key) ); ++ } ++ else ++ { ++ p = out; ++ BCOPY( p, mppe_recv_key, sizeof(mppe_recv_key) ); ++ p += EAPTLS_MPPE_KEY_LEN; ++ BCOPY( p, mppe_send_key, sizeof(mppe_send_key) ); ++ } ++ ++ mppe_keys_set = 1; ++} ++ ++#endif ++ ++void log_ssl_errors( void ) ++{ ++ unsigned long ssl_err = ERR_get_error(); ++ ++ if (ssl_err != 0) ++ dbglog("EAP-TLS SSL error stack:"); ++ while (ssl_err != 0) { ++ dbglog( ERR_error_string( ssl_err, NULL ) ); ++ ssl_err = ERR_get_error(); ++ } ++} ++ ++ ++int password_callback (char *buf, int size, int rwflag, void *u) ++{ ++ if (buf) ++ { ++ strncpy (buf, passwd, size); ++ return strlen (buf); ++ } ++ return 0; ++} ++ ++ ++CONF *eaptls_ssl_load_config( void ) ++{ ++ CONF *config; ++ int ret_code; ++ long error_line = 33; ++ ++ config = NCONF_new( NULL ); ++ dbglog( "Loading OpenSSL config file" ); ++ ret_code = NCONF_load( config, _PATH_OPENSSLCONFFILE, &error_line ); ++ if (ret_code == 0) ++ { ++ warn( "EAP-TLS: Error in OpenSSL config file %s at line %d", _PATH_OPENSSLCONFFILE, error_line ); ++ NCONF_free( config ); ++ config = NULL; ++ ERR_clear_error(); ++ } ++ ++ dbglog( "Loading OpenSSL built-ins" ); ++ ENGINE_load_builtin_engines(); ++ OPENSSL_load_builtin_modules(); ++ ++ dbglog( "Loading OpenSSL configured modules" ); ++ if (CONF_modules_load( config, NULL, 0 ) <= 0 ) ++ { ++ warn( "EAP-TLS: Error loading OpenSSL modules" ); ++ log_ssl_errors(); ++ config = NULL; ++ } ++ ++ return config; ++} ++ ++ENGINE *eaptls_ssl_load_engine( char *engine_name ) ++{ ++ ENGINE *e = NULL; ++ ++ dbglog( "Enabling OpenSSL auto engines" ); ++ ENGINE_register_all_complete(); ++ ++ dbglog( "Loading OpenSSL '%s' engine support", engine_name ); ++ e = ENGINE_by_id( engine_name ); ++ if (!e) ++ { ++ dbglog( "EAP-TLS: Cannot load '%s' engine support, trying 'dynamic'", engine_name ); ++ e = ENGINE_by_id( "dynamic" ); ++ if (e) ++ { ++ if (!ENGINE_ctrl_cmd_string(e, "SO_PATH", engine_name, 0) ++ || !ENGINE_ctrl_cmd_string(e, "LOAD", NULL, 0)) ++ { ++ warn( "EAP-TLS: Error loading dynamic engine '%s'", engine_name ); ++ log_ssl_errors(); ++ ENGINE_free(e); ++ e = NULL; ++ } ++ } ++ else ++ { ++ warn( "EAP-TLS: Cannot load dynamic engine support" ); ++ } ++ } ++ ++ if (e) ++ { ++ dbglog( "Initialising engine" ); ++ if(!ENGINE_set_default(e, ENGINE_METHOD_ALL)) ++ { ++ warn( "EAP-TLS: Cannot use that engine" ); ++ log_ssl_errors(); ++ ENGINE_free(e); ++ e = NULL; ++ } ++ } ++ ++ return e; ++} ++ ++/* ++ * Initialize the SSL stacks and tests if certificates, key and crl ++ * for client or server use can be loaded. ++ */ ++SSL_CTX *eaptls_init_ssl(int init_server, char *cacertfile, ++ char *certfile, char *peer_certfile, char *privkeyfile) ++{ ++ char *cert_engine_name = NULL; ++ char *cert_identifier = NULL; ++ char *pkey_engine_name = NULL; ++ char *pkey_identifier = NULL; ++ SSL_CTX *ctx; ++ X509_STORE *certstore; ++ X509_LOOKUP *lookup; ++ X509 *tmp; ++ ++ /* ++ * Without these can't continue ++ */ ++ if (!cacertfile[0]) ++ { ++ error("EAP-TLS: CA certificate missing"); ++ return NULL; ++ } ++ ++ if (!certfile[0]) ++ { ++ error("EAP-TLS: User certificate missing"); ++ return NULL; ++ } ++ ++ if (!privkeyfile[0]) ++ { ++ error("EAP-TLS: User private key missing"); ++ return NULL; ++ } ++ ++ SSL_library_init(); ++ SSL_load_error_strings(); ++ ++ ctx = SSL_CTX_new(TLSv1_method()); ++ ++ if (!ctx) { ++ error("EAP-TLS: Cannot initialize SSL CTX context"); ++ goto fail; ++ } ++ ++ /* if the certificate filename is of the form engine:id. e.g. ++ pkcs11:12345 ++ then we try to load and use this engine. ++ If the certificate filename starts with a / or . then we ++ ALWAYS assume it is a file and not an engine/pkcs11 identifier ++ */ ++ if ( index( certfile, '/' ) == NULL && index( certfile, '.') == NULL ) ++ { ++ cert_identifier = index( certfile, ':' ); ++ ++ if (cert_identifier) ++ { ++ cert_engine_name = certfile; ++ *cert_identifier = '\0'; ++ cert_identifier++; ++ ++ dbglog( "Found certificate engine '%s'", cert_engine_name ); ++ dbglog( "Found certificate identifier '%s'", cert_identifier ); ++ } ++ } ++ ++ /* if the privatekey filename is of the form engine:id. e.g. ++ pkcs11:12345 ++ then we try to load and use this engine. ++ If the privatekey filename starts with a / or . then we ++ ALWAYS assume it is a file and not an engine/pkcs11 identifier ++ */ ++ if ( index( privkeyfile, '/' ) == NULL && index( privkeyfile, '.') == NULL ) ++ { ++ pkey_identifier = index( privkeyfile, ':' ); ++ ++ if (pkey_identifier) ++ { ++ pkey_engine_name = privkeyfile; ++ *pkey_identifier = '\0'; ++ pkey_identifier++; ++ ++ dbglog( "Found privatekey engine '%s'", pkey_engine_name ); ++ dbglog( "Found privatekey identifier '%s'", pkey_identifier ); ++ } ++ } ++ ++ if (cert_identifier && pkey_identifier) ++ { ++ if (strlen( cert_identifier ) == 0) ++ { ++ if (strlen( pkey_identifier ) == 0) ++ error( "EAP-TLS: both the certificate and privatekey identifiers are missing!" ); ++ else ++ { ++ dbglog( "Substituting privatekey identifier for certificate identifier" ); ++ cert_identifier = pkey_identifier; ++ } ++ } ++ else ++ { ++ if (strlen( pkey_identifier ) == 0) ++ { ++ dbglog( "Substituting certificate identifier for privatekey identifier" ); ++ pkey_identifier = cert_identifier; ++ } ++ } ++ ++ } ++ ++ /* load the openssl config file only once */ ++ if (!ssl_config) ++ { ++ if (cert_engine_name || pkey_engine_name) ++ ssl_config = eaptls_ssl_load_config(); ++ ++ if (ssl_config && cert_engine_name) ++ cert_engine = eaptls_ssl_load_engine( cert_engine_name ); ++ ++ if (ssl_config && pkey_engine_name) ++ { ++ /* don't load the same engine twice */ ++ if ( strcmp( cert_engine_name, pkey_engine_name) == 0 ) ++ pkey_engine = cert_engine; ++ else ++ pkey_engine = eaptls_ssl_load_engine( pkey_engine_name ); ++ } ++ } ++ ++ SSL_CTX_set_default_passwd_cb (ctx, password_callback); ++ ++ if (!SSL_CTX_load_verify_locations(ctx, cacertfile, NULL)) ++ { ++ error("EAP-TLS: Cannot load or verify CA file %s", cacertfile); ++ goto fail; ++ } ++ ++ if (init_server) ++ SSL_CTX_set_client_CA_list(ctx, SSL_load_client_CA_file(cacertfile)); ++ ++ if (cert_engine) ++ { ++ struct ++ { ++ const char *s_slot_cert_id; ++ X509 *cert; ++ } cert_info; ++ ++ cert_info.s_slot_cert_id = cert_identifier; ++ cert_info.cert = NULL; ++ ++ if (!ENGINE_ctrl_cmd( cert_engine, "LOAD_CERT_CTRL", 0, &cert_info, NULL, 0 ) ) ++ { ++ error( "EAP-TLS: Error loading certificate with id '%s' from engine", cert_identifier ); ++ goto fail; ++ } ++ ++ if (cert_info.cert) ++ { ++ dbglog( "Got the certificate, adding it to SSL context" ); ++ dbglog( "subject = %s", X509_NAME_oneline( X509_get_subject_name( cert_info.cert ), NULL, 0 ) ); ++ if (SSL_CTX_use_certificate(ctx, cert_info.cert) <= 0) ++ { ++ error("EAP-TLS: Cannot use PKCS11 certificate %s", cert_identifier); ++ goto fail; ++ } ++ } ++ else ++ { ++ warn("EAP-TLS: Cannot load PKCS11 key %s", cert_identifier); ++ log_ssl_errors(); ++ } ++ } ++ else ++ { ++ if (!SSL_CTX_use_certificate_file(ctx, certfile, SSL_FILETYPE_PEM)) ++ { ++ error( "EAP-TLS: Cannot use public certificate %s", certfile ); ++ goto fail; ++ } ++ } ++ ++ if (pkey_engine) ++ { ++ EVP_PKEY *pkey = NULL; ++ PW_CB_DATA cb_data; ++ ++ cb_data.password = passwd; ++ cb_data.prompt_info = pkey_identifier; ++ ++ dbglog( "Loading private key '%s' from engine", pkey_identifier ); ++ pkey = ENGINE_load_private_key(pkey_engine, pkey_identifier, NULL, &cb_data); ++ if (pkey) ++ { ++ dbglog( "Got the private key, adding it to SSL context" ); ++ if (SSL_CTX_use_PrivateKey(ctx, pkey) <= 0) ++ { ++ error("EAP-TLS: Cannot use PKCS11 key %s", pkey_identifier); ++ goto fail; ++ } ++ } ++ else ++ { ++ warn("EAP-TLS: Cannot load PKCS11 key %s", pkey_identifier); ++ log_ssl_errors(); ++ } ++ } ++ else ++ { ++ if (!SSL_CTX_use_PrivateKey_file(ctx, privkeyfile, SSL_FILETYPE_PEM)) ++ { ++ error("EAP-TLS: Cannot use private key %s", privkeyfile); ++ goto fail; ++ } ++ } ++ ++ if (SSL_CTX_check_private_key(ctx) != 1) { ++ error("EAP-TLS: Private key %s fails security check", privkeyfile); ++ goto fail; ++ } ++ ++ SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3); ++ SSL_CTX_set_verify_depth(ctx, 5); ++ SSL_CTX_set_verify(ctx, ++ SSL_VERIFY_PEER | ++ SSL_VERIFY_FAIL_IF_NO_PEER_CERT, ++ &ssl_verify_callback); ++ ++ if (crl_dir) { ++ if (!(certstore = SSL_CTX_get_cert_store(ctx))) { ++ error("EAP-TLS: Failed to get certificate store"); ++ goto fail; ++ } ++ ++ if (!(lookup = ++ X509_STORE_add_lookup(certstore, X509_LOOKUP_hash_dir()))) { ++ error("EAP-TLS: Store lookup for CRL failed"); ++ ++ goto fail; ++ } ++ ++ X509_LOOKUP_add_dir(lookup, crl_dir, X509_FILETYPE_PEM); ++ X509_STORE_set_flags(certstore, X509_V_FLAG_CRL_CHECK); ++ } ++ ++ /* ++ * If a peer certificate file was specified, it must be valid, else fail ++ */ ++ if (peer_certfile[0]) { ++ if (!(tmp = get_X509_from_file(peer_certfile))) { ++ error("EAP-TLS: Error loading client certificate from file %s", ++ peer_certfile); ++ goto fail; ++ } ++ X509_free(tmp); ++ } ++ ++ return ctx; ++ ++fail: ++ log_ssl_errors(); ++ SSL_CTX_free(ctx); ++ return NULL; ++} ++ ++/* ++ * Determine the maximum packet size by looking at the LCP handshake ++ */ ++ ++int eaptls_get_mtu(int unit) ++{ ++ int mtu, mru; ++ ++ lcp_options *wo = &lcp_wantoptions[unit]; ++ lcp_options *go = &lcp_gotoptions[unit]; ++ lcp_options *ho = &lcp_hisoptions[unit]; ++ lcp_options *ao = &lcp_allowoptions[unit]; ++ ++ mtu = ho->neg_mru? ho->mru: PPP_MRU; ++ mru = go->neg_mru? MAX(wo->mru, go->mru): PPP_MRU; ++ mtu = MIN(MIN(mtu, mru), ao->mru)- PPP_HDRLEN - 10; ++ ++ dbglog("MTU = %d", mtu); ++ return mtu; ++} ++ ++ ++/* ++ * Init the ssl handshake (server mode) ++ */ ++int eaptls_init_ssl_server(eap_state * esp) ++{ ++ struct eaptls_session *ets; ++ char servcertfile[MAXWORDLEN]; ++ char clicertfile[MAXWORDLEN]; ++ char cacertfile[MAXWORDLEN]; ++ char pkfile[MAXWORDLEN]; ++ /* ++ * Allocate new eaptls session ++ */ ++ esp->es_server.ea_session = malloc(sizeof(struct eaptls_session)); ++ if (!esp->es_server.ea_session) ++ fatal("Allocation error"); ++ ets = esp->es_server.ea_session; ++ ++ if (!esp->es_server.ea_peer) { ++ error("EAP-TLS: Error: client name not set (BUG)"); ++ return 0; ++ } ++ ++ strncpy(ets->peer, esp->es_server.ea_peer, MAXWORDLEN); ++ ++ dbglog( "getting eaptls secret" ); ++ if (!get_eaptls_secret(esp->es_unit, esp->es_server.ea_peer, ++ esp->es_server.ea_name, clicertfile, ++ servcertfile, cacertfile, pkfile, 1)) { ++ error( "EAP-TLS: Cannot get secret/password for client \"%s\", server \"%s\"", ++ esp->es_server.ea_peer, esp->es_server.ea_name ); ++ return 0; ++ } ++ ++ ets->mtu = eaptls_get_mtu(esp->es_unit); ++ ++ ets->ctx = eaptls_init_ssl(1, cacertfile, servcertfile, clicertfile, pkfile); ++ if (!ets->ctx) ++ goto fail; ++ ++ if (!(ets->ssl = SSL_new(ets->ctx))) ++ goto fail; ++ ++ /* ++ * Set auto-retry to avoid timeouts on BIO_read ++ */ ++ SSL_set_mode(ets->ssl, SSL_MODE_AUTO_RETRY); ++ ++ /* ++ * Initialize the BIOs we use to read/write to ssl engine ++ */ ++ ets->into_ssl = BIO_new(BIO_s_mem()); ++ ets->from_ssl = BIO_new(BIO_s_mem()); ++ SSL_set_bio(ets->ssl, ets->into_ssl, ets->from_ssl); ++ ++ SSL_set_msg_callback(ets->ssl, ssl_msg_callback); ++ SSL_set_msg_callback_arg(ets->ssl, ets); ++ ++ /* ++ * Attach the session struct to the connection, so we can later ++ * retrieve it when doing certificate verification ++ */ ++ SSL_set_ex_data(ets->ssl, 0, ets); ++ ++ SSL_set_accept_state(ets->ssl); ++ ++ ets->data = NULL; ++ ets->datalen = 0; ++ ets->alert_sent = 0; ++ ets->alert_recv = 0; ++ ++ /* ++ * If we specified the client certificate file, store it in ets->peercertfile, ++ * so we can check it later in ssl_verify_callback() ++ */ ++ if (clicertfile[0]) ++ strncpy(&ets->peercertfile[0], clicertfile, MAXWORDLEN); ++ else ++ ets->peercertfile[0] = 0; ++ ++ return 1; ++ ++fail: ++ SSL_CTX_free(ets->ctx); ++ return 0; ++} ++ ++/* ++ * Init the ssl handshake (client mode) ++ */ ++int eaptls_init_ssl_client(eap_state * esp) ++{ ++ struct eaptls_session *ets; ++ char servcertfile[MAXWORDLEN]; ++ char clicertfile[MAXWORDLEN]; ++ char cacertfile[MAXWORDLEN]; ++ char pkfile[MAXWORDLEN]; ++ ++ /* ++ * Allocate new eaptls session ++ */ ++ esp->es_client.ea_session = malloc(sizeof(struct eaptls_session)); ++ if (!esp->es_client.ea_session) ++ fatal("Allocation error"); ++ ets = esp->es_client.ea_session; ++ ++ /* ++ * If available, copy server name in ets; it will be used in cert ++ * verify ++ */ ++ if (esp->es_client.ea_peer) ++ strncpy(ets->peer, esp->es_client.ea_peer, MAXWORDLEN); ++ else ++ ets->peer[0] = 0; ++ ++ ets->mtu = eaptls_get_mtu(esp->es_unit); ++ ++ dbglog( "calling get_eaptls_secret" ); ++ if (!get_eaptls_secret(esp->es_unit, esp->es_client.ea_name, ++ esp->es_client.ea_peer, clicertfile, ++ servcertfile, cacertfile, pkfile, 0)) { ++ error( "EAP-TLS: Cannot get secret/password for client \"%s\", server \"%s\"", ++ esp->es_client.ea_name, esp->es_client.ea_peer ); ++ return 0; ++ } ++ ++ dbglog( "calling eaptls_init_ssl" ); ++ ets->ctx = eaptls_init_ssl(0, cacertfile, clicertfile, servcertfile, pkfile); ++ if (!ets->ctx) ++ goto fail; ++ ++ ets->ssl = SSL_new(ets->ctx); ++ ++ if (!ets->ssl) ++ goto fail; ++ ++ /* ++ * Initialize the BIOs we use to read/write to ssl engine ++ */ ++ dbglog( "Initializing SSL BIOs" ); ++ ets->into_ssl = BIO_new(BIO_s_mem()); ++ ets->from_ssl = BIO_new(BIO_s_mem()); ++ SSL_set_bio(ets->ssl, ets->into_ssl, ets->from_ssl); ++ ++ SSL_set_msg_callback(ets->ssl, ssl_msg_callback); ++ SSL_set_msg_callback_arg(ets->ssl, ets); ++ ++ /* ++ * Attach the session struct to the connection, so we can later ++ * retrieve it when doing certificate verification ++ */ ++ SSL_set_ex_data(ets->ssl, 0, ets); ++ ++ SSL_set_connect_state(ets->ssl); ++ ++ ets->data = NULL; ++ ets->datalen = 0; ++ ets->alert_sent = 0; ++ ets->alert_recv = 0; ++ ++ /* ++ * If we specified the server certificate file, store it in ++ * ets->peercertfile, so we can check it later in ++ * ssl_verify_callback() ++ */ ++ if (servcertfile[0]) ++ strncpy(ets->peercertfile, servcertfile, MAXWORDLEN); ++ else ++ ets->peercertfile[0] = 0; ++ ++ return 1; ++ ++fail: ++ dbglog( "eaptls_init_ssl_client: fail" ); ++ SSL_CTX_free(ets->ctx); ++ return 0; ++ ++} ++ ++void eaptls_free_session(struct eaptls_session *ets) ++{ ++ if (ets->ssl) ++ SSL_free(ets->ssl); ++ ++ if (ets->ctx) ++ SSL_CTX_free(ets->ctx); ++ ++ free(ets); ++} ++ ++/* ++ * Handle a received packet, reassembling fragmented messages and ++ * passing them to the ssl engine ++ */ ++int eaptls_receive(struct eaptls_session *ets, u_char * inp, int len) ++{ ++ u_char flags; ++ u_int tlslen; ++ u_char dummy[65536]; ++ ++ GETCHAR(flags, inp); ++ len--; ++ ++ if (flags & EAP_TLS_FLAGS_LI && !ets->data) { ++ ++ /* ++ * This is the first packet of a message ++ */ ++ ++ GETLONG(tlslen, inp); ++ len -= 4; ++ ++ if (tlslen > EAP_TLS_MAX_LEN) { ++ error("Error: tls message length > %d, truncated", ++ EAP_TLS_MAX_LEN); ++ tlslen = EAP_TLS_MAX_LEN; ++ } ++ ++ /* ++ * Allocate memory for the whole message ++ */ ++ ets->data = malloc(tlslen); ++ if (!ets->data) ++ fatal("EAP TLS: allocation error\n"); ++ ++ ets->datalen = 0; ++ ets->tlslen = tlslen; ++ ++ } ++ else if (flags & EAP_TLS_FLAGS_LI && ets->data) { ++ /* ++ * Non first with LI (strange...) ++ */ ++ ++ GETLONG(tlslen, inp); ++ len -= 4; ++ ++ } ++ else if (!ets->data) { ++ /* ++ * A non fragmented message without LI flag ++ */ ++ ++ ets->data = malloc(len); ++ if (!ets->data) ++ fatal("EAP TLS: allocation error\n"); ++ ++ ets->datalen = 0; ++ ets->tlslen = len; ++ } ++ ++ if (flags & EAP_TLS_FLAGS_MF) ++ ets->frag = 1; ++ else ++ ets->frag = 0; ++ ++ if (len + ets->datalen > ets->tlslen) { ++ warn("EAP TLS: received data > TLS message length"); ++ return 1; ++ } ++ ++ BCOPY(inp, ets->data + ets->datalen, len); ++ ets->datalen += len; ++ ++ if (!ets->frag) { ++ ++ /* ++ * If we have the whole message, pass it to ssl ++ */ ++ ++ if (ets->datalen != ets->tlslen) { ++ warn("EAP TLS: received data != TLS message length"); ++ return 1; ++ } ++ ++ if (BIO_write(ets->into_ssl, ets->data, ets->datalen) == -1) ++ log_ssl_errors(); ++ ++ SSL_read(ets->ssl, dummy, 65536); ++ ++ free(ets->data); ++ ets->data = NULL; ++ ets->datalen = 0; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Return an eap-tls packet in outp. ++ * A TLS message read from the ssl engine is buffered in ets->data. ++ * At each call we control if there is buffered data and send a ++ * packet of mtu bytes. ++ */ ++int eaptls_send(struct eaptls_session *ets, u_char ** outp) ++{ ++ bool first = 0; ++ int size; ++ u_char fromtls[65536]; ++ int res; ++ u_char *start; ++ ++ start = *outp; ++ ++ if (!ets->data) { ++ ++ if(!ets->alert_sent) ++ SSL_read(ets->ssl, fromtls, 65536); ++ ++ /* ++ * Read from ssl ++ */ ++ if ((res = BIO_read(ets->from_ssl, fromtls, 65536)) == -1) ++ fatal("No data from BIO_read"); ++ ++ ets->datalen = res; ++ ++ ets->data = malloc(ets->datalen); ++ BCOPY(fromtls, ets->data, ets->datalen); ++ ++ ets->offset = 0; ++ first = 1; ++ ++ } ++ ++ size = ets->datalen - ets->offset; ++ ++ if (size > ets->mtu) { ++ size = ets->mtu; ++ ets->frag = 1; ++ } else ++ ets->frag = 0; ++ ++ PUTCHAR(EAPT_TLS, *outp); ++ ++ /* ++ * Set right flags and length if necessary ++ */ ++ if (ets->frag && first) { ++ PUTCHAR(EAP_TLS_FLAGS_LI | EAP_TLS_FLAGS_MF, *outp); ++ PUTLONG(ets->datalen, *outp); ++ } else if (ets->frag) { ++ PUTCHAR(EAP_TLS_FLAGS_MF, *outp); ++ } else ++ PUTCHAR(0, *outp); ++ ++ /* ++ * Copy the data in outp ++ */ ++ BCOPY(ets->data + ets->offset, *outp, size); ++ INCPTR(size, *outp); ++ ++ /* ++ * Copy the packet in retransmission buffer ++ */ ++ BCOPY(start, &ets->rtx[0], *outp - start); ++ ets->rtx_len = *outp - start; ++ ++ ets->offset += size; ++ ++ if (ets->offset >= ets->datalen) { ++ ++ /* ++ * The whole message has been sent ++ */ ++ ++ free(ets->data); ++ ets->data = NULL; ++ ets->datalen = 0; ++ ets->offset = 0; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Get the sent packet from the retransmission buffer ++ */ ++void eaptls_retransmit(struct eaptls_session *ets, u_char ** outp) ++{ ++ BCOPY(ets->rtx, *outp, ets->rtx_len); ++ INCPTR(ets->rtx_len, *outp); ++} ++ ++/* ++ * Verify a certificate. ++ * Most of the work (signatures and issuer attributes checking) ++ * is done by ssl; we check the CN in the peer certificate ++ * against the peer name. ++ */ ++int ssl_verify_callback(int preverify_ok, X509_STORE_CTX * ctx) ++{ ++ char subject[256]; ++ char cn_str[256]; ++ X509 *peer_cert; ++ int err, depth; ++ int ok = preverify_ok; ++ SSL *ssl; ++ struct eaptls_session *ets; ++ ++ peer_cert = X509_STORE_CTX_get_current_cert(ctx); ++ err = X509_STORE_CTX_get_error(ctx); ++ depth = X509_STORE_CTX_get_error_depth(ctx); ++ ++ dbglog("certificate verify depth: %d", depth); ++ ++ if (auth_required && !ok) { ++ X509_NAME_oneline(X509_get_subject_name(peer_cert), ++ subject, 256); ++ ++ X509_NAME_get_text_by_NID(X509_get_subject_name(peer_cert), ++ NID_commonName, cn_str, 256); ++ ++ dbglog("Certificate verification error:\n depth: %d CN: %s" ++ "\n err: %d (%s)\n", depth, cn_str, err, ++ X509_verify_cert_error_string(err)); ++ ++ return 0; ++ } ++ ++ ssl = X509_STORE_CTX_get_ex_data(ctx, ++ SSL_get_ex_data_X509_STORE_CTX_idx()); ++ ++ ets = (struct eaptls_session *)SSL_get_ex_data(ssl, 0); ++ ++ if (ets == NULL) { ++ error("Error: SSL_get_ex_data returned NULL"); ++ return 0; ++ } ++ ++ log_ssl_errors(); ++ ++ if (!depth) { /* This is the peer certificate */ ++ ++ X509_NAME_oneline(X509_get_subject_name(peer_cert), ++ subject, 256); ++ ++ X509_NAME_get_text_by_NID(X509_get_subject_name(peer_cert), ++ NID_commonName, cn_str, 256); ++ ++ /* ++ * If acting as client and the name of the server wasn't specified ++ * explicitely, we can't verify the server authenticity ++ */ ++ if (!ets->peer[0]) { ++ warn("Peer name not specified: no check"); ++ return 1; ++ } ++ ++ /* ++ * Check the CN ++ */ ++ if (strcmp(cn_str, ets->peer)) { ++ error ++ ("Certificate verification error: CN (%s) != peer_name (%s)", ++ cn_str, ets->peer); ++ return 0; ++ } ++ ++ warn("Certificate CN: %s , peer name %s", cn_str, ets->peer); ++ ++ /* ++ * If a peer certificate file was specified, here we check it ++ */ ++ if (ets->peercertfile[0]) { ++ if (ssl_cmp_certs(&ets->peercertfile[0], peer_cert) ++ != 0) { ++ error ++ ("Peer certificate doesn't match stored certificate"); ++ return 0; ++ } ++ } ++ } ++ ++ return 1; ++} ++ ++/* ++ * Compare a certificate with the one stored in a file ++ */ ++int ssl_cmp_certs(char *filename, X509 * a) ++{ ++ X509 *b; ++ int ret; ++ ++ if (!(b = get_X509_from_file(filename))) ++ return 1; ++ ++ ret = X509_cmp(a, b); ++ X509_free(b); ++ ++ return ret; ++ ++} ++ ++X509 *get_X509_from_file(char *filename) ++{ ++ FILE *fp; ++ X509 *ret; ++ ++ if (!(fp = fopen(filename, "r"))) ++ return NULL; ++ ++ ret = PEM_read_X509(fp, NULL, NULL, NULL); ++ ++ fclose(fp); ++ ++ return ret; ++} ++ ++/* ++ * Every sent & received message this callback function is invoked, ++ * so we know when alert messages have arrived or are sent and ++ * we can print debug information about TLS handshake. ++ */ ++void ++ssl_msg_callback(int write_p, int version, int content_type, ++ const void *buf, size_t len, SSL * ssl, void *arg) ++{ ++ char string[256]; ++ struct eaptls_session *ets = (struct eaptls_session *)arg; ++ unsigned char code; ++ ++ if(write_p) ++ strcpy(string, " -> "); ++ else ++ strcpy(string, " <- "); ++ ++ ++ switch(content_type) { ++ ++ case SSL3_RT_ALERT: ++ strcat(string, "Alert: "); ++ code = ((const unsigned char *)buf)[1]; ++ ++ if (write_p) { ++ ets->alert_sent = 1; ++ ets->alert_sent_desc = code; ++ } else { ++ ets->alert_recv = 1; ++ ets->alert_recv_desc = code; ++ } ++ ++ strcat(string, SSL_alert_desc_string_long(code)); ++ break; ++ ++ case SSL3_RT_CHANGE_CIPHER_SPEC: ++ strcat(string, "ChangeCipherSpec"); ++ break; ++ ++ case SSL3_RT_HANDSHAKE: ++ ++ strcat(string, "Handshake: "); ++ code = ((const unsigned char *)buf)[0]; ++ ++ switch(code) { ++ case SSL3_MT_HELLO_REQUEST: ++ strcat(string,"Hello Request"); ++ break; ++ case SSL3_MT_CLIENT_HELLO: ++ strcat(string,"Client Hello"); ++ break; ++ case SSL3_MT_SERVER_HELLO: ++ strcat(string,"Server Hello"); ++ break; ++ case SSL3_MT_CERTIFICATE: ++ strcat(string,"Certificate"); ++ break; ++ case SSL3_MT_SERVER_KEY_EXCHANGE: ++ strcat(string,"Server Key Exchange"); ++ break; ++ case SSL3_MT_CERTIFICATE_REQUEST: ++ strcat(string,"Certificate Request"); ++ break; ++ case SSL3_MT_SERVER_DONE: ++ strcat(string,"Server Hello Done"); ++ break; ++ case SSL3_MT_CERTIFICATE_VERIFY: ++ strcat(string,"Certificate Verify"); ++ break; ++ case SSL3_MT_CLIENT_KEY_EXCHANGE: ++ strcat(string,"Client Key Exchange"); ++ break; ++ case SSL3_MT_FINISHED: ++ strcat(string,"Finished"); ++ break; ++ ++ default: ++ sprintf( string, "Handshake: Unknown SSL3 code received: %d", code ); ++ } ++ break; ++ ++ default: ++ sprintf( string, "SSL message contains unknown content type: %d", content_type ); ++ ++ } ++ ++ /* Alert messages must always be displayed */ ++ if(content_type == SSL3_RT_ALERT) ++ error("%s", string); ++ else ++ dbglog("%s", string); ++} ++ +--- ppp-2.4.6/pppd/eap-tls.h ++++ ppp-2.4.6/pppd/eap-tls.h +@@ -0,0 +1,107 @@ ++/* ++ * eap-tls.h ++ * ++ * Copyright (c) Beniamino Galvani 2005 All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * 3. The name(s) of the authors of this software must not be used to ++ * endorse or promote products derived from this software without ++ * prior written permission. ++ * ++ * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO ++ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ++ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY ++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ */ ++ ++#ifndef __EAP_TLS_H__ ++#define __EAP_TLS_H__ ++ ++#include "eap.h" ++ ++#include ++#include ++#include ++ ++#define EAP_TLS_FLAGS_LI 128 /* length included flag */ ++#define EAP_TLS_FLAGS_MF 64 /* more fragments flag */ ++#define EAP_TLS_FLAGS_START 32 /* start flag */ ++ ++#define EAP_TLS_MAX_LEN 65536 /* max eap tls packet size */ ++ ++struct eaptls_session ++{ ++ u_char *data; /* buffered data */ ++ int datalen; /* buffered data len */ ++ int offset; /* from where to send */ ++ int tlslen; /* total length of tls data */ ++ bool frag; /* packet is fragmented */ ++ SSL_CTX *ctx; ++ SSL *ssl; /* ssl connection */ ++ BIO *from_ssl; ++ BIO *into_ssl; ++ char peer[MAXWORDLEN]; /* peer name */ ++ char peercertfile[MAXWORDLEN]; ++ bool alert_sent; ++ u_char alert_sent_desc; ++ bool alert_recv; ++ u_char alert_recv_desc; ++ char rtx[65536]; /* retransmission buffer */ ++ int rtx_len; ++ int mtu; /* unit mtu */ ++}; ++ ++typedef struct pw_cb_data ++{ ++ const void *password; ++ const char *prompt_info; ++} PW_CB_DATA; ++ ++ ++int ssl_verify_callback(int, X509_STORE_CTX *); ++void ssl_msg_callback(int write_p, int version, int ct, const void *buf, ++ size_t len, SSL * ssl, void *arg); ++ ++X509 *get_X509_from_file(char *filename); ++int ssl_cmp_certs(char *filename, X509 * a); ++ ++SSL_CTX *eaptls_init_ssl(int init_server, char *cacertfile, ++ char *certfile, char *peer_certfile, char *privkeyfile); ++int eaptls_init_ssl_server(eap_state * esp); ++int eaptls_init_ssl_client(eap_state * esp); ++void eaptls_free_session(struct eaptls_session *ets); ++ ++int eaptls_receive(struct eaptls_session *ets, u_char * inp, int len); ++int eaptls_send(struct eaptls_session *ets, u_char ** outp); ++void eaptls_retransmit(struct eaptls_session *ets, u_char ** outp); ++ ++int get_eaptls_secret(int unit, char *client, char *server, ++ char *clicertfile, char *servcertfile, char *cacertfile, ++ char *pkfile, int am_server); ++ ++#ifdef MPPE ++#include "mppe.h" /* MPPE_MAX_KEY_LEN */ ++extern u_char mppe_send_key[MPPE_MAX_KEY_LEN]; ++extern u_char mppe_recv_key[MPPE_MAX_KEY_LEN]; ++extern int mppe_keys_set; ++ ++void eaptls_gen_mppe_keys(struct eaptls_session *ets, const char *prf_label, int client); ++ ++#endif ++ ++#endif +--- ppp-2.4.6/pppd/Makefile.linux ++++ ppp-2.4.6/pppd/Makefile.linux +@@ -76,6 +76,9 @@ + # Use libutil + USE_LIBUTIL=y + ++# Enable EAP-TLS authentication (requires libssl and libcrypto) ++USE_EAPTLS=y ++ + MAXOCTETS=y + + INCLUDE_DIRS= -I../include +@@ -115,6 +118,15 @@ + PPPDOBJS += sha1.o + endif + ++# EAP-TLS ++ifdef USE_EAPTLS ++CFLAGS += -DUSE_EAPTLS=1 -I/usr/kerberos/include ++LIBS += -lssl -lcrypto ++PPPDSRC += eap-tls.c ++HEADERS += eap-tls.h ++PPPDOBJS += eap-tls.o ++endif ++ + ifdef HAS_SHADOW + CFLAGS += -DHAS_SHADOW + #LIBS += -lshadow $(LIBS) +--- ppp-2.4.6/pppd/md5.c ++++ ppp-2.4.6/pppd/md5.c +@@ -33,6 +33,8 @@ + *********************************************************************** + */ + ++#ifndef USE_EAPTLS ++ + #include + #include "md5.h" + +@@ -305,3 +307,5 @@ + ** End of md5.c ** + ******************************** (cut) ******************************** + */ ++#endif /* USE_EAPTLS */ ++ +--- ppp-2.4.6/pppd/md5.h ++++ ppp-2.4.6/pppd/md5.h +@@ -36,6 +36,7 @@ + ** documentation and/or software. ** + *********************************************************************** + */ ++#ifndef USE_EAPTLS + + #ifndef __MD5_INCLUDE__ + +@@ -63,3 +64,5 @@ + + #define __MD5_INCLUDE__ + #endif /* __MD5_INCLUDE__ */ ++ ++#endif /* USE_EAPTLS */ +--- ppp-2.4.6/pppd/options.c ++++ ppp-2.4.6/pppd/options.c +@@ -122,6 +122,11 @@ + int child_wait = 5; /* # seconds to wait for children at exit */ + struct userenv *userenv_list; /* user environment variables */ + ++#ifdef USE_EAPTLS ++bool only_update_crl_server = 0; /* update server crl and exit */ ++bool only_update_crl_client = 0; /* update client crl and exit */ ++#endif /* USE_EAPTLS */ ++ + #ifdef MAXOCTETS + unsigned int maxoctets = 0; /* default - no limit */ + int maxoctets_dir = 0; /* default - sum of traffic */ +@@ -338,6 +343,12 @@ + { "mo-timeout", o_int, &maxoctets_timeout, + "Check for traffic limit every N seconds", OPT_PRIO | OPT_LLIMIT | 1 }, + #endif ++#ifdef USE_EAPTLS ++ { "only-update-crl-server", o_bool, &only_update_crl_server, ++ "Update server CA CRLs and exit", 1 }, ++ { "only-update-crl-client", o_bool, &only_update_crl_client, ++ "Update client CA CRLs and exit", 1 }, ++#endif /* USE_EAPTLS */ + + { NULL } + }; +--- ppp-2.4.6/pppd/pathnames.h ++++ ppp-2.4.6/pppd/pathnames.h +@@ -21,6 +21,13 @@ + #define _PATH_UPAPFILE _ROOT_PATH "/etc/ppp/pap-secrets" + #define _PATH_CHAPFILE _ROOT_PATH "/etc/ppp/chap-secrets" + #define _PATH_SRPFILE _ROOT_PATH "/etc/ppp/srp-secrets" ++ ++#ifdef USE_EAPTLS ++#define _PATH_EAPTLSCLIFILE _ROOT_PATH "/etc/ppp/eaptls-client" ++#define _PATH_EAPTLSSERVFILE _ROOT_PATH "/etc/ppp/eaptls-server" ++#define _PATH_OPENSSLCONFFILE _ROOT_PATH "/etc/ppp/openssl.cnf" ++#endif /* USE_EAPTLS */ ++ + #define _PATH_SYSOPTIONS _ROOT_PATH "/etc/ppp/options" + #define _PATH_IPUP _ROOT_PATH "/etc/ppp/ip-up" + #define _PATH_IPDOWN _ROOT_PATH "/etc/ppp/ip-down" +--- ppp-2.4.6/pppd/plugins/Makefile.linux ++++ ppp-2.4.6/pppd/plugins/Makefile.linux +@@ -4,6 +4,9 @@ + LDFLAGS = -shared + INSTALL = install + ++# EAP-TLS ++CFLAGS += -DUSE_EAPTLS=1 ++ + DESTDIR = $(INSTROOT)@DESTDIR@ + BINDIR = $(DESTDIR)/sbin + MANDIR = $(DESTDIR)/share/man/man8 +--- ppp-2.4.6/pppd/plugins/passprompt.c ++++ ppp-2.4.6/pppd/plugins/passprompt.c +@@ -107,4 +107,7 @@ + { + add_options(options); + pap_passwd_hook = promptpass; ++#ifdef USE_EAPTLS ++ eaptls_passwd_hook = promptpass; ++#endif + } +--- ppp-2.4.6/pppd/plugins/passwordfd.c ++++ ppp-2.4.6/pppd/plugins/passwordfd.c +@@ -79,4 +79,8 @@ + + chap_check_hook = pwfd_check; + chap_passwd_hook = pwfd_passwd; ++ ++#ifdef USE_EAPTLS ++ eaptls_passwd_hook = pwfd_passwd; ++#endif + } +--- ppp-2.4.6/pppd/pppd.h ++++ ppp-2.4.6/pppd/pppd.h +@@ -324,6 +324,10 @@ + extern bool dryrun; /* check everything, print options, exit */ + extern int child_wait; /* # seconds to wait for children at end */ + ++#ifdef USE_EAPTLS ++extern char *crl_dir; ++#endif /* USE_EAPTLS */ ++ + #ifdef MAXOCTETS + extern unsigned int maxoctets; /* Maximum octetes per session (in bytes) */ + extern int maxoctets_dir; /* Direction : +@@ -738,6 +742,10 @@ + extern int (*chap_passwd_hook) __P((char *user, char *passwd)); + extern void (*multilink_join_hook) __P((void)); + ++#ifdef USE_EAPTLS ++extern int (*eaptls_passwd_hook) __P((char *user, char *passwd)); ++#endif ++ + /* Let a plugin snoop sent and received packets. Useful for L2TP */ + extern void (*snoop_recv_hook) __P((unsigned char *p, int len)); + extern void (*snoop_send_hook) __P((unsigned char *p, int len)); +--- ppp-2.4.6/README.eap-tls ++++ ppp-2.4.6/README.eap-tls +@@ -0,0 +1,169 @@ ++EAP-TLS authentication support for PPP ++====================================== ++ ++1. Intro ++ ++ The Extensible Authentication Protocol (EAP; RFC 3748) is a ++ security protocol that can be used with PPP. It provides a means ++ to plug in multiple optional authentication methods. ++ ++ Transport Level Security (TLS; RFC 2246) provides for mutual ++ authentication, integrity-protected ciphersuite negotiation and ++ key exchange between two endpoints. It also provides for optional ++ MPPE encryption. ++ ++ EAP-TLS (RFC 2716) incapsulates the TLS messages in EAP packets, ++ allowing TLS mutual authentication to be used as a generic EAP ++ mechanism. It also provides optional encryption using the MPPE ++ protocol. ++ ++ This patch provide EAP-TLS support to pppd. ++ This authentication method can be used in both client or server ++ mode. ++ ++2. Building ++ ++ To build pppd with EAP-TLS support, OpenSSL (http://www.openssl.org) ++ is required. Any version from 0.9.7 should work. ++ ++ Configure, compile, and install as usual. ++ ++3. Configuration ++ ++ On the client side there are two ways to configure EAP-TLS: ++ ++ 1. supply the appropriate 'ca', 'cert' and 'key' command-line parameters ++ ++ 2. edit the /etc/ppp/eaptls-client file. ++ Insert a line for each system with which you use EAP-TLS. ++ The line is composed of this fields separated by tab: ++ ++ - Client name ++ The name used by the client for authentication, can be * ++ - Server name ++ The name of the server, can be * ++ - Client certificate file ++ The file containing the certificate chain for the ++ client in PEM format ++ - Server certificate file ++ If you want to specify the certificate that the ++ server is allowed to use, put the certificate file name. ++ Else put a dash '-'. ++ - CA certificate file ++ The file containing the trusted CA certificates in PEM ++ format. ++ - Client private key file ++ The file containing the client private key in PEM format. ++ ++ ++ On the server side edit the /etc/ppp/eaptls-server file. ++ Insert a line for each system with which you use EAP-TLS. ++ The line is composed of this fields separated by tab: ++ ++ - Client name ++ The name used by the client for authentication, can be * ++ - Server name ++ The name of the server, can be * ++ - Client certificate file ++ If you want to specify the certificate that the ++ client is allowed to use, put the certificate file name. ++ Else put a dash '-'. ++ - Server certificate file ++ The file containing the certificate chain for the ++ server in PEM format ++ - CA certificate file ++ The file containing the trusted CA certificates in PEM ++ format. ++ - Client private key file ++ The file containing the server private key in PEM format. ++ - addresses ++ A list of IP addresses the client is allowed to use. ++ ++ ++ OpenSSL engine support is included starting with v0.95 of this patch. ++ Currently the only engine tested is the 'pkcs11' engine (hardware token ++ support). To use the 'pksc11' engine: ++ - Use a special private key fileiname in the /etc/ppp/eaptls-client file: ++ : ++ e.g. ++ pkcs11:123456 ++ ++ - The certificate can also be loaded from the 'pkcs11' engine using ++ a special client certificate filename in the /etc/ppp/eaptls-client file: ++ : ++ e.g. ++ pkcs11:123456 ++ ++ - Create an /etc/ppp/openssl.cnf file to load the right OpenSSL engine prior ++ to starting 'pppd'. A sample openssl.cnf file is ++ ++ openssl_conf = openssl_def ++ ++ [ openssl_def ] ++ engines = engine_section ++ ++ [ engine_section ] ++ pkcs11 = pkcs11_section ++ ++ [ pkcs11_section ] ++ engine_id = pkcs11 ++ dynamic_path = /usr/lib64/openssl/engines/engine_pkcs11.so ++ MODULE_PATH = /usr/lib64/libeTPkcs11.so ++ init = 0 ++ ++ - There are two ways to specify a password/PIN for the PKCS11 engine: ++ - inside the openssl.cnf file using ++ PIN = your-secret-pin ++ Note The keyword 'PIN' is case sensitive! ++ - Using the 'password' in the ppp options file. ++ From v0.97 of the eap-tls patch the password can also be supplied ++ using the appropriate 'eaptls_passwd_hook' (see plugins/passprompt.c ++ for an example). ++ ++ ++4. Options ++ ++ These pppd options are available: ++ ++ ca ++ Use the CA public certificate found in in PEM format ++ cert ++ Use the client public certificate found in in PEM format ++ or in engine:engine_id format ++ key ++ Use the client private key found in in PEM format ++ or in engine:engine_id format ++ crl-dir ++ Use CRL files from dir. It contains CRL files in PEM ++ format and each file contains a CRL. The files are looked up ++ by the issuer name hash value. Use the c_rehash utility ++ to create necessary links. ++ need-peer-eap ++ If the peer doesn't ask us to authenticate or doesn't use eap ++ to authenticate us, disconnect. ++ ++ Note: ++ password-encrypted certificates can be used as of v0.94 of this ++ patch. The password for the eap-tls.key file is specified using ++ the regular ++ password .... ++ statement in the ppp options file, or by using the appropriate ++ plugin which supplies a 'eaptls_passwd_hook' routine. ++ ++5. Connecting ++ ++ If you're setting up a pppd server, edit the EAP-TLS configuration file ++ as written above and then run pppd with the 'auth' option to authenticate ++ the client. The EAP-TLS method will be used if the other eap methods can't ++ be used (no secrets). ++ ++ If you're setting up a client, edit the configuration file and then run ++ pppd with 'remotename' option to specify the server name. Add the ++ 'need-peer-eap' option if you want to be sure the peer ask you to ++ authenticate (and to use eap) and to disconnect if it doesn't. ++ ++6. Notes ++ ++ This is experimental code. ++ Send suggestions and comments to Jan Just Keijser ++ diff --git a/network/connection/ppp/files/gentoo/85_all_dhcp-make-vars.patch b/network/connection/ppp/files/gentoo/85_all_dhcp-make-vars.patch new file mode 100644 index 0000000000..68af3aaf30 --- /dev/null +++ b/network/connection/ppp/files/gentoo/85_all_dhcp-make-vars.patch @@ -0,0 +1,19 @@ +--- ppp-2.4.3/pppd/plugins/dhcp/Makefile.linux ++++ ppp-2.4.3/pppd/plugins/dhcp/Makefile.linux +@@ -1,6 +1,6 @@ + + PLUGIN=dhcpc.so +-CFLAGS=-I../.. -I../../../include -O2 ++CFLAGS=$(COPTS) -I../.. -I../../../include -fPIC + + all: $(PLUGIN) + +@@ -9,7 +9,7 @@ + $(INSTALL) -s -c -m 755 dhcpc.so $(LIBDIR) + + dhcpc.so: dhcpc.o clientpacket.o packet.o socket.o options.o +- gcc -o dhcpc.so -shared dhcpc.o clientpacket.o packet.o socket.o options.o ++ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ + + + clean: diff --git a/network/connection/ppp/files/gentoo/86_all_dhcp-sys_error_to_strerror.patch b/network/connection/ppp/files/gentoo/86_all_dhcp-sys_error_to_strerror.patch new file mode 100644 index 0000000000..e0d0937b2f --- /dev/null +++ b/network/connection/ppp/files/gentoo/86_all_dhcp-sys_error_to_strerror.patch @@ -0,0 +1,128 @@ +--- ppp-2.4.2/pppd/plugins/dhcp/dhcpc.c ++++ ppp-2.4.2/pppd/plugins/dhcp/dhcpc.c +@@ -144,7 +144,7 @@ + fd = raw_socket(client_config.ifindex); + + if (listen_mode != LISTEN_NONE && fd < 0) { +- fatal("DHCPC: couldn't listen on socket, %s", sys_errlist[errno]); ++ fatal("DHCPC: couldn't listen on socket, %s", strerror(errno)); + } + + } +@@ -208,7 +208,7 @@ + len = get_packet(&packet, fd); + + if (len == -1 && errno != EINTR) { +- dbglog("DHCPC: error on read, %s, reopening socket", sys_errlist[errno]); ++ dbglog("DHCPC: error on read, %s, reopening socket", strerror(errno)); + change_mode(LISTEN_KERNEL); + } + if (len < 0) continue; +@@ -380,7 +380,7 @@ + else len = get_raw_packet(&packet, fd); + + if (len == -1 && errno != EINTR) { +- dbglog("DHCPC: error on read, %s, reopening socket", sys_errlist[errno]); ++ dbglog("DHCPC: error on read, %s, reopening socket", strerror(errno)); + change_mode(listen_mode); /* just close and reopen */ + } + if (len < 0) continue; +@@ -445,7 +445,7 @@ + + } else { + /* An error occured */ +- dbglog("DHCPC: error on select, %s, reopening socket", sys_errlist[errno]); ++ dbglog("DHCPC: error on select, %s, reopening socket", strerror(errno)); + change_mode(listen_mode); /* just close and reopen */ + } + +--- ppp-2.4.2/pppd/plugins/dhcp/packet.c ++++ ppp-2.4.2/pppd/plugins/dhcp/packet.c +@@ -125,7 +125,7 @@ + return kernel_packet(payload,payload->giaddr,CLIENT_PORT,dest_ip,dest_port); + + if ((fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))) < 0) { +- DEBUG(LOG_ERR, "socket call failed: %s", sys_errlist[errno]); ++ DEBUG(LOG_ERR, "socket call failed: %s", strerror(errno)); + return -1; + } + +@@ -138,7 +138,7 @@ + dest.sll_halen = 6; + memcpy(dest.sll_addr, dest_arp, 6); + if (bind(fd, (struct sockaddr *)&dest, sizeof(struct sockaddr_ll)) < 0) { +- DEBUG(LOG_ERR, "bind call failed: %s", sys_errlist[errno]); ++ DEBUG(LOG_ERR, "bind call failed: %s", strerror(errno)); + close(fd); + return -1; + } +@@ -161,7 +161,7 @@ + + result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0, (struct sockaddr *) &dest, sizeof(dest)); + if (result <= 0) { +- DEBUG(LOG_ERR, "write on socket failed: %s", sys_errlist[errno]); ++ DEBUG(LOG_ERR, "write on socket failed: %s", strerror(errno)); + } + close(fd); + return result; +--- ppp-2.4.2/pppd/plugins/dhcp/socket.c ++++ ppp-2.4.2/pppd/plugins/dhcp/socket.c +@@ -60,7 +60,7 @@ + *addr = sin->sin_addr.s_addr; + DEBUG(LOG_INFO, "%s (our ip) = %s", ifr.ifr_name, inet_ntoa(sin->sin_addr)); + } else { +- LOG(LOG_ERR, "SIOCGIFADDR failed!: %s", sys_errlist[errno]); ++ LOG(LOG_ERR, "SIOCGIFADDR failed!: %s", strerror(errno)); + return -1; + } + } +@@ -69,7 +69,7 @@ + DEBUG(LOG_INFO, "adapter index %d", ifr.ifr_ifindex); + *ifindex = ifr.ifr_ifindex; + } else { +- LOG(LOG_ERR, "SIOCGIFINDEX failed!: %s", sys_errlist[errno]); ++ LOG(LOG_ERR, "SIOCGIFINDEX failed!: %s", strerror(errno)); + return -1; + } + if (ioctl(fd, SIOCGIFHWADDR, &ifr) == 0) { +@@ -77,11 +77,11 @@ + DEBUG(LOG_INFO, "adapter hardware address %02x:%02x:%02x:%02x:%02x:%02x", + arp[0], arp[1], arp[2], arp[3], arp[4], arp[5]); + } else { +- LOG(LOG_ERR, "SIOCGIFHWADDR failed!: %s", sys_errlist[errno]); ++ LOG(LOG_ERR, "SIOCGIFHWADDR failed!: %s", strerror(errno)); + return -1; + } + } else { +- LOG(LOG_ERR, "socket failed!: %s", sys_errlist[errno]); ++ LOG(LOG_ERR, "socket failed!: %s", strerror(errno)); + return -1; + } + close(fd); +@@ -98,7 +98,7 @@ + + DEBUG(LOG_INFO, "Opening listen socket on 0x%08x:%d %s\n", ip, port, inf ? inf : "*"); + if ((fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) { +- DEBUG(LOG_ERR, "socket call failed: %s", sys_errlist[errno]); ++ DEBUG(LOG_ERR, "socket call failed: %s", strerror(errno)); + return -1; + } + +@@ -144,7 +144,7 @@ + + DEBUG(LOG_INFO, "Opening raw socket on ifindex %d\n", ifindex); + if ((fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))) < 0) { +- DEBUG(LOG_ERR, "socket call failed: %s", sys_errlist[errno]); ++ DEBUG(LOG_ERR, "socket call failed: %s", strerror(errno)); + return -1; + } + +@@ -152,7 +152,7 @@ + sock.sll_protocol = htons(ETH_P_IP); + sock.sll_ifindex = ifindex; + if (bind(fd, (struct sockaddr *) &sock, sizeof(sock)) < 0) { +- DEBUG(LOG_ERR, "bind call failed: %s", sys_errlist[errno]); ++ DEBUG(LOG_ERR, "bind call failed: %s", strerror(errno)); + close(fd); + return -1; + } diff --git a/network/connection/ppp/files/ip-down b/network/connection/ppp/files/ip-down new file mode 100644 index 0000000000..77e05655a5 --- /dev/null +++ b/network/connection/ppp/files/ip-down @@ -0,0 +1,37 @@ +#!/bin/sh + +# this is a script which is executed after disconnecting the ppp interface. +# look at man pppd for details + +# the followings parameters are available: +# $1 = interface-name +# $2 = tty-device +# $3 = speed +# $4 = local-IP-address +# $5 = remote-IP-address +# $6 = ipparam + +if [ "$USEPEERDNS" ]; then + + # taken from debian's 0000usepeerdns + # follow any symlink to find the real file + REALRESOLVCONF=$(readlink --canonicalize /etc/resolv.conf) + + if [ "$REALRESOLVCONF" != "/etc/ppp/resolv.conf" ]; then + + # if an old resolv.conf file exists, restore it + if [ -e $REALRESOLVCONF.pppd-backup ]; then + mv $REALRESOLVCONF.pppd-backup $REALRESOLVCONF + fi + + fi + +fi + +# Recreate the default route so autodial works +[ -s /etc/conf.d/net ] && . /etc/conf.d/net +if [ -n "${gateway}" ] && [ "${gateway%/*}" = "$1" ]; then + /sbin/route add default dev ${gateway%/*} +fi + +[ -f /etc/ppp/ip-down.local ] && . /etc/ppp/ip-down.local "$@" diff --git a/network/connection/ppp/files/ip-up b/network/connection/ppp/files/ip-up new file mode 100644 index 0000000000..81fee89ec6 --- /dev/null +++ b/network/connection/ppp/files/ip-up @@ -0,0 +1,42 @@ +#!/bin/sh + +# this is a script which is executed after connecting the ppp interface. +# look at man pppd for details + +# the followings parameters are available: +# $1 = interface-name +# $2 = tty-device +# $3 = speed +# $4 = local-IP-address +# $5 = remote-IP-address +# $6 = ipparam + +if [ "$USEPEERDNS" ]; then + + # add the server supplied DNS entries to /etc/resolv.conf + # (taken from debian's 0000usepeerdns) + + # follow any symlink to find the real file + REALRESOLVCONF=$(readlink --canonicalize /etc/resolv.conf) + + if [ "$REALRESOLVCONF" != "/etc/ppp/resolv.conf" ]; then + + # merge the new nameservers with the other options from the old configuration + { + grep '^nameserver[[:space:]]' $REALRESOLVCONF + cat /etc/ppp/resolv.conf + } > $REALRESOLVCONF.tmp + + # backup the old configuration and install the new one + cp -a $REALRESOLVCONF $REALRESOLVCONF.pppd-backup + mv $REALRESOLVCONF.tmp $REALRESOLVCONF + + # correct permissions + chmod 0644 /etc/resolv.conf + chown root:root /etc/resolv.conf + + fi + +fi + +[ -f /etc/ppp/ip-up.local ] && . /etc/ppp/ip-up.local "$@" diff --git a/network/connection/ppp/files/nostrip.patch b/network/connection/ppp/files/nostrip.patch new file mode 100644 index 0000000000..342eb04f72 --- /dev/null +++ b/network/connection/ppp/files/nostrip.patch @@ -0,0 +1,92 @@ +Index: ppp-2.4.5/chat/Makefile.linux +=================================================================== +--- ppp-2.4.5.orig/chat/Makefile.linux ++++ ppp-2.4.5/chat/Makefile.linux +@@ -25,7 +25,7 @@ chat.o: chat.c + + install: chat + mkdir -p $(BINDIR) $(MANDIR) +- $(INSTALL) -s -c chat $(BINDIR) ++ $(INSTALL) -c chat $(BINDIR) + $(INSTALL) -c -m 644 chat.8 $(MANDIR) + + clean: +Index: ppp-2.4.5/pppd/Makefile.linux +=================================================================== +--- ppp-2.4.5.orig/pppd/Makefile.linux ++++ ppp-2.4.5/pppd/Makefile.linux +@@ -100,7 +100,7 @@ ifdef USE_SRP + CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include + LIBS += -lsrp -L/usr/local/ssl/lib -lcrypto + TARGETS += srp-entry +-EXTRAINSTALL = $(INSTALL) -s -c -m 555 srp-entry $(BINDIR)/srp-entry ++EXTRAINSTALL = $(INSTALL) -c -m 555 srp-entry $(BINDIR)/srp-entry + MANPAGES += srp-entry.8 + EXTRACLEAN += srp-entry.o + NEEDDES=y +@@ -201,7 +201,7 @@ all: $(TARGETS) + install: pppd + mkdir -p $(BINDIR) $(MANDIR) + $(EXTRAINSTALL) +- $(INSTALL) -s -c -m 555 pppd $(BINDIR)/pppd ++ $(INSTALL) -c -m 555 pppd $(BINDIR)/pppd + if chgrp pppusers $(BINDIR)/pppd 2>/dev/null; then \ + chmod o-rx,u+s $(BINDIR)/pppd; fi + $(INSTALL) -c -m 444 pppd.8 $(MANDIR) +Index: ppp-2.4.5/pppd/plugins/radius/Makefile.linux +=================================================================== +--- ppp-2.4.5.orig/pppd/plugins/radius/Makefile.linux ++++ ppp-2.4.5/pppd/plugins/radius/Makefile.linux +@@ -36,9 +36,9 @@ all: $(PLUGIN) + + install: all + $(INSTALL) -d -m 755 $(LIBDIR) +- $(INSTALL) -s -c -m 755 radius.so $(LIBDIR) +- $(INSTALL) -s -c -m 755 radattr.so $(LIBDIR) +- $(INSTALL) -s -c -m 755 radrealms.so $(LIBDIR) ++ $(INSTALL) -c -m 755 radius.so $(LIBDIR) ++ $(INSTALL) -c -m 755 radattr.so $(LIBDIR) ++ $(INSTALL) -c -m 755 radrealms.so $(LIBDIR) + $(INSTALL) -c -m 444 pppd-radius.8 $(MANDIR) + $(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR) + +Index: ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux +=================================================================== +--- ppp-2.4.5.orig/pppd/plugins/rp-pppoe/Makefile.linux ++++ ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux +@@ -43,9 +43,9 @@ rp-pppoe.so: plugin.o discovery.o if.o c + + install: all + $(INSTALL) -d -m 755 $(LIBDIR) +- $(INSTALL) -s -c -m 4550 rp-pppoe.so $(LIBDIR) ++ $(INSTALL) -c -m 4550 rp-pppoe.so $(LIBDIR) + $(INSTALL) -d -m 755 $(BINDIR) +- $(INSTALL) -s -c -m 555 pppoe-discovery $(BINDIR) ++ $(INSTALL) -c -m 555 pppoe-discovery $(BINDIR) + + clean: + rm -f *.o *.so pppoe-discovery +Index: ppp-2.4.5/pppdump/Makefile.linux +=================================================================== +--- ppp-2.4.5.orig/pppdump/Makefile.linux ++++ ppp-2.4.5/pppdump/Makefile.linux +@@ -17,5 +17,5 @@ clean: + + install: + mkdir -p $(BINDIR) $(MANDIR) +- $(INSTALL) -s -c pppdump $(BINDIR) ++ $(INSTALL) -c pppdump $(BINDIR) + $(INSTALL) -c -m 444 pppdump.8 $(MANDIR) +Index: ppp-2.4.5/pppstats/Makefile.linux +=================================================================== +--- ppp-2.4.5.orig/pppstats/Makefile.linux ++++ ppp-2.4.5/pppstats/Makefile.linux +@@ -22,7 +22,7 @@ all: pppstats + + install: pppstats + -mkdir -p $(MANDIR) +- $(INSTALL) -s -c pppstats $(BINDIR) ++ $(INSTALL) -c pppstats $(BINDIR) + $(INSTALL) -c -m 444 pppstats.8 $(MANDIR) + + pppstats: $(PPPSTATSRCS) diff --git a/network/connection/ppp/files/options-pppoe b/network/connection/ppp/files/options-pppoe new file mode 100644 index 0000000000..5988ee2d66 --- /dev/null +++ b/network/connection/ppp/files/options-pppoe @@ -0,0 +1,6 @@ +noipdefault +hide-password +defaultroute +persist +lock + diff --git a/network/connection/ppp/files/options-pptp b/network/connection/ppp/files/options-pptp new file mode 100644 index 0000000000..af5749aac3 --- /dev/null +++ b/network/connection/ppp/files/options-pptp @@ -0,0 +1,18 @@ +#192.168.1.0: +netmask 255.255.255.0 +#debug +#kdebug 1 +lock +mtu 1490 +mru 1490 +proxyarp +auth +require-chap +passive +ipcp-accept-local +ipcp-accept-remote +lcp-echo-failure 3 +lcp-echo-interval 5 +deflate 0 +#ms-dns 192.168.1.1 +#ms-wins 192.168.1.1 diff --git a/network/connection/ppp/files/ppp-2.3.6-sample.patch b/network/connection/ppp/files/ppp-2.3.6-sample.patch new file mode 100644 index 0000000000..92eee6c0e3 --- /dev/null +++ b/network/connection/ppp/files/ppp-2.3.6-sample.patch @@ -0,0 +1,295 @@ +--- ppp-2.3.3/sample/auth-down.sample Tue Jan 6 17:53:27 1998 ++++ ppp-2.3.3/sample/auth-down Tue Jan 6 17:53:27 1998 +@@ -0,0 +1,17 @@ ++#!/bin/sh ++# ++# A program or script which is executed after the remote system ++# successfully authenticates itself. It is executed with the parameters ++# ++# ++ ++# ++# The environment is cleared before executing this script ++# so the path must be reset ++# ++PATH=/usr/sbin:/sbin:/usr/bin:/bin ++export PATH ++ ++echo auth-down `date +'%y/%m/%d %T'` $* >> /var/log/pppstats ++ ++# last line +--- ppp-2.3.3/sample/auth-up.sample Tue Jan 6 17:53:27 1998 ++++ ppp-2.3.3/sample/auth-up Tue Jan 6 17:53:27 1998 +@@ -0,0 +1,17 @@ ++#!/bin/sh ++# ++# A program or script which is executed after the remote system ++# successfully authenticates itself. It is executed with the parameters ++# ++# ++ ++# ++# The environment is cleared before executing this script ++# so the path must be reset ++# ++PATH=/usr/sbin:/sbin:/usr/bin:/bin ++export PATH ++ ++echo auth-up `date +'%y/%m/%d %T'` $* >> /var/log/pppstats ++ ++# last line +--- ppp-2.3.3/sample/ip-down.sample Tue Jan 6 17:53:27 1998 ++++ ppp-2.3.3/sample/ip-down Tue Jan 6 17:53:27 1998 +@@ -0,0 +1,22 @@ ++#!/bin/sh ++# ++# This script is run by the pppd _after_ the link is brought down. ++# It should be used to delete routes, unset IP addresses etc. ++# ++# This script is called with the following arguments: ++# Arg Name Example ++# $1 Interface name ppp0 ++# $2 The tty ttyS1 ++# $3 The link speed 38400 ++# $4 Local IP number 12.34.56.78 ++# $5 Peer IP number 12.34.56.99 ++# ++ ++# ++# The environment is cleared before executing this script ++# so the path must be reset ++# ++PATH=/usr/sbin:/sbin:/usr/bin:/bin ++export PATH ++ ++# last line +--- ppp-2.3.3/sample/ip-up.sample Tue Jan 6 17:53:27 1998 ++++ ppp-2.3.3/sample/ip-up Tue Jan 6 17:53:27 1998 +@@ -0,0 +1,23 @@ ++#!/bin/sh ++# ++# This script is run by the pppd after the link is established. ++# It should be used to add routes, set IP address, run the mailq ++# etc. ++# ++# This script is called with the following arguments: ++# Arg Name Example ++# $1 Interface name ppp0 ++# $2 The tty ttyS1 ++# $3 The link speed 38400 ++# $4 Local IP number 12.34.56.78 ++# $5 Peer IP number 12.34.56.99 ++# ++ ++# ++# The environment is cleared before executing this script ++# so the path must be reset ++# ++PATH=/usr/sbin:/sbin:/usr/bin:/bin ++export PATH ++ ++# last line +--- ppp-2.3.3/sample/options.sample Tue Jan 6 17:53:27 1998 ++++ ppp-2.3.3/sample/options Tue Jan 6 17:53:27 1998 +@@ -0,0 +1,153 @@ ++# /etc/ppp/options ++ ++# The name of this server. Often, the FQDN is used here. ++#name ++ ++# Enforce the use of the hostname as the name of the local system for ++# authentication purposes (overrides the name option). ++usehostname ++ ++# If no local IP address is given, pppd will use the first IP address ++# that belongs to the local hostname. If "noipdefault" is given, this ++# is disabled and the peer will have to supply an IP address. ++noipdefault ++ ++# With this option, pppd will accept the peer's idea of our local IP ++# address, even if the local IP address was specified in an option. ++#ipcp-accept-local ++ ++# With this option, pppd will accept the peer's idea of its (remote) IP ++# address, even if the remote IP address was specified in an option. ++#ipcp-accept-remote ++ ++# Specify which DNS Servers the incoming Win95 or WinNT Connection should use ++# Two Servers can be remotely configured ++#ms-dns 192.168.1.1 ++#ms-dns 192.168.1.2 ++ ++# Specify which WINS Servers the incoming connection Win95 or WinNT should use ++#wins-addr 192.168.1.50 ++#wins-addr 192.168.1.51 ++ ++# enable this on a server that already has a permanent default route ++#nodefaultroute ++ ++# Run the executable or shell command specified after pppd has terminated ++# the link. This script could, for example, issue commands to the modem ++# to cause it to hang up if hardware modem control signals were not ++# available. ++# If mgetty is running, it will reset the modem anyway. So there is no need ++# to do it here. ++#disconnect "chat -- \d+++\d\c OK ath0 OK" ++ ++# Increase debugging level (same as -d). The debug output is written ++# to syslog LOG_LOCAL2. ++debug ++ ++# Enable debugging code in the kernel-level PPP driver. The argument n ++# is a number which is the sum of the following values: 1 to enable ++# general debug messages, 2 to request that the contents of received ++# packets be printed, and 4 to request that the contents of transmitted ++# packets be printed. ++#kdebug n ++ ++# Require the peer to authenticate itself before allowing network ++# packets to be sent or received. ++# Please do not disable this setting. It is expected to be standard in ++# future releases of pppd. Use the call option (see manpage) to disable ++# authentication for specific peers. ++#auth ++ ++# authentication can either be pap or chap. As most people only want to ++# use pap, you can also disable chap: ++#require-pap ++#refuse-chap ++ ++# Use hardware flow control (i.e. RTS/CTS) to control the flow of data ++# on the serial port. ++crtscts ++ ++# Specifies that pppd should use a UUCP-style lock on the serial device ++# to ensure exclusive access to the device. ++lock ++ ++# Use the modem control lines. ++modem ++ ++# async character map -- 32-bit hex; each bit is a character ++# that needs to be escaped for pppd to receive it. 0x00000001 ++# represents '\x01', and 0x80000000 represents '\x1f'. ++# To allow pppd to work over a rlogin/telnet connection, ou should escape ++# XON (^Q), XOFF (^S) and ^]: (The peer should use "escape ff".) ++#asyncmap 200a0000 ++asyncmap 0 ++ ++# Specifies that certain characters should be escaped on transmission ++# (regardless of whether the peer requests them to be escaped with its ++# async control character map). The characters to be escaped are ++# specified as a list of hex numbers separated by commas. Note that ++# almost any character can be specified for the escape option, unlike ++# the asyncmap option which only allows control characters to be ++# specified. The characters which may not be escaped are those with hex ++# values 0x20 - 0x3f or 0x5e. ++#escape 11,13,ff ++ ++# Set the MRU [Maximum Receive Unit] value to for negotiation. pppd ++# will ask the peer to send packets of no more than bytes. The ++# minimum MRU value is 128. The default MRU value is 1500. A value of ++# 296 is recommended for slow links (40 bytes for TCP/IP header + 256 ++# bytes of data). ++#mru 542 ++ ++# Set the MTU [Maximum Transmit Unit] value to . Unless the peer ++# requests a smaller value via MRU negotiation, pppd will request that ++# the kernel networking code send data packets of no more than n bytes ++# through the PPP network interface. ++#mtu ++ ++# Set the interface netmask to , a 32 bit netmask in "decimal dot" ++# notation (e.g. 255.255.255.0). ++#netmask 255.255.255.0 ++ ++# Don't fork to become a background process (otherwise pppd will do so ++# if a serial device is specified). ++nodetach ++ ++# Set the assumed name of the remote system for authentication purposes ++# to . ++#remotename ++ ++# Add an entry to this system's ARP [Address Resolution Protocol] ++# table with the IP address of the peer and the Ethernet address of this ++# system. {proxyarp,noproxyarp} ++proxyarp ++ ++# Use the system password database for authenticating the peer using ++# PAP. Note: mgetty already provides this option. If this is specified ++# then dialin from users using a script under Linux to fire up ppp wont work. ++#login ++ ++# If this option is given, pppd will send an LCP echo-request frame to ++# the peer every n seconds. Under Linux, the echo-request is sent when ++# no packets have been received from the peer for n seconds. Normally ++# the peer should respond to the echo-request by sending an echo-reply. ++# This option can be used with the lcp-echo-failure option to detect ++# that the peer is no longer connected. ++lcp-echo-interval 30 ++ ++# If this option is given, pppd will presume the peer to be dead if n ++# LCP echo-requests are sent without receiving a valid LCP echo-reply. ++# If this happens, pppd will terminate the connection. Use of this ++# option requires a non-zero value for the lcp-echo-interval parameter. ++# This option can be used to enable pppd to terminate after the physical ++# connection has been broken (e.g., the modem has hung up) in ++# situations where no hardware modem control lines are available. ++lcp-echo-failure 4 ++ ++# Specifies that pppd should disconnect if the link is idle for n seconds. ++idle 600 ++ ++# Disable the IPXCP and IPX protocols. ++noipx ++ ++# ------ +--- ppp-2.3.3/sample/options.ttyXX.sample Tue Jan 6 17:53:27 1998 ++++ ppp-2.3.3/sample/options.ttyXX Tue Jan 6 17:53:27 1998 +@@ -0,0 +1,14 @@ ++# If you need to set up multiple serial lines then copy this file to ++# options. for each tty with a modem on it. ++# ++# The options.tty file will assign an IP address to each PPP connection ++# as it comes up. They must all be distinct! ++# ++# Example: ++# options.ttyS1 for com2 under DOS. ++# ++# Edit the following line so that the first IP address ++# mentioned is the ip address of the serial port while the second ++# is the IP address of your host ++# ++hostname-s1:hostname +--- ppp-2.3.3/sample/pap-secrets.sample Tue Jan 6 17:53:27 1998 ++++ ppp-2.3.3/sample/pap-secrets Tue Jan 6 17:53:27 1998 +@@ -0,0 +1,28 @@ ++# Secrets for authentication using PAP ++# client server secret IP addresses ++ ++# OUTBOUND CONNECTIONS ++# Here you should add your userid password to connect to your providers via ++# pap. The * means that the password is to be used for ANY host you connect ++# to. Thus you do not have to worry about the foreign machine name. Just ++# replace password with your password. ++# If you have different providers with different passwords then you better ++# remove the following line. ++#hostname * password ++ ++# INBOUND CONNECTIONS ++#client hostname 192.168.1.1 ++ ++# If you add "auth login -chap +pap" to /etc/mgetty+sendfax/login.config, ++# all users in /etc/passwd can use their password for pap-authentication. ++# ++# Every regular user can use PPP and has to use passwords from /etc/passwd ++#* hostname "" ++# UserIDs that cannot use PPP at all. Check your /etc/passwd and add any ++# other accounts that should not be able to use pppd! Replace hostname ++# with your local hostname. ++#guest hostname "*" - ++#master hostname "*" - ++#root hostname "*" - ++#support hostname "*" - ++#stats hostname "*" - diff --git a/network/connection/ppp/files/ppp-2.4.2-change_resolv_conf.patch b/network/connection/ppp/files/ppp-2.4.2-change_resolv_conf.patch new file mode 100644 index 0000000000..9674f1af74 --- /dev/null +++ b/network/connection/ppp/files/ppp-2.4.2-change_resolv_conf.patch @@ -0,0 +1,61 @@ +diff -urNp --exclude-from=/mdomsch2/excludes --minimal ppp-2.4.3.orig/pppd/pppd.8 ppp-2.4.3/pppd/pppd.8 +--- ppp-2.4.3.orig/pppd/pppd.8 2004-11-13 06:22:49.000000000 -0600 ++++ ppp-2.4.3/pppd/pppd.8 2005-08-03 22:10:34.000000000 -0500 +@@ -1035,7 +1035,7 @@ Ask the peer for up to 2 DNS server addr + by the peer (if any) are passed to the /etc/ppp/ip\-up script in the + environment variables DNS1 and DNS2, and the environment variable + USEPEERDNS will be set to 1. In addition, pppd will create an +-/etc/ppp/resolv.conf file containing one or two nameserver lines with ++/run/ppp/resolv.conf file containing one or two nameserver lines with + the address(es) supplied by the peer. + .TP + .B user \fIname +--- ppp-2.4.2/scripts/ip-down.local.add.change_resolv_conf 1999-02-27 05:32:42.000000000 +0100 ++++ ppp-2.4.2/scripts/ip-down.local.add 2004-09-14 14:36:20.058008752 +0200 +@@ -9,12 +9,13 @@ + # + # Nick Walker (nickwalker@email.com) + # ++. /etc/sysconfig/network-scripts/network-functions + +-if [ -n "$USEPEERDNS" -a -f /etc/ppp/resolv.conf ]; then +- if [ -f /etc/ppp/resolv.prev ]; then +- cp -f /etc/ppp/resolv.prev /etc/resolv.conf ++if [ -n "$USEPEERDNS" -a -f /run/ppp/resolv.conf ]; then ++ if [ -f /run/ppp/resolv.prev ]; then ++ change_resolv_conf /run/ppp/resolv.prev + else +- rm -f /etc/resolv.conf ++ change_resolv_conf + fi + fi + +--- ppp-2.4.2/scripts/ip-up.local.add.change_resolv_conf 1999-11-15 04:28:10.000000000 +0100 ++++ ppp-2.4.2/scripts/ip-up.local.add 2004-09-14 14:37:39.129061828 +0200 +@@ -9,16 +9,19 @@ + # + # Nick Walker (nickwalker@email.com) + # ++. /etc/sysconfig/network-scripts/network-functions + +-if [ -n "$USEPEERDNS" -a -f /etc/ppp/resolv.conf ]; then +- rm -f /etc/ppp/resolv.prev ++if [ -n "$USEPEERDNS" -a -f /run/ppp/resolv.conf ]; then ++ rm -f /run/ppp/resolv.prev + if [ -f /etc/resolv.conf ]; then +- cp /etc/resolv.conf /etc/ppp/resolv.prev +- grep domain /etc/ppp/resolv.prev > /etc/resolv.conf +- grep search /etc/ppp/resolv.prev >> /etc/resolv.conf +- cat /etc/ppp/resolv.conf >> /etc/resolv.conf ++ cp /etc/resolv.conf /run/ppp/resolv.prev ++ rscf=/run/ppp/resolv.new ++ grep domain /run/ppp/resolv.prev > $rscf ++ grep search /run/ppp/resolv.prev >> $rscf ++ change_resolv_conf $rscf ++ rm -f $rscf + else +- cp /etc/ppp/resolv.conf /etc ++ change_resolv_conf /run/ppp/resolv.conf + fi + fi + diff --git a/network/connection/ppp/files/ppp-2.4.3-fix64.patch b/network/connection/ppp/files/ppp-2.4.3-fix64.patch new file mode 100644 index 0000000000..8a2c794d14 --- /dev/null +++ b/network/connection/ppp/files/ppp-2.4.3-fix64.patch @@ -0,0 +1,10 @@ +--- ppp-2.4.3/pppd/sha1.c.fix64 2004-10-25 01:28:02.000000000 +0200 ++++ ppp-2.4.3/pppd/sha1.c 2004-11-22 16:44:16.850768926 +0100 +@@ -18,6 +18,7 @@ + + #include + #include /* htonl() */ ++#include /* u_int32_t */ + #include + #include "sha1.h" + diff --git a/network/connection/ppp/files/ppp-2.4.3-ipv6-accept-remote.patch b/network/connection/ppp/files/ppp-2.4.3-ipv6-accept-remote.patch new file mode 100644 index 0000000000..2bc82338cd --- /dev/null +++ b/network/connection/ppp/files/ppp-2.4.3-ipv6-accept-remote.patch @@ -0,0 +1,40 @@ +--- ppp-2.4.3/pppd/ipv6cp.c~ 2005-11-04 09:40:10.000000000 +0000 ++++ ppp-2.4.3/pppd/ipv6cp.c 2005-11-04 10:20:14.000000000 +0000 +@@ -235,6 +235,8 @@ static option_t ipv6cp_option_list[] = { + + { "ipv6cp-accept-local", o_bool, &ipv6cp_allowoptions[0].accept_local, + "Accept peer's interface identifier for us", 1 }, ++ { "ipv6cp-accept-remote", o_bool, &ipv6cp_allowoptions[0].accept_remote, ++ "Accept peer's interface identifier for itself", 1 }, + + { "ipv6cp-use-ipaddr", o_bool, &ipv6cp_allowoptions[0].use_ip, + "Use (default) IPv4 address as interface identifier", 1 }, +@@ -427,6 +429,7 @@ ipv6cp_init(unit) + memset(ao, 0, sizeof(*ao)); + + wo->accept_local = 1; ++ wo->accept_remote = 1; + wo->neg_ifaceid = 1; + ao->neg_ifaceid = 1; + +@@ -952,7 +955,7 @@ ipv6cp_reqci(f, inp, len, reject_if_disa + orc = CONFREJ; /* Reject CI */ + break; + } +- if (!eui64_iszero(wo->hisid) && ++ if (!eui64_iszero(wo->hisid) && !wo->accept_remote && + !eui64_equals(ifaceid, wo->hisid) && + eui64_iszero(go->hisid)) { + +--- ppp-2.4.3/pppd/ipv6cp.h~ 2002-12-04 23:03:32.000000000 +0000 ++++ ppp-2.4.3/pppd/ipv6cp.h 2005-11-04 10:20:55.000000000 +0000 +@@ -150,7 +150,8 @@ + typedef struct ipv6cp_options { + int neg_ifaceid; /* Negotiate interface identifier? */ + int req_ifaceid; /* Ask peer to send interface identifier? */ +- int accept_local; /* accept peer's value for iface id? */ ++ int accept_local; /* accept peer's value for our iface id? */ ++ int accept_remote; /* accept peer's value for his iface id? */ + int opt_local; /* ourtoken set by option */ + int opt_remote; /* histoken set by option */ + int use_ip; /* use IP as interface identifier */ diff --git a/network/connection/ppp/files/ppp-2.4.3-local.patch b/network/connection/ppp/files/ppp-2.4.3-local.patch new file mode 100644 index 0000000000..3288cba223 --- /dev/null +++ b/network/connection/ppp/files/ppp-2.4.3-local.patch @@ -0,0 +1,68 @@ +diff -up ppp-2.4.4/configure.local ppp-2.4.4/configure +--- ppp-2.4.4/configure.local 2005-07-08 20:23:05.000000000 -0400 ++++ ppp-2.4.4/configure 2008-08-28 17:38:04.000000000 -0400 +@@ -2,7 +2,7 @@ + # $Id: configure,v 1.38 2008/06/15 07:08:49 paulus Exp $ + + # Where to install stuff by default +-DESTDIR=/usr/local ++DESTDIR=/usr + SYSCONF=/etc + + # if [ -d /NextApps ]; then +diff -up ppp-2.4.4/pppd/Makefile.linux.local ppp-2.4.4/pppd/Makefile.linux +--- ppp-2.4.4/pppd/Makefile.linux.local 2008-08-28 17:37:33.000000000 -0400 ++++ ppp-2.4.4/pppd/Makefile.linux 2008-08-28 17:37:33.000000000 -0400 +@@ -97,8 +97,8 @@ endif + + # EAP SRP-SHA1 + ifdef USE_SRP +-CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include +-LIBS += -lsrp -L/usr/local/ssl/lib -lcrypto ++CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/include/openssl ++LIBS += -lsrp -L/usr/lib -lcrypto + TARGETS += srp-entry + EXTRAINSTALL = $(INSTALL) -c -m 555 srp-entry $(BINDIR)/srp-entry + MANPAGES += srp-entry.8 +diff -up ppp-2.4.4/scripts/ppp-on-rsh.local ppp-2.4.4/scripts/ppp-on-rsh +--- ppp-2.4.4/scripts/ppp-on-rsh.local 2000-04-15 05:49:28.000000000 -0400 ++++ ppp-2.4.4/scripts/ppp-on-rsh 2008-08-28 17:37:33.000000000 -0400 +@@ -26,7 +26,7 @@ PPPD_RHOST=myremotehost + # For this example, we assume that pppd on both local and remote + # machines reside in the same place, /usr/local/bin/pppd + # +-PPPD_LOC=/usr/local/bin/pppd ++PPPD_LOC=/usr/sbin/pppd + + # + # The location of local options file (where rsh client is running). +diff -up ppp-2.4.4/scripts/ppp-on-ssh.local ppp-2.4.4/scripts/ppp-on-ssh +--- ppp-2.4.4/scripts/ppp-on-ssh.local 2000-04-15 05:49:42.000000000 -0400 ++++ ppp-2.4.4/scripts/ppp-on-ssh 2008-08-28 17:37:33.000000000 -0400 +@@ -26,7 +26,7 @@ PPPD_RHOST=myremotehost + # For this example, we assume that pppd on both local and remote + # machines reside in the same place, /usr/local/bin/pppd + # +-PPPD_LOC=/usr/local/bin/pppd ++PPPD_LOC=/usr/sbin/pppd + + # + # The location of local options file (where ssh client is running). +@@ -52,7 +52,7 @@ PPPD_REM_OPT=/etc/ppp/options-ssh-rem + # + # The location of ssh client on the local machine + # +-SSH_LOC=/usr/local/bin/ssh ++SSH_LOC=/usr/bin/ssh + + export PPPD_LOC PPPD_LOC_OPT PPPD_REM_OPT PPPD_RHOST SSH_LOC + +diff -up ppp-2.4.4/scripts/secure-card.local ppp-2.4.4/scripts/secure-card +--- ppp-2.4.4/scripts/secure-card.local 2004-02-01 22:36:46.000000000 -0500 ++++ ppp-2.4.4/scripts/secure-card 2008-08-28 17:37:33.000000000 -0400 +@@ -1,4 +1,4 @@ +-#!/usr/local/bin/expect -f ++#!/usr/bin/expect -f + # + # This script was written by Jim Isaacson . It is + # designed to work as a script to use the SecureCARD(tm) device. This diff --git a/network/connection/ppp/files/ppp-2.4.5-ppp_resolv.patch b/network/connection/ppp/files/ppp-2.4.5-ppp_resolv.patch new file mode 100644 index 0000000000..f0cc7c63a3 --- /dev/null +++ b/network/connection/ppp/files/ppp-2.4.5-ppp_resolv.patch @@ -0,0 +1,13 @@ +diff -up ppp-2.4.5/scripts/ip-up.local.add.ppp_resolv ppp-2.4.5/scripts/ip-up.local.add +--- ppp-2.4.5/scripts/ip-up.local.add.ppp_resolv 2010-07-13 10:29:23.227943994 +0200 ++++ ppp-2.4.5/scripts/ip-up.local.add 2010-07-13 10:32:27.729695487 +0200 +@@ -18,6 +18,9 @@ if [ -n "$USEPEERDNS" -a -f /run/ppp + rscf=/run/ppp/resolv.new + grep domain /run/ppp/resolv.prev > $rscf + grep search /run/ppp/resolv.prev >> $rscf ++ if [ -f /run/ppp/resolv.conf ]; then ++ cat /run/ppp/resolv.conf >> $rscf ++ fi + change_resolv_conf $rscf + rm -f $rscf + else diff --git a/network/connection/ppp/files/ppp-2.4.5-var_run_ppp.patch b/network/connection/ppp/files/ppp-2.4.5-var_run_ppp.patch new file mode 100644 index 0000000000..5caca49615 --- /dev/null +++ b/network/connection/ppp/files/ppp-2.4.5-var_run_ppp.patch @@ -0,0 +1,30 @@ +diff -up ppp-2.4.5/pppd/pathnames.h.var_run_ppp ppp-2.4.5/pppd/pathnames.h +--- ppp-2.4.5/pppd/pathnames.h.var_run_ppp 2010-02-12 16:36:14.479362718 +0100 ++++ ppp-2.4.5/pppd/pathnames.h 2010-02-12 16:38:24.995330994 +0100 +@@ -7,9 +7,13 @@ + #ifdef HAVE_PATHS_H + #include + ++#define _SUBPATH_PPP "ppp/" + #else /* HAVE_PATHS_H */ + #ifndef _PATH_VARRUN + #define _PATH_VARRUN "/etc/ppp/" ++#define _SUBPATH_PPP ++#else ++#define _SUBPATH_PPP "ppp/" + #endif + #define _PATH_DEVNULL "/dev/null" + #endif /* HAVE_PATHS_H */ +@@ -46,10 +50,10 @@ + #endif /* IPX_CHANGE */ + + #ifdef __STDC__ +-#define _PATH_PPPDB _ROOT_PATH _PATH_VARRUN "pppd2.tdb" ++#define _PATH_PPPDB _ROOT_PATH _PATH_VARRUN _SUBPATH_PPP "pppd2.tdb" + #else /* __STDC__ */ + #ifdef HAVE_PATHS_H +-#define _PATH_PPPDB "/var/run/pppd2.tdb" ++#define _PATH_PPPDB "/run/ppp/pppd2.tdb" + #else + #define _PATH_PPPDB "/etc/ppp/pppd2.tdb" + #endif diff --git a/network/connection/ppp/files/ppp-2.4.6-eaptls-mppe-0.99.patch b/network/connection/ppp/files/ppp-2.4.6-eaptls-mppe-0.99.patch new file mode 100644 index 0000000000..2fb48bd572 --- /dev/null +++ b/network/connection/ppp/files/ppp-2.4.6-eaptls-mppe-0.99.patch @@ -0,0 +1,2919 @@ +diff -Naur ppp-2.4.5/etc.ppp/eaptls-client ppp-2.4.5-eaptls-mppe-0.99/etc.ppp/eaptls-client +--- ppp-2.4.5/etc.ppp/eaptls-client 1970-01-01 01:00:00.000000000 +0100 ++++ ppp-2.4.5-eaptls-mppe-0.99/etc.ppp/eaptls-client 2010-10-01 15:17:54.205272328 +0200 +@@ -0,0 +1,10 @@ ++# Parameters for authentication using EAP-TLS (client) ++ ++# client name (can be *) ++# server name (can be *) ++# client certificate file (required) ++# server certificate file (optional, if unused put '-') ++# CA certificate file (required) ++# client private key file (required) ++ ++#client server /root/cert/client.crt - /root/cert/ca.crt /root/cert/client.key +diff -Naur ppp-2.4.5/etc.ppp/eaptls-server ppp-2.4.5-eaptls-mppe-0.99/etc.ppp/eaptls-server +--- ppp-2.4.5/etc.ppp/eaptls-server 1970-01-01 01:00:00.000000000 +0100 ++++ ppp-2.4.5-eaptls-mppe-0.99/etc.ppp/eaptls-server 2010-10-01 15:17:54.205272328 +0200 +@@ -0,0 +1,11 @@ ++# Parameters for authentication using EAP-TLS (server) ++ ++# client name (can be *) ++# server name (can be *) ++# client certificate file (optional, if unused put '-') ++# server certificate file (required) ++# CA certificate file (required) ++# server private key file (required) ++# allowed addresses (required, can be *) ++ ++#client server - /root/cert/server.crt /root/cert/ca.crt /root/cert/server.key 192.168.1.0/24 +diff -Naur ppp-2.4.5/etc.ppp/openssl.cnf ppp-2.4.5-eaptls-mppe-0.99/etc.ppp/openssl.cnf +--- ppp-2.4.5/etc.ppp/openssl.cnf 1970-01-01 01:00:00.000000000 +0100 ++++ ppp-2.4.5-eaptls-mppe-0.99/etc.ppp/openssl.cnf 2010-10-01 15:17:54.206272162 +0200 +@@ -0,0 +1,14 @@ ++openssl_conf = openssl_def ++ ++[ openssl_def ] ++engines = engine_section ++ ++[ engine_section ] ++pkcs11 = pkcs11_section ++ ++[ pkcs11_section ] ++engine_id = pkcs11 ++dynamic_path = /usr/lib64/openssl/engines/engine_pkcs11.so ++MODULE_PATH = /usr/lib64/libeTPkcs11.so ++init = 0 ++ +diff -aur ppp-2.4.6.orig/linux/Makefile.top ppp-2.4.6/linux/Makefile.top +--- ppp-2.4.6.orig/linux/Makefile.top 2014-01-02 05:42:08.000000000 +0100 ++++ ppp-2.4.6/linux/Makefile.top 2014-04-03 21:32:29.076627151 +0200 +@@ -26,7 +26,7 @@ + cd pppdump; $(MAKE) $(MFLAGS) install + + install-etcppp: $(ETCDIR) $(ETCDIR)/options $(ETCDIR)/pap-secrets \ +- $(ETCDIR)/chap-secrets ++ $(ETCDIR)/chap-secrets $(ETCDIR)/eaptls-server $(ETCDIR)/eaptls-client + + install-devel: + cd pppd; $(MAKE) $(MFLAGS) install-devel +@@ -37,6 +37,10 @@ + $(INSTALL) -c -m 600 etc.ppp/pap-secrets $@ + $(ETCDIR)/chap-secrets: + $(INSTALL) -c -m 600 etc.ppp/chap-secrets $@ ++$(ETCDIR)/eaptls-server: ++ $(INSTALL) -c -m 600 etc.ppp/eaptls-server $@ ++$(ETCDIR)/eaptls-client: ++ $(INSTALL) -c -m 600 etc.ppp/eaptls-client $@ + + $(BINDIR): + $(INSTALL) -d -m 755 $@ +diff -aur ppp-2.4.6.orig/pppd/auth.c ppp-2.4.6/pppd/auth.c +--- ppp-2.4.6.orig/pppd/auth.c 2014-04-03 21:31:37.000000000 +0200 ++++ ppp-2.4.6/pppd/auth.c 2014-04-03 21:32:29.076627151 +0200 +@@ -109,6 +109,9 @@ + #include "upap.h" + #include "chap-new.h" + #include "eap.h" ++#ifdef USE_EAPTLS ++#include "eap-tls.h" ++#endif + #ifdef CBCP_SUPPORT + #include "cbcp.h" + #endif +@@ -183,6 +186,12 @@ + /* Hook for a plugin to get the CHAP password for authenticating us */ + int (*chap_passwd_hook) __P((char *user, char *passwd)) = NULL; + ++#ifdef USE_EAPTLS ++/* Hook for a plugin to get the EAP-TLS password for authenticating us */ ++int (*eaptls_passwd_hook) __P((char *user, char *passwd)) = NULL; ++int (*eaptls_check_hook) __P((void)) = NULL; ++#endif ++ + /* Hook for a plugin to say whether it is OK if the peer + refuses to authenticate. */ + int (*null_auth_hook) __P((struct wordlist **paddrs, +@@ -238,6 +247,13 @@ + bool explicit_user = 0; /* Set if "user" option supplied */ + bool explicit_passwd = 0; /* Set if "password" option supplied */ + char remote_name[MAXNAMELEN]; /* Peer's name for authentication */ ++#ifdef USE_EAPTLS ++char *cacert_file = NULL; /* CA certificate file (pem format) */ ++char *cert_file = NULL; /* client certificate file (pem format) */ ++char *privkey_file = NULL; /* client private key file (pem format) */ ++char *crl_dir = NULL; /* directory containing CRL files */ ++bool need_peer_eap = 0; /* Require peer to authenticate us */ ++#endif + + static char *uafname; /* name of most recent +ua file */ + +@@ -254,6 +270,19 @@ + static int have_chap_secret __P((char *, char *, int, int *)); + static int have_srp_secret __P((char *client, char *server, int need_ip, + int *lacks_ipp)); ++ ++#ifdef USE_EAPTLS ++static int have_eaptls_secret_server ++__P((char *client, char *server, int need_ip, int *lacks_ipp)); ++static int have_eaptls_secret_client __P((char *client, char *server)); ++static int scan_authfile_eaptls __P((FILE * f, char *client, char *server, ++ char *cli_cert, char *serv_cert, ++ char *ca_cert, char *pk, ++ struct wordlist ** addrs, ++ struct wordlist ** opts, ++ char *filename, int flags)); ++#endif ++ + static int ip_addr_check __P((u_int32_t, struct permitted_ip *)); + static int scan_authfile __P((FILE *, char *, char *, char *, + struct wordlist **, struct wordlist **, +@@ -401,6 +430,14 @@ + "Set telephone number(s) which are allowed to connect", + OPT_PRIV | OPT_A2LIST }, + ++#ifdef USE_EAPTLS ++ { "ca", o_string, &cacert_file, "EAP-TLS CA certificate in PEM format" }, ++ { "cert", o_string, &cert_file, "EAP-TLS client certificate in PEM format" }, ++ { "key", o_string, &privkey_file, "EAP-TLS client private key in PEM format" }, ++ { "crl-dir", o_string, &crl_dir, "Use CRLs in directory" }, ++ { "need-peer-eap", o_bool, &need_peer_eap, ++ "Require the peer to authenticate us", 1 }, ++#endif /* USE_EAPTLS */ + { NULL } + }; + +@@ -730,6 +767,9 @@ + lcp_options *wo = &lcp_wantoptions[unit]; + lcp_options *go = &lcp_gotoptions[unit]; + lcp_options *ho = &lcp_hisoptions[unit]; ++#ifdef USE_EAPTLS ++ lcp_options *ao = &lcp_allowoptions[unit]; ++#endif + int i; + struct protent *protp; + +@@ -764,6 +804,22 @@ + } + } + ++#ifdef USE_EAPTLS ++ if (need_peer_eap && !ao->neg_eap) { ++ warn("eap required to authenticate us but no suitable secrets"); ++ lcp_close(unit, "couldn't negotiate eap"); ++ status = EXIT_AUTH_TOPEER_FAILED; ++ return; ++ } ++ ++ if (need_peer_eap && !ho->neg_eap) { ++ warn("peer doesn't want to authenticate us with eap"); ++ lcp_close(unit, "couldn't negotiate eap"); ++ status = EXIT_PEER_AUTH_FAILED; ++ return; ++ } ++#endif ++ + new_phase(PHASE_AUTHENTICATE); + auth = 0; + if (go->neg_eap) { +@@ -1281,6 +1337,15 @@ + our_name, 1, &lacks_ip); + } + ++#ifdef USE_EAPTLS ++ if (!can_auth && wo->neg_eap) { ++ can_auth = ++ have_eaptls_secret_server((explicit_remote ? remote_name : ++ NULL), our_name, 1, &lacks_ip); ++ ++ } ++#endif ++ + if (auth_required && !can_auth && noauth_addrs == NULL) { + if (default_auth) { + option_error( +@@ -1335,7 +1400,11 @@ + passwd[0] != 0 || + (hadchap == 1 || (hadchap == -1 && have_chap_secret(user, + (explicit_remote? remote_name: NULL), 0, NULL))) || +- have_srp_secret(user, (explicit_remote? remote_name: NULL), 0, NULL)); ++ have_srp_secret(user, (explicit_remote? remote_name: NULL), 0, NULL) ++#ifdef USE_EAPTLS ++ || have_eaptls_secret_client(user, (explicit_remote? remote_name: NULL)) ++#endif ++ ); + + hadchap = -1; + if (go->neg_upap && !uselogin && !have_pap_secret(NULL)) +@@ -1350,8 +1419,14 @@ + !have_chap_secret((explicit_remote? remote_name: NULL), our_name, + 1, NULL))) && + !have_srp_secret((explicit_remote? remote_name: NULL), our_name, 1, +- NULL)) ++ NULL) ++#ifdef USE_EAPTLS ++ && !have_eaptls_secret_server((explicit_remote? remote_name: NULL), ++ our_name, 1, NULL) ++#endif ++ ) + go->neg_eap = 0; ++ + } + + +@@ -1711,6 +1786,7 @@ + } + + ++ + /* + * get_secret - open the CHAP secret file and return the secret + * for authenticating the given client on the given server. +@@ -2367,3 +2443,335 @@ + else + auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL, 0); + } ++ ++ ++#ifdef USE_EAPTLS ++static int ++have_eaptls_secret_server(client, server, need_ip, lacks_ipp) ++ char *client; ++ char *server; ++ int need_ip; ++ int *lacks_ipp; ++{ ++ FILE *f; ++ int ret; ++ char *filename; ++ struct wordlist *addrs; ++ char servcertfile[MAXWORDLEN]; ++ char clicertfile[MAXWORDLEN]; ++ char cacertfile[MAXWORDLEN]; ++ char pkfile[MAXWORDLEN]; ++ ++ filename = _PATH_EAPTLSSERVFILE; ++ f = fopen(filename, "r"); ++ if (f == NULL) ++ return 0; ++ ++ if (client != NULL && client[0] == 0) ++ client = NULL; ++ else if (server != NULL && server[0] == 0) ++ server = NULL; ++ ++ ret = ++ scan_authfile_eaptls(f, client, server, clicertfile, servcertfile, ++ cacertfile, pkfile, &addrs, NULL, filename, ++ 0); ++ ++ fclose(f); ++ ++/* ++ if (ret >= 0 && !eaptls_init_ssl(1, cacertfile, servcertfile, ++ clicertfile, pkfile)) ++ ret = -1; ++*/ ++ ++ if (ret >= 0 && need_ip && !some_ip_ok(addrs)) { ++ if (lacks_ipp != 0) ++ *lacks_ipp = 1; ++ ret = -1; ++ } ++ if (addrs != 0) ++ free_wordlist(addrs); ++ ++ return ret >= 0; ++} ++ ++ ++static int ++have_eaptls_secret_client(client, server) ++ char *client; ++ char *server; ++{ ++ FILE *f; ++ int ret; ++ char *filename; ++ struct wordlist *addrs = NULL; ++ char servcertfile[MAXWORDLEN]; ++ char clicertfile[MAXWORDLEN]; ++ char cacertfile[MAXWORDLEN]; ++ char pkfile[MAXWORDLEN]; ++ ++ if (client != NULL && client[0] == 0) ++ client = NULL; ++ else if (server != NULL && server[0] == 0) ++ server = NULL; ++ ++ if (cacert_file && cert_file && privkey_file) ++ return 1; ++ ++ filename = _PATH_EAPTLSCLIFILE; ++ f = fopen(filename, "r"); ++ if (f == NULL) ++ return 0; ++ ++ ret = ++ scan_authfile_eaptls(f, client, server, clicertfile, servcertfile, ++ cacertfile, pkfile, &addrs, NULL, filename, ++ 0); ++ fclose(f); ++ ++/* ++ if (ret >= 0 && !eaptls_init_ssl(0, cacertfile, clicertfile, ++ servcertfile, pkfile)) ++ ret = -1; ++*/ ++ ++ if (addrs != 0) ++ free_wordlist(addrs); ++ ++ return ret >= 0; ++} ++ ++ ++static int ++scan_authfile_eaptls(f, client, server, cli_cert, serv_cert, ca_cert, pk, ++ addrs, opts, filename, flags) ++ FILE *f; ++ char *client; ++ char *server; ++ char *cli_cert; ++ char *serv_cert; ++ char *ca_cert; ++ char *pk; ++ struct wordlist **addrs; ++ struct wordlist **opts; ++ char *filename; ++ int flags; ++{ ++ int newline; ++ int got_flag, best_flag; ++ struct wordlist *ap, *addr_list, *alist, **app; ++ char word[MAXWORDLEN]; ++ ++ if (addrs != NULL) ++ *addrs = NULL; ++ if (opts != NULL) ++ *opts = NULL; ++ addr_list = NULL; ++ if (!getword(f, word, &newline, filename)) ++ return -1; /* file is empty??? */ ++ newline = 1; ++ best_flag = -1; ++ for (;;) { ++ /* ++ * Skip until we find a word at the start of a line. ++ */ ++ while (!newline && getword(f, word, &newline, filename)); ++ if (!newline) ++ break; /* got to end of file */ ++ ++ /* ++ * Got a client - check if it's a match or a wildcard. ++ */ ++ got_flag = 0; ++ if (client != NULL && strcmp(word, client) != 0 && !ISWILD(word)) { ++ newline = 0; ++ continue; ++ } ++ if (!ISWILD(word)) ++ got_flag = NONWILD_CLIENT; ++ ++ /* ++ * Now get a server and check if it matches. ++ */ ++ if (!getword(f, word, &newline, filename)) ++ break; ++ if (newline) ++ continue; ++ if (!ISWILD(word)) { ++ if (server != NULL && strcmp(word, server) != 0) ++ continue; ++ got_flag |= NONWILD_SERVER; ++ } ++ ++ /* ++ * Got some sort of a match - see if it's better than what ++ * we have already. ++ */ ++ if (got_flag <= best_flag) ++ continue; ++ ++ /* ++ * Get the cli_cert ++ */ ++ if (!getword(f, word, &newline, filename)) ++ break; ++ if (newline) ++ continue; ++ if (strcmp(word, "-") != 0) { ++ strlcpy(cli_cert, word, MAXWORDLEN); ++ } else ++ cli_cert[0] = 0; ++ ++ /* ++ * Get serv_cert ++ */ ++ if (!getword(f, word, &newline, filename)) ++ break; ++ if (newline) ++ continue; ++ if (strcmp(word, "-") != 0) { ++ strlcpy(serv_cert, word, MAXWORDLEN); ++ } else ++ serv_cert[0] = 0; ++ ++ /* ++ * Get ca_cert ++ */ ++ if (!getword(f, word, &newline, filename)) ++ break; ++ if (newline) ++ continue; ++ strlcpy(ca_cert, word, MAXWORDLEN); ++ ++ /* ++ * Get pk ++ */ ++ if (!getword(f, word, &newline, filename)) ++ break; ++ if (newline) ++ continue; ++ strlcpy(pk, word, MAXWORDLEN); ++ ++ ++ /* ++ * Now read address authorization info and make a wordlist. ++ */ ++ app = &alist; ++ for (;;) { ++ if (!getword(f, word, &newline, filename) || newline) ++ break; ++ ap = (struct wordlist *) ++ malloc(sizeof(struct wordlist) + strlen(word) + 1); ++ if (ap == NULL) ++ novm("authorized addresses"); ++ ap->word = (char *) (ap + 1); ++ strcpy(ap->word, word); ++ *app = ap; ++ app = &ap->next; ++ } ++ *app = NULL; ++ /* ++ * This is the best so far; remember it. ++ */ ++ best_flag = got_flag; ++ if (addr_list) ++ free_wordlist(addr_list); ++ addr_list = alist; ++ ++ if (!newline) ++ break; ++ } ++ ++ /* scan for a -- word indicating the start of options */ ++ for (app = &addr_list; (ap = *app) != NULL; app = &ap->next) ++ if (strcmp(ap->word, "--") == 0) ++ break; ++ /* ap = start of options */ ++ if (ap != NULL) { ++ ap = ap->next; /* first option */ ++ free(*app); /* free the "--" word */ ++ *app = NULL; /* terminate addr list */ ++ } ++ if (opts != NULL) ++ *opts = ap; ++ else if (ap != NULL) ++ free_wordlist(ap); ++ if (addrs != NULL) ++ *addrs = addr_list; ++ else if (addr_list != NULL) ++ free_wordlist(addr_list); ++ ++ return best_flag; ++} ++ ++ ++int ++get_eaptls_secret(unit, client, server, clicertfile, servcertfile, ++ cacertfile, pkfile, am_server) ++ int unit; ++ char *client; ++ char *server; ++ char *clicertfile; ++ char *servcertfile; ++ char *cacertfile; ++ char *pkfile; ++ int am_server; ++{ ++ FILE *fp; ++ int ret; ++ char *filename = NULL; ++ struct wordlist *addrs = NULL; ++ struct wordlist *opts = NULL; ++ ++ /* in client mode the ca+cert+privkey can also be specified as options */ ++ if (!am_server && cacert_file && cert_file && privkey_file ) ++ { ++ strlcpy( clicertfile, cert_file, MAXWORDLEN ); ++ strlcpy( cacertfile, cacert_file, MAXWORDLEN ); ++ strlcpy( pkfile, privkey_file, MAXWORDLEN ); ++ servcertfile[0] = '\0'; ++ } ++ else ++ { ++ filename = (am_server ? _PATH_EAPTLSSERVFILE : _PATH_EAPTLSCLIFILE); ++ addrs = NULL; ++ ++ fp = fopen(filename, "r"); ++ if (fp == NULL) ++ { ++ error("Can't open eap-tls secret file %s: %m", filename); ++ return 0; ++ } ++ ++ check_access(fp, filename); ++ ++ ret = scan_authfile_eaptls(fp, client, server, clicertfile, servcertfile, ++ cacertfile, pkfile, &addrs, &opts, filename, 0); ++ ++ fclose(fp); ++ ++ if (ret < 0) return 0; ++ } ++ ++ if (eaptls_passwd_hook) ++ { ++ dbglog( "Calling eaptls password hook" ); ++ if ( (*eaptls_passwd_hook)(pkfile, passwd) < 0) ++ { ++ error("Unable to obtain EAP-TLS password for %s (%s) from plugin", ++ client, pkfile); ++ return 0; ++ } ++ } ++ if (am_server) ++ set_allowed_addrs(unit, addrs, opts); ++ else if (opts != NULL) ++ free_wordlist(opts); ++ if (addrs != NULL) ++ free_wordlist(addrs); ++ ++ return 1; ++} ++#endif ++ +diff -aur ppp-2.4.6.orig/pppd/ccp.c ppp-2.4.6/pppd/ccp.c +--- ppp-2.4.6.orig/pppd/ccp.c 2014-01-02 05:42:08.000000000 +0100 ++++ ppp-2.4.6/pppd/ccp.c 2014-04-03 21:32:29.076627151 +0200 +@@ -540,6 +540,9 @@ + if (go->mppe) { + ccp_options *ao = &ccp_allowoptions[f->unit]; + int auth_mschap_bits = auth_done[f->unit]; ++#ifdef USE_EAPTLS ++ int auth_eap_bits = auth_done[f->unit]; ++#endif + int numbits; + + /* +@@ -567,8 +570,23 @@ + lcp_close(f->unit, "MPPE required but not available"); + return; + } ++ ++#ifdef USE_EAPTLS ++ /* ++ * MPPE is also possible in combination with EAP-TLS. ++ * It is not possible to detect if we're doing EAP or EAP-TLS ++ * at this stage, hence we accept all forms of EAP. If TLS is ++ * not used then the MPPE keys will not be derived anyway. ++ */ ++ /* Leave only the eap auth bits set */ ++ auth_eap_bits &= (EAP_WITHPEER | EAP_PEER ); ++ ++ if ((numbits == 0) && (auth_eap_bits == 0)) { ++ error("MPPE required, but MS-CHAP[v2] nor EAP-TLS auth are performed."); ++#else + if (!numbits) { +- error("MPPE required, but MS-CHAP[v2] auth not performed."); ++ error("MPPE required, but MS-CHAP[v2] auth not performed."); ++#endif + lcp_close(f->unit, "MPPE required but not available"); + return; + } +diff -aur ppp-2.4.6.orig/pppd/chap-md5.c ppp-2.4.6/pppd/chap-md5.c +--- ppp-2.4.6.orig/pppd/chap-md5.c 2014-01-02 05:42:08.000000000 +0100 ++++ ppp-2.4.6/pppd/chap-md5.c 2014-04-03 21:32:29.079960484 +0200 +@@ -36,7 +36,11 @@ + #include "chap-new.h" + #include "chap-md5.h" + #include "magic.h" ++#ifdef USE_EAPTLS ++#include "eap-tls.h" ++#else + #include "md5.h" ++#endif /* USE_EAPTLS */ + + #define MD5_HASH_SIZE 16 + #define MD5_MIN_CHALLENGE 16 +diff -aur ppp-2.4.6.orig/pppd/eap.c ppp-2.4.6/pppd/eap.c +--- ppp-2.4.6.orig/pppd/eap.c 2014-01-02 05:42:08.000000000 +0100 ++++ ppp-2.4.6/pppd/eap.c 2014-04-03 21:32:29.079960484 +0200 +@@ -43,6 +43,11 @@ + * Based on draft-ietf-pppext-eap-srp-03.txt. + */ + ++/* ++ * Modification by Beniamino Galvani, Mar 2005 ++ * Implemented EAP-TLS authentication ++ */ ++ + #define RCSID "$Id: eap.c,v 1.4 2004/11/09 22:39:25 paulus Exp $" + + /* +@@ -62,8 +67,12 @@ + + #include "pppd.h" + #include "pathnames.h" +-#include "md5.h" + #include "eap.h" ++#ifdef USE_EAPTLS ++#include "eap-tls.h" ++#else ++#include "md5.h" ++#endif /* USE_EAPTLS */ + + #ifdef USE_SRP + #include +@@ -209,6 +218,9 @@ + esp->es_server.ea_id = (u_char)(drand48() * 0x100); + esp->es_client.ea_timeout = EAP_DEFREQTIME; + esp->es_client.ea_maxrequests = EAP_DEFALLOWREQ; ++#ifdef USE_EAPTLS ++ esp->es_client.ea_using_eaptls = 0; ++#endif /* USE_EAPTLS */ + } + + /* +@@ -436,8 +448,16 @@ + u_char vals[2]; + struct b64state bs; + #endif /* USE_SRP */ ++#ifdef USE_EAPTLS ++ struct eaptls_session *ets; ++ int secret_len; ++ char secret[MAXWORDLEN]; ++#endif /* USE_EAPTLS */ + + esp->es_server.ea_timeout = esp->es_savedtime; ++#ifdef USE_EAPTLS ++ esp->es_server.ea_prev_state = esp->es_server.ea_state; ++#endif /* USE_EAPTLS */ + switch (esp->es_server.ea_state) { + case eapBadAuth: + return; +@@ -562,9 +582,81 @@ + break; + } + #endif /* USE_SRP */ ++#ifdef USE_EAPTLS ++ if (!get_secret(esp->es_unit, esp->es_server.ea_peer, ++ esp->es_server.ea_name, secret, &secret_len, 1)) { ++ ++ esp->es_server.ea_state = eapTlsStart; ++ break; ++ } ++#endif /* USE_EAPTLS */ ++ + esp->es_server.ea_state = eapMD5Chall; + break; + ++#ifdef USE_EAPTLS ++ case eapTlsStart: ++ /* Initialize ssl session */ ++ if(!eaptls_init_ssl_server(esp)) { ++ esp->es_server.ea_state = eapBadAuth; ++ break; ++ } ++ ++ esp->es_server.ea_state = eapTlsRecv; ++ break; ++ ++ case eapTlsRecv: ++ ets = (struct eaptls_session *) esp->es_server.ea_session; ++ ++ if(ets->alert_sent) { ++ esp->es_server.ea_state = eapTlsSendAlert; ++ break; ++ } ++ ++ if (status) { ++ esp->es_server.ea_state = eapBadAuth; ++ break; ++ } ++ ets = (struct eaptls_session *) esp->es_server.ea_session; ++ ++ if(ets->frag) ++ esp->es_server.ea_state = eapTlsSendAck; ++ else ++ esp->es_server.ea_state = eapTlsSend; ++ break; ++ ++ case eapTlsSend: ++ ets = (struct eaptls_session *) esp->es_server.ea_session; ++ ++ if(SSL_is_init_finished(ets->ssl)) { ++ esp->es_server.ea_state = eapTlsRecvClient; ++ break; ++ } ++ ++ if(ets->frag) ++ esp->es_server.ea_state = eapTlsRecvAck; ++ else ++ esp->es_server.ea_state = eapTlsRecv; ++ break; ++ ++ case eapTlsSendAck: ++ esp->es_server.ea_state = eapTlsRecv; ++ break; ++ ++ case eapTlsRecvAck: ++ if (status) { ++ esp->es_server.ea_state = eapBadAuth; ++ break; ++ } ++ ++ esp->es_server.ea_state = eapTlsSend; ++ break; ++ ++ case eapTlsSendAlert: ++ esp->es_server.ea_state = eapTlsRecvAlertAck; ++ break; ++#endif /* USE_EAPTLS */ ++ + case eapSRP1: + #ifdef USE_SRP + ts = (struct t_server *)esp->es_server.ea_session; +@@ -718,6 +810,30 @@ + INCPTR(esp->es_server.ea_namelen, outp); + break; + ++#ifdef USE_EAPTLS ++ case eapTlsStart: ++ PUTCHAR(EAPT_TLS, outp); ++ PUTCHAR(EAP_TLS_FLAGS_START, outp); ++ eap_figure_next_state(esp, 0); ++ break; ++ ++ case eapTlsSend: ++ eaptls_send(esp->es_server.ea_session, &outp); ++ eap_figure_next_state(esp, 0); ++ break; ++ ++ case eapTlsSendAck: ++ PUTCHAR(EAPT_TLS, outp); ++ PUTCHAR(0, outp); ++ eap_figure_next_state(esp, 0); ++ break; ++ ++ case eapTlsSendAlert: ++ eaptls_send(esp->es_server.ea_session, &outp); ++ eap_figure_next_state(esp, 0); ++ break; ++#endif /* USE_EAPTLS */ ++ + #ifdef USE_SRP + case eapSRP1: + PUTCHAR(EAPT_SRP, outp); +@@ -904,11 +1020,57 @@ + eap_server_timeout(arg) + void *arg; + { ++#ifdef USE_EAPTLS ++ u_char *outp; ++ u_char *lenloc; ++ int outlen; ++#endif /* USE_EAPTLS */ ++ + eap_state *esp = (eap_state *) arg; + + if (!eap_server_active(esp)) + return; + ++#ifdef USE_EAPTLS ++ switch(esp->es_server.ea_prev_state) { ++ ++ /* ++ * In eap-tls the state changes after a request, so we return to ++ * previous state ... ++ */ ++ case(eapTlsStart): ++ case(eapTlsSendAck): ++ esp->es_server.ea_state = esp->es_server.ea_prev_state; ++ break; ++ ++ /* ++ * ... or resend the stored data ++ */ ++ case(eapTlsSend): ++ case(eapTlsSendAlert): ++ outp = outpacket_buf; ++ MAKEHEADER(outp, PPP_EAP); ++ PUTCHAR(EAP_REQUEST, outp); ++ PUTCHAR(esp->es_server.ea_id, outp); ++ lenloc = outp; ++ INCPTR(2, outp); ++ ++ eaptls_retransmit(esp->es_server.ea_session, &outp); ++ ++ outlen = (outp - outpacket_buf) - PPP_HDRLEN; ++ PUTSHORT(outlen, lenloc); ++ output(esp->es_unit, outpacket_buf, outlen + PPP_HDRLEN); ++ esp->es_server.ea_requests++; ++ ++ if (esp->es_server.ea_timeout > 0) ++ TIMEOUT(eap_server_timeout, esp, esp->es_server.ea_timeout); ++ ++ return; ++ default: ++ break; ++ } ++#endif /* USE_EAPTLS */ ++ + /* EAP ID number must not change on timeout. */ + eap_send_request(esp); + } +@@ -1166,6 +1328,81 @@ + } + #endif /* USE_SRP */ + ++#ifdef USE_EAPTLS ++/* ++ * Send an EAP-TLS response message with tls data ++ */ ++static void ++eap_tls_response(esp, id) ++eap_state *esp; ++u_char id; ++{ ++ u_char *outp; ++ int outlen; ++ u_char *lenloc; ++ ++ outp = outpacket_buf; ++ ++ MAKEHEADER(outp, PPP_EAP); ++ ++ PUTCHAR(EAP_RESPONSE, outp); ++ PUTCHAR(id, outp); ++ ++ lenloc = outp; ++ INCPTR(2, outp); ++ ++ /* ++ If the id in the request is unchanged, we must retransmit ++ the old data ++ */ ++ if(id == esp->es_client.ea_id) ++ eaptls_retransmit(esp->es_client.ea_session, &outp); ++ else ++ eaptls_send(esp->es_client.ea_session, &outp); ++ ++ outlen = (outp - outpacket_buf) - PPP_HDRLEN; ++ PUTSHORT(outlen, lenloc); ++ ++ output(esp->es_unit, outpacket_buf, PPP_HDRLEN + outlen); ++ ++ esp->es_client.ea_id = id; ++ ++} ++ ++/* ++ * Send an EAP-TLS ack ++ */ ++static void ++eap_tls_sendack(esp, id) ++eap_state *esp; ++u_char id; ++{ ++ u_char *outp; ++ int outlen; ++ u_char *lenloc; ++ ++ outp = outpacket_buf; ++ ++ MAKEHEADER(outp, PPP_EAP); ++ ++ PUTCHAR(EAP_RESPONSE, outp); ++ PUTCHAR(id, outp); ++ esp->es_client.ea_id = id; ++ ++ lenloc = outp; ++ INCPTR(2, outp); ++ ++ PUTCHAR(EAPT_TLS, outp); ++ PUTCHAR(0, outp); ++ ++ outlen = (outp - outpacket_buf) - PPP_HDRLEN; ++ PUTSHORT(outlen, lenloc); ++ ++ output(esp->es_unit, outpacket_buf, PPP_HDRLEN + outlen); ++ ++} ++#endif /* USE_EAPTLS */ ++ + static void + eap_send_nak(esp, id, type) + eap_state *esp; +@@ -1320,6 +1557,11 @@ + char rhostname[256]; + MD5_CTX mdContext; + u_char hash[MD5_SIGNATURE_SIZE]; ++#ifdef USE_EAPTLS ++ u_char flags; ++ struct eaptls_session *ets = esp->es_client.ea_session; ++#endif /* USE_EAPTLS */ ++ + #ifdef USE_SRP + struct t_client *tc; + struct t_num sval, gval, Nval, *Ap, Bval; +@@ -1456,6 +1698,90 @@ + esp->es_client.ea_namelen); + break; + ++#ifdef USE_EAPTLS ++ case EAPT_TLS: ++ ++ switch(esp->es_client.ea_state) { ++ ++ case eapListen: ++ ++ GETCHAR(flags, inp); ++ if(flags & EAP_TLS_FLAGS_START){ ++ ++ esp->es_client.ea_using_eaptls = 1; ++ ++ if (explicit_remote){ ++ esp->es_client.ea_peer = strdup(remote_name); ++ esp->es_client.ea_peerlen = strlen(remote_name); ++ } else ++ esp->es_client.ea_peer = NULL; ++ ++ /* Init ssl session */ ++ if(!eaptls_init_ssl_client(esp)) { ++ dbglog("cannot init ssl"); ++ eap_send_nak(esp, id, EAPT_TLS); ++ esp->es_client.ea_using_eaptls = 0; ++ break; ++ } ++ ++ ets = esp->es_client.ea_session; ++ eap_tls_response(esp, id); ++ esp->es_client.ea_state = (ets->frag ? eapTlsRecvAck : ++ eapTlsRecv); ++ break; ++ } ++ ++ /* The server has sent a bad start packet. */ ++ eap_send_nak(esp, id, EAPT_TLS); ++ break; ++ ++ case eapTlsRecvAck: ++ eap_tls_response(esp, id); ++ esp->es_client.ea_state = (ets->frag ? eapTlsRecvAck : ++ eapTlsRecv); ++ break; ++ ++ case eapTlsRecv: ++ eaptls_receive(ets, inp, len); ++ ++ if(ets->frag) { ++ eap_tls_sendack(esp, id); ++ esp->es_client.ea_state = eapTlsRecv; ++ break; ++ } ++ ++ if(ets->alert_recv) { ++ eap_tls_sendack(esp, id); ++ esp->es_client.ea_state = eapTlsRecvFailure; ++ break; ++ } ++ ++ /* Check if TLS handshake is finished */ ++ if(SSL_is_init_finished(ets->ssl)){ ++#ifdef MPPE ++ eaptls_gen_mppe_keys( ets, "client EAP encryption", 1 ); ++#endif ++ eaptls_free_session(ets); ++ eap_tls_sendack(esp, id); ++ esp->es_client.ea_state = eapTlsRecvSuccess; ++ break; ++ } ++ ++ eap_tls_response(esp,id); ++ esp->es_client.ea_state = (ets->frag ? eapTlsRecvAck : ++ eapTlsRecv); ++ ++ break; ++ ++ default: ++ eap_send_nak(esp, id, EAPT_TLS); ++ esp->es_client.ea_using_eaptls = 0; ++ break; ++ } ++ ++ break; ++#endif /* USE_EAPTLS */ ++ + #ifdef USE_SRP + case EAPT_SRP: + if (len < 1) { +@@ -1737,6 +2063,11 @@ + u_char dig[SHA_DIGESTSIZE]; + #endif /* USE_SRP */ + ++#ifdef USE_EAPTLS ++ struct eaptls_session *ets; ++ u_char flags; ++#endif /* USE_EAPTLS */ ++ + if (esp->es_server.ea_id != id) { + dbglog("EAP: discarding Response %d; expected ID %d", id, + esp->es_server.ea_id); +@@ -1776,6 +2107,60 @@ + eap_figure_next_state(esp, 0); + break; + ++#ifdef USE_EAPTLS ++ case EAPT_TLS: ++ switch(esp->es_server.ea_state) { ++ ++ case eapTlsRecv: ++ ets = (struct eaptls_session *) esp->es_server.ea_session; ++ eap_figure_next_state(esp, ++ eaptls_receive(esp->es_server.ea_session, inp, len)); ++ ++ if(ets->alert_recv) { ++ eap_send_failure(esp); ++ break; ++ } ++ break; ++ ++ case eapTlsRecvAck: ++ if(len > 1) { ++ dbglog("EAP-TLS ACK with extra data"); ++ } ++ eap_figure_next_state(esp, 0); ++ break; ++ ++ case eapTlsRecvClient: ++ /* Receive authentication response from client */ ++ ++ GETCHAR(flags, inp); ++ ++ if(len == 1 && !flags) { /* Ack = ok */ ++#ifdef MPPE ++ eaptls_gen_mppe_keys( esp->es_server.ea_session, "client EAP encryption", 0 ); ++#endif ++ eap_send_success(esp); ++ } ++ else { /* failure */ ++ eaptls_receive(esp->es_server.ea_session, inp, len); ++ warn("Server authentication failed"); ++ eap_send_failure(esp); ++ } ++ ++ eaptls_free_session(esp->es_server.ea_session); ++ ++ break; ++ ++ case eapTlsRecvAlertAck: ++ eap_send_failure(esp); ++ break; ++ ++ default: ++ eap_figure_next_state(esp, 1); ++ break; ++ } ++ break; ++#endif /* USE_EAPTLS */ ++ + case EAPT_NOTIFICATION: + dbglog("EAP unexpected Notification; response discarded"); + break; +@@ -1807,6 +2192,13 @@ + esp->es_server.ea_state = eapMD5Chall; + break; + ++#ifdef USE_EAPTLS ++ /* Send EAP-TLS start packet */ ++ case EAPT_TLS: ++ esp->es_server.ea_state = eapTlsStart; ++ break; ++#endif /* USE_EAPTLS */ ++ + default: + dbglog("EAP: peer requesting unknown Type %d", vallen); + switch (esp->es_server.ea_state) { +@@ -2018,13 +2410,27 @@ + int id; + int len; + { +- if (esp->es_client.ea_state != eapOpen && !eap_client_active(esp)) { ++ if (esp->es_client.ea_state != eapOpen && !eap_client_active(esp) ++#ifdef USE_EAPTLS ++ && esp->es_client.ea_state != eapTlsRecvSuccess ++#endif /* USE_EAPTLS */ ++ ) { + dbglog("EAP unexpected success message in state %s (%d)", + eap_state_name(esp->es_client.ea_state), + esp->es_client.ea_state); + return; + } + ++#ifdef USE_EAPTLS ++ if(esp->es_client.ea_using_eaptls && esp->es_client.ea_state != ++ eapTlsRecvSuccess) { ++ dbglog("EAP-TLS unexpected success message in state %s (%d)", ++ eap_state_name(esp->es_client.ea_state), ++ esp->es_client.ea_state); ++ return; ++ } ++#endif /* USE_EAPTLS */ ++ + if (esp->es_client.ea_timeout > 0) { + UNTIMEOUT(eap_client_timeout, (void *)esp); + } +@@ -2150,6 +2556,9 @@ + int code, id, len, rtype, vallen; + u_char *pstart; + u_int32_t uval; ++#ifdef USE_EAPTLS ++ u_char flags; ++#endif /* USE_EAPTLS */ + + if (inlen < EAP_HEADERLEN) + return (0); +@@ -2214,6 +2623,24 @@ + } + break; + ++#ifdef USE_EAPTLS ++ case EAPT_TLS: ++ if (len < 1) ++ break; ++ GETCHAR(flags, inp); ++ len--; ++ ++ if(flags == 0 && len == 0){ ++ printer(arg, " Ack"); ++ break; ++ } ++ ++ printer(arg, flags & EAP_TLS_FLAGS_LI ? " L":" -"); ++ printer(arg, flags & EAP_TLS_FLAGS_MF ? "M":"-"); ++ printer(arg, flags & EAP_TLS_FLAGS_START ? "S":"- "); ++ break; ++#endif /* USE_EAPTLS */ ++ + case EAPT_SRP: + if (len < 3) + goto truncated; +@@ -2325,6 +2752,25 @@ + } + break; + ++#ifdef USE_EAPTLS ++ case EAPT_TLS: ++ if (len < 1) ++ break; ++ GETCHAR(flags, inp); ++ len--; ++ ++ if(flags == 0 && len == 0){ ++ printer(arg, " Ack"); ++ break; ++ } ++ ++ printer(arg, flags & EAP_TLS_FLAGS_LI ? " L":" -"); ++ printer(arg, flags & EAP_TLS_FLAGS_MF ? "M":"-"); ++ printer(arg, flags & EAP_TLS_FLAGS_START ? "S":"- "); ++ ++ break; ++#endif /* USE_EAPTLS */ ++ + case EAPT_NAK: + if (len <= 0) { + printer(arg, " "); +@@ -2426,3 +2872,4 @@ + + return (inp - pstart); + } ++ +diff -aur ppp-2.4.6.orig/pppd/eap.h ppp-2.4.6/pppd/eap.h +--- ppp-2.4.6.orig/pppd/eap.h 2014-01-02 05:42:08.000000000 +0100 ++++ ppp-2.4.6/pppd/eap.h 2014-04-03 21:32:29.079960484 +0200 +@@ -84,6 +84,16 @@ + eapClosed, /* Authentication not in use */ + eapListen, /* Client ready (and timer running) */ + eapIdentify, /* EAP Identify sent */ ++ eapTlsStart, /* Send EAP-TLS start packet */ ++ eapTlsRecv, /* Receive EAP-TLS tls data */ ++ eapTlsSendAck, /* Send EAP-TLS ack */ ++ eapTlsSend, /* Send EAP-TLS tls data */ ++ eapTlsRecvAck, /* Receive EAP-TLS ack */ ++ eapTlsRecvClient, /* Receive EAP-TLS auth response from client*/ ++ eapTlsSendAlert, /* Send EAP-TLS tls alert (server)*/ ++ eapTlsRecvAlertAck, /* Receive EAP-TLS ack after sending alert */ ++ eapTlsRecvSuccess, /* Receive EAP success */ ++ eapTlsRecvFailure, /* Receive EAP failure */ + eapSRP1, /* Sent EAP SRP-SHA1 Subtype 1 */ + eapSRP2, /* Sent EAP SRP-SHA1 Subtype 2 */ + eapSRP3, /* Sent EAP SRP-SHA1 Subtype 3 */ +@@ -95,9 +105,18 @@ + + #define EAP_STATES \ + "Initial", "Pending", "Closed", "Listen", "Identify", \ ++ "TlsStart", "TlsRecv", "TlsSendAck", "TlsSend", "TlsRecvAck", "TlsRecvClient",\ ++ "TlsSendAlert", "TlsRecvAlertAck" , "TlsRecvSuccess", "TlsRecvFailure", \ + "SRP1", "SRP2", "SRP3", "MD5Chall", "Open", "SRP4", "BadAuth" + +-#define eap_client_active(esp) ((esp)->es_client.ea_state == eapListen) ++#ifdef USE_EAPTLS ++#define eap_client_active(esp) ((esp)->es_client.ea_state != eapInitial ||\ ++ (esp)->es_client.ea_state != eapPending ||\ ++ (esp)->es_client.ea_state != eapClosed) ++#else ++#define eap_client_active(esp) ((esp)->es_client.ea_state == eapListen) ++#endif /* USE_EAPTLS */ ++ + #define eap_server_active(esp) \ + ((esp)->es_server.ea_state >= eapIdentify && \ + (esp)->es_server.ea_state <= eapMD5Chall) +@@ -112,11 +131,17 @@ + u_short ea_namelen; /* Length of our name */ + u_short ea_peerlen; /* Length of peer's name */ + enum eap_state_code ea_state; ++#ifdef USE_EAPTLS ++ enum eap_state_code ea_prev_state; ++#endif + u_char ea_id; /* Current id */ + u_char ea_requests; /* Number of Requests sent/received */ + u_char ea_responses; /* Number of Responses */ + u_char ea_type; /* One of EAPT_* */ + u_int32_t ea_keyflags; /* SRP shared key usage flags */ ++#ifdef USE_EAPTLS ++ bool ea_using_eaptls; ++#endif + }; + + /* +@@ -139,7 +164,12 @@ + * Timeouts. + */ + #define EAP_DEFTIMEOUT 3 /* Timeout (seconds) for rexmit */ ++#ifdef USE_EAPTLS ++#define EAP_DEFTRANSMITS 30 /* max # times to transmit */ ++ /* certificates can be long ... */ ++#else + #define EAP_DEFTRANSMITS 10 /* max # times to transmit */ ++#endif /* USE_EAPTLS */ + #define EAP_DEFREQTIME 20 /* Time to wait for peer request */ + #define EAP_DEFALLOWREQ 20 /* max # times to accept requests */ + +diff -Naur ppp-2.4.5/pppd/eap-tls.c ppp-2.4.5-eaptls-mppe-0.99/pppd/eap-tls.c +--- ppp-2.4.5/pppd/eap-tls.c 1970-01-01 01:00:00.000000000 +0100 ++++ ppp-2.4.5-eaptls-mppe-0.99/pppd/eap-tls.c 2010-10-05 15:12:45.881615580 +0200 +@@ -0,0 +1,1174 @@ ++/* ++ * eap-tls.c - EAP-TLS implementation for PPP ++ * ++ * Copyright (c) Beniamino Galvani 2005 All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * 3. The name(s) of the authors of this software must not be used to ++ * endorse or promote products derived from this software without ++ * prior written permission. ++ * ++ * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO ++ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ++ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY ++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "pppd.h" ++#include "eap.h" ++#include "eap-tls.h" ++#include "fsm.h" ++#include "lcp.h" ++#include "pathnames.h" ++ ++/* The openssl configuration file and engines can be loaded only once */ ++static CONF *ssl_config = NULL; ++static ENGINE *cert_engine = NULL; ++static ENGINE *pkey_engine = NULL; ++ ++#ifdef MPPE ++ ++/* ++ * TLS PRF from RFC 2246 ++ */ ++static void P_hash(const EVP_MD *evp_md, ++ const unsigned char *secret, unsigned int secret_len, ++ const unsigned char *seed, unsigned int seed_len, ++ unsigned char *out, unsigned int out_len) ++{ ++ HMAC_CTX ctx_a, ctx_out; ++ unsigned char a[HMAC_MAX_MD_CBLOCK]; ++ unsigned int size; ++ ++ HMAC_CTX_init(&ctx_a); ++ HMAC_CTX_init(&ctx_out); ++ HMAC_Init_ex(&ctx_a, secret, secret_len, evp_md, NULL); ++ HMAC_Init_ex(&ctx_out, secret, secret_len, evp_md, NULL); ++ ++ size = HMAC_size(&ctx_out); ++ ++ /* Calculate A(1) */ ++ HMAC_Update(&ctx_a, seed, seed_len); ++ HMAC_Final(&ctx_a, a, NULL); ++ ++ while (1) { ++ /* Calculate next part of output */ ++ HMAC_Update(&ctx_out, a, size); ++ HMAC_Update(&ctx_out, seed, seed_len); ++ ++ /* Check if last part */ ++ if (out_len < size) { ++ HMAC_Final(&ctx_out, a, NULL); ++ memcpy(out, a, out_len); ++ break; ++ } ++ ++ /* Place digest in output buffer */ ++ HMAC_Final(&ctx_out, out, NULL); ++ HMAC_Init_ex(&ctx_out, NULL, 0, NULL, NULL); ++ out += size; ++ out_len -= size; ++ ++ /* Calculate next A(i) */ ++ HMAC_Init_ex(&ctx_a, NULL, 0, NULL, NULL); ++ HMAC_Update(&ctx_a, a, size); ++ HMAC_Final(&ctx_a, a, NULL); ++ } ++ ++ HMAC_CTX_cleanup(&ctx_a); ++ HMAC_CTX_cleanup(&ctx_out); ++ memset(a, 0, sizeof(a)); ++} ++ ++static void PRF(const unsigned char *secret, unsigned int secret_len, ++ const unsigned char *seed, unsigned int seed_len, ++ unsigned char *out, unsigned char *buf, unsigned int out_len) ++{ ++ unsigned int i; ++ unsigned int len = (secret_len + 1) / 2; ++ const unsigned char *s1 = secret; ++ const unsigned char *s2 = secret + (secret_len - len); ++ ++ P_hash(EVP_md5(), s1, len, seed, seed_len, out, out_len); ++ P_hash(EVP_sha1(), s2, len, seed, seed_len, buf, out_len); ++ ++ for (i=0; i < out_len; i++) { ++ out[i] ^= buf[i]; ++ } ++} ++ ++#define EAPTLS_MPPE_KEY_LEN 32 ++ ++/* ++ * Generate keys according to RFC 2716 and add to reply ++ */ ++void eaptls_gen_mppe_keys(struct eaptls_session *ets, const char *prf_label, ++ int client) ++{ ++ unsigned char out[4*EAPTLS_MPPE_KEY_LEN], buf[4*EAPTLS_MPPE_KEY_LEN]; ++ unsigned char seed[64 + 2*SSL3_RANDOM_SIZE]; ++ unsigned char *p = seed; ++ SSL *s = ets->ssl; ++ size_t prf_size; ++ ++ prf_size = strlen(prf_label); ++ ++ memcpy(p, prf_label, prf_size); ++ p += prf_size; ++ ++ memcpy(p, s->s3->client_random, SSL3_RANDOM_SIZE); ++ p += SSL3_RANDOM_SIZE; ++ prf_size += SSL3_RANDOM_SIZE; ++ ++ memcpy(p, s->s3->server_random, SSL3_RANDOM_SIZE); ++ prf_size += SSL3_RANDOM_SIZE; ++ ++ PRF(s->session->master_key, s->session->master_key_length, ++ seed, prf_size, out, buf, sizeof(out)); ++ ++ /* ++ * We now have the master send and receive keys. ++ * From these, generate the session send and receive keys. ++ * (see RFC3079 / draft-ietf-pppext-mppe-keys-03.txt for details) ++ */ ++ if (client) ++ { ++ p = out; ++ BCOPY( p, mppe_send_key, sizeof(mppe_send_key) ); ++ p += EAPTLS_MPPE_KEY_LEN; ++ BCOPY( p, mppe_recv_key, sizeof(mppe_recv_key) ); ++ } ++ else ++ { ++ p = out; ++ BCOPY( p, mppe_recv_key, sizeof(mppe_recv_key) ); ++ p += EAPTLS_MPPE_KEY_LEN; ++ BCOPY( p, mppe_send_key, sizeof(mppe_send_key) ); ++ } ++ ++ mppe_keys_set = 1; ++} ++ ++#endif ++ ++void log_ssl_errors( void ) ++{ ++ unsigned long ssl_err = ERR_get_error(); ++ ++ if (ssl_err != 0) ++ dbglog("EAP-TLS SSL error stack:"); ++ while (ssl_err != 0) { ++ dbglog( ERR_error_string( ssl_err, NULL ) ); ++ ssl_err = ERR_get_error(); ++ } ++} ++ ++ ++int password_callback (char *buf, int size, int rwflag, void *u) ++{ ++ if (buf) ++ { ++ strncpy (buf, passwd, size); ++ return strlen (buf); ++ } ++ return 0; ++} ++ ++ ++CONF *eaptls_ssl_load_config( void ) ++{ ++ CONF *config; ++ int ret_code; ++ long error_line = 33; ++ ++ config = NCONF_new( NULL ); ++ dbglog( "Loading OpenSSL config file" ); ++ ret_code = NCONF_load( config, _PATH_OPENSSLCONFFILE, &error_line ); ++ if (ret_code == 0) ++ { ++ warn( "EAP-TLS: Error in OpenSSL config file %s at line %d", _PATH_OPENSSLCONFFILE, error_line ); ++ NCONF_free( config ); ++ config = NULL; ++ ERR_clear_error(); ++ } ++ ++ dbglog( "Loading OpenSSL built-ins" ); ++ ENGINE_load_builtin_engines(); ++ OPENSSL_load_builtin_modules(); ++ ++ dbglog( "Loading OpenSSL configured modules" ); ++ if (CONF_modules_load( config, NULL, 0 ) <= 0 ) ++ { ++ warn( "EAP-TLS: Error loading OpenSSL modules" ); ++ log_ssl_errors(); ++ config = NULL; ++ } ++ ++ return config; ++} ++ ++ENGINE *eaptls_ssl_load_engine( char *engine_name ) ++{ ++ ENGINE *e = NULL; ++ ++ dbglog( "Enabling OpenSSL auto engines" ); ++ ENGINE_register_all_complete(); ++ ++ dbglog( "Loading OpenSSL '%s' engine support", engine_name ); ++ e = ENGINE_by_id( engine_name ); ++ if (!e) ++ { ++ dbglog( "EAP-TLS: Cannot load '%s' engine support, trying 'dynamic'", engine_name ); ++ e = ENGINE_by_id( "dynamic" ); ++ if (e) ++ { ++ if (!ENGINE_ctrl_cmd_string(e, "SO_PATH", engine_name, 0) ++ || !ENGINE_ctrl_cmd_string(e, "LOAD", NULL, 0)) ++ { ++ warn( "EAP-TLS: Error loading dynamic engine '%s'", engine_name ); ++ log_ssl_errors(); ++ ENGINE_free(e); ++ e = NULL; ++ } ++ } ++ else ++ { ++ warn( "EAP-TLS: Cannot load dynamic engine support" ); ++ } ++ } ++ ++ if (e) ++ { ++ dbglog( "Initialising engine" ); ++ if(!ENGINE_set_default(e, ENGINE_METHOD_ALL)) ++ { ++ warn( "EAP-TLS: Cannot use that engine" ); ++ log_ssl_errors(); ++ ENGINE_free(e); ++ e = NULL; ++ } ++ } ++ ++ return e; ++} ++ ++/* ++ * Initialize the SSL stacks and tests if certificates, key and crl ++ * for client or server use can be loaded. ++ */ ++SSL_CTX *eaptls_init_ssl(int init_server, char *cacertfile, ++ char *certfile, char *peer_certfile, char *privkeyfile) ++{ ++ char *cert_engine_name = NULL; ++ char *cert_identifier = NULL; ++ char *pkey_engine_name = NULL; ++ char *pkey_identifier = NULL; ++ SSL_CTX *ctx; ++ X509_STORE *certstore; ++ X509_LOOKUP *lookup; ++ X509 *tmp; ++ ++ /* ++ * Without these can't continue ++ */ ++ if (!cacertfile[0]) ++ { ++ error("EAP-TLS: CA certificate missing"); ++ return NULL; ++ } ++ ++ if (!certfile[0]) ++ { ++ error("EAP-TLS: User certificate missing"); ++ return NULL; ++ } ++ ++ if (!privkeyfile[0]) ++ { ++ error("EAP-TLS: User private key missing"); ++ return NULL; ++ } ++ ++ SSL_library_init(); ++ SSL_load_error_strings(); ++ ++ ctx = SSL_CTX_new(TLSv1_method()); ++ ++ if (!ctx) { ++ error("EAP-TLS: Cannot initialize SSL CTX context"); ++ goto fail; ++ } ++ ++ /* if the certificate filename is of the form engine:id. e.g. ++ pkcs11:12345 ++ then we try to load and use this engine. ++ If the certificate filename starts with a / or . then we ++ ALWAYS assume it is a file and not an engine/pkcs11 identifier ++ */ ++ if ( index( certfile, '/' ) == NULL && index( certfile, '.') == NULL ) ++ { ++ cert_identifier = index( certfile, ':' ); ++ ++ if (cert_identifier) ++ { ++ cert_engine_name = certfile; ++ *cert_identifier = '\0'; ++ cert_identifier++; ++ ++ dbglog( "Found certificate engine '%s'", cert_engine_name ); ++ dbglog( "Found certificate identifier '%s'", cert_identifier ); ++ } ++ } ++ ++ /* if the privatekey filename is of the form engine:id. e.g. ++ pkcs11:12345 ++ then we try to load and use this engine. ++ If the privatekey filename starts with a / or . then we ++ ALWAYS assume it is a file and not an engine/pkcs11 identifier ++ */ ++ if ( index( privkeyfile, '/' ) == NULL && index( privkeyfile, '.') == NULL ) ++ { ++ pkey_identifier = index( privkeyfile, ':' ); ++ ++ if (pkey_identifier) ++ { ++ pkey_engine_name = privkeyfile; ++ *pkey_identifier = '\0'; ++ pkey_identifier++; ++ ++ dbglog( "Found privatekey engine '%s'", pkey_engine_name ); ++ dbglog( "Found privatekey identifier '%s'", pkey_identifier ); ++ } ++ } ++ ++ if (cert_identifier && pkey_identifier) ++ { ++ if (strlen( cert_identifier ) == 0) ++ { ++ if (strlen( pkey_identifier ) == 0) ++ error( "EAP-TLS: both the certificate and privatekey identifiers are missing!" ); ++ else ++ { ++ dbglog( "Substituting privatekey identifier for certificate identifier" ); ++ cert_identifier = pkey_identifier; ++ } ++ } ++ else ++ { ++ if (strlen( pkey_identifier ) == 0) ++ { ++ dbglog( "Substituting certificate identifier for privatekey identifier" ); ++ pkey_identifier = cert_identifier; ++ } ++ } ++ ++ } ++ ++ /* load the openssl config file only once */ ++ if (!ssl_config) ++ { ++ if (cert_engine_name || pkey_engine_name) ++ ssl_config = eaptls_ssl_load_config(); ++ ++ if (ssl_config && cert_engine_name) ++ cert_engine = eaptls_ssl_load_engine( cert_engine_name ); ++ ++ if (ssl_config && pkey_engine_name) ++ { ++ /* don't load the same engine twice */ ++ if ( strcmp( cert_engine_name, pkey_engine_name) == 0 ) ++ pkey_engine = cert_engine; ++ else ++ pkey_engine = eaptls_ssl_load_engine( pkey_engine_name ); ++ } ++ } ++ ++ SSL_CTX_set_default_passwd_cb (ctx, password_callback); ++ ++ if (!SSL_CTX_load_verify_locations(ctx, cacertfile, NULL)) ++ { ++ error("EAP-TLS: Cannot load or verify CA file %s", cacertfile); ++ goto fail; ++ } ++ ++ if (init_server) ++ SSL_CTX_set_client_CA_list(ctx, SSL_load_client_CA_file(cacertfile)); ++ ++ if (cert_engine) ++ { ++ struct ++ { ++ const char *s_slot_cert_id; ++ X509 *cert; ++ } cert_info; ++ ++ cert_info.s_slot_cert_id = cert_identifier; ++ cert_info.cert = NULL; ++ ++ if (!ENGINE_ctrl_cmd( cert_engine, "LOAD_CERT_CTRL", 0, &cert_info, NULL, 0 ) ) ++ { ++ error( "EAP-TLS: Error loading certificate with id '%s' from engine", cert_identifier ); ++ goto fail; ++ } ++ ++ if (cert_info.cert) ++ { ++ dbglog( "Got the certificate, adding it to SSL context" ); ++ dbglog( "subject = %s", X509_NAME_oneline( X509_get_subject_name( cert_info.cert ), NULL, 0 ) ); ++ if (SSL_CTX_use_certificate(ctx, cert_info.cert) <= 0) ++ { ++ error("EAP-TLS: Cannot use PKCS11 certificate %s", cert_identifier); ++ goto fail; ++ } ++ } ++ else ++ { ++ warn("EAP-TLS: Cannot load PKCS11 key %s", cert_identifier); ++ log_ssl_errors(); ++ } ++ } ++ else ++ { ++ if (!SSL_CTX_use_certificate_file(ctx, certfile, SSL_FILETYPE_PEM)) ++ { ++ error( "EAP-TLS: Cannot use public certificate %s", certfile ); ++ goto fail; ++ } ++ } ++ ++ if (pkey_engine) ++ { ++ EVP_PKEY *pkey = NULL; ++ PW_CB_DATA cb_data; ++ ++ cb_data.password = passwd; ++ cb_data.prompt_info = pkey_identifier; ++ ++ dbglog( "Loading private key '%s' from engine", pkey_identifier ); ++ pkey = ENGINE_load_private_key(pkey_engine, pkey_identifier, NULL, &cb_data); ++ if (pkey) ++ { ++ dbglog( "Got the private key, adding it to SSL context" ); ++ if (SSL_CTX_use_PrivateKey(ctx, pkey) <= 0) ++ { ++ error("EAP-TLS: Cannot use PKCS11 key %s", pkey_identifier); ++ goto fail; ++ } ++ } ++ else ++ { ++ warn("EAP-TLS: Cannot load PKCS11 key %s", pkey_identifier); ++ log_ssl_errors(); ++ } ++ } ++ else ++ { ++ if (!SSL_CTX_use_PrivateKey_file(ctx, privkeyfile, SSL_FILETYPE_PEM)) ++ { ++ error("EAP-TLS: Cannot use private key %s", privkeyfile); ++ goto fail; ++ } ++ } ++ ++ if (SSL_CTX_check_private_key(ctx) != 1) { ++ error("EAP-TLS: Private key %s fails security check", privkeyfile); ++ goto fail; ++ } ++ ++ SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3); ++ SSL_CTX_set_verify_depth(ctx, 5); ++ SSL_CTX_set_verify(ctx, ++ SSL_VERIFY_PEER | ++ SSL_VERIFY_FAIL_IF_NO_PEER_CERT, ++ &ssl_verify_callback); ++ ++ if (crl_dir) { ++ if (!(certstore = SSL_CTX_get_cert_store(ctx))) { ++ error("EAP-TLS: Failed to get certificate store"); ++ goto fail; ++ } ++ ++ if (!(lookup = ++ X509_STORE_add_lookup(certstore, X509_LOOKUP_hash_dir()))) { ++ error("EAP-TLS: Store lookup for CRL failed"); ++ ++ goto fail; ++ } ++ ++ X509_LOOKUP_add_dir(lookup, crl_dir, X509_FILETYPE_PEM); ++ X509_STORE_set_flags(certstore, X509_V_FLAG_CRL_CHECK); ++ } ++ ++ /* ++ * If a peer certificate file was specified, it must be valid, else fail ++ */ ++ if (peer_certfile[0]) { ++ if (!(tmp = get_X509_from_file(peer_certfile))) { ++ error("EAP-TLS: Error loading client certificate from file %s", ++ peer_certfile); ++ goto fail; ++ } ++ X509_free(tmp); ++ } ++ ++ return ctx; ++ ++fail: ++ log_ssl_errors(); ++ SSL_CTX_free(ctx); ++ return NULL; ++} ++ ++/* ++ * Determine the maximum packet size by looking at the LCP handshake ++ */ ++ ++int eaptls_get_mtu(int unit) ++{ ++ int mtu, mru; ++ ++ lcp_options *wo = &lcp_wantoptions[unit]; ++ lcp_options *go = &lcp_gotoptions[unit]; ++ lcp_options *ho = &lcp_hisoptions[unit]; ++ lcp_options *ao = &lcp_allowoptions[unit]; ++ ++ mtu = ho->neg_mru? ho->mru: PPP_MRU; ++ mru = go->neg_mru? MAX(wo->mru, go->mru): PPP_MRU; ++ mtu = MIN(MIN(mtu, mru), ao->mru)- PPP_HDRLEN - 10; ++ ++ dbglog("MTU = %d", mtu); ++ return mtu; ++} ++ ++ ++/* ++ * Init the ssl handshake (server mode) ++ */ ++int eaptls_init_ssl_server(eap_state * esp) ++{ ++ struct eaptls_session *ets; ++ char servcertfile[MAXWORDLEN]; ++ char clicertfile[MAXWORDLEN]; ++ char cacertfile[MAXWORDLEN]; ++ char pkfile[MAXWORDLEN]; ++ /* ++ * Allocate new eaptls session ++ */ ++ esp->es_server.ea_session = malloc(sizeof(struct eaptls_session)); ++ if (!esp->es_server.ea_session) ++ fatal("Allocation error"); ++ ets = esp->es_server.ea_session; ++ ++ if (!esp->es_server.ea_peer) { ++ error("EAP-TLS: Error: client name not set (BUG)"); ++ return 0; ++ } ++ ++ strncpy(ets->peer, esp->es_server.ea_peer, MAXWORDLEN); ++ ++ dbglog( "getting eaptls secret" ); ++ if (!get_eaptls_secret(esp->es_unit, esp->es_server.ea_peer, ++ esp->es_server.ea_name, clicertfile, ++ servcertfile, cacertfile, pkfile, 1)) { ++ error( "EAP-TLS: Cannot get secret/password for client \"%s\", server \"%s\"", ++ esp->es_server.ea_peer, esp->es_server.ea_name ); ++ return 0; ++ } ++ ++ ets->mtu = eaptls_get_mtu(esp->es_unit); ++ ++ ets->ctx = eaptls_init_ssl(1, cacertfile, servcertfile, clicertfile, pkfile); ++ if (!ets->ctx) ++ goto fail; ++ ++ if (!(ets->ssl = SSL_new(ets->ctx))) ++ goto fail; ++ ++ /* ++ * Set auto-retry to avoid timeouts on BIO_read ++ */ ++ SSL_set_mode(ets->ssl, SSL_MODE_AUTO_RETRY); ++ ++ /* ++ * Initialize the BIOs we use to read/write to ssl engine ++ */ ++ ets->into_ssl = BIO_new(BIO_s_mem()); ++ ets->from_ssl = BIO_new(BIO_s_mem()); ++ SSL_set_bio(ets->ssl, ets->into_ssl, ets->from_ssl); ++ ++ SSL_set_msg_callback(ets->ssl, ssl_msg_callback); ++ SSL_set_msg_callback_arg(ets->ssl, ets); ++ ++ /* ++ * Attach the session struct to the connection, so we can later ++ * retrieve it when doing certificate verification ++ */ ++ SSL_set_ex_data(ets->ssl, 0, ets); ++ ++ SSL_set_accept_state(ets->ssl); ++ ++ ets->data = NULL; ++ ets->datalen = 0; ++ ets->alert_sent = 0; ++ ets->alert_recv = 0; ++ ++ /* ++ * If we specified the client certificate file, store it in ets->peercertfile, ++ * so we can check it later in ssl_verify_callback() ++ */ ++ if (clicertfile[0]) ++ strncpy(&ets->peercertfile[0], clicertfile, MAXWORDLEN); ++ else ++ ets->peercertfile[0] = 0; ++ ++ return 1; ++ ++fail: ++ SSL_CTX_free(ets->ctx); ++ return 0; ++} ++ ++/* ++ * Init the ssl handshake (client mode) ++ */ ++int eaptls_init_ssl_client(eap_state * esp) ++{ ++ struct eaptls_session *ets; ++ char servcertfile[MAXWORDLEN]; ++ char clicertfile[MAXWORDLEN]; ++ char cacertfile[MAXWORDLEN]; ++ char pkfile[MAXWORDLEN]; ++ ++ /* ++ * Allocate new eaptls session ++ */ ++ esp->es_client.ea_session = malloc(sizeof(struct eaptls_session)); ++ if (!esp->es_client.ea_session) ++ fatal("Allocation error"); ++ ets = esp->es_client.ea_session; ++ ++ /* ++ * If available, copy server name in ets; it will be used in cert ++ * verify ++ */ ++ if (esp->es_client.ea_peer) ++ strncpy(ets->peer, esp->es_client.ea_peer, MAXWORDLEN); ++ else ++ ets->peer[0] = 0; ++ ++ ets->mtu = eaptls_get_mtu(esp->es_unit); ++ ++ dbglog( "calling get_eaptls_secret" ); ++ if (!get_eaptls_secret(esp->es_unit, esp->es_client.ea_name, ++ esp->es_client.ea_peer, clicertfile, ++ servcertfile, cacertfile, pkfile, 0)) { ++ error( "EAP-TLS: Cannot get secret/password for client \"%s\", server \"%s\"", ++ esp->es_client.ea_name, esp->es_client.ea_peer ); ++ return 0; ++ } ++ ++ dbglog( "calling eaptls_init_ssl" ); ++ ets->ctx = eaptls_init_ssl(0, cacertfile, clicertfile, servcertfile, pkfile); ++ if (!ets->ctx) ++ goto fail; ++ ++ ets->ssl = SSL_new(ets->ctx); ++ ++ if (!ets->ssl) ++ goto fail; ++ ++ /* ++ * Initialize the BIOs we use to read/write to ssl engine ++ */ ++ dbglog( "Initializing SSL BIOs" ); ++ ets->into_ssl = BIO_new(BIO_s_mem()); ++ ets->from_ssl = BIO_new(BIO_s_mem()); ++ SSL_set_bio(ets->ssl, ets->into_ssl, ets->from_ssl); ++ ++ SSL_set_msg_callback(ets->ssl, ssl_msg_callback); ++ SSL_set_msg_callback_arg(ets->ssl, ets); ++ ++ /* ++ * Attach the session struct to the connection, so we can later ++ * retrieve it when doing certificate verification ++ */ ++ SSL_set_ex_data(ets->ssl, 0, ets); ++ ++ SSL_set_connect_state(ets->ssl); ++ ++ ets->data = NULL; ++ ets->datalen = 0; ++ ets->alert_sent = 0; ++ ets->alert_recv = 0; ++ ++ /* ++ * If we specified the server certificate file, store it in ++ * ets->peercertfile, so we can check it later in ++ * ssl_verify_callback() ++ */ ++ if (servcertfile[0]) ++ strncpy(ets->peercertfile, servcertfile, MAXWORDLEN); ++ else ++ ets->peercertfile[0] = 0; ++ ++ return 1; ++ ++fail: ++ dbglog( "eaptls_init_ssl_client: fail" ); ++ SSL_CTX_free(ets->ctx); ++ return 0; ++ ++} ++ ++void eaptls_free_session(struct eaptls_session *ets) ++{ ++ if (ets->ssl) ++ SSL_free(ets->ssl); ++ ++ if (ets->ctx) ++ SSL_CTX_free(ets->ctx); ++ ++ free(ets); ++} ++ ++/* ++ * Handle a received packet, reassembling fragmented messages and ++ * passing them to the ssl engine ++ */ ++int eaptls_receive(struct eaptls_session *ets, u_char * inp, int len) ++{ ++ u_char flags; ++ u_int tlslen; ++ u_char dummy[65536]; ++ ++ GETCHAR(flags, inp); ++ len--; ++ ++ if (flags & EAP_TLS_FLAGS_LI && !ets->data) { ++ ++ /* ++ * This is the first packet of a message ++ */ ++ ++ GETLONG(tlslen, inp); ++ len -= 4; ++ ++ if (tlslen > EAP_TLS_MAX_LEN) { ++ error("Error: tls message length > %d, truncated", ++ EAP_TLS_MAX_LEN); ++ tlslen = EAP_TLS_MAX_LEN; ++ } ++ ++ /* ++ * Allocate memory for the whole message ++ */ ++ ets->data = malloc(tlslen); ++ if (!ets->data) ++ fatal("EAP TLS: allocation error\n"); ++ ++ ets->datalen = 0; ++ ets->tlslen = tlslen; ++ ++ } ++ else if (flags & EAP_TLS_FLAGS_LI && ets->data) { ++ /* ++ * Non first with LI (strange...) ++ */ ++ ++ GETLONG(tlslen, inp); ++ len -= 4; ++ ++ } ++ else if (!ets->data) { ++ /* ++ * A non fragmented message without LI flag ++ */ ++ ++ ets->data = malloc(len); ++ if (!ets->data) ++ fatal("EAP TLS: allocation error\n"); ++ ++ ets->datalen = 0; ++ ets->tlslen = len; ++ } ++ ++ if (flags & EAP_TLS_FLAGS_MF) ++ ets->frag = 1; ++ else ++ ets->frag = 0; ++ ++ if (len + ets->datalen > ets->tlslen) { ++ warn("EAP TLS: received data > TLS message length"); ++ return 1; ++ } ++ ++ BCOPY(inp, ets->data + ets->datalen, len); ++ ets->datalen += len; ++ ++ if (!ets->frag) { ++ ++ /* ++ * If we have the whole message, pass it to ssl ++ */ ++ ++ if (ets->datalen != ets->tlslen) { ++ warn("EAP TLS: received data != TLS message length"); ++ return 1; ++ } ++ ++ if (BIO_write(ets->into_ssl, ets->data, ets->datalen) == -1) ++ log_ssl_errors(); ++ ++ SSL_read(ets->ssl, dummy, 65536); ++ ++ free(ets->data); ++ ets->data = NULL; ++ ets->datalen = 0; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Return an eap-tls packet in outp. ++ * A TLS message read from the ssl engine is buffered in ets->data. ++ * At each call we control if there is buffered data and send a ++ * packet of mtu bytes. ++ */ ++int eaptls_send(struct eaptls_session *ets, u_char ** outp) ++{ ++ bool first = 0; ++ int size; ++ u_char fromtls[65536]; ++ int res; ++ u_char *start; ++ ++ start = *outp; ++ ++ if (!ets->data) { ++ ++ if(!ets->alert_sent) ++ SSL_read(ets->ssl, fromtls, 65536); ++ ++ /* ++ * Read from ssl ++ */ ++ if ((res = BIO_read(ets->from_ssl, fromtls, 65536)) == -1) ++ fatal("No data from BIO_read"); ++ ++ ets->datalen = res; ++ ++ ets->data = malloc(ets->datalen); ++ BCOPY(fromtls, ets->data, ets->datalen); ++ ++ ets->offset = 0; ++ first = 1; ++ ++ } ++ ++ size = ets->datalen - ets->offset; ++ ++ if (size > ets->mtu) { ++ size = ets->mtu; ++ ets->frag = 1; ++ } else ++ ets->frag = 0; ++ ++ PUTCHAR(EAPT_TLS, *outp); ++ ++ /* ++ * Set right flags and length if necessary ++ */ ++ if (ets->frag && first) { ++ PUTCHAR(EAP_TLS_FLAGS_LI | EAP_TLS_FLAGS_MF, *outp); ++ PUTLONG(ets->datalen, *outp); ++ } else if (ets->frag) { ++ PUTCHAR(EAP_TLS_FLAGS_MF, *outp); ++ } else ++ PUTCHAR(0, *outp); ++ ++ /* ++ * Copy the data in outp ++ */ ++ BCOPY(ets->data + ets->offset, *outp, size); ++ INCPTR(size, *outp); ++ ++ /* ++ * Copy the packet in retransmission buffer ++ */ ++ BCOPY(start, &ets->rtx[0], *outp - start); ++ ets->rtx_len = *outp - start; ++ ++ ets->offset += size; ++ ++ if (ets->offset >= ets->datalen) { ++ ++ /* ++ * The whole message has been sent ++ */ ++ ++ free(ets->data); ++ ets->data = NULL; ++ ets->datalen = 0; ++ ets->offset = 0; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Get the sent packet from the retransmission buffer ++ */ ++void eaptls_retransmit(struct eaptls_session *ets, u_char ** outp) ++{ ++ BCOPY(ets->rtx, *outp, ets->rtx_len); ++ INCPTR(ets->rtx_len, *outp); ++} ++ ++/* ++ * Verify a certificate. ++ * Most of the work (signatures and issuer attributes checking) ++ * is done by ssl; we check the CN in the peer certificate ++ * against the peer name. ++ */ ++int ssl_verify_callback(int preverify_ok, X509_STORE_CTX * ctx) ++{ ++ char subject[256]; ++ char cn_str[256]; ++ X509 *peer_cert; ++ int err, depth; ++ int ok = preverify_ok; ++ SSL *ssl; ++ struct eaptls_session *ets; ++ ++ peer_cert = X509_STORE_CTX_get_current_cert(ctx); ++ err = X509_STORE_CTX_get_error(ctx); ++ depth = X509_STORE_CTX_get_error_depth(ctx); ++ ++ dbglog("certificate verify depth: %d", depth); ++ ++ if (auth_required && !ok) { ++ X509_NAME_oneline(X509_get_subject_name(peer_cert), ++ subject, 256); ++ ++ X509_NAME_get_text_by_NID(X509_get_subject_name(peer_cert), ++ NID_commonName, cn_str, 256); ++ ++ dbglog("Certificate verification error:\n depth: %d CN: %s" ++ "\n err: %d (%s)\n", depth, cn_str, err, ++ X509_verify_cert_error_string(err)); ++ ++ return 0; ++ } ++ ++ ssl = X509_STORE_CTX_get_ex_data(ctx, ++ SSL_get_ex_data_X509_STORE_CTX_idx()); ++ ++ ets = (struct eaptls_session *)SSL_get_ex_data(ssl, 0); ++ ++ if (ets == NULL) { ++ error("Error: SSL_get_ex_data returned NULL"); ++ return 0; ++ } ++ ++ log_ssl_errors(); ++ ++ if (!depth) { /* This is the peer certificate */ ++ ++ X509_NAME_oneline(X509_get_subject_name(peer_cert), ++ subject, 256); ++ ++ X509_NAME_get_text_by_NID(X509_get_subject_name(peer_cert), ++ NID_commonName, cn_str, 256); ++ ++ /* ++ * If acting as client and the name of the server wasn't specified ++ * explicitely, we can't verify the server authenticity ++ */ ++ if (!ets->peer[0]) { ++ warn("Peer name not specified: no check"); ++ return 1; ++ } ++ ++ /* ++ * Check the CN ++ */ ++ if (strcmp(cn_str, ets->peer)) { ++ error ++ ("Certificate verification error: CN (%s) != peer_name (%s)", ++ cn_str, ets->peer); ++ return 0; ++ } ++ ++ warn("Certificate CN: %s , peer name %s", cn_str, ets->peer); ++ ++ /* ++ * If a peer certificate file was specified, here we check it ++ */ ++ if (ets->peercertfile[0]) { ++ if (ssl_cmp_certs(&ets->peercertfile[0], peer_cert) ++ != 0) { ++ error ++ ("Peer certificate doesn't match stored certificate"); ++ return 0; ++ } ++ } ++ } ++ ++ return 1; ++} ++ ++/* ++ * Compare a certificate with the one stored in a file ++ */ ++int ssl_cmp_certs(char *filename, X509 * a) ++{ ++ X509 *b; ++ int ret; ++ ++ if (!(b = get_X509_from_file(filename))) ++ return 1; ++ ++ ret = X509_cmp(a, b); ++ X509_free(b); ++ ++ return ret; ++ ++} ++ ++X509 *get_X509_from_file(char *filename) ++{ ++ FILE *fp; ++ X509 *ret; ++ ++ if (!(fp = fopen(filename, "r"))) ++ return NULL; ++ ++ ret = PEM_read_X509(fp, NULL, NULL, NULL); ++ ++ fclose(fp); ++ ++ return ret; ++} ++ ++/* ++ * Every sent & received message this callback function is invoked, ++ * so we know when alert messages have arrived or are sent and ++ * we can print debug information about TLS handshake. ++ */ ++void ++ssl_msg_callback(int write_p, int version, int content_type, ++ const void *buf, size_t len, SSL * ssl, void *arg) ++{ ++ char string[256]; ++ struct eaptls_session *ets = (struct eaptls_session *)arg; ++ unsigned char code; ++ ++ if(write_p) ++ strcpy(string, " -> "); ++ else ++ strcpy(string, " <- "); ++ ++ ++ switch(content_type) { ++ ++ case SSL3_RT_ALERT: ++ strcat(string, "Alert: "); ++ code = ((const unsigned char *)buf)[1]; ++ ++ if (write_p) { ++ ets->alert_sent = 1; ++ ets->alert_sent_desc = code; ++ } else { ++ ets->alert_recv = 1; ++ ets->alert_recv_desc = code; ++ } ++ ++ strcat(string, SSL_alert_desc_string_long(code)); ++ break; ++ ++ case SSL3_RT_CHANGE_CIPHER_SPEC: ++ strcat(string, "ChangeCipherSpec"); ++ break; ++ ++ case SSL3_RT_HANDSHAKE: ++ ++ strcat(string, "Handshake: "); ++ code = ((const unsigned char *)buf)[0]; ++ ++ switch(code) { ++ case SSL3_MT_HELLO_REQUEST: ++ strcat(string,"Hello Request"); ++ break; ++ case SSL3_MT_CLIENT_HELLO: ++ strcat(string,"Client Hello"); ++ break; ++ case SSL3_MT_SERVER_HELLO: ++ strcat(string,"Server Hello"); ++ break; ++ case SSL3_MT_CERTIFICATE: ++ strcat(string,"Certificate"); ++ break; ++ case SSL3_MT_SERVER_KEY_EXCHANGE: ++ strcat(string,"Server Key Exchange"); ++ break; ++ case SSL3_MT_CERTIFICATE_REQUEST: ++ strcat(string,"Certificate Request"); ++ break; ++ case SSL3_MT_SERVER_DONE: ++ strcat(string,"Server Hello Done"); ++ break; ++ case SSL3_MT_CERTIFICATE_VERIFY: ++ strcat(string,"Certificate Verify"); ++ break; ++ case SSL3_MT_CLIENT_KEY_EXCHANGE: ++ strcat(string,"Client Key Exchange"); ++ break; ++ case SSL3_MT_FINISHED: ++ strcat(string,"Finished"); ++ break; ++ ++ default: ++ sprintf( string, "Handshake: Unknown SSL3 code received: %d", code ); ++ } ++ break; ++ ++ default: ++ sprintf( string, "SSL message contains unknown content type: %d", content_type ); ++ ++ } ++ ++ /* Alert messages must always be displayed */ ++ if(content_type == SSL3_RT_ALERT) ++ error("%s", string); ++ else ++ dbglog("%s", string); ++} ++ +diff -Naur ppp-2.4.5/pppd/eap-tls.h ppp-2.4.5-eaptls-mppe-0.99/pppd/eap-tls.h +--- ppp-2.4.5/pppd/eap-tls.h 1970-01-01 01:00:00.000000000 +0100 ++++ ppp-2.4.5-eaptls-mppe-0.99/pppd/eap-tls.h 2010-10-01 15:17:54.213271816 +0200 +@@ -0,0 +1,107 @@ ++/* ++ * eap-tls.h ++ * ++ * Copyright (c) Beniamino Galvani 2005 All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * 3. The name(s) of the authors of this software must not be used to ++ * endorse or promote products derived from this software without ++ * prior written permission. ++ * ++ * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO ++ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ++ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY ++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ */ ++ ++#ifndef __EAP_TLS_H__ ++#define __EAP_TLS_H__ ++ ++#include "eap.h" ++ ++#include ++#include ++#include ++ ++#define EAP_TLS_FLAGS_LI 128 /* length included flag */ ++#define EAP_TLS_FLAGS_MF 64 /* more fragments flag */ ++#define EAP_TLS_FLAGS_START 32 /* start flag */ ++ ++#define EAP_TLS_MAX_LEN 65536 /* max eap tls packet size */ ++ ++struct eaptls_session ++{ ++ u_char *data; /* buffered data */ ++ int datalen; /* buffered data len */ ++ int offset; /* from where to send */ ++ int tlslen; /* total length of tls data */ ++ bool frag; /* packet is fragmented */ ++ SSL_CTX *ctx; ++ SSL *ssl; /* ssl connection */ ++ BIO *from_ssl; ++ BIO *into_ssl; ++ char peer[MAXWORDLEN]; /* peer name */ ++ char peercertfile[MAXWORDLEN]; ++ bool alert_sent; ++ u_char alert_sent_desc; ++ bool alert_recv; ++ u_char alert_recv_desc; ++ char rtx[65536]; /* retransmission buffer */ ++ int rtx_len; ++ int mtu; /* unit mtu */ ++}; ++ ++typedef struct pw_cb_data ++{ ++ const void *password; ++ const char *prompt_info; ++} PW_CB_DATA; ++ ++ ++int ssl_verify_callback(int, X509_STORE_CTX *); ++void ssl_msg_callback(int write_p, int version, int ct, const void *buf, ++ size_t len, SSL * ssl, void *arg); ++ ++X509 *get_X509_from_file(char *filename); ++int ssl_cmp_certs(char *filename, X509 * a); ++ ++SSL_CTX *eaptls_init_ssl(int init_server, char *cacertfile, ++ char *certfile, char *peer_certfile, char *privkeyfile); ++int eaptls_init_ssl_server(eap_state * esp); ++int eaptls_init_ssl_client(eap_state * esp); ++void eaptls_free_session(struct eaptls_session *ets); ++ ++int eaptls_receive(struct eaptls_session *ets, u_char * inp, int len); ++int eaptls_send(struct eaptls_session *ets, u_char ** outp); ++void eaptls_retransmit(struct eaptls_session *ets, u_char ** outp); ++ ++int get_eaptls_secret(int unit, char *client, char *server, ++ char *clicertfile, char *servcertfile, char *cacertfile, ++ char *pkfile, int am_server); ++ ++#ifdef MPPE ++#include "mppe.h" /* MPPE_MAX_KEY_LEN */ ++extern u_char mppe_send_key[MPPE_MAX_KEY_LEN]; ++extern u_char mppe_recv_key[MPPE_MAX_KEY_LEN]; ++extern int mppe_keys_set; ++ ++void eaptls_gen_mppe_keys(struct eaptls_session *ets, const char *prf_label, int client); ++ ++#endif ++ ++#endif +diff -aur ppp-2.4.6.orig/pppd/Makefile.linux ppp-2.4.6/pppd/Makefile.linux +--- ppp-2.4.6.orig/pppd/Makefile.linux 2014-04-03 21:31:37.000000000 +0200 ++++ ppp-2.4.6/pppd/Makefile.linux 2014-04-03 21:32:29.076627151 +0200 +@@ -76,6 +76,9 @@ + # Use libutil + USE_LIBUTIL=y + ++# Enable EAP-TLS authentication (requires libssl and libcurl) ++USE_EAPTLS=y ++ + MAXOCTETS=y + + INCLUDE_DIRS= -I../include +@@ -115,6 +118,15 @@ + PPPDOBJS += sha1.o + endif + ++# EAP-TLS ++ifdef USE_EAPTLS ++CFLAGS += -DUSE_EAPTLS=1 -I/usr/kerberos/include ++LIBS += -lssl -lcrypto ++PPPDSRC += eap-tls.c ++HEADERS += eap-tls.h ++PPPDOBJS += eap-tls.o ++endif ++ + ifdef HAS_SHADOW + CFLAGS += -DHAS_SHADOW + #LIBS += -lshadow $(LIBS) +diff -aur ppp-2.4.6.orig/pppd/md5.c ppp-2.4.6/pppd/md5.c +--- ppp-2.4.6.orig/pppd/md5.c 2014-01-02 05:42:08.000000000 +0100 ++++ ppp-2.4.6/pppd/md5.c 2014-04-03 21:32:29.079960484 +0200 +@@ -33,6 +33,8 @@ + *********************************************************************** + */ + ++#ifndef USE_EAPTLS ++ + #include + #include "md5.h" + +@@ -305,3 +307,5 @@ + ** End of md5.c ** + ******************************** (cut) ******************************** + */ ++#endif /* USE_EAPTLS */ ++ +diff -aur ppp-2.4.6.orig/pppd/md5.h ppp-2.4.6/pppd/md5.h +--- ppp-2.4.6.orig/pppd/md5.h 2014-01-02 05:42:08.000000000 +0100 ++++ ppp-2.4.6/pppd/md5.h 2014-04-03 21:32:29.079960484 +0200 +@@ -36,6 +36,7 @@ + ** documentation and/or software. ** + *********************************************************************** + */ ++#ifndef USE_EAPTLS + + #ifndef __MD5_INCLUDE__ + +@@ -63,3 +64,5 @@ + + #define __MD5_INCLUDE__ + #endif /* __MD5_INCLUDE__ */ ++ ++#endif /* USE_EAPTLS */ +diff -aur ppp-2.4.6.orig/pppd/options.c ppp-2.4.6/pppd/options.c +--- ppp-2.4.6.orig/pppd/options.c 2014-04-03 21:31:37.000000000 +0200 ++++ ppp-2.4.6/pppd/options.c 2014-04-03 21:33:58.363293525 +0200 +@@ -126,6 +126,11 @@ + int child_wait = 5; /* # seconds to wait for children at exit */ + struct userenv *userenv_list; /* user environment variables */ + ++#ifdef USE_EAPTLS ++bool only_update_crl_server = 0; /* update server crl and exit */ ++bool only_update_crl_client = 0; /* update client crl and exit */ ++#endif /* USE_EAPTLS */ ++ + #ifdef MAXOCTETS + unsigned int maxoctets = 0; /* default - no limit */ + int maxoctets_dir = 0; /* default - sum of traffic */ +@@ -351,6 +356,12 @@ + { "mo-timeout", o_int, &maxoctets_timeout, + "Check for traffic limit every N seconds", OPT_PRIO | OPT_LLIMIT | 1 }, + #endif ++#ifdef USE_EAPTLS ++ { "only-update-crl-server", o_bool, &only_update_crl_server, ++ "Update server CA CRLs and exit", 1 }, ++ { "only-update-crl-client", o_bool, &only_update_crl_client, ++ "Update client CA CRLs and exit", 1 }, ++#endif /* USE_EAPTLS */ + + { NULL } + }; +diff -aur ppp-2.4.6.orig/pppd/pathnames.h ppp-2.4.6/pppd/pathnames.h +--- ppp-2.4.6.orig/pppd/pathnames.h 2014-04-03 21:31:37.000000000 +0200 ++++ ppp-2.4.6/pppd/pathnames.h 2014-04-03 21:32:29.083293817 +0200 +@@ -25,6 +25,13 @@ + #define _PATH_UPAPFILE _ROOT_PATH "/etc/ppp/pap-secrets" + #define _PATH_CHAPFILE _ROOT_PATH "/etc/ppp/chap-secrets" + #define _PATH_SRPFILE _ROOT_PATH "/etc/ppp/srp-secrets" ++ ++#ifdef USE_EAPTLS ++#define _PATH_EAPTLSCLIFILE _ROOT_PATH "/etc/ppp/eaptls-client" ++#define _PATH_EAPTLSSERVFILE _ROOT_PATH "/etc/ppp/eaptls-server" ++#define _PATH_OPENSSLCONFFILE _ROOT_PATH "/etc/ppp/openssl.cnf" ++#endif /* USE_EAPTLS */ ++ + #define _PATH_SYSOPTIONS _ROOT_PATH "/etc/ppp/options" + #define _PATH_IPUP _ROOT_PATH "/etc/ppp/ip-up" + #define _PATH_IPDOWN _ROOT_PATH "/etc/ppp/ip-down" +diff -aur ppp-2.4.6.orig/pppd/plugins/Makefile.linux ppp-2.4.6/pppd/plugins/Makefile.linux +--- ppp-2.4.6.orig/pppd/plugins/Makefile.linux 2014-04-03 21:31:37.000000000 +0200 ++++ ppp-2.4.6/pppd/plugins/Makefile.linux 2014-04-03 21:32:29.083293817 +0200 +@@ -8,6 +8,9 @@ + LIBS = + INSTALL = install + ++# EAP-TLS ++CFLAGS += -DUSE_EAPTLS=1 ++ + DESTDIR = $(INSTROOT)@DESTDIR@ + BINDIR = $(DESTDIR)/sbin + MANDIR = $(DESTDIR)/share/man/man8 +diff -aur ppp-2.4.6.orig/pppd/plugins/passprompt.c ppp-2.4.6/pppd/plugins/passprompt.c +--- ppp-2.4.6.orig/pppd/plugins/passprompt.c 2014-01-02 05:42:08.000000000 +0100 ++++ ppp-2.4.6/pppd/plugins/passprompt.c 2014-04-03 21:32:29.083293817 +0200 +@@ -107,4 +107,7 @@ + { + add_options(options); + pap_passwd_hook = promptpass; ++#ifdef USE_EAPTLS ++ eaptls_passwd_hook = promptpass; ++#endif + } +diff -aur ppp-2.4.6.orig/pppd/plugins/passwordfd.c ppp-2.4.6/pppd/plugins/passwordfd.c +--- ppp-2.4.6.orig/pppd/plugins/passwordfd.c 2014-04-03 21:31:37.000000000 +0200 ++++ ppp-2.4.6/pppd/plugins/passwordfd.c 2014-04-03 21:32:29.083293817 +0200 +@@ -75,4 +75,9 @@ + + chap_check_hook = pwfd_check; + chap_passwd_hook = pwfd_passwd; ++ ++#ifdef USE_EAPTLS ++ eaptls_check_hook = pwfd_check; ++ eaptls_passwd_hook = pwfd_passwd; ++#endif + } +diff -aur ppp-2.4.6.orig/pppd/pppd.h ppp-2.4.6/pppd/pppd.h +--- ppp-2.4.6.orig/pppd/pppd.h 2014-04-03 21:31:37.000000000 +0200 ++++ ppp-2.4.6/pppd/pppd.h 2014-04-03 21:32:29.083293817 +0200 +@@ -329,6 +329,10 @@ + extern bool dryrun; /* check everything, print options, exit */ + extern int child_wait; /* # seconds to wait for children at end */ + ++#ifdef USE_EAPTLS ++extern char *crl_dir; ++#endif /* USE_EAPTLS */ ++ + #ifdef MAXOCTETS + extern unsigned int maxoctets; /* Maximum octetes per session (in bytes) */ + extern int maxoctets_dir; /* Direction : +@@ -743,6 +747,11 @@ + extern int (*chap_passwd_hook) __P((char *user, char *passwd)); + extern void (*multilink_join_hook) __P((void)); + ++#ifdef USE_EAPTLS ++extern int (*eaptls_check_hook) __P((void)); ++extern int (*eaptls_passwd_hook) __P((char *user, char *passwd)); ++#endif ++ + /* Let a plugin snoop sent and received packets. Useful for L2TP */ + extern void (*snoop_recv_hook) __P((unsigned char *p, int len)); + extern void (*snoop_send_hook) __P((unsigned char *p, int len)); +diff -Naur ppp-2.4.5/README.eap-tls ppp-2.4.5-eaptls-mppe-0.99/README.eap-tls +--- ppp-2.4.5/README.eap-tls 1970-01-01 01:00:00.000000000 +0100 ++++ ppp-2.4.5-eaptls-mppe-0.99/README.eap-tls 2010-10-01 15:17:54.205272328 +0200 +@@ -0,0 +1,169 @@ ++EAP-TLS authentication support for PPP ++====================================== ++ ++1. Intro ++ ++ The Extensible Authentication Protocol (EAP; RFC 3748) is a ++ security protocol that can be used with PPP. It provides a means ++ to plug in multiple optional authentication methods. ++ ++ Transport Level Security (TLS; RFC 2246) provides for mutual ++ authentication, integrity-protected ciphersuite negotiation and ++ key exchange between two endpoints. It also provides for optional ++ MPPE encryption. ++ ++ EAP-TLS (RFC 2716) incapsulates the TLS messages in EAP packets, ++ allowing TLS mutual authentication to be used as a generic EAP ++ mechanism. It also provides optional encryption using the MPPE ++ protocol. ++ ++ This patch provide EAP-TLS support to pppd. ++ This authentication method can be used in both client or server ++ mode. ++ ++2. Building ++ ++ To build pppd with EAP-TLS support, OpenSSL (http://www.openssl.org) ++ is required. Any version from 0.9.7 should work. ++ ++ Configure, compile, and install as usual. ++ ++3. Configuration ++ ++ On the client side there are two ways to configure EAP-TLS: ++ ++ 1. supply the appropriate 'ca', 'cert' and 'key' command-line parameters ++ ++ 2. edit the /etc/ppp/eaptls-client file. ++ Insert a line for each system with which you use EAP-TLS. ++ The line is composed of this fields separated by tab: ++ ++ - Client name ++ The name used by the client for authentication, can be * ++ - Server name ++ The name of the server, can be * ++ - Client certificate file ++ The file containing the certificate chain for the ++ client in PEM format ++ - Server certificate file ++ If you want to specify the certificate that the ++ server is allowed to use, put the certificate file name. ++ Else put a dash '-'. ++ - CA certificate file ++ The file containing the trusted CA certificates in PEM ++ format. ++ - Client private key file ++ The file containing the client private key in PEM format. ++ ++ ++ On the server side edit the /etc/ppp/eaptls-server file. ++ Insert a line for each system with which you use EAP-TLS. ++ The line is composed of this fields separated by tab: ++ ++ - Client name ++ The name used by the client for authentication, can be * ++ - Server name ++ The name of the server, can be * ++ - Client certificate file ++ If you want to specify the certificate that the ++ client is allowed to use, put the certificate file name. ++ Else put a dash '-'. ++ - Server certificate file ++ The file containing the certificate chain for the ++ server in PEM format ++ - CA certificate file ++ The file containing the trusted CA certificates in PEM ++ format. ++ - Client private key file ++ The file containing the server private key in PEM format. ++ - addresses ++ A list of IP addresses the client is allowed to use. ++ ++ ++ OpenSSL engine support is included starting with v0.95 of this patch. ++ Currently the only engine tested is the 'pkcs11' engine (hardware token ++ support). To use the 'pksc11' engine: ++ - Use a special private key fileiname in the /etc/ppp/eaptls-client file: ++ : ++ e.g. ++ pkcs11:123456 ++ ++ - The certificate can also be loaded from the 'pkcs11' engine using ++ a special client certificate filename in the /etc/ppp/eaptls-client file: ++ : ++ e.g. ++ pkcs11:123456 ++ ++ - Create an /etc/ppp/openssl.cnf file to load the right OpenSSL engine prior ++ to starting 'pppd'. A sample openssl.cnf file is ++ ++ openssl_conf = openssl_def ++ ++ [ openssl_def ] ++ engines = engine_section ++ ++ [ engine_section ] ++ pkcs11 = pkcs11_section ++ ++ [ pkcs11_section ] ++ engine_id = pkcs11 ++ dynamic_path = /usr/lib64/openssl/engines/engine_pkcs11.so ++ MODULE_PATH = /usr/lib64/libeTPkcs11.so ++ init = 0 ++ ++ - There are two ways to specify a password/PIN for the PKCS11 engine: ++ - inside the openssl.cnf file using ++ PIN = your-secret-pin ++ Note The keyword 'PIN' is case sensitive! ++ - Using the 'password' in the ppp options file. ++ From v0.97 of the eap-tls patch the password can also be supplied ++ using the appropriate 'eaptls_passwd_hook' (see plugins/passprompt.c ++ for an example). ++ ++ ++4. Options ++ ++ These pppd options are available: ++ ++ ca ++ Use the CA public certificate found in in PEM format ++ cert ++ Use the client public certificate found in in PEM format ++ or in engine:engine_id format ++ key ++ Use the client private key found in in PEM format ++ or in engine:engine_id format ++ crl-dir ++ Use CRL files from dir. It contains CRL files in PEM ++ format and each file contains a CRL. The files are looked up ++ by the issuer name hash value. Use the c_rehash utility ++ to create necessary links. ++ need-peer-eap ++ If the peer doesn't ask us to authenticate or doesn't use eap ++ to authenticate us, disconnect. ++ ++ Note: ++ password-encrypted certificates can be used as of v0.94 of this ++ patch. The password for the eap-tls.key file is specified using ++ the regular ++ password .... ++ statement in the ppp options file, or by using the appropriate ++ plugin which supplies a 'eaptls_passwd_hook' routine. ++ ++5. Connecting ++ ++ If you're setting up a pppd server, edit the EAP-TLS configuration file ++ as written above and then run pppd with the 'auth' option to authenticate ++ the client. The EAP-TLS method will be used if the other eap methods can't ++ be used (no secrets). ++ ++ If you're setting up a client, edit the configuration file and then run ++ pppd with 'remotename' option to specify the server name. Add the ++ 'need-peer-eap' option if you want to be sure the peer ask you to ++ authenticate (and to use eap) and to disconnect if it doesn't. ++ ++6. Notes ++ ++ This is experimental code. ++ Send suggestions and comments to Jan Just Keijser ++ diff --git a/network/connection/ppp/files/ppp.logrotate b/network/connection/ppp/files/ppp.logrotate new file mode 100644 index 0000000000..7a72979ca9 --- /dev/null +++ b/network/connection/ppp/files/ppp.logrotate @@ -0,0 +1,10 @@ +# Logrotate file for ppp RPM + +/var/log/ppp/connect-errors { + missingok + compress + notifempty + daily + rotate 5 + create 0600 root root +} diff --git a/network/connection/ppp/files/ppp.pamd b/network/connection/ppp/files/ppp.pamd new file mode 100644 index 0000000000..280a77a2a6 --- /dev/null +++ b/network/connection/ppp/files/ppp.pamd @@ -0,0 +1,5 @@ +#%PAM-1.0 +auth include system-auth +account required pam_nologin.so +account include system-auth +session include system-auth diff --git a/network/connection/ppp/files/tmpfiles.conf b/network/connection/ppp/files/tmpfiles.conf new file mode 100644 index 0000000000..5ecd2ee8ce --- /dev/null +++ b/network/connection/ppp/files/tmpfiles.conf @@ -0,0 +1 @@ +d /run/ppp 0755 root root diff --git a/network/connection/ppp/pspec.xml b/network/connection/ppp/pspec.xml new file mode 100644 index 0000000000..52c0e7b3ab --- /dev/null +++ b/network/connection/ppp/pspec.xml @@ -0,0 +1,124 @@ + + + + + ppp + http://samba.org/ppp + + PisiLinux Community + admins@pisilinux.org + + BSD + GPLv2 + service + Point-to-point protocol - patched for PPPOE + The Point-to-Point Protocol (PPP) provides a standard way to transmit datagrams over a serial link. + http://samba.org/ftp/ppp/ppp-2.4.6.tar.gz + http://www.netservers.net.uk/gpl/ppp-dhcpc.tgz + + libpcap-devel + + + gentoo/02_all_make-vars.patch + gentoo/04_all_mpls.patch + gentoo/06_all_killaddr-smarter.patch + gentoo/08_all_wait-children.patch + gentoo/10_all_defaultgateway.patch + gentoo/12_all_linkpidfile.patch + gentoo/16_all_auth-fail.patch + gentoo/18_all_defaultmetric.patch + gentoo/20_all_dev-ppp.patch + gentoo/24_all_passwordfd-read-early.patch + gentoo/26_all_pppd-usepeerwins.patch + gentoo/28_all_connect-errors.patch + gentoo/30_all_Makefile.patch + gentoo/32_all_pado-timeout.patch + gentoo/34_all_lcp-echo-adaptive.patch + ppp-2.3.6-sample.patch + ppp-2.4.3-fix64.patch + ppp-2.4.2-change_resolv_conf.patch + nostrip.patch + ppp-2.4.3-local.patch + ppp-2.4.3-ipv6-accept-remote.patch + ppp-2.4.5-ppp_resolv.patch + ppp-2.4.5-var_run_ppp.patch + ppp-2.4.6-eaptls-mppe-0.99.patch + + + + + ppp + + libpcap + + + /etc + /usr/lib/tmpfiles.d/ppp.conf + /usr/lib + /usr/sbin + /usr/share/doc + /usr/share/man + /run/ppp + + + tmpfiles.conf + options-pptp + options-pppoe + chat-default + ip-up + ip-down + confd.ppp0 + ppp.pamd + ppp.logrotate + + + + + ppp-devel + Development files for ppp + + ppp + + + /usr/include + + + + + + 2014-04-03 + 2.4.6 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-10 + 2.4.5 + Add tmpfiles.conf + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-12 + 2.4.5 + service.py no longer needed. + Marcin Bojara + marcin@pisilinux.org + + + 2013-05-23 + 2.4.5 + Add service.py + Marcin Bojara + marcin@pisilinux.org + + + 2010-10-13 + 2.4.5 + First release + Gökcen Eraslan + admins@pisilinux.org + + + diff --git a/network/connection/ppp/translations.xml b/network/connection/ppp/translations.xml new file mode 100644 index 0000000000..3790632cfc --- /dev/null +++ b/network/connection/ppp/translations.xml @@ -0,0 +1,13 @@ + + + + ppp + Modem ile internet erişimi için PPP (point to point protocol) noktadan noktaya erişim protokolü + PPP protokolü veriyi seri bir bağlantı üzerinden transfer etmek için standart bir yol sağlar. + + + + ppp-devel + ppp için geliştirme dosyaları + + diff --git a/network/connection/wpa_supplicant/actions.py b/network/connection/wpa_supplicant/actions.py new file mode 100644 index 0000000000..405c8c3936 --- /dev/null +++ b/network/connection/wpa_supplicant/actions.py @@ -0,0 +1,36 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def build(): + shelltools.cd("wpa_supplicant") + + #Enable syslog output + cflags = get.CFLAGS() + " -DCONFIG_DEBUG_SYSLOG" + shelltools.export("CFLAGS", cflags) + + autotools.make("V=1") + autotools.make("eapol_test") + +def install(): + shelltools.cd("wpa_supplicant") + + for bin in ["wpa_supplicant", "wpa_cli", "wpa_passphrase", "eapol_test"]: + pisitools.dosbin(bin) + + # Install dbus files + pisitools.insinto("/usr/share/dbus-1/system-services", "dbus/*.service") + pisitools.insinto("/etc/dbus-1/system.d", "dbus/dbus-wpa_supplicant.conf", "wpa_supplicant.conf") + + pisitools.doman("doc/docbook/*.5") + pisitools.doman("doc/docbook/*.8") + pisitools.newdoc("wpa_supplicant.conf", "wpa_supplicant.conf.example") + + pisitools.dodoc("ChangeLog", "../COPYING", "eap_testing.txt", "../README", "todo.txt") \ No newline at end of file diff --git a/network/connection/wpa_supplicant/comar/service.py b/network/connection/wpa_supplicant/comar/service.py new file mode 100644 index 0000000000..6b5016e823 --- /dev/null +++ b/network/connection/wpa_supplicant/comar/service.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +from comar.service import * + +serviceType = "local" +serviceDefault = "off" #NM starts wpa_supp automatically. Use at your own risk if you start manually +serviceDesc = _({"en": "WPA Daemon", + "tr": "WPA Hizmeti"}) + +PIDFILE = "/run/wpa_supplicant.pid" + +@synchronized +def start(): + startService(command="/usr/sbin/wpa_supplicant", + args="-WuB -P%s %s" % (PIDFILE, config.get("OPTS", "")), + pidfile=PIDFILE, + donotify=True) + +@synchronized +def stop(): + stopService(pidfile=PIDFILE, + donotify=True) + +def status(): + return isServiceRunning(PIDFILE) diff --git a/network/connection/wpa_supplicant/files/0001-AP-Verify-that-HT40-secondary-channel-is-supported.patch b/network/connection/wpa_supplicant/files/0001-AP-Verify-that-HT40-secondary-channel-is-supported.patch new file mode 100644 index 0000000000..b2fef12c1a --- /dev/null +++ b/network/connection/wpa_supplicant/files/0001-AP-Verify-that-HT40-secondary-channel-is-supported.patch @@ -0,0 +1,52 @@ +From dea50507861b79f522c70500fe978072f143af8f Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Fri, 12 Nov 2010 18:31:56 +0200 +Subject: [PATCH 1/3] AP: Verify that HT40 secondary channel is supported + +Refuse to enable HT40 mode AP unless both the primary and secondary +channels are enabled for AP use. +(cherry picked from commit 8ea3dd21d2e8b760612af0c7b6a3bb5b89ba7304) +--- + src/ap/hw_features.c | 26 ++++++++++++++++++++++++++ + 1 files changed, 26 insertions(+), 0 deletions(-) + +diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c +index 0159c72..7fc5b83 100644 +--- a/src/ap/hw_features.c ++++ b/src/ap/hw_features.c +@@ -642,6 +642,32 @@ int hostapd_select_hw_mode(struct hostapd_iface *iface) + break; + } + } ++ if (ok && iface->conf->secondary_channel) { ++ int sec_ok = 0; ++ int sec_chan = iface->conf->channel + ++ iface->conf->secondary_channel * 4; ++ for (j = 0; j < iface->current_mode->num_channels; j++) { ++ struct hostapd_channel_data *chan = ++ &iface->current_mode->channels[j]; ++ if (!(chan->flag & HOSTAPD_CHAN_DISABLED) && ++ (chan->chan == sec_chan)) { ++ sec_ok = 1; ++ break; ++ } ++ } ++ if (!sec_ok) { ++ hostapd_logger(iface->bss[0], NULL, ++ HOSTAPD_MODULE_IEEE80211, ++ HOSTAPD_LEVEL_WARNING, ++ "Configured HT40 secondary channel " ++ "(%d) not found from the channel list " ++ "of current mode (%d) %s", ++ sec_chan, iface->current_mode->mode, ++ hostapd_hw_mode_txt( ++ iface->current_mode->mode)); ++ ok = 0; ++ } ++ } + if (iface->conf->channel == 0) { + /* TODO: could request a scan of neighboring BSSes and select + * the channel automatically */ +-- +1.7.3.4 + diff --git a/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-assoc-timeout.patch b/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-assoc-timeout.patch new file mode 100644 index 0000000000..c3b3568c6b --- /dev/null +++ b/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-assoc-timeout.patch @@ -0,0 +1,16 @@ +diff -up wpa_supplicant-0.7.3/wpa_supplicant/wpa_supplicant.c.assoc-timeout wpa_supplicant-0.7.3/wpa_supplicant/wpa_supplicant.c +--- wpa_supplicant-0.7.3/wpa_supplicant/wpa_supplicant.c.assoc-timeout 2010-09-07 10:43:39.000000000 -0500 ++++ wpa_supplicant-0.7.3/wpa_supplicant/wpa_supplicant.c 2010-12-07 18:57:45.163457000 -0600 +@@ -1262,10 +1262,10 @@ void wpa_supplicant_associate(struct wpa + + if (assoc_failed) { + /* give IBSS a bit more time */ +- timeout = ssid->mode == WPAS_MODE_IBSS ? 10 : 5; ++ timeout = ssid->mode == WPAS_MODE_IBSS ? 20 : 10; + } else if (wpa_s->conf->ap_scan == 1) { + /* give IBSS a bit more time */ +- timeout = ssid->mode == WPAS_MODE_IBSS ? 20 : 10; ++ timeout = ssid->mode == WPAS_MODE_IBSS ? 20 : 20; + } + wpa_supplicant_req_auth_timeout(wpa_s, timeout, 0); + } diff --git a/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-flush-debug-output.patch b/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-flush-debug-output.patch new file mode 100644 index 0000000000..a686851867 --- /dev/null +++ b/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-flush-debug-output.patch @@ -0,0 +1,49 @@ +--- wpa_supplicant-0.6.3/src/utils/wpa_debug.c.flush-debug 2007-07-30 23:15:34.000000000 -0400 ++++ wpa_supplicant-0.6.3/src/utils/wpa_debug.c 2007-07-30 23:17:06.000000000 -0400 +@@ -157,6 +157,7 @@ void wpa_debug_print_timestamp(void) + if (out_file) { + fprintf(out_file, "%ld.%06u: ", (long) tv.sec, + (unsigned int) tv.usec); ++ fflush(out_file); + } else + #endif /* CONFIG_DEBUG_FILE */ + printf("%ld.%06u: ", (long) tv.sec, (unsigned int) tv.usec); +@@ -185,6 +186,7 @@ void wpa_printf(int level, char *fmt, .. + if (out_file) { + vfprintf(out_file, fmt, ap); + fprintf(out_file, "\n"); ++ fflush(out_file); + } else { + #endif /* CONFIG_DEBUG_FILE */ + vprintf(fmt, ap); +@@ -217,6 +219,7 @@ static void _wpa_hexdump(int level, cons + fprintf(out_file, " [REMOVED]"); + } + fprintf(out_file, "\n"); ++ fflush(out_file); + } else { + #endif /* CONFIG_DEBUG_FILE */ + printf("%s - hexdump(len=%lu):", title, (unsigned long) len); +@@ -262,12 +265,14 @@ static void _wpa_hexdump_ascii(int level + fprintf(out_file, + "%s - hexdump_ascii(len=%lu): [REMOVED]\n", + title, (unsigned long) len); ++ fflush(out_file); + return; + } + if (buf == NULL) { + fprintf(out_file, + "%s - hexdump_ascii(len=%lu): [NULL]\n", + title, (unsigned long) len); ++ fflush(out_file); + return; + } + fprintf(out_file, "%s - hexdump_ascii(len=%lu):\n", +@@ -292,6 +297,7 @@ static void _wpa_hexdump_ascii(int level + pos += llen; + len -= llen; + } ++ fflush(out_file); + } else { + #endif /* CONFIG_DEBUG_FILE */ + if (!show) { diff --git a/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-openssl-more-algs.patch b/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-openssl-more-algs.patch new file mode 100644 index 0000000000..cd058837c0 --- /dev/null +++ b/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-openssl-more-algs.patch @@ -0,0 +1,15 @@ +diff -up wpa_supplicant-0.7.3/src/crypto/tls_openssl.c.more-openssl-algs wpa_supplicant-0.7.3/src/crypto/tls_openssl.c +--- wpa_supplicant-0.7.3/src/crypto/tls_openssl.c.more-openssl-algs 2010-09-07 10:43:39.000000000 -0500 ++++ wpa_supplicant-0.7.3/src/crypto/tls_openssl.c 2010-12-08 10:01:02.967664004 -0600 +@@ -710,6 +710,11 @@ void * tls_init(const struct tls_config + #endif /* OPENSSL_FIPS */ + #endif /* CONFIG_FIPS */ + SSL_load_error_strings(); ++ /* Only add potentially weak hashes and encryption algorithms ++ * when FIPS mode is not enabled. ++ */ ++ if (!conf || !conf->fips_mode) ++ OpenSSL_add_all_algorithms(); + SSL_library_init(); + #ifndef OPENSSL_NO_SHA256 + EVP_add_digest(EVP_sha256()); diff --git a/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-quiet-scan-results-message.patch b/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-quiet-scan-results-message.patch new file mode 100644 index 0000000000..afabdf6ec8 --- /dev/null +++ b/network/connection/wpa_supplicant/files/fedora/wpa_supplicant-quiet-scan-results-message.patch @@ -0,0 +1,12 @@ +diff -up wpa_supplicant-0.6.7/wpa_supplicant/events.c.scan-results-msg wpa_supplicant-0.6.7/wpa_supplicant/events.c +--- wpa_supplicant-0.6.7/wpa_supplicant/events.c.scan-results-msg 2009-01-30 12:08:34.000000000 -0500 ++++ wpa_supplicant-0.6.7/wpa_supplicant/events.c 2009-01-30 12:08:37.000000000 -0500 +@@ -911,7 +911,7 @@ static void wpa_supplicant_event_scan_re + } + + wpa_dbg(wpa_s, MSG_DEBUG, "New scan results available"); +- wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_SCAN_RESULTS); ++ wpa_msg_ctrl(wpa_s, MSG_DEBUG, WPA_EVENT_SCAN_RESULTS); + wpas_notify_scan_results(wpa_s); + + wpas_notify_scan_done(wpa_s, 1); \ No newline at end of file diff --git a/network/connection/wpa_supplicant/files/mandriva/wpa_supplicant-0.6.3-WEP232.patch b/network/connection/wpa_supplicant/files/mandriva/wpa_supplicant-0.6.3-WEP232.patch new file mode 100644 index 0000000000..bbb5b8f4f6 --- /dev/null +++ b/network/connection/wpa_supplicant/files/mandriva/wpa_supplicant-0.6.3-WEP232.patch @@ -0,0 +1,12 @@ +diff -p -up wpa_supplicant-0.6.3/wpa_supplicant/config_ssid.h.WEP232 wpa_supplicant-0.6.3/wpa_supplicant/config_ssid.h +--- wpa_supplicant-0.6.3/wpa_supplicant/config_ssid.h.WEP232 2008-02-23 03:45:24.000000000 +0100 ++++ wpa_supplicant-0.6.3/wpa_supplicant/config_ssid.h 2008-03-31 22:28:29.000000000 +0200 +@@ -189,7 +189,7 @@ struct wpa_ssid { + #endif /* IEEE8021X_EAPOL */ + + #define NUM_WEP_KEYS 4 +-#define MAX_WEP_KEY_LEN 16 ++#define MAX_WEP_KEY_LEN 32 + /** + * wep_key - WEP keys + */ diff --git a/network/connection/wpa_supplicant/files/suse/wpa_supplicant-driver-wext-debug.patch b/network/connection/wpa_supplicant/files/suse/wpa_supplicant-driver-wext-debug.patch new file mode 100644 index 0000000000..343c8168ff --- /dev/null +++ b/network/connection/wpa_supplicant/files/suse/wpa_supplicant-driver-wext-debug.patch @@ -0,0 +1,143 @@ +Index: src/drivers/driver_wext.c +=================================================================== +--- src/drivers/driver_wext.c.orig ++++ src/drivers/driver_wext.c +@@ -1901,19 +1901,26 @@ int wpa_driver_wext_associate(void *priv + * SIOCSIWENCODE here. + */ + if (drv->auth_alg_fallback && +- wpa_driver_wext_auth_alg_fallback(drv, params) < 0) ++ wpa_driver_wext_auth_alg_fallback(drv, params) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because auth_alg_fallback failed", __FUNCTION__); + ret = -1; ++ } + + if (!params->bssid && +- wpa_driver_wext_set_bssid(drv, NULL) < 0) ++ wpa_driver_wext_set_bssid(drv, NULL) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_bssid failed", __FUNCTION__); + ret = -1; ++ } + + /* TODO: should consider getting wpa version and cipher/key_mgmt suites + * from configuration, not from here, where only the selected suite is + * available */ + if (wpa_driver_wext_set_gen_ie(drv, params->wpa_ie, params->wpa_ie_len) +- < 0) ++ < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_gen_ie failed", __FUNCTION__); + ret = -1; ++ } ++ + if (params->wpa_ie == NULL || params->wpa_ie_len == 0) + value = IW_AUTH_WPA_VERSION_DISABLED; + else if (params->wpa_ie[0] == WLAN_EID_RSN) +@@ -1921,27 +1928,41 @@ int wpa_driver_wext_associate(void *priv + else + value = IW_AUTH_WPA_VERSION_WPA; + if (wpa_driver_wext_set_auth_param(drv, +- IW_AUTH_WPA_VERSION, value) < 0) ++ IW_AUTH_WPA_VERSION, value) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(WPA_VERSION) failed", __FUNCTION__); + ret = -1; ++ } ++ + value = wpa_driver_wext_cipher2wext(params->pairwise_suite); + if (wpa_driver_wext_set_auth_param(drv, +- IW_AUTH_CIPHER_PAIRWISE, value) < 0) ++ IW_AUTH_CIPHER_PAIRWISE, value) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(CIPHER_PAIRWISE) failed", __FUNCTION__); + ret = -1; ++ } ++ + value = wpa_driver_wext_cipher2wext(params->group_suite); + if (wpa_driver_wext_set_auth_param(drv, +- IW_AUTH_CIPHER_GROUP, value) < 0) ++ IW_AUTH_CIPHER_GROUP, value) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(CIPHER_GROUP) failed", __FUNCTION__); + ret = -1; ++ } ++ + value = wpa_driver_wext_keymgmt2wext(params->key_mgmt_suite); + if (wpa_driver_wext_set_auth_param(drv, +- IW_AUTH_KEY_MGMT, value) < 0) ++ IW_AUTH_KEY_MGMT, value) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(KEY_MGMT) failed", __FUNCTION__); + ret = -1; ++ } ++ + value = params->key_mgmt_suite != KEY_MGMT_NONE || + params->pairwise_suite != CIPHER_NONE || + params->group_suite != CIPHER_NONE || + params->wpa_ie_len; + if (wpa_driver_wext_set_auth_param(drv, +- IW_AUTH_PRIVACY_INVOKED, value) < 0) ++ IW_AUTH_PRIVACY_INVOKED, value) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(PRIVACY_INVOKED) failed", __FUNCTION__); + ret = -1; ++ } + + /* Allow unencrypted EAPOL messages even if pairwise keys are set when + * not using WPA. IEEE 802.1X specifies that these frames are not +@@ -1952,12 +1973,18 @@ int wpa_driver_wext_associate(void *priv + else + allow_unencrypted_eapol = 1; + +- if (wpa_driver_wext_set_psk(drv, params->psk) < 0) ++ if (wpa_driver_wext_set_psk(drv, params->psk) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_psk failed", __FUNCTION__); + ret = -1; ++ } ++ + if (wpa_driver_wext_set_auth_param(drv, + IW_AUTH_RX_UNENCRYPTED_EAPOL, +- allow_unencrypted_eapol) < 0) ++ allow_unencrypted_eapol) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(RX_UNENCRYPTED_EAPOL) failed", __FUNCTION__); + ret = -1; ++ } ++ + #ifdef CONFIG_IEEE80211W + switch (params->mgmt_frame_protection) { + case NO_MGMT_FRAME_PROTECTION: +@@ -1970,17 +1997,25 @@ int wpa_driver_wext_associate(void *priv + value = IW_AUTH_MFP_REQUIRED; + break; + }; +- if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_MFP, value) < 0) ++ if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_MFP, value) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(IW_AUTH_MFP) failed", __FUNCTION__); + ret = -1; ++ } + #endif /* CONFIG_IEEE80211W */ +- if (params->freq && wpa_driver_wext_set_freq(drv, params->freq) < 0) ++ if (params->freq && wpa_driver_wext_set_freq(drv, params->freq) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_freq failed", __FUNCTION__); + ret = -1; ++ } + if (!drv->cfg80211 && +- wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0) ++ wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_ssid failed", __FUNCTION__); + ret = -1; ++ } + if (params->bssid && +- wpa_driver_wext_set_bssid(drv, params->bssid) < 0) ++ wpa_driver_wext_set_bssid(drv, params->bssid) < 0) { ++ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_bssid failed", __FUNCTION__); + ret = -1; ++ } + if (drv->cfg80211 && + wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0) + ret = -1; +@@ -2008,6 +2043,10 @@ static int wpa_driver_wext_set_auth_alg( + res = wpa_driver_wext_set_auth_param(drv, IW_AUTH_80211_AUTH_ALG, + algs); + drv->auth_alg_fallback = res == -2; ++ ++ if (res == -2) ++ wpa_printf(MSG_DEBUG, "%s: falling back to ENCODE for AUTH", __FUNCTION__); ++ + return res; + } + diff --git a/network/connection/wpa_supplicant/files/suse/wpa_supplicant-errormsg.patch b/network/connection/wpa_supplicant/files/suse/wpa_supplicant-errormsg.patch new file mode 100644 index 0000000000..f2ac0cb707 --- /dev/null +++ b/network/connection/wpa_supplicant/files/suse/wpa_supplicant-errormsg.patch @@ -0,0 +1,19 @@ +Index: src/drivers/driver_wext.c +=================================================================== +--- src/drivers/driver_wext.c.orig ++++ src/drivers/driver_wext.c +@@ -54,12 +54,13 @@ int wpa_driver_wext_set_auth_param(struc + iwr.u.param.value = value; + + if (ioctl(drv->ioctl_sock, SIOCSIWAUTH, &iwr) < 0) { ++ int saved_errno = errno; + if (errno != EOPNOTSUPP) { + wpa_printf(MSG_DEBUG, "WEXT: SIOCSIWAUTH(param %d " + "value 0x%x) failed: %s)", + idx, value, strerror(errno)); + } +- ret = errno == EOPNOTSUPP ? -2 : -1; ++ ret = saved_errno == EOPNOTSUPP ? -2 : -1; + } + + return ret; diff --git a/network/connection/wpa_supplicant/files/ubuntu/01_use_pkg-config_for_pcsc-lite_module.patch b/network/connection/wpa_supplicant/files/ubuntu/01_use_pkg-config_for_pcsc-lite_module.patch new file mode 100644 index 0000000000..d41a507a1e --- /dev/null +++ b/network/connection/wpa_supplicant/files/ubuntu/01_use_pkg-config_for_pcsc-lite_module.patch @@ -0,0 +1,17 @@ +From: Reinhard Tartler +References: none +Description: Use pkg-config for libpcsclite linkage flags + At least in debian, we can rely on pkg-config being available and + returning more accurate ldflags. + +--- a/wpa_supplicant/Makefile ++++ b/wpa_supplicant/Makefile +@@ -691,7 +691,7 @@ ifdef CONFIG_NATIVE_WINDOWS + #dynamic symbol loading that is now used in pcsc_funcs.c + #LIBS += -lwinscard + else +-LIBS += -lpcsclite -lpthread ++LIBS += $(shell pkg-config --libs libpcsclite) + endif + endif + diff --git a/network/connection/wpa_supplicant/files/wpa_supplicant-1.0-dbus-path-fix.patch b/network/connection/wpa_supplicant/files/wpa_supplicant-1.0-dbus-path-fix.patch new file mode 100644 index 0000000000..976d71b0ec --- /dev/null +++ b/network/connection/wpa_supplicant/files/wpa_supplicant-1.0-dbus-path-fix.patch @@ -0,0 +1,20 @@ +diff -aurp a/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in b/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in +--- a/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in 2012-05-15 09:00:03.048545044 +0000 ++++ b/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in 2012-05-15 09:01:19.759550509 +0000 +@@ -1,5 +1,5 @@ + [D-BUS Service] + Name=fi.epitest.hostap.WPASupplicant +-Exec=@BINDIR@/wpa_supplicant -u ++Exec=/usr/sbin/wpa_supplicant -u + User=root + SystemdService=wpa_supplicant.service +diff -aurp a/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in b/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in +--- a/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in 2012-05-15 09:00:03.048545044 +0000 ++++ b/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in 2012-05-15 09:01:28.727551913 +0000 +@@ -1,5 +1,5 @@ + [D-BUS Service] + Name=fi.w1.wpa_supplicant1 +-Exec=@BINDIR@/wpa_supplicant -u ++Exec=/usr/sbin/wpa_supplicant -u + User=root + SystemdService=wpa_supplicant.service diff --git a/network/connection/wpa_supplicant/files/wpa_supplicant-1.0-do-not-call-dbus-functions-with-NULL-path.patch b/network/connection/wpa_supplicant/files/wpa_supplicant-1.0-do-not-call-dbus-functions-with-NULL-path.patch new file mode 100644 index 0000000000..bbff73e13d --- /dev/null +++ b/network/connection/wpa_supplicant/files/wpa_supplicant-1.0-do-not-call-dbus-functions-with-NULL-path.patch @@ -0,0 +1,60 @@ +diff -aurp a/wpa_supplicant/dbus/dbus_new_helpers.c b/wpa_supplicant/dbus/dbus_new_helpers.c +--- a/wpa_supplicant/dbus/dbus_new_helpers.c 2012-05-15 07:28:37.616150164 +0000 ++++ b/wpa_supplicant/dbus/dbus_new_helpers.c 2012-05-15 07:30:21.904157611 +0000 +@@ -882,7 +882,7 @@ void wpa_dbus_mark_property_changed(stru + const struct wpa_dbus_property_desc *dsc; + int i = 0; + +- if (iface == NULL) ++ if (iface == NULL || path == NULL) + return; + + dbus_connection_get_object_path_data(iface->con, path, +diff -aurp a/wpa_supplicant/dbus/dbus_old.c b/wpa_supplicant/dbus/dbus_old.c +--- a/wpa_supplicant/dbus/dbus_old.c 2012-05-15 07:28:29.502149373 +0000 ++++ b/wpa_supplicant/dbus/dbus_old.c 2012-05-15 07:30:48.859162441 +0000 +@@ -379,7 +379,7 @@ void wpa_supplicant_dbus_notify_scan_res + DBusMessage *_signal; + + /* Do nothing if the control interface is not turned on */ +- if (iface == NULL) ++ if (iface == NULL || wpa_s->dbus_path == NULL) + return; + + _signal = dbus_message_new_signal(wpa_s->dbus_path, +@@ -419,7 +419,7 @@ void wpa_supplicant_dbus_notify_state_ch + if (wpa_s->global == NULL) + return; + iface = wpa_s->global->dbus; +- if (iface == NULL) ++ if (iface == NULL || wpa_s->dbus_path == NULL) + return; + + /* Only send signal if state really changed */ +@@ -478,7 +478,7 @@ void wpa_supplicant_dbus_notify_scanning + dbus_bool_t scanning = wpa_s->scanning ? TRUE : FALSE; + + /* Do nothing if the control interface is not turned on */ +- if (iface == NULL) ++ if (iface == NULL || wpa_s->dbus_path == NULL) + return; + + _signal = dbus_message_new_signal(wpa_s->dbus_path, +@@ -513,7 +513,7 @@ void wpa_supplicant_dbus_notify_wps_cred + if (wpa_s->global == NULL) + return; + iface = wpa_s->global->dbus; +- if (iface == NULL) ++ if (iface == NULL || wpa_s->dbus_path == NULL) + return; + + _signal = dbus_message_new_signal(wpa_s->dbus_path, +@@ -564,7 +564,7 @@ void wpa_supplicant_dbus_notify_certific + if (wpa_s->global == NULL) + return; + iface = wpa_s->global->dbus; +- if (iface == NULL) ++ if (iface == NULL || wpa_s->dbus_path == NULL) + return; + + _signal = dbus_message_new_signal(wpa_s->dbus_path, diff --git a/network/connection/wpa_supplicant/files/wpa_supplicant-1.0-generate-libeap-peer.patch b/network/connection/wpa_supplicant/files/wpa_supplicant-1.0-generate-libeap-peer.patch new file mode 100644 index 0000000000..c84e51dfde --- /dev/null +++ b/network/connection/wpa_supplicant/files/wpa_supplicant-1.0-generate-libeap-peer.patch @@ -0,0 +1,347 @@ +diff -Naurp a/src/eap_peer/eap_methods.c b/src/eap_peer/eap_methods.c +--- a/src/eap_peer/eap_methods.c 2012-05-15 08:23:17.151386999 +0000 ++++ b/src/eap_peer/eap_methods.c 2012-05-15 08:23:57.403389760 +0000 +@@ -342,6 +342,120 @@ int eap_peer_method_register(struct eap_ + + + /** ++ * eap_peer_register_methods - Register all known EAP peer methods ++ * ++ * This function is called at program start to register all compiled ++ * in EAP peer methods. ++ */ ++int eap_peer_register_methods(void) ++{ ++ int ret = 0; ++ ++#ifdef EAP_MD5 ++ if (ret == 0) ++ ret = eap_peer_md5_register(); ++#endif /* EAP_MD5 */ ++ ++#ifdef EAP_TLS ++ if (ret == 0) ++ ret = eap_peer_tls_register(); ++#endif /* EAP_TLS */ ++ ++#ifdef EAP_MSCHAPv2 ++ if (ret == 0) ++ ret = eap_peer_mschapv2_register(); ++#endif /* EAP_MSCHAPv2 */ ++ ++#ifdef EAP_PEAP ++ if (ret == 0) ++ ret = eap_peer_peap_register(); ++#endif /* EAP_PEAP */ ++ ++#ifdef EAP_TTLS ++ if (ret == 0) ++ ret = eap_peer_ttls_register(); ++#endif /* EAP_TTLS */ ++ ++#ifdef EAP_GTC ++ if (ret == 0) ++ ret = eap_peer_gtc_register(); ++#endif /* EAP_GTC */ ++ ++#ifdef EAP_OTP ++ if (ret == 0) ++ ret = eap_peer_otp_register(); ++#endif /* EAP_OTP */ ++ ++#ifdef EAP_SIM ++ if (ret == 0) ++ ret = eap_peer_sim_register(); ++#endif /* EAP_SIM */ ++ ++#ifdef EAP_LEAP ++ if (ret == 0) ++ ret = eap_peer_leap_register(); ++#endif /* EAP_LEAP */ ++ ++#ifdef EAP_PSK ++ if (ret == 0) ++ ret = eap_peer_psk_register(); ++#endif /* EAP_PSK */ ++ ++#ifdef EAP_AKA ++ if (ret == 0) ++ ret = eap_peer_aka_register(); ++#endif /* EAP_AKA */ ++ ++#ifdef EAP_AKA_PRIME ++ if (ret == 0) ++ ret = eap_peer_aka_prime_register(); ++#endif /* EAP_AKA_PRIME */ ++ ++#ifdef EAP_FAST ++ if (ret == 0) ++ ret = eap_peer_fast_register(); ++#endif /* EAP_FAST */ ++ ++#ifdef EAP_PAX ++ if (ret == 0) ++ ret = eap_peer_pax_register(); ++#endif /* EAP_PAX */ ++ ++#ifdef EAP_SAKE ++ if (ret == 0) ++ ret = eap_peer_sake_register(); ++#endif /* EAP_SAKE */ ++ ++#ifdef EAP_GPSK ++ if (ret == 0) ++ ret = eap_peer_gpsk_register(); ++#endif /* EAP_GPSK */ ++ ++#ifdef EAP_WSC ++ if (ret == 0) ++ ret = eap_peer_wsc_register(); ++#endif /* EAP_WSC */ ++ ++#ifdef EAP_IKEV2 ++ if (ret == 0) ++ ret = eap_peer_ikev2_register(); ++#endif /* EAP_IKEV2 */ ++ ++#ifdef EAP_VENDOR_TEST ++ if (ret == 0) ++ ret = eap_peer_vendor_test_register(); ++#endif /* EAP_VENDOR_TEST */ ++ ++#ifdef EAP_TNC ++ if (ret == 0) ++ ret = eap_peer_tnc_register(); ++#endif /* EAP_TNC */ ++ ++ return ret; ++} ++ ++ ++/** + * eap_peer_unregister_methods - Unregister EAP peer methods + * + * This function is called at program termination to unregister all EAP peer +diff -Naurp a/src/eap_peer/eap_methods.h b/src/eap_peer/eap_methods.h +--- a/src/eap_peer/eap_methods.h 2012-05-15 08:23:17.151386999 +0000 ++++ b/src/eap_peer/eap_methods.h 2012-05-15 08:23:57.404389735 +0000 +@@ -32,6 +32,7 @@ EapType eap_peer_get_type(const char *na + const char * eap_get_name(int vendor, EapType type); + size_t eap_get_names(char *buf, size_t buflen); + char ** eap_get_names_as_string_array(size_t *num); ++int eap_peer_register_methods(void); + void eap_peer_unregister_methods(void); + + #else /* IEEE8021X_EAPOL */ +diff -Naurp a/src/eap_peer/libeap0.pc b/src/eap_peer/libeap0.pc +--- a/src/eap_peer/libeap0.pc 1970-01-01 00:00:00.000000000 +0000 ++++ b/src/eap_peer/libeap0.pc 2012-05-15 08:23:57.404389735 +0000 +@@ -0,0 +1,10 @@ ++prefix=/usr ++exec_prefix=/usr ++libdir=${exec_prefix}/lib ++includedir=${prefix}/include/eap_peer ++ ++Name: libeap0 ++Description: EAP Peer Library API ++Version: 0.7.2 ++Libs: -L${libdir} -leap ++Cflags: -I${includedir} +diff -Naurp a/src/eap_peer/Makefile b/src/eap_peer/Makefile +--- a/src/eap_peer/Makefile 2012-05-15 08:23:17.152386964 +0000 ++++ b/src/eap_peer/Makefile 2012-05-15 08:23:57.403389760 +0000 +@@ -1,11 +1,186 @@ +-all: +- @echo Nothing to be made. ++LIBEAP_NAME = libeap ++LIBEAP_CURRENT = 0 ++LIBEAP_REVISION = 0 ++LIBEAP_AGE = 0 ++ ++LIBEAP = $(LIBEAP_NAME).so.$(LIBEAP_CURRENT).$(LIBEAP_REVISION).$(LIBEAP_AGE) ++LIBEAP_SO = $(LIBEAP_NAME).so.$(LIBEAP_CURRENT) ++ ++.PHONY: all clean install uninstall ++ ++all: $(LIBEAP) ++ ++ifndef CC ++CC=gcc ++endif ++ ++ifndef CFLAGS ++CFLAGS = -MMD -O0 -Wall -g ++endif ++ ++CONFIG_TLS=openssl ++ ++INCLUDE_INSTALL_DIR=/usr/include/eap_peer ++ ++# Got to use override all across the board, otherwise a 'make ++# CFLAGS=XX' will kill us because the command line's CFLAGS will ++# overwrite Make's and we'll loose all the infrastructure it sets. ++override CFLAGS += -I. -I.. -I../crypto -I../utils -I../common ++ ++# at least for now, need to include config_ssid.h and config_blob.h from ++# wpa_supplicant directory ++override CFLAGS += -I ../../wpa_supplicant ++ ++OBJS_both += ../utils/common.o ++OBJS_both += ../utils/os_unix.o ++OBJS_both += ../utils/wpa_debug.o ++OBJS_both += ../utils/base64.o ++OBJS_both += ../utils/wpabuf.o ++OBJS_both += ../crypto/md5.o ++OBJS_both += ../crypto/sha1.o ++OBJS_both += ../crypto/sha1-tlsprf.o ++OBJS_both += ../crypto/aes-encblock.o ++OBJS_both += ../crypto/aes-wrap.o ++OBJS_both += ../crypto/aes-ctr.o ++OBJS_both += ../crypto/aes-eax.o ++OBJS_both += ../crypto/aes-omac1.o ++OBJS_both += ../crypto/ms_funcs.o ++OBJS_both += ../crypto/sha256.o ++ ++ ++OBJS_both += ../eap_common/eap_peap_common.o ++OBJS_both += ../eap_common/eap_psk_common.o ++OBJS_both += ../eap_common/eap_pax_common.o ++OBJS_both += ../eap_common/eap_sake_common.o ++OBJS_both += ../eap_common/eap_gpsk_common.o ++OBJS_both += ../eap_common/chap.o ++ ++OBJS_peer += ../eap_peer/eap_tls.o ++OBJS_peer += ../eap_peer/eap_peap.o ++OBJS_peer += ../eap_peer/eap_ttls.o ++OBJS_peer += ../eap_peer/eap_md5.o ++OBJS_peer += ../eap_peer/eap_mschapv2.o ++OBJS_peer += ../eap_peer/mschapv2.o ++OBJS_peer += ../eap_peer/eap_otp.o ++OBJS_peer += ../eap_peer/eap_gtc.o ++OBJS_peer += ../eap_peer/eap_leap.o ++OBJS_peer += ../eap_peer/eap_psk.o ++OBJS_peer += ../eap_peer/eap_pax.o ++OBJS_peer += ../eap_peer/eap_sake.o ++OBJS_peer += ../eap_peer/eap_gpsk.o ++OBJS_peer += ../eap_peer/eap.o ++OBJS_peer += ../eap_common/eap_common.o ++OBJS_peer += ../eap_peer/eap_methods.o ++OBJS_peer += ../eap_peer/eap_tls_common.o ++ ++override CFLAGS += -DEAP_TLS ++override CFLAGS += -DEAP_PEAP ++override CFLAGS += -DEAP_TTLS ++override CFLAGS += -DEAP_MD5 ++override CFLAGS += -DEAP_MSCHAPv2 ++override CFLAGS += -DEAP_GTC ++override CFLAGS += -DEAP_OTP ++override CFLAGS += -DEAP_LEAP ++override CFLAGS += -DEAP_PSK ++override CFLAGS += -DEAP_PAX ++override CFLAGS += -DEAP_SAKE ++override CFLAGS += -DEAP_GPSK -DEAP_GPSK_SHA256 ++override CFLAGS += -DEAP_TLS_FUNCS ++ ++override CFLAGS += -DIEEE8021X_EAPOL ++ ++ifeq ($(CONFIG_TLS), openssl) ++override CFLAGS += -DEAP_TLS_OPENSSL ++OBJS_both += ../crypto/tls_openssl.o ++OBJS_both += ../crypto/crypto_openssl.o ++LIBS += -lssl -lcrypto ++override CFLAGS += -DINTERNAL_SHA256 ++endif ++ ++ifeq ($(CONFIG_TLS), internal) ++OBJS_both += ../crypto/tls_internal.o ++OBJS_both += ../tls/tlsv1_common.o ../../tls/tlsv1_record.o ++OBJS_both += ../tls/tlsv1_cred.o ++OBJS_both += ../tls/asn1.o ../../tls/x509v3.o ++OBJS_both += ../crypto/crypto_internal.o ../../tls/rsa.o ../../tls/bignum.o ++ ++OBJS_peer += ../tls/tlsv1_client.o ++OBJS_peer += ../tls/tlsv1_client_write.o ../../tls/tlsv1_client_read.o ++override CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT ++ ++OBJS_server += ../tls/tlsv1_server.o ++OBJS_server += ../tls/tlsv1_server_write.o ../../tls/tlsv1_server_read.o ++override CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER ++ ++override CFLAGS += -DCONFIG_TLS_INTERNAL ++override CFLAGS += -DCONFIG_CRYPTO_INTERNAL ++override CFLAGS += -DCONFIG_INTERNAL_X509 ++override CFLAGS += -DINTERNAL_AES ++override CFLAGS += -DINTERNAL_SHA1 ++override CFLAGS += -DINTERNAL_SHA256 ++override CFLAGS += -DINTERNAL_MD5 ++override CFLAGS += -DINTERNAL_MD4 ++override CFLAGS += -DINTERNAL_DES ++ifdef CONFIG_INTERNAL_LIBTOMMATH ++override CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH ++else ++LIBS += -ltommath ++endif ++endif ++ ++ifndef LDO ++LDO=$(CC) ++endif ++ ++ ++OBJS_lib=$(OBJS_both) $(OBJS_peer) ++ ++ #$(OBJS_server) ++ ++override CFLAGS += -fPIC -DPIC ++LDFLAGS += -shared ++ ++$(LIBEAP): $(OBJS_lib) ++ $(LDO) $(LDFLAGS) $(OBJS_lib) -Wl,-soname -Wl,$(LIBEAP_SO) -o $(LIBEAP) $(LIBS) ++ ++ ++UTIL_HEADERS = ../utils/includes.h ../utils/common.h \ ++ ../utils/wpabuf.h ../utils/build_config.h \ ++ ../utils/os.h ../utils/wpa_debug.h ++COMMON_HEADERS = ../common/defs.h ++EAP_COMMON_HEADERS = ../eap_common/eap_defs.h ++MAIN_HEADERS = eap.h eap_methods.h eap_config.h ++CRYPTO_HEADERS = ../crypto/tls.h ++ ++install: ++ ++ mkdir -p $(DESTDIR)/usr/lib ++# copy the lib file to std lib location ++ cp $(LIBEAP) $(DESTDIR)/usr/lib ++ ln -fs $(LIBEAP_SO) $(DESTDIR)/usr/lib/$(LIBEAP_NAME).so ++ ln -fs $(LIBEAP_NAME).so.0.0.0 $(DESTDIR)/usr/lib/$(LIBEAP_NAME).so.0 ++ ++# copy the headers reqd by apps using eap peer library in its own subfolder under /usr/include ++ mkdir -p \ ++ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/eap_common \ ++ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/common \ ++ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/util \ ++ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/crypto ++ install -m 0644 $(EAP_COMMON_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/eap_common ++ install -m 0644 $(COMMON_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/common ++ install -m 0644 $(CRYPTO_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/crypto ++ install -m 0644 $(UTIL_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/util ++ install -m 0644 $(MAIN_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/ ++ ++ mkdir -p $(DESTDIR)/usr/lib/pkgconfig ++ cp libeap0.pc $(DESTDIR)/usr/lib/pkgconfig ++ ++uninstall: ++ ++ rm $(DESTDIR)/usr/lib/$(LIBEAP) ++ rm -fr $(DESTDIR)/$(INCLUDE_INSTALL_DIR) ++ rm -f $(DESTDIR)/usr/lib/pkgconfig/libeap0.pc + + clean: +- rm -f *~ *.o *.so *.d ++ rm -f *~ *.o *.so *.d libeap.a $(LIBEAP) $(OBJS_lib) + +-install: +- if ls *.so >/dev/null 2>&1; then \ +- install -d $(DESTDIR)$(LIBDIR)/wpa_supplicant && \ +- cp *.so $(DESTDIR)$(LIBDIR)/wpa_supplicant \ +- ; fi diff --git a/network/connection/wpa_supplicant/files/wpa_supplicant.conf b/network/connection/wpa_supplicant/files/wpa_supplicant.conf new file mode 100644 index 0000000000..97f44c1632 --- /dev/null +++ b/network/connection/wpa_supplicant/files/wpa_supplicant.conf @@ -0,0 +1,35 @@ +# wpa_supplicant.conf +# WPA-PSK ile kimlikleme yapılmasını zorunlu kılan kablosuz erişim noktaları ile +# Microsoft IAS Radius sunucu kimliklemesinin wpa_supplicant ile nasıl yapılacağını +# örnekleyen ayar dosyası. İlgili yerleri doldurmanız gerekir. +# +# wpa_supplicant'ın desteklediği diğer ayar işlemleri için: +# /usr/share/doc/wpasupplicant/wpa_supplicant.conf.example dosyasına bakınız. + +# Root'un wpa_cli ile bağlantıyı izlemesi için +ctrl_interface=/run/wpa_supplicant + +eapol_version=1 +ap_scan=1 +fast_reauth=1 + +# WPA-PSK kimlikleme gerektiren kablosuz erişim noktaları için ayarlar +network={ +# Erişim noktasının SSID'si + ssid="SSID" +# Erişim cihazının WPA parolası + psk="Parola1234" +# Bu bağlantının önceliğinin 1. sırada olduğu belirtiliyor + priority=1 +} + +# MS IAS Radius sunucusunda kimlikleme için gereken ayarlar +network={ + ssid="SSID" + key_mgmt=WPA-EAP + eap=PEAP + identity="ALAN_ADI\KULLANICI" + password="Parola1234" + phase1="auth=MSCHAPV2" + priority=2 +} diff --git a/network/connection/wpa_supplicant/files/wpa_supplicant.conf.fedora b/network/connection/wpa_supplicant/files/wpa_supplicant.conf.fedora new file mode 100644 index 0000000000..e3d3cac784 --- /dev/null +++ b/network/connection/wpa_supplicant/files/wpa_supplicant.conf.fedora @@ -0,0 +1,3 @@ +ctrl_interface=/run/wpa_supplicant +ctrl_interface_group=wheel + diff --git a/network/connection/wpa_supplicant/files/wpa_supplicant.confd b/network/connection/wpa_supplicant/files/wpa_supplicant.confd new file mode 100644 index 0000000000..3333e8a2d8 --- /dev/null +++ b/network/connection/wpa_supplicant/files/wpa_supplicant.confd @@ -0,0 +1,16 @@ +# Use the flag "-i" before each of your interfaces, like so: +# INTERFACES="-ieth1 -iwlan0" +INTERFACES="" + +# Use the flag "-D" before each driver, like so: +# DRIVERS="-Dwext" +DRIVERS="" + +# Other arguments +# -u Enable the D-Bus interface (required for use with NetworkManager) +# -f Log to /var/log/wpa_supplicant.log +# -P Write pid file to /run/wpa_supplicant.pid +# required to return proper codes by init scripts (e.g. double "start" action) +# -B to daemonize that has to be used together with -P is already in wpa_supplicant.init.d +OTHER_ARGS="-u -f /var/log/wpa_supplicant.log -P /run/wpa_supplicant.pid" + diff --git a/network/connection/wpa_supplicant/files/wpa_supplicant.config b/network/connection/wpa_supplicant/files/wpa_supplicant.config new file mode 100644 index 0000000000..e95469fe2b --- /dev/null +++ b/network/connection/wpa_supplicant/files/wpa_supplicant.config @@ -0,0 +1,47 @@ + CONFIG_CTRL_IFACE=y + CONFIG_CTRL_IFACE_DBUS=y + CONFIG_CTRL_IFACE_DBUS_NEW=y + CONFIG_CTRL_IFACE_DBUS_INTRO=y + #CONFIG_DRIVER_HOSTAP=y + #CONFIG_DRIVER_HERMES=y + #CONFIG_DRIVER_MADWIFI=y + CONFIG_DRIVER_ATMEL=y + CONFIG_DRIVER_WEXT=y + CONFIG_DRIVER_NL80211=y + CONFIG_DRIVER_NDISWRAPPER=y + #CONFIG_DRIVER_PRISM54=y + CONFIG_DRIVER_WIRED=y + #CONFIG_DRIVER_BROADCOM=y + #CONFIG_DRIVER_IPW=y + #CONFIG_DRIVER_BSD=y + #CONFIG_DRIVER_NDIS=y + CONFIG_WIRELESS_EXTENSION=y + CONFIG_IEEE8021X_EAPOL=y + CONFIG_EAP_MD5=y + CONFIG_EAP_MSCHAPV2=y + CONFIG_EAP_TLS=y + CONFIG_EAP_PEAP=y + CONFIG_EAP_TTLS=y + CONFIG_EAP_FAST=y + CONFIG_EAP_GTC=y + CONFIG_EAP_OTP=y + CONFIG_EAP_SIM=y + CONFIG_EAP_AKA=y + CONFIG_EAP_PSK=y + CONFIG_EAP_PAX=y + CONFIG_EAP_LEAP=y + #CONFIG_PCSC=y + CONFIG_EAP_SAKE=y + CONFIG_EAP_GPSK=y + CONFIG_EAP_GPSK_SHA256=y + CONFIG_EAP_TNC=y + CONFIG_WPS=y + CONFIG_EAP_IKEV2=y + CONFIG_PKCS12=y + CONFIG_SMARTCARD=y + CONFIG_DEBUG_FILE=y + CFLAGS += -I/usr/include/libnl3 + CONFIG_IPV6=y + CONFIG_LIBNL32=y + CONFIG_PEERKEY=y + CONFIG_READLINE=y \ No newline at end of file diff --git a/network/connection/wpa_supplicant/files/wpa_supplicant.logrotate b/network/connection/wpa_supplicant/files/wpa_supplicant.logrotate new file mode 100644 index 0000000000..bd7ef91cc3 --- /dev/null +++ b/network/connection/wpa_supplicant/files/wpa_supplicant.logrotate @@ -0,0 +1,6 @@ +/var/log/wpa_supplicant.log { + missingok + notifempty + size 30k + create 0600 root root +} diff --git a/network/connection/wpa_supplicant/files/wpa_supplicant.py b/network/connection/wpa_supplicant/files/wpa_supplicant.py new file mode 100644 index 0000000000..d079729b43 --- /dev/null +++ b/network/connection/wpa_supplicant/files/wpa_supplicant.py @@ -0,0 +1,250 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import dbus + +WPAS_DBUS_OPATH = "/fi/epitest/hostap/WPASupplicant" +WPAS_DBUS_INTERFACES_OPATH = "/fi/epitest/hostap/WPASupplicant/Interfaces" + +WPAS_DBUS_SERVICE = "fi.epitest.hostap.WPASupplicant" +WPAS_DBUS_INTERFACE = "fi.epitest.hostap.WPASupplicant" +WPAS_DBUS_INTERFACES_INTERFACE = "fi.epitest.hostap.WPASupplicant.Interface" +WPAS_DBUS_NETWORK_INTERFACE = "fi.epitest.hostap.WPASupplicant.Network" +WPAS_DBUS_BSSID_INTERFACE = "fi.epitest.hostap.WPASupplicant.BSSID" + +TIMEOUT = 60 + +class PasswordLengthError(Exception): + pass + +class WPA_Supplicant_Network: + def __init__(self, bus, path): + self.bus = bus + self.path = path + self.net_obj = self.bus.get_object(WPAS_DBUS_SERVICE, path) + self.net = dbus.Interface(self.net_obj, WPAS_DBUS_NETWORK_INTERFACE) + + # dict keys: ssid, bssid, key_mgmt, psk, scan_ssid, pairwise, group, eap, identity, + # anonymous_identity, ca_cert, ca_cert2, client_cert, client_cert2, private_key, private_key2, + # private_key_passwd, private_key2_passwd, phase1, phase2, eapol_flags + # + # Example: setNetwork({"ssid":dbus.String("MySSID", variant_level=1)), + # "psk":dbus.String("MyPassword", variant_level=1))}) + def setNetwork(self, options): + self.net.set(options) + + def enableNetwork(self): + self.net.enable() + + def disableNetwork(self): + self.net.disable() + +class WPA_Supplicant_Interface: + def __init__(self, bus, ifname, path): + self.bus = bus + self.ifname = ifname + self.path = path + self.if_obj = self.bus.get_object(WPAS_DBUS_SERVICE, path) + self.iface = dbus.Interface(self. if_obj, WPAS_DBUS_INTERFACES_INTERFACE) + + def scan(self): + self.iface.scan() + + def scanResults(self): + return self.iface.scanResults() + + def addNetwork(self): + path = self.iface.addNetwork() + return self.getNetwork(path) + + def removeNetwork(self, network): + self.iface.removeNetwork(network) + + def selectNetwork(self, network): + self.iface.selectNetwork(network) + + def getNetworkPath(self, network_id): + return "%s/Networks/%d" % (self.path, network_id) + + def getNetworkById(self, network_id): + return WPA_Supplicant_Network(self.bus, self.getNetworkPath(network_id)) + + def getNetwork(self, network): + return WPA_Supplicant_Network(self.bus, network) + + # mode should be between 0 and 2 + def setAPScan(self, mode): + self.iface.setAPScan(dbus.UInt32(mode)) + + def disconnect(self): + self.iface.disconnect() + + def getState(self): + return self.iface.state() + + def getCapabilities(self): + return self.iface.capabilities() + +class WPA_Supplicant: + def __init__(self): + self.bus = dbus.SystemBus() + self.wpas_obj = self.bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH) + self.wpas = dbus.Interface(self.wpas_obj, WPAS_DBUS_INTERFACE) + + def getInterface(self, ifname): + path = self.wpas.getInterface(ifname) + return WPA_Supplicant_Interface(self.bus, ifname, path) + + # driver=wext, hostap, prism54, madwifi, atmel, ndiswrapper, ipw, wired + def addInterface(self, ifname, driver): + self.wpas.addInterface(ifname, {'driver': dbus.String(driver, variant_level=1)}) + return self.getInterface(ifname) + + def removeInterface(self, ifname): + try: + iface_path = self.wpas.getInterface(ifname) + except dbus.DBusException: + iface_path = None + if iface_path: + self.wpas.removeInterface(dbus.ObjectPath(iface_path)) + +def detectWpaDriver(ifname): + import os + import sys + import pardus.netutils + # if device is an ethernet device, driver is "wired" + device = pardus.netutils.IF(ifname) + if (device.isEthernet()) and (not device.isWireless()): + return "wired" + path = os.path.join("/sys/class/net/", ifname, "device/driver/module") + modname = None + if os.path.exists(path): + modname = os.readlink(path).split("/")[-1] + if "hostap" in modname: + return "hostap" + if "prism54" in modname: + return "prism54" + if "atmel" in modname: + return "atmel" + # we fallback to wext + # wext is the generic driver for ipw2100, ipw2200, ndiswrapper > 1.12, madwifi etc... + return "wext" + +def getWpaInterface(ifname): + wpa = WPA_Supplicant() + try: + iface = wpa.getInterface(ifname) + except dbus.DBusException: + driver = detectWpaDriver(ifname) + iface = wpa.addInterface(ifname, driver) + return iface + +def waitForAuthenticationComplete(iface, timeout, wait = 0.1): + import time + while timeout > 0: + if iface.getState() == "COMPLETED": + return True + else: + timeout -= wait + time.sleep(wait) + return False + +def checkServiceState(serviceName): + bus = dbus.SystemBus() + obj = bus.get_object("tr.org.pardus.comar", "/package/%s" % serviceName) + state = obj.info(dbus_interface="tr.org.pardus.comar.System.Service")[2] + return state in ("on", "started") + +def isDBusServiceActive(): + return True + +def isWpaServiceActive(): + return checkServiceState("wpa_supplicant") + +def isWpaServiceUsable(): + return isDBusServiceActive() and isWpaServiceActive() + +def startWpaService(): + if not isWpaServiceActive(): + bus = dbus.SystemBus() + obj = bus.get_object("tr.org.pardus.comar", "/package/wpa_supplicant") + obj.start(dbus_interface="tr.org.pardus.comar.System.Service") + import time + timeout = 10 + while timeout > 0: + try: + bus = dbus.SystemBus() + net_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH) + net = dbus.Interface(net_obj, WPAS_DBUS_NETWORK_INTERFACE) + except dbus.DBusException: + time.sleep(0.1) + timeout -= 0.2 + continue + return True + return False + +def setWpaAuthentication(ifname, ssid, password, timeout = TIMEOUT): + password_length = len(password) + if (password_length < 8) or (password_length > 63): + raise PasswordLengthError("Password length should be between 8 and 63") + iface = getWpaInterface(ifname) + network = iface.addNetwork() + network.setNetwork({"ssid": dbus.String(ssid, variant_level=1), "psk": dbus.String(password, variant_level=1)}) + iface.selectNetwork(network.path) + authentication = waitForAuthenticationComplete(iface, timeout) + if not authentication: + disableAuthentication(ifname) + return authentication + +def disableAuthentication(ifname): + wpa = WPA_Supplicant() + wpa.removeInterface(ifname) + bus = dbus.SystemBus() + obj = bus.get_object("tr.org.pardus.comar", "/package/wpa_supplicant") + obj.stop(dbus_interface="tr.org.pardus.comar.System.Service") + +class Wpa_EAP: + ssid = "" + phase1 = "" + phase2 = "" + key_mgmt = "IEEE8021X" + eap = "PEAP" + anonymous_identity = "" + ca_cert = "" + client_cert = "" + private_key = "" + private_key_passwd = "" + + def __init__(self, ifname): + self.ifname = ifname + self.iface = getWpaInterface(ifname) + self.network = self.iface.addNetwork() + + def authenticate(self, username, password, timeout = TIMEOUT): + basic = {"ssid": dbus.String(self.ssid, variant_level=1), + "key_mgmt": dbus.String(self.key_mgmt, variant_level=1), + "eap": dbus.String(self.eap, variant_level=1), + "identity": dbus.String(username, variant_level=1)} + + if self.client_cert: + basic["client_cert"] = dbus.String(self.client_cert, variant_level=1) + if self.ca_cert: + basic["ca_cert"] = dbus.String(self.ca_cert, variant_level=1) + if self.private_key: + basic["private_key"] = dbus.String(self.private_key, variant_level=1) + if self.private_key_passwd: + basic["private_key_passwd"] = dbus.String(self.private_key_passwd, variant_level=1) + if self.phase2: + basic["phase2"] = dbus.String("auth=%s"%self.phase2, variant_level=1) + if password: + basic["password"] = dbus.String(password, variant_level=1) + if self.anonymous_identity: + basic["anonymous_identity"] = dbus.String(self.anonymous_identity, variant_level=1) + + self.network.setNetwork(basic) + + self.iface.selectNetwork(self.network.path) + authentication = waitForAuthenticationComplete(self.iface, timeout) + if not authentication: + disableAuthentication(self.ifname) + return authentication diff --git a/network/connection/wpa_supplicant/pspec.xml b/network/connection/wpa_supplicant/pspec.xml new file mode 100644 index 0000000000..f2e9f7ff8d --- /dev/null +++ b/network/connection/wpa_supplicant/pspec.xml @@ -0,0 +1,100 @@ + + + + + wpa_supplicant + http://hostap.epitest.fi/wpa_supplicant/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + BSD + service + IEEE 802.1X/WPA supplicant for secure wireless transfers + wpa_supplicant is a WPA supplicant with support for WPA and WPA2. + http://hostap.epitest.fi/releases/wpa_supplicant-2.1.tar.gz + + wpa_supplicant.config + + + libnl-devel + + + ubuntu/01_use_pkg-config_for_pcsc-lite_module.patch + + wpa_supplicant-1.0-dbus-path-fix.patch + wpa_supplicant-1.0-do-not-call-dbus-functions-with-NULL-path.patch + mandriva/wpa_supplicant-0.6.3-WEP232.patch + fedora/wpa_supplicant-openssl-more-algs.patch + fedora/wpa_supplicant-flush-debug-output.patch + + + fedora/wpa_supplicant-assoc-timeout.patch + + + + suse/wpa_supplicant-errormsg.patch + + + + + + + + + + wpa_supplicant + + libnl + + + /etc + /etc/dbus-1 + /usr/sbin + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/dbus-1/system-services + /run + + + wpa_supplicant.conf + + wpa_supplicant.confd + wpa_supplicant.logrotate + wpa_supplicant.py + + + + System.Service + + + + + + 2014-06-02 + 2.1 + Version Bump. + Aydın Demirel + aydin.demirel@pisilinux.org + + + 2013-03-02 + 2.0 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-10-14 + 1.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/network/connection/wpa_supplicant/translations.xml b/network/connection/wpa_supplicant/translations.xml new file mode 100644 index 0000000000..23e5f8b874 --- /dev/null +++ b/network/connection/wpa_supplicant/translations.xml @@ -0,0 +1,8 @@ + + + + wpa_supplicant + Güvenli kablosuz erişim için IEEE 802.1X/WPA sağlayıcı + WPA ve WPA2 desteği olan ve Linux, BSD ve Windows ortamları için bir WPA istemcisidir. + + From d0e6c898259a15a536c27ea68a15cf127bf56858 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:11:14 +0300 Subject: [PATCH 093/175] moved into main for pisi 2.0 --- network/filter/component.xml | 3 + network/filter/iproute2/actions.py | 25 + .../iproute2-2.6.29-IPPROTO_IP_for_SA.patch | 11 + .../files/iproute2-2.6.29-kernel.patch | 11 + .../files/iproute2-2.6.31-tc_modules.patch | 12 + .../files/iproute2-example-cbq-service.patch | 22 + .../iproute2/files/iproute2-libxtables6.diff | 31 + .../filter/iproute2/files/iproute2-xt.diff | 22 + network/filter/iproute2/pspec.xml | 65 +++ network/filter/iproute2/translations.xml | 8 + network/filter/iptables/actions.py | 32 ++ network/filter/iptables/comar/firewall.py | 528 ++++++++++++++++++ network/filter/iptables/comar/service.py | 69 +++ network/filter/iptables/pspec.xml | 89 +++ network/filter/iptables/translations.xml | 13 + 15 files changed, 941 insertions(+) create mode 100644 network/filter/component.xml create mode 100644 network/filter/iproute2/actions.py create mode 100644 network/filter/iproute2/files/iproute2-2.6.29-IPPROTO_IP_for_SA.patch create mode 100644 network/filter/iproute2/files/iproute2-2.6.29-kernel.patch create mode 100644 network/filter/iproute2/files/iproute2-2.6.31-tc_modules.patch create mode 100644 network/filter/iproute2/files/iproute2-example-cbq-service.patch create mode 100644 network/filter/iproute2/files/iproute2-libxtables6.diff create mode 100644 network/filter/iproute2/files/iproute2-xt.diff create mode 100644 network/filter/iproute2/pspec.xml create mode 100644 network/filter/iproute2/translations.xml create mode 100644 network/filter/iptables/actions.py create mode 100644 network/filter/iptables/comar/firewall.py create mode 100644 network/filter/iptables/comar/service.py create mode 100644 network/filter/iptables/pspec.xml create mode 100644 network/filter/iptables/translations.xml diff --git a/network/filter/component.xml b/network/filter/component.xml new file mode 100644 index 0000000000..898a0b6bd9 --- /dev/null +++ b/network/filter/component.xml @@ -0,0 +1,3 @@ + + network.filter + diff --git a/network/filter/iproute2/actions.py b/network/filter/iproute2/actions.py new file mode 100644 index 0000000000..e12f5fe31b --- /dev/null +++ b/network/filter/iproute2/actions.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.configure() + +def build(): + autotools.make('CC="%s" RPM_OPT_FLAGS="%s"' % (get.CC(), get.CFLAGS())) + +def install(): + autotools.rawInstall("DESTDIR=\"%s\" \ + SBINDIR=/sbin \ + DOCDIR=/%s/%s \ + MANDIR=/usr/share/man \ + " % (get.installDIR(), get.docDIR(), get.srcNAME())) + + pisitools.dodir("/usr/sbin") + pisitools.dodir("/var/lib/arpd") diff --git a/network/filter/iproute2/files/iproute2-2.6.29-IPPROTO_IP_for_SA.patch b/network/filter/iproute2/files/iproute2-2.6.29-IPPROTO_IP_for_SA.patch new file mode 100644 index 0000000000..48ffcb4274 --- /dev/null +++ b/network/filter/iproute2/files/iproute2-2.6.29-IPPROTO_IP_for_SA.patch @@ -0,0 +1,11 @@ +diff -up iproute2-2.6.29/ip/ipxfrm.c.old iproute2-2.6.29/ip/ipxfrm.c +--- iproute2-2.6.29/ip/ipxfrm.c.old 2009-03-24 23:15:14.000000000 +0100 ++++ iproute2-2.6.29/ip/ipxfrm.c 2009-04-24 09:35:58.203735119 +0200 +@@ -1156,6 +1156,7 @@ static int xfrm_selector_upspec_parse(st + case IPPROTO_UDP: + case IPPROTO_SCTP: + case IPPROTO_DCCP: ++ case IPPROTO_IP: /* to allow shared SA for different protocols */ + break; + default: + fprintf(stderr, "\"sport\" and \"dport\" are invalid with proto=%s\n", strxf_proto(sel->proto)); diff --git a/network/filter/iproute2/files/iproute2-2.6.29-kernel.patch b/network/filter/iproute2/files/iproute2-2.6.29-kernel.patch new file mode 100644 index 0000000000..df9125ac0c --- /dev/null +++ b/network/filter/iproute2/files/iproute2-2.6.29-kernel.patch @@ -0,0 +1,11 @@ +diff -up iproute2-20091009/Makefile.kernel iproute2-20091009/Makefile +--- iproute2-20091009/Makefile.kernel 2009-09-21 10:26:11.000000000 +0200 ++++ iproute2-20091009/Makefile 2009-10-09 12:27:03.687382422 +0200 +@@ -6,6 +6,7 @@ CONFDIR=/etc/iproute2 + DOCDIR=/share/doc/iproute2 + MANDIR=/share/man + ARPDDIR=/var/lib/arpd ++KERNEL_INCLUDE=/usr/include + + # Path to db_185.h include + DBM_INCLUDE:=$(ROOTDIR)/usr/include diff --git a/network/filter/iproute2/files/iproute2-2.6.31-tc_modules.patch b/network/filter/iproute2/files/iproute2-2.6.31-tc_modules.patch new file mode 100644 index 0000000000..0daa17bf8e --- /dev/null +++ b/network/filter/iproute2/files/iproute2-2.6.31-tc_modules.patch @@ -0,0 +1,12 @@ +diff -up iproute2-2.6.31/Makefile.old iproute2-2.6.31/Makefile +--- iproute2-2.6.31/Makefile.old 2010-01-04 12:46:47.000000000 +0100 ++++ iproute2-2.6.31/Makefile 2010-01-04 12:50:17.396384644 +0100 +@@ -13,7 +13,7 @@ DBM_INCLUDE:=$(ROOTDIR)/usr/include + + SHARED_LIBS = y + +-DEFINES= -DRESOLVE_HOSTNAMES -DLIBDIR=\"$(LIBDIR)\" ++DEFINES= -DRESOLVE_HOSTNAMES -DLIBDIR=\"$(LIBDIR)\" -DIPT_LIB_DIR=\"$(IPT_LIB_DIR)\" + ifneq ($(SHARED_LIBS),y) + DEFINES+= -DNO_SHARED_LIBS + endif diff --git a/network/filter/iproute2/files/iproute2-example-cbq-service.patch b/network/filter/iproute2/files/iproute2-example-cbq-service.patch new file mode 100644 index 0000000000..f8b4978161 --- /dev/null +++ b/network/filter/iproute2/files/iproute2-example-cbq-service.patch @@ -0,0 +1,22 @@ +diff -up iproute2-20091106/examples/cbq.init-v0.7.3.fix iproute2-20091106/examples/cbq.init-v0.7.3 +--- iproute2-20091106/examples/cbq.init-v0.7.3.fix 2009-11-10 19:41:44.000000000 +0100 ++++ iproute2-20091106/examples/cbq.init-v0.7.3 2009-11-27 13:36:07.957310549 +0100 +@@ -579,14 +579,14 @@ cbq_show () { + ### Check configuration and load DEVICES, DEVFIELDS and CLASSLIST from $1 + cbq_init () { + ### Get a list of configured classes +- CLASSLIST=`find $1 \( -type f -or -type l \) -name 'cbq-*' \ +- -not -name '*~' -maxdepth 1 -printf "%f\n"| sort` ++ CLASSLIST=`find $1 -maxdepth 1 \( -type f -or -type l \) -name 'cbq-*' \ ++ -not -name '*~' -printf "%f\n"| sort` + [ -z "$CLASSLIST" ] && + cbq_failure "no configuration files found in $1!" + + ### Gather all DEVICE fields from $1/cbq-* +- DEVFIELDS=`find $1 \( -type f -or -type l \) -name 'cbq-*' \ +- -not -name '*~' -maxdepth 1| xargs sed -n 's/#.*//; \ ++ DEVFIELDS=`find $1 -maxdepth 1 \( -type f -or -type l \) -name 'cbq-*' \ ++ -not -name '*~' | xargs sed -n 's/#.*//; \ + s/[[:space:]]//g; /^DEVICE=[^,]*,[^,]*\(,[^,]*\)\?/ \ + { s/.*=//; p; }'| sort -u` + [ -z "$DEVFIELDS" ] && diff --git a/network/filter/iproute2/files/iproute2-libxtables6.diff b/network/filter/iproute2/files/iproute2-libxtables6.diff new file mode 100644 index 0000000000..ed2e16a397 --- /dev/null +++ b/network/filter/iproute2/files/iproute2-libxtables6.diff @@ -0,0 +1,31 @@ +From: Jan Engelhardt +Date: 2011-06-01 00:52:29+0200 + +--- + tc/m_xt.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +Index: iproute2-2.6.38/tc/m_xt.c +=================================================================== +--- iproute2-2.6.38.orig/tc/m_xt.c ++++ iproute2-2.6.38/tc/m_xt.c +@@ -162,7 +162,8 @@ static int parse_ipt(struct action_util + return -1; + } + tcipt_globals.opts = +- xtables_merge_options(tcipt_globals.opts, ++ xtables_merge_options(tcipt_globals.orig_opts, ++ tcipt_globals.opts, + m->extra_opts, + &m->option_offset); + } else { +@@ -307,7 +308,8 @@ print_ipt(struct action_util *au,FILE * + } + + tcipt_globals.opts = +- xtables_merge_options(tcipt_globals.opts, ++ xtables_merge_options(tcipt_globals.orig_opts, ++ tcipt_globals.opts, + m->extra_opts, + &m->option_offset); + } else { diff --git a/network/filter/iproute2/files/iproute2-xt.diff b/network/filter/iproute2/files/iproute2-xt.diff new file mode 100644 index 0000000000..181d44050e --- /dev/null +++ b/network/filter/iproute2/files/iproute2-xt.diff @@ -0,0 +1,22 @@ +From: Jan Engelhardt +Date: 2011-06-01 00:52:07+0200 + +--- + tc/m_xt.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: iproute2-2.6.37/tc/m_xt.c +=================================================================== +--- iproute2-2.6.37.orig/tc/m_xt.c ++++ iproute2-2.6.37/tc/m_xt.c +@@ -343,8 +343,8 @@ print_ipt(struct action_util *au,FILE * + return 0; + } + +-struct action_util ipt_action_util = { +- .id = "ipt", ++struct action_util xt_action_util = { ++ .id = "xt", + .parse_aopt = parse_ipt, + .print_aopt = print_ipt, + }; diff --git a/network/filter/iproute2/pspec.xml b/network/filter/iproute2/pspec.xml new file mode 100644 index 0000000000..9a22b3e6d8 --- /dev/null +++ b/network/filter/iproute2/pspec.xml @@ -0,0 +1,65 @@ + + + + + iproute2 + http://linux-net.osdl.org/index.php/Iproute2 + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + Kernel routing and traffic control utilities + Iproute2 is a collection of utilites for controlling TCP/IP networking and traffic control in Linux. + https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.0.0.tar.xz + + iptables-devel + linux-atm-devel + db-devel + + + + + iproute2 + + linux-atm + iptables + db + + + /etc + /sbin + /usr/sbin + /lib + /usr/lib + /usr/share/man + /usr/share/doc + /var/lib + + + + + + 2015-04-13 + 4.0.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-11-23 + 3.12.0 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2012-09-01 + 3.5.1 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/network/filter/iproute2/translations.xml b/network/filter/iproute2/translations.xml new file mode 100644 index 0000000000..3281e88d0b --- /dev/null +++ b/network/filter/iproute2/translations.xml @@ -0,0 +1,8 @@ + + + + iproute2 + Çekirdek içinde yer alan ağ trafiği yönlendirme ve trafik kontrol araçları. + Iproute2 TCP/IP ağları ve trafik kontrolü için araçlar içeren bir koolleksiyondur. + + diff --git a/network/filter/iptables/actions.py b/network/filter/iptables/actions.py new file mode 100644 index 0000000000..be96668983 --- /dev/null +++ b/network/filter/iptables/actions.py @@ -0,0 +1,32 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def setup(): + autotools.configure("--sbindir=/sbin \ + --libexecdir=/usr/lib \ + --without-kernel \ + --enable-devel \ + --enable-libipq \ + --enable-shared \ + --enable-static") + +def build(): + autotools.make("V=1") + +def install(): + autotools.rawInstall('DESTDIR="%s"' % get.installDIR()) + + pisitools.insinto("/usr/include", "include/iptables.h") + pisitools.insinto("/usr/include", "include/ip6tables.h") + pisitools.insinto("/usr/include/libiptc", "include/libiptc/*.h") + + pisitools.dodir("/var/lib/iptables") + pisitools.dodir("/etc/iptables") diff --git a/network/filter/iptables/comar/firewall.py b/network/filter/iptables/comar/firewall.py new file mode 100644 index 0000000000..7939b7a53b --- /dev/null +++ b/network/filter/iptables/comar/firewall.py @@ -0,0 +1,528 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# i18n + +MSG_CONNECTION_NAME = { + "en": "Internet Sharing", + "tr": "Internet Paylaşımı", + "sv": "Internetdelning", + "fr": "Partage de connexion Internet", + "es": "Compartir Internet", + "de": "Internet Freigabe", + "nl": "Internetverbinding delen", +} + +MSG_ALLOWED_PORTS = { + "en": "Allowed Port Numbers", + "tr": "İzin Verilen Port Numaraları", + "sv": "Tillåtna portar", + "fr": "Numéros de port autorisés", + "es": "Números de puertos permitidos", + "de": "Erlaubte Ports", + "nl": "Toegestane poortnummers", +} + +MSG_FORBIDDEN_PORTS = { + "en": "Forbidden Port Numbers", + "tr": "İzin Verilmeyen Port Numaraları", + "sv": "Otillåtna portar", + "nl": "Verboden poortnummers", +} + +MSG_GATEWAY_HOME = { + "en": "Gate to Home Network", + "tr": "Ev Ağına Çıkış", + "sv": "Länk till lokalt nätverk", + "fr": "Passerelle vers le réseau local", + "es": "Enlace a la red doméstica", + "de": "Gateway zum Haus-Netzwerk", + "nl": "Gateway naar thuisnetwerk", +} + +MSG_GATEWAY_INTERNET = { + "en": "Gate to Internet", + "tr": "Internet'e Çıkış", + "sv": "Länk till internet", + "fr": "Passerelle vers Internet", + "es": "Enlace a Internet", + "de": "Gateway zum Internet", + "nl": "Gateway naar Internet", +} + +TITLE_BLOCK_INCOMING = { + "en": "Block Incoming Connections", + "tr": "Gelen Bağlantıları Engelle", + "sv": "Blockera inkommande anslutningar", + "fr": "Bloquer les connexions entrantes", + "es": "Bloquear conexiones entrantes", + "de": "Eingehende Verbindungen blockieren", + "nl": "Inkomende verbindingen blokkeren", +} +DESCRIPTION_BLOCK_INCOMING = { + "en": "Blocks all incoming connections to the computer. Exceptions can be set from configuration dialog.", + "tr": "Bilgisayara gelen tüm bağlantıları engeller. İstisnalar ayarlar penceresinden belirlenebilir.", + "sv": "Blockerar alla inkommande anslutningar till datorn. Undantag kan läggas till under inställningar.", + "fr": "Bloque toute les connexions entrantes dans l'ordinateur. Des exceptions peuvent être définies dans la fenêtre de configuration.", + "es": "Bloquea todas las conexiones entrantes a la computadora. Se puede especificar excepciones desde el dialogo de configuración.", + "de": "Blockiert alle eingehenden Verbindungen. Im Konfigurations-Dialog können Ausnahmen angegeben werden.", + "nl": "Alle inkomende verbindingen naar deze computer blokkeren. Uitzonderingen kunnen in een configuratiedialoog ingesteld worden.", +} + +TITLE_BLOCK_OUTGOING = { + "en": "Block Outgoing Connections", + "tr": "Giden Bağlantıları Engelle", + "sv": "Blockera utgående anslutningar", + "fr": "Bloquer les connexions sortantes", + "es": "Bloquear conexiones salientes", + "de": "Ausgehende Verbindungen blockieren", + "nl": "Uitgaande verbindingen blokkeren", +} +DESCRIPTION_BLOCK_OUTGOING = { + "en": "Blocks outgoing connections. Forbidden ports can be set from configuration dialog.", + "tr": "Dışarı yapılan bağlantıları engeller. Yasaklı port numaraları ayarlar penceresinden belirlenebilir.", + "sv": "Blockerar alla utgående anslutningar till datorn. Undantag kan läggas till under inställningar.", + "nl": "Uitgaande verbindingen blokkeren. Verboden poorten kunnen in een configuratiedialoog ingesteld worden.", +} + +TITLE_INTERNET_SHARING = { + "en": "Internet Sharing", + "tr": "Internet Paylaşımı", + "sv": "Internetdelning", + "fr": "Partage de connexion Internet", + "es": "Compartir Internet", + "de": "Internet Freigabe", + "nl": "Internetverbinding delen", +} +DESCRIPTION_INTERNET_SHARING = { + "en": "Allows computers in your local network to connect Internet through this computer.", + "tr": "Yerel ağınızdaki bilgisayarların, bu bilgisayarı kullanarak Internet'e bağlanmalarını sağlar.", + "sv": "Låter datorer i det lokala nätverket ansluta till internet via den här datorn.", + "fr": "Permet aux ordinateurs de votre réseau domestique de se connecter à Internet via cet ordinateur.", + "es": "Permitir a otros computadoras en su red local acceder a la Internet, a través de ésta computadora", + "de": "Gibt anderen Computern aus dem lokalen Netzwer die Mäglichkeit, Internet durch diesen Computer hier zu benutzen.", + "nl": "Geeft andere computers in het lokale netwerk via deze computer toegang tot het internet.", +} + + +# Don't touch below, if you don't know what you're doing. + +# Module configuration settings and templates + +FIREWALL_CONF = "/etc/firewall.conf" + +IPTABLES_RULES = { + 'filter': [ + '-P INPUT DROP', # Default policies + '-P FORWARD DROP', + '-P OUTPUT ACCEPT', + '-N PARDUS-IN', # Module container table for INPUT + '-N PARDUS-IN-MOD-BLOCK', # Table for BlockIncoming rules + '-N PARDUS-FW', # Module container table for FORWARD + '-N PARDUS-FW-MOD-SHARING', # Table for InternetSharingModule rules + '-N PARDUS-FW-MOD-BLOCK', # Table for BlockOutgoing rules + '-N PARDUS-OUT', # Module container table for OUTPUT + '-N PARDUS-OUT-MOD-BLOCK', # Table for BlockOutgoing rules + '-A INPUT -i lo -j ACCEPT', # Accept local + '-A FORWARD -o lo -j ACCEPT', + '-A INPUT -m state --state INVALID -j DROP', + '-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT', + '-A INPUT -j PARDUS-IN', # Jump into container tables + '-A FORWARD -j PARDUS-FW', + '-A OUTPUT -j PARDUS-OUT', + '-A PARDUS-IN -j PARDUS-IN-MOD-BLOCK' , # Jump into module tables + '-A PARDUS-FW -j PARDUS-FW-MOD-BLOCK', + '-A PARDUS-FW -j PARDUS-FW-MOD-SHARING', + '-A PARDUS-OUT -j PARDUS-OUT-MOD-BLOCK', + '-A INPUT -m state --state NEW -j ACCEPT', + ], + 'nat': [ + '-P PREROUTING ACCEPT', + '-P POSTROUTING ACCEPT', + '-P OUTPUT ACCEPT', + '-N PARDUS-POST', + '-N PARDUS-POST-MOD-SHARING', + '-A POSTROUTING -j PARDUS-POST', + '-A PARDUS-POST -j PARDUS-POST-MOD-SHARING', + ], +} + +DHCPD_CONF = """ +ddns-update-style interim; +ignore client-updates; +max-lease-time 500; +default-lease-time 500; +option domain-name-servers 193.140.100.220; +option routers 172.16.0.1; +option subnet-mask 255.255.255.0; +subnet 172.16.0.0 netmask 255.255.255.0 { + range 172.16.0.2 172.16.0.254; +} +""" + +# Utils + +import os +import subprocess + +from pardus import iniutils +from pardus import netutils +from pardus import netfilterutils + +INI = iniutils.iniParser(FIREWALL_CONF) + +def listModuleConfigs(): + """ + Returns a list of modules that are configured. + """ + try: + modules = INI.listSections() + except iniutils.iniParserError: + return + if "general" in modules: + modules.remove("general") + return modules + +class ModuleConfig: + """ + Module configuration parser. + """ + def __init__(self, name): + self.name = name + try: + self.info = INI.getSection(name) + except iniutils.iniParserError: + self.info = {} + + def delete(self): + INI.removeSection(self.name) + + def save(self): + is_new = self.name not in listModuleConfigs() + INI.setSection(self.name, self.info) + +def getServiceState(package): + """ + Returns state of a service. + """ + return call(package, "System.Service", "info")[2] in ["on", "started"] + +def stopService(package, permanent=False): + """ + Stops a service. + """ + call(package, "System.Service", "stop") + if permanent: + call(package, "System.Service", "setState", ("off")) + +def startService(package, restart=False, auto_start=False): + """ + Starts a service. + """ + if restart: + stopService(package) + if not getServiceState(package): + call(package, "System.Service", "start") + if auto_start: + call(package, "System.Service", "setState", ("on")) + +def initializeIPTables(): + """ + Initializes IPTables. + """ + # Active rules + rules_active = netfilterutils.parseConf(netfilterutils.getRules()) + + # Compare rules + for chain, rules in IPTABLES_RULES.iteritems(): + if chain not in rules_active or len(set(rules) - set(rules_active[chain])): + # At least one different rule, need re-initialization + netfilterutils.clear() + conf = netfilterutils.makeConf(IPTABLES_RULES) + netfilterutils.restoreRules(conf) + break + +def execRule(rule): + """ + Executes IPTables rule + """ + rule = rule.split() + rule.insert(0, "/sbin/iptables") + subprocess.call(rule) + +def createConnection(package, device): + import comar + link = comar.Link() + connection = _(MSG_CONNECTION_NAME) + link.Network.Link[package].setDevice(connection, device) + link.Network.Link[package].setAddress(connection, "manual", "172.16.0.1", "255.255.255.0", "") + return connection + +def findOrCreateConnection(link, device): + o_package, o_connecion = None, None + for package in link.Network.Link: + if device in link.Network.Link[package].deviceList(): + for connection in link.Network.Link[package].connections(): + info = link.Network.Link[package].connectionInfo(connection) + if info.get("net_address", "") == "172.16.0.1": + return package, connection + return package, createConnection(package, device) + +def makeDHCPConf(interface): + file("/etc/dhcp/dhcpd.conf", "w").write(DHCPD_CONF) + file("/etc/conf.d/dhcpd", "w").write("DHCPD_IFACE=%s" % interface) + +# Modules + +class BlockIncoming: + def __init__(self): + self.parametersLast = {} + + def getInfo(self): + title = _(TITLE_BLOCK_INCOMING) + description = _(DESCRIPTION_BLOCK_INCOMING) + icon = "network-server" + return (title, description, icon) + + def getParameters(self): + parameters = [ + ("port_exceptions", _(MSG_ALLOWED_PORTS), "editlist", {"format": "[0-9\-]+"}), + ] + return parameters + + def checkModule(self, parameters={}, quiet=False): + pass + + def loadModule(self, parameters={}): + # Initialize IPTables + initializeIPTables() + # Flush rules + self.unloadModule() + # Load rules + for port in parameters.get("port_exceptions", "").split(): + if "-" in port: + port = port.replace("-", ":") + execRule("-A PARDUS-IN-MOD-BLOCK -p tcp -m multiport --dports %s -j ACCEPT" % port) + execRule("-A PARDUS-IN-MOD-BLOCK -p udp -m multiport --dports %s -j ACCEPT" % port) + # Block else... + execRule("-A PARDUS-IN-MOD-BLOCK -p tcp -m multiport --dports 0:1024 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with icmp-port-unreachable") + execRule("-A PARDUS-IN-MOD-BLOCK -p udp -m multiport --dports 0:1024 -j REJECT --reject-with icmp-port-unreachable") + execRule("-A PARDUS-IN-MOD-BLOCK -j REJECT --reject-with icmp-host-prohibited") + + def unloadModule(self, shutdown=False): + if not shutdown: + # Unload rules + execRule("-F PARDUS-IN-MOD-BLOCK") + + +class BlockOutgoing: + def __init__(self): + self.parametersLast = {} + + def getInfo(self): + title = _(TITLE_BLOCK_OUTGOING) + description = _(DESCRIPTION_BLOCK_OUTGOING) + icon = "security-medium" + return (title, description, icon) + + def getParameters(self): + parameters = [ + ("port_exceptions", _(MSG_FORBIDDEN_PORTS), "editlist", {"format": "[0-9\-]+"}), + ] + return parameters + + def checkModule(self, parameters={}, quiet=False): + pass + + def loadModule(self, parameters={}): + # Initialize IPTables + initializeIPTables() + # Flush rules + self.unloadModule() + # Load rules + for port in parameters.get("port_exceptions", "").split(): + if "-" in port: + port = port.replace("-", ":") + execRule("-A PARDUS-OUT-MOD-BLOCK -p tcp -m multiport --dports %s -j DROP" % port) + execRule("-A PARDUS-OUT-MOD-BLOCK -p udp -m multiport --dports %s -j DROP" % port) + execRule("-A PARDUS-FW-MOD-BLOCK -p tcp -m multiport --dports %s -j DROP" % port) + execRule("-A PARDUS-FW-MOD-BLOCK -p udp -m multiport --dports %s -j DROP" % port) + + def unloadModule(self, shutdown=False): + if not shutdown: + # Unload rules + execRule("-F PARDUS-OUT-MOD-BLOCK") + execRule("-F PARDUS-FW-MOD-BLOCK") + + +class InternetSharingModule: + def __init__(self): + self.parametersLast = {} + + def getInfo(self): + title = _(TITLE_INTERNET_SHARING) + description = _(DESCRIPTION_INTERNET_SHARING) + icon = "network-workgroup" + return (title, description, icon) + + def getParameters(self): + def findInterfaces(wireless=True): + ifaces = [] + for iface in netutils.interfaces(): + if iface.name.startswith("lo") or iface.name.startswith("pan"): + continue + if not wireless and iface.isWireless(): + continue + if iface.isEthernet(): + dev_id = iface.deviceUID() + dev_name = netutils.deviceName(iface.deviceUID()) + if " - " in dev_name: + dev_name = dev_name.split(" - ")[1] + ifaces.append("%s\t%s" % (dev_id, dev_name)) + return ifaces + options_in = { + "choose": "\n".join(findInterfaces()) + } + options_out = { + "choose": "\n".join(findInterfaces(wireless=False)) + } + parameters = [ + ("device-input", _(MSG_GATEWAY_INTERNET), "combo", options_in), + ("device-output", _(MSG_GATEWAY_HOME), "combo", options_out), + ] + return parameters + + def checkModule(self, parameters={}, quiet=False): + pass + + def loadModule(self, parameters={}): + # Initialize IPTables + initializeIPTables() + # Flush rules + self.unloadModule() + # Enable forwarding + os.system("echo 1 > /proc/sys/net/ipv4/ip_forward") + os.system("echo 1 > /proc/sys/net/ipv4/ip_dynaddr") + # Load rules + input = parameters.get("device-input", "") + output = parameters.get("device-output", "") + if input and output and input != output: + in_name = input.split("_")[-1] + out_name = output.split("_")[-1] + execRule("-A PARDUS-FW-MOD-SHARING -i %s -o %s -m state --state ESTABLISHED,RELATED -j ACCEPT" % (in_name, out_name)) + execRule("-A PARDUS-FW-MOD-SHARING -i %s -o %s -j ACCEPT" % (out_name, in_name)) + execRule("-t nat -A PARDUS-POST-MOD-SHARING -o %s -j MASQUERADE" % in_name) + # Create local NAT profile + import comar + link = comar.Link() + package, connection = findOrCreateConnection(link, output) + link.Network.Link[package].setState(connection, "up") + # Configure DHCP + makeDHCPConf(out_name) + # Start DHCP + startService("dhcpd", restart=True) + + def unloadModule(self, shutdown=False): + # Stop DHCP + stopService("dhcpd") + if not shutdown: + # Unload rules + execRule("-F PARDUS-FW-MOD-SHARING") + execRule("-P PARDUS-FW-MOD-SHARING ACCEPT") + execRule("-t nat -F PARDUS-POST-MOD-SHARING") + + +# Usable modules +MODULES = { + "internet_sharing": InternetSharingModule, + "block_incoming": BlockIncoming, + "block_outgoing": BlockOutgoing, +} + +# Network.Firewall model + +def listModules(): + return MODULES.keys() + +def moduleInfo(module): + inst = MODULES[module]() + return inst.getInfo() + +def moduleParameters(module): + inst = MODULES[module]() + return inst.getParameters() + +def getModuleState(module): + info = ModuleConfig(module).info + return info.get("state", "off") + +def setModuleState(name, state): + if state in ["on", "off"]: + # Save state + module = ModuleConfig(name) + module.info["state"] = state + module.save() + # Execute module if firewall is active + if getState() == "on": + inst = MODULES[name]() + if state == "on": + inst.loadModule(getModuleParameters(name)) + else: + inst.unloadModule() + # Notify clients + notify("Network.Firewall", "moduleStateChanged", (name, state)) + +def getModuleParameters(module): + info = ModuleConfig(module).info + return info + +def setModuleParameters(name, parameters): + # Save module parameters + module = ModuleConfig(name) + for key, value in parameters.iteritems(): + module.info[key] = value + module.save() + # Execute module if it's active + if getState() == "on" and getModuleState(name) == "on": + inst = MODULES[name]() + inst.checkModule(parameters) + inst.loadModule(parameters) + # Notify clients + notify("Network.Firewall", "moduleSettingsChanged", (name)) + +def getState(): + state = ModuleConfig("general").info.get("state", "off") + if state not in ["on", "off"] or not getServiceState(script()): + return "off" + return state + +def setState(state): + if state in ["on", "off"]: + # Save state + general = ModuleConfig("general") + general.info["state"] = state + general.save() + if state == "on": + # Start IPTables + startService(script(), auto_start=True) + # Execute active modules + for module in listModuleConfigs(): + if module not in MODULES: + continue + info = ModuleConfig(module).info + if info.get("state", "off") == "on": + inst = MODULES[module]() + inst.loadModule(getModuleParameters(module)) + else: + # Flush IPTables since every module depends on it + netfilterutils.clear() + # Stop IPTables + stopService(script(), permanent=True) + # Unload modules + for module in listModuleConfigs(): + if module not in MODULES: + continue + inst = MODULES[module]() + inst.unloadModule(shutdown=True) + # Notify clients + notify("Network.Firewall", "stateChanged", (state)) diff --git a/network/filter/iptables/comar/service.py b/network/filter/iptables/comar/service.py new file mode 100644 index 0000000000..103f24dffb --- /dev/null +++ b/network/filter/iptables/comar/service.py @@ -0,0 +1,69 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +from comar.service import * + +serviceType = "local" +serviceDesc = _({"en": "Firewall", + "tr": "Güvenlik Duvarı"}) + +LOCK_FILE = "/var/lock/subsys/iptables" +FIREWALL_PATH = "/etc/firewall.conf" + +import os +import pardus.netfilterutils as iptables +from pardus import iniutils + +def writeFile(filename, content="", mode=0600): + '''Writes content to filename and sets file mode.''' + file(filename, "w").write(content) + os.chmod(filename, mode) + +def readFile(filename): + """Return content of a file""" + return file(filename, "r").read() + +def startNetworkFirewall(): + INI = iniutils.iniParser(FIREWALL_PATH) + try: + info = INI.getSection("general") + except iniutils.iniParserError: + return + if info.get("state", "off") == "on": + call(script(), "Network.Firewall", "setState", ("on")) + +def stop(): + # Save rules + writeFile("/var/lib/iptables/rules", iptables.getRules()) + + # Clear chains & rules + iptables.clear() + + # Remove lock file + if os.access(LOCK_FILE, os.F_OK): + os.unlink(LOCK_FILE) + + # Notify clients + notify("System.Service", "Changed", (script(), "stopped")) + +def start(): + # Clear chains & rules + iptables.clear() + + # Load rules + profile_file = "/var/lib/iptables/rules" + if os.path.exists(profile_file): + rules = readFile(profile_file) + iptables.restoreRules(rules) + + # Create lock file + writeFile(LOCK_FILE, "") + + # Initialize Network.Firewall, if necessary + startNetworkFirewall() + + # Notify clients + notify("System.Service", "Changed", (script(), "started")) + +def status(): + return os.access(LOCK_FILE, os.F_OK) diff --git a/network/filter/iptables/pspec.xml b/network/filter/iptables/pspec.xml new file mode 100644 index 0000000000..0c035659e5 --- /dev/null +++ b/network/filter/iptables/pspec.xml @@ -0,0 +1,89 @@ + + + + + iptables + http://www.iptables.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + Firewall, NAT and packet mangling tools + Contains iptables firewall, NAT and packet mangling tools. + ftp://ftp.netfilter.org/pub/iptables/iptables-1.4.21.tar.bz2 + + libnfnetlink-devel + + + + + + + + + iptables + + libnfnetlink + + + /usr/bin + /sbin + /lib + /usr/lib + /usr/share/man + /etc + /var + /usr/share/xtables + + + System.Service + Network.Firewall + + + + + iptables-devel + Development files for iptables + + iptables + + + /usr/include + /usr/lib/*.a + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + + 2013-11-23 + 1.4.21 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2013-03-04 + 1.4.17 + Version bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-10-21 + 1.4.16.3 + First release + + reverseDependencyUpdate + + PisiLinux Community + admins@pisilinux.org + + + diff --git a/network/filter/iptables/translations.xml b/network/filter/iptables/translations.xml new file mode 100644 index 0000000000..c56f16daf1 --- /dev/null +++ b/network/filter/iptables/translations.xml @@ -0,0 +1,13 @@ + + + + iptables + Güvenlik duvarı, ağ adres çevrimi ve paket çevrimi aracı + Iptables kural tabanlı gelişmiş güvenlik duvarı uygulamasıdır. + + + + iptables-devel + iptables için geliştirme dosyaları + + From 07d52dc9654d27682b88b8f123ffe1cfece7fff8 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:11:30 +0300 Subject: [PATCH 094/175] moved into main for pisi 2.0 --- network/misc/libndp/actions.py | 28 ++++++++++++++ network/misc/libndp/pspec.xml | 55 ++++++++++++++++++++++++++++ network/misc/libndp/translations.xml | 13 +++++++ 3 files changed, 96 insertions(+) create mode 100644 network/misc/libndp/actions.py create mode 100644 network/misc/libndp/pspec.xml create mode 100644 network/misc/libndp/translations.xml diff --git a/network/misc/libndp/actions.py b/network/misc/libndp/actions.py new file mode 100644 index 0000000000..aed4e19ed5 --- /dev/null +++ b/network/misc/libndp/actions.py @@ -0,0 +1,28 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 2. +# See the file http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + + +def setup(): + autotools.configure("--prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --disable-static \ + --libexecdir=/usr/lib") + +def build(): + autotools.make() + +#def check(): +# autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + pisitools.dodoc("COPYING", "README") diff --git a/network/misc/libndp/pspec.xml b/network/misc/libndp/pspec.xml new file mode 100644 index 0000000000..14d00d7fbc --- /dev/null +++ b/network/misc/libndp/pspec.xml @@ -0,0 +1,55 @@ + + + + + libndp + http://libndp.org/ + + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + GPLv2+ + library + Library for Neighbor Discovery Protocol + Library for Neighbor Discovery Protocol + http://libndp.org/files/libndp-1.4.tar.gz + + glibc-devel + + + + + libndp + + /etc + /usr/share + /etc/dbus-1 + /usr/lib + /usr/share/man + /usr/share/doc + /usr/bin + + + + + libndp-devel + Development files for NetworkManager + + libndp + + + /usr/include + /usr/lib/pkgconfig/ + + + + + + 2015-01-07 + 1.4 + First release + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + \ No newline at end of file diff --git a/network/misc/libndp/translations.xml b/network/misc/libndp/translations.xml new file mode 100644 index 0000000000..390bb5d79a --- /dev/null +++ b/network/misc/libndp/translations.xml @@ -0,0 +1,13 @@ + + + + libndp + Ağ tarama protokolü için kitaplık + Ağ tarama protokolü için kitaplık + + + + libndp + libndp için geliştirme dosyaları + + From 648136d3e84f21a29cc1ddd5486b8754943682e0 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:11:42 +0300 Subject: [PATCH 095/175] moved into main for pisi 2.0 --- network/misc/libnl/actions.py | 20 ++++++++ network/misc/libnl/pspec.xml | 71 +++++++++++++++++++++++++++++ network/misc/libnl/translations.xml | 13 ++++++ 3 files changed, 104 insertions(+) create mode 100644 network/misc/libnl/actions.py create mode 100644 network/misc/libnl/pspec.xml create mode 100644 network/misc/libnl/translations.xml diff --git a/network/misc/libnl/actions.py b/network/misc/libnl/actions.py new file mode 100644 index 0000000000..c56f300979 --- /dev/null +++ b/network/misc/libnl/actions.py @@ -0,0 +1,20 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.configure() + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("COPYING", "ChangeLog") \ No newline at end of file diff --git a/network/misc/libnl/pspec.xml b/network/misc/libnl/pspec.xml new file mode 100644 index 0000000000..beddc165b2 --- /dev/null +++ b/network/misc/libnl/pspec.xml @@ -0,0 +1,71 @@ + + + + + libnl + http://people.suug.ch/~tgr/libnl + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + A library for applications dealing with netlink sockets + libnl is a convenience library to simplify the usage of the Linux kernel's netlink sockets interface for network manipulation. + http://www.infradead.org/~tgr/libnl/files/libnl-3.2.24.tar.gz + + + + libnl + + /usr/lib + /usr/share/doc + /usr/share/man + /etc/libnl + /usr/sbin + + + + + libnl-devel + Development files for libnl + + libnl + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-04-03 + 3.2.24 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-13 + 3.2.23 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-19 + 3.2.23 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2012-10-14 + 3.2.13 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/network/misc/libnl/translations.xml b/network/misc/libnl/translations.xml new file mode 100644 index 0000000000..68c4e95a31 --- /dev/null +++ b/network/misc/libnl/translations.xml @@ -0,0 +1,13 @@ + + + + libnl + Netlink soketleri erişimi için bir kitaplığı + libnl Linux çekirdeğinin netlink soket arayüzünü ağ ile ilgili çeşitli işlemleri kolaylaştırmak için kullanan bir kitaplığıdır. + + + + libnl-devel + libnl için geliştirme dosyaları + + \ No newline at end of file From 3b48e10776c89dca2b8b218127c2edd74ae1d359 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:11:51 +0300 Subject: [PATCH 096/175] moved into main for pisi 2.0 --- programming/misc/libsoup/actions.py | 41 +++++ programming/misc/libsoup/pspec.xml | 182 ++++++++++++++++++++++ programming/misc/libsoup/translations.xml | 23 +++ 3 files changed, 246 insertions(+) create mode 100644 programming/misc/libsoup/actions.py create mode 100644 programming/misc/libsoup/pspec.xml create mode 100644 programming/misc/libsoup/translations.xml diff --git a/programming/misc/libsoup/actions.py b/programming/misc/libsoup/actions.py new file mode 100644 index 0000000000..a0f37d9448 --- /dev/null +++ b/programming/misc/libsoup/actions.py @@ -0,0 +1,41 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 2 +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +def setup(): + options = "\ + --disable-static \ + --without-apache-httpd \ + --without-apache-module-dir \ + " + if get.buildTYPE() == "_emul32": + options += " --libdir=/usr/lib32 \ + --bindir=/_emul32/bin \ + --sbindir=/_emul32/sbin \ + --disable-tls-check" + + shelltools.export("CC", "%s -m32" % get.CC()) + shelltools.export("CXX", "%s -m32" % get.CXX()) + shelltools.export("PKG_CONFIG_PATH", "/usr/lib32/pkgconfig") + + autotools.configure(options) + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + #if get.buildTYPE() == "_emul32": + #pisitools.removeDir("/_emul32") + + pisitools.dodoc("README", "NEWS", "AUTHORS") \ No newline at end of file diff --git a/programming/misc/libsoup/pspec.xml b/programming/misc/libsoup/pspec.xml new file mode 100644 index 0000000000..5b571fcf38 --- /dev/null +++ b/programming/misc/libsoup/pspec.xml @@ -0,0 +1,182 @@ + + + + + libsoup + http://live.gnome.org/LibSoup + + PisiLinux Community + admins@pisilinux.org + + LGPLv2 + library + An HTTP library implementation in C + libsoup is an HTTP client/server library for GNOME. + mirrors://gnome/libsoup/2.50/libsoup-2.50.0.tar.xz + + gtk-doc + tls-devel + gconf-devel + gnutls-devel + glib-networking + libgcrypt-devel + libgnome-keyring-devel + glib2-devel + libxml2-devel + sqlite-devel + + + + + + + libsoup + + glib2 + libxml2 + sqlite + + + /usr/lib + /usr/share/doc + /usr/share/locale/ + /usr/lib/girepository-1.0/Soup-2.4.typelib + + + + + libsoup-gnome + + libsoup + + + /usr/lib/lib*gnome* + /usr/lib/girepository-1.0/SoupGNOME-2.4.typelib + + + + + + libsoup-docs + data:doc + libsoup reference documents + + libsoup + + + /usr/share/gtk-doc + + + + + libsoup-devel + Development files for libsoup + + glib2-devel + libxml2-devel + libsoup + + + /usr/include + /usr/share/gir-1.0 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + libsoup-32bit + emul32 + 32-bit shared libraries for libsoup + _emul32 + + glib2-32bit + sqlite-32bit + libxml2-32bit + glibc-32bit + + + glib2-32bit + sqlite-32bit + libxml2-32bit + glibc-32bit + libsoup + + + /usr/lib32 + + + + + + 2015-06-14 + 2.50.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-20 + 2.49.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-05-25 + 2.46.0 + Rebuil. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-30 + 2.46.0 + 32bit split packages. + PisiLinux Community + admins@pisilinux.org + + + 2014-03-30 + 2.46.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02.20 + 2.44.0 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-10.10 + 2.44.0 + Version Bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-03-08 + 2.41.91 + bump + Erdinç Gültekin + erdincgultekin@gmail + + + 2013-01-29 + 2.40.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-14 + 2.40.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/programming/misc/libsoup/translations.xml b/programming/misc/libsoup/translations.xml new file mode 100644 index 0000000000..0222ae910e --- /dev/null +++ b/programming/misc/libsoup/translations.xml @@ -0,0 +1,23 @@ + + + + libsoup + C için HTTP kitaplık gerçekleyicisi + libsoup, GNOME için HTTP istemci / sunucu kitaplığıdır. + + + + libsoup-docs + libsoup başvuru belgeleri + + + + libsoup-devel + libsoup için geliştirme dosyaları + + + + libsoup-32bit + libsoup için 32-bit paylaşımlı kitaplıklar + + \ No newline at end of file From b88266550d6d8dc83aed49b2762514a952694584 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:12:13 +0300 Subject: [PATCH 097/175] moved into main for pisi 2.0 --- server/dhcp/actions.py | 70 ++ server/dhcp/comar/dhcpd.py | 39 + server/dhcp/comar/dhcpd6.py | 39 + server/dhcp/comar/dhcrelay.py | 24 + server/dhcp/comar/package.py | 11 + server/dhcp/files/11-dhclient | 37 + server/dhcp/files/12-dhcpd | 21 + server/dhcp/files/56dhclient | 61 ++ server/dhcp/files/dhclient-script | 754 ++++++++++++++++++ server/dhcp/files/dhclient.conf | 40 + server/dhcp/files/dhcp-4.2.0-IFNAMSIZ.patch | 12 + server/dhcp/files/dhcp-4.2.0-P2-omapi.patch | 12 + server/dhcp/files/dhcp-4.2.0-PPP.patch | 150 ++++ .../dhcp-4.2.0-add_timeout_when_NULL.patch | 14 + ...dhcp-4.2.0-default-requested-options.patch | 44 + .../dhcp-4.2.0-dhclient-decline-backoff.patch | 63 ++ .../files/dhcp-4.2.0-errwarn-message.patch | 30 + .../dhcp/files/dhcp-4.2.0-garbage-chars.patch | 12 + .../dhcp/files/dhcp-4.2.0-honor-expired.patch | 52 ++ .../files/dhcp-4.2.0-inherit-leases.patch | 34 + server/dhcp/files/dhcp-4.2.0-logpid.patch | 12 + server/dhcp/files/dhcp-4.2.0-paths.patch | 45 ++ .../files/dhcp-4.2.0-release-by-ifup.patch | 85 ++ .../dhcp/files/dhcp-4.2.0-sendDecline.patch | 233 ++++++ .../dhcp/files/dhcp-4.2.0-unicast-bootp.patch | 99 +++ .../files/dhcp-4.2.1-retransmission.patch | 48 ++ server/dhcp/files/dhcp-4.3.0a1-PPP.patch | 150 ++++ .../files/dhcp-4.3.0a1-errwarn-message.patch | 30 + server/dhcp/files/dhcpd | 15 + server/dhcp/files/dhcpd.conf | 31 + server/dhcp/files/dhcpd6 | 15 + server/dhcp/files/dhcpd6.conf | 32 + server/dhcp/files/dhcrelay | 14 + server/dhcp/pspec.xml | 151 ++++ server/dhcp/translations.xml | 19 + 35 files changed, 2498 insertions(+) create mode 100644 server/dhcp/actions.py create mode 100644 server/dhcp/comar/dhcpd.py create mode 100644 server/dhcp/comar/dhcpd6.py create mode 100644 server/dhcp/comar/dhcrelay.py create mode 100644 server/dhcp/comar/package.py create mode 100644 server/dhcp/files/11-dhclient create mode 100644 server/dhcp/files/12-dhcpd create mode 100644 server/dhcp/files/56dhclient create mode 100644 server/dhcp/files/dhclient-script create mode 100644 server/dhcp/files/dhclient.conf create mode 100644 server/dhcp/files/dhcp-4.2.0-IFNAMSIZ.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-P2-omapi.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-PPP.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-add_timeout_when_NULL.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-default-requested-options.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-dhclient-decline-backoff.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-errwarn-message.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-garbage-chars.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-honor-expired.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-inherit-leases.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-logpid.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-paths.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-release-by-ifup.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-sendDecline.patch create mode 100644 server/dhcp/files/dhcp-4.2.0-unicast-bootp.patch create mode 100644 server/dhcp/files/dhcp-4.2.1-retransmission.patch create mode 100644 server/dhcp/files/dhcp-4.3.0a1-PPP.patch create mode 100644 server/dhcp/files/dhcp-4.3.0a1-errwarn-message.patch create mode 100644 server/dhcp/files/dhcpd create mode 100644 server/dhcp/files/dhcpd.conf create mode 100644 server/dhcp/files/dhcpd6 create mode 100644 server/dhcp/files/dhcpd6.conf create mode 100644 server/dhcp/files/dhcrelay create mode 100644 server/dhcp/pspec.xml create mode 100644 server/dhcp/translations.xml diff --git a/server/dhcp/actions.py b/server/dhcp/actions.py new file mode 100644 index 0000000000..9ef28f7b1a --- /dev/null +++ b/server/dhcp/actions.py @@ -0,0 +1,70 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def setup(): + shelltools.export("CFLAGS", "%s -D_GNU_SOURCE -fPIC" % get.CFLAGS()) +#in some troff man pages + #for i in ["dhclient.conf.5", "dhclient.leases.5", "dhclient-script.8", "dhclient.8"]: + # pisitools.dosed("client/%s" % i, "CLIENTBINDIR", "/sbin") + # pisitools.dosed("client/%s" % i, "RUNDIR", "/run") + # pisitools.dosed("client/%s" % i, "DBDIR", "/var/lib/dhcpd") + # pisitools.dosed("client/%s" % i, "ETCDIR", "/etc/dhcp") + + #for i in ["dhcpd.conf.5", "dhcpd.leases.5", "dhcpd.8"]: + # pisitools.dosed("server/%s" % i, "CLIENTBINDIR", "/sbin") + # pisitools.dosed("server/%s" % i, "RUNDIR", "/run") + # pisitools.dosed("server/%s" % i, "DBDIR", "/var/lib/dhcpd") + # pisitools.dosed("server/%s" % i, "ETCDIR", "/etc/dhcp") + + pisitools.dosed("client/scripts/linux", "/etc/dhclient-exit-hooks", "/etc/dhcp/dhclient-exit-hooks") + pisitools.dosed("client/scripts/linux", "/etc/dhclient-enter-hooks", "/etc/dhcp/dhclient-enter-hooks") + + autotools.autoreconf("-vfi") + autotools.configure("--with-srv-lease-file=/var/lib/dhcpd/dhcpd.leases \ + --with-srv6-lease-file=/var/lib/dhcpd/dhcpd6.leases \ + --with-cli-lease-file=/var/lib/dhclient/dhclient.leases \ + --with-cli6-lease-file=/var/lib/dhclient/dhclient6.leases \ + --with-srv-pid-file=/run/dhcpd.pid \ + --with-srv6-pid-file=/run/dhcpd6.pid \ + --with-cli-pid-file=/run/dhclient.pid \ + --with-cli6-pid-file=/run/dhclient6.pid \ + --with-relay-pid-file=/run/dhcrelay.pid \ + --with-ldap \ + --with-ldapcrypto") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + # Remove files we don't want + pisitools.remove("/etc/dhcpd.conf.example") + pisitools.remove("/etc/dhclient.conf.example") + + # Install dhcp.schema for LDAP configuration + pisitools.insinto("/etc/openldap/schema", "contrib/ldap/dhcp.schema") + + # dhclient configuration per service support is not ready yet, no need to create this directory for now + # Install empty directory for dhclient.d scripts + #pisitools.dodir("/etc/dhcp/dhclient.d") + + # Create directory hierarchy in /var + pisitools.dodir("/var/lib/dhcpd") + pisitools.dodir("/var/lib/dhclient") + + # Sample configuration files + pisitools.insinto("/usr/share/doc/dhcp", "client/dhclient.conf.5", "dhclient.conf.exsample") + pisitools.insinto("/usr/share/doc/dhcp", "server/dhcpd.conf.5", "dhcpd.conf.example") + pisitools.insinto("/usr/share/doc/dhcp", "doc/examples/dhclient-dhcpv6.conf") + pisitools.insinto("/usr/share/doc/dhcp", "doc/examples/dhcpd-dhcpv6.conf") + + pisitools.dodoc("LICENSE", "README", "RELNOTES") diff --git a/server/dhcp/comar/dhcpd.py b/server/dhcp/comar/dhcpd.py new file mode 100644 index 0000000000..d1d7b9e59e --- /dev/null +++ b/server/dhcp/comar/dhcpd.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +from comar.service import * + +serviceType = "server" +serviceDesc = _({"en": "DHCP Daemon", + "tr": "DHCP Servisi"}) + +serviceConf = "dhcpd" + +MSG_NM_NOT_RUNNING = _({"en": "NetworkManager service is not running", + "tr": "NetworkManager hizmeti çalışmıyor", + }) + +PIDFILE = "/run/dhcpd.pid" +TIMEOUT = config.get("TIMEOUT", 10) + +@synchronized +def start(): + try: + startDependencies("NetworkManager") + # Prevent race condition between NM and dhcpd + if run("/usr/bin/nm-online -q -t %s" % TIMEOUT) != 0: + # NM is not running + fail(MSG_NM_NOT_RUNNING) + except: + pass + + startService(command="/usr/sbin/dhcpd", + args="-cf %s %s %s" % (config.get("DHCPD_CONF", "/etc/dhcp/dhcpd.conf"), config.get("DHCPD_ARGS", ""), config.get("INTERFACES", "")), + pidfile=PIDFILE, + donotify=True) + +@synchronized +def stop(): + stopService(pidfile=PIDFILE, + donotify=True) + +def status(): + return isServiceRunning(PIDFILE) diff --git a/server/dhcp/comar/dhcpd6.py b/server/dhcp/comar/dhcpd6.py new file mode 100644 index 0000000000..9dee3b6cf3 --- /dev/null +++ b/server/dhcp/comar/dhcpd6.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +from comar.service import * + +serviceType = "server" +serviceDesc = _({"en": "DHCPv6 Daemon", + "tr": "DHCPv6 Servisi"}) + +serviceConf = "dhcpd6" + +MSG_NM_NOT_RUNNING = _({"en": "NetworkManager service is not running", + "tr": "NetworkManager hizmeti çalışmıyor", + }) + +PIDFILE = "/run/dhcpd6.pid" +TIMEOUT = config.get("TIMEOUT", 10) + +@synchronized +def start(): + try: + startDependencies("NetworkManager") + # Prevent race condition between NM and dhcpd + if run("/usr/bin/nm-online -q -t %s" % TIMEOUT) != 0: + # NM is not running + fail(MSG_NM_NOT_RUNNING) + except: + pass + + startService(command="/usr/sbin/dhcpd", + args="-6 -cf %s %s %s" % (config.get("DHCPD_CONF", "/etc/dhcp/dhcpd.conf"), config.get("DHCPD_ARGS", ""), config.get("INTERFACES", "")), + pidfile=PIDFILE, + donotify=True) + +@synchronized +def stop(): + stopService(pidfile=PIDFILE, + donotify=True) + +def status(): + return isServiceRunning(PIDFILE) diff --git a/server/dhcp/comar/dhcrelay.py b/server/dhcp/comar/dhcrelay.py new file mode 100644 index 0000000000..2c7a246b3c --- /dev/null +++ b/server/dhcp/comar/dhcrelay.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +from comar.service import * + +serviceType = "server" +serviceDesc = _({"en": "DHCP Relay Server", + "tr": "DHCP Relay Servisi"}) +serviceConf = "dhcrelay" + +pidfile = "/run/dhcrelay.pid" + +@synchronized +def start(): + startService(command="/usr/sbin/dhcrelay", + args="%s %s" % (config.get("DHCPD_ARGS", ""), config.get("INTERFACES", "")), + donotify=True) + +@synchronized +def stop(): + stopService(command="/usr/sbin/dhcpd", + pidfile=pidfile, + donotify=True) + +def status(): + return isServiceRunning(pidfile) diff --git a/server/dhcp/comar/package.py b/server/dhcp/comar/package.py new file mode 100644 index 0000000000..d7ab76d36c --- /dev/null +++ b/server/dhcp/comar/package.py @@ -0,0 +1,11 @@ +#!/usr/bin/python + +import os + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + if not os.path.exists("/var/lib/dhcpd/dhcpd.leases"): + os.system("/bin/touch /var/lib/dhcpd/dhcpd.leases") + + if not os.path.exists("/var/lib/dhcpd/dhcpd6.leases"): + os.system("/bin/touch /var/lib/dhcpd/dhcpd6.leases") + diff --git a/server/dhcp/files/11-dhclient b/server/dhcp/files/11-dhclient new file mode 100644 index 0000000000..5842f8287c --- /dev/null +++ b/server/dhcp/files/11-dhclient @@ -0,0 +1,37 @@ +#!/bin/bash +# run dhclient.d scripts in an emulated environment + +PATH=/bin:/usr/bin:/sbin +SAVEDIR=/var/lib/dhclient +ETCDIR=/etc/dhcp +interface=$1 + +eval "$( +declare | LC_ALL=C grep '^DHCP4_[A-Z_]*=' | while read opt; do + optname=${opt%%=*} + optname=${optname,,} + optname=new_${optname#dhcp4_} + optvalue=${opt#*=} + echo "$optname=$optvalue" +done +)" + +[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network + +[ -f /etc/sysconfig/network-scripts/ifcfg-$interface ] && \ + . /etc/sysconfig/network-scripts/ifcfg-$interface + +if [ -d $ETCDIR/dhclient.d ]; then + for f in $ETCDIR/dhclient.d/*.sh; do + if [ -x $f ]; then + subsystem="${f%.sh}" + subsystem="${subsystem##*/}" + . ${f} + if [ "$2" = "up" ]; then + "${subsystem}_config" + elif [ "$2" = "down" ]; then + "${subsystem}_restore" + fi + fi + done +fi diff --git a/server/dhcp/files/12-dhcpd b/server/dhcp/files/12-dhcpd new file mode 100644 index 0000000000..a48da320da --- /dev/null +++ b/server/dhcp/files/12-dhcpd @@ -0,0 +1,21 @@ +#!/bin/bash +export LC_ALL=C + +[ -f /etc/sysconfig/dhcpd ] && . /etc/sysconfig/dhcpd + +# restart dhcpd whenever $1 interface is brought up by NM (rhbz #565921) +if [ "$2" = "up" ]; then + # exit if the service is not configured to be started in the current runlevel + /sbin/chkconfig dhcpd || exit 0 + + # exit if dhcpd is not defined to listen on $1 + # i.e. if there are interfaces defined in DHCPDARGS and $1 is not among them + if [ -n "${DHCPDARGS}" ] && + [[ "${DHCPDARGS}" == *eth* ]] && + [[ "${DHCPDARGS}" != *$1* ]]; then + exit 0 + fi + + # restart service + /sbin/service dhcpd restart || : +fi diff --git a/server/dhcp/files/56dhclient b/server/dhcp/files/56dhclient new file mode 100644 index 0000000000..25d14db205 --- /dev/null +++ b/server/dhcp/files/56dhclient @@ -0,0 +1,61 @@ +#!/bin/sh +# If we are running dhclient, shutdown running instances cleanly and +# bring them back up on resume. + +. "${PM_FUNCTIONS}" + +PM_DHCLIENT_RUNDIR="${PM_UTILS_RUNDIR}/network" +PM_DHCLIENT_SUSPEND="${PM_DHCLIENT_RUNDIR}/dhclient.suspend" + +suspend_dhclient() { + [ ! -d /etc/sysconfig/network-scripts ] && return + [ ! -x /sbin/ifdown ] && return + + [ ! -d ${PM_DHCLIENT_RUNDIR} ] && /bin/mkdir -p ${PM_DHCLIENT_RUNDIR} + [ -f ${PM_DHCLIENT_SUSPEND} ] && /bin/rm -f ${PM_DHCLIENT_SUSPEND} + + cd /etc/sysconfig/network-scripts + for ifcfg in ifcfg-* ; do + # Clear relevant parameters set by previous interface + # (lo doesn't set them) + NM_CONTROLLED= + BOOTPROTO= + + . ./${ifcfg} + + if [ "${NM_CONTROLLED}" = "no" ] || [ "${NM_CONTROLLED}" = "n" ] || [ "${NM_CONTROLLED}" = "false" ]; then + if [ "${BOOTPROTO}" = "bootp" ] || [ "${BOOTPROTO}" = "dhcp" ] || [ -z "${BOOTPROTO}" ]; then + # device is not NetworkManager controlled and uses dhcp, + # now see if it's actually up at the moment + /sbin/ip link show ${DEVICE} | /bin/grep -qE "state (UP|UNKNOWN)" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "${DEVICE}" >> ${PM_DHCLIENT_SUSPEND} + /sbin/ifdown ${DEVICE} + fi + fi + fi + done +} + +resume_dhclient() { + [ ! -f ${PM_DHCLIENT_SUSPEND} ] && return + [ ! -x /sbin/ifup ] && return + + cd /etc/sysconfig/network-scripts + while read device ; do + /sbin/ifup ${device} + done < ${PM_DHCLIENT_SUSPEND} + + /bin/rm -f ${PM_DHCLIENT_SUSPEND} +} + +case "$1" in + hibernate|suspend) + suspend_dhclient + ;; + thaw|resume) + resume_dhclient + ;; + *) exit $NA + ;; +esac diff --git a/server/dhcp/files/dhclient-script b/server/dhcp/files/dhclient-script new file mode 100644 index 0000000000..9290d91a9a --- /dev/null +++ b/server/dhcp/files/dhclient-script @@ -0,0 +1,754 @@ +#!/bin/bash +# +# dhclient-script: Network interface configuration script run by +# dhclient based on DHCP client communication +# +# Copyright (C) 2008, 2009, 2010 Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author(s): David Cantrell +# +# ---------- +# This script is a rewrite/reworking on dhclient-script originally +# included as part of dhcp-970306: +# dhclient-script for Linux. Dan Halbert, March, 1997. +# Updated for Linux 2.[12] by Brian J. Murrell, January 1999. +# Modified by David Cantrell for Fedora and RHEL +# ---------- +# + +PATH=/bin:/usr/bin:/sbin +SAVEDIR=/var/lib/dhclient + +LOGFACILITY="local7" +LOGLEVEL="notice" + +ETCDIR="/etc/dhcp" + +logmessage() { + msg="${1}" + logger -p ${LOGFACILITY}.${LOGLEVEL} -t "NET" "dhclient: ${msg}" +} + +fix_context() { + if [ -x /sbin/restorecon ]; then + /sbin/restorecon ${1} >/dev/null 2>&1 + fi +} + +save_previous() { + origfile="${1}" + savefile="${SAVEDIR}/${origfile##*/}.predhclient.${interface}" + + if [ ! -d ${SAVEDIR} ]; then + mkdir -p ${SAVEDIR} + fi + + if [ -e ${origfile} ]; then + contents="$(< ${origfile})" + echo "${contents}" > ${savefile} + rm -f ${origfile} + else + echo > ${savefile} + fi + + fix_context ${savefile} +} + +make_resolv_conf() { + [ "${PEERDNS}" = "no" ] && return + + if [ "${reason}" = "RENEW" ] && + [ "${new_domain_name}" = "${old_domain_name}" ] && + [ "${new_domain_name_servers}" = "${old_domain_name_servers}" ]; then + return + fi + + if [ -n "${new_domain_name}" ] || + [ -n "${new_domain_name_servers}" ] || + [ -n "${new_domain_search}" ]; then + save_previous /etc/resolv.conf + rscf="$(mktemp /tmp/XXXXXX)" + echo "; generated by /sbin/dhclient-script" > ${rscf} + + if [ -n "${SEARCH}" ]; then + echo "search ${SEARCH}" >> $rscf + else + if [ -n "${new_domain_search}" ]; then + echo "search ${new_domain_search//\\032/ }" >> ${rscf} + elif [ -n "${new_domain_name}" ]; then + # Note that the DHCP 'Domain Name Option' is really just a domain + # name, and that this practice of using the domain name option as + # a search path is both nonstandard and deprecated. + echo "search ${new_domain_name//\\032/ }" >> ${rscf} + fi + fi + + if [ -n "${RES_OPTIONS}" ]; then + echo "options ${RES_OPTIONS}" >> ${rscf} + fi + + for nameserver in ${new_domain_name_servers} ; do + echo "nameserver ${nameserver}" >> ${rscf} + done + + change_resolv_conf ${rscf} + rm -f ${rscf} + + fix_context /etc/resolv.conf + elif [ -n "${new_dhcp6_name_servers}" ] || + [ -n "${new_dhcp6_domain_search}" ]; then + save_previous /etc/resolv.conf + rscf="$(mktemp /tmp/XXXXXX)" + echo "; generated by /sbin/dhclient-script" > ${rscf} + + if [ -n "${SEARCH}" ]; then + echo "search ${SEARCH}" >> $rscf + else + if [ -n "${new_dhcp6_domain_search}" ]; then + echo "search ${new_dhcp6_domain_search//\\032/ }" >> ${rscf} + fi + fi + + if [ -n "${RES_OPTIONS}" ]; then + echo "options ${RES_OPTIONS}" >> ${rscf} + fi + + for nameserver in ${new_dhcp6_name_servers} ; do + echo "nameserver ${nameserver}" >> ${rscf} + done + + change_resolv_conf ${rscf} + rm -f ${rscf} + + fix_context /etc/resolv.conf + fi +} + +exit_with_hooks() { + exit_status="${1}" + + if [ -x ${ETCDIR}/dhclient-exit-hooks ]; then + . ${ETCDIR}/dhclient-exit-hooks + fi + + exit ${exit_status} +} + +quad2num() { + if [ $# -eq 4 ]; then + let n="${1} << 24 | ${2} << 16 | ${3} << 8 | ${4}" + echo "${n}" + return 0 + else + echo "0" + return 1 + fi +} + +ip2num() { + IFS="." quad2num ${1} +} + +num2ip() { + let n="${1}" + let o1="(n >> 24) & 0xff" + let o2="(n >> 16) & 0xff" + let o3="(n >> 8) & 0xff" + let o4="n & 0xff" + echo "${o1}.${o2}.${o3}.${o4}" +} + +get_network_address() { +# get network address for the given IP address and (netmask or prefix) + ip="${1}" + nm="${2}" + + if [ -n "${ip}" -a -n "${nm}" ]; then + if [[ "${nm}" = *.* ]]; then + ipcalc -s -n ${ip} ${nm} | cut -d '=' -f 2 + else + ipcalc -s -n ${ip}/${nm} | cut -d '=' -f 2 + fi + fi +} + +get_prefix() { +# get prefix for the given IP address and mask + ip="${1}" + nm="${2}" + + if [ -n "${ip}" -a -n "${nm}" ]; then + ipcalc -s -p ${ip} ${nm} | cut -d '=' -f 2 + fi +} + +class_bits() { + let ip=$(IFS='.' ip2num $1) + let bits=32 + let mask='255' + for ((i=0; i <= 3; i++, 'mask<<=8')); do + let v='ip&mask' + if [ "$v" -eq 0 ] ; then + let bits-=8 + else + break + fi + done + echo $bits +} + +is_router_reachable() { + # handle DHCP servers that give us a router not on our subnet + router="${1}" + routersubnet="$(get_network_address ${router} ${new_subnet_mask})" + mysubnet="$(get_network_address ${new_ip_address} ${new_subnet_mask})" + unreachable=0 + + if [ ! "${routersubnet}" = "${mysubnet}" ]; then + unreachable=1 + if arping -f -q -I ${interface} -w2 ${router}; then + ip -4 route add ${router}/32 dev ${interface} + if [ $? -eq 0 ]; then + unreachable=0 + else + logmessage "failed to create host router for unreachable router ${router} not on subnet ${mysubnet}" + fi + else + unreachable=1 + logmessage "DHCP router ${router} is unreachable on DHCP subnet ${mysubnet} router subnet ${routersubnet}" + fi + fi + + return ${unreachable} +} + +add_default_gateway() { + router="${1}" + metric="" + + if [ $# -gt 1 ] && [ ${2} -gt 0 ]; then + metric="metric ${2}" + fi + + if is_router_reachable ${router} ; then + ip -4 route replace default via ${router} dev ${interface} ${metric} + if [ $? -ne 0 ]; then + logmessage "failed to create default route: ${router} dev ${interface} ${metric}" + return 1 + else + return 0 + fi + fi + + return 1 +} + +dhconfig() { + if [ -n "${old_ip_address}" ] && [ -n "${alias_ip_address}" ] && + [ ! "${alias_ip_address}" = "${old_ip_address}" ]; then + # possible new alias, remove old alias first + ip -4 addr del ${old_ip_address} dev ${interface}:0 + fi + + if [ -n "${old_ip_address}" ] && + [ ! "${old_ip_address}" = "${new_ip_address}" ]; then + # IP address changed. Bringing down the interface will delete all + # routes, and clear the ARP cache. + ip -4 addr flush dev ${interface} >/dev/null 2>&1 + fi + + if [ "${reason}" = "BOUND" ] || [ "${reason}" = "REBOOT" ] || + [ ! "${old_ip_address}" = "${new_ip_address}" ] || + [ ! "${old_subnet_mask}" = "${new_subnet_mask}" ] || + [ ! "${old_network_number}" = "${new_network_number}" ] || + [ ! "${old_broadcast_address}" = "${new_broadcast_address}" ] || + [ ! "${old_routers}" = "${new_routers}" ] || + [ ! "${old_interface_mtu}" = "${new_interface_mtu}" ]; then + ip -4 addr add ${new_ip_address}/${new_prefix} broadcast ${new_broadcast_address} dev ${interface} + ip link set dev ${interface} up + + # The 576 MTU is only used for X.25 and dialup connections + # where the admin wants low latency. Such a low MTU can cause + # problems with UDP traffic, among other things. As such, + # disallow MTUs from 576 and below by default, so that broken + # MTUs are ignored, but higher stuff is allowed (1492, 1500, etc). + if [ -n "${new_interface_mtu}" ] && [ ${new_interface_mtu} -gt 576 ]; then + ip link set ${interface} mtu ${new_interface_mtu} + fi + + if [ -x ${ETCDIR}/dhclient-${interface}-up-hooks ]; then + . ${ETCDIR}/dhclient-${interface}-up-hooks + elif [ -x ${ETCDIR}/dhclient-up-hooks ]; then + . ${ETCDIR}/dhclient-up-hooks + fi + + # static routes + if [ -n "${new_classless_static_routes}" ] || + [ -n "${new_static_routes}" ]; then + if [ -n "${new_classless_static_routes}" ]; then + IFS=', |' static_routes=(${new_classless_static_routes}) + + # If the DHCP server returns both a Classless Static Routes option and + # a Router option, the DHCP client MUST ignore the Router option. (RFC3442) + new_routers="" + else + IFS=', |' static_routes=(${new_static_routes}) + fi + route_targets=() + + for((i=0; i<${#static_routes[@]}; i+=2)); do + target=${static_routes[$i]} + if [ -n "${new_classless_static_routes}" ]; then + prefix=$(echo ${target} | cut -d "." -f 1) + target=$(echo ${target} | cut -d "." -f 2-) + IFS="." target_arr=(${target}) + unset IFS + ((pads=4-${#target_arr[@]})) + for j in $(seq $pads); do + target=${target}".0" + done + + # Client MUST zero any bits in the subnet number where the corresponding bit in the mask is zero. + # In other words, the subnet number installed in the routing table is the logical AND of + # the subnet number and subnet mask given in the Classless Static Routes option. (RFC3442) + target="$(get_network_address ${target} ${prefix})" + else + prefix=$(class_bits ${target}) + fi + gateway=${static_routes[$i+1]} + + metric='' + for t in ${route_targets[@]}; do + if [ ${t} = ${target} ]; then + if [ -z "${metric}" ]; then + metric=1 + else + ((metric=metric+1)) + fi + fi + done + + if [ -n "${metric}" ]; then + metric="metric ${metric}" + fi + + if is_router_reachable ${gateway}; then + ip -4 route replace ${target}/${prefix} via ${gateway} dev ${interface} ${metric} + + if [ $? -ne 0 ]; then + logmessage "failed to create static route: ${target}/${prefix} via ${gateway} dev ${interface} ${metric}" + else + route_targets=(${route_targets[@]} ${target}) + fi + fi + done + fi + + # gateways + if [[ ( "${DEFROUTE}" != "no") && + (( -z "${GATEWAYDEV}" ) || + ( "${GATEWAYDEV}" = "${interface}" )) ]]; then + if [[ ( -z "$GATEWAY" ) || + (( -n "$DHCLIENT_IGNORE_GATEWAY" ) && + ( "$DHCLIENT_IGNORE_GATEWAY" = [Yy]* )) ]]; then + metric="${METRIC:-}" + let i="${METRIC:-0}" + default_routers=() + + for router in ${new_routers} ; do + added_router=- + + for r in ${default_routers[@]} ; do + if [ "${r}" = "${router}" ]; then + added_router=1 + fi + done + + if [ -z "${router}" ] || + [ "${added_router}" = "1" ] || + [ $(IFS=. ip2num ${router}) -le 0 ] || + [[ ( "${router}" = "${new_broadcast_address}" ) && + ( "${new_subnet_mask}" != "255.255.255.255" ) ]]; then + continue + fi + + default_routers=(${default_routers[@]} ${router}) + add_default_gateway ${router} ${metric} + let i=i+1 + metric=${i} + done + elif [ -n "${GATEWAY}" ]; then + routersubnet=$(get_network_address ${GATEWAY} ${new_subnet_mask}) + mysubnet=$(get_network_address ${new_ip_address} ${new_subnet_mask}) + + if [ "${routersubnet}" = "${mysubnet}" ]; then + ip -4 route replace default via ${GATEWAY} dev ${interface} + fi + fi + fi + + fi + + if [ ! "${new_ip_address}" = "${alias_ip_address}" ] && + [ -n "${alias_ip_address}" ]; then + ip -4 addr flush dev ${interface}:0 >/dev/null 2>&1 + ip -4 addr add ${alias_ip_address}/${alias_prefix} dev ${interface}:0 + ip -4 route replace ${alias_ip_address}/32 dev ${interface}:0 + fi + + make_resolv_conf + + if [ -n "${new_host_name}" ] && need_hostname; then + hostname ${new_host_name} || echo "See -nc option in dhclient(8) man page." + fi + + if [ -n "${DHCP_TIME_OFFSET_SETS_TIMEZONE}" ] && + [[ "${DHCP_TIME_OFFSET_SETS_TIMEZONE}" = [yY1]* ]]; then + if [ -n "${new_time_offset}" ]; then + # DHCP option "time-offset" is requested by default and should be + # handled. The geographical zone abbreviation cannot be determined + # from the GMT offset, but the $ZONEINFO/Etc/GMT$offset file can be + # used - note: this disables DST. + ((z=new_time_offset/3600)) + ((hoursWest=$(printf '%+d' $z))) + + if (( $hoursWest < 0 )); then + # tzdata treats negative 'hours west' as positive 'gmtoff'! + ((hoursWest*=-1)) + fi + + tzfile=/usr/share/zoneinfo/Etc/GMT$(printf '%+d' ${hoursWest}) + if [ -e ${tzfile} ]; then + save_previous /etc/localtime + cp -fp ${tzfile} /etc/localtime + touch /etc/localtime + fix_context /etc/localtime + fi + fi + fi + + # execute any additional client side configuration scripts we have + if [ -d ${ETCDIR}/dhclient.d ]; then + for f in ${ETCDIR}/dhclient.d/*.sh ; do + if [ -x ${f} ]; then + subsystem="${f%.sh}" + subsystem="${subsystem##*/}" + . ${f} + "${subsystem}_config" + fi + done + fi +} + +# Section 18.1.8. (Receipt of Reply Messages) of RFC 3315 says: +# The client SHOULD perform duplicate address detection on each of +# the addresses in any IAs it receives in the Reply message before +# using that address for traffic. +add_ipv6_addr_with_DAD() { + ip -6 addr add ${new_ip6_address}/${new_ip6_prefixlen} \ + dev ${interface} scope global + + # repeatedly test whether newly added address passed + # duplicate address detection (DAD) + for i in $(seq 5); do + sleep 1 # give the DAD some time + + # tentative flag = DAD is still not complete or failed + duplicate=$(ip -6 addr show dev ${interface} tentative \ + | grep ${new_ip6_address}/${new_ip6_prefixlen}) + + # if there's no tentative flag, address passed DAD + if [ -z "${duplicate}" ]; then + break + fi + done + + # if there's still tentative flag = address didn't pass DAD = + # = it's duplicate = remove it + if [ -n "${duplicate}" ]; then + ip -6 addr del ${new_ip6_address}/${new_ip6_prefixlen} dev ${interface} + exit_with_hooks 3 + fi +} + +dh6config() { + case "${reason}" in + BOUND6) + if [ -z "${new_ip6_address}" ] && + [ -z "${new_ip6_prefixlen}" ]; then + exit_with_hooks 2 + fi + + add_ipv6_addr_with_DAD + + make_resolv_conf + ;; + + RENEW6|REBIND6) + if [ -n "${new_ip6_prefixlen}" ] && + [ -n "${new_ip6_address}" ] && + [ ! "${new_ip6_address}" = "${old_ip6_address}" ]; then + add_ipv6_addr_with_DAD + fi + + if [ ! "${new_dhcp6_name_servers}" = "${old_dhcp6_name_servers}" ] || + [ ! "${new_dhcp6_domain_search}" = "${old_dhcp6_domain_search}" ]; then + make_resolv_conf + fi + ;; + + DEPREF6) + if [ -z "${new_ip6_prefixlen}" ]; then + exit_with_hooks 2 + fi + + ip -6 addr change ${new_ip6_address}/${new_ip6_prefixlen} \ + dev ${interface} scope global preferred_lft 0 + ;; + esac + + # execute any additional client side configuration scripts we have + if [ -d ${ETCDIR}/dhclient.d ]; then + for f in ${ETCDIR}/dhclient.d/*.sh ; do + if [ -x ${f} ]; then + subsystem="${f%.sh}" + subsystem="${subsystem##*/}" + . ${f} + "${subsystem}_config" + fi + done + fi +} + + +# +# ### MAIN +# + +if [ -x ${ETCDIR}/dhclient-enter-hooks ]; then + exit_status=0 + + # dhclient-enter-hooks can abort dhclient-script by setting + # the exit_status variable to a non-zero value + . ${ETCDIR}/dhclient-enter-hooks + if [ ${exit_status} -ne 0 ]; then + exit ${exit_status} + fi +fi + +if [ ! -r /etc/sysconfig/network-scripts/network-functions ]; then + echo "Missing /etc/sysconfig/network-scripts/network-functions, exiting." >&2 + exit 1 +fi + +if [ ! -r /etc/rc.d/init.d/functions ]; then + echo "Missing /etc/rc.d/init.d/functions, exiting." >&2 + exit 1 +fi + +. /etc/sysconfig/network-scripts/network-functions +. /etc/rc.d/init.d/functions + +if [ -f /etc/sysconfig/network ]; then + . /etc/sysconfig/network +fi + +if [ -f /etc/sysconfig/networking/network ]; then + . /etc/sysconfig/networking/network +fi + +cd /etc/sysconfig/network-scripts +CONFIG="ifcfg-${interface}" +need_config ${CONFIG} +source_config >/dev/null 2>&1 + +new_prefix="$(get_prefix ${new_ip_address} ${new_subnet_mask})" +old_prefix="$(get_prefix ${old_ip_address} ${old_subnet_mask})" +alias_prefix="$(get_prefix ${alias_ip_address} ${alias_subnet_mask})" + +case "${reason}" in + MEDIUM) + # Linux doesn't handle mediums (media) + exit_with_hooks 0 + ;; + + PREINIT) + if [ -n "${alias_ip_address}" ]; then + # Bring down alias interface, its routes will disappear too. + ip link set ${interface}:0 down + fi + + if [ "${keep_old_ip}" = "yes" ]; then + ip link set ${interface} up + else + ip -4 addr flush dev ${interface} >/dev/null 2>&1 + ip link set ${interface} up + fi + + if [ -n "${DHCLIENT_DELAY}" ] && [ ${DHCLIENT_DELAY} -gt 0 ]; then + sleep ${DHCLIENT_DELAY} + fi + + exit_with_hooks 0 + ;; + + PREINIT6) + # ensure interface is up + ip link set ${interface} up + + # remove any stale addresses from aborted clients + ip -6 addr flush dev ${interface} scope global permanent + + exit_with_hooks 0 + ;; + + ARPCHECK|ARPSEND) + if [ -z "${new_ip_address}" ] || [ -z "${interface}" ] || + arping -q -f -c 2 -w 3 -D -I ${interface} ${new_ip_address}; then + exit_with_hooks 0 + else + exit_with_hooks 1 + fi + ;; + + BOUND|RENEW|REBIND|REBOOT) + dhconfig + exit_with_hooks 0 + ;; + + BOUND6|RENEW6|REBIND6|DEPREF6) + dh6config + exit_with_hooks 0 + ;; + + EXPIRE6|RELEASE6|STOP6) + if [ -z "${old_ip6_address}" ] || [ -z "${old_ip6_prefixlen}" ]; then + exit_with_hooks 2 + fi + + ip -6 addr del ${old_ip6_address}/${old_ip6_prefixlen} \ + dev ${interface} + + # execute any additional client side configuration scripts we have + if [ -d ${ETCDIR}/dhclient.d ]; then + for f in ${ETCDIR}/dhclient.d/*.sh ; do + if [ -x ${f} ]; then + subsystem="${f%.sh}" + subsystem="${subsystem##*/}" + . ${f} + "${subsystem}_restore" + fi + done + fi + + if [ -x ${ETCDIR}/dhclient-${interface}-down-hooks ]; then + . ${ETCDIR}/dhclient-${interface}-down-hooks + elif [ -x ${ETCDIR}/dhclient-down-hooks ]; then + . ${ETCDIR}/dhclient-down-hooks + fi + + exit_with_hooks 0 + ;; + + EXPIRE|FAIL|RELEASE|STOP) + # only restore config files if there are no other dhclient processes + # running (#306381) + any_other_clients="$(ps -eo pid,ppid,comm | grep dhclient | grep -v ${PPID})" + if [ -n "${any_other_clients}" ]; then + if [ -f ${SAVEDIR}/resolv.conf.predhclient.${interface} ]; then + change_resolv_conf ${SAVEDIR}/resolv.conf.predhclient.${interface} + rm -f ${SAVEDIR}/resolv.conf.predhclient.${interface} + fi + + if [ -n "${DHCP_TIME_OFFSET_SETS_TIMEZONE}" ] && + [[ "${DHCP_TIME_OFFSET_SETS_TIMEZONE}" = [yY1]* ]]; then + if [ -e ${SAVEDIR}/localtime.predhclient.${interface} ]; then + rm -f /etc/localtime + contents="$(< ${SAVEDIR}/localtime.predhclient.${interface})" + echo "${contents}" > /etc/localtime + rm -f ${SAVEDIR}/localtime.predhclient.${interface} + touch /etc/localtime + fix_context /etc/localtime + fi + fi + fi + + # execute any additional client side configuration scripts we have + if [ -d ${ETCDIR}/dhclient.d ]; then + for f in ${ETCDIR}/dhclient.d/*.sh ; do + if [ -x ${f} ]; then + subsystem="${f%.sh}" + subsystem="${subsystem##*/}" + . ${f} + "${subsystem}_restore" + fi + done + fi + + if [ -x ${ETCDIR}/dhclient-${interface}-down-hooks ]; then + . ${ETCDIR}/dhclient-${interface}-down-hooks + elif [ -x ${ETCDIR}/dhclient-down-hooks ]; then + . ${ETCDIR}/dhclient-down-hooks + fi + + if [ -n "${alias_ip_address}" ]; then + # Turn off alias interface + ip link set ${interface}:0 down + fi + + if [ -n "${old_ip_address}" ]; then + # Shut down interface, which will delete routes and clear arp cache. + ip -4 addr flush dev ${interface} >/dev/null 2>&1 + ip link set ${interface} down + fi + + if [ -n "${alias_ip_address}" ]; then + ip -4 addr add ${alias_ip_address}/${alias_prefix} dev ${interface}:0 + ip -4 route replace ${alias_ip_address}/32 ${interface}:0 + fi + + exit_with_hooks 0 + ;; + + TIMEOUT) + if [ -n "${new_routers}" ]; then + if [ -n "${alias_ip_address}" ]; then + ip -4 addr flush dev ${interface}:0 >/dev/null 2>&1 + fi + + ip -4 addr add ${new_ip_address}/${new_prefix} broadcast ${new_broadcast_address} dev ${interface} + set ${new_routers} + + if ping -q -c 1 -w 10 -I ${interface} ${1}; then + dhconfig + exit_with_hooks 0 + fi + + ip -4 addr flush dev ${interface} >/dev/null 2>&1 + ip link set ${interface} down + exit_with_hooks 1 + else + exit_with_hooks 1 + fi + ;; + + *) + logmessage "unhandled state: ${reason}" + exit_with_hooks 1 + ;; +esac + +exit_with_hooks 0 diff --git a/server/dhcp/files/dhclient.conf b/server/dhcp/files/dhclient.conf new file mode 100644 index 0000000000..c5837d7479 --- /dev/null +++ b/server/dhcp/files/dhclient.conf @@ -0,0 +1,40 @@ +#Please refer to dhclient.conf(5) man page + +#send host-name "pisilinux"; +#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; +#send dhcp-lease-time 3600; +#supersede domain-name "fugue.com home.vix.com"; +#prepend domain-name-servers 127.0.0.1; + +#request subnet-mask, broadcast-address, time-offset, routers, +# domain-name, domain-name-servers, host-name; + +#require subnet-mask, domain-name-servers; +#timeout 60; +#retry 60; +#reboot 10; +#select-timeout 5; +#initial-interval 2; +#script "/etc/dhcp/dhclient-script"; +#media "-link0 -link1 -link2", "link0 link1"; +#reject 192.33.137.209; + +#alias { +# interface "ep0"; +# fixed-address 192.5.5.213; +# option subnet-mask 255.255.255.255; +#} + +#lease { +# interface "ep0"; +# fixed-address 192.33.137.200; +# medium "link0 link1"; +# option host-name "andare.swiftmedia.com"; +# option subnet-mask 255.255.255.0; +# option broadcast-address 192.33.137.255; +# option routers 192.33.137.250; +# option domain-name-servers 127.0.0.1; +# renew 2 2000/1/12 00:00:01; +# rebind 2 2000/1/12 00:00:01; +# expire 2 2000/1/12 00:00:01; +#} diff --git a/server/dhcp/files/dhcp-4.2.0-IFNAMSIZ.patch b/server/dhcp/files/dhcp-4.2.0-IFNAMSIZ.patch new file mode 100644 index 0000000000..b8437daaac --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-IFNAMSIZ.patch @@ -0,0 +1,12 @@ +diff -up dhcp-4.2.0/server/dhcpd.c.ifnamsiz dhcp-4.2.0/server/dhcpd.c +--- dhcp-4.2.0/server/dhcpd.c.ifnamsiz 2010-07-21 14:31:39.000000000 +0200 ++++ dhcp-4.2.0/server/dhcpd.c 2010-07-21 16:05:49.000000000 +0200 +@@ -409,7 +409,7 @@ main(int argc, char **argv) { + log_fatal ("Insufficient memory to %s %s: %s", + "record interface", argv [i], + isc_result_totext (result)); +- strcpy (tmp -> name, argv [i]); ++ strncpy (tmp -> name, argv [i], sizeof (tmp -> name)); + if (interfaces) { + interface_reference (&tmp -> next, + interfaces, MDL); diff --git a/server/dhcp/files/dhcp-4.2.0-P2-omapi.patch b/server/dhcp/files/dhcp-4.2.0-P2-omapi.patch new file mode 100644 index 0000000000..0222090eda --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-P2-omapi.patch @@ -0,0 +1,12 @@ +diff -up dhcp-4.2.0-P2/omapip/protocol.c.omapi dhcp-4.2.0-P2/omapip/protocol.c +--- dhcp-4.2.0-P2/omapip/protocol.c.omapi 2009-11-20 02:49:02.000000000 +0100 ++++ dhcp-4.2.0-P2/omapip/protocol.c 2011-01-03 16:30:25.000000000 +0100 +@@ -386,7 +386,7 @@ isc_result_t omapi_protocol_signal_handl + /* Should only receive these when opening the initial authenticator. */ + if (!strcmp (name, "status")) { + status = va_arg (ap, isc_result_t); +- if (status != ISC_R_SUCCESS) { ++ if ((status != ISC_R_SUCCESS) && (status >= ISC_RESULTCLASS_DHCP)) { + omapi_signal_in (h -> inner, "status", status, + (omapi_object_t *)0); + omapi_disconnect (p -> outer, 1); diff --git a/server/dhcp/files/dhcp-4.2.0-PPP.patch b/server/dhcp/files/dhcp-4.2.0-PPP.patch new file mode 100644 index 0000000000..bef2be7f08 --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-PPP.patch @@ -0,0 +1,150 @@ +diff -up dhcp-4.2.0-P1/client/dhc6.c.PPP dhcp-4.2.0-P1/client/dhc6.c +--- dhcp-4.2.0-P1/client/dhc6.c.PPP 2010-11-05 10:47:37.000000000 +0100 ++++ dhcp-4.2.0-P1/client/dhc6.c 2010-11-09 15:54:12.000000000 +0100 +@@ -129,7 +129,7 @@ extern int stateless; + * is not how it is intended. Upcoming rearchitecting the client should + * address this "one daemon model." + */ +-void ++isc_result_t + form_duid(struct data_string *duid, const char *file, int line) + { + struct interface_info *ip; +@@ -141,6 +141,15 @@ form_duid(struct data_string *duid, cons + if (ip == NULL) + log_fatal("Impossible condition at %s:%d.", MDL); + ++ while (ip && ip->hw_address.hbuf[0] == HTYPE_RESERVED) { ++ /* Try the other interfaces */ ++ log_debug("Cannot form default DUID from interface %s.", ip->name); ++ ip = ip->next; ++ } ++ if (ip == NULL) { ++ return ISC_R_UNEXPECTED; ++ } ++ + if ((ip->hw_address.hlen == 0) || + (ip->hw_address.hlen > sizeof(ip->hw_address.hbuf))) + log_fatal("Impossible hardware address length at %s:%d.", MDL); +@@ -176,6 +185,8 @@ form_duid(struct data_string *duid, cons + memcpy(duid->buffer->data + 4, ip->hw_address.hbuf + 1, + ip->hw_address.hlen - 1); + } ++ ++ return ISC_R_SUCCESS; + } + + /* +@@ -5289,7 +5300,8 @@ make_client6_options(struct client_state + */ + if ((oc = lookup_option(&dhcpv6_universe, *op, + D6O_CLIENTID)) == NULL) { +- if (!option_cache(&oc, &default_duid, NULL, clientid_option, ++ if (default_duid.len == 0 || ++ !option_cache(&oc, &default_duid, NULL, clientid_option, + MDL)) + log_fatal("Failure assembling a DUID."); + +diff -up dhcp-4.2.0-P1/client/dhclient.c.PPP dhcp-4.2.0-P1/client/dhclient.c +--- dhcp-4.2.0-P1/client/dhclient.c.PPP 2010-11-05 10:47:37.000000000 +0100 ++++ dhcp-4.2.0-P1/client/dhclient.c 2010-11-09 15:37:26.000000000 +0100 +@@ -911,8 +911,8 @@ main(int argc, char **argv) { + if (default_duid.buffer != NULL) + data_string_forget(&default_duid, MDL); + +- form_duid(&default_duid, MDL); +- write_duid(&default_duid); ++ if (form_duid(&default_duid, MDL) == ISC_R_SUCCESS) ++ write_duid(&default_duid); + } + + for (ip = interfaces ; ip != NULL ; ip = ip->next) { +diff -up dhcp-4.2.0-P1/common/bpf.c.PPP dhcp-4.2.0-P1/common/bpf.c +--- dhcp-4.2.0-P1/common/bpf.c.PPP 2010-11-05 10:47:37.000000000 +0100 ++++ dhcp-4.2.0-P1/common/bpf.c 2010-11-09 15:42:42.000000000 +0100 +@@ -599,6 +599,22 @@ get_hw_addr(const char *name, struct har + memcpy(&hw->hbuf[1], LLADDR(sa), sa->sdl_alen); + break; + #endif /* IFT_FDDI */ ++#if defined(IFT_PPP) ++ case IFT_PPP: ++ if (local_family != AF_INET6) ++ log_fatal("Unsupported device type %d for \"%s\"", ++ sa->sdl_type, name); ++ hw->hlen = 0; ++ hw->hbuf[0] = HTYPE_RESERVED; ++ /* 0xdeadbeef should never occur on the wire, ++ * and is a signature that something went wrong. ++ */ ++ hw->hbuf[1] = 0xde; ++ hw->hbuf[2] = 0xad; ++ hw->hbuf[3] = 0xbe; ++ hw->hbuf[4] = 0xef; ++ break; ++#endif + default: + log_fatal("Unsupported device type %d for \"%s\"", + sa->sdl_type, name); +diff -up dhcp-4.2.0-P1/common/lpf.c.PPP dhcp-4.2.0-P1/common/lpf.c +--- dhcp-4.2.0-P1/common/lpf.c.PPP 2010-11-05 10:47:37.000000000 +0100 ++++ dhcp-4.2.0-P1/common/lpf.c 2010-11-09 15:45:40.000000000 +0100 +@@ -502,6 +502,22 @@ get_hw_addr(const char *name, struct har + hw->hbuf[0] = HTYPE_FDDI; + memcpy(&hw->hbuf[1], sa->sa_data, 16); + break; ++#if defined(ARPHRD_PPP) ++ case ARPHRD_PPP: ++ if (local_family != AF_INET6) ++ log_fatal("Unsupported device type %d for \"%s\"", ++ sa->sa_family, name); ++ hw->hlen = 0; ++ hw->hbuf[0] = HTYPE_RESERVED; ++ /* 0xdeadbeef should never occur on the wire, ++ * and is a signature that something went wrong. ++ */ ++ hw->hbuf[1] = 0xde; ++ hw->hbuf[2] = 0xad; ++ hw->hbuf[3] = 0xbe; ++ hw->hbuf[4] = 0xef; ++ break; ++#endif + default: + log_fatal("Unsupported device type %ld for \"%s\"", + (long int)sa->sa_family, name); +diff -up dhcp-4.2.0-P1/includes/dhcpd.h.PPP dhcp-4.2.0-P1/includes/dhcpd.h +--- dhcp-4.2.0-P1/includes/dhcpd.h.PPP 2010-11-05 10:47:37.000000000 +0100 ++++ dhcp-4.2.0-P1/includes/dhcpd.h 2010-11-09 15:46:58.000000000 +0100 +@@ -2733,7 +2733,7 @@ void dhcpv4_client_assignments(void); + void dhcpv6_client_assignments(void); + + /* dhc6.c */ +-void form_duid(struct data_string *duid, const char *file, int line); ++isc_result_t form_duid(struct data_string *duid, const char *file, int line); + void dhc6_lease_destroy(struct dhc6_lease **src, const char *file, int line); + void start_init6(struct client_state *client); + void start_info_request6(struct client_state *client); +diff -up dhcp-4.2.0-P1/includes/dhcp.h.PPP dhcp-4.2.0-P1/includes/dhcp.h +--- dhcp-4.2.0-P1/includes/dhcp.h.PPP 2010-11-05 10:47:37.000000000 +0100 ++++ dhcp-4.2.0-P1/includes/dhcp.h 2010-11-09 15:48:53.000000000 +0100 +@@ -80,6 +80,8 @@ struct dhcp_packet { + #define HTYPE_IEEE802 6 /* IEEE 802.2 Token Ring... */ + #define HTYPE_FDDI 8 /* FDDI... */ + ++#define HTYPE_RESERVED 0 /* RFC 5494 */ ++ + /* Magic cookie validating dhcp options field (and bootp vendor + extensions field). */ + #define DHCP_OPTIONS_COOKIE "\143\202\123\143" +diff -up dhcp-4.2.0-P1/server/dhcpv6.c.PPP dhcp-4.2.0-P1/server/dhcpv6.c +--- dhcp-4.2.0-P1/server/dhcpv6.c.PPP 2010-11-05 10:47:37.000000000 +0100 ++++ dhcp-4.2.0-P1/server/dhcpv6.c 2010-11-09 15:50:17.000000000 +0100 +@@ -300,6 +300,9 @@ generate_new_server_duid(void) { + if (p->hw_address.hlen > 0) { + break; + } ++ if (p->next == NULL && p->hw_address.hbuf[0] == HTYPE_RESERVED) { ++ log_error("Can not generate DUID from interfaces which do not have hardware addresses, please configure server-duid!"); ++ } + } + if (p == NULL) { + return ISC_R_UNEXPECTED; diff --git a/server/dhcp/files/dhcp-4.2.0-add_timeout_when_NULL.patch b/server/dhcp/files/dhcp-4.2.0-add_timeout_when_NULL.patch new file mode 100644 index 0000000000..4784d5a684 --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-add_timeout_when_NULL.patch @@ -0,0 +1,14 @@ +diff -up dhcp-4.2.0/common/dispatch.c.dracut dhcp-4.2.0/common/dispatch.c +--- dhcp-4.2.0/common/dispatch.c.dracut 2010-06-01 19:29:59.000000000 +0200 ++++ dhcp-4.2.0/common/dispatch.c 2010-07-21 16:10:09.000000000 +0200 +@@ -189,6 +189,10 @@ void add_timeout (when, where, what, ref + isc_interval_t interval; + isc_time_t expires; + ++ if (when == NULL) { ++ return; ++ } ++ + /* See if this timeout supersedes an existing timeout. */ + t = (struct timeout *)0; + for (q = timeouts; q; q = q->next) { diff --git a/server/dhcp/files/dhcp-4.2.0-default-requested-options.patch b/server/dhcp/files/dhcp-4.2.0-default-requested-options.patch new file mode 100644 index 0000000000..fea8a4b99c --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-default-requested-options.patch @@ -0,0 +1,44 @@ +diff -up dhcp-4.2.0/client/clparse.c.requested dhcp-4.2.0/client/clparse.c +--- dhcp-4.2.0/client/clparse.c.requested 2010-07-21 13:29:05.000000000 +0200 ++++ dhcp-4.2.0/client/clparse.c 2010-07-21 13:50:29.000000000 +0200 +@@ -37,7 +37,7 @@ + + struct client_config top_level_config; + +-#define NUM_DEFAULT_REQUESTED_OPTS 9 ++#define NUM_DEFAULT_REQUESTED_OPTS 14 + struct option *default_requested_options[NUM_DEFAULT_REQUESTED_OPTS + 1]; + + static void parse_client_default_duid(struct parse *cfile); +@@ -111,6 +111,31 @@ isc_result_t read_client_conf () + option_code_hash_lookup(&default_requested_options[8], + dhcpv6_universe.code_hash, &code, 0, MDL); + ++ /* 10 */ ++ code = DHO_NIS_DOMAIN; ++ option_code_hash_lookup(&default_requested_options[9], ++ dhcp_universe.code_hash, &code, 0, MDL); ++ ++ /* 11 */ ++ code = DHO_NIS_SERVERS; ++ option_code_hash_lookup(&default_requested_options[10], ++ dhcp_universe.code_hash, &code, 0, MDL); ++ ++ /* 12 */ ++ code = DHO_NTP_SERVERS; ++ option_code_hash_lookup(&default_requested_options[11], ++ dhcp_universe.code_hash, &code, 0, MDL); ++ ++ /* 13 */ ++ code = DHO_INTERFACE_MTU; ++ option_code_hash_lookup(&default_requested_options[12], ++ dhcp_universe.code_hash, &code, 0, MDL); ++ ++ /* 14 */ ++ code = DHO_DOMAIN_SEARCH; ++ option_code_hash_lookup(&default_requested_options[13], ++ dhcp_universe.code_hash, &code, 0, MDL); ++ + for (code = 0 ; code < NUM_DEFAULT_REQUESTED_OPTS ; code++) { + if (default_requested_options[code] == NULL) + log_fatal("Unable to find option definition for " diff --git a/server/dhcp/files/dhcp-4.2.0-dhclient-decline-backoff.patch b/server/dhcp/files/dhcp-4.2.0-dhclient-decline-backoff.patch new file mode 100644 index 0000000000..81bec7bd47 --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-dhclient-decline-backoff.patch @@ -0,0 +1,63 @@ +diff -up dhcp-4.2.0/client/dhclient.c.backoff dhcp-4.2.0/client/dhclient.c +--- dhcp-4.2.0/client/dhclient.c.backoff 2010-07-21 13:37:03.000000000 +0200 ++++ dhcp-4.2.0/client/dhclient.c 2010-07-21 13:38:31.000000000 +0200 +@@ -1208,6 +1208,8 @@ void state_init (cpp) + void *cpp; + { + struct client_state *client = cpp; ++ enum dhcp_state init_state = client->state; ++ struct timeval tv; + + ASSERT_STATE(state, S_INIT); + +@@ -1220,9 +1222,18 @@ void state_init (cpp) + client -> first_sending = cur_time; + client -> interval = client -> config -> initial_interval; + +- /* Add an immediate timeout to cause the first DHCPDISCOVER packet +- to go out. */ +- send_discover (client); ++ if (init_state != S_DECLINED) { ++ /* Add an immediate timeout to cause the first DHCPDISCOVER packet ++ to go out. */ ++ send_discover(client); ++ } else { ++ /* We've received an OFFER and it has been DECLINEd by dhclient-script. ++ * wait for a random time between 1 and backoff_cutoff seconds before ++ * trying again. */ ++ tv . tv_sec = cur_time + ((1 + (random() >> 2)) % client->config->backoff_cutoff); ++ tv . tv_usec = 0; ++ add_timeout(&tv, send_discover, client, 0, 0); ++ } + } + + /* +@@ -1501,6 +1512,7 @@ void bind_lease (client) + send_decline (client); + destroy_client_lease (client -> new); + client -> new = (struct client_lease *)0; ++ client -> state = S_DECLINED; + state_init (client); + return; + } +@@ -3711,6 +3723,7 @@ void client_location_changed () + case S_INIT: + case S_REBINDING: + case S_STOPPED: ++ case S_DECLINED: + break; + } + client -> state = S_INIT; +diff -up dhcp-4.2.0/includes/dhcpd.h.backoff dhcp-4.2.0/includes/dhcpd.h +--- dhcp-4.2.0/includes/dhcpd.h.backoff 2010-07-21 13:29:05.000000000 +0200 ++++ dhcp-4.2.0/includes/dhcpd.h 2010-07-21 13:38:31.000000000 +0200 +@@ -1056,7 +1056,8 @@ enum dhcp_state { + S_BOUND = 5, + S_RENEWING = 6, + S_REBINDING = 7, +- S_STOPPED = 8 ++ S_STOPPED = 8, ++ S_DECLINED = 9 + }; + + /* Authentication and BOOTP policy possibilities (not all values work diff --git a/server/dhcp/files/dhcp-4.2.0-errwarn-message.patch b/server/dhcp/files/dhcp-4.2.0-errwarn-message.patch new file mode 100644 index 0000000000..a0f70cd042 --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-errwarn-message.patch @@ -0,0 +1,30 @@ +diff -up dhcp-4.2.0/omapip/errwarn.c.errwarn dhcp-4.2.0/omapip/errwarn.c +--- dhcp-4.2.0/omapip/errwarn.c.errwarn 2009-07-23 20:52:21.000000000 +0200 ++++ dhcp-4.2.0/omapip/errwarn.c 2010-07-21 13:23:47.000000000 +0200 +@@ -76,20 +76,13 @@ void log_fatal (const char * fmt, ... ) + + #if !defined (NOMINUM) + log_error ("%s", ""); +- log_error ("If you did not get this software from ftp.isc.org, please"); +- log_error ("get the latest from ftp.isc.org and install that before"); +- log_error ("requesting help."); ++ log_error ("This version of ISC DHCP is based on the release available"); ++ log_error ("on ftp.isc.org. Features have been added and other changes"); ++ log_error ("have been made to the base software release in order to make"); ++ log_error ("it work better with this distribution."); + log_error ("%s", ""); +- log_error ("If you did get this software from ftp.isc.org and have not"); +- log_error ("yet read the README, please read it before requesting help."); +- log_error ("If you intend to request help from the dhcp-server@isc.org"); +- log_error ("mailing list, please read the section on the README about"); +- log_error ("submitting bug reports and requests for help."); +- log_error ("%s", ""); +- log_error ("Please do not under any circumstances send requests for"); +- log_error ("help directly to the authors of this software - please"); +- log_error ("send them to the appropriate mailing list as described in"); +- log_error ("the README file."); ++ log_error ("Please report for this software via the Red Hat Bugzilla site:"); ++ log_error (" http://bugzilla.redhat.com"); + log_error ("%s", ""); + log_error ("exiting."); + #endif diff --git a/server/dhcp/files/dhcp-4.2.0-garbage-chars.patch b/server/dhcp/files/dhcp-4.2.0-garbage-chars.patch new file mode 100644 index 0000000000..118ff3fc1a --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-garbage-chars.patch @@ -0,0 +1,12 @@ +diff -up dhcp-4.2.0/common/tables.c.garbage dhcp-4.2.0/common/tables.c +--- dhcp-4.2.0/common/tables.c.garbage 2009-11-20 02:49:01.000000000 +0100 ++++ dhcp-4.2.0/common/tables.c 2010-07-21 14:40:56.000000000 +0200 +@@ -207,7 +207,7 @@ static struct option dhcp_options[] = { + { "netinfo-server-tag", "t", &dhcp_universe, 113, 1 }, + { "default-url", "t", &dhcp_universe, 114, 1 }, + { "subnet-selection", "I", &dhcp_universe, 118, 1 }, +- { "domain-search", "Dc", &dhcp_universe, 119, 1 }, ++ { "domain-search", "D", &dhcp_universe, 119, 1 }, + { "vivco", "Evendor-class.", &dhcp_universe, 124, 1 }, + { "vivso", "Evendor.", &dhcp_universe, 125, 1 }, + #if 0 diff --git a/server/dhcp/files/dhcp-4.2.0-honor-expired.patch b/server/dhcp/files/dhcp-4.2.0-honor-expired.patch new file mode 100644 index 0000000000..45eadfad80 --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-honor-expired.patch @@ -0,0 +1,52 @@ +diff -up dhcp-4.2.0/client/dhc6.c.honor-expired dhcp-4.2.0/client/dhc6.c +--- dhcp-4.2.0/client/dhc6.c.honor-expired 2010-10-07 12:55:37.000000000 +0200 ++++ dhcp-4.2.0/client/dhc6.c 2010-10-07 12:56:43.000000000 +0200 +@@ -1405,6 +1405,35 @@ start_info_request6(struct client_state + go_daemon(); + } + ++/* Run through the addresses in lease and return true if there's any unexpired. ++ * Return false otherwise. ++ */ ++isc_boolean_t ++unexpired_address_in_lease(struct dhc6_lease *lease) ++{ ++ struct dhc6_ia *ia; ++ struct dhc6_addr *addr; ++ ++ if (lease == NULL) ++ return; ++ ++ for (ia = lease->bindings ; ia != NULL ; ia = ia->next) { ++ for (addr = ia->addrs ; addr != NULL ; addr = addr->next) { ++ if (addr->flags & DHC6_ADDR_EXPIRED) ++ continue; ++ ++ if (addr->starts + addr->max_life > cur_time) { ++ return ISC_TRUE; ++ } ++ } ++ } ++ ++ log_info("PRC: Previous lease is devoid of active addresses." ++ " Re-initializing."); ++ ++ return ISC_FALSE; ++} ++ + /* + * start_confirm6() kicks off an "init-reboot" version of the process, at + * startup to find out if old bindings are 'fair' and at runtime whenever +@@ -1417,8 +1446,10 @@ start_confirm6(struct client_state *clie + + /* If there is no active lease, there is nothing to check. */ + if ((client->active_lease == NULL) || +- !active_prefix(client) || +- client->active_lease->released) { ++ !active_prefix(client) || ++ client->active_lease->released || ++ !unexpired_address_in_lease(client->active_lease)) { ++ dhc6_lease_destroy(&client->active_lease, MDL); + start_init6(client); + return; + } diff --git a/server/dhcp/files/dhcp-4.2.0-inherit-leases.patch b/server/dhcp/files/dhcp-4.2.0-inherit-leases.patch new file mode 100644 index 0000000000..052f642594 --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-inherit-leases.patch @@ -0,0 +1,34 @@ +diff -up dhcp-4.2.0/client/dhclient.c.inherit dhcp-4.2.0/client/dhclient.c +--- dhcp-4.2.0/client/dhclient.c.inherit 2010-07-21 14:33:44.000000000 +0200 ++++ dhcp-4.2.0/client/dhclient.c 2010-07-21 14:40:05.000000000 +0200 +@@ -2322,6 +2322,7 @@ void send_request (cpp) + { + struct client_state *client = cpp; + ++ int i; + int result; + int interval; + struct sockaddr_in destination; +@@ -2381,6 +2382,22 @@ void send_request (cpp) + /* Now do a preinit on the interface so that we can + discover a new address. */ + script_init (client, "PREINIT", (struct string_list *)0); ++ ++ /* Has an active lease */ ++ if (client -> interface -> addresses != NULL) { ++ for (i = 0; i < client -> interface -> address_count; i++) { ++ if (client -> active && ++ client -> active -> is_bootp && ++ client -> active -> expiry > cur_time && ++ client -> interface -> addresses[i].s_addr != 0 && ++ client -> active -> address.len == 4 && ++ memcpy (client -> active -> address.iabuf, &(client -> interface -> addresses[i]), 4) == 0) { ++ client_envadd (client, "", "keep_old_ip", "%s", "yes"); ++ break; ++ } ++ } ++ } ++ + if (client -> alias) + script_write_params (client, "alias_", + client -> alias); diff --git a/server/dhcp/files/dhcp-4.2.0-logpid.patch b/server/dhcp/files/dhcp-4.2.0-logpid.patch new file mode 100644 index 0000000000..c24adb14a9 --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-logpid.patch @@ -0,0 +1,12 @@ +diff -up dhcp-4.2.0/client/dhclient.c.logpid dhcp-4.2.0/client/dhclient.c +--- dhcp-4.2.0/client/dhclient.c.logpid 2010-07-21 16:13:52.000000000 +0200 ++++ dhcp-4.2.0/client/dhclient.c 2010-07-21 16:16:51.000000000 +0200 +@@ -154,7 +154,7 @@ main(int argc, char **argv) { + else if (fd != -1) + close(fd); + +- openlog("dhclient", LOG_NDELAY, LOG_DAEMON); ++ openlog("dhclient", LOG_NDELAY | LOG_PID, LOG_DAEMON); + + #if !(defined(DEBUG) || defined(__CYGWIN32__)) + setlogmask(LOG_UPTO(LOG_INFO)); diff --git a/server/dhcp/files/dhcp-4.2.0-paths.patch b/server/dhcp/files/dhcp-4.2.0-paths.patch new file mode 100644 index 0000000000..54c7aba8e6 --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-paths.patch @@ -0,0 +1,45 @@ +diff -up dhcp-4.2.0/includes/dhcpd.h.paths dhcp-4.2.0/includes/dhcpd.h +--- dhcp-4.2.0/includes/dhcpd.h.paths 2010-07-21 13:55:42.000000000 +0200 ++++ dhcp-4.2.0/includes/dhcpd.h 2010-07-21 14:29:57.000000000 +0200 +@@ -1390,15 +1390,15 @@ typedef unsigned char option_mask [16]; + #else /* !DEBUG */ + + #ifndef _PATH_DHCPD_CONF +-#define _PATH_DHCPD_CONF "/etc/dhcpd.conf" ++#define _PATH_DHCPD_CONF "/etc/dhcp/dhcpd.conf" + #endif /* DEBUG */ + + #ifndef _PATH_DHCPD_DB +-#define _PATH_DHCPD_DB LOCALSTATEDIR"/db/dhcpd.leases" ++#define _PATH_DHCPD_DB LOCALSTATEDIR"/dhcpd/dhcpd.leases" + #endif + + #ifndef _PATH_DHCPD6_DB +-#define _PATH_DHCPD6_DB LOCALSTATEDIR"/db/dhcpd6.leases" ++#define _PATH_DHCPD6_DB LOCALSTATEDIR"/dhcpd/dhcpd6.leases" + #endif + + #ifndef _PATH_DHCPD_PID +@@ -1412,7 +1412,7 @@ typedef unsigned char option_mask [16]; + #endif /* DEBUG */ + + #ifndef _PATH_DHCLIENT_CONF +-#define _PATH_DHCLIENT_CONF "/etc/dhclient.conf" ++#define _PATH_DHCLIENT_CONF "/etc/dhcp/dhclient.conf" + #endif + + #ifndef _PATH_DHCLIENT_SCRIPT +@@ -1428,11 +1428,11 @@ typedef unsigned char option_mask [16]; + #endif + + #ifndef _PATH_DHCLIENT_DB +-#define _PATH_DHCLIENT_DB LOCALSTATEDIR"/db/dhclient.leases" ++#define _PATH_DHCLIENT_DB LOCALSTATEDIR"/dhclient/dhclient.leases" + #endif + + #ifndef _PATH_DHCLIENT6_DB +-#define _PATH_DHCLIENT6_DB LOCALSTATEDIR"/db/dhclient6.leases" ++#define _PATH_DHCLIENT6_DB LOCALSTATEDIR"/dhclient/dhclient6.leases" + #endif + + #ifndef _PATH_RESOLV_CONF diff --git a/server/dhcp/files/dhcp-4.2.0-release-by-ifup.patch b/server/dhcp/files/dhcp-4.2.0-release-by-ifup.patch new file mode 100644 index 0000000000..1ad8213fb6 --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-release-by-ifup.patch @@ -0,0 +1,85 @@ +diff -up dhcp-4.2.0/client/dhclient.c.ifup dhcp-4.2.0/client/dhclient.c +--- dhcp-4.2.0/client/dhclient.c.ifup 2010-07-21 13:30:10.000000000 +0200 ++++ dhcp-4.2.0/client/dhclient.c 2010-07-21 13:37:03.000000000 +0200 +@@ -497,9 +497,81 @@ main(int argc, char **argv) { + kill(oldpid, SIGTERM); + } + fclose(pidfd); ++ } else { ++ /* handle release for interfaces requested with Red Hat ++ * /sbin/ifup - pidfile will be /var/run/dhclient-$interface.pid ++ */ ++ ++ if ((path_dhclient_pid == NULL) || (*path_dhclient_pid == '\0')) ++ path_dhclient_pid = "/var/run/dhclient.pid"; ++ ++ char *new_path_dhclient_pid; ++ struct interface_info *ip; ++ int pdp_len = strlen(path_dhclient_pid), pfx, dpfx; ++ ++ /* find append point: beginning of any trailing '.pid' ++ * or '-$IF.pid' */ ++ for (pfx=pdp_len; (pfx >= 0) && (path_dhclient_pid[pfx] != '.') && (path_dhclient_pid[pfx] != '/'); pfx--); ++ if (pfx == -1) ++ pfx = pdp_len; ++ ++ if (path_dhclient_pid[pfx] == '/') ++ pfx += 1; ++ ++ for (dpfx=pfx; (dpfx >= 0) && (path_dhclient_pid[dpfx] != '-') && (path_dhclient_pid[dpfx] != '/'); dpfx--); ++ if ((dpfx > -1) && (path_dhclient_pid[dpfx] != '/')) ++ pfx = dpfx; ++ ++ for (ip = interfaces; ip; ip = ip->next) { ++ if (interfaces_requested && (ip->flags & (INTERFACE_REQUESTED)) && (ip->name != NULL)) { ++ int n_len = strlen(ip->name); ++ ++ new_path_dhclient_pid = (char*) malloc(pfx + n_len + 6); ++ strncpy(new_path_dhclient_pid, path_dhclient_pid, pfx); ++ sprintf(new_path_dhclient_pid + pfx, "-%s.pid", ip->name); ++ ++ if ((pidfd = fopen(new_path_dhclient_pid, "r")) != NULL) { ++ e = fscanf(pidfd, "%ld\n", &temp); ++ oldpid = (pid_t)temp; ++ ++ if (e != 0 && e != EOF) { ++ if (oldpid) { ++ if (kill(oldpid, SIGTERM) == 0) ++ unlink(path_dhclient_pid); ++ } ++ } ++ ++ fclose(pidfd); ++ } ++ ++ free(new_path_dhclient_pid); ++ } ++ } ++ } ++ } else { ++ FILE *pidfp = NULL; ++ long temp = 0; ++ pid_t dhcpid = 0; ++ int dhc_running = 0; ++ char procfn[256] = ""; ++ ++ if ((pidfp = fopen(path_dhclient_pid, "r")) != NULL) { ++ if ((fscanf(pidfp, "%ld", &temp)==1) && ((dhcpid=(pid_t)temp) > 0)) { ++ snprintf(procfn,256,"/proc/%u",dhcpid); ++ dhc_running = (access(procfn, F_OK) == 0); ++ } ++ ++ fclose(pidfp); ++ } ++ ++ if (dhc_running) { ++ log_fatal("dhclient(%u) is already running - exiting. ", dhcpid); ++ return(1); + } + } + ++ write_client_pid_file(); ++ + if (!quiet) { + log_info("%s %s", message, PACKAGE_VERSION); + log_info(copyright); diff --git a/server/dhcp/files/dhcp-4.2.0-sendDecline.patch b/server/dhcp/files/dhcp-4.2.0-sendDecline.patch new file mode 100644 index 0000000000..5f04b6b8aa --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-sendDecline.patch @@ -0,0 +1,233 @@ +diff -up dhcp-4.2.0/client/dhc6.c.sendDecline dhcp-4.2.0/client/dhc6.c +--- dhcp-4.2.0/client/dhc6.c.sendDecline 2009-11-20 02:48:58.000000000 +0100 ++++ dhcp-4.2.0/client/dhc6.c 2010-07-21 16:18:51.000000000 +0200 +@@ -95,6 +95,8 @@ void do_select6(void *input); + void do_refresh6(void *input); + static void do_release6(void *input); + static void start_bound(struct client_state *client); ++static void start_decline6(struct client_state *client); ++static void do_decline6(void *input); + static void start_informed(struct client_state *client); + void informed_handler(struct packet *packet, struct client_state *client); + void bound_handler(struct packet *packet, struct client_state *client); +@@ -2140,6 +2142,7 @@ start_release6(struct client_state *clie + cancel_timeout(do_select6, client); + cancel_timeout(do_refresh6, client); + cancel_timeout(do_release6, client); ++ cancel_timeout(do_decline6, client); + client->state = S_STOPPED; + + /* +@@ -2790,6 +2793,7 @@ dhc6_check_reply(struct client_state *cl + break; + + case S_STOPPED: ++ case S_DECLINED: + action = dhc6_stop_action; + break; + +@@ -2891,6 +2895,7 @@ dhc6_check_reply(struct client_state *cl + break; + + case S_STOPPED: ++ case S_DECLINED: + /* Nothing critical to do at this stage. */ + break; + +@@ -3933,17 +3938,23 @@ reply_handler(struct packet *packet, str + cancel_timeout(do_select6, client); + cancel_timeout(do_refresh6, client); + cancel_timeout(do_release6, client); ++ cancel_timeout(do_decline6, client); + + /* If this is in response to a Release/Decline, clean up and return. */ +- if (client->state == S_STOPPED) { +- if (client->active_lease == NULL) +- return; ++ if ((client->state == S_STOPPED) || ++ (client->state == S_DECLINED)) { ++ ++ if (client->active_lease != NULL) { ++ dhc6_lease_destroy(&client->active_lease, MDL); ++ client->active_lease = NULL; ++ /* We should never wait for nothing!? */ ++ if (stopping_finished()) ++ exit(0); ++ } ++ ++ if (client->state == S_DECLINED) ++ start_init6(client); + +- dhc6_lease_destroy(&client->active_lease, MDL); +- client->active_lease = NULL; +- /* We should never wait for nothing!? */ +- if (stopping_finished()) +- exit(0); + return; + } + +@@ -4470,7 +4481,11 @@ start_bound(struct client_state *client) + oldia, oldaddr); + dhc6_marshall_values("new_", client, lease, ia, addr); + +- script_go(client); ++ // when script returns 3, DAD failed ++ if (script_go(client) == 3) { ++ start_decline6(client); ++ return; ++ } + } + + /* XXX: maybe we should loop on the old values instead? */ +@@ -4516,6 +4531,151 @@ start_bound(struct client_state *client) + dhc6_check_times(client); + } + ++/* ++ * Decline addresses. ++ */ ++void ++start_decline6(struct client_state *client) ++{ ++ /* Cancel any pending transmissions */ ++ cancel_timeout(do_confirm6, client); ++ cancel_timeout(do_select6, client); ++ cancel_timeout(do_refresh6, client); ++ cancel_timeout(do_release6, client); ++ cancel_timeout(do_decline6, client); ++ client->state = S_DECLINED; ++ ++ if (client->active_lease == NULL) ++ return; ++ ++ /* Set timers per RFC3315 section 18.1.7. */ ++ client->IRT = DEC_TIMEOUT * 100; ++ client->MRT = 0; ++ client->MRC = DEC_MAX_RC; ++ client->MRD = 0; ++ ++ dhc6_retrans_init(client); ++ client->v6_handler = reply_handler; ++ ++ client->refresh_type = DHCPV6_DECLINE; ++ do_decline6(client); ++} ++ ++/* ++ * do_decline6() creates a Decline packet and transmits it. ++ */ ++static void ++do_decline6(void *input) ++{ ++ struct client_state *client; ++ struct data_string ds; ++ int send_ret; ++ struct timeval elapsed, tv; ++ ++ client = input; ++ ++ if ((client->active_lease == NULL) || !active_prefix(client)) ++ return; ++ ++ if ((client->MRC != 0) && (client->txcount > client->MRC)) { ++ log_info("Max retransmission count exceeded."); ++ goto decline_done; ++ } ++ ++ /* ++ * Start_time starts at the first transmission. ++ */ ++ if (client->txcount == 0) { ++ client->start_time.tv_sec = cur_tv.tv_sec; ++ client->start_time.tv_usec = cur_tv.tv_usec; ++ } ++ ++ /* elapsed = cur - start */ ++ elapsed.tv_sec = cur_tv.tv_sec - client->start_time.tv_sec; ++ elapsed.tv_usec = cur_tv.tv_usec - client->start_time.tv_usec; ++ if (elapsed.tv_usec < 0) { ++ elapsed.tv_sec -= 1; ++ elapsed.tv_usec += 1000000; ++ } ++ ++ memset(&ds, 0, sizeof(ds)); ++ if (!buffer_allocate(&ds.buffer, 4, MDL)) { ++ log_error("Unable to allocate memory for Decline."); ++ goto decline_done; ++ } ++ ++ ds.data = ds.buffer->data; ++ ds.len = 4; ++ ds.buffer->data[0] = DHCPV6_DECLINE; ++ memcpy(ds.buffer->data + 1, client->dhcpv6_transaction_id, 3); ++ ++ /* Form an elapsed option. */ ++ /* Maximum value is 65535 1/100s coded as 0xffff. */ ++ if ((elapsed.tv_sec < 0) || (elapsed.tv_sec > 655) || ++ ((elapsed.tv_sec == 655) && (elapsed.tv_usec > 350000))) { ++ client->elapsed = 0xffff; ++ } else { ++ client->elapsed = elapsed.tv_sec * 100; ++ client->elapsed += elapsed.tv_usec / 10000; ++ } ++ ++ client->elapsed = htons(client->elapsed); ++ ++ log_debug("XMT: Forming Decline."); ++ make_client6_options(client, &client->sent_options, ++ client->active_lease, DHCPV6_DECLINE); ++ dhcpv6_universe.encapsulate(&ds, NULL, NULL, client, NULL, ++ client->sent_options, &global_scope, ++ &dhcpv6_universe); ++ ++ /* Append IA's (but don't release temporary addresses). */ ++ if (wanted_ia_na && ++ dhc6_add_ia_na(client, &ds, client->active_lease, ++ DHCPV6_DECLINE) != ISC_R_SUCCESS) { ++ data_string_forget(&ds, MDL); ++ goto decline_done; ++ } ++ if (wanted_ia_pd && ++ dhc6_add_ia_pd(client, &ds, client->active_lease, ++ DHCPV6_DECLINE) != ISC_R_SUCCESS) { ++ data_string_forget(&ds, MDL); ++ goto decline_done; ++ } ++ ++ /* Transmit and wait. */ ++ log_info("XMT: Decline on %s, interval %ld0ms.", ++ client->name ? client->name : client->interface->name, ++ (long int)client->RT); ++ ++ send_ret = send_packet6(client->interface, ds.data, ds.len, ++ &DHCPv6DestAddr); ++ if (send_ret != ds.len) { ++ log_error("dhc6: sendpacket6() sent %d of %d bytes", ++ send_ret, ds.len); ++ } ++ ++ data_string_forget(&ds, MDL); ++ ++ /* Wait RT */ ++ tv.tv_sec = cur_tv.tv_sec + client->RT / 100; ++ tv.tv_usec = cur_tv.tv_usec + (client->RT % 100) * 10000; ++ if (tv.tv_usec >= 1000000) { ++ tv.tv_sec += 1; ++ tv.tv_usec -= 1000000; ++ } ++ add_timeout(&tv, do_decline6, client, NULL, NULL); ++ dhc6_retrans_advance(client); ++ return; ++ ++decline_done: ++ if (client->active_lease != NULL) { ++ dhc6_lease_destroy(&client->active_lease, MDL); ++ client->active_lease = NULL; ++ } ++ start_init6(client); ++ return; ++} ++ + /* While bound, ignore packets. In the future we'll want to answer + * Reconfigure-Request messages and the like. + */ diff --git a/server/dhcp/files/dhcp-4.2.0-unicast-bootp.patch b/server/dhcp/files/dhcp-4.2.0-unicast-bootp.patch new file mode 100644 index 0000000000..78bc078dcf --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.0-unicast-bootp.patch @@ -0,0 +1,99 @@ +diff -up dhcp-4.2.0/server/bootp.c.unicast dhcp-4.2.0/server/bootp.c +--- dhcp-4.2.0/server/bootp.c.unicast 2009-11-20 02:49:03.000000000 +0100 ++++ dhcp-4.2.0/server/bootp.c 2010-07-21 13:40:25.000000000 +0200 +@@ -58,6 +58,7 @@ void bootp (packet) + char msgbuf [1024]; + int ignorep; + int peer_has_leases = 0; ++ int norelay = 0; + + if (packet -> raw -> op != BOOTREQUEST) + return; +@@ -73,7 +74,7 @@ void bootp (packet) + ? inet_ntoa (packet -> raw -> giaddr) + : packet -> interface -> name); + +- if (!locate_network (packet)) { ++ if ((norelay = locate_network (packet)) == 0) { + log_info ("%s: network unknown", msgbuf); + return; + } +@@ -390,6 +391,13 @@ void bootp (packet) + from, &to, &hto); + goto out; + } ++ } else if (norelay == 2) { ++ to.sin_addr = raw.ciaddr; ++ to.sin_port = remote_port; ++ if (fallback_interface) { ++ result = send_packet (fallback_interface, (struct packet *)0, &raw, outgoing.packet_length, from, &to, &hto); ++ goto out; ++ } + + /* If it comes from a client that already knows its address + and is not requesting a broadcast response, and we can +diff -up dhcp-4.2.0/server/dhcp.c.unicast dhcp-4.2.0/server/dhcp.c +--- dhcp-4.2.0/server/dhcp.c.unicast 2010-06-01 19:29:59.000000000 +0200 ++++ dhcp-4.2.0/server/dhcp.c 2010-07-21 13:40:25.000000000 +0200 +@@ -4185,6 +4185,7 @@ int locate_network (packet) + struct data_string data; + struct subnet *subnet = (struct subnet *)0; + struct option_cache *oc; ++ int norelay = 0; + + /* See if there's a Relay Agent Link Selection Option, or a + * Subnet Selection Option. The Link-Select and Subnet-Select +@@ -4200,12 +4201,24 @@ int locate_network (packet) + from the interface, if there is one. If not, fail. */ + if (!oc && !packet -> raw -> giaddr.s_addr) { + if (packet -> interface -> shared_network) { +- shared_network_reference +- (&packet -> shared_network, +- packet -> interface -> shared_network, MDL); +- return 1; ++ struct in_addr any_addr; ++ any_addr.s_addr = INADDR_ANY; ++ ++ if (!packet -> packet_type && memcmp(&packet -> raw -> ciaddr, &any_addr, 4)) { ++ struct iaddr cip; ++ memcpy(cip.iabuf, &packet -> raw -> ciaddr, 4); ++ cip.len = 4; ++ if (!find_grouped_subnet(&subnet, packet->interface->shared_network, cip, MDL)) ++ norelay = 2; ++ } ++ ++ if (!norelay) { ++ shared_network_reference(&packet -> shared_network, packet -> interface -> shared_network, MDL); ++ return 1; ++ } ++ } else { ++ return 0; + } +- return 0; + } + + /* If there's an option indicating link connection, and it's valid, +@@ -4228,7 +4241,10 @@ int locate_network (packet) + data_string_forget (&data, MDL); + } else { + ia.len = 4; +- memcpy (ia.iabuf, &packet -> raw -> giaddr, 4); ++ if (norelay) ++ memcpy (ia.iabuf, &packet->raw->ciaddr, 4); ++ else ++ memcpy (ia.iabuf, &packet->raw->giaddr, 4); + } + + /* If we know the subnet on which the IP address lives, use it. */ +@@ -4236,7 +4252,10 @@ int locate_network (packet) + shared_network_reference (&packet -> shared_network, + subnet -> shared_network, MDL); + subnet_dereference (&subnet, MDL); +- return 1; ++ if (norelay) ++ return norelay; ++ else ++ return 1; + } + + /* Otherwise, fail. */ diff --git a/server/dhcp/files/dhcp-4.2.1-retransmission.patch b/server/dhcp/files/dhcp-4.2.1-retransmission.patch new file mode 100644 index 0000000000..18e447f6a3 --- /dev/null +++ b/server/dhcp/files/dhcp-4.2.1-retransmission.patch @@ -0,0 +1,48 @@ +diff -up dhcp-4.2.1b1/client/dhc6.c.retransmission dhcp-4.2.1b1/client/dhc6.c +--- dhcp-4.2.1b1/client/dhc6.c.retransmission 2011-01-28 08:40:56.000000000 +0100 ++++ dhcp-4.2.1b1/client/dhc6.c 2011-01-28 08:39:22.000000000 +0100 +@@ -361,7 +361,7 @@ dhc6_retrans_init(struct client_state *c + static void + dhc6_retrans_advance(struct client_state *client) + { +- struct timeval elapsed; ++ struct timeval elapsed, elapsed_after_RT; + + /* elapsed = cur - start */ + elapsed.tv_sec = cur_tv.tv_sec - client->start_time.tv_sec; +@@ -378,6 +378,8 @@ dhc6_retrans_advance(struct client_state + elapsed.tv_sec += 1; + elapsed.tv_usec -= 1000000; + } ++ elapsed_after_RT.tv_sec = elapsed.tv_sec; ++ elapsed_after_RT.tv_usec = elapsed.tv_usec; + + /* + * RT for each subsequent message transmission is based on the previous +@@ -415,13 +417,10 @@ dhc6_retrans_advance(struct client_state + elapsed.tv_usec -= 1000000; + } + if (elapsed.tv_sec >= client->MRD) { +- /* +- * wake at RT + cur = start + MRD +- */ +- client->RT = client->MRD + +- (client->start_time.tv_sec - cur_tv.tv_sec); +- client->RT = client->RT * 100 + +- (client->start_time.tv_usec - cur_tv.tv_usec) / 10000; ++ client->RT = client->MRD - elapsed_after_RT.tv_sec; ++ client->RT = client->RT * 100 - elapsed_after_RT.tv_usec / 10000; ++ if (client->RT < 0) ++ client->RT = 0; + } + client->txcount++; + } +@@ -1497,7 +1496,7 @@ check_timing6 (struct client_state *clie + } + + /* Check if finished (-1 argument). */ +- if ((client->MRD != 0) && (elapsed.tv_sec > client->MRD)) { ++ if ((client->MRD != 0) && (elapsed.tv_sec >= client->MRD)) { + log_info("Max retransmission duration exceeded."); + return(CHK_TIM_MRD_EXCEEDED); + } diff --git a/server/dhcp/files/dhcp-4.3.0a1-PPP.patch b/server/dhcp/files/dhcp-4.3.0a1-PPP.patch new file mode 100644 index 0000000000..7c349fa9b8 --- /dev/null +++ b/server/dhcp/files/dhcp-4.3.0a1-PPP.patch @@ -0,0 +1,150 @@ +diff -up dhcp-4.3.0a1/client/dhc6.c.PPP dhcp-4.3.0a1/client/dhc6.c +--- dhcp-4.3.0a1/client/dhc6.c.PPP 2013-12-19 16:16:45.925550229 +0100 ++++ dhcp-4.3.0a1/client/dhc6.c 2013-12-19 16:16:45.930550159 +0100 +@@ -5080,7 +5080,8 @@ make_client6_options(struct client_state + */ + if ((oc = lookup_option(&dhcpv6_universe, *op, + D6O_CLIENTID)) == NULL) { +- if (!option_cache(&oc, &default_duid, NULL, clientid_option, ++ if (default_duid.len == 0 || ++ !option_cache(&oc, &default_duid, NULL, clientid_option, + MDL)) + log_fatal("Failure assembling a DUID."); + +diff -up dhcp-4.3.0a1/client/dhclient.c.PPP dhcp-4.3.0a1/client/dhclient.c +--- dhcp-4.3.0a1/client/dhclient.c.PPP 2013-12-19 16:16:45.932550131 +0100 ++++ dhcp-4.3.0a1/client/dhclient.c 2013-12-19 16:27:38.334473958 +0100 +@@ -926,8 +926,8 @@ main(int argc, char **argv) { + if (default_duid.buffer != NULL) + data_string_forget(&default_duid, MDL); + +- form_duid(&default_duid, MDL); +- write_duid(&default_duid); ++ if (form_duid(&default_duid, MDL) == ISC_R_SUCCESS) ++ write_duid(&default_duid); + } + } + +@@ -3225,7 +3225,7 @@ write_options(struct client_state *clien + * is not how it is intended. Upcoming rearchitecting the client should + * address this "one daemon model." + */ +-void ++isc_result_t + form_duid(struct data_string *duid, const char *file, int line) + { + struct interface_info *ip; +@@ -3237,6 +3237,15 @@ form_duid(struct data_string *duid, cons + if (ip == NULL) + log_fatal("Impossible condition at %s:%d.", MDL); + ++ while (ip && ip->hw_address.hbuf[0] == HTYPE_RESERVED) { ++ /* Try the other interfaces */ ++ log_debug("Cannot form default DUID from interface %s.", ip->name); ++ ip = ip->next; ++ } ++ if (ip == NULL) { ++ return ISC_R_UNEXPECTED; ++ } ++ + if ((ip->hw_address.hlen == 0) || + (ip->hw_address.hlen > sizeof(ip->hw_address.hbuf))) + log_fatal("Impossible hardware address length at %s:%d.", MDL); +@@ -3272,6 +3281,8 @@ form_duid(struct data_string *duid, cons + memcpy(duid->buffer->data + 4, ip->hw_address.hbuf + 1, + ip->hw_address.hlen - 1); + } ++ ++ return ISC_R_SUCCESS; + } + + /* Write the default DUID to the lease store. */ +diff -up dhcp-4.3.0a1/common/bpf.c.PPP dhcp-4.3.0a1/common/bpf.c +--- dhcp-4.3.0a1/common/bpf.c.PPP 2013-12-19 16:16:45.868551024 +0100 ++++ dhcp-4.3.0a1/common/bpf.c 2013-12-19 16:16:45.934550103 +0100 +@@ -602,6 +602,22 @@ get_hw_addr(const char *name, struct har + memcpy(&hw->hbuf[1], LLADDR(sa), sa->sdl_alen); + break; + #endif /* IFT_FDDI */ ++#if defined(IFT_PPP) ++ case IFT_PPP: ++ if (local_family != AF_INET6) ++ log_fatal("Unsupported device type %d for \"%s\"", ++ sa->sdl_type, name); ++ hw->hlen = 0; ++ hw->hbuf[0] = HTYPE_RESERVED; ++ /* 0xdeadbeef should never occur on the wire, ++ * and is a signature that something went wrong. ++ */ ++ hw->hbuf[1] = 0xde; ++ hw->hbuf[2] = 0xad; ++ hw->hbuf[3] = 0xbe; ++ hw->hbuf[4] = 0xef; ++ break; ++#endif + default: + log_fatal("Unsupported device type %d for \"%s\"", + sa->sdl_type, name); +diff -up dhcp-4.3.0a1/common/lpf.c.PPP dhcp-4.3.0a1/common/lpf.c +--- dhcp-4.3.0a1/common/lpf.c.PPP 2013-12-19 16:16:45.848551303 +0100 ++++ dhcp-4.3.0a1/common/lpf.c 2013-12-19 16:16:45.934550103 +0100 +@@ -511,6 +511,22 @@ get_hw_addr(const char *name, struct har + hw->hbuf[0] = HTYPE_FDDI; + memcpy(&hw->hbuf[1], sa->sa_data, 6); + break; ++#if defined(ARPHRD_PPP) ++ case ARPHRD_PPP: ++ if (local_family != AF_INET6) ++ log_fatal("Unsupported device type %d for \"%s\"", ++ sa->sa_family, name); ++ hw->hlen = 0; ++ hw->hbuf[0] = HTYPE_RESERVED; ++ /* 0xdeadbeef should never occur on the wire, ++ * and is a signature that something went wrong. ++ */ ++ hw->hbuf[1] = 0xde; ++ hw->hbuf[2] = 0xad; ++ hw->hbuf[3] = 0xbe; ++ hw->hbuf[4] = 0xef; ++ break; ++#endif + default: + log_fatal("Unsupported device type %ld for \"%s\"", + (long int)sa->sa_family, name); +diff -up dhcp-4.3.0a1/includes/dhcp.h.PPP dhcp-4.3.0a1/includes/dhcp.h +--- dhcp-4.3.0a1/includes/dhcp.h.PPP 2013-12-19 16:16:45.919550313 +0100 ++++ dhcp-4.3.0a1/includes/dhcp.h 2013-12-19 16:16:45.936550076 +0100 +@@ -85,6 +85,8 @@ struct dhcp_packet { + * is no standard for this so we + * just steal a type */ + ++#define HTYPE_RESERVED 0 /* RFC 5494 */ ++ + /* Magic cookie validating dhcp options field (and bootp vendor + extensions field). */ + #define DHCP_OPTIONS_COOKIE "\143\202\123\143" +diff -up dhcp-4.3.0a1/includes/dhcpd.h.PPP dhcp-4.3.0a1/includes/dhcpd.h +--- dhcp-4.3.0a1/includes/dhcpd.h.PPP 2013-12-19 16:16:45.935550090 +0100 ++++ dhcp-4.3.0a1/includes/dhcpd.h 2013-12-19 16:28:33.468709007 +0100 +@@ -2824,7 +2824,7 @@ void client_dns_remove(struct client_sta + + void dhcpv4_client_assignments(void); + void dhcpv6_client_assignments(void); +-void form_duid(struct data_string *duid, const char *file, int line); ++isc_result_t form_duid(struct data_string *duid, const char *file, int line); + + /* dhc6.c */ + void dhc6_lease_destroy(struct dhc6_lease **src, const char *file, int line); +diff -up dhcp-4.3.0a1/server/dhcpv6.c.PPP dhcp-4.3.0a1/server/dhcpv6.c +--- dhcp-4.3.0a1/server/dhcpv6.c.PPP 2013-12-19 16:16:45.901550564 +0100 ++++ dhcp-4.3.0a1/server/dhcpv6.c 2013-12-19 16:16:45.937550062 +0100 +@@ -307,6 +307,9 @@ generate_new_server_duid(void) { + if (p->hw_address.hlen > 0) { + break; + } ++ if (p->next == NULL && p->hw_address.hbuf[0] == HTYPE_RESERVED) { ++ log_error("Can not generate DUID from interfaces which do not have hardware addresses, please configure server-duid!"); ++ } + } + if (p == NULL) { + return ISC_R_UNEXPECTED; \ No newline at end of file diff --git a/server/dhcp/files/dhcp-4.3.0a1-errwarn-message.patch b/server/dhcp/files/dhcp-4.3.0a1-errwarn-message.patch new file mode 100644 index 0000000000..223f1a9bc8 --- /dev/null +++ b/server/dhcp/files/dhcp-4.3.0a1-errwarn-message.patch @@ -0,0 +1,30 @@ +diff -up dhcp-4.3.0a1/omapip/errwarn.c.errwarn dhcp-4.3.0a1/omapip/errwarn.c +--- dhcp-4.3.0a1/omapip/errwarn.c.errwarn 2012-07-11 22:46:29.000000000 +0200 ++++ dhcp-4.3.0a1/omapip/errwarn.c 2013-12-19 15:09:17.857125042 +0100 +@@ -76,20 +76,13 @@ void log_fatal (const char * fmt, ... ) + + #if !defined (NOMINUM) + log_error ("%s", ""); +- log_error ("If you did not get this software from ftp.isc.org, please"); +- log_error ("get the latest from ftp.isc.org and install that before"); +- log_error ("requesting help."); ++ log_error ("This version of ISC DHCP is based on the release available"); ++ log_error ("on ftp.isc.org. Features have been added and other changes"); ++ log_error ("have been made to the base software release in order to make"); ++ log_error ("it work better with this distribution."); + log_error ("%s", ""); +- log_error ("If you did get this software from ftp.isc.org and have not"); +- log_error ("yet read the README, please read it before requesting help."); +- log_error ("If you intend to request help from the dhcp-server@isc.org"); +- log_error ("mailing list, please read the section on the README about"); +- log_error ("submitting bug reports and requests for help."); +- log_error ("%s", ""); +- log_error ("Please do not under any circumstances send requests for"); +- log_error ("help directly to the authors of this software - please"); +- log_error ("send them to the appropriate mailing list as described in"); +- log_error ("the README file."); ++ log_error ("Please report for this software via the Red Hat Bugzilla site:"); ++ log_error (" http://bugzilla.redhat.com"); + log_error ("%s", ""); + log_error ("exiting."); + #endif \ No newline at end of file diff --git a/server/dhcp/files/dhcpd b/server/dhcp/files/dhcpd new file mode 100644 index 0000000000..2af815e3e3 --- /dev/null +++ b/server/dhcp/files/dhcpd @@ -0,0 +1,15 @@ +# DHCP Server Configuration file for Pisi Linux + +# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf +DHCPD_CONF="/etc/dhcp/dhcpd.conf" + +# Configure which interface or interfaces to for dhcpd to listen on. +# List all interfaces space separated. If this is not specified then +# we listen on all interfaces. +INTERFACES="" + +# Insert any other dhcpd options - see the man page for a full list. +DHCPD_ARGS="" + +# Wait for interfaces being up (in seconds.) +TIMEOUT=10 diff --git a/server/dhcp/files/dhcpd.conf b/server/dhcp/files/dhcpd.conf new file mode 100644 index 0000000000..d1449ba360 --- /dev/null +++ b/server/dhcp/files/dhcpd.conf @@ -0,0 +1,31 @@ +# DHCP Server Configuration file. +# see /usr/share/doc/dhcp/dhcpd.conf.sample +# see 'man 5 dhcpd.conf' +# +############################################# +# ddns-update-style none; +# +# default-lease-time 21600; +# max-lease-time 21600; +# +# option subnet-mask 255.255.255.0; +# option broadcast-address 10.0.0.255; +# option routers 10.0.0.1; +# option domain-name-servers 10.0.0.1; +# option domain-name "pisilinux"; +# +# next-server 10.0.0.1; +# get-lease-hostnames on; +# +# option root-path "10.0.0.1:/opt/ptsp"; +# +# subnet 10.0.0.0 netmask 255.255.255.0 { +# range 10.0.0.1 10.0.0.99; + + #Send this file for pxe file requests + #filename "/pts/latest-ptsp/pxelinux.0"; +# } +# host AccessPoint { +# hardware ethernet XX:XX:XX:XX:XX:XX; +# fixed-address 10.0.0.120; +#} diff --git a/server/dhcp/files/dhcpd6 b/server/dhcp/files/dhcpd6 new file mode 100644 index 0000000000..b769b9d3a6 --- /dev/null +++ b/server/dhcp/files/dhcpd6 @@ -0,0 +1,15 @@ +# DHCPv6 Server Configuration file for Pisi Linux + +# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf +DHCPD_CONF="/etc/dhcp/dhcpd.conf" + +# Configure which interface or interfaces to for dhcpd to listen on. +# List all interfaces space separated. If this is not specified then +# we listen on all interfaces. +INTERFACES="" + +# Insert any other dhcpd options - see the man page for a full list. +DHCPD_ARGS="" + +# Wait for interfaces being up (in seconds.) +TIMEOUT=10 diff --git a/server/dhcp/files/dhcpd6.conf b/server/dhcp/files/dhcpd6.conf new file mode 100644 index 0000000000..6bfb59fbef --- /dev/null +++ b/server/dhcp/files/dhcpd6.conf @@ -0,0 +1,32 @@ +# DHCP for IPv6 Server Configuration file. +# see /usr/share/doc/dhcp/dhcpd6.conf.sample +# see 'man 5 dhcpd.conf' +# run 'service dhcpd6 start' or 'dhcpd -6 -cf /etc/dhcp/dhcpd6.conf' +# +############################################# +# ddns-update-style none; +# +# default-lease-time 21600; +# max-lease-time 21600; +# +# option subnet-mask 255.255.255.0; +# option broadcast-address 10.0.0.255; +# option routers 10.0.0.1; +# option domain-name-servers 10.0.0.1; +# option domain-name "pisilinux"; +# +# next-server 10.0.0.1; +# get-lease-hostnames on; +# +# option root-path "10.0.0.1:/opt/ptsp"; +# +# subnet 10.0.0.0 netmask 255.255.255.0 { +# range 10.0.0.1 10.0.0.99; + + #Send this file for pxe file requests + #filename "/pts/latest-ptsp/pxelinux.0"; +# } +# host AccessPoint { +# hardware ethernet XX:XX:XX:XX:XX:XX; +# fixed-address 10.0.0.120; +#} diff --git a/server/dhcp/files/dhcrelay b/server/dhcp/files/dhcrelay new file mode 100644 index 0000000000..19d6b75087 --- /dev/null +++ b/server/dhcp/files/dhcrelay @@ -0,0 +1,14 @@ +# DHCP Relay Server Configuration file for Pisi Linux + +# Configure which interface or interfaces to for dhcpd to listen on. +# List all interfaces space separated. If this is not specified then +# we listen on all interfaces. +# +# DHCPv4 only +INTERFACES="" + +#DHCPv4 only +DHCP_SERVERS="" + +# Insert any other dhcpd options - see the man page for a full list. +DHCRELAY_ARGS="" diff --git a/server/dhcp/pspec.xml b/server/dhcp/pspec.xml new file mode 100644 index 0000000000..f423e13bf6 --- /dev/null +++ b/server/dhcp/pspec.xml @@ -0,0 +1,151 @@ + + + + + dhcp + http://www.isc.org/products/DHCP + + PisiLinux Community + admins@pisilinux.org + + isc-dhcp + app:console + library + service + Dynamic host configuration protocol software + DHCP (Dynamic Host Configuration Protocol) is a protocol which allows individual devices on an IP network to get their own network configuration information (IP address, subnetmask, broadcast address, etc.) from a DHCP server. + http://ftp.isc.org/isc/dhcp/4.3.0/dhcp-4.3.0.tar.gz + + groff + openldap-client + bind-devel + + + + + + dhcp-4.2.0-release-by-ifup.patch + dhcp-4.2.0-dhclient-decline-backoff.patch + dhcp-4.2.0-unicast-bootp.patch + + dhcp-4.2.0-default-requested-options.patch + + dhcp-4.2.0-paths.patch + + dhcp-4.2.0-inherit-leases.patch + dhcp-4.2.0-garbage-chars.patch + + dhcp-4.2.0-IFNAMSIZ.patch + dhcp-4.2.0-add_timeout_when_NULL.patch + + dhcp-4.2.0-logpid.patch + dhcp-4.2.0-sendDecline.patch + dhcp-4.2.1-retransmission.patch + + dhcp-4.2.0-honor-expired.patch + + + dhcp-4.3.0a1-PPP.patch + dhcp-4.2.0-P2-omapi.patch + + + + + + dhcp + + openldap-client + bind-libs + + + /etc + /usr/bin + /usr/sbin + /usr/lib + /var/lib + /run + /usr/share/man + /usr/share/doc + + + dhcpd + dhcpd6 + dhcrelay + dhcpd.conf + + + + System.Service + System.Service + System.Service + System.Package + + + + + dhclient + app:console + Provides the dhclient ISC DHCP client daemon + + dhcp + bind-libs + + + + /etc/dhcp/dhclient.conf + /usr/sbin/dhclient + + /var/lib/dhclient + /usr/share/man/man5/dhclient* + /usr/share/man/man8/dhclient* + /usr/share/man/man5/dhcp-options* + /usr/share/man/man5/dhcp-eval* + /usr/share/doc/dhcp/dhclient* + + + dhclient.conf + + + + + + + dhcp-devel + Development files for dhcp + + dhcp + + + /usr/include + /usr/share/man/man3 + + + + + + 2014-05-19 + 4.3.0 + Version Bump + Vedat Demir + vedat@pisilinux.org + + + 2014-01-22 + 4.2.5 + Version Bump + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-10-14 + 4.2.3 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/server/dhcp/translations.xml b/server/dhcp/translations.xml new file mode 100644 index 0000000000..281f1fff7d --- /dev/null +++ b/server/dhcp/translations.xml @@ -0,0 +1,19 @@ + + + + dhcp + DHCP Sunucusu + IP adresi atanmasını ve TCP/IP bilgilerinin yapılandırılmasını sağlayan DHCP Sunucusu + DHCP-Server + + + + dhclient + DHCP İstemcisi + + + + dhcp-devel + dhcp için geliştirme dosyaları + + From cace6d5cedcf9110a13bb185773d823b26ecb4ca Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:12:27 +0300 Subject: [PATCH 098/175] moved into main for pisi 2.0 --- system/base/ConsoleKit/actions.py | 47 ++ .../base/ConsoleKit/files/25-consolekit.rules | 8 + system/base/ConsoleKit/files/ConsoleKit.conf | 1 + system/base/ConsoleKit/files/consolekit.pamd | 7 + .../ConsoleKit/files/pam-foreground-compat.ck | 17 + .../files/upstream_fix_issue_26.patch | 776 ++++++++++++++++++ system/base/ConsoleKit/pspec.xml | 154 ++++ system/base/ConsoleKit/translations.xml | 13 + 8 files changed, 1023 insertions(+) create mode 100644 system/base/ConsoleKit/actions.py create mode 100644 system/base/ConsoleKit/files/25-consolekit.rules create mode 100644 system/base/ConsoleKit/files/ConsoleKit.conf create mode 100644 system/base/ConsoleKit/files/consolekit.pamd create mode 100644 system/base/ConsoleKit/files/pam-foreground-compat.ck create mode 100644 system/base/ConsoleKit/files/upstream_fix_issue_26.patch create mode 100644 system/base/ConsoleKit/pspec.xml create mode 100644 system/base/ConsoleKit/translations.xml diff --git a/system/base/ConsoleKit/actions.py b/system/base/ConsoleKit/actions.py new file mode 100644 index 0000000000..4f5729a93b --- /dev/null +++ b/system/base/ConsoleKit/actions.py @@ -0,0 +1,47 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +def setup(): + # /var/run => /run + #pisitools.dosed("configure.ac", "^(\s+CONSOLE_KIT_PID_FILE=)\$\{localstatedir\}(\/run\/ConsoleKit\/pid)", r"\1\2") + #pisitools.dosed("src/Makefile.am", "\$\(localstatedir\)(\/run\/ConsoleKit)", r"\1") + #shelltools.system("sed -i -e '/SystemdService/d' data/org.freedesktop.ConsoleKit.service.in") + + #autotools.autoreconf("-fi") + + autotools.configure("--prefix=/usr \ + --sysconfdir=/etc \ + --sbindir=/usr/sbin \ + --with-rundir=/run \ + --libexecdir=/usr/libexec/ConsoleKit \ + --localstatedir=/var \ + --enable-polkit \ + --enable-pam-module \ + --enable-udev-acl \ + --enable-docbook-docs \ + --disable-static \ + --with-dbus-services=/usr/share/dbus-1/services \ + --with-logrotate-dir=/etc/logrotate.d \ + --with-xinitrc-dir=/etc/X11/xinit/xinitrc.d \ + --with-pam-module-dir=/lib/security \ + --with-systemdsystemunitdir=no \ + XMLTO_FLAGS='--skip-validation' \ + ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s/" % get.installDIR()) + + pisitools.removeDir("/run") + + pisitools.dodoc("AUTHORS", "README", "COPYING", "HACKING", "NEWS", "TODO") diff --git a/system/base/ConsoleKit/files/25-consolekit.rules b/system/base/ConsoleKit/files/25-consolekit.rules new file mode 100644 index 0000000000..adddfb1bd7 --- /dev/null +++ b/system/base/ConsoleKit/files/25-consolekit.rules @@ -0,0 +1,8 @@ +polkit.addRule(function(action, subject) { + if (action.id == "org.freedesktop.consolekit.system.stop" || + action.id == "org.freedesktop.consolekit.system.restart" || + action.id == "org.freedesktop.consolekit.system.hibernate" || + action.id == "org.freedesktop.consolekit.system.suspend") { + return polkit.Result.YES; + } +}); diff --git a/system/base/ConsoleKit/files/ConsoleKit.conf b/system/base/ConsoleKit/files/ConsoleKit.conf new file mode 100644 index 0000000000..4ec125110a --- /dev/null +++ b/system/base/ConsoleKit/files/ConsoleKit.conf @@ -0,0 +1 @@ +d /run/ConsoleKit 0755 - - - diff --git a/system/base/ConsoleKit/files/consolekit.pamd b/system/base/ConsoleKit/files/consolekit.pamd new file mode 100644 index 0000000000..8ac033c74b --- /dev/null +++ b/system/base/ConsoleKit/files/consolekit.pamd @@ -0,0 +1,7 @@ +#%PAM-1.0 + +auth include system-login +account include system-login +session include system-login +password include system-login +session optional pam_ck_connector.so diff --git a/system/base/ConsoleKit/files/pam-foreground-compat.ck b/system/base/ConsoleKit/files/pam-foreground-compat.ck new file mode 100644 index 0000000000..3c1d0744d0 --- /dev/null +++ b/system/base/ConsoleKit/files/pam-foreground-compat.ck @@ -0,0 +1,17 @@ +#!/bin/sh +TAGDIR=/run/console + +[ -n "$CK_SESSION_USER_UID" ] || exit 1 +[ "$CK_SESSION_IS_LOCAL" = "true" ] || exit 0 + +TAGFILE="$TAGDIR/`getent passwd $CK_SESSION_USER_UID | cut -f 1 -d:`" + +if [ "$1" = "session_added" ]; then + mkdir -p "$TAGDIR" + echo "$CK_SESSION_ID" >> "$TAGFILE" +fi + +if [ "$1" = "session_removed" ] && [ -e "$TAGFILE" ]; then + sed -i "\%^$CK_SESSION_ID\$%d" "$TAGFILE" + [ -s "$TAGFILE" ] || rm -f "$TAGFILE" +fi diff --git a/system/base/ConsoleKit/files/upstream_fix_issue_26.patch b/system/base/ConsoleKit/files/upstream_fix_issue_26.patch new file mode 100644 index 0000000000..a6009d302c --- /dev/null +++ b/system/base/ConsoleKit/files/upstream_fix_issue_26.patch @@ -0,0 +1,776 @@ +diff -Nuar ConsoleKit2-0.9.3.orig/src/ck-manager.c ConsoleKit2-0.9.3/src/ck-manager.c +--- ConsoleKit2-0.9.3.orig/src/ck-manager.c 2015-06-09 19:04:19.000000000 +0300 ++++ ConsoleKit2-0.9.3/src/ck-manager.c 2015-06-14 21:30:51.943744599 +0300 +@@ -2851,6 +2851,11 @@ + pid_t calling_pid = 0; + char *cookie; + ++ if (pid <= 1) { ++ throw_error (context, CK_MANAGER_ERROR_INVALID_INPUT, _("pid must be > 1")); ++ return TRUE; ++ } ++ + manager = CK_MANAGER (ckmanager); + + sender = g_dbus_method_invocation_get_sender (context); +diff -Nuar ConsoleKit2-0.9.3.orig/src/ck-session.c ConsoleKit2-0.9.3/src/ck-session.c +--- ConsoleKit2-0.9.3.orig/src/ck-session.c 2015-05-18 06:43:04.000000000 +0300 ++++ ConsoleKit2-0.9.3/src/ck-session.c 2015-06-14 21:30:55.946744527 +0300 +@@ -55,7 +55,6 @@ + char *seat_id; + + char *login_session_id; +- guint uid; + + GTimeVal creation_time; + +@@ -331,6 +330,11 @@ + + g_return_val_if_fail (CK_IS_SESSION (cksession), FALSE); + ++ if (console_kit_session_get_idle_hint (cksession) == FALSE) { ++ throw_error (context, CK_SESSION_ERROR_GENERAL, "idle since hint not set"); ++ return TRUE; ++ } ++ + date_str = g_time_val_to_iso8601 (&session->priv->idle_since_hint); + + console_kit_session_complete_get_idle_since_hint (cksession, context, date_str); +@@ -386,7 +390,7 @@ + } + + /* only restrict this by UID for now */ +- if (session->priv->uid != calling_uid) { ++ if (console_kit_session_get_unix_user (cksession) != calling_uid) { + throw_error (context, CK_SESSION_ERROR_INSUFFICIENT_PERMISSION, _("Only session owner may set idle hint state")); + return TRUE; + } +@@ -836,7 +840,11 @@ + + g_return_val_if_fail (CK_IS_SESSION (cksession), FALSE); + +- console_kit_session_complete_get_login_session_id (cksession, context, session->priv->login_session_id); ++ if (session->priv->login_session_id == NULL) { ++ throw_error (context, CK_SESSION_ERROR_FAILED, "no login session id"); ++ } else { ++ console_kit_session_complete_get_login_session_id (cksession, context, session->priv->login_session_id); ++ } + return TRUE; + } + +@@ -1240,7 +1248,7 @@ + extra_env[n++] = g_strdup_printf ("CK_SESSION_TYPE=%s", console_kit_session_get_session_type (cksession)); + } + extra_env[n++] = g_strdup_printf ("CK_SESSION_SEAT_ID=%s", session->priv->seat_id); +- extra_env[n++] = g_strdup_printf ("CK_SESSION_USER_UID=%d", session->priv->uid); ++ extra_env[n++] = g_strdup_printf ("CK_SESSION_USER_UID=%d", console_kit_session_get_unix_user (cksession)); + if (console_kit_session_get_display_device (cksession) != NULL && strlen (console_kit_session_get_display_device (cksession)) > 0) { + extra_env[n++] = g_strdup_printf ("CK_SESSION_DISPLAY_DEVICE=%s", console_kit_session_get_display_device (cksession)); + } +@@ -1279,7 +1287,7 @@ + cksession = CONSOLE_KIT_SESSION (session); + + group_name = g_strdup_printf ("Session %s", session->priv->id); +- g_key_file_set_integer (key_file, group_name, "uid", session->priv->uid); ++ g_key_file_set_integer (key_file, group_name, "uid", console_kit_session_get_unix_user (cksession)); + g_key_file_set_string (key_file, + group_name, + "seat", +diff -Nuar ConsoleKit2-0.9.3.orig/src/test-fus ConsoleKit2-0.9.3/src/test-fus +--- ConsoleKit2-0.9.3.orig/src/test-fus 1970-01-01 02:00:00.000000000 +0200 ++++ ConsoleKit2-0.9.3/src/test-fus 2015-06-14 21:31:08.768744297 +0300 +@@ -0,0 +1,69 @@ ++#!/usr/bin/env python ++# ++# Test fast-user-switch functionality ++# ++ ++import os ++import sys ++import gobject ++import dbus ++import dbus.glib ++ ++def activate_reply (res): ++ print "session activated" ++ ++def activate_error (e): ++ print str (e) ++ ++def session_added_cb (ssid): ++ print "Session added: %s" % ssid ++ ++def session_removed_cb (ssid): ++ print "Session removed: %s" % ssid ++ ++def active_session_changed_cb (ssid): ++ print "Active session changed: %s" % ssid ++ ++bus = dbus.SystemBus () ++ ++manager_obj = bus.get_object ('org.freedesktop.ConsoleKit', '/org/freedesktop/ConsoleKit/Manager') ++ ++manager = dbus.Interface (manager_obj, 'org.freedesktop.ConsoleKit.Manager') ++ ++current_ssid = manager.GetCurrentSession () ++current_session_obj = bus.get_object ('org.freedesktop.ConsoleKit', current_ssid) ++current_session = dbus.Interface (current_session_obj, 'org.freedesktop.ConsoleKit.Session') ++ ++sid = current_session.GetSeatId () ++if not sid: ++ print "Current session is not attached to a seat, no switching possible" ++ sys.exit () ++ ++seat_obj = bus.get_object ('org.freedesktop.ConsoleKit', sid) ++seat = dbus.Interface (seat_obj, 'org.freedesktop.ConsoleKit.Seat') ++seat.connect_to_signal ('SessionAdded', session_added_cb) ++seat.connect_to_signal ('SessionRemoved', session_removed_cb) ++seat.connect_to_signal ('ActiveSessionChanged', active_session_changed_cb) ++ ++can_fus = seat.CanActivateSessions() ++if can_fus: ++ print "The current seat supports session switching" ++else: ++ print "The current seat does not support session switching" ++ ++# Show a list of sessions on the current seat ++sessions = seat.GetSessions () ++for ssid in sessions: ++ session_obj = bus.get_object ('org.freedesktop.ConsoleKit', ssid) ++ session = dbus.Interface (session_obj, 'org.freedesktop.ConsoleKit.Session') ++ uid = session.GetUser () ++ print "Session %s user=%u" % (ssid, uid) ++ ++# then pretend a session-ID is selected: ++ssid = current_ssid ++session_obj = bus.get_object ('org.freedesktop.ConsoleKit', ssid) ++session = dbus.Interface (session_obj, 'org.freedesktop.ConsoleKit.Session') ++session.Activate (reply_handler = activate_reply, error_handler = activate_error) ++ ++mainloop = gobject.MainLoop () ++mainloop.run() +diff -Nuar ConsoleKit2-0.9.3.orig/src/test-manager.c ConsoleKit2-0.9.3/src/test-manager.c +--- ConsoleKit2-0.9.3.orig/src/test-manager.c 2015-06-08 10:14:14.000000000 +0300 ++++ ConsoleKit2-0.9.3/src/test-manager.c 2015-06-14 21:31:10.021744275 +0300 +@@ -277,7 +277,10 @@ + static gboolean + validate_stuff () + { +- gint fd; ++ gint fd; ++ GVariant *session_var = NULL, *close_var = NULL; ++ gboolean is_session_closed; ++ GError *error = NULL; + + print_reply (manager, "CanRestart"); + +@@ -295,7 +298,7 @@ + + fd = print_inhibit_reply (manager, "Inhibit"); + +- print_reply (manager, "OpenSession"); ++ session_var = print_method (manager, "OpenSession", g_variant_new ("()")); + + print_reply (manager, "GetSeats"); + +@@ -317,8 +320,29 @@ + g_close (fd, NULL); + } + ++ /* test closing our session */ ++ if (session_var != NULL) { ++ g_print ("calling CloseSession\t"); ++ close_var = g_dbus_proxy_call_sync (manager, "CloseSession", ++ session_var, ++ G_DBUS_CALL_FLAGS_NONE, 3000, NULL, &error); ++ if (close_var == NULL) { ++ g_print ("returned NULL\t"); ++ if (error) ++ g_print ("error %s", error->message); ++ } ++ } ++ ++ g_variant_get (close_var, "(b)", &is_session_closed); ++ g_print ("session closed? %s", is_session_closed ? "Closed" : "Not Closed"); ++ + g_print ("done printing stuff\n\n"); + ++ if (session_var) ++ g_variant_unref (session_var); ++ if (close_var) ++ g_variant_unref (close_var); ++ + return TRUE; + } + +diff -Nuar ConsoleKit2-0.9.3.orig/src/test-method-access-policy ConsoleKit2-0.9.3/src/test-method-access-policy +--- ConsoleKit2-0.9.3.orig/src/test-method-access-policy 1970-01-01 02:00:00.000000000 +0200 ++++ ConsoleKit2-0.9.3/src/test-method-access-policy 2015-06-14 21:31:10.021744275 +0300 +@@ -0,0 +1,534 @@ ++#!/usr/bin/env python ++# ++# Test access to methods ++# ++ ++import os ++import sys ++import gobject ++import dbus ++import dbus.glib ++ ++bus = dbus.SystemBus () ++ ++privileged = (os.geteuid () == 0) ++if privileged: ++ print "Running privileged as uid=%d pid=%d" % (os.geteuid (), os.getpid ()) ++else: ++ print "Running unprivileged as uid=%d pid=%d" % (os.geteuid (), os.getpid ()) ++ ++print "Testing all public methods to check D-Bus policy" ++ ++manager_obj = bus.get_object ('org.freedesktop.ConsoleKit', '/org/freedesktop/ConsoleKit/Manager') ++manager = dbus.Interface (manager_obj, 'org.freedesktop.ConsoleKit.Manager') ++ ++print "Testing Manager" ++ ++print "Testing Manager.OpenSession:", ++res = "PASS" ++try: ++ cookie = manager.OpenSession () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Manager.CloseSession:", ++res = "PASS" ++try: ++ manager.CloseSession (cookie) ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Manager.OpenSessionWithParameters:", ++res = "PASS" ++try: ++ cookie = manager.OpenSessionWithParameters (dbus.Array([], signature = "sv")) ++ if not privileged: ++ res = "FAIL" ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ if privileged: ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t%s" % res ++ ++print "Testing Manager.GetSeats:", ++res = "PASS" ++try: ++ manager.GetSeats () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Manager.GetSessionForCookie:", ++res = "PASS" ++try: ++ manager.GetSessionForCookie (os.environ['XDG_SESSION_COOKIE']) ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Manager.GetSessionForUnixProcess:", ++res = "PASS" ++try: ++ manager.GetSessionForUnixProcess (os.getpid ()) ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t%s" % res ++ ++print "Testing Manager.GetCurrentSession:", ++res = "PASS" ++try: ++ manager.GetCurrentSession () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Manager.GetSessionsForUnixUser:", ++res = "PASS" ++try: ++ manager.GetSessionsForUnixUser (os.geteuid ()) ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t%s" % res ++ ++print "Testing Manager.GetSessionsForUser:", ++res = "PASS" ++try: ++ manager.GetSessionsForUser (os.geteuid ()) ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Manager.GetSystemIdleHint:", ++res = "PASS" ++try: ++ manager.GetSystemIdleHint () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Manager.GetSystemIdleSinceHint:", ++res = "PASS" ++try: ++ manager.GetSystemIdleSinceHint () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t%s" % res ++ ++# Test Seat Interface ++print "Testing Seat" ++ ++seat_obj = bus.get_object ('org.freedesktop.ConsoleKit', '/org/freedesktop/ConsoleKit/Seat1') ++seat = dbus.Interface (seat_obj, 'org.freedesktop.ConsoleKit.Seat') ++ ++print "Testing Seat.GetId:", ++res = "PASS" ++try: ++ seat.GetId () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t\t%s" % res ++ ++print "Testing Seat.GetSessions:", ++res = "PASS" ++try: ++ seat.GetSessions () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Seat.GetDevices:", ++res = "PASS" ++try: ++ seat.GetDevices () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Seat.GetActiveSession:", ++res = "PASS" ++try: ++ seat.GetActiveSession () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Seat.CanActivateSessions:", ++res = "PASS" ++try: ++ seat.CanActivateSessions () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Seat.ActivateSession:", ++res = "PASS" ++try: ++ seat.ActivateSession ('/org/freedesktop/ConsoleKit/SessionN') ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++# Test Session Interface ++print "Testing Session" ++ ++# create a new session so we can set props ++cookie = manager.OpenSession () ++ssid = manager.GetSessionForCookie (cookie) ++if not ssid: ++ print "Could not create a session to test" ++ sys.exit () ++ ++session_obj = bus.get_object ('org.freedesktop.ConsoleKit', ssid) ++session = dbus.Interface (session_obj, 'org.freedesktop.ConsoleKit.Session') ++ ++print "Testing Session.GetId:", ++res = "PASS" ++try: ++ session.GetId () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t\t%s" % res ++ ++print "Testing Session.GetSeatId:", ++res = "PASS" ++try: ++ session.GetSeatId () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Session.GetLoginSessionId:", ++res = "PASS" ++try: ++ session.GetLoginSessionId () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Session.GetSessionType:", ++res = "PASS" ++try: ++ session.GetSessionType () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Session.GetUser:", ++res = "PASS" ++try: ++ session.GetUser () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Session.GetUnixUser:", ++res = "PASS" ++try: ++ session.GetUnixUser () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Session.GetX11Display:", ++res = "PASS" ++try: ++ session.GetX11Display () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Session.GetX11DisplayDevice:", ++res = "PASS" ++try: ++ session.GetX11DisplayDevice () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Session.GetDisplayDevice:", ++res = "PASS" ++try: ++ session.GetDisplayDevice () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Session.GetRemoteHostName:", ++res = "PASS" ++try: ++ session.GetRemoteHostName () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Session.IsActive:", ++res = "PASS" ++try: ++ session.IsActive () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Session.IsLocal:", ++res = "PASS" ++try: ++ session.IsLocal () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Session.GetCreationTime:", ++res = "PASS" ++try: ++ session.GetCreationTime () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Session.Activate:", ++res = "PASS" ++try: ++ session.Activate () ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++print "Testing Session.Lock:", ++res = "PASS" ++try: ++ session.Lock () ++ if not privileged: ++ res = "FAIL" ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ if privileged: ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t\t%s" % res ++ ++print "Testing Session.Unlock:", ++res = "PASS" ++try: ++ session.Unlock () ++ if not privileged: ++ res = "FAIL" ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ if privileged: ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res ++ ++# Test session properties ++ ++session_props = dbus.Interface (session_obj, 'org.freedesktop.DBus.Properties') ++ ++print "Testing Properties.Get 'unix-user':", ++res = "PASS" ++try: ++ session_props.Get ('org.freedesktop.ConsoleKit.Session', "unix-user") ++ if not privileged: ++ res = "FAIL" ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ if privileged: ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Properties.Get 'cookie':", ++res = "PASS" ++try: ++ session_props.Get ('org.freedesktop.ConsoleKit.Session', "cookie") ++ if not privileged: ++ res = "FAIL" ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ if privileged: ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t%s" % res ++ ++print "Testing Properties.Set:", ++res = "PASS" ++try: ++ session_props.Set ('org.freedesktop.ConsoleKit.Session', "unix-user", 0) ++ if not privileged: ++ res = "FAIL" ++except dbus.exceptions.DBusException, e: ++ if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied": ++ if privileged: ++ res = "FAIL" ++ elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod": ++ res = "UKNOWN METHOD" ++except: ++ pass ++print "\t\t\t%s" % res +diff -Nuar ConsoleKit2-0.9.3.orig/src/test-session.c ConsoleKit2-0.9.3/src/test-session.c +--- ConsoleKit2-0.9.3.orig/src/test-session.c 2015-05-18 06:43:04.000000000 +0300 ++++ ConsoleKit2-0.9.3/src/test-session.c 2015-06-14 21:31:12.560744229 +0300 +@@ -176,7 +176,7 @@ + open_session (void) + { + GDBusProxy *session; +- GVariant *cookie_var, *session_var, *activate_var; ++ GVariant *cookie_var, *session_var, *activate_var, *close_var; + GError *error = NULL; + const gchar *path = NULL, *cookie = NULL; + +@@ -272,6 +272,20 @@ + } + if (activate_var) + g_variant_unref (activate_var); ++ ++ close_var = g_dbus_proxy_call_sync (manager, "CloseSession", g_variant_new ("(s)", cookie), G_DBUS_CALL_FLAGS_NONE, 3000, NULL, &error); ++ if (session_var == NULL) { ++ g_print ("returned NULL, is the daemon running?\t"); ++ ++ if (error) ++ g_print ("error %s", error->message); ++ ++ g_print ("\n"); ++ g_clear_error (&error); ++ return; ++ } ++ if (close_var) ++ g_variant_unref (close_var); + } + + int diff --git a/system/base/ConsoleKit/pspec.xml b/system/base/ConsoleKit/pspec.xml new file mode 100644 index 0000000000..86cfe98319 --- /dev/null +++ b/system/base/ConsoleKit/pspec.xml @@ -0,0 +1,154 @@ + + + + + ConsoleKit2 + http://freedesktop.org/Software/Hal + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + A framework for defining and tracking users, login sessions, and seats + ConsoleKit is a system daemon for tracking what users are logged into the system and how they interact with the computer (e.g. which keyboard and mouse they use). + https://github.com/ConsoleKit2/ConsoleKit2/releases/download/0.9.4/ConsoleKit2-0.9.4.tar.bz2 + + acl-devel + pam-devel + dbus-devel + udev-devel + zlib-devel + glib2-devel + libX11-devel + polkit-devel + dbus-glib-devel + + + + + + ConsoleKit + + acl + pam + dbus + zlib + glib2 + libX11 + polkit + libudev + dbus-glib + + + /etc + /usr/lib/tmpfiles.d/ConsoleKit.conf + /usr/bin + /usr/sbin + /usr/libexec + /lib + /usr/lib + /usr/share/dbus-1 + /usr/share/polkit-1/actions + /usr/share/polkit-1/rules.d + /usr/share/man + /usr/share/locale + /usr/share/doc + /var + + + ConsoleKit.conf + 25-consolekit.rules + consolekit.pamd + + + + + ConsoleKit-devel + system.devel + Development files for ConsoleKit + + ConsoleKit + dbus-devel + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2015-06-16 + 0.9.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-15 + 0.9.3 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-05 + 0.9.2 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-08-01 + 0.4.6 + Rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 0.4.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-06 + 0.4.6 + Dep Fix + Varol Maksutoğlu + waroi@pisilinux.org + + + 2014-01-09 + 0.4.6 + Add gentoo patches and ConsoleKit.conf + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-08 + 0.4.6 + /var/run => /run + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-04 + 0.4.6 + Version bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-08-23 + 0.4.5 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/system/base/ConsoleKit/translations.xml b/system/base/ConsoleKit/translations.xml new file mode 100644 index 0000000000..836acdaca0 --- /dev/null +++ b/system/base/ConsoleKit/translations.xml @@ -0,0 +1,13 @@ + + + + ConsoleKit + Kullanıcıları, giriş oturumlarını ve koltukları takip etmek ve tanımlamak için bir altyapı + ConsoleKit, sisteme giriş yapmış kullanıcıları ve bu kullanıcıların bilgisayar ile nasıl etkileştiğini izleyen bir sistem hizmetidir. + + + + ConsoleKit-devel + ConsoleKit için geliştirme dosyaları + + From dfa9b0e0fe6b25022db61c3d8f965e7fea744c4c Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:12:40 +0300 Subject: [PATCH 099/175] moved into main for pisi 2.0 --- system/base/util-linux/actions.py | 91 +++++++ ...nt-FS-id-and-parent-ID-could-be-zero.patch | 98 ++++++++ ...verify-initramfs-by-f_type-not-devno.patch | 59 +++++ .../util-linux/files/move_is_mountinfo.patch | 46 ++++ system/base/util-linux/files/ntfs-3g.patch | 12 + .../util-linux-ng-2.21-login-lastlog.patch | 11 + system/base/util-linux/pspec.xml | 226 ++++++++++++++++++ system/base/util-linux/translations.xml | 29 +++ 8 files changed, 572 insertions(+) create mode 100644 system/base/util-linux/actions.py create mode 100644 system/base/util-linux/files/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch create mode 100644 system/base/util-linux/files/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch create mode 100644 system/base/util-linux/files/move_is_mountinfo.patch create mode 100644 system/base/util-linux/files/ntfs-3g.patch create mode 100644 system/base/util-linux/files/upstream/util-linux-ng-2.21-login-lastlog.patch create mode 100644 system/base/util-linux/pspec.xml create mode 100644 system/base/util-linux/translations.xml diff --git a/system/base/util-linux/actions.py b/system/base/util-linux/actions.py new file mode 100644 index 0000000000..a5384b21e0 --- /dev/null +++ b/system/base/util-linux/actions.py @@ -0,0 +1,91 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +pisitools.cflags.add("-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64") +pisitools.cflags.sub("-O[\d]", "-Os") + +def setup(): + shelltools.export("SUID_CFLAGS", "-fpie") + shelltools.export("SUID_LDFLAGS", "-pie -Wl,-z,relro -Wl,-z,now") + shelltools.export("AUTOPOINT", "/bin/true") + + options = "\ + --disable-rpath \ + --disable-silent-rules \ + --disable-use-tty-group \ + --disable-su \ + --disable-last \ + --disable-mesg \ + --disable-vipw \ + --disable-wall \ + --disable-login \ + --disable-newgrp \ + --disable-nologin \ + --disable-runuser \ + --disable-sulogin \ + --disable-utmpdump \ + --disable-chfn-chsh \ + --disable-mountpoint \ + --disable-makeinstall-chown \ + --disable-socket-activation \ + " + + if get.buildTYPE() == "emul32": + options += "\ + --prefix=/emul32 \ + --bindir=/emul32/bin \ + --sbindir=/emul32/sbin \ + --libdir=/usr/lib32 \ + --without-ncurses \ + --disable-static \ + --disable-partx \ + --disable-raw \ + --disable-write \ + --disable-mount \ + --disable-fsck \ + --disable-libmount \ + --with-audit=no \ + " + else: + options += "\ + --bindir=/bin \ + --sbindir=/sbin \ + --enable-static \ + --enable-partx \ + --enable-raw \ + --enable-write \ + --enable-tunelp \ + --without-audit \ + --with-udev \ + --without-utempter \ + " + + autotools.autoreconf("-fi") + autotools.configure(options) + pisitools.dosed("libtool", "( -shared )", r" -Wl,--as-needed\1") + + # Extra fedora switches: + # --enable-login-utils will enable some utilities we ship in shadow + # --enable-kill will enable the kill utility we ship in coreutils + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + #pisitools.doman("sys-utils/klogconsole.man") + pisitools.remove("/usr/share/man/man1/kill.1") + + if get.buildTYPE() == "emul32": return + + pisitools.dodoc("ABOUT-NLS", "AUTHORS", "ChangeLog", "COPYING", "README*") + pisitools.insinto("/%s/%s" % (get.docDIR(), get.srcNAME()), "Documentation") diff --git a/system/base/util-linux/files/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch b/system/base/util-linux/files/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch new file mode 100644 index 0000000000..01a8d441bb --- /dev/null +++ b/system/base/util-linux/files/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch @@ -0,0 +1,98 @@ +From 6c373810f5b1d32824371e9dff6ee5a006388f98 Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Thu, 20 Feb 2014 16:59:11 +0100 +Subject: [PATCH] libmount: FS id and parent ID could be zero +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It seems that linux 3.14 is able to produce things like: + + 19 0 8:3 / / rw,relatime - ext4 /dev/sda3 rw,data=ordered + ^ + +Reported-by: Mantas Mikulėnas +Signed-off-by: Karel Zak +--- + libmount/src/tab.c | 12 ++++-------- + misc-utils/findmnt.c | 5 +++-- + 2 files changed, 7 insertions(+), 10 deletions(-) + +diff --git a/libmount/src/tab.c b/libmount/src/tab.c +index 4c2f8a4..332312b 100644 +--- a/libmount/src/tab.c ++++ b/libmount/src/tab.c +@@ -505,7 +505,7 @@ int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root) + assert(tb); + assert(root); + +- if (!tb || !root) ++ if (!tb || !root || !is_mountinfo(tb)) + return -EINVAL; + + DBG(TAB, mnt_debug_h(tb, "lookup root fs")); +@@ -515,8 +515,6 @@ int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root) + mnt_reset_iter(&itr, MNT_ITER_FORWARD); + while(mnt_table_next_fs(tb, &itr, &fs) == 0) { + int id = mnt_fs_get_parent_id(fs); +- if (!id) +- break; /* @tab is not a mountinfo file? */ + + if (!*root || id < root_id) { + *root = fs; +@@ -524,7 +522,7 @@ int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root) + } + } + +- return root_id ? 0 : -EINVAL; ++ return *root ? 0 : -EINVAL; + } + + /** +@@ -545,15 +543,13 @@ int mnt_table_next_child_fs(struct libmnt_table *tb, struct libmnt_iter *itr, + struct libmnt_fs *fs; + int parent_id, lastchld_id = 0, chld_id = 0; + +- if (!tb || !itr || !parent) ++ if (!tb || !itr || !parent || !is_mountinfo(tb)) + return -EINVAL; + + DBG(TAB, mnt_debug_h(tb, "lookup next child of '%s'", + mnt_fs_get_target(parent))); + + parent_id = mnt_fs_get_id(parent); +- if (!parent_id) +- return -EINVAL; + + /* get ID of the previously returned child */ + if (itr->head && itr->p != itr->head) { +@@ -584,7 +580,7 @@ int mnt_table_next_child_fs(struct libmnt_table *tb, struct libmnt_iter *itr, + } + } + +- if (!chld_id) ++ if (!*chld) + return 1; /* end of iterator */ + + /* set the iterator to the @chld for the next call */ +diff --git a/misc-utils/findmnt.c b/misc-utils/findmnt.c +index fb21174..988cd73 100644 +--- a/misc-utils/findmnt.c ++++ b/misc-utils/findmnt.c +@@ -822,8 +822,9 @@ static int tab_is_tree(struct libmnt_table *tb) + if (!itr) + return 0; + +- if (mnt_table_next_fs(tb, itr, &fs) == 0) +- rc = mnt_fs_get_id(fs) > 0 && mnt_fs_get_parent_id(fs) > 0; ++ rc = (mnt_table_next_fs(tb, itr, &fs) == 0 && ++ mnt_fs_is_kernel(fs) && ++ mnt_fs_get_root(fs)); + + mnt_free_iter(itr); + return rc; +-- +1.9.1 + diff --git a/system/base/util-linux/files/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch b/system/base/util-linux/files/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch new file mode 100644 index 0000000000..56191a30e7 --- /dev/null +++ b/system/base/util-linux/files/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch @@ -0,0 +1,59 @@ +From 751c39383adaf5ff5a860516238d524b0e20f835 Mon Sep 17 00:00:00 2001 +From: Dave Reisner +Date: Wed, 2 Apr 2014 10:41:30 -0400 +Subject: [PATCH] switch_root: verify initramfs by f_type, not devno + +As of linux 3.14, the initramfs device will have both major and +minor 0, causing our paranoia check to fail. Make this version agnostic +by checking the filesystem type, rather than a device number. + +[adopted from master for backport into 2.24.x branch] + +Signed-off-by: Dave Reisner +--- + sys-utils/switch_root.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +diff --git a/sys-utils/switch_root.c b/sys-utils/switch_root.c +index f26f7da..40e222d 100644 +--- a/sys-utils/switch_root.c ++++ b/sys-utils/switch_root.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -33,6 +34,8 @@ + #include + #include + ++#include ++ + #include "c.h" + #include "nls.h" + #include "closestream.h" +@@ -174,12 +177,12 @@ static int switchroot(const char *newroot) + if (cfd >= 0) { + pid = fork(); + if (pid <= 0) { +- if (fstat(cfd, &sb) == 0) { +- if (sb.st_dev == makedev(0, 1)) +- recursiveRemove(cfd); +- else +- warn(_("old root filesystem is not an initramfs")); +- } ++ struct statfs stfs; ++ if (fstatfs(cfd, &stfs) == 0 && ++ (stfs.f_type == RAMFS_MAGIC || stfs.f_type == TMPFS_MAGIC)) ++ recursiveRemove(cfd); ++ else ++ warn(_("old root filesystem is not an initramfs")); + + if (pid == 0) + exit(EXIT_SUCCESS); +-- +1.9.1 + diff --git a/system/base/util-linux/files/move_is_mountinfo.patch b/system/base/util-linux/files/move_is_mountinfo.patch new file mode 100644 index 0000000000..ad9387efc3 --- /dev/null +++ b/system/base/util-linux/files/move_is_mountinfo.patch @@ -0,0 +1,46 @@ +diff --git a/libmount/src/tab.c b/libmount/src/tab.c +index 3633b6a..8ae49c8 100644 +--- a/libmount/src/tab.c ++++ b/libmount/src/tab.c +@@ -47,6 +47,20 @@ + #include "strutils.h" + #include "loopdev.h" + ++static int is_mountinfo(struct libmnt_table *tb) ++{ ++ struct libmnt_fs *fs; ++ ++ if (!tb) ++ return 0; ++ ++ fs = list_first_entry(&tb->ents, struct libmnt_fs, ents); ++ if (fs && mnt_fs_is_kernel(fs) && mnt_fs_get_root(fs)) ++ return 1; ++ ++ return 0; ++} ++ + /** + * mnt_new_table: + * +@@ -1229,20 +1335,6 @@ err: + return NULL; + } + +-static int is_mountinfo(struct libmnt_table *tb) +-{ +- struct libmnt_fs *fs; +- +- if (!tb) +- return 0; +- +- fs = list_first_entry(&tb->ents, struct libmnt_fs, ents); +- if (fs && mnt_fs_is_kernel(fs) && mnt_fs_get_root(fs)) +- return 1; +- +- return 0; +-} +- + /** + * mnt_table_is_fs__mounted: + * @tb: /proc/self/mountinfo file diff --git a/system/base/util-linux/files/ntfs-3g.patch b/system/base/util-linux/files/ntfs-3g.patch new file mode 100644 index 0000000000..818f0cbe09 --- /dev/null +++ b/system/base/util-linux/files/ntfs-3g.patch @@ -0,0 +1,12 @@ +diff -Nuar util-linux-2.21.2.orig/libblkid/src/superblocks/ntfs.c util-linux-2.21.2/libblkid/src/superblocks/ntfs.c +--- util-linux-2.21.2.orig/libblkid/src/superblocks/ntfs.c 2012-05-24 13:22:56.000000000 +0300 ++++ util-linux-2.21.2/libblkid/src/superblocks/ntfs.c 2012-06-05 14:21:57.967967774 +0300 +@@ -160,7 +160,7 @@ + + const struct blkid_idinfo ntfs_idinfo = + { +- .name = "ntfs", ++ .name = "ntfs-3g", + .usage = BLKID_USAGE_FILESYSTEM, + .probefunc = probe_ntfs, + .magics = diff --git a/system/base/util-linux/files/upstream/util-linux-ng-2.21-login-lastlog.patch b/system/base/util-linux/files/upstream/util-linux-ng-2.21-login-lastlog.patch new file mode 100644 index 0000000000..947a0e55c2 --- /dev/null +++ b/system/base/util-linux/files/upstream/util-linux-ng-2.21-login-lastlog.patch @@ -0,0 +1,11 @@ +diff -up util-linux-2.21-rc1/login-utils/login.c.kzak util-linux-2.21-rc1/login-utils/login.c +--- util-linux-2.21-rc1/login-utils/login.c.kzak 2012-01-19 13:19:54.886299587 +0100 ++++ util-linux-2.21-rc1/login-utils/login.c 2012-01-19 13:20:40.853451212 +0100 +@@ -499,7 +499,7 @@ static void log_lastlog(struct login_con + if (!cxt->pwd) + return; + +- fd = open(_PATH_LASTLOG, O_RDWR, 0); ++ fd = open(_PATH_LASTLOG, O_RDWR | O_CREAT, 0); + if (fd < 0) + return; diff --git a/system/base/util-linux/pspec.xml b/system/base/util-linux/pspec.xml new file mode 100644 index 0000000000..66f0b8a225 --- /dev/null +++ b/system/base/util-linux/pspec.xml @@ -0,0 +1,226 @@ + + + + + util-linux + http://userweb.kernel.org/~kzak/util-linux-ng/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + library + Various useful Linux utilities + The util-linux package contains a large variety of low-level system utilities that are necessary for a Linux system to function. + https://www.kernel.org/pub/linux/utils/util-linux/v2.26/util-linux-2.26.1.tar.xz + + zlib-devel + shadow + ncurses-devel + libcap-ng-devel + + + + + + upstream/util-linux-ng-2.21-login-lastlog.patch + + + + + util-linux + + libuuid + libblkid + zlib + perl + ncurses + libudev + + 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 + /usr/include + /usr/lib + /lib + + + + + uuidd + service + app:console + util.misc + Helper daemon to guarantee uniqueness of time-based UUIDs + + libuuid + + + + /usr/bin/uuidgen + /usr/sbin/uuidd + /usr/share/man/man1/uuidgen.1 + /usr/share/man/man8/uuidd.8 + + + + + libuuid + library + A library for UUID processing + + /usr/share/man/man3/uuid* + /lib/libuuid.* + /usr/lib/libuuid.so + + + + + libuuid-devel + header + system.devel + libuuid header files + + libuuid + + + /usr/include/uuid/* + /usr/lib/pkgconfig/ + /usr/lib32/pkgconfig/uuid.pc + + + + + libblkid + library + A library for block device identifying + + libuuid + + + /usr/share/man/man3/libblkid* + /usr/share/man/man8/blkid* + /lib/libblkid.* + /usr/lib/libblkid.so + + + + + libblkid-devel + header + system.devel + libblkid header files + + libblkid + + + /usr/include/blkid/* + /usr/lib/pkgconfig/blkid.pc + /usr/lib32/pkgconfig/blkid.pc + + + + + libuuid-32bit + emul32 + 32-bit shared libraries for libuuid + emul32 + + glibc-32bit + + + /usr/lib32/libuuid.* + + + + + libblkid-32bit + emul32 + 32-bit shared libraries for libblkid + emul32 + + libblkid + libuuid-32bit + libuuid + glibc-32bit + + + /usr/lib32/libblkid.* + + + + + + 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 + + + diff --git a/system/base/util-linux/translations.xml b/system/base/util-linux/translations.xml new file mode 100644 index 0000000000..5f4eb08dc4 --- /dev/null +++ b/system/base/util-linux/translations.xml @@ -0,0 +1,29 @@ + + + + util-linux + Çeşitli kullanışlı Linux araçları + Divers utilitaires Linux utiles. + util-linux paketi, bir Linux sisteminin işlevsel olması için gerekli olan birçok düşük seviye sistem uygulamasını içerir. + + + + libuuid + UUID üretimi için bir kitaplık + + + + libblkid + Disk tanımlama için bir kitaplık + + + + uuidd + Zaman tabanlı UUID'lerin benzersizliğini garantileyen sistem hizmeti + + + + libuuid-32bit + libuuid için 32-bit paylaşımlı kitaplıklar + + From d68741e3b1910c03b3d72c5569e80e90bca726b2 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sat, 4 Jul 2015 15:27:42 +0300 Subject: [PATCH 100/175] nspr:moved into main for pisi 2.0 --- system/base/nspr/actions.py | 37 ++++++ system/base/nspr/files/generate-pc-config.sh | 36 ++++++ system/base/nspr/files/nspr.pc.in | 10 ++ system/base/nspr/pspec.xml | 122 +++++++++++++++++++ system/base/nspr/translations.xml | 15 +++ 5 files changed, 220 insertions(+) create mode 100644 system/base/nspr/actions.py create mode 100644 system/base/nspr/files/generate-pc-config.sh create mode 100644 system/base/nspr/files/nspr.pc.in create mode 100644 system/base/nspr/pspec.xml create mode 100644 system/base/nspr/translations.xml diff --git a/system/base/nspr/actions.py b/system/base/nspr/actions.py new file mode 100644 index 0000000000..e5d6dc7d35 --- /dev/null +++ b/system/base/nspr/actions.py @@ -0,0 +1,37 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import get +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +def setup(): + # -fno-strict-aliasing workarounds some aliasing violations, see: https://bugzilla.redhat.com/show_bug.cgi?id=487844 --> + shelltools.system('nspr/configure \ + --prefix=/usr \ + --disable-debug \ + %s \ + --enable-optimize="%s -fno-strict-aliasing"' % ("--enable-64bit" if get.ARCH() == "x86_64" else "", get.CFLAGS())) + +def build(): + autotools.make() + +def install(): + # Create nss.pc and nss-config dynamically + shelltools.system("./generate-pc-config.sh") + + pisitools.insinto("/usr/lib","dist/lib/*.so",sym=False) + pisitools.insinto("/usr/include/nspr","dist/include/nspr/*.h",sym=False) + pisitools.insinto("/usr/include/nspr/obsolete","dist/include/nspr/obsolete/*.h",sym=False) + pisitools.insinto("/usr/include/nspr/private","dist/include/nspr/private/*.h",sym=False) + + # Fix permissions of headers, they're 0640 by default + shelltools.chmod("%s/usr/include/nspr/*.h" % get.installDIR(), 0644) + shelltools.chmod("%s/usr/include/nspr/*/*.h" % get.installDIR(), 0644) + + pisitools.insinto("/usr/bin","config/nspr-config",sym=False) + pisitools.insinto("/usr/lib/pkgconfig","config/nspr.pc",sym=False) diff --git a/system/base/nspr/files/generate-pc-config.sh b/system/base/nspr/files/generate-pc-config.sh new file mode 100644 index 0000000000..fb41397d05 --- /dev/null +++ b/system/base/nspr/files/generate-pc-config.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Generate nss.pc from nss.pc.in +# Ozan Caglayan, 2010 +# +# Generate nspr.pc from nspr.pc.in +# Metin Akdere, 2012 + +LIBDIR="/usr/lib/nspr" +PREFIX="/usr" +EXEC_PREFIX="/usr" +INCLUDEDIR="/usr/include/nspr" + +PKGCONFIG="nspr/config/nspr.pc.in" + +NSPR_VERSION=`./config/nspr-config --version` +NSPR_LIBS=`./config/nspr-config --libs` +NSPR_CFLAGS=`./config/nspr-config --cflags` + +echo "NSPR_VERSION: $NSPR_VERSION" +echo "NSPR_LIBS: $NSPR_LIBS" +echo "NSPR_CFLAGS: $NSPR_CFLAGS" + +# Setup pkgconfig file +cat $PKGCONFIG | sed -e "s,%libdir%,$LIBDIR,g" \ + -e "s,%prefix%,$PREFIX,g" \ + -e "s,%exec_prefix%,$EXEC_PREFIX,g" \ + -e "s,%includedir%,$INCLUDEDIR,g" \ + -e "s,%NSPR_VERSION%,$NSPR_VERSION,g" \ + -e "s,%FULL_NSPR_LIBS%,$NSPR_LIBS,g" \ + -e "s,%FULL_NSPR_CFLAGS%,$NSPR_CFLAGS,g" \ + > config/nspr.pc + + +# Clear .in files +rm -rf $PKGCONFIG diff --git a/system/base/nspr/files/nspr.pc.in b/system/base/nspr/files/nspr.pc.in new file mode 100644 index 0000000000..1d8f4a0cad --- /dev/null +++ b/system/base/nspr/files/nspr.pc.in @@ -0,0 +1,10 @@ +prefix=%prefix% +exec_prefix=%exec_prefix% +libdir=%libdir% +includedir=%includedir% + +Name: NSPR +Description: The Netscape Portable Runtime +Version: %NSPR_VERSION% +Libs: %FULL_NSPR_LIBS% +Cflags: %FULL_NSPR_CFLAGS% diff --git a/system/base/nspr/pspec.xml b/system/base/nspr/pspec.xml new file mode 100644 index 0000000000..6c577d5a4a --- /dev/null +++ b/system/base/nspr/pspec.xml @@ -0,0 +1,122 @@ + + + + + nspr + http://www.mozilla.org/projects/nspr/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + Netscape Portable Runtime + 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. + ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v4.10.8/src/nspr-4.10.8.tar.gz + + nspr.pc.in + generate-pc-config.sh + + + + + nspr + + /usr/lib + + + + + nspr-devel + system.devel + Development files for nspr + + nspr + + + /usr/include + /usr/lib/pkgconfig + /usr/bin + + + + + + 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 + + + diff --git a/system/base/nspr/translations.xml b/system/base/nspr/translations.xml new file mode 100644 index 0000000000..1f0c162da6 --- /dev/null +++ b/system/base/nspr/translations.xml @@ -0,0 +1,15 @@ + + + + nspr + Netscape Taşınabilir Çalışma Zamanı + 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 -- 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) 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. + + + + nspr-devel + nspr için geliştirme dosyaları + + From bfee09872f1d3ebb19a8706ed3f960be95a1d73a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sat, 4 Jul 2015 15:43:20 +0300 Subject: [PATCH 101/175] pango is ready --- desktop/toolkit/gtk/gtk-doc/actions.py | 19 +++++ desktop/toolkit/gtk/gtk-doc/pspec.xml | 81 +++++++++++++++++++ desktop/toolkit/gtk/gtk-doc/translations.xml | 13 +++ desktop/toolkit/gtk/pango/actions.py | 4 + desktop/toolkit/gtk/pango/pspec.xml | 3 + office/docbook/component.xml | 3 + office/docbook/itstool/actions.py | 16 ++++ office/docbook/itstool/pspec.xml | 48 +++++++++++ office/docbook/openjade/actions.py | 60 ++++++++++++++ office/docbook/openjade/comar/package.py | 19 +++++ .../files/openjade-1.3.2-deplibs.patch | 40 +++++++++ .../files/openjade-1.3.2-ldflags.patch | 13 +++ .../files/openjade-1.3.2-lib64-fix.patch | 24 ++++++ .../files/openjade-1.3.2-msggen.pl.patch | 32 ++++++++ .../openjade-1.3.2-respect-ldflags.patch | 12 +++ .../openjade/files/openjade-1.3.2.catalog | 1 + .../files/openjade-1.3.2.dsssl-catalog | 4 + office/docbook/openjade/pspec.xml | 75 +++++++++++++++++ office/docbook/openjade/translations.xml | 8 ++ office/docbook/opensp/actions.py | 34 ++++++++ .../opensp/files/opensp-1.5-gcc34.patch | 10 +++ .../docbook/opensp/files/opensp-sigsegv.patch | 20 +++++ office/docbook/opensp/pspec.xml | 75 +++++++++++++++++ office/docbook/opensp/translations.xml | 13 +++ 24 files changed, 627 insertions(+) create mode 100644 desktop/toolkit/gtk/gtk-doc/actions.py create mode 100644 desktop/toolkit/gtk/gtk-doc/pspec.xml create mode 100644 desktop/toolkit/gtk/gtk-doc/translations.xml create mode 100644 office/docbook/component.xml create mode 100644 office/docbook/itstool/actions.py create mode 100644 office/docbook/itstool/pspec.xml create mode 100644 office/docbook/openjade/actions.py create mode 100644 office/docbook/openjade/comar/package.py create mode 100644 office/docbook/openjade/files/openjade-1.3.2-deplibs.patch create mode 100644 office/docbook/openjade/files/openjade-1.3.2-ldflags.patch create mode 100644 office/docbook/openjade/files/openjade-1.3.2-lib64-fix.patch create mode 100644 office/docbook/openjade/files/openjade-1.3.2-msggen.pl.patch create mode 100644 office/docbook/openjade/files/openjade-1.3.2-respect-ldflags.patch create mode 100644 office/docbook/openjade/files/openjade-1.3.2.catalog create mode 100644 office/docbook/openjade/files/openjade-1.3.2.dsssl-catalog create mode 100644 office/docbook/openjade/pspec.xml create mode 100644 office/docbook/openjade/translations.xml create mode 100644 office/docbook/opensp/actions.py create mode 100644 office/docbook/opensp/files/opensp-1.5-gcc34.patch create mode 100644 office/docbook/opensp/files/opensp-sigsegv.patch create mode 100644 office/docbook/opensp/pspec.xml create mode 100644 office/docbook/opensp/translations.xml diff --git a/desktop/toolkit/gtk/gtk-doc/actions.py b/desktop/toolkit/gtk/gtk-doc/actions.py new file mode 100644 index 0000000000..bc7ee2d616 --- /dev/null +++ b/desktop/toolkit/gtk/gtk-doc/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licences/old-licenses/gpl-2.0.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.configure("--disable-static --disable-scrollkeeper") + +def build(): + autotools.make() + +def install(): + autotools.install() + + pisitools.dodoc("AUTHORS", "MAINTAINERS", "ChangeLog", "README", "NEWS", "TODO") diff --git a/desktop/toolkit/gtk/gtk-doc/pspec.xml b/desktop/toolkit/gtk/gtk-doc/pspec.xml new file mode 100644 index 0000000000..5aec8bc3eb --- /dev/null +++ b/desktop/toolkit/gtk/gtk-doc/pspec.xml @@ -0,0 +1,81 @@ + + + + + gtk-doc + http://www.gtk.org/gtk-doc + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + FDL-1.1 + app:console + GTK+ API documentation generator + Gtk-Doc is typically used to document the public API of GTK+ and GNOME libraries, but it can also be used to document application code. + mirrors://gnome/gtk-doc/1.21/gtk-doc-1.21.tar.xz + + + itstool + openjade + sgml-common + docbook-xml + docbook-xsl + libxslt-devel + + + + + gtk-doc + + + docbook-xml + sgml-common + + + /usr/bin + /usr/share + /usr/share/doc + /usr/share/omf + /var/lib + + + + + + 2015-04-06 + 1.21 + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-05-18 + 1.20 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-03-30 + 1.20 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-26 + 1.18 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-08-26 + 1.18 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/gtk/gtk-doc/translations.xml b/desktop/toolkit/gtk/gtk-doc/translations.xml new file mode 100644 index 0000000000..a2e4bd7c7a --- /dev/null +++ b/desktop/toolkit/gtk/gtk-doc/translations.xml @@ -0,0 +1,13 @@ + + + + gtk-doc + GTK+ API belge oluşturucusu + gtk-doc, GNOME ve GTK+ gibi kitaplıkların API'lerinin belgelendirilmesi için yazılmış bir uygulama projesidir. + + + + gtk-doc-devel + gtk-doc geliştirme dosyaları + + diff --git a/desktop/toolkit/gtk/pango/actions.py b/desktop/toolkit/gtk/pango/actions.py index bb26feb83e..1e260a5e73 100644 --- a/desktop/toolkit/gtk/pango/actions.py +++ b/desktop/toolkit/gtk/pango/actions.py @@ -13,9 +13,12 @@ from pisi.actionsapi import shelltools def setup(): if get.buildTYPE()=="emul32": pisitools.dosed("pango/modules.c", "(pango\.modules)", r"\1-32") + autotools.autoreconf("-fiv") + autotools.configure("--disable-static \ --sysconfdir=/etc \ + --disable-gtk-doc \ --with-included-modules=basic-fc \ --%sable-introspection" % ("dis" if get.buildTYPE()=="emul32" else "en")) @@ -26,6 +29,7 @@ def build(): def install(): autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + if get.buildTYPE()=="emul32": shelltools.move("pango/.libs/pango-querymodules", "pango/.libs/pango-querymodules-32") pisitools.dobin("pango/.libs/pango-querymodules-32") diff --git a/desktop/toolkit/gtk/pango/pspec.xml b/desktop/toolkit/gtk/pango/pspec.xml index b9b19eb868..7c666707ad 100644 --- a/desktop/toolkit/gtk/pango/pspec.xml +++ b/desktop/toolkit/gtk/pango/pspec.xml @@ -24,6 +24,7 @@ harfbuzz-devel fontconfig-devel libXrender-devel + gobject-introspection-devel pango-1.32.1-lib64.patch @@ -99,6 +100,7 @@ fontconfig-32bit libffi-32bit harfbuzz-32bit + glibc-32bit pango @@ -111,6 +113,7 @@ fontconfig-32bit libffi-32bit harfbuzz-32bit + glibc-32bit /usr/bin/pango-querymodules-32 diff --git a/office/docbook/component.xml b/office/docbook/component.xml new file mode 100644 index 0000000000..b70cd087f6 --- /dev/null +++ b/office/docbook/component.xml @@ -0,0 +1,3 @@ + + office.docbook + diff --git a/office/docbook/itstool/actions.py b/office/docbook/itstool/actions.py new file mode 100644 index 0000000000..5d45ff97eb --- /dev/null +++ b/office/docbook/itstool/actions.py @@ -0,0 +1,16 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import get + +def setup(): + autotools.configure() + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) diff --git a/office/docbook/itstool/pspec.xml b/office/docbook/itstool/pspec.xml new file mode 100644 index 0000000000..ebfa577345 --- /dev/null +++ b/office/docbook/itstool/pspec.xml @@ -0,0 +1,48 @@ + + + + + itstool + http://itstool.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + XML to PO and back again + XML to PO and back again + http://files.itstool.org/itstool/itstool-2.0.2.tar.bz2 + + + + + itstool + + /usr + + + + + + 2014-05-18 + 2.0.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-26 + 2.0.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-09-12 + 1.2.0 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + diff --git a/office/docbook/openjade/actions.py b/office/docbook/openjade/actions.py new file mode 100644 index 0000000000..c14529829f --- /dev/null +++ b/office/docbook/openjade/actions.py @@ -0,0 +1,60 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import libtools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +docname = get.srcNAME() + +def setup(): + shelltools.export("ALLOWED_FLAGS", "-O -O1 -O2 -pipe -g") + shelltools.sym("config/configure.in", "configure.in") + shelltools.export("SGML_PREFIX", "/usr/share/sgml") + autotools.configure("--enable-http \ + --enable-default-catalog=/etc/sgml/catalog \ + --enable-default-search-path=/usr/share/sgml:/usr/share/xml \ + --disable-static \ + --enable-splibdir=/usr/lib \ + --libdir=/usr/lib \ + --datadir=/usr/share/sgml/%s" % docname) + +def build(): + autotools.make() + +def install(): + pisitools.dodir("/usr") + pisitools.dodir("/usr/lib") + + autotools.rawInstall("prefix=%s/usr \ + libdir=%s/usr/lib \ + datadir=%s/usr/share/sgml/%s " \ + % (get.installDIR(), \ + get.installDIR(), \ + get.installDIR(), \ + docname)) + + pisitools.dosym("openjade", "/usr/bin/jade") + pisitools.dosym("onsgmls", "/usr/bin/nsgmls") + pisitools.dosym("osgmlnorm", "/usr/bin/sgmlnorm") + pisitools.dosym("ospam", "/usr/bin/spam") + pisitools.dosym("ospent", "/usr/bin/spent") + pisitools.dosym("osx", "/usr/bin/sgml2xml") + + pisitools.insinto("/usr/share/sgml/%s" % docname, "dsssl/builtins.dsl") + for i in ["dsssl/dsssl.dtd", "dsssl/style-sheet.dtd", "dsssl/fot.dtd"]: + pisitools.insinto("/usr/share/sgml/%s/dsssl" % docname, i) + pisitools.insinto("/usr/share/sgml/%s/pubtext" % docname, "pubtext/*") + + pisitools.dodoc("COPYING", "NEWS", "README", "VERSION") + pisitools.dohtml("doc/*.htm") + + pisitools.insinto("/usr/share/doc/%s/jadedoc" % get.srcNAME(), "jadedoc/*.htm") + pisitools.insinto("/usr/share/doc/%s/jadedoc/images" % get.srcNAME(), "jadedoc/images/*") + + diff --git a/office/docbook/openjade/comar/package.py b/office/docbook/openjade/comar/package.py new file mode 100644 index 0000000000..dc5c51dde8 --- /dev/null +++ b/office/docbook/openjade/comar/package.py @@ -0,0 +1,19 @@ +#!/usr/bin/python + +import os + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + os.system("/usr/bin/install-catalog --add /etc/sgml/openjade.cat \ + /usr/share/sgml/openjade/catalog") + os.system("/usr/bin/install-catalog --add /etc/sgml/openjade.cat \ + /usr/share/sgml/openjade/dsssl/catalog") + os.system("/usr/bin/install-catalog --add /etc/sgml/sgml-docbook.cat \ + /etc/sgml/openjade.cat") + +def preRemove(): + os.system("/usr/bin/install-catalog --remove /etc/sgml/openjade.cat \ + /usr/share/sgml/openjade/catalog") + os.system("/usr/bin/install-catalog --remove /etc/sgml/openjade.cat \ + /usr/share/sgml/openjade/dsssl/catalog") + os.system("/usr/bin/install-catalog --remove /etc/sgml/sgml-docbook.cat \ + /etc/sgml/openjade.cat") diff --git a/office/docbook/openjade/files/openjade-1.3.2-deplibs.patch b/office/docbook/openjade/files/openjade-1.3.2-deplibs.patch new file mode 100644 index 0000000000..3466ad7d85 --- /dev/null +++ b/office/docbook/openjade/files/openjade-1.3.2-deplibs.patch @@ -0,0 +1,40 @@ +diff -urNp openjade-1.3.2/grove/Makefile.sub devel/grove/Makefile.sub +--- openjade-1.3.2/grove/Makefile.sub 2002-10-20 23:47:24.000000000 +0200 ++++ devel/grove/Makefile.sub 2007-07-23 15:39:23.000000000 +0200 +@@ -1,4 +1,4 @@ + LTVERSION=0:1:0 + LIB=ogrove +-DEPLIBS=-lm ++DEPLIBS=-lm -lstdc++ + OBJS=Node.o LocNode.o +diff -urNp openjade-1.3.2/spgrove/Makefile.sub devel/spgrove/Makefile.sub +--- openjade-1.3.2/spgrove/Makefile.sub 2002-11-15 23:46:50.000000000 +0100 ++++ devel/spgrove/Makefile.sub 2007-07-23 16:06:13.000000000 +0200 +@@ -1,9 +1,10 @@ + LTVERSION=0:1:0 + LIB=ospgrove + INCLUDE=-I$(srcdir)/../grove +-DEPLIBS=-lm -L$(TOP)/grove -L$(TOP)/grove/.libs \ ++DEPLIBS=$(TOP)/grove/libogrove.la \ ++ -lm -losp -L$(TOP)/grove/.libs \ + -L$(TOP)/lib -L$(TOP)/lib/.libs \ +- $(LIB_THREADS) ++ $(LIB_THREADS) -lstdc++ + OBJS=GroveApp.o GroveBuilder.o SdNode.o + GENSRCS=grove_inst.cxx + +diff -urNp openjade-1.3.2/style/Makefile.sub devel/style/Makefile.sub +--- openjade-1.3.2/style/Makefile.sub 2003-04-18 19:18:10.000000000 +0200 ++++ devel/style/Makefile.sub 2007-07-23 16:08:26.000000000 +0200 +@@ -1,8 +1,8 @@ + LTVERSION=0:1:0 + LIB=ostyle +-DEPLIBS=-lm -L$(TOP)/grove -L$(TOP)/grove/.libs \ +- -L$(TOP)/lib -L$(TOP)/lib/.libs \ +- -L$(TOP)/spgrove -L$(TOP)/spgrove/.libs ++DEPLIBS=$(TOP)/grove/libogrove.la $(TOP)/spgrove/libospgrove.la \ ++ -lm -losp -L$(TOP)/lib -L$(TOP)/lib/.libs -L$(TOP)/grove/.libs \ ++ -L$(TOP)/spgrove -L$(TOP)/spgrove/.libs -lstdc++ + OBJS=LangObj.o \ + Collector.o \ + DssslApp.o \ diff --git a/office/docbook/openjade/files/openjade-1.3.2-ldflags.patch b/office/docbook/openjade/files/openjade-1.3.2-ldflags.patch new file mode 100644 index 0000000000..abe17545d6 --- /dev/null +++ b/office/docbook/openjade/files/openjade-1.3.2-ldflags.patch @@ -0,0 +1,13 @@ +Index: openjade-1.3.2/jade/Makefile.sub +=================================================================== +--- openjade-1.3.2.orig/jade/Makefile.sub ++++ openjade-1.3.2/jade/Makefile.sub +@@ -4,7 +4,7 @@ OBJS=jade.o SgmlFOTBuilder.o RtfFOTBuild + INCLUDE=-I$(srcdir)/../grove -I$(srcdir)/../spgrove -I$(srcdir)/../style + # XLIBS=../style/libostyle.a ../spgrove/libospgrove.a ../grove/libogrove.a \ + # ../lib/libosp.a +-XLIBS=../style/libostyle.a ../spgrove/libospgrove.a ../grove/libogrove.a $(splibdir)/libosp.a ++XLIBS=../style/libostyle.a ../grove/libogrove.a ../spgrove/libospgrove.a $(splibdir)/libosp.so + GENSRCS=JadeMessages.h HtmlMessages.h RtfMessages.h TeXMessages.h \ + HtmlFOTBuilder_inst.cxx RtfFOTBuilder_inst.cxx TeXFOTBuilder_inst.cxx \ + TransformFOTBuilder_inst.cxx MifMessages.h MifFOTBuilder_inst.cxx diff --git a/office/docbook/openjade/files/openjade-1.3.2-lib64-fix.patch b/office/docbook/openjade/files/openjade-1.3.2-lib64-fix.patch new file mode 100644 index 0000000000..773e9b8087 --- /dev/null +++ b/office/docbook/openjade/files/openjade-1.3.2-lib64-fix.patch @@ -0,0 +1,24 @@ +See https://bugs.gentoo.org/show_bug.cgi?id=235610 + +--- config/configure.in ++++ config/configure.in +@@ -53,7 +53,7 @@ + esac + # On PPC64 libosp is to be found in /usr/lib64; thus + # fall back to this directory +-test -d ${osplibdir}64 && osplibdir=${osplibdir}64 ++test -f ${osplibdir}64/libosp.la && osplibdir=${osplibdir}64 + AC_MSG_CHECKING(location of OpenSP Library) + AC_ARG_ENABLE(splibdir, + [ --enable-splibdir=pathlist +--- configure ++++ configure +@@ -1753,7 +1753,7 @@ + esac + # On PPC64 libosp is to be found in /usr/lib64; thus + # fall back to this directory +-test -d ${osplibdir}64 && osplibdir=${osplibdir}64 ++test -f ${osplibdir}64/libosp.la && osplibdir=${osplibdir}64 + echo "$as_me:$LINENO: checking location of OpenSP Library" >&5 + echo $ECHO_N "checking location of OpenSP Library... $ECHO_C" >&6 + # Check whether --enable-splibdir or --disable-splibdir was given. diff --git a/office/docbook/openjade/files/openjade-1.3.2-msggen.pl.patch b/office/docbook/openjade/files/openjade-1.3.2-msggen.pl.patch new file mode 100644 index 0000000000..1afe68b800 --- /dev/null +++ b/office/docbook/openjade/files/openjade-1.3.2-msggen.pl.patch @@ -0,0 +1,32 @@ +Use Getopt::Std in place of getopts.pl. +https://bugs.gentoo.org/show_bug.cgi?id=420083 + +--- a/msggen.pl ++++ b/msggen.pl +@@ -4,6 +4,7 @@ + # See the file COPYING for copying permission. + + use POSIX; ++use Getopt::Std; + + # Package and version. + $package = 'openjade'; +@@ -18,8 +19,7 @@ + undef $opt_l; + undef $opt_p; + undef $opt_t; +-do 'getopts.pl'; +-&Getopts('l:p:t:'); ++getopts('l:p:t:'); + $module = $opt_l; + $pot_file = $opt_p; + +@@ -72,7 +72,7 @@ + else { + $field[0] =~ /^[IWQXE][0-9]$/ || &error("invalid first field");; + $type[$num] = substr($field[0], 0, 1); +- $argc = int(substr($field[0], 1, 1)); ++ $argc = substr($field[0], 1, 1); + } + $nargs[$num] = $argc; + $field[1] =~ /^[a-zA-Z_][a-zA-Z0-9_]+$/ || &error("invalid tag"); diff --git a/office/docbook/openjade/files/openjade-1.3.2-respect-ldflags.patch b/office/docbook/openjade/files/openjade-1.3.2-respect-ldflags.patch new file mode 100644 index 0000000000..51bd0b27dd --- /dev/null +++ b/office/docbook/openjade/files/openjade-1.3.2-respect-ldflags.patch @@ -0,0 +1,12 @@ +diff -ru a/Makefile.lib.in b/Makefile.lib.in +--- a/Makefile.lib.in 2002-01-22 05:57:53.000000000 -0600 ++++ b/Makefile.lib.in 2009-01-04 16:15:41.000000000 -0600 +@@ -23,7 +23,7 @@ + echo 'LT_OBJS='`echo $(OBJS)|sed 's/\.o/.lo/g'` >Makefile.lt + + lib$(LIB).la: $(LT_OBJS) +- $(LIBTOOL) --mode=link $(CC) $(LINKFLAGS) -o lib$(LIB).la $(LT_OBJS) \ ++ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) $(LINKFLAGS) -o lib$(LIB).la $(LT_OBJS) \ + -rpath $(libdir) -version-info $(LTVERSION) $(DEPLIBS) + + install: diff --git a/office/docbook/openjade/files/openjade-1.3.2.catalog b/office/docbook/openjade/files/openjade-1.3.2.catalog new file mode 100644 index 0000000000..818af59205 --- /dev/null +++ b/office/docbook/openjade/files/openjade-1.3.2.catalog @@ -0,0 +1 @@ +SYSTEM "builtins.dsl" "builtins.dsl" diff --git a/office/docbook/openjade/files/openjade-1.3.2.dsssl-catalog b/office/docbook/openjade/files/openjade-1.3.2.dsssl-catalog new file mode 100644 index 0000000000..11bc0425af --- /dev/null +++ b/office/docbook/openjade/files/openjade-1.3.2.dsssl-catalog @@ -0,0 +1,4 @@ +PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd" +PUBLIC "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" "dsssl.dtd" +PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" "style-sheet.dtd" +PUBLIC "-//OpenJade//DTD DSSSL Style Sheet//EN" "style-sheet.dtd" diff --git a/office/docbook/openjade/pspec.xml b/office/docbook/openjade/pspec.xml new file mode 100644 index 0000000000..25b64a7797 --- /dev/null +++ b/office/docbook/openjade/pspec.xml @@ -0,0 +1,75 @@ + + + + + openjade + http://openjade.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + An implementation of DSSSL + OpenJade is an implementation of Document Style Semantics and Specification Language (DSSSL), a style language to format Standard Generalized Markup Language (SGML) or Extensible Markup Language (XML) documents. + http://downloads.sourceforge.net/openjade/openjade-1.3.2.tar.gz + + sgml-common + opensp-devel + libgcc + + + + openjade-1.3.2-ldflags.patch + openjade-1.3.2-respect-ldflags.patch + openjade-1.3.2-msggen.pl.patch + + + + + + openjade + + sgml-common + opensp + libgcc + + + /usr/bin + /usr/lib + /usr/share/doc/openjade + /usr/share/sgml + + + openjade-1.3.2.dsssl-catalog + openjade-1.3.2.catalog + + + System.Package + + + + + + 2014-05-18 + 1.3.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-01 + 1.3.2 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2012-10-18 + 1.3.2 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/office/docbook/openjade/translations.xml b/office/docbook/openjade/translations.xml new file mode 100644 index 0000000000..2fe3519cfd --- /dev/null +++ b/office/docbook/openjade/translations.xml @@ -0,0 +1,8 @@ + + + + openjade + Bir DSSSL uyarlaması + OpenJade SGML ya da XML belgelerinin biçimlendirilmesine yarayan bir biçem lisanı olan DSSSL'nin bir uyarlamasıdır. + + diff --git a/office/docbook/opensp/actions.py b/office/docbook/opensp/actions.py new file mode 100644 index 0000000000..5c8f7e3dd7 --- /dev/null +++ b/office/docbook/opensp/actions.py @@ -0,0 +1,34 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import get +from pisi.actionsapi import libtools +from pisi.actionsapi import shelltools +from pisi.actionsapi import pisitools + +WorkDir = "OpenSP-%s" % get.srcVERSION() + +def setup(): + libtools.gnuconfig_update() + shelltools.export("ALLOWED_FLAGS", "-O -O1 -O2 -pipe -g") + autotools.configure("--enable-nls \ + --enable-http \ + --disable-doc-build \ + --disable-static \ + --enable-default-catalog=/etc/sgml/catalog \ + --enable-default-search-path=/usr/share/sgml:/usr/share/xml \ + --datadir=/usr/share/sgml") + +def build(): + autotools.make("pkgdocdir=/usr/share/doc/%s" % get.srcNAME()) + +def install(): + autotools.rawInstall('DESTDIR="%s" pkgdocdir=/usr/share/doc/%s' % (get.installDIR(), get.srcNAME())) + + pisitools.dodoc("AUTHORS", "BUGS", "ChangeLog", "NEWS", "README") + pisitools.domove("/usr/share/sgml/locale", "/usr/share") + diff --git a/office/docbook/opensp/files/opensp-1.5-gcc34.patch b/office/docbook/opensp/files/opensp-1.5-gcc34.patch new file mode 100644 index 0000000000..60ee560853 --- /dev/null +++ b/office/docbook/opensp/files/opensp-1.5-gcc34.patch @@ -0,0 +1,10 @@ +--- include/RangeMap.h~ 2004-04-22 20:34:13.729541096 +0300 ++++ include/RangeMap.h 2004-04-22 20:31:48.473049702 +0300 +@@ -8,6 +8,7 @@ + #include "Boolean.h" + #include "ISet.h" + #include "types.h" ++#include "constant.h" + #include + + #ifdef SP_NAMESPACE diff --git a/office/docbook/opensp/files/opensp-sigsegv.patch b/office/docbook/opensp/files/opensp-sigsegv.patch new file mode 100644 index 0000000000..69bd3a94ec --- /dev/null +++ b/office/docbook/opensp/files/opensp-sigsegv.patch @@ -0,0 +1,20 @@ +--- OpenSP-1.5.2/lib/ExtendEntityManager.cxx 2005-11-05 10:05:20.000000000 +0100 ++++ OpenSP-1.5.2.new/lib/ExtendEntityManager.cxx 2007-06-21 12:56:26.000000000 +0200 +@@ -1238,7 +1238,8 @@ StorageObjectSpec::StorageObjectSpec() + } + + StorageObjectSpec::StorageObjectSpec(const StorageObjectSpec& x) +-: codingSystemName(x.codingSystemName), ++: storageManager(x.storageManager), ++ codingSystemName(x.codingSystemName), + codingSystem(x.codingSystem), + specId(x.specId), + baseId(x.baseId), +@@ -1253,6 +1254,7 @@ StorageObjectSpec::StorageObjectSpec(con + StorageObjectSpec& StorageObjectSpec::operator=(const StorageObjectSpec& x) + { + if (this != &x) { ++ storageManager = x.storageManager; + codingSystemName = x.codingSystemName; + codingSystem = x.codingSystem; + specId = x.specId; diff --git a/office/docbook/opensp/pspec.xml b/office/docbook/opensp/pspec.xml new file mode 100644 index 0000000000..c69fe8eb47 --- /dev/null +++ b/office/docbook/opensp/pspec.xml @@ -0,0 +1,75 @@ + + + + + opensp + http://openjade.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + A SGML parsing and entity management toolkit + OpenSP is a free, object-oriented toolkit for Standard Generalized Markup Language (SGML) parsing and entity management maintained by the OpenJade project. + mirrors://sourceforge/openjade/OpenSP-1.5.2.tar.gz + + docbook-xml + libgcc + + + opensp-1.5-gcc34.patch + opensp-sigsegv.patch + + + + + opensp + + libgcc + + + /usr/bin + /usr/share/doc/opensp + /usr/share/man + /usr/lib + /usr/share/locale + /usr/share/sgml + + + + + opensp-devel + Development files for opensp + + opensp + + + /usr/include + + + + + + 2014-05-18 + 1.5.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-01 + 1.5.2 + Rebuild + Alihan Öztürk + alihan@pisilinux.org + + + 2010-10-13 + 1.5.2 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/office/docbook/opensp/translations.xml b/office/docbook/opensp/translations.xml new file mode 100644 index 0000000000..f721b7d231 --- /dev/null +++ b/office/docbook/opensp/translations.xml @@ -0,0 +1,13 @@ + + + + opensp + SGML ayrıştırma araç seti + OpenSP SGML sözdizimsel ayrıştırma ve içerik yönetimi için nesne-odaklı bir araç setidir ve OpenJade projesinin bir parçasıdır. + + + + opensp-devel + opensp için geliştirme dosyaları + + From 5f3db543f5cb3ac958fc3400c34d3a17c3100831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sat, 4 Jul 2015 23:56:27 +0300 Subject: [PATCH 102/175] mv ConsoleKit --- system/{base => auth}/ConsoleKit/actions.py | 0 system/{base => auth}/ConsoleKit/files/25-consolekit.rules | 0 system/{base => auth}/ConsoleKit/files/ConsoleKit.conf | 0 system/{base => auth}/ConsoleKit/files/consolekit.pamd | 0 .../{base => auth}/ConsoleKit/files/pam-foreground-compat.ck | 0 .../ConsoleKit/files/upstream_fix_issue_26.patch | 0 system/{base => auth}/ConsoleKit/pspec.xml | 0 system/{base => auth}/ConsoleKit/translations.xml | 0 system/auth/component.xml | 3 +++ 9 files changed, 3 insertions(+) rename system/{base => auth}/ConsoleKit/actions.py (100%) rename system/{base => auth}/ConsoleKit/files/25-consolekit.rules (100%) rename system/{base => auth}/ConsoleKit/files/ConsoleKit.conf (100%) rename system/{base => auth}/ConsoleKit/files/consolekit.pamd (100%) rename system/{base => auth}/ConsoleKit/files/pam-foreground-compat.ck (100%) rename system/{base => auth}/ConsoleKit/files/upstream_fix_issue_26.patch (100%) rename system/{base => auth}/ConsoleKit/pspec.xml (100%) rename system/{base => auth}/ConsoleKit/translations.xml (100%) create mode 100644 system/auth/component.xml diff --git a/system/base/ConsoleKit/actions.py b/system/auth/ConsoleKit/actions.py similarity index 100% rename from system/base/ConsoleKit/actions.py rename to system/auth/ConsoleKit/actions.py diff --git a/system/base/ConsoleKit/files/25-consolekit.rules b/system/auth/ConsoleKit/files/25-consolekit.rules similarity index 100% rename from system/base/ConsoleKit/files/25-consolekit.rules rename to system/auth/ConsoleKit/files/25-consolekit.rules diff --git a/system/base/ConsoleKit/files/ConsoleKit.conf b/system/auth/ConsoleKit/files/ConsoleKit.conf similarity index 100% rename from system/base/ConsoleKit/files/ConsoleKit.conf rename to system/auth/ConsoleKit/files/ConsoleKit.conf diff --git a/system/base/ConsoleKit/files/consolekit.pamd b/system/auth/ConsoleKit/files/consolekit.pamd similarity index 100% rename from system/base/ConsoleKit/files/consolekit.pamd rename to system/auth/ConsoleKit/files/consolekit.pamd diff --git a/system/base/ConsoleKit/files/pam-foreground-compat.ck b/system/auth/ConsoleKit/files/pam-foreground-compat.ck similarity index 100% rename from system/base/ConsoleKit/files/pam-foreground-compat.ck rename to system/auth/ConsoleKit/files/pam-foreground-compat.ck diff --git a/system/base/ConsoleKit/files/upstream_fix_issue_26.patch b/system/auth/ConsoleKit/files/upstream_fix_issue_26.patch similarity index 100% rename from system/base/ConsoleKit/files/upstream_fix_issue_26.patch rename to system/auth/ConsoleKit/files/upstream_fix_issue_26.patch diff --git a/system/base/ConsoleKit/pspec.xml b/system/auth/ConsoleKit/pspec.xml similarity index 100% rename from system/base/ConsoleKit/pspec.xml rename to system/auth/ConsoleKit/pspec.xml diff --git a/system/base/ConsoleKit/translations.xml b/system/auth/ConsoleKit/translations.xml similarity index 100% rename from system/base/ConsoleKit/translations.xml rename to system/auth/ConsoleKit/translations.xml diff --git a/system/auth/component.xml b/system/auth/component.xml new file mode 100644 index 0000000000..a9c76728c6 --- /dev/null +++ b/system/auth/component.xml @@ -0,0 +1,3 @@ + + system.auth + From 67a433e2051601a305e3fe5a4cca191d5d0ce572 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 00:32:10 +0300 Subject: [PATCH 103/175] nspr and util-linux core repoda --- system/base/nspr/actions.py | 37 --- system/base/nspr/files/generate-pc-config.sh | 36 --- system/base/nspr/files/nspr.pc.in | 10 - system/base/nspr/pspec.xml | 122 ---------- system/base/nspr/translations.xml | 15 -- system/base/util-linux/actions.py | 91 ------- ...nt-FS-id-and-parent-ID-could-be-zero.patch | 98 -------- ...verify-initramfs-by-f_type-not-devno.patch | 59 ----- .../util-linux/files/move_is_mountinfo.patch | 46 ---- system/base/util-linux/files/ntfs-3g.patch | 12 - .../util-linux-ng-2.21-login-lastlog.patch | 11 - system/base/util-linux/pspec.xml | 226 ------------------ system/base/util-linux/translations.xml | 29 --- 13 files changed, 792 deletions(-) delete mode 100644 system/base/nspr/actions.py delete mode 100644 system/base/nspr/files/generate-pc-config.sh delete mode 100644 system/base/nspr/files/nspr.pc.in delete mode 100644 system/base/nspr/pspec.xml delete mode 100644 system/base/nspr/translations.xml delete mode 100644 system/base/util-linux/actions.py delete mode 100644 system/base/util-linux/files/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch delete mode 100644 system/base/util-linux/files/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch delete mode 100644 system/base/util-linux/files/move_is_mountinfo.patch delete mode 100644 system/base/util-linux/files/ntfs-3g.patch delete mode 100644 system/base/util-linux/files/upstream/util-linux-ng-2.21-login-lastlog.patch delete mode 100644 system/base/util-linux/pspec.xml delete mode 100644 system/base/util-linux/translations.xml diff --git a/system/base/nspr/actions.py b/system/base/nspr/actions.py deleted file mode 100644 index e5d6dc7d35..0000000000 --- a/system/base/nspr/actions.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# -# Licensed under the GNU General Public License, version 3. -# See the file http://www.gnu.org/licenses/gpl.txt - -from pisi.actionsapi import autotools -from pisi.actionsapi import get -from pisi.actionsapi import pisitools -from pisi.actionsapi import shelltools - -def setup(): - # -fno-strict-aliasing workarounds some aliasing violations, see: https://bugzilla.redhat.com/show_bug.cgi?id=487844 --> - shelltools.system('nspr/configure \ - --prefix=/usr \ - --disable-debug \ - %s \ - --enable-optimize="%s -fno-strict-aliasing"' % ("--enable-64bit" if get.ARCH() == "x86_64" else "", get.CFLAGS())) - -def build(): - autotools.make() - -def install(): - # Create nss.pc and nss-config dynamically - shelltools.system("./generate-pc-config.sh") - - pisitools.insinto("/usr/lib","dist/lib/*.so",sym=False) - pisitools.insinto("/usr/include/nspr","dist/include/nspr/*.h",sym=False) - pisitools.insinto("/usr/include/nspr/obsolete","dist/include/nspr/obsolete/*.h",sym=False) - pisitools.insinto("/usr/include/nspr/private","dist/include/nspr/private/*.h",sym=False) - - # Fix permissions of headers, they're 0640 by default - shelltools.chmod("%s/usr/include/nspr/*.h" % get.installDIR(), 0644) - shelltools.chmod("%s/usr/include/nspr/*/*.h" % get.installDIR(), 0644) - - pisitools.insinto("/usr/bin","config/nspr-config",sym=False) - pisitools.insinto("/usr/lib/pkgconfig","config/nspr.pc",sym=False) diff --git a/system/base/nspr/files/generate-pc-config.sh b/system/base/nspr/files/generate-pc-config.sh deleted file mode 100644 index fb41397d05..0000000000 --- a/system/base/nspr/files/generate-pc-config.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -# Generate nss.pc from nss.pc.in -# Ozan Caglayan, 2010 -# -# Generate nspr.pc from nspr.pc.in -# Metin Akdere, 2012 - -LIBDIR="/usr/lib/nspr" -PREFIX="/usr" -EXEC_PREFIX="/usr" -INCLUDEDIR="/usr/include/nspr" - -PKGCONFIG="nspr/config/nspr.pc.in" - -NSPR_VERSION=`./config/nspr-config --version` -NSPR_LIBS=`./config/nspr-config --libs` -NSPR_CFLAGS=`./config/nspr-config --cflags` - -echo "NSPR_VERSION: $NSPR_VERSION" -echo "NSPR_LIBS: $NSPR_LIBS" -echo "NSPR_CFLAGS: $NSPR_CFLAGS" - -# Setup pkgconfig file -cat $PKGCONFIG | sed -e "s,%libdir%,$LIBDIR,g" \ - -e "s,%prefix%,$PREFIX,g" \ - -e "s,%exec_prefix%,$EXEC_PREFIX,g" \ - -e "s,%includedir%,$INCLUDEDIR,g" \ - -e "s,%NSPR_VERSION%,$NSPR_VERSION,g" \ - -e "s,%FULL_NSPR_LIBS%,$NSPR_LIBS,g" \ - -e "s,%FULL_NSPR_CFLAGS%,$NSPR_CFLAGS,g" \ - > config/nspr.pc - - -# Clear .in files -rm -rf $PKGCONFIG diff --git a/system/base/nspr/files/nspr.pc.in b/system/base/nspr/files/nspr.pc.in deleted file mode 100644 index 1d8f4a0cad..0000000000 --- a/system/base/nspr/files/nspr.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -prefix=%prefix% -exec_prefix=%exec_prefix% -libdir=%libdir% -includedir=%includedir% - -Name: NSPR -Description: The Netscape Portable Runtime -Version: %NSPR_VERSION% -Libs: %FULL_NSPR_LIBS% -Cflags: %FULL_NSPR_CFLAGS% diff --git a/system/base/nspr/pspec.xml b/system/base/nspr/pspec.xml deleted file mode 100644 index 6c577d5a4a..0000000000 --- a/system/base/nspr/pspec.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - - - nspr - http://www.mozilla.org/projects/nspr/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - Netscape Portable Runtime - 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. - ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v4.10.8/src/nspr-4.10.8.tar.gz - - nspr.pc.in - generate-pc-config.sh - - - - - nspr - - /usr/lib - - - - - nspr-devel - system.devel - Development files for nspr - - nspr - - - /usr/include - /usr/lib/pkgconfig - /usr/bin - - - - - - 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 - - - diff --git a/system/base/nspr/translations.xml b/system/base/nspr/translations.xml deleted file mode 100644 index 1f0c162da6..0000000000 --- a/system/base/nspr/translations.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - nspr - Netscape Taşınabilir Çalışma Zamanı - 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 -- 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) 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. - - - - nspr-devel - nspr için geliştirme dosyaları - - diff --git a/system/base/util-linux/actions.py b/system/base/util-linux/actions.py deleted file mode 100644 index a5384b21e0..0000000000 --- a/system/base/util-linux/actions.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# -# Licensed under the GNU General Public License, version 3. -# See the file http://www.gnu.org/licenses/gpl.txt - -from pisi.actionsapi import get -from pisi.actionsapi import autotools -from pisi.actionsapi import pisitools -from pisi.actionsapi import shelltools - -pisitools.cflags.add("-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64") -pisitools.cflags.sub("-O[\d]", "-Os") - -def setup(): - shelltools.export("SUID_CFLAGS", "-fpie") - shelltools.export("SUID_LDFLAGS", "-pie -Wl,-z,relro -Wl,-z,now") - shelltools.export("AUTOPOINT", "/bin/true") - - options = "\ - --disable-rpath \ - --disable-silent-rules \ - --disable-use-tty-group \ - --disable-su \ - --disable-last \ - --disable-mesg \ - --disable-vipw \ - --disable-wall \ - --disable-login \ - --disable-newgrp \ - --disable-nologin \ - --disable-runuser \ - --disable-sulogin \ - --disable-utmpdump \ - --disable-chfn-chsh \ - --disable-mountpoint \ - --disable-makeinstall-chown \ - --disable-socket-activation \ - " - - if get.buildTYPE() == "emul32": - options += "\ - --prefix=/emul32 \ - --bindir=/emul32/bin \ - --sbindir=/emul32/sbin \ - --libdir=/usr/lib32 \ - --without-ncurses \ - --disable-static \ - --disable-partx \ - --disable-raw \ - --disable-write \ - --disable-mount \ - --disable-fsck \ - --disable-libmount \ - --with-audit=no \ - " - else: - options += "\ - --bindir=/bin \ - --sbindir=/sbin \ - --enable-static \ - --enable-partx \ - --enable-raw \ - --enable-write \ - --enable-tunelp \ - --without-audit \ - --with-udev \ - --without-utempter \ - " - - autotools.autoreconf("-fi") - autotools.configure(options) - pisitools.dosed("libtool", "( -shared )", r" -Wl,--as-needed\1") - - # Extra fedora switches: - # --enable-login-utils will enable some utilities we ship in shadow - # --enable-kill will enable the kill utility we ship in coreutils - -def build(): - autotools.make() - -def install(): - autotools.rawInstall("DESTDIR=%s" % get.installDIR()) - - #pisitools.doman("sys-utils/klogconsole.man") - pisitools.remove("/usr/share/man/man1/kill.1") - - if get.buildTYPE() == "emul32": return - - pisitools.dodoc("ABOUT-NLS", "AUTHORS", "ChangeLog", "COPYING", "README*") - pisitools.insinto("/%s/%s" % (get.docDIR(), get.srcNAME()), "Documentation") diff --git a/system/base/util-linux/files/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch b/system/base/util-linux/files/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch deleted file mode 100644 index 01a8d441bb..0000000000 --- a/system/base/util-linux/files/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 6c373810f5b1d32824371e9dff6ee5a006388f98 Mon Sep 17 00:00:00 2001 -From: Karel Zak -Date: Thu, 20 Feb 2014 16:59:11 +0100 -Subject: [PATCH] libmount: FS id and parent ID could be zero -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It seems that linux 3.14 is able to produce things like: - - 19 0 8:3 / / rw,relatime - ext4 /dev/sda3 rw,data=ordered - ^ - -Reported-by: Mantas Mikulėnas -Signed-off-by: Karel Zak ---- - libmount/src/tab.c | 12 ++++-------- - misc-utils/findmnt.c | 5 +++-- - 2 files changed, 7 insertions(+), 10 deletions(-) - -diff --git a/libmount/src/tab.c b/libmount/src/tab.c -index 4c2f8a4..332312b 100644 ---- a/libmount/src/tab.c -+++ b/libmount/src/tab.c -@@ -505,7 +505,7 @@ int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root) - assert(tb); - assert(root); - -- if (!tb || !root) -+ if (!tb || !root || !is_mountinfo(tb)) - return -EINVAL; - - DBG(TAB, mnt_debug_h(tb, "lookup root fs")); -@@ -515,8 +515,6 @@ int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root) - mnt_reset_iter(&itr, MNT_ITER_FORWARD); - while(mnt_table_next_fs(tb, &itr, &fs) == 0) { - int id = mnt_fs_get_parent_id(fs); -- if (!id) -- break; /* @tab is not a mountinfo file? */ - - if (!*root || id < root_id) { - *root = fs; -@@ -524,7 +522,7 @@ int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root) - } - } - -- return root_id ? 0 : -EINVAL; -+ return *root ? 0 : -EINVAL; - } - - /** -@@ -545,15 +543,13 @@ int mnt_table_next_child_fs(struct libmnt_table *tb, struct libmnt_iter *itr, - struct libmnt_fs *fs; - int parent_id, lastchld_id = 0, chld_id = 0; - -- if (!tb || !itr || !parent) -+ if (!tb || !itr || !parent || !is_mountinfo(tb)) - return -EINVAL; - - DBG(TAB, mnt_debug_h(tb, "lookup next child of '%s'", - mnt_fs_get_target(parent))); - - parent_id = mnt_fs_get_id(parent); -- if (!parent_id) -- return -EINVAL; - - /* get ID of the previously returned child */ - if (itr->head && itr->p != itr->head) { -@@ -584,7 +580,7 @@ int mnt_table_next_child_fs(struct libmnt_table *tb, struct libmnt_iter *itr, - } - } - -- if (!chld_id) -+ if (!*chld) - return 1; /* end of iterator */ - - /* set the iterator to the @chld for the next call */ -diff --git a/misc-utils/findmnt.c b/misc-utils/findmnt.c -index fb21174..988cd73 100644 ---- a/misc-utils/findmnt.c -+++ b/misc-utils/findmnt.c -@@ -822,8 +822,9 @@ static int tab_is_tree(struct libmnt_table *tb) - if (!itr) - return 0; - -- if (mnt_table_next_fs(tb, itr, &fs) == 0) -- rc = mnt_fs_get_id(fs) > 0 && mnt_fs_get_parent_id(fs) > 0; -+ rc = (mnt_table_next_fs(tb, itr, &fs) == 0 && -+ mnt_fs_is_kernel(fs) && -+ mnt_fs_get_root(fs)); - - mnt_free_iter(itr); - return rc; --- -1.9.1 - diff --git a/system/base/util-linux/files/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch b/system/base/util-linux/files/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch deleted file mode 100644 index 56191a30e7..0000000000 --- a/system/base/util-linux/files/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 751c39383adaf5ff5a860516238d524b0e20f835 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Wed, 2 Apr 2014 10:41:30 -0400 -Subject: [PATCH] switch_root: verify initramfs by f_type, not devno - -As of linux 3.14, the initramfs device will have both major and -minor 0, causing our paranoia check to fail. Make this version agnostic -by checking the filesystem type, rather than a device number. - -[adopted from master for backport into 2.24.x branch] - -Signed-off-by: Dave Reisner ---- - sys-utils/switch_root.c | 15 +++++++++------ - 1 file changed, 9 insertions(+), 6 deletions(-) - -diff --git a/sys-utils/switch_root.c b/sys-utils/switch_root.c -index f26f7da..40e222d 100644 ---- a/sys-utils/switch_root.c -+++ b/sys-utils/switch_root.c -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -33,6 +34,8 @@ - #include - #include - -+#include -+ - #include "c.h" - #include "nls.h" - #include "closestream.h" -@@ -174,12 +177,12 @@ static int switchroot(const char *newroot) - if (cfd >= 0) { - pid = fork(); - if (pid <= 0) { -- if (fstat(cfd, &sb) == 0) { -- if (sb.st_dev == makedev(0, 1)) -- recursiveRemove(cfd); -- else -- warn(_("old root filesystem is not an initramfs")); -- } -+ struct statfs stfs; -+ if (fstatfs(cfd, &stfs) == 0 && -+ (stfs.f_type == RAMFS_MAGIC || stfs.f_type == TMPFS_MAGIC)) -+ recursiveRemove(cfd); -+ else -+ warn(_("old root filesystem is not an initramfs")); - - if (pid == 0) - exit(EXIT_SUCCESS); --- -1.9.1 - diff --git a/system/base/util-linux/files/move_is_mountinfo.patch b/system/base/util-linux/files/move_is_mountinfo.patch deleted file mode 100644 index ad9387efc3..0000000000 --- a/system/base/util-linux/files/move_is_mountinfo.patch +++ /dev/null @@ -1,46 +0,0 @@ -diff --git a/libmount/src/tab.c b/libmount/src/tab.c -index 3633b6a..8ae49c8 100644 ---- a/libmount/src/tab.c -+++ b/libmount/src/tab.c -@@ -47,6 +47,20 @@ - #include "strutils.h" - #include "loopdev.h" - -+static int is_mountinfo(struct libmnt_table *tb) -+{ -+ struct libmnt_fs *fs; -+ -+ if (!tb) -+ return 0; -+ -+ fs = list_first_entry(&tb->ents, struct libmnt_fs, ents); -+ if (fs && mnt_fs_is_kernel(fs) && mnt_fs_get_root(fs)) -+ return 1; -+ -+ return 0; -+} -+ - /** - * mnt_new_table: - * -@@ -1229,20 +1335,6 @@ err: - return NULL; - } - --static int is_mountinfo(struct libmnt_table *tb) --{ -- struct libmnt_fs *fs; -- -- if (!tb) -- return 0; -- -- fs = list_first_entry(&tb->ents, struct libmnt_fs, ents); -- if (fs && mnt_fs_is_kernel(fs) && mnt_fs_get_root(fs)) -- return 1; -- -- return 0; --} -- - /** - * mnt_table_is_fs__mounted: - * @tb: /proc/self/mountinfo file diff --git a/system/base/util-linux/files/ntfs-3g.patch b/system/base/util-linux/files/ntfs-3g.patch deleted file mode 100644 index 818f0cbe09..0000000000 --- a/system/base/util-linux/files/ntfs-3g.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nuar util-linux-2.21.2.orig/libblkid/src/superblocks/ntfs.c util-linux-2.21.2/libblkid/src/superblocks/ntfs.c ---- util-linux-2.21.2.orig/libblkid/src/superblocks/ntfs.c 2012-05-24 13:22:56.000000000 +0300 -+++ util-linux-2.21.2/libblkid/src/superblocks/ntfs.c 2012-06-05 14:21:57.967967774 +0300 -@@ -160,7 +160,7 @@ - - const struct blkid_idinfo ntfs_idinfo = - { -- .name = "ntfs", -+ .name = "ntfs-3g", - .usage = BLKID_USAGE_FILESYSTEM, - .probefunc = probe_ntfs, - .magics = diff --git a/system/base/util-linux/files/upstream/util-linux-ng-2.21-login-lastlog.patch b/system/base/util-linux/files/upstream/util-linux-ng-2.21-login-lastlog.patch deleted file mode 100644 index 947a0e55c2..0000000000 --- a/system/base/util-linux/files/upstream/util-linux-ng-2.21-login-lastlog.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up util-linux-2.21-rc1/login-utils/login.c.kzak util-linux-2.21-rc1/login-utils/login.c ---- util-linux-2.21-rc1/login-utils/login.c.kzak 2012-01-19 13:19:54.886299587 +0100 -+++ util-linux-2.21-rc1/login-utils/login.c 2012-01-19 13:20:40.853451212 +0100 -@@ -499,7 +499,7 @@ static void log_lastlog(struct login_con - if (!cxt->pwd) - return; - -- fd = open(_PATH_LASTLOG, O_RDWR, 0); -+ fd = open(_PATH_LASTLOG, O_RDWR | O_CREAT, 0); - if (fd < 0) - return; diff --git a/system/base/util-linux/pspec.xml b/system/base/util-linux/pspec.xml deleted file mode 100644 index 66f0b8a225..0000000000 --- a/system/base/util-linux/pspec.xml +++ /dev/null @@ -1,226 +0,0 @@ - - - - - util-linux - http://userweb.kernel.org/~kzak/util-linux-ng/ - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - app:console - library - Various useful Linux utilities - The util-linux package contains a large variety of low-level system utilities that are necessary for a Linux system to function. - https://www.kernel.org/pub/linux/utils/util-linux/v2.26/util-linux-2.26.1.tar.xz - - zlib-devel - shadow - ncurses-devel - libcap-ng-devel - - - - - - upstream/util-linux-ng-2.21-login-lastlog.patch - - - - - util-linux - - libuuid - libblkid - zlib - perl - ncurses - libudev - - 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 - /usr/include - /usr/lib - /lib - - - - - uuidd - service - app:console - util.misc - Helper daemon to guarantee uniqueness of time-based UUIDs - - libuuid - - - - /usr/bin/uuidgen - /usr/sbin/uuidd - /usr/share/man/man1/uuidgen.1 - /usr/share/man/man8/uuidd.8 - - - - - libuuid - library - A library for UUID processing - - /usr/share/man/man3/uuid* - /lib/libuuid.* - /usr/lib/libuuid.so - - - - - libuuid-devel - header - system.devel - libuuid header files - - libuuid - - - /usr/include/uuid/* - /usr/lib/pkgconfig/ - /usr/lib32/pkgconfig/uuid.pc - - - - - libblkid - library - A library for block device identifying - - libuuid - - - /usr/share/man/man3/libblkid* - /usr/share/man/man8/blkid* - /lib/libblkid.* - /usr/lib/libblkid.so - - - - - libblkid-devel - header - system.devel - libblkid header files - - libblkid - - - /usr/include/blkid/* - /usr/lib/pkgconfig/blkid.pc - /usr/lib32/pkgconfig/blkid.pc - - - - - libuuid-32bit - emul32 - 32-bit shared libraries for libuuid - emul32 - - glibc-32bit - - - /usr/lib32/libuuid.* - - - - - libblkid-32bit - emul32 - 32-bit shared libraries for libblkid - emul32 - - libblkid - libuuid-32bit - libuuid - glibc-32bit - - - /usr/lib32/libblkid.* - - - - - - 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 - - - diff --git a/system/base/util-linux/translations.xml b/system/base/util-linux/translations.xml deleted file mode 100644 index 5f4eb08dc4..0000000000 --- a/system/base/util-linux/translations.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - util-linux - Çeşitli kullanışlı Linux araçları - Divers utilitaires Linux utiles. - util-linux paketi, bir Linux sisteminin işlevsel olması için gerekli olan birçok düşük seviye sistem uygulamasını içerir. - - - - libuuid - UUID üretimi için bir kitaplık - - - - libblkid - Disk tanımlama için bir kitaplık - - - - uuidd - Zaman tabanlı UUID'lerin benzersizliğini garantileyen sistem hizmeti - - - - libuuid-32bit - libuuid için 32-bit paylaşımlı kitaplıklar - - From ca642717bdbdd283c84ae91c955b5e053b652830 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 01:57:15 +0300 Subject: [PATCH 104/175] xdg-utils:moved into main repo for pisi 2.0 --- desktop/misc/xdg-utils/actions.py | 19 ++++++ .../xdg-utils/files/drop-xmlto-stuff.patch | 13 ++++ .../xdg-utils/files/enable-other-xdg.patch | 20 ++++++ desktop/misc/xdg-utils/files/gksu.patch | 42 ++++++++++++ .../misc/xdg-utils/files/xfce-detection.patch | 11 +++ desktop/misc/xdg-utils/pspec.xml | 68 +++++++++++++++++++ desktop/misc/xdg-utils/translations.xml | 8 +++ 7 files changed, 181 insertions(+) create mode 100644 desktop/misc/xdg-utils/actions.py create mode 100644 desktop/misc/xdg-utils/files/drop-xmlto-stuff.patch create mode 100644 desktop/misc/xdg-utils/files/enable-other-xdg.patch create mode 100644 desktop/misc/xdg-utils/files/gksu.patch create mode 100644 desktop/misc/xdg-utils/files/xfce-detection.patch create mode 100644 desktop/misc/xdg-utils/pspec.xml create mode 100644 desktop/misc/xdg-utils/translations.xml diff --git a/desktop/misc/xdg-utils/actions.py b/desktop/misc/xdg-utils/actions.py new file mode 100644 index 0000000000..49cd44e248 --- /dev/null +++ b/desktop/misc/xdg-utils/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vif") + autotools.configure() + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) diff --git a/desktop/misc/xdg-utils/files/drop-xmlto-stuff.patch b/desktop/misc/xdg-utils/files/drop-xmlto-stuff.patch new file mode 100644 index 0000000000..9aa060c7e4 --- /dev/null +++ b/desktop/misc/xdg-utils/files/drop-xmlto-stuff.patch @@ -0,0 +1,13 @@ +Index: xdg-utils-1.0.2.20100618/scripts/Makefile.in +=================================================================== +--- xdg-utils-1.0.2.20100618.orig/scripts/Makefile.in ++++ xdg-utils-1.0.2.20100618/scripts/Makefile.in +@@ -5,7 +5,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(IN + INSTALL_LIBRARY = @INSTALL_PROGRAM@ $(INSTALL_PROGRAM_FLAGS) + INSTALL_SCRIPT = @INSTALL_SCRIPT@ $(INSTALL_SCRIPT_FLAGS) + INSTALL_DATA = @INSTALL_DATA@ $(INSTALL_DATA_FLAGS) +-XMLTO = @XMLTO@ ++XMLTO = @XMLTO@ --skip-validation + + prefix = @prefix@ + exec_prefix = @exec_prefix@ diff --git a/desktop/misc/xdg-utils/files/enable-other-xdg.patch b/desktop/misc/xdg-utils/files/enable-other-xdg.patch new file mode 100644 index 0000000000..a020b2c923 --- /dev/null +++ b/desktop/misc/xdg-utils/files/enable-other-xdg.patch @@ -0,0 +1,20 @@ +diff -Nur xdg-utils-1.0.2.20100618-old//scripts/Makefile.in xdg-utils-1.0.2.20100618//scripts/Makefile.in +--- xdg-utils-1.0.2.20100618-old//scripts/Makefile.in 2010-10-27 10:39:56.381000014 +0300 ++++ xdg-utils-1.0.2.20100618//scripts/Makefile.in 2010-10-27 10:41:44.799000093 +0300 +@@ -20,11 +20,11 @@ + xdg-open \ + xdg-email \ + xdg-screensaver \ +- xdg-settings +-# xdg-su +-# xdg-copy \ +-# xdg-file-dialog +-# xdg-terminal ++ xdg-settings \ ++ xdg-su \ ++ xdg-copy \ ++ xdg-file-dialog \ ++ xdg-terminal + + MANPAGES= $(SCRIPTS:%=man/%.1) + WEBPAGES= $(SCRIPTS:%=%.html) diff --git a/desktop/misc/xdg-utils/files/gksu.patch b/desktop/misc/xdg-utils/files/gksu.patch new file mode 100644 index 0000000000..2f55acb754 --- /dev/null +++ b/desktop/misc/xdg-utils/files/gksu.patch @@ -0,0 +1,42 @@ +Index: xdg-utils-1.0.2/scripts/xdg-su +=================================================================== +--- xdg-utils-1.0.2.orig/scripts/xdg-su ++++ xdg-utils-1.0.2/scripts/xdg-su +@@ -351,6 +351,26 @@ su_gnome() + exit_failure_operation_failed + fi + else ++ su_gk ++ fi ++} ++ ++su_gk() ++{ ++ GKSU=`which gksu 2>/dev/null` ++ if [ $? -eq 0 ] ; then ++ if [ -z "$user" ] ; then ++ $GKSU "$cmd" ++ else ++ $GKSU -u "$user" "$cmd" ++ fi ++ ++ if [ $? -eq 0 ]; then ++ exit_success ++ else ++ exit_failure_operation_failed ++ fi ++ else + su_generic + fi + } +@@ -427,6 +447,10 @@ case "$DE" in + su_gnome + ;; + ++ xfce) ++ su_gk ++ ;; ++ + generic) + su_generic + ;; diff --git a/desktop/misc/xdg-utils/files/xfce-detection.patch b/desktop/misc/xdg-utils/files/xfce-detection.patch new file mode 100644 index 0000000000..06445bf86c --- /dev/null +++ b/desktop/misc/xdg-utils/files/xfce-detection.patch @@ -0,0 +1,11 @@ +--- scripts/xdg-utils-common.in.OSmanOS 2012-10-08 18:26:46.000000000 +0300 ++++ scripts/xdg-utils-common.in 2013-04-05 18:22:55.816631216 +0300 +@@ -280,7 +280,7 @@ + elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; + elif [ x"$MATE_DESKTOP_SESSION_ID" != x"" ]; then DE=mate; + elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; +- elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; ++ elif xprop -root | grep -qw XFCE_DESKTOP_WINDOW 2>&1; then DE=xfce; + elif xprop -root 2> /dev/null | grep -i '^xfce_desktop_window' >/dev/null 2>&1; then DE=xfce + fi + fi diff --git a/desktop/misc/xdg-utils/pspec.xml b/desktop/misc/xdg-utils/pspec.xml new file mode 100644 index 0000000000..a2d2b94b74 --- /dev/null +++ b/desktop/misc/xdg-utils/pspec.xml @@ -0,0 +1,68 @@ + + + + + xdg-utils + http://portland.freedesktop.org/wiki/ + + PisiLinux Community + admins@pisilinux.org + + MIT + app:console + Common desktop utilities + Xdg-utils is a set of command line tools that assist applications with a variety of desktop integration tasks. About half of the tools focus on tasks commonly required during the installation of a desktop application and the other half focuses on integration with the desktop environment while the application is running. + http://source.pisilinux.org/1.0/xdg-utils.tar.xz + + xmlto + docbook-xsl + lynx + + + + enable-other-xdg.patch + xfce-detection.patch + + drop-xmlto-stuff.patch + + + + + xdg-utils + + /usr/bin + /usr/share/man + + + + + + 2014-02-16 + 1.1.0_20140207 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-23 + 20131006 + Release bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-26 + 1.1.0_rc1 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-04-05 + 1.1.0_rc1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + \ No newline at end of file diff --git a/desktop/misc/xdg-utils/translations.xml b/desktop/misc/xdg-utils/translations.xml new file mode 100644 index 0000000000..21bf42fa08 --- /dev/null +++ b/desktop/misc/xdg-utils/translations.xml @@ -0,0 +1,8 @@ + + + + xdg-utils + Ortak masaüstü komutları + Utilitaires de bureaux communs. + + From 8aca2fdf52d40d84f851c72d898757be857c9c88 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 01:58:13 +0300 Subject: [PATCH 105/175] atk:moved into main repo for pisi 2.0 --- desktop/toolkit/gtk/atk/actions.py | 26 +++++ desktop/toolkit/gtk/atk/pspec.xml | 121 +++++++++++++++++++++++ desktop/toolkit/gtk/atk/translations.xml | 19 ++++ 3 files changed, 166 insertions(+) create mode 100644 desktop/toolkit/gtk/atk/actions.py create mode 100644 desktop/toolkit/gtk/atk/pspec.xml create mode 100644 desktop/toolkit/gtk/atk/translations.xml diff --git a/desktop/toolkit/gtk/atk/actions.py b/desktop/toolkit/gtk/atk/actions.py new file mode 100644 index 0000000000..ec9ba2d284 --- /dev/null +++ b/desktop/toolkit/gtk/atk/actions.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + pisitools.dosed(".", "^(SUBDIRS =.*)tests(.*)$", "\\1\\2", filePattern="^Makefile.(am|in)", level=0) + autotools.autoreconf("-fiv") + autotools.configure("\ + --disable-static \ + --enable-introspection=%s \ + " % ("no" if get.buildTYPE() == "emul32" else "yes")) + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.removeDir("/usr/share/gtk-doc") + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README") diff --git a/desktop/toolkit/gtk/atk/pspec.xml b/desktop/toolkit/gtk/atk/pspec.xml new file mode 100644 index 0000000000..b2ea252763 --- /dev/null +++ b/desktop/toolkit/gtk/atk/pspec.xml @@ -0,0 +1,121 @@ + + + + + atk + http://developer.gnome.org/atk + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + GTK+ and GNOME Accessibility Toolkit + These libraries provide tools for making software for people with disabilities. + mirrors://gnome/atk/2.16/atk-2.16.0.tar.xz + + gobject-introspection-devel + gnome-common + + + + + atk + + /usr/lib/libatk* + /usr/lib/girepository-1.0 + /usr/share/gir-1.0 + /usr/share/locale + /usr/share/doc + + + + + atk-devel + Development files for atk + + atk + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + atk-32bit + emul32 + 32-bit shared libraries for atk + emul32 + + glib2-32bit + + + atk + glib2-32bit + + + /usr/lib32 + + + + + + 2015-04-17 + 2.16.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-17 + 2.12.0 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-30 + 2.12.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-10 + 2.10.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-21 + 2.8.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-07 + 2.8.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-24 + 2.7.91 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-10-22 + 2.7.2 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/gtk/atk/translations.xml b/desktop/toolkit/gtk/atk/translations.xml new file mode 100644 index 0000000000..1c5014a9a5 --- /dev/null +++ b/desktop/toolkit/gtk/atk/translations.xml @@ -0,0 +1,19 @@ + + + + atk + GTK+ ve GNOME erişilebilirlik kitaplığı + Bu kitaplıklar engelli insanlar için yapılan programlarda kullanılabilecek araçları içerir. + Ces librairies fournissent des outils pour faire des logiciels pour personnes handicapées. + + + + atk-devel + atk için geliştirme dosyaları + + + + atk-32bit + atk için 32-bit paylaşımlı kitaplıklar + + From a84b0532871101b96980b67946143017d049cd68 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 01:58:47 +0300 Subject: [PATCH 106/175] gdk-pixbuf:moved into main repo for pisi 2.0 --- desktop/toolkit/gtk/gdk-pixbuf/actions.py | 43 +++++ .../gtk/gdk-pixbuf/comar/pakhandler-32.py | 23 +++ .../gtk/gdk-pixbuf/comar/pakhandler.py | 23 +++ desktop/toolkit/gtk/gdk-pixbuf/pspec.xml | 177 ++++++++++++++++++ .../toolkit/gtk/gdk-pixbuf/translations.xml | 23 +++ 5 files changed, 289 insertions(+) create mode 100644 desktop/toolkit/gtk/gdk-pixbuf/actions.py create mode 100644 desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py create mode 100644 desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py create mode 100644 desktop/toolkit/gtk/gdk-pixbuf/pspec.xml create mode 100644 desktop/toolkit/gtk/gdk-pixbuf/translations.xml diff --git a/desktop/toolkit/gtk/gdk-pixbuf/actions.py b/desktop/toolkit/gtk/gdk-pixbuf/actions.py new file mode 100644 index 0000000000..bc00299dba --- /dev/null +++ b/desktop/toolkit/gtk/gdk-pixbuf/actions.py @@ -0,0 +1,43 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + options = "\ + --disable-static \ + --disable-silent-rules \ + --with-libjasper \ + --with-x11 \ + --with-included-loaders=png \ + " + + options += "\ + --bindir=/_emul32/bin \ + --disable-introspection \ + " if get.buildTYPE() == "emul32" else \ + "\ + --enable-introspection \ + " + autotools.configure(options) + + pisitools.dosed("libtool", "^(hardcode_libdir_flag_spec=).*", '\\1""') + pisitools.dosed("libtool", "^(runpath_var=)LD_RUN_PATH", "\\1DIE_RPATH_DIE") + pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + if get.buildTYPE() == "emul32": + pisitools.domove("/_emul32/bin/gdk-pixbuf-query-loaders", "/usr/bin", "gdk-pixbuf-query-loaders-32") + pisitools.removeDir("/_emul32") + return + pisitools.dosym("/usr/bin/gdk-pixbuf-query-loaders", "/usr/bin/gdk-pixbuf-query-loaders-64") + pisitools.dodoc("AUTHORS", "COPYING", "NEWS", "README") diff --git a/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py b/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py new file mode 100644 index 0000000000..6edaa81706 --- /dev/null +++ b/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import piksemel +import os + +def updateData(filepath): + parse = piksemel.parse(filepath) + + for icon in parse.tags("File"): + path = icon.getTagData("Path") + if path.startswith("usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders"): + os.system("/usr/bin/gdk-pixbuf-query-loaders-32 --update-cache") + return + +def setupPackage(metapath, filepath): + updateData(filepath) + +def cleanupPackage(metapath, filepath): + pass + +def postCleanupPackage(metapath, filepath): + updateData(filepath) diff --git a/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py b/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py new file mode 100644 index 0000000000..0e2637d6b0 --- /dev/null +++ b/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import piksemel +import os + +def updateData(filepath): + parse = piksemel.parse(filepath) + + for icon in parse.tags("File"): + path = icon.getTagData("Path") + if path.startswith("usr/lib/gdk-pixbuf-2.0/2.10.0/loaders"): + os.system("/usr/bin/gdk-pixbuf-query-loaders --update-cache") + return + +def setupPackage(metapath, filepath): + updateData(filepath) + +def cleanupPackage(metapath, filepath): + pass + +def postCleanupPackage(metapath, filepath): + updateData(filepath) diff --git a/desktop/toolkit/gtk/gdk-pixbuf/pspec.xml b/desktop/toolkit/gtk/gdk-pixbuf/pspec.xml new file mode 100644 index 0000000000..3ae3292f1d --- /dev/null +++ b/desktop/toolkit/gtk/gdk-pixbuf/pspec.xml @@ -0,0 +1,177 @@ + + + + + gdk-pixbuf + http://www.gnome.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + GDK pixbuf library + gdk-pixbuf is a library that provides image loading and scaling support for gtk+ applications + mirrors://gnome/gdk-pixbuf/2.31/gdk-pixbuf-2.31.3.tar.xz + + gtk-doc + glib2-devel + libX11-devel + tiff-devel + libjpeg-turbo-devel + libpng-devel + jasper-devel + gobject-introspection-devel + + + + + gdk-pixbuf + + tiff + jasper + libjpeg-turbo + > + + /etc + /usr/bin + /usr/lib + /usr/share/locale + /usr/share/man + /usr/share/doc + /usr/share + + + System.PackageHandler + + + + + gdk-pixbuf-devel + Development files for gdk-pixbuf + + gdk-pixbuf + libpng-devel + + + /usr/bin/gdk-pixbuf-csource + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/gir-1.0 + + + + + gdk-pixbuf-docs + Reference documents for gdk-pixbuf + + /usr/share/gtk-doc + + + + + gdk-pixbuf-32bit + emul32 + 32-bit shared libraries for gdk-pixbuf + emul32 + + tiff-32bit + libjpeg-turbo-32bit + glib2-32bit + libX11-32bit + libpng-32bit + jasper-32bit + libX11-32bit + + + gdk-pixbuf + tiff-32bit + glib2-32bit + libpng-32bit + libX11-32bit + jasper-32bit + libjpeg-turbo-32bit + + + /usr/bin/gdk-pixbuf-query-loaders-32 + /usr/lib32 + + + System.PackageHandler + + + + + + 2015-04-27 + 2.31.3 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-17 + 2.30.7 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-30 + 2.30.7 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-10 + 2.30.0 + Add missing method and fix pakhandler.py + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-05 + 2.28.2 + Add missing method and fix pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-20 + 2.28.2 + Fix build emul32. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-11 + 2.28.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-07 + 2.28.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-24 + 2.27.1 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-11-25 + 2.26.5 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + diff --git a/desktop/toolkit/gtk/gdk-pixbuf/translations.xml b/desktop/toolkit/gtk/gdk-pixbuf/translations.xml new file mode 100644 index 0000000000..b2815ba5ad --- /dev/null +++ b/desktop/toolkit/gtk/gdk-pixbuf/translations.xml @@ -0,0 +1,23 @@ + + + + gdk-pixbuf + GDK pixbuf kitaplığı + gdk-pixbuf, gtk+ uygulamalarına resim açma ve ölçeklendirme desteği sağlayan bir kitaplıktır. + + + + gdk-pixbuf-devel + gdk-pixbuf için geliştirme dosyaları + + + + gdk-pixbuf-docs + gdk-pixbuf için başvuru belgeleri + + + + gdk-pixbuf-32bit + gdk-pixbuf için 32-bit paylaşımlı kitaplıklar + + From cd16450b2a36ff126f9e6fd1500aff12db070cec Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:12:15 +0300 Subject: [PATCH 107/175] aalib:moved into main repo for pisi 2.0 --- multimedia/graphics/aalib/actions.py | 26 ++++++++ multimedia/graphics/aalib/files/m4.patch | 9 +++ multimedia/graphics/aalib/pspec.xml | 74 ++++++++++++++++++++++ multimedia/graphics/aalib/translations.xml | 15 +++++ 4 files changed, 124 insertions(+) create mode 100644 multimedia/graphics/aalib/actions.py create mode 100644 multimedia/graphics/aalib/files/m4.patch create mode 100644 multimedia/graphics/aalib/pspec.xml create mode 100644 multimedia/graphics/aalib/translations.xml diff --git a/multimedia/graphics/aalib/actions.py b/multimedia/graphics/aalib/actions.py new file mode 100644 index 0000000000..06996f8d14 --- /dev/null +++ b/multimedia/graphics/aalib/actions.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + + +def setup(): + autotools.autoreconf("-vfi") + + autotools.configure("--with-slang-driver \ + --with-x11-driver \ + --disable-static") + +def build(): + autotools.make("CC=%s" % get.CC()) + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "AUTHORS", "NEWS", "README*", "COPYING", "ANNOUNCE") + diff --git a/multimedia/graphics/aalib/files/m4.patch b/multimedia/graphics/aalib/files/m4.patch new file mode 100644 index 0000000000..3670f19125 --- /dev/null +++ b/multimedia/graphics/aalib/files/m4.patch @@ -0,0 +1,9 @@ +Get rid of aclocal warning: +/usr/share/aclocal/aalib.m4:12: warning: underquoted definition of AM_PATH_AALIB +--- aalib-1.4.0/aalib.m4 ++++ aalib-1.4.0/aalib.m4 +@@ -11,3 +11,3 @@ + dnl +-AC_DEFUN(AM_PATH_AALIB, ++AC_DEFUN([AM_PATH_AALIB], + [dnl diff --git a/multimedia/graphics/aalib/pspec.xml b/multimedia/graphics/aalib/pspec.xml new file mode 100644 index 0000000000..afa8e0b324 --- /dev/null +++ b/multimedia/graphics/aalib/pspec.xml @@ -0,0 +1,74 @@ + + + + + aalib + http://aa-project.sourceforge.net/aalib/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + An ASCII-graphics Library + Aalib is an ASCII-graphics library generating ASCII character outputs. + mirrors://sourceforge/aa-project/aalib-1.4rc5.tar.gz + + gpm + + + m4.patch + + + + + aalib + + gpm + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/info + /usr/share/man + + + + + aalib-devel + Development files for aalib + + aalib + + + /usr/share/aclocal + /usr/include + /usr/share/man/man3 + + + + + + 2014-05-20 + 1.4_rc5 + Rebuild, cleanup, fix gpm linking. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-16 + 1.4_rc5 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2010-12-20 + 1.4_rc5 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/graphics/aalib/translations.xml b/multimedia/graphics/aalib/translations.xml new file mode 100644 index 0000000000..27fac646de --- /dev/null +++ b/multimedia/graphics/aalib/translations.xml @@ -0,0 +1,15 @@ + + + + aalib + Bir ASCII-grafik Kitaplığı + AAlib, bir ASCII sanatı grafik kütüphanesidir. Görsel bir ekran gibi çalışır, ancak oluşturulan çıktı platform bağımsız olarak ASCII karakterler ile gösterilir. + Aalib est une librairie de graphiques ASCII générant des sorties en caractères ASCII. + Aalib es una librería gráfica ASCII que genera salidas con caracteres ASCII. + + + + aalib-devel + aalib için geliştirme dosyaları + + From 6d8ec22557c9048307edb51afc667385fd4cbe29 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:12:55 +0300 Subject: [PATCH 108/175] babl:moved into main repo for pisi 2.0 --- multimedia/graphics/babl/actions.py | 21 +++++++ multimedia/graphics/babl/pspec.xml | 74 +++++++++++++++++++++++ multimedia/graphics/babl/translations.xml | 13 ++++ 3 files changed, 108 insertions(+) create mode 100644 multimedia/graphics/babl/actions.py create mode 100644 multimedia/graphics/babl/pspec.xml create mode 100644 multimedia/graphics/babl/translations.xml diff --git a/multimedia/graphics/babl/actions.py b/multimedia/graphics/babl/actions.py new file mode 100644 index 0000000000..1453027ac4 --- /dev/null +++ b/multimedia/graphics/babl/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.configure("--enable-mmx \ + --enable-sse \ + --disable-altivec") + +def build(): + autotools.make() + +def install(): + autotools.install() + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README", "TODO") diff --git a/multimedia/graphics/babl/pspec.xml b/multimedia/graphics/babl/pspec.xml new file mode 100644 index 0000000000..d5204d1f4e --- /dev/null +++ b/multimedia/graphics/babl/pspec.xml @@ -0,0 +1,74 @@ + + + + + babl + http://gegl.org/babl + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + LGPLv3 + library + A dynamic, any to any, pixel format translation library + babl is a library that allows converting between different methods of storing pixels known as pixel formats that have with different bitdepths and other data representations, color models and component permutations. + http://download.gimp.org/pub/babl/0.1/babl-0.1.12.tar.bz2 + + + librsvg + + + + + babl + + /usr/lib + /usr/share/doc + + + + + babl-devel + Development files for babl + + babl + + + /usr/include + /usr/lib/pkgconfig + /usr/share/gir-1.0 + + + + + + 2015-02-07 + 0.1.12 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-06-19 + 0.1.10 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-18 + 0.1.10 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-28 + 0.1.10 + First release + Osman Erkan + osman.erkan@pisilinux.org + + + diff --git a/multimedia/graphics/babl/translations.xml b/multimedia/graphics/babl/translations.xml new file mode 100644 index 0000000000..5708fcdbea --- /dev/null +++ b/multimedia/graphics/babl/translations.xml @@ -0,0 +1,13 @@ + + + + babl + Dinamik piksel biçimi dönüştürme kütüphanesi + babl, çeşitli piksel saklama yöntemleri arasında dönüşüme izin veren bir programlama kütüphanesidir. + + + + babl-devel + babl için geliştirme dosyaları + + From f6ebe1e30adfe2e0fc071f956c7a31ddf3664978 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:13:26 +0300 Subject: [PATCH 109/175] gegl:moved into main repo for pisi 2.0 --- multimedia/graphics/gegl/actions.py | 59 +++++++ .../gegl-0.2.0-cve-2012-4433-1e92e523.patch | 68 +++++++++ .../gegl-0.2.0-cve-2012-4433-4757cdf7.patch | 70 +++++++++ .../gegl/files/gegl-0.2.0-ffmpeg-0.11.patch | 11 ++ multimedia/graphics/gegl/pspec.xml | 144 ++++++++++++++++++ multimedia/graphics/gegl/translations.xml | 13 ++ 6 files changed, 365 insertions(+) create mode 100644 multimedia/graphics/gegl/actions.py create mode 100644 multimedia/graphics/gegl/files/gegl-0.2.0-cve-2012-4433-1e92e523.patch create mode 100644 multimedia/graphics/gegl/files/gegl-0.2.0-cve-2012-4433-4757cdf7.patch create mode 100644 multimedia/graphics/gegl/files/gegl-0.2.0-ffmpeg-0.11.patch create mode 100644 multimedia/graphics/gegl/pspec.xml create mode 100644 multimedia/graphics/gegl/translations.xml diff --git a/multimedia/graphics/gegl/actions.py b/multimedia/graphics/gegl/actions.py new file mode 100644 index 0000000000..4a645c3146 --- /dev/null +++ b/multimedia/graphics/gegl/actions.py @@ -0,0 +1,59 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-fi") + autotools.configure("--enable-mmx \ + --enable-sse \ + --includedir=/usr/include \ + --datadir=/usr/share \ + --with-pic \ + --with-gio \ + --with-gtk \ + --with-cairo \ + --with-pango \ + --with-pangocairo \ + --with-gdk-pixbuf \ + --with-lensfun \ + --with-libjpeg \ + --with-libpng \ + --with-librsvg \ + --with-openexr \ + --with-sdl \ + --with-libopenraw \ + --with-jasper \ + --with-graphviz \ + --with-lua \ + --without-libavformat \ + --with-libv4l \ + --with-libspiro \ + --with-exiv2 \ + --with-umfpack \ + --disable-static \ + --disable-gtk-doc \ + --enable-gtk-doc-html=no \ + --disable-docs \ + --disable-workshop") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +# disabled due sandbox violations +#def check(): +# autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "COPYING.LESSER", "NEWS", "README") + diff --git a/multimedia/graphics/gegl/files/gegl-0.2.0-cve-2012-4433-1e92e523.patch b/multimedia/graphics/gegl/files/gegl-0.2.0-cve-2012-4433-1e92e523.patch new file mode 100644 index 0000000000..0babb0f41c --- /dev/null +++ b/multimedia/graphics/gegl/files/gegl-0.2.0-cve-2012-4433-1e92e523.patch @@ -0,0 +1,68 @@ +From 1e92e5235ded0415d555aa86066b8e4041ee5a53 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Tue, 16 Oct 2012 14:58:27 +0000 +Subject: ppm-load: CVE-2012-4433: don't overflow memory allocation + +Carefully selected width/height values could cause the size of a later +allocation to overflow, resulting in a buffer much too small to store +the data which would then written beyond its end. +--- +diff --git a/operations/external/ppm-load.c b/operations/external/ppm-load.c +index efe6d56..3d6bce7 100644 +--- a/operations/external/ppm-load.c ++++ b/operations/external/ppm-load.c +@@ -84,7 +84,6 @@ ppm_load_read_header(FILE *fp, + /* Get Width and Height */ + img->width = strtol (header,&ptr,0); + img->height = atoi (ptr); +- img->numsamples = img->width * img->height * CHANNEL_COUNT; + + fgets (header,MAX_CHARS_IN_ROW,fp); + maxval = strtol (header,&ptr,0); +@@ -109,6 +108,16 @@ ppm_load_read_header(FILE *fp, + g_warning ("%s: Programmer stupidity error", G_STRLOC); + } + ++ /* Later on, img->numsamples is multiplied with img->bpc to allocate ++ * memory. Ensure it doesn't overflow. */ ++ if (!img->width || !img->height || ++ G_MAXSIZE / img->width / img->height / CHANNEL_COUNT < img->bpc) ++ { ++ g_warning ("Illegal width/height: %ld/%ld", img->width, img->height); ++ return FALSE; ++ } ++ img->numsamples = img->width * img->height * CHANNEL_COUNT; ++ + return TRUE; + } + +@@ -229,12 +238,24 @@ process (GeglOperation *operation, + if (!ppm_load_read_header (fp, &img)) + goto out; + +- rect.height = img.height; +- rect.width = img.width; +- + /* Allocating Array Size */ ++ ++ /* Should use g_try_malloc(), but this causes crashes elsewhere because the ++ * error signalled by returning FALSE isn't properly acted upon. Therefore ++ * g_malloc() is used here which aborts if the requested memory size can't be ++ * allocated causing a controlled crash. */ + img.data = (guchar*) g_malloc (img.numsamples * img.bpc); + ++ /* No-op without g_try_malloc(), see above. */ ++ if (! img.data) ++ { ++ g_warning ("Couldn't allocate %" G_GSIZE_FORMAT " bytes, giving up.", ((gsize)img.numsamples * img.bpc)); ++ goto out; ++ } ++ ++ rect.height = img.height; ++ rect.width = img.width; ++ + switch (img.bpc) + { + case 1: +-- +cgit v0.9.0.2 diff --git a/multimedia/graphics/gegl/files/gegl-0.2.0-cve-2012-4433-4757cdf7.patch b/multimedia/graphics/gegl/files/gegl-0.2.0-cve-2012-4433-4757cdf7.patch new file mode 100644 index 0000000000..f78557f577 --- /dev/null +++ b/multimedia/graphics/gegl/files/gegl-0.2.0-cve-2012-4433-4757cdf7.patch @@ -0,0 +1,70 @@ +From 4757cdf73d3675478d645a3ec8250ba02168a230 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Tue, 16 Oct 2012 14:56:40 +0000 +Subject: ppm-load: CVE-2012-4433: add plausibility checks for header fields + +Refuse values that are non-decimal, negative or overflow the target +type. +--- +diff --git a/operations/external/ppm-load.c b/operations/external/ppm-load.c +index 3d6bce7..465096d 100644 +--- a/operations/external/ppm-load.c ++++ b/operations/external/ppm-load.c +@@ -36,6 +36,7 @@ gegl_chant_file_path (path, _("File"), "", _("Path of file to load.")) + #include "gegl-chant.h" + #include + #include ++#include + + typedef enum { + PIXMAP_ASCII = 51, +@@ -44,8 +45,8 @@ typedef enum { + + typedef struct { + map_type type; +- gint width; +- gint height; ++ glong width; ++ glong height; + gsize numsamples; /* width * height * channels */ + gsize bpc; /* bytes per channel */ + guchar *data; +@@ -82,11 +83,33 @@ ppm_load_read_header(FILE *fp, + } + + /* Get Width and Height */ +- img->width = strtol (header,&ptr,0); +- img->height = atoi (ptr); ++ errno = 0; ++ img->width = strtol (header,&ptr,10); ++ if (errno) ++ { ++ g_warning ("Error reading width: %s", strerror(errno)); ++ return FALSE; ++ } ++ else if (img->width < 0) ++ { ++ g_warning ("Error: width is negative"); ++ return FALSE; ++ } ++ ++ img->height = strtol (ptr,&ptr,10); ++ if (errno) ++ { ++ g_warning ("Error reading height: %s", strerror(errno)); ++ return FALSE; ++ } ++ else if (img->width < 0) ++ { ++ g_warning ("Error: height is negative"); ++ return FALSE; ++ } + + fgets (header,MAX_CHARS_IN_ROW,fp); +- maxval = strtol (header,&ptr,0); ++ maxval = strtol (header,&ptr,10); + + if ((maxval != 255) && (maxval != 65535)) + { +-- +cgit v0.9.0.2 diff --git a/multimedia/graphics/gegl/files/gegl-0.2.0-ffmpeg-0.11.patch b/multimedia/graphics/gegl/files/gegl-0.2.0-ffmpeg-0.11.patch new file mode 100644 index 0000000000..d68444d5ff --- /dev/null +++ b/multimedia/graphics/gegl/files/gegl-0.2.0-ffmpeg-0.11.patch @@ -0,0 +1,11 @@ +--- operations/external/ff-load.c.orig 2012-04-01 13:17:57.000000000 +0200 ++++ operations/external/ff-load.c 2012-07-11 12:42:05.174756560 +0200 +@@ -271,7 +271,7 @@ + gint err; + + ff_cleanup (o); +- err = av_open_input_file (&p->ic, o->path, NULL, 0, NULL); ++err = avformat_open_input (&p->ic, o->path, NULL, NULL); + if (err < 0) + { + print_error (o->path, err); diff --git a/multimedia/graphics/gegl/pspec.xml b/multimedia/graphics/gegl/pspec.xml new file mode 100644 index 0000000000..7271a1c16b --- /dev/null +++ b/multimedia/graphics/gegl/pspec.xml @@ -0,0 +1,144 @@ + + + + + gegl + http://gegl.org + + PisiLinux Community + admins@pisilinux.org + + GPLv3+ + LGPLv3+ + library + app:console + A graph based image processing framework + gegl (Generic Graphics Library) provides infrastructure to do demand based cached non destructive image editing on larger than RAM buffers. Through babl it provides support for a wide range of color models and pixel storage formats for input and output. + http://ftp.gimp.org/pub/gegl/0.2/gegl-0.2.0.tar.bz2 + + SuiteSparse-devel + libopenraw-devel + libspiro-devel + librsvg-devel + openexr-devel + ffmpeg-devel + libsdl-devel + libv4l-devel + jasper-devel + cairo-devel + pango-devel + exiv2-devel + babl-devel + libjpeg-turbo-devel + gtk2-devel + lua-devel + asciidoc + graphviz + enscript + ruby + ilmbase-devel + + + gegl-0.2.0-cve-2012-4433-1e92e523.patch + gegl-0.2.0-cve-2012-4433-4757cdf7.patch + gegl-0.2.0-ffmpeg-0.11.patch + + + + + gegl + + openexr-libs + SuiteSparse + gdk-pixbuf + libopenraw + libspiro + graphviz + librsvg + ffmpeg + jasper + libsdl + libv4l + cairo + pango + ruby + babl + libjpeg-turbo + gtk2 + lua + ilmbase + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/locale/ + + + + + gegl-devel + Development files for gegl + + gegl + babl-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/share/gtk-doc/html + + + + + + 2014-12-20 + 0.2.0 + Rebuild for lua + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-06-19 + 0.2.0 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-31 + 0.2.0 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-11-29 + 0.2.0 + rebuild for ffmpeg + Kamil Atlı + suvarice@gmail.com + + + 2013-08-23 + 0.2.0 + Release bump + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-05-20 + 0.2.0 + Configure parameter fixed + Ertan Güven + ertan@pisilinux.org + + + 2012-12-08 + 0.2.0 + First release + marcin bojara + marcin@pisilinux.org + + + diff --git a/multimedia/graphics/gegl/translations.xml b/multimedia/graphics/gegl/translations.xml new file mode 100644 index 0000000000..29e023a772 --- /dev/null +++ b/multimedia/graphics/gegl/translations.xml @@ -0,0 +1,13 @@ + + + + gegl + Graf tabanlı resim işleme altyapısı + gegl, orijinal kopyaya zarar vermeden (non-destructive) isteğe bağlı (demand based) resim işleme altyapısı sunan bir kütüphanedir. + + + + gegl-devel + gegl için geliştirme dosyaları + + From 60ef02b1cf0db99676a03aeaefa0f4bcfee16a89 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:14:34 +0300 Subject: [PATCH 110/175] gimp: moved into main repo for pisi 2.0 --- multimedia/graphics/gimp/addon/component.xml | 3 +++ multimedia/graphics/gimp/component.xml | 3 +++ multimedia/graphics/gimp/l10n/component.xml | 3 +++ 3 files changed, 9 insertions(+) create mode 100644 multimedia/graphics/gimp/addon/component.xml create mode 100644 multimedia/graphics/gimp/component.xml create mode 100644 multimedia/graphics/gimp/l10n/component.xml diff --git a/multimedia/graphics/gimp/addon/component.xml b/multimedia/graphics/gimp/addon/component.xml new file mode 100644 index 0000000000..88d46201c5 --- /dev/null +++ b/multimedia/graphics/gimp/addon/component.xml @@ -0,0 +1,3 @@ + + multimedia.graphics.gimp.addon + diff --git a/multimedia/graphics/gimp/component.xml b/multimedia/graphics/gimp/component.xml new file mode 100644 index 0000000000..ac1ec9f9b8 --- /dev/null +++ b/multimedia/graphics/gimp/component.xml @@ -0,0 +1,3 @@ + + multimedia.graphics.gimp + diff --git a/multimedia/graphics/gimp/l10n/component.xml b/multimedia/graphics/gimp/l10n/component.xml new file mode 100644 index 0000000000..b941842b8e --- /dev/null +++ b/multimedia/graphics/gimp/l10n/component.xml @@ -0,0 +1,3 @@ + + multimedia.graphics.gimp.l10n + From 172318a0d10a16e21fbf1cbe22622a9a65522cf9 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:15:01 +0300 Subject: [PATCH 111/175] lcms:moved into main repo for pisi 2.0 --- multimedia/graphics/lcms/actions.py | 42 +++++++++ .../graphics/lcms/files/CVE-2009-0793.patch | 22 +++++ multimedia/graphics/lcms/pspec.xml | 91 +++++++++++++++++++ multimedia/graphics/lcms/translations.xml | 18 ++++ 4 files changed, 173 insertions(+) create mode 100644 multimedia/graphics/lcms/actions.py create mode 100644 multimedia/graphics/lcms/files/CVE-2009-0793.patch create mode 100644 multimedia/graphics/lcms/pspec.xml create mode 100644 multimedia/graphics/lcms/translations.xml diff --git a/multimedia/graphics/lcms/actions.py b/multimedia/graphics/lcms/actions.py new file mode 100644 index 0000000000..d3d79f9756 --- /dev/null +++ b/multimedia/graphics/lcms/actions.py @@ -0,0 +1,42 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def setup(): + #needed by mozilla patch + autotools.autoreconf("-vfi") + options = "--disable-dependency-tracking \ + --disable-static \ + --with-jpeg \ + --with-tiff \ + --with-zlib \ + --with-python" + + if get.buildTYPE() == "emul32": + options += " --without-python" + + autotools.configure(options) + +def build(): + #needed by mozilla patch, swig must be run again + shelltools.cd("python") + shelltools.system("./swig_lcms") + shelltools.cd("..") + + autotools.make() + +def install(): + autotools.rawInstall('DESTDIR=%s \ + BINDIR=%s/usr/bin \ + includedir=/usr/include' % (get.installDIR(), get.installDIR())) + + pisitools.insinto("/usr/share/lcms/profiles", "testbed/*.icm") + + pisitools.dodoc("AUTHORS", "README*", "NEWS", "doc/*") diff --git a/multimedia/graphics/lcms/files/CVE-2009-0793.patch b/multimedia/graphics/lcms/files/CVE-2009-0793.patch new file mode 100644 index 0000000000..d147b93c86 --- /dev/null +++ b/multimedia/graphics/lcms/files/CVE-2009-0793.patch @@ -0,0 +1,22 @@ +--- src/cmsxform.c~ 2009-03-26 17:53:27.000000000 +0000 ++++ src/cmsxform.c 2009-03-26 18:31:41.000000000 +0000 +@@ -689,6 +689,9 @@ + GrayTRC = cmsReadICCGamma(hProfile, icSigGrayTRCTag); + FromLstarToXYZ(GrayTRC, Shapes1); + ++ if (GrayTRC == NULL) ++ return NULL; ++ + // Reversing must be done after curve translation + + Shapes[0] = cmsReverseGamma(Shapes1[0]->nEntries, Shapes1[0]); +@@ -704,6 +707,9 @@ + + GrayTRC = cmsReadICCGammaReversed(hProfile, icSigGrayTRCTag); // Y + ++ if (GrayTRC == NULL) ++ return NULL; ++ + Shapes[0] = cmsDupGamma(GrayTRC); + Shapes[1] = cmsDupGamma(GrayTRC); + Shapes[2] = cmsDupGamma(GrayTRC); diff --git a/multimedia/graphics/lcms/pspec.xml b/multimedia/graphics/lcms/pspec.xml new file mode 100644 index 0000000000..5c6a481351 --- /dev/null +++ b/multimedia/graphics/lcms/pspec.xml @@ -0,0 +1,91 @@ + + + + + lcms + http://www.littlecms.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + app:console + library + A lightweight, speed optimized color management engine + LittleCMS intends to be a small-footprint, speed optimized color management engine in open source form. + + mirrors://sourceforge/project/lcms/lcms/1.19/lcms-1.19.tar.gz + + tiff-devel + libjpeg-turbo-devel + + + CVE-2009-0793.patch + + + + + lcms + + tiff + libjpeg-turbo + + + /usr/bin + /usr/lib + /usr/share/lcms + /usr/share/doc + /usr/share/man + + + + + lcms-devel + + lcms + + + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/include + + + + + lcms-32bit + emul32 + 32-bit shared libraries for lcms + emul32 + + tiff-32bit + libjpeg-turbo-32bit + + + lcms + tiff-32bit + libjpeg-turbo-32bit + + + /usr/lib32 + + + + + + 2014-05-19 + 1.19 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2011-05-04 + 1.19 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/graphics/lcms/translations.xml b/multimedia/graphics/lcms/translations.xml new file mode 100644 index 0000000000..09f1798698 --- /dev/null +++ b/multimedia/graphics/lcms/translations.xml @@ -0,0 +1,18 @@ + + + + lcms + Hız geliştirmesi yapılmış, hafif bir renk yönetim motoru + Moteur de gestion de couleurs léger et optimisé pour la vitesse. + + + + lcms-devel + lcms için geliştirme dosyaları + + + + lcms-32bit + lcms için 32-bit paylaşımlı kitaplıklar + + From ea0b76966b09f539d3b90cc6976d3820a24a0183 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:15:26 +0300 Subject: [PATCH 112/175] libwmf:moved into main repo for pisi 2.0 --- multimedia/graphics/libwmf/actions.py | 46 +++++++++++++ multimedia/graphics/libwmf/pspec.xml | 72 +++++++++++++++++++++ multimedia/graphics/libwmf/translations.xml | 14 ++++ 3 files changed, 132 insertions(+) create mode 100644 multimedia/graphics/libwmf/actions.py create mode 100644 multimedia/graphics/libwmf/pspec.xml create mode 100644 multimedia/graphics/libwmf/translations.xml diff --git a/multimedia/graphics/libwmf/actions.py b/multimedia/graphics/libwmf/actions.py new file mode 100644 index 0000000000..75d26c2a46 --- /dev/null +++ b/multimedia/graphics/libwmf/actions.py @@ -0,0 +1,46 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools + +def setup(): + shelltools.unlink("configure.ac") + shelltools.sym("patches/acconfig.h", "acconfig.h") + + autotools.autoreconf("-fi") + pisitools.dosed("src/Makefile.in", "@LIBWMF_GDK_PIXBUF_TRUE@", "#") + autotools.configure("--without-expat \ + --with-libxml2 \ + --with-jpeg \ + --with-x \ + --with-gsfontdir=/usr/share/fonts/default/ghostscript \ + --with-fontdir=/usr/share/libwmf/fonts \ + --with-docdir=/usr/share/doc/%s \ + --disable-static" % get.srcNAME() ) +def build(): + autotools.make("LIBTOOL=/usr/bin/libtool") + +def install(): + pisitools.dosed("fonts/fontmap", "libwmf/fonts", "fonts/default/ghostscript") + + autotools.rawInstall("DESTDIR=%s \ + fontdir=/usr/share/libwmf/fonts \ + wmfonedocdir=/usr/share/doc/%s/caolan \ + wmfdocdir=/usr/share/doc/%s" % + ( get.installDIR(), get.srcNAME(), get.srcNAME() ) ) + + if shelltools.isDirectory("%s/usr/lib/gtk-2.0" % get.installDIR()): + # seems "/usr/lib/gtk-2.0" no longer exists, so need check + pisitools.removeDir("/usr/lib/gtk-2.0") + + # These fonts included in gnu-gs-fonts-std package. + pisitools.remove("/usr/share/libwmf/fonts/*afm") + pisitools.remove("/usr/share/libwmf/fonts/*pfb") + + pisitools.dodoc("README", "AUTHORS", "CREDITS", "ChangeLog", "NEWS", "TODO") diff --git a/multimedia/graphics/libwmf/pspec.xml b/multimedia/graphics/libwmf/pspec.xml new file mode 100644 index 0000000000..6e57b30b84 --- /dev/null +++ b/multimedia/graphics/libwmf/pspec.xml @@ -0,0 +1,72 @@ + + + + + libwmf + http://wvware.sourceforge.net/libwmf.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + Library for reading and converting WMF files + A library for reading and converting Windows MetaFile vector graphics (WMF). + mirrors://sourceforge/wvware/libwmf-0.2.8.4.tar.gz + + libjpeg-turbo-devel + harfbuzz-devel + + + + + libwmf + + libjpeg-turbo + harfbuzz + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/libwmf + + + + + libwmf-devel + Development files for libwmf + + libwmf + + + /usr/bin/libwmf-config + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-05-24 + 0.2.8.4 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-02-01 + 0.2.8.4 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2010-10-12 + 0.2.8.4 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/graphics/libwmf/translations.xml b/multimedia/graphics/libwmf/translations.xml new file mode 100644 index 0000000000..720176f23d --- /dev/null +++ b/multimedia/graphics/libwmf/translations.xml @@ -0,0 +1,14 @@ + + + + libwmf + WMF (Windows metafile) okuma ve dönüştürme kitaplığı + Microsoft Word gibi uygulamaların kullandığı WMF (Windows metafile) dosyalarını standart formatlara (PNG, JPEG, PS, EPS, SVG gibi) dönüştürebilmek ve gösterebilmek için gereken kütüphanedir. + Librairie pour convertir les fichiers WMF. + + + + libwmf-devel + libwmf için geliştirme dosyaları + + From de162740eb8ff0f0472f8f2a6d72a2eac1842662 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:15:56 +0300 Subject: [PATCH 113/175] libexif:moved into main repo for pisi 2.0 --- multimedia/misc/libexif/actions.py | 20 ++++++ .../files/libexif-0.6.13-pkgconfig.patch | 11 +++ multimedia/misc/libexif/pspec.xml | 69 +++++++++++++++++++ multimedia/misc/libexif/translations.xml | 13 ++++ 4 files changed, 113 insertions(+) create mode 100644 multimedia/misc/libexif/actions.py create mode 100644 multimedia/misc/libexif/files/libexif-0.6.13-pkgconfig.patch create mode 100644 multimedia/misc/libexif/pspec.xml create mode 100644 multimedia/misc/libexif/translations.xml diff --git a/multimedia/misc/libexif/actions.py b/multimedia/misc/libexif/actions.py new file mode 100644 index 0000000000..0f2bc598b3 --- /dev/null +++ b/multimedia/misc/libexif/actions.py @@ -0,0 +1,20 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.configure("--enable-nls \ + --disable-static") + +def build(): + autotools.make() + +def install(): + autotools.install() + + pisitools.dodoc("ChangeLog", "README") diff --git a/multimedia/misc/libexif/files/libexif-0.6.13-pkgconfig.patch b/multimedia/misc/libexif/files/libexif-0.6.13-pkgconfig.patch new file mode 100644 index 0000000000..391025c2bf --- /dev/null +++ b/multimedia/misc/libexif/files/libexif-0.6.13-pkgconfig.patch @@ -0,0 +1,11 @@ +--- libexif.pc.in ++++ libexif.pc.in +@@ -1,7 +1,7 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ + libdir=@libdir@ +-includedir=@includedir@ ++includedir=@includedir@/libexif + + Name: libexif + Description: Library for easy access to EXIF data diff --git a/multimedia/misc/libexif/pspec.xml b/multimedia/misc/libexif/pspec.xml new file mode 100644 index 0000000000..88232f0069 --- /dev/null +++ b/multimedia/misc/libexif/pspec.xml @@ -0,0 +1,69 @@ + + + + + libexif + http://libexif.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + Library for parsing, editing, and saving EXIF data + Most digital cameras produce EXIF files, which are JPEG files with extra tags that contain information about the image. The EXIF library allows you to parse an EXIF file and read the data from those tags. + mirrors://sourceforge/libexif/libexif-0.6.21.tar.bz2 + + doxygen + + + libexif-0.6.13-pkgconfig.patch + + + + + libexif + + /usr/lib + /usr/share/doc + /usr/share/locale + + + + + libexif-devel + Development files for libexif + + libexif + + + /usr/include + /usr/lib/pkgconfig + /usr/share/doc/libexif/libexif-api.html + + + + + + 2014-05-24 + 0.6.21 + Rebuild + Alihan Öztürk + alihan@pisilinux.org + + + 2014-01-30 + 0.6.21 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-29 + 0.6.21 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/multimedia/misc/libexif/translations.xml b/multimedia/misc/libexif/translations.xml new file mode 100644 index 0000000000..92916b416a --- /dev/null +++ b/multimedia/misc/libexif/translations.xml @@ -0,0 +1,13 @@ + + + + libexif + EXIF verilerini işlemek, değiştirmek ve kaydetmek için bir kütüphane + Librairie pour analyser, éditer et sauvegarder des données EXIF. + + + + libexif-devel + libexif için geliştirme dosyaları + + From 79f28ae19ce7d239d6961f9b1858cd3c71424302 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:16:39 +0300 Subject: [PATCH 114/175] webkit-gtk2: moved into main repo for pisi 2.0 --- network/misc/webkit-gtk2/actions.py | 47 +++ .../files/webkitgtk-2.4.8-gcc5.patch | 33 ++ .../files/webkitgtk-2.4.8-gmutexlocker.patch | 281 ++++++++++++++++++ network/misc/webkit-gtk2/pspec.xml | 174 +++++++++++ 4 files changed, 535 insertions(+) create mode 100644 network/misc/webkit-gtk2/actions.py create mode 100644 network/misc/webkit-gtk2/files/webkitgtk-2.4.8-gcc5.patch create mode 100644 network/misc/webkit-gtk2/files/webkitgtk-2.4.8-gmutexlocker.patch create mode 100644 network/misc/webkit-gtk2/pspec.xml diff --git a/network/misc/webkit-gtk2/actions.py b/network/misc/webkit-gtk2/actions.py new file mode 100644 index 0000000000..8dfed9b57a --- /dev/null +++ b/network/misc/webkit-gtk2/actions.py @@ -0,0 +1,47 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +shelltools.export("XDG_DATA_HOME", get.workDIR()) +pisitools.flags.replace("-ggdb3", "-g") + +paths = ["JavaScriptCore", "WebCore", "WebKit"] +docs = ["AUTHORS", "ChangeLog", "COPYING.LIB", "THANKS", \ + "LICENSE-LGPL-2", "LICENSE-LGPL-2.1", "LICENSE"] + +def setup(): + autotools.configure("\ + --disable-gtk-doc \ + --disable-silent-rules \ + --disable-webkit2 \ + --enable-dependency-tracking \ + --enable-introspection \ + --enable-video \ + --with-gnu-ld \ + --with-gtk=2.0 \ + ") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("-j1 DESTDIR=%s" % get.installDIR()) + + pisitools.domove("/usr/share/gtk-doc/html", "/usr/share/doc/webkit-gtk2") + + pisitools.dodoc("NEWS") + shelltools.cd("Source") + for path in paths: + for doc in docs: + if shelltools.isFile("%s/%s" % (path, doc)): + pisitools.insinto("%s/%s/%s" % (get.docDIR(), get.srcNAME(), path), + "%s/%s" % (path, doc)) diff --git a/network/misc/webkit-gtk2/files/webkitgtk-2.4.8-gcc5.patch b/network/misc/webkit-gtk2/files/webkitgtk-2.4.8-gcc5.patch new file mode 100644 index 0000000000..73f6855e40 --- /dev/null +++ b/network/misc/webkit-gtk2/files/webkitgtk-2.4.8-gcc5.patch @@ -0,0 +1,33 @@ +diff -up webkitgtk-2.4.8/Source/autotools/CheckSystemAndBasicDependencies.m4.gcc5 webkitgtk-2.4.8/Source/autotools/CheckSystemAndBasicDependencies.m4 +--- webkitgtk-2.4.8/Source/autotools/CheckSystemAndBasicDependencies.m4.gcc5 2015-01-07 10:45:43.000000000 +0100 ++++ webkitgtk-2.4.8/Source/autotools/CheckSystemAndBasicDependencies.m4 2015-02-18 13:09:57.359888184 +0100 +@@ -87,12 +87,12 @@ AC_SYS_LARGEFILE + c_compiler="unknown" + AC_LANG_PUSH([C]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +-#if !(defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7) ++#if !(defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))) + #error Not a supported GCC compiler + #endif + ])], [c_compiler="gcc"], []) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +-#if !(defined(__clang__) && __clang_major__ >= 3 && __clang_minor__ >= 3) ++#if !(defined(__clang__) && (__apple_build_version__ >= 4250024 || (!defined(__apple_build_version__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 3))))) + #error Not a supported Clang compiler + #endif + ])], [c_compiler="clang"], []) +@@ -106,12 +106,12 @@ fi + cxx_compiler="unknown" + AC_LANG_PUSH([C++]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +-#if !(defined(__GNUG__) && defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7) ++#if !(defined(__GNUG__) && defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))) + #error Not a supported G++ compiler + #endif + ])], [cxx_compiler="g++"], []) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +-#if !(defined(__clang__) && __clang_major__ >= 3 && __clang_minor__ >= 3) ++#if !(defined(__clang__) && (__apple_build_version__ >= 4250024 || (!defined(__apple_build_version__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 3))))) + #error Not a supported Clang++ compiler + #endif + ])], [cxx_compiler="clang++"], []) diff --git a/network/misc/webkit-gtk2/files/webkitgtk-2.4.8-gmutexlocker.patch b/network/misc/webkit-gtk2/files/webkitgtk-2.4.8-gmutexlocker.patch new file mode 100644 index 0000000000..81455bdd7d --- /dev/null +++ b/network/misc/webkit-gtk2/files/webkitgtk-2.4.8-gmutexlocker.patch @@ -0,0 +1,281 @@ +diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp +--- webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.gmutexlocker 2015-02-18 15:40:21.851816374 +0100 ++++ Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2015-02-18 15:45:58.560092191 +0100 +@@ -316,7 +316,7 @@ void MediaPlayerPrivateGStreamerBase::mu + #if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS) + PassRefPtr MediaPlayerPrivateGStreamerBase::updateTexture(TextureMapper* textureMapper) + { +- GMutexLocker lock(m_bufferMutex); ++ WebCore::GMutexLocker lock(m_bufferMutex); + if (!m_buffer) + return nullptr; + +@@ -366,7 +366,7 @@ void MediaPlayerPrivateGStreamerBase::tr + g_return_if_fail(GST_IS_BUFFER(buffer)); + + { +- GMutexLocker lock(m_bufferMutex); ++ WebCore::GMutexLocker lock(m_bufferMutex); + gst_buffer_replace(&m_buffer, buffer); + } + +@@ -398,7 +398,7 @@ void MediaPlayerPrivateGStreamerBase::pa + if (!m_player->visible()) + return; + +- GMutexLocker lock(m_bufferMutex); ++ WebCore::GMutexLocker lock(m_bufferMutex); + if (!m_buffer) + return; + +diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp +diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp +--- webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp.gmutexlocker 2015-02-18 15:16:11.995228731 +0100 ++++ Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp 2015-02-18 15:45:42.686843477 +0100 +@@ -118,7 +118,7 @@ static gboolean webkitVideoSinkTimeoutCa + WebKitVideoSink* sink = reinterpret_cast(data); + WebKitVideoSinkPrivate* priv = sink->priv; + +- GMutexLocker lock(priv->bufferMutex); ++ WebCore::GMutexLocker lock(priv->bufferMutex); + GstBuffer* buffer = priv->buffer; + priv->buffer = 0; + priv->timeoutId = 0; +@@ -140,7 +140,7 @@ static GstFlowReturn webkitVideoSinkRend + WebKitVideoSink* sink = WEBKIT_VIDEO_SINK(baseSink); + WebKitVideoSinkPrivate* priv = sink->priv; + +- GMutexLocker lock(priv->bufferMutex); ++ WebCore::GMutexLocker lock(priv->bufferMutex); + + if (priv->unlocked) + return GST_FLOW_OK; +@@ -279,7 +279,7 @@ static void webkitVideoSinkGetProperty(G + + static void unlockBufferMutex(WebKitVideoSinkPrivate* priv) + { +- GMutexLocker lock(priv->bufferMutex); ++ WebCore::GMutexLocker lock(priv->bufferMutex); + + if (priv->buffer) { + gst_buffer_unref(priv->buffer); +@@ -305,7 +305,7 @@ static gboolean webkitVideoSinkUnlockSto + WebKitVideoSinkPrivate* priv = WEBKIT_VIDEO_SINK(baseSink)->priv; + + { +- GMutexLocker lock(priv->bufferMutex); ++ WebCore::GMutexLocker lock(priv->bufferMutex); + priv->unlocked = false; + } + +@@ -330,7 +330,7 @@ static gboolean webkitVideoSinkStart(Gst + { + WebKitVideoSinkPrivate* priv = WEBKIT_VIDEO_SINK(baseSink)->priv; + +- GMutexLocker lock(priv->bufferMutex); ++ WebCore::GMutexLocker lock(priv->bufferMutex); + priv->unlocked = false; + return TRUE; + } +diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp +--- webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp.gmutexlocker 2015-02-18 15:16:40.954678407 +0100 ++++ Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp 2015-02-18 15:45:19.567481225 +0100 +@@ -346,7 +346,7 @@ static void webKitWebSrcSetProperty(GObj + + switch (propID) { + case PROP_IRADIO_MODE: { +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + priv->iradioMode = g_value_get_boolean(value); + break; + } +@@ -364,7 +364,7 @@ static void webKitWebSrcGetProperty(GObj + WebKitWebSrc* src = WEBKIT_WEB_SRC(object); + WebKitWebSrcPrivate* priv = src->priv; + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + switch (propID) { + case PROP_IRADIO_MODE: + g_value_set_boolean(value, priv->iradioMode); +@@ -417,7 +417,7 @@ static gboolean webKitWebSrcStop(WebKitW + + ASSERT(isMainThread()); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + + bool seeking = priv->seekID; + +@@ -476,7 +476,7 @@ static gboolean webKitWebSrcStart(WebKit + + ASSERT(isMainThread()); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + + priv->startID = 0; + priv->corsAccessCheck = CORSNoCheck; +@@ -573,7 +573,7 @@ static GstStateChangeReturn webKitWebSrc + return ret; + } + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + switch (transition) { + case GST_STATE_CHANGE_READY_TO_PAUSED: + GST_DEBUG_OBJECT(src, "READY->PAUSED"); +@@ -604,7 +604,7 @@ static gboolean webKitWebSrcQueryWithPar + gst_query_parse_duration(query, &format, NULL); + + GST_DEBUG_OBJECT(src, "duration query in format %s", gst_format_get_name(format)); +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + if (format == GST_FORMAT_BYTES && src->priv->size > 0) { + gst_query_set_duration(query, format, src->priv->size); + result = TRUE; +@@ -612,7 +612,7 @@ static gboolean webKitWebSrcQueryWithPar + break; + } + case GST_QUERY_URI: { +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + gst_query_set_uri(query, src->priv->uri); + result = TRUE; + break; +@@ -653,7 +653,7 @@ static gchar* webKitWebSrcGetUri(GstURIH + WebKitWebSrc* src = WEBKIT_WEB_SRC(handler); + gchar* ret; + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + ret = g_strdup(src->priv->uri); + return ret; + } +@@ -668,7 +668,7 @@ static gboolean webKitWebSrcSetUri(GstUR + return FALSE; + } + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + + g_free(priv->uri); + priv->uri = 0; +@@ -704,7 +704,7 @@ static gboolean webKitWebSrcNeedDataMain + + ASSERT(isMainThread()); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + // already stopped + if (!priv->needDataID) + return FALSE; +@@ -725,7 +725,7 @@ static void webKitWebSrcNeedDataCb(GstAp + + GST_DEBUG_OBJECT(src, "Need more data: %u", length); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + if (priv->needDataID || !priv->paused) { + return; + } +@@ -739,7 +739,7 @@ static gboolean webKitWebSrcEnoughDataMa + + ASSERT(isMainThread()); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + // already stopped + if (!priv->enoughDataID) + return FALSE; +@@ -760,7 +760,7 @@ static void webKitWebSrcEnoughDataCb(Gst + + GST_DEBUG_OBJECT(src, "Have enough data"); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + if (priv->enoughDataID || priv->paused) { + return; + } +@@ -774,7 +774,7 @@ static gboolean webKitWebSrcSeekMainCb(W + + ASSERT(isMainThread()); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + // already stopped + if (!priv->seekID) + return FALSE; +@@ -792,7 +792,7 @@ static gboolean webKitWebSrcSeekDataCb(G + WebKitWebSrcPrivate* priv = src->priv; + + GST_DEBUG_OBJECT(src, "Seeking to offset: %" G_GUINT64_FORMAT, offset); +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + if (offset == priv->offset && priv->requestedOffset == priv->offset) + return TRUE; + +@@ -811,7 +811,7 @@ static gboolean webKitWebSrcSeekDataCb(G + void webKitWebSrcSetMediaPlayer(WebKitWebSrc* src, WebCore::MediaPlayer* player) + { + ASSERT(player); +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + src->priv->player = player; + } + +@@ -841,7 +841,7 @@ char* StreamingClient::createReadBuffer( + + mapGstBuffer(buffer); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + priv->buffer = adoptGRef(buffer); + locker.unlock(); + +@@ -867,7 +867,7 @@ void StreamingClient::handleResponseRece + return; + } + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + + priv->corsAccessCheck = corsAccessCheck; + +@@ -966,7 +966,7 @@ void StreamingClient::handleDataReceived + WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src); + WebKitWebSrcPrivate* priv = src->priv; + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + + GST_LOG_OBJECT(src, "Have %lld bytes of data", priv->buffer ? static_cast(gst_buffer_get_size(priv->buffer.get())) : length); + +@@ -1035,7 +1035,7 @@ void StreamingClient::handleNotifyFinish + + GST_DEBUG_OBJECT(src, "Have EOS"); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + if (!priv->seekID) { + locker.unlock(); + gst_app_src_end_of_stream(priv->appsrc); +@@ -1194,7 +1194,7 @@ void ResourceHandleStreamingClient::wasB + + GST_ERROR_OBJECT(src, "Request was blocked"); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + uri.reset(g_strdup(src->priv->uri)); + locker.unlock(); + +@@ -1208,7 +1208,7 @@ void ResourceHandleStreamingClient::cann + + GST_ERROR_OBJECT(src, "Cannot show URL"); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + uri.reset(g_strdup(src->priv->uri)); + locker.unlock(); + +diff -up webkitgtk-2.4.8/Source/WTF/wtf/gobject/GMutexLocker.h.gmutexlocker webkitgtk-2.4.8/Source/WTF/wtf/gobject/GMutexLocker.h diff --git a/network/misc/webkit-gtk2/pspec.xml b/network/misc/webkit-gtk2/pspec.xml new file mode 100644 index 0000000000..90003d9c83 --- /dev/null +++ b/network/misc/webkit-gtk2/pspec.xml @@ -0,0 +1,174 @@ + + + + + webkit-gtk2 + http://webkitgtk.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2 + LGPLv2.1 + BSD + library + An opensource web browser engine for GTK+ applications + The GTK+ port of WebKit is intended to provide a browser component primarily for users of the portable GTK+ UI toolkit on platforms like Linux. + http://www.webkitgtk.org/releases/webkitgtk-2.4.8.tar.xz + + mesa-devel + gtk-doc + atk-devel + zlib-devel + glib2-devel + gtk2-devel + ruby-devel + webp-devel + cairo-devel + icu4c-devel + libXt-devel + pango-devel + enchant-devel + sqlite-devel + geoclue-devel + libsoup-devel + fontconfig-devel + libxslt-devel + harfbuzz-devel + libsecret-devel + gdk-pixbuf-devel + libXcomposite-devel + libjpeg-turbo-devel + gstreamer-next-devel + gobject-introspection-devel + gst-plugins-base-next-devel + which + icon-theme-hicolor + + + + webkitgtk-2.4.8-gmutexlocker.patch + + + + + webkit-gtk2 + + atk + zlib + glib2 + gtk2 + mesa + webp + cairo + icu4c + libXt + libX11 + libgcc + libpng + libxml2 + pango + sqlite + enchant + libsoup + libxslt + harfbuzz + freetype + libsecret + fontconfig + gdk-pixbuf + libXdamage + libXrender + libXcomposite + libjpeg-turbo + gstreamer-next + gst-plugins-base-next + + + /usr/lib + /usr/share + /usr/share/doc + + + + + webkit-gtk2-devel + library + data:doc + Development files for GTK+ port of WebKit + + libgcc + gtk2-devel + glib2-devel + webkit-gtk2 + libsoup-devel + + + /usr/bin + /usr/include + /usr/lib/pkgconfig + /usr/share/doc/webkit-gtk/Web* + /usr/share/doc/webkit-gtk2/html + /usr/share/doc/webkit-gtk/JavaScriptCore + + + + + + 2015-04-07 + 2.4.8 + Version Bump + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2015-01-16 + 2.4.8 + Version Bump + Rebuild. + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-05-24 + 2.4.1 + Rebuild. + Kamil Atlı + suvarice@gmail.com + + + 2014-04-21 + 2.4.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-14 + 1.10.2 + Rebuild for icu4c + PisiLinux Community + admins@pisilinux.org + + + 2013-07-29 + 1.10.2 + Dep Fixed + PisiLinux Community + admins@pisilinux.org + + + 2013-02-25 + 1.10.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-23 + 1.10.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + From d898d33034843f1afdb0e02c5283b2493789de07 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:17:11 +0300 Subject: [PATCH 115/175] python-gtk:moved into main repo for pisi 2.0 --- .../language/python/python-gtk/actions.py | 32 +++++ .../language/python/python-gtk/pspec.xml | 112 ++++++++++++++++++ .../python/python-gtk/translations.xml | 24 ++++ 3 files changed, 168 insertions(+) create mode 100644 programming/language/python/python-gtk/actions.py create mode 100644 programming/language/python/python-gtk/pspec.xml create mode 100644 programming/language/python/python-gtk/translations.xml diff --git a/programming/language/python/python-gtk/actions.py b/programming/language/python/python-gtk/actions.py new file mode 100644 index 0000000000..1f15a6a321 --- /dev/null +++ b/programming/language/python/python-gtk/actions.py @@ -0,0 +1,32 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +WorkDir = "pygtk-%s" % (get.srcVERSION()) + +def setup(): + shelltools.unlink("py-compile" ) + shelltools.sym("/bin/true", "%s/py-compile" % get.curDIR()) + + autotools.configure("--enable-thread \ + --disable-docs") + + shelltools.touch("%s/style.css" % get.curDIR()) + pisitools.dosed("docs/Makefile", "CSS_FILES = .*", "CSS_FILES = %s/style.css" % get.curDIR()) + + pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "MAPPING", "NEWS", "README", "THREADS", "TODO") diff --git a/programming/language/python/python-gtk/pspec.xml b/programming/language/python/python-gtk/pspec.xml new file mode 100644 index 0000000000..f9defa28e5 --- /dev/null +++ b/programming/language/python/python-gtk/pspec.xml @@ -0,0 +1,112 @@ + + + + + python-gtk + http://www.pygtk.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + GTK+ bindings for Python + python-gtk lets you to easily create programs with a graphical user interface using the Python programming language and GTK+ library. + mirrors://gnome/pygtk/2.24/pygtk-2.24.0.tar.bz2 + + cairo-devel + pango-devel + atk-devel + gtk2-devel + libglade-devel + python-pygobject-devel + python-cairo-devel + python-numpy + + + + + python-gtk + + cairo + pango + atk + gtk2 + libglade + gdk-pixbuf + python-pygobject + python-cairo + python-numpy + + + /usr/lib + /usr/share/doc + + + + + python-gtk-demo + app:gui + Demo applications for python-gtk + + python-gtk + + + /usr/bin/pygtk-demo + /usr/lib/pygtk/2.0/pygtk-demo.py + /usr/lib/pygtk/2.0/demos + + + + + python-gtk-docs + data:doc + Reference documents for python-gtk + + python-gtk + + + /usr/share/gtk-doc + + + + + python-gtk-devel + Development files for python-gtk + + python-gtk + python-pygobject-devel + gtk2-devel + + + /usr/bin/pygtk-codegen-2.0 + /usr/include + /usr/lib/pkgconfig + /usr/share/pygtk + + + + + + 2013-08-17 + 2.24.0 + Dep Fixed + PisiLinux Community + admins@pisilinux.org + + + 2013-07-28 + 2.24.0 + Dep Fixed + PisiLinux Community + admins@pisilinux.org + + + 2012-11-11 + 2.24.0 + First release + Erdinç Gültekin + admins@pisilinux.org + + + \ No newline at end of file diff --git a/programming/language/python/python-gtk/translations.xml b/programming/language/python/python-gtk/translations.xml new file mode 100644 index 0000000000..c77b510540 --- /dev/null +++ b/programming/language/python/python-gtk/translations.xml @@ -0,0 +1,24 @@ + + + + python-gtk + Python için GTK+ bağlayıcıları + python-gtk, Python programlama diliyle GTK+ kitaplığını kullanarak, basit grafiksel kullanıcı arayüzü oluşturmanızı sağlar. + Bindings (liens) GTK+2 pour Python. + + + + python-gtk-demo + python-gtk için demo uygulamalar + + + + python-gtk-docs + python-gtk için referans belgeleri + + + + python-gtk-devel + python-gtk için geliştirme dosyaları + + From ad44997a5da47fd18363d2cc875088d9063b362d Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:17:37 +0300 Subject: [PATCH 116/175] libXmu:moved into main repo for pisi 2.0 --- x11/library/libXmu/actions.py | 20 +++++ x11/library/libXmu/pspec.xml | 127 ++++++++++++++++++++++++++++ x11/library/libXmu/translations.xml | 20 +++++ 3 files changed, 167 insertions(+) create mode 100644 x11/library/libXmu/actions.py create mode 100644 x11/library/libXmu/pspec.xml create mode 100644 x11/library/libXmu/translations.xml diff --git a/x11/library/libXmu/actions.py b/x11/library/libXmu/actions.py new file mode 100644 index 0000000000..2ac322d1b1 --- /dev/null +++ b/x11/library/libXmu/actions.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "COPYING", "README") diff --git a/x11/library/libXmu/pspec.xml b/x11/library/libXmu/pspec.xml new file mode 100644 index 0000000000..6a9e028b89 --- /dev/null +++ b/x11/library/libXmu/pspec.xml @@ -0,0 +1,127 @@ + + + + + libXmu + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + X.Org Xmu library + libXmu provides a set of miscellaneous utility convenience functions for X libraries to use. + mirrors://xorg/individual/lib/libXmu-1.1.2.tar.bz2 + + libXt-devel + libXext-devel + + + + + libXmu + + libXt + libXext + + + /usr/lib + /usr/share/doc + + + + + libXmu-devel + Development files for libXmu + + libXmu + libXt-devel + libXext-devel + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + libXmu-32bit + emul32 + 32-bit shared libraries for libXmu + emul32 + + libXt-32bit + libXext-32bit + + + libXmu + libXt-32bit + libX11-32bit + libXext-32bit + + + /usr/lib32 + + + + + + 2014-05-16 + 1.1.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 1.1.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-07 + 1.1.1 + Revert back to 1.1.1. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-12 + 1.1.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-25 + 1.1.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-27 + 1.1.1 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-07-27 + 1.1.1 + Move .pc files to devel package + Fatih Turgel + hitaf@pisilinux.org + + + 2012-06-01 + 1.1.1 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/x11/library/libXmu/translations.xml b/x11/library/libXmu/translations.xml new file mode 100644 index 0000000000..d83274dfef --- /dev/null +++ b/x11/library/libXmu/translations.xml @@ -0,0 +1,20 @@ + + + + libXmu + X.Org Xmu kitaplığı + Librairie Xmu de X.Org + X.Org Xmu Bibliothek + LibXmu, X kitaplıklarında kullanmak için çeşitli yardımcı fonksiyonlar içerir. + + + + libXmu-devel + libXmu için geliştirme dosyaları + + + + libXmu-32bit + libXmu için 32-bit paylaşımlı kitaplıklar + + From f1058c2e80285e5abc013709254a001dbf61fb01 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 02:18:03 +0300 Subject: [PATCH 117/175] libXpm:moved into main repo for pisi 2.0 --- x11/library/libXpm/actions.py | 20 +++++ x11/library/libXpm/pspec.xml | 114 ++++++++++++++++++++++++++++ x11/library/libXpm/translations.xml | 19 +++++ 3 files changed, 153 insertions(+) create mode 100644 x11/library/libXpm/actions.py create mode 100644 x11/library/libXpm/pspec.xml create mode 100644 x11/library/libXpm/translations.xml diff --git a/x11/library/libXpm/actions.py b/x11/library/libXpm/actions.py new file mode 100644 index 0000000000..d5a16a4458 --- /dev/null +++ b/x11/library/libXpm/actions.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "README") diff --git a/x11/library/libXpm/pspec.xml b/x11/library/libXpm/pspec.xml new file mode 100644 index 0000000000..a7603566c8 --- /dev/null +++ b/x11/library/libXpm/pspec.xml @@ -0,0 +1,114 @@ + + + + + libXpm + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + X.Org Xpm library + LibXpm is the X pixmap library. + mirrors://xorg/individual/lib/libXpm-3.5.11.tar.bz2 + + libXext-devel + libXt-devel + + + + + libXpm + + libXext + libXt + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + + + + + libXpm-devel + Development files for libXpm + + libXpm + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + libXpm-32bit + emul32 + 32-bit shared libraries for libXpm + emul32 + + libXext-32bit + libXt-32bit + libX11-32bit + + + libXpm + libXext-32bit + libXt-32bit + libX11-32bit + + + /usr/lib32 + + + + + + 2014-05-16 + 3.5.11 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 3.5.11 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-09-12 + 3.5.10 + Revert back to 3.5.10. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-12 + 3.5.11 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-25 + 3.5.10 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 3.5.10 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/x11/library/libXpm/translations.xml b/x11/library/libXpm/translations.xml new file mode 100644 index 0000000000..8bea9a6e1d --- /dev/null +++ b/x11/library/libXpm/translations.xml @@ -0,0 +1,19 @@ + + + + libXpm + X.Org Xpm kitaplığı + Librairie Xpm de X.Org + X.Org Xpm Bibliothek + + + + libXpm-devel + libXpm için geliştirme dosyaları + + + + libXpm-32bit + libXpm için 32-bit paylaşımlı kitaplıklar + + From b97da166affaef470090199ab97f9ce6529f7092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 02:22:36 +0300 Subject: [PATCH 118/175] works for fix deps gtk2 --- desktop/toolkit/gtk/atk/actions.py | 26 +++ desktop/toolkit/gtk/atk/pspec.xml | 127 ++++++++++++ desktop/toolkit/gtk/atk/translations.xml | 19 ++ desktop/toolkit/gtk/gdk-pixbuf/actions.py | 41 ++++ .../gtk/gdk-pixbuf/comar/pakhandler-32.py | 23 +++ .../gtk/gdk-pixbuf/comar/pakhandler.py | 23 +++ desktop/toolkit/gtk/gdk-pixbuf/pspec.xml | 189 ++++++++++++++++++ .../toolkit/gtk/gdk-pixbuf/translations.xml | 23 +++ x11/library/libXcomposite/pspec.xml | 9 +- x11/library/libXinerama/actions.py | 20 ++ x11/library/libXinerama/pspec.xml | 115 +++++++++++ x11/library/libXinerama/translations.xml | 19 ++ 12 files changed, 633 insertions(+), 1 deletion(-) create mode 100644 desktop/toolkit/gtk/atk/actions.py create mode 100644 desktop/toolkit/gtk/atk/pspec.xml create mode 100644 desktop/toolkit/gtk/atk/translations.xml create mode 100644 desktop/toolkit/gtk/gdk-pixbuf/actions.py create mode 100644 desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py create mode 100644 desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py create mode 100644 desktop/toolkit/gtk/gdk-pixbuf/pspec.xml create mode 100644 desktop/toolkit/gtk/gdk-pixbuf/translations.xml create mode 100644 x11/library/libXinerama/actions.py create mode 100644 x11/library/libXinerama/pspec.xml create mode 100644 x11/library/libXinerama/translations.xml diff --git a/desktop/toolkit/gtk/atk/actions.py b/desktop/toolkit/gtk/atk/actions.py new file mode 100644 index 0000000000..ec9ba2d284 --- /dev/null +++ b/desktop/toolkit/gtk/atk/actions.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + pisitools.dosed(".", "^(SUBDIRS =.*)tests(.*)$", "\\1\\2", filePattern="^Makefile.(am|in)", level=0) + autotools.autoreconf("-fiv") + autotools.configure("\ + --disable-static \ + --enable-introspection=%s \ + " % ("no" if get.buildTYPE() == "emul32" else "yes")) + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.removeDir("/usr/share/gtk-doc") + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README") diff --git a/desktop/toolkit/gtk/atk/pspec.xml b/desktop/toolkit/gtk/atk/pspec.xml new file mode 100644 index 0000000000..973d771be0 --- /dev/null +++ b/desktop/toolkit/gtk/atk/pspec.xml @@ -0,0 +1,127 @@ + + + + + atk + http://developer.gnome.org/atk + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + GTK+ and GNOME Accessibility Toolkit + These libraries provide tools for making software for people with disabilities. + mirrors://gnome/atk/2.16/atk-2.16.0.tar.xz + + gobject-introspection-devel + glib2-devel + gtk-doc + + + + + atk + + glib2 + + + /usr/lib/libatk* + /usr/lib/girepository-1.0 + /usr/share/gir-1.0 + /usr/share/locale + /usr/share/doc + + + + + atk-devel + Development files for atk + + atk + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + atk-32bit + emul32 + 32-bit shared libraries for atk + emul32 + + glib2-32bit + glibc-32bit + + + atk + glib2-32bit + glibc-32bit + + + /usr/lib32 + + + + + + 2015-04-17 + 2.16.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-17 + 2.12.0 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-30 + 2.12.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-10 + 2.10.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-21 + 2.8.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-07 + 2.8.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-24 + 2.7.91 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-10-22 + 2.7.2 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/gtk/atk/translations.xml b/desktop/toolkit/gtk/atk/translations.xml new file mode 100644 index 0000000000..1c5014a9a5 --- /dev/null +++ b/desktop/toolkit/gtk/atk/translations.xml @@ -0,0 +1,19 @@ + + + + atk + GTK+ ve GNOME erişilebilirlik kitaplığı + Bu kitaplıklar engelli insanlar için yapılan programlarda kullanılabilecek araçları içerir. + Ces librairies fournissent des outils pour faire des logiciels pour personnes handicapées. + + + + atk-devel + atk için geliştirme dosyaları + + + + atk-32bit + atk için 32-bit paylaşımlı kitaplıklar + + diff --git a/desktop/toolkit/gtk/gdk-pixbuf/actions.py b/desktop/toolkit/gtk/gdk-pixbuf/actions.py new file mode 100644 index 0000000000..018d4ee23b --- /dev/null +++ b/desktop/toolkit/gtk/gdk-pixbuf/actions.py @@ -0,0 +1,41 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + options = "\ + --disable-static \ + --disable-silent-rules \ + --with-libjasper \ + --with-x11 \ + --with-included-loaders=png \ + " + + options += "\ + --bindir=/_emul32/bin \ + --disable-introspection \ + " if get.buildTYPE() == "emul32" else \ + "\ + --enable-introspection \ + " + autotools.configure(options) + + pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + if get.buildTYPE() == "emul32": + pisitools.domove("/_emul32/bin/gdk-pixbuf-query-loaders", "/usr/bin", "gdk-pixbuf-query-loaders-32") + pisitools.removeDir("/_emul32") + return + pisitools.dosym("/usr/bin/gdk-pixbuf-query-loaders", "/usr/bin/gdk-pixbuf-query-loaders-64") + pisitools.dodoc("AUTHORS", "COPYING", "NEWS", "README") diff --git a/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py b/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py new file mode 100644 index 0000000000..6edaa81706 --- /dev/null +++ b/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import piksemel +import os + +def updateData(filepath): + parse = piksemel.parse(filepath) + + for icon in parse.tags("File"): + path = icon.getTagData("Path") + if path.startswith("usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders"): + os.system("/usr/bin/gdk-pixbuf-query-loaders-32 --update-cache") + return + +def setupPackage(metapath, filepath): + updateData(filepath) + +def cleanupPackage(metapath, filepath): + pass + +def postCleanupPackage(metapath, filepath): + updateData(filepath) diff --git a/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py b/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py new file mode 100644 index 0000000000..0e2637d6b0 --- /dev/null +++ b/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import piksemel +import os + +def updateData(filepath): + parse = piksemel.parse(filepath) + + for icon in parse.tags("File"): + path = icon.getTagData("Path") + if path.startswith("usr/lib/gdk-pixbuf-2.0/2.10.0/loaders"): + os.system("/usr/bin/gdk-pixbuf-query-loaders --update-cache") + return + +def setupPackage(metapath, filepath): + updateData(filepath) + +def cleanupPackage(metapath, filepath): + pass + +def postCleanupPackage(metapath, filepath): + updateData(filepath) diff --git a/desktop/toolkit/gtk/gdk-pixbuf/pspec.xml b/desktop/toolkit/gtk/gdk-pixbuf/pspec.xml new file mode 100644 index 0000000000..988b9fe6a2 --- /dev/null +++ b/desktop/toolkit/gtk/gdk-pixbuf/pspec.xml @@ -0,0 +1,189 @@ + + + + + gdk-pixbuf + http://www.gnome.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + GDK pixbuf library + gdk-pixbuf is a library that provides image loading and scaling support for gtk+ applications + mirrors://gnome/gdk-pixbuf/2.31/gdk-pixbuf-2.31.4.tar.xz + + gtk-doc + glib2-devel + libX11-devel + tiff-devel + libjpeg-turbo-devel + libpng-devel + jasper-devel + gobject-introspection-devel + + + + + gdk-pixbuf + + glib2 + libpng + libX11 + tiff + jasper + libjpeg-turbo + > + + /etc + /usr/bin + /usr/lib + /usr/share/locale + /usr/share/man + /usr/share/doc + /usr/share + + + System.PackageHandler + + + + + gdk-pixbuf-devel + Development files for gdk-pixbuf + + gdk-pixbuf + glib2 + + + /usr/bin/gdk-pixbuf-csource + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/gir-1.0 + + + + + gdk-pixbuf-docs + Reference documents for gdk-pixbuf + + /usr/share/gtk-doc + + + + + gdk-pixbuf-32bit + emul32 + 32-bit shared libraries for gdk-pixbuf + emul32 + + tiff-32bit + libjpeg-turbo-32bit + glibc-32bit + glib2-32bit + libX11-32bit + libpng-32bit + jasper-32bit + libX11-32bit + + + gdk-pixbuf + glibc-32bit + tiff-32bit + glib2-32bit + libpng-32bit + libX11-32bit + jasper-32bit + libjpeg-turbo-32bit + + + /usr/bin/gdk-pixbuf-query-loaders-32 + /usr/lib32 + + + System.PackageHandler + + + + + + 2015-07-05 + 2.31.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-27 + 2.31.3 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-17 + 2.30.7 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-30 + 2.30.7 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-10 + 2.30.0 + Add missing method and fix pakhandler.py + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-05 + 2.28.2 + Add missing method and fix pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-20 + 2.28.2 + Fix build emul32. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-11 + 2.28.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-07 + 2.28.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-24 + 2.27.1 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-11-25 + 2.26.5 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + diff --git a/desktop/toolkit/gtk/gdk-pixbuf/translations.xml b/desktop/toolkit/gtk/gdk-pixbuf/translations.xml new file mode 100644 index 0000000000..b2815ba5ad --- /dev/null +++ b/desktop/toolkit/gtk/gdk-pixbuf/translations.xml @@ -0,0 +1,23 @@ + + + + gdk-pixbuf + GDK pixbuf kitaplığı + gdk-pixbuf, gtk+ uygulamalarına resim açma ve ölçeklendirme desteği sağlayan bir kitaplıktır. + + + + gdk-pixbuf-devel + gdk-pixbuf için geliştirme dosyaları + + + + gdk-pixbuf-docs + gdk-pixbuf için başvuru belgeleri + + + + gdk-pixbuf-32bit + gdk-pixbuf için 32-bit paylaşımlı kitaplıklar + + diff --git a/x11/library/libXcomposite/pspec.xml b/x11/library/libXcomposite/pspec.xml index ac64c422a5..65714aa544 100644 --- a/x11/library/libXcomposite/pspec.xml +++ b/x11/library/libXcomposite/pspec.xml @@ -14,12 +14,17 @@ libXcomposite is the X Composite library. Compositing allows modification of the window system's base elements like window borders, window buttons and window titlebars. mirrors://xorg/individual/lib/libXcomposite-0.4.4.tar.bz2 - libXfixes-devel + libX11-devel + libXfixes-devel + util-macros libXcomposite + + libX11 + /usr/lib /usr/share/doc @@ -48,10 +53,12 @@ emul32 libX11-32bit + glibc-32bit libXcomposite libX11-32bit + glibc-32bit /usr/lib32 diff --git a/x11/library/libXinerama/actions.py b/x11/library/libXinerama/actions.py new file mode 100644 index 0000000000..c2c1791cce --- /dev/null +++ b/x11/library/libXinerama/actions.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "COPYING", "README") diff --git a/x11/library/libXinerama/pspec.xml b/x11/library/libXinerama/pspec.xml new file mode 100644 index 0000000000..e01f98adac --- /dev/null +++ b/x11/library/libXinerama/pspec.xml @@ -0,0 +1,115 @@ + + + + + libXinerama + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + X.Org Xinerama library + Xorg Xinerama library. Xinerama is an extension to the X Window System which enables applications and window managers to use two (or more) physical displays as one large virtual display. + mirrors://xorg/individual/lib/libXinerama-1.1.3.tar.bz2 + + libXext-devel + libX11-devel + util-macros + + + + + libXinerama + + libXext + libX11 + + + /usr/lib + /usr/share/doc + + + + + libXinerama-devel + Development files for libXinerama + + libXinerama + libXext-devel + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/man + + + + + libXinerama-32bit + emul32 + 32-bit shared libraries for libXinerama + emul32 + + libXext-32bit + libX11-32bit + glibc-32bit + + + libXinerama + libX11-32bit + libXext-32bit + glibc-32bit + + + /usr/lib32 + + + + + + 2014-05-16 + 1.1.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 1.1.3 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 1.1.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-30 + 1.1.3 + Rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-06-21 + 1.1.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-22 + 1.1.2 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/x11/library/libXinerama/translations.xml b/x11/library/libXinerama/translations.xml new file mode 100644 index 0000000000..2dada37817 --- /dev/null +++ b/x11/library/libXinerama/translations.xml @@ -0,0 +1,19 @@ + + + + libXinerama + X.Org Xinerama kitaplığı + librairie Xinerama de X.Org + X.Org Xinerama Bibliothek + + + + libXinerama-devel + libXinerama için geliştirme dosyaları + + + + libXinerama-32bit + libXinerama için 32-bit paylaşımlı kitaplıklar + + From a269e9e0a0fb990705a06c31b461d1c273194864 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 03:05:06 +0300 Subject: [PATCH 119/175] GraphicsMagick:moved into main repo for pisi 2.0 --- multimedia/graphics/GraphicsMagick/actions.py | 60 ++++++++ .../GraphicsMagick-1.3.14-perl_linkage.patch | 12 ++ .../GraphicsMagick-1.3.16-multilib.patch | 43 ++++++ multimedia/graphics/GraphicsMagick/pspec.xml | 139 ++++++++++++++++++ .../graphics/GraphicsMagick/translations.xml | 8 + 5 files changed, 262 insertions(+) create mode 100644 multimedia/graphics/GraphicsMagick/actions.py create mode 100644 multimedia/graphics/GraphicsMagick/files/GraphicsMagick-1.3.14-perl_linkage.patch create mode 100644 multimedia/graphics/GraphicsMagick/files/GraphicsMagick-1.3.16-multilib.patch create mode 100644 multimedia/graphics/GraphicsMagick/pspec.xml create mode 100644 multimedia/graphics/GraphicsMagick/translations.xml diff --git a/multimedia/graphics/GraphicsMagick/actions.py b/multimedia/graphics/GraphicsMagick/actions.py new file mode 100644 index 0000000000..5ff6e2ae68 --- /dev/null +++ b/multimedia/graphics/GraphicsMagick/actions.py @@ -0,0 +1,60 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import perlmodules +from pisi.actionsapi import get + +# .la files needed to load modules +KeepSpecial = ["libtool"] + +def setup(): + # ghostscript is better than dps + # unstable fpx support disabled + # trio is for old systems not providing vsnprintf + autotools.configure("--enable-openmp \ + --enable-shared \ + --disable-static \ + --with-threads \ + --with-modules \ + --with-magick-plus-plus \ + --with-perl \ + --with-bzlib \ + --without-dps \ + --without-fpx \ + --with-gslib \ + --with-jbig \ + --with-jpeg \ + --with-jp2 \ + --with-lcms \ + --with-png \ + --with-tiff \ + --without-trio \ + --with-ttf \ + --with-wmf \ + --with-fontpath=/usr/share/fonts \ + --with-gs-font-dir=/usr/share/fonts/default/ghostscript \ + --with-xml \ + --with-zlib \ + --with-x \ + --with-quantum-depth=16") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + autotools.make("perl-build") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + autotools.rawInstall("DESTDIR=%s -C PerlMagick" % get.installDIR()) + for d in ("demo/", "Changelog", "README.txt"): + pisitools.insinto("/usr/share/doc/PerlMagick", "PerlMagick/%s" % d) + + pisitools.remove("/usr/lib/*.la") + perlmodules.removePacklist() + perlmodules.removePodfiles() diff --git a/multimedia/graphics/GraphicsMagick/files/GraphicsMagick-1.3.14-perl_linkage.patch b/multimedia/graphics/GraphicsMagick/files/GraphicsMagick-1.3.14-perl_linkage.patch new file mode 100644 index 0000000000..db504a0ec3 --- /dev/null +++ b/multimedia/graphics/GraphicsMagick/files/GraphicsMagick-1.3.14-perl_linkage.patch @@ -0,0 +1,12 @@ +diff -up GraphicsMagick-1.3.14/PerlMagick/Makefile.PL.in.perl_linkage GraphicsMagick-1.3.14/PerlMagick/Makefile.PL.in +--- GraphicsMagick-1.3.14/PerlMagick/Makefile.PL.in.perl_linkage 2012-02-25 14:43:38.000000000 -0600 ++++ GraphicsMagick-1.3.14/PerlMagick/Makefile.PL.in 2012-02-26 07:35:38.542731280 -0600 +@@ -78,7 +78,7 @@ WriteMakefile + 'INSTALLBIN' => $magick_BIN_DIR, + + # Library specification +- 'LIBS' => ["-L$magick_LIB_DIR -lGraphicsMagick $magick_LDFLAGS $magick_DEP_LIBS"], ++ 'LIBS' => ["-L$magick_LIB_DIR -L../magick/.libs -lGraphicsMagick $magick_LDFLAGS $magick_DEP_LIBS"], + + # Perl binary name (if a Perl binary is built) + 'MAP_TARGET' => 'PerlMagick', diff --git a/multimedia/graphics/GraphicsMagick/files/GraphicsMagick-1.3.16-multilib.patch b/multimedia/graphics/GraphicsMagick/files/GraphicsMagick-1.3.16-multilib.patch new file mode 100644 index 0000000000..e3c8e90305 --- /dev/null +++ b/multimedia/graphics/GraphicsMagick/files/GraphicsMagick-1.3.16-multilib.patch @@ -0,0 +1,43 @@ +diff -up GraphicsMagick-1.3.16/Magick++/bin/GraphicsMagick++-config.in.multilib GraphicsMagick-1.3.16/Magick++/bin/GraphicsMagick++-config.in +--- GraphicsMagick-1.3.16/Magick++/bin/GraphicsMagick++-config.in.multilib 2011-11-12 14:39:22.000000000 -0600 ++++ GraphicsMagick-1.3.16/Magick++/bin/GraphicsMagick++-config.in 2012-06-24 11:25:12.603862643 -0500 +@@ -33,13 +33,13 @@ while test $# -gt 0; do + echo '@MAGICK_API_CPPFLAGS@' + ;; + --cxxflags) +- echo '@CXXFLAGS@' ++ echo '' + ;; + --ldflags) +- echo '@MAGICK_API_LDFLAGS@' ++ echo '' + ;; + --libs) +- echo '-lGraphicsMagick++ @MAGICK_API_LIBS@' ++ echo '-lGraphicsMagick++' + ;; + *) + echo "${usage}" 1>&2 +diff -up GraphicsMagick-1.3.16/magick/GraphicsMagick-config.in.multilib GraphicsMagick-1.3.16/magick/GraphicsMagick-config.in +--- GraphicsMagick-1.3.16/magick/GraphicsMagick-config.in.multilib 2011-11-12 14:39:26.000000000 -0600 ++++ GraphicsMagick-1.3.16/magick/GraphicsMagick-config.in 2012-06-24 11:14:55.947571850 -0500 +@@ -30,16 +30,16 @@ while test $# -gt 0; do + echo @PACKAGE_VERSION@ + ;; + --cflags) +- echo '@CFLAGS@' ++ echo '' + ;; + --cppflags) + echo '@MAGICK_API_CPPFLAGS@' + ;; + --ldflags) +- echo '@MAGICK_API_LDFLAGS@' ++ echo '' + ;; + --libs) +- echo '@MAGICK_API_LIBS@' ++ echo '-lGraphicsMagick' + ;; + *) + echo "${usage}" 1>&2 diff --git a/multimedia/graphics/GraphicsMagick/pspec.xml b/multimedia/graphics/GraphicsMagick/pspec.xml new file mode 100644 index 0000000000..24a72c0ed6 --- /dev/null +++ b/multimedia/graphics/GraphicsMagick/pspec.xml @@ -0,0 +1,139 @@ + + + + + GraphicsMagick + http://www.graphicsmagick.org + + PisiLinux Community + admins@pisilinux.org + + MIT + library + GraphicsMagick Image Processing System + GraphicsMagick is a comprehensive image processing package which is initially based on ImageMagick 5.5.2, but which has undergone significant re-work by the GraphicsMagick Group to significantly improve the quality and performance of the software. + mirrors://sourceforge/graphicsmagick/GraphicsMagick-1.3.20.tar.xz + + tiff-devel + webp-devel + lcms2-devel + libSM-devel + libwmf-devel + libICE-devel + jasper-devel + jbigkit-devel + libXext-devel + libjpeg-turbo-devel + ghostscript-devel + + + GraphicsMagick-1.3.14-perl_linkage.patch + GraphicsMagick-1.3.16-multilib.patch + + + + + GraphicsMagick + app:console + + tiff + webp + lcms2 + libwmf + jasper + libXext + jbigkit + libgomp + ghostscript + libjpeg-turbo + + + /etc + /usr/bin/gm + /usr/lib/GraphicsMagick-* + /usr/lib/lib* + /usr/share/GraphicsMagick-* + /usr/share/doc + /usr/share/man + + + + + GraphicsMagick-devel + Development files for GraphicsMagick + + GraphicsMagick + + + /usr/bin/*-config + /usr/include + /usr/lib/pkgconfig + /usr/share/doc/GraphicsMagick/www + /usr/share/man/man1/*-config.* + + + + + PerlMagick + GraphicsMagick perl bindings + + GraphicsMagick + + + /usr/lib/perl5 + /usr/share/doc/PerlMagick + + + + + + 2014-09-13 + 1.3.20 + Version bump + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-06-19 + 1.3.19 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-04-23 + 1.3.19 + Rebuild + Varol Maksutoğlu + waroi@pisilinux.org + + + 2014-02-07 + 1.3.19 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2014-01-04 + 1.3.19 + Version bump + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-07-29 + 1.3.17 + Dep fixed + Fatih Turgel + hitaf@pisilinux.org + + + 2012-11-22 + 1.3.17 + First release + Marcin Bojara + marcin@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/GraphicsMagick/translations.xml b/multimedia/graphics/GraphicsMagick/translations.xml new file mode 100644 index 0000000000..177ce8b331 --- /dev/null +++ b/multimedia/graphics/GraphicsMagick/translations.xml @@ -0,0 +1,8 @@ + + + + GraphicsMagick + GraphicsMagick Resim İşleme Sistemi + GraphicsMagick, başlangıçta ImageMagick 5.5.2 sürümünü temel almış kapsamlı bir resim işleme paketidir. Yazılımın kalitesini ve performansını önemli derecede artırmak için bu pakette büyük bir değişiklik yapılmıştır. + + From 2abc81994b2056ae18364fa5584bcff9bc4d04c1 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 03:06:44 +0300 Subject: [PATCH 120/175] gimp:moved into main repo for pisi 2.0 --- .../gimp/addon/colorize-gimp/actions.py | 22 + .../gimp/addon/colorize-gimp/files/COPYING | 340 + .../gimp/addon/colorize-gimp/pspec.xml | 70 + .../gimp/addon/colorize-gimp/translations.xml | 8 + .../gimp/addon/gimp-data-extras/actions.py | 20 + .../gimp/addon/gimp-data-extras/pspec.xml | 56 + .../addon/gimp-data-extras/translations.xml | 8 + .../gimp/addon/gimp-dds-plugin/actions.py | 17 + .../gimp/addon/gimp-dds-plugin/pspec.xml | 62 + .../addon/gimp-focusblur-plugin/actions.py | 23 + .../addon/gimp-focusblur-plugin/pspec.xml | 60 + .../gimp/addon/gimp-gmic-plugin/actions.py | 31 + .../files/gentoo/gmic-1.5.2.2-makefile.patch | 101 + .../gimp/addon/gimp-gmic-plugin/pspec.xml | 123 + .../addon/gimp-gmic-plugin/translations.xml | 18 + .../gimp/addon/gimp-layer-effects/actions.py | 12 + .../addon/gimp-layer-effects/files/COPYING | 674 + .../gimp/addon/gimp-layer-effects/pspec.xml | 56 + .../addon/gimp-layer-effects/translations.xml | 8 + .../gimp/addon/gimp-lqr-plugin/actions.py | 20 + .../gimp/addon/gimp-lqr-plugin/pspec.xml | 61 + .../addon/gimp-refocus-it-plugin/actions.py | 19 + .../addon/gimp-refocus-it-plugin/pspec.xml | 60 + .../gimp-refocus-it-plugin/translations.xml | 8 + .../gimp/addon/gimp-resynthesizer/actions.py | 17 + .../gimp/addon/gimp-resynthesizer/pspec.xml | 61 + .../gimp/addon/gimp-save-for-web/actions.py | 19 + .../gimp/addon/gimp-save-for-web/pspec.xml | 61 + .../addon/gimp-save-for-web/translations.xml | 8 + .../gimp/addon/gimpfx-foundry/actions.py | 13 + .../gimp/addon/gimpfx-foundry/pspec.xml | 54 + .../addon/gimpfx-foundry/translations.xml | 8 + multimedia/graphics/gimp/gimp/actions.py | 52 + .../gimp/gimp/files/gimp-splash-colors.png | Bin 0 -> 342227 bytes .../graphics/gimp/gimp/files/gimp-splash.png | Bin 0 -> 272386 bytes .../files/po-libgimp_gimp20-libgimp-tr.po | 1853 +++ .../po-plug-ins_gimp20-std-plug-ins-tr.po | 12498 +++++++++++++++ .../files/po-script-fu_gimp20-script-fu-tr.po | 2775 ++++ .../graphics/gimp/gimp/files/po_gimp20-tr.po | 12875 ++++++++++++++++ multimedia/graphics/gimp/gimp/pspec.xml | 1206 ++ .../graphics/gimp/gimp/translations.xml | 317 + 41 files changed, 33694 insertions(+) create mode 100644 multimedia/graphics/gimp/addon/colorize-gimp/actions.py create mode 100644 multimedia/graphics/gimp/addon/colorize-gimp/files/COPYING create mode 100644 multimedia/graphics/gimp/addon/colorize-gimp/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/colorize-gimp/translations.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-data-extras/actions.py create mode 100644 multimedia/graphics/gimp/addon/gimp-data-extras/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-data-extras/translations.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-dds-plugin/actions.py create mode 100644 multimedia/graphics/gimp/addon/gimp-dds-plugin/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-focusblur-plugin/actions.py create mode 100644 multimedia/graphics/gimp/addon/gimp-focusblur-plugin/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-gmic-plugin/actions.py create mode 100644 multimedia/graphics/gimp/addon/gimp-gmic-plugin/files/gentoo/gmic-1.5.2.2-makefile.patch create mode 100644 multimedia/graphics/gimp/addon/gimp-gmic-plugin/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-gmic-plugin/translations.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-layer-effects/actions.py create mode 100644 multimedia/graphics/gimp/addon/gimp-layer-effects/files/COPYING create mode 100644 multimedia/graphics/gimp/addon/gimp-layer-effects/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-layer-effects/translations.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-lqr-plugin/actions.py create mode 100644 multimedia/graphics/gimp/addon/gimp-lqr-plugin/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/actions.py create mode 100644 multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/translations.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-resynthesizer/actions.py create mode 100644 multimedia/graphics/gimp/addon/gimp-resynthesizer/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-save-for-web/actions.py create mode 100644 multimedia/graphics/gimp/addon/gimp-save-for-web/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/gimp-save-for-web/translations.xml create mode 100644 multimedia/graphics/gimp/addon/gimpfx-foundry/actions.py create mode 100644 multimedia/graphics/gimp/addon/gimpfx-foundry/pspec.xml create mode 100644 multimedia/graphics/gimp/addon/gimpfx-foundry/translations.xml create mode 100644 multimedia/graphics/gimp/gimp/actions.py create mode 100644 multimedia/graphics/gimp/gimp/files/gimp-splash-colors.png create mode 100644 multimedia/graphics/gimp/gimp/files/gimp-splash.png create mode 100644 multimedia/graphics/gimp/gimp/files/po-libgimp_gimp20-libgimp-tr.po create mode 100644 multimedia/graphics/gimp/gimp/files/po-plug-ins_gimp20-std-plug-ins-tr.po create mode 100644 multimedia/graphics/gimp/gimp/files/po-script-fu_gimp20-script-fu-tr.po create mode 100644 multimedia/graphics/gimp/gimp/files/po_gimp20-tr.po create mode 100644 multimedia/graphics/gimp/gimp/pspec.xml create mode 100644 multimedia/graphics/gimp/gimp/translations.xml diff --git a/multimedia/graphics/gimp/addon/colorize-gimp/actions.py b/multimedia/graphics/gimp/addon/colorize-gimp/actions.py new file mode 100644 index 0000000000..265197558b --- /dev/null +++ b/multimedia/graphics/gimp/addon/colorize-gimp/actions.py @@ -0,0 +1,22 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +WorkDir="colorize-gimp" + +def setup(): + #pisitools.dosed("Makefile", "pardus_cflags", "%s" % get.CFLAGS()) + pisitools.dosed("Makefile", "^CC=.*", "CC=%s" % get.CC()) + +def build(): + autotools.make() + +def install(): + pisitools.insinto("/usr/lib/gimp/2.0/plug-ins", "colorize") diff --git a/multimedia/graphics/gimp/addon/colorize-gimp/files/COPYING b/multimedia/graphics/gimp/addon/colorize-gimp/files/COPYING new file mode 100644 index 0000000000..3912109b5c --- /dev/null +++ b/multimedia/graphics/gimp/addon/colorize-gimp/files/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/multimedia/graphics/gimp/addon/colorize-gimp/pspec.xml b/multimedia/graphics/gimp/addon/colorize-gimp/pspec.xml new file mode 100644 index 0000000000..382c6ce13e --- /dev/null +++ b/multimedia/graphics/gimp/addon/colorize-gimp/pspec.xml @@ -0,0 +1,70 @@ + + + + + colorize-gimp + http://zenthought.org/content/project/colorize + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + gimp + library + Colorization plugin for GIMP + colorize-gimp is an implementation of colorization using optimization for GIMP. + http://zenthought.org/system/files/asset/2/colorize-gimp-20070930.tar.gz + + gimp-devel + gtk2-devel + atlas-devel + SuiteSparse-devel + + + + + colorize-gimp + + gimp + gtk2 + atlas + SuiteSparse + atk + cairo + pango + gdk-pixbuf + fontconfig + + + /usr/lib/gimp/2.0/plug-ins + /usr/share/doc + + + COPYING + + + + + + 2014-06-19 + 2.6.0 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-07-29 + 2.6.0 + Dep fixed + Fatih Turgel + hitaf@pisilinux.org + + + 2011-01-30 + 2.6.0 + First release + Anıl Özbek + admins@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/colorize-gimp/translations.xml b/multimedia/graphics/gimp/addon/colorize-gimp/translations.xml new file mode 100644 index 0000000000..eba43d4fd0 --- /dev/null +++ b/multimedia/graphics/gimp/addon/colorize-gimp/translations.xml @@ -0,0 +1,8 @@ + + + + colorize-gimp + GIMP için renklendirme eklentisi + colorize-gimp, GIMP ile siyah beyaz fotoğrafları renklendirmek için bir eklentidir. + + diff --git a/multimedia/graphics/gimp/addon/gimp-data-extras/actions.py b/multimedia/graphics/gimp/addon/gimp-data-extras/actions.py new file mode 100644 index 0000000000..33bf87d432 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-data-extras/actions.py @@ -0,0 +1,20 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.configure() + +def build(): + autotools.make() + +def install(): + autotools.rawInstall('DESTDIR="%s"' % get.installDIR()) + + pisitools.dodoc("README", "COPYING", "ChangeLog", "AUTHORS") diff --git a/multimedia/graphics/gimp/addon/gimp-data-extras/pspec.xml b/multimedia/graphics/gimp/addon/gimp-data-extras/pspec.xml new file mode 100644 index 0000000000..c473aa451a --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-data-extras/pspec.xml @@ -0,0 +1,56 @@ + + + + + gimp-data-extras + http//www.gimp.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + gimp + data + Gimp extras + Contains extra brushes, palettes, and gradients for extra GIMPy artistic enjoyment. + ftp://ftp.gimp.org/pub/gimp/extras/gimp-data-extras-2.0.2.tar.bz2 + + gimp-devel + + + + + gimp-data-extras + + gimp + + + /usr/share/gimp + /usr/share/doc + + + + + + 2014-06-19 + 2.0.2 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 2.0.2 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2009-09-07 + 2.0.2 + First release + Pisi Linux Admins + admins@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-data-extras/translations.xml b/multimedia/graphics/gimp/addon/gimp-data-extras/translations.xml new file mode 100644 index 0000000000..82b3bc35e0 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-data-extras/translations.xml @@ -0,0 +1,8 @@ + + + + gimp-data-extras + Gimp ekleri + Daha eğlenceli bir çalışma için ek fırçalar, paketler ve gradyanlar içerir. + + diff --git a/multimedia/graphics/gimp/addon/gimp-dds-plugin/actions.py b/multimedia/graphics/gimp/addon/gimp-dds-plugin/actions.py new file mode 100644 index 0000000000..ee5bdce289 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-dds-plugin/actions.py @@ -0,0 +1,17 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def build(): + pisitools.dosed("Makefile", "CFLAGS=.*\$\(", "CFLAGS+=$(") + autotools.make() + +def install(): + pisitools.doexe("dds", "/usr/lib/gimp/2.0/plug-ins") + pisitools.dodoc("doc/gimp-dds.pdf", "COPYING", "LICENSE", "README*", "TODO") + +# By PiSiDo 2.0.0 diff --git a/multimedia/graphics/gimp/addon/gimp-dds-plugin/pspec.xml b/multimedia/graphics/gimp/addon/gimp-dds-plugin/pspec.xml new file mode 100644 index 0000000000..94856474aa --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-dds-plugin/pspec.xml @@ -0,0 +1,62 @@ + + + + + gimp-dds-plugin + http://code.google.com/p/gimp-dds/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + library + DirectDraw Surface (DDS) format plugin for Gimp + This is a plugin for GIMP version 2.6.x. It allows you to load and save images in the Direct Draw Surface (DDS) format. + + gimp-devel + gtk2-devel + + http://gimp-dds.googlecode.com/files/gimp-dds-3.0.1.tar.bz2 + + + gimp-dds-plugin + + atk + cairo + fontconfig + gdk-pixbuf + gimp + gtk2 + pango + libgomp + + + /usr/lib/gimp/2.0/plug-ins/dds + /usr/share/doc/gimp-dds-plugin + + + + + + 2014-06-19 + 3.0.1 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 3.0.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-07-07 + 2.2.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-focusblur-plugin/actions.py b/multimedia/graphics/gimp/addon/gimp-focusblur-plugin/actions.py new file mode 100644 index 0000000000..2da9a5ab23 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-focusblur-plugin/actions.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +def setup(): + #fix error "Only can be included directly." + for f in shelltools.ls("src/*"): + pisitools.dosed(f, "(#include\s)", r"\1\2") + autotools.configure("LIBS=-lm") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "README") diff --git a/multimedia/graphics/gimp/addon/gimp-focusblur-plugin/pspec.xml b/multimedia/graphics/gimp/addon/gimp-focusblur-plugin/pspec.xml new file mode 100644 index 0000000000..d0da8f4a54 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-focusblur-plugin/pspec.xml @@ -0,0 +1,60 @@ + + + + + gimp-focusblur-plugin + http://registry.gimp.org/node/1444 + + PisiLinux Community + admins@pisilinux.org + + library + GPLv2 + Makes out of focus with luminosity and depth. + Focus Blur plug-in is blurring effect, a kind of called DoF. This software makes a out of focus with luminosity and depth, like a sight or lenses. It can be used with depth map, depth fakes and shine effect. Also it can work as simple and applicable blur. + + fftw3-devel + gimp-devel + + http://registry.gimp.org/files/focusblur-3.2.6.tar.bz2 + + + + gimp-focusblur-plugin + + fftw3 + gdk-pixbuf + gimp + gtk2 + + + /usr/lib/gimp/2.0/plug-ins + /usr/share/doc + /usr/share/locale + + + + + + 2014-06-19 + 3.2.6 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 3.2.6 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-10 + 3.2.6 + First release + Marcin Bojara + marcin@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-gmic-plugin/actions.py b/multimedia/graphics/gimp/addon/gimp-gmic-plugin/actions.py new file mode 100644 index 0000000000..a80d1f3702 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-gmic-plugin/actions.py @@ -0,0 +1,31 @@ +#!/usr/bin/python +# -*- actions.pycoding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt. + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +#def setup(): + +def build(): + #pisitools.dosed("src/Makefile", "^(FFMPEG_LDFLAGS\s=.*)", r"\1 -lavutil") + autotools.make("-C src gimp custom lib -j1") + +def install(): + pisitools.doman("man/gmic.1.gz") + pisitools.dodoc("COPYING", "README") + pisitools.insinto("/usr/share/doc/gimp-gmic-plugin", "COPYING") + pisitools.insinto("/etc/bash_completion.d/", "resources/gmic_bashcompletion.sh", destinationFile = "gmic") + shelltools.cd("src") + pisitools.dobin("gmic") + pisitools.doexe("gmic_gimp", "/usr/lib/gimp/2.0/plug-ins/") + pisitools.insinto("/usr/include", "gmic.h") + pisitools.dolib("libgmic.so") + ver = ".%s" % get.srcVERSION() + while ver: + pisitools.dosym("libgmic.so", "/usr/lib/libgmic.so%s" % ver) + ver = ver[:ver.rfind('.')] diff --git a/multimedia/graphics/gimp/addon/gimp-gmic-plugin/files/gentoo/gmic-1.5.2.2-makefile.patch b/multimedia/graphics/gimp/addon/gimp-gmic-plugin/files/gentoo/gmic-1.5.2.2-makefile.patch new file mode 100644 index 0000000000..c93c639fda --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-gmic-plugin/files/gentoo/gmic-1.5.2.2-makefile.patch @@ -0,0 +1,101 @@ +--- gmic-1.5.2.2/src/Makefile ++++ gmic-1.5.2.2/src/Makefile +@@ -77,7 +77,7 @@ + + # Flags that are mandatory to compile 'gmic'. + MANDATORY_CFLAGS += -Dgmic_build -I$(USR)/include +-MANDATORY_LDFLAGS += -L$(USR)/lib ++MANDATORY_LDFLAGS += + ifeq ($(IS_GCC),yes) + MANDATORY_CFLAGS += -Wall -W + MANDATORY_LDFLAGS += -lm +@@ -85,28 +85,20 @@ + MANDATORY_CFLAGS+=$(IS_BETA_CFLAGS) + + # Flags to enable debugging. +-DEBUG_CFLAGS = -Dcimg_use_vt100 -Dcimg_verbosity=3 -g +- +-# Flags to enable optimizations. +-ifeq ($(IS_GCC),yes) +-OPT_CFLAGS = -O3 # -fno-tree-pre # -ffast-math +-endif +-ifeq ($(CC),icc) +-OPT_CFLAGS = -O3 -ipo -no-prec-div -override-limits +-endif ++DEBUG_CFLAGS = -Dcimg_use_vt100 -Dcimg_verbosity=3 + + # Flags to enable image display, using X11 + # (keep /usr/ dirname here since X11 is located in /usr/ on Mac too). + # This requires the presence of the X11 include and library files. + # (package 'libx11-dev' on Debian). +-X11_CFLAGS = -Dcimg_display=1 -Dcimg_appname=\\\"gmic\\\" -I/usr/X11R6/include #-Dcimg_use_xrandr +-X11_LDFLAGS = -L/usr/X11R6/lib -lX11 -lpthread #-lXrandr ++X11_CFLAGS = -Dcimg_display=1 -Dcimg_appname=\\\"gmic\\\" #-Dcimg_use_xrandr ++X11_LDFLAGS = -lX11 -lpthread #-lXrandr + + # Flags to enable fast display, using XShm. + # This requires the presence of the X11 extension include and library files. + # (package 'libx11-dev' on Debian). + XSHM_CFLAGS = -Dcimg_use_xshm +-XSHM_LDFLAGS = -L$(USR)/X11R6/lib -lXext ++XSHM_LDFLAGS = -lXext + + # Flags to enable image display, using GDI32. + # This requires the presence of the GDI32 include and library files. +@@ -152,14 +144,8 @@ + # Flags to enable native support of webcams, using the OpenCV library. + # This requires the presence of the OpenCV include and library files. + # (package 'libcv3-2-dev' on Debian). +-ifeq ($(OS),Darwin) + OPENCV_CFLAGS = -Dcimg_use_opencv -I$(USR)/include -I$(USR)/include/opencv + OPENCV_LDFLAGS = `pkg-config opencv --libs` #-> Use this for OpenCV 2.2.0 ! +-else +-OPENCV_CFLAGS = -Dcimg_use_opencv -I$(USR)/include -I$(USR)/include/opencv +-# OPENCV_LDFLAGS = -lcv -lhighgui +-OPENCV_LDFLAGS = -lopencv_core -lopencv_highgui #-> Use this for OpenCV >= 2.2.0 ! +-endif + + # Flags to enable native support of most classical image file formats, using the GraphicsMagick++ library. + # This requires the presence of the GraphicsMagick++ include and library files. +@@ -287,10 +273,10 @@ + endif + + gimp: +- $(MAKE) "CFLAGS=$(STD_GIMP_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_GIMP_LDFLAGS) $(OPT_LDFLAGS)" "STRIP_EXE=1" gmic_gimp ++ $(MAKE) "CFLAGS+=$(STD_GIMP_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_GIMP_LDFLAGS) $(OPT_LDFLAGS)" gmic_gimp + + lib: +- $(MAKE) "CFLAGS=$(STD_LIB_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_LIB_LDFLAGS) $(OPT_LDFLAGS)" gmic_lib ++ $(MAKE) "CFLAGS+=$(STD_LIB_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_LIB_LDFLAGS) $(OPT_LDFLAGS)" gmic_lib + + zart: lib + ifneq ($(OS),Darwin) +@@ -313,10 +299,10 @@ + $(MAKE) "CFLAGS+=$(DEBUG_UNIX_CFLAGS)" "LDFLAGS+=$(DEBUG_UNIX_LDFLAGS)" gmic_minimal + + linux: +- $(MAKE) "CFLAGS=$(STD_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS=$(STD_UNIX_LDFLAGS)" "STRIP_EXE=1" gmic_gmic ++ $(MAKE) "CFLAGS+=$(STD_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(STD_UNIX_LDFLAGS)" gmic_gmic + + custom: +- $(MAKE) "CFLAGS=$(CUST_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS=$(CUST_UNIX_LDFLAGS)" "STRIP_EXE=1" gmic_gmic ++ $(MAKE) "CFLAGS+=$(CUST_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS+=$(CUST_UNIX_LDFLAGS)" gmic_gmic + + solaris: + $(MAKE) "CFLAGS=$(STD_UNIX_CFLAGS) $(OPT_CFLAGS)" "LDFLAGS=$(STD_UNIX_LDFLAGS) -R$(USR)/X11R6/lib -lrt -lnsl -lsocket" "STRIP_EXE=1" gmic_gmic +@@ -346,7 +332,6 @@ + $(CC) -o gmic_gimp.o -c gmic.cpp $(CFLAGS) -Dgmic_gimp -Dgmic_float_only + gmic_gimp : gmic_gimp.o gmic_gimp.cpp + $(CC) -o gmic_gimp gmic_gimp.cpp gmic_gimp.o `gimptool-2.0$(EXE) --cflags` $(CFLAGS) `gimptool-2.0$(EXE) --libs` $(LDFLAGS) +- strip gmic_gimp$(EXE) + + gmic_minimal: gmic.cpp + $(CC) -o gmic gmic.cpp $(CFLAGS) -Dgmic_float_only -Dgmic_main $(LDFLAGS) +@@ -371,7 +356,6 @@ + $(CC) -o gmic_double.o -c gmic.cpp $(CFLAGS) -Dgmic_split_compilation -Dgmic_double + gmic_gmic: gmic_bool.o gmic_uchar.o gmic_char.o gmic_ushort.o gmic_short.o gmic_uint.o gmic_int.o gmic_float.o gmic_double.o gmic_def.h + $(CC) -o gmic gmic_bool.o gmic_uchar.o gmic_char.o gmic_ushort.o gmic_short.o gmic_uint.o gmic_int.o gmic_float.o gmic_double.o $(LDFLAGS) +- strip gmic$(EXE) + + def: + @echo "#ifndef gmic_gimp" > gmic_def.h diff --git a/multimedia/graphics/gimp/addon/gimp-gmic-plugin/pspec.xml b/multimedia/graphics/gimp/addon/gimp-gmic-plugin/pspec.xml new file mode 100644 index 0000000000..db936c0ed0 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-gmic-plugin/pspec.xml @@ -0,0 +1,123 @@ + + + + + gimp-gmic-plugin + http://gmic.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + CeCILL-2 + app:console + library + Image procession framework. + G'MIC stands for GREYC's Magic Image Converter. G'MIC is focused on the design of possibly complex pipelines for converting, manipulating, filtering and visualizing generic 1d/2d/3d multi-spectral image datasets. + mirrors://sourceforge/gmic/gmic_1.6.0.3.tar.gz + + ffmpeg-devel + fftw3-devel + gimp-devel + GraphicsMagick-devel + libjpeg-turbo-devel + lapack-devel + opencv-devel + openexr-devel + tiff-devel + + + + + + + + gmic + + tiff + fftw3 + ffmpeg + opencv + libgomp + ilmbase + libXext + openexr-libs + libjpeg-turbo + GraphicsMagick + + + /etc/bash_completion.d + /usr/bin + /usr/lib + /usr/share/doc/gmic + /usr/share/man + + + + + gmic-devel + Development files for gmic + + gmic + + + /usr/include + + + + + gimp-gmic-plugin + Gimp plugin for the GMIC image procession framework. + + atk + gtk2 + gimp + cairo + pango + fftw3 + fontconfig + gdk-pixbuf + + + /usr/lib/gimp + /usr/share/doc/gimp-gmic-plugin + + + + + + 2014-12-25 + 1.6.0.3 + version bump + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-06-19 + 1.5.5.0 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-12-01 + 1.5.5.0 + Rebuild for ffmpeg. + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-03-27 + 1.5.5.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-08-13 + 1.5.1.7 + First release + Marcin Bojara + marcin@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-gmic-plugin/translations.xml b/multimedia/graphics/gimp/addon/gimp-gmic-plugin/translations.xml new file mode 100644 index 0000000000..7f9166501b --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-gmic-plugin/translations.xml @@ -0,0 +1,18 @@ + + + + gmic + Image procession framework. + G'MIC stands for GREYC's Magic Image Converter. G'MIC is focused on the design of possibly complex pipelines for converting, manipulating, filtering and visualizing generic 1d/2d/3d multi-spectral image datasets. + + + + gmic-devel + Development files for gmic + + + + gimp-gmic-plugin + Gimp plugin for the GMIC image procession framework. + + diff --git a/multimedia/graphics/gimp/addon/gimp-layer-effects/actions.py b/multimedia/graphics/gimp/addon/gimp-layer-effects/actions.py new file mode 100644 index 0000000000..c4cef6f288 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-layer-effects/actions.py @@ -0,0 +1,12 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools + +WorkDir="layer-effects" + +def install(): + pisitools.insinto("/usr/lib/gimp/2.0/plug-ins", "layerfx.py") diff --git a/multimedia/graphics/gimp/addon/gimp-layer-effects/files/COPYING b/multimedia/graphics/gimp/addon/gimp-layer-effects/files/COPYING new file mode 100644 index 0000000000..94a9ed024d --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-layer-effects/files/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/multimedia/graphics/gimp/addon/gimp-layer-effects/pspec.xml b/multimedia/graphics/gimp/addon/gimp-layer-effects/pspec.xml new file mode 100644 index 0000000000..031d1a2204 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-layer-effects/pspec.xml @@ -0,0 +1,56 @@ + + + + + gimp-layer-effects + http://registry.gimp.org/node/186 + + PisiLinux Community + admins@pisilinux.org + + GPLv3+ + gimp + library + Layer effects for GIMP + Layer Effects is a GIMP plugin which contains a series of scripts that implement various layer effects. + http://ozbekanil.googlepages.com/layer-effects.tar.gz + + + + gimp-layer-effects + + gimp + + + /usr/lib/gimp/2.0/plug-ins + /usr/share/doc + + + COPYING + + + + + + 2014-06-19 + 2.6.0 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 2.6.0 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2011-01-30 + 2.6.0 + First release + Anıl Özbek + admins@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-layer-effects/translations.xml b/multimedia/graphics/gimp/addon/gimp-layer-effects/translations.xml new file mode 100644 index 0000000000..0b70fbdda0 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-layer-effects/translations.xml @@ -0,0 +1,8 @@ + + + + gimp-layer-effects + GIMP için katman efektleri + Layer Effects, yaygın olarak kullanılan katman efektlerini içeren bir GIMP eklentisidir. + + diff --git a/multimedia/graphics/gimp/addon/gimp-lqr-plugin/actions.py b/multimedia/graphics/gimp/addon/gimp-lqr-plugin/actions.py new file mode 100644 index 0000000000..270ee752b7 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-lqr-plugin/actions.py @@ -0,0 +1,20 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import get +from pisi.actionsapi import pisitools + +def setup(): + autotools.autoreconf("-fi") + autotools.configure() + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "BUGS", "ChangeLog", "COPYING", "NEWS", "README", "TODO") diff --git a/multimedia/graphics/gimp/addon/gimp-lqr-plugin/pspec.xml b/multimedia/graphics/gimp/addon/gimp-lqr-plugin/pspec.xml new file mode 100644 index 0000000000..fd6fc3773a --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-lqr-plugin/pspec.xml @@ -0,0 +1,61 @@ + + + + + gimp-lqr-plugin + http://liquidrescale.wikidot.com/ + + PisiLinux Community + admins@pisilinux.org + + library + GPLv2 + Plugin for The GIMP providing Liquid Rescale. + Provides an implementation of the Seam Carving algorithm. The Seam Carving procedure aims at resizing pictures non uniformly while preserving their features, i.e. avoiding distortion of the important parts. The plugin supports manual feature selection, and can also be used to remove portions of the picture in a consistent way. + + gimp-devel + liblqr-devel + + http://liquidrescale.wikidot.com/local--files/en:download-page-sources/gimp-lqr-plugin-0.7.2.tar.bz2 + + + gimp-lqr-plugin + + gdk-pixbuf + gimp + gtk2 + liblqr + + + /usr/lib/gimp/2.0/plug-ins/* + /usr/share/doc/gimp-lqr-plugin/* + /usr/share/gimp-lqr-plugin/* + /usr/share/gimp/2.0/scripts/* + /usr/share/locale/* + + + + + + 2014-06-19 + 0.7.2 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 0.7.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-14 + 0.7.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/actions.py b/multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/actions.py new file mode 100644 index 0000000000..c6e41a994f --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.configure() + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README") \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/pspec.xml b/multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/pspec.xml new file mode 100644 index 0000000000..851cc2b3cf --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/pspec.xml @@ -0,0 +1,60 @@ + + + + + gimp-refocus-it-plugin + http://sourceforge.net/projects/refocus-it + + Osman Erkan + osman.erkan@pisilinux.org + + library + GPLv2 + Iterative refocus GIMP plug-in can be used to refocus images acquired by a defocused camera, blurred by gaussian or motion blur or any combination of these. + Iterative refocus GIMP plug-in can be used to refocus images acquired by a defocused camera, blurred by gaussian or motion blur or any combination of these. Adaptive or static area smoothing can be used to remove the so called \"ringing\" effect. + mirrors://sourceforge/refocus-it/refocus-it-2.0.0.tar.gz + + gimp-devel + gtk2-devel + + + + + gimp-refocus-it-plugin + + gimp + gtk2 + + + /usr/bin + /usr/lib/gimp/2.0/plug-ins + /usr/share/doc/gimp-refocus-it-plugin + /usr/share/help + /usr/share/locale + + + + + + 2014-06-19 + 2.0.0 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 2.0.0 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-03-28 + 2.0.0 + First release + Osman Erkan + osman.erkan@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/translations.xml b/multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/translations.xml new file mode 100644 index 0000000000..7ca1629d1a --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/translations.xml @@ -0,0 +1,8 @@ + + + + gimp-refocus-it-plugin + Iterative refocus GIMP plug-in can be used to refocus images acquired by a defocused camera, blurred by gaussian or motion blur or any combination of these. + Iterative refocus GIMP plug-in can be used to refocus images acquired by a defocused camera, blurred by gaussian or motion blur or any combination of these. Adaptive or static area smoothing can be used to remove the so called \"ringing\" effect. + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-resynthesizer/actions.py b/multimedia/graphics/gimp/addon/gimp-resynthesizer/actions.py new file mode 100644 index 0000000000..bcd289badb --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-resynthesizer/actions.py @@ -0,0 +1,17 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + + +from pisi.actionsapi import pisitools +from pisi.actionsapi import autotools + +WorkDir = "resynthesizer-0.16" + +def build(): + autotools.make() + +def install(): + pisitools.insinto("/usr/share/gimp/2.0/scripts","smart-enlarge.scm") + pisitools.insinto("/usr/share/gimp/2.0/scripts","smart-remove.scm") + pisitools.insinto("/usr/lib/gimp/2.0/plug-ins","resynth") + pisitools.dodoc("COPYING","README") diff --git a/multimedia/graphics/gimp/addon/gimp-resynthesizer/pspec.xml b/multimedia/graphics/gimp/addon/gimp-resynthesizer/pspec.xml new file mode 100644 index 0000000000..a4420b97b9 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-resynthesizer/pspec.xml @@ -0,0 +1,61 @@ + + + + + gimp-resynthesizer + http://www.logarithmic.net/pfh/resynthesizer + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + addon + Resynthesizer is a Gimp plug-in for texture synthesis + Resynthesizer is a Gimp plug-in for texture synthesis. Given a sample of a texture, it can create more of that texture. + http://www.logarithmic.net/pfh-files/resynthesizer/resynthesizer-0.16.tar.gz + + gimp-devel + + + + gimp-resynthesizer + + gimp + atk + gtk2 + cairo + pango + fontconfig + gdk-pixbuf + + + /usr/lib/gimp/2.0/plug-ins + /usr/share/gimp/2.0/scripts + /usr/share/doc + + + + + + 2014-06-19 + 0.16 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-07-29 + 0.16 + Dep fixed + Fatih Turgel + hitaf@pisilinux.org + + + 2011-02-20 + 0.16 + First release + erdem.artan@linux.org.tr + Erdem Artan + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-save-for-web/actions.py b/multimedia/graphics/gimp/addon/gimp-save-for-web/actions.py new file mode 100644 index 0000000000..7fab99cc06 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-save-for-web/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.configure() + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + pisitools.dodoc("AUTHORS", "BUGS", "ChangeLog", "COPYING", "HACKING", "README", "TODO") diff --git a/multimedia/graphics/gimp/addon/gimp-save-for-web/pspec.xml b/multimedia/graphics/gimp/addon/gimp-save-for-web/pspec.xml new file mode 100644 index 0000000000..0ef6e23628 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-save-for-web/pspec.xml @@ -0,0 +1,61 @@ + + + + + gimp-save-for-web + http://registry.gimp.org/node/33 + + Osman Erkan + osman.erkan@pisilinux.org + + GPLv2 + library + GIMP Save for Web + GIMP Save for Web allows to find compromise between minimal file size and acceptable quality of image quickly. While adjusting various settings, you may explore how image quality and file size change. Options to reduce file size of an image include setting compression quality, number or colors, resizing, cropping, Exif information removal, etc. + http://registry.gimp.org/files/gimp-save-for-web-0.29.3.tar.bz2 + + gimp-devel + gtk2-devel + gdk-pixbuf-devel + + + + + gimp-save-for-web + + gimp + gtk2 + gdk-pixbuf + + + /usr/lib/gimp/2.0/plug-ins + /usr/share/gimp-save-for-web + /usr/share/locale + /usr/share/doc + + + + + + 2014-06-19 + 0.29.3 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-03-30 + 0.29.3 + V.bump + Osman Erkan + osman.erkan@pisilinux.org + + + 2011-01-30 + 0.29.0 + First release + Anıl Özbek + admins@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimp-save-for-web/translations.xml b/multimedia/graphics/gimp/addon/gimp-save-for-web/translations.xml new file mode 100644 index 0000000000..f96e8231f4 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimp-save-for-web/translations.xml @@ -0,0 +1,8 @@ + + + + gimp-save-for-web + GIMP Save for Web + GIMP Save for Web, kalite ve dosya boyutu değerlerini eniyilemeyi kolaylaştıran bir eklentidir. Çeşitli ayarları değiştirerek resimlerin ne kadar kaliteli veya büyük olacağını görebilirsiniz. Dosya boyutunu küçültecek ayarlar arasında sıkıştırma kalitesi, renk sayısı, yeniden boyutlandırma, kırpma ve Exif bilgeleri silme seçenekleri vb. vardır. + + diff --git a/multimedia/graphics/gimp/addon/gimpfx-foundry/actions.py b/multimedia/graphics/gimp/addon/gimpfx-foundry/actions.py new file mode 100644 index 0000000000..f6ec551345 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimpfx-foundry/actions.py @@ -0,0 +1,13 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools + +WorkDir = "." + +def install(): + pisitools.insinto("/usr/share/gimp/2.0/scripts/", "*.scm") + pisitools.dodoc("release-notes.txt") diff --git a/multimedia/graphics/gimp/addon/gimpfx-foundry/pspec.xml b/multimedia/graphics/gimp/addon/gimpfx-foundry/pspec.xml new file mode 100644 index 0000000000..2122efb950 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimpfx-foundry/pspec.xml @@ -0,0 +1,54 @@ + + + + + gimpfx-foundry + http://gimpfx-foundry.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + GPLv3 + public-domain + data + A scripts collection for GIMP + FX-Foundry project is constantly updating custom scripts for each major GIMP release. + mirrors://sourceforge/gimpfx-foundry/gimpfx-foundry-scriptpack/gimpfx-foundry-2.6-1/gimpfx-foundry-2.6-1.tar.gz + + + + gimpfx-foundry + + gimp + + + /usr/share/gimp/2.0/scripts + /usr/share/doc + + + + + + 2014-06-19 + 2.6.1 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 2.6.1 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2009-07-24 + 2.6.1 + First release + Anıl Özbek + admins@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/graphics/gimp/addon/gimpfx-foundry/translations.xml b/multimedia/graphics/gimp/addon/gimpfx-foundry/translations.xml new file mode 100644 index 0000000000..554d246b04 --- /dev/null +++ b/multimedia/graphics/gimp/addon/gimpfx-foundry/translations.xml @@ -0,0 +1,8 @@ + + + + gimpfx-foundry + GIMP için zengin bir betik paketi + FX-Foundry GIMP için hazırlanmış çeşitli betikleri GIMP'in yeni sürümleri için güncelleyen bir projedir. + + diff --git a/multimedia/graphics/gimp/gimp/actions.py b/multimedia/graphics/gimp/gimp/actions.py new file mode 100644 index 0000000000..7e4e55f244 --- /dev/null +++ b/multimedia/graphics/gimp/gimp/actions.py @@ -0,0 +1,52 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + pisitools.dosed("app/text/gimpfont.c", "freetype/tttables.h", "freetype2/tttables.h") + autotools.autoreconf("-fi") + autotools.configure("--without-webkit \ + --disable-gtk-doc \ + --disable-altivec \ + --disable-alsatest \ + --enable-python \ + --enable-default-binary \ + --enable-mmx \ + --enable-sse \ + --enable-mp \ + --with-linux-input \ + --with-poppler \ + --with-libjpeg \ + --with-libexif \ + --with-librsvg \ + --with-libtiff \ + --with-libmng \ + --with-libpng \ + --with-webkit \ + --with-lcms \ + --with-alsa \ + --with-dbus \ + --with-aa \ + --with-x") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + + # Add illustrator and other mime types + pisitools.dosed("desktop/gimp.desktop.in", "^MimeType=application/postscript;application/pdf;(.*)$", + "MimeType=\\1;image/x-sun-raster;image/x-gray;image/x-pcx;image/jpg;image/x-bmp;image/pjpeg;image/x-png;application/illustrator;") + + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog*", "HACKING", "NEWS", "README", "INSTALL", "LICENSE") \ No newline at end of file diff --git a/multimedia/graphics/gimp/gimp/files/gimp-splash-colors.png b/multimedia/graphics/gimp/gimp/files/gimp-splash-colors.png new file mode 100644 index 0000000000000000000000000000000000000000..b72c2d442f2433ed39c3a637b865ad85bfd23dd5 GIT binary patch literal 342227 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 q=Wl96JfqtZ;>XC{RB)vp}06Dr^i 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

C5mH?GMliDY+T z330q5(HSGgT?_CSdk1%dNZxrsDc}@V5Jr0ySQ7kF2UTViP69#BScjoA*5dl0Wkfy} zvBQ`wkuieT{=d;sRexth>qZp+VLrl;0d1NE=&9?9!zs#oN#S2rBcMq`AH3XhX)!%8 ziCQ^iMbf(gMZ4@UL#JSxQewL76XF-aKY5X)IHE_l5Y-#!^~Cbhl5Q4Hw-H%k jO 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%0D* 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%0DmO$a21euu#*~~h-LO$++O|GMPQtZOa7cq; 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

!->pQTOe`DI0>KUCzEF5&xc=C972 z7Sx&45j}j8_!J?|KT1VxikkK**jGa*uUO=&x~g6$DeNQdlG!eGwgGb-77z*}Q7^W$U>;w)A{e9D@xlPvp zd8J*LAX(2R|0qo2gG*4wP(j;?*RzF(2Vo(!eIQF6jkWtP`7#PgRHc(Cbx=g&wiMzm zsAGo)jR4_Lojf2yZ8?;(8FtTyLzR7?$p&yR5n~FOr zNlWR^QXM8L5HPfJm;ANx-|ktvaIbUPSUShTJA;j;svt5he9JPS;^0Z+kV^Su@vH3r@BZ57@qkp7h$Sb?7SJuJ-L z8uX5viQQSj%tBd6)0Ft;fS6cQMl|YYFY;4JCWVVrhfRv^+{}?yHx1rM;DFCXA=3B@ z4Pn3i%hIj{s!aQ2A<|9hjalA@o?qk`Tru$3yLWFt;qLBPnMs}LKL&?1=2J*Vb{bhV zuftFc(GQnU+$`-)h^^M3j>TNjpK3)Cnh}roQ(Ycr$BU4t2%#i4C>~y`8Wy$Z@3Tc0 z3hDasRL@G{E4i0)36$L)ssDK&eT9SczJC__^t`m(YN_dW)q{ohz}GlsAa0?Q_ci#r zqluMzO&mMff>@TK(f$GQI++tIld&e0Q_}A4?+cv(j2n%o0;SDBdW7dJJv7P6kFp*> zB9Y@0z()P32k?PY+72tj_MGG+ISPtESlkxf(ng<5OVZD=L9u&eX{$hbakO^Pt#~Q7 z_(o_sn6PAo%Scd9mQh{DV-U$(VCqyEiBnlSsd=+}_I%Tqlo#%8K}NW^5?|MO88HI*KD8n{Ox2PqajN6Hg&y)Oa^;6Lvq&09`VQ=c@W z4a)+%In{YCy5!>S@wM_wie@NWvl~tG%&owcqj$~omciC#12(`Us*xtCI=kYZ5g2=J z)qGz2l+maD&qraPW}Sf-!D{A)9(tS)_iGP6!Apb>2l24^GP0sZrdch%OZN7gX${a& zP;#|**wjhsO$*1BvZ_wkHibj;Jk)vrnkgO&97|Q?+re%NwO2VQU_?!kf7{*zGUt^P z6kPE&=IP-D5y__FyNW$>zQV8~gah$w+)ID=`>a25GC=7)L@ZJ=TK%u~$(JcZ6f-pK z(mBjrG#iES9&7tkgUhvK={k@Xk4HD?C2n8)M~nqxyu6d>Z&zlQn#7_R^tr#p1eZmD`Y*M+Mo}^>~lxDkQLR-Zq4`AM{s> z?fM6?O5^G@4jYd2Ker&Cxer$YTz)MShSNpVTSYIYHGOQ7)R!+DG!Gm2%%iQOM;mN0 za-kKta$in6uBd8*{|yU^`C1E9nB(x0ypG9<>}o=qm$)cza>gH2JnIm}PG zBE*R!CS6iwS*fN^V*F6*(Qf;s@4hs$e{1Yr3_6hE2Jl3bbTr+iR#@SeL17J=;WUi` z6PxLblVAIPhc_nUz)NsJPC>j)1T+Xnm<|o<2hn^0Jv(~x^n~MI?;6j`5~Vyp z-1{^nAgGmqW$rccmC^`Cl~ACbQ+dwoxDU(c+(;2DTFBBPF!16~+XhGwe!kPIJuBw& zB4SW&OsX8MIX}b``}J)XPQHLMnwyFyq0Y#2E}QuLv0qQ=fo{^msxnVQ(UCHJw+ts8 zLM(o~U~9 z08M156pi0Iw4cPWOgI@0*~<}G?U*dQD8b`igNb8}yVvg^YNZSER~0pV6l4RBzDW^x-2L0i zr0`NB&WRb+Yj<}U^2CX(0I$Lu%#hP=|HeI6oYU488TqB)+rVm74tP8?z-0)#VIVs9 z#!=-99WKh|lK!|}A1+{?5$z^|LCasN@ zI(ElGTnT~;^T2&RS>-)89u?&gZ6nFlsU$ABGIywuV(SWOFh{v;^z-B2O@~ZX(@m$S zjh*LbVOg9>ZQ5an*Pr8>>?yu-3zUt}s?u+pCW9`*MqJ%IvG~<0ULoxKw>^7d|V*Nlys}`nVFXAh|KrM z%a(d>=0?(Dt~zisF=g3-Q-8E62R6qyae`DUW$jF$s9g5a0C=>u&RzDj+3D(a5h+uE zSb@A4u^}u1L9}L4{+2RbmHYFG`(KWY#E=p!5_9_PE0?o(xF~@D3KLWm*0nV9le6RN z*NVafRErhW>LihWNYIGz-WhhG?Y)9d*z3X(F%H_5vG$Yo!6LlK%aNm(oojA>Xq2{* z73qs-#*$K{2gdUjhrH9T4(pc(r z_b0wEjC-V>xWk6`I3{xq>GAz{F%3`3l5a;sTWemNDR3D7Aa%-+Ve=JBq*;5m;IT7c zRcT%nj)++DIhPbIEVt8Yt@QS#cd>u5r43Ag)&nwb=@w{jK-KzdbdvU4k<)Up7QMA2 zuc61o$){tX6OU8+Wt>3`K6Uij&aFKELDvWa3w6w={zy6a%@kpZ9|maUIR=6$zXtw0 zvolhLI{I|dn$X!?`)Y=`eSlgJn%t>O5rKj?AnB*}IEjHwp0uiugAe^LvBJ%Nt+`8K z;oKWpLCcrN;Z_r-Mhrj!U`9ZQQ5=u7DV+35@VaS!B%+=$LWb*j;>xh~ySJb6BT05p zN`1R#5R;82zu{sZ=R|vPQd&(R9PdFW=`Q6TD?NsQ&NKe7=E7_HP(f)iZ15I0h6Ui{+mIWxEI{Pg=@(#TziVg&3c@b z1fSt9S^w!ZjRuO(l}R4UeO8llG!hJj&nKl?S==RP!?Z?|IA=JreMxh61cqL-xZ(@o zL@Vx31n~&V$R_h5q?v74)D_YO51x%ZlRPef1}_%YazBp>yvvb=MB5*;x=7itYptz~ z;p`qQ?Uu5%;H_T`vcFmQu$@NQ#Hlmx&^5j^;&Zl9_G7spOqU}@m4QJD?qij>k!6RR zfK!p{e+wiYpKk`X_)po|k#dHy0&vQvK739Do9|ooi@Y=JgZ;Vx=c=Q7cdisKbKmzoVIc(2tQ%Z_)ht0dvfvBI%XCurjUX`>9j@ z)Dkv)0o7UG^v!YC#nH&>%RfK-Sz>XH)78LdNlkKch93wHi(RDVC2SlB!|4DiWD_*r zdiC8f{#xxV&630=#7o*%g{R459_^mHPVHP5F4u~a{P@~PwxY79o_iC{6Nj(5OVtxh zDH-RrQ(S+&Cn~ky2w}=>)=Gq-U2blY%G_Brmd5HOemt%&RX9#w{@Ac_&E3I7G@D{H zW{nu*`9!5K27SE?nzdGl8b+_p|BJ5Kj>bz@=nq7LNSh4$ zZA$d{oXaMKGYf|gaB(m=S!JtVlg>Z&37c0rA4Nxbn4jIfjJQ#?p3*HFaz>v^Jp7bi z`A{4G+MR%lTr^Wq+k((bs_wm{HmT2No&cXS`jlt7@Uqc>v_*!}_{p-gG%C;&n~Wg= zVQog})BejB-Nb$x@PL4s_V{08SFJPr1HT=e%SzT4 zZcGVH+Lhi{!2gI*@>9k}W{fp{*)_w-&rW&2k04XyQpYBabhZpzdF$LHHLH$_SGGb^ z`$1p%ZtY|ed>*Hq%$RUHS~l;=tCft*1kfe5x}&G<69%+$-1p$R6crll1il!+(AY%$ z>w&UD?ZBjP9n(hkdVR5d;4&_A#Bl`V?MR|=H^7-L9qG5N6xJ=_8urq0=jOBZdh@-L z<8P^RD&^;HXN5iTU0cU212hFPc**;8fk5BI`AeWUddnN<*j4pg>-!N(f=M>-<)SkG zBwDK2VB+qwkm;rO^F^P>0-tUZP;2kYFgsEM=@;Ps1=|<@W8`IkcXdyj=s@1Fzg>Dka0@b~t} zui7~nXjNeACUeyJa>zBv{t5SKZb_v$aKRltq`J5N8|xPsl9GsCtzrH*SCV!yE1f~{ zi7TKK<9M=-T;Ry&lv|3Q+9?;&+|s*6ep_-$;AS{u0utu`aC&qdjUzHW?nm*Cjd zinX>8$Aa+nrM3!ZEPAKLwC5Y=(|=lxYcHmvZ3ZNMY=gp+WABNnfGW(64>Y@QjIB}c%Cys9 z;QVD6B{2kx02!v0Pk^S*4kMtGqh}+vEu~6zmVY}ovV}-a=%8VfY6XBlO`Cam+pkCX z-O&OGrSfjWxY?HF#FIBV(qmA&@&CC1?a&W9;5<81zu+*%FeEjyx@-x;Lcs?7WR>_OqF9AXnF)EHq+nn5OaFY0A#pk1<_()ws zHcUPPC~(nz0N5nAysLIZovJq&k_jbxbi72c<~NBb}Y+X zvCT6pN-KBpF_oVU9J^TF%fcJBf~OY!M=c#L(NvkzrhZXb**Vfj0c<{s8c$~pF>jM|{8`&V z6>a7o>?-Z3DfY?dI`D=@-t-g+kPx-<$ zfrpj)<7_kJ08`bL*i(gN{ui8cLWtqN2t5LR>e9 zk~mtsn6eNjH^m7y5NxrosPBEA}UccscP6Q-M z6B?<^U9Fu%C72@VHVOg5UL$8?=AB&2d|li#E0ZMPzV@{nvM|AD;rtCRGT*}PXep0( zPl!pWTm#0%cl&dWiXoteN>;7bO*v9Psq)Idzs?cdq-*z3i58gRj&4Ts zm%0NUg^<)r9CSF8E1a$SKZedwwaYi*5Ne-nv+&EiQU5R2lAKCvRKaD2r|C&pau zY@vLP%kP0DsoBTEX!+;i2zF*6p;R_bYiy74pa*O*HjEu7EjVKmnJKqrO{Y{DyE`(e zwvjo6O36H14fx|^!B8^tQb&&ccwb3;{?>Z1?S`*~{b<|8K|8kq$tsc>HcJ#+HVzPC9ihx%%1*Id@g1?k!WmN$vMat#CkIlPX6?*l|0m1Gls)cL`3m+u1-}9#7UI_WQ9DA1NOQT-We!sSB7q zo}wMSB%{N;ha?q4m*{`|d?Dq>>Ms>`mj~c>lqhXn*Ft>kjv zSfZ2EX79qQIM{fl46dj?%)legCKzD}-(-HSAnG_Z=SMSX!a|>8So8J>P7QKMjsX{< z6^Jz_IGcCAUus{+jWvJuF_7soE3AAqE3D+@_Tb z;9`r0#e!c_>4urp#qy1Rkq>9@K!TlS>qQbdXCl(P^yNRc0r46RR@5g?jJ1rM@jKq65(jQ*G zFT8tE^!=<*QZo1eAwP|*tmJ(8LY?qIz{jT`8u1BdiaV#LNzL1;u68_3_lMMCsR7T& zQ{vS>l4??FLw~7BJt8Xx{d&+eKIv8bsj0FO7uY+3Koz1EgKzI&UA3$xS& zgKpc`e?0nr}kXf?^kn}{Ov+*~P1L*0?wi&81pKi9AKYcG}}sh1iNJ;3+V zH9Z>cHiIgWiG+G+1Mc)e9jf&Lslo0}^7UNn8HSTs2q-5$;)8HOlA$(MEZ-(f4}*utuRP;I|YmXGHsNW%`hLDSdzfZg?m_7VA0a3lYMmQA;`nlq!7{7p46Q)k5;8aN& z(LbMeFKcSs^X63uXdoWz^4&UF$|bV5Ti|D#c?3$R7~g!hj=}nDJ$bD^*ipPRb@)C< zJ1@%BngE)Wm1Xw580n7uQd5fxqYMhpc0>~cQ&N+A3;iyaAi7N1U~vMPc~TTEfy$ud zn>rKL%O=ft-u~DzuPQt1EzWRH9TriyXDf!&kIjC3e~q6kr!fx5=j5_0e0(M!Jd1Rg z$Lsj&Y7{gXS4WH|lk)A`w@-;J;j=?u7MAwZWQCDB%=Sf!2WuJHMBX3lOB7sjMAs2O#Q;Q9Wi`;-9Qn z)a=UE7DbEtu_@k&VNyfp$nq0KU!C8UV*QS+gND-~5EDIe5+dRPO|J1V+IBqPF*G8x zhiXk?rhd(bek%yLxdk!vyJI3{VaAg8X0X9FFkhgU$p)Li^U$V){jH=W^$(2?E9jOK zzv?hH-Yx634ulL!3oRxj;}LZOivunduuBbN7m|ac5%b3bA%W-y=%Ptw=$p7L_~zDhT2BJ+3m9zisk^4y|a@R+=7#)W1!hThz z(;{2?jh{;%r>|@41uE5$I16#V2I*P84YfXrzh@!Pm+ZGjW%yg6GsW2zMpu7rD62049Ugqpy^OXPZKbfKDbShZa#Ep_7qF*EG z7wy8%F;631#uMx`v^heu{L7hM&X~x#`enezz3yn;1Dng#ZC|!P0NVreN^HCiB-CsH zQ+iExti3wZRSXGdNPBxKyN2Zq3;E^oPP8O;-E$ZSj zf{+Uh@y)$gmeW5k&#n`(Uq*DrJQclT_3XJJ&5dv^DoVn7BODKz^-(I6$E)kdkKjKr z_b4DFwWm^-mkF+3rY=xS$1Im)Ck*7t-BL=-2i|ax>0|ol=F9@oEV+N%MBDNCVY8Y;}3X5a#NyM<0I=A4K+o)x$|RN#_=6Hs;GTuKC#E(jYII&Or89^WA1wAA63;FWgDeS zglKW57wtWopET?yYJ6 zjjF*MuqGc|$Lc@(ZvHg^3yGM+=e-=nG>&Y|ma-kuqMKD*8Hu}%%p*IR?TNZ+k{t4E zRR0UX(Hg#_?+rK2`I(6!mOSJjM=Ewl_+HVxVJVi7M7J@>YyE48YBfJjYT&xPuOK2S z<`kGTPB_QKVwpX#zEn}NAKw$$S9&JkG=BVp2+wWX47oL{It!cqH)jxFaG688X`?W| zq^3JI%GBHB`7&*1?Gxmhw;$JTxwy=9lh8bkgf6X`?urEYWCn>MtgZ| zjO7zMP0Fm|&XvVR?t(EU@}m?b9aVjy#BX6z4IYxFPTGKkOTvW^dGFug@*4=d?AReo z?;2?@=~93H?WW&$`chLKrol8abmP)5@|)<(e(#zR&vMt8CN6RI2=enE#gDk5X5%EZ z{qOY^C{)5Bd5-k+GNd zi*`vP1e-LncGn03W`rMGiDyI*_AiogSz+!pS(NX)7{$|TEHjSlJ=7-D%` z7)^19v|vhU(|jBqv|9^)LU2-3JnH4bVi(Qf*+DQI@xXM=8=h)U3`yiFC5mTaJl-TH ziA?8YI&Ptim6RJ%s%OKt*B{NO_{3hagX3`B$-^B8Ivhj!Ho47z_;;nxG5!Gr&V!ix zM$8g5LBEv*h5==RNIP1xqYm?%I3+b=r_az{&#o^B3J2KN0py`^W4}5l28aC@%Y$t z%2afoA&Rm~cwzZ#Lr~*j$dNn>PHly#zbl zUWt7GS13H=b%q)O5d;01k+Sxq6X!;N+)n@%6z8^py{iuCOM9j9VcqhYA}`yf)8C3y zHyvA>yyj5?^8~xXYj{cyYCSo^-n0{?>J>krw%HxUhE5hhH<{sCQ}Zdx7q^zilw{r~ z9e{xIUdhGN%}$E^?Xi>nC!4<7!iH5hhSy~{*2@AS8JnV@0h zf+FN*UQHDBsL3-WDSw4}@BVowU0bAh;B6aEZ94NxlL zG%CLN4nUroT=oc$c)rdNjMDyth9f1tkdGymB@WkB#G1jp&Gm8pz<3WZ|DTP3MuNJh za^(2d5;m)LN^jp<`r8Hdam5tP|CMlF*nO6WR1UY+!E=!>t!j-Wm|%zPJ~lW}w{RlyLeh63UDw|D3D4!1 zNl&|OVY0g~vIwFoUG{1ONCrc$ti9h=W+0^t#CSt}(j>TzY zLP~!q_Hh?2?d_1m!W}JH`h^l05V}=2DLRmb@2Q*TK4LJ``J(`F<$s$tH^DatwDbGq~0P3fx0Cnk9#ABv@Wza0DTOMhdfH z7vd~GDZjZvawB3vi*V}d4wk_+nPkf45sZ?`W>4eY!k4RjJdcx=q}*f>pcm(wx|zCy zo3@qCX6%pL@6X(Ek8<_8^Wb{*QEh;hVBe>BB)JqEFGsL*NZmx!Fq2 zt}sm!Z!{;5ZvQ57Fnan@N-9oZcb=pPxk<4pcU~i%dlak%}ycX8qL0i&ObgF zeJp5Mv-5J)y?=7@m3nGT=Fs*$;RsBG#Y^HX=j!e4?K{n7u0|z~S2?iGJpe1nfjc|- zBW+`WVE=yrkdtIpJc40%#k_UY0wYBJ_+;4h8|$q9t(t%uu9G!>XpC1Wz9Sa>zHFrw;`TLt2$@i0b{2O`Z_kl^%IlTwr;v$bO zW{lX}Fk(q&1uDL3oM?JHbaILc5itbrAq+bQ0DrXSuBJ{A`;n*p4enOCUBo7G2vJin zz>cR=!QV-u{KQi(RYuQSJ_-WEPzcIpDP~!Y#YdLQPL7qKQ=x3- zo-KsQM~!?;ao3Zoslg&;!lN6Kr=}=pGwsjCu}$MGo%3|lqRBnZ4S`1DZ=XOu^44xF@uPK+QRlD!`j~tpV|JcYvtfOw ztutr9sNgD&<(lKyQnd3wJuUtH0V-+)3v6l? zE295*DIe{$GUDx7M64dj3gnsWY7Ax1D^nGM6rSULk4D3pnVAgTD=E5gGTs=OL#Al` z2bZ{z=0xg{Wdcy%sGSmf_TA!n=lRb9|3#o!;E=AJzrU<@nbFomnuZ)op4+zKMF8pw zOyh7jGyX%H@8IDoh2T~1Me)3Yw8ZES2bA`3`$)G?cynVT=7G|<5Jo7vi`DWN2vvw5 zyfyEn_|NNIKA*Ck{tz&fjDm@fkOj5_>7V`>Q3a4| zja#`&Mc`J6YVSn}k9vLd{@V85OseYq6h%A4O#r_+B$$i|QIGZQ&UA6OTIO$9s#o&G z1O1cj@KzmUme%3nNLh*Z;~VplRyKb34)?D#5616-g7~*Y&vSD^YToboEm=)b*o(b0w7Q!5?zS09#Lt2Cf8}nnOXG#+%i2gHk(%qj6Dww22wx!l6@MB#VGl_BupNs^x<_%PNAH8s$DD#8|&`R zvxeli2xw|mP+mDUnpRa+HLX!txfKx(o9c>tDLx&W5E&t{F6sRgU3_Up zM*?w_%iFgbJRSk7ZITyT`oyp*pb!gp%4408q+XObQfEA!fYy^#_;Pt+kjCL~K&~3I zs72Z(D=TaMLj(`}_U+H#-;B*8P`Yum6bd}utU0{<)@Beq!4F}3OP&9Cf&(k zSWNc=HV?pBnE-yx7&CYXUW1nch&7 zvyw_WQgm2vILQO6QXhPRFuh7lOVFw7>?fx`(sI&uO&v(RGACVKUEKPTkUzm#No!*r z;7hLvsNWcD-#`#(7G(BQU43SYcp{;;boL3Ulg|-b;|_&tVWg_nI^CUieb^IhaO$%M z8Y5Q%Nm~tg9y~hNVJch?E*es$nLp_ta1H8;SWdJjT1Z}%Czo;2m4&nLEv+F7d?Vkn zy2>N;hD*Yk=((MQoQRbR^D^-&%;k&eik#{oYf!NF8wlrvdlBb~qIp@SMx&!G89rc( z9YEaU?b}S!G0rrV{TtR+c{&G=e;`R?3IbZveeXg#t-pXeTxXeCSV)Rv4-yFK2&An^ ze2h~XD%~9RZn(2p!GS>_cIWpB3M^|!dGIVU)x5?Y`4?lR1iLaJ#Sy=Y*_WfN>}(+1 z4Lvf3`C8p2ULlDC-QJLBv?*IY05)v%du?dz&Lo_z>IfKThYvG}RX0d=Vpa5t6)m|w zqzE$~C{|sQ3IHovP;E984B=7lA736HdkyKe2$u;lq5LS#6RGfX>x7V=o5p?>0KnYX zkC}YasLC^L`CvQqD41!#{w`~T-x0A+KnCnGhfpoIQRzfIb|R7u0J?s3O}V`mXlkgZ zfg;CxNZ^@{*hmrR5zwH4W$qaKpn3jTKXIpi_?-rayUlQW2{q%-UjAto1#_r!gcv)y z>M{{Y7C?t2O-VOvu}9qNe`6QS_S)jx?mdFqtD~z+HJtIWti3pG(D-9#bft)S5A-FL z+1U@UFwp216&CB}>-)dfn20B_N>V*%f-rSVP>+uJ^Iv)o=hEYR14BoGkK#7;3sh00 zHkuJOImsHtFM$_8O;b~eN4&O+$->fNq~%Tm#)0#+*Q(op ztFksyGm}Nb4f1Adb9GoBf!J~82nw%vm{oTxYFTY^NsveA5aty1#+!ExyHfU?SVEDZ zV#Pu1t1_2=-4R7KU`vN(9Iv*pC(1^C7?S&Q?)xJlu}1LPe(;Zs2c^fjJ!2^q$(awR&`FD_fSjabM}nsq;z4KCTD$!CmSE_!*hla+-<{3ABYiOtd|kh6%EKrFhebJ)coly)WXP+jG!67iIPY^QTaL?6K;z)0Mp0 zkk)g+$N8SDt#RB3R8?1JK0PZaC}5%>-gtBT_3P^8RuMe!ecKn_Mj4;ODQ%<>;82Oe z>ZW}Qu|aHEXB*)-MUs@3?7~>LqT<@rj-tB@NU8|TdK)FH6G6;$0=GStfDoJc@r^7+ z3`)3p>~1`0c*kVMu{vbXyddU1q|Sg$AKTAYVz?lLUJ5rm0k<1IjSr)LVo|fq{mV8f zp23$8TqFJDjl;uv1#It-zF9=)?mA9CV%l5o7#HQ!$ECyP(96Ro!+2UqUF4sI#5IR7 z;7i8>ycV@^{7)2sY7Js6GH^;C<#Fcbpda`s3(BV;gDYzf+g$osL$w)?-**O-sa4Rn zo0yqBnGJ{F%g`~i60HK`E?xhqorRi6tGFl>WId!46D+G7EDg2D7Ap>wS!%r_w~Uyw z5{Vu|Y8C1neQI9t(iMEuXJY0;A=Ne+rw1Fm)sx93MFOF9u{PuHVObI-;+;U72~qT8 zx?cvPl}=7SoA4dAkUe7v1tGe7ZhGP88-ti8-eXUeiabh|C0{|%g9tS>jRxlmqEIsc z@JFK*qG+~7!EL2T)JB7laIAnb!hiA1ouBf)`tWYaet5a}h3Cd_=2Vd4xtzB~MnhK@ z2es0n+TQ+t<~GQQPh2Wn)G`5=ylr93odM?EjaN5D50`F7oYa)Q!uHH6>cspT=pK!I zc&IV2`Dy$SzeAW)3cRyraVWbdCD0D>Z`G3c#Il&a4Nqq8!$Pcj3bh_D!MgELH^Iqo znacnog6@7u-<@4ywp9S1_y)sMS;Zs-6-(Phhlnv zuFHA4x7SsJMMVvd9+rXssE}TcKuzx&Z^cK)v8*#^K^;s~ai0p>YEboxQ{O~6XNhu( z(^0Z*e_2HM+lA;64;1HCrwhVsH zakAU0C@=;@v-0%FlFU_f^t8&_2b_!Ou7^-{)%&0HPP_ds(67X7 z*VfiDMp{`~Lc#KT9yam(PT#waoq|?{-_{b;-L_LE0QOZ%gug(}@ym}9T(09rUeH5-s z(!E_!K3|~2O%>I8(>S;Zmn4tRaDINicD#WSDN9Kv($4yvQEvyJQ1Ck0qYtU*Qh$Sy z+F&AL{O1_D8m{Qvukkflp@5_6#VB3SUjXXZKx%ixvx_12TG=1PceA{#qWBv1v@pGv zb)A(LMJ!n(!Zq&A$17IbSiVEaxIkXphR>Csp`JUSKTq6RSVoX48thHK9Zhv&Nb8S7 z-EHTeH;^-g9`2%@dtv?P0vU)CG~6`mbY>Kl{~Mc@8Mu1)e%(n}w#k;$uG{TpfqM0T z{mT)P99hMe&~M&#JIQZm#Ie&di|zeZlg$K<1V$(0EZQyEod2DG0(?THZ%QehkoqJ5 zVgNY;r4rNHU=#^*Qr5aBZL;*Xn8v;){U4%pS9IMW#MlkHG2_=KK}AQi)JlL1>=WAx zyOi=9>xy-|zJ6^`B=3Kvx;j^u1PKktT_lTxX&5v=L_a@jpRRB9>T?=^5dPiMvdaD^ z(I6nF9TV0OV#`z%Mr)qozMepgM0g5REr(%r?H=hey1?i{H4B~?HQ-ZwUlcX~Rr zBSSV13OB1>5W8CfiFG0XM*oI>HXY`m4Cu|~a(d!$4DTrr$KjIqmK7Y6u+}Q?<)i9n zHb~n)rW^FXS61n;o4{z=cNQ45H&f4)tPRc<7!JKW-oTm1encd4c zl6UXmuP;zvcsFgxvoOsc{aB1gp`xuG_O{|bT?n5FbvC4gH+~iN1n8CEDSi~6^qWlT zk>>Cdmf4moDO;zmjIbB)GJPES|v%exg z4v z!VXA|)@-;(gx{&&JFstDJ;gF1K%w~#fNdL=8Bdg)*CeUUAnwneuj_p>{&kTwO@TW! z>D=H1JV!Yjr2H#Eq;?uCU+{pR| zLlrt3p{PvOBNqbavS8G*j~E3+|Fo)|{%Q*-7ZDR1n3{SQa-3e2RCGIA1eI5iO!WlX z1gfChmjzfqg7`N_g5=PB_`4uE%+C$yF~%2vqtxa`zBr5xHLOFCI0s>f_xGC_51?L6 zRaM5H_Y5I~3zb9I^k@QCUVsIY3_WekHLB|d^)P_u1FqkGZ=i*6EG{ev1NyXwu2wgU zwzDEfa3d+mLdo9Vo>Nz?=i>ip`s%nQ-|z1MG7Lflfze=~(jklnB~(IDQRy55=?-b6 zOGQVG5I%w;($Xz4*w{c+7@ecL`?>agUcbN9fxEB!T<5&&M47K-Po}mYOig7H(FZvJ zUfN}E?XBz#$^sv##(Ia|;!#4Rj8PNxG$a0k4d|S^)P)JI;in7{&{ch^CFgfloOd^qIc%nH(yi9Aj z0^h<&fIqldRpCEMSeQBXMJQ|( z{=9$1#>g-Dsee4-wD9BQ)Hj?Vhx;K!2NnTcbW|*>Xh+l8QB!B)>3kx}kf&Ev<2v$O z;br}wa9Py(Zf$`Am$y`jXu8ceQ_F)ZakVJ^C!uk>T$36?{BeM*xZ1q%(GyD93pQG0 z3E#WOb_n(({i6uOd~eahKeA4}ak!}~_z{&M>!qD_x}87$-R$JGIDFf4sx3Na?(S4p_tRPgD%|!)i%}ld48q)hO`byZWw#*XW^xY>U(=BW^ z)@uMJFwC{u$WhpJ*Z- zrZ^_$o>|W=J?J!#C$ME@PxyB?-D9i;D<@*I^;{Yjkz zh!%KVJ>@h~l+%Ujb+@bC&LQtx-`7ZIwboVW6FwgM>jaEcV+&>+e(LXs^ zpB$0M{B7i12lCdnxtT$jLBc!HGL4a{pFj0qH<4TQjZU7#$3chv8{wkD_Dz zyrBn(CnHiiXa(Og#Qn{EI!x2y-(nV+msudR|Ceuee+I=vK|M5Ii*3{KTJzHHkmKI@VmlWt9REbbgc%pHs? zg;dhHa1K(b;4Te6U#>f$s=qs*)h`Ze^fwY11COH9$zg*t|}*l%;f0t?oQeDP0m)BK<)6 z^|pN&iTQK6DUnfe_wUweIdm3TMY#rKP2PF)#RYf>Xwi8pdO_l0~knsGVzjGxSd9=^;Rz$_YvwjCwIq z3rX1a?97+R$7&Vcb-)$fX)6^IbW{}-%MdVs-*r4-uYI8DbO-bX%l@&if0AZvi6xHc5Nhx%(=A9G)gTbKqz zr*&^+YtSmO9Xt#B)RY6ccP^ys{ry-*dKbxCQ=0+vS}!}gLcT6c0vB_;tbZj@Geo3J zO!jMtm;Y*WGEQ*CMzKqxkNTscv{KcvbuUHFWZg=}+*<7ov;aYcY3TYhXAX6nzY~~{ zl9R8hw*qN-!-dO>(!6?yA{RG>ysp!rOj>Nz>H=$*%5=QN2;PI%$+>L7K6t#P%{avg z#3Ho=ci~;PKSe=h-9M|21?levcZ%WeZV|3FzE+$tg<(_Kcdl;1VeM6wm89*Wf&%?; zXLWq5(=6!-IApnE6ua%LzsR)C%Cr73oZsgriO~z*+}ng%b)Ar+Vh;R%{M{Qi=Pv!MUNiC9mS_-9Dct`rHi+C( zj(80_f|hc`Z|R3{pr%msGw65jM7ru7hymYz>%{QBWI`lQARM0|&x#~u#)FqwZj~xy zTX%-jA+0eL>II3b!s30p9fF6hlDsZn`euq3h7!^Wz3i+^QnXZoLS<`_>A3EF}sVm_q)oju)hXf zNkCRPT63c#ME1~pUFS$>k2D>lkcoR1HY}2zC22r(hF|(Pi|1uA{hUj0zCT`HuItJp zfe+~*YFKC45d|h&_6uIShSrBk%%e_#o+M6*l1ieY#1e8aydd?qcZb_Nh=WKwM)`n`mY%eHzDtj)Szx>@Q;H+4b{9cQuK`7OOwflMEMr6VGtBYkW; z@1Fd{C*>4fp_#rYx+e*jqq8SoLakq*9YzA2Ss(Q1ww`R(w=hA&mfw!wwMBH*1=rF_ zms!Y88;DXMQn!w-R8>`B4G+n0{U+wx#$3?p9HPq^&e^fL>QuiTE-DoMfoP%91TKW9 z<>wj7O{<+Sj8ax#3+~|2vd_lAy3_v0o$})c_)^yboO_(!A2V?IaDURo^ZA ze4+C?fkJPW4{|_@TNzO_d!00olumC4vY!K?dGkZh8xpou9Og}UMQG508)SJx_UJ11 z+EzKe^4^HMIz0yETKrPJupem7Jj?1Sc!MR89y;SfX1=S8D@@1kC4fYV(V3Uu^s?4r z%)k04B9vlzbrm(w8+J#qgl0L!67IIhO`{gXqVSe)&3IkHQtcycM7iY)?lP?k=a%k? zJ4lDZxJFtK8YS4+r&t_qU}~Dc5VZemV|4svboL3Hv{0z~;$C9=Bl{5XTT;%P!k!zS zWM6$&%%rX6v@mehxwijWMc0urYnm;i%MypWQB?Sjl$y&C{Z`F57lR?G=$LbFp@U%ZkCL;a+^{QiAy(e&}b)&`UE2Ga(pzdt=%)&D>@ z<0dsAgIS&-R%Rv>^TRa?nGQIoZCX|>UN#~ab^s|_T2liP4Oq}BF27)kr-G;%oAElO z!f2tTWo1_gihIUndIX>6&hkfZ88nyRhG_?T*06i2(x&`Xt2M&I>eyQZYvh9?0|ucp z*{xpB$E#akkGNXoAGF*azUen|I@}l{OXRi*CW-s)RV-*_c~$2{2lRNz3D->tYtc7n zczUzkpn6Q=Duq+^SXnsjtI4|^DJ>@ux+MmG25o-eKN)gD20I)f#jxWfx=w6L`=-Aj%Bnn043XWZ87f^8Lkhl^)ztM}WmDBW#RxFwXN=lP z-RW>cAZ`TCc?SyMvy{h&GX6;EjJS4km6n%3D|^=4+KyXaAj7Ck0=gA(*F8!;XbLU< zTlQyLno~YI@L4h%ANtUuV1{)z&BM4&2vYsZT|M!l&>z@YN%*q#W{HP*vyA<}6Gw<| zrtd7|HdRWV-PGdW@8O!kg3X*TFuc4-kXlD#4E`}3B5UsC=q%xoOQk#4h97VoXp0WV z_PIzJVA zx4Pr^CFqFRxw=FL%R6T9P3S22UljGa6vIOQ1Tl~)Sgi&JR!4?#`QW^li+24d${EhB zd=RJ79Jo>|I&-af%9kF~ko@(C`F$~%iO+@MFQ4b2y5!-7l1-XqcK5oNkm-_kP{<~j zl+l<`UX>&1bV@qsbUyvrKK_<(9F*gQhoGCZTU<*-AOi6P;ctAtyX>5Leb6p4h{b!< z^Ceb~zYUsU!uv0{`)p1qB13dVb*=C^+=tMBW#jdLR(hHwI|P3kigdDEuUAAV>2Y^N zxNY?7`>$;nRc>nCgGtt@@aJ&yfLruMeJw}3y;{Al2?##3&s2>D+bR2@0lvD7uA}1gMbT*On?Kwe6_l%{3u`)Unx}c&w!>NR?_N2x zHBp@3`Wz(xh}CY|zah?kICjOo=cb#j{0GSoq@)1EE>Afz=O$+J{aPfqY0adhs1-Y# ziq??}$vl1fnx3|(Qf|Q7{?;SbT2-U^zrp$?0OfQme7m&K+liC04R%04mLct|E2>n> zk`Q^(Ig0_VW>{=*BtmxS%|E@&Q6P}Hn{Wb-EPo4V1>B~sC2sFL#vl5WiD8{T-uynJ z8$Tf#>{{FZ2-CJ)!B;Qf97^;V#31-(sWDq7M8SN4ADrBYRX2xS_6725KnJMae@mAB zfZRk)&jqf|S%R_2f#M6)8k~W@jh#z(J?4YOF$G*+5 zx|c~kunrZH^<2Z?x|0uh#2?R+_Amw%Vt+V4g-B?qeb-pL#&hss#GRn{BdT&di|1Ci z?)~3~CKYaN6%7q0aq*XmCHJjOE5iE8Xkh)4$yyAV`~s}qH&$%$Mc94a?5Ye?*7>sO zg+r0OeotbEfyjs#D+aqaw_7Oq&jeClP6h6@-VrHrI?i_nW}i(G^5|@?<(yM3>RPyX zjtkwJOj!Kvh!TfH;=;s#D+NH#b!C3g`4z!0?-d7C_ToQHmy=$y59~njD$(;=Zb*zr zwWr!-Uh_9JG>id^yX7xH$(J4Jsa(Fic*Bqs!Q%#_+=HjMf|3&)7<5{ITJSj4ZEP`r zvJ9o*>XfRkhM6D_h(ud~OSN7nsf7K0&g;X@7NVu!MZ&tIq!nq4UX@9>L?+Oq8oIE@ zyY-MksPV{jTxuASlBVg>`!(b5k=!as35Q<%CbhG1;c8>tg%p`>Y-HGdnQb;BOJ$pJ zyHo3v8%ZqU%A|b4TOgPJZral3O*(haBjmCYP)7Q5xP%FP?6G?$udXSfjf=p^`_sB` z-c@OHsHiIwmu{;e(Eh9C@5)8T(TRm>volhUjgH2D`SN8yIp`pH|8(u_w0fziE+&LC zUW5EPk^LW{b83U-*Sg+kQ2)b!bhXKCgS+xKmI2`_-W}&ZLp)}uJnYhq<)LEfm~;4Y zO++3l@(=V$!O3Jar<0OxvhaIi;CAkpRp==gkR|>N3~0%}Fzp`;%6*pS$(_&T)GsA` zVq|3WzhP{n>v3Qin=r?<{_b({Eb#sRZtCpy^bF`s*&NxdryHyrs_*k=9Oy3-OuK8g zB4#p8DI6eryaRU>;AbfgD$OX<=CJOQiOecf>j;lG*PgEp`6U(9vr=Y|eeI5 zCb~g1lP%ZjK)Ab?_ug7_*?S$l(|*z?Z~{Mit{=;;MVgdGqs0O?-OP3os34@Ln=IWH z36@+0dDP1jtPsGsf7FaTy1zy2V%zUjgcuHc9tlE(%|(ywkVn}`CqnLJgp$OtNZeKJ z7IcQ})>djQAJSIo@Cww^(L()bTwaimKNIk_cpOv4(MfYuY z9oE}Z`9l31oSeYgt9&z4<@+DyGIal^FeAU;!cWd$mIogyYu266XfNBbJ=NyC6tz~4 z=M}&V$}}DH>?bK7BvF?6K7`AKm2NEkh}w+8mAkIi)~Y0BEllYQoH^xViHOwcMas>C z8cxXj6N_(`4Qr*ETg>q155Q{WFSesl3G7XYeyP|v#knoSk^6Iv(6#a(71w%rX?uGR zG}fIl8&yuS{Z^3{G&2*_e!UUiTfeg$J@xg4pCo&a%nFs;wIa`@;R^>@7{%UMxWwm$ z6n5J7YC*6k+yn>d;)b_lapOh@rLx>%Er`mDI3Cz+jfmNW@eKW*Y4--R-Bfzcg#jyS zsbLKx8{;>Q#F>M7|0o=s&$49x%YB+tXciQQuO+$hQVASN^kiQR>=(2+@Kwq4M5A_v?8+ABU&iUX&w%9hYc@CY-*~j zosR4n*EHZBa1<&K6l8+3;`3oz<3bB6k*3A0i3*z!>d#Kr61^LiOiF>;4=g$_1)&Oe za8Q>)RTw8*8|)iWj=jVK@gOCU?oD2@YTl>TaSM~FrT^0c)I7HCVSG1dZu;Si%EQ{Y zxKCigaMO4qP(9{wa@q&GIXODEzZpLo+y9fVq#x%12r#uhKz@GQxH4Ot{TpmHxxg#X zFC6CA%>L~-u!(1H?2WU+{zTZUue{;XMf&r-)R@qqJjX_-bM-jU@g-lIl7QT~+D6R* zXAc9U0lQT`eeHb~n(UbVUB2*y!S|j%JreKdG*wi1MAmJTYK&X3`s+P%)^iTSF3cD= zND}s{gwOWxmw1#~Bf`;;EBm8yl8~2Z$jW&NA$4R>SqYzlU zcw!4SOJVMdvh9@Q53mC&2FExr%aPLJ@h=g5W25NRJ~!hJH7ZBqt|ubXts|<5A~bj$ z-7>j&D6~a;IaE|t*WJW^*A)|(7aPWDyE^j_8a$Hhediv}{G@sK8jz5>F`TUsxMpUw zC6kADQ|$Whe)Ke{qW5-6yLm`P0Far!d13_pZSE&FIT@(}q_z6EPt-Ajl7o1Ks(~9A zT@H42cOH$N?EFjTH~gh-d=rSbIT36M$^#M>)lWzZ9_)auZw~=5(cs`<6i{vkB_=m4 zBQ|!cniN6V?=pw8?_DY6GDyDS%blm6aDE@J$8{#3gK(-yrFeGBU0o}hzOj9mEh>uTD?2Upe{dcch>EF#K#Ni8P0bfL zR-1LLyU+-F(O{1@;$ZC1>D0g*K#fGV0D#L-mb`NfvxyV*Uz6BI>7fG4_~Ku2{(Ief zm2o!XbB#_I8)pW^L)6uNh5qcKB|u(lYV_ig4e@A204)1bDg+J}84$`E2!iKf@HY#w z=C_dlIrJZJp8Pasv+b?wT=9bq$M|p5#Qy!PSn<}2=wz`6zNw{Py@6I6^9i0q0iUVP z6BWTBuy4_q_(Ec>(Aytr(m|?Is?=JAoFg)%@nA-QRbs<{B%siK)B13$-ZA26Gvdnl zFL*&gKuY0Kel7lidu7qU(x-AdVR?|UIcvQK?x=qf1t)ZV6akaTvx9+z=yz8jcXgQT z?d^Z$+=X7+a^JnCDJL6i{%a_lC4fQHtU|B*y)FKAz;|pMUZYbRK-ki+FBQfc;EQI? ze$31AV-ju%ipOYcTw*WT-fLk96f@m#W$jopJ3AzU5NjQ|8jxm02|$VI+~#9<<`)9N#rByMQ65FIcduI(;2)2e~50@VIafWLEcb9Vp) z^z3B(EPniSWjuk**?^T`-!J>x+1++(JRtpJX$(os2?l4pl zG9}V;5RcjX)Z!!U0%0C9G%$z;tkWDmBbHoGnEv#6qILuH2tdh1VO51g;xX z?fXLmjVugG`{rb{r4%Ur0V`O)#fYo}<*sVX&mNds{>8@j>2ypK>gNSPo2AF#4?H4g znZx+yg^*MwS%WlzkZ-|{oCRc*(c%$EC?$0FpxZ5+e$%&7oPHuZYlUuWZ!0d9HJU@) z`dx=aier`P=M@I^f$K0@r7{yMC)kAN!sC}>6vB#5N4)aRM;){{g#nRH=d^Vz>rnWTii#r{yY{!Z#sf{F= z=8mj4JtJ0c8G@gk=5ukxkbRCOCh-6Pdu3*p2t@B~k;=!D)pMC|x;rR`7Wa??pR z?d1OEjf7_5V1Wp=Vi{@9N%*NtmEz6DE(-scAA9TchQ zks5chljg&Thk3JZQ(+K}#&F1{m35w`dh;ob6d%UT$RG$7>ll;BMo}#;Lp2(;Ys6Gf zd%uppploE@Z>vZC-xlYq$$8FmJ_+uS|QPeIt?;5*6f9Z0LJ`{j^^riF|r_j8w!M>g;bGv&;2+?IYn$1z(6Tb;XT7Wu6zRG|AeSh&~li|n3 z-(R#g$aLO@X3(~#D_{uSJg8u_m*PY(*(Ka8Okpw3-4T%+E|JT%40}D%Ue0!bgP!C5 zrRpQT(c1cYPEZqX+?iXJ#>2~0f0?IwGj7=)kwLr0y#`Tk|Miv^UKiy?+_1v`J5<1V zi{z)UDK>2|l)esjIV%YopoE!6BATV(U{Z8&biCSIQB}nX2&Hk)?Bs)zwuQ#P{m39V za7au6Qh=H_Q{G!7fk&AeI1&E{!RmQq6Yi`mn^cw8)*7ON!!A;yIbXr2t zKI@2dJj{59C>tlULw6GXK{G1fhZhNj#eR|v4bI4|8ucp+0se|wg1X=OECyUa6OL6MK* z=*OvWq=E8Sg%)w&^Ofpfu=Kv({xj=nWX=%UuXn3VbG$Q=ClQnviBqs!MbW8tArJ1k z_#6!eT~Jr;?ZrD1SN3}8PH<)I>CoN_sO{)wx+lvO)e}?+y&4%whmIrX3*RA&9L~{I zx|H-rU22$sk?c689-x050Ky5((XpA3#Z(#hYXZj3aHfiyFL^NJq2UFN?2(=LrH z;|A}qPX9;Vxa_1x*#xQssT8YeS{g;Uumm(aFY&^TU&B9xfZ)%|h3}rdHZe|)I9ce9 zODV>%!RiVO(XMThca4DR5-*#RvpgYjN*oi2am!x1%dH~pViuyZ zK11m=?@B>A2O1m5>w}W4w~dUKvd*o8v`BTN`(`uoCL|d_(YS7vzD!Fm#R&}I<7kSv z%JWyxo=&r)22PRRr++sfjjc)OZ}_j zbuZ)<4A7j9RZR5*dBp`wbu!s5O~UNSBOI-=%7fx=mznF?$zEsH=|WZqnKu44DF$M*uXHAG#ZJ1gk^2!)XsZuM>DcdX zQMZ879u%OTsAuo?iXPm?p7U5=Rn`nAMIxL)&H~tJ4TPHVi+(%b&A7nxFRiR(Axm4) zif^Qy8g~AHe*RW7CiM!(4W;{?oKGw~T+YXhr;3$nt#^04N8TDi$lqm+h|@X$kFhx= z*Q+DVk#;kydwMcA*}|97qLD3DQ~u)!Hl0F|$hkmQ=!>bsc?GK*lG$qWCvkKh zUi7+j$O_#z`MMb~Kmn`eNapTAZ2(VaicAAedk5`#Ppgai>8S}-ZYFe2zpx3xCDX$9@C)FWyPe>+mb zYVHcan$y=t2mz-2IG7SrY=uf8C`@~svA5G$ClP&Ng>t#E*58yqCjjKKUtk=_x@N-_ zYPP!qeS~YD*2r^jxGH5~3RS=54AY&d#W*%`y!_ahP@;wKo)+q&ExW*A$=5`3 zoOHH%_x^h>)8pp26}Nw@%}~WlL24Dc$#*}~!OU$$&Ril3?=%pRlN5E-!B}pj^#^_5qabPOuO|HtrmS z+BSpou?rdJ`rotGW-(w!*=XkK)z91zjV>s7L{Y!=zR0w}Z*<8e;lsD08h5jo8ohE; z7(8?lNGpX;(nK{)01E_u0U)ocM{hs=Z}kg{CWfTUYL3y%2`hBSj(WZFpMo;>O{G8_ z!GM~>K@=g^oVy$GB~rxjjl%qGn1JRf@itOZI$anQ^NtRQEYZpQUVb0)S%jm@nPe4c zt?5uV6?eHT#^KuI;8t+tm(rFeK=hzo2gc|8Z-=w&)MUyAlQBF?^ZZ%4PKk4uYSHY+ z#$!c-O-)&bI7S?Ttf{!P?e>`ist>Eauk0)bT8%HysSe;5+t{>c^w~QGKdF@zOPDR+ zcPw^1qO0HnsWbF!h2HxbTkUSCv(jP1OU!QpZ(EO zf3B}4)o1*saePUAbl_2MVRV7hkwW6_V$+_GXKGjV)t-x|`Y}-u{^|_`&)!VCnNzSh zzq2?$ps&?|%l}vU-%aj&4t#2iI5kaXFc%U0+!$Acn*zIvJ`rNF!n0$24T5Q3gDq3{ zJV)PNRSXMuc)P$MU=?nqZT-Q*Y@-mAtGcFZ|4I!yBN@})n2{+08-fy}F& zkqr~=e?N}8gtb&N?xbqM?HieZ8cm){$T$zUYkp0ZSU>qXJlU;VTTt+H&ISqSvZWr% z`uhpbzKo)l7&#YyH0@B2ePbW#R)NtO3t zu+*l0tsU<^&nopdODC+Y{3(=NB?KGo*Ai+;>urmDn^?16h@QSoBZ_JpC(G6m#_%_9J-R_W7>)*B7zZI z7B7GKCz$)Op2v)YVox;209mwiuXlu@)mGDHvfC=8TCA-u|LcuOd6Hv<3Wq$OapZ_qFWHvcr%yiPsdxLxf%&QW-}p8gg)bJ@!=y%@?sl4MqN5Exma z@-zJk*!($rNF*ByThJ6I3_I2RKy1HqL+j>~VGqEL{BVE2iI*ZwYa~-KBcGzV6QfYM zJrifQV2g{f{drxXA5Io_{CH(OB%6(GgEK?e>JJ z%XgGGrkEHSH`?|4OSwPFC+50@&vrJ0W$mHoZM#3%5a0fl8aM$V z#|rnQ)77swr05K#H(ScZUSt>gDZ?RqKDde+BEzWTMn`Q9(@##wiT4-2b==&xjB(Wd z@f^Pi4|x2aWk`gq^iyeFv9|7aEw7-8#K|{}M04-kMmF`T7ggft8Zw=3NQhCnZe=j& z+o!b~$dDx{)9zVE#$-Thmdjfx`eaJ<)bbcdIMyBs*c%0oW9G0HUNAw$P;8F4T~{Ap zkGS+@X(+_j1>whT+Xt0@fLjt7stwv|xhufvu71}2vhhmR;h+2|$*cqICA!t#crSod zlLMS$O}BF-Y+m0485@>Ba_HA!YTV#=7bp)eDbCYmdUt6hoU60OW6dfS9>gQUie8bJ;VzBXuNlIqo@rrZnI<+sk3p(9-Fn!pHaDP={k6QM-|Tx6SDF9%`lwW^M(dN zr0^5Mje~?_2pf)xql@-;?ebGEN|Iistn3Hr;z@?4@+~|h4p|yRFC=7dLQ^w^jvjH0 ztxvl0CTY$>WrfFfdZM@a_bEl{blIp^kV9+ss8E*d(gmKBCi{BMYy%RfSjsNcmis$G zNc7ub9l0@~>7@(40%2%SE?}Uc#AEm`jq%wAhvIW+D)W!y14^}Rdgp2NpnDCk^(1M> zQ*-V2C5mB8s^Kor^eNZLgk=@4(>p(kf`ySY0rMzG=7Q=F}g*ea_cM1@&1Z!PXg{l^&`6I z=aX5f?7n=_{MOW_45Jr~BH3O3`#5ZlLAHB(Cdd2wPmG9bG3Xwf4S+{VgJx|C*zX1V z?)T%&Xpb}Z>IIZeHxfHVk6T6CV$F`HmKL2QFlC>+&BZw+m9wt-Xo?bp|9P4u#0Haa zu5uZbUhk~U zj~-i3fZYg_M&|SghCRmGLs^U={PS@N;x-=L*@@zSnIubVhbg<2=qVe^NAR<;S5)ifp;rC$nN0qL5W#0Neqytt>Y)tGzF zGnA~MWRQfC#}NAd&c?P>lht3DL~p<2O2tf?Z0bYgL2l2<#+YaAY<5DWe=B7B?J8bL zLd1hB`y++y@r)x|@6ZL9gjXDEP)N~p{i`}t!cy&Pdy8`H3szD(+BM2U(i|#wMpyJj z{jNvkMAyC^j%H~NEtP%^)j7}d@^mcq1~jC1W}7=q+9m9kO{F(q3(lXxQEtbs&4FUw zEv`vMPwes^p}}>eKn#_)2QoyaRb%k-JzBwtl#fb8DuSdXcWM2qXK^f$B()_s9nU_U zxcHdccjo>6U$c|H`+#k20YK-No^Gy9J)5Oz-7n%@gRecB5XNKQ!-f3m^zmaGvWj`* zc#BYVG2j}BagTht0AVp1SOcadGH~Fk@;*vr`PO_>(NeYlft&vU)-2%+(DVtKJONUf zK2yU~&_^FvFIVL1KlsI*uv=hKY8VxIwP*Y&^K4i9MZc92c`Vx_k;RD44M4icsHc8dDy zigFfB1gFf>s^qy7bItaO$}g=)>Zs2PZT~3nU6}*J*`EPxd7E> z6YNbz3p`>zx36L<_BHsTt{6B%QGiM-t9VF9rD6j@z(CMqbPW3QVr?U^1W~f)MJ87T zC?9)oQ}@utHD<(aP!wh-h1j?8PkGjPJ*R&lakamj zM*)uE!{?ilQ&FQ63VB5^e(>|96hs&C9+fsS z2osZrT9@TFbd;pWKEdm%Rb+glQs2)4$rMlFf<213bcfH$e?U~nB*!7`k3~Pd>tmln zc6?Thge12gSF*Tt4qx?09QD^h#c59?p`Wwe*I#chVsv_9zbIpYQ2uG#2I4Lz1fmtrixvpBE* zr~Cy6@#V{MU!50RjDHKGZ6xCJpc?ZnAOBAaa7|xNf1vs0PdM$sZgE!2`*1phOCFzQ zoEJX}?ac?zKMXXFB3~X=SXp51wS7`ersfLAC6r<9Qc9&+Y{Z&W>rKAR74pJfO)9uR zOkbq-*nCMzPSzw-$w0G>mh&utqlgZts}&0#hUivuObv)y0*8l-EVuq&>*K%pEGx#y zx#4c$jAr2Vz;&9S65NH{yFeBQ9Jz=EbKqWAGngY}C5i@a#F9PQQ_KFf?rk~2eW{n^ zhk*5rEQdfV2Pu)ytq&P^18rF2_7~Ci+(adIz?}|E_i6IPlQHPDUV8WT^PnrOB4rW`PzRW5XHmTW7g^pYx=^CpVG|I(l=?T z{WU|^>b|&=|8T}cKla&Ica0=My;0ohk08uB1189&tfU_sBv#Ug9mW2??%kEm2_J4; z_89iVI49hlTsJT^QnMLWZw6!D@=Ulcx8!EB_bvIPv{@S|_D?-*=XmQ;k+hO4bz|YO zt@8aut$NeO9xXUn<$-Q?^X~5L`8B+NrU})SOUtH63`&c6%gwfRLE!HM{e_4#$!&uvvt3{kVoDPR>k((y5SOzA^zXABMCh_L)Gh%XH^)dDcYa2u`Et zNa9AF#zJv=?b+4q(j0^S2ouZ>S1+{lBNZ)H29mCQA-hXJdM@p5SZmZR{4kMXE4ul! z9f`OIV&;+$rkG`YSi~wzOZ8B7{+qsDBW%e2n^Y`izZ=G;+JE;i4w)MZ1F?qvxNipSj2E}AG1-*gy!rR8Ngedw z_xbjxL8TU!(txO{U9MQLgs?L9X(Jg2OCMFwu>(I?;Pd`Fi(htcp3hvn|4yXU=-Vd4 z_}tDK_#Ux(XwjXhUluPjz=TM)j0W$6|UBQawTgKCnJ_UnQ0&wA}dc zm!{P&bwKjrUhKf^`oveW3tX7k&0%mqp_KyU#`Zg8I$kzze)8Gw)3gHk0BhrVxXfqqe26W%pC4JyTA;%540uTD&@NjIree0T}8IVel{|2!fIgK)Mx-D<;K-1aD zse^o1b_ry~0Wz-Wzuwe0K$J!P31n<)e`HRHmF!CZk#1$n5ZhK?ve6o7H_)=~Hv!o> zRzSli%-|?KCFH%CP#M*(E64c_fze=)#bg;Y`kTG930-SItua?2eq;Y*OF6^N-Wp0s z@s*7YH9Z{R?}!p&ub5kAaB~g|tOk28O-0!|My2|`FMeIL@3V29y!_sC?Min9LHDZC zbjb?5{$me9?mlZ44UJB<%hUPmnm*0>rp~5JUOql-fc8NA>H@_dFfAR2hkjk>d}vQ8 zf>TMEGKXY7;=>sbpnzAI<)Bjp?xOC5N>1pZP?w}(K{zqS);ykz6xG0SY22>}q@%^% z>~|ZS1`e>US~az-a+UX_BN*EbZSNPBxvQmFMYr6834s7$@5bkC16m zBV=3O)rsEHpTx2GmUHHd4^_p}Wpp!DV~3oL>^A=C77xt3vh%c;$TFn*4}?*8WgWqP z#X*LMHepYXzb-f!&djLnKJ&MM-4&Bqv&|n^YTsTLOIxVmsRJm++nvQ_0k61j>q0yd!TN?nHwO)sQCIABdQRow! zsKZpgAcZ>85|%SphU{XshTeu0H=`IcAf2iabdfWMvn^5f5J4(t z%@iWKZ4qUpN3Oa$T%(QX$Pm&*WY+Gt~X z{BdtAzH>V2RsHb+IRz38dOD?z=*Mjf{rOsT(;M(i|IIFN@EaKcqrb74+@xT7_&XUT z4k%XENT019ndCKCQalgko24IB9fD>D-DOmpU^2G+pL+{H=vS@kL9~j%Zo23E?p(pMVvlarE&nNHlql3L!3QjRAEDF4(f*~P9+ zWTW4OW+G?U`LfjD3=yQ)AB5(IB}O+5QKSN!RdS{w&%>>L`ua@W{7an~klWJ$P+r>p zCD#S7-*&3K+`R8Y$r;A=f;G|2mtrNw3#bI@SxA80`8y6=WxmNg^vi%+CjVOaRQDs9 z98VHWB`~FvbyD9PuTMY9xaOu^7s$e$DsxO=!@Ogv7Gp`gnz8;l8AW6J@NCd~t9LG? zW*2(0Ez(+GXubaZ)%-)XkF`0Vg(N4Ff!BAb`5t|O`}*1?^N;r7HJl1QV<^T|_l}RU z8;|ZN{er$Z7>3Z6MAXX;Lh40}i-hI}gy!j-(W#r_jIu{l2eXif4X))Cb*Uas-kwxh znn#{oS`7z`)ORI1_ZY!xwB@(_Fk~}ABuJn*vvuk7^vtNb<6qdNoCGQtkeT9v-DNqwZiLHXmdCeZzm6(NN*Vy-bu4% zZ;<;s5Sy2ZeBe$9;{_7m4CY2@qYPK>*B_~f)i~6XN9X?+IP)lFyY5{Z8{oRCrsy2BGZ?koc z6F^=H+r9TUh=f3CAnG9764ZJ@4c)k}ynP?|M>cqV4AH9ecn1u4w`-Xl{w_<85gH`d z(w*Xy6I?v z%v(RLG0b)DWv;Gjg!kvH%l+4H)RTyX3ce3TIP#pSYbAKAIM-{u&4(}+g$Kj1yYl(Y zbBk%3c>38J|A}zPM3wd5({L;4M@XH}?)6xf(oQLHsmk}i(_%g@x8vAHwSBbDM>iy4iKS z+#c^SJLs0m;c>sJ^clUj(Dc}aCHGCCGi!&81r1bRO;K~G5{9=$eu)4qjbziG7wuOr zv`;uyI&~9>OElUwcXk%NDM?LVPR)y`vLx|Mdq(t!Jb)%vvf{sPHP~78Ix0>pK`fy@ z2LIgo!7x@<>bVx29641TRormeSahD+coW8 z(zir#?0s6yb7HkMr<&(SgTGCP1O8^BG+l!+*4;6?zei@Av)J$NcMvj4c8A^`Wm(xQbks{%39j zFqcu>?yi69^moIxXVl~%( zCi7vylqR!odV*T zQjwIqg=0Vmb6I)a0l~HGDBI1ltb^9G#|j&22Kc?c^IrcdRY_MXfS1XYgiFntmW78a znQQ_c;>$aKeLa)$wV#-w_G%putRnJ&^Z(Iw)j?5yUw`TDS`aDe4(TrG?v#{9S~{e= zyE~*qKsrUhr6i>53kDqm0`lJd&Ak6PqvPy8d!KX9`PA|LoalA%DlE>$`%aWjKg$6A z7(oNGw`B4*5sXS4a23Y?fCO8v03)^-KC^hDMUTRvQBb)3(h-WuEy#V1QQJ0r2A>f` zf_)M~PvDjmz36}VkL&Z}%@#GD_?4zU~-V~Vp;n$4&$$Gc%4%Tbv{~CDyCOIoOvT6lTf*4;%dYUB4uB{#@DV+5S*-%vuy(?OxNxKCS~wvOZq z<@ar$KPB$)61h-bW=fM;#~Bi5TF(X=mM)B}%SNaK$dlLkpoYunIr2`t@?}~8bBkyy z(B6V6n6>{VU_g+L6m3^tZaw(^_*{JJQXFtL1enO7dEvm%l||Ys@lEx0^m%d8Hsymqcl%BF)$UM^qeNa^W-K_-e=+vSu?IlwR?c1Bam0ZsywPb z(b;$G^1t&dizogq?gA_eAU`zaNy_{&M$W3RpdTzsBP#Ul#`%^b`Mc#ASpU#q%WyC$ zEZDwNW_H`&(!wKo`bMOXZ1+!q7Jq!hYWf%YH{TjxUgjY{uq<|&$qz5qQ}=pFR{5EO z#Zz8L%|r_Hk(byY<1z8{ky_r=iR4xO=~<71ne+W^3lGoHPxtGa;VeLEqzwNoH|mE5;1@w?#0L$ll2K=&rr_q-}#X2TB8Dd@Ke z(M;TdzF0O9EHWa4sW_0ZZGkT*Hy0!9D@IL}u)}|P^HEut5~yFm)@1ICet-2wMIq78 zH_o1tFK=9o(P$Pq2p#xWet*1MyS#hqHaGp_dLv1TjHy#*Xf|~53$w`gf~jL!Rb73z zqbZ1^vG0#@?+$P>cs+SkNk;4&>#yOgHwX*zU5MQSqf?xEh zlnl=mFJZQ(DxI3xSnayFuSF(Sd)-oiQa;Olmto*2~a~)lai7;S`460XJU>q ze`#Lv*?cxYG=MQM$)FAffS=NbfS_H6IQoekJU- zg9s!fYBwdJ-L9QjEVjy)2iVeCw)UNC81!>cMF)@n^QR`fqVozy!^eJms|L{U;Wo?9lnn{%elunVItC-<47x9#1&YBm21ROJ!@v zyLP}O%OfssmLC8cc5~AvmjBf~#&>Oha(m0%a64NntEs%BAo*8IyQb@tu2ZT5+U=6JI!zFbM0Av$-yci5I0lex7T75DE_l7NQzUJDm3`h zhc6Ev2gDg;zoCV`kF}ydPCJ1mVNd1vgXx387zlqpy|4 z;B&m1xs;#4W*(Csg8TZJ@hPLHAEU*^Q{@yi9A1Or;{2#7t^vw{i>W6p^UJ(t3&2xm z*3$aaQlh<>#-ge2*148wGNlqU;=*-H?@^6_cAwi5d*x#1&OO#D1ztD(dm-^yyEO#V zn$4}PXEGk+#K8Sc*KQo!?CA{;A0HAy zEE=!tUH98GdasawqLQZ&D~4;Sc1$kXlI=bu_U!~&*p(AR**mSW@SS4<)Q&b1pL<$f zwIcq8Dhr!~0f8>6ECF$fbKhvtlyu&J?d?!}3O}?lqt_U)}}~{n+j|gn>UsdD@h_$tExLN}%2lCsG#^9ezS1%0NW}8LL*++b)4x!YJ zqKm(xaC|+2h3|?+5BpDq$XA5S!dpah5t(w096voh-Jw3V#SsF9_0N7Hwjie1uuI z3n?o7N9ol!@3o+ZEnp|5Hx(;MhIVn~sYMJ&OIkus`*kHEBKYm*yLjzkXlT1@$MK#B zhIWXLPaKV&;&ygDdDf06*?d6~D|PE@j?4iIs?s+TN%(ZW7^b%-O_Bs`;|hB)KSKhQ zM0*_C4;5hmt~lKp)i)Y1Hh4pk8&hvib>I&?)^$V}G^NYn=cWjk!;_8+>mlgG$`UJ# z95hR&M0Pn8K>k=YeG%>WNzS)k&QmMDQM@ssm0d-;etoyXYvt=#HL=I51*Mo7kn!W{ z+IS#Pke8>dO4j|FnW`igK~6txi2{HzEEB1NOY7^DoC6OY`+h}rg$uORhubGu{jaVh z2_G8t?PmtVzvDd@i3m99X5#UB$<=E+re|Ol36`?UqNnm!bnPBYBfneFZjrMZu^+$} zV%S!fzG=TRf7m6nc5%UhBU1iFU~@dswuyC5_(l;IPaRZksSg#O_)9biFKjtH&$~|w zKE1iG-q`!nCiO zi04RLu`CVxx5`R}X;ro5oVtTR0Ts%ZGeqwi1P`yC27a;AH9T$H1R~8)29d&3!)WCc zU!5&km6>$xx6VE4}ipFB(I__J#l8G2arkf^lzJk2Fp{2baCa5FGAIf?oA zQ9@PARakHx{Vi|$(|k5Qt!3ofDg&o&BwzvuYJ z5G+#h!5~YKtynN7zp_YdON{fj$_!|0{S3V)L1<>n5DNNfX+?x~>08j^cD ztKZjF9NG^!Qpxhi+5Q$rtR#N(_pIuA%q&oCs-GNheH7XE-huCFqu6xRq9h_B>e_yf#Z8qw_tT588T+u*e5jZW zohTB&GE9d{7N<(W6a_BdmEZUGS!B5>?e$(nRYbT^)4g~>r2(_ zc0gnIOlLr02Pv>A9PIuF8R(9_E2^A_hy^{ilVRZhW_2Ts-;?$yt}4RZ#AX+i$B-i{ zhzPaWuEh8kddzksD2-J7!kjdm@AH)&G07lH9OkIuZ^$A4P$i%((H`FA?h>F7pPn_}&E0%#o3ML(;G!BswvCI(uLh>;D3}@}g$G z|J&@1Kxb!KL@Dp<{`fIUBj}gT?I4;&%!p(ViT^Qf#%v02^Nox$gb+rWDMM1)9-2l- z=TEKrlO{6SW+)UkUf(`Uw?H96v5_qC&${Q#%0#gpp2Dny8K#j)lj$ zk{4ECnj=7hW0WJN645UN*>g6~5uOwO+4hmhW|VVIJa(wG-%D^SkPkjgS_94ph3nD- z^Cjvep&z(Q+}B(>5g=epU)~Wv^}{nik27$#WCIA2$JX2fPP8n%M*j5PJBNaAJbHEI zRaZL9v2*U5p#LG$FtLmo-hWVVKC^cF^^GMEoJ!@1@6d2?!|VVMA02e+t2TY6UUTw7 z9{Y-MD1f(Tv3~$9U2O>+$ww#5+hd3fxM6+805*tv(tSu3cp9)Za&f^6Fpb#UTyg*h zput;8^FOWGl`C9D@B6GjpEN?{ZC zZ#89tBdsQ^JEehzp#XhXX{;OMSgG5Z#E8uW{5euOVKe^_Ud=ooFYGBrhT-NKcDW^d zTQ=Y+JrhZ(i6Hn-@I}2iA8qU-@WwDPG4b1< zPysQ`yRR(AZJ@O~-Ru(r!l4DB&3}J7;feD?@M$s-$eF=x1Ke@Y#({tS>w%YF;c33w zQupxY?=w|E{YP9+PfwPp2&-QcK}t@;Mu@F3HG#6=?0!>=r+4{(Ex=!hMBVIwR~SHy;p zx(lJTu`nGXO@4&L4OCNA4UOdtRty)I&)H#VfM&}5cV6_nuDrccu1Si0>#DZ>g7DEL zKL(_7W=yFi1oR-L&RnNJ3A7|_#J8qGV_ zucBxi?YNY)kd@(>`ODd-ScaV$WkjkP({ryGMiUs0bjc*l`NZIF?mj_ZmK0@>g;;NwKxqDN8%x=p;Eh$v(ZflfMXkHUPm&#Me`bLLSXj{leEhPph*oT+i85vWU^a z#zLfbb05Uc&i;+n;THx7x3I@SgFwK4Tah2Y?l-_ktkQaU?vk zl)*_N4Y4pdE_GWj`S%5-h!;Ab9Z)(Kss_%6v4~Q>udk2p@9$?pTNwwnlo@EGu#Jii zyTD($FQ^IbJf4O~Zr;J(?S`RIK_Gxrgtr!iKxZ!y_^?O)87}JAU8q|-wpwm9gZsf& z$ue>$KA+9t)ZBWDINf_Wli;;ih_9dC=ui?E{JBa{8iq7!Z>B-jwdLaS z^Xt<-G>XA^BqVEWUH!2^hRV@Q;vS|#hF}S0RKi!~1Y&%v@4bz>xgmpNJSNtV$`l2p z@MS8x(&>%atNNEduBPt7a+MN!-!)!lQ>LV)RGjv{!fjCI zh@#GL%&fnhVcQag;)kH1D;golBUJpgRA%uVMI0~lz)LmPfRNp_Y^7e1{`n3PNBTI8Qi>o;#uO`;#RJ6EnG>H}Feb*J|tl+_`}?dgBt_Ee>Is zhyMKeb3c!5iV$#zqu_=GT3ol?Q4DliM{E+7rWXoH+sh%3%l}(+*7dV0fA;saHo}b9 zjQiD(xe8`+P^F$A8d5&d_|nPnqlI&y0=92cCsf zj{?S>q`t9nY3bwg???+Z9eyJQQVo_!AFAMN{Mg9fH!?(y3?#i+eTNyCLz8}4NU*(! zM>IHEu~Qk{G_Io|nMqO8*wh5ttViY~D)Bh@wyw}i=2zAa-^PHMuzOGXrw!q8FAB%+ zBa)CR#+-w#e46m5O`A&f8>&xvrwlY1kkm^S^<)YpQR|kFC%@1Z49&qv0UYuc?YX`; zx~MzI+hM9vIWayxI9yg=1>E1DOf|fL&{i6L-i$Ct()zw2TzOe&YE>wpug*~&fulpL zS1QYp`kQ^sXXtKUn~_$J^qQArGb&HK7Fu=8%fIDmhv2J=ISF>NyZo6FHCfj~1_Aps1=wap$Qj>@i~nG%?40dk6plPro>X35I1o3SClP^B1z# zd76qUAPk&~;-zFXM@u^$l=luc)(5ATBn|YSs$&Cv(IWAzOtAOK)T0r~dTVl>JXQu1t=T zc-oE9pL~2}*S(%kn1?6zVBI+0z5bl3Vz?jaUdJ!0mA&QDCkm_P_9dmcx1BK$XY)@J zX?si0wrJGcMz=;9g4Msz^$ACQ`OZt|95I2x&EJOW1hC*NR6agFfK3W+`o4e*(etpr z2}c8Llmb5Vaf^!PN8lxTb3-ivC|7Gc>?Sn&B3bOcU2za8@K9@@7eN%Yh;QQuZn6H? z1p_)R!JzM#9*8JVAtfOpspQ2~J1E6KuE)W#09qN090IlDzRx=&(dV9$H=bRm{r7~P zOqHWR2Yuc%aNpxQWwNPFGz%apegk4VOU2OHPiO5w7O8fitr%OMX|1fW1Kb#to7au+ zD!pk0PT?C4f#CGK@#(J6jg#2IrNg*Zq({5-LEho(0JEnzr@;dM#(J?-Go{1p`7NOZ z8TM#8l<_6{DPDAvc>SW0^0#Q1MB(i8sz#`^gB1U<>b1NCSnbFTeqWBGx!mA<8i%2^ z(~Q)OhH?R)6({m?0L@~J>l-@v|Ar1fG^192uzKCfj+HA`WnNlzkb!I}_;wj;&Z?=x zpJqxayHJS$EVCJIjaEu+>?)AVf#_x2Jygn#Xd9B(c>V(B;mI&eH2wyCh~ZVYv6G<@ z1BIJrN1;=0lM<1$t@1KVlsX$9(fnIxKnhAy(4XAjLf_F#YVJIYw=DRie*WDw$cZC=}-9?`mxFSN%w$K~h|@A(Djl_Y8Ub;-VgKNP|?x=SGgLE{+(OqwOgtbo$f& zXmWc9==%{osCW`ruhW>q208I=t8x~>aC8Y1#RF_~PEpag1^3|5)%3^6x;rZSagMpg zby>B(NpGY`C;HBif@ei;z;FznJ5f4NY!X^jvVE<^DdbIhE*j;!DKoGYomCo-zT7E& zU|@aVAuaH)F#~fDT`w(*!5Sa@2Orv+_VQ|?tbI2%z7YSGi1#Qr`4t8kw5!5i|q9uN5nL+Dr5r1nkW7 z89w{F1){W0-!F+=lfIZN8kd$nZ_vle&(HsH?ceqH*9Z3>v$O!;q67gbc<#Vzs(Vq4 z{BN#Y;T&t=4D0sDPBI=WVeB(BHC5IBh#%(j-#OX3nbM$!Qz9VhFp8fZ4xNl_>D^Y3 zeMHz_Zo+{M@N9i=ccOL1sUU$svN{G|W&qK1!Y}J~c)X3m{k^Z3bq*litF%jGP49YiSb4})dJkUE0nk&kC6J` z=H35LwK(!RTD<`RYpxtL)fuef=7CbZJQD8aOK-5P2fsNb%RSlDMEQ!S$7LI?<33LK*qKJFY8M^ezOZ<=H=|nod0;`P<_Pk| z{*z=Vas{B^5Z4IBS?Ha97PyCpeGaA)_b1kQR04yLHQ+WjTrC<}^>GVrnJ0O}@ZPi<}e3 zpX0S?r=~uEup0KMvp9oZL<3WId8=0N1>N>12-ZWM9x+U{#4ydr{q3PXjosyBFO?;PsU7BHbD!W#6 zcjpHm3U(Bz5kg1v0?*@Lk7gQ}V_0J|GBN^8r}pZ|`1gucWKik9OG&}bMPyqkhV5{- zM&3eu4WZNKfSVH`Ja54w&(f;+m_|wR4Mv!;p*2mff+(Icm3BlLmK`}Y0u!O~ODYOc zvfcGUbjWyKhPZLkXCRyV%%_mNyHNb^<*TtS$57S}LOdcPuRzINU$Aegs)pM}bEH;h+;Cw~beaki1;JQ;fiAuB zp_QLrY4P|g{nFk#obG?pLfn_EMGXqISzA7hS}+KftmcW6n|`IzNiUr-tzM8GSZn%Y zHKK_klg~(nx8&vSFDF<|pItp9N#$oh#aDE~J3>fQ$oa9UmFr&KLPOu!cT}3>RP+H%TzhlNp^kW$_6J_DHyY}TbjFKzJE8m z@)zH4MVzAi;ZMDCr}~roMtiudNbM6Sr^OHZOe~yP`!DfIY2Oi$UxW`qdVG#$cqm4) zP*D&s`NYLdJo&1{X+FaE&`fZzcMB*jPz<)Z4q{7#K8JU{o1V5ZC56ZPTnwkMr8DWd zjSLA#1MkX}H+bhl$tvQ`MjswFPamm(QqKJg zL-t@mF)oK4lF*uTNWgxoLUUJF3>tMHKHQP&q>7GVXN-pEoGkgzH*X7YHhUm)00ndC*+}3<`+_1ou0*N8XDD*$H)7dJs=gY)t~6Q*@&n9 zcNSec!TK(|Kxwd=e+xG->@o2;@fiAnLbm;D-$Z1Z`EJlxHIvTq4?*4UPB)tcgECu2 zXAsF+fA)B$m`8aNqHm8CqR1$xTA9p$I!B^1LisD%ByZag`Hf^s=7?O6^l)6sm`Jbb z0k&M;EfHAwaauH=?I%iaQ``ENNn-CiokuRr9d$NaFHn`S!C74C^R$Z_d!K#AIf~RR zWZEQCQvc5VZS&)jV}}fb+X0;_sZ;ye-EIDfw1+~fyC7BOENe6oZc7$xMU1NsSy3^R zy)=jJ97q1QX`E6)Ztl=#UjUDwXnd^e0IFC%L@-^i7LsO!+^(vsVxTqy_p1{FIB+BXMVEh znzqdXLtNzVffXD?`b3bE;WtpVDpI-0YE43?s*&ZqJcm)n92>@}Rz~?|B=W^5uBavp z4wMLy3leyQe9vgINJ&dO#;>kkzNvl#IPP>qeve4PaQ-*^h}{TsGpn0bladV$+L-40 zf3slx2=5L}SvT6C(ub)p6z1&+;>W@S5eVkFK)+%r=FQqIp;uMf5UDYKtuJi0fbqWY z9XU24UiIFaTwP8<7@4~j#4_jJ+^Jxrsd zLLz+GeGztKo=ezK3Y5jCFx||qL#=5_AUhV$B+9Y@^8t8jXs*`QFE$d^v5B3Rdh-UE zo(pvF_vOBLnoKH z)4EM@bZ+N4H4ed7P1tm#(v-Uk8bt$FJtpL=I^=J)??V2j?plIwTl|5t6Hrs_Jp-?} z(r{>=rYHVqX>J3$2O3X=S2Ab77V-n=-+q~!^k4nPecmmT~FphlH!pp{}$S@&QVYaxzXJIc-Hiv#Y{kQ+E~|I zj%XonLfav7bDo{FU`7KW-5BvoYXl#vc8m>z2&50F0MNqQPXX^1GjpbwWv+uxIJhh2 zAetgS^JO_ayorK)RKMh-88&J*n-oMsWabRSA6WzHJJfTf=N%USru;X8(?r+xmNG1f z6>2lyf7A1!!O(A9zw_JiNIZxfw@p9@RJ@L=LCadu5kSxv$yfa|Z+a-geDm{*($Pj6 z8hFt1O?;_o?uuV@#F!yhtA)A`?}R8B4ahoBRJ@05pnEGBKiWUxTji|U75<#pw|4YE z?eRGo+Ps8~=!Woy>82@Fu=n99b1rf(Q24Pyck;_Ejk5tUU0>g5 zC|TqtH7*80Z)gUP;gElgyU=u<)w~$;d*Um(9yXaOA?&GHZKgXo{d%Ww@bo% z+cqF4QYiRH*h}R3^jFyKFc#Nn*dv(*Yik|yWUJvPIj6)j1a9dmItnx3sv)LV_H(Mc+z^gs~ghwe98jgks0s!D3GCU_yTTAgTUFb00 zIiOk3O7Viw1=rnVSr5MdzNV>E)$P22b9i!{Yh$1a04OY$c$PC_5JckPurR<;e5;@! zaU-Y~vm#Ve`Ic`+EZnCj5k#Cl2gGdl*@uC@A0R3I%xM6#S7I>2D=Fn(@7p*AxuY-+I)N`JHiP&VgNnK~SzsoF5J8r<$ z>t$|x>h89b!Ec%(K!U=e9P8g^Y0Sqt0z+=@qMON3Pw)j)$i5tPVQ;v3Q}!@gj2RPy zjM}$CtPb4js;YS^fd3DrC6foxS`*Ew8I!x&eL^j_ya)!AzNL>ps!QAlX>6WSRYM~d zW{){28DY?yQPs47ky;+0q>8-6qa55%VgZSz8IRL@9$mY8~Y+2^uqGM5juP{jAo6 z7)t^=tt7WSD9K->F|-W(S9v6?*Z3FXj7Nq=ruUBzPt*?Qyz z9H2ImlOvt-rB)sx;D=bCk_dR7u9?$!=C_A74YxaQF%kRCVZsxtR{s7XE!kH^jGBt? zIf|Y&5EopgBBapb{$?kuEb%O%D|5;iAGzT#oO}7XfinE-*OU$N4H8|-REU6GQN9us zTr}9ah>CBV_yhlm+g!&iG`_w({d#}(*YdTnbqmkR=-{#t8ZYc?BK=2^H;NG+i@O9}telZ~FaV;}eJK?FdYSqM>828}0r z^Pc=97kst1@56v^R}k(#6bgYb$#I-y6)DWOy-a8e<)g1}5;J({c92{f{mW+LW&kvN3|wjtZ~Z5%uOwQAbL3a(`#O0 z5s)^3s-g!{uFPr{%`A2TW8F%t?FK1)bi|Gktdjmaxkc5S7d8@7>KXzls2s%Ac6Z`J zkn-@sjf9sDa(+Bw!ipQS*nLMFMge)A&{E4{<&4_ipb}uwD0)aL}12@#c)Jvi{^YoT;Z*pHi zxH;oT58O$;)5AD}`4Lc_M1wR=&#AsSB@?qhPD>+f@pVkyjZ*p^&N_5jPW_O$4$Vf) zACX4XF zI}DSpn5ZyahF&ELlT*ubS{fB3j1nkzYR5&!{6^sq6cKR=r-et2%a0ommuxn;i+h({ zk(1RJ&U>j61v?C)^wv*v64UvRpx;Wu1x-vw*PEx4V|^W%&PV0saB%&$|3v$QHvRg+5W1 z&B@v{V^%rhF3G!f3GFuqarL2XNrILAWh{325Izx6`igkxGfz<;%Nv+@PX0!&sVReX zox_$>gAVFPmMOztUS!MPzHfiyM94r&WMmG7=~D>^Q~Yq>%3dVAh~i$DHJ0&3Goesb z*QoB>f_a+yjm5hGl|=d4iF3f4J3dT;tG;Whr2uR+>;3Ogzbsm^(%_8b?bm*T>eyF4xi6ztco%S&p3&Xy*8yusD$a24-p6FFtw-flkGWph0rm4IV}4k!$aLLVG%(B zS1+Xe4Ua=j%fvS#Ii4rDPqb2Q1R{QX33YakVpk^FJ+H@-e()=b?rKnE*OD>JvgO{S zB_dg?<;B6nvJ{Iz*j82~GR@rcNC2!MlxTH8>#g|)fWbp)M_~;v>ME!h+dJ}wnAJD< z;j)}4+BJbKp{#Cso3eO=Mr^H=O3nPato>RuSJxnhqk<|#1|8f<6}qbcV1WxJ1jWRw zKD>VvLey8@nOEUbV?aUgYG`OEWsb{8RXWlb*!nC_W`@XFFsHs0udO+{0}G^p8f{4ni#>s!TqFz zibHYxt!wM+sx0GI?CXdv65syem&Kv|9g%#H-4_{Q0{%}My>uBmM_)?^47j8PaIf!a ztj{rfL&zE`JvkA2cHCmr6IgbZe?oElxnNaiodHjmes6Vl^2_Rvi4G|_fs)S#e|Ga= ziDaPDW-xMzXPLYgGweHs_fmy0?!O1GtXpzaip;b~#h0RmvL(E95M8|mloam|5|!&| z6#@L8JD#sCBWo3S3vGzKMe9|+5&1V3R?mYfZ{u89V`t(|@If@2v^0x|a2t@)1=9@y zR8C`w3|8s4(29&X4nmTadcm-RnH*bk8f!CN>i6F}FtPJJ6(R8f=xGdFIc%_^^S+b> zL!;M7tO}Z0wv!Z99ofp#oio#Atd*gLZ5*fVb8+M8__Tkx#yY;#rAcUZ7k=qbYILMv z`sxYVZ$Nfv`!I>8^R(l7pT?!teZ*q~Aej*=!D00xCZ{+HLw$>V=jEVV94l(vL9`ge z?vo;{iLr8V30Mm>}j?m+%~#ry5NmAoRuY^gEDm$@~Bpc3om} z+nee&-_7Ww_(IWlRb8BzhSZ6#nBnSK5o8v$6}6rB)3;&a{=#8e|s_ zGBZhl8jq^0+4bX^kk1u!KadFk zAa)on9`)>V#uXSA9HIWpngF((o5dGPEZyZ5$e=g5|Ca~vA(VXCVPLqg-~ zMXzF~ja1~({OXD{YLU1bOyjm6^<8gvh5qP&W0SW6iI?T(reqHXSwkBAM$#)TgCZMz)D#}I;PBreNxq%Y{Vs9XRfb( z9{%y`yXS^pA*Vr^$95lX$@9n%Ie8Z}oo8nMrtqX63RfgGy4zV_JLE#LG>7CTW)Kl# zs(7ZY?S8i1deZ-SrSwDJdn-WESNyAfdkP)4b`dVQNdl=)3b+LSU9$}cAJ#GTlFw1!Lnp^57~HjHu**Ng-Iq%uqlxvz<*l(J^xcMK5mTS@yV<6AstY+M3C_t<7wTgH3vT%Q zuyDBkhv%*TiPHW{$gyBykYk}~ZT{Tr-8_f&A_9F(mbT73tNBbKO`-uEy&=4F1f5xy z7ZN!zTbWEPSrkF+Ldsc!B&((OD^ojan~T=Ee7Yg5He%a%R$xoFJ=Rg5#+sK|v+XDA z{?aqM9>r$2-)a5SAo}${zn}nHI(cbTmn)h~wNlFMU-wlmr6O#4`Ww4ZgKW4B>z-8R zm!Cm^^cHg4hJeD7^?s&f=@u-0Nrbb8aQKSoUVbrz<;4&9(ysHu(?BK+-BWRp28IDw zss0$F`Lf^kkrY&Xc!LR4c^D8Dc|X9{$2QR6_xATE?YQMwb^OTf=7u&j$+ATL{KCS{ z&cQhO^lYma4Nvl~Vk<8g(!hA5hp*0t{+dM!@nbJWJ3gYQ&rv8o;+TB~ZyEZ8d*yv# z=#nH!N}+4hh4`ysOJM#%?or0rK>@>Q@gJUJgjGSYk7($HE5e%Y0_~Fo%2Dk7ZQO>Y z-#r-H1bhyX@bpb=X)1A%amuR;J4<*A-#h!wvQv*Zn0>IzSzbV>Ki(fTIwjjM@0}>q zu8VUbVnu$)uJVvnB1imGE|bOE^=2o|4cF>i&-_Ow%mBso#h{0`o4lvm;Tkl3x9XP9 zpL%_fmx5dOukjfFjXEP)sV1TN_q@RWTumf8Z4}R&Y$6Cf8QF~bH-c$>Mz9J}*=-`V*M!K8qOOh92JUj$TY6h=Fr3Rb*-eSbF-Wsb! zn%c22+KEw>Qzq_Y)LBL0hrO4={QGC~vsI&AlC&qR(k;ogGakr{cf*9jH@?NPF!I7m zy>T&9m0pQ+<`yM3G1+A-^q-+qRk`V)vse~J#*W4&BTtOV*?VWLQWox9ATql^US?d$ z+<#U;8h^EI@@mgiLH5=7C2c|UJH%lXniCcUJB7$=k0lvtDNKx?2s#uA(Xv7Wh(ENT zD_W5BzAsdaKB~k1VLNU_PS1WrzY}W54Zac{97`e2>k*qt{f)h6Swn#F49Y);%j3jg zRgjPAizYFt4ADm2E?#+s4*j+_6*fx}xfHcz>RA=jBO+v98=?PWZKT#?VzR8v8P!Up zCdTLz;#s=Rj@GkqF(1>;!J+m~?uKip&$g2Nyk#kmfP;_3zXLvWEfNy2 zT@G+(8j*ZTE1GHzz?W36kc=ut@YvV66)f8L=~rD`QL>CH^q$(xeT?MxuK3As-S4ol zL+T2wScZZZ12FO|kNyB81MpV2{7<7q9{4_i!g-(WL7>_l2ZP}JA%V`T1X6sdRsLnu zaM6=4q&;5eE5H*Tt#)7mwHw?X&58k60Myp9KoniACrgaX%;53Nh~c55AI$F@r)Rii zq)OQlXSV>BPfQ`zXTqvO_-K^uiz<5-ni=H#Qg zl7u6=Hum{50v$D%;3t^v<3v!_fz|}E(~BUziOfMn7QHypd2d6iF!b(%ofe)ReO#nwLZh%&1Ldln7A7!mu-;?8YywYGchDPRwATntA~& zwkaDT%#w&aFE=&$>L+=x5dkRO>o(z;SWjZeQyQvIHLjPzaG^SM-`vz7=vI>uTgD#R z%DEO+5_s2}HYbm;CjBNIyYY|mI(}**VXSmT_rbU?=|)t8e$qUW$Q13i&M!&Lj(U;3 z%lkS`D%+o0rVQQlHU3@kuO&|KXn*q$1JIm0%YPReT^qsyY<#9tauAEM$2xOVKl;-jk2@W)r`oyScEDKWDNZt?agakvX zYwl~@2=`F;<`Kdrij0=7cL8P5Cs*{V=|pbIQb{UMYaaG-X3X>zCKd)`Ac(42&tqM{ zkBoRHFoqcram$N%kJ;+@2dBiV#VoxBJF<+Kdu3(R%{oR^OHDKy48aV~mF>h4*iS!n z)iCnOK~$V@81z~rAoTe1r29S@5@c0s#`##Rm@$W^4z2nQJLGw9S(W~E_cCH{B%gG2 zbr}+61-`h%S=a5-p4>m6tBMU~WG&$31Pq`yHhCDkxhMM+FC`EL0PQy!T*C}b5`lHlBfZgXWFTRKwrdp8i0dwY{y zUS8Icy|8WQKj3c~dN?Q2!+wt++qY|x-FR?W2*VU58ynbo?CcRlGkiD&f)$oGNmkjM zy=TLk18-iwvh3t4mqMF0#(L}g)rw)~9VfQ_ZR9>@r4ZkF-0UTYr)1MyWf$czD2rdVb6L$#FUvPnEbuODXsjs`TiLH;iE{-O30*CtkCWW>WNd9#n-O zPudeT{#hBl({1o>K$y8o5t_%$AR_AwB7~UE@Vo-a)Pl7bFI=96`N-BWl4Pg^(W_|e zP@egSMeb|YWql3Xu}X@^JcaE#b)h=bm_y{FPRE5(fQpvZcl@b6f|cxf3T7QTogGh` zp2)1mNouGyZ3SXr&5D|T6~I<OzJ49Tqjyn7bS?O^Pg8>d z%R3^h9=(gI2+#&0dw7+(h^5PfBzn%~1xx=uTN93kA5Ab^PBHFd4(H6874ja~uQ%wk zb?9y%!QgwxcI!Sg4g*>P;MXQ?3C!vTM8&tr|1)`-Z2i@r9Nkf+3caGzzLkl%z$JSf z$dkZRlG8(9j{qWqtO2hCS3SdoLm8HSpY4qJj!nG|3%UJw!wtoSuxKy-mCZIw0-bh~n{a>wVvDllaC~UP;Lp zi^TGt?4rx+;9v8aGB5rW$MMexGc>E!>vt}`A}7Z=G<7355bjMoMCR^#{~tD*=2xC# zF01Bw5)yLL>D5U-xZ?-zjH?}ESbrLMdJlgP-~)rmzwzD_&F`*M`Ilr8bykEQtz-N! z(EmPmG=*%C7Z)2>(%;lzweZ_`FYg9KgeG0}dzO+J3&$;fO$_6cxMCz~f#o7@|Ed@M z(wN6g@`!EMm+&RaGygPVobD&0GwgMjr-i;^>fp($ya46ZH8`?dF`a&8hR9-iFP zIOT7B6TASI=$Y&%0`Rv`i_Usna`Sc5}I31mLS-CXUB zr+eTM>P-{d2@bb?!@*0#(N!*C`7Gp%i-eB>6++g;V4=ld;a%mzut36)(-BVNlc1Kf zD5}SajB}~UIFZ+L)^+33K(>Od&c3RzPr$%Kcw26MBY{|qK2PVy!&qQu5OoH1ASoc8 z`1F4?ePvKv3)gOfySqCChvLPGOL3<_(PG8jgS!WJ30B-GPH`v{FYb15E6^f0ym!9; z%pN9_ti9Hw#?8JQ73`sGm@)CdNz*XiRxh>@#x8U#fh{S4ntQ4NbbWHv@b)D;1Y9oi z;;Qb_Prx|qZb0T&TlIvI`l%1?TfUA~q)MOeVsZ-#)EuSII%Y+6Z9=^gkYXEbP?DXU zs|u}(jTDoThm@alvWa_%H@!t`V@7bC5eI^4fP7P~SMgjhU;WBlK2H*XM! zyJX11=MK!rZriVk;(u8dEsXGjDX=(?o8oyg3kpVH9$Y|aJ2P5Rc^nxW&0BAPd2(5K zIX=DY^om`}<)_}ePj5o>h_{?enCWt5pyyJlHN)7GbmJ<)i=l7`-ehFgr6L-?Cj9M7 zB~o^CT}@4kF#fOt(`(-MzCJ(n2fe6)RAteE)3heu@@!mSIY;Ga-}7|IVF(@T983cT z-(p!D8+OneaM;N$AyEKMTO@;}5fmXMEV39GtiEgJ5+3ytH?8vFPdhyR!-}l;)IAkW zV2a4{RQ6QJ z%$OCDEk1#~Z}OeBlh>&w>0cEUUPqXX5lo9IA`laP3;wo~-TqYMgI7Bhh>ojY$$+k{ z@TIJaF4HnGvA%F3TW69$ZD|5*7}kYK?6;V$&OmRL)I0w_&(;k z(8th%71Lm+^TUEQp+jY@vSPrO{f_tcuAY#lx*$n_v zuXx_E!l6Rck*qC4ZO;f~?1m6ozl~q#iL%iA|0uz6s;D3 zzk*m8lWj5gDaU6>teAMnh*;zh4ZkCn11!+J?UUR1{87CtO>w3q7*k0t;B4ZmAvknt z!#GN10m8h9u7ryU-q`v;YvsOhJd$RKYD|wgmKlx--qVe4a$nftXqy64Cph4%1KRJX z&?->BejlD`kz7V#7#*$Jju(IIKfD!i&`vl{l^q9TCWh}wq&6}!icuwMeNZtEjk=;` zR4efMchYmZkKfqk<-F^2H!DQ*A7e(f~OLjCVWoGhO1A5AL?lVNI^ zrVu5-wvjc&ADJo&lTz~(qr;a*%Gsjc(#o7}Wu4P~ZPhR$rrUzru8jpsliQaD>l#vr z17L_6ZPSRUXV*_<|EY=p87RMN%7}(b7GW41$6FTTGVU*OM(B4Io%wPaFUvy#6(C>| z56VAu7H^j>g|Ha2a{@j&fIM$EPSHW&=S`DZO%Q z=W@o1o*@@GMuXIsmNnG#y&5A*uA90KxA&)y0)`q5)CO_AnpvvD?1G{`bh6(Fvj`ct zyTfA?`8Gyq9I=~M90+z@P&fsU&P3-;-xEjB18stnII_aMd7yj{gmJoC+({81K&GK2 z9LtCW3+j=lZZJIIRH^P{_&KH}QOvpLCm#ouQVhQ-;S4lO>j4;lAQWn(OoQ({JH*b7 z4Miwj#PLa52=xfnEswwQM$j{Cc1Q8#3Lnw#O>9_K!kOnZIMd-E-HQ8K_6KW9*M6_K zp`-~zM9bOvk_rr0-IkOk!+avc^bI`kV<$%iqfex_chhj3IVWXf*B%Kzvk-=*U82>i zN-6Y_0YB-xGyAfb(VS&rYC#F&;JdWAttxH=*oU22C!tq(hSo_^#q3H1yT52mgo0S5qz#|M{z7>OL6Xwt<2KRDGO9lWlV|7ZB3C%R3 zzpeC{5GxTH&>rkr2mhW5*a~+tMUpuqbUf!t_2Wx~1qx**2*6?<@=rYzg5yAj0=&=(?k!yy!oyk zt`dXdU|e8~n}9^;qYi;=)s@WsyrG4;IUOO~-3E+82datP5xhx?k;=(gw=E}iA z1Q^b{Z4@=aI)MkXp1euz-!dh;kOYPsR7d~6%d6E=oUj3f8fcUj{xKHj*Z%%JduMQT z2qrlteUTtTjF3cmQj_q){HU>0HoXo3qZnHmlnugtuXwOC{0w+~5e&kIfyUyCx`HV! z0+W~pPK<0>-kJT+<9(src+5KzOE3!UmcM?6NoORCHsQYQJGmRkGHuah zQOVxSkraMCg&`&_u6t*?g!;bOv5-b9In>@>oI7i}55}Ze$sW-sQq@lRhez%rN2<4` zF}%%-rl>>!sKH1a%_5&6t*E^)neBmZ1i#$96gOcW;D*NyUx1Jl6U+dX1Ng!LA8dN!Oho;bVu_WWl{0xE`$4| z!c8)P5dLp@f_0XeDUx5Wr^W3dnlX`>2vfu)EVkQ{b!SIoDDFV+pS z(m{d>0}E5Sr+$p4?$_ae)P7H0uV^uHu?gqaNJ#1?;C zzo^5b6wb*k&;DLDNT;16D?@2%lga?s56{chF4&pzk@f4R8Wt}HQqq1W|jRo zTj4iR3b`y}?V-}Q89I>pfJ$j}=aS%g`a3wjMV;YOU2W~azh4Ad*3ipa^&Xe%8s4uD z3j~}Lx4%puUXM2r{Dn@W?@N9TU(6vGsl=pq(g3!$`a}8u?9Nwe@zX*f1J)A%42-N-Q=9?8iW8JVM{>~&`rq%f)!e|FrcJWXtpRMl;A`K7;4^I-10|U1zqnS{5 zsh^MJ-=Z(n(-~psKQ~n*TEn^{F)R<`n998Zh1=olS5sJ!Luh~DVo-FbDc*P&1-t{s zg>6D6G7LkRFB=jAFx;A&V6r1H52ux(1`-38svlF*yk+@ApjgIz!Nl{CQpkkfI-(E` z0Ubeu7z~^ayWvMvy@?&x9{|=$5}lnv4mhL&(huD()B=h_!cT`$UykKHDx>yGn^HJG4G2BL7LPGpIkcom~aJ5biu%Y}4o0gMv+&6}t z5uEm4z)%aG`1e!HwBHr(N^nj*@t?g>D}JeQP4g*PYvoXUB9lZagh};M=)~7$0kQeP z7h(Wg;||&pOpK9pwX7Q6Ge*=J9n;^4nn}KYPn%zga^*9B^!0QeO=&H{Fs^e>>7x)q zA{bxMac#yqb?Yy{eW|cdL=l#eq$}BHVG+P_=7AP6-H5@eHQF4(QSyyzvG!Vk0Z-jk zcGSd*XQj;iv-H&p#aT3`4AE}0Llkl<4%qB`OjMpJNGkYzYQc+10cJO$on9cz(q{6mp@+#*yq{>KW_i!;^9DXinjK z28iy{ie5$yN}D9%XfSMHMl&07NRBH<$%Fy;b=!^B<^IF^_1KTa6unC_A}s#raaqE? zrYbw=nfoBqO*^mUUff;r)8T2$Qk4$B{S;3x4=npwW8iV^(mk*j&vg6(lA0gBb3pYV zl%O81bZszU)oqgD_PN6q(WP`z;56DTZLt3A>c?~-An2+0mHJ^eqbIBvW|Hh9-wX;J zZCas`!SmHx86b&|r1nRFnaO&=uV<;RY%j3-Ld1)%0Jb(%+T_)q3v{79d+nH6pF?0l zQ^KQl%*?7wPtz3Wb3v*WdLNnxy!Y$7>B1(02GkOGf-yLoG(VTh&beHk@kgbiyH*FY z>YuDXUa=fW3r0|^Y)bKjQ}a2yyKAR+2vB>7%7?rIh+hgzqd?Fm?7Mkd z>|i!7t1?ymY358;W+~@eW) zaO^sH06IdNLQCc4<%}_Pas6AvsDu{xkcoQ-cObXQlGLZzEs6+?FXYB09!j9!>L3Ew zC!K7aKwoCxi!%qS(Ho3H1JE8`;td7jnsVm%5 zZj5%2(}*<$sTPmZYbNa?N90SS(Z_h^ru%*RslgFME-+DlZ3y{F`BxR*Jd?C z$Py19o?xArV&-xBbxYnbZKKQCN{cxQHWrri?l9)l`Na#2%oyU@c~eKm&>Y8;3tsNT za_yY8ZAQ3Zy#-7rBqkoy?gvY-`7(~A1Y`LPbS>BDepB>VtohV-35#lYi+RQ2&nE;e zbhzx(g>>j4%r|Ny$$0^Z=OJ|EawMk>33{9N-v322^CVb+h?0;RPDH{oFF(JYyoMC~ z>v#m*n+7$(WFp*Z*FoWcmDhmT2ey)wQaTYV9;R8 z&JnWr&+GZDYq#rOMd00)cmjf}FP%{2TYx^R6}%*a=_KLD*#>|eT3wIamba5rqR_j6 z_u>~T%oa(nm|KA-_0? z_wy%&i_o}uEy231-8b*D%2f~f@Pt+6o*?#%^JPN%(v>HWm>WQelJ6rOGBfBS8gSf@ zx0F<|tMRFgo8wQCb$%$DI2tq0JwUf~LJ6)TMqM5a02lnNp*%l=XI4KkG*pcT-Np_N z>5j^{Ns{~Cl-eRq%;iUv%c{lNpD2qdIY!yPCQ7BXO@AP6Sn*YBt8(OU%-oE33brfS zWb-$o%?|KQHfCg@mX-9faST}5Ql;hw)b(foX8%sf@65S=R?a4eAe|9$$R^`%*C6q2 zr?;Ld70Q5QE42Xq!VfMonpA-p4FB-xlYBa#x{ll`wRg*8h63I&wgfdb)0RacVPQ~| zA6A7B0S7a9tu*+%?ZmXA^AJsx>|JKu6s$JoeWFYQZKgc7C0`t741?$56F;z`;BRHY zz~=M%X4*x2;Il}rai?yTw-DJ-Znd6?4>YQb_wyLZJD^mqz?MIkM5!?@hl!*nfBuD2 zP!RP6EDCwB@99S3^<93@%j2wPBr%y^Coexs&g^yn{eXnq7URf5BG&2|5p5W+2C(o# z@#+t?(*`VEUsMBfVoalE>EwhBn|3xUi2f)x@k98D-ROGMzU}@Q_w%t=up`ME2AL?c zQ9ub`zqbY>PT2nE;_9lo@^T8Nck^!*F^bc7TDI_{>mubQaU|(5WHI|YS!o#cV={HH zCYptsPR7X@lRb})F*zwequO7`b0nv0qsE{O+BprYxx4^*pBFP$4uDDuoVq1LK-{Hy z00^pZ%f+)C6Q)(u!c7UB3Y^?99)Btq9Wjv6@Zf;V8&8nek6XMy_%eWo;OWkQCuA-Y z*Uk(kgmZzGYW1Il=7`+{NDBpOA48Mf*XuJT7-d5=v*UW>j8qiP&GSFf9d#YEO4{qp z9-`5~9F&#+ag5!7Lh83`)o~vUU6v8h(yxwo#H?`R;S)R7iPJk zi^XkRbh zw(_kkrJ`3_mR(J+GhWz1syjipn8mgoKyrR z4>yfQs4EZe8J%J=m0$@N_RE|>a)A;zSmLlFr1<1JUQLJFAr|cWg|6T6h84TIhLn_) z&|TZsa9o%<|FGpl(s5YL&!XF-9^pQo%1b%*g zP$jJd@;1o!%{0Ak7wM$1i~ptdV>i!YE5TDI50X>YBa?~Wvqu-qUq7&5^xS^jrrokr zCY3y!vt+p2vSjiD7G50Q>Y$v)T8?U7ns9(|xpzmHR8yAo+W>j9K-9DQa}O6(o7Hj3 zuNUEDIEfEgepTr2)$N?xZZO+@ve!@hfu$bs;QLAnD)A72813xqYAbYJo+wZBVoRG? z-br6Tb|ZEVdGsz%b6~?&$Ao$RL0b?2jY?vjlC~9x-&27euMEs_XGe9N_K%1j?t4cP zD1VO`iJD6hWu|-2`eL4i1O}62MBS_%cCZ|hNz_4DtPlh)rR<8LzJ37@{JEI4eTP*ds>=C@^_GkcPpT&NT|H3BeIN0!|IFPW{IZOc z0DlxPc52Ir=g^@3=*uDH^@S_f*2P6O5~n=lgRt9BIT9H5==H028cGZ4TBN3mpJ?}K z86NhZBc@Xc6hAxvWsLxkz$R$(%fK3eK^+~Q_gW2rE5{DWrZ%vNCwBnU z5HGKl^B3mYgIUFM9K(?Znd zv^l)JO&ejxQYkbhzkQ^$OfdDBY{4%5z-!)rjk)2s*5%`7uKurQOE=v)y7hi4GPrUxy3Nen*Xm6ETIdQ`EarQMrYRd_9i|r#AwH^S{Z*7 zZk)Rh07fb;iN|BGKX&xOKrJnJmbhO32+`L)o-3g*L7RlnBKY9S zg2KZL_4CYiTkXkzZZmhw59;48ADD+(XD7b%&5JN@Xd$pcwM8c%4_N6*XK|D5MSNCl z^x0xAihiE_N;ELH5b&fefA+?ot^5z;>N%m-7kV1aX3VIUqH8m}Ry?5oDtX{^>C=8T zzKjg477)ZfnC4e;%NVW0EyU)roL(V*AqK-C9Bt#1Y;}wQl;!4@na1JpP(7teJ=IO= zso;`a|CN%Mz1IRPiYhVDYv0UMhnD%s7|GSzoNCPGf>Jn%wSdDeVXJ>+eRAnxq4Gs@ zWSsK?U#zDj4!|Fr%l%p4(n6_mH1b$`0xc?puWCat5`hhxEi^^Vcv9=Bzp<|0nUjx5 z5SkhyT;S>pFfqy0m|{Y)@!@Z(kv2Wh2hrX8NK92k@+&&EMnHQ?n_WJk@Hjv8i)%zV zXKQEPmGiYavK!8>WVnw2Eb~;kO@Sq%=f{Nbctc`ispRVo{qv<;Wsi00T6_atFo; z`u-3so8?%h4GXM(*pXQ9=%1Dc?d&g`j(q{25hyOVpMhIjWO2F-IO^9v(Xoclogu|i z=x-fSO?#Mx#`A>R>zyhUR&?3&!G3~h>o%DTG5&a4$b!ommBDT-h+?DnWo{A&M`BXN zETUp;1RwOorBH-KMCjOQnahm;PyhUz%r8{o$g*Zr!BU{`?(S|y6bP5;3t1>Y92+}* zPuGPcH{Nr#H5COHo)2_Be1AEn7Km5yd}<9;A3PY2C-;U~z|lS*z&c^QVae?=_cMGd zwt7DpC;j7j@o0iFY^8h>U8{eSC{rPm<5O89v8-X&?rq<+jK1D@q#@EW-PbNkUa|9b-xi_H9}a2Q^aglk3mpV?mLo4b=LdA@qF{tiy7g_xjC&WA_{pM<>|DA z9mXPJfX_NldcHS6e;AF&O~f<6D@$InmH$Ju{?$JNf$#`fs|y}B%l(svGTBR1ho-(Q z(WS`b`ik5dy73+(Cp!>=VxQ7{+m!3)^CeY5S~aLk3-Q#9s6wRh)kEZPj2yx6C)Rntb#qC zVumw4DqB-4w`V)5cJX_2wmJMXaz;Hli}xXqVF79{5(trjko&v(%2qusc5rT46zD$b zj9eaDQ<>pluQG~82pcopL89h>Pc_|@-ED3GRNn`YG#snjo z{l?t)uaGTi#Qy}#YZROWFv*O498Z7SmK0eNZgm~Iv_N@~)_7wW!yY>KdiwiHt8E*` zR$D<7T}kKxXfr*wTfUKJo}r!##bWwqgnzDJ{$`6NlieA%L{m47w7eMZ@stg6c7KE< zJ|l_38MIxE;%4nRoL7Zp-+&m@=S6x%yiWenW+EGzWC8a8qEl@EH=Q9~!)bP_0$q|; z;nr}J4GUu)fG?J43|UC9_{8qcM`rNFmHLx*!n^@8klh%a)fL|tN=QN1ToPkO0zbzG zh$?lAD-sX*U`EndcwWW${z4Q-Ead+82|K?@8`8QRu=8utCswHsg{-C$B7@b}SlU>g zbNs)u=bBnFX>DU1ZS(34_p4056_IOc-XWCQis1^)M{QVO&`b3kmfBJ)2#e+LU1>SA z78tU%o0UfVu1Fi!JY98lQ>twInc7;4fJkPo-NmLkl=>;6&S%#W%s{WhyF>S3ZS4f| z1T@HJ?{+gun)OqT7E*<+?Y+0kyQ#jdl^n`zavUzvgSi0J;jutZA75+bCh;iFCbX%i7{y;>u)Vd+0qZmxSGb zhj~8TeInr^^>CZ7>YnO^oo2;4AHXI;Ulq+sx+&;)$#d|NWq9W&od%jRTOK{aoS(!= zKI3J|ZczHW{?`nRUJ`oP&K7&K)jg8-gRR~3jErahL(&f^YyS!eC@bG8HIhmo@-ob>cZZ?g%}16Z}Fi?Mc3qZwcLbN zLKPjB8JXry%%Or4F8Yk#lVHkbh)iqE8lbmnR zb@gv^Szl=GkukNt-mi5OT#9~3A-bXCZiUXuDYM2*{st`29^SaU&mo{IwBSrqP$-GS z)*;EP6G~b{heSG)xHHc%)Mu+zWsPe_7@1g# zmKFPl`Yf}5ye5I?(#~2NJF`8S8x!m9Za2m=PqI&5gPOYoG^zMvQufoWiu1r)1S#>y!v2ku zL~O7tYvT08Chej9v2c39F*k;cHx^$+3AIam5aQTg%YWrl$mRb%thsSBm&}SJG9Nnw zf00fe@Ia9HJNbw5uf4BCmqx>Zm9v5mKEqu;EUEOTQ?y7k$5KmtSv(BOTf?}~1>vhQ$5j~Q9YQ;Coxn6(A ztW~DxLwOUREE0n-u^t0?vRJg`jUTde!lsq0#`?om-5g5;_=X=9v@a&>E?OvsG}56i zBdboBTP)1eCc%?h51FaYKCmgthO3wRP-rcm>QL;C!!WuOT@nGWODR0T8rN~7_+3aA zWvAv52S*3m!jMKE-|?LXiog(KS`{{s>Nc|^slsqcZ4uVGCmA858a%@<1~X;v2v6nt z<K?&W*jdbw0BLUR(WcKf%U|yQjs0fI# zg)rsU_#qf}SO^(_6=UNHwTWg?2R>{oGNOe71J$h>%Cm_q=-E-v;>v5NukLC3YeyOSlCyZ>}ZER-0+S6iIF z+Y#4imCJeoVM}(Cz>P2{=@lk9zb6Pz8R@-$20#fOs636??sZdUCNy8ZVx&97Bh}AX zs{+YGefBg$7T{RTeD#KNUuyX|DJe|zqHj7S z7oRf8EgvcN?D6WA2YNNpa(+z`5Gr5$%4OEAb;+_Dro!& zXwh)70M7tHAR7+WVLbfOn=VC2)FDJnFr9O=Zg4oB6>+dv`4jV|maojgqZQfvnIom> zmCql32bVP+NrTmJ<=}r7|KOF~0ac0+Pm=)KWe5WxcD&${#uu}9k_I~Y=z7yBsd&tO zEb#0#{Bbqw*isVdC}j<3>S+=X_x*2*$8<;x)$?i;zgg?xEk~}X6wVv1wGrYJ zWdRvzE@XT^o4uTsSiakL70{At94lg_&g&^J)7q@o-kx*^{PWas=YmPU<6%vKiVuG0 zxZ^D0ag&!3^qb6L9Dy~LcHY<1qf!3i1`E7(Q7Hv!Ph8>$!>}Yy*vf45-5pg;;+ZcH zRzr;YmbfvF-~$`R4f^cPkGwwPQ^Ie5;M9Gm+d+lu|G=K!EwhH@yWo{+^y^dv%! z*O%utda}x|N*o|wMi!j&`I~<_My_`psdKl>-(gF~ORsbl-jCBmOJmb8OdFdv=}&qK z5$t(Hj_cobeCb@XlYzaORe-%uZH`3~Qfc>i9Vx?Km#p__J6xXplu!koHe^tWj{b={ zKca2GLdXa1;Jb<7B9i?Km;iV058b*&5W$+LxcOB^=4baH;6tsntkS-Uz>I<~_ZOru z2gyXJ6r~B2y~uzRegpwm1U3brs@Ng7#rLc36ZuAiYqh- zN24ZYe%sH|-U~NJ9i@czKez0YJP~4wP3Mhr3SwCY-EB|y?nY6>*{t0dC<+zw)j-6! zQLJBI9PPJ5a;jq=yIImaBBTHy!3CemA)@SW&+V=}ZcM?D$C)YsFTf@zLTTxPe+QG_ z_NYcO4jf`;^Y{7~9TyK$6d@8|u>}M2hm%|))k;2#h#9^MmHeXtqDIdggbz0!6BbOb zOlNs<;K@9vM{!T{=ARb&l4T(`7SYXl9{S%VjMS2S)f1jk+9;E9Bga|qRaOT)8CdLz zkdWph)kT~UO``{D%t$IgEj;rP6%H}!q&hf@!aUOnmn6++aE92a)&{}jkM|?D@aZlo z|NOHK9}P$>&=ho+kN+DH4!`@BL@ldLn?-!ufcXajnD6`r7ocvcU(z zK3^_vmtn-=rA=7UoSviiQ$l~O+f?FX$FxWY_uh5)EX!5*#J~L{z8ixnIR5WN|Du*B zSS}cuTT7RdUSDB=c;SWL)6dN(Oe*g!py;26UGK|&b$k*v(2kPJN(H1fj^9ttGnaQ{fsHJ_)oV6%T` zl*=JaSL%Q1HDO~Kr@b(|B!3(Q`4<4Hz)>z5%R)w1`&((e9h9XuW@*Lw4+?i++zT9Y=vi*FL`0 z769Ec2a}7%RnBOPtQA`Vp~|J~MRLmCJvK)v1ADBF9ZRD=Lv>f}V|-hj)_-bk84jEj z#HYg@6sPk%yz7#T2HVegzWUwfaI`X)A34-s@?k<$QR1cNgn!opckooKlasav^bZ<- z5(e`+_nFr{`Daa#8iUcPl$`TXmbgCspB8`tZ2d0|r${S-B^u?18-oNQ-wrV4Aq0QG z{`rm1B?Uq!IbFyV28IA9ia-70m+U`ouz6Ze_^!hj%bva3I`~c-bx}M23qbZyG2I3W z_}VWHh_lSQDiF>)n7sSAK_SJ$O9_&}SmnSAFCAYglY-=GQu|iOsI0U!FiMYjX3asT zgikLnGGbmy=wZVSaUwN&q3baTKZV(5R9LU0{&0=_@xA&FUu()673XuS(IqZ8Q$*Vs zoWM$wv532s7W;?!a`AA9hfoO?>@8TwO+Rd_Xn?_Y3wGgVg*Gxv9;tz$H%IV6CNFG> z9rFB}dtS1i9s<^+EcM)DroA>?HZrF-ggWYsm*{)7#EAjW>8)D(lzach2NDM*o)2?; zFsNt1B2g?NG4QtJ0j6b(6Ws8}|M%~oH_QP2KmSf-WaMwhHd*8R61(esE;u9WZgF6Q zui^S}_Xx}hjrO_j!td?n@Ol&UcUnkH3_9ErI%3{Hu&XG656>uI|3amDOd?xD5n%?N z7SSix#f`D13l94-l~|cpY?vwvR+W@;Fh9rFlhK6Ga+BNw1#VoEG-=`AeI6mXuCR!@ z1Zk>$H(Dm(X56^BDIgyEt%JUVZIG5-`yo6mlkJQXP9G6rknAcwr*4l=u`YiTAJ-KZ zG5*H4TTX@r5bNQeX+Juh1e>6Gj&WA&B_cr-$%w3q0&@TLj~&-P`Yss~b1-Ds@$;b5 zdVOR3E~_W3r2YBR!O-tcUgpvls?d(1;u6f<=*N;Dg>>e%8=VSKnpfSHnjY6?jR(dO z0F}^DNk*vVBe_MGc}hU>ZIM@t3Yxpa-B7~q+7;W4WZe27XlkpYntrAer;3OQ;sNOg zj}rh865SGIL`PgGno@ide;$)%=td46D?$+NHu^EC#sTYFzs|ToR-{pf%9TgeABgdF z>Oputm@+S*LY_VMGK$C!`ZPGP8y9z!0PMZ-qcYnq!sWUTk?6p5gv$@7!Cgq>U8)OL zy$BOB<9*bLI3W^Ms;7ou-fn7OH;4|IfCHMpS}iWnZbQ48i}2Gee({(VCsN;g@;`7cGEowL{7=XE5u<}AyB&UF9M}q5|b?{es7Hj=5v5(j9gK&sT zU*U^U1jxzE8B%h@cGC>b9^fF4uj4~0@i;ykTN465@L~8$qs$M>sZ|n+MzW-oxXK>S z1CzRV0|PCcDzVAkrU8(X!+SDlgCRREZy{62_vtBB8FjES?jJg+lf}4E>O!iLT5xy% zGOFxr5g&1Cjs^RSNEXu$n)(ZSqEidcoG!mBSJINKYFv8(Mj&j<3%lxg7NRps`k*{h z!tb!`UP&k5=2y5i!mbyLP$1ex$6Zttd~BGRJ0Qy-j%CHRl!@ zmMndU*oSn63vi~NAdl-EI8pRjvsuZ=67~oAz87YY2yCDQXDzEiGzsh_688*PHMGg& ziT(+JJH(Y5B!T-wWE_ulKqQROg+|@sfRp5WvdHl^#=ceK!WbT%WtvupPnJM^{xyWdwzN$RqvjG2<#uzkNn8c9dTCu5a40^@Q>#h4Weuou>y z8<`mNv@82oY2gGbYxRajbBzZ8wOz+lqLwqqlbZRq4rS9kecJpJ*QDfp0U2DMIj#2n zgRaF7XLx)@Z$1+|DgkCxTouc883ife*v+4ecqYsCFb? zM-sQ{UjNq37~=Uozg4R)nLKmm2b~KW_4t#nkYTL$@C`Frp#HA5NY^g(o3L$nmGB{H z=52vWnV=glnKkIEtF9Z~{s6x}!9S|)-=g@c$&LHKCGpG?Mr(F*vZhY((ya!~ zy8F`fVYPMN3n>ljHeiLMz5j0& zLRwX$#aMoPY*@-_+h8!No>J*QxOmx4n+bmf6AO~R@6JUfBof9y^fx0-&5?LcApXJn z^MN2uhSNhJLB?CxW)-O(>AQoec^I`XM!8qaC5U>%??Hb^qDH_nx5<&r>19`F;J*k< z+_>=#kIdhS0H`4<$gC*iXdShSY}-OICm6z;-J=CN98D!_ARjySHf4XOYf6;RNeMz& zZ5eA6SAyx&z#$8mDdxqlQkPiqwmjdXTuS-d*Avv^Lt?SSS2~A{sKk>_6;exV0Njqp zS&y^D;RiGyb={HCj;PP8XE;T6rdSYH)nzah&DIhiMCfR%9tFV}tS26hem)Kv&4g8# zPTRz+X>->;uK=ix4%|v>XiQ%{DZrxPTny3!hOfYnn349vG%95s>>g^IOkAM73kjR$ zR{VhtKb(q7E-wC)5XMnY*TB;bHOh7$ziTWhix9 z9(-5Pob2-YRhma${+BF6~{?FA2h22{sHfeO9g&ri-vg!9Z554|R2vkHs? z?BjyfBuOYCGdAhyabq92IR0>6{Ak5Qk|@SB^#ANA1}Uj>q)-AV=qe|aOn6!W?G@J+ z5=)zq)j;D>VGdD)=#$|R&tIhHB-z~kCg7^H=mKeef-rOLNZVF%9WPOW-CLTORwBHp zsQ9o)j+ACnwXLFf@W$2+W6wO_Z<~%Oq$8-`R3MSlks6y@3Zf3F4MY-NDPg6vSLRQe zxnOk^?rmBcN)~_mBi_-C>GuoPZ}#spYuXBx4JnDi?};aDPJ@s-tu{q zsjOdq5tX04&WwEWk`3{OyXl6V4KUp1HsJHB^w#;&q)&48Yi|&|x+Y_%coVu&p2vpq z4Cjm2b&$3=dG8eXqrIKQEj6q#*MFb-wTR_sLABb|=F7jJ5x+X)A9EK$NEz5%+Yb-z zkp0HR>DrUb&lYineDEw?c{@X2ECNsRa%@Cao-q0DjJtdZd4}P_-YbJV57K@z${c7c zlF+Zn>g*n%3=1U?@Olx;*F!G9r)fe(4TmNx6%jbCR`Ij)Lv$IHXg+o8=O`Y=%vw%r zY)zmF|F!Y{=uV_?%WnuUZN&XghNeFpcQ-=wVqz^@&b5>Q^m1_aUg&})&7$J3SL5%n zO?s^!Q4?B(hb?A-$o_d_RUiVgvW7bwLJE!nJCTkK<>XwIL-zxP|L7IA@H&MGI1xC* z#`>>~sr(2JU|dY`w5;jgs8?dGav<*FL{P&oRdph{fj_OBx*A;}Gd+%o*+yCM(U_4B zws~(kcA)u`;!N=4Tqvcv2DJv!B2-8YBxIiPSC{PPPD~g6+1ynqUaNc9*!!OIzJ!$v zm4(1X8H*RwBA6oKxwXJes+Z9w_M4Xf8oBl!SD>Z#8{Y3O>m(rgP433JZfU? zKYoAr_XSy^3PEOAy3O$mRl`s;ZlND(8;Ah6+lIsx8X+; z(~FmWxbz`(#xe)T=Vxa#&ucvaIZ39gs(>W+ZyE43@y&cR{+E8g6~^5ZaF~LVpOV30 zz4B%C5AUE5K^4KwM>>m{j{<+Y^xrgxZ)EG|=l}Gs-b$STHWm~Sz`CBltoZ?dmUn!v zTPA?Hk!4<#cnYU6NWd1^_^v;&7{lAOqf7+)o89WD1%tl-YFU0GUaWf5Hqq(#t>>bm z@`6gKSU-H?Lp;29`b+gIW;kjUpJ6ua@qn#v%e!ef@nsZQIn0#=iQNryRDF_G_w!J9 zwH04OdXBH%?Jz;;9`47NSeTj-Yhu6AIZU79Q;2lFSEC*o_dbW*VP%S{j8LQ*&H1!g z^SH|tZf{>?%8ttqg(ZBrU(V1(*840ehq72Bj~`2h2Sy(ivSo-pDk3^36W6!}Ws|0e zc!fyW`l%#&3XNCkX!W+dvEjpI+gQLVW&VBkA1cv>_5Iay>2jx=e3r#u;|2eeme*nb zklZulhbnRR#qcOw?;X1O`Wjjq|4CXLvq$qG$<88=pRgNC z?r-Nd=1yB>J7v?w&GM+qz%3d;^MOaD>-wB|u)`g9*~Uhl!6OXWUFzc@JceS~K}R@K zdFY4dRRFNr9ZEN-fC+U_)`^FyY%V+~MkXVb@xenUafkhDi$s^SReBSDF&J2sX9-b3 z+Oy)2f%;{*pN}V8a*4yuHl0|o#rWH^ST*O__SP0yQfK^`P58O9sOMXG4*zg|@j4a@ zMaQsy43X>(qGN(8Zevwo=TTve?3`iyf7b`lF%Ds5o+Y?(xbx0)I?v+t>H01pI}!Sujw;(buv62}b%!`K$~G*VIwtq_MnP+Pt0Mcq)jMOiX`7`l z!uQ&HYMb{^ASX5knC{EtYVY&v!<1J~=v#m`^a)nyw`>3TAK4qtRIU3BZk7S=Fqg9& z?{LX&<2BZc=-bF3!fzb7T9a-O9*UcP`SMK%BR=4rfh8{QP1&36>YH)c(OHs+YjW$( zo*ed3>WMn&HE8?bXHIy@Kwm*izDdxthr3Gbo6O&;!KOx8TTuk_#(q1r_ml1rH&_+L z`y{We-tY`Yl+wgu=~4S2P(Kv}GUyfKB}UTc1JDY-)&d!qkYCRc)xukK@_7>e<}#Y?3s4YDHsx>;h?i!Lf<8h>o59;iKox+^It zj;EL3N$7@}62t+!rRY?%skYZNk=jFFOOYeWLxnBcXS66xu;O48VX;A>= zlH+i}2(&1Iq)&VrjEerwO0H>mhgCBpT4Ftb)NjK z0kPfJElIy$^;Bl>V~6ab9b0HtOW=Ro4GzxG!&{Jrk?=4@22yO5u+35*ihUN}%Vzb& ztm5nW%#m)hN+jJ%y-3ph*aP$5B05wW_|Ne%D8BP**TRe#BvFPaid0)AkihTLM|Xbt zU{QjxJOhB6oH3Ij66S9~`%NNkt6NzKjTRicA3wG-IoU{sCl7y$bHhUI3%M`DFm&4J zQmj0N<@&UvSYG`|%Lx|U8{niJ;9h9mnO45eiL<+sUbS*B4bCm6*ymRqe2;83Q_cn6O%xgiY&_pr?_C<$`B}wRV>h0MAAjwclw&$`5NQqDVgjcW2_hq*P6lIsc|l zbxZiQ%TVPE*dDSl5SyBu8HD{?1RWvI1Hv;v!2PrLMwHtF_bBxyII;F*Tq-7+uTCHb zv*)d{7@G09xcP&U4Lgw4G43pdenal#|Ah1VS-@TZg=}0n@K#!sQ zT35ik&(t8=g8bYqdg?&n#JD7tkb`c4bSw|I(p}Gn~mYcI` zXUBeDctS#H2FU@Dr+cj_yEQF4POX|e<(^7_O;%aH65Ij#<%INKe>s0#qe4WuT=Yrf zST1s@e5%Tdcwn8Srr7wfJt%%Bz=$uU-HOM z1)0H~oyD=gZB1-KR_?ujx01$pwGa`)B&~*ENtN_tNy`~k;2%vyQeTZT`c1#_m=ypH zJilN9TvQVL$Lufc;@=If#KVqaYXLLI0%0rn?*`U+<-X6Z z*jpWI_sy0U(hE?O>O6{#Wk^OvfUx`|FgsXx&T%QR_wxLDP(u%gYh z;?I{gJc(H+%9I-$J@g~FA7t6RQ)QY6#Wn-LXv2o^J+t{oiuY8+S*#Gh$77d+6sw(o zLJ9b_EsYGsc<)C3A5CY$R#n$^;X`-Vp}Rxip{2XKr9-;AyStHY>5xXcL%I>^Qj|k? ze4F>Wz8`?fcJH<39COTj@G`>vTvJ3rjBaX6N}V?fOiZ9d!s>POb*z`HxB>>kzvFVNt2RXFJRM-6ZbRu#CS}9H|@@`^NK*uu%Ju{ z+x_}@+6d@;s`9&lnHyNOxIe!V(JSHZ7A*@|!yDK!CyO!LH=e7we-g}M4myB2R8sJb zN-gCu?r>EHjZ3!vp>-bftLkwFwD$i6+PnwS|1a(d_8edoiu4Z*K%rw`C|Cyn#o@*% zoEfu1XSjEs$w)8bN_>YHD!{5b2D(wSqS#L-1$`JV;r&INy>asf9C`g*u@n3KvsXa4 z0($R7g453Z0oY-Yicm|?91izGB9z|sQt=BApEHoAA}mKHbt}l%^RaKs@JbKa;nEJU zNcIMN4;BFLG>wrBy%Xir(r`%r{xk2?PYo{F2|GWsV$GnK;^Hkd_Wkn>iCc7mprYwc zla5@&(YgB4gpuYzr2RPARFrCK(Zf=x;e{?<0|M>(xfRAu&qAKl~MD z;+QtHrO~z1J3gHTnbiu3k0W3O*lMtD5oYr2M|mz?OuNII>1}%6C`^XBYMhJ_nDkht zDx8(ISeK1{J{XoQRj@85l&}u?&!kwc!g3jAOl~NVgOog+iA{DYmGS^}x&QRTeu83Q)vK<^7Qx|#clgi+~)MBNls}ow4Uel!E=*tXR(veH=VhRd;FvPK$HfYj z=v#-@9x_gbhOhWSKzP67GxTB`4^z*pkt0$;b>=CI3?ySFpZriuNr3=`|JTdZggwT6#LtF$lu zw$9wVE+VcN_A?mg+yjraRw0Y+{Y|%|JP%FbWeI^L$DW>!arVcZb)x%6L7uwle}u*O z&~qFxwyBXWEmh$5{a4AUfH$N`zs}j$H}*Zu<~@k*f2joCzss}c4w$%tQDJjZ@z;}a(a)A#8&iz zj?HIAQYnCZ2p!`9ybpcPoXW~7MHy_5x)T~whZsT^G-rLTaDZNVJCC*Hef0!r_Rt`( zgR{S@!Nw`qIs*p(jrYon8*JPI2I>iatGB4t(qS!9azYjX#ZtCem!6P*_8&5EdzU5B-*vZiF zQR6{>gn;h4Ph79>^rcL%lcSwDV!2@9CnOhG6pCb9O~>?~OYY5T+~2s5t6jU|W1f_L zW~wpsFbxlW+G8+8ZgQ@V|5nD-2V){fAJOCVN?Psu7dyC;ds7r|p{_2pW`F}~Ta`8^ z$(rSkj_U*=s)$-}FoF~9(DzcnHong0788^^@?S!+Ew6WnDyb$LdT_-!c0(MdYzNoT zbjPfLVxkEiJ=)Dv=V00Zo+yb-cyx9HJ$x#fD%02PW+bbxJY9%zh8->hjGfFG8eRPs z4rw?zJ3K-OY8sYd>FSn>p^2grBk*&(bhe`HQ2O%^8&g@k-7?W% zs#7)U6Koo-2~OPp@La>Hrb2heI`@RxeihtqE@)76n+l*W*F^3wldW&@0omm+w#1=B z#k5?RN!Hle7C00=Z>3|G6iS!I!DKu9t|V=L5^w}mrQk5AIBI?u9j@mh z4=!1z5@CiS{D6-{bHIOWxO5nnhDH6Fr)YV8uybBstG@%+`pa=jbSntp^z0GzMXLlo zF5bUa<#OYffNBqX(||6{$H&L;puf@3j@==^h)}l6|*;+044rcQK!xS3llA zjt1i&9|3bH!PYGs%8Uc3DWdVaWz&(!<8Sae~IP9#kEKlk|X?k;lFQJdL!+b z?r~f~979)Dqfs8uW_uw3T`W1nv71F$j^*OT@zY=A=)oH(JAgS(s`(ci9c^Ea@)4=q z0);NhFz7%G6?7y|&xpJ9>I_r;(?P8@xYT>0%YjQT+$4%6?DK~s#*kpiL+pcdAHMjp zodl0YZB^QNkC^qmlJOCbfUCG5vDChS3!GkIeTMqD@o*5L8Z>rNeILR2j_Y@nxRr-{b#x((J%A1 zsAAgG9;!xk`j0X57xXB-WKE1fDOB@`NfsI--Z7$9Xz2b(E?0c3ZVSrVN|9P;rxUy+ z9b6fSWlt8hH1^Hrtq_ky(lVduK=M2~a)=a#ISBh?yK*iYU)ZN|w3J(Ki%Lz-%b5%c zY1%ag)88g*0P7R9F%8F@2Pv+r#xL!RX?8T+L(=wu2m4izV0o~c%D4Jc%pwzf))Ec& z%~MnsSUw~0K&&jyWDdw$LNFWEzh&hl(~lOf&aG7ot0x{Sj9ek@k2JCUBNkcf4VDZn zybiG>LM0KL88oYC(GTnX6N4}K^WxN%_Cv1aBr$3NsJX21%iu^>v&`i=*^?JlkOm@p zI;8}`|9b(H7Bjf2S8~FMCBn(2hnK5Qa@0Ph!`6L?0ypZj6sZq-_KYU;m&s#!|4jxq zqiR0c)}&F{D-g+T-2_9C%&1^RVqzvUpvA*F5KksOAl4AapJGiu`Qds8v7RXQ{Z@-j%leJbacjZH+&XLmI zNg^wA!dGaiIK_7!l0_?o(c+>nEyB+fUF0)q($73jRu^C88KFxG6kX+UMzX%W6C=f^ z^4&H+|Cy&PQW%yY9==@E@?{}?P_h5<0Jn{jO%E9>(4AdXcLSe|Ken1M;qbM(WpG~g z#6IrezdKFlGFbOt(7=&DQ~~Vv^?Uxzn$(e-zDRLL>%`MsYz2n?BOSkOe%OaC%@zC| zM6?iM&KDsU7cFIaYjLPTR=1?6#@&(0gl#$zsCGVPSqYE&jFwEYAwBRt`kj)1fPl~u z@WgYr*(o9EyH$1=o>A3pHg1NtJWUT4F?sE#LAs*k-7?&jMoK>LvCOg8*+?}m{Q9G8 zjA@7VkKG7{Ay#py&bP~ zgV_h0^CPI>5=y;$gf5<G(2jO|6?eey^x4d2VYWf-IZx1$XcEw(UD$EtKz9txIEj zl2_l;ulugEc79Ik)WyJU?ChEjy^&IWlhCELo!LHZo(oD)@h-N;%q)hGy&%p75zd`Hx#Jj*`v zF$7WX4lt>JK%;9!{6BW@lS|=OHvH@|N^L*l=2y(`nKtKp?~H@We`slb#J=qEoWLv4 zO0g2Hb4{(@_Of~6({W$Rb7OCdh$CFO*S{D~)KUD>PwGZnBQD3!am+xgwfH4_gU=JY zhu)bzDR~h4-qjqgW@SU4`$P!O%o?uFn(R6tX$wQI?8Xc|vxQucS3I!yuc{veMMiPs zp%+q|ZDi)kOvk>zXd)~24_moaC`Nh*Fby%RKlq&G%pV&Pbs-4Eya2y0FE-b6a-EF0GG=xh+{#PZPWgf)2yob268}zlCxpR zpxYNd_F^i>w3!l1`^Ve9vELt;Pi$dSbh&qLAviaJGPrauU&=zCD%i(0C+Kp7BBc!0 zLmEC#Me#-7I|@Qz*IRNULnRh~R~2N00I*&E18VYttiET<=U2#^@awh8TT9DyN|<1x z`MO2+o!jY3o!N7lfhcQ@Hto&zE=CYoWbVlHaa`oZV z)t{DPuP@^wqdV8#>jGNDk4#4TQKDWrOuPJB0zsu zPW}YWsTerjej@9=ZEe_H)-h%UjWfe#jincw{%kwZ)~st5=4aX#QTaW7&MEr)@BY5| zdq2MEw5nP@0XX8C7O;XpZnitbad`LJ>0(wQa+J(&esDx6ZrLe5XljYY7r1&j=mNen zsRX~Q-E@Qo*4JLD(A=?H$f5;y7wVY8Sa`uHF8ftpzTM1(J7$)3^KM2_?wQqOsXGVm zUiTf@D9`yo2Bd^xI5}pA;Eu{-hnksqYTG|J3R6R|RXuvU#^FpQ6FWItQ)JWyx=~R% z?b1p&5jwk-=#o-rD`i1MbS7+e^1Pz>r0p5j6vW~T+pM^;NlivK>t%3ZSeLFac|Y{Uf|CDz|c z9R*@}A~pHtERAA?LX5ZVc{GKx#Cjz9S1{g-jutHf>BbTaspHr?0nfw?_?FhWwheY+ z{WQ3+t32~hpZ*55Ih{kXThNzcoR@~pq}by?3)+I{sp%iPr&vcWv%ie0<5grE*BX!5 ziOHL=%O1ZJ32VsLxz1y?{shtvoO0z%Kbf<%aGy^M_2YhY_Vz|JM|IrlM*42l(A3_J z5DdP39!b^UzOz1#^VdmqB|}R~p_(bYEc=Lp3d%N!ix<2&K3e5Z8vHTv(|>4Zd%fRn z=>+IJM!|po{o8FWd|?4%UQ~9HUQd$F-_L$p0jk;D)Sb#AZG?-?hXGfqoK}31w=0n( zAX~HgJT_YgSRcHY`3Om$J0W48eEMhyvvpH@0J$_q$~*i_PL1_BZhrHEx*X}?^x5Y_ zb!3^ifKwx<_~-Z$0D=%QG$awf9}QSbp8>!-KfqA%5q!B`EJy5TvbDPgQaWMYF8?`Y zXj2#%jz|NO>Zz;`Lw@R)+m7w&w&TBl0#-c^7zsPpl~e95-&0^h0z3@eSTy0wl%%5R ztCA-CuRqbw`urpC^;XpO7*hOsM!{6tzB)&J^Ihjo-UZ`LChTPD-FAupd`BaABZ#Uv zCrvD%G>g0!DU~}-NH`8EZR5GABv!SUh07(VsXs4-q)PWn{c&@o+OV*in<^`5P?gp@+$Da6=PnHhIqw6qj*E=~sMcy-uPFt+&J; z!UJ92s9%Q+k;Sf9CuH2Aba7`9D}Po*>CdrcR1&rLp=F=*q^~XIXO7DA(zeDQm|1%> zmP=!p!#E%M&lBY8p zFg$aQiX()8H%$k@cs92uP8n5|I8qA~E<3J~Q&c$%`zJC0l~bn9bah-|E-v|4?K%TF zyx6&6zlBLgu`iiTh0$x>1S?#vYFMly{80dNicE`VxZnBzyD-(?6L-nT=MMgvI(^GQ z)p^DLS^9TsIWW^Mw+m6HasFetOh_WZTAh+_Q1*C(tVtfz%`lsO)*{S#8 z$f8*8oPr()pg)ef3@_K{Tr6p*?9R)OvuefA+SlNsqoWt4Gi5|-V5&wJ z4^a9WfjIF5V`{^bbEm5(lBV$}VOy++t~e;@szIr<5!AArB_k$3{Vuftk8{X3hA7kE z|H$5s0nhXQ*2mvR7%mSxn1-tv6|-v0{x7G-V*toB91?i<9Xyu8gfw8`OZ5KAzi$e| z9Rthhwd0WO-T-2b(S=p^^6>YlTao7>k$BVZ5&D*Uk7glT33Eu+xwQXK`wx2Hx_8`O^Flw%fW z{}h}j$2`C1mmw0mH>!)sOqDbkHM&Ea$0Npgn{4^5Nou88tS(s$%_FVxeM91KagT4w z<$FYt1gEX;)|RMLSmfq?P9cWH3j2zSnRtIe0$ew(6L19kd{k?&5SYJkAUomXqbQQo z)H+PJ5g#2=SygfM(C6e&gd7w3)ba~9g@I0oQ!~_!5qoCQ7^_@p27M76)eMDE2gOAx z>iuoTDi%zh{B%%__9|dwrsy_x<>)K zZmB;-lsk?8$-F3SvWF5aF)^`m%MlaH#KZ0E>Ja(kZ};ZuqZ{>V5w!LAZ(bAw7%eME z2TC?FEK&nl9KyUZ8S3(~|60^VBL8%MDtBW_0yQZk6CsIdNIAQc$q|PqgUa%d%L;N^ zj-e9D1=eBz=&R;c{uNEAZ=3$ML{GG(u>(4f)(5iSpR;bKi6meG-QBsWa`q=EhLXRR z=wj<$oGv80AnHpudvm&GcZFZaUw^hm^mc^xQu6#wI*!1fR5m?8#5^(?F?a`9i(NZe zD5m}14{zkchaXnwzg2>WKJ;8;8~I;IJuiy9;28NFW^i7_%A{*ZlB{HqSw_3kj97V=tGzeJMpgM4y3?{M%!l(=LFO8U>=2qPz?PaDg2x zU|@32xECdI4kh?T{tENn(7#Wsy$_Aw@PLYb7%W&@Rs5-!4*nA`W9yRWIm^!Wc6J6G zlK=~`7YAu7d(IzC(m-Rod5P3-@tpXWKdNhP@*(=R9%G96S64x0zifX(J{N zO?M{LVEMB=g+74ZsZu+668Ah=;q8V|lrU2KN294{s?kl}Yd;Kk(q#-4ykr>5s0VC3 z2!Ey8d3}suL{n9wp5agz7!MxrD|q|NwblDD17t;%Yf=VJ*}H?TzLx0G)QvZ662<>~B?&;D-V4kYl|kt?DmNRhHV|GMw= z8peje_|vuf3}ZRR2u@q6)V%glmz!ymj5Tdyr8f4-+@TEE(&7J#At^*~2uaRR{i!=K z7-ZCKzx31oBFhk!Q=dg)y^&iv;g?QigW8BcU*^9miQe5mnW-vBOL));WG7@Z`QLukOIr z^V4>G!w!<%^m}nW>vW-Fij!gtmi+vxz~aS!{PCw(_h+BFl6E|KxbIR@AIPVre(8(2 z8qaP2Q>L^RJn}(jt;D|flS@^N_@b>!gOY_E&GclAE$HzTqU<7WRe%AL+0h> zg=Ei!@+lyY&B?ZsFT#UH1VIa$_`vjy8N-{jzj!|6fbT%0%JY?L7K1p8?O@ZTa@nW) z4>##pv@$l+6UwZ$`@Y9b;sVCT<2bbfYPycP)V|Gpv%V9<7e zh|-iGIYz0M=v3ICr}m(@RU<#v0x#jhA^s?!BHDkvIrYArpywb;FstI#Vd6CXtcDw6 zQEwX}Ya{j=fX>f@p}wVWr%0Ff!~*Ud2R167jeRQ)#P=bW8@sBN9Pp*{h#xO0YL|ifkb_+yS{e1>(kW&obO%h8vA~|}3IJk&HF%woa zT*d{IWm1^mE@n`JT8wuLm!8pEC5~2mq-@7P1?gp;o4)W#Wfa)R z2fWonNBq7_jx-_m`2>X6)u=uqGxmZP+YN9Or~0F;4o7P5tD(Zr$>4LalZUc(Rj0^L z;JNUnu+nW7HMEU#A^Cbg6OjJt;_kFSV}}hdDk@0Xp!$3v6}6L!cQVv=sP9Nrn{Ck2 zT9)6;EOa}2l^(@?bzmUYRjcXW!B8+#X~0|HlCX&bo0`CMWF0q#z`gPbjW^IDaXTD8 zWwU>)^hI=&XyUUJ^sy2M3V;9A^4o5%sb6;5|5$|XNeaT)AZ zxs!~LQwDBB>0e-uP2-z%E4sR9j*Lb)oQ2z;_^wMbK*sPn*=t}OC+<2g;uF5=it3?{ z12MM2aSZM* zD~uoeGc%fY#`PM1UE)FDhBA)~(Yfo@3*iikY|%eF_U;FlE1)D71_9jAttoH8M2a|( zA)~IVdqT!9Fk*9{^_WYz7^{amVBX7Mx;z+euttpMw4O6$pT* zb$-bkhz1m@qkyg)1AN27{;Y)B3aPNbceb{^{=RCYmPt$I_m{(6Wxs zLb10N33H-i0Cf0qIrGtlQrE)uYi065)t}F`e6>R_AIztS1;Hlk)sY+?wLfaBku&H# zpCu1~6x)Jf3zeu1Ee=Qxy8TJ&oVxz@g2os{tiy(}uKA;nTDk&akvMgP8pq9J2`{0dd5+|(`=ryR{dNg(7Vlw6T_ zR3fKBba@Vl*`h=ARB=H`}WRC9_>HYagv-t260P)RG7jbq+y=EaX?7M1^`78DbRDzdSq)=Jw%t|wjL`K{u|K#!Rt0aJIUv+uBw)vlf1Q@x` zF?2iU13SvN?_{j?W-Axqd%2It2J*KhP@|T-y#?~y1l@j}Tk&=?iCwr9^s=e`3)S%< zcP;jurNrxZk(Xr)Jj7ae@997no#;3-5uwwi+pHf3JuSj?zuppecs%j28FkA(*u#a? z^wy~@!ICID6b#>P;1>klD%>Aza03j*j{w3H`Ouh_5&sanbO1zz%O>33947O@pdW}S zH!vKs2w>QD#DJn`>9{z_#hn!B_$E#YN>vXT*=SE2G+ZMm;VhFnnwV16YLtR153Wl< zyF~Ow*q_fqFe;o$p&~(l0#`659?2|W+uH1ELUplE@%vfHQz-Iv5Y7Ek5+5)|GFWlV6ZYHLI!c z!q9xeIaR{NGCANgyv}ooE?1g z2iJ(TC_Re9rUQZMTdPNc8IO!sW+n2soJAvLN-n7k&5A6_WuYS1bA>%Tg_cNlqB){Y zo^ftMv>lrLVG13X^fqY@W>fWqC=YdxBFW3H`eM^cT`^+s!(Ap6OK1k!oPr4bMJph) z!6vN?tzl<=rg;DJ+{#A3)XE8dj%@0LTqZoJ`tSpAA!C^2 zBvR7SYg4DLuKqV5aCXk5sjp2Ib8|k0JZiJl8pfOcE3J%jy43o_tYzMryNJYvL5rJE zipM)SjYe#1Hu(=O7*wzsSjimMRm;)(-$J`yB-3AvQf`hFgy2t^c_4*@^@yz)8x6+Xs0WVX zds#-j2XsA*a(#0P>)EC>aeO5y^HD!dOSq|rr2?vmt+0&%evD&@Cu#)~MIR~FubKEe zgONn4_~*sJh{BlcQFAS;11QzeY$Mt_=VVo8QuAFqgnm;8OYX_c>gwo< z-$0GV=kW&@;Iva=CdVcdz=px&X9}vKD(kL)+q0l$+)j#9_x@T&yP&jjBqofGc`nH% zNbXQy%cWFmxdj*NkA7@W_Lx;5fF!T0C-~z(>W6`Y2cXZ?4?Y1%^7p^CUku;9WZpMg z`hS0fPi?hfh&*Gyf3LTDVmtd}a~&hw}LjTnSe# z2wIxIN-~E1YlDF(iH({`%kPBVOmiEJ1kuGEqh3>k$ISEDa=A?pycpBtY2Zichc@DAD*d5 zdTkA@_`e$dXE@m zwZT4d#&Wp7pe&LCMkH=%yt}28EWtRtNi=j7jD49-OproS;x(TfbH0$x!p1*niP!1F zmtU*jai|O%ev$Vg7*V9eF(6{t{R@b>Ciq}94BTfIL*%cR9uU6eMq7?PZQM{O-;%*=KqQTtv2@ZCM80gL34Iz z@4;Kr!a#_71^!{>h8iVd0KnZ>8;r-^h3x$Nd@v08^;2b@RBu^p_GiMjwzhL1vVB*< z_z}C_AdvijOpdMYb!Q7gn1*qj3qVcWT~rYndH)9jLrk@+xgEGVrak)9=^-w#f&SpEPre{PlTo^j$NI=*10cQE?+)ev^yI2P&uy#TtY`n$pynQO#(B&2sbnB9zi`jXhac_{UntWzco zp5Bew)|z(6dPk8f#JsYJf6rK&#r=eiLl&?V`Z(Z~BkMum9!a?;4x0{tUbcBjtyCx+;vRVQTsAW~7R0Sas?>FDdcV z2(vLaTnl2Eva^&CQfI5H5sRXqa;HD14?puG)FBmFF|?y~=~3%tnhNKe@(~qh-8Hfx zr?+8RzTpW{r9@Uss~C}T{E5MK z@WFf5HIc2s=amH~U%nrPD-q46V1$F4*JQmKFv!NF2F3kkf6Ms{deJZ9?(<*2}QaU z_E6*Oo88q>*8ePzsC@GDzA3`2Q@?X8^2YDD*@0Dq#9w^7vjcj6n*mUEJKtK=e z386D-7UqWm<|I7wU&-|bn;4J3^v5wkT0zFaBRv>NPX;>0^55nH`;r7_sZWKDYkPp( z?ETGqZ=sf#wKTONe%s^YociQ-+#Rvco&)BA{ma9tj_bz{E>E`(xR!F7I5Pv@`f)l9 zMkB3utLOLoN&7#({09a?gn`IjaZS?;q3fpr8oAKl?nJz~D@x`Xp!w=g_!d2fdhlh8 z)s`__kp003nTt4utfIN}H5luZ-AqfQQ>3}sW4Gt)W03(rNKaH;l3?t+F#1)cVBq#h zz_*@YHSo{RP^T_FTPqxFv|KD6!uZxYBp{4Vtiv_HB=uuotOTmJD0!jg+O!iaDcC zQXQH2$Viqdr|oIuwhFAw&8dRn_vw6D;n^ZjKrOBkEnVc5dUjAstF>Imee3v2Vd`A) zqpDz`Q!7{^SlRd=m&35)!O)^apvDV$Vco~fkmi*+8|Yawp-<*|DfIq;PDD$A?{@bf zCouF%Lp1M7PA><&xY%gzHGfhM_gPD3i6h6gWZ1iz>Mt}4Bmkz-fI)f=f1N#H`#-%{ zn%U%VNn3%hfZBFV-&as((~WT?;ji0lrGH8k=0aAO786nDCTiR0*C_LlGoUbSuI3x} z5DG%BEwV=3SzUs%SfjIVbC>k2V8tTVD|M>JD5p?FT>i_nuJ&UKfl3XJ7O!hn znvX>m^fWDC@xK;_iB{UQvx2gkzuJ8WBbn1T7XtgvbXG`~)%+;i%b+Z0GfCZ|eoZN$ zWBic>Ba2#gPu9gI?PKg3HYr7km-i$0kMODsewiY6I?gzBZ4G8uZXAK;UEqUXcVlN+ z;gBJxa=XQWWJB&GN0$N4m z$MMxkh(Caib$)sDcptkqv4_?P)BW{GbcFFLk*E$Kdco^<)y|S_OaEyE~db0!q?Zh#VDv67Jes0Ms_AJ+|(SoD* zOtT6}n}Xaaj}H|gF`v)74h^Ly^GL?7lixC=9~-sBSNcj7nvmu>1&(l@eeN)XxJTk@aB3DKvb0Tnl!S%N5X{$BVE=O-$F{{}L;A_Y zwATPXT`?biM@vT*4ezIFXe$Edt*usRA(n&UzrO(vQR#Hfw0B;5tL&v25zCJOIl_2(q&Nya?~n(V9PHBqg6Wfg@_qtkvHywR0Jc!A;u|qESuVO*?7B zlPUWJ31)mCQc1^s#b%HTXTppA(YNPDcE@5LGVzT6+w&N5NhwAJL-NXo@+r{h%xsol z-Cqeltd^^F<$pMwF)}~YhMrrZt$@2<41%4P?@^Nw$o@?JM<5nHsUUrgf3vlUPIqEB zmR9VHku~=0{``Jo``3fe86@b$uMpuN5oUd+Q&xdJcbc6nsi{r+#~?tTAhw!$jyefx?!Vso`Px`sx^_0qnI$?-5_ zx8I=Gu@(#H3NW64VYd-{h7ah4`f1)8~cYjTvXVv(_}y&d=>8hd*a zjb!ydCs9E(NC(9)$@1Lh&38zkSe*Q?O*qoNYnlO117$wnT+bh7Sv80cD-sS9@1rqJ z0nV-hMX8J#Pms+OLBZNb1Y=F^$xfGZ#|rmpCH2K*Lem}YRyn4JZ28PF=t_1pX=}el1lP; z1?Yd`X`l~>-RUmasIGO{t>|Q8^R{r|J}!4+`%f57#O6Oc+1qTy4ZNgxZ+pIqKGsYSd5uN<5{yn5L4)pnMh2X#`H%)>(^ zhv%V1ApCYM+hVryt^oUn(8(GO24^rb+9&XGPG3WJtqZ^7m?Poa!b)SJfR**Ocj1>V zsWYqBdNrjpR{#x-<7w9r)3}B6D&w0)L-AOGfC8?th}QnThWbrkMH_x%);)+%PB$=< zpbA#QaH7dJ;opKBv`BYv-m>nN?YP3h2PWWvt= z8o6v-C4(LB9X}>>4}=7`U&vejx-@~MX#V~^jz*6Ci{hRxk-6FaG2pQITPP5bu-v*v zhXBf>M~>cDuMCeGqAc(`BFy`_KA_WkiT8Z{Rb=D|(znfU&`1Wnae$qO5YA37b8T(S z`fy_6n0w4S6b-jXBD!B=uw$M`FK2JtcNfl}=av$%LX>b5WY}Yh_pp2|Q`!DOI?D{j zvP#t8nDGI{p3Lcs!Z^SGD0rzh*?+8*Mx0@6y7VABRX)>F0WXB)rC|0r?#{p^}*Y}I!AuYQp#A-%vJc(xXC^Rgkt>_ zr;!rpFoyl8`+CDiC0MqK@2g-?eLd)_zGP`$m}OlAGU|a`4%PI37CnOXayZq9jQ(P^ zztl2)`#G$#O4#%A?CQ8$9LGcIZj2F4JPw84$h9Szu@_$E1!!c#E)!eahDZNtd84Vy zg)({9tcQ)9#t7+xiX@VzXnterukg&2-wA8xs{x1%GZV}qMaWF&8qW0@p zc1QdLv&RyBabw84%ZL;&C_B0H1!Ks7Zy(1)QyR1=9Fv>Pcz$zmF@yvuMs*i*KA zk?JkBK64F+Bgok)`RnbyAujlzpCdo0`w?{3db8L|LeKrM?|UPyxy6J99TVatboq?Cy{Rg2?NN39|5KqV1=R4I)6dDhWNPn6cCw zWj9j8RkLXvvk3?w-F{qYKL_GEWNe{2JM-MItVsdR4zP0qoUm(~o5LF$`hs5Vh#@_O z&x(rP8?6h6RKLkEpk<6OQKhN#K6;@8%9ZkuG=)W6pyUEB7#TxNj(G38 zGedhIMUjtWYpe=hHCy)9Tr+m^=?ki=O*Pw;A0z%Ep;6%P(|g{AXZA}!j%agLBQ3m) z?Wt#kUtpBD5te!_n|Ww7b`vvc#wFVR%dMf`$y3%ppDnl2rVP($84u*dHZdAYEUgHnWUf_CDH_GKy=gn^sC>3a{zb*Zf{%W9OZMAI&FAU zmIofC=Z<9J?TS=uWyBpDgUk3f1ybhaD2?8M=DpU21F)w?#4t_{*XPz;n+l`Zh;x_e z>7TLioMO6A!<%~qK|eevf%1qI!W9OcPjq6!?I*D_##(c4uVu*XwjYzl=({Nt5yn69 z>uanyGseU~YJV9e1hr_`*FukMH6FI@A}AvBEo7B4$su!&C|xVub@so0&Jg4f{-G}E zFX=bx1%4_@m5W>vq2gw&7oYh#)zyLmqtnIP*?i?nzsf}L2v|n^-c{=kOr_D)PIzV` zxWWf#-Py#4)C6$3mk3W2Vd&s>_ob|eryMU+os=cJ2f4fB-uW4R(&Uy>GSI?~h@9u3 zJ=}|sd8hLI_mjSsXZw}vi8?K#TygVA}>oV&?}afYt28|AjnIF<&3ov zSW{atsT@4jRPW@Si&gMt{;J3q9+x3=J#As*wyLBpO(R%RU$74AGk8?$Uw{mbYp3Z1UE zJ8QUgRruTb;l!$$V`2TOWTI9crk!~pp3b=(XsGr~eZr=$^t4IApOBtSaQ4q1CZoUy z%lAs#8|Vkj`h?nSb;n(~$AL*=Igc?EQ%x0h_f4dYV8y;Fj6cDfuB|t5C}@e{&{!y%67K-Jq+*? zK@me?zV>L z0gsQJ@e5O1Tl+lZ#w;6<$9|)>sE486#O95!iU~(6tS_8H2mm(O`fc@h4O~(>i?$ zt^%n2NT=D)&~ltzmam6_$!!~3mCd)WG@kj{+0Ev*QG3qvlm(VCEK_PM$kx_Na5s4Q z_*a>$nvpBPs&Gar>Q@=`>^jS;k)n|vY;EKr9!-Q^B{`!@t+q@ZJzk9&Nj`G+ibQoy z*)t~Ja6P6e*>EiU=ETZN`dEtu|D}~%FOF*RForRX_(+gVF*%FzBj6Pf$i|5*+Kc9()+_e@G5k;@O-6CD%wbTUowZ+);el z2rvIG5Iwpo_7T3BUptbSfq+(fm1oXaZ{X;NZgk&e$!3P%)>0$YYCLOcVU!_)#(TtG z3q}jXsHc%WR6sQ&l{ybvzWC3@GORAuPFJ~I0 zicb2EVe-^{CDki7#ydoJ4hlBOSPKD@dGKvzFv>5ALlwUf#TDLC5B^ZIMx9(sYFFFP z1i%&pmwny2BNhF=SaG}KnldzMRW0pKO0KHo3|nY=j4gJjtLwQ7MHB(v_J1GTg++{w zkEG>RO;$C=8vdi$w{y;J{3OOOPzme(m+o&UHW@iHoi69zr5`Gft~cK?J7BK)nMYvc z{lDO8HsjuSV4#5r6!&#`%#eTsmp$Y*mZ|sRdU|?#?N8K|dY46={;74u1;A+5H)kBX zGbLl@?{y_PNP;aLOK`zQge^zVoQd&3*TXE4DfW#t+*t+s>JfUfq|@^1Nrn@keA@Ef zN3(ZwH1qQ#CJx#BPY(MJxfN^0qRm0ry6z_#!_|XjBGlv?-*m_!?#k*)V_R=xS9N21 zdsN>O5DUCknzX0Wd#i=&_j1x>QJh)9SluO!4=NQKLfI#6Dm|8q726s*nuLGdDSRck zCx1IhYW(i?;VfoIVh@h_=wRNAcE*lD!TL>;vf2MvoPxQB3Hu1Gsz!5pGz9h&cQ_5d*~`Kfo^JQ3Q4%R;ai#EXK_fVu2;oV=!iYy zmBTp^jkb0tlem(JgPZ&|+)~-dNdiQ~YSI$2DGv1m(IVB7<U&GDLZF+?y^~r zvS*L8brcSI$YNW*KGWLG>~P^&Eog|;}m2j$}$ri@sRN!;1Dz=)&Kh1%x@;tYCy z2z98~-Xu!LmHrW7J=E9qFf5<15PU<^OL)}ePhe+w4+CZ=Wsf>90{}>S8r?MxN{ME( zW9l&Gn}N6#W?sv5(E`|r8Q-U%ge|Valg}xor-`I@G1j%Vx|)h}lHyJX^J_!TN zzukN{{I!fb;@6+9M4`Zm(oNNKcC;x1ZcQ?G*)YvNThhv_DT3)S!|Nvn)1RZ^a97Oc zh|N3%2b}qaA2*1|FkokZN&<`?C0UO;9JvW%Z^%lw8+|Hrylvv3Q)iZi`LYVXjj-Kt z?by1&5T0oHp~?+?*;Ov1KQ@6Btz04}%*M6E2ht>%k}Z8Uf9B0p-pG>MNcYhW%wSu` z7{$&pkJV_vRyqV&XlU%w*a<6eLC^iJZcq+^b;Fr1%E#aW7NVLVwXWBlw_?Y zoSC!;v15BrOwX=nisuD+h2R^<@p{n;QepQ`KuFpd%QDzR#_Ih&A)Z2E-%_}Ovgo4; z76CtvmRs5c>^te|eI5efQ()d{EhybE1nCs%8X=5s*YgLkG1&cy^M0LkEQHDsPXQU?b<_b|M_#`o z+B!NVP?bq5qETNMa4p@YO~1FoB;51%C{Rua(3!b-F;t_wB=QckRhF;y7qN{V=Eq|j z0y6f8C_~cgnu5H8&%NVJp0CY^R?Ag`lES?XZtl<$KXPbYT7w81nr`4tn@APdJfE5jr3*QpJ48;?Ot9jO zxoH08c1dDUy?w5b2cQ|}4&96}YQuj@)ZDewqdnPc%zwz%^R^jYuyn_f{bpM`s_cM- z1CQht(@A`d3;^x#b7-(cNC3DEx5aLbh0SdEr+CzjJekr@k-mm+C@VfJ)1&Iu-#dIR z86O5E=w~fA55>1;{+R}|F-_Lvu9CVzfAX4AblItYaL*POMlr}x)wg($Bl30*-wy~@ zeMY=JU6V@S%kRY~FUvnm1Ita+OQh@Ypk#JmtDC6GwV6RPAEYrjY60;bC_H-`HuFZ5 z%l5;q9?xynQHFK zsCax$kWX*3@iAdQz`9E=k-*PcWYq<%V}ZmHHBuB5*|YwV8vMrIAYu;@c!yInrB0!Z!eLzkZAhjlvIUJX*%*TM8#fC_n*%CB^C8W z@H{+;+MXtEmyyiZ9@84mBQ0+k#B$;w3Re@Mp))~5h;j|Nh*l0}W0ppgRD{L;?8dt6 zKmN-qiN_if_BpDmc-2y09~MAsEiJFyBG=21hS#vbj4AE|^d`DOO6(}$uH&#)&@#HW zI_i>|)4c)vA+AMaDUT!Xm464mSaJOZhku$vokd`c>+3^7P7xZ9XrXjld&lRcTZ-HZ|eir>D@rE>W$CVj=+`M=c_M)19OvwfD|p(5wtWl22?A;fLag(BkY5pSW({c4p5T8`8l~OjX!xyQ zvnh=XwQYJo-n@}T0N3%muzk{b*$aw?Jztw_z5M%k%dKbB?=Biklff0a z^uG{k0`EQ#xbo~zEestZl_8Y$B6|(DOiEOs#T1Kw7U(JQg%`=FPoyeKt?v{A%`W)1g7*lx|LGrUF{eD5e-NlU| z$QOsbQ`fu3MJoFkp{F+>LXV<+R8~os5Ze4`q}E?L903j@q+8KRktZq9@3Jm32sVEm#tMF zhlbB|is}xvbtRearD@;i4(i2Psr6-exKle1eN2#MzM^QLSUfh29;KE)U9(9W4fp;d z;M!9DR6&oA)8l#NY{!#?0_tsF zcc5HBH)Mbk?FZ7pzPt`DZkTu7#{5Z<6Xp)_Ux)a}VQ|0>1iOSEJ>S_8;7kX1fbQCQ zJ56&Sy%-~D>f(|GoX0GYQ~>3SsM{5|%sNcdO)r18#~DO2C30(s$*L@4QQOe4v)=6o z@cua6BjA|fQ2o6)naU$lSkH@S$fbMt{d-8WOo~)i0w7cop^G6X~+No}@gmSl0N`X;i`n=g4_>8Sm|v64$- zQ>3z?*LJ?SB6;fUeHQ*-`@7h)*bC;~HIJyD9@~!Lw;#Odj2k!gWA_K}wU7JrBE;c7 zFsa_wC@LeE)~dZK`yO504BNP>4*x4Q3ckL3n>F#Du7O^^4c|cYi6i*(YHr#1&wzrr zGAZlo?5NOp(-1y_Tt9TxmDH3oY}*vmj;s>>jI2yIOy2+jdv4)u$#=-(Nz`J*n1$d* zRI|H!h}@Vkvtq)ZN091*a&kCIk~Ny4Bi_RxaDs3(;O2 zdf_OZ+^LV*SevIOe?E@oys3EQ|{+;LU?mnY=I#c6}N_zs#dOU@qJ%a5wMe`z{&7;WG zW>0?dtPAl$!M+vJ`g*1x=QK*Ev#3@UbVns;xBjBCy&JM>_)IbIB{K)Q3Zq(w<0%Xj~rVlPp%O)05JA^y45ZIqFgkdiClQan6N&$)sZ{*=^1A!JF-SQoJa zrUFiC(zI~Ww?amn3~)0pV?rv~Z%iS|hPRK+zV)mhEk);D3e2d72bADZ2I}1I1sGk5dBm6oLY4u51~CcU7a22r`y2PggeG;$*99Prp$e3qS!xy zeBUEx0F9Bdr`Y&53E&?{1_lOzOa;80CnmdVhH}~XiMVOte3Ms91aj$SYijD2R+!Uvo;26v1X!GxH%p(5Ag`u?iEEE5nE<6* zCK@Ulr33s*mj>GMbN_kB%o+&?_yTq0_RG8rAL-WZ%b=Fw^BtXG#}z3ML>U7F+gNbt z&>ip9J>{ORoSeq*h&THi?a+XZV!4dGF!|c2%4$tJQu&l!j^>$j#eyg+-haYt(_?e? zef(H!J9qdCWzag>0Y#D@r9ii+9{Pa<#L*;ZyUuBsCZBi z041gXa+q9Ui@E0Jgu+UEBWmxsxyqfc@SRzbD|+PLKhb70s`27JSEpnfW&3vr#rOUy zI~r^=Q*PU9YUr`|wl|}&yWo@lWBQOTntSYbURQiz2W=DU+yAYM z=@+0RV__(8i#nP2yMN_~MWzJzr|?3;1E?_R+bugNbkpc4N)v}tqlYMCF!!O^kR$o_ z(qd1lBs`K^|^P^l+(D($qiS<-! zm&%8@g>E9z-Qu*(LkYqvO?0F1ymH$XrZQ+OTxy)K*X5f#VON*)`*z9X)Nej+JaVb` zBs@`jz@>K?FsOW+5{>=eR>QxGHKF|uYW9;}b$(c=pzu~QDZR-Iv?VVK(DReS#@HH{O!O?N1LtKjMD?M7X#9+(oAp5J5^S>vb z*IQLVz>QvPHNF1M|Dpg7B6@Xnbhr)J8e7}pQW@La9^Zdg$rbNi3Y)|uMllo!qWmOw ziCR z-`u{Jb-wwlcV~*l$T;}W59fOiIzGujHbB;WT!(Ev z(Itu-B>yPM@%+fKt1nNde7e`RF^f3tpMXd@>cgINn)qnB`=_a3)BVF5v{Po^Q%e4njHutewnq^`&IfzX)WzCRkQC7xSDW1#c z_oHsMy(^I(yf0xk%t9=`AFdT|uT5ek`R`FymA|nz<4igl{7DTNAz_NM+lmck6P$60 zMA$9Z%oi1j9&kbW-6vxM%mFA|(zN0@YTSJ5;c7v_za1hws#PbUXDbjc-$TV;vC?v6 zm2d*PhafF2X#_RxhI4ZHuc`Zb^ym@VoB7G&T>t(;qfkS3q$=1nZf|e7iNmc?1!c&S zlb9KBggPElU^&nainEKPJE}&&X4J4WxEP%ZY|mwHe9vSUMog2g8+~1o49Ic-zV?;) zP;tnkFXaDf3jQiyQ!dM`nfmEOGC|Eqo2$4ZsUT|LPm8wtoV(h=nCrdaQ$RFi4$gwuCj@07rmcdYdjAZDaBiBhOY29Pn{t zx43TRxgaTq!52xCae$TW6-E&SdJ6Q+y}XEkFFy(J)&vH9a!72@OlWA0D{$gH=5<~5 z{ZE^tWu$Kv=KJ-3`DbEor zJOR_v*Ccsza`F~%>{HyUG=Zso{>mW(ajXY!ef?WBD*52(;cle3MO{53BywQMKfg8s zqR3C|O$M)XKAew#Fopo;hv2m}qo)H|u>n6=SL{1Z(dgd0n%<$_`+l6tb_eq>Xuma3 zE%or1*H;IA^xm^Sr3O7Ey0~6iE@xs7ZlNCATL3bj8O)RlkP`u4PxPvymh{gx2X2Ka zv=_OvxivD7YUZs5e@k2~ig(|x*Y5i1B=;111Ip>!pDiTa{=w-#5mUEN|Ku0|Iud}g z5ywR`5g}c)5ZzkmLzAm0s(i1ZWSN1{iK36hpL?I*JFT@v z3;W$}<_O60snnq%hCUhDoCp99Y**L|QA zKvw7WLq$P;PBnk5jk-kzigmU&OSPgk|?+)#TB_sc1Z4^WyYOTv_WQ0 zB6;*}kgm_B>tRRdynkW*ZnI?kZg&TVJ5QygD@DdJyIeP?)|7`5qR?7R>lQA}D#r-bE4kbhhN(9(lv@tH*r^_6#gPufE5}lOHaC(m||$ zdht&5KwxqcYEN&2&{*#^$*TYOwJ0z|-yZXV5}1xOes7KePXH4ZKSRJ_Xx^feb>YJ-ZT$wb4)D?KB7EjP6&s! zBazF?FwI1N(9bDgu0><#+!TR2;j1I@HsEK-S9M3Lf4fK|)L1!2n2@x|GUax~2j`A_ zF$>2>8lME9)gx!KfF(^o7O1WGnUi5wuGEI07eWa=+?u+$y(0%NW3ns@52p4*Q@B+C zoGsVzuR61$vlscB)OAJ@?Ia9?4m2x!gnuea$0JKSQ1b+K!86R3y8~^|#mwJDHoJ-xh|Iy=cO;qSig8ICKnZDi7j z+J3!wy1vl_~T=DMrRA6M#bJz>c%W=U|?DCnrg&)Ez zB;o92jUp5tZQSXOCKh;2@C18VD%k$?vfX(%75E}HEcW~uAK z?+3x*bXmXGi-nS5O~I!WTezN+MV|9H69y>DTsUZZ<{)u31Nss1g`whKer4D+ zg1v@#X641DP~f)3sR&q&GD<5olm)466`tg1(xzdl431s>D5j>Tvn9)BQXHABqTT`c7`@Oqn;gQ)m zmo2)RdLkr(!s#cHZ~d-nL*#grl{I=e2cm3c;%)QXH1`n0CT2({3zqvS@+``FS3nXQ z-e(%AreI2o01pJfCZ>|CUi>creY^ub?u6si3O=17qS@eas(+W+G`NLmS2I5eTBN>A z++g11iC53ml*JYrK^bgN>9Cs%sax=fLy9 zF#i!0H!0Z9_iGbA(+^fIL2mZZ=F?-D+0Q#eRC$#(lp^VB>*~#|fYukw(0O9wGSvls z?puUlj5=$=c|{dralu$p%Jqfa;oy!2S-acK*8T?tUk4wmy0~|`wZF~}B4nqh{G9tM zImYqUZQ6vqPnM@KT{(WL+mP*29%~VaJDiCwcFai098U+$(<~^TS~V=ujd-HiIg61G z5QnAzWC1!^WWvlGb}^|VQ@*iD;R;pR)LGE}aKnyple@%6d3@w{9efDZ&`DFDj*NNh zU#xnk>Yrq*3*Ex}BDm&bgL5TI2kLWGIac<=NoUy2a@B0y7HQRKZXGVJPO1Bm#nP9mOZ;g!XA1o+L|C{Z zN`QUZyYc4s7BF}MLWM!$m-J>t{5aFjMNCfjDz?roAvD)r^Ia)lj5|^X5>GWtolW^A zhufs!>YB|?*f>lML{pcF;-kC#IMk=@_$td6dYo@dgD*zu8W;b^A_0;mFa!hE zOyCm&6YBqXt2h4$3-kfCWB|1HN=|H^L#QCq$_$;1!0`4X=cZJ0s2jFP&^g1?9Yk#8 zRl))MKt3XaKU3eG3-?|MTauIk3Lwr5uw+~VddcD<;lD(&M-Jfl|L-pGg_z2uJ?7=K z_x>|CF;T6gfBHqVp?5s>1#MXYDw>FMG>M4KKl;-gD@&}Xd5lXNOK_xNUT}4zy z$oTQMW8R@|)}D>c&9fKl2KLNB++7*gBr?x%j3wN0DrWBJObAG_X#}F-nO!lCZswH> zABN~~5Oi>az4L18>uKdvvU0+l3ovj)-Ddqk}DqtW88oTg3Bf zNT1=BO1*8A%?u|u7FH02Fv83laOfyVBp@IxXz9EcyN@8L%rkshVY2w36vI_Fo2E(* zy=^N)bHd^WGQ?IduKqbaO@;7S9g6bAR<3zQ6Jbz2mDx^0U5E(rZ&z)zZ zDV(UGU7rqd6q~LO&3I~okrvrtn>G8<{&WPkf{+(jVEJRuRmv#zD3nu_c-fs*;!aRE zNzQ$W?903KIwWM2k*v}40Sv>0PQ*fxKIn~&j$Na*V&qQgQlb?7$Qwtg2HCM~z`PTG z8Mrfo1z_A}pFeYcze_G+JfuyOREQIy`-k#;)-4Z7!QDm1ztj%t?I*5apz0%+h0v2%i8o1mauub?O$ zV;`jdX)-`KR<4NOdsmpZy;H&(TyD|jfXS(GP ztI@&Qh*hsXY#Jsk;?_L)3pS15+Af8$c)J+wl$k|jT9L&3PRnY48%F<5)sO?-`?ylF zUaZh^d$XvhQA$Dlrwu0F(GSRR?k#5Ly+!=HDDVPy;Cka6v2!x2jDNFYK2adiSphFUwBZg_=tb6PiBz@+Bt){hd%AbOK=+`EzLd>YwIYOy>VSv*?lKp^e8^B3lMaT zkm~A~E)B#X$K5Q2_>k+6gLwoGz2bUS&2(vsK!LRoXn0N(L|c4Py=0@&So`B-QBT1olc6w%rBrZ3S|Sjg5!Md^2BT##CL`SDQw6SAsR8Y^u+E;hk($NQrH~HPT2i{4;M#`h*t*&; zJjfCob8 zu&9TWFiEEw>Gv~{UB>892^SeCDdZ8^!I8E*rZ19;q6snl)gf^?FC4mFQQMIExumn? z@i(9{PNrJRAsRCI+F|WkLrzkjyhRg@UX}tyVt(7Jn{)~8xRIk73f;Bd_uIU^*8>m@=zqf_3Lhg6N;9LNQjsn` zhRb-#IYw2H6b9=#T{`!J7Iz0Fi8A8-i?r|N-1gR7+vC#Xa>Yk)H(<9Vl9`~$7b@V^ z1Mq*#%U{?IbFD`PWcSmW%z=mAiw$UK1dn~dJpWZh7p-*f(|sH7`o?%AgJ4Hw1b|lq z9&EcV##n(L6bJ6wfFr0fh4qRZ@e51_$?E3x5wOQ&zh{ zt|Y&{8kg!HX=Y-wtiiH_B^@(0s8V9T$XwH|+ThPbZ-RDOCyrB=V%5=Ex`PT7e}|6!01x?}-6@2X9K(SsSALbw6Su*P zl&}*vs(xbVw2usqz@*`2%%<@P_vDvD|bGQmyBOEYVsM)fC|LOHic|W(xo7+XFLTRUpeS$nh6y z#Djm9RE+!Cb?)%qYeH-!05eUTMfs3lysC-G41H`)X{LJ9mN z!@Dds;r3I6-6}9;Q3y{vAu=^X4_c*mJaAHAdpu{6@uoc+fD(`N6jDS! zPfyRY*ARJtf|XLkzuW)N`#+hG%CJ4OyIbVff8Q3#FGUEYLtp_gzq@}xq)(=?FWTHa z`Ku*pY)rwBNK0!te2;CM3k&4IMcfxIGukzxYZJ$4@ig@^PPHTaGWmJ)9$FwPdP+yJ zAAG4x;Z(T0-~V0y;`9`OvS4wY;Fvaao<3TT{Ch2JCicnY2-6OCS_^&m7D(QRZsHp; zt+Ld@*Tw9y2P0vZOeltol-9{VAUWK|Xk3KID%j3X4Zt8AG9-XB)+PSExae!hX3UbT zeVl))TR-gQvqrlRx*JGMg#y~2xv?XnN2ey-tI5yd?1ULV`3bWe+tm zjGJ+PzY!emr{N{Zh>01Vn>vHAj)03Ph*MMPJtS!7JdT{M6p^$rtZ&bjflshyNJN@r z%H(&!V~Z$m@6L8)X4Q_lh92jHDkbnTC8%Kdo>3yZv=S?1=A&9ZAW4d9C1Y*)B`Vn; zfd1y`>MROQ&#F(afLo;cU1XO+-Yltu)M^`cd&~>zpy^OTakj$ERYsyd)9iB9Xo>34 zu%Y(xS{w_@;h07Xt)i@n79lkv`4lm>oZNo(8oF)nS*xX24(*ieeFU@J zmA0y9Sb=d^H7Lo}!B4AfL!}H87&0m8V@RA4&4^X&k6BT)A+)SH*Vos?8C#EhBX72f zvvQosb0ubM`0Q2}1~lj)dQQt6)KrO(^C$9~R9FQw|6IC#v=qL>%$WVR?lAfSGh^Bd3kO)O6kG$>ymfXlS!%Lr{c(1hOO~G_6ErHsnCQ*;gWv&nT@5UOV!MmVb@>qKzc~c(s(a61o zckfSU*)0rkn{WQen5Pia(-g>%N!K}o*e38u(YpiZvSURNbajfpJD##xkv^M^WU6F&#felWQ z&&dxl^uO@94r_}UWM5D1#3A@-0z8ae=^x3aA@h~bm5Gn_57tc{ z8anrJG}=kQtInd9?Mj}a=a;tf^~aPIMYMz9O?XL@qwkW{wk<9raF2v=H%2zrwlZn? z0n7{^Q80~M&dgcVDgUng1vC(DM5?xL*(!bH^Lf(1~<-HzHS z$^z}d@e@5~b~CC!gIk)~_wq09S3KE&)0BVA%#cZ~sdzK`6CuAA%nhATfWZ6m7sT(V+wG18&>II9Qp8EWV3#=k_d{4c%nKb z!rEp>k6L=ar@4tpb!pKFSD8=n$!*)Rj3bZ~EwQcad})qoW|?N}XGvR!DIX`EI1o5N|VBIv>G5x#MqT!5cp$R?2t zu0duR(H;05DDQZzh5u9pM;5qPth2te|3EqgzWl|$3Gt$_0zdvTI8T7CCloyYE^vfO z1@5t$^uG?B{*u?*SKQ4VhU@-VFG!SK?e6+`fqmfH1$2tsRTVr`Ewbls?L$6T2|sKE z9g6L27vs0|JfD1S&`T!%e-;3u)BB(Wr2PiH0CB6AK(g>1(aV#GX|*y%YAJax>$SYN zW0h$xe!3q2X>P^1qK3*YskB_#sNe*zzmEMHJ-YmF(jyN2i@AG$C+c>0b+3a+5G%BFRQBSL|tZRMU90yA@1^Uxfo6J%AG6M zEo-Own|8^kr)~_X=*V_FZnLX|=fRZoGcBrm$UzfJ)g->7>aAxT?Xy zji|MH@}GQH&Z$u~d^z@R(;SE&kBm*cO!nfK7xlCHY3K$Xt25#4+tod=kA2GPONEV? zro{6QaCC73qJl|{+!WcB&nTbke>vvLTH@S^ng%i1-nzvPsZ&*QAWz$P)%&aDy`OTE zf6P0^9!s;Q8zrR&*=61wf!;jPAdu9w{xjxiB|yj2CxrO9cUc?H`s}8MH*X(zi|?bmZov#LDU~L4;A$trGJko z*dsIFsjSRhJVn6r3>@%4n-}pX7U*r zBQj(l<%kQxf0$CWSPT(KRmgZW8_RDWtK05`vFf||5S`%uWTa>y&%hi)m}AG-1$Lla zpVZoYOBdgoB1#N?Eyb8qLd0NWVc@m3L{0ylb+NU=8ANzhwLpbqQ)lAY|KIP)zq z(KySOrbA`2ebFT!eRvTb=zfq6NkY=irRw%dxOWzqztZYJYTWlh&VN(4ZB3q2jzp3^ zA-L1u{U~6(vAH!E0jTmIp?A&A1{VK(zDOzbW!tK1gJ7f5gaS9>k#_wu;05q!DSbHl$XVz?djX!1|z z$xG~UYUaNA9cx?jwJ_9wyswkAnKP!yyAR#T8iAgJLt$scB|q3OrUVX$=xur2^(3|B zFP9O4PjzoT?5PvsLkGnAbqaGRayiwAN!!hLGY_WHXeS}A?r&@%y=pptAK-dqbahdP zq3zeOuTb@h!S(lPy_kH3l2+r^2Lv70xb!Tyg4S`ZJvIdWS!D}Iiya^Psek<8&7R<| z;4b`Cl{#qcA!Q;l)Dd!&n<-a$O9@P;+rIF6Mm?uQqQTW4Cv|=isJs5`87wRR?E?y~ zxHFpIlAL86F{?9&n7EB2bw){BZVkH#BDJ^4tO9eUHYI281%djGdfi?Jgi4dli=y%>_)~x0VT${QgFNEax&Wlb=(sAKK zdZ!V|^=9^d?)bSrH|>7hdi!3my?_!y=~2D)iqe|tjveBN7gA%w+hqSEcDEPtL%_}tK?bFY6d4>Td7Mvb-ha{uK5zHMb&Z);20DUCV*P61Zou-#j&6(a8fzz3e@TQq(7+N|cE?TCXhA{~J*e+mi=E4P3Fl=&( zI&(e*(cKGCnij)ERSS zB^Wsw(L4Z80)b8nvV$uQhqkn|G@-kK4}wU+QJ?dXmaKn)$K~K4pxsylA2fEr$^|Vk&WNjMl4yCk=-W4lXo}4C!S`T;4m!y`z{DzFfwU?B=;Pk`zlnzArYAJ9EKV{_{SPYYfhY+e*Ms823mGlY8dboAf5vyjpH zuNf`fo)NVo(+T{7k_0j#UDslaCj@a`voSO7=B^Ny;AeiD-S^=@u1s~iS1o1(lSuUI zZQQoCcR2Zm`({lNg2LB=V|zexmtZr2G@)fEQ5RWR-{-N`$tJ~OYr$=ics zsb6Ic^L!QmsfM9EkTU1&gvY73ty0;2Dn0J7K)-hAokW-{`2$NP=i0RrjqSfc_1O72 z?9>ZS=1VLHS_SuT%+#r3%Ox-qaV4MypfV_XatK+AVb&pd)dxph8wONP+Mfs?xFPSi zw_xCIj@Pe&Ha&$gJK-*KlhkGMH3SXY%1sn=kEu{vLRmY_M8?X4_vdvWG!Vn@*Suf0 zN-I*_f-?h^xXqU`ZAxw#_=Qy>2-oVr%gFWB|M~EMJi913fl;Gx(5C8}ik|Dxg(|{~Is9sHxZ}u%OVF zLG&3{yvLGZ9p7F0OOBdWLTST6;i^8&be(b2C|8v?tkz1G%Qo5S18M3toJi=wHzbPj zMTV@7vC9kWzi*u*DTDsusGHswpB0-i;sZ z4;}01#IeP?3H%Bia0!$~QGef>cXj_sv!DyY8Vsg-o}n5R^O^EH(+RrP@xI^71Q4K_ zh93QgZOx9$FU3F(Fc#D|tMNiZ0qymvdyNf#4ov*fed72(!nFSQEGpaO4g@=}El z(qT|=uDcv}k}uoK-O@l#)W2T;b_Y7^p-50@5FVcW7JWG;I7mZ{z)tWdutS}xYXg>z zyW7M*ma4Jln7#i+wfi^M)dY2fk*$&t@ThVlZlLG2tBh5|!&psdGJP!Rj=3{VmXJo% zC-9{Xrf(6{tFiR$-+o-+|2c159p}3A)^<_LI(Dt;kgZkDR*7{@d~>hc#6#9PzPwy| z!EBztJooh0FAkz1IEH}6onb6$lxMNwC8vSp#+|{Zje4L4vWmlfHjDD97v5YU6)s(& z0p}^Ua3P#PqHCwP&9nDP(M%p)7q(A<9I;l%d*(9N?`8^emvK#tsOy@7g>zz4ym)qp z@-Tyq)^N6r2`Cmei=6|iSpZs&_Q=rqSiAQ1N{pL!zrk+^y zR3?EXKI^2ftsxPc*}C*gGL_d>UNtZiFVASAn!1F{_b(^5+#m=lxwBFAKF*^`v;yOV zWIglhl!uXe|H~$Vzs|9}Df<|JOc$X{Y%xEOpe%R zqTif_th7_@Kh1H&+Gd#zzUN+H(BK=PwJ4(o6N!!=WO-&oT{n4&tXW;lIO%AvU=Qv5 zLiz$-!w&D^%ZFhG7Bm`bw3Xo0kq{zCD-!&*EXe>oAJ$8CMMKLBRnMo82##iSdbo6s zZ9DE`e-au51^n1wMVIfU&6El0A`!*1wdY|qJewP%^WJHh0~hTXEcWjj44LaUEmAL-h86&2CU z*}BcCuaoAH0uB^rz`r@}w7+D#$rR@9YL+-quCu!@qL#VU&$qWR5RAg;@XPWeAW-7i z5IK_0dd@z+1cAH+#|q1XNbTN;T!TcKy7XpTa&{b3DV05mP=>{E+o90RP_40S(%Ev0 z-&d{Wy_@5oP$_PRq7)v>ZkUU%vM-E+$JKS-iuf_Y4H7lD}QD&4<3YBtLJCJ2kijjD8maj{4>-%=t0~ zQKJLr(=;k{9X$ZoY=%m)kB;e@ZEyMH*D&0CD1k(*kjeOY1(HLw@^}@w zS6cPD=0Ek{1yfL0a@@w?FNVc7lj%KLqqy}L#5bKQbk%nRbM*;%I^8j)xDeB)-CzvL|kQmDZe6 zNiGYV;(?|Hrv=uB%I%f4ijk7ouTOM29m!#yaWjHG_}b3nk#Zz;jv({{J0*q)sf9GskgY|kgz zpZ!p=(bU^K3c#|)-)yy!w#j7`$|jKLT*pkhJ{?!%J2QQ%5ueL)kI!88cbdT99%;T_ zjUeQ=1AomB0=^9Pya{v{d|MSk4;AM?D?-OPsgJMXf5czu#FAwbAauq7*IK2TcGEqV zd9cm%9mw4(R5S|5e-mMuL~ky(g`P?YGPkX_-&M+EcaZsF2Zz|xV`kN^%Q6LzF*d z?;=*y^se$c1jaVe5nJ*={SiFrq4@UBCwKFz2hUyjxwZJUCPy51AFfS3&X>UL>*{qh z_GDWn%{0_%)Ww}h1ZR39b4CeIPWTNH-J<_&SQ1;E$jKsvpz6G?0^}=Q%Yl752sJPp zYC0&v8_R5!LkP^i=$5drI8^;zFgkuEbQr61K?Hr(gF^ebB_%2@?Z4fwdJEPUV?U#( zoQqR)a*@bEII#;lu~4tB9SZNKI~Rn0JK~li)|a}%gsZOh_Wnb6JK+iJCGN-OzU#I zd)IZMvn-J}VE;9rvBT9x9XRNB7CU z1}?*HYvSdf>fr?z!}l&AR#@H{mS_{~LVTHD4087u-~Nm!i$L-SCJZhZ(O||zq08}L zE8=sPbAjtwl*gc^6v0YC}Cy5 zRIWV)9!^||*E~hZ0J`O`e2?3PP{+;LXvvbKh*O)(tFG(@sN$|qzbB4S`|IE`q_;@x zHeuN*_OX8#tH`Yw12RbEFyd-y_Jr{TYcBry{y_40P&u|@+MFKND3s+YE?^eXKavAw zk>WiYCBK)TE%+=_z8}pSN0w3SCmI$Rk_?Z;UrILTOwJ0aV(vA@%#5dZsjtf~X7LqC z)3>id{hpQLAZ&AFD5r?z?2o*pip5uAJobsu#x^F^LVLQiSD*z}LAviTNmEhWrT4|I zTZ;vm49>wm76f(svyR0knWe73z}&buaJ@j#b$b_Ka)TZ-PFR*LW#{c4?_* ze*fZw)4^v%fDN&Zv0(v*24X@gvGk$ij|mzgkkT<=$ZS{#8*Xka1iTP*FK#5$CK+#%s(jl31qAwlKvBTazZw zoFFke$r<)-3uH3*_I1(b0kTn#3y6Nl>6hxO<5Q@`KQBAJEeh$_6>6HWz-j`g+tnK& zK8U$3nuqX08~st+b?<)u<|l(|r2SBtKy@kPfdzZRleeXuvC=h~NUGJGxzMWA4aoL+xoTf&lW6@}Y+dWRcd`xE zdSbBW7PTtEDwMfs{e<#@=c-1jj%!xo3CG6CJDh?Oc_o#j?z=d~zd~s@*qz^i?&7kn z``8PuYx#TYB2zpCIA;tm98!nt2gxn|;3_>-2atZUJ{1eUbn+n2_^e{a_QY@uJ1o?a z)!wLk;+78%t=%+??jd^C_fCH2S~<7VE$ijt5&}u2`V7y&?pz@`4}M3oC=+BuKdP#K zWi63O%0UYM*eOGqrglHL;Zd~kWf@jE!|2?Y%;GDdFIP<+3{pAn`umus!lG*_~7X~6`L0v->A6D)#G&BT>*VN6T;?d`*kO{j60P~6es#rM`qQv(%a9MV7gB} z>BR`s!NL;!K0S42`uc#BI(Ba#Z~{x^H6#i)+}Fc?%Tb5u%0wv&!ZeESx#n#)=rEg0 zGC=v%Z-T%>hD`x&IQ9|B)BmW`JEd3>q2I7f>oWjld1STb;t*f7?kkG};C{3+m>qRi zAv?b5*mtxlQWn@aa>|>fDDHKyqiG40KX!zum!$-v?zT8CTZpS)0?;*Wz`HcRB~*TCa8dw9h{(gn+A4 z7x&5-!u~i5@SA_^MgdV42^Otq9=HTA!vsFO(>rXfK6F!@m*1m-uIjhoL)gNUjpSp2 z5d-sN-G{;pW-HS4iZPXyGK^rHqHD9cgRGUW;&i<5yScP zeuPtxEIdW`5VWv}Yf@K@$Q-xZSpKm4fuGAGEydV4{6itgS7gOl66dpaLk)MMiC1Dd z$nD35Ktfwr*GJScX=G^Q2F%6BCwk|68SKffyL)+6D;bE*)~cadh+gmR=n)`Kv_}&U zV!!D4s0LYKnz`VH_G6ENl2Q$%Wx|+vje%VKLp_;kV7S~-YQO1W-8-8D-(A&}vtK*mz;;cJv~a)MI_J&dh$Shm zFy4trICgKqq|cSkQgvZK$HrJ8*2aR zLf(|+vR=ujWC{Fbji0Z|7S=ILzZ)cxH#0pcVo0k5>+EHIeA?41RzfpCYp-Ue!-3hY zbZFloGFlq4k2M-(+ldqT52HVp+Bku@l-h+<6**(h7)*Tz#LfbBYR+{y>h--XLkbz_ zW;w~jUPn?=k;-Ebe~cmwy3hCXa0_i}=1r??H>9Q90}Ttu8Wxux;t9}x_}=zR@pcs& zwY%%DhHE5Hk$4)byz2Z^2Nr8hFI$DVD@N-H+b=2*EiP}{2|6znI^wR}JoT$hV_S}M z`TlEXsKq`tJdwY{{>}L8o%Z$B_X-I&mC+8~plVB8YzuYo%0hD?r+f>P?FH>{UFd)} zd~1tA-D);ahSjG5Ljw_L>zukCrq;es)Wp0ZzAR^y@8~md)!OZkAPGbHhv5#M(+@^A zhQPU$xBaXR^^6JG?UQnkBg@_|K$tB9KQNzd{yqE~nfp{?lVvR7^7C?X4x>6JZw$;V zm`18n)cuvVL9K~e_lbapZ|#O{m0fOOIO^Ib>E}f9cBoot`E}4~Qha(%MxCWauMBF2y2H&c?uZS1h}Oj0X3u z%}w}^#Vcz+j}=x#4Co`gu4mRh-*K;JUN~l!1iR?z))91>R+m*;82eD&{;XRC5WkKA z4Ysth>2xyOB{c~m_jFz0cSvRl+*E1k8c5p8*za8@xs(#M9oAx65U#MBFWwlzjSn=J zv;L^8Q<%aUQoSb1-~mh}BtuI4+_c&8@qQmf!Oqc|Nio_Tk+*@Wt$tPxDPZ-bc96eL zM=?omE^fSmryUly70`{5U!MQGlh8v=?KF*YJllu;vZM9ulGxZ%n#C7lOSqa9h|i=T z$;lZP6;bNiH~7^WE{<1A}& zMDxwn4%qnPiPQ|;Q;MYznIp>&*#-Z<^_uwU<)-=5@^o43SHNM`T*Hm6LE%r85f;)SDStN~p~$WB{~p=@H5GlgqxAJA zl!aN%OyP>S359o!4GreeW-7dBwrRG_%@>-pf$%%)E33{cs+y0(_UY+l3X*^9CL^XU zlLFPX{KVN{0t*Wy7$nO*96BFToUh`1yr3*v-skMKqU-S_p81}d?~R(*+2VJJO8?lT zz-(zEvthbmO_|2a#llvt&f7QDP=sJl;^U`_Sc~sCa07!C&RVNwI~&##;I^U8=d0$R zWT{H62r6dX4fDr5v8L5m0Sz;YrO6Ra~0~u=ae9(<6jb1c1t!8PtDaZ5BM;Y<;NlyhXTjS(K)U!o_3LS|4sRSEx_fp zk>rTsQ(`-l#C@0NMr59 z@EB@C^3eV}?QciP$KyfY^FNtxla(?yzHbw)yI+*aCeN#P>f2oWwGh$U#5OS(ua1UZ zd5SalR{XG9&l3eJZ;F{f&3uHVk1f|YSZAedJ9 zdZ-OLj=mDd1gSuGJj*jZZRE#3i5}r5zAAABhWn%2MD!YAcQ_iiGm|G`squCANw#U? z&MA^1iIXf@onu^gd-<%kGKf-%qq^nkbJp7C&dc)V5?rUe04ie7V=|7&vd~Hgf?6e4 zB`spIaFeu3VQS!9d6daJnBg+@)?ziwVcl`5w>C&zA_fIg(iubF?tm=GriVSCK`tu; zI8CzQD&@0ckZkK*;lQ!6+-r>ND39seT5oxWnFT_`Yi#hGnuY;(%7h@m+`Z|^)^gbC z^4TzH7+LYnSGKc5glzOYBp@`2T{i5YOF7*p{PB7xZ$eK+0tw1L`?vhMao@Nfppel) zID~!yTE-5zvjlLlX|3Gq|Cqq?pm+DjP(0Y`fw4inT|BbARq|({AKE@k7|K+?mdb8e zLT9v&#kh4=1TU}$*sRhMg|a7eR&nP1^5Y!o20yHK!?Gg=pX#DQQ`zlP4P0B(vYk9J z%?*rUZ}O|C*Q+$0)Ci>mtQ!PB#Rk{i;?Z*z^|bK@+_9s(>?nzLcY<7(&NV`- z43l%Ye#tmOZVI2Vf&qgLBg}{m#QN*!iz&zI2HYkkte==@wX+wrHrhAdZjR1JtkPf` zxf@{ZqqWK6Q%dD`{4$!>{9-ks?7#Il?U)Ht&W%vp6MHg+;2+|=1v5};kY zEnj%WA!nERm2Kr$9QKy6hyqAk#+b48YNJKNT(L->Q?J4D806dk2n&b0EtvIBE(U22 zk_>p%G1AK&DcyQei3Gjw`5dWPlk+0Ca^|4j#qBCYrt?(`P>z#X*peWK+uR6eagz%B zawk{}hwxP$?wiPun9o!6Fv?O)M@$F#Q@=L{kZ;N+D|D3)ykL)5G5XRT!u>07YWOVdIxTlWU z2~WdS4+=g7WC8o!KfhWyNQ;YQqlWjiH*kRc7$&56=ge~sPkDu@Vt-TZ;l>Z}T^o2y z-+kEnDDaii3;N;>ypL8W9aQLkjQGYR@3~TfmH7;m zsN^(^E22}#=c?3CH0OX#mteA&g_(6*h=~UNi{cHG){)rHP4mjJH6oJ>{Yttw@tz-n>iwsWAo(Vfqj2&$RlDNJ%$#~ zYZx=_hqE!s7n^<1x)5ITBW*sHi0|PRJu6YXFvHC}eP^%Qda01kwnaHSIdz9I_NKe< z;^l-I={+QA|wX#YbR;@^en1Ucb6WHDi79!WD0VwFK$JNUt0`yzBp00kTiZwnlU|HN=t0pD*bBc?Dt@? z^`5ZK9GMuRG`zU}Q9`A10Pm=ScT!M7C5p?4DZi!JrKSifq*Z_Y#9^3|o)8@?zZ`c8 z_%XC##P(t_$}$Ckel-IkL^ng84&EdVCKTUy7msW{OmA-O{`Xhxf0g)O_((8{w*leO z_j{t2=c8YPquXJ@-(Sc-B>$rnp9s$U-1#65wy-YX)ZA!1&i8hcBU3mIELuy~>X9y1 zZ#$M?XlyXKD8EoP&lym}zYG+AFBKDkjxR+kz5Pe@-9K3xHOV`_?45-c%nJn=>~C~l zF6gV*Psd1b5Hc?5sa;rOrOV_nSp}+PwGNq+x+8l?5c3N+xpKqe%Lk))JwUN~PiaeT z4i(|I6|%#f4YIy!n<%cw3V{-rdT72%uQzYKV2h%-;p!4)ASq3*+q|`zhWJoH<)Y-I zS>`0UtpNi@=5NxCV4qO6OV7Uf?g~Z=?|IE3^N6oao5JSlGTupIg)<2pb_da7kx9RE z?mlO}lR}q+1%@RA<566uCy@UNi(-kS3q~im8!F-MlklTlyZp1UjjNT9A5d&~he-EN z%NgEv=Y_Nd=UxGSVa}bI%9WEl6yYsNI46ngE@!Nczkx9?#LAittSKNr&hHRU=WVEP zFtDm+@IH)RqSF1O-o;Qzh}ZwRxM!&^_tfA*N)-1A)GkHCpC&!FE>1;RsprDW1mJYbkXo?=aU-Y8b)4`;Nw^Jvw55a& zwy6Y7tw(jjg8l44%tYL6}x_-M8Y$Af=d9v;vp6|D|By?OI;GR)Dy_c)Q4ZS<^dBE)WmAKwu~ z9G3^}21tEDyuhw~Sn&Da?*X;fjW4Sd7z-3H&zLDmpJ6ZB4U`fc`huwHt04QVi4|di zHTLGr3N$Vj({o$;9t9OF|9XshF)FzDqpL?t3JO*gSt2GdkVef^7M-SO!RfMueGhyH zdmB2v8>qNzr9P3cEEFl$r9<>&o}|9wZjb9$slZdhp#Hu5>~OWZW%4?g>w{NQT0oJb zPqRx;1!Z0i@l!fFj#iwiHq8VMbTeB!T>29x({`P*AdJ5u`1oxcFB+3B)F$b-)J(fY zCHyIl_K>G0ddw?Yz+TFF3Y#^GQ>0SD#Y;yMme5F`=oR67A!x4vMZMr~fT~ z>WP42VH)n^wSi~aDk6YwvCYpG&+Gb1bCNyr4<3ZIr{B&JuT z^L=impU+SqU+j(ea`MxLB1t-eh}{sb;@E+BlvE2k$Mm{8Lfph)1d6~pvBWk4Q#W4V z6+&uA(==RZ5lZ)(w{Qjywt1;eJTK@mV++~JZocWNWKO!*d&qlw4}3JP;GPGwI+G&o zCO#ZZ*IMG~=vaB4p085Hoxnn7pI)a8Q%Ubg0$=+HbAn4^WA`W6oezX|w@I3+wF%2Y zLh=Ouavd_b;7CukUYH;otMian-#?`3U3L$^8N;!ynzS@M=2H9(6L@l+W2)87UnH46I0Do^jxY zSp27usEHoIN{>yhwt`@J`0WnS?wdR+VFfRf=3@$+kA7-ouII2O-Pt*f)i`}17=!s* zVH~j7c5d2t$^yi9cP=m+`_Co*pk(hxR)HmzG5T)wFDxJVSa;FOpa4|wX7WEn1DZ|8 zuz}{|i_rJLe`J_+0Fr$ZSW-&=n1nsV#d`BjYx4XO|*(U&y`CS-GB5O}vOw zL5RI`xlv67<(pUeaorS5QsY@i^29H#1bq}71wH8-p>!k?rj%W@(p%R}lup<1e~X;^ z@TO%;Ib4SW1L8N7O-y5u^zS{HUP~H!pm;MIFB5~dMGby)|NGm0cYY?kvi<{S%0F)i zU{;^0TYsb&!UPrF;Ep!;oisFAsCzEJph*U;FQuKy)$ zaBSNHt&THK^cG_{yE(W2+3g+q@8R6+FAt`;hh2U~zoBk$rGl=iSNLI@CVAm#f#+xF zB7b;e4)%63buX~Pz?M&sS$R>4aUx; zZ^O}t3#104k~1J~8XwRv$AxtqjC~)v0+j#GGQ-){V9tYb-c!^28Q=cbJ-A2wH!2S837)Hls=iF=(>>Xs%DlXT#SLYHia`}aE8(8>ZXP&X(J$zU0})MO(Pab=x~4r83wE=WWl^$6EjyfFxEi z4)J16Jbzei{aMEqlNH?F@u)hlM=|Y6ZR>7^qA#9R|4GFp;-5=BD;k4MEtf{pMzJ25 z_yX8%ocRj8*YI9;E=!NlB(9`m668kfDmI-gRAavih7oJA6ZtC&EI7~||5jwN{euw{W5 z+ffx0l1Ms(DOT&Nk9CpAMNwQhGyT<_1rTjtu3bOSh(7ir>qa2Xv z82;=5e)%dfsm355-{7mX^UV%eD#cTK;#8kzFlwq_B><}T{q zlWHtOnAwb_It0?*>v+5hc=e>8CU6mq_Fr}W?CI?M8`lOdb`o#U4hyW1tMdO`*AHbM z4|R5>|L%f0?a9MQB=qPUey4}t0jg>iXJfq9BB52%PVjRoKkrm3H z9c8?&%p(h^=A-yBTaIc^nL5KIHSmMB<0L*@1D@(Va3v{1=*2{<$Y6n~$=s{eH^Y%yS6KnR930qa0G z712n9V{vH5Va!=}XCJ)N2UGUXuIz@hcAGf+he@BPrMdS!>~xAFA(U@z^%kD@srYi+ zmNhpIrOqs`(qI!fM^F)6xF_M5V%1;Hp1a0|@W{<8V`aN-o3~bAR?f+}5RJzG+&Hv> zd;*!AI1Va2Z6>e2B|=y@F|ZRPjHgSv#&vzH{aGz{*svC&qW50FC)SSr?>Yz6+y~tCd|5um+f`*L+W?Fuv)tqg4;p zSS}^B`(`8lf~b9Q;(qgQ*aM93kwRbnW+wbED&R3$^i1~QIJ{qfAb%8&G6JzTO?5Nm z4NLs@dq-d9#oxI}BeNG)Jg0ROhGr(_I`f9G*7ZAf0;^z=X717OLbo@b^_=hFdKa-1 zop5QD&)hbiQ;>4H=QT3JK z4h`%}KT=M%yc)s$Azauj5#WIQBGq?q_gAK5}E z?#q5#jA{uyc)UlQZ~Y1ViSEx)zc$B4?n%$KHbT)+GZr4m4QZ*68!{Af)7{>^?$+@Xv1e`-dQ3 zU!x+mol*1S;qNY#u}?cShj25@d@&hfu%$lk-C7OI3&a&B2w)+N?1#RE>bHG=7D{!; z<5A5N!}uQ(EI-?<-|Q?+!N-Yl4a@4NDOm)NtqTIb4%U{!9NERT#i%^e`Kxtr^02vj zvI@VH6t%iG+8(|=wigocmSXZmZuA>H<}=-wf4N=HB$YM5ZuEv-5fo1fZ}BtMBwYoX z_kpq`$`d)ABvLYuL^g>xN_Dva#?}T%ZbZnj?S@F4-4L4er_R{i^ZLSdABL&)cKo@v<@tnEeg81_T z^gas}kSf9N2|c?OGz8w0t(uc+-s0$nDJ-^V zYK1?hHvq|-c9+{?8aT$(W@5hmaem7q_SRV^)|hTiC4D^NibzcR;v2eon^uf$1G-<3 zxwHy>1iMsS83lpx?z3skE|HpCd*)rxGTjAM(Kp&>+RxJ450()ypEi#FGJOmt@C^zq zWUR9iQq0zhD>BWMJ_xZeukN@5c(lAE3XS8gtdK!8G7sCNd|OIHF%9=(DG7^mSD~Z< zsT}H;gHj{+FhSMSEDk0YaTgL^7BEoDD~r!kWsDl9net;xXOee=@MFQ#d^=nO+;UBP z2_+1!R-eIu$S7(HLXJBkq?XJ$`@2axDfv76Tf|L{Z8_cFa^ICJMf^MpV3AXtqDa&$Wdx-?Q|Cj5Lp-X!;eHP?JS`YnKTb_TR{+hO-1A_~PX+C{UJ7#7${X{hE?T=uClLm&A{!@91hyjV23_DJ5^NJdxP^nZOBz*7 zP2omap+r0ZXW;KDm7K-wmPyIJkma6%Rh`hq59ZXP}EQap_b!3%?f*9nvd%9w;}Zd+j?4t z;N)59yk}#4U-g!Y{h@GX@v5Mq81^OTh=3t$-?Es;uKmhDycv*>s$-z5lkahR--IOm zXO@`1$%T^s4XyHn!R;REGZA z-3&XXg;a$U7RT^ync?v%-zkJ)9_rIGnnQrfLP ztz=@+hwcT3*bWhP^5+|*%*GM;W8#_T!HDewoA$XgXil&fr!9qCoDCp$7eUTHoy)3@ z;ii6Yk3k1Fr7`jUtnIBdQA$TgzkRi_E0jVz!N+qqRhTcH!)OwVB1kZgt|vlHlx|l? zaEzMXk$W=2PASE&i6U^4y!(si1kka4ADKVdCUIDeo9omao)0YkY!(cZy>f`R->kpd zESMPH*bQ)Q|IA}$S&Zx@DL=U({Pb=o7oB)!@{4}VDKeN4+&42xVGF=}(< z)6=vOqtpWl`4eundCGLGyM`z9*Y*0-ktQrsGPko#LbDVCHL;oiV8V+!3|)9`d3iFn z#d;e?eok}sIG?d0lFr}tfO|oW`s%7)J&|EKVhUnb(d_zf?cwS(wSW;;d_nX zYHfw(EE!M0*(kkxTS9OvpC;jIg0j7#o^HsitO3`4+hhxScC42^r9ui{X0EO2ef3`M zTrLLd4%yKqYARuuaH#*$icABt#Ywn6`MOc{*M#gHF$3SJPvgu&)AN3*Amfi|_+*_C zOXy+1!v-vmkkJJT6mxg{>VTRV++>64xe`a@G-du+)(rs;8o;k6}+VkA| z^^XfKusy7u2Uya-?o_H&z{~y0K6`E`-b((5=e7E=TzvyvT4=8)m{9EN|7!uzz>gtu zQ(Q^_bROp0>pPxvz$nUj&;yyD6rQV&JR-HSUp%xl$LrYQMJ2&N zT~0mMdla4ZMd7=GG=6w@Oqi9u^zvNLTF2|^${RLVfBTfd=TGu+75sUhiGw9v731aR z^eTIHM;fV7F@{s@#X>z=UiImj$*j{@eP6BLFcVJwkQ*(|jaxrIiK!&~=qKcT&BjpQ zk33I?H4=3MgM^Vafz!>1!dr*;!oQpggivn%Dz=PehRp5QA8-8E@vCCmzDy&yJ{f~+ z$M4h#D?Tn@;vFy6MlPZ_(q@$xm5p(9-|c$4E<~3+k7*&!mYi&hlLJ9^=P6^gBGG%v z#Kgp`(({c@_NN&5u?pBzahkr2i%;!7<8jgoj}lPchHy&361L6m-R`w(Lr!wLQ|>}w z(SMiz2tOgOD6JpS)p45quoW;q=)91*Y|co8kR7uiNN^dtZW1N{UiWr&$swfogER@G zowDd)neA>hnujZpK8w3JG7m8ZbLSOIb#P?RqhJ!|slEYv>?m ziWOn0-v=!{&gpojc7qG(Lr3=26`6q&uMO0vGfrRVcWfd}v`a8^Gu01cRZ4h@kIXqe zO2b~bo6C)4N(N@q+~!=t5(GDu%VmhLDueKv7C+}>%p%WwJBmgxqz}RU$#wQS1tYpM z6btNl1ul<>eaf7+r{QeXP`pQdfzlyGxW?(yl7qbLvIQeOVOw2&^Uzd-y*fCV1SB!z z&GljhiK2}wWyEh2mZ_i9zlUfmCp8zYkFW1c8SWM2l(+P(g_1+UvpN^e7{xXT#yeCf`+ZXKQ7f*yb9f!*%k#&G4NCdjXN^ zJG9)DlM&lU;-!oZMmB+TA_>*owA&j-x4%{AWunUR&wl7)9^VH*(yH}g_a{Hp1XC>X zUV&Q}O-bwE=j=%WPN`f_<;_~6s&@7eYrIn5psMCsV}b{iTjvNI?qI-lQvTKVWj%M( z&gFLlzfRR8@|>KUf9=@zqkifrdlo0b0IA$l<|q=Q)d?G8j-#7#8fxyjAp@uDu0%W9 z{H>OE5mI$h6Ua|AT~I^)htDdBtF*!KQ)Mgb4RbgH3$k5X{3re%25Q(Ob{J#;4=JWe z!9)+yplZj4ISWL#_xT%3(Z_Ob&WInJq`I@(9%Ud3D@kAdN|1sm(ZS=V--mIf3)fSE zJ$7;j!9H#v>hIuKk00rdvS-+K^O(QaeQ6^xRnFt;8NMK#wSbRSV%P+nJGFa^pLS|LLZ+pNQ{ z&JGx!0^&i|`(=Hj?W8QsTFSgatNYlQTAsY=)lC47C4Bw_ImwDG?$LzAM>}6j<3W0l zYFwM*8OMT}FcqsYMb~#dV%_*qNd~{zFcZ;bS_Hm7a^u@8A~6P%S`-9Y@{4VAMdPqU zpmOloF{uu{+kD5^P`G+tu*~DU`)41qfL*~qSlfGPDyuH{1qB0@GQq^FFUvwy z9xHQ8k0sC^p0)(=09IGw^|rs$y;E-jZWr|flWU#|)IdGpYzxC0E&WljaOn%^Ftx9C zW~YfW^CJsD((`vd;{dYEDw_aorNduT0JUCBQ3Lh_ul<+G4j6n+BuK1Yy~vhX6JQJP z>QaI~?*j50Ijg&4qf6p?f0fUi#0x?hN~vlVwpQ;jiI>>lLMo|kFU&+mMW>rq_Ny(f zVD0UCZDa~q?Z6JwvI7hu566D$An_v(b9mX6zI@9=IVQ+}UI??NW9ZYJUXSNSk6%S^ z0~H1xqVy2oN&|bVhorAc8GI3BeWd!sFcB`2^&!NVYrXn4`q9xKiR>u*k4eXZ4D$k6$sd0HdC&7eJ=;>El$B9gCG?eeYw5low}kL}px4HPkMqw{g|zB|Mp*Jx zB@aP>nXdA_VSX+7Ji@Dw;OK;b5?-sY-XliCi9g*tA6;^>h2Zhh1=RuMBkO~@`-+jX zVa`D9Dl&G~HB}brq5-5uX&;=P@MEWp3AjXEu@H|wxsAom%H_I-D#T?WVP@T&G)u7| ze&RD{`S0jfn*4Pgj>p8jh>{>>iCKF4 z>ElyVq?2)&A(<;&i#6Wj(0M=yQ8}6sGPTK*w(qZIkQ{cn%8oqWxxoVl6kq%|R?;^v zp5}kTYn0_b(ZDzeQ!DpTH<@S))A1F&wRFfq8r{v)k{?v}t8v)*|7g51Ud|F)H0BS9 z-*5~@99mKua;a{54Slc5%qT7LRedENwtrbIO9k-m?_v@{=P?%0VkCHz#E;mu&%>g^ zTzWg@mNH~If5*+R+RT>fv1u;nTrSSMFW1hpi{hH@@nCXZrquNc-VR#vYA3X*~0N<=f}n`hzXADgz)K^)22*?k#WJHy(2Xa3iJ?&K`IJu~czW$m39s zf<*56v(H*!M?J`nm4DT*5eKb*O^oUK*!dPb4ZTI4ge&jaHe(UJ)sLh zI~6k-rNNL^V`f-S9FS$MUB5^_Ob=WZk&D#Vt&1v?8g7Po>drb2*4nS_$X^c` z&Y3qV7nje`LL=4JEm z!qvt!?EkHKX1E7hSzB+c7EbMYQ^u_E|DdeMV&i<9{E};C?yRM;z&EW+8z`@Dyh6>Sb{d=63EolpFOG zAJ4P{vJ1aK#eWWl4@yVdLhs>3#(y?3L*dap8!-O1k!j*ob7rtM5pwR_!b%GWZlgT( zcKzIts1Z|imrO1W5G$TZF47F_zhqdMO)Cd%w4{)VE)$`Z6!$nC5u11D2-&&5Q?iScWQ~TQ7d1hr+-gJTqFvkpf`lpU$c`ber-oYE&{%x=!^l=IvYe!c?QM zyAT0xq={~2VkK&A-PD*Jl2A&g2~EqqZY@?-?Ey2SE9){A_~&(d6Z{vTdVg1 zmiwhaQsY(VLXr6 z;VT-osk&oc)EQ-!X>4 zb%M>-?2&7jnnxvEv&PbDp=18Ft=feu1NLSK5@R*Fw!p&bkYt5Xv(jjtW|{DC*Z<#bi3hHcNA$ zF^$Ce;3%K34GYu3{-z?!UA}_g9D$VW26x>I^~~A~M+nbKjMjgHp+NNsK~B^|X7ck_ zk;D#1?aElneFmuF2=nSYk zXiP`zydqPN$h63vF}ygO8#lPUFv!KJN^~)J`&_mZ=D-rH|V~y0H^mwOUf$2dV+G_T^sV$hf5q5I`j zqr!2qCI0rM20eDD zg&uWcim%ks@DXj+wh?>ei{hzZ*TTr4@Q2T6nfd7=VPzCNpq-9AR(08k)icSK-wS+= z2Lu~1&0a6^A_#5<=@U8#MjEy=_uVf!gY*4N`p1C08XAv6mt4>s`Lk)~cC=Dbl7;wh-<4O=4niTIdl7%dwqoc)GmGggNs!W8WN8Zi9`dDD#=g zpPjqfqJ3H+-})dc))}-{alb+Yn5q8-E$~~-t^RuzqOa0?BXg0GykI8T=L=b%-8@CJ zG8QN9sEavowr*5Ott1B$J7T@(Bcej%tysg}Ibo@q3%{a#MpCx1{ruX}(Y$43mvwFiddJD?)%1h5YQq+hmuc17%uv^Z{jPGrJF^O7m zML0BC<4_p%WE5t`M}W6UZf_au!f|kPO)kV=Hnbjf1i$PpV3kJjkm~y5dlgXPVB_^@ zQ%9uvO|bsn%trVyQl99M>w}K;#5hkvihj?mV#3}pso7(2b36gk8?jHAaJ*n3iN`U% zW~>qGVw!Lvc=x{k>9W=5D~RXIb=nm}fC?)lPGwmRE*ukqOUh)+FlPL`K;L;9o9{T= z|Drv4HeJQf)wS(|lpO{`;A^B&VVeFIv^WuMM4ZP)Yl%G|y_G`n+KKyKaT5knQ6CSY zBfF;n-LS6qf)IbSwC#8Ak-$ZScf+Esz#9d+m&od{R!9KMhPYm$oZu}jzZOTkVJ>Q* ze^UajG~Hv+ zSBip$qY&?nrO5ft7o60E@|5!2`s!qyiI9Kc!pcYR=(9faq1bO0L8K>Zn0}9e3{JglLw^hEC=MB%jk}gQRh?z*K7B?Hb|V-UBk`S5)oAB<(DcXgCce@yAMfR1rNDaC(KEtNuTstc92qO@}%QjR| zGdRBSoLa&+pdXvUawUYH`$*J(gixJacw=|e=qxO;Z^6dPj}#WomgILBRIx4y4((^K z+j_F+bSGH+Gmr02b32{Wglpw{9a(kTlHVt&BO(QAB%)9*SD7v)r;3Iow{_@oX&(*6 z2tDz$$f~X7+ABEU|Lnelj`OI^2TDtfMEzIatM}|v^OX#7o=aFkqK1MwsT2b2I^Yn; z7T8Lldcq6rH<_!pvgHbSOARKLHgHijj1W$$#1WKMa$JToQe5fF@^X4(FBf5Q;Odi28S`3L4HSl&d!aiy?iLG%SK+U5PaXU?>? zv;F}*VInPD8^XP196fTq&^>qDCTC6DRf(i*(r1C_>#~+`kc1Y&|HBRe);GIU7I7fk z4?`*y4XFbLqiC>S=8v{|L8f`cMe5y4J}r8tlRU7@wyUJI!EapGaIjHHEzX%AK7J-w zz-F!CO1U*KAO?^L<-XJnLgft~XYs7tyeYAQi&n@2nQ|&#qeQo4Gcttyauw+GU+}dhBS? znzh}y1fz3Kc_GbeoPfk1)a>jmM)JplYPyBFB!+C2qXxu0$)$1FzDe2LH&UUEoIKD) zs2XB~-^nxs;5ezFD=`;gK3k=rU0znI3M7(AOj1fyK)-8hachOPy48S>%@KJ?;7x;| zmirz|F_>KuV(HpSny5ei?~*?!4?e)R-j|!`o@G&mnH(1z z;!t&&5A1gtu2`7qhUs?ey{c#zb;djCs~g_GJ1fjr(G9HxXqDUfP&oZS*EW+yj)y6g zyHjw98gUX(3_I?QR~V;&s~Do^W<}Vq`uZ4<-e@=gK^iu$I+d#c-&bfHwp@!&9`}gs ziZ$G&nXLp)f{rDJOq%s zj=Um5t1G(}@vQ= z(@<)57Rk^9!TRM!oYxq*V``L*b2u_O{S??z#u!{BC8gy%%vhJ`cx#hVeHN2A<46aB z*JCd8F(JHkpRd{xQlPi9ap#NP9Yw@>UzX-Qm310eRV)Xs zKFJB0LV>JuICZfZo{&3#y)vWznx@lb{Qm1?;?)a2PO?^E(;AZ#hHG@3aL8a35AY3V zD708lI?FCJJ|)lP9X!X8!?{B3I-}t-+wK{eLH{83-YEh&Y*b|Q3L{WdVD6dcJHvn(^dh*{zKwB_ zr~28tDpz~-Qi|zW^^M$VE~XvqLrGlAaA9mk;;*ydPnvF#cI|}b149y`(D+TnFCR>? z3vO9N!O2U?i*+)t!RI2`NuivU}WhTGTy4M5||MjxLa%#afkmi$Rk>t>%Vd} z_Q9y(Xo4CV(+h}j55HgQ3jZ5suS9)iV`ViQoO+K!b|TTRSrvD*hOs77b7<7=Us_zg zSJ=(jwt8NMr*+7=@>f$o)IWI)+IgQWy5SUKB0t#I_Z5ZK{p_|cTaUOj_Q#=5N6=5b zXkXC3_+uX{ah=1p%|9aO^pKUsl>mV8#IcXW_B9$Uk6xmq^)@Cr?-|Axn+2=p@%j3% zDA1pQ7|ZVTkD-4dnqOza;xT}L=h%$yj-}G?{%a=#&|il0qhclNO+h6D1N9Hmn2VsZ zxnEsAyPDVeXD8*7Fa7j9weR<;OS0p@?X>$FTAV&OkGs4&KAJ&%q<&^74|`>8Z7s5W z7tYn&vC-E4vd2<0899pc$uOPs8bbP*jz~3jo#&+Sc)v?ei&=o%_R>E7>OKWrEyVwO zV9H@SeM3!pz`Fc12|%XtyqWMnjTlV9nR6KpUZ`4obrx;+dp)gd78B zW@ehW3DMzL#}b(iD_qV+)9=vC{2!-&0byY(pPqYNVPTl%S3a{rC;7;e*~%272|0GOWi_06G{l%fa`U?oGcsbi$kuK8WT>N=a~foST=J?Y1tX3;2pbvroaU9FNI_TYQw`iIM z)9DnZX`-qsSe7Na2b|B!yt}&-9lW`@5t-&i|C6Sv*lL0Y+R)MHd?xB_HpB6F#A>xd zk|gjv55Ir^e#7?0af~EM-hc-^Mp_2=-G_$<v0_Sf+Jom(J0Fj z^Z6XE>teInyjdJIlt1c2Q4}c45{tz``h7SY@bl---q;WA(ok3Rvrnh<_7R?_WIKq-|R~K0Zp# z=X^egWm&ktzef-R*zfl!iUO0#1h==hIGs)?%M#1w61HvQ%a<=`ng(}wcQ6bCpFe+= zb3_@4Jv}{%{{kS-Vj(}+cZu1zK^D9Bx7(oop5t=1IKYt*ERAy zm*V}=*RNmyp)s!OS`Po!)Vg69n9XMJeIHd-p{gomStg*0h>cE7?~n|f9ZM8NJ?23R z^YHT!fSIN#sFzM#*Ji!Eya)?dmL*Q7Gj&*1m8@FW@6QKp`o1rQoars@M`9SS2mSKB zwrvZ@VV^1RtJMlk(@6i*G!?M2-|x{hjnr@q4ObY3uq+F0+k$m)1dL%AB1w{-5q4d- zSNO|_R)Zi$oSx?iV0eCh?iJo@hKrGJ*LBGAT!e?J@sfF}FD+wCOE(?NkYN`G_SLx)MwJ|2(3g(GC|7|C&tnx>KBRl_i_ zSS;i`GF^|R!79(W(vFp@Lp5769*@PikOiRepbph_jV#MhRTY9D5a7#{!%(htDm%|} zoKENZq~&tiJ5R7}+a6n~(*uTaUUtubg+bC}GLcB!w(VZphR*1{@&A9om9{CD?$`6k zdo9a?=Xn^7&V{U8=}ESZJ4}-)m`7{TKO4rm$o~HRUcjQ3AKfPXfA%d+Q{;Ir<6#*6qi1-Lb!7j6bF|MbfHZ?c z8PGP3&uH6Lbo+QbVzF4j_kHYkJ2;L5-}fc;H5#2)q3Sf!Znu+F(@c}`{M1X#K4nZZ zVZf`yXE4tdesx`=sw%W?E4E#;O>8&qoozkC&@~i_u(>$MV$zWas5Y5&&jw3#7GMT`#EcszO<2ZhEfb@HM z=en-kn`Idu9v;Mx6NIhTYXFevGQcW|0$ta^wryNrU&AmA{QC6^Wm&>73|TQtHqdol zL{ZesNSLN6`rNiHT-U{?PoD%_>G7k@=A3Re8bjP;5SUQuilV^b za6lM_@O@tZ6l+%~oK&1BiUbq{K_JH@xUMTkN&~Y?)b1sLCUDBKOqKw1PJ!15gARhs z7LDCxG7%@d-EMpHK?gG)kEOo^KV?~BwOR>y(sX$c1XwH<$nzZQ^%|b%iSec3At=#+ zP^X~6Fzh+6-EIfp_c5Q(;W&Qu^#;RaL!BMd@^QyPZVnWMK$=lO&OC4qjefFrUu>K%5?MHl_@6 zSU0iX@8NkKJkJyM2Y9=}=sj?C>2Lpq;&~CzA=TuCBy*Q|7y_!(=i+ zUDv%DMS@q$vc#rR=j*zL=XnUj5bO22CtF-hLC|(7eXbco?Z}tQCD!Y;=>6evKv|Y( z+ZJuxitS-wsZ)^z`*9p2j$^R{LolWTV&FB^NIli<8;{4m+8GU`IR?~aZs$-{mG~c> zlBKO-kajp65JeH9C=y%D;Con4#W|sl(w;p(KMR9lnr5%~oPA_}2p}1xrD-a`Wz#fp z97h6e27vUfx)ziyk7=4{nx@D6X@HgI`5SqCPX{i^KeH6vV4Uw|&_qIk_7i}l+6hn@ zg!{hVV??!X>UZ+eB{LkKs;W?yr4T2!ZDX-m2v%UgXIYj6#BJN6EXy9CbzN6546_Kj z4Vsa590$|sRKTLPh&K*z|OD&NoaDWh=HG_hK(deJ!@o^9K>y1IH(Tcv-7 zN^(gUsSuZhg_n-Tc&%0|=?5u&{T_l^f(i;Afr#F5x2h^MO(TkBnkKR=6U07zH-(h# zj-p7Es%={w4hJMjf~uz8{(jhRGHM?_e8BzveXsCd&plHlOdaUD3&(MUW@ftB^E{+!Dn`$? z?cR0?oX;OWeuyJxikh^(Zu9AMg75pdy}dc;?S6G=d%brvMj@VJ{P^#^$|?Tlx5j-sQ>Hw8wmRwDC4E;Z0KaV zu9NgEWrGYo*)Cnz)ie$2x`yL8J%I7}_}F7pj>q$!Urci`f(KrUr)dw_E*%8Fm)6qG zKTXpfBgFf(eTm~(0u!C)C!5rD9Ttm4@3;}Zf2jZL7r}+DG34L%Qg*iIcs!ru#-LEk z4^z+lzg{V-)5n_ijG{%KY#v6 z5TkL%>2$(kv5)``xa^lWr}}&R{Uy7=`yL)1uwJi)an?0mI<-h!NEtN@1OEc(|9{)U Se7w&90000, 2001. +# Alper Ersoy , 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: GIMP 1.2.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-06-08 19:59+0000\n" +"PO-Revision-Date: 2011-01-22 15:37+0000\n" +"Last-Translator: Alper Ersoy \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Launchpad-Export-Date: 2011-08-09 06:12+0000\n" +"X-Generator: Launchpad (build 13628)\n" + +#. procedure executed successfully +#: ../libgimp/gimp.c:1045 +msgid "success" +msgstr "Başarılı" + +#. procedure execution failed +#: ../libgimp/gimp.c:1049 +msgid "execution error" +msgstr "Uygulama Hatası" + +#. procedure called incorrectly +#: ../libgimp/gimp.c:1053 +msgid "calling error" +msgstr "Çağırma Hatası" + +#. procedure execution cancelled +#: ../libgimp/gimp.c:1057 +msgid "cancelled" +msgstr "İptal edildi" + +#: ../libgimp/gimpbrushselectbutton.c:170 +msgid "Brush Selection" +msgstr "Fırça Seçimi" + +#: ../libgimp/gimpbrushselectbutton.c:913 +#: ../libgimp/gimppatternselectbutton.c:714 +msgid "_Browse..." +msgstr "_Gözat..." + +#: ../libgimp/gimpexport.c:217 ../libgimp/gimpexport.c:253 +#, c-format +msgid "%s plug-in can't handle layers" +msgstr "%s eklentisi katmanları kullanamaz" + +#: ../libgimp/gimpexport.c:218 ../libgimp/gimpexport.c:227 +#: ../libgimp/gimpexport.c:236 ../libgimp/gimpexport.c:254 +msgid "Merge Visible Layers" +msgstr "Görülen Katmanları Birleştir" + +#: ../libgimp/gimpexport.c:226 +#, c-format +msgid "%s plug-in can't handle layer offsets, size or opacity" +msgstr "" +"%s eklentisi katmanın göreli konumlarını, boyutunu ya da ışık geçirmezliğini " +"kullanamaz" + +#: ../libgimp/gimpexport.c:235 ../libgimp/gimpexport.c:244 +#, c-format +msgid "%s plug-in can only handle layers as animation frames" +msgstr "" +"%s eklentisi katmanları sadece canlandırma karesi olarak kullanabilir" + +#: ../libgimp/gimpexport.c:236 ../libgimp/gimpexport.c:245 +msgid "Save as Animation" +msgstr "Animasyon olarak kaydet" + +#: ../libgimp/gimpexport.c:245 ../libgimp/gimpexport.c:254 +#: ../libgimp/gimpexport.c:263 +msgid "Flatten Image" +msgstr "Resmi Düzleştir" + +#: ../libgimp/gimpexport.c:262 +#, c-format +msgid "%s plug-in can't handle transparency" +msgstr "%s eklentisi saydamlığı kullanamaz" + +#: ../libgimp/gimpexport.c:271 +#, c-format +msgid "%s plug-in can't handle layer masks" +msgstr "%s eklentisi katman maskelerini kullanamaz" + +#: ../libgimp/gimpexport.c:272 +msgid "Apply Layer Masks" +msgstr "Katman Maskelerini Uygula" + +#: ../libgimp/gimpexport.c:280 +#, c-format +msgid "%s plug-in can only handle RGB images" +msgstr "%s eklentisi sadece RGB görüntülerini kullanabilir" + +#: ../libgimp/gimpexport.c:281 ../libgimp/gimpexport.c:319 +#: ../libgimp/gimpexport.c:328 +msgid "Convert to RGB" +msgstr "KYM'ye çevir" + +#: ../libgimp/gimpexport.c:289 +#, c-format +msgid "%s plug-in can only handle grayscale images" +msgstr "%s eklentisi sadece gri ölçekli görüntüleri kullanabilir" + +#: ../libgimp/gimpexport.c:290 ../libgimp/gimpexport.c:319 +#: ../libgimp/gimpexport.c:340 +msgid "Convert to Grayscale" +msgstr "Griölçekliye çevir" + +#: ../libgimp/gimpexport.c:298 +#, c-format +msgid "%s plug-in can only handle indexed images" +msgstr "%s eklentisi sadece sıralanmış görüntüleri kullanabilir" + +#: ../libgimp/gimpexport.c:299 ../libgimp/gimpexport.c:328 +#: ../libgimp/gimpexport.c:338 +msgid "" +"Convert to Indexed using default settings\n" +"(Do it manually to tune the result)" +msgstr "" +"Öntanımlıları kullanarak dizinliye çevir\n" +"(Sonuç üzerinde ince ayar için kendiniz çevirin)" + +#: ../libgimp/gimpexport.c:308 +#, c-format +msgid "%s plug-in can only handle bitmap (two color) indexed images" +msgstr "" +"%s eklentisi sadece ikil eşlemli (iki renk) sıralanmış görüntüleri " +"kullanabilir" + +#: ../libgimp/gimpexport.c:309 +msgid "" +"Convert to Indexed using bitmap default settings\n" +"(Do it manually to tune the result)" +msgstr "" +"İkil eşlemli varsayılan ayarları kullanarak sıralanmışa çevir\n" +"(Sonucu ayarlamak için bunu kendiniz yapın)" + +#: ../libgimp/gimpexport.c:318 +#, c-format +msgid "%s plug-in can only handle RGB or grayscale images" +msgstr "%s eklentisi sadece RGB ya da gri ölçekli görüntüler kullanabilir" + +#: ../libgimp/gimpexport.c:327 +#, c-format +msgid "%s plug-in can only handle RGB or indexed images" +msgstr "%s eklentisi sadece RGB ya da sıralanmış görüntüler kullanabilir" + +#: ../libgimp/gimpexport.c:337 +#, c-format +msgid "%s plug-in can only handle grayscale or indexed images" +msgstr "" +"%s eklentisi sadece gri ölçekli ya da sıralanmış görüntüler kullanabilir" + +#: ../libgimp/gimpexport.c:348 +#, c-format +msgid "%s plug-in needs an alpha channel" +msgstr "%s eklentisi bir görünür kanalına gereksiniyor" + +#: ../libgimp/gimpexport.c:349 +msgid "Add Alpha Channel" +msgstr "Alfa Kanalı Ekle" + +#: ../libgimp/gimpexport.c:383 +msgid "Confirm Save" +msgstr "Kaydetmeyi Onayla" + +#: ../libgimp/gimpexport.c:389 +msgid "Confirm" +msgstr "Onayla" + +#: ../libgimp/gimpexport.c:464 +msgid "Export File" +msgstr "Dosyayı Dışarı Aktar" + +#: ../libgimp/gimpexport.c:468 +msgid "_Ignore" +msgstr "_Yoksay" + +#: ../libgimp/gimpexport.c:470 +msgid "_Export" +msgstr "_Dışa aktar" + +#. the headline +#: ../libgimp/gimpexport.c:499 +#, c-format +msgid "" +"Your image should be exported before it can be saved as %s for the following " +"reasons:" +msgstr "" +"Görüntünüz %s olarak kaydedilmeden önce izleyen nedenler için dışa " +"aktarılmalıdır:" + +#. the footline +#: ../libgimp/gimpexport.c:573 +msgid "The export conversion won't modify your original image." +msgstr "Dışarı aktarma işlemi orjinal resimde değişiklik yapmaz." + +#: ../libgimp/gimpexport.c:673 +#, c-format +msgid "" +"You are about to save a layer mask as %s.\n" +"This will not save the visible layers." +msgstr "" +"Bir katman maskesini %s olarak imlemek üzeresiniz.\n" +"Bu işlem görünebilir katmanları kaydetmeyecektir." + +#: ../libgimp/gimpexport.c:679 +#, c-format +msgid "" +"You are about to save a channel (saved selection) as %s.\n" +"This will not save the visible layers." +msgstr "" +"Bir katmanı (kaydedilmiş seçim) %s olarak kaydetmek üzeresiniz.\n" +"Bu işlem görünebilir katmanları kaydetmeyecektir." + +#: ../libgimp/gimpfontselectbutton.c:130 +msgid "Font Selection" +msgstr "Yazıyüzü Seçimi" + +#: ../libgimp/gimpfontselectbutton.c:145 +msgid "Sans" +msgstr "Sans" + +#: ../libgimp/gimpgradientselectbutton.c:148 +msgid "Gradient Selection" +msgstr "Renk Geçişi Seçimi" + +#: ../libgimp/gimpmenu.c:450 ../libgimpwidgets/gimpintstore.c:239 +msgid "(Empty)" +msgstr "(Boş)" + +#: ../libgimp/gimppaletteselectbutton.c:130 +msgid "Palette Selection" +msgstr "Palet Seçimi" + +#: ../libgimp/gimppatternselectbutton.c:156 +msgid "Pattern Selection" +msgstr "Desen Seçimi" + +#: ../libgimp/gimpprocbrowserdialog.c:140 +msgid "by name" +msgstr "ada göre" + +#: ../libgimp/gimpprocbrowserdialog.c:141 +msgid "by description" +msgstr "betimlemeye göre" + +#: ../libgimp/gimpprocbrowserdialog.c:142 +msgid "by help" +msgstr "yardıma göre" + +#: ../libgimp/gimpprocbrowserdialog.c:143 +msgid "by author" +msgstr "yazara göre" + +#: ../libgimp/gimpprocbrowserdialog.c:144 +msgid "by copyright" +msgstr "telif hakkına göre" + +#: ../libgimp/gimpprocbrowserdialog.c:145 +msgid "by date" +msgstr "tarihe göre" + +#: ../libgimp/gimpprocbrowserdialog.c:146 +msgid "by type" +msgstr "türe göre" + +#: ../libgimp/gimpprocbrowserdialog.c:377 +msgid "Searching" +msgstr "Aranıyor" + +#: ../libgimp/gimpprocbrowserdialog.c:388 +msgid "Searching by name" +msgstr "Ada göre aranıyor" + +#: ../libgimp/gimpprocbrowserdialog.c:409 +msgid "Searching by description" +msgstr "Betimlemeye göre aranıyor" + +#: ../libgimp/gimpprocbrowserdialog.c:416 +msgid "Searching by help" +msgstr "Yardıma göre aranıyor" + +#: ../libgimp/gimpprocbrowserdialog.c:423 +msgid "Searching by author" +msgstr "Yazara göre aranıyor" + +#: ../libgimp/gimpprocbrowserdialog.c:430 +msgid "Searching by copyright" +msgstr "Telif hakkına göre aranıyor" + +#: ../libgimp/gimpprocbrowserdialog.c:437 +msgid "Searching by date" +msgstr "Tarihe göre aranıyor" + +#: ../libgimp/gimpprocbrowserdialog.c:444 +msgid "Searching by type" +msgstr "Türe göre aranıyor" + +#: ../libgimp/gimpprocbrowserdialog.c:454 +#, c-format +msgid "%d procedure" +msgid_plural "%d procedures" +msgstr[0] "%d yordam" + +#: ../libgimp/gimpprocbrowserdialog.c:463 +msgid "No matches for your query" +msgstr "Sorgulamanız için uygun eşleşme yok" + +#: ../libgimp/gimpprocbrowserdialog.c:467 +#, c-format +msgid "%d procedure matches your query" +msgid_plural "%d procedures match your query" +msgstr[0] "%d yordam sorgulamanız ile eşleşiyor" + +#. count label +#: ../libgimp/gimpprocbrowserdialog.c:516 ../libgimpwidgets/gimpbrowser.c:114 +msgid "No matches" +msgstr "Eşleşme yok" + +#: ../libgimp/gimpprocview.c:143 +msgid "Parameters" +msgstr "Değiştirgeler" + +#: ../libgimp/gimpprocview.c:156 +msgid "Return Values" +msgstr "Değerleri Geri Getir" + +#: ../libgimp/gimpprocview.c:169 +msgid "Additional Information" +msgstr "Ek Bilgi" + +#: ../libgimp/gimpprocview.c:209 +msgid "Author:" +msgstr "Yazar:" + +#: ../libgimp/gimpprocview.c:221 +msgid "Date:" +msgstr "Tarih:" + +#: ../libgimp/gimpprocview.c:233 +msgid "Copyright:" +msgstr "Telif Hakkı:" + +#: ../libgimp/gimpunitcache.c:57 +msgid "percent" +msgstr "yüzdelik" + +#: ../libgimpbase/gimpbaseenums.c:28 +msgid "_White (full opacity)" +msgstr "_Beyaz (tam ışık geçirmezlik)" + +#: ../libgimpbase/gimpbaseenums.c:29 +msgid "_Black (full transparency)" +msgstr "_Siyah (tam saydamlık)" + +#: ../libgimpbase/gimpbaseenums.c:30 +msgid "Layer's _alpha channel" +msgstr "Katmanın _görünür kanalı" + +#: ../libgimpbase/gimpbaseenums.c:31 +msgid "_Transfer layer's alpha channel" +msgstr "Katmanın görünür kanalını a_ktar" + +#: ../libgimpbase/gimpbaseenums.c:32 +msgid "_Selection" +msgstr "S_eçim" + +#: ../libgimpbase/gimpbaseenums.c:33 +msgid "_Grayscale copy of layer" +msgstr "Katmanın _gri ölçekli kopyası" + +#: ../libgimpbase/gimpbaseenums.c:34 +msgid "C_hannel" +msgstr "Ka_tman" + +#: ../libgimpbase/gimpbaseenums.c:64 +msgid "FG to BG (RGB)" +msgstr "Önplandan Arkaplana (RGB)" + +#: ../libgimpbase/gimpbaseenums.c:65 +msgid "FG to BG (HSV)" +msgstr "Önplandan Arkaplana (RDD)" + +#: ../libgimpbase/gimpbaseenums.c:66 +msgid "FG to transparent" +msgstr "Önalandan saydama" + +#: ../libgimpbase/gimpbaseenums.c:67 +msgid "Custom gradient" +msgstr "Özel renk geçişi" + +#: ../libgimpbase/gimpbaseenums.c:96 +msgid "FG color fill" +msgstr "ÖA renk doldurma" + +#: ../libgimpbase/gimpbaseenums.c:97 +msgid "BG color fill" +msgstr "AA renk doldurma" + +#: ../libgimpbase/gimpbaseenums.c:98 +msgid "Pattern fill" +msgstr "Desen doldurma" + +#: ../libgimpbase/gimpbaseenums.c:128 +msgid "Add to the current selection" +msgstr "Geçerli seçime ekle" + +#: ../libgimpbase/gimpbaseenums.c:129 +msgid "Subtract from the current selection" +msgstr "Geçerli seçimden çıkar" + +#: ../libgimpbase/gimpbaseenums.c:130 +msgid "Replace the current selection" +msgstr "Geçerli seçimin yerine yaz" + +#: ../libgimpbase/gimpbaseenums.c:131 +msgid "Intersect with the current selection" +msgstr "Geçerli seçimle kesiştir" + +#: ../libgimpbase/gimpbaseenums.c:163 ../libgimpwidgets/gimpwidgetsenums.c:126 +msgid "Red" +msgstr "Kırmızı" + +#: ../libgimpbase/gimpbaseenums.c:164 ../libgimpwidgets/gimpwidgetsenums.c:127 +msgid "Green" +msgstr "Yeşil" + +#: ../libgimpbase/gimpbaseenums.c:165 ../libgimpwidgets/gimpwidgetsenums.c:128 +msgid "Blue" +msgstr "Mavi" + +#: ../libgimpbase/gimpbaseenums.c:166 +msgid "Gray" +msgstr "Gri" + +#: ../libgimpbase/gimpbaseenums.c:167 ../libgimpbase/gimpbaseenums.c:532 +msgid "Indexed" +msgstr "İndisli" + +#: ../libgimpbase/gimpbaseenums.c:168 ../libgimpwidgets/gimpwidgetsenums.c:129 +msgid "Alpha" +msgstr "Alfa" + +#: ../libgimpbase/gimpbaseenums.c:197 +msgid "Small" +msgstr "Ufak" + +#: ../libgimpbase/gimpbaseenums.c:198 +msgid "Medium" +msgstr "Orta" + +#: ../libgimpbase/gimpbaseenums.c:199 +msgid "Large" +msgstr "Büyük" + +#: ../libgimpbase/gimpbaseenums.c:231 +msgid "Light checks" +msgstr "Açık denetimler" + +#: ../libgimpbase/gimpbaseenums.c:232 +msgid "Mid-tone checks" +msgstr "Orta-Tonda denetimler" + +#: ../libgimpbase/gimpbaseenums.c:233 +msgid "Dark checks" +msgstr "Koyu denetimler" + +#: ../libgimpbase/gimpbaseenums.c:234 +msgid "White only" +msgstr "Sadece beyaz" + +#: ../libgimpbase/gimpbaseenums.c:235 +msgid "Gray only" +msgstr "Sadece gri" + +#: ../libgimpbase/gimpbaseenums.c:236 +msgid "Black only" +msgstr "Sadece siyah" + +#: ../libgimpbase/gimpbaseenums.c:264 +msgid "Image" +msgstr "Görüntü" + +#: ../libgimpbase/gimpbaseenums.c:265 +msgid "Pattern" +msgstr "Desen" + +#: ../libgimpbase/gimpbaseenums.c:294 +msgid "Lightness" +msgstr "Hafiflik" + +#: ../libgimpbase/gimpbaseenums.c:295 +msgid "Luminosity" +msgstr "Parlaklık" + +#: ../libgimpbase/gimpbaseenums.c:296 +msgid "Average" +msgstr "Ortalama" + +#: ../libgimpbase/gimpbaseenums.c:324 +msgid "Dodge" +msgstr "Temizleme" + +#: ../libgimpbase/gimpbaseenums.c:325 +msgid "Burn" +msgstr "Yakma" + +#: ../libgimpbase/gimpbaseenums.c:389 +msgid "gradient|Linear" +msgstr "Doğrusal" + +#: ../libgimpbase/gimpbaseenums.c:390 +msgid "Bi-linear" +msgstr "Çift çizgi" + +#: ../libgimpbase/gimpbaseenums.c:391 +msgid "Radial" +msgstr "Dairesel" + +#: ../libgimpbase/gimpbaseenums.c:392 ../libgimpwidgets/gimpwidgetsenums.c:24 +msgid "Square" +msgstr "Kare" + +#: ../libgimpbase/gimpbaseenums.c:393 +msgid "Conical (sym)" +msgstr "Konuk (sim)" + +#: ../libgimpbase/gimpbaseenums.c:394 +msgid "Conical (asym)" +msgstr "Konuk (asim)" + +#: ../libgimpbase/gimpbaseenums.c:395 +msgid "Shaped (angular)" +msgstr "Şekillenmiş (açısal)" + +#: ../libgimpbase/gimpbaseenums.c:396 +msgid "Shaped (spherical)" +msgstr "Şekillenmiş (küresel)" + +#: ../libgimpbase/gimpbaseenums.c:397 +msgid "Shaped (dimpled)" +msgstr "Şekillenmiş (çukurlu)" + +#: ../libgimpbase/gimpbaseenums.c:398 +msgid "Spiral (cw)" +msgstr "Spiral (saat yönünde)" + +#: ../libgimpbase/gimpbaseenums.c:399 +msgid "Spiral (ccw)" +msgstr "Spiral (saat yönünün tersinde)" + +#: ../libgimpbase/gimpbaseenums.c:430 +msgid "Intersections (dots)" +msgstr "Kesişimler (noktalar)" + +#: ../libgimpbase/gimpbaseenums.c:431 +msgid "Intersections (crosshairs)" +msgstr "Kesişimler (artı imleçler)" + +#: ../libgimpbase/gimpbaseenums.c:432 +msgid "Dashed" +msgstr "Tireli" + +#: ../libgimpbase/gimpbaseenums.c:433 +msgid "Double dashed" +msgstr "Çift çizgili" + +#: ../libgimpbase/gimpbaseenums.c:434 +msgid "Solid" +msgstr "Kesiksiz" + +#: ../libgimpbase/gimpbaseenums.c:463 +msgid "Stock ID" +msgstr "Depo Kimliği" + +#: ../libgimpbase/gimpbaseenums.c:464 +msgid "Inline pixbuf" +msgstr "Satıriçi pixbuf" + +#: ../libgimpbase/gimpbaseenums.c:465 +msgid "Image file" +msgstr "Görüntü dosyası" + +#: ../libgimpbase/gimpbaseenums.c:494 +msgid "RGB color" +msgstr "RGB rengi" + +#: ../libgimpbase/gimpbaseenums.c:495 ../libgimpbase/gimpbaseenums.c:530 +msgid "Grayscale" +msgstr "Griölçekli" + +#: ../libgimpbase/gimpbaseenums.c:496 +msgid "Indexed color" +msgstr "Sıralanmış renk" + +#: ../libgimpbase/gimpbaseenums.c:528 +msgid "RGB" +msgstr "RGB" + +#: ../libgimpbase/gimpbaseenums.c:529 +msgid "RGB-alpha" +msgstr "RGB-görünür" + +#: ../libgimpbase/gimpbaseenums.c:531 +msgid "Grayscale-alpha" +msgstr "Gri ölçekli-görünür" + +#: ../libgimpbase/gimpbaseenums.c:533 +msgid "Indexed-alpha" +msgstr "Sıralanmış-görünür" + +#: ../libgimpbase/gimpbaseenums.c:563 +msgid "interpolation|None" +msgstr "Hiçbiri" + +#: ../libgimpbase/gimpbaseenums.c:564 +msgid "interpolation|Linear" +msgstr "Doğrusal" + +#: ../libgimpbase/gimpbaseenums.c:565 +msgid "Cubic" +msgstr "Kübik" + +#: ../libgimpbase/gimpbaseenums.c:566 +msgid "Sinc (Lanczos3)" +msgstr "Sinc (Lanczos3)" + +#: ../libgimpbase/gimpbaseenums.c:594 +msgid "Constant" +msgstr "Sabit" + +#: ../libgimpbase/gimpbaseenums.c:595 +msgid "Incremental" +msgstr "Artımlı" + +#: ../libgimpbase/gimpbaseenums.c:624 ../modules/display-filter-lcms.c:191 +msgid "None" +msgstr "Yok" + +#: ../libgimpbase/gimpbaseenums.c:625 +msgid "Sawtooth wave" +msgstr "Testere dişi dalga" + +#: ../libgimpbase/gimpbaseenums.c:626 +msgid "Triangular wave" +msgstr "Üçgensel dalga" + +#: ../libgimpbase/gimpbaseenums.c:655 +msgid "Run interactively" +msgstr "Etkileşimli çalıştır" + +#: ../libgimpbase/gimpbaseenums.c:656 +msgid "Run non-interactively" +msgstr "Etkileşimsiz çalıştır" + +#: ../libgimpbase/gimpbaseenums.c:657 +msgid "Run with last used values" +msgstr "Kullanılmış son değerlerle çalıştır" + +#: ../libgimpbase/gimpbaseenums.c:685 +msgid "Pixels" +msgstr "Piksel" + +#: ../libgimpbase/gimpbaseenums.c:686 +msgid "Points" +msgstr "Noktalar" + +#: ../libgimpbase/gimpbaseenums.c:715 +msgid "Shadows" +msgstr "Gölgeler" + +#: ../libgimpbase/gimpbaseenums.c:716 +msgid "Midtones" +msgstr "Ortatonlar" + +#: ../libgimpbase/gimpbaseenums.c:717 +msgid "Highlights" +msgstr "Yüksektonlar" + +#: ../libgimpbase/gimpbaseenums.c:745 +msgid "Normal (Forward)" +msgstr "Normal (İleriye)" + +#: ../libgimpbase/gimpbaseenums.c:746 +msgid "Corrective (Backward)" +msgstr "Düzeltici (Geriye)" + +#: ../libgimpbase/gimpbaseenums.c:776 +msgid "Adjust" +msgstr "Ayarla" + +#: ../libgimpbase/gimpbaseenums.c:777 +msgid "Clip" +msgstr "Kırp" + +#: ../libgimpbase/gimpbaseenums.c:778 +msgid "Crop to result" +msgstr "Sonuca kırp" + +#: ../libgimpbase/gimpbaseenums.c:779 +msgid "Crop with aspect" +msgstr "En boy ile kırp" + +#: ../libgimpbase/gimpbaseenums.c:909 +msgid "Internal GIMP procedure" +msgstr "İçsel GIMP yordamı" + +#: ../libgimpbase/gimpbaseenums.c:910 +msgid "GIMP Plug-In" +msgstr "GIMP Eklentisi" + +#: ../libgimpbase/gimpbaseenums.c:911 +msgid "GIMP Extension" +msgstr "GIMP Uzantısı" + +#: ../libgimpbase/gimpbaseenums.c:912 +msgid "Temporary Procedure" +msgstr "Geçici Yordam" + +#: ../libgimpbase/gimpbaseenums.c:1074 +msgid "From left to right" +msgstr "Soldan sağa" + +#: ../libgimpbase/gimpbaseenums.c:1075 +msgid "From right to left" +msgstr "Sağdan sola" + +#: ../libgimpbase/gimpbaseenums.c:1105 +msgid "Left justified" +msgstr "Sola hizalı" + +#: ../libgimpbase/gimpbaseenums.c:1106 +msgid "Right justified" +msgstr "Sağa hizalı" + +#: ../libgimpbase/gimpbaseenums.c:1107 +msgid "Centered" +msgstr "Merkezde" + +#: ../libgimpbase/gimpbaseenums.c:1108 +msgid "Filled" +msgstr "Doldurulmuş" + +#: ../libgimpbase/gimputils.c:170 ../libgimpbase/gimputils.c:175 +#: ../modules/display-filter-lcms.c:183 +#: ../modules/color-selector-cmyk-lcms.c:422 +#: ../modules/color-selector-cmyk-lcms.c:428 +msgid "(invalid UTF-8 string)" +msgstr "(geçersiz UTF-8 satırı)" + +#: ../libgimpconfig/gimpcolorconfig.c:42 +msgid "Mode of operation for color management." +msgstr "Renk yönetimi için işlem kipi" + +#: ../libgimpconfig/gimpcolorconfig.c:44 +msgid "The color profile of your (primary) monitor." +msgstr "Birincil monitörünüzün renk profili." + +#: ../libgimpconfig/gimpcolorconfig.c:46 +msgid "" +"When enabled, GIMP will try to use the display color profile from the " +"windowing system. The configured monitor profile is then only used as a " +"fallback." +msgstr "" +"Etkinleştirildiğinde, GIMP, pencere sistemindeki renk ekranı profilini " +"kullanmayı deneyecek. Sonra yapılandırılmış gösterim profili sadece geri " +"alınmış gibi kullanılır." + +#: ../libgimpconfig/gimpcolorconfig.c:50 +msgid "The default RGB working space color profile." +msgstr "Varsayılan RGB çalışma alanı renk profili." + +#: ../libgimpconfig/gimpcolorconfig.c:52 +msgid "The CMYK color profile used to convert between RGB and CMYK." +msgstr "CMYK renk profili, RGB ve CMYK arasında dönüştürmek için kullanılır." + +#: ../libgimpconfig/gimpcolorconfig.c:54 +msgid "The color profile used for simulating a printed version (softproof)." +msgstr "Yazdırılmış sürümün bir benzetimi için renk profili." + +#: ../libgimpconfig/gimpcolorconfig.c:56 +msgid "Sets how colors are mapped for your display." +msgstr "Görüntülemeniz için renklerin nasıl eşleneceğini ayarlar." + +#: ../libgimpconfig/gimpcolorconfig.c:58 +msgid "" +"Sets how colors are converted from RGB working space to the print simulation " +"device." +msgstr "" +"RGB çalışma alanından yazdırma benzetimi aygıtına renklerin nasıl " +"dönüştürüleceğini ayarlar." + +#: ../libgimpconfig/gimpcolorconfig.c:61 +msgid "" +"When enabled, the print simulation will mark colors which can not be " +"represented in the target color space." +msgstr "" +"Etkin olduğunda, yazdırma benzetimi hedef renk alanı içinde resmedilmemiş " +"renkleri imleyecek." + +#: ../libgimpconfig/gimpcolorconfig.c:64 +msgid "The color to use for marking colors which are out of gamut." +msgstr "Takımın dışındaki renkleri işaretlemek için kullanılacak renk" + +#: ../libgimpconfig/gimpcolorconfig-enums.c:24 +msgid "No color management" +msgstr "Renk yönetimi yok" + +#: ../libgimpconfig/gimpcolorconfig-enums.c:25 +msgid "Color managed display" +msgstr "Renk yönetimli görüntüleme" + +#: ../libgimpconfig/gimpcolorconfig-enums.c:26 +msgid "Print simulation" +msgstr "Benzetimi yazdır" + +#: ../libgimpconfig/gimpcolorconfig-enums.c:56 +msgid "Perceptual" +msgstr "Algısal" + +#: ../libgimpconfig/gimpcolorconfig-enums.c:57 +msgid "Relative colorimetric" +msgstr "Göreceli renk ölçer" + +#: ../libgimpconfig/gimpcolorconfig-enums.c:58 +msgid "intent|Saturation" +msgstr "Doygunluk" + +#: ../libgimpconfig/gimpcolorconfig-enums.c:59 +msgid "Absolute colorimetric" +msgstr "Salt renk ölçer" + +#: ../libgimpconfig/gimpconfig-deserialize.c:97 +#, c-format +msgid "value for token %s is not a valid UTF-8 string" +msgstr "%s anahtarına verilen değer geçerli bir UTF-8 dizgesi değil" + +#. please don't translate 'yes' and 'no' +#: ../libgimpconfig/gimpconfig-deserialize.c:436 +#, c-format +msgid "expected 'yes' or 'no' for boolean token %s, got '%s'" +msgstr "Boole anahtar %s için 'yes' veya 'no' bekleniyordu, '%s' alındı" + +#: ../libgimpconfig/gimpconfig-deserialize.c:510 +#, c-format +msgid "invalid value '%s' for token %s" +msgstr "Geçersiz seçenek '%s' (anahtar %s)" + +#: ../libgimpconfig/gimpconfig-deserialize.c:525 +#, c-format +msgid "invalid value '%ld' for token %s" +msgstr "Geçersiz değer '%ld' (anahtar %s)" + +#: ../libgimpconfig/gimpconfig-deserialize.c:594 +#, c-format +msgid "while parsing token '%s': %s" +msgstr "'%s' belirteci ayrıştırılırken: '%s" + +#: ../libgimpconfig/gimpconfig-iface.c:474 +#: ../libgimpconfig/gimpconfig-iface.c:487 ../libgimpconfig/gimpscanner.c:498 +#: ../libgimpconfig/gimpscanner.c:579 +#: ../libgimpwidgets/gimpcolorprofilestore.c:656 +msgid "fatal parse error" +msgstr "ölümcül ayrıştırma hatası" + +#: ../libgimpconfig/gimpconfig-path.c:377 +#, c-format +msgid "Cannot expand ${%s}" +msgstr "${%s} genişletilemiyor" + +#: ../libgimpconfig/gimpconfigwriter.c:78 +#: ../libgimpconfig/gimpconfigwriter.c:718 +#, c-format +msgid "Error writing to '%s': %s" +msgstr "'%s' üzerine yazılırken hata: %s" + +#: ../libgimpconfig/gimpconfigwriter.c:136 +#, c-format +msgid "Could not create temporary file for '%s': %s" +msgstr "'%s' için geçici dosya oluşturulamadı: %s" + +#: ../libgimpconfig/gimpconfigwriter.c:149 +#, c-format +msgid "Could not open '%s' for writing: %s" +msgstr "Yazma için '%s' açılamadı: %s" + +#: ../libgimpconfig/gimpconfigwriter.c:679 +#: ../libgimpconfig/gimpconfigwriter.c:699 +#, c-format +msgid "" +"Error writing to temporary file for '%s': %s\n" +"The original file has not been touched." +msgstr "" +"'%s' için geçici dosyaya yazma hatası: %s\n" +"Özgün dosyaya dokunulmamış." + +#: ../libgimpconfig/gimpconfigwriter.c:707 +#, c-format +msgid "" +"Error writing to temporary file for '%s': %s\n" +"No file has been created." +msgstr "" +"'%s' için geçici dosyaya yazma hatası: %s\n" +"Oluşturulmuş dosya yok." + +#: ../libgimpconfig/gimpconfigwriter.c:731 +#, c-format +msgid "Could not create '%s': %s" +msgstr "'%s' oluşturulamadı: %s" + +#: ../libgimpconfig/gimpscanner.c:255 +#, c-format +msgid "invalid UTF-8 string" +msgstr "Geçersiz UTF-8 dizgesi" + +#: ../libgimpconfig/gimpscanner.c:606 +#, c-format +msgid "Error while parsing '%s' in line %d: %s" +msgstr "'%s' ayrıştırılırken %d satırı içinde hata: %s" + +#: ../libgimpmodule/gimpmodule.c:153 ../libgimpmodule/gimpmodule.c:171 +#: ../libgimpmodule/gimpmodule.c:280 ../libgimpmodule/gimpmodule.c:307 +#: ../libgimpmodule/gimpmodule.c:418 +#, c-format +msgid "Module '%s' load error: %s" +msgstr "'%s' birimi yükleme hatası: %s" + +#: ../libgimpmodule/gimpmodule.c:375 +msgid "Module error" +msgstr "Birim hatası" + +#: ../libgimpmodule/gimpmodule.c:376 +msgid "Loaded" +msgstr "Yüklendi" + +#: ../libgimpmodule/gimpmodule.c:377 +msgid "Load failed" +msgstr "Yükleme başarısız" + +#: ../libgimpmodule/gimpmodule.c:378 +msgid "Not loaded" +msgstr "Yüklenmedi" + +#: ../libgimpthumb/gimpthumb-utils.c:123 +#, c-format +msgid "" +"Cannot determine a valid home directory.\n" +"Thumbnails will be stored in the folder for temporary files (%s) instead." +msgstr "" +"Geçerli bir ev dizini tanımlanamadı.\n" +"Küçük resimcikler geçici dosyalar %s yerine dizinde depolanacaktır." + +#: ../libgimpthumb/gimpthumb-utils.c:247 ../libgimpthumb/gimpthumb-utils.c:315 +#, c-format +msgid "Failed to create thumbnail folder '%s'." +msgstr "'%s' minyatür dizini oluşturmada hata." + +#: ../libgimpthumb/gimpthumbnail.c:498 +#, c-format +msgid "Thumbnail contains no Thumb::URI tag" +msgstr "Minyatür içeriğinde Thumb::URI etiketi yok." + +#: ../libgimpthumb/gimpthumbnail.c:898 +#, c-format +msgid "Could not create thumbnail for %s: %s" +msgstr "%s için minyatür oluşturulamadı: %s" + +#: ../libgimpwidgets/gimpbrowser.c:98 +msgid "_Search:" +msgstr "_Ara:" + +#: ../libgimpwidgets/gimpcolorbutton.c:118 +msgid "_Foreground Color" +msgstr "Ö_nalan Rengi" + +#: ../libgimpwidgets/gimpcolorbutton.c:122 +msgid "_Background Color" +msgstr "_Artalan Rengi" + +#: ../libgimpwidgets/gimpcolorbutton.c:126 +msgid "Blac_k" +msgstr "Siya_h" + +#: ../libgimpwidgets/gimpcolorbutton.c:130 +msgid "_White" +msgstr "_Beyaz" + +#: ../libgimpwidgets/gimpcolorprofilestore.c:144 +msgid "Select color profile from disk..." +msgstr "Diskten renk profili seçin." + +#: ../libgimpwidgets/gimpcolorprofilestore.c:280 +msgctxt "profile" +msgid "None" +msgstr "Hiçbiri" + +#: ../libgimpwidgets/gimpcolorscales.c:98 +msgid "Scales" +msgstr "Ölçekler" + +#: ../libgimpwidgets/gimpcolorselection.c:210 +msgid "Current:" +msgstr "Şimdiki:" + +#: ../libgimpwidgets/gimpcolorselection.c:232 +msgid "Old:" +msgstr "Eski:" + +#: ../libgimpwidgets/gimpcolorselection.c:286 +msgid "" +"Hexadecimal color notation as used in HTML and CSS. This entry also accepts " +"CSS color names." +msgstr "" +"HTML ve CSS içinde kullanılıan onaltılı renk gösterimi. Bu giriş ayrıca CSS " +"renk adlarını da kabul eder." + +#: ../libgimpwidgets/gimpcolorselection.c:292 +msgid "HTML _notation:" +msgstr "HTML _gösterimi:" + +#: ../libgimpwidgets/gimphelpui.c:420 +msgid "Press F1 for more help" +msgstr "Daha çok yardım için F1'e basın" + +#: ../libgimpwidgets/gimpfileentry.c:174 +msgid "Open a file selector to browse your folders" +msgstr "Dizinlerinize göz atmak için bir dosya seçici açın" + +#: ../libgimpwidgets/gimpfileentry.c:175 +msgid "Open a file selector to browse your files" +msgstr "Dosyalarınıza göz atmak için bir dosya seçici açın" + +#: ../libgimpwidgets/gimpfileentry.c:335 +msgid "Select Folder" +msgstr "Dizin Seç" + +#: ../libgimpwidgets/gimpfileentry.c:337 +msgid "Select File" +msgstr "Dosya Seç" + +#: ../libgimpwidgets/gimpmemsizeentry.c:204 +msgid "Kilobytes" +msgstr "KB" + +#: ../libgimpwidgets/gimpmemsizeentry.c:205 +msgid "Megabytes" +msgstr "MB" + +#: ../libgimpwidgets/gimpmemsizeentry.c:206 +msgid "Gigabytes" +msgstr "GB" + +#. Count label +#: ../libgimpwidgets/gimppageselector.c:269 +#: ../libgimpwidgets/gimppageselector.c:1166 +msgid "Nothing selected" +msgstr "Hiçbir şey seçilmedi" + +#: ../libgimpwidgets/gimppageselector.c:287 +msgid "Select _All" +msgstr "Tü_münü Seç" + +#: ../libgimpwidgets/gimppageselector.c:307 +msgid "Select _range:" +msgstr "Seçim _erimi:" + +#: ../libgimpwidgets/gimppageselector.c:319 +msgid "Open _pages as" +msgstr "_Sayfaları böyle aç" + +#: ../libgimpwidgets/gimppageselector.c:420 +msgid "Page 000" +msgstr "Sayfa 000" + +#: ../libgimpwidgets/gimppageselector.c:508 +#: ../libgimpwidgets/gimppageselector.c:744 +#, c-format +msgid "Page %d" +msgstr "Sayfa %d" + +#: ../libgimpwidgets/gimppageselector.c:1171 +msgid "One page selected" +msgstr "Bir sayfa seçildi" + +#: ../libgimpwidgets/gimppageselector.c:1178 +#: ../libgimpwidgets/gimppageselector.c:1182 +#, c-format +msgid "%d page selected" +msgid_plural "All %d pages selected" +msgstr[0] "%d sayfa seçildi" + +#: ../libgimpwidgets/gimppatheditor.c:214 +msgid "Writable" +msgstr "Yazılabilir" + +#: ../libgimpwidgets/gimppatheditor.c:223 +msgid "Folder" +msgstr "Dizin" + +#: ../libgimpwidgets/gimppickbutton.c:107 +msgid "" +"Click the eyedropper, then click a color anywhere on your screen to select " +"that color." +msgstr "" +"Damlalığa tıkladıktan sonra ekranınızdaki istediğiniz bir renge tıklayarak " +"rengi seçebilirsiniz." + +#: ../libgimpwidgets/gimppreviewarea.c:94 +msgid "Check Size" +msgstr "Denetleme Boyutu" + +#: ../libgimpwidgets/gimppreviewarea.c:101 +msgid "Check Style" +msgstr "Denetleme Biçemi" + +#. toggle button to (de)activate the instant preview +#: ../libgimpwidgets/gimppreview.c:277 +msgid "_Preview" +msgstr "Öniz_leme" + +#: ../libgimpwidgets/gimppropwidgets.c:1860 +#, c-format +msgid "This text input field is limited to %d character." +msgid_plural "This text input field is limited to %d characters." +msgstr[0] "Metin girdi alanı %d karakter ile sınırlandırılmış." + +#: ../libgimpwidgets/gimpstock.c:112 +msgid "Anchor" +msgstr "Bağlayıcı" + +#: ../libgimpwidgets/gimpstock.c:113 +msgid "C_enter" +msgstr "M_erkez" + +#: ../libgimpwidgets/gimpstock.c:114 +msgid "_Duplicate" +msgstr "Çoğal_t" + +#: ../libgimpwidgets/gimpstock.c:115 +msgid "_Edit" +msgstr "_Düzenle" + +#: ../libgimpwidgets/gimpstock.c:116 +msgid "Linked" +msgstr "Bağlı" + +#: ../libgimpwidgets/gimpstock.c:117 +msgid "Paste as New" +msgstr "Yeni olarak Yapıştır" + +#: ../libgimpwidgets/gimpstock.c:118 +msgid "Paste Into" +msgstr "İçine yapıştır" + +#: ../libgimpwidgets/gimpstock.c:119 +msgid "_Reset" +msgstr "_Sıfırla" + +#: ../libgimpwidgets/gimpstock.c:120 +msgid "Visible" +msgstr "Görünür" + +#: ../libgimpwidgets/gimpstock.c:156 ../libgimpwidgets/gimpstock.c:160 +msgid "_Stroke" +msgstr "_Vuruş" + +#: ../libgimpwidgets/gimpstock.c:172 +msgid "L_etter Spacing" +msgstr "H_arf Aralığı" + +#: ../libgimpwidgets/gimpstock.c:173 +msgid "L_ine Spacing" +msgstr "S_atır Aralığı" + +#: ../libgimpwidgets/gimpstock.c:189 +msgid "_Resize" +msgstr "Yeniden _Boyutlandır" + +#: ../libgimpwidgets/gimpstock.c:190 ../libgimpwidgets/gimpstock.c:320 +msgid "_Scale" +msgstr "_Ölçekle" + +#: ../libgimpwidgets/gimpstock.c:296 +msgid "Cr_op" +msgstr "Kır_p" + +#: ../libgimpwidgets/gimpstock.c:315 +msgid "_Transform" +msgstr "_Dönüştür" + +#: ../libgimpwidgets/gimpstock.c:319 +msgid "_Rotate" +msgstr "_Döndür" + +#: ../libgimpwidgets/gimpstock.c:321 +msgid "_Shear" +msgstr "_Kırp" + +#: ../libgimpwidgets/gimpunitmenu.c:266 +msgid "More..." +msgstr "Daha fazla..." + +#: ../libgimpwidgets/gimpunitmenu.c:581 +msgid "Unit Selection" +msgstr "Birim Seçimi" + +#: ../libgimpwidgets/gimpunitmenu.c:629 +msgid "Unit" +msgstr "Birim" + +#: ../libgimpwidgets/gimpunitmenu.c:633 +msgid "Factor" +msgstr "Etken" + +#: ../libgimpwidgets/gimpwidgets.c:511 +msgid "" +"Use this value for random number generator seed - this allows you to repeat " +"a given \"random\" operation" +msgstr "" +"Rastgele sayı üretici için bu değeri kullanın. Bu, \"rastgele\" işlem " +"tekrarı yapmanı sağlar." + +#: ../libgimpwidgets/gimpwidgets.c:515 +msgid "_New Seed" +msgstr "_Yeni Parçacık" + +#: ../libgimpwidgets/gimpwidgets.c:528 +msgid "Seed random number generator with a generated random number" +msgstr "Rastgele üretilen sayı ile rastgele parçacık sayısı üreticisi" + +#: ../libgimpwidgets/gimpwidgets.c:532 +msgid "_Randomize" +msgstr "_Rastgele" + +#: ../libgimpwidgets/gimpwidgetsenums.c:25 +msgid "Portrait" +msgstr "Dikey" + +#: ../libgimpwidgets/gimpwidgetsenums.c:26 +msgid "Landscape" +msgstr "Yatay" + +#: ../libgimpwidgets/gimpwidgetsenums.c:123 +msgid "_H" +msgstr "_H" + +#: ../libgimpwidgets/gimpwidgetsenums.c:123 +msgid "Hue" +msgstr "Renk" + +#: ../libgimpwidgets/gimpwidgetsenums.c:124 +msgid "_S" +msgstr "_S" + +#: ../libgimpwidgets/gimpwidgetsenums.c:124 +msgid "Saturation" +msgstr "Doygunluk" + +#: ../libgimpwidgets/gimpwidgetsenums.c:125 +msgid "_V" +msgstr "_V" + +#: ../libgimpwidgets/gimpwidgetsenums.c:125 +msgid "Value" +msgstr "Değer" + +#: ../libgimpwidgets/gimpwidgetsenums.c:126 +msgid "_R" +msgstr "_R" + +#: ../libgimpwidgets/gimpwidgetsenums.c:127 +msgid "_G" +msgstr "_G" + +#: ../libgimpwidgets/gimpwidgetsenums.c:128 +msgid "_B" +msgstr "_B" + +#: ../libgimpwidgets/gimpwidgetsenums.c:129 +msgid "_A" +msgstr "_A" + +#: ../libgimpwidgets/gimpwidgetsenums.c:157 +msgid "Layers" +msgstr "Katmanlar" + +#: ../libgimpwidgets/gimpwidgetsenums.c:158 +msgid "Images" +msgstr "Görüntüler" + +#: ../libgimpwidgets/gimpwidgetsenums.c:217 +msgid "Zoom in" +msgstr "Büyüt" + +#: ../libgimpwidgets/gimpwidgetsenums.c:218 +msgid "Zoom out" +msgstr "Küçült" + +#: ../modules/display-filter-color-blind.c:67 +msgid "Protanopia (insensitivity to red)" +msgstr "Kırmızıyı görememe (kırmızı duyarsızlığı)" + +#: ../modules/display-filter-color-blind.c:69 +msgid "Deuteranopia (insensitivity to green)" +msgstr "Yeşili görememe (yeşil duyarsızlığı)" + +#: ../modules/display-filter-color-blind.c:71 +msgid "Tritanopia (insensitivity to blue)" +msgstr "Maviyi görememe (mavi duyarsızlığı)" + +#: ../modules/display-filter-color-blind.c:198 +msgid "Color deficit simulation filter (Brettel-Vienot-Mollon algorithm)" +msgstr "Eksik renk canlandırma filtresi (Brettel-Vienot-Mollon algoritması)" + +#: ../modules/display-filter-color-blind.c:261 +msgid "Color Deficient Vision" +msgstr "Renki Eksik Görme" + +#: ../modules/display-filter-color-blind.c:483 +msgid "Color _deficiency type:" +msgstr "Renk _eksiklik türü:" + +#: ../modules/display-filter-gamma.c:90 +msgid "Gamma color display filter" +msgstr "Gama renk görüntüleme süzgeci" + +#: ../modules/display-filter-gamma.c:129 +msgid "Gamma" +msgstr "Gamma" + +#: ../modules/display-filter-gamma.c:232 +msgid "_Gamma:" +msgstr "_Gama:" + +#: ../modules/display-filter-high-contrast.c:90 +msgid "High Contrast color display filter" +msgstr "Yüksek Karşıtlık renk görüntüleme süzgeci" + +#: ../modules/display-filter-high-contrast.c:129 +msgid "Contrast" +msgstr "Karşıtlık" + +#: ../modules/display-filter-high-contrast.c:232 +msgid "Contrast c_ycles:" +msgstr "Karşıtlık d_önüşleri" + +#: ../modules/display-filter-lcms.c:102 +msgid "Color management display filter using ICC color profiles" +msgstr "Renk yönetimi görüntüleme süzgeci ICC renk profillerini kullanıyor" + +#: ../modules/display-filter-lcms.c:134 +msgid "Color Management" +msgstr "Renk Yönetimi" + +#: ../modules/display-filter-lcms.c:212 +msgid "" +"This filter takes its configuration from the Color Management section in the " +"Preferences dialog." +msgstr "" +"Bu süzgeç yapılandırmasını Yeğlenenler kutusu içindeki Renk Yönetimi " +"bölümünden alır." + +#: ../modules/display-filter-lcms.c:226 +msgid "Mode of operation:" +msgstr "İşlem kipi:" + +#: ../modules/display-filter-lcms.c:233 +msgid "Image profile:" +msgstr "Görüntü profili:" + +#: ../modules/display-filter-lcms.c:241 +msgid "Monitor profile:" +msgstr "Monitör profili:" + +#: ../modules/display-filter-lcms.c:249 +msgid "Print simulation profile:" +msgstr "Yazdırma benzetimi profili:" + +#: ../modules/display-filter-proof.c:97 +msgid "Color proof filter using ICC color profile" +msgstr "ICC renk profilini kullanarak renk deneme filtresi" + +#: ../modules/display-filter-proof.c:145 +msgid "Color Proof" +msgstr "Renk Denemesi" + +#: ../modules/display-filter-proof.c:311 +msgid "Choose an ICC Color Profile" +msgstr "Bir ICC Renk Profili seçin" + +#: ../modules/display-filter-proof.c:338 +msgid "All files (*.*)" +msgstr "Tüm dosyalar (*.*)" + +#: ../modules/display-filter-proof.c:343 +msgid "ICC color profile (*.icc, *.icm)" +msgstr "ICC renk profili (*.icc, *.icm)" + +#: ../modules/display-filter-proof.c:401 +msgid "_Profile:" +msgstr "_Profil:" + +#: ../modules/display-filter-proof.c:407 +msgid "_Intent:" +msgstr "_Amaç:" + +#: ../modules/display-filter-proof.c:412 +msgid "_Black Point Compensation" +msgstr "_Siyah Nokta Telafisi" + +#: ../modules/color-selector-cmyk.c:71 +msgid "CMYK color selector" +msgstr "CMYK renk seçici" + +#: ../modules/color-selector-cmyk.c:102 +#: ../modules/color-selector-cmyk-lcms.c:150 +msgid "CMYK" +msgstr "CMYK" + +#. Cyan +#: ../modules/color-selector-cmyk.c:125 +#: ../modules/color-selector-cmyk-lcms.c:169 +msgid "_C" +msgstr "_C" + +#. Magenta +#: ../modules/color-selector-cmyk.c:127 +#: ../modules/color-selector-cmyk-lcms.c:171 +msgid "_M" +msgstr "_M" + +#. Yellow +#: ../modules/color-selector-cmyk.c:129 +#: ../modules/color-selector-cmyk-lcms.c:173 +msgid "_Y" +msgstr "_Y" + +#. Key (Black) +#: ../modules/color-selector-cmyk.c:131 +#: ../modules/color-selector-cmyk-lcms.c:175 +msgid "_K" +msgstr "_K" + +#: ../modules/color-selector-cmyk.c:135 +#: ../modules/color-selector-cmyk-lcms.c:179 +msgid "Cyan" +msgstr "Turkuaz" + +#: ../modules/color-selector-cmyk.c:136 +#: ../modules/color-selector-cmyk-lcms.c:180 +msgid "Magenta" +msgstr "Pembe" + +#: ../modules/color-selector-cmyk.c:137 +#: ../modules/color-selector-cmyk-lcms.c:181 +msgid "Yellow" +msgstr "Sarı" + +#: ../modules/color-selector-cmyk.c:138 +#: ../modules/color-selector-cmyk-lcms.c:182 +msgid "Black" +msgstr "Siyah" + +#: ../modules/color-selector-cmyk.c:172 +msgid "Black _pullout:" +msgstr "Siyah _çekilmesi:" + +#: ../modules/color-selector-cmyk.c:189 +msgid "The percentage of black to pull out of the colored inks." +msgstr "Siyahın çekilmiş boyalı mürekkeplere olan yüzdesi." + +#: ../modules/color-selector-cmyk-lcms.c:87 +msgid "CMYK color selector (using color profile)" +msgstr "CMYK renk seçici (renk profili kullanıyor)" + +#: ../modules/color-selector-cmyk-lcms.c:410 +msgid "Profile: (none)" +msgstr "Profil: (hiçbiri)" + +#: ../modules/color-selector-cmyk-lcms.c:431 +#, c-format +msgid "Profile: %s" +msgstr "Profil: %s" + +#: ../modules/color-selector-water.c:82 +msgid "Watercolor style color selector" +msgstr "Suluboya biçemli renk seçici" + +#: ../modules/color-selector-water.c:118 +msgid "Watercolor" +msgstr "Suluboya" + +#: ../modules/color-selector-water.c:186 +msgid "Pressure" +msgstr "Basınç" + +#: ../modules/color-selector-wheel.c:103 +msgid "HSV color wheel" +msgstr "HSV renk tekeri" + +#: ../modules/color-selector-wheel.c:134 +msgid "Wheel" +msgstr "Teker" + +#: ../modules/controller-linux-input.c:58 +msgid "Button 0" +msgstr "0. düğme" + +#: ../modules/controller-linux-input.c:59 +msgid "Button 1" +msgstr "1. düğme" + +#: ../modules/controller-linux-input.c:60 +msgid "Button 2" +msgstr "2. düğme" + +#: ../modules/controller-linux-input.c:61 +msgid "Button 3" +msgstr "3. düğme" + +#: ../modules/controller-linux-input.c:62 +msgid "Button 4" +msgstr "4. düğme" + +#: ../modules/controller-linux-input.c:63 +msgid "Button 5" +msgstr "5. düğme" + +#: ../modules/controller-linux-input.c:64 +msgid "Button 6" +msgstr "6. düğme" + +#: ../modules/controller-linux-input.c:65 +msgid "Button 7" +msgstr "7. düğme" + +#: ../modules/controller-linux-input.c:66 +msgid "Button 8" +msgstr "8. düğme" + +#: ../modules/controller-linux-input.c:67 +msgid "Button 9" +msgstr "9. düğme" + +#: ../modules/controller-linux-input.c:68 +msgid "Button Mouse" +msgstr "Düğme Faresi" + +#: ../modules/controller-linux-input.c:69 +msgid "Button Left" +msgstr "Sol Düğme" + +#: ../modules/controller-linux-input.c:70 +msgid "Button Right" +msgstr "Sağ Düğme" + +#: ../modules/controller-linux-input.c:71 +msgid "Button Middle" +msgstr "Orta Düğme" + +#: ../modules/controller-linux-input.c:72 +msgid "Button Side" +msgstr "Yan Düğme" + +#: ../modules/controller-linux-input.c:73 +msgid "Button Extra" +msgstr "Ek Düğme" + +#: ../modules/controller-linux-input.c:74 +msgid "Button Forward" +msgstr "İleri Düğme" + +#: ../modules/controller-linux-input.c:75 +msgid "Button Back" +msgstr "Geri Düğme" + +#: ../modules/controller-linux-input.c:76 +msgid "Button Task" +msgstr "Düğme Görevi" + +#: ../modules/controller-linux-input.c:78 +msgid "Button Wheel" +msgstr "Düğme Tekeri" + +#: ../modules/controller-linux-input.c:81 +msgid "Button Gear Down" +msgstr "Düşüren Düğme" + +#: ../modules/controller-linux-input.c:84 +msgid "Button Gear Up" +msgstr "Yükselten Düğme" + +#: ../modules/controller-linux-input.c:90 +#: ../modules/controller-dx-dinput.c:443 +msgid "X Move Left" +msgstr "X Sola Taşı" + +#: ../modules/controller-linux-input.c:91 +#: ../modules/controller-dx-dinput.c:446 +msgid "X Move Right" +msgstr "X Sağa Taşı" + +#: ../modules/controller-linux-input.c:92 +msgid "Y Move Forward" +msgstr "Y İleri Taşı" + +#: ../modules/controller-linux-input.c:93 +msgid "Y Move Back" +msgstr "Y Geri Taşı" + +#: ../modules/controller-linux-input.c:94 +#: ../modules/controller-dx-dinput.c:461 +msgid "Z Move Up" +msgstr "Z Yukarı Taşı" + +#: ../modules/controller-linux-input.c:95 +#: ../modules/controller-dx-dinput.c:464 +msgid "Z Move Down" +msgstr "Z Aşağı Taşı" + +#: ../modules/controller-linux-input.c:97 +msgid "X Axis Tilt Forward" +msgstr "X Ekseni İleri Eğ" + +#: ../modules/controller-linux-input.c:98 +msgid "X Axis Tilt Back" +msgstr "X Ekseni Geri Eğ" + +#: ../modules/controller-linux-input.c:99 +#: ../modules/controller-dx-dinput.c:479 +msgid "Y Axis Tilt Right" +msgstr "Y Ekseni Sağa Eğ" + +#: ../modules/controller-linux-input.c:100 +#: ../modules/controller-dx-dinput.c:482 +msgid "Y Axis Tilt Left" +msgstr "Y Ekseni Sola Eğ" + +#: ../modules/controller-linux-input.c:101 +#: ../modules/controller-dx-dinput.c:488 +msgid "Z Axis Turn Left" +msgstr "Z Ekseni Sola Dön" + +#: ../modules/controller-linux-input.c:102 +#: ../modules/controller-dx-dinput.c:491 +msgid "Z Axis Turn Right" +msgstr "Z Ekseni Sağa Dön" + +#: ../modules/controller-linux-input.c:104 +msgid "Horiz. Wheel Turn Back" +msgstr "Yatay, Tekerin Geri Dönüşü" + +#: ../modules/controller-linux-input.c:105 +msgid "Horiz. Wheel Turn Forward" +msgstr "Yatay, Tekerin İleri Dönüşü" + +#: ../modules/controller-linux-input.c:106 +msgid "Dial Turn Left" +msgstr "Sola Dönüş Çevrimi" + +#: ../modules/controller-linux-input.c:107 +msgid "Dial Turn Right" +msgstr "Sağa Dönüş Çevrimi" + +#: ../modules/controller-linux-input.c:108 +msgid "Wheel Turn Left" +msgstr "Tekerin Sola Dönüşü" + +#: ../modules/controller-linux-input.c:109 +msgid "Wheel Turn Right" +msgstr "Tekerin Sağa Dönüşü" + +#: ../modules/controller-linux-input.c:178 +msgid "Linux input event controller" +msgstr "Linux girdi olayı denetleyicsi" + +#: ../modules/controller-linux-input.c:218 +#: ../modules/controller-dx-dinput.c:196 ../modules/controller-midi.c:212 +msgid "Device:" +msgstr "Aygıt:" + +#: ../modules/controller-linux-input.c:219 +msgid "The name of the device to read Linux Input events from." +msgstr "Linux Girdisi olaylarının okunacağı aygıtın adı." + +#: ../modules/controller-linux-input.c:230 +msgid "Linux Input" +msgstr "Linux Girdisi" + +#: ../modules/controller-linux-input.c:513 +msgid "Linux Input Events" +msgstr "Linux Girdi Olayları" + +#: ../modules/controller-linux-input.c:525 +#: ../modules/controller-dx-dinput.c:1095 ../modules/controller-midi.c:505 +msgid "No device configured" +msgstr "Yapılandırılmış aygıt yok" + +#: ../modules/controller-linux-input.c:551 ../modules/controller-midi.c:454 +#: ../modules/controller-midi.c:480 +#, c-format +msgid "Reading from %s" +msgstr "Okunan: %s" + +#: ../modules/controller-linux-input.c:569 +#: ../modules/controller-linux-input.c:623 ../modules/controller-midi.c:436 +#: ../modules/controller-midi.c:497 ../modules/controller-midi.c:568 +#, c-format +msgid "Device not available: %s" +msgstr "Aygıt kullanılır değil: %s" + +#: ../modules/controller-linux-input.c:588 +#: ../modules/controller-dx-dinput.c:1120 +msgid "Device not available" +msgstr "Aygıt kullanılır değil" + +#: ../modules/controller-linux-input.c:632 ../modules/controller-midi.c:577 +msgid "End of file" +msgstr "Dosyanın sonu" + +#: ../modules/controller-dx-dinput.c:156 +msgid "DirectX DirectInput event controller" +msgstr "DirectX DirectInput olay denetleyicisi" + +#: ../modules/controller-dx-dinput.c:197 +msgid "The device to read DirectInput events from." +msgstr "DirectInput olaylarının okunacağı aygıt." + +#: ../modules/controller-dx-dinput.c:206 +msgid "DirectX DirectInput" +msgstr "DirectX DirectInput" + +#: ../modules/controller-dx-dinput.c:420 +#, c-format +msgid "Button %d" +msgstr "%d Düğmesi" + +#: ../modules/controller-dx-dinput.c:423 +#, c-format +msgid "Button %d Press" +msgstr "%d Düğmesine Bas" + +#: ../modules/controller-dx-dinput.c:426 +#, c-format +msgid "Button %d Release" +msgstr "%d Düğmesini Bırak" + +#: ../modules/controller-dx-dinput.c:452 +msgid "Y Move Away" +msgstr "Y Uzaklaştır" + +#: ../modules/controller-dx-dinput.c:455 +msgid "Y Move Near" +msgstr "Y Yaklaştır" + +#: ../modules/controller-dx-dinput.c:470 +msgid "X Axis Tilt Away" +msgstr "X Ekseni Uzağa Eğ" + +#: ../modules/controller-dx-dinput.c:473 +msgid "X Axis Tilt Near" +msgstr "X Ekseni Yakına Eğ" + +#: ../modules/controller-dx-dinput.c:502 +#, c-format +msgid "Slider %d Increase" +msgstr "%d Kaydırıcısını Yükselt" + +#: ../modules/controller-dx-dinput.c:505 +#, c-format +msgid "Slider %d Decrease" +msgstr "%d Kaydırıcısını Alçalt" + +#: ../modules/controller-dx-dinput.c:515 +#, c-format +msgid "POV %d X View" +msgstr "POV %d X Görünümü" + +#: ../modules/controller-dx-dinput.c:518 +#, c-format +msgid "POV %d Y View" +msgstr "POV %d Y Görünümü" + +#: ../modules/controller-dx-dinput.c:521 +#, c-format +msgid "POV %d Return" +msgstr "POV %d Döndü" + +#: ../modules/controller-dx-dinput.c:1084 +msgid "DirectInput Events" +msgstr "Doğrudan Giriş Olayları" + +#: ../modules/controller-midi.c:164 +msgid "MIDI event controller" +msgstr "MIDI olay denetleyicisi" + +#: ../modules/controller-midi.c:203 +msgid "The name of the device to read MIDI events from." +msgstr "MIDI olaylarının okunacağı aygıtın ismi." + +#: ../modules/controller-midi.c:206 +msgid "Enter 'alsa' to use the ALSA sequencer." +msgstr "ALSA ardışımlayıcısını kullanmak için 'alsa' yazın." + +#: ../modules/controller-midi.c:221 +msgid "Channel:" +msgstr "Kanal:" + +#: ../modules/controller-midi.c:222 +msgid "" +"The MIDI channel to read events from. Set to -1 for reading from all MIDI " +"channels." +msgstr "" +"Olayların okunacağı MIDI kanalı. Bütün MIDI kanallarından okumak için -1'e " +"ayarlayın." + +#: ../modules/controller-midi.c:226 +msgid "MIDI" +msgstr "MIDI" + +#: ../modules/controller-midi.c:355 +#, c-format +msgid "Note %02x on" +msgstr "Not %02x açık" + +#: ../modules/controller-midi.c:358 +#, c-format +msgid "Note %02x off" +msgstr "Not %02x kapalı" + +#: ../modules/controller-midi.c:361 +#, c-format +msgid "Controller %03d" +msgstr "Denetleyici %03d" + +#: ../modules/controller-midi.c:408 +msgid "MIDI Events" +msgstr "MIDI Olayları" + +#: ../modules/controller-midi.c:426 +msgid "GIMP" +msgstr "GIMP" + +#: ../modules/controller-midi.c:428 +msgid "GIMP MIDI Input Controller" +msgstr "GIMP MIDI Girdi Denetleyicisi" diff --git a/multimedia/graphics/gimp/gimp/files/po-plug-ins_gimp20-std-plug-ins-tr.po b/multimedia/graphics/gimp/gimp/files/po-plug-ins_gimp20-std-plug-ins-tr.po new file mode 100644 index 0000000000..d3d31d86cd --- /dev/null +++ b/multimedia/graphics/gimp/gimp/files/po-plug-ins_gimp20-std-plug-ins-tr.po @@ -0,0 +1,12498 @@ +# Copyright (C) 2001 Free Software Foundation, Inc. +# Fatih Demir +# +msgid "" +msgstr "" +"Project-Id-Version: GIMP 1.2.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-06-08 19:59+0000\n" +"PO-Revision-Date: 2011-01-22 12:51+0000\n" +"Last-Translator: Fatih Demir \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Launchpad-Export-Date: 2011-08-09 06:12+0000\n" +"X-Generator: Launchpad (build 13628)\n" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:119 +msgid "Original" +msgstr "Orijinal" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:137 +msgid "Rotated" +msgstr "Döndürülmüş" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:155 +msgid "Continuous update" +msgstr "Devam eden güncelleştirme" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:168 +msgid "Area:" +msgstr "Alan:" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:172 +msgid "Entire Layer" +msgstr "Tüm Katman" + +#. Create selection +#: ../plug-ins/color-rotate/color-rotate-dialog.c:173 +#: ../plug-ins/common/film.c:966 ../plug-ins/imagemap/imap_selection.c:367 +#: ../plug-ins/selection-to-path/selection-to-path.c:433 +msgid "Selection" +msgstr "Seçim" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:174 +msgid "Context" +msgstr "İçerik" + +#. spinbutton 1 +#: ../plug-ins/color-rotate/color-rotate-dialog.c:299 +#: ../plug-ins/color-rotate/color-rotate-dialog.c:377 +#: ../plug-ins/common/color-to-alpha.c:410 ../plug-ins/file-fli/fli-gimp.c:875 +#: ../plug-ins/file-fli/fli-gimp.c:945 +msgid "From:" +msgstr "Kimden:" + +#. spinbutton 2 +#: ../plug-ins/color-rotate/color-rotate-dialog.c:325 +#: ../plug-ins/color-rotate/color-rotate-dialog.c:378 +#: ../plug-ins/file-fli/fli-gimp.c:884 ../plug-ins/file-fli/fli-gimp.c:954 +msgid "To:" +msgstr "Kime:" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:419 +#: ../plug-ins/common/file-ps.c:3233 ../plug-ins/imagemap/imap_menu.c:214 +msgid "Gray" +msgstr "Gri" + +#. Gray: Circle: Spinbutton 1 +#: ../plug-ins/color-rotate/color-rotate-dialog.c:467 +msgid "Hue:" +msgstr "Renk Tonu:" + +#. Gray: Circle: Spinbutton 2 +#: ../plug-ins/color-rotate/color-rotate-dialog.c:494 +#: ../plug-ins/color-rotate/color-rotate-dialog.c:556 +msgid "Saturation:" +msgstr "Doygunluk:" + +#. * Gray: Operation-Mode * +#: ../plug-ins/color-rotate/color-rotate-dialog.c:514 +msgid "Gray Mode" +msgstr "Gri Kip" + +#. Gray: Operation-Mode: two radio buttons +#: ../plug-ins/color-rotate/color-rotate-dialog.c:523 +msgid "Treat as this" +msgstr "Bunun gibi davran" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:535 +msgid "Change to this" +msgstr "Bununla değiştir" + +#. * Gray: What is gray? * +#: ../plug-ins/color-rotate/color-rotate-dialog.c:548 +msgid "Gray Threshold" +msgstr "Gri Eşik" + +#. * Misc: Used unit selection * +#: ../plug-ins/color-rotate/color-rotate-dialog.c:588 +#: ../plug-ins/color-rotate/color-rotate-dialog.c:698 +msgid "Units" +msgstr "Birimler" + +#. Misc: Used unit selection: 3 radio buttons +#: ../plug-ins/color-rotate/color-rotate-dialog.c:597 +msgid "Radians" +msgstr "Radyan" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:609 +msgid "Radians/Pi" +msgstr "Radyan/Pi" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:621 +msgid "Degrees" +msgstr "Derece" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:652 +msgid "Rotate Colors" +msgstr "Renkleri Çevir" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:692 +msgid "Main Options" +msgstr "Ana Seçenekler" + +#: ../plug-ins/color-rotate/color-rotate-dialog.c:695 +msgid "Gray Options" +msgstr "Gri Seçenekleri" + +#: ../plug-ins/color-rotate/color-rotate-stock.c:35 +msgid "Switch to Clockwise" +msgstr "Saat Yönünde Çevir" + +#: ../plug-ins/color-rotate/color-rotate-stock.c:37 +msgid "Switch to C/Clockwise" +msgstr "Saat Yönünün Tersinde Çevir" + +#: ../plug-ins/color-rotate/color-rotate-stock.c:39 +msgid "Change Order of Arrows" +msgstr "Okların Düzenini Değiştir" + +#: ../plug-ins/color-rotate/color-rotate-stock.c:41 +#: ../plug-ins/imagemap/imap_cmd_select_all.c:51 +msgid "Select All" +msgstr "Hepsini Seç" + +#: ../plug-ins/color-rotate/color-rotate.c:99 +msgid "Replace a range of colors with another" +msgstr "Renk değer kümesini bir başkasıyla değiştir" + +#: ../plug-ins/color-rotate/color-rotate.c:106 +msgid "_Rotate Colors..." +msgstr "_Renkleri Döndür..." + +#: ../plug-ins/color-rotate/color-rotate.c:140 +msgid "Rotating the colors" +msgstr "Renkler döndürülüyor" + +#: ../plug-ins/common/alien-map.c:140 +msgid "_Modify red channel" +msgstr "Kırmızı kanalı _değiştir" + +#: ../plug-ins/common/alien-map.c:140 +msgid "_Modify hue channel" +msgstr "Renk tonu kanalını _değiştir" + +#: ../plug-ins/common/alien-map.c:141 +msgid "Mo_dify green channel" +msgstr "Yeşil kanalı d_eğiştir" + +#: ../plug-ins/common/alien-map.c:141 +msgid "Mo_dify saturation channel" +msgstr "Doygunluk kanalını d_eğiştir" + +#: ../plug-ins/common/alien-map.c:142 +msgid "Mod_ify blue channel" +msgstr "Mavi kanalı değ_iştir" + +#: ../plug-ins/common/alien-map.c:142 +msgid "Mod_ify luminosity channel" +msgstr "Işıklılık kanalını _değiştir" + +#: ../plug-ins/common/alien-map.c:147 +msgid "Red _frequency:" +msgstr "Kırmızı _sıklığı:" + +#: ../plug-ins/common/alien-map.c:147 +msgid "Hue _frequency:" +msgstr "Renk tonu _sıklığı:" + +#: ../plug-ins/common/alien-map.c:148 +msgid "Green fr_equency:" +msgstr "Yeşil sı_klığı:" + +#: ../plug-ins/common/alien-map.c:148 +msgid "Saturation fr_equency:" +msgstr "Doygunluk sı_klığı:" + +#: ../plug-ins/common/alien-map.c:149 +msgid "Blue freq_uency:" +msgstr "Mavi sık_lığı:" + +#: ../plug-ins/common/alien-map.c:149 +msgid "Luminosity freq_uency:" +msgstr "Işıklılık sıklığı:" + +#: ../plug-ins/common/alien-map.c:151 +msgid "Red _phaseshift:" +msgstr "Kırmızı _evre ötesi:" + +#: ../plug-ins/common/alien-map.c:151 +msgid "Hue _phaseshift:" +msgstr "Renk tonu _faz kayması:" + +#: ../plug-ins/common/alien-map.c:152 +msgid "Green ph_aseshift:" +msgstr "Yeşil e_vre ötesi:" + +#: ../plug-ins/common/alien-map.c:152 +msgid "Saturation ph_aseshift:" +msgstr "Doygunluk _faz kayması:" + +#: ../plug-ins/common/alien-map.c:153 +msgid "Blue pha_seshift:" +msgstr "Mavi ev_re ötesi:" + +#: ../plug-ins/common/alien-map.c:153 +msgid "Luminosity pha_seshift:" +msgstr "Işıklılık _faz kayması:" + +#: ../plug-ins/common/alien-map.c:183 +msgid "Alter colors in various psychedelic ways" +msgstr "Çeşitli rengarenk yollarla renkleri değiştir" + +#: ../plug-ins/common/alien-map.c:188 +msgid "_Alien Map..." +msgstr "_Yabancı Harita..." + +#: ../plug-ins/common/alien-map.c:320 +msgid "Alien Map: Transforming" +msgstr "Yabancı Harita: Dönüştürülüyor" + +#: ../plug-ins/common/alien-map.c:393 +msgid "Alien Map" +msgstr "Yabancı Harita" + +#: ../plug-ins/common/alien-map.c:441 ../plug-ins/common/alien-map.c:465 +#: ../plug-ins/common/alien-map.c:489 +msgid "Number of cycles covering full value range" +msgstr "Tüm değer erimini kapsayan dönüş sayısı" + +#: ../plug-ins/common/alien-map.c:453 ../plug-ins/common/alien-map.c:477 +#: ../plug-ins/common/alien-map.c:501 +msgid "Phase angle, range 0-360" +msgstr "Faz açısı, açı 0-360" + +#. Propagate Mode +#: ../plug-ins/common/alien-map.c:515 ../plug-ins/common/hot.c:611 +#: ../plug-ins/common/value-propagate.c:1120 ../plug-ins/common/waves.c:277 +msgid "Mode" +msgstr "Mod" + +#: ../plug-ins/common/alien-map.c:519 +msgid "_RGB color model" +msgstr "_RGB renk örneği" + +#: ../plug-ins/common/alien-map.c:520 +msgid "_HSL color model" +msgstr "_HSL renk örneği" + +#: ../plug-ins/common/align-layers.c:128 +msgid "Align all visible layers of the image" +msgstr "Tüm görünen katmanları görüntüye hizala" + +#: ../plug-ins/common/align-layers.c:133 +msgid "Align Visi_ble Layers..." +msgstr "Görünür Katmanları Hizala..." + +#: ../plug-ins/common/align-layers.c:173 +msgid "There are not enough layers to align." +msgstr "Hizalamak için yeterli katman yok." + +#: ../plug-ins/common/align-layers.c:400 +msgid "Align Visible Layers" +msgstr "Görünür Katmanları Hizala" + +#. if and how to center the image on the page +#: ../plug-ins/common/align-layers.c:424 ../plug-ins/common/align-layers.c:455 +#: ../plug-ins/common/cml-explorer.c:166 ../plug-ins/common/file-ps.c:3249 +#: ../plug-ins/common/file-ps.c:3261 ../plug-ins/common/file-psp.c:661 +#: ../plug-ins/file-fits/fits.c:1045 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:999 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1040 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1081 +#: ../plug-ins/lighting/lighting-ui.c:416 +#: ../plug-ins/print/print-page-layout.c:449 +msgid "None" +msgstr "Yok" + +#: ../plug-ins/common/align-layers.c:425 ../plug-ins/common/align-layers.c:456 +msgid "Collect" +msgstr "Topla" + +#: ../plug-ins/common/align-layers.c:426 +msgid "Fill (left to right)" +msgstr "Doldur (soldan sağa)" + +#: ../plug-ins/common/align-layers.c:427 +msgid "Fill (right to left)" +msgstr "Doldur (sağdan sola)" + +#: ../plug-ins/common/align-layers.c:428 ../plug-ins/common/align-layers.c:459 +msgid "Snap to grid" +msgstr "Izgaraya uydur" + +#: ../plug-ins/common/align-layers.c:437 +msgid "_Horizontal style:" +msgstr "_Yatay biçem:" + +#: ../plug-ins/common/align-layers.c:441 +msgid "Left edge" +msgstr "Sol Kenar" + +#: ../plug-ins/common/align-layers.c:442 ../plug-ins/common/align-layers.c:472 +#: ../plug-ins/gradient-flare/gradient-flare.c:2713 +msgid "Center" +msgstr "Merkez" + +#: ../plug-ins/common/align-layers.c:443 +msgid "Right edge" +msgstr "Sağ Kenar" + +#: ../plug-ins/common/align-layers.c:452 +msgid "Ho_rizontal base:" +msgstr "Ya_tay taban:" + +#: ../plug-ins/common/align-layers.c:457 +msgid "Fill (top to bottom)" +msgstr "Doldur (yukarıdan aşağıya)" + +#: ../plug-ins/common/align-layers.c:458 +msgid "Fill (bottom to top)" +msgstr "Doldur (aşağıdan yukarıya)" + +#: ../plug-ins/common/align-layers.c:468 +msgid "_Vertical style:" +msgstr "_Dikey biçem:" + +#: ../plug-ins/common/align-layers.c:471 +msgid "Top edge" +msgstr "Üst Kenar" + +#: ../plug-ins/common/align-layers.c:473 +msgid "Bottom edge" +msgstr "Alt Kenar" + +#: ../plug-ins/common/align-layers.c:482 +msgid "Ver_tical base:" +msgstr "Di_key taban:" + +#: ../plug-ins/common/align-layers.c:486 +msgid "_Grid size:" +msgstr "_Grid boyutu:" + +#: ../plug-ins/common/align-layers.c:495 +msgid "_Ignore the bottom layer even if visible" +msgstr "Görünür olsa bile alt katmanı _yoksay" + +#: ../plug-ins/common/align-layers.c:505 +msgid "_Use the (invisible) bottom layer as the base" +msgstr "(Görünmeyen) alt katmanı taban olarak _kullan" + +#: ../plug-ins/common/animation-optimize.c:133 +msgid "Modify image to reduce size when saved as GIF animation" +msgstr "" +"Görüntüyü GIF animasyonu olarak kaydedildiğinde boyutunu azaltacak şekilde " +"değiştir." + +#: ../plug-ins/common/animation-optimize.c:145 +msgid "Optimize (for _GIF)" +msgstr "Optimize (for _GIF)" + +#: ../plug-ins/common/animation-optimize.c:153 +msgid "Reduce file size where combining layers is possible" +msgstr "Mümkünse katmanlar birleştirilirken dosya boyutunu düşür" + +#: ../plug-ins/common/animation-optimize.c:163 +msgid "_Optimize (Difference)" +msgstr "_İyileştir (Farklılık)" + +#: ../plug-ins/common/animation-optimize.c:171 +msgid "Remove optimization to make editing easier" +msgstr "Düzenlemenin daha kolay olması için iyileştirmeyi kaldır" + +#: ../plug-ins/common/animation-optimize.c:178 +msgid "_Unoptimize" +msgstr "_Unoptimize" + +#: ../plug-ins/common/animation-optimize.c:198 +msgid "_Remove Backdrop" +msgstr "Zemini _Kaldır" + +#: ../plug-ins/common/animation-optimize.c:214 +msgid "_Find Backdrop" +msgstr "Zemin _Bul" + +#: ../plug-ins/common/animation-optimize.c:427 +msgid "Unoptimizing animation" +msgstr "Animasyon iyileştirmesi geri alınıyor" + +#: ../plug-ins/common/animation-optimize.c:430 +msgid "Removing animation background" +msgstr "Animasyon artalanı kaldırılıyor" + +#: ../plug-ins/common/animation-optimize.c:433 +msgid "Finding animation background" +msgstr "Animasyon artalanı bulunuyor" + +#: ../plug-ins/common/animation-optimize.c:437 +msgid "Optimizing animation" +msgstr "Animasyon İyileştiriliyor" + +#: ../plug-ins/common/animation-play.c:163 +msgid "Preview a GIMP layer-based animation" +msgstr "Bir GIMP katman-tabanlı animasyonun önizlemesi" + +#: ../plug-ins/common/animation-play.c:168 +msgid "_Playback..." +msgstr "_Oynat..." + +#: ../plug-ins/common/animation-play.c:447 +msgid "_Step" +msgstr "_Adım" + +#: ../plug-ins/common/animation-play.c:447 +msgid "Step to next frame" +msgstr "Sonraki çerçeveye atla" + +#: ../plug-ins/common/animation-play.c:451 +msgid "Rewind the animation" +msgstr "Canlandırmayı geri sar" + +#: ../plug-ins/common/animation-play.c:469 +msgid "Faster" +msgstr "Daha Hızlı" + +#: ../plug-ins/common/animation-play.c:469 +msgid "Increase the speed of the animation" +msgstr "Canlandırmanın hızını arttır" + +#: ../plug-ins/common/animation-play.c:474 +msgid "Slower" +msgstr "Daha Yavaş" + +#: ../plug-ins/common/animation-play.c:474 +msgid "Decrease the speed of the animation" +msgstr "Canlandırmanın hızını düşür" + +#: ../plug-ins/common/animation-play.c:479 +msgid "Reset speed" +msgstr "Hızı sıfırla" + +#: ../plug-ins/common/animation-play.c:479 +msgid "Reset the speed of the animation" +msgstr "Animasyon hızını sıfırla" + +#: ../plug-ins/common/animation-play.c:487 +#: ../plug-ins/common/animation-play.c:1446 +msgid "Start playback" +msgstr "Oynatmaya başla" + +#: ../plug-ins/common/animation-play.c:491 +msgid "Detach" +msgstr "Ayır" + +#: ../plug-ins/common/animation-play.c:492 +msgid "Detach the animation from the dialog window" +msgstr "Canlandırmayı iletişim penceresinden ayır" + +#: ../plug-ins/common/animation-play.c:584 +msgid "Animation Playback:" +msgstr "Canlandırmayı Oynat:" + +#: ../plug-ins/common/animation-play.c:663 +msgid "Playback speed" +msgstr "Oynatma hızı" + +#: ../plug-ins/common/animation-play.c:803 +msgid "Tried to display an invalid layer." +msgstr "Geçersiz bir katman gösterilmeye çalışıldı." + +#: ../plug-ins/common/animation-play.c:1323 +#, c-format +msgid "Frame %d of %d" +msgstr "Çerçeve %d / %d" + +#: ../plug-ins/common/animation-play.c:1446 +msgid "Stop playback" +msgstr "Oynatmayı durdur" + +#: ../plug-ins/common/antialias.c:84 +msgid "Antialias using the Scale3X edge-extrapolation algorithm" +msgstr "" +"Scale3X edge-extrapolation algoritmasını kullanırken keskinlik yumuşat" + +#: ../plug-ins/common/antialias.c:90 +msgid "_Antialias" +msgstr "_Keskinliği yumuşatma" + +#: ../plug-ins/common/antialias.c:149 +msgid "Antialiasing..." +msgstr "Keskinliği yumuşatma..." + +#: ../plug-ins/common/apply-canvas.c:1140 +msgid "Add a canvas texture to the image" +msgstr "Görüntüye bir tuval dokusu ekle" + +#: ../plug-ins/common/apply-canvas.c:1145 +msgid "_Apply Canvas..." +msgstr "Tuvali _Uygula..." + +#: ../plug-ins/common/apply-canvas.c:1226 +msgid "Applying canvas" +msgstr "Tuval uygulanıyor" + +#: ../plug-ins/common/apply-canvas.c:1263 +msgid "Apply Canvas" +msgstr "Tuvali Uygula" + +#. ***************************************************** +#. radio buttons for choosing LEFT or RIGHT +#. ************************************************* +#: ../plug-ins/common/apply-canvas.c:1292 ../plug-ins/common/wind.c:945 +#: ../plug-ins/lighting/lighting-ui.c:518 +msgid "Direction" +msgstr "Yön" + +#: ../plug-ins/common/apply-canvas.c:1296 +msgid "_Top-right" +msgstr "_Üst-Sağ" + +#: ../plug-ins/common/apply-canvas.c:1297 +msgid "Top-_left" +msgstr "Üst-_Sol" + +#: ../plug-ins/common/apply-canvas.c:1298 +msgid "_Bottom-left" +msgstr "_Alt-Sol" + +#: ../plug-ins/common/apply-canvas.c:1299 +msgid "Bottom-_right" +msgstr "Alt-_Sağ" + +#: ../plug-ins/common/apply-canvas.c:1324 ../plug-ins/common/bump-map.c:916 +#: ../plug-ins/common/emboss.c:523 ../plug-ins/common/fractal-trace.c:796 +#: ../plug-ins/map-object/map-object-ui.c:573 +msgid "_Depth:" +msgstr "_Derinlik:" + +#: ../plug-ins/common/blinds.c:116 +msgid "Simulate an image painted on window blinds" +msgstr "Görüntüyü pencere gölgelerindeki boyalı kısma benzet" + +#: ../plug-ins/common/blinds.c:121 +msgid "_Blinds..." +msgstr "_Kesitler..." + +#: ../plug-ins/common/blinds.c:188 +msgid "Adding blinds" +msgstr "Kesitler ekleniyor" + +#: ../plug-ins/common/blinds.c:226 +msgid "Blinds" +msgstr "Kesitler" + +#. Orientation toggle box +#: ../plug-ins/common/blinds.c:260 ../plug-ins/common/ripple.c:539 +msgid "Orientation" +msgstr "Konum" + +#: ../plug-ins/common/blinds.c:264 ../plug-ins/common/ripple.c:543 +#: ../plug-ins/common/tile-small.c:426 ../plug-ins/pagecurl/pagecurl.c:534 +msgid "_Horizontal" +msgstr "_Yatay" + +#: ../plug-ins/common/blinds.c:265 ../plug-ins/common/ripple.c:544 +#: ../plug-ins/common/tile-small.c:436 ../plug-ins/pagecurl/pagecurl.c:533 +msgid "_Vertical" +msgstr "_Dikey" + +#. +#. * Create the "background" layer to hold the image... +#. +#: ../plug-ins/common/blinds.c:278 ../plug-ins/common/compose.c:935 +#: ../plug-ins/common/decompose.c:723 ../plug-ins/common/file-cel.c:362 +#: ../plug-ins/common/file-cel.c:365 ../plug-ins/common/file-dicom.c:557 +#: ../plug-ins/common/file-gif-load.c:911 ../plug-ins/common/file-pcx.c:419 +#: ../plug-ins/common/file-pcx.c:425 ../plug-ins/common/file-pix.c:382 +#: ../plug-ins/common/file-png.c:852 ../plug-ins/common/file-pnm.c:585 +#: ../plug-ins/common/file-raw.c:714 ../plug-ins/common/file-sunras.c:975 +#: ../plug-ins/common/file-tga.c:1064 ../plug-ins/common/file-tiff-load.c:997 +#: ../plug-ins/common/file-xbm.c:896 ../plug-ins/common/film.c:746 +#: ../plug-ins/common/smooth-palette.c:257 ../plug-ins/common/tile.c:267 +#: ../plug-ins/file-bmp/bmp-read.c:382 ../plug-ins/file-bmp/bmp-read.c:649 +#: ../plug-ins/file-faxg3/faxg3.c:478 ../plug-ins/file-fits/fits.c:530 +#: ../plug-ins/file-jpeg/jpeg-load.c:249 ../plug-ins/file-jpeg/jpeg-load.c:761 +#: ../plug-ins/file-psd/psd-image-res-load.c:995 +#: ../plug-ins/file-psd/psd-load.c:1575 ../plug-ins/file-sgi/sgi.c:405 +#: ../plug-ins/gfig/gfig-dialog.c:1284 +#: ../plug-ins/gimpressionist/general.c:140 ../plug-ins/twain/twain.c:568 +#: ../plug-ins/win-snap/winsnap.c:1155 +msgid "Background" +msgstr "Arkaplan" + +#: ../plug-ins/common/blinds.c:282 ../plug-ins/common/fractal-trace.c:738 +#: ../plug-ins/common/tile-paper.c:384 +msgid "_Transparent" +msgstr "Şeff_af" + +#: ../plug-ins/common/blinds.c:308 +msgid "_Displacement:" +msgstr "_Yer Değiştirme:" + +#: ../plug-ins/common/blinds.c:320 +msgid "_Number of segments:" +msgstr "Kesimlerin _sayısı:" + +#: ../plug-ins/common/blur-gauss-selective.c:104 +msgid "Blur neighboring pixels, but only in low-contrast areas" +msgstr "" +"Komşu benekleri bulanıklaştır ancak sadece düşük karşıtlık bölgelerinde" + +#: ../plug-ins/common/blur-gauss-selective.c:115 +msgid "_Selective Gaussian Blur..." +msgstr "_Seçmeli Gaussian Bulanıklığı..." + +#: ../plug-ins/common/blur-gauss-selective.c:195 +#: ../plug-ins/common/blur-gauss-selective.c:232 +msgid "Selective Gaussian Blur" +msgstr "Seçmeli Gaussian Bulanıklığı" + +#: ../plug-ins/common/blur-gauss-selective.c:211 +#: ../plug-ins/common/blur-gauss.c:448 ../plug-ins/common/cartoon.c:232 +#: ../plug-ins/common/edge-dog.c:269 ../plug-ins/common/edge-neon.c:228 +#: ../plug-ins/common/edge-sobel.c:212 ../plug-ins/common/photocopy.c:244 +#: ../plug-ins/common/pixelize.c:293 ../plug-ins/common/softglow.c:224 +#: ../plug-ins/file-sgi/sgi.c:556 ../plug-ins/file-xjt/xjt.c:1701 +#: ../plug-ins/gradient-flare/gradient-flare.c:966 +msgid "Cannot operate on indexed color images." +msgstr "Sıralanmış renkli görüntüler üzerinde çalışılamıyor" + +#: ../plug-ins/common/blur-gauss-selective.c:271 +msgid "_Blur radius:" +msgstr "_Bulanıklık yarıçapı:" + +#: ../plug-ins/common/blur-gauss-selective.c:281 +msgid "_Max. delta:" +msgstr "_En büyük delta:" + +#: ../plug-ins/common/blur-gauss.c:159 +msgid "Simplest, most commonly used way of blurring" +msgstr "Bulanıklaştırmanın en basit, en yaygın kullanılan yolu" + +#: ../plug-ins/common/blur-gauss.c:172 +msgid "_Gaussian Blur..." +msgstr "_Gaussian Bulanıklığı..." + +#: ../plug-ins/common/blur-gauss.c:179 ../plug-ins/common/blur-gauss.c:199 +#: ../plug-ins/common/blur-gauss.c:219 ../plug-ins/common/blur-gauss.c:239 +msgid "Apply a gaussian blur" +msgstr "Bir gaussian bulanıklığı uygula" + +#: ../plug-ins/common/blur-gauss.c:428 ../plug-ins/common/blur-gauss.c:478 +msgid "Gaussian Blur" +msgstr "Gaussian Bulanıklığı" + +#. parameter settings +#: ../plug-ins/common/blur-gauss.c:508 +msgid "Blur Radius" +msgstr "Bulanıklık Yarıçapı" + +#: ../plug-ins/common/blur-gauss.c:522 ../plug-ins/common/jigsaw.c:2457 +#: ../plug-ins/common/noise-spread.c:386 +msgid "_Horizontal:" +msgstr "_Yatay:" + +#: ../plug-ins/common/blur-gauss.c:526 ../plug-ins/common/jigsaw.c:2474 +#: ../plug-ins/common/noise-spread.c:390 +msgid "_Vertical:" +msgstr "_Dikey:" + +#: ../plug-ins/common/blur-gauss.c:549 +msgid "Blur Method" +msgstr "Bulanıklık Yöntemi" + +#: ../plug-ins/common/blur-gauss.c:553 +msgid "_IIR" +msgstr "_IIR" + +#: ../plug-ins/common/blur-gauss.c:554 +msgid "_RLE" +msgstr "_RLE" + +#: ../plug-ins/common/blur-motion.c:157 ../plug-ins/common/blur-motion.c:171 +msgid "Simulate movement using directional blur" +msgstr "Yönlü bulanıklaştırma kullanarak hareket benzetimi yap" + +#: ../plug-ins/common/blur-motion.c:164 ../plug-ins/common/blur-motion.c:177 +msgid "_Motion Blur..." +msgstr "_Hareketli Bulanıklaştır..." + +#: ../plug-ins/common/blur-motion.c:910 +msgid "Motion blurring" +msgstr "Hareketli bulanıklaştırma" + +#: ../plug-ins/common/blur-motion.c:1012 +msgid "Motion Blur" +msgstr "Hareketli Bulanıklaştır" + +#: ../plug-ins/common/blur-motion.c:1045 +msgid "Blur Type" +msgstr "Bulanıklaştırma Türü" + +#: ../plug-ins/common/blur-motion.c:1049 +msgctxt "blur-type" +msgid "_Linear" +msgstr "_Doğrusal" + +#: ../plug-ins/common/blur-motion.c:1050 +msgctxt "blur-type" +msgid "_Radial" +msgstr "_Işınsal" + +#: ../plug-ins/common/blur-motion.c:1051 +msgctxt "blur-type" +msgid "_Zoom" +msgstr "_Yakınlaştır" + +#: ../plug-ins/common/blur-motion.c:1058 +msgid "Blur Center" +msgstr "Bulanıklaştırma Merkezi" + +#: ../plug-ins/common/blur-motion.c:1094 ../plug-ins/common/lens-flare.c:772 +#: ../plug-ins/common/nova.c:463 ../plug-ins/common/tile-paper.c:282 +#: ../plug-ins/flame/flame.c:1251 +#: ../plug-ins/gradient-flare/gradient-flare.c:2725 +#: ../plug-ins/lighting/lighting-ui.c:477 +msgid "_X:" +msgstr "_X:" + +#: ../plug-ins/common/blur-motion.c:1099 ../plug-ins/common/lens-flare.c:777 +#: ../plug-ins/common/nova.c:468 ../plug-ins/common/tile-paper.c:291 +#: ../plug-ins/flame/flame.c:1265 +#: ../plug-ins/gradient-flare/gradient-flare.c:2729 +#: ../plug-ins/lighting/lighting-ui.c:492 +msgid "_Y:" +msgstr "_Y:" + +#: ../plug-ins/common/blur-motion.c:1101 +msgid "Blur _outward" +msgstr "_Dışa doğru bulanıklaştır" + +#: ../plug-ins/common/blur-motion.c:1114 +msgid "Blur Parameters" +msgstr "Bulanıklaştırma Parametreleri" + +#: ../plug-ins/common/blur-motion.c:1125 +#: ../plug-ins/map-object/map-object-ui.c:1252 +msgid "L_ength:" +msgstr "_Uzunluk:" + +#: ../plug-ins/common/blur-motion.c:1138 ../plug-ins/common/newsprint.c:1001 +msgid "_Angle:" +msgstr "_Açı:" + +#: ../plug-ins/common/blur.c:125 +msgid "Simple blur, fast but not very strong" +msgstr "Basit bulanıklaştır, hızlı ama pek güçlü değil" + +#: ../plug-ins/common/blur.c:134 +msgid "_Blur" +msgstr "B_ulanıklaştır" + +#: ../plug-ins/common/blur.c:178 ../plug-ins/common/unsharp-mask.c:439 +msgid "Blurring" +msgstr "Bulanıklaştırma" + +#: ../plug-ins/common/border-average.c:99 +msgid "Set foreground to the average color of the image border" +msgstr "Önalanı görüntü sınırının ortalama rengi olarak ayarla" + +#: ../plug-ins/common/border-average.c:104 +msgid "_Border Average..." +msgstr "_Sınır Ortalaması..." + +#: ../plug-ins/common/border-average.c:171 +msgid "Border Average" +msgstr "Sınır Ortalaması" + +#: ../plug-ins/common/border-average.c:351 +msgid "Borderaverage" +msgstr "Sınırortalaması" + +#: ../plug-ins/common/border-average.c:372 +msgid "Border Size" +msgstr "Sınır Boyutu" + +#: ../plug-ins/common/border-average.c:380 +msgid "_Thickness:" +msgstr "_Kalınlık:" + +#. Number of Colors frame +#: ../plug-ins/common/border-average.c:415 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:908 +msgid "Number of Colors" +msgstr "Renk Sayısı" + +#: ../plug-ins/common/border-average.c:423 +msgid "_Bucket size:" +msgstr "_Kova boyutu:" + +#: ../plug-ins/common/bump-map.c:257 +msgid "Create an embossing effect using a bump map" +msgstr "Derinlik etkisini kullanarak kabartma etkisi oluştur" + +#: ../plug-ins/common/bump-map.c:267 +msgid "_Bump Map..." +msgstr "_Derinlik Etkisi..." + +#: ../plug-ins/common/bump-map.c:415 +msgid "Bump-mapping" +msgstr "Derinlik eşleme" + +#: ../plug-ins/common/bump-map.c:766 +msgid "Bump Map" +msgstr "Derinlik Etkisi" + +#: ../plug-ins/common/bump-map.c:832 +msgid "_Bump map:" +msgstr "_Derinlik etkisi:" + +#. Map type menu +#: ../plug-ins/common/bump-map.c:835 ../plug-ins/flame/flame.c:748 +#: ../plug-ins/lighting/lighting-ui.c:842 +msgid "Linear" +msgstr "Doğrusal" + +#: ../plug-ins/common/bump-map.c:836 ../plug-ins/flame/flame.c:750 +#: ../plug-ins/lighting/lighting-ui.c:845 +msgid "Spherical" +msgstr "Küresel" + +#: ../plug-ins/common/bump-map.c:837 ../plug-ins/flame/flame.c:749 +#: ../plug-ins/lighting/lighting-ui.c:844 +msgid "Sinusoidal" +msgstr "Sinüssel" + +#: ../plug-ins/common/bump-map.c:844 +msgid "_Map type:" +msgstr "_Eşlem türü:" + +#. Compensate darkening +#: ../plug-ins/common/bump-map.c:849 +msgid "Co_mpensate for darkening" +msgstr "Koyulaştırma için de_ngele" + +#. Invert bumpmap +#: ../plug-ins/common/bump-map.c:863 +msgid "I_nvert bumpmap" +msgstr "Derinlik etkisini t_ersine çevir" + +#. Tile bumpmap +#: ../plug-ins/common/bump-map.c:877 +msgid "_Tile bumpmap" +msgstr "Derinlik etkisini d_öşe" + +#: ../plug-ins/common/bump-map.c:892 ../plug-ins/common/emboss.c:499 +msgid "_Azimuth:" +msgstr "_İstikamet açısı:" + +#: ../plug-ins/common/bump-map.c:904 +msgid "_Elevation:" +msgstr "_Rakım:" + +#: ../plug-ins/common/bump-map.c:930 ../plug-ins/common/file-ps.c:3400 +msgid "_X offset:" +msgstr "_X konumu:" + +#: ../plug-ins/common/bump-map.c:933 ../plug-ins/common/bump-map.c:947 +msgid "" +"The offset can be adjusted by dragging the preview using the middle mouse " +"button." +msgstr "" +"Göreli konum, orta fare tuşuyla önizlemeyi sürükleyerek ayarlanabilir." + +#: ../plug-ins/common/bump-map.c:944 ../plug-ins/common/file-ps.c:3409 +msgid "_Y offset:" +msgstr "_Y konumu:" + +#: ../plug-ins/common/bump-map.c:958 +msgid "_Waterlevel:" +msgstr "_Denizseviyesi:" + +#: ../plug-ins/common/bump-map.c:970 +msgid "A_mbient:" +msgstr "Ç_evresel" + +#: ../plug-ins/common/cartoon.c:142 +msgid "Simulate a cartoon by enhancing edges" +msgstr "Kenarları geliştirerek karikatüre benzet" + +#: ../plug-ins/common/cartoon.c:147 +msgid "Ca_rtoon..." +msgstr "Karikatür..." + +#: ../plug-ins/common/cartoon.c:811 +msgid "Cartoon" +msgstr "Karikatür" + +#: ../plug-ins/common/cartoon.c:848 ../plug-ins/common/photocopy.c:876 +msgid "_Mask radius:" +msgstr "_Maske yarıçapı:" + +#: ../plug-ins/common/cartoon.c:862 +msgid "_Percent black:" +msgstr "_Siyah yüzdesi:" + +#: ../plug-ins/common/channel-mixer.c:175 +msgid "Alter colors by mixing RGB Channels" +msgstr "RGB Kanallarını karıştırarak renkleri değiştir" + +#: ../plug-ins/common/channel-mixer.c:180 +msgid "Channel Mi_xer..." +msgstr "Kanal Ka_rıştırıcı..." + +#. printf("Channel Mixer:: Mode:%d r %f g %f b %f\n ", +#. param[3].data.d_int32, mix.black.red_gain, +#. mix.black.green_gain, mix.black.blue_gain); +#: ../plug-ins/common/channel-mixer.c:271 +#: ../plug-ins/common/channel-mixer.c:492 +msgid "Channel Mixer" +msgstr "Kanal Karıştırıcı" + +#: ../plug-ins/common/channel-mixer.c:529 +msgid "O_utput channel:" +msgstr "Ç_ıktı kanalı:" + +#. Redmode radio frame +#: ../plug-ins/common/channel-mixer.c:538 ../plug-ins/common/decompose.c:174 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:991 +msgid "Red" +msgstr "Kırmızı" + +#. Greenmode radio frame +#: ../plug-ins/common/channel-mixer.c:543 ../plug-ins/common/decompose.c:175 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1032 +msgid "Green" +msgstr "Yeşil" + +#. Bluemode radio frame +#: ../plug-ins/common/channel-mixer.c:548 ../plug-ins/common/decompose.c:176 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1073 +msgid "Blue" +msgstr "Mavi" + +#: ../plug-ins/common/channel-mixer.c:583 +#: ../plug-ins/common/color-exchange.c:398 ../plug-ins/common/compose.c:190 +#: ../plug-ins/common/compose.c:201 ../plug-ins/common/diffraction.c:501 +#: ../plug-ins/common/diffraction.c:539 ../plug-ins/common/diffraction.c:577 +#: ../plug-ins/common/noise-rgb.c:530 ../plug-ins/common/noise-rgb.c:537 +msgid "_Red:" +msgstr "K_ırmızı:" + +#: ../plug-ins/common/channel-mixer.c:601 +#: ../plug-ins/common/color-exchange.c:458 ../plug-ins/common/compose.c:191 +#: ../plug-ins/common/compose.c:202 ../plug-ins/common/diffraction.c:510 +#: ../plug-ins/common/diffraction.c:548 ../plug-ins/common/diffraction.c:586 +#: ../plug-ins/common/noise-rgb.c:531 ../plug-ins/common/noise-rgb.c:538 +msgid "_Green:" +msgstr "_Yeşil:" + +#: ../plug-ins/common/channel-mixer.c:620 +#: ../plug-ins/common/color-exchange.c:519 ../plug-ins/common/compose.c:192 +#: ../plug-ins/common/compose.c:203 ../plug-ins/common/diffraction.c:519 +#: ../plug-ins/common/diffraction.c:557 ../plug-ins/common/diffraction.c:595 +#: ../plug-ins/common/noise-rgb.c:532 ../plug-ins/common/noise-rgb.c:539 +msgid "_Blue:" +msgstr "_Mavi:" + +#: ../plug-ins/common/channel-mixer.c:636 +msgid "_Monochrome" +msgstr "_Tekrenkli" + +#: ../plug-ins/common/channel-mixer.c:649 +msgid "Preserve _luminosity" +msgstr "Işıklılığı _koru" + +#: ../plug-ins/common/channel-mixer.c:878 +msgid "Load Channel Mixer Settings" +msgstr "Kanal Karıştırıcı Ayarlarını Yükle" + +#. stat error (file does not exist) +#: ../plug-ins/common/channel-mixer.c:982 +#: ../plug-ins/common/cml-explorer.c:2178 ../plug-ins/common/curve-bend.c:885 +#: ../plug-ins/common/file-cel.c:312 ../plug-ins/common/file-compressor.c:498 +#: ../plug-ins/common/file-compressor.c:666 +#: ../plug-ins/common/file-dicom.c:325 ../plug-ins/common/file-gbr.c:361 +#: ../plug-ins/common/file-gif-load.c:340 ../plug-ins/common/file-gih.c:662 +#: ../plug-ins/common/file-mng.c:1108 ../plug-ins/common/file-pat.c:330 +#: ../plug-ins/common/file-pcx.c:361 ../plug-ins/common/file-pdf.c:541 +#: ../plug-ins/common/file-pix.c:343 ../plug-ins/common/file-png.c:721 +#: ../plug-ins/common/file-pnm.c:494 ../plug-ins/common/file-ps.c:1036 +#: ../plug-ins/common/file-ps.c:3050 ../plug-ins/common/file-psp.c:1755 +#: ../plug-ins/common/file-raw.c:251 ../plug-ins/common/file-raw.c:668 +#: ../plug-ins/common/file-sunras.c:391 ../plug-ins/common/file-svg.c:333 +#: ../plug-ins/common/file-svg.c:731 ../plug-ins/common/file-tga.c:442 +#: ../plug-ins/common/file-tiff-load.c:291 ../plug-ins/common/file-xbm.c:736 +#: ../plug-ins/common/file-xwd.c:433 ../plug-ins/common/sphere-designer.c:2003 +#: ../plug-ins/file-bmp/bmp-read.c:156 ../plug-ins/file-faxg3/faxg3.c:233 +#: ../plug-ins/file-fits/fits.c:358 ../plug-ins/file-fli/fli-gimp.c:460 +#: ../plug-ins/file-fli/fli-gimp.c:497 ../plug-ins/file-ico/ico-load.c:661 +#: ../plug-ins/file-ico/ico-load.c:740 ../plug-ins/file-jpeg/jpeg-load.c:109 +#: ../plug-ins/file-jpeg/jpeg-load.c:831 ../plug-ins/file-psd/psd-load.c:131 +#: ../plug-ins/file-psd/psd-thumb-load.c:80 +#: ../plug-ins/file-uri/uri-backend-gnomevfs.c:272 +#: ../plug-ins/file-uri/uri-backend-libcurl.c:190 +#: ../plug-ins/file-xjt/xjt.c:2560 ../plug-ins/file-xjt/xjt.c:2568 +#: ../plug-ins/flame/flame.c:412 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1863 +#: ../plug-ins/fractal-explorer/fractal-explorer.c:929 +#: ../plug-ins/gfig/gfig.c:434 ../plug-ins/help/gimphelplocale.c:223 +#: ../plug-ins/help/gimphelplocale.c:239 +#: ../plug-ins/lighting/lighting-ui.c:1355 +#, c-format +msgid "Could not open '%s' for reading: %s" +msgstr "'%s' dosyası okumak için açılamadı: %s" + +#: ../plug-ins/common/channel-mixer.c:1005 +msgid "Save Channel Mixer Settings" +msgstr "Kanal Karıştırıcı Ayarlarını Kaydet" + +#: ../plug-ins/common/channel-mixer.c:1060 +#: ../plug-ins/common/cml-explorer.c:2005 ../plug-ins/common/curve-bend.c:833 +#: ../plug-ins/common/file-cel.c:583 ../plug-ins/common/file-compressor.c:426 +#: ../plug-ins/common/file-compressor.c:508 +#: ../plug-ins/common/file-compressor.c:590 +#: ../plug-ins/common/file-compressor.c:677 +#: ../plug-ins/common/file-csource.c:406 ../plug-ins/common/file-dicom.c:801 +#: ../plug-ins/common/file-gbr.c:647 ../plug-ins/common/file-gif-save.c:761 +#: ../plug-ins/common/file-gih.c:1275 ../plug-ins/common/file-html-table.c:236 +#: ../plug-ins/common/file-mng.c:610 ../plug-ins/common/file-mng.c:944 +#: ../plug-ins/common/file-pat.c:476 ../plug-ins/common/file-pcx.c:673 +#: ../plug-ins/common/file-pix.c:524 ../plug-ins/common/file-png.c:1271 +#: ../plug-ins/common/file-pnm.c:977 ../plug-ins/common/file-ps.c:1213 +#: ../plug-ins/common/file-raw.c:548 ../plug-ins/common/file-raw.c:576 +#: ../plug-ins/common/file-sunras.c:563 ../plug-ins/common/file-tga.c:1170 +#: ../plug-ins/common/file-tiff-save.c:683 ../plug-ins/common/file-xbm.c:1034 +#: ../plug-ins/common/file-xwd.c:614 ../plug-ins/common/sphere-designer.c:2114 +#: ../plug-ins/file-bmp/bmp-write.c:296 ../plug-ins/file-fits/fits.c:476 +#: ../plug-ins/file-fli/fli-gimp.c:750 ../plug-ins/file-ico/ico-save.c:1008 +#: ../plug-ins/file-jpeg/jpeg-save.c:325 ../plug-ins/file-psd/psd-save.c:1635 +#: ../plug-ins/file-uri/uri-backend-gnomevfs.c:283 +#: ../plug-ins/file-uri/uri-backend-libcurl.c:163 +#: ../plug-ins/file-xjt/xjt.c:1292 ../plug-ins/file-xjt/xjt.c:1729 +#: ../plug-ins/flame/flame.c:443 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1546 +#: ../plug-ins/gfig/gfig.c:794 ../plug-ins/ifs-compose/ifs-compose.c:2374 +#: ../plug-ins/lighting/lighting-ui.c:1211 +#, c-format +msgid "Could not open '%s' for writing: %s" +msgstr "'%s' dosyası yazma için açılamadı: %s" + +#: ../plug-ins/common/channel-mixer.c:1068 +#: ../plug-ins/common/cml-explorer.c:2060 +#, c-format +msgid "Parameters were saved to '%s'" +msgstr "Parametreler '%s' içine kaydedildi" + +#: ../plug-ins/common/checkerboard.c:89 +msgid "Create a checkerboard pattern" +msgstr "Bir dama tahtası deseni oluştur" + +#: ../plug-ins/common/checkerboard.c:94 +msgid "_Checkerboard..." +msgstr "_Dama tahtası..." + +#: ../plug-ins/common/checkerboard.c:161 +msgid "Adding checkerboard" +msgstr "Dama tahtası ekleniyor" + +#: ../plug-ins/common/checkerboard.c:346 +msgid "Checkerboard" +msgstr "Dama Tahtası" + +#: ../plug-ins/common/checkerboard.c:412 +#: ../plug-ins/gimpressionist/sizemap.c:511 +msgid "_Size:" +msgstr "Büyüklü_k:" + +#: ../plug-ins/common/checkerboard.c:421 +msgid "_Psychobilly" +msgstr "_Psychobilly" + +#: ../plug-ins/common/cml-explorer.c:129 +msgid "Keep image's values" +msgstr "Görüntü değerlerini koru" + +#: ../plug-ins/common/cml-explorer.c:130 +msgid "Keep the first value" +msgstr "İlk değeri koru" + +#: ../plug-ins/common/cml-explorer.c:131 +msgid "Fill with parameter k" +msgstr "k parametresi ile doldur" + +#: ../plug-ins/common/cml-explorer.c:132 +msgid "k{x(1-x)}^p" +msgstr "k{x(1-x)}^p" + +#: ../plug-ins/common/cml-explorer.c:133 +msgid "k{x(1-x)}^p stepped" +msgstr "k{x(1-x)}^p adımlı" + +#: ../plug-ins/common/cml-explorer.c:134 +msgid "kx^p" +msgstr "kx^p" + +#: ../plug-ins/common/cml-explorer.c:135 +msgid "kx^p stepped" +msgstr "kx^p geçildi" + +#: ../plug-ins/common/cml-explorer.c:136 +msgid "k(1-x^p)" +msgstr "k(1-x^p)" + +#: ../plug-ins/common/cml-explorer.c:137 +msgid "k(1-x^p) stepped" +msgstr "k(1-x^p) geçildi" + +#: ../plug-ins/common/cml-explorer.c:138 +msgid "Delta function" +msgstr "Delta işlevi" + +#: ../plug-ins/common/cml-explorer.c:139 +msgid "Delta function stepped" +msgstr "Delta işlevi geçildi" + +#: ../plug-ins/common/cml-explorer.c:140 +msgid "sin^p-based function" +msgstr "sin^p tabanlı işlev" + +#: ../plug-ins/common/cml-explorer.c:141 +msgid "sin^p, stepped" +msgstr "sin^p, geçildi" + +#: ../plug-ins/common/cml-explorer.c:167 +msgid "Max (x, -)" +msgstr "En çok (x, -)" + +#: ../plug-ins/common/cml-explorer.c:168 +msgid "Max (x+d, -)" +msgstr "En çok (x+d, -)" + +#: ../plug-ins/common/cml-explorer.c:169 +msgid "Max (x-d, -)" +msgstr "En çok (x-d, -)" + +#: ../plug-ins/common/cml-explorer.c:170 +msgid "Min (x, -)" +msgstr "En az (x, -)" + +#: ../plug-ins/common/cml-explorer.c:171 +msgid "Min (x+d, -)" +msgstr "En az (x+d, -)" + +#: ../plug-ins/common/cml-explorer.c:172 +msgid "Min (x-d, -)" +msgstr "En az (x-d, -)" + +#: ../plug-ins/common/cml-explorer.c:173 +msgid "Max (x+d, -), (x < 0.5)" +msgstr "En çok (x+d, -), (x < 0.5)" + +#: ../plug-ins/common/cml-explorer.c:174 +msgid "Max (x+d, -), (0.5 < x)" +msgstr "En çok (x+d, -), (0.5 < x)" + +#: ../plug-ins/common/cml-explorer.c:175 +msgid "Max (x-d, -), (x < 0.5)" +msgstr "En çok (x-d, -), (x < 0.5)" + +#: ../plug-ins/common/cml-explorer.c:176 +msgid "Max (x-d, -), (0.5 < x)" +msgstr "En çok (x-d, -), (0.5 < x)" + +#: ../plug-ins/common/cml-explorer.c:177 +msgid "Min (x+d, -), (x < 0.5)" +msgstr "En az (x+d, -), (x < 0.5)" + +#: ../plug-ins/common/cml-explorer.c:178 +msgid "Min (x+d, -), (0.5 < x)" +msgstr "En az (x+d, -), (0.5 < x)" + +#: ../plug-ins/common/cml-explorer.c:179 +msgid "Min (x-d, -), (x < 0.5)" +msgstr "En az (x-d, -), (x < 0.5)" + +#: ../plug-ins/common/cml-explorer.c:180 +msgid "Min (x-d, -), (0.5 < x)" +msgstr "En az (x-d, -), (0.5 < x)" + +#: ../plug-ins/common/cml-explorer.c:200 ../plug-ins/common/file-sunras.c:1651 +msgid "Standard" +msgstr "Standart" + +#: ../plug-ins/common/cml-explorer.c:201 +msgid "Use average value" +msgstr "Ortalama değeri kullan" + +#: ../plug-ins/common/cml-explorer.c:202 +msgid "Use reverse value" +msgstr "Ters değeri kullan" + +#: ../plug-ins/common/cml-explorer.c:203 +msgid "With random power (0,10)" +msgstr "Rastgele üssü ile (0,10)" + +#: ../plug-ins/common/cml-explorer.c:204 +msgid "With random power (0,1)" +msgstr "Rastgele üssü ile (0,1)" + +#: ../plug-ins/common/cml-explorer.c:205 +msgid "With gradient power (0,1)" +msgstr "Renk geçiş üssü ile (0,1)" + +#: ../plug-ins/common/cml-explorer.c:206 +msgid "Multiply rand. value (0,1)" +msgstr "Rastgele değeri çoğalt (0,1)" + +#: ../plug-ins/common/cml-explorer.c:207 +msgid "Multiply rand. value (0,2)" +msgstr "Rastgele değeri çoğalt (0,2)" + +#: ../plug-ins/common/cml-explorer.c:208 +msgid "Multiply gradient (0,1)" +msgstr "Renk geçişini çoğalt (0,1)" + +#: ../plug-ins/common/cml-explorer.c:209 +msgid "With p and random (0,1)" +msgstr "Rastgele ve p ile (0,1)" + +#: ../plug-ins/common/cml-explorer.c:223 +msgid "All black" +msgstr "Tümü siyah" + +#: ../plug-ins/common/cml-explorer.c:224 +msgid "All gray" +msgstr "Tümü gri" + +#: ../plug-ins/common/cml-explorer.c:225 +msgid "All white" +msgstr "Tümü beyaz" + +#: ../plug-ins/common/cml-explorer.c:226 +msgid "The first row of the image" +msgstr "Görüntünün ilk satırı" + +#: ../plug-ins/common/cml-explorer.c:227 +msgid "Continuous gradient" +msgstr "Sürekli renk geçişi" + +#: ../plug-ins/common/cml-explorer.c:228 +msgid "Continuous grad. w/o gap" +msgstr "Sürekli renk geçişi. w/o aralığında" + +#: ../plug-ins/common/cml-explorer.c:229 +msgid "Random, ch. independent" +msgstr "Kanal bağımsız, rastgele" + +#: ../plug-ins/common/cml-explorer.c:230 +msgid "Random shared" +msgstr "Rastgele paylaşılmış" + +#: ../plug-ins/common/cml-explorer.c:231 +msgid "Randoms from seed" +msgstr "Kaynaktan rastgele" + +#: ../plug-ins/common/cml-explorer.c:232 +msgid "Randoms from seed (shared)" +msgstr "Kaynaktan rastgele (paylaşılmış)" + +#: ../plug-ins/common/cml-explorer.c:300 ../plug-ins/common/cml-explorer.c:308 +#: ../plug-ins/common/decompose.c:188 +#: ../plug-ins/gimpressionist/orientation.c:180 +#: ../plug-ins/gimpressionist/size.c:183 +msgid "Hue" +msgstr "Renk Tonu" + +#: ../plug-ins/common/cml-explorer.c:301 ../plug-ins/common/cml-explorer.c:309 +#: ../plug-ins/common/decompose.c:189 +msgid "Saturation" +msgstr "Doygunluk" + +#: ../plug-ins/common/cml-explorer.c:302 ../plug-ins/common/cml-explorer.c:310 +#: ../plug-ins/common/decompose.c:190 +#: ../plug-ins/gimpressionist/orientation.c:156 +#: ../plug-ins/gimpressionist/size.c:159 +msgid "Value" +msgstr "Değer" + +#: ../plug-ins/common/cml-explorer.c:307 +msgid "(None)" +msgstr "(Hiçbiri)" + +#: ../plug-ins/common/cml-explorer.c:455 +msgid "Create abstract Coupled-Map Lattice patterns" +msgstr "Soyut eş harita çapraz kalıpları oluştur" + +#: ../plug-ins/common/cml-explorer.c:466 +msgid "CML _Explorer..." +msgstr "CML _Gezgini..." + +#: ../plug-ins/common/cml-explorer.c:756 +msgid "CML Explorer: evoluting" +msgstr "CML Tarayıcısı: Geliştiriliyor" + +#: ../plug-ins/common/cml-explorer.c:1177 +msgid "Coupled-Map-Lattice Explorer" +msgstr "Eşleşmiş - Örgü Tarayıcısı" + +#: ../plug-ins/common/cml-explorer.c:1224 +msgid "New Seed" +msgstr "Yeni Kaynak" + +#: ../plug-ins/common/cml-explorer.c:1235 +msgid "Fix Seed" +msgstr "Sabit kaynak" + +#: ../plug-ins/common/cml-explorer.c:1246 +msgid "Random Seed" +msgstr "Rastgele kaynak" + +#: ../plug-ins/common/cml-explorer.c:1288 ../plug-ins/common/filter-pack.c:700 +#: ../plug-ins/common/van-gogh-lic.c:671 +msgid "_Hue" +msgstr "_Renk Tonu" + +#: ../plug-ins/common/cml-explorer.c:1292 +msgid "Sat_uration" +msgstr "Doy_gunluk" + +#: ../plug-ins/common/cml-explorer.c:1296 ../plug-ins/common/filter-pack.c:708 +msgid "_Value" +msgstr "_Değer" + +#: ../plug-ins/common/cml-explorer.c:1300 +msgid "_Advanced" +msgstr "_Gelişmiş" + +#: ../plug-ins/common/cml-explorer.c:1315 +msgid "Channel Independent Parameters" +msgstr "Bağımsız Kanal Parametreleri" + +#: ../plug-ins/common/cml-explorer.c:1337 +msgid "Initial value:" +msgstr "Başlangıç değeri:" + +#: ../plug-ins/common/cml-explorer.c:1343 +msgid "Zoom scale:" +msgstr "Yakınlaştırma ölçeği:" + +#: ../plug-ins/common/cml-explorer.c:1352 +msgid "Start offset:" +msgstr "Başlama konumu:" + +#: ../plug-ins/common/cml-explorer.c:1361 +msgid "Seed of Random (only for \"From Seed\" Modes)" +msgstr "Rastgele kaynağı (sadece \"Kaynaktan\" modları için)" + +#: ../plug-ins/common/cml-explorer.c:1372 ../plug-ins/maze/maze-dialog.c:261 +msgid "Seed:" +msgstr "Kaynak:" + +#: ../plug-ins/common/cml-explorer.c:1385 +msgid "Switch to \"From seed\" With the Last Seed" +msgstr "Son Kaynak ile \"Kaynaktan\" moduna geçir" + +#: ../plug-ins/common/cml-explorer.c:1397 +msgid "" +"\"Fix seed\" button is an alias of me.\n" +"The same seed produces the same image, if (1) the widths of images are same " +"(this is the reason why image on drawable is different from preview), and " +"(2) all mutation rates equal to zero." +msgstr "" +"\"Kaynaktan\" butonu ile aynı görevi görür.\n" +"Aynı kaynak, aynı resmi üretir. (Eğer resimlerin genişliği aynı ise -" +"çizilebilirdeki resim ile önizlemedeki resmin farklı olmasının sebebi budur- " +"ve bütün değişim oranları sıfır ise)" + +#: ../plug-ins/common/cml-explorer.c:1405 +msgid "O_thers" +msgstr "_Diğer" + +#: ../plug-ins/common/cml-explorer.c:1420 +msgid "Copy Settings" +msgstr "Ayarları Kopyala" + +#: ../plug-ins/common/cml-explorer.c:1439 +msgid "Source channel:" +msgstr "Kaynak kanalı:" + +#: ../plug-ins/common/cml-explorer.c:1454 +#: ../plug-ins/common/cml-explorer.c:1502 +msgid "Destination channel:" +msgstr "Hedef kanal:" + +#: ../plug-ins/common/cml-explorer.c:1458 +msgid "Copy Parameters" +msgstr "Parametreleri Kopyala" + +#: ../plug-ins/common/cml-explorer.c:1467 +msgid "Selective Load Settings" +msgstr "Seçmeli Yükleme Ayarları" + +#: ../plug-ins/common/cml-explorer.c:1487 +msgid "Source channel in file:" +msgstr "Dosya içindeki kanal kaynağı:" + +#: ../plug-ins/common/cml-explorer.c:1508 +msgid "_Misc Ops." +msgstr "_Çeşitli Seçenekler" + +#: ../plug-ins/common/cml-explorer.c:1557 +msgid "Function type:" +msgstr "İşlev türü:" + +#: ../plug-ins/common/cml-explorer.c:1573 +msgid "Composition:" +msgstr "Kompozisyon:" + +#: ../plug-ins/common/cml-explorer.c:1587 +msgid "Misc arrange:" +msgstr "Çeşitli düzenleme:" + +#: ../plug-ins/common/cml-explorer.c:1591 +msgid "Use cyclic range" +msgstr "Dönüşsel erim kullan" + +#: ../plug-ins/common/cml-explorer.c:1601 +msgid "Mod. rate:" +msgstr "Mod. oranı" + +#: ../plug-ins/common/cml-explorer.c:1610 +msgid "Env. sensitivity:" +msgstr "Çevresel duyarlılık:" + +#: ../plug-ins/common/cml-explorer.c:1619 +msgid "Diffusion dist.:" +msgstr "Yayılma mesafesi:" + +#: ../plug-ins/common/cml-explorer.c:1628 +msgid "# of subranges:" +msgstr "altmenzil sayısı" + +#: ../plug-ins/common/cml-explorer.c:1637 +msgid "P(ower factor):" +msgstr "G(üç faktörü):" + +#: ../plug-ins/common/cml-explorer.c:1646 +msgid "Parameter k:" +msgstr "k değiştirgesi:" + +#: ../plug-ins/common/cml-explorer.c:1655 +msgid "Range low:" +msgstr "Düşük erim:" + +#: ../plug-ins/common/cml-explorer.c:1664 +msgid "Range high:" +msgstr "Yüksek erim:" + +#: ../plug-ins/common/cml-explorer.c:1676 +msgid "Plot a Graph of the Settings" +msgstr "Ayarların Bir Grafiğini Çiz" + +#: ../plug-ins/common/cml-explorer.c:1721 +msgid "Ch. sensitivity:" +msgstr "Kanal duyarlılığı:" + +#: ../plug-ins/common/cml-explorer.c:1731 +msgid "Mutation rate:" +msgstr "Başkalaşım oranı:" + +#: ../plug-ins/common/cml-explorer.c:1741 +msgid "Mutation dist.:" +msgstr "Değişim mesafesi:" + +#: ../plug-ins/common/cml-explorer.c:1819 +msgid "Graph of the Current Settings" +msgstr "Şimdiki Ayarların Çizgesi" + +#: ../plug-ins/common/cml-explorer.c:1890 +msgid "Warning: the source and the destination are the same channel." +msgstr "Uyarı: kaynak ve hedef, aynı kanal" + +#: ../plug-ins/common/cml-explorer.c:1949 +msgid "Save CML Explorer Parameters" +msgstr "CML Gezgini Değiştirgelerini Kaydet" + +#: ../plug-ins/common/cml-explorer.c:2082 +msgid "Load CML Explorer Parameters" +msgstr "CML Gezgini Değiştirgelerini Yükle" + +#: ../plug-ins/common/cml-explorer.c:2200 +msgid "Error: it's not CML parameter file." +msgstr "Hata: bu, CML değiştirge dosyası değil." + +#: ../plug-ins/common/cml-explorer.c:2207 +#, c-format +msgid "Warning: '%s' is an old format file." +msgstr "Uyarı: '%s', eski bir dosya biçimi." + +#: ../plug-ins/common/cml-explorer.c:2211 +#, c-format +msgid "" +"Warning: '%s' is a parameter file for a newer version of CML Explorer." +msgstr "" +"Uyarı: '%s', CML Gezgini'nin yeni bir sürümü için bir değiştirge dosyasıdır." + +#: ../plug-ins/common/cml-explorer.c:2274 +msgid "Error: failed to load parameters" +msgstr "Hata: değiştirgeleri yükleme başarısız" + +#: ../plug-ins/common/color-cube-analyze.c:106 +msgid "Analyze the set of colors in the image" +msgstr "Görüntüdeki renkler kümesini çözümle" + +#: ../plug-ins/common/color-cube-analyze.c:112 +msgid "Colorcube A_nalysis..." +msgstr "Renk Kübü Ç_özümleme..." + +#: ../plug-ins/common/color-cube-analyze.c:200 +#: ../plug-ins/common/color-cube-analyze.c:356 +msgid "Colorcube Analysis" +msgstr "Renk Kübü Çözümleme" + +#. output results +#: ../plug-ins/common/color-cube-analyze.c:384 +#: ../plug-ins/imagemap/imap_cmd_guides.c:231 +#, c-format +msgid "Image dimensions: %d × %d" +msgstr "Görüntü boyutları: %d × %d" + +#: ../plug-ins/common/color-cube-analyze.c:387 +msgid "No colors" +msgstr "Renksiz" + +#: ../plug-ins/common/color-cube-analyze.c:389 +msgid "Only one unique color" +msgstr "Sadece bir benzersiz renk" + +#: ../plug-ins/common/color-cube-analyze.c:391 +#, c-format +msgid "Number of unique colors: %d" +msgstr "Benzersiz renklerin sayısı: %d" + +#: ../plug-ins/common/color-enhance.c:69 +msgid "Stretch color saturation to cover maximum possible range" +msgstr "Renk doygunluğunu mümkün olan en yüksek erimi kapsaması için yay" + +#: ../plug-ins/common/color-enhance.c:81 +msgid "_Color Enhance" +msgstr "_Renk Arttırımı" + +#: ../plug-ins/common/color-enhance.c:115 +msgid "Color Enhance" +msgstr "Renk Arttırımı" + +#: ../plug-ins/common/color-exchange.c:122 +msgid "Swap one color with another" +msgstr "Bir rengi başkasıyla değiştir" + +#: ../plug-ins/common/color-exchange.c:128 +msgid "_Color Exchange..." +msgstr "_Renk Takası..." + +#: ../plug-ins/common/color-exchange.c:213 +#: ../plug-ins/common/color-exchange.c:287 +msgid "Color Exchange" +msgstr "Renk Takası" + +#: ../plug-ins/common/color-exchange.c:309 +msgid "Middle-Click Inside Preview to Pick \"From Color\"" +msgstr "i" + +#: ../plug-ins/common/color-exchange.c:347 +msgid "To Color" +msgstr "Renge" + +#: ../plug-ins/common/color-exchange.c:347 +msgid "From Color" +msgstr "Renkten" + +#: ../plug-ins/common/color-exchange.c:365 +msgid "Color Exchange: To Color" +msgstr "Renk Takası: Renge" + +#: ../plug-ins/common/color-exchange.c:366 +msgid "Color Exchange: From Color" +msgstr "Renk Takası: Renkten" + +#: ../plug-ins/common/color-exchange.c:424 +msgid "R_ed threshold:" +msgstr "K_ırmızı eşik:" + +#: ../plug-ins/common/color-exchange.c:484 +msgid "G_reen threshold:" +msgstr "Y_eşil eşik:" + +#: ../plug-ins/common/color-exchange.c:545 +msgid "B_lue threshold:" +msgstr "M_avi eşik:" + +#: ../plug-ins/common/color-exchange.c:573 +msgid "Lock _thresholds" +msgstr "_Eşikleri kilitle" + +#: ../plug-ins/common/color-to-alpha.c:94 +msgid "Convert a specified color to transparency" +msgstr "Belirli bir rengi saydamlığa dönüştür" + +#: ../plug-ins/common/color-to-alpha.c:101 +msgid "Color to _Alpha..." +msgstr "Renkten _Görünüre..." + +#: ../plug-ins/common/color-to-alpha.c:184 +msgid "Removing color" +msgstr "Renk kaldırılıyor" + +#: ../plug-ins/common/color-to-alpha.c:377 +msgid "Color to Alpha" +msgstr "Renkten Görünüre" + +#: ../plug-ins/common/color-to-alpha.c:414 +msgid "Color to Alpha Color Picker" +msgstr "Renkten Görünür Renk Seçicisine" + +#: ../plug-ins/common/color-to-alpha.c:429 +msgid "to alpha" +msgstr "görünüre" + +#: ../plug-ins/common/colorify.c:102 +msgid "Replace all colors with shades of a specified color" +msgstr "Tüm renkleri özel bir rengin gölgeleri yerine koy" + +#: ../plug-ins/common/colorify.c:108 +msgid "Colorif_y..." +msgstr "Renklendi_r..." + +#: ../plug-ins/common/colorify.c:169 +msgid "Colorifying" +msgstr "Renklendirme" + +#: ../plug-ins/common/colorify.c:255 +msgid "Colorify" +msgstr "Renklendir" + +#: ../plug-ins/common/colorify.c:289 +msgid "Custom color:" +msgstr "Özel renk:" + +#: ../plug-ins/common/colorify.c:294 +msgid "Colorify Custom Color" +msgstr "Özel Rengi Renklendir" + +#: ../plug-ins/common/colormap-remap.c:97 +msgid "Rearrange the colormap" +msgstr "Renk haritasını yeniden düzenle" + +#: ../plug-ins/common/colormap-remap.c:104 +msgid "R_earrange Colormap..." +msgstr "Renk Haritasını Yeniden D_üzenle..." + +#: ../plug-ins/common/colormap-remap.c:116 +msgid "Swap two colors in the colormap" +msgstr "Renk haritasındaki iki rengi değiştir" + +#: ../plug-ins/common/colormap-remap.c:123 +msgid "_Swap Colors" +msgstr "Renkleri _Değiştir" + +#: ../plug-ins/common/colormap-remap.c:286 +#: ../plug-ins/common/colormap-remap.c:297 +#: ../plug-ins/common/colormap-remap.c:308 +msgid "Invalid remap array was passed to remap function" +msgstr "Tekrar eşleme işlevinden geçen geçersiz tekrar eşleme dizisi" + +#: ../plug-ins/common/colormap-remap.c:332 +msgid "Rearranging the colormap" +msgstr "Renk haritası yeniden düzenleniyor" + +#: ../plug-ins/common/colormap-remap.c:481 +msgid "Sort on Hue" +msgstr "Renk Tonuna göre Sırala" + +#: ../plug-ins/common/colormap-remap.c:485 +msgid "Sort on Saturation" +msgstr "Doygunluk üzerine Sırala" + +#: ../plug-ins/common/colormap-remap.c:489 +msgid "Sort on Value" +msgstr "Değer üzerine Sırala" + +#: ../plug-ins/common/colormap-remap.c:493 +msgid "Reverse Order" +msgstr "Ters Düzen" + +#: ../plug-ins/common/colormap-remap.c:497 +msgid "Reset Order" +msgstr "Düzeni Sıfırla" + +#: ../plug-ins/common/colormap-remap.c:596 +msgid "Rearrange Colormap" +msgstr "Renk Haritasını Yeniden Düzenle" + +#: ../plug-ins/common/colormap-remap.c:699 +msgid "" +"Drag and drop colors to rearrange the colormap. The numbers shown are the " +"original indices. Right-click for a menu with sort options." +msgstr "" +"Renk haritasını yeniden düzenlemek için renkleri sürükle ve bırak. Numara " +"gösterimleri özgün göstergelerdir. Sıralama seçenekleri menüsü için sağ " +"tıklayın." + +#: ../plug-ins/common/compose.c:189 ../plug-ins/common/decompose.c:170 +#: ../plug-ins/common/file-raw.c:1025 +msgid "RGB" +msgstr "RGB" + +#: ../plug-ins/common/compose.c:200 ../plug-ins/common/decompose.c:178 +msgid "RGBA" +msgstr "RGBA" + +#: ../plug-ins/common/compose.c:204 ../plug-ins/common/noise-rgb.c:525 +#: ../plug-ins/common/noise-rgb.c:540 +msgid "_Alpha:" +msgstr "_Görünür:" + +#: ../plug-ins/common/compose.c:211 ../plug-ins/common/decompose.c:184 +msgid "HSV" +msgstr "HSV" + +#: ../plug-ins/common/compose.c:212 ../plug-ins/common/compose.c:220 +msgid "_Hue:" +msgstr "_Renk Tonu:" + +#: ../plug-ins/common/compose.c:213 ../plug-ins/common/compose.c:221 +#: ../plug-ins/common/noise-hsv.c:421 +msgid "_Saturation:" +msgstr "_Doygunluk:" + +#: ../plug-ins/common/compose.c:214 ../plug-ins/common/noise-hsv.c:433 +msgid "_Value:" +msgstr "_Değer:" + +#: ../plug-ins/common/compose.c:219 ../plug-ins/common/decompose.c:193 +msgid "HSL" +msgstr "HSL" + +#: ../plug-ins/common/compose.c:222 +msgid "_Lightness:" +msgstr "_Aydınlanma:" + +#: ../plug-ins/common/compose.c:227 ../plug-ins/common/decompose.c:202 +msgid "CMY" +msgstr "CMY" + +#: ../plug-ins/common/compose.c:228 ../plug-ins/common/compose.c:236 +msgid "_Cyan:" +msgstr "_Turkuaz:" + +#: ../plug-ins/common/compose.c:229 ../plug-ins/common/compose.c:237 +msgid "_Magenta:" +msgstr "_Macenta:" + +#: ../plug-ins/common/compose.c:230 ../plug-ins/common/compose.c:238 +msgid "_Yellow:" +msgstr "_Sarı:" + +#: ../plug-ins/common/compose.c:235 ../plug-ins/common/decompose.c:211 +msgid "CMYK" +msgstr "CMYK" + +#: ../plug-ins/common/compose.c:239 +msgid "_Black:" +msgstr "_Siyah:" + +#: ../plug-ins/common/compose.c:243 ../plug-ins/common/decompose.c:224 +msgid "LAB" +msgstr "LAB" + +#: ../plug-ins/common/compose.c:252 +msgid "_Luma y470:" +msgstr "_Luma y470:" + +#: ../plug-ins/common/compose.c:253 +msgid "_Blueness cb470:" +msgstr "_Mavilik cb470:" + +#: ../plug-ins/common/compose.c:254 +msgid "_Redness cr470:" +msgstr "_Kırmızılık cr470:" + +#: ../plug-ins/common/compose.c:260 +msgid "_Luma y709:" +msgstr "_Luma y709:" + +#: ../plug-ins/common/compose.c:261 +msgid "_Blueness cb709:" +msgstr "_Mavilik cb709:" + +#: ../plug-ins/common/compose.c:262 +msgid "_Redness cr709:" +msgstr "_Kırmızılık cr709:" + +#: ../plug-ins/common/compose.c:268 +msgid "_Luma y470f:" +msgstr "_Luma y470f:" + +#: ../plug-ins/common/compose.c:269 +msgid "_Blueness cb470f:" +msgstr "_Mavilik cb470f:" + +#: ../plug-ins/common/compose.c:270 +msgid "_Redness cr470f:" +msgstr "_Kırmızılık cr470f:" + +#: ../plug-ins/common/compose.c:276 +msgid "_Luma y709f:" +msgstr "_Luma y709f:" + +#: ../plug-ins/common/compose.c:277 +msgid "_Blueness cb709f:" +msgstr "_Mavilik cb709f:" + +#: ../plug-ins/common/compose.c:278 +msgid "_Redness cr709f:" +msgstr "_Kırmızılık cr709f:" + +#: ../plug-ins/common/compose.c:404 +msgid "Create an image using multiple gray images as color channels" +msgstr "" +"Çoklu gri görüntüleri renk kanalları olarak kullanan bir görüntü oluştur" + +#: ../plug-ins/common/compose.c:410 +msgid "C_ompose..." +msgstr "D_üzenle..." + +#: ../plug-ins/common/compose.c:434 +msgid "Recompose an image that was previously decomposed" +msgstr "Önceden ayrıştırılan bir görüntüyü yeniden düzenle" + +#: ../plug-ins/common/compose.c:442 +msgid "R_ecompose" +msgstr "Y_eniden düzenle" + +#: ../plug-ins/common/compose.c:488 +msgid "" +"You can only run 'Recompose' if the active image was originally produced by " +"'Decompose'." +msgstr "" +"'Yeniden Düzenle'yi sadece etkin görüntü 'Ayrıştırma' ile üretilmişse " +"çalıştırabilirsiniz." + +#: ../plug-ins/common/compose.c:512 +msgid "Error scanning 'decompose-data' parasite: too few layers found" +msgstr "'decompose-data' paraziti taranırken hata: birçok katman bulundu" + +#: ../plug-ins/common/compose.c:545 +#, c-format +msgid "Could not get layers for image %d" +msgstr "%d imgesinin katmanları alınamadı" + +#: ../plug-ins/common/compose.c:612 +msgid "Composing" +msgstr "Düzenleme" + +#: ../plug-ins/common/compose.c:697 ../plug-ins/common/compose.c:1728 +msgid "At least one image is needed to compose" +msgstr "Düzenleme için en az bir görüntü gerekiyor" + +#: ../plug-ins/common/compose.c:708 ../plug-ins/common/compose.c:722 +#, c-format +msgid "Specified layer %d not found" +msgstr "Belirlenen %d katmanı bulunamadı" + +#: ../plug-ins/common/compose.c:730 +msgid "Drawables have different size" +msgstr "Çizilebilirlerin boyutları farklı" + +#: ../plug-ins/common/compose.c:755 +msgid "Images have different size" +msgstr "Görüntülerin boyutları farklı" + +#: ../plug-ins/common/compose.c:773 +msgid "Error in getting layer IDs" +msgstr "Katman Kimliklerini almada hata" + +#: ../plug-ins/common/compose.c:796 +#, c-format +msgid "Image is not a gray image (bpp=%d)" +msgstr "Görüntü gri bir görüntü değil (bpp=%d)" + +#: ../plug-ins/common/compose.c:824 +msgid "Unable to recompose, source layer not found" +msgstr "Yeniden düzenlenemedi, kaynak katman bulunamadı" + +#: ../plug-ins/common/compose.c:1481 +msgid "Compose" +msgstr "Düzenle" + +#. Compose type combo +#: ../plug-ins/common/compose.c:1508 +msgid "Compose Channels" +msgstr "Kanalları Düzenle" + +#: ../plug-ins/common/compose.c:1518 ../plug-ins/common/decompose.c:1522 +msgid "Color _model:" +msgstr "Renk _modeli:" + +#. Channel representation table +#: ../plug-ins/common/compose.c:1550 +msgid "Channel Representations" +msgstr "Kanal Gösterimleri" + +#: ../plug-ins/common/compose.c:1613 +msgid "Mask value" +msgstr "Maske değeri" + +#: ../plug-ins/common/contrast-normalize.c:80 +msgid "Stretch brightness values to cover the full range" +msgstr "Parlaklık değerlerini tüm erimi kapsayacak şekilde yay" + +#: ../plug-ins/common/contrast-normalize.c:92 +#: ../plug-ins/common/edge-dog.c:361 +msgid "_Normalize" +msgstr "_Normalleştir" + +#: ../plug-ins/common/contrast-normalize.c:126 +msgid "Normalizing" +msgstr "Normalleştiriliyor" + +#: ../plug-ins/common/contrast-retinex.c:156 +msgid "Enhance contrast using the Retinex method" +msgstr "Retinex yöntemini kullanarak karşıtlığı arttır" + +#: ../plug-ins/common/contrast-retinex.c:166 +msgid "Retine_x..." +msgstr "Retine_x..." + +#: ../plug-ins/common/contrast-retinex.c:250 +msgid "Retinex" +msgstr "Retinex" + +#: ../plug-ins/common/contrast-retinex.c:286 +msgid "Retinex Image Enhancement" +msgstr "Retinex Görüntü Geliştirimi" + +#: ../plug-ins/common/contrast-retinex.c:321 +msgid "Uniform" +msgstr "Birörnek" + +#: ../plug-ins/common/contrast-retinex.c:322 +msgid "Low" +msgstr "Düşük" + +#: ../plug-ins/common/contrast-retinex.c:323 +msgid "High" +msgstr "Yüksek" + +#: ../plug-ins/common/contrast-retinex.c:334 +msgid "_Level:" +msgstr "_Düzey:" + +#: ../plug-ins/common/contrast-retinex.c:339 +msgid "_Scale:" +msgstr "Ö_lçek:" + +#: ../plug-ins/common/contrast-retinex.c:354 +msgid "Scale _division:" +msgstr "Ölçek _bölümü:" + +#: ../plug-ins/common/contrast-retinex.c:369 +msgid "Dy_namic:" +msgstr "D_inamik:" + +#: ../plug-ins/common/contrast-retinex.c:642 +msgid "Retinex: filtering" +msgstr "Retinex: süzülüyor" + +#: ../plug-ins/common/contrast-stretch-hsv.c:68 +msgid "Stretch image contrast to cover the maximum possible range" +msgstr "Mümkün olan en yüksek erimi kapsamak için görüntü karşıtlığını yay" + +#: ../plug-ins/common/contrast-stretch-hsv.c:81 +msgid "Stretch _HSV" +msgstr "_HSV'yi Yay" + +#: ../plug-ins/common/contrast-stretch-hsv.c:116 +msgid "Auto-Stretching HSV" +msgstr "HSV'yi Otomatik Yayma" + +#: ../plug-ins/common/contrast-stretch-hsv.c:192 +msgid "autostretch_hsv: cmap was NULL! Quitting...\n" +msgstr "autostretch_hsv: cmap NULL! Çıkıyor...\n" + +#: ../plug-ins/common/contrast-stretch.c:68 +msgid "Stretch contrast to cover the maximum possible range" +msgstr "Mümkün olan en yüksek erimi kapsamak için karşıtlığı yay" + +#: ../plug-ins/common/contrast-stretch.c:79 +msgid "_Stretch Contrast" +msgstr "Karşıtlığı _Yay" + +#: ../plug-ins/common/contrast-stretch.c:113 +msgid "Auto-stretching contrast" +msgstr "Karşıtlığı otomatik yayma" + +#: ../plug-ins/common/contrast-stretch.c:152 +msgid "c_astretch: cmap was NULL! Quitting...\n" +msgstr "c_astretch: cmap NULL! Çıkıyor...\n" + +#: ../plug-ins/common/convolution-matrix.c:64 +msgid "Gr_ey" +msgstr "G_ri" + +#: ../plug-ins/common/convolution-matrix.c:65 +msgid "Re_d" +msgstr "_Kırmızı" + +#: ../plug-ins/common/convolution-matrix.c:66 +#: ../plug-ins/common/newsprint.c:353 +msgid "_Green" +msgstr "Yeşi_l" + +#: ../plug-ins/common/convolution-matrix.c:67 +#: ../plug-ins/common/newsprint.c:361 +msgid "_Blue" +msgstr "Mav_i" + +#: ../plug-ins/common/convolution-matrix.c:68 +msgid "_Alpha" +msgstr "_Görünür" + +#: ../plug-ins/common/convolution-matrix.c:73 +msgid "E_xtend" +msgstr "G_enişlet" + +#: ../plug-ins/common/convolution-matrix.c:74 +#: ../plug-ins/common/displace.c:472 ../plug-ins/common/edge.c:709 +#: ../plug-ins/common/fractal-trace.c:736 ../plug-ins/common/ripple.c:564 +msgid "_Wrap" +msgstr "_Kaydır:" + +#: ../plug-ins/common/convolution-matrix.c:75 +msgid "Cro_p" +msgstr "Kı_rp" + +#: ../plug-ins/common/convolution-matrix.c:201 +msgid "Apply a generic 5x5 convolution matrix" +msgstr "Soysal bir 5x5 kıvrılma dizeyi uygula" + +#: ../plug-ins/common/convolution-matrix.c:206 +msgid "_Convolution Matrix..." +msgstr "_Kıvrılma Dizeyi..." + +#: ../plug-ins/common/convolution-matrix.c:241 +msgid "Convolution does not work on layers smaller than 3x3 pixels." +msgstr "Kıvrılma 3x3 benekten küçük katmanlar üzerinde çalışmıyor" + +#: ../plug-ins/common/convolution-matrix.c:314 +msgid "Applying convolution" +msgstr "Kıvrılma uygulanıyor" + +#: ../plug-ins/common/convolution-matrix.c:906 +msgid "Convolution Matrix" +msgstr "Kıvrılma Dizeyi" + +#: ../plug-ins/common/convolution-matrix.c:944 +msgid "Matrix" +msgstr "Matris" + +#: ../plug-ins/common/convolution-matrix.c:982 +msgid "D_ivisor:" +msgstr "B_ölen:" + +#: ../plug-ins/common/convolution-matrix.c:1008 +#: ../plug-ins/common/depth-merge.c:768 ../plug-ins/common/file-raw.c:1045 +msgid "O_ffset:" +msgstr "G_öreli konum:" + +#: ../plug-ins/common/convolution-matrix.c:1037 +msgid "N_ormalise" +msgstr "N_ormalleştir" + +#: ../plug-ins/common/convolution-matrix.c:1049 +msgid "A_lpha-weighting" +msgstr "Gö_rünür ağırlıklı" + +#: ../plug-ins/common/convolution-matrix.c:1068 +msgid "Border" +msgstr "Sınır" + +#: ../plug-ins/common/convolution-matrix.c:1095 +msgid "Channels" +msgstr "Kanallar" + +#: ../plug-ins/common/crop-auto.c:85 +msgid "Remove empty borders from the image" +msgstr "Boş sınırları görüntüden kaldır" + +#: ../plug-ins/common/crop-auto.c:90 +msgid "Autocrop Imag_e" +msgstr "_Görüntüyü kendiliğinden kırp" + +#: ../plug-ins/common/crop-auto.c:99 +msgid "Remove empty borders from the layer" +msgstr "Katmandan boş sınırları kaldır" + +#: ../plug-ins/common/crop-auto.c:104 +msgid "Autocrop Lay_er" +msgstr "Kat_manı kendiliğinden kırp" + +#: ../plug-ins/common/crop-auto.c:151 +msgid "Cropping" +msgstr "Kırpma" + +#: ../plug-ins/common/crop-zealous.c:85 +msgid "Autocrop unused space from edges and middle" +msgstr "Kenarlardan ve ortadan kullanılmayan alanı kendiliğinden kırp" + +#: ../plug-ins/common/crop-zealous.c:90 +msgid "_Zealous Crop" +msgstr "_İstekli Kırpım" + +#: ../plug-ins/common/crop-zealous.c:138 +msgid "Zealous cropping" +msgstr "İstekli kırpma" + +#: ../plug-ins/common/crop-zealous.c:239 +msgid "Nothing to crop." +msgstr "Kırpacak birşey yok" + +#: ../plug-ins/common/cubism.c:150 +msgid "Convert the image into randomly rotated square blobs" +msgstr "İmgeyi rasgele döndürülmüş dörtgen biçimsiz yığınlara dönüştür" + +#: ../plug-ins/common/cubism.c:155 +msgid "_Cubism..." +msgstr "_Kübizm..." + +#: ../plug-ins/common/cubism.c:268 +msgid "Cubism" +msgstr "Kübizm" + +#: ../plug-ins/common/cubism.c:305 +msgid "_Tile size:" +msgstr "_Döşeme boyutu:" + +#: ../plug-ins/common/cubism.c:318 +msgid "T_ile saturation:" +msgstr "D_öşeme doygunluğu:" + +#: ../plug-ins/common/cubism.c:329 +msgid "_Use background color" +msgstr "Artalan rengi k_ullan" + +#: ../plug-ins/common/cubism.c:419 +msgid "Cubistic transformation" +msgstr "Kübistik dönüştürme" + +#: ../plug-ins/common/curve-bend.c:520 +msgid "Bend the image using two control curves" +msgstr "İki denetim eğrisi kullanarak görüntüyü bük" + +#: ../plug-ins/common/curve-bend.c:541 +msgid "_Curve Bend..." +msgstr "_Eğri Bükümü..." + +#: ../plug-ins/common/curve-bend.c:677 ../plug-ins/common/edge-dog.c:178 +msgid "Can operate on layers only (but was called on channel or mask)." +msgstr "" +"Yalnızca katmanlar üzerinde işlenebiliyor (ama kanal ya da maske üzerinde " +"çağrıldı)." + +#: ../plug-ins/common/curve-bend.c:687 +msgid "Cannot operate on layers with masks." +msgstr "Katmanlar üzerinde maskelerle işlenemiyor." + +#: ../plug-ins/common/curve-bend.c:699 +msgid "Cannot operate on empty selections." +msgstr "Boş seçimler üzerinde işlenemiyor." + +#. Possibly retrieve data from a previous run +#. The shell and main vbox +#: ../plug-ins/common/curve-bend.c:1211 ../plug-ins/common/curve-bend.c:2932 +msgid "Curve Bend" +msgstr "Eğri Bükümü" + +#. Preview area, top of column +#. preview +#: ../plug-ins/common/curve-bend.c:1247 +#: ../plug-ins/gimpressionist/orientmap.c:592 +#: ../plug-ins/gimpressionist/sizemap.c:461 +#: ../plug-ins/print/print-page-layout.c:159 +msgid "Preview" +msgstr "Önizleme" + +#. The preview button +#: ../plug-ins/common/curve-bend.c:1276 +msgid "_Preview Once" +msgstr "Hemen Ö_nizle" + +#. The preview toggle +#: ../plug-ins/common/curve-bend.c:1285 +msgid "Automatic pre_view" +msgstr "Kendiliğinden öni_zle" + +#. Options area, bottom of column +#. Options section +#: ../plug-ins/common/curve-bend.c:1295 ../plug-ins/common/ripple.c:505 +#: ../plug-ins/gfig/gfig-dialog.c:1207 +msgid "Options" +msgstr "Seçenekler" + +#. Rotate spinbutton +#: ../plug-ins/common/curve-bend.c:1309 +msgid "Rotat_e:" +msgstr "Ç_evir:" + +#. The smoothing toggle +#: ../plug-ins/common/curve-bend.c:1328 +msgid "Smoo_thing" +msgstr "Yumu_şatma" + +#. The antialiasing toggle +#: ../plug-ins/common/curve-bend.c:1338 ../plug-ins/common/mosaic.c:727 +#: ../plug-ins/common/qbist.c:853 ../plug-ins/common/ripple.c:514 +msgid "_Antialiasing" +msgstr "_Kenar Düzeltme" + +#. The work_on_copy toggle +#: ../plug-ins/common/curve-bend.c:1348 +msgid "Work on cop_y" +msgstr "Ko_pya üzerinde çalış" + +#. The curves graph +#: ../plug-ins/common/curve-bend.c:1358 +msgid "Modify Curves" +msgstr "Eğrileri Düzenle" + +#: ../plug-ins/common/curve-bend.c:1386 +msgid "Curve for Border" +msgstr "Sınır için Eğ" + +#: ../plug-ins/common/curve-bend.c:1390 +msgid "_Upper" +msgstr "_Yukarı" + +#: ../plug-ins/common/curve-bend.c:1391 +msgid "_Lower" +msgstr "_Aşağı" + +#: ../plug-ins/common/curve-bend.c:1401 +msgid "Curve Type" +msgstr "Eğri Tipi" + +#: ../plug-ins/common/curve-bend.c:1405 +msgid "Smoot_h" +msgstr "Yumuşa_t" + +#: ../plug-ins/common/curve-bend.c:1406 +msgid "_Free" +msgstr "_Serbest" + +#. The Copy button +#: ../plug-ins/common/curve-bend.c:1421 +msgid "_Copy" +msgstr "_Kopyala" + +#: ../plug-ins/common/curve-bend.c:1426 +msgid "Copy the active curve to the other border" +msgstr "Etkin eğriyi diğer sınıra kopyala" + +#. The CopyInv button +#: ../plug-ins/common/curve-bend.c:1433 +msgid "_Mirror" +msgstr "_Yansıla" + +#: ../plug-ins/common/curve-bend.c:1438 +msgid "Mirror the active curve to the other border" +msgstr "Etkin eğriyi diğer sınıra yansıt" + +#. The Swap button +#: ../plug-ins/common/curve-bend.c:1446 +msgid "S_wap" +msgstr "_Değiştir" + +#: ../plug-ins/common/curve-bend.c:1451 +msgid "Swap the two curves" +msgstr "İki eğriyi değiştir" + +#: ../plug-ins/common/curve-bend.c:1463 +msgid "Reset the active curve" +msgstr "Etkin eğriyi sıfırla" + +#: ../plug-ins/common/curve-bend.c:1480 +msgid "Load the curves from a file" +msgstr "Eğrileri bir dosyadan yükle" + +#: ../plug-ins/common/curve-bend.c:1492 +msgid "Save the curves to a file" +msgstr "Eğrileri bir dosyaya kaydet" + +#: ../plug-ins/common/curve-bend.c:2030 +msgid "Load Curve Points from File" +msgstr "Eğri Noktalarını Dosyadan Yükle" + +#: ../plug-ins/common/curve-bend.c:2065 +msgid "Save Curve Points to File" +msgstr "Eğri Noktalarını Dosyaya Kaydet" + +#: ../plug-ins/common/decompose.c:170 ../plug-ins/common/decompose.c:174 +#: ../plug-ins/common/decompose.c:178 +msgid "red" +msgstr "kırmızı" + +#: ../plug-ins/common/decompose.c:171 ../plug-ins/common/decompose.c:175 +#: ../plug-ins/common/decompose.c:179 +msgid "green" +msgstr "yeşil" + +#: ../plug-ins/common/decompose.c:172 ../plug-ins/common/decompose.c:176 +#: ../plug-ins/common/decompose.c:180 +msgid "blue" +msgstr "mavi" + +#: ../plug-ins/common/decompose.c:181 ../plug-ins/common/decompose.c:221 +msgid "alpha" +msgstr "görünür" + +#: ../plug-ins/common/decompose.c:184 ../plug-ins/common/decompose.c:188 +msgid "hue" +msgstr "renk tonu" + +#: ../plug-ins/common/decompose.c:185 ../plug-ins/common/decompose.c:189 +msgid "saturation" +msgstr "doygunluk" + +#: ../plug-ins/common/decompose.c:186 ../plug-ins/common/decompose.c:190 +msgid "value" +msgstr "değer" + +#: ../plug-ins/common/decompose.c:193 ../plug-ins/common/decompose.c:197 +msgid "hue_l" +msgstr "renk tonu_I" + +#: ../plug-ins/common/decompose.c:194 ../plug-ins/common/decompose.c:198 +msgid "saturation_l" +msgstr "doygunluk_l" + +#: ../plug-ins/common/decompose.c:195 ../plug-ins/common/decompose.c:199 +msgid "lightness" +msgstr "aydınlanma" + +#: ../plug-ins/common/decompose.c:197 +msgid "Hue (HSL)" +msgstr "Renk Tonu (HSL)" + +#: ../plug-ins/common/decompose.c:198 +msgid "Saturation (HSL)" +msgstr "Doygunluk (HSL)" + +#: ../plug-ins/common/decompose.c:199 +msgid "Lightness" +msgstr "Aydınlanma" + +#: ../plug-ins/common/decompose.c:202 ../plug-ins/common/decompose.c:206 +msgid "cyan" +msgstr "turkuaz" + +#: ../plug-ins/common/decompose.c:203 ../plug-ins/common/decompose.c:207 +msgid "magenta" +msgstr "macenta" + +#: ../plug-ins/common/decompose.c:204 ../plug-ins/common/decompose.c:208 +msgid "yellow" +msgstr "sarı" + +#: ../plug-ins/common/decompose.c:206 +msgid "Cyan" +msgstr "Turkuaz" + +#: ../plug-ins/common/decompose.c:207 +msgid "Magenta" +msgstr "Macenta" + +#: ../plug-ins/common/decompose.c:208 +msgid "Yellow" +msgstr "Sarı" + +#: ../plug-ins/common/decompose.c:211 ../plug-ins/common/decompose.c:216 +msgid "cyan-k" +msgstr "turkuaz-k" + +#: ../plug-ins/common/decompose.c:212 ../plug-ins/common/decompose.c:217 +msgid "magenta-k" +msgstr "macenta-k" + +#: ../plug-ins/common/decompose.c:213 ../plug-ins/common/decompose.c:218 +msgid "yellow-k" +msgstr "sarı-k" + +#: ../plug-ins/common/decompose.c:214 +msgid "black" +msgstr "siyah" + +#: ../plug-ins/common/decompose.c:216 +msgid "Cyan_K" +msgstr "Turkuaz_K" + +#: ../plug-ins/common/decompose.c:217 +msgid "Magenta_K" +msgstr "Macenta_K" + +#: ../plug-ins/common/decompose.c:218 +msgid "Yellow_K" +msgstr "Sarı_K" + +#: ../plug-ins/common/decompose.c:221 +msgid "Alpha" +msgstr "Görünür" + +#: ../plug-ins/common/decompose.c:229 +msgid "luma-y470" +msgstr "luma-y470" + +#: ../plug-ins/common/decompose.c:230 +msgid "blueness-cb470" +msgstr "mavilik-cb470" + +#: ../plug-ins/common/decompose.c:231 +msgid "redness-cr470" +msgstr "kırmızılık-cr470" + +#: ../plug-ins/common/decompose.c:233 +msgid "luma-y709" +msgstr "luma-y709" + +#: ../plug-ins/common/decompose.c:234 +msgid "blueness-cb709" +msgstr "mavilik-cb709" + +#: ../plug-ins/common/decompose.c:235 +msgid "redness-cr709" +msgstr "kırmızılık-cr709" + +#: ../plug-ins/common/decompose.c:237 +msgid "luma-y470f" +msgstr "luma-y470f" + +#: ../plug-ins/common/decompose.c:238 +msgid "blueness-cb470f" +msgstr "mavilik-cb470f" + +#: ../plug-ins/common/decompose.c:239 +msgid "redness-cr470f" +msgstr "kırmızılık-cr470f" + +#: ../plug-ins/common/decompose.c:241 +msgid "luma-y709f" +msgstr "luma-y709f" + +#: ../plug-ins/common/decompose.c:242 +msgid "blueness-cb709f" +msgstr "mavilik-cb709f" + +#: ../plug-ins/common/decompose.c:243 +msgid "redness-cr709f" +msgstr "kırmızılık-cr709f" + +#: ../plug-ins/common/decompose.c:312 ../plug-ins/common/decompose.c:326 +msgid "Decompose an image into separate colorspace components" +msgstr "Bir görüntüyü ayrı renk uzayı bileşenlerine ayrıştır" + +#: ../plug-ins/common/decompose.c:318 ../plug-ins/common/decompose.c:336 +msgid "_Decompose..." +msgstr "_Ayrıştır..." + +#: ../plug-ins/common/decompose.c:429 +msgid "Decomposing" +msgstr "Ayrıştırma" + +#: ../plug-ins/common/decompose.c:1487 +msgid "Decompose" +msgstr "Ayrıştır" + +#: ../plug-ins/common/decompose.c:1510 +msgid "Extract Channels" +msgstr "Kanalları Çıkart" + +#: ../plug-ins/common/decompose.c:1557 +msgid "_Decompose to layers" +msgstr "Katmanlarına _ayrıştır" + +#: ../plug-ins/common/decompose.c:1568 +msgid "_Foreground as registration color" +msgstr "Kayıt rengi olarak _önalan" + +#: ../plug-ins/common/decompose.c:1569 +msgid "" +"Pixels in the foreground color will appear black in all output images. This " +"can be used for things like crop marks that have to show up on all channels." +msgstr "" +"Önalan renginde benekler, bütün çıkış görüntülerinde siyah görünecektir. Bu, " +"bütün kanalların göstermek zorunda olduğu kırpma işareti gibi şeylerde " +"kullanılabilir." + +#: ../plug-ins/common/deinterlace.c:91 +msgid "Fix images where every other row is missing" +msgstr "Diğer sıraların kayıp olduğu resimleri düzelt" + +#: ../plug-ins/common/deinterlace.c:100 +msgid "_Deinterlace..." +msgstr "_Netleştir..." + +#: ../plug-ins/common/deinterlace.c:157 ../plug-ins/common/deinterlace.c:325 +msgid "Deinterlace" +msgstr "Netleştir" + +#: ../plug-ins/common/deinterlace.c:357 +msgid "Keep o_dd fields" +msgstr "T_ek alanları koru" + +#: ../plug-ins/common/deinterlace.c:358 +msgid "Keep _even fields" +msgstr "_Çift alanları koru" + +#: ../plug-ins/common/depth-merge.c:184 +msgid "Combine two images using depth maps (z-buffers)" +msgstr "Derin eşlemler kullanarak iki görüntüyü birleştir (z-arabellekleri)" + +#: ../plug-ins/common/depth-merge.c:193 +msgid "_Depth Merge..." +msgstr "_Derin Birleştirme..." + +#: ../plug-ins/common/depth-merge.c:387 +msgid "Depth-merging" +msgstr "Derin birleştiriliyor" + +#: ../plug-ins/common/depth-merge.c:644 +msgid "Depth Merge" +msgstr "Derin Birleştirme" + +#: ../plug-ins/common/depth-merge.c:696 +msgid "Source 1:" +msgstr "Kaynak 1:" + +#: ../plug-ins/common/depth-merge.c:711 ../plug-ins/common/depth-merge.c:741 +msgid "Depth map:" +msgstr "Derin eşlem:" + +#: ../plug-ins/common/depth-merge.c:726 +msgid "Source 2:" +msgstr "Kaynak 2:" + +#: ../plug-ins/common/depth-merge.c:758 +msgid "O_verlap:" +msgstr "B_indirme:" + +#: ../plug-ins/common/depth-merge.c:778 +msgid "Sc_ale 1:" +msgstr "Ö_lçek 1:" + +#: ../plug-ins/common/depth-merge.c:788 +msgid "Sca_le 2:" +msgstr "Öl_çek 2:" + +#: ../plug-ins/common/despeckle.c:142 +msgid "Remove speckle noise from the image" +msgstr "Resimden benekliği kaldır" + +#: ../plug-ins/common/despeckle.c:148 +msgid "Des_peckle..." +msgstr "Benekliği _kaldır..." + +#: ../plug-ins/common/despeckle.c:425 ../plug-ins/common/despeckle.c:645 +msgid "Despeckle" +msgstr "Beneksizleştirme" + +#: ../plug-ins/common/despeckle.c:454 +msgid "Median" +msgstr "Ortanca" + +#: ../plug-ins/common/despeckle.c:462 +msgid "_Adaptive" +msgstr "_Uyarlamalı" + +#: ../plug-ins/common/despeckle.c:472 +msgid "R_ecursive" +msgstr "Ö_zyineli" + +#: ../plug-ins/common/despeckle.c:493 ../plug-ins/common/edge-neon.c:732 +#: ../plug-ins/common/nl-filter.c:1089 ../plug-ins/common/nova.c:366 +#: ../plug-ins/common/unsharp-mask.c:680 ../plug-ins/common/whirl-pinch.c:589 +#: ../plug-ins/gradient-flare/gradient-flare.c:2758 +#: ../plug-ins/imagemap/imap_circle.c:278 +msgid "_Radius:" +msgstr "_Yarıçap:" + +#: ../plug-ins/common/despeckle.c:509 +msgid "_Black level:" +msgstr "_Kara düzey:" + +#: ../plug-ins/common/despeckle.c:525 +msgid "_White level:" +msgstr "_Ak düzey:" + +#: ../plug-ins/common/destripe.c:103 +msgid "Remove vertical stripe artifacts from the image" +msgstr "Resimden, dikey çizgisel bozuklukları temizle" + +#: ../plug-ins/common/destripe.c:109 +msgid "Des_tripe..." +msgstr "Çiz_gisizleştir..." + +#: ../plug-ins/common/destripe.c:272 +msgid "Destriping" +msgstr "Şeritsizleştirme" + +#: ../plug-ins/common/destripe.c:438 +msgid "Destripe" +msgstr "Çizgisizleştir" + +#: ../plug-ins/common/destripe.c:473 ../plug-ins/common/file-html-table.c:595 +#: ../plug-ins/common/file-ps.c:3173 ../plug-ins/common/file-ps.c:3382 +#: ../plug-ins/common/file-raw.c:1058 ../plug-ins/common/smooth-palette.c:436 +#: ../plug-ins/common/tile-paper.c:302 ../plug-ins/common/tile.c:431 +#: ../plug-ins/imagemap/imap_cmd_guides.c:165 +#: ../plug-ins/imagemap/imap_rectangle.c:403 +#: ../plug-ins/print/print-page-layout.c:252 +msgid "_Width:" +msgstr "_Genişlik:" + +#: ../plug-ins/common/destripe.c:484 +msgid "Create _histogram" +msgstr "_Histogram Oluştur" + +#: ../plug-ins/common/diffraction.c:167 +msgid "Generate diffraction patterns" +msgstr "Kırınım desenleri üret" + +#: ../plug-ins/common/diffraction.c:172 +msgid "_Diffraction Patterns..." +msgstr "_Kırınım Desenleri..." + +#: ../plug-ins/common/diffraction.c:330 +msgid "Creating diffraction pattern" +msgstr "Kırınım deseni oluşturuluyor" + +#: ../plug-ins/common/diffraction.c:434 +msgid "Diffraction Patterns" +msgstr "Kırınım desenleri" + +#: ../plug-ins/common/diffraction.c:477 +#: ../plug-ins/map-object/map-object-ui.c:1388 +msgid "_Preview!" +msgstr "Ön_izleme" + +#: ../plug-ins/common/diffraction.c:527 +msgid "Frequencies" +msgstr "Sıklıklar" + +#: ../plug-ins/common/diffraction.c:565 +msgid "Contours" +msgstr "Çevre çizgileri" + +#: ../plug-ins/common/diffraction.c:603 +msgid "Sharp Edges" +msgstr "Keskin Kıyılar" + +#: ../plug-ins/common/diffraction.c:615 ../plug-ins/common/softglow.c:683 +#: ../plug-ins/flame/flame.c:1081 +msgid "_Brightness:" +msgstr "_Parlaklık:" + +#: ../plug-ins/common/diffraction.c:624 +msgid "Sc_attering:" +msgstr "_Dağılma:" + +#: ../plug-ins/common/diffraction.c:633 +msgid "Po_larization:" +msgstr "_Kutuplama" + +#: ../plug-ins/common/diffraction.c:641 +msgid "Other Options" +msgstr "Diğer Seçenekler" + +#: ../plug-ins/common/displace.c:142 +msgid "_X displacement" +msgstr "_X kovma" + +#: ../plug-ins/common/displace.c:142 +msgid "_Pinch" +msgstr "Tutam:" + +#: ../plug-ins/common/displace.c:143 +msgid "_Y displacement" +msgstr "_Y kovma" + +#: ../plug-ins/common/displace.c:143 +msgid "_Whirl" +msgstr "_Sarmal" + +#: ../plug-ins/common/displace.c:169 +msgid "Displace pixels as indicated by displacement maps" +msgstr "Kovma eşleminde gösterildiği gibi benekleri kov" + +#: ../plug-ins/common/displace.c:179 +msgid "_Displace..." +msgstr "_Yerini değiştir..." + +#: ../plug-ins/common/displace.c:290 +msgid "Displacing" +msgstr "Kovma" + +#: ../plug-ins/common/displace.c:326 +msgid "Displace" +msgstr "Yerini değiştir" + +#. X options +#: ../plug-ins/common/displace.c:362 +msgid "_X displacement:" +msgstr "_X uzaklığı:" + +#. Y Options +#: ../plug-ins/common/displace.c:409 +msgid "_Y displacement:" +msgstr "_Y uzaklığı:" + +#: ../plug-ins/common/displace.c:459 +msgid "Displacement Mode" +msgstr "Kovma Kipi" + +#: ../plug-ins/common/displace.c:462 +msgid "_Cartesian" +msgstr "_Kartezyen" + +#: ../plug-ins/common/displace.c:463 +msgid "_Polar" +msgstr "_Kutupsal" + +#: ../plug-ins/common/displace.c:468 +msgid "Edge Behavior" +msgstr "Kenar Davranışı" + +#: ../plug-ins/common/displace.c:474 ../plug-ins/common/edge.c:722 +#: ../plug-ins/common/ripple.c:565 ../plug-ins/common/waves.c:281 +msgid "_Smear" +msgstr "_Sıvama" + +#: ../plug-ins/common/displace.c:476 ../plug-ins/common/edge.c:735 +#: ../plug-ins/common/fractal-trace.c:740 ../plug-ins/common/newsprint.c:398 +msgid "_Black" +msgstr "_Siyah" + +#: ../plug-ins/common/edge-dog.c:135 +msgid "Edge detection with control of edge thickness" +msgstr "Kenar denetimi ile kenar algılama kalınlığı" + +#: ../plug-ins/common/edge-dog.c:142 +msgid "_Difference of Gaussians..." +msgstr "Gaussian _Farkı..." + +#: ../plug-ins/common/edge-dog.c:245 ../plug-ins/common/edge-dog.c:302 +msgid "DoG Edge Detect" +msgstr "DoG Kenar Algılayıcı" + +#: ../plug-ins/common/edge-dog.c:331 +msgid "Smoothing Parameters" +msgstr "Düzleştirme Değiştirgeleri" + +#: ../plug-ins/common/edge-dog.c:345 +msgid "_Radius 1:" +msgstr "_Yarıçap 1:" + +#: ../plug-ins/common/edge-dog.c:349 +msgid "R_adius 2:" +msgstr "Y_arıçap 2:" + +#: ../plug-ins/common/edge-dog.c:372 ../plug-ins/gimpressionist/paper.c:167 +msgid "_Invert" +msgstr "_Tersine Çevir" + +#: ../plug-ins/common/edge-laplace.c:75 +msgid "High-resolution edge detection" +msgstr "Yüksek çözünürlüklü kenar tespit etme" + +#: ../plug-ins/common/edge-laplace.c:85 +msgid "_Laplace" +msgstr "_Laplace" + +#: ../plug-ins/common/edge-laplace.c:243 ../plug-ins/common/edge.c:673 +msgid "Laplace" +msgstr "Laplace" + +#: ../plug-ins/common/edge-laplace.c:321 +msgid "Cleanup" +msgstr "Temizle" + +#: ../plug-ins/common/edge-neon.c:134 +msgid "Simulate the glowing boundary of a neon light" +msgstr "Neon ışığın parıltı sınırını benzetim yap" + +#: ../plug-ins/common/edge-neon.c:139 +msgid "_Neon..." +msgstr "_Neon..." + +#: ../plug-ins/common/edge-neon.c:211 +msgid "Neon" +msgstr "Neon" + +#: ../plug-ins/common/edge-neon.c:695 +msgid "Neon Detection" +msgstr "Neon Algılama" + +#: ../plug-ins/common/edge-neon.c:747 ../plug-ins/common/unsharp-mask.c:693 +msgid "_Amount:" +msgstr "_Miktar:" + +#: ../plug-ins/common/edge-sobel.c:108 +msgid "Specialized direction-dependent edge detection" +msgstr "Özelleştirilmiş, yön tabanlı kenar tespit etme" + +#: ../plug-ins/common/edge-sobel.c:121 +msgid "_Sobel..." +msgstr "_Çizimleştir..." + +#: ../plug-ins/common/edge-sobel.c:231 +msgid "Sobel Edge Detection" +msgstr "Sobel Kenar Algılama" + +#: ../plug-ins/common/edge-sobel.c:260 +msgid "Sobel _horizontally" +msgstr "Ufki" + +#: ../plug-ins/common/edge-sobel.c:272 +msgid "Sobel _vertically" +msgstr "Dikey çizimleştir" + +#: ../plug-ins/common/edge-sobel.c:284 +msgid "_Keep sign of result (one direction only)" +msgstr "_Sonucun izini koru (sadece tek yön)" + +#: ../plug-ins/common/edge-sobel.c:370 +msgid "Sobel edge detecting" +msgstr "Sobel kenar algılanıyor" + +#: ../plug-ins/common/edge.c:152 +msgid "Several simple methods for detecting edges" +msgstr "Kenar tespiti için bir kaç basit yöntem" + +#: ../plug-ins/common/edge.c:157 +msgid "_Edge..." +msgstr "_Kenar..." + +#: ../plug-ins/common/edge.c:229 +msgid "Edge detection" +msgstr "Kenar tespiti" + +#: ../plug-ins/common/edge.c:633 +msgid "Edge Detection" +msgstr "Kenar Tespiti" + +#: ../plug-ins/common/edge.c:668 +msgid "Sobel" +msgstr "Çizimleştir" + +#: ../plug-ins/common/edge.c:669 +msgid "Prewitt compass" +msgstr "Prewitt pusulası" + +#: ../plug-ins/common/edge.c:670 ../plug-ins/common/sinus.c:904 +msgid "Gradient" +msgstr "Renk Geçişi" + +#: ../plug-ins/common/edge.c:671 +msgid "Roberts" +msgstr "Roberts" + +#: ../plug-ins/common/edge.c:672 +msgid "Differential" +msgstr "Farklı Özellik" + +#: ../plug-ins/common/edge.c:682 +msgid "_Algorithm:" +msgstr "_Algoritma:" + +#: ../plug-ins/common/edge.c:690 +msgid "A_mount:" +msgstr "N_icelik:" + +#: ../plug-ins/common/emboss.c:124 +msgid "Simulate an image created by embossing" +msgstr "Basarak oluşturulan sahte görüntü" + +#: ../plug-ins/common/emboss.c:130 +msgid "_Emboss..." +msgstr "_Kabartma..." + +#: ../plug-ins/common/emboss.c:384 ../plug-ins/common/emboss.c:446 +msgid "Emboss" +msgstr "Kabartma" + +#: ../plug-ins/common/emboss.c:474 +msgid "Function" +msgstr "İşlev" + +#: ../plug-ins/common/emboss.c:478 +msgid "_Bumpmap" +msgstr "_Renkli Kabartma" + +#: ../plug-ins/common/emboss.c:479 +msgid "_Emboss" +msgstr "_Kabartma" + +#: ../plug-ins/common/emboss.c:511 +msgid "E_levation:" +msgstr "Y_ükseltme" + +#: ../plug-ins/common/engrave.c:101 +msgid "Simulate an antique engraving" +msgstr "Sahte antika oyma" + +#: ../plug-ins/common/engrave.c:106 +msgid "En_grave..." +msgstr "Oy_ma..." + +#: ../plug-ins/common/engrave.c:180 +msgid "Engraving" +msgstr "Oyma" + +#: ../plug-ins/common/engrave.c:209 +msgid "Engrave" +msgstr "Oyma" + +#: ../plug-ins/common/engrave.c:244 ../plug-ins/common/file-html-table.c:611 +#: ../plug-ins/common/file-ps.c:3183 ../plug-ins/common/file-ps.c:3391 +#: ../plug-ins/common/file-raw.c:1071 ../plug-ins/common/film.c:1003 +#: ../plug-ins/common/smooth-palette.c:441 ../plug-ins/common/tile-paper.c:313 +#: ../plug-ins/common/tile.c:435 ../plug-ins/imagemap/imap_cmd_guides.c:175 +#: ../plug-ins/imagemap/imap_rectangle.c:410 +#: ../plug-ins/print/print-page-layout.c:254 +msgid "_Height:" +msgstr "_Yükseklik:" + +#: ../plug-ins/common/engrave.c:255 +msgid "_Limit line width" +msgstr "Hat genişliği _sınırı" + +#: ../plug-ins/common/file-aa.c:98 +msgid "ASCII art" +msgstr "ASCII sanat" + +#. Create the actual window. +#: ../plug-ins/common/file-aa.c:349 +msgid "Save as Text" +msgstr "Metin Olarak Kaydet" + +#: ../plug-ins/common/file-aa.c:371 +msgid "_Format:" +msgstr "_Biçim:" + +#: ../plug-ins/common/file-cel.c:111 ../plug-ins/common/file-cel.c:129 +msgid "KISS CEL" +msgstr "KISS CEL" + +#: ../plug-ins/common/file-cel.c:191 +msgid "Load KISS Palette" +msgstr "KISS Paletini Yükle" + +#. max. rows allocated +#. column, highest column ever used +#. -1 assume fsel is not available (and not attached to any drawable) +#. -1 assume there is no floating selection +#: ../plug-ins/common/file-cel.c:317 ../plug-ins/common/file-dicom.c:330 +#: ../plug-ins/common/file-gbr.c:366 ../plug-ins/common/file-gif-load.c:345 +#: ../plug-ins/common/file-gih.c:667 ../plug-ins/common/file-pat.c:335 +#: ../plug-ins/common/file-pcx.c:366 ../plug-ins/common/file-pdf.c:586 +#: ../plug-ins/common/file-pix.c:348 ../plug-ins/common/file-png.c:728 +#: ../plug-ins/common/file-pnm.c:499 ../plug-ins/common/file-ps.c:1042 +#: ../plug-ins/common/file-raw.c:673 ../plug-ins/common/file-sunras.c:486 +#: ../plug-ins/common/file-tga.c:447 ../plug-ins/common/file-tiff-load.c:603 +#: ../plug-ins/common/file-wmf.c:994 ../plug-ins/common/file-xbm.c:741 +#: ../plug-ins/common/file-xpm.c:352 ../plug-ins/common/file-xwd.c:520 +#: ../plug-ins/file-bmp/bmp-read.c:161 ../plug-ins/file-faxg3/faxg3.c:217 +#: ../plug-ins/file-fli/fli-gimp.c:502 ../plug-ins/file-ico/ico-load.c:654 +#: ../plug-ins/file-jpeg/jpeg-load.c:115 ../plug-ins/file-psd/psd-load.c:136 +#: ../plug-ins/file-sgi/sgi.c:330 ../plug-ins/file-xjt/xjt.c:3363 +#, c-format +msgid "Opening '%s'" +msgstr "'%s' açılıyor" + +#: ../plug-ins/common/file-cel.c:354 +msgid "Can't create a new image" +msgstr "Yeni görüntü oluşturulamadı" + +#: ../plug-ins/common/file-cel.c:443 +#, c-format +msgid "Unsupported bit depth (%d)!" +msgstr "Desteklenmeyen bit derinliği (%d)!" + +#. init the progress meter +#. And let's begin the progress +#: ../plug-ins/common/file-cel.c:588 ../plug-ins/common/file-gbr.c:652 +#: ../plug-ins/common/file-gif-save.c:768 ../plug-ins/common/file-gih.c:1280 +#: ../plug-ins/common/file-html-table.c:256 ../plug-ins/common/file-pat.c:481 +#: ../plug-ins/common/file-pcx.c:634 ../plug-ins/common/file-pix.c:529 +#: ../plug-ins/common/file-png.c:1278 ../plug-ins/common/file-pnm.c:982 +#: ../plug-ins/common/file-ps.c:1218 ../plug-ins/common/file-sunras.c:568 +#: ../plug-ins/common/file-tga.c:1175 ../plug-ins/common/file-tiff-save.c:693 +#: ../plug-ins/common/file-xbm.c:1039 ../plug-ins/common/file-xpm.c:637 +#: ../plug-ins/common/file-xwd.c:619 ../plug-ins/file-bmp/bmp-write.c:307 +#: ../plug-ins/file-fits/fits.c:481 ../plug-ins/file-fli/fli-gimp.c:718 +#: ../plug-ins/file-ico/ico-save.c:1002 ../plug-ins/file-jpeg/jpeg-save.c:282 +#: ../plug-ins/file-psd/psd-save.c:1640 ../plug-ins/file-sgi/sgi.c:574 +#: ../plug-ins/file-xjt/xjt.c:1710 +#, c-format +msgid "Saving '%s'" +msgstr "'%s' kaydediliyor" + +#: ../plug-ins/common/file-compressor.c:160 +msgid "gzip archive" +msgstr "gzip arşivi" + +#: ../plug-ins/common/file-compressor.c:181 +msgid "bzip archive" +msgstr "bzip arşivi" + +#: ../plug-ins/common/file-compressor.c:390 +msgid "No sensible file extension, saving as compressed XCF." +msgstr "Anlaşılmaz dosya uzantısı,sıkıştırılmış XCF olarak kaydet." + +#: ../plug-ins/common/file-compressor.c:572 +msgid "No sensible file extension, attempting to load with file magic." +msgstr "Uyumlu dosya uzantısı bulunamadı, File-Magic ile yükleme deneniyor." + +#: ../plug-ins/common/file-csource.c:112 +msgid "C source code" +msgstr "C kaynak kodu" + +#: ../plug-ins/common/file-csource.c:660 +msgid "Save as C-Source" +msgstr "C Kaynak Kodu olarak Kaydet" + +#: ../plug-ins/common/file-csource.c:691 +msgid "_Prefixed name:" +msgstr "_Önekli ad:" + +#: ../plug-ins/common/file-csource.c:700 +msgid "Co_mment:" +msgstr "_Açıklama:" + +#. Use Comment +#. +#: ../plug-ins/common/file-csource.c:707 +msgid "_Save comment to file" +msgstr "Yorumu dosyaya _kaydet" + +#. GLib types +#. +#: ../plug-ins/common/file-csource.c:719 +msgid "_Use GLib types (guint8*)" +msgstr "GLib türleri kullan (guint8*)" + +#. Use Macros +#. +#: ../plug-ins/common/file-csource.c:731 +msgid "Us_e macros instead of struct" +msgstr "Yapı birimi yerine iriller kullan" + +#. Use RLE +#. +#: ../plug-ins/common/file-csource.c:743 +msgid "Use _1 byte Run-Length-Encoding" +msgstr "Kulan _1 bayt Çalışıtr-Uzunluk-Kodlama" + +#. Alpha +#. +#: ../plug-ins/common/file-csource.c:755 +msgid "Sa_ve alpha channel (RGBA/RGB)" +msgstr "Görünür kanalını kay_det (RGBA/RGB)" + +#: ../plug-ins/common/file-csource.c:773 +msgid "Op_acity:" +msgstr "_Işık geçirmezlik:" + +#: ../plug-ins/common/file-desktop-link.c:83 +msgid "Desktop Link" +msgstr "Masaüstü Bağlantısı" + +#: ../plug-ins/common/file-desktop-link.c:173 +#, c-format +msgid "Error loading desktop file '%s': %s" +msgstr "Masaüstü dosyası yüklemede '%s' sorunu: %s" + +#: ../plug-ins/common/file-dicom.c:146 +msgid "DICOM image" +msgstr "DICOM görüntüsü" + +#: ../plug-ins/common/file-dicom.c:171 +msgid "Digital Imaging and Communications in Medicine image" +msgstr "Tıp fikrinde Dijital Görüntüleme ve İletişimleri" + +#: ../plug-ins/common/file-dicom.c:352 +#, c-format +msgid "'%s' is not a DICOM file." +msgstr "'%s' DICOM dosyası değil." + +#: ../plug-ins/common/file-dicom.c:769 ../plug-ins/common/file-pcx.c:666 +#: ../plug-ins/common/file-pnm.c:967 +msgid "Cannot save images with alpha channel." +msgstr "Görünür kanalı ile görüntüler kaydedilemez." + +#: ../plug-ins/common/file-dicom.c:784 ../plug-ins/common/file-ps.c:1203 +#: ../plug-ins/common/file-xwd.c:604 ../plug-ins/file-fits/fits.c:466 +#: ../plug-ins/file-xjt/xjt.c:1705 +msgid "Cannot operate on unknown image types." +msgstr "Türü tanınmadığı için görüntü üzerinde işlem yapılamadı" + +#: ../plug-ins/common/file-gbr.c:154 ../plug-ins/common/file-gbr.c:175 +msgid "GIMP brush" +msgstr "GIMP fırçası" + +#: ../plug-ins/common/file-gbr.c:392 ../plug-ins/common/file-pat.c:411 +#, c-format +msgid "Invalid header data in '%s': width=%lu, height=%lu, bytes=%lu" +msgstr "" +"'%s' içinde geçersiz başlık verisi: genişlik=%lu, yükseklik=%lu, bayt=%lu" + +#: ../plug-ins/common/file-gbr.c:416 ../plug-ins/common/file-gbr.c:428 +msgid "Unsupported brush format" +msgstr "Desteklenmeyen fırça biçimi" + +#: ../plug-ins/common/file-gbr.c:440 +#, c-format +msgid "Error in GIMP brush file '%s'" +msgstr "GIMP fırça dosyası '%s'de sorun" + +#: ../plug-ins/common/file-gbr.c:448 +#, c-format +msgid "Invalid UTF-8 string in brush file '%s'." +msgstr "'%s' fırça dosyası içinde geçersiz UTF-8 dizgisi." + +#: ../plug-ins/common/file-gbr.c:454 ../plug-ins/common/file-gih.c:510 +#: ../plug-ins/common/file-gih.c:1173 +#: ../plug-ins/gradient-flare/gradient-flare.c:3063 +msgid "Unnamed" +msgstr "Isimsiz" + +#: ../plug-ins/common/file-gbr.c:637 +msgid "GIMP brushes are either GRAYSCALE or RGBA" +msgstr "GIMP fırçaları ya GRİTONLAMALI veya RGBA" + +#: ../plug-ins/common/file-gbr.c:735 +msgid "Save as Brush" +msgstr "Fırça Olarak Kaydet" + +#. attach labels +#: ../plug-ins/common/file-gbr.c:762 ../plug-ins/common/grid.c:790 +msgid "Spacing:" +msgstr "Boşluk:" + +#: ../plug-ins/common/file-gbr.c:773 ../plug-ins/common/file-gih.c:925 +#: ../plug-ins/common/file-pat.c:571 ../plug-ins/gimpressionist/presets.c:666 +msgid "Description:" +msgstr "Açıklama:" + +#: ../plug-ins/common/file-gif-load.c:142 +#: ../plug-ins/common/file-gif-save.c:168 +msgid "GIF image" +msgstr "GIF görüntüsü" + +#: ../plug-ins/common/file-gif-load.c:357 +msgid "This is not a GIF file" +msgstr "Bu GIF dosyası değil" + +#: ../plug-ins/common/file-gif-load.c:396 +msgid "Non-square pixels. Image might look squashed." +msgstr "Kare olmayan benekler. Resim düzgün görünmeyebilir." + +#: ../plug-ins/common/file-gif-load.c:913 +#, c-format +msgid "Background (%d%s)" +msgstr "Arkaplan (%d%s)" + +#: ../plug-ins/common/file-gif-load.c:936 +#, c-format +msgid "Opening '%s' (frame %d)" +msgstr "'%s' açılıyor (çerçeve %d)" + +#: ../plug-ins/common/file-gif-load.c:965 ../plug-ins/common/iwarp.c:791 +#: ../plug-ins/common/iwarp.c:826 +#, c-format +msgid "Frame %d" +msgstr "Çerçeve %d" + +#: ../plug-ins/common/file-gif-load.c:967 +#, c-format +msgid "Frame %d (%d%s)" +msgstr "Çerçeve %d (%d%s)" + +#: ../plug-ins/common/file-gif-load.c:998 +#, c-format +msgid "" +"GIF: Undocumented GIF composite type %d is not handled. Animation might not " +"play or re-save perfectly." +msgstr "" +"GIF: Belgelenmemiş GIF %d düzenleme biçimi kullanılamadı. Animasyon düzgün " +"oynatılamayabilir veya kaydedilemeyebilir." + +#: ../plug-ins/common/file-gif-save.c:447 +msgid "Couldn't simply reduce colors further. Saving as opaque." +msgstr "Renkleri daha fazla düşürülemiyor. Opak olarak kaydediyor." + +#: ../plug-ins/common/file-gif-save.c:562 +#, c-format +msgid "" +"Unable to save '%s'. The GIF file format does not support images that are " +"more than %d pixels wide or tall." +msgstr "" +"'%s' kaydedilemedi. GIF dosya biçimi, %d benekten daha geniş ya da uzun olan " +"resimleri desteklemez." + +#: ../plug-ins/common/file-gif-save.c:673 +msgid "" +"The GIF format only supports comments in 7bit ASCII encoding. No comment is " +"saved." +msgstr "" +"GIF dosya biçimi yorumları sadece 7bit ASCII kodlamasında destekler. Hiçbir " +"yorum kaydedilmedi." + +#: ../plug-ins/common/file-gif-save.c:732 +msgid "" +"Cannot save RGB color images. Convert to indexed color or grayscale first." +msgstr "" +"RGB renkli resimleri kaydedilemedi. Öncelikle ya sıralanmış ya da gri " +"tonlamaları renklere çevirin." + +#: ../plug-ins/common/file-gif-save.c:910 +msgid "Delay inserted to prevent evil CPU-sucking animation." +msgstr "Aşırı işlemci yüklemesini önlemek için ekli olanı geciktir." + +#: ../plug-ins/common/file-gif-save.c:950 +msgid "" +"The image you are trying to save as a GIF contains layers which extend " +"beyond the actual borders of the image." +msgstr "" +"GIF olarak saklamaya çalıştığınız resim normal sınırlarını aşan katmanlar " +"içermektedir." + +#: ../plug-ins/common/file-gif-save.c:967 +msgid "" +"The GIF file format does not allow this. You may choose whether to crop all " +"of the layers to the image borders, or cancel this save." +msgstr "" +"GIF dosya biçimi buna izin vermemektedir. Bütün katmanları resim sınırlarına " +"kırpabilir ya da kaydetmekten vazgeçebilirsiniz." + +#: ../plug-ins/common/file-gif-save.c:1008 +msgid "Save as GIF" +msgstr "GIF olarak kaydet" + +#. regular gif parameter settings +#: ../plug-ins/common/file-gif-save.c:1030 +msgid "GIF Options" +msgstr "GIF Seçenekleri" + +#: ../plug-ins/common/file-gif-save.c:1036 +msgid "I_nterlace" +msgstr "B_irleştirmek" + +#: ../plug-ins/common/file-gif-save.c:1052 +msgid "_GIF comment:" +msgstr "_GIF yorumu:" + +#. additional animated gif parameter settings +#: ../plug-ins/common/file-gif-save.c:1110 +msgid "Animated GIF Options" +msgstr "Canlandırmalı GIF Seçenekleri" + +#: ../plug-ins/common/file-gif-save.c:1116 +msgid "_Loop forever" +msgstr "Sonsuz _döngü" + +#: ../plug-ins/common/file-gif-save.c:1129 +msgid "_Delay between frames where unspecified:" +msgstr "_Belirtilmemiş kareler arasında gecikme uygula:" + +#: ../plug-ins/common/file-gif-save.c:1144 ../plug-ins/common/file-mng.c:1507 +msgid "milliseconds" +msgstr "milisaniye" + +#: ../plug-ins/common/file-gif-save.c:1154 +msgid "_Frame disposal where unspecified:" +msgstr "_Belirtilmemiş kareleri çıkar:" + +#: ../plug-ins/common/file-gif-save.c:1158 +msgid "I don't care" +msgstr "Umurumda değil" + +#: ../plug-ins/common/file-gif-save.c:1160 +msgid "Cumulative layers (combine)" +msgstr "Birikimli katmanlar (birleştirme)" + +#: ../plug-ins/common/file-gif-save.c:1162 +msgid "One frame per layer (replace)" +msgstr "Katman başına bir çerçeve (değiştirme)" + +#. The "Always use default values" toggles +#: ../plug-ins/common/file-gif-save.c:1178 +msgid "_Use delay entered above for all frames" +msgstr "_Yukarıda girilen gecikmeyi tüm karelere uygula" + +#: ../plug-ins/common/file-gif-save.c:1188 +msgid "U_se disposal entered above for all frames" +msgstr "Üstte girilen düzeni tüm karelerde k_ullan" + +#: ../plug-ins/common/file-gif-save.c:2341 +msgid "Error writing output file." +msgstr "Çıktı dosyası yazılırken hata." + +#: ../plug-ins/common/file-gif-save.c:2411 +#, c-format +msgid "The default comment is limited to %d characters." +msgstr "Varsayılan açıklama %d karakterle sınırlıdır." + +#: ../plug-ins/common/file-gih.c:209 ../plug-ins/common/file-gih.c:230 +msgid "GIMP brush (animated)" +msgstr "GIMP fırça (hareketli)" + +#: ../plug-ins/common/file-gih.c:324 +#, c-format +msgid "Layer %s doesn't have an alpha channel, skipped" +msgstr "%s katmanı görünür kanalına sahip değil, atlanıyor" + +#: ../plug-ins/common/file-gih.c:503 +msgid "Error in GIMP brush pipe file." +msgstr "GIMP fırça boru dosyasında hata." + +#: ../plug-ins/common/file-gih.c:569 +msgid "GIMP brush file appears to be corrupted." +msgstr "Hasarlı GIMP fırça dosyası." + +#: ../plug-ins/common/file-gih.c:718 +msgid "Couldn't load one brush in the pipe, giving up." +msgstr "Borudaki bir fırça yüklenemedi, vazgeçiliyor." + +#: ../plug-ins/common/file-gih.c:881 +msgid "Save as Brush Pipe" +msgstr "Fırça Borusu olarak kaydet." + +#: ../plug-ins/common/file-gih.c:911 +msgid "Spacing (percent):" +msgstr "Boşluk (yüzde):" + +#: ../plug-ins/common/file-gih.c:978 +msgid "Pixels" +msgstr "Piksel" + +#: ../plug-ins/common/file-gih.c:983 +msgid "Cell size:" +msgstr "Hücre boyutu:" + +#: ../plug-ins/common/file-gih.c:995 +msgid "Number of cells:" +msgstr "Hücre sayısı:" + +#: ../plug-ins/common/file-gih.c:1020 +msgid " Rows of " +msgstr " Dizisi " + +#: ../plug-ins/common/file-gih.c:1032 +msgid " Columns on each layer" +msgstr " Her katman üstündeki sütunlar" + +#: ../plug-ins/common/file-gih.c:1036 +msgid " (Width Mismatch!) " +msgstr " (Uyuşmayan Genişlik!) " + +#: ../plug-ins/common/file-gih.c:1040 +msgid " (Height Mismatch!) " +msgstr " (Uyuşmayan Yükseklik!) " + +#: ../plug-ins/common/file-gih.c:1045 +msgid "Display as:" +msgstr "Farklı göster:" + +#: ../plug-ins/common/file-gih.c:1054 +msgid "Dimension:" +msgstr "Boyut:" + +#: ../plug-ins/common/file-gih.c:1129 +msgid "Ranks:" +msgstr "Sıralamalar:" + +#: ../plug-ins/common/file-header.c:77 +msgid "C source code header" +msgstr "C kaynak kod başlığı" + +#: ../plug-ins/common/file-html-table.c:156 +msgid "HTML table" +msgstr "HTML tablosu" + +#: ../plug-ins/common/file-html-table.c:409 +msgid "Save as HTML table" +msgstr "HTML tablosu olarak kaydet" + +#: ../plug-ins/common/file-html-table.c:436 +msgid "Warning" +msgstr "Uyarı" + +#: ../plug-ins/common/file-html-table.c:447 +msgid "" +"You are about to create a huge\n" +"HTML file which will most likely\n" +"crash your browser." +msgstr "" +"Tarayıcınızın çökmesine neden\n" +"olacak büyük bir HTML dosyası\n" +"yaratmak üzeresiniz." + +#. HTML Page Options +#: ../plug-ins/common/file-html-table.c:456 +msgid "HTML Page Options" +msgstr "HTML Sayfa Seçenekleri" + +#: ../plug-ins/common/file-html-table.c:463 +msgid "_Generate full HTML document" +msgstr "_Tam HTML belgesi oluştur" + +#: ../plug-ins/common/file-html-table.c:469 +msgid "" +"If checked GTM will output a full HTML document with , , etc. " +"tags instead of just the table html." +msgstr "" +"Eğer GTM seçerseniz, belge tablo kodlarının yanında , , gibi " +"html kodları ile birlikte aktarılacaktır." + +#. HTML Table Creation Options +#: ../plug-ins/common/file-html-table.c:482 +msgid "Table Creation Options" +msgstr "Tablo Oluşturma Seçenekleri" + +#: ../plug-ins/common/file-html-table.c:490 +msgid "_Use cellspan" +msgstr "_Hücre genişliğini kullan" + +#: ../plug-ins/common/file-html-table.c:496 +msgid "" +"If checked GTM will replace any rectangular sections of identically colored " +"blocks with one large cell with ROWSPAN and COLSPAN values." +msgstr "" +"Eğer denetlenen GTM, ROWSPAN ve COLSPAN değelerini alan bir geniş hücre ile " +"aynı şekilde boyanmış engelleri olan herhangi bir bölümlenmiş dikdörtgen " +"yerine geçecekse." + +#: ../plug-ins/common/file-html-table.c:505 +msgid "Co_mpress TD tags" +msgstr "TD etiketlerini sı_Kıştır" + +#: ../plug-ins/common/file-html-table.c:511 +msgid "" +"Checking this tag will cause GTM to leave no whitespace between the TD tags " +"and the cellcontent. This is only necessary for pixel level positioning " +"control." +msgstr "" +"Bu etiketi denetlemek, GTM'nin TD etiketleri ve hücre içeriği arasında " +"beyazboşluk bırakmamasına neden olacaktır. Bu yalnızca benek konumlandırması " +"denetimi için gereklidir." + +#: ../plug-ins/common/file-html-table.c:521 +msgid "C_aption" +msgstr "Ba_şlık" + +#: ../plug-ins/common/file-html-table.c:527 +msgid "Check if you would like to have the table captioned." +msgstr "Başlıklı tablo oluşturmak istiyorsanız işaretleyin." + +#: ../plug-ins/common/file-html-table.c:542 +msgid "The text for the table caption." +msgstr "Çizelge başlığı için metin." + +#: ../plug-ins/common/file-html-table.c:555 +msgid "C_ell content:" +msgstr "H_ücre içeriği:" + +#: ../plug-ins/common/file-html-table.c:559 +msgid "The text to go into each cell." +msgstr "Her hücreye konacak metin." + +#. HTML Table Options +#: ../plug-ins/common/file-html-table.c:569 +msgid "Table Options" +msgstr "Tablo Seçenekleri" + +#: ../plug-ins/common/file-html-table.c:580 +msgid "_Border:" +msgstr "_Kenarlık:" + +#: ../plug-ins/common/file-html-table.c:584 +msgid "The number of pixels in the table border." +msgstr "Tablo kenarlıklarındaki benek sayısı" + +#: ../plug-ins/common/file-html-table.c:599 +msgid "The width for each table cell. Can be a number or a percent." +msgstr "Her tablo hücresi için genişlik. Sayı veya yüzde olabilir." + +#: ../plug-ins/common/file-html-table.c:615 +msgid "The height for each table cell. Can be a number or a percent." +msgstr "Her tablo hücresi için yükseklik. Sayı veya yüzde olabilir." + +#: ../plug-ins/common/file-html-table.c:626 +msgid "Cell-_padding:" +msgstr "Hücre-_dolgusu:" + +#: ../plug-ins/common/file-html-table.c:630 +msgid "The amount of cellpadding." +msgstr "Hücredolgusu miktarı." + +#: ../plug-ins/common/file-html-table.c:639 +msgid "Cell-_spacing:" +msgstr "Hücre-_aralığı:" + +#: ../plug-ins/common/file-html-table.c:643 +msgid "The amount of cellspacing." +msgstr "Hücre boşluğunun miktarı." + +#. Inform the user that we couldn't losslessly save the +#. * transparency & just use the full palette +#: ../plug-ins/common/file-mng.c:498 ../plug-ins/common/file-png.c:1761 +msgid "Couldn't losslessly save transparency, saving opacity instead." +msgstr "" +"Kayıp olmadan saydamlık kaydedilemedi, bunun yerine opaklık kaydediliyor." + +#: ../plug-ins/common/file-mng.c:1287 +msgid "Save as MNG" +msgstr "MNG olarak kaydet" + +#: ../plug-ins/common/file-mng.c:1307 +msgid "MNG Options" +msgstr "MNG seçenekleri" + +#: ../plug-ins/common/file-mng.c:1313 +msgid "Interlace" +msgstr "birleştirmek" + +#: ../plug-ins/common/file-mng.c:1325 +msgid "Save background color" +msgstr "Artalan rengini kaydet" + +#: ../plug-ins/common/file-mng.c:1336 +msgid "Save gamma" +msgstr "Gamayı kaydet" + +#: ../plug-ins/common/file-mng.c:1346 +msgid "Save resolution" +msgstr "Çözünürlüğü kaydet" + +#: ../plug-ins/common/file-mng.c:1357 +msgid "Save creation time" +msgstr "Oluşturulma zamanını kaydet" + +#: ../plug-ins/common/file-mng.c:1376 +msgid "PNG" +msgstr "PNG" + +#: ../plug-ins/common/file-mng.c:1377 +msgid "JNG" +msgstr "JNG" + +#: ../plug-ins/common/file-mng.c:1380 +msgid "PNG + delta PNG" +msgstr "PNG + delta PNG" + +#: ../plug-ins/common/file-mng.c:1381 +msgid "JNG + delta PNG" +msgstr "JNG + delta PNG" + +#: ../plug-ins/common/file-mng.c:1382 +msgid "All PNG" +msgstr "Tüm PNG" + +#: ../plug-ins/common/file-mng.c:1383 +msgid "All JNG" +msgstr "Tüm JNG" + +#: ../plug-ins/common/file-mng.c:1395 +msgid "Default chunks type:" +msgstr "Varsayılan parçalrın türü:" + +#: ../plug-ins/common/file-mng.c:1398 +msgid "Combine" +msgstr "Birleştir" + +#: ../plug-ins/common/file-mng.c:1399 +msgid "Replace" +msgstr "Üstüne yaz" + +#: ../plug-ins/common/file-mng.c:1410 +msgid "Default frame disposal:" +msgstr "Varsayılan çerçeve düzeni:" + +#: ../plug-ins/common/file-mng.c:1422 +msgid "PNG compression level:" +msgstr "PNG sıkıştırma seviyesi:" + +#: ../plug-ins/common/file-mng.c:1430 ../plug-ins/common/file-png.c:1909 +msgid "Choose a high compression level for small file size" +msgstr "Küçük dosya boyutu için yüksek sıkıştırma düzeyi seçin" + +#: ../plug-ins/common/file-mng.c:1444 +msgid "JPEG compression quality:" +msgstr "JPEG sıkıştırma kalitesi:" + +#: ../plug-ins/common/file-mng.c:1461 +msgid "JPEG smoothing factor:" +msgstr "JPEG yumuşatma çarpanı:" + +#: ../plug-ins/common/file-mng.c:1471 +msgid "Animated MNG Options" +msgstr "Hareketli MNG Seçenekleri" + +#: ../plug-ins/common/file-mng.c:1477 +msgid "Loop" +msgstr "Döngü" + +#: ../plug-ins/common/file-mng.c:1491 +msgid "Default frame delay:" +msgstr "Öntanımlı çerçeve gecikmesi:" + +#: ../plug-ins/common/file-mng.c:1564 +msgid "MNG animation" +msgstr "MNG animasyonu" + +#: ../plug-ins/common/file-pat.c:123 ../plug-ins/common/file-pat.c:145 +msgid "GIMP pattern" +msgstr "GIMP deseni" + +#: ../plug-ins/common/file-pat.c:371 +#, c-format +msgid "Invalid UTF-8 string in pattern file '%s'." +msgstr "'%s' desen dosyası içinde geçersiz UTF-8 dizgisi." + +#: ../plug-ins/common/file-pat.c:543 +msgid "Save as Pattern" +msgstr "Desen olarak Kaydet" + +#: ../plug-ins/common/file-pcx.c:133 ../plug-ins/common/file-pcx.c:152 +msgid "ZSoft PCX image" +msgstr "ZSoft PCX görüntüsü" + +#: ../plug-ins/common/file-pcx.c:372 +#, c-format +msgid "Could not read header from '%s'" +msgstr "'%s' içindeki başlık okunamadı" + +#: ../plug-ins/common/file-pcx.c:382 +#, c-format +msgid "'%s' is not a PCX file" +msgstr "'%s' PCX dosyası değil" + +#: ../plug-ins/common/file-pcx.c:395 ../plug-ins/file-bmp/bmp-read.c:638 +#: ../plug-ins/file-psd/psd-load.c:302 +#, c-format +msgid "Unsupported or invalid image width: %d" +msgstr "Desteklenmeyen veya geçersiz görüntü genişliği: %d" + +#: ../plug-ins/common/file-pcx.c:400 ../plug-ins/file-bmp/bmp-read.c:644 +#: ../plug-ins/file-psd/psd-load.c:294 +#, c-format +msgid "Unsupported or invalid image height: %d" +msgstr "Desteklenmeyen veya geçersiz görüntü yüksekliği: %d" + +#: ../plug-ins/common/file-pcx.c:405 +msgid "Invalid number of bytes per line in PCX header" +msgstr "PCX başlığındaki satır başına baytların geçersiz sayısı" + +#: ../plug-ins/common/file-pcx.c:412 +#, c-format +msgid "Image dimensions too large: width %d x height %d" +msgstr "Görüntü boyutları çok büyük: genişlik %d x yükseklik %d" + +#: ../plug-ins/common/file-pcx.c:460 +msgid "Unusual PCX flavour, giving up" +msgstr "Beklenmedik PCX davranışı, vaz geçiliyor" + +#: ../plug-ins/common/file-pcx.c:683 +#, c-format +msgid "Invalid X offset: %d" +msgstr "Geçersiz X konumu: %d" + +#: ../plug-ins/common/file-pcx.c:689 +#, c-format +msgid "Invalid Y offset: %d" +msgstr "Geçersiz Y konumu: %d" + +#: ../plug-ins/common/file-pcx.c:695 +#, c-format +msgid "Right border out of bounds (must be < %d): %d" +msgstr "Sağ kenarlık sınırlamaların dışında (olmalı < %d): %d" + +#: ../plug-ins/common/file-pcx.c:702 +#, c-format +msgid "Bottom border out of bounds (must be < %d): %d" +msgstr "Alt kenarlık sınırlamaların dışında (olmalı < %d): %d" + +#: ../plug-ins/common/file-pcx.c:759 +#, c-format +msgid "Writing to file '%s' failed: %s" +msgstr "'%s' dosyasına yazılamadı: %s" + +#: ../plug-ins/common/file-pdf.c:288 +msgid "Portable Document Format" +msgstr "Taşınabilir Belge Biçimi" + +#: ../plug-ins/common/file-pdf.c:620 +#, c-format +msgid "%s-%s" +msgstr "%s-%s" + +#: ../plug-ins/common/file-pdf.c:622 ../plug-ins/common/file-ps.c:1125 +#, c-format +msgid "%s-pages" +msgstr "%s-sayfa" + +#: ../plug-ins/common/file-pdf.c:808 +msgid "Import from PDF" +msgstr "PDF'den al" + +#: ../plug-ins/common/file-pdf.c:813 ../plug-ins/common/file-ps.c:3102 +#: ../plug-ins/common/file-tiff-load.c:483 +msgid "_Import" +msgstr "İçe _Aktar" + +#: ../plug-ins/common/file-pdf.c:880 +msgid "_Width (pixels):" +msgstr "_Genişlik (benek):" + +#: ../plug-ins/common/file-pdf.c:881 +msgid "_Height (pixels):" +msgstr "_Yükseklik (benek):" + +#: ../plug-ins/common/file-pdf.c:883 +msgid "_Resolution:" +msgstr "_Çözünürlük:" + +#: ../plug-ins/common/file-pdf.c:1157 +#, c-format +msgid "pixels/%s" +msgstr "benek/%s" + +#: ../plug-ins/common/file-pix.c:142 ../plug-ins/common/file-pix.c:159 +msgid "Alias Pix image" +msgstr "Pix görüntüsü kısaltması" + +#: ../plug-ins/common/file-png.c:263 ../plug-ins/common/file-png.c:284 +#: ../plug-ins/common/file-png.c:304 ../plug-ins/common/file-png.c:321 +msgid "PNG image" +msgstr "PNG görüntüsü" + +#: ../plug-ins/common/file-png.c:628 +#, c-format +msgid "Error loading PNG file: %s" +msgstr "PNG dosyasında yükleme hatası: %s" + +#: ../plug-ins/common/file-png.c:703 +#, c-format +msgid "Error while reading '%s'. File corrupted?" +msgstr "'%s' okunurken hata oluştu. Bozuk dosya mı?" + +#: ../plug-ins/common/file-png.c:834 +#, c-format +msgid "Unknown color model in PNG file '%s'." +msgstr "PNG dosyası '%s' içinde bilinmeyen renk modeli." + +#: ../plug-ins/common/file-png.c:889 +msgid "" +"The PNG file specifies an offset that caused the layer to be positioned " +"outside the image." +msgstr "" +"Png dosyası bir göreli konum belirtir katmanın resimin dışında da " +"hizalanabilmesi için." + +#: ../plug-ins/common/file-png.c:1255 +#, c-format +msgid "Error while saving '%s'. Could not save image." +msgstr "'%s' kaydedilirken hata oluştu. Görüntü kaydedilemedi." + +#: ../plug-ins/common/file-png.c:1786 +msgid "Save as PNG" +msgstr "PNG olarak kaydet" + +#: ../plug-ins/common/file-png.c:1818 +msgid "_Interlacing (Adam7)" +msgstr "_Birleştirme (Adam 7)" + +#: ../plug-ins/common/file-png.c:1829 +msgid "Save _background color" +msgstr "_Artalan rengini kaydet" + +#: ../plug-ins/common/file-png.c:1837 +msgid "Save _gamma" +msgstr "_Gamayı kaydet" + +#: ../plug-ins/common/file-png.c:1847 +msgid "Save layer o_ffset" +msgstr "O_fset baskı tabakasını kaydet" + +#: ../plug-ins/common/file-png.c:1856 +msgid "Save _resolution" +msgstr "_Çözünürlüğü kaydet" + +#: ../plug-ins/common/file-png.c:1866 +msgid "Save creation _time" +msgstr "Oluşturma _zamanını kaydet" + +#: ../plug-ins/common/file-png.c:1875 +msgid "Save comme_nt" +msgstr "Açıkla_mayı kaydet" + +#: ../plug-ins/common/file-png.c:1891 +msgid "Save color _values from transparent pixels" +msgstr "Saydam beneklerden renk _değerlerini kaydet" + +#: ../plug-ins/common/file-png.c:1905 +msgid "Co_mpression level:" +msgstr "Sı_kıştırma seviyesi:" + +#: ../plug-ins/common/file-png.c:1923 ../plug-ins/file-jpeg/jpeg-save.c:1186 +msgid "_Load Defaults" +msgstr "Öntanımlı Ayarları _Yükle" + +#: ../plug-ins/common/file-png.c:1931 +msgid "S_ave Defaults" +msgstr "Varsayılanları K_aydet" + +#: ../plug-ins/common/file-pnm.c:248 +msgid "PNM Image" +msgstr "PNM Görüntüsü" + +#: ../plug-ins/common/file-pnm.c:268 +msgid "PNM image" +msgstr "PNM görüntüsü" + +#: ../plug-ins/common/file-pnm.c:280 +msgid "PBM image" +msgstr "PBM görüntüsü" + +#: ../plug-ins/common/file-pnm.c:292 +msgid "PGM image" +msgstr "PGM görüntüsü" + +#: ../plug-ins/common/file-pnm.c:304 +msgid "PPM image" +msgstr "PPM görüntüsü" + +#: ../plug-ins/common/file-pnm.c:528 ../plug-ins/common/file-pnm.c:550 +#: ../plug-ins/common/file-pnm.c:559 ../plug-ins/common/file-pnm.c:570 +#: ../plug-ins/common/file-pnm.c:658 ../plug-ins/common/file-pnm.c:728 +msgid "Premature end of file." +msgstr "Dosyanın erken bitişi." + +#: ../plug-ins/common/file-pnm.c:530 +msgid "Invalid file." +msgstr "Geçersiz dosya." + +#: ../plug-ins/common/file-pnm.c:544 +msgid "File not in a supported format." +msgstr "Dosya desteklenecek biçimde değil." + +#: ../plug-ins/common/file-pnm.c:553 +msgid "Invalid X resolution." +msgstr "Geçersiz X çözünürlüğü" + +#: ../plug-ins/common/file-pnm.c:555 +msgid "Image width is larger than GIMP can handle." +msgstr "Görüntü genişliği GIMP'in kaldırabileceğinden daha büyük." + +#: ../plug-ins/common/file-pnm.c:562 +msgid "Invalid Y resolution." +msgstr "Geçersiz Y çözünürlüğü." + +#: ../plug-ins/common/file-pnm.c:564 +msgid "Image height is larger than GIMP can handle." +msgstr "Görüntü yüksekliği GIMP'in kaldırabileceğinden daha fazla." + +#: ../plug-ins/common/file-pnm.c:576 +msgid "Unsupported maximum value." +msgstr "Desteklenmeyen en yüksek değer." + +#: ../plug-ins/common/file-pnm.c:781 +msgid "Error reading file." +msgstr "Dosya okunurken hata:" + +#: ../plug-ins/common/file-pnm.c:1186 +msgid "Save as PNM" +msgstr "PNM olarak kaydet" + +#. file save type +#: ../plug-ins/common/file-pnm.c:1203 +msgid "Data formatting" +msgstr "Veri biçimlendirmesi" + +#: ../plug-ins/common/file-pnm.c:1207 +msgid "Raw" +msgstr "Ham" + +#: ../plug-ins/common/file-pnm.c:1208 +msgid "Ascii" +msgstr "Ascii" + +#: ../plug-ins/common/file-ps.c:599 ../plug-ins/common/file-ps.c:691 +msgid "PostScript document" +msgstr "PostScript belgesi" + +#: ../plug-ins/common/file-ps.c:618 ../plug-ins/common/file-ps.c:707 +msgid "Encapsulated PostScript image" +msgstr "Kısaltılmış DipNot görüntüsü" + +#: ../plug-ins/common/file-ps.c:638 +msgid "PDF document" +msgstr "PDF belgesi" + +#: ../plug-ins/common/file-ps.c:1050 +#, c-format +msgid "Could not interpret Postscript file '%s'" +msgstr "Postscript dosyası '%s' yorumlanamıyor." + +#: ../plug-ins/common/file-ps.c:1192 +#, c-format +msgid "PostScript save cannot handle images with alpha channels" +msgstr "PostScript kaydı görüntü görünür kanalları ile yapılamıyor" + +#: ../plug-ins/common/file-ps.c:1730 ../plug-ins/common/file-ps.c:1765 +#, c-format +msgid "" +"Error starting Ghostscript. Make sure that Ghostscript is installed and - if " +"necessary - use the environment variable GS_PROG to tell GIMP about its " +"location.\n" +"(%s)" +msgstr "" +"Ghostscript başlatılırken hata. Ghostscript'in yüklendiğinden ve -eğer " +"gerekliyse- GS_PROG ortam değişkeninin GIMP'e konumunu bildirmesi için " +"kullandığınızdan emin olun.\n" +"(%s)" + +#: ../plug-ins/common/file-ps.c:1932 ../plug-ins/common/file-tiff-load.c:999 +#, c-format +msgid "Page %d" +msgstr "Sayfa %d" + +#: ../plug-ins/common/file-ps.c:2602 ../plug-ins/common/file-ps.c:2735 +#: ../plug-ins/common/file-ps.c:2887 ../plug-ins/common/file-ps.c:3013 +#: ../plug-ins/common/file-sunras.c:1504 ../plug-ins/common/file-sunras.c:1612 +#: ../plug-ins/file-fits/fits.c:850 ../plug-ins/file-fits/fits.c:974 +msgid "Write error occurred" +msgstr "Yazım hatası oluştu" + +#: ../plug-ins/common/file-ps.c:3097 +msgid "Import from PostScript" +msgstr "PostScript' ten içeri aktar" + +#. Rendering +#: ../plug-ins/common/file-ps.c:3140 +msgid "Rendering" +msgstr "Taranıyor" + +#. Resolution +#: ../plug-ins/common/file-ps.c:3156 ../plug-ins/common/file-svg.c:929 +#: ../plug-ins/common/file-wmf.c:692 +msgid "Resolution:" +msgstr "Çözünürlük:" + +#: ../plug-ins/common/file-ps.c:3195 +msgid "Pages:" +msgstr "Sayfa:" + +#: ../plug-ins/common/file-ps.c:3202 +msgid "Pages to load (e.g.: 1-4 or 1,3,5-7)" +msgstr "Yüklenecek sayfalar (ör.: 1-4 veya 1,3,5-7)" + +#: ../plug-ins/common/file-ps.c:3206 ../plug-ins/common/sphere-designer.c:2646 +msgid "Layers" +msgstr "Katmanlar" + +#: ../plug-ins/common/file-ps.c:3208 +msgid "Images" +msgstr "Görüntüler" + +#: ../plug-ins/common/file-ps.c:3211 +msgid "Open as" +msgstr "Farklı aç" + +#: ../plug-ins/common/file-ps.c:3215 +msgid "Try Bounding Box" +msgstr "Çevreleyen Kutuyu Dene" + +#. Colouring +#: ../plug-ins/common/file-ps.c:3228 +msgid "Coloring" +msgstr "Renklendirme" + +#: ../plug-ins/common/file-ps.c:3232 +msgid "B/W" +msgstr "S/B" + +#: ../plug-ins/common/file-ps.c:3234 ../plug-ins/common/file-xpm.c:479 +#: ../plug-ins/gimpressionist/color.c:66 +#: ../plug-ins/gimpressionist/general.c:170 +#: ../plug-ins/imagemap/imap_menu.c:213 +msgid "Color" +msgstr "Renk" + +#: ../plug-ins/common/file-ps.c:3235 ../plug-ins/file-fits/fits.c:1033 +msgid "Automatic" +msgstr "Otomatik" + +#: ../plug-ins/common/file-ps.c:3245 +msgid "Text antialiasing" +msgstr "Metin yumuşatma" + +#: ../plug-ins/common/file-ps.c:3250 ../plug-ins/common/file-ps.c:3262 +msgid "Weak" +msgstr "Zayıf" + +#: ../plug-ins/common/file-ps.c:3251 ../plug-ins/common/file-ps.c:3263 +msgid "Strong" +msgstr "Güçlü" + +#: ../plug-ins/common/file-ps.c:3257 +msgid "Graphic antialiasing" +msgstr "Grafik yumuşatma" + +#: ../plug-ins/common/file-ps.c:3335 +msgid "Save as PostScript" +msgstr "PostScript olarak kaydet" + +#. Image Size +#: ../plug-ins/common/file-ps.c:3366 +msgid "Image Size" +msgstr "Görüntü Boyutu" + +#: ../plug-ins/common/file-ps.c:3415 +msgid "_Keep aspect ratio" +msgstr "En-Boy oranını _Sakla" + +#: ../plug-ins/common/file-ps.c:3421 +msgid "" +"When toggled, the resulting image will be scaled to fit into the given size " +"without changing the aspect ratio." +msgstr "" +"Seçildiği zaman, elde edilecek olan görüntü en-boy oranı değişmeden verilen " +"boyuta ölçeklenecek." + +#. Unit +#: ../plug-ins/common/file-ps.c:3431 +msgid "Unit" +msgstr "Birim" + +#: ../plug-ins/common/file-ps.c:3435 +msgid "_Inch" +msgstr "_İnç" + +#: ../plug-ins/common/file-ps.c:3436 +msgid "_Millimeter" +msgstr "_Milimetre" + +#. Rotation +#: ../plug-ins/common/file-ps.c:3447 +#: ../plug-ins/map-object/map-object-ui.c:1035 +msgid "Rotation" +msgstr "Döndürme" + +#. Format +#: ../plug-ins/common/file-ps.c:3462 +msgid "Output" +msgstr "Çıktı" + +#: ../plug-ins/common/file-ps.c:3468 +msgid "_PostScript level 2" +msgstr "_PostScript seviye 2" + +#: ../plug-ins/common/file-ps.c:3477 +msgid "_Encapsulated PostScript" +msgstr "_Kısaltılmış DipNot" + +#: ../plug-ins/common/file-ps.c:3486 +msgid "P_review" +msgstr "Ö_nizleme" + +#: ../plug-ins/common/file-ps.c:3507 +msgid "Preview _size:" +msgstr "Önizleme _boyutu:" + +#: ../plug-ins/common/file-psp.c:599 ../plug-ins/common/file-psp.c:623 +msgid "Paint Shop Pro image" +msgstr "Paint Shop Pro görüntüsü" + +#: ../plug-ins/common/file-psp.c:640 +msgid "Save as PSP" +msgstr "PSP olarak kaydet" + +#. file save type +#: ../plug-ins/common/file-psp.c:657 +msgid "Data Compression" +msgstr "Veri Sıkıştırma" + +#: ../plug-ins/common/file-psp.c:662 +msgid "RLE" +msgstr "RLE" + +#: ../plug-ins/common/file-psp.c:663 +msgid "LZ77" +msgstr "LZ77" + +#: ../plug-ins/common/file-raw.c:182 ../plug-ins/common/file-raw.c:197 +msgid "Raw image data" +msgstr "Ham görüntü verisi" + +#: ../plug-ins/common/file-raw.c:982 +msgid "Load Image from Raw Data" +msgstr "Görüntüyü Ham Veriden Yükle" + +#: ../plug-ins/common/file-raw.c:1015 +msgid "Image" +msgstr "Görüntü" + +#: ../plug-ins/common/file-raw.c:1026 +msgid "RGB Alpha" +msgstr "RGB Görünür" + +#: ../plug-ins/common/file-raw.c:1027 +msgid "Planar RGB" +msgstr "Düzlemsel RGB" + +#: ../plug-ins/common/file-raw.c:1028 +msgid "Indexed" +msgstr "Sıralanmış" + +#: ../plug-ins/common/file-raw.c:1029 +msgid "Indexed Alpha" +msgstr "Sıralanmış Görünür" + +#: ../plug-ins/common/file-raw.c:1034 +msgid "Image _Type:" +msgstr "Görüntü _Türü:" + +#: ../plug-ins/common/file-raw.c:1084 +msgid "Palette" +msgstr "Palet" + +#: ../plug-ins/common/file-raw.c:1094 ../plug-ins/common/file-raw.c:1193 +msgid "R, G, B (normal)" +msgstr "R, G, B (normal)" + +#: ../plug-ins/common/file-raw.c:1095 ../plug-ins/common/file-raw.c:1195 +msgid "B, G, R, X (BMP style)" +msgstr "B, G, R, X (BMP biçemi)" + +#: ../plug-ins/common/file-raw.c:1100 +msgid "_Palette Type:" +msgstr "_Palet Türü:" + +#: ../plug-ins/common/file-raw.c:1111 +msgid "Off_set:" +msgstr "Göreli _konum:" + +#: ../plug-ins/common/file-raw.c:1123 +msgid "Select Palette File" +msgstr "Palet Dosyasını Seç" + +#: ../plug-ins/common/file-raw.c:1129 +msgid "Pal_ette File:" +msgstr "Pal_et Dosyası:" + +#: ../plug-ins/common/file-raw.c:1157 +msgid "Raw Image Save" +msgstr "Ham Görüntü Kaydı" + +#: ../plug-ins/common/file-raw.c:1179 +msgid "RGB Save Type" +msgstr "RGB Kayıt Türü" + +#: ../plug-ins/common/file-raw.c:1183 +msgid "Standard (R,G,B)" +msgstr "Standart (R,G,B)" + +#: ../plug-ins/common/file-raw.c:1184 +msgid "Planar (RRR,GGG,BBB)" +msgstr "Düzlemsel (RRR,GGG,BBB)" + +#: ../plug-ins/common/file-raw.c:1189 +msgid "Indexed Palette Type" +msgstr "Sıralanmış Palet Türü" + +#: ../plug-ins/common/file-sunras.c:217 ../plug-ins/common/file-sunras.c:237 +msgid "SUN Rasterfile image" +msgstr "SUN ızgaradosya görüntüsü" + +#: ../plug-ins/common/file-sunras.c:402 +#, c-format +msgid "Could not open '%s' as SUN-raster-file" +msgstr "'%s', SUN-raster-file olarak açılamadı" + +#: ../plug-ins/common/file-sunras.c:412 +msgid "The type of this SUN-rasterfile is not supported" +msgstr "Bu SUN-rasterfile türü desteklenmiyor" + +#: ../plug-ins/common/file-sunras.c:441 +#, c-format +msgid "Could not read color entries from '%s'" +msgstr "'%s'den renk girişleri okunamadı" + +#: ../plug-ins/common/file-sunras.c:449 +msgid "Type of colormap not supported" +msgstr "Renk haritası türü destenlenmiyor" + +#: ../plug-ins/common/file-sunras.c:456 ../plug-ins/common/file-xbm.c:826 +#: ../plug-ins/common/file-xwd.c:489 +#, c-format +msgid "" +"'%s':\n" +"No image width specified" +msgstr "" +"'%s':\n" +"Görüntü genişliği belirtilmedi" + +#: ../plug-ins/common/file-sunras.c:464 ../plug-ins/common/file-xbm.c:833 +#: ../plug-ins/common/file-xwd.c:498 +#, c-format +msgid "" +"'%s':\n" +"Image width is larger than GIMP can handle" +msgstr "" +"'%s':\n" +"Görüntü genişliği GIMP'in kaldırabileceğinden daha büyük" + +#: ../plug-ins/common/file-sunras.c:472 ../plug-ins/common/file-xbm.c:840 +#: ../plug-ins/common/file-xwd.c:506 +#, c-format +msgid "" +"'%s':\n" +"No image height specified" +msgstr "" +"'%s':\n" +"Görüntü yüksekliği belirtilmedi" + +#: ../plug-ins/common/file-sunras.c:480 ../plug-ins/common/file-xbm.c:847 +#: ../plug-ins/common/file-xwd.c:514 +#, c-format +msgid "" +"'%s':\n" +"Image height is larger than GIMP can handle" +msgstr "" +"'%s':\n" +"Görüntü yüksekliği GIMP'in kaldırabileceğinden daha büyük" + +#: ../plug-ins/common/file-sunras.c:518 +msgid "This image depth is not supported" +msgstr "Bu görüntü derinliği desteklenmiyor" + +#: ../plug-ins/common/file-sunras.c:542 +#, c-format +msgid "SUNRAS save cannot handle images with alpha channels" +msgstr "SUNRAS kayıt biçimi görünür kanalını içeren resimleri saklayamaz." + +#: ../plug-ins/common/file-sunras.c:553 +msgid "Can't operate on unknown image types" +msgstr "Bilinmeyen görüntü türleri işlenemiyor" + +#: ../plug-ins/common/file-sunras.c:1082 ../plug-ins/common/file-sunras.c:1173 +#: ../plug-ins/common/file-sunras.c:1254 ../plug-ins/common/file-sunras.c:1349 +#: ../plug-ins/common/file-xwd.c:1348 ../plug-ins/common/file-xwd.c:1449 +#: ../plug-ins/common/file-xwd.c:1607 ../plug-ins/common/file-xwd.c:1807 +#: ../plug-ins/common/file-xwd.c:2064 ../plug-ins/file-fits/fits.c:697 +msgid "EOF encountered on reading" +msgstr "EOF okuma karşılaştırıldı" + +#: ../plug-ins/common/file-sunras.c:1629 +msgid "Save as SUNRAS" +msgstr "SUNRAS olarak kaydet" + +#. file save type +#: ../plug-ins/common/file-sunras.c:1646 +msgid "Data Formatting" +msgstr "Veri Biçimledirme" + +#: ../plug-ins/common/file-sunras.c:1650 +msgid "RunLength Encoded" +msgstr "Yürütme Uzunluğu Kodlandı" + +#: ../plug-ins/common/file-svg.c:140 +msgid "SVG image" +msgstr "Svg görüntüsü" + +#: ../plug-ins/common/file-svg.c:335 ../plug-ins/common/file-svg.c:733 +msgid "Unknown reason" +msgstr "Bilinmeyen sebep" + +#: ../plug-ins/common/file-svg.c:341 +msgid "Rendering SVG" +msgstr "SVG Taranıyor" + +#: ../plug-ins/common/file-svg.c:353 +msgid "Rendered SVG" +msgstr "SVG Tarandı" + +#: ../plug-ins/common/file-svg.c:567 ../plug-ins/common/file-wmf.c:358 +#, c-format +msgid "%d × %d" +msgstr "%d × %d" + +#: ../plug-ins/common/file-svg.c:575 +msgid "" +"SVG file does not\n" +"specify a size!" +msgstr "" +"SVG dosyası\n" +"boyut belirtmiyor!" + +#. Scalable Vector Graphics is SVG, should perhaps not be translated +#: ../plug-ins/common/file-svg.c:742 +msgid "Render Scalable Vector Graphics" +msgstr "Ölçeklenmiş Vektör Grafiği Tara" + +#. Width and Height +#: ../plug-ins/common/file-svg.c:808 ../plug-ins/common/file-wmf.c:571 +#: ../plug-ins/common/grid.c:724 +msgid "Width:" +msgstr "Genişlik:" + +#: ../plug-ins/common/file-svg.c:814 ../plug-ins/common/file-wmf.c:577 +msgid "Height:" +msgstr "Yükseklik:" + +#: ../plug-ins/common/file-svg.c:888 ../plug-ins/common/file-wmf.c:651 +msgid "_X ratio:" +msgstr "_X oran:" + +#: ../plug-ins/common/file-svg.c:910 ../plug-ins/common/file-wmf.c:673 +msgid "_Y ratio:" +msgstr "_Y oran:" + +#: ../plug-ins/common/file-svg.c:924 ../plug-ins/common/file-wmf.c:687 +msgid "Constrain aspect ratio" +msgstr "En-boy oranını sabitle" + +#: ../plug-ins/common/file-svg.c:935 ../plug-ins/common/file-wmf.c:698 +#: ../plug-ins/print/print-page-layout.c:273 +#, c-format +msgid "pixels/%a" +msgstr "benek/%a" + +#. Path Import +#: ../plug-ins/common/file-svg.c:955 +msgid "Import _paths" +msgstr "_Yolları içe aktar" + +#: ../plug-ins/common/file-svg.c:961 +msgid "" +"Import path elements of the SVG so they can be used with the GIMP path tool" +msgstr "" +"SVG elementlerinin yolunu içe aktar böylece bu elementler GIMP yol aracı ile " +"kullanılabilecek" + +#: ../plug-ins/common/file-svg.c:974 +msgid "Merge imported paths" +msgstr "İçe aktarılmış yolları _birleştir" + +#: ../plug-ins/common/file-tga.c:245 ../plug-ins/common/file-tga.c:264 +msgid "TarGA image" +msgstr "TarGA görüntüsü" + +#: ../plug-ins/common/file-tga.c:455 +#, c-format +msgid "Cannot read footer from '%s'" +msgstr "'%s'den sayfa altlığı okunamadı" + +#: ../plug-ins/common/file-tga.c:473 +#, c-format +msgid "Cannot read extension from '%s'" +msgstr "'%s'den uzantı okunamadı" + +#: ../plug-ins/common/file-tga.c:485 +#, c-format +msgid "Cannot read header from '%s'" +msgstr "'%s'den sayfa başlığı okunamadı" + +#: ../plug-ins/common/file-tga.c:1370 +msgid "Save as TGA" +msgstr "TGA olarak kaydet" + +#. rle +#: ../plug-ins/common/file-tga.c:1393 +msgid "_RLE compression" +msgstr "_RLE sıkıştırması" + +#: ../plug-ins/common/file-tga.c:1407 +msgid "Or_igin:" +msgstr "K_öken:" + +#: ../plug-ins/common/file-tga.c:1411 +msgid "Bottom left" +msgstr "Alt sol" + +#: ../plug-ins/common/file-tga.c:1412 +msgid "Top left" +msgstr "Üst sol" + +#: ../plug-ins/common/file-tiff-load.c:240 +#: ../plug-ins/common/file-tiff-save.c:182 +#: ../plug-ins/common/file-tiff-save.c:199 +msgid "TIFF image" +msgstr "TIFF görüntüsü" + +#: ../plug-ins/common/file-tiff-load.c:310 +#, c-format +msgid "TIFF '%s' does not contain any directories" +msgstr "TIFF '%s' her hangi bir dizin içermiyor" + +#: ../plug-ins/common/file-tiff-load.c:478 +msgid "Import from TIFF" +msgstr "TIFF'den al" + +#: ../plug-ins/common/file-tiff-load.c:780 +#, c-format +msgid "%s-%d-of-%d-pages" +msgstr "%s sayfanın %d %d si" + +#: ../plug-ins/common/file-tiff-load.c:1015 +msgid "TIFF Channel" +msgstr "TIFF Kanalı" + +#: ../plug-ins/common/file-tiff-load.c:1024 +#: ../plug-ins/file-psd/psd-load.c:334 +msgid "" +"Warning:\n" +"The image you are loading has 16 bits per channel. GIMP can only handle 8 " +"bit, so it will be converted for you. Information will be lost because of " +"this conversion." +msgstr "" +"Uyarı:\n" +"Yüklediğiniz görüntü kanal başına 16 bit'e sahip. GIMP sadece 8 bit " +"kullanabilir; bu yüzden, dönüştürülmesi gerekiyor. Bilgi, bu dönüşümden " +"dolayı kaybolacak." + +#: ../plug-ins/common/file-tiff-save.c:887 +msgid "" +"The TIFF format only supports comments in\n" +"7bit ASCII encoding. No comment is saved." +msgstr "" +"TIFF biçimi, yalnızca 7bit ASCII kodlaması\n" +"yorumlarını destekler. Hiç bir komut kaydedilmedi." + +#: ../plug-ins/common/file-tiff-save.c:1061 +msgid "Save as TIFF" +msgstr "TIFF olarak kaydet" + +#. compression +#: ../plug-ins/common/file-tiff-save.c:1083 +msgid "Compression" +msgstr "Sıkıştırma" + +#: ../plug-ins/common/file-tiff-save.c:1087 +msgid "_None" +msgstr "_Hiçbiri" + +#: ../plug-ins/common/file-tiff-save.c:1088 +msgid "_LZW" +msgstr "_LZW" + +#: ../plug-ins/common/file-tiff-save.c:1089 +msgid "_Pack Bits" +msgstr "_Paket Bitleri" + +#: ../plug-ins/common/file-tiff-save.c:1090 +msgid "_Deflate" +msgstr "_Söndür" + +#: ../plug-ins/common/file-tiff-save.c:1091 +msgid "_JPEG" +msgstr "_JPEG" + +#: ../plug-ins/common/file-tiff-save.c:1092 +msgid "CCITT Group _3 fax" +msgstr "CCITT Group _3 fax" + +#: ../plug-ins/common/file-tiff-save.c:1093 +msgid "CCITT Group _4 fax" +msgstr "CCITT Grup _4 faks" + +#: ../plug-ins/common/file-tiff-save.c:1115 +msgid "Save _color values from transparent pixels" +msgstr "Saydam beneklerden _renk değerlerini kaydedin" + +#: ../plug-ins/common/file-tiff-save.c:1131 ../plug-ins/common/file-xbm.c:1246 +msgid "Comment:" +msgstr "Yorum:" + +#: ../plug-ins/common/file-wmf.c:129 +msgid "Microsoft WMF file" +msgstr "Microsoft WMF dosyası" + +#: ../plug-ins/common/file-wmf.c:352 +msgid "" +"WMF file does not\n" +"specify a size!" +msgstr "" +"WMF dosyası\n" +"boyut belirtmiyor!" + +#: ../plug-ins/common/file-wmf.c:500 +msgid "Render Windows Metafile" +msgstr "Windows Meta Dosyasını Tarama" + +#: ../plug-ins/common/file-wmf.c:963 +#, c-format +msgid "Could not open '%s' for reading" +msgstr "'%s' dosyası okumak için açılamadı" + +#: ../plug-ins/common/file-wmf.c:1003 +msgid "Rendered WMF" +msgstr "WMF Tarandı" + +#: ../plug-ins/common/file-xbm.c:176 ../plug-ins/common/file-xbm.c:194 +msgid "X BitMap image" +msgstr "X Bit Eşlem görüntüsü" + +#: ../plug-ins/common/file-xbm.c:819 +#, c-format +msgid "" +"'%s':\n" +"Could not read header (ftell == %ld)" +msgstr "" +"'%s':\n" +"Başlık okunamadı (ftell == %ld)" + +#: ../plug-ins/common/file-xbm.c:854 +#, c-format +msgid "" +"'%s':\n" +"No image data type specified" +msgstr "" +"'%s':\n" +"Görüntü veri türü tanımlanmadı" + +#. The image is not black-and-white. +#: ../plug-ins/common/file-xbm.c:997 +msgid "" +"The image which you are trying to save as an XBM contains more than two " +"colors.\n" +"\n" +"Please convert it to a black and white (1-bit) indexed image and try again." +msgstr "" +"Bir XBM olarak kaydetmeye çalıştığınız görüntü iki renkten daha fazlasını " +"içeriyor.\n" +"\n" +"Lütfen siyah ve beyaz (1-bit) sıralı görüntüye dönüştürün ve yeniden deneyin." + +#: ../plug-ins/common/file-xbm.c:1008 +msgid "" +"You cannot save a cursor mask for an image\n" +"which has no alpha channel." +msgstr "" +"Hiçbir görünür kanalı olmayan bir görüntü için\n" +"imleç maskeyi kaydedemezsiniz." + +#: ../plug-ins/common/file-xbm.c:1185 +msgid "Save as XBM" +msgstr "XBM olarak kaydet" + +#. parameter settings +#: ../plug-ins/common/file-xbm.c:1202 +msgid "XBM Options" +msgstr "XBM Seçenekleri" + +#. X10 format +#: ../plug-ins/common/file-xbm.c:1212 +msgid "_X10 format bitmap" +msgstr "_X10 biçimli bit eşlem" + +#: ../plug-ins/common/file-xbm.c:1232 +msgid "_Identifier prefix:" +msgstr "_Tanıtıcı önek:" + +#. hotspot toggle +#: ../plug-ins/common/file-xbm.c:1254 +msgid "_Write hot spot values" +msgstr "Etkin nokta değerlerini _yaz" + +#: ../plug-ins/common/file-xbm.c:1276 +msgid "Hot spot _X:" +msgstr "Etkin nokta _X:" + +#: ../plug-ins/common/file-xbm.c:1286 +msgid "Hot spot _Y:" +msgstr "Etkin nokta _Y:" + +#. mask file +#: ../plug-ins/common/file-xbm.c:1293 +msgid "Mask File" +msgstr "Maske Dosyası" + +#: ../plug-ins/common/file-xbm.c:1303 +msgid "W_rite extra mask file" +msgstr "Fazla maske dosyasını yaz" + +#: ../plug-ins/common/file-xbm.c:1316 +msgid "_Mask file extension:" +msgstr "_Maske dosyası eklentisi:" + +#: ../plug-ins/common/file-xpm.c:174 ../plug-ins/common/file-xpm.c:199 +msgid "X PixMap image" +msgstr "X Pix Eşlem resmi" + +#: ../plug-ins/common/file-xpm.c:363 ../plug-ins/common/file-xpm.c:773 +#, c-format +msgid "Error opening file '%s'" +msgstr "'%s' dosya açılırken hata" + +#: ../plug-ins/common/file-xpm.c:369 ../plug-ins/common/file-xpm.c:779 +msgid "XPM file invalid" +msgstr "Geçersiz XPM dosyası" + +#: ../plug-ins/common/file-xpm.c:805 +msgid "Save as XPM" +msgstr "XPM olarak kaydet" + +#: ../plug-ins/common/file-xpm.c:829 +msgid "_Alpha threshold:" +msgstr "_Görünür eşiği:" + +#: ../plug-ins/common/file-xwd.c:278 ../plug-ins/common/file-xwd.c:298 +msgid "X window dump" +msgstr "X pencere yığını" + +#: ../plug-ins/common/file-xwd.c:442 +#, c-format +msgid "Could not read XWD header from '%s'" +msgstr "'%s' dosyasından XWD başlığı okunamadı" + +#: ../plug-ins/common/file-xwd.c:480 +msgid "Can't read color entries" +msgstr "Renk girdileri okunamıyor" + +#: ../plug-ins/common/file-xwd.c:570 +#, c-format +msgid "" +"XWD-file %s has format %d, depth %d and bits per pixel %d. Currently this is " +"not supported." +msgstr "" +"XWD-dosyası %s %d biçimi, %d derinlik ve benek başına düşen bit ise %d dir. " +"Şu anda bu biçim desteklenmiyor." + +#: ../plug-ins/common/file-xwd.c:593 +msgid "Cannot save images with alpha channels." +msgstr "Görüntüler görünür kanalıyla kaydedilemiyor." + +#: ../plug-ins/common/file-xwd.c:2195 +msgid "Error during writing indexed/gray image" +msgstr "Sıralanmış/gri görüntü yazma sırasında hata" + +#: ../plug-ins/common/file-xwd.c:2293 +msgid "Error during writing rgb image" +msgstr "rgb görüntü yazılırken hata" + +#: ../plug-ins/common/film.c:217 +msgid "Combine several images on a film strip" +msgstr "Bir film şeridi üzerinde değişik görüntüleri birleştirin" + +#: ../plug-ins/common/film.c:222 +msgid "_Filmstrip..." +msgstr "_Film şeridi..." + +#: ../plug-ins/common/film.c:307 +msgid "Composing images" +msgstr "Görüntüleri oluşturma" + +#: ../plug-ins/common/film.c:425 ../plug-ins/common/guillotine.c:216 +#: ../plug-ins/help-browser/dialog.c:1120 +msgid "Untitled" +msgstr "İsimsiz" + +#: ../plug-ins/common/film.c:879 +msgid "Available images:" +msgstr "Varolan görüntüler:" + +#: ../plug-ins/common/film.c:880 +msgid "On film:" +msgstr "Film üzerinde:" + +#. Film height/colour +#: ../plug-ins/common/film.c:976 ../plug-ins/common/film.c:1248 +msgid "Filmstrip" +msgstr "Film şeridi" + +#. Keep maximum image height +#: ../plug-ins/common/film.c:985 +msgid "_Fit height to images" +msgstr "Görüntülere _Uygun yükseklik" + +#. Film color +#: ../plug-ins/common/film.c:1021 +msgid "Select Film Color" +msgstr "Film Rengini Seç" + +#: ../plug-ins/common/film.c:1026 ../plug-ins/common/film.c:1076 +#: ../plug-ins/common/nova.c:353 +msgid "Co_lor:" +msgstr "_Renk:" + +#. Film numbering: Startindex/Font/colour +#: ../plug-ins/common/film.c:1035 +msgid "Numbering" +msgstr "Numaralandırma" + +#: ../plug-ins/common/film.c:1053 +msgid "Start _index:" +msgstr "_Dizini başlat:" + +#: ../plug-ins/common/film.c:1066 +msgid "_Font:" +msgstr "Yazıtipi:" + +#. Numbering color +#: ../plug-ins/common/film.c:1071 +msgid "Select Number Color" +msgstr "Renk Numarasını Seç" + +#: ../plug-ins/common/film.c:1086 +msgid "At _bottom" +msgstr "_Altta" + +#: ../plug-ins/common/film.c:1087 +msgid "At _top" +msgstr "_Üstte" + +#. ** The right frame keeps the image selection ** +#: ../plug-ins/common/film.c:1100 +msgid "Image Selection" +msgstr "Görüntü Seçimi" + +#: ../plug-ins/common/film.c:1128 +msgid "All Values are Fractions of the Strip Height" +msgstr "Tüm Değerler, Şerit Yüksekliğinin Parçalarıdır" + +#: ../plug-ins/common/film.c:1131 +msgid "Ad_vanced" +msgstr "_Gelişmiş" + +#: ../plug-ins/common/film.c:1150 +msgid "Image _height:" +msgstr "Görüntü _yüksekliği:" + +#: ../plug-ins/common/film.c:1161 +msgid "Image spac_ing:" +msgstr "Görüntü boşl_uğu:" + +#: ../plug-ins/common/film.c:1172 +msgid "_Hole offset:" +msgstr "_Boşluk konumu:" + +#: ../plug-ins/common/film.c:1183 +msgid "Ho_le width:" +msgstr "De_lik genişliği:" + +#: ../plug-ins/common/film.c:1194 +msgid "Hol_e height:" +msgstr "Deli_k yüksekliği:" + +#: ../plug-ins/common/film.c:1205 +msgid "Hole sp_acing:" +msgstr "Delik ar_alığı:" + +#: ../plug-ins/common/film.c:1216 +msgid "_Number height:" +msgstr "_Sayı yüksekliği" + +#. These values are translated for the GUI but also used internally +#. to figure out which button the user pushed, etc. +#. Not my design, please don't blame me -- njl +#: ../plug-ins/common/filter-pack.c:220 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:953 +msgid "Red:" +msgstr "Kırmızı:" + +#: ../plug-ins/common/filter-pack.c:221 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:963 +msgid "Green:" +msgstr "Yeşil:" + +#: ../plug-ins/common/filter-pack.c:222 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:973 +msgid "Blue:" +msgstr "Mavi:" + +#: ../plug-ins/common/filter-pack.c:223 +msgid "Cyan:" +msgstr "Turkuaz:" + +#: ../plug-ins/common/filter-pack.c:224 +msgid "Yellow:" +msgstr "Sarı:" + +#: ../plug-ins/common/filter-pack.c:225 +msgid "Magenta:" +msgstr "Macenta:" + +#: ../plug-ins/common/filter-pack.c:227 +msgid "Darker:" +msgstr "Daha koyu:" + +#: ../plug-ins/common/filter-pack.c:228 +msgid "Lighter:" +msgstr "Daha açık:" + +#: ../plug-ins/common/filter-pack.c:230 +msgid "More Sat:" +msgstr "Daha çok Doygunluk:" + +#: ../plug-ins/common/filter-pack.c:231 +msgid "Less Sat:" +msgstr "Daha az Doygunluk:" + +#: ../plug-ins/common/filter-pack.c:233 ../plug-ins/common/filter-pack.c:532 +msgid "Current:" +msgstr "Şimdiki:" + +#: ../plug-ins/common/filter-pack.c:317 +msgid "Interactively modify the image colors" +msgstr "Etkileşimli olarak görüntü renklerini düzenle" + +#: ../plug-ins/common/filter-pack.c:322 +msgid "_Filter Pack..." +msgstr "_Süzgeç Paketi..." + +#: ../plug-ins/common/filter-pack.c:372 +msgid "FP can only be used on RGB images." +msgstr "FP sadece RGB görüntülerinde kullanılabilir." + +#: ../plug-ins/common/filter-pack.c:382 +msgid "FP can only be run interactively." +msgstr "FP sadece etkileşimli olarak çalışabilir." + +#: ../plug-ins/common/filter-pack.c:400 +msgid "Applying filter pack" +msgstr "Süzgeç paketi uygulanıyor" + +#: ../plug-ins/common/filter-pack.c:524 +msgid "Original:" +msgstr "Özgün:" + +#: ../plug-ins/common/filter-pack.c:576 +msgid "Hue Variations" +msgstr "Renk Tonu Değişimleri" + +#: ../plug-ins/common/filter-pack.c:631 +msgid "Roughness" +msgstr "Pürüzlülük" + +#: ../plug-ins/common/filter-pack.c:674 ../plug-ins/common/filter-pack.c:1317 +msgid "Affected Range" +msgstr "Etkilenen Alan" + +#: ../plug-ins/common/filter-pack.c:678 +msgid "Sha_dows" +msgstr "_Gölgeler" + +#: ../plug-ins/common/filter-pack.c:679 +msgid "_Midtones" +msgstr "_Ortatonlar" + +#: ../plug-ins/common/filter-pack.c:680 +msgid "H_ighlights" +msgstr "V_urgulamalar" + +#: ../plug-ins/common/filter-pack.c:694 +msgid "Windows" +msgstr "Pencereler" + +#: ../plug-ins/common/filter-pack.c:704 ../plug-ins/common/van-gogh-lic.c:672 +msgid "_Saturation" +msgstr "_Doygunluk" + +#: ../plug-ins/common/filter-pack.c:712 +msgid "A_dvanced" +msgstr "_Gelişmiş" + +#: ../plug-ins/common/filter-pack.c:732 +msgid "Value Variations" +msgstr "Değer Değişimleri" + +#: ../plug-ins/common/filter-pack.c:777 +msgid "Saturation Variations" +msgstr "Doygunluk Değişimleri" + +#: ../plug-ins/common/filter-pack.c:830 +msgid "Select Pixels By" +msgstr "Şuna göre seç Benek'leri" + +#: ../plug-ins/common/filter-pack.c:835 +msgid "H_ue" +msgstr "Renk _Özü" + +#: ../plug-ins/common/filter-pack.c:836 +msgid "Satu_ration" +msgstr "D_oygunluk" + +#: ../plug-ins/common/filter-pack.c:837 +msgid "V_alue" +msgstr "D_eğer" + +#: ../plug-ins/common/filter-pack.c:863 +msgid "Show" +msgstr "Göster" + +#: ../plug-ins/common/filter-pack.c:868 +msgid "_Entire image" +msgstr "_Bütün görüntü" + +#: ../plug-ins/common/filter-pack.c:869 +msgid "Se_lection only" +msgstr "Sadece se_çim" + +#: ../plug-ins/common/filter-pack.c:870 +msgid "Selec_tion in context" +msgstr "İçerikten _seçim" + +#: ../plug-ins/common/filter-pack.c:1201 +msgid "Filter Pack Simulation" +msgstr "Süzgeç Paketi Benzetimi" + +#: ../plug-ins/common/filter-pack.c:1290 +msgid "Shadows:" +msgstr "Gölgeler:" + +#: ../plug-ins/common/filter-pack.c:1291 +msgid "Midtones:" +msgstr "Ortatonlar:" + +#: ../plug-ins/common/filter-pack.c:1292 +msgid "Highlights:" +msgstr "Vurgulamalar" + +#: ../plug-ins/common/filter-pack.c:1305 +msgid "Advanced Filter Pack Options" +msgstr "Gelişmiş Süzgeç Paketi Ayarları" + +#. ****************** MISC OPTIONS ************************** +#: ../plug-ins/common/filter-pack.c:1417 +msgid "Preview Size" +msgstr "Önizleme Boyutu" + +#: ../plug-ins/common/fractal-trace.c:116 +msgid "Transform image with the Mandelbrot Fractal" +msgstr "Mandelbrot Kesiri ile resimi dönüştür" + +#: ../plug-ins/common/fractal-trace.c:121 +msgid "_Fractal Trace..." +msgstr "_Kesir İzi..." + +#: ../plug-ins/common/fractal-trace.c:460 +#: ../plug-ins/common/fractal-trace.c:691 +msgid "Fractal Trace" +msgstr "Kesir İzi" + +#. Settings +#: ../plug-ins/common/fractal-trace.c:731 +msgid "Outside Type" +msgstr "Dış Tip" + +#: ../plug-ins/common/fractal-trace.c:742 +msgid "_White" +msgstr "_Beyaz" + +#: ../plug-ins/common/fractal-trace.c:749 +msgid "Mandelbrot Parameters" +msgstr "Mandelbrot Parametreleri" + +#: ../plug-ins/common/fractal-trace.c:760 +msgid "X_1:" +msgstr "X_1:" + +#: ../plug-ins/common/fractal-trace.c:769 +msgid "X_2:" +msgstr "X_2:" + +#: ../plug-ins/common/fractal-trace.c:778 +msgid "Y_1:" +msgstr "Y_1:" + +#: ../plug-ins/common/fractal-trace.c:787 +msgid "Y_2:" +msgstr "Y_2:" + +#: ../plug-ins/common/gee-zoom.c:121 ../plug-ins/common/gee.c:99 +msgid "A big hello from the GIMP team!" +msgstr "GIMP takımından kocaman bir merhaba!" + +#: ../plug-ins/common/gee-zoom.c:126 ../plug-ins/common/gee-zoom.c:186 +msgid "Gee Zoom" +msgstr "Gee Yakınlaştırması" + +#: ../plug-ins/common/gee-zoom.c:192 ../plug-ins/common/gee.c:166 +msgid "Thank You for Choosing GIMP" +msgstr "GIMP'i Seçtiğiniz için Teşekkürler" + +#: ../plug-ins/common/gee-zoom.c:200 +#, c-format +msgid "An obsolete creation by %s" +msgstr "%s ile eski oluşturma" + +#: ../plug-ins/common/gee.c:104 ../plug-ins/common/gee.c:160 +msgid "Gee Slime" +msgstr "Gee Çamurlaması" + +#: ../plug-ins/common/gee.c:173 +#, c-format +msgid "A less obsolete creation by %s" +msgstr "%s ile daha az eskimiş oluşturma" + +#: ../plug-ins/common/gradient-map.c:84 +msgid "Recolor the image using colors from the active gradient" +msgstr "Etkin değişimdeki renkleri kullanarak görüntüyü yeniden renklendir" + +#: ../plug-ins/common/gradient-map.c:97 +msgid "_Gradient Map" +msgstr "_Renk Geçişi Eşlemi" + +#: ../plug-ins/common/gradient-map.c:106 +msgid "Recolor the image using colors from the active palette" +msgstr "Etkin paletteki renkleri kullanarak görüntüyü yeniden renklendir" + +#: ../plug-ins/common/gradient-map.c:119 +msgid "_Palette Map" +msgstr "_Palet Haritası" + +#: ../plug-ins/common/gradient-map.c:162 +msgid "Gradient Map" +msgstr "Renk Geçişi Eşlemi" + +#: ../plug-ins/common/gradient-map.c:167 +msgid "Palette Map" +msgstr "Palet Haritası" + +#: ../plug-ins/common/grid.c:142 +msgid "Draw a grid on the image" +msgstr "Görüntü üzerine bir ızgara çiz" + +#: ../plug-ins/common/grid.c:148 +msgid "_Grid..." +msgstr "_Izgara..." + +#: ../plug-ins/common/grid.c:241 +msgid "Drawing grid" +msgstr "Izgara çiz" + +#: ../plug-ins/common/grid.c:635 ../plug-ins/gfig/gfig-dialog.c:1355 +#: ../plug-ins/imagemap/imap_menu.c:209 +msgid "Grid" +msgstr "Kılavuz" + +#. attach labels +#: ../plug-ins/common/grid.c:717 +msgid "Horizontal" +msgstr "Ufki" + +#: ../plug-ins/common/grid.c:719 +msgid "Vertical" +msgstr "Dikey" + +#: ../plug-ins/common/grid.c:721 +msgid "Intersection" +msgstr "Kesişim" + +#. attach labels +#: ../plug-ins/common/grid.c:857 +msgid "Offset:" +msgstr "Göreli Konum:" + +#. attach color selectors +#: ../plug-ins/common/grid.c:896 +msgid "Horizontal Color" +msgstr "Yatay Renk" + +#: ../plug-ins/common/grid.c:914 +msgid "Vertical Color" +msgstr "Dikey Renk" + +#: ../plug-ins/common/grid.c:932 +msgid "Intersection Color" +msgstr "Kesişim Rengi" + +#: ../plug-ins/common/guillotine.c:75 +msgid "Slice the image into subimages using guides" +msgstr "Kılavuzları kullanarak altgörüntü içinde görüntü dilimleme" + +#: ../plug-ins/common/guillotine.c:82 +msgid "_Guillotine" +msgstr "_Giyotin" + +#: ../plug-ins/common/guillotine.c:120 +msgid "Guillotine" +msgstr "Giyotin" + +#: ../plug-ins/common/hot.c:207 +msgid "Find and fix pixels that may be unsafely bright" +msgstr "Çok fazla parlak benekleri bul ve düzelt" + +#: ../plug-ins/common/hot.c:217 +msgid "_Hot..." +msgstr "_Sıcak..." + +#: ../plug-ins/common/hot.c:387 ../plug-ins/common/hot.c:586 +msgid "Hot" +msgstr "Sıcak" + +#: ../plug-ins/common/hot.c:623 +msgid "Create _new layer" +msgstr "_Yeni katman oluştur" + +#: ../plug-ins/common/hot.c:632 +msgid "Action" +msgstr "Eylem" + +#: ../plug-ins/common/hot.c:636 +msgid "Reduce _Luminance" +msgstr "_Parlaklığı Azalt" + +#: ../plug-ins/common/hot.c:637 +msgid "Reduce _Saturation" +msgstr "_Doygunluğu Azalt" + +#: ../plug-ins/common/hot.c:638 ../plug-ins/common/waves.c:282 +msgid "_Blacken" +msgstr "_Karartma" + +#: ../plug-ins/common/illusion.c:91 +msgid "Superimpose many altered copies of the image" +msgstr "Görüntünün bir çok değiştirilmiş kopyasının üzerine koy" + +#: ../plug-ins/common/illusion.c:96 +msgid "_Illusion..." +msgstr "_Hayal..." + +#: ../plug-ins/common/illusion.c:168 ../plug-ins/common/illusion.c:350 +msgid "Illusion" +msgstr "Hayal" + +#: ../plug-ins/common/illusion.c:388 +msgid "_Divisions:" +msgstr "_Bölümler:" + +#: ../plug-ins/common/illusion.c:398 +msgid "Mode _1" +msgstr "Kip _1" + +#: ../plug-ins/common/illusion.c:413 +msgid "Mode _2" +msgstr "Kip_2" + +#: ../plug-ins/common/iwarp.c:262 +msgid "Use mouse control to warp image areas" +msgstr "Görüntü alanlarını eğmek için fare yönetimini kullan" + +#: ../plug-ins/common/iwarp.c:267 +msgid "_IWarp..." +msgstr "_Boz..." + +#: ../plug-ins/common/iwarp.c:697 +msgid "Warping" +msgstr "Eğme" + +#: ../plug-ins/common/iwarp.c:802 +#, c-format +msgid "Warping Frame %d" +msgstr "Çerçeve Eğiliyor %d" + +#: ../plug-ins/common/iwarp.c:814 +msgid "Ping pong" +msgstr "Ping pong" + +#: ../plug-ins/common/iwarp.c:1020 +msgid "A_nimate" +msgstr "_Canlandır" + +#: ../plug-ins/common/iwarp.c:1039 +msgid "Number of _frames:" +msgstr "_Çerçeve Sayısı:" + +#: ../plug-ins/common/iwarp.c:1048 +msgid "R_everse" +msgstr "_Tersine Çevir" + +#: ../plug-ins/common/iwarp.c:1057 +msgid "_Ping pong" +msgstr "_Ping pong" + +#: ../plug-ins/common/iwarp.c:1070 +msgid "_Animate" +msgstr "_Canlandır" + +#: ../plug-ins/common/iwarp.c:1091 +msgid "Deform Mode" +msgstr "Bozma Kipi" + +#: ../plug-ins/common/iwarp.c:1104 +msgid "_Move" +msgstr "_Taşı" + +#: ../plug-ins/common/iwarp.c:1105 +msgid "_Grow" +msgstr "_Genişle" + +#: ../plug-ins/common/iwarp.c:1106 +msgid "S_wirl CCW" +msgstr "_Döndür CCW" + +#: ../plug-ins/common/iwarp.c:1107 +msgid "Remo_ve" +msgstr "K_aldır" + +#: ../plug-ins/common/iwarp.c:1108 +msgid "S_hrink" +msgstr "_Daralt" + +#: ../plug-ins/common/iwarp.c:1109 +msgid "Sw_irl CW" +msgstr "Döndü_r CW" + +#: ../plug-ins/common/iwarp.c:1138 +msgid "_Deform radius:" +msgstr "Yarıçapı _Boz:" + +#: ../plug-ins/common/iwarp.c:1148 +msgid "D_eform amount:" +msgstr "Miktarı B_oz:" + +#: ../plug-ins/common/iwarp.c:1157 +msgid "_Bilinear" +msgstr "_Çift Doğrusal" + +#: ../plug-ins/common/iwarp.c:1171 +msgid "Adaptive s_upersample" +msgstr "Uyumlu ü_stünörnekleme" + +#: ../plug-ins/common/iwarp.c:1191 +msgid "Ma_x depth:" +msgstr "Ma_ks derinlik:" + +#: ../plug-ins/common/iwarp.c:1201 +msgid "Thresho_ld:" +msgstr "Eşi_k" + +#: ../plug-ins/common/iwarp.c:1214 ../plug-ins/common/sinus.c:771 +#: ../plug-ins/gradient-flare/gradient-flare.c:2867 +msgid "_Settings" +msgstr "_Ayarlar" + +#: ../plug-ins/common/iwarp.c:1263 +msgid "IWarp" +msgstr "Boz" + +#: ../plug-ins/common/iwarp.c:1299 +msgid "" +"Click and drag in the preview to define the distortions to apply to the " +"image." +msgstr "" +"Önizlemede resimde uygulayarak bozulmayı tanımlamak için tıkla ve sürükle." + +#: ../plug-ins/common/jigsaw.c:356 +msgid "Add a jigsaw-puzzle pattern to the image" +msgstr "Resime yapboz deseni ekle" + +#: ../plug-ins/common/jigsaw.c:361 +msgid "_Jigsaw..." +msgstr "_Oyma Testeresi" + +#: ../plug-ins/common/jigsaw.c:414 +msgid "Assembling jigsaw" +msgstr "Oyma testeresi birleştiriliyor" + +#: ../plug-ins/common/jigsaw.c:2416 +msgid "Jigsaw" +msgstr "Oyma Testeresi" + +#: ../plug-ins/common/jigsaw.c:2445 +msgid "Number of Tiles" +msgstr "Döşemelerin Sayısı" + +#: ../plug-ins/common/jigsaw.c:2460 +msgid "Number of pieces going across" +msgstr "Karşıya geçen parçaların sayısı" + +#: ../plug-ins/common/jigsaw.c:2477 +msgid "Number of pieces going down" +msgstr "Batan parçaların sayısı" + +#: ../plug-ins/common/jigsaw.c:2491 +msgid "Bevel Edges" +msgstr "Konik Kenarlar" + +#: ../plug-ins/common/jigsaw.c:2501 +msgid "_Bevel width:" +msgstr "_Konik Genişliği" + +#: ../plug-ins/common/jigsaw.c:2505 +msgid "Degree of slope of each piece's edge" +msgstr "Her bir parça kenarının eğim derecesi" + +#: ../plug-ins/common/jigsaw.c:2518 +msgid "H_ighlight:" +msgstr "V_urgulama" + +#: ../plug-ins/common/jigsaw.c:2522 +msgid "The amount of highlighting on the edges of each piece" +msgstr "Her parçanın kenarlarında ki vurgulama miktarı" + +#. frame for primitive radio buttons +#: ../plug-ins/common/jigsaw.c:2539 +msgid "Jigsaw Style" +msgstr "Oyma Testeresi Tarzı" + +#: ../plug-ins/common/jigsaw.c:2543 +msgid "_Square" +msgstr "_Kare" + +#: ../plug-ins/common/jigsaw.c:2544 +msgid "C_urved" +msgstr "Eğik" + +#: ../plug-ins/common/jigsaw.c:2548 +msgid "Each piece has straight sides" +msgstr "Her parçanın düzgün köşesi var" + +#: ../plug-ins/common/jigsaw.c:2549 +msgid "Each piece has curved sides" +msgstr "Her parça eğri kenarlara sahip" + +#: ../plug-ins/common/lcms.c:218 +msgid "Set a color profile on the image" +msgstr "Görüntüde renk profili ayarla" + +#: ../plug-ins/common/lcms.c:225 +msgid "_Assign Color Profile..." +msgstr "Renk Profili _Ata" + +#: ../plug-ins/common/lcms.c:241 +msgid "Assign default RGB Profile" +msgstr "Öntanımlı RGB profili ata" + +#: ../plug-ins/common/lcms.c:248 +msgid "Apply a color profile on the image" +msgstr "Renk profilini görüntüye uygula" + +#: ../plug-ins/common/lcms.c:258 +msgid "_Convert to Color Profile..." +msgstr "Renk Profiline Çevir" + +#: ../plug-ins/common/lcms.c:276 +msgid "Convert to default RGB Profile" +msgstr "Öntanımlı RGB Profiline dönüştür" + +#: ../plug-ins/common/lcms.c:290 +msgid "Image Color Profile Information" +msgstr "Görüntü Renk Profil Bilgisi" + +#: ../plug-ins/common/lcms.c:304 +msgid "Color Profile Information" +msgstr "Renk Profil Bilgisi" + +#: ../plug-ins/common/lcms.c:572 +#, c-format +msgid "Color profile '%s' is not for RGB color space." +msgstr "Renk profili '%s' RGB renk alanı için değil." + +#: ../plug-ins/common/lcms.c:679 +msgid "Default RGB working space" +msgstr "Öntanımlı RGB çalışma alanı" + +#: ../plug-ins/common/lcms.c:775 +msgid "" +"Data attached as 'icc-profile' does not appear to be an ICC color profile" +msgstr "'icc-profili' olarak eklenmiş veri ICC renk profili değil" + +#: ../plug-ins/common/lcms.c:825 +#, c-format +msgid "'%s' does not appear to be an ICC color profile" +msgstr "'%s' bir ICC renk profili olarak görünmüyor" + +#. ICC color profile conversion +#: ../plug-ins/common/lcms.c:885 +#, c-format +msgid "Converting from '%s' to '%s'" +msgstr "`%s' >`%s' dönüştürülüyor" + +#: ../plug-ins/common/lcms.c:1129 +#, c-format +msgid "Could not load ICC profile from '%s'" +msgstr "'%s'den ICC profili yüklenemedi" + +#: ../plug-ins/common/lcms.c:1151 +#, c-format +msgid "The image '%s' has an embedded color profile:" +msgstr "'%s' resmi gömülü bir renk profiline sahip:" + +#: ../plug-ins/common/lcms.c:1195 +#, c-format +msgid "Convert the image to the RGB working space (%s)?" +msgstr "Görüntüyü RGB çalışma alanı '%s' dönüşsün mü?" + +#: ../plug-ins/common/lcms.c:1226 +msgid "Convert to RGB working space?" +msgstr "RGB çalışma alanına dönüşsün mü?" + +#: ../plug-ins/common/lcms.c:1231 +msgid "_Keep" +msgstr "_Tut" + +#: ../plug-ins/common/lcms.c:1236 +msgid "_Convert" +msgstr "Dönüş_tür" + +#: ../plug-ins/common/lcms.c:1263 ../plug-ins/file-jpeg/jpeg-exif.c:377 +msgid "_Don't ask me again" +msgstr "_Bana yeniden sorma." + +#: ../plug-ins/common/lcms.c:1327 +msgid "Select destination profile" +msgstr "Varış profili seçin" + +#: ../plug-ins/common/lcms.c:1354 +msgid "All files (*.*)" +msgstr "Tüm dosyalar (*.*)" + +#: ../plug-ins/common/lcms.c:1359 +msgid "ICC color profile (*.icc, *.icm)" +msgstr "ICC renk profili (*.icc, *.icm)" + +#: ../plug-ins/common/lcms.c:1402 +#, c-format +msgid "RGB workspace (%s)" +msgstr "RGB çalışma alanı (%s)" + +#: ../plug-ins/common/lcms.c:1452 +msgid "Convert to ICC Color Profile" +msgstr "ICC Renk Profiline Dönüştür" + +#: ../plug-ins/common/lcms.c:1453 +msgid "Assign ICC Color Profile" +msgstr "ICC Renk Profili Ata" + +#: ../plug-ins/common/lcms.c:1461 +msgid "_Assign" +msgstr "_Ata" + +#: ../plug-ins/common/lcms.c:1478 +msgid "Current Color Profile" +msgstr "Varolan Renk Profili" + +#: ../plug-ins/common/lcms.c:1493 +msgid "Convert to" +msgstr "Şuna dönüştür:" + +#: ../plug-ins/common/lcms.c:1493 +msgid "Assign" +msgstr "Ata" + +#: ../plug-ins/common/lcms.c:1517 +msgid "_Rendering Intent:" +msgstr "Sonuç _Taranıyor:" + +#: ../plug-ins/common/lcms.c:1533 +msgid "_Black Point Compensation" +msgstr "_Siyah Nokta Telafisi" + +#: ../plug-ins/common/lcms.c:1575 +msgid "Destination profile is not for RGB color space." +msgstr "Varış profili RGB renk alanı için değil" + +#: ../plug-ins/common/lens-apply.c:108 +msgid "Simulate an elliptical lens over the image" +msgstr "Resim üzerindeki oval merceklere benzetim yap" + +#: ../plug-ins/common/lens-apply.c:114 +msgid "Apply _Lens..." +msgstr "_Merceği Uygula..." + +#: ../plug-ins/common/lens-apply.c:181 +msgid "Applying lens" +msgstr "Mercek uygulanıyor" + +#: ../plug-ins/common/lens-apply.c:393 +msgid "Lens Effect" +msgstr "Mercek Etkisi" + +#: ../plug-ins/common/lens-apply.c:427 +msgid "_Keep original surroundings" +msgstr "Özgün ortamı _sakla" + +#: ../plug-ins/common/lens-apply.c:442 +msgid "_Set surroundings to index 0" +msgstr "Ortam göstergesini 0 _ayarla" + +#: ../plug-ins/common/lens-apply.c:443 +msgid "_Set surroundings to background color" +msgstr "Ortamı artalan rengine _ayarla" + +#: ../plug-ins/common/lens-apply.c:458 +msgid "_Make surroundings transparent" +msgstr "Ortamı saydam _Yap" + +#: ../plug-ins/common/lens-apply.c:475 +msgid "_Lens refraction index:" +msgstr "_Mercek sapma göstergesi:" + +#: ../plug-ins/common/lens-distortion.c:115 +msgid "Corrects lens distortion" +msgstr "Mercek bozulmasını düzelt" + +#: ../plug-ins/common/lens-distortion.c:120 +msgid "Lens Distortion..." +msgstr "Mercek Bozulması..." + +#: ../plug-ins/common/lens-distortion.c:383 +msgid "Lens distortion" +msgstr "Mercek bozulması" + +#: ../plug-ins/common/lens-distortion.c:483 +msgid "Lens Distortion" +msgstr "Mercek Bozulması" + +#: ../plug-ins/common/lens-distortion.c:521 +msgid "_Main:" +msgstr "_Ana:" + +#: ../plug-ins/common/lens-distortion.c:535 +msgid "_Edge:" +msgstr "_Kenar:" + +#: ../plug-ins/common/lens-distortion.c:549 ../plug-ins/flame/flame.c:1237 +msgid "_Zoom:" +msgstr "_Yakınlaştır:" + +#: ../plug-ins/common/lens-distortion.c:563 +msgid "_Brighten:" +msgstr "_Parlak:" + +#: ../plug-ins/common/lens-distortion.c:577 +msgid "_X shift:" +msgstr "_X kayması:" + +#: ../plug-ins/common/lens-distortion.c:591 +msgid "_Y shift:" +msgstr "_Y kayması" + +#: ../plug-ins/common/lens-flare.c:188 +msgid "Add a lens flare effect" +msgstr "Mercek parlaması etkisi ekle" + +#: ../plug-ins/common/lens-flare.c:195 +msgid "Lens _Flare..." +msgstr "Mercek Parlaması..." + +#: ../plug-ins/common/lens-flare.c:270 +msgid "Render lens flare" +msgstr "Mercek parlamayı tara" + +#: ../plug-ins/common/lens-flare.c:306 +msgid "Lens Flare" +msgstr "Mercek Parlaması" + +#: ../plug-ins/common/lens-flare.c:753 +msgid "Center of Flare Effect" +msgstr "Parlama Etkisi Merkezi" + +#: ../plug-ins/common/lens-flare.c:793 ../plug-ins/common/nova.c:484 +msgid "Show _position" +msgstr "_Konumu göster" + +#: ../plug-ins/common/mail.c:188 +msgid "Send the image by email" +msgstr "Görüntüyü eposta ile gönder" + +#: ../plug-ins/common/mail.c:194 +msgid "Send by E_mail..." +msgstr "_Posta ile Gönder..." + +#: ../plug-ins/common/mail.c:407 +msgid "Send by Email" +msgstr "E-posta ile Gönder" + +#: ../plug-ins/common/mail.c:412 +msgid "_Send" +msgstr "_Gönder" + +#: ../plug-ins/common/mail.c:444 +msgid "_Filename:" +msgstr "_Dosya adı:" + +#: ../plug-ins/common/mail.c:456 +msgid "_To:" +msgstr "_Kime:" + +#: ../plug-ins/common/mail.c:470 +msgid "_From:" +msgstr "Kim_den:" + +#: ../plug-ins/common/mail.c:482 +msgid "S_ubject:" +msgstr "K_onu:" + +#: ../plug-ins/common/mail.c:591 +msgid "some sort of error with the file extension or lack thereof" +msgstr "dosya uzantısı ya da eksiklik nedeniyle bazı hatalar" + +#: ../plug-ins/common/mail.c:725 +#, c-format +msgid "Could not start sendmail (%s)" +msgstr "(%s) posta gönderme başlatılamadı" + +#: ../plug-ins/common/max-rgb.c:90 +msgid "Reduce image to pure red, green, and blue" +msgstr "Görüntüyü saf kırmızı, yeşil, ve maviye azaltın" + +#: ../plug-ins/common/max-rgb.c:95 +msgid "Maxim_um RGB..." +msgstr "Maksim_um RGB..." + +#: ../plug-ins/common/max-rgb.c:134 ../plug-ins/common/noise-hsv.c:158 +msgid "Can only operate on RGB drawables." +msgstr "Sadece RGB çizimlerinde işlem görür" + +#: ../plug-ins/common/max-rgb.c:234 +msgid "Max RGB" +msgstr "Maks RGB" + +#: ../plug-ins/common/max-rgb.c:259 +msgid "Maximum RGB Value" +msgstr "Azami RGB Değeri" + +#: ../plug-ins/common/max-rgb.c:292 +msgid "_Hold the maximal channels" +msgstr "Azami kanalları _Tut" + +#: ../plug-ins/common/max-rgb.c:295 +msgid "Ho_ld the minimal channels" +msgstr "Asgari kanalları t_ut" + +#: ../plug-ins/common/mosaic.c:359 +msgid "Convert the image into irregular tiles" +msgstr "Resmi düzensiz zemine çevir" + +#: ../plug-ins/common/mosaic.c:364 +msgid "_Mosaic..." +msgstr "_Mozaik..." + +#. progress bar for gradient finding +#: ../plug-ins/common/mosaic.c:502 +msgid "Finding edges" +msgstr "Kenarları bulma" + +#. Progress bar for rendering tiles +#: ../plug-ins/common/mosaic.c:556 +msgid "Rendering tiles" +msgstr "Zemin taranıyor" + +#: ../plug-ins/common/mosaic.c:589 +msgid "Mosaic" +msgstr "Mozaik" + +#: ../plug-ins/common/mosaic.c:629 +msgid "Squares" +msgstr "Kareler" + +#: ../plug-ins/common/mosaic.c:630 +msgid "Hexagons" +msgstr "Altıgenler" + +#: ../plug-ins/common/mosaic.c:631 +msgid "Octagons & squares" +msgstr "Sekizgenler & kareler" + +#: ../plug-ins/common/mosaic.c:632 +msgid "Triangles" +msgstr "Üçgenler" + +#: ../plug-ins/common/mosaic.c:640 +msgid "_Tiling primitives:" +msgstr "_Döşeme basitliği:" + +#: ../plug-ins/common/mosaic.c:648 +msgid "Tile _size:" +msgstr "Döşeme _boyutu::" + +#: ../plug-ins/common/mosaic.c:660 ../plug-ins/common/tile-glass.c:303 +msgid "Tile _height:" +msgstr "Döşeme _yüksekliği:" + +#: ../plug-ins/common/mosaic.c:673 +msgid "Til_e spacing:" +msgstr "Döşem_e boşluğu:" + +#: ../plug-ins/common/mosaic.c:685 +msgid "Tile _neatness:" +msgstr "Döşeme _düzeni:" + +#: ../plug-ins/common/mosaic.c:698 +msgid "Light _direction:" +msgstr "Işık _yönü:" + +#: ../plug-ins/common/mosaic.c:710 +msgid "Color _variation:" +msgstr "Renk _Değişimi" + +#: ../plug-ins/common/mosaic.c:739 +msgid "Co_lor averaging" +msgstr "Re_nk ortalaması" + +#: ../plug-ins/common/mosaic.c:752 +msgid "Allo_w tile splitting" +msgstr "Döşeme bölünmesine İ_zin ver" + +#: ../plug-ins/common/mosaic.c:765 +msgid "_Pitted surfaces" +msgstr "_Çukurlaşmış yüzeyler" + +#: ../plug-ins/common/mosaic.c:778 +msgid "_FG/BG lighting" +msgstr "Artalan/Önalan ışıması" + +#: ../plug-ins/common/newsprint.c:127 +msgid "Round" +msgstr "Yuvarlama" + +#: ../plug-ins/common/newsprint.c:136 +msgid "Line" +msgstr "Çizgi" + +#: ../plug-ins/common/newsprint.c:145 ../plug-ins/flame/flame.c:760 +msgid "Diamond" +msgstr "Elmas" + +#: ../plug-ins/common/newsprint.c:153 +msgid "PS Square (Euclidean Dot)" +msgstr "PS karesi (Euclidean Nokta)" + +#: ../plug-ins/common/newsprint.c:162 +msgid "PS Diamond" +msgstr "PS Karo" + +#: ../plug-ins/common/newsprint.c:332 +msgid "_Grey" +msgstr "_Gri" + +#: ../plug-ins/common/newsprint.c:345 +msgid "R_ed" +msgstr "Kırmı_zı" + +#: ../plug-ins/common/newsprint.c:374 +msgid "C_yan" +msgstr "Tu_rkuaz" + +#: ../plug-ins/common/newsprint.c:382 +msgid "Magen_ta" +msgstr "Kırmızım_sı Mor" + +#: ../plug-ins/common/newsprint.c:390 +msgid "_Yellow" +msgstr "_Sarı" + +#: ../plug-ins/common/newsprint.c:411 +msgid "Luminance" +msgstr "Işıklılık" + +#: ../plug-ins/common/newsprint.c:517 +msgid "Halftone the image to give newspaper-like effect" +msgstr "Resmi klişeleştir gazete etkisi vermek için" + +#: ../plug-ins/common/newsprint.c:526 +msgid "Newsprin_t..." +msgstr "Gazete _Kağıdı" + +#: ../plug-ins/common/newsprint.c:627 ../plug-ins/common/newsprint.c:1188 +msgid "Newsprint" +msgstr "Gazete kağıdı" + +#: ../plug-ins/common/newsprint.c:1031 +msgid "_Spot function:" +msgstr "_Nokta işlevi" + +#. resolution settings +#: ../plug-ins/common/newsprint.c:1240 +msgid "Resolution" +msgstr "Çözünürlük" + +#: ../plug-ins/common/newsprint.c:1259 +msgid "_Input SPI:" +msgstr "_Girdi SPI:" + +#: ../plug-ins/common/newsprint.c:1273 +msgid "O_utput LPI:" +msgstr "Ç_ıktı LPI:" + +#: ../plug-ins/common/newsprint.c:1286 +msgid "C_ell size:" +msgstr "H_ücre boyutu:" + +#. screen settings +#: ../plug-ins/common/newsprint.c:1299 +#: ../plug-ins/gradient-flare/gradient-flare.c:554 +msgid "Screen" +msgstr "Ekran" + +#: ../plug-ins/common/newsprint.c:1318 +msgid "B_lack pullout (%):" +msgstr "_Siyah çekilme (%):" + +#: ../plug-ins/common/newsprint.c:1340 +msgid "Separate to:" +msgstr "Boşluk bırak:" + +#: ../plug-ins/common/newsprint.c:1344 +msgid "_RGB" +msgstr "_RGB" + +#: ../plug-ins/common/newsprint.c:1361 +msgid "C_MYK" +msgstr "C_MYK" + +#: ../plug-ins/common/newsprint.c:1378 +msgid "I_ntensity" +msgstr "_Yoğunluk" + +#: ../plug-ins/common/newsprint.c:1403 +msgid "_Lock channels" +msgstr "Kanalları _kilitle" + +#: ../plug-ins/common/newsprint.c:1416 +msgid "_Factory Defaults" +msgstr "_Fabrika Ayarları" + +#. anti-alias control +#: ../plug-ins/common/newsprint.c:1442 ../plug-ins/gfig/gfig-dialog.c:1256 +msgid "Antialiasing" +msgstr "Yumuşatma" + +#: ../plug-ins/common/newsprint.c:1450 +msgid "O_versample:" +msgstr "_Aşırı örnekleme:" + +#: ../plug-ins/common/nl-filter.c:118 +msgid "Nonlinear swiss army knife filter" +msgstr "Doğrusal olmayan İsviçre Çakısı süzgeci" + +#: ../plug-ins/common/nl-filter.c:124 +msgid "_NL Filter..." +msgstr "_NL Süzgeci..." + +#: ../plug-ins/common/nl-filter.c:952 ../plug-ins/common/nl-filter.c:1015 +msgid "NL Filter" +msgstr "NL Süzgeci" + +#: ../plug-ins/common/nl-filter.c:1044 +msgid "Filter" +msgstr "Süzgeç" + +#: ../plug-ins/common/nl-filter.c:1048 +msgid "_Alpha trimmed mean" +msgstr "_Görünür düzenlenmiş ortalama" + +#: ../plug-ins/common/nl-filter.c:1050 +msgid "Op_timal estimation" +msgstr "En _iyi tahmin" + +#: ../plug-ins/common/nl-filter.c:1052 +msgid "_Edge enhancement" +msgstr "_Kenar pekiştirme" + +#: ../plug-ins/common/nl-filter.c:1077 +msgid "A_lpha:" +msgstr "Gö_rünür:" + +#: ../plug-ins/common/noise-hsv.c:103 +msgid "Randomize hue/saturation/value independently" +msgstr "Renk tonu/doygunluk/değerler arasında bağımsız ve rasgele seç" + +#: ../plug-ins/common/noise-hsv.c:108 +msgid "HSV Noise..." +msgstr "HSV Gürültüsü..." + +#: ../plug-ins/common/noise-hsv.c:215 ../plug-ins/common/noise-hsv.c:361 +msgid "HSV Noise" +msgstr "HSV Gürültüsü" + +#: ../plug-ins/common/noise-hsv.c:397 +msgid "_Holdness:" +msgstr "_Kavranmama:" + +#: ../plug-ins/common/noise-hsv.c:409 +msgid "H_ue:" +msgstr "_Renk özü" + +#: ../plug-ins/common/noise-randomize.c:102 +msgid "Random Hurl" +msgstr "Rastgele Savurma" + +#: ../plug-ins/common/noise-randomize.c:103 +msgid "Random Pick" +msgstr "Rastgele Karıştırma" + +#: ../plug-ins/common/noise-randomize.c:104 +msgid "Random Slur" +msgstr "Rasgele Leke" + +#: ../plug-ins/common/noise-randomize.c:202 +msgid "Completely randomize a fraction of pixels" +msgstr "Benek kesirini tamamen rasgele dağıt" + +#: ../plug-ins/common/noise-randomize.c:204 +msgid "Randomly interchange some pixels with neighbors" +msgstr "Benekleri yanındakiler ile rasgele değiştir" + +#: ../plug-ins/common/noise-randomize.c:206 +msgid "Randomly slide some pixels downward (similar to melting)" +msgstr "Bazı benekleri rasgele aşağı kaydır (erimeye benzer)" + +#: ../plug-ins/common/noise-randomize.c:233 +msgid "_Hurl..." +msgstr "Savurma..." + +#: ../plug-ins/common/noise-randomize.c:245 +msgid "_Pick..." +msgstr "_Seç..." + +#: ../plug-ins/common/noise-randomize.c:257 +msgid "_Slur..." +msgstr "_Leke..." + +#: ../plug-ins/common/noise-randomize.c:771 +#: ../plug-ins/common/noise-solid.c:602 +msgid "_Random seed:" +msgstr "_Rasgele besleme" + +#: ../plug-ins/common/noise-randomize.c:780 +msgid "R_andomization (%):" +msgstr "R_assallık (%):" + +#: ../plug-ins/common/noise-randomize.c:783 +msgid "Percentage of pixels to be filtered" +msgstr "Süzülecek beneklerin yüzdesi" + +#: ../plug-ins/common/noise-randomize.c:795 +msgid "R_epeat:" +msgstr "_Tekrarlama:" + +#: ../plug-ins/common/noise-randomize.c:798 +msgid "Number of times to apply filter" +msgstr "Süzgecin uygulanacağı sayı" + +#: ../plug-ins/common/noise-rgb.c:144 +msgid "Distort colors by random amounts" +msgstr "Rasgele miktarda renkleri boz" + +#: ../plug-ins/common/noise-rgb.c:154 +msgid "_RGB Noise..." +msgstr "_RGB Gürültüsü..." + +#: ../plug-ins/common/noise-rgb.c:282 +msgid "Adding noise" +msgstr "Gürültü ekleme" + +#: ../plug-ins/common/noise-rgb.c:448 +msgid "RGB Noise" +msgstr "RGB Gürültüsü" + +#: ../plug-ins/common/noise-rgb.c:481 +msgid "Co_rrelated noise" +msgstr "İl_işkilendirilmiş gürültü" + +#: ../plug-ins/common/noise-rgb.c:496 +msgid "_Independent RGB" +msgstr "_Bağımsız RGB" + +#: ../plug-ins/common/noise-rgb.c:520 ../plug-ins/common/noise-rgb.c:524 +msgid "_Gray:" +msgstr "_Gri:" + +#: ../plug-ins/common/noise-rgb.c:550 +#, c-format +msgid "Channel #%d:" +msgstr "Kanal #%d:" + +#: ../plug-ins/common/noise-solid.c:176 +msgid "Create a random cloud-like texture" +msgstr "Rastgel bulut-benzeri bir doku oluştur" + +#: ../plug-ins/common/noise-solid.c:182 +msgid "_Solid Noise..." +msgstr "_Düz Gürültü..." + +#. Dialog initialization +#: ../plug-ins/common/noise-solid.c:315 ../plug-ins/common/noise-solid.c:563 +msgid "Solid Noise" +msgstr "Düz Gürültü" + +#: ../plug-ins/common/noise-solid.c:615 +msgid "_Detail:" +msgstr "_Ayrıntı:" + +#. Turbulent +#: ../plug-ins/common/noise-solid.c:625 +msgid "T_urbulent" +msgstr "_Çalkantı" + +#. Tilable +#: ../plug-ins/common/noise-solid.c:639 +msgid "T_ilable" +msgstr "_Döşenebilir" + +#: ../plug-ins/common/noise-solid.c:654 +msgid "_X size:" +msgstr "_X boyutu:" + +#: ../plug-ins/common/noise-solid.c:667 +msgid "_Y size:" +msgstr "_Y boyutu:" + +#: ../plug-ins/common/noise-spread.c:89 +msgid "Move pixels around randomly" +msgstr "Rasgele bir şekilde benekleri etrafında hareket ettir" + +#: ../plug-ins/common/noise-spread.c:98 +msgid "Sp_read..." +msgstr "Ya_y..." + +#: ../plug-ins/common/noise-spread.c:181 +msgid "Spreading" +msgstr "Yayılma" + +#: ../plug-ins/common/noise-spread.c:346 +msgid "Spread" +msgstr "Etrafa Yay" + +#: ../plug-ins/common/noise-spread.c:371 +msgid "Spread Amount" +msgstr "Yayılma Miktarı" + +#: ../plug-ins/common/nova.c:168 +msgid "Add a starburst to the image" +msgstr "Resmi yıldız yağmuru ekle" + +#: ../plug-ins/common/nova.c:177 +msgid "Super_nova..." +msgstr "Süper_nova..." + +#: ../plug-ins/common/nova.c:261 +msgid "Rendering supernova" +msgstr "Süpernova taranıyor" + +#: ../plug-ins/common/nova.c:304 +msgid "Supernova" +msgstr "Süpernova" + +#: ../plug-ins/common/nova.c:349 +msgid "Supernova Color Picker" +msgstr "Süpernova Renk Seçici" + +#: ../plug-ins/common/nova.c:378 +msgid "_Spokes:" +msgstr "_Tekerlek:" + +#: ../plug-ins/common/nova.c:393 +msgid "R_andom hue:" +msgstr "Ra_sgele renk tonu:" + +#: ../plug-ins/common/nova.c:446 +msgid "Center of Nova" +msgstr "Nova Merkezi" + +#: ../plug-ins/common/oilify.c:119 ../plug-ins/common/oilify.c:134 +msgid "Smear colors to simulate an oil painting" +msgstr "Yağlı boya benzetmesi yapmak için renkleri sıva" + +#: ../plug-ins/common/oilify.c:125 +msgid "Oili_fy..." +msgstr "Yağ_lama..." + +#: ../plug-ins/common/oilify.c:247 +msgid "Oil painting" +msgstr "Yağlı boya" + +#: ../plug-ins/common/oilify.c:777 +msgid "Oilify" +msgstr "Yağlama" + +#: ../plug-ins/common/oilify.c:815 +msgid "_Mask size:" +msgstr "_Maske boyutu:" + +#. +#. * Mask-size map check button +#. +#: ../plug-ins/common/oilify.c:830 +msgid "Use m_ask-size map:" +msgstr "M_aske-boyutu eşlemi kullan:" + +#: ../plug-ins/common/oilify.c:867 ../plug-ins/common/sinus.c:922 +msgid "_Exponent:" +msgstr "_Üst:" + +#. +#. * Exponent map check button +#. +#: ../plug-ins/common/oilify.c:882 +msgid "Use e_xponent map:" +msgstr "M_at eşlem kullan:" + +#. +#. * Intensity algorithm check button +#. +#: ../plug-ins/common/oilify.c:918 +msgid "_Use intensity algorithm" +msgstr "Yoğunluk algoritmasını _kullan" + +#: ../plug-ins/common/photocopy.c:153 +msgid "Simulate color distortion produced by a copy machine" +msgstr "Fotokopi makinesinden çıkmış gibi siyah-beyaz yap" + +#: ../plug-ins/common/photocopy.c:158 +msgid "_Photocopy..." +msgstr "_Fotokopi..." + +#: ../plug-ins/common/photocopy.c:839 +msgid "Photocopy" +msgstr "Fotokopi" + +#: ../plug-ins/common/photocopy.c:890 ../plug-ins/common/sharpen.c:511 +#: ../plug-ins/common/softglow.c:697 +msgid "_Sharpness:" +msgstr "_Keskinlik:" + +#: ../plug-ins/common/photocopy.c:904 +msgid "Percent _black:" +msgstr "_Siyah yüzdesi:" + +#: ../plug-ins/common/photocopy.c:918 +msgid "Percent _white:" +msgstr "_Beyaz yüzdesi:" + +#: ../plug-ins/common/pixelize.c:164 +msgid "Simplify image into an array of solid-colored squares" +msgstr "Resmi düz_renkli kareler dizisine basitleştir" + +#: ../plug-ins/common/pixelize.c:171 +msgid "_Pixelize..." +msgstr "_Benekleştir..." + +#: ../plug-ins/common/pixelize.c:273 +msgid "Pixelizing" +msgstr "Benekleştiriliyor" + +#: ../plug-ins/common/pixelize.c:316 +msgid "Pixelize" +msgstr "Benekleştir" + +#: ../plug-ins/common/pixelize.c:352 +msgid "Pixel _width:" +msgstr "Benek _genişliği:" + +#: ../plug-ins/common/pixelize.c:357 +msgid "Pixel _height:" +msgstr "Benek _yüksekliği:" + +#: ../plug-ins/common/plasma.c:176 +msgid "Create a random plasma texture" +msgstr "Rastgele plasma dokusu oluştur" + +#: ../plug-ins/common/plasma.c:181 +msgid "_Plasma..." +msgstr "_Plasma..." + +#: ../plug-ins/common/plasma.c:263 ../plug-ins/common/plasma.c:300 +msgid "Plasma" +msgstr "Plazma" + +#: ../plug-ins/common/plasma.c:337 +msgid "Random _seed:" +msgstr "Rasgele _besleme:" + +#: ../plug-ins/common/plasma.c:348 +msgid "T_urbulence:" +msgstr "Türbülans:" + +#: ../plug-ins/common/plugin-browser.c:134 +msgid "Display information about plug-ins" +msgstr "Eklentiler hakkındaki bilgiyi göster" + +#: ../plug-ins/common/plugin-browser.c:144 +msgid "_Plug-In Browser" +msgstr "Eklenti Tarayıcısı" + +#: ../plug-ins/common/plugin-browser.c:372 +msgid "Searching by name" +msgstr "Ada göre aranıyor" + +#: ../plug-ins/common/plugin-browser.c:386 +#, c-format +msgid "%d plug-in" +msgid_plural "%d plug-ins" +msgstr[0] "%d eklenti" + +#: ../plug-ins/common/plugin-browser.c:395 +msgid "No matches for your query" +msgstr "Sorgunuza uygun eşleşme yok" + +#: ../plug-ins/common/plugin-browser.c:398 +#, c-format +msgid "%d plug-in matches your query" +msgid_plural "%d plug-ins match your query" +msgstr[0] "Sorgunuzla eşleşen %d eklenti" + +#: ../plug-ins/common/plugin-browser.c:529 +msgid "No matches" +msgstr "Eşleşme yok" + +#: ../plug-ins/common/plugin-browser.c:554 +msgid "Plug-In Browser" +msgstr "Eklenti Tarayıcı" + +#: ../plug-ins/common/plugin-browser.c:597 +msgid "Name" +msgstr "İsim" + +#: ../plug-ins/common/plugin-browser.c:605 +#: ../plug-ins/common/plugin-browser.c:668 +msgid "Menu Path" +msgstr "Menü Yolu" + +#: ../plug-ins/common/plugin-browser.c:613 +#: ../plug-ins/common/plugin-browser.c:677 +msgid "Image Types" +msgstr "Görüntü Türleri" + +#: ../plug-ins/common/plugin-browser.c:623 +#: ../plug-ins/common/plugin-browser.c:686 +msgid "Installation Date" +msgstr "Kurulum Tarihi" + +#: ../plug-ins/common/plugin-browser.c:647 +msgid "List View" +msgstr "Liste Görünümü" + +#: ../plug-ins/common/plugin-browser.c:709 +msgid "Tree View" +msgstr "Ağaç Görünümü" + +#: ../plug-ins/common/polar-coords.c:156 +msgid "Convert image to or from polar coordinates" +msgstr "Görüntüyü kutupsal derinliğe ya da kutupsal derinlikten dönüştür" + +#: ../plug-ins/common/polar-coords.c:163 +msgid "P_olar Coordinates..." +msgstr "K_utupsal Derinlik..." + +#: ../plug-ins/common/polar-coords.c:360 +msgid "Polar coordinates" +msgstr "Kutupsal derinlik" + +#: ../plug-ins/common/polar-coords.c:592 +msgid "Polar Coordinates" +msgstr "Kutupsal Derinlik" + +#: ../plug-ins/common/polar-coords.c:631 +msgid "Circle _depth in percent:" +msgstr "Yüzde olarak daire _derinliği:" + +#: ../plug-ins/common/polar-coords.c:643 +msgid "Offset _angle:" +msgstr "Konum_açısı:" + +#: ../plug-ins/common/polar-coords.c:658 +msgid "_Map backwards" +msgstr "_Eşlem geçmişi" + +#: ../plug-ins/common/polar-coords.c:664 +msgid "" +"If checked the mapping will begin at the right side, as opposed to beginning " +"at the left." +msgstr "Eğer eşleme işaretliyse sağ tarafta başlayacak, değilse sol tarafta." + +#: ../plug-ins/common/polar-coords.c:675 +msgid "Map from _top" +msgstr "Ü_stten eşlem" + +#: ../plug-ins/common/polar-coords.c:681 +msgid "" +"If unchecked the mapping will put the bottom row in the middle and the top " +"row on the outside. If checked it will be the opposite." +msgstr "" +"Eğer işaretli değilse eşleme alt satırı dışarıda orta ve üst satıra koyacak. " +"İşaretli ise tam tersi." + +#: ../plug-ins/common/polar-coords.c:693 +msgid "To _polar" +msgstr "_Kutupsala" + +#: ../plug-ins/common/polar-coords.c:699 +msgid "" +"If unchecked the image will be circularly mapped onto a rectangle. If " +"checked the image will be mapped onto a circle." +msgstr "" +"Eğer işaretli değilse resim bir dikdörtgen içerisine dairesel olarak " +"eşlenecek. Eğer işaretli ise resim daire içerisine eşlenecek." + +#: ../plug-ins/common/procedure-browser.c:83 +msgid "List available procedures in the PDB" +msgstr "PDB'deki kullanılabilir yönergeleri listele" + +#: ../plug-ins/common/procedure-browser.c:88 +msgid "Procedure _Browser" +msgstr "Yönerge _Tarayıcı" + +#: ../plug-ins/common/procedure-browser.c:126 +msgid "Procedure Browser" +msgstr "Yönerge Tarayıcı" + +#: ../plug-ins/common/qbist.c:402 +msgid "Generate a huge variety of abstract patterns" +msgstr "Soyut desenlerin geniş bir çeşitliliğini oluştur" + +#: ../plug-ins/common/qbist.c:410 +msgid "_Qbist..." +msgstr "_Qbist..." + +#: ../plug-ins/common/qbist.c:511 +msgid "Qbist" +msgstr "Qbist" + +#: ../plug-ins/common/qbist.c:707 +msgid "Load QBE File" +msgstr "QBE Dosyasını Yükle" + +#: ../plug-ins/common/qbist.c:749 +msgid "Save as QBE File" +msgstr "QBE dosyası olarak kaydet" + +#: ../plug-ins/common/qbist.c:803 +msgid "G-Qbist" +msgstr "G-Qbist" + +#: ../plug-ins/common/red-eye-removal.c:105 +msgid "Remove the red eye effect caused by camera flashes" +msgstr "Kamera ışığından kaynaklanan gözlerdeki kırmızılığı kaldır" + +#: ../plug-ins/common/red-eye-removal.c:116 +msgid "_Red Eye Removal..." +msgstr "_Kırmızı Göz Kaldırma..." + +#: ../plug-ins/common/red-eye-removal.c:142 +msgid "Red Eye Removal" +msgstr "Kırmızı Göz Kaldırma" + +#: ../plug-ins/common/red-eye-removal.c:170 +#: ../plug-ins/common/unsharp-mask.c:706 ../plug-ins/common/wind.c:1008 +#: ../plug-ins/imagemap/imap_preferences.c:441 +#: ../plug-ins/map-object/map-object-ui.c:585 +msgid "_Threshold:" +msgstr "_Eşik:" + +#: ../plug-ins/common/red-eye-removal.c:176 +msgid "Threshold for the red eye color to remove." +msgstr "Kırmızı göz rengini kaldırma eşiği." + +#: ../plug-ins/common/red-eye-removal.c:181 +msgid "Manually selecting the eyes may improve the results." +msgstr "" +"Gözleri elle belirtmek daha iyi bir netice alınmasına imkan sağlayacaktır." + +#: ../plug-ins/common/red-eye-removal.c:301 +msgid "Removing red eye" +msgstr "Kırmızı göz kaldırılıyor" + +#: ../plug-ins/common/ripple.c:129 +msgid "Displace pixels in a ripple pattern" +msgstr "Dalga deseninde beneklerin yerini değiştirir" + +#: ../plug-ins/common/ripple.c:136 +msgid "_Ripple..." +msgstr "_Dalgacık..." + +#: ../plug-ins/common/ripple.c:226 +msgid "Rippling" +msgstr "Dalgacıklandırma" + +#: ../plug-ins/common/ripple.c:468 +msgid "Ripple" +msgstr "Dalgacık" + +#: ../plug-ins/common/ripple.c:526 +msgid "_Retain tilability" +msgstr "_Döşenebilirliği tut" + +#. Edges toggle box +#: ../plug-ins/common/ripple.c:560 +msgid "Edges" +msgstr "Kenarlar" + +#: ../plug-ins/common/ripple.c:566 +msgid "_Blank" +msgstr "_Sil" + +#. Wave toggle box +#: ../plug-ins/common/ripple.c:588 +msgid "Wave Type" +msgstr "Dalga Türü" + +#: ../plug-ins/common/ripple.c:592 +msgid "Saw_tooth" +msgstr "Testere_dişleri" + +#: ../plug-ins/common/ripple.c:593 +msgid "S_ine" +msgstr "S_inüs" + +#: ../plug-ins/common/ripple.c:616 +msgid "_Period:" +msgstr "_Dönem:" + +#: ../plug-ins/common/ripple.c:629 +msgid "A_mplitude:" +msgstr "G_enişlik:" + +#: ../plug-ins/common/ripple.c:642 +msgid "Phase _shift:" +msgstr "Faz _kayması:" + +#: ../plug-ins/common/rotate.c:413 +msgid "You can not rotate the whole image if there's a selection." +msgstr "Bütün resmi seçili bir alanda çeviremezsiniz." + +#: ../plug-ins/common/rotate.c:420 +msgid "You can not rotate the whole image if there's a floating selection." +msgstr "Eğer serbest seçim var ise tüm resmi döndüremezsiniz." + +#: ../plug-ins/common/rotate.c:431 +msgid "Sorry, channels and masks can not be rotated." +msgstr "Üzgünüz, kanal ve maskeler çevrilemez." + +#: ../plug-ins/common/rotate.c:437 +msgid "Rotating" +msgstr "Döndürme" + +#: ../plug-ins/common/sample-colorize.c:298 +msgid "Colorize image using a sample image as a guide" +msgstr "Örnek bir resmi rehber alarak resmi renklendirir" + +#: ../plug-ins/common/sample-colorize.c:303 +msgid "_Sample Colorize..." +msgstr "_Örnek Renklendirme..." + +#: ../plug-ins/common/sample-colorize.c:1318 +msgid "Sample Colorize" +msgstr "Örnek Renklendirme" + +#: ../plug-ins/common/sample-colorize.c:1323 +msgid "Get _Sample Colors" +msgstr "Örnek Renkler _Al" + +#. layer combo_box (Dst) +#: ../plug-ins/common/sample-colorize.c:1352 +msgid "Destination:" +msgstr "Hedef:" + +#. layer combo_box (Sample) +#: ../plug-ins/common/sample-colorize.c:1368 +msgid "Sample:" +msgstr "Örnek:" + +#: ../plug-ins/common/sample-colorize.c:1378 +msgid "From reverse gradient" +msgstr "Ters eğimden" + +#: ../plug-ins/common/sample-colorize.c:1383 +msgid "From gradient" +msgstr "Eğimden" + +#. check button +#: ../plug-ins/common/sample-colorize.c:1404 +#: ../plug-ins/common/sample-colorize.c:1431 +msgid "Show selection" +msgstr "Seçimi göster" + +#. check button +#: ../plug-ins/common/sample-colorize.c:1415 +#: ../plug-ins/common/sample-colorize.c:1442 +msgid "Show color" +msgstr "Rengi göster" + +#: ../plug-ins/common/sample-colorize.c:1555 +msgid "Input levels:" +msgstr "Girdi düzeyleri:" + +#: ../plug-ins/common/sample-colorize.c:1605 +msgid "Output levels:" +msgstr "Çıktı düzeyleri:" + +#. check button +#: ../plug-ins/common/sample-colorize.c:1645 +msgid "Hold intensity" +msgstr "Yoğunluğu sabitle" + +#. check button +#: ../plug-ins/common/sample-colorize.c:1656 +msgid "Original intensity" +msgstr "Özgün yoğunluk" + +#. check button +#: ../plug-ins/common/sample-colorize.c:1674 +msgid "Use subcolors" +msgstr "Yardımcı renkleri kullan" + +#. check button +#: ../plug-ins/common/sample-colorize.c:1685 +msgid "Smooth samples" +msgstr "Pürüzsüz örnekler" + +#: ../plug-ins/common/sample-colorize.c:2657 +msgid "Sample analyze" +msgstr "Basit çözümleme" + +#: ../plug-ins/common/sample-colorize.c:3035 +msgid "Remap colorized" +msgstr "Renklendirilen yeniden eşleme" + +#: ../plug-ins/common/screenshot.c:240 +msgid "Create an image from an area of the screen" +msgstr "Ekran alanında görüntü oluşutur" + +#: ../plug-ins/common/screenshot.c:253 +msgid "_Screenshot..." +msgstr "_Ekran Görüntüsü..." + +#: ../plug-ins/common/screenshot.c:417 +msgid "Error selecting the window" +msgstr "Pencere seçme hatası" + +#: ../plug-ins/common/screenshot.c:778 +msgid "Importing screenshot" +msgstr "Ekran görüntüsü içe aktarılıyor" + +#: ../plug-ins/common/screenshot.c:804 ../plug-ins/common/screenshot.c:1060 +msgid "Screenshot" +msgstr "Ekran Görüntüsü" + +#: ../plug-ins/common/screenshot.c:845 +msgid "Mouse Pointer" +msgstr "Fare İmleci" + +#: ../plug-ins/common/screenshot.c:949 +msgid "Specified window not found" +msgstr "Belirtilen pencere bulunamadı" + +#: ../plug-ins/common/screenshot.c:975 +msgid "There was an error taking the screenshot." +msgstr "Ekran görüntüsü almada bir hata oluştu" + +#: ../plug-ins/common/screenshot.c:1069 +msgid "S_nap" +msgstr "Enstantane fotoğraf" + +#: ../plug-ins/common/screenshot.c:1099 +msgid "After the delay, the screenshot is taken." +msgstr "Gecikmenin ardından ekran görüntüsü alınır." + +#: ../plug-ins/common/screenshot.c:1101 +msgid "" +"After the delay, drag your mouse to select the region for the screenshot." +msgstr "" +"Gecikmeden sonra, ekran görüntüsü alınacak bölgeyi seçmek için farenizi " +"sürükleyin." + +#: ../plug-ins/common/screenshot.c:1104 +msgid "At the end of the delay, click in a window to snap it." +msgstr "" +"Gecikme süresinin sonunda, görüntü almak için pencerenin içine tıkla." + +#. Area +#: ../plug-ins/common/screenshot.c:1110 +msgid "Area" +msgstr "Alan" + +#: ../plug-ins/common/screenshot.c:1121 +msgid "Take a screenshot of a single _window" +msgstr "T_ek bir pencerenin ekran görüntüsünü al" + +#: ../plug-ins/common/screenshot.c:1140 +msgid "Include window _decoration" +msgstr "Pencere süslemesini kapsa" + +#: ../plug-ins/common/screenshot.c:1158 +msgid "Take a screenshot of the entire _screen" +msgstr "_Tüm ekranın ekran görüntüsünü al" + +#: ../plug-ins/common/screenshot.c:1177 +msgid "Include _mouse pointer" +msgstr "_Fare imlecini kapsa" + +#: ../plug-ins/common/screenshot.c:1197 +msgid "Select a _region to grab" +msgstr "Yakanacak _bölge seç" + +#. Delay +#: ../plug-ins/common/screenshot.c:1212 +msgid "Delay" +msgstr "Gecikme" + +#. this is the unit label of a spinbutton +#: ../plug-ins/common/screenshot.c:1234 +msgid "seconds" +msgstr "saniye" + +#: ../plug-ins/common/semi-flatten.c:68 +msgid "Replace partial transparency with the current background color" +msgstr "Mevcut artalan rengini kısmi saydamlık ile değiştir" + +#: ../plug-ins/common/semi-flatten.c:75 +msgid "_Semi-Flatten" +msgstr "_Yarı-Düzleştir" + +#: ../plug-ins/common/semi-flatten.c:118 +msgid "Semi-Flattening" +msgstr "Yarı-Düzleştirme" + +#: ../plug-ins/common/sharpen.c:113 +msgid "Make image sharper (less powerful than Unsharp Mask)" +msgstr "Resmi keskinleştirir (Keskin Netleştirmeye göre daha güçsüzdür)" + +#: ../plug-ins/common/sharpen.c:120 +msgid "_Sharpen..." +msgstr "_Keskinleştir..." + +#. +#. * Let the user know what we're doing... +#. +#: ../plug-ins/common/sharpen.c:307 +msgid "Sharpening" +msgstr "Keskinleştiriliyor" + +#: ../plug-ins/common/sharpen.c:476 +msgid "Sharpen" +msgstr "Keskinleştir" + +#: ../plug-ins/common/shift.c:101 +msgid "Shift each row of pixels by a random amount" +msgstr "Her benek satırını rasgele miktarda kaydır" + +#: ../plug-ins/common/shift.c:108 +msgid "_Shift..." +msgstr "_Ötele..." + +#: ../plug-ins/common/shift.c:189 +msgid "Shifting" +msgstr "Öteleme" + +#: ../plug-ins/common/shift.c:355 +msgid "Shift" +msgstr "Ötele" + +#: ../plug-ins/common/shift.c:388 +msgid "Shift _horizontally" +msgstr "Yatay olarak _kaydır" + +#: ../plug-ins/common/shift.c:391 +msgid "Shift _vertically" +msgstr "_Dikey olarak kaydır" + +#: ../plug-ins/common/shift.c:422 +msgid "Shift _amount:" +msgstr "Kaydırma _miktarı:" + +#: ../plug-ins/common/sinus.c:186 +msgid "Generate complex sinusoidal textures" +msgstr "Karmaşık sinüsoid desen oluştur" + +#: ../plug-ins/common/sinus.c:191 +msgid "_Sinus..." +msgstr "_Sinüs..." + +#: ../plug-ins/common/sinus.c:284 +msgid "Sinus: rendering" +msgstr "Sinüs: taranıyor" + +#. Create Main window with a vbox +#. ============================== +#: ../plug-ins/common/sinus.c:648 +msgid "Sinus" +msgstr "Sinüs" + +#: ../plug-ins/common/sinus.c:690 +msgid "Drawing Settings" +msgstr "Çizim Ayarları" + +#: ../plug-ins/common/sinus.c:700 +msgid "_X scale:" +msgstr "_X ölçeği:" + +#: ../plug-ins/common/sinus.c:709 +msgid "_Y scale:" +msgstr "_Y ölçeği:" + +#: ../plug-ins/common/sinus.c:718 +msgid "Co_mplexity:" +msgstr "Ka_rmaşıklık:" + +#: ../plug-ins/common/sinus.c:728 +msgid "Calculation Settings" +msgstr "Hesaplama Ayarları" + +#: ../plug-ins/common/sinus.c:741 +msgid "R_andom seed:" +msgstr "R_astgele tohum:" + +#: ../plug-ins/common/sinus.c:750 +msgid "_Force tiling?" +msgstr "Döşemeye _zorlansın mı?" + +#: ../plug-ins/common/sinus.c:763 +msgid "_Ideal" +msgstr "_İdeal" + +#: ../plug-ins/common/sinus.c:764 +msgid "_Distorted" +msgstr "_Bozulmuş" + +#: ../plug-ins/common/sinus.c:782 ../plug-ins/common/sinus.c:798 +#: ../plug-ins/imagemap/imap_preferences.c:422 +msgid "Colors" +msgstr "Renkler" + +#. if in grey scale, the colors are necessarily black and white +#: ../plug-ins/common/sinus.c:791 +msgid "The colors are white and black." +msgstr "Renkler beyaz ve siyah." + +#: ../plug-ins/common/sinus.c:802 +msgid "Bl_ack & white" +msgstr "Si_yah & Beyaz" + +#: ../plug-ins/common/sinus.c:804 +msgid "_Foreground & background" +msgstr "_Önalan ve Artalan" + +#: ../plug-ins/common/sinus.c:806 +msgid "C_hoose here:" +msgstr "Burada s_eç:" + +#: ../plug-ins/common/sinus.c:819 +msgid "First color" +msgstr "İlk renk" + +#: ../plug-ins/common/sinus.c:829 +msgid "Second color" +msgstr "İkinci renk" + +#: ../plug-ins/common/sinus.c:842 +msgid "Alpha Channels" +msgstr "Görünür Kanalları" + +#: ../plug-ins/common/sinus.c:855 +msgid "F_irst color:" +msgstr "İ_lk renk:" + +#: ../plug-ins/common/sinus.c:870 +msgid "S_econd color:" +msgstr "İ_kinci renk:" + +#: ../plug-ins/common/sinus.c:886 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:904 +msgid "Co_lors" +msgstr "_Renkler" + +#: ../plug-ins/common/sinus.c:895 +msgid "Blend Settings" +msgstr "Harmanlama Ayarları" + +#: ../plug-ins/common/sinus.c:908 +msgid "L_inear" +msgstr "D_oğrusal" + +#: ../plug-ins/common/sinus.c:909 +msgid "Bili_near" +msgstr "Çift_doğrusal:" + +#: ../plug-ins/common/sinus.c:910 +msgid "Sin_usoidal" +msgstr "Sin_üs eğrisi şeklinde" + +#: ../plug-ins/common/sinus.c:932 +msgid "_Blend" +msgstr "_Harmanlama" + +#: ../plug-ins/common/sinus.c:1049 +msgid "Do _preview" +msgstr "Önizleme" + +#: ../plug-ins/common/smooth-palette.c:83 +msgid "Derive a smooth color palette from the image" +msgstr "Görüntüden düzgün renk paleti türet" + +#: ../plug-ins/common/smooth-palette.c:88 +msgid "Smoo_th Palette..." +msgstr "_Pürüzsüz Palet..." + +#: ../plug-ins/common/smooth-palette.c:179 +msgid "Deriving smooth palette" +msgstr "Düzgün palet türetme" + +#: ../plug-ins/common/smooth-palette.c:412 +msgid "Smooth Palette" +msgstr "Pürüzsüz Palet..." + +#: ../plug-ins/common/smooth-palette.c:452 +msgid "_Search depth:" +msgstr "_Arama derinliği:" + +#: ../plug-ins/common/softglow.c:134 +msgid "Simulate glow by making highlights intense and fuzzy" +msgstr "Vurgulamaları yoğun ve bulanık yaparak parıltı benzetimi yap" + +#: ../plug-ins/common/softglow.c:139 +msgid "_Softglow..." +msgstr "Hafif _Parıltı..." + +#: ../plug-ins/common/softglow.c:632 +msgid "Softglow" +msgstr "Hafif Parıltı" + +#: ../plug-ins/common/softglow.c:669 +msgid "_Glow radius:" +msgstr "Parıltı _yarıçapı:" + +#: ../plug-ins/common/sparkle.c:178 +msgid "Turn bright spots into starry sparkles" +msgstr "Aydınlık noktaları yıldızlı parıltıya çevir" + +#: ../plug-ins/common/sparkle.c:186 +msgid "_Sparkle..." +msgstr "_Parıltı..." + +#: ../plug-ins/common/sparkle.c:223 +msgid "Region selected for filter is empty" +msgstr "Süzgeç için seçilen alan boş" + +#: ../plug-ins/common/sparkle.c:299 +msgid "Sparkling" +msgstr "Parlak" + +#: ../plug-ins/common/sparkle.c:337 +msgid "Sparkle" +msgstr "Parıltı" + +#: ../plug-ins/common/sparkle.c:373 +msgid "Luminosity _threshold:" +msgstr "Işıklılık _eşiği:" + +#: ../plug-ins/common/sparkle.c:376 +msgid "Adjust the luminosity threshold" +msgstr "Işıklılık eşiğini ayarla" + +#: ../plug-ins/common/sparkle.c:386 +msgid "F_lare intensity:" +msgstr "I_şıma şiddeti:" + +#: ../plug-ins/common/sparkle.c:389 +msgid "Adjust the flare intensity" +msgstr "Parlama yoğunluğunu ayarla" + +#: ../plug-ins/common/sparkle.c:399 +msgid "_Spike length:" +msgstr "_Çivi uzunluğu:" + +#: ../plug-ins/common/sparkle.c:402 +msgid "Adjust the spike length" +msgstr "Çivi uzunluğunu ayarla" + +#: ../plug-ins/common/sparkle.c:412 +msgid "Sp_ike points:" +msgstr "Çivi _noktaları:" + +#: ../plug-ins/common/sparkle.c:415 +msgid "Adjust the number of spikes" +msgstr "Çivilerin sayısını ayarla" + +#: ../plug-ins/common/sparkle.c:425 +msgid "Spi_ke angle (-1: random):" +msgstr "Çivi a_çısı (-1: rasgele):" + +#: ../plug-ins/common/sparkle.c:428 +msgid "Adjust the spike angle (-1 causes a random angle to be chosen)" +msgstr "Çivi açısını ayarla (-1 rasgele açı seçilmesini sağlar)" + +#: ../plug-ins/common/sparkle.c:439 +msgid "Spik_e density:" +msgstr "Çiv_i kalınlığı:" + +#: ../plug-ins/common/sparkle.c:442 +msgid "Adjust the spike density" +msgstr "Çivi kalınlığını ayarla" + +#: ../plug-ins/common/sparkle.c:452 +msgid "Tr_ansparency:" +msgstr "S_aydamlık:" + +#: ../plug-ins/common/sparkle.c:455 +msgid "Adjust the opacity of the spikes" +msgstr "Çivilerin opaklığını ayarla" + +#: ../plug-ins/common/sparkle.c:465 +msgid "_Random hue:" +msgstr "_Rastgele renk tonu:" + +#: ../plug-ins/common/sparkle.c:468 +msgid "Adjust how much the hue should be changed randomly" +msgstr "Ne kadar renk tonunun rasgele olarak değişmesi gerektiğini ayarla" + +#: ../plug-ins/common/sparkle.c:478 +msgid "Rando_m saturation:" +msgstr "Rastgel_e doygunluk" + +#: ../plug-ins/common/sparkle.c:481 +msgid "Adjust how much the saturation should be changed randomly" +msgstr "Ne kadar doygunluğun rastgele değiştirilmesi gerektiğini ayarlayın" + +#: ../plug-ins/common/sparkle.c:498 +msgid "_Preserve luminosity" +msgstr "Işıklılığı _koru" + +#: ../plug-ins/common/sparkle.c:505 +msgid "Should the luminosity be preserved?" +msgstr "Işıklılık korunmalı mı?" + +#: ../plug-ins/common/sparkle.c:514 +msgid "In_verse" +msgstr "Te_rs" + +#: ../plug-ins/common/sparkle.c:520 +msgid "Should the effect be inversed?" +msgstr "Etkiler tersine çevrilsin mi?" + +#: ../plug-ins/common/sparkle.c:529 +msgid "A_dd border" +msgstr "Kenarlık e_kle" + +#: ../plug-ins/common/sparkle.c:535 +msgid "Draw a border of spikes around the image" +msgstr "Resmin çevresindeki çivilerin kenarlığını çiz" + +#: ../plug-ins/common/sparkle.c:549 +msgid "_Natural color" +msgstr "_Doğal renk" + +#: ../plug-ins/common/sparkle.c:550 +msgid "_Foreground color" +msgstr "_Önalan rengi" + +#: ../plug-ins/common/sparkle.c:551 +msgid "_Background color" +msgstr "_Artalan rengi" + +#: ../plug-ins/common/sparkle.c:558 +msgid "Use the color of the image" +msgstr "Görüntünün rengini kullan" + +#: ../plug-ins/common/sparkle.c:559 +msgid "Use the foreground color" +msgstr "Önplan rengini kullan" + +#: ../plug-ins/common/sparkle.c:560 +msgid "Use the background color" +msgstr "Artalan rengini kullan" + +#: ../plug-ins/common/sphere-designer.c:291 +#: ../plug-ins/gimpressionist/general.c:166 +msgid "Solid" +msgstr "Kesiksiz" + +#: ../plug-ins/common/sphere-designer.c:292 +msgid "Checker" +msgstr "Denetleyici" + +#: ../plug-ins/common/sphere-designer.c:293 +msgid "Marble" +msgstr "Mermer" + +#: ../plug-ins/common/sphere-designer.c:294 +msgid "Lizard" +msgstr "Kertenkele" + +#: ../plug-ins/common/sphere-designer.c:295 +msgid "Phong" +msgstr "Phong" + +#: ../plug-ins/common/sphere-designer.c:296 ../plug-ins/flame/flame.c:774 +msgid "Noise" +msgstr "Parazit" + +#: ../plug-ins/common/sphere-designer.c:297 +msgid "Wood" +msgstr "Ağaç" + +#: ../plug-ins/common/sphere-designer.c:298 ../plug-ins/flame/flame.c:758 +msgid "Spiral" +msgstr "Spiral" + +#: ../plug-ins/common/sphere-designer.c:299 +msgid "Spots" +msgstr "Lekeler" + +#: ../plug-ins/common/sphere-designer.c:1742 +#: ../plug-ins/common/sphere-designer.c:2693 +msgid "Texture" +msgstr "Doku" + +#: ../plug-ins/common/sphere-designer.c:1744 +msgid "Bumpmap" +msgstr "Derinlik etkisi" + +#: ../plug-ins/common/sphere-designer.c:1746 +#: ../plug-ins/common/sphere-designer.c:2695 +msgid "Light" +msgstr "Hafif" + +#: ../plug-ins/common/sphere-designer.c:2010 +#, c-format +msgid "File '%s' is not a valid save file." +msgstr "'%s' dosyası geçerli bir kayıt dosyası değil." + +#: ../plug-ins/common/sphere-designer.c:2190 +msgid "Open File" +msgstr "Dosya Aç" + +#: ../plug-ins/common/sphere-designer.c:2190 +msgid "Save File" +msgstr "Dosyayı Kaydet" + +#: ../plug-ins/common/sphere-designer.c:2547 +msgid "Sphere Designer" +msgstr "Küre Tasarımcısı" + +#: ../plug-ins/common/sphere-designer.c:2678 +msgid "Properties" +msgstr "Özellikler" + +#: ../plug-ins/common/sphere-designer.c:2694 +msgid "Bump" +msgstr "Tümsek" + +#. row labels +#: ../plug-ins/common/sphere-designer.c:2702 +#: ../plug-ins/lighting/lighting-ui.c:405 +msgid "Type:" +msgstr "Tür:" + +#: ../plug-ins/common/sphere-designer.c:2721 +msgid "Texture:" +msgstr "Doku:" + +#: ../plug-ins/common/sphere-designer.c:2726 +msgid "Colors:" +msgstr "Renkler:" + +#: ../plug-ins/common/sphere-designer.c:2729 +#: ../plug-ins/common/sphere-designer.c:2740 +msgid "Color Selection Dialog" +msgstr "Renk Seçim Kutusu" + +#. Scale +#: ../plug-ins/common/sphere-designer.c:2751 +#: ../plug-ins/gimpressionist/paper.c:194 +#: ../plug-ins/ifs-compose/ifs-compose.c:554 +msgid "Scale:" +msgstr "Ölçekle:" + +#: ../plug-ins/common/sphere-designer.c:2759 +msgid "Turbulence:" +msgstr "Türbülans:" + +#: ../plug-ins/common/sphere-designer.c:2766 +msgid "Amount:" +msgstr "Adet:" + +#: ../plug-ins/common/sphere-designer.c:2773 +msgid "Exp.:" +msgstr "Üstel:" + +#: ../plug-ins/common/sphere-designer.c:2780 +msgid "Transformations" +msgstr "Dönüşümler" + +#: ../plug-ins/common/sphere-designer.c:2796 +#: ../plug-ins/map-object/map-object-ui.c:1143 +msgid "Scale X:" +msgstr "X Ölçeği:" + +#: ../plug-ins/common/sphere-designer.c:2803 +msgid "Scale Y:" +msgstr "Y Ölçeği:" + +#: ../plug-ins/common/sphere-designer.c:2809 +msgid "Scale Z:" +msgstr "Z Ölçeği:" + +#: ../plug-ins/common/sphere-designer.c:2816 +msgid "Rotate X:" +msgstr "X Dönmesi:" + +#: ../plug-ins/common/sphere-designer.c:2823 +msgid "Rotate Y:" +msgstr "Y Dönmesi:" + +#: ../plug-ins/common/sphere-designer.c:2830 +msgid "Rotate Z:" +msgstr "Z Dönmesi:" + +#: ../plug-ins/common/sphere-designer.c:2837 +msgid "Position X:" +msgstr "X Konumu:" + +#: ../plug-ins/common/sphere-designer.c:2844 +msgid "Position Y:" +msgstr "Y Konumu:" + +#: ../plug-ins/common/sphere-designer.c:2851 +msgid "Position Z:" +msgstr "Z Konumu:" + +#: ../plug-ins/common/sphere-designer.c:2966 +msgid "Rendering sphere" +msgstr "Küre taranıyor" + +#: ../plug-ins/common/sphere-designer.c:3016 +msgid "Create an image of a textured sphere" +msgstr "Dokumalı küre resmi oluştur" + +#: ../plug-ins/common/sphere-designer.c:3023 +msgid "Sphere _Designer..." +msgstr "Küre _Tasarımcısı..." + +#: ../plug-ins/common/sphere-designer.c:3083 +msgid "Region selected for plug-in is empty" +msgstr "Eklenti için seçilen alan boş" + +#: ../plug-ins/common/threshold-alpha.c:85 +msgid "Make transparency all-or-nothing" +msgstr "Tümünü/hiçbirini saydamlaştır" + +#: ../plug-ins/common/threshold-alpha.c:90 +msgid "_Threshold Alpha..." +msgstr "_Görünür Eşik..." + +#: ../plug-ins/common/threshold-alpha.c:131 +msgid "The layer has its alpha channel locked." +msgstr "Görünür kanalı olan katman kilitlendi." + +#: ../plug-ins/common/threshold-alpha.c:137 +msgid "RGBA/GRAYA drawable is not selected." +msgstr "Çizilebilir RGBA/GRAYA seçili değil." + +#: ../plug-ins/common/threshold-alpha.c:165 +msgid "Coloring transparency" +msgstr "Saydamlığı renklendirme" + +#: ../plug-ins/common/threshold-alpha.c:248 +msgid "Threshold Alpha" +msgstr "Görünür Eşik" + +#: ../plug-ins/common/threshold-alpha.c:283 +msgid "Threshold:" +msgstr "Eşik:" + +#: ../plug-ins/common/tile-glass.c:124 +msgid "Simulate distortion caused by square glass tiles" +msgstr "Kare cam döşemeleri sebebiyle oluşan bozulma benzetimi yap" + +#: ../plug-ins/common/tile-glass.c:130 +msgid "_Glass Tile..." +msgstr "_Cam Döşeme..." + +#: ../plug-ins/common/tile-glass.c:210 ../plug-ins/common/tile-glass.c:250 +msgid "Glass Tile" +msgstr "Cam Döşeme" + +#: ../plug-ins/common/tile-glass.c:289 +msgid "Tile _width:" +msgstr "Döşeme _genişliği:" + +#: ../plug-ins/common/tile-paper.c:243 ../plug-ins/common/tile-paper.c:556 +msgid "Paper Tile" +msgstr "Parçalara Ayır" + +#: ../plug-ins/common/tile-paper.c:269 +msgid "Division" +msgstr "Bölme" + +#: ../plug-ins/common/tile-paper.c:319 +msgid "Fractional Pixels" +msgstr "Kesirli Benekler" + +#: ../plug-ins/common/tile-paper.c:324 +msgid "_Background" +msgstr "A_rtalan" + +#: ../plug-ins/common/tile-paper.c:326 +msgid "_Ignore" +msgstr "_Yoksay" + +#: ../plug-ins/common/tile-paper.c:328 +msgid "_Force" +msgstr "_Zorla" + +#: ../plug-ins/common/tile-paper.c:335 +msgid "C_entering" +msgstr "O_rtalama" + +#: ../plug-ins/common/tile-paper.c:350 +msgid "Movement" +msgstr "Hareket Yönü" + +#: ../plug-ins/common/tile-paper.c:363 +msgid "_Max (%):" +msgstr "_Azami (%):" + +#: ../plug-ins/common/tile-paper.c:369 +msgid "_Wrap around" +msgstr "Etrafını _sar" + +#: ../plug-ins/common/tile-paper.c:379 +msgid "Background Type" +msgstr "Artalan Türü" + +#: ../plug-ins/common/tile-paper.c:386 +msgid "I_nverted image" +msgstr "Te_rs görüntü" + +#: ../plug-ins/common/tile-paper.c:388 +msgid "Im_age" +msgstr "Gö_rüntü" + +#: ../plug-ins/common/tile-paper.c:390 +msgid "Fo_reground color" +msgstr "Ön_alan rengi" + +#: ../plug-ins/common/tile-paper.c:392 +msgid "Bac_kground color" +msgstr "Ar_talan rengi" + +#: ../plug-ins/common/tile-paper.c:394 +msgid "S_elect here:" +msgstr "Burayı s_eç:" + +#: ../plug-ins/common/tile-paper.c:401 +msgid "Background Color" +msgstr "Artalan Rengi" + +#: ../plug-ins/common/tile-paper.c:846 +msgid "Cut image into paper tiles, and slide them" +msgstr "Resmi dörtgen şeklinde parçalara ayırır ve onları rastgele döşer" + +#: ../plug-ins/common/tile-paper.c:851 +msgid "September 31, 1999" +msgstr "31 Eylül 1999" + +#: ../plug-ins/common/tile-paper.c:852 +msgid "_Paper Tile..." +msgstr "_Parçalara Ayır..." + +#: ../plug-ins/common/tile-seamless.c:67 +msgid "Alters edges to make the image seamlessly tileable" +msgstr "Resme, resmin kenarlarını yumuşak olarak döşer" + +#: ../plug-ins/common/tile-seamless.c:73 +msgid "_Make Seamless" +msgstr "_Yumuşak Döşe" + +#: ../plug-ins/common/tile-seamless.c:338 +msgid "Tiler" +msgstr "Döşeyici" + +#: ../plug-ins/common/tile-small.c:215 +msgid "Tile image into smaller versions of the original" +msgstr "Resmin küçük hallerini düzenli olarak döşer" + +#: ../plug-ins/common/tile-small.c:220 +msgid "_Small Tiles..." +msgstr "_Küçük Döşemeler..." + +#: ../plug-ins/common/tile-small.c:263 +msgid "Region selected for filter is empty." +msgstr "Süzgeç için seçilen alan boş." + +#. Set the tile cache size +#: ../plug-ins/common/tile-small.c:321 ../plug-ins/common/tile.c:190 +msgid "Tiling" +msgstr "Döşeme" + +#. Get the preview image +#: ../plug-ins/common/tile-small.c:364 +msgid "Small Tiles" +msgstr "Küçük Döşemeler" + +#. Area for buttons etc +#. Flip +#: ../plug-ins/common/tile-small.c:414 +#: ../plug-ins/ifs-compose/ifs-compose.c:610 +msgid "Flip" +msgstr "Çevir" + +#: ../plug-ins/common/tile-small.c:462 +msgid "A_ll tiles" +msgstr "T_üm parçalar" + +#: ../plug-ins/common/tile-small.c:476 +msgid "Al_ternate tiles" +msgstr "Değ_işimli parçalar" + +#: ../plug-ins/common/tile-small.c:490 +msgid "_Explicit tile" +msgstr "_Seçili parça" + +#: ../plug-ins/common/tile-small.c:496 +msgid "Ro_w:" +msgstr "Satı_r:" + +#: ../plug-ins/common/tile-small.c:520 +msgid "Col_umn:" +msgstr "Süt_un:" + +#: ../plug-ins/common/tile-small.c:572 +msgid "O_pacity:" +msgstr "I_şık geçirmezlik:" + +#. Lower frame saying howmany segments +#: ../plug-ins/common/tile-small.c:581 +msgid "Number of Segments" +msgstr "Parçaların Sayısı" + +#: ../plug-ins/common/tile.c:101 +msgid "Create an array of copies of the image" +msgstr "Görüntü kopyalarının dizisini oluştur" + +#: ../plug-ins/common/tile.c:111 +msgid "_Tile..." +msgstr "_Döşe..." + +#: ../plug-ins/common/tile.c:401 +msgid "Tile" +msgstr "Döşe" + +#: ../plug-ins/common/tile.c:422 +msgid "Tile to New Size" +msgstr "Yeni Boyuta Döşe" + +#: ../plug-ins/common/tile.c:444 +msgid "C_reate new image" +msgstr "Yeni görüntü o_luştur" + +#: ../plug-ins/common/unit-editor.c:94 +msgid "Saved" +msgstr "Kaydedildi" + +#: ../plug-ins/common/unit-editor.c:94 +msgid "" +"A unit definition will only be saved before GIMP exits if this column is " +"checked." +msgstr "" +"Öğe tanımı GIMP'ten çıkmadan önce eğer bu sütun işaretlenirse kaydedilecek." + +#: ../plug-ins/common/unit-editor.c:96 +msgid "ID" +msgstr "Kimlik" + +#: ../plug-ins/common/unit-editor.c:96 +msgid "" +"This string will be used to identify a unit in GIMP's configuration files." +msgstr "" +"Bu dizgi GIMP'in yapılandırma dosyasındaki bir birimi saptamak için " +"kullanılacaktır." + +#: ../plug-ins/common/unit-editor.c:98 +msgid "Factor" +msgstr "Etken" + +#: ../plug-ins/common/unit-editor.c:98 +msgid "How many units make up an inch." +msgstr "Kaç birim inç yapıyor." + +#: ../plug-ins/common/unit-editor.c:99 +msgid "Digits" +msgstr "Sayılar" + +#: ../plug-ins/common/unit-editor.c:99 +msgid "" +"This field is a hint for numerical input fields. It specifies how many " +"decimal digits the input field should provide to get approximately the same " +"accuracy as an \"inch\" input field with two decimal digits." +msgstr "" +"Bu alan, sayısal girdi alanları için bir tavsiyedir. Girdi alanının yaklaşık " +"olarak aynı doğrulukta olan iki ondalık haneli \"inç\" girdi alanı için ne " +"kadar ondalık hane sağlaması gerektiğini belirtir." + +#: ../plug-ins/common/unit-editor.c:104 +msgid "Symbol" +msgstr "Sembol" + +#: ../plug-ins/common/unit-editor.c:104 +msgid "" +"The unit's symbol if it has one (e.g. \"'\" for inches). The unit's " +"abbreviation is used if doesn't have a symbol." +msgstr "" +"Birim sembolü varsa kullanılır (örn. \"'\" inç'ler için). Eğer sembol yoksa " +"birim kısaltması kullanılır." + +#: ../plug-ins/common/unit-editor.c:107 +msgid "Abbreviation" +msgstr "Kısaltma" + +#: ../plug-ins/common/unit-editor.c:107 +msgid "The unit's abbreviation (e.g. \"cm\" for centimeters)." +msgstr "Birimin kısaltması (ör: santimetre için \"cm\")." + +#: ../plug-ins/common/unit-editor.c:109 +msgid "Singular" +msgstr "Tekil" + +#: ../plug-ins/common/unit-editor.c:109 +msgid "The unit's singular form." +msgstr "Birimin tekil formu." + +#: ../plug-ins/common/unit-editor.c:110 +msgid "Plural" +msgstr "Çoğul" + +#: ../plug-ins/common/unit-editor.c:110 +msgid "The unit's plural form." +msgstr "Birimin çoğul formu." + +#: ../plug-ins/common/unit-editor.c:121 +msgid "Create a new unit from scratch" +msgstr "BAştan yeni birim oluştur" + +#: ../plug-ins/common/unit-editor.c:127 +msgid "Create a new unit using the currently selected unit as template" +msgstr "Mevcut seçili birimi şablon olarak kullanıp yeni bir birim oluşturun" + +#: ../plug-ins/common/unit-editor.c:145 +msgid "Create or alter units used in GIMP" +msgstr "GIMP'de kullanılmış birimleri oluştur yada değiştir" + +#: ../plug-ins/common/unit-editor.c:150 +msgid "U_nits" +msgstr "B_irimler" + +#: ../plug-ins/common/unit-editor.c:208 +msgid "Add a New Unit" +msgstr "Yeni Birim Ekle" + +#: ../plug-ins/common/unit-editor.c:237 +msgid "_ID:" +msgstr "Ki_mlik:" + +#: ../plug-ins/common/unit-editor.c:248 +msgid "_Factor:" +msgstr "_Etken:" + +#: ../plug-ins/common/unit-editor.c:258 +msgid "_Digits:" +msgstr "_Sayılar:" + +#: ../plug-ins/common/unit-editor.c:270 +msgid "_Symbol:" +msgstr "_Sembol:" + +#: ../plug-ins/common/unit-editor.c:282 +msgid "_Abbreviation:" +msgstr "K_ısaltma:" + +#: ../plug-ins/common/unit-editor.c:294 +msgid "Si_ngular:" +msgstr "Te_kil:" + +#: ../plug-ins/common/unit-editor.c:306 +msgid "_Plural:" +msgstr "_Çoğul:" + +#: ../plug-ins/common/unit-editor.c:349 +msgid "Incomplete input" +msgstr "Tamamlanmamış girdi" + +#: ../plug-ins/common/unit-editor.c:352 +msgid "Please fill in all text fields." +msgstr "Lütfen tüm metin alanlarını doldurun." + +#: ../plug-ins/common/unit-editor.c:409 +msgid "Unit Editor" +msgstr "Birim Düzenleyici" + +#: ../plug-ins/common/unsharp-mask.c:128 +msgid "The most widely useful method for sharpening an image" +msgstr "Bir görüntüyü keskinleştirmek için kullanışlı en yaygın yöntem" + +#: ../plug-ins/common/unsharp-mask.c:138 +msgid "_Unsharp Mask..." +msgstr "_Keskin Netleştirme..." + +#: ../plug-ins/common/unsharp-mask.c:475 +msgid "Merging" +msgstr "Birleştiriliyor" + +#: ../plug-ins/common/unsharp-mask.c:644 +msgid "Unsharp Mask" +msgstr "Keskin Netleştirme" + +#: ../plug-ins/common/value-invert.c:90 +msgid "Invert the brightness of each pixel" +msgstr "Her bir beneğin parlaklığını tersine çevir" + +#: ../plug-ins/common/value-invert.c:104 +msgid "_Value Invert" +msgstr "_Değeri tersine çevir" + +#: ../plug-ins/common/value-invert.c:191 +msgid "Value Invert" +msgstr "Değeri tersine çevir" + +#: ../plug-ins/common/value-propagate.c:189 +msgid "More _white (larger value)" +msgstr "Daha fazla _beyaz (daha büyük değer)" + +#: ../plug-ins/common/value-propagate.c:192 +msgid "More blac_k (smaller value)" +msgstr "Daha fazla siya_h (daha az değer)" + +#: ../plug-ins/common/value-propagate.c:195 +msgid "_Middle value to peaks" +msgstr "_Orta değer en yüksek değere" + +#: ../plug-ins/common/value-propagate.c:198 +msgid "_Foreground to peaks" +msgstr "_Önalan en yüksek değere" + +#: ../plug-ins/common/value-propagate.c:201 +msgid "O_nly foreground" +msgstr "S_adece önplan" + +#: ../plug-ins/common/value-propagate.c:204 +msgid "Only b_ackground" +msgstr "Sadece a_rkaplan" + +#: ../plug-ins/common/value-propagate.c:207 +msgid "Mor_e opaque" +msgstr "Daha faz_la opak" + +#: ../plug-ins/common/value-propagate.c:210 +msgid "More t_ransparent" +msgstr "Daha fazla ş_effalık" + +#: ../plug-ins/common/value-propagate.c:233 +msgid "Propagate certain colors to neighboring pixels" +msgstr "Belirli renkleri komşu beneklere çoğalt" + +#: ../plug-ins/common/value-propagate.c:238 +msgid "_Value Propagate..." +msgstr "Yayılma _Değeri..." + +#: ../plug-ins/common/value-propagate.c:245 +msgid "Shrink lighter areas of the image" +msgstr "Görüntünün aydınlık alanlarını küçültmek" + +#: ../plug-ins/common/value-propagate.c:250 +msgid "E_rode" +msgstr "A_şındır" + +#: ../plug-ins/common/value-propagate.c:257 +msgid "Grow lighter areas of the image" +msgstr "Görüntünün aydınlık alanlarını büyütmek" + +#: ../plug-ins/common/value-propagate.c:262 +msgid "_Dilate" +msgstr "_Genişletme" + +#: ../plug-ins/common/value-propagate.c:473 +#: ../plug-ins/common/value-propagate.c:1086 +msgid "Value Propagate" +msgstr "Yayılma Değeri" + +#. Parameter settings +#: ../plug-ins/common/value-propagate.c:1152 +msgid "Propagate" +msgstr "Yayımla" + +#: ../plug-ins/common/value-propagate.c:1165 +msgid "Lower t_hreshold:" +msgstr "Alt eş_ik" + +#: ../plug-ins/common/value-propagate.c:1177 +msgid "_Upper threshold:" +msgstr "Üs_t eşik" + +#: ../plug-ins/common/value-propagate.c:1189 +msgid "_Propagating rate:" +msgstr "_Yayılma oranı:" + +#: ../plug-ins/common/value-propagate.c:1200 +msgid "To l_eft" +msgstr "S_ola" + +#: ../plug-ins/common/value-propagate.c:1203 +msgid "To _right" +msgstr "S_ağa" + +#: ../plug-ins/common/value-propagate.c:1206 +msgid "To _top" +msgstr "Ü_ste" + +#: ../plug-ins/common/value-propagate.c:1209 +msgid "To _bottom" +msgstr "A_lta" + +#: ../plug-ins/common/value-propagate.c:1218 +msgid "Propagating _alpha channel" +msgstr "_Görünür kanalı çoğaltılıyor" + +#: ../plug-ins/common/value-propagate.c:1229 +msgid "Propagating value channel" +msgstr "Değer kanalı çoğaltılıyor" + +#: ../plug-ins/common/van-gogh-lic.c:566 ../plug-ins/common/van-gogh-lic.c:641 +msgid "Van Gogh (LIC)" +msgstr "Van Gogh (LIC)" + +#: ../plug-ins/common/van-gogh-lic.c:666 +msgid "Effect Channel" +msgstr "Etki Kanalı" + +#: ../plug-ins/common/van-gogh-lic.c:673 +msgid "_Brightness" +msgstr "_Parlaklık" + +#: ../plug-ins/common/van-gogh-lic.c:679 +msgid "Effect Operator" +msgstr "Etki İşleci" + +#: ../plug-ins/common/van-gogh-lic.c:684 +msgid "_Derivative" +msgstr "_Türemiş" + +#: ../plug-ins/common/van-gogh-lic.c:685 +msgid "_Gradient" +msgstr "_Gradyan" + +#: ../plug-ins/common/van-gogh-lic.c:691 +msgid "Convolve" +msgstr "Evriştirme" + +#: ../plug-ins/common/van-gogh-lic.c:696 +msgid "_With white noise" +msgstr "Beyaz gürültü i_le" + +#: ../plug-ins/common/van-gogh-lic.c:697 +msgid "W_ith source image" +msgstr "Kaynak görüntü i_le" + +#: ../plug-ins/common/van-gogh-lic.c:716 +msgid "_Effect image:" +msgstr "_Etki görüntüsü:" + +#: ../plug-ins/common/van-gogh-lic.c:727 +msgid "_Filter length:" +msgstr "_Süzgeç uzunluğu:" + +#: ../plug-ins/common/van-gogh-lic.c:736 +msgid "_Noise magnitude:" +msgstr "_Gürültü büyüklüğü:" + +#: ../plug-ins/common/van-gogh-lic.c:745 +msgid "In_tegration steps:" +msgstr "Bü_tünleştirme adımları" + +#: ../plug-ins/common/van-gogh-lic.c:754 +msgid "_Minimum value:" +msgstr "_Asgari değer:" + +#: ../plug-ins/common/van-gogh-lic.c:763 +msgid "M_aximum value:" +msgstr "M_aksimum değer:" + +#: ../plug-ins/common/van-gogh-lic.c:809 +msgid "Special effects that nobody understands" +msgstr "Kimsenin anlamadığı özel etkiler" + +#: ../plug-ins/common/van-gogh-lic.c:814 +msgid "_Van Gogh (LIC)..." +msgstr "_Van Gogh (LIC)..." + +#: ../plug-ins/common/video.c:42 +msgid "_Staggered" +msgstr "_Aşamalı" + +#: ../plug-ins/common/video.c:43 +msgid "_Large staggered" +msgstr "_Geniş aşamalı" + +#: ../plug-ins/common/video.c:44 +msgid "S_triped" +msgstr "Ç_izgili" + +#: ../plug-ins/common/video.c:45 +msgid "_Wide-striped" +msgstr "_Geniş-çizgili" + +#: ../plug-ins/common/video.c:46 +msgid "Lo_ng-staggered" +msgstr "U_zun-aşamalı" + +#: ../plug-ins/common/video.c:47 +msgid "_3x3" +msgstr "_3x3" + +#: ../plug-ins/common/video.c:48 +msgid "Larg_e 3x3" +msgstr "Büyü_k 3x3" + +#: ../plug-ins/common/video.c:49 +msgid "_Hex" +msgstr "_Hex" + +#: ../plug-ins/common/video.c:50 +msgid "_Dots" +msgstr "_Noktalar" + +#: ../plug-ins/common/video.c:1807 +msgid "Simulate distortion produced by a fuzzy or low-res monitor" +msgstr "" +"Bulanıklık ya da düşük çözünürlüklü monitör üretimi bozulma benzetimi yap" + +#: ../plug-ins/common/video.c:1814 +msgid "Vi_deo..." +msgstr "Vi_deo..." + +#: ../plug-ins/common/video.c:1886 ../plug-ins/common/video.c:2017 +msgid "Video" +msgstr "Video" + +#. frame for the radio buttons +#: ../plug-ins/common/video.c:2039 +msgid "Video Pattern" +msgstr "Video Deseni" + +#: ../plug-ins/common/video.c:2083 +msgid "_Additive" +msgstr "_Katkı" + +#: ../plug-ins/common/video.c:2093 +msgid "_Rotated" +msgstr "_Döndürülmüş" + +#: ../plug-ins/common/warp.c:233 +msgid "Twist or smear image in many different ways" +msgstr "Resmi bir çok farklı biçimde bük ya da lekele" + +#: ../plug-ins/common/warp.c:241 +msgid "_Warp..." +msgstr "_Eğrilik..." + +#: ../plug-ins/common/warp.c:376 +msgid "Warp" +msgstr "Sapma" + +#: ../plug-ins/common/warp.c:397 +msgid "Basic Options" +msgstr "Temel Seçenekler" + +#: ../plug-ins/common/warp.c:419 +msgid "Step size:" +msgstr "Adım boyutu:" + +#: ../plug-ins/common/warp.c:433 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:770 +#: ../plug-ins/ifs-compose/ifs-compose.c:1212 +msgid "Iterations:" +msgstr "Yinelemeler:" + +#. Displacement map menu +#: ../plug-ins/common/warp.c:442 +msgid "Displacement map:" +msgstr "Yer değiştirme eşlemi:" + +#. ======================================================================= +#. Displacement Type +#: ../plug-ins/common/warp.c:460 +msgid "On edges:" +msgstr "Kenarlar üzerinde:" + +#: ../plug-ins/common/warp.c:471 +msgid "Wrap" +msgstr "Sarma" + +#: ../plug-ins/common/warp.c:486 +msgid "Smear" +msgstr "Yayma" + +#: ../plug-ins/common/warp.c:501 ../plug-ins/file-fits/fits.c:1021 +#: ../plug-ins/flame/flame.c:1175 ../plug-ins/gfig/gfig-dialog.c:1460 +msgid "Black" +msgstr "Siyah" + +#: ../plug-ins/common/warp.c:516 +msgid "Foreground color" +msgstr "Önalan rengi" + +#. -------------------------------------------------------------------- +#. --------- The secondary table -------------------------- +#: ../plug-ins/common/warp.c:536 +msgid "Advanced Options" +msgstr "Gelişmiş Seçenekler" + +#: ../plug-ins/common/warp.c:552 +msgid "Dither size:" +msgstr "Titreme boyutu:" + +#: ../plug-ins/common/warp.c:565 +msgid "Rotation angle:" +msgstr "Döndürme açısı:" + +#: ../plug-ins/common/warp.c:578 +msgid "Substeps:" +msgstr "Alt basamaklar:" + +#. Magnitude map menu +#: ../plug-ins/common/warp.c:587 +msgid "Magnitude map:" +msgstr "Büyüklük eşlemi:" + +#: ../plug-ins/common/warp.c:609 +msgid "Use magnitude map" +msgstr "Büyüklük eşlemini kullan" + +#. -------------------------------------------------------------------- +#. --------- The "other" table -------------------------- +#: ../plug-ins/common/warp.c:622 +msgid "More Advanced Options" +msgstr "Daha Fazla Gelişmiş Seçenekler" + +#: ../plug-ins/common/warp.c:639 +msgid "Gradient scale:" +msgstr "Eğim ölçeği:" + +#: ../plug-ins/common/warp.c:658 +msgid "Gradient map selection menu" +msgstr "Renk geçişi eşlemi seçim menüsü" + +#: ../plug-ins/common/warp.c:668 +msgid "Vector mag:" +msgstr "Vector mag:" + +#. Angle +#: ../plug-ins/common/warp.c:683 ../plug-ins/ifs-compose/ifs-compose.c:568 +msgid "Angle:" +msgstr "Açı:" + +#: ../plug-ins/common/warp.c:702 +msgid "Fixed-direction-vector map selection menu" +msgstr "Sabit-yönlü-vektör eşlemi seçme menüsü" + +#. make sure layer is visible +#: ../plug-ins/common/warp.c:1178 +msgid "Smoothing X gradient" +msgstr "Yumuşatma X eğimi" + +#: ../plug-ins/common/warp.c:1181 +msgid "Smoothing Y gradient" +msgstr "Yumuşatma Y eğimi" + +#. calculate new X,Y Displacement image maps +#: ../plug-ins/common/warp.c:1231 +msgid "Finding XY gradient" +msgstr "XY düşümleri bulunuyor" + +#: ../plug-ins/common/warp.c:1256 +#, c-format +msgid "Flow step %d" +msgstr "Akış adımı %d" + +#: ../plug-ins/common/waves.c:120 +msgid "Distort the image with waves" +msgstr "Dalgalarla görüntüyü boz" + +#: ../plug-ins/common/waves.c:125 +msgid "_Waves..." +msgstr "_Dalgalar..." + +#: ../plug-ins/common/waves.c:248 ../plug-ins/flame/flame.c:763 +msgid "Waves" +msgstr "Dalgalar" + +#: ../plug-ins/common/waves.c:294 +msgid "_Reflective" +msgstr "_Yansıtıcı" + +#: ../plug-ins/common/waves.c:313 +msgid "_Amplitude:" +msgstr "_Genlik:" + +#: ../plug-ins/common/waves.c:325 +msgid "_Phase:" +msgstr "_Evre:" + +#: ../plug-ins/common/waves.c:337 +msgid "_Wavelength:" +msgstr "_Dalgaboyu:" + +#: ../plug-ins/common/waves.c:448 +msgid "Waving" +msgstr "Dalgalanma" + +#: ../plug-ins/common/web-browser.c:206 +#, c-format +msgid "" +"Web browser not specified.\n" +"Please specify a web browser using the Preferences dialog." +msgstr "" +"Web tarayıcısı belirtilmemiş.\n" +"Lütfen, Tercihler iletişim kutusunu kullanarak bir web tarayıcısı belirleyin." + +#: ../plug-ins/common/web-browser.c:228 +#, c-format +msgid "" +"Could not parse the web browser command specified in the Preferences " +"dialog:\n" +"\n" +"%s" +msgstr "" +"Tercihler iletişim kutusunda belirtilen web tarayıcısı komutu " +"ayrıştırılamadı:\n" +"\n" +"%s" + +#: ../plug-ins/common/web-browser.c:246 +#, c-format +msgid "" +"Could not execute the web browser specified in the Preferences dialog:\n" +"\n" +"%s" +msgstr "" +"Tercihler iletişim kutusunda belirtilen web tarayıcısı komutu yürütülemedi:\n" +"\n" +"%s" + +#: ../plug-ins/common/whirl-pinch.c:138 +msgid "Distort an image by whirling and pinching" +msgstr "Görüntüyü döndürerek ve kıstırarak boz" + +#: ../plug-ins/common/whirl-pinch.c:149 +msgid "W_hirl and Pinch..." +msgstr "Dö_nme ve Kıstırma..." + +#: ../plug-ins/common/whirl-pinch.c:193 +msgid "Region affected by plug-in is empty" +msgstr "Eklentiden etkilenen alan boş" + +#: ../plug-ins/common/whirl-pinch.c:341 +msgid "Whirling and pinching" +msgstr "Döndürme ve kıstırma" + +#: ../plug-ins/common/whirl-pinch.c:528 +msgid "Whirl and Pinch" +msgstr "Dönme ve kıstırma" + +#: ../plug-ins/common/whirl-pinch.c:565 +msgid "_Whirl angle:" +msgstr "_Dönme açısı" + +#: ../plug-ins/common/whirl-pinch.c:577 +msgid "_Pinch amount:" +msgstr "Kıstırma adedi" + +#: ../plug-ins/common/wind.c:175 +msgid "Smear image to give windblown effect" +msgstr "Esme etkisi vermek için resmi yay" + +#: ../plug-ins/common/wind.c:180 +msgid "Wi_nd..." +msgstr "Rüz_gar..." + +#: ../plug-ins/common/wind.c:315 +msgid "Rendering blast" +msgstr "Rüzgar taranıyor" + +#: ../plug-ins/common/wind.c:447 +msgid "Rendering wind" +msgstr "Esinti taranıyor" + +#: ../plug-ins/common/wind.c:879 +msgid "Wind" +msgstr "Esinti" + +#. ******************************************************** +#. radio buttons for choosing wind rendering algorithm +#. ***************************************************** +#: ../plug-ins/common/wind.c:921 +msgid "Style" +msgstr "Biçem" + +#: ../plug-ins/common/wind.c:925 +msgid "_Wind" +msgstr "_Esinti" + +#: ../plug-ins/common/wind.c:926 +msgid "_Blast" +msgstr "_Rüzgar" + +#: ../plug-ins/common/wind.c:949 +msgid "_Left" +msgstr "So_l" + +#: ../plug-ins/common/wind.c:950 +msgid "_Right" +msgstr "_Sağ" + +#. **************************************************** +#. radio buttons for choosing BOTH, LEADING, TRAILING +#. ************************************************** +#: ../plug-ins/common/wind.c:969 +msgid "Edge Affected" +msgstr "Kenar Etkilendi" + +#: ../plug-ins/common/wind.c:973 +msgid "L_eading" +msgstr "Yö_nlendiriliyor" + +#: ../plug-ins/common/wind.c:974 +msgid "Tr_ailing" +msgstr "Sü_rükleniyor" + +#: ../plug-ins/common/wind.c:975 +msgid "Bot_h" +msgstr "_Her ikisi" + +#: ../plug-ins/common/wind.c:1012 +msgid "Higher values restrict the effect to fewer areas of the image" +msgstr "Yüksek değerler resmin daha az alanındaki etkiyi kısıtlıyor" + +#: ../plug-ins/common/wind.c:1027 ../plug-ins/gimpressionist/orientmap.c:694 +msgid "_Strength:" +msgstr "_Keskinlik:" + +#: ../plug-ins/common/wind.c:1031 +msgid "Higher values increase the magnitude of the effect" +msgstr "Yüksek değerler etkinin büyüklüğünü arttırıyor" + +#: ../plug-ins/file-bmp/bmp-read.c:88 +msgid "Bad colormap" +msgstr "Hatalı renk haritası" + +#: ../plug-ins/file-bmp/bmp-read.c:172 ../plug-ins/file-bmp/bmp-read.c:182 +#: ../plug-ins/file-bmp/bmp-read.c:189 ../plug-ins/file-bmp/bmp-read.c:198 +#: ../plug-ins/file-bmp/bmp-read.c:213 ../plug-ins/file-bmp/bmp-read.c:418 +#: ../plug-ins/file-bmp/bmp-read.c:439 ../plug-ins/file-bmp/bmp-read.c:450 +#: ../plug-ins/file-bmp/bmp-read.c:458 ../plug-ins/file-bmp/bmp-read.c:466 +#: ../plug-ins/file-bmp/bmp-read.c:478 +#, c-format +msgid "'%s' is not a valid BMP file" +msgstr "'%s' geçerli bir BMP dosyası değil" + +#: ../plug-ins/file-bmp/bmp-read.c:227 ../plug-ins/file-bmp/bmp-read.c:254 +#: ../plug-ins/file-bmp/bmp-read.c:282 ../plug-ins/file-bmp/bmp-read.c:347 +#: ../plug-ins/file-bmp/bmp-read.c:397 +#, c-format +msgid "Error reading BMP file header from '%s'" +msgstr "'%s'den BMP dosya başlığı okuma hatası" + +#: ../plug-ins/file-bmp/bmp-read.c:590 +msgid "Unrecognized or invalid BMP compression format." +msgstr "Tanınmayan neya geçersiz BMP sıkıştırma biçimi." + +#: ../plug-ins/file-bmp/bmp-read.c:632 +msgid "Unsupported or invalid bitdepth." +msgstr "Desteklenmeyen veya geçersiz bit derinliği." + +#: ../plug-ins/file-bmp/bmp-read.c:820 ../plug-ins/file-bmp/bmp-read.c:861 +#: ../plug-ins/file-bmp/bmp-read.c:911 +msgid "The bitmap ends unexpectedly." +msgstr "Bit eşlemi beklenmedik bir şekilde sonlandırıldı." + +#: ../plug-ins/file-bmp/bmp-write.c:188 ../plug-ins/file-bmp/bmp-write.c:210 +msgid "Cannot save indexed image with transparency in BMP file format." +msgstr "Saydamlık içeriği ile BMP dosya biçimi kaydedilemez." + +#: ../plug-ins/file-bmp/bmp-write.c:190 ../plug-ins/file-bmp/bmp-write.c:212 +msgid "Alpha channel will be ignored." +msgstr "Görünür kanalı yoksayılacak." + +#: ../plug-ins/file-bmp/bmp-write.c:794 +msgid "Save as BMP" +msgstr "BMP olarak kaydet" + +#: ../plug-ins/file-bmp/bmp-write.c:817 +msgid "_Run-Length Encoded" +msgstr "_Çalışma-Süresi Kodlandı" + +#: ../plug-ins/file-bmp/bmp-write.c:829 ../plug-ins/file-jpeg/jpeg-save.c:900 +msgid "_Advanced Options" +msgstr "_Gelişmiş Seçenekler" + +#: ../plug-ins/file-bmp/bmp-write.c:844 +msgid "16 bits" +msgstr "16 bit" + +#: ../plug-ins/file-bmp/bmp-write.c:880 +msgid "24 bits" +msgstr "24 bit" + +#: ../plug-ins/file-bmp/bmp-write.c:897 +msgid "32 bits" +msgstr "32 bit" + +#: ../plug-ins/file-bmp/bmp.c:124 ../plug-ins/file-bmp/bmp.c:143 +msgid "Windows BMP image" +msgstr "Windows BMP görüntüsü" + +#: ../plug-ins/file-faxg3/faxg3.c:103 +msgid "G3 fax image" +msgstr "G3 faks görüntüsü" + +#: ../plug-ins/file-fits/fits.c:168 ../plug-ins/file-fits/fits.c:188 +msgid "Flexible Image Transport System" +msgstr "Esnek Görüntü Aktarım Sistemi" + +#: ../plug-ins/file-fits/fits.c:368 +msgid "Error during open of FITS file" +msgstr "FITS dosyası açılırken hata oluştu" + +#: ../plug-ins/file-fits/fits.c:374 +msgid "FITS file keeps no displayable images" +msgstr "FITS dosyası görüntülenemez resimler barındırıyor" + +#: ../plug-ins/file-fits/fits.c:455 +msgid "FITS save cannot handle images with alpha channels" +msgstr "FITS görünür kanallı resimleri kaydedemez" + +#: ../plug-ins/file-fits/fits.c:993 +msgid "Load FITS File" +msgstr "FITS Dosyası Yükleme" + +#: ../plug-ins/file-fits/fits.c:1017 +msgid "Replacement for undefined pixels" +msgstr "Tanımlanmamış benekler için değiştirme" + +#: ../plug-ins/file-fits/fits.c:1022 ../plug-ins/gfig/gfig-dialog.c:1286 +#: ../plug-ins/gfig/gfig-dialog.c:1461 +msgid "White" +msgstr "Beyaz" + +#: ../plug-ins/file-fits/fits.c:1029 +msgid "Pixel value scaling" +msgstr "Benek değer ölçeklemesi" + +#: ../plug-ins/file-fits/fits.c:1034 +msgid "By DATAMIN/DATAMAX" +msgstr "DATAMIN/DATAMAX tarafından" + +#: ../plug-ins/file-fits/fits.c:1041 +msgid "Image Composing" +msgstr "Görüntü Oluşturma" + +#: ../plug-ins/file-fli/fli-gimp.c:166 ../plug-ins/file-fli/fli-gimp.c:186 +msgid "AutoDesk FLIC animation" +msgstr "AutoDesk FLIC canlandırması" + +#: ../plug-ins/file-fli/fli-gimp.c:562 +#, c-format +msgid "Frame (%i)" +msgstr "Çerçeve (%i)" + +#: ../plug-ins/file-fli/fli-gimp.c:714 +msgid "Sorry, I can save only INDEXED and GRAY images." +msgstr "Üzgünüm, sadece SIRALANMIŞ ve GRİ görüntüleri kaydedebilirim." + +#: ../plug-ins/file-fli/fli-gimp.c:846 +msgid "GFLI 1.3 - Load framestack" +msgstr "GFLI 1.3 - Çerçeve kümesini yükle" + +#: ../plug-ins/file-fli/fli-gimp.c:914 +msgid "GFLI 1.3 - Save framestack" +msgstr "GFLI 1.3 - Çerçeve kümesini kaydet" + +#: ../plug-ins/file-ico/ico-dialog.c:54 +msgid "Save as Windows Icon" +msgstr "Windows Simgesi olarak Kaydet" + +#: ../plug-ins/file-ico/ico-dialog.c:86 +msgid "Icon Details" +msgstr "Simge Detayları" + +#: ../plug-ins/file-ico/ico-dialog.c:106 +msgid "" +"Large icons and compression are not supported by all programs. Older " +"applications may not open this file correctly." +msgstr "" +"Geniş simgeler ve sıkıştırma tüm programlar tarafından desteklenmez. Daha " +"eski uygulamalar bu dosyayı düzgün bir şekilde açamayabilir." + +#: ../plug-ins/file-ico/ico-dialog.c:178 +msgid "1 bpp, 1-bit alpha, 2-slot palette" +msgstr "1 bpp, 1-bit görünür, 2-dilimli palet" + +#: ../plug-ins/file-ico/ico-dialog.c:179 +msgid "4 bpp, 1-bit alpha, 16-slot palette" +msgstr "4 bpp, 1-bit görünür, 16-dilimli palet" + +#: ../plug-ins/file-ico/ico-dialog.c:180 +msgid "8 bpp, 1-bit alpha, 256-slot palette" +msgstr "8 bpp, 1-bit görünür, 256-dilimli palet" + +#: ../plug-ins/file-ico/ico-dialog.c:181 +msgid "24 bpp, 1-bit alpha, no palette" +msgstr "24 bpp, 1-bit görünür, palet yok" + +#: ../plug-ins/file-ico/ico-dialog.c:182 +msgid "32 bpp, 8-bit alpha, no palette" +msgstr "32 bpp, 8-bit görünür, palet yok" + +#: ../plug-ins/file-ico/ico-dialog.c:196 +msgid "Compressed (PNG)" +msgstr "Sıkıştırılmış (PNG)" + +#. read successfully. add to image +#: ../plug-ins/file-ico/ico-load.c:624 +#, c-format +msgid "Icon #%i" +msgstr "Simge #%i" + +#: ../plug-ins/file-ico/ico-load.c:733 ../plug-ins/file-jpeg/jpeg-load.c:633 +#: ../plug-ins/file-psd/psd-thumb-load.c:85 +#, c-format +msgid "Opening thumbnail for '%s'" +msgstr "'%s' için önizleme açılıyor" + +#: ../plug-ins/file-ico/ico.c:103 ../plug-ins/file-ico/ico.c:137 +msgid "Microsoft Windows icon" +msgstr "Microsoft Windows simgesi" + +#: ../plug-ins/file-jpeg/jpeg-exif.c:293 +msgid "Rotate Image?" +msgstr "Görüntü Döndürülsün Mü?" + +#: ../plug-ins/file-jpeg/jpeg-exif.c:296 +msgid "_Keep Orientation" +msgstr "_Yönelimi Sakla" + +#: ../plug-ins/file-jpeg/jpeg-exif.c:352 +msgid "According to the EXIF data, this image is rotated." +msgstr "EXIF verisine göre bu resim döndürüldü." + +#: ../plug-ins/file-jpeg/jpeg-exif.c:367 +msgid "Would you like GIMP to rotate it into the standard orientation?" +msgstr "GIMP'in standart bir yönlenme ile döndürmesini ister misiniz?" + +#: ../plug-ins/file-jpeg/jpeg-load.c:241 +msgid "JPEG preview" +msgstr "JPEG önizleme" + +#: ../plug-ins/file-jpeg/jpeg-save.c:200 +#, c-format +msgid "File size: %02.01f kB" +msgstr "Dosya boyutu: %02.01f kB" + +#: ../plug-ins/file-jpeg/jpeg-save.c:682 +msgid "Calculating file size..." +msgstr "Dosya boyutu hesaplanıyor..." + +#: ../plug-ins/file-jpeg/jpeg-save.c:774 ../plug-ins/file-jpeg/jpeg-save.c:876 +msgid "File size: unknown" +msgstr "Dosya boyutu: bilinmiyor" + +#: ../plug-ins/file-jpeg/jpeg-save.c:827 +msgid "Save as JPEG" +msgstr "JPEG olarak kaydet" + +#: ../plug-ins/file-jpeg/jpeg-save.c:862 +msgid "_Quality:" +msgstr "_Kalite:" + +#: ../plug-ins/file-jpeg/jpeg-save.c:866 +msgid "JPEG quality parameter" +msgstr "JPEG kalite parametresi" + +#: ../plug-ins/file-jpeg/jpeg-save.c:885 +msgid "Enable preview to obtain the file size." +msgstr "Dosya boyutunu elde etmek için önizlemeye olanak tanı." + +#: ../plug-ins/file-jpeg/jpeg-save.c:888 +msgid "Sho_w preview in image window" +msgstr "Önizlemeyi görüntü penceresinde göste_r" + +#: ../plug-ins/file-jpeg/jpeg-save.c:929 +msgid "S_moothing:" +msgstr "D_üzgünleştirme:" + +#: ../plug-ins/file-jpeg/jpeg-save.c:942 +msgid "Frequency (rows):" +msgstr "Sıklık (satırlar):" + +#: ../plug-ins/file-jpeg/jpeg-save.c:958 +msgid "Use _restart markers" +msgstr "_Yeniden başlatma işaretçilerini kullan" + +#: ../plug-ins/file-jpeg/jpeg-save.c:974 +msgid "_Optimize" +msgstr "_Eniyile" + +#: ../plug-ins/file-jpeg/jpeg-save.c:988 +msgid "_Progressive" +msgstr "_İlerlemeli" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1004 +msgid "Save _EXIF data" +msgstr "_EXIF verisini kaydet" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1021 +msgid "Save _thumbnail" +msgstr "Ö_nizlemeyi kaydet" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1038 +msgid "Save _XMP data" +msgstr "_XMP verisini kaydet" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1053 +msgid "_Use quality settings from original image" +msgstr "Kalite ayarlarını özgün görüntüden _kullan" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1059 +msgid "" +"If the original image was loaded from a JPEG file using non-standard quality " +"settings (quantization tables), enable this option to get almost the same " +"quality and file size." +msgstr "" +"Eğer özgün resim standart olmayan kalite ayarları (niceleme tabloları) " +"kullanan bir JPEG dosyasından yüklenmişse; bu seçeneği, aynı kaliteye ve " +"dosya boyutuna yakın sonuçlar elde etmek için etkinleştirin." + +#. Subsampling +#: ../plug-ins/file-jpeg/jpeg-save.c:1083 +msgid "Su_bsampling:" +msgstr "Al_t Örnekleme" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1090 +msgid "1x1,1x1,1x1 (best quality)" +msgstr "1x1,1x1,1x1 (en iyi kalite)" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1092 +msgid "2x1,1x1,1x1 (4:2:2)" +msgstr "2x1,1x1,1x1 (4:2:2)" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1094 +msgid "1x2,1x1,1x1" +msgstr "1x2,1x1,1x1" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1096 +msgid "2x2,1x1,1x1 (smallest file)" +msgstr "2x2,1x1,1x1 (en küçük dosya)" + +#. DCT method +#: ../plug-ins/file-jpeg/jpeg-save.c:1126 +msgid "_DCT method:" +msgstr "_DCT yöntemi:" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1132 +msgid "Fast Integer" +msgstr "Sabit Tam Sayı" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1133 +msgid "Integer" +msgstr "Tamsayı" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1134 +msgid "Floating-Point" +msgstr "Yüzen-Nokta" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1150 +msgid "Comment" +msgstr "Açıklama" + +#: ../plug-ins/file-jpeg/jpeg-save.c:1195 +msgid "Sa_ve Defaults" +msgstr "Varsayılanları Ka_ydet" + +#: ../plug-ins/file-jpeg/jpeg.c:137 ../plug-ins/file-jpeg/jpeg.c:175 +msgid "JPEG image" +msgstr "JPEG görüntüsü" + +#: ../plug-ins/file-jpeg/jpeg.c:301 +msgid "Export Preview" +msgstr "Önizlemeyi dışa aktar" + +#: ../plug-ins/file-psd/psd-load.c:215 +#: ../plug-ins/file-psd/psd-thumb-load.c:131 +#, c-format +msgid "Error loading PSD file: %s" +msgstr "PSD dosyası yükleme hatası: %s" + +#: ../plug-ins/file-psd/psd-load.c:270 +#, c-format +msgid "Not a valid photoshop document file" +msgstr "Geçersiz photoshop belge dosyası" + +#: ../plug-ins/file-psd/psd-load.c:277 +#, c-format +msgid "Unsupported file format version: %d" +msgstr "Desteklenmeyen dosya biçim sürümü: %d" + +#: ../plug-ins/file-psd/psd-load.c:284 +#, c-format +msgid "Too many channels in file: %d" +msgstr "Dosyada çok fazla kanal var: %d" + +#: ../plug-ins/file-psd/psd-load.c:311 +#, c-format +msgid "Unsupported or invalid image size: %dx%d" +msgstr "Desteklenmeyen yada geçersiz görüntü boyutu: %dx%d" + +#: ../plug-ins/file-psd/psd-load.c:323 +#, c-format +msgid "Unsupported color mode: %s" +msgstr "Desteklenmeyen renk modu: %s" + +#: ../plug-ins/file-psd/psd-load.c:350 +#, c-format +msgid "Unsupported bit depth: %d" +msgstr "Desteklenmeyen bit derinliği: %d" + +#: ../plug-ins/file-psd/psd-load.c:384 ../plug-ins/file-psd/psd-load.c:394 +#: ../plug-ins/file-psd/psd-load.c:625 ../plug-ins/file-psd/psd-load.c:834 +#, c-format +msgid "The file is corrupt!" +msgstr "Bozuk dosya!" + +#: ../plug-ins/file-psd/psd-load.c:554 +#, c-format +msgid "Too many channels in layer: %d" +msgstr "%d katmanında çok fazla kanal var" + +#: ../plug-ins/file-psd/psd-load.c:562 +#, c-format +msgid "Unsupported or invalid layer height: %d" +msgstr "Desteklenmeyen veya geçersiz katman yüksekliği: %d" + +#: ../plug-ins/file-psd/psd-load.c:570 +#, c-format +msgid "Unsupported or invalid layer width: %d" +msgstr "Desteklenmeyen veya geçersiz katman genişliği: %d" + +#: ../plug-ins/file-psd/psd-load.c:579 +#, c-format +msgid "Unsupported or invalid layer size: %dx%d" +msgstr "Desteklenmeyen ya da geçersiz katman boyutu: %dx%d" + +#: ../plug-ins/file-psd/psd-load.c:763 +#, c-format +msgid "Unsupported or invalid layer mask height: %d" +msgstr "Desteklenmeyen veya geçersiz katman maskesi yüksekliği: %d" + +#: ../plug-ins/file-psd/psd-load.c:771 +#, c-format +msgid "Unsupported or invalid layer mask width: %d" +msgstr "Desteklenmeyen veya geçersiz katman maskesi genişliği: %d" + +#: ../plug-ins/file-psd/psd-load.c:780 +#, c-format +msgid "Unsupported or invalid layer mask size: %dx%d" +msgstr "Desteklenmeyen ya da geçersiz katman maskesi boyutu: %dx%d" + +#: ../plug-ins/file-psd/psd-load.c:1202 ../plug-ins/file-psd/psd-load.c:1551 +#, c-format +msgid "Unsupported compression mode: %d" +msgstr "Desteklenmeyen sıkıştırma biçimi. %d" + +#: ../plug-ins/file-psd/psd-load.c:1644 +msgid "Extra" +msgstr "Ek" + +#: ../plug-ins/file-psd/psd-load.c:1819 +#, c-format +msgid "Unsupported or invalid channel size" +msgstr "Desteklenmeyen veya geçersiz kanal boyutu" + +#: ../plug-ins/file-psd/psd-save.c:228 ../plug-ins/file-psd/psd.c:114 +#: ../plug-ins/file-psd/psd.c:153 +msgid "Photoshop image" +msgstr "Photoshop görüntüsü" + +#: ../plug-ins/file-psd/psd-save.c:371 +#, c-format +msgid "" +"Unable to save layer with mode '%s'. Either the PSD file format or the save " +"plug-in does not support that, using normal mode instead." +msgstr "" +"Katman '%s' biçiminde kaydedilemedi. Ayrıca PSD dosya biçimi ya da kaydetme " +"eklentisi bunu desteklemiyor, bunun yerine normal biçim kullanılıyor." + +#: ../plug-ins/file-psd/psd-save.c:631 +msgid "Error: Can't convert GIMP base imagetype to PSD mode" +msgstr "Hata: GIMP temel resim türü PSD biçimine dönüştürülemiyor." + +#: ../plug-ins/file-psd/psd-save.c:1605 +#, c-format +msgid "" +"Unable to save '%s'. The PSD file format does not support images that are " +"more than 30,000 pixels wide or tall." +msgstr "" +"'%s' Kaydedilemedi. PSD dosya biçimi 30,000 benek boyu ya da genişliğinden " +"büyük resimleri desteklemiyor." + +#: ../plug-ins/file-psd/psd-save.c:1620 +#, c-format +msgid "" +"Unable to save '%s'. The PSD file format does not support images with " +"layers that are more than 30,000 pixels wide or tall." +msgstr "" +"'%s' Kaydedilemedi. PSD dosya biçimi 30,000 benek boyu ya da genişliğinden " +"büyük katmanları olan resimleri desteklemiyor." + +#: ../plug-ins/file-psd/psd-util.c:51 +msgid "Unexpected end of file" +msgstr "Beklenmedik dosya sonlandırması" + +#: ../plug-ins/file-sgi/sgi.c:121 ../plug-ins/file-sgi/sgi.c:141 +msgid "Silicon Graphics IRIS image" +msgstr "Silicon Graphics IRIS görüntüsü" + +#: ../plug-ins/file-sgi/sgi.c:325 +#, c-format +msgid "Could not open '%s' for reading." +msgstr "'%s' dosyası okumak için açılamadı." + +#: ../plug-ins/file-sgi/sgi.c:341 +#, c-format +msgid "Invalid width: %hu" +msgstr "Geçersiz genişlik: %hu" + +#: ../plug-ins/file-sgi/sgi.c:348 +#, c-format +msgid "Invalid height: %hu" +msgstr "Geçersiz yükseklik: %hu" + +#: ../plug-ins/file-sgi/sgi.c:355 +#, c-format +msgid "Invalid number of channels: %hu" +msgstr "Geçersiz kanal sayısı: %hu" + +#: ../plug-ins/file-sgi/sgi.c:569 +#, c-format +msgid "Could not open '%s' for writing." +msgstr "`%s' yazmak için açılamadı." + +#: ../plug-ins/file-sgi/sgi.c:649 +msgid "Save as SGI" +msgstr "SGI olarak kaydet" + +#: ../plug-ins/file-sgi/sgi.c:665 +msgid "Compression type" +msgstr "Sıkıştırma türü" + +#: ../plug-ins/file-sgi/sgi.c:669 +msgid "No compression" +msgstr "Sıkıştırma yok" + +#: ../plug-ins/file-sgi/sgi.c:671 +msgid "RLE compression" +msgstr "RLE sıkıştırması" + +#: ../plug-ins/file-sgi/sgi.c:673 +msgid "" +"Aggressive RLE\n" +"(not supported by SGI)" +msgstr "" +"Agresif RLE\n" +"(SGI tarafından desteklenmiyor)" + +#: ../plug-ins/file-uri/gimpmountoperation.c:448 +msgid "Co_nnect" +msgstr "_Bağlan" + +#: ../plug-ins/file-uri/gimpmountoperation.c:492 +msgid "Connect _anonymously" +msgstr "_Kimliğini belirtmeden bağlan" + +#: ../plug-ins/file-uri/gimpmountoperation.c:501 +msgid "Connect as u_ser:" +msgstr "_Kullanıcı olarak bağlan:" + +#: ../plug-ins/file-uri/gimpmountoperation.c:538 +msgid "_Username:" +msgstr "_Kullanıcı Adı:" + +#: ../plug-ins/file-uri/gimpmountoperation.c:542 +msgid "_Domain:" +msgstr "_Etki Alanı:" + +#: ../plug-ins/file-uri/gimpmountoperation.c:547 +msgid "_Password:" +msgstr "_Parola:" + +#: ../plug-ins/file-uri/gimpmountoperation.c:562 +msgid "_Forget password immediately" +msgstr "_Parolayı hemen unut" + +#: ../plug-ins/file-uri/gimpmountoperation.c:570 +msgid "_Remember password until you logout" +msgstr "Çıkış yapana kadar _parolayı hatırla" + +#: ../plug-ins/file-uri/gimpmountoperation.c:578 +msgid "_Remember forever" +msgstr "_Her zaman hatırla" + +#: ../plug-ins/file-uri/uri-backend-gnomevfs.c:163 +#: ../plug-ins/file-uri/uri-backend-libcurl.c:129 +#: ../plug-ins/file-uri/uri-backend-wget.c:303 +#, c-format +msgid "Downloading %s of image data" +msgstr "Görüntü verisinin %s'i indiriliyor" + +#: ../plug-ins/file-uri/uri-backend-gnomevfs.c:164 +#: ../plug-ins/file-uri/uri-backend-gvfs.c:226 +#: ../plug-ins/file-uri/uri-backend-libcurl.c:136 +#: ../plug-ins/file-uri/uri-backend-wget.c:346 +#, c-format +msgid "Downloaded %s of image data" +msgstr "Görüntü verisinin %s'i indirildi" + +#: ../plug-ins/file-uri/uri-backend-gnomevfs.c:182 +#, c-format +msgid "Uploading %s of image data" +msgstr "Görüntü verisinin %s'i yükleniyor" + +#: ../plug-ins/file-uri/uri-backend-gnomevfs.c:183 +#: ../plug-ins/file-uri/uri-backend-gvfs.c:230 +#, c-format +msgid "Uploaded %s of image data" +msgstr "Görüntü verisinin %s'i yüklendi" + +#: ../plug-ins/file-uri/uri-backend-gnomevfs.c:253 +#: ../plug-ins/file-uri/uri-backend-gvfs.c:297 +#: ../plug-ins/file-uri/uri-backend-libcurl.c:158 +#: ../plug-ins/file-uri/uri-backend-wget.c:195 +msgid "Connecting to server" +msgstr "Sunucuya bağlanılıyor" + +#: ../plug-ins/file-uri/uri-backend-gnomevfs.c:312 +#, c-format +msgid "Failed to read %s from '%s': %s" +msgstr "'%s' dosyasından %s okuma başarısız: %s" + +#: ../plug-ins/file-uri/uri-backend-gnomevfs.c:361 +#, c-format +msgid "Failed to write %s to '%s': %s" +msgstr "'%s': %s üzerine %s yazılamadı." + +#: ../plug-ins/file-uri/uri-backend-gvfs.c:200 +#, c-format +msgid "Downloading image (%s of %s)" +msgstr "Resim indiriliyor (%s de %s)" + +#: ../plug-ins/file-uri/uri-backend-gvfs.c:204 +#, c-format +msgid "Uploading image (%s of %s)" +msgstr "Resim yükleniyor (%s de %s)" + +#: ../plug-ins/file-uri/uri-backend-libcurl.c:60 +msgid "Could not initialize libcurl" +msgstr "Libcurl başlatılamadı" + +#: ../plug-ins/file-uri/uri-backend-libcurl.c:202 +#, c-format +msgid "Opening '%s' for reading resulted in HTTP response code: %d" +msgstr "Neticelenen HTTP yanıt kodunu okumak için '%s' açılıyor: %d" + +#: ../plug-ins/file-uri/uri-backend-wget.c:162 +#: ../plug-ins/file-uri/uri-backend-wget.c:182 +#: ../plug-ins/file-uri/uri-backend-wget.c:201 +#: ../plug-ins/file-uri/uri-backend-wget.c:224 +#: ../plug-ins/file-uri/uri-backend-wget.c:253 +#, c-format +msgid "wget exited abnormally on URI '%s'" +msgstr "wget beklenmedik biçimde kapandı. URI '%s'" + +#. The third line is "Connecting to..." +#: ../plug-ins/file-uri/uri-backend-wget.c:190 +#, c-format +msgid "(timeout is %d second)" +msgid_plural "(timeout is %d seconds)" +msgstr[0] "(zaman aşımı %d saniye)" + +#. The fourth line is either the network request or an error +#: ../plug-ins/file-uri/uri-backend-wget.c:219 +msgid "Opening URI" +msgstr "URI açılıyor" + +#: ../plug-ins/file-uri/uri-backend-wget.c:230 +#: ../plug-ins/file-uri/uri-backend-wget.c:263 +#, c-format +msgid "A network error occurred: %s" +msgstr "Bir ağ hatası meydana geldi: %s" + +#: ../plug-ins/file-uri/uri-backend-wget.c:308 +msgid "Downloading unknown amount of image data" +msgstr "Görüntü verisinin bilinmeyen miktarı indiriliyor" + +#: ../plug-ins/file-uri/uri.c:119 ../plug-ins/file-uri/uri.c:140 +msgid "URI" +msgstr "Kaynak Tanımlayıcı" + +#: ../plug-ins/file-xjt/xjt.c:488 ../plug-ins/file-xjt/xjt.c:506 +msgid "GIMP compressed XJT image" +msgstr "GIMP sıkıştırmalı XJT görüntüsü" + +#: ../plug-ins/file-xjt/xjt.c:736 +#, c-format +msgid "XJT file contains unknown layermode %d" +msgstr "XJT dosyası bilinmeyen katmankipi %d içeriyor" + +#: ../plug-ins/file-xjt/xjt.c:773 +#, c-format +msgid "Warning: unsupported layermode %d saved to XJT" +msgstr "Uyarı: desteklenmeyen katmankipi %d XJT'ye kaydedildi" + +#: ../plug-ins/file-xjt/xjt.c:789 +#, c-format +msgid "XJT file contains unknown pathtype %d" +msgstr "XJT dosyası bilinmeyen yol biçimi içeriyor %d" + +#: ../plug-ins/file-xjt/xjt.c:805 +#, c-format +msgid "Warning: unsupported pathtype %d saved to XJT" +msgstr "Uyarı: desteklenmeyen yol biçimi %d kaydedildi XJT dosyasına" + +#: ../plug-ins/file-xjt/xjt.c:824 +#, c-format +msgid "XJT file contains unknown unittype %d" +msgstr "XJT dosyası bilinmeyen birim biçimi içeriyor %d" + +#: ../plug-ins/file-xjt/xjt.c:845 +#, c-format +msgid "Warning: unsupported unittype %d saved to XJT" +msgstr "Uyarı: bilinmeyen birim biçimi %d kaydedildi XJT dosyasına" + +#: ../plug-ins/file-xjt/xjt.c:866 +msgid "Save as XJT" +msgstr "XJT olarak kaydet" + +#: ../plug-ins/file-xjt/xjt.c:889 +msgid "Optimize" +msgstr "Eniyile" + +#: ../plug-ins/file-xjt/xjt.c:899 +msgid "Clear transparent" +msgstr "Saydamlığı temizle" + +#: ../plug-ins/file-xjt/xjt.c:911 +msgid "Quality:" +msgstr "Kalite:" + +#: ../plug-ins/file-xjt/xjt.c:920 +msgid "Smoothing:" +msgstr "Yumuşatma:" + +#: ../plug-ins/file-xjt/xjt.c:1719 ../plug-ins/file-xjt/xjt.c:3373 +#, c-format +msgid "Could not create working folder '%s': %s" +msgstr "'%s' çalışan dizini oluşturulamadı: %s" + +#: ../plug-ins/file-xjt/xjt.c:3239 +#, c-format +msgid "Error: Could not read XJT property file '%s'." +msgstr "Hata: XJT nitelik dosyası '%s' okunamadı." + +#: ../plug-ins/file-xjt/xjt.c:3246 +#, c-format +msgid "Error: XJT property file '%s' is empty." +msgstr "Hata: XJT özellik dosyası '%s' boş." + +#: ../plug-ins/flame/flame.c:129 +msgid "Create cosmic recursive fractal flames" +msgstr "Kozmik tekrarlamalı kesirli alevler oluştur" + +#: ../plug-ins/flame/flame.c:134 +msgid "_Flame..." +msgstr "_Alev..." + +#: ../plug-ins/flame/flame.c:227 +msgid "Drawing flame" +msgstr "Alev çizme" + +#: ../plug-ins/flame/flame.c:319 +msgid "Flame works only on RGB drawables." +msgstr "Alev sadece RGB çizilebilirliği üzerinde çalışır." + +#: ../plug-ins/flame/flame.c:402 +#, c-format +msgid "'%s' is not a regular file" +msgstr "'%s' normal bir dosya değil." + +#: ../plug-ins/flame/flame.c:646 +msgid "Edit Flame" +msgstr "Alevi düzenle" + +#: ../plug-ins/flame/flame.c:669 +msgid "Directions" +msgstr "Yönler" + +#: ../plug-ins/flame/flame.c:705 +msgid "Controls" +msgstr "Denetimler" + +#: ../plug-ins/flame/flame.c:719 +msgid "_Speed:" +msgstr "_Hız:" + +#: ../plug-ins/flame/flame.c:736 +msgid "_Randomize" +msgstr "_Rastgele" + +#: ../plug-ins/flame/flame.c:746 +msgid "Same" +msgstr "Benzer" + +#: ../plug-ins/flame/flame.c:747 ../plug-ins/gimpressionist/orientation.c:164 +#: ../plug-ins/gimpressionist/size.c:167 +msgid "Random" +msgstr "Rastgele" + +#: ../plug-ins/flame/flame.c:751 +msgid "Swirl" +msgstr "Girdap" + +#: ../plug-ins/flame/flame.c:752 +msgid "Horseshoe" +msgstr "Nal" + +#: ../plug-ins/flame/flame.c:753 ../plug-ins/gfig/gfig-dialog.c:1442 +msgid "Polar" +msgstr "Kutupsal" + +#: ../plug-ins/flame/flame.c:754 +msgid "Bent" +msgstr "Eğri" + +#: ../plug-ins/flame/flame.c:755 +msgid "Handkerchief" +msgstr "Mendil" + +#: ../plug-ins/flame/flame.c:756 +msgid "Heart" +msgstr "Kalp" + +#: ../plug-ins/flame/flame.c:757 +msgid "Disc" +msgstr "Disk" + +#: ../plug-ins/flame/flame.c:759 +msgid "Hyperbolic" +msgstr "Hiperbolik" + +#: ../plug-ins/flame/flame.c:761 +msgid "Ex" +msgstr "Eski" + +#: ../plug-ins/flame/flame.c:762 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:844 +msgid "Julia" +msgstr "Julia" + +#: ../plug-ins/flame/flame.c:764 +msgid "Fisheye" +msgstr "Balık gözü" + +#: ../plug-ins/flame/flame.c:765 +msgid "Popcorn" +msgstr "Patlamış mısır" + +#: ../plug-ins/flame/flame.c:766 +msgid "Exponential" +msgstr "Üstel" + +#: ../plug-ins/flame/flame.c:767 +msgid "Power" +msgstr "Güç" + +#: ../plug-ins/flame/flame.c:768 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:997 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1038 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1079 +msgid "Cosine" +msgstr "Kosinüs" + +#: ../plug-ins/flame/flame.c:769 +msgid "Rings" +msgstr "Çemberler" + +#: ../plug-ins/flame/flame.c:770 +msgid "Fan" +msgstr "Fan" + +#: ../plug-ins/flame/flame.c:771 +msgid "Eyefish" +msgstr "Balık gözü" + +#: ../plug-ins/flame/flame.c:772 +msgid "Bubble" +msgstr "Kabarcık" + +#: ../plug-ins/flame/flame.c:773 ../plug-ins/map-object/map-object-ui.c:491 +msgid "Cylinder" +msgstr "Silindir" + +#: ../plug-ins/flame/flame.c:775 +msgid "Blur" +msgstr "Bulanıklaştır" + +#: ../plug-ins/flame/flame.c:776 +msgid "Gaussian" +msgstr "Gaussian" + +#: ../plug-ins/flame/flame.c:789 +msgid "_Variation:" +msgstr "_Çeşitlilik:" + +#: ../plug-ins/flame/flame.c:811 +msgid "Load Flame" +msgstr "Alev Yükle" + +#: ../plug-ins/flame/flame.c:826 +msgid "Save Flame" +msgstr "Alevi Kaydet" + +#: ../plug-ins/flame/flame.c:968 +msgid "Flame" +msgstr "Alev" + +#: ../plug-ins/flame/flame.c:1069 +msgid "_Rendering" +msgstr "_Taranıyor" + +#: ../plug-ins/flame/flame.c:1095 +msgid "Co_ntrast:" +msgstr "Ka_rşıtlık:" + +#: ../plug-ins/flame/flame.c:1109 +msgid "_Gamma:" +msgstr "_Gama:" + +#: ../plug-ins/flame/flame.c:1123 +msgid "Sample _density:" +msgstr "Örnek _yoğunluk:" + +#: ../plug-ins/flame/flame.c:1134 +msgid "Spa_tial oversample:" +msgstr "U_zaysal üstünörnekleme:" + +#: ../plug-ins/flame/flame.c:1145 +msgid "Spatial _filter radius:" +msgstr "Uzaysal _süzgeç yarıçapı:" + +#: ../plug-ins/flame/flame.c:1164 +msgid "Color_map:" +msgstr "_Renk haritası:" + +#: ../plug-ins/flame/flame.c:1206 +msgid "Custom gradient" +msgstr "Özel renk geçişi" + +#: ../plug-ins/flame/flame.c:1232 +msgid "C_amera" +msgstr "K_amera" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:547 +#: ../plug-ins/gfig/gfig-dialog.c:274 ../plug-ins/gimpressionist/utils.c:143 +#: ../plug-ins/gradient-flare/gradient-flare.c:881 +#, c-format +msgid "" +"No %s in gimprc:\n" +"You need to add an entry like\n" +"(%s \"%s\")\n" +"to your %s file." +msgstr "" +"gimprc içinde %s yok:\n" +"Şöyle bir giriş eklemelisiniz\n" +"(%s \"%s\")\n" +"%s dosyanıza." + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:638 +msgid "Realtime preview" +msgstr "Gerçek zamanlı önizleme" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:646 +msgid "If enabled the preview will be redrawn automatically" +msgstr "Eğer etkinleştirilirse önizleme otomatik olarak yeniden çizilecek." + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:649 +msgid "R_edraw preview" +msgstr "Önizlemeyi _yeniden çiz" + +#. Zoom Options +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:657 +msgid "Zoom" +msgstr "Yakınlaştır" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:693 +msgid "Undo last zoom change" +msgstr "Son yakınlaştırma değişimini geri al" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:703 +msgid "Redo last zoom change" +msgstr "Son yakınlaştırma değişimini ileri al" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:718 +msgid "_Parameters" +msgstr "_Parametreler" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:721 +msgid "Fractal Parameters" +msgstr "Kesirli Katsayılar" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:734 +#: ../plug-ins/map-object/map-object-ui.c:1099 +msgid "Left:" +msgstr "Sol:" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:743 +#: ../plug-ins/map-object/map-object-ui.c:1099 +msgid "Right:" +msgstr "Sağ:" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:752 +#: ../plug-ins/map-object/map-object-ui.c:1098 +msgid "Top:" +msgstr "Tepe:" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:761 +#: ../plug-ins/map-object/map-object-ui.c:1098 +msgid "Bottom:" +msgstr "Alt:" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:773 +msgid "" +"The higher the number of iterations, the more details will be calculated" +msgstr "Yüksek tekrarlamların sayısı, daha fazla detay hesaplanacak." + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:781 +msgid "CX:" +msgstr "CX:" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:784 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:794 +msgid "Changes aspect of fractal" +msgstr "Kesir açısını değiştirir" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:791 +msgid "CY:" +msgstr "CY:" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:809 +msgid "Load a fractal from file" +msgstr "Dosyadan kesir yükler" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:817 +msgid "Reset parameters to default values" +msgstr "Parametreleri temel değerlere ayarla." + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:826 +msgid "Save active fractal to file" +msgstr "Aktif kesiri dosyaya kaydet" + +#. Fractal type toggle box +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:829 +msgid "Fractal Type" +msgstr "Kesir Türü" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:842 +msgid "Mandelbrot" +msgstr "Mandelbrot" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:846 +msgid "Barnsley 1" +msgstr "Barnsley 1" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:848 +msgid "Barnsley 2" +msgstr "Barnsley 2" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:850 +msgid "Barnsley 3" +msgstr "Barnsley 3" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:852 +msgid "Spider" +msgstr "Örümcek" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:854 +msgid "Man'o'war" +msgstr "Man'o'war" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:856 +msgid "Lambda" +msgstr "Lamda" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:858 +msgid "Sierpinski" +msgstr "Sierpinski" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:920 +msgid "Number of colors:" +msgstr "Renk sayısı:" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:923 +msgid "Change the number of colors in the mapping" +msgstr "Eşleme içindeki renk sayısını değiştir." + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:930 +msgid "Use loglog smoothing" +msgstr "Günlük kayıdı düzgünleştirmesi kullan" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:937 +msgid "Use log log smoothing to eliminate \"banding\" in the result" +msgstr "" +"Sonuçlardaki \"şeritlemeyi\" kaldırmak için günlük kayıdı düzgünleştirmesini " +"kullan" + +#. Color Density frame +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:941 +msgid "Color Density" +msgstr "Renk Yoğunluğu" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:956 +msgid "Change the intensity of the red channel" +msgstr "Kırmızı kanalı yoğunluğunu değiştir" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:966 +msgid "Change the intensity of the green channel" +msgstr "Yeşil kanalı yoğunluğunu değiştir" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:976 +msgid "Change the intensity of the blue channel" +msgstr "Mavi kanalı yoğunluğunu değiştir" + +#. Color Function frame +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:982 +msgid "Color Function" +msgstr "Renk İşlevi" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:995 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1036 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1077 +msgid "Sine" +msgstr "Sinüs" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1004 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1045 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1086 +msgid "Use sine-function for this color component" +msgstr "Bu renk bileşeni için sine-işlevini kullan" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1007 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1048 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1089 +msgid "Use cosine-function for this color component" +msgstr "Bu renk bileşeni için cosine-işlevini kullan" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1010 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1051 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1092 +msgid "" +"Use linear mapping instead of any trigonometrical function for this color " +"channel" +msgstr "" +"Bu renk bileşeni için kullanılan herhangi bir trigonometrik işlev yerine " +"doğrusal eşlemeyi kullan" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1019 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1060 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1101 +msgid "Inversion" +msgstr "Tersine çevirme" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1027 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1068 +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1109 +msgid "" +"If you enable this option higher color values will be swapped with lower " +"ones and vice versa" +msgstr "" +"Eğer bu seçenek etkinleştirilirse yüksek renk değerleri düşük olanlarla " +"değiştirilecek." + +#. Colormode toggle box +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1114 +msgid "Color Mode" +msgstr "Renk Kipi" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1123 +msgid "As specified above" +msgstr "Yukarıda belirtildiği gibi" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1135 +msgid "" +"Create a color-map with the options you specified above (color " +"density/function). The result is visible in the preview image" +msgstr "" +"Aşağıda belirttiğiniz seçenekler ile (renk yoğunluğu/işlevi) renk haritası " +"oluşturun. Sonuç önizleme resminde görülür." + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1145 +msgid "Apply active gradient to final image" +msgstr "Aktif gradyanı son resme uygula" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1157 +msgid "Create a color-map using a gradient from the gradient editor" +msgstr "" +"Artımlı geçiş düzenleyicisinden bir artımlı geçiş kullanarak renk haritası " +"oluştur." + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1168 +msgid "FractalExplorer Gradient" +msgstr "KesirTarayıcı Artımlı Geçişi" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1198 +msgid "_Fractals" +msgstr "_Kesirler" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1560 +#, c-format +msgid "Could not write '%s': %s" +msgstr "'%s' yazılamadı: %s" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1635 +msgid "Load Fractal Parameters" +msgstr "Kesir Katsayıları Yükle" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1673 +msgid "Save Fractal Parameters" +msgstr "Kesir Kaysayılarını Kaydet" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1871 +#, c-format +msgid "'%s' is not a FractalExplorer file" +msgstr "'%s' KesirTarayıcısı dosyası değil" + +#: ../plug-ins/fractal-explorer/fractal-explorer-dialogs.c:1877 +#, c-format +msgid "'%s' is corrupt. Line %d Option section incorrect" +msgstr "'%s' bozuk. Satır %d Option kısmı hatalı" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:239 +msgid "Render fractal art" +msgstr "Keslirli usul tara" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:244 +msgid "_Fractal Explorer..." +msgstr "_Kesirli Tarama..." + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:374 +msgid "Rendering fractal" +msgstr "Kesirli tarama" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:756 +#: ../plug-ins/gradient-flare/gradient-flare.c:3200 +#, c-format +msgid "Are you sure you want to delete \"%s\" from the list and from disk?" +msgstr "\"%s\", listeden ve diskinizden silmek istediğinize emin misiniz?" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:760 +msgid "Delete Fractal" +msgstr "Kesiri Sil" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:950 +#, c-format +msgid "File '%s' is not a FractalExplorer file" +msgstr "'%s' dosyası KesirTarayıcısı dosyası değil" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:959 +#, c-format +msgid "" +"File '%s' is corrupt.\n" +"Line %d Option section incorrect" +msgstr "" +"'%s' dosyası bozuk.\n" +"Satır %d Option kısmı hatalı" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:1003 +msgid "My first fractal" +msgstr "İlk Kesirli Taramam" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:1067 +msgid "Select folder and rescan collection" +msgstr "Dizini seçin ve koleksiyonu tekrar tarayın" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:1079 +msgid "Apply currently selected fractal" +msgstr "Şuan seçilen kesiri uygula" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:1091 +msgid "Delete currently selected fractal" +msgstr "Şuan seçilen kesiri sil" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:1114 +msgid "Rescan for Fractals" +msgstr "Kesirler için yeniden tara" + +#: ../plug-ins/fractal-explorer/fractal-explorer.c:1133 +msgid "Add FractalExplorer Path" +msgstr "KesirTarayıcısı Yolu Ekle" + +#: ../plug-ins/gfig/gfig-bezier.c:443 +msgid "Closed" +msgstr "Kapatıldı" + +#: ../plug-ins/gfig/gfig-bezier.c:448 +msgid "Close curve on completion" +msgstr "Sonuçlandığında kavisi kapat." + +#: ../plug-ins/gfig/gfig-bezier.c:453 +msgid "Show Line Frame" +msgstr "Çizgi çerçevesini göster" + +#: ../plug-ins/gfig/gfig-bezier.c:458 +msgid "Draws lines between the control points. Only during curve creation" +msgstr "" +"Denetim noktaları arasında çizgiler çizer. Sadece kavis oluşturma esnasında" + +#. Start building the dialog up +#: ../plug-ins/gfig/gfig-dialog.c:286 +msgid "Gfig" +msgstr "Gfig" + +#. Tool options notebook +#: ../plug-ins/gfig/gfig-dialog.c:337 +msgid "Tool Options" +msgstr "Araç Seçenekleri" + +#: ../plug-ins/gfig/gfig-dialog.c:354 +msgid "_Stroke" +msgstr "_Darbe" + +#. Fill frame on right side +#: ../plug-ins/gfig/gfig-dialog.c:401 +msgid "Fill" +msgstr "Doldur" + +#: ../plug-ins/gfig/gfig-dialog.c:415 +msgid "No fill" +msgstr "Dolgusuz" + +#: ../plug-ins/gfig/gfig-dialog.c:416 +msgid "Color fill" +msgstr "Renk doldurma" + +#: ../plug-ins/gfig/gfig-dialog.c:417 +msgid "Pattern fill" +msgstr "Desen doldurma" + +#: ../plug-ins/gfig/gfig-dialog.c:418 +msgid "Shape gradient" +msgstr "Şekilli renk geçiş" + +#: ../plug-ins/gfig/gfig-dialog.c:419 +msgid "Vertical gradient" +msgstr "Düşey renk geçişi" + +#: ../plug-ins/gfig/gfig-dialog.c:420 +msgid "Horizontal gradient" +msgstr "Yatay renk geçişi" + +#. "show image" checkbutton at bottom of style frame +#: ../plug-ins/gfig/gfig-dialog.c:480 +msgid "Show image" +msgstr "Resmi göster" + +#. "snap to grid" checkbutton at bottom of style frame +#: ../plug-ins/gfig/gfig-dialog.c:493 +msgctxt "checkbutton" +msgid "Snap to grid" +msgstr "Izgaraya uydur" + +#. "show grid" checkbutton at bottom of style frame +#: ../plug-ins/gfig/gfig-dialog.c:502 +msgid "Show grid" +msgstr "Izgarayı göster" + +#: ../plug-ins/gfig/gfig-dialog.c:637 +msgid "Load Gfig Object Collection" +msgstr "Gfig Nesne Koleksiyonunu Yükle" + +#: ../plug-ins/gfig/gfig-dialog.c:686 +msgid "Save Gfig Drawing" +msgstr "Gfig Çizimini Kaydet" + +#: ../plug-ins/gfig/gfig-dialog.c:831 +msgid "First Gfig" +msgstr "İlk Gfig" + +#: ../plug-ins/gfig/gfig-dialog.c:870 +msgid "_Undo" +msgstr "_Geri Al" + +#: ../plug-ins/gfig/gfig-dialog.c:874 +msgid "_Clear" +msgstr "_Temizle" + +#: ../plug-ins/gfig/gfig-dialog.c:878 ../plug-ins/imagemap/imap_menu.c:209 +msgid "_Grid" +msgstr "_Izgara" + +#: ../plug-ins/gfig/gfig-dialog.c:886 +msgid "Raise selected object" +msgstr "Seçilen nesne yükseltildi" + +#: ../plug-ins/gfig/gfig-dialog.c:890 +msgid "Lower selected object" +msgstr "Seçilen nesne alçaltıldı" + +#: ../plug-ins/gfig/gfig-dialog.c:894 +msgid "Raise selected object to top" +msgstr "Seçilen nesneyi en üste yükselt" + +#: ../plug-ins/gfig/gfig-dialog.c:898 +msgid "Lower selected object to bottom" +msgstr "Seçilen nesneyi en alta indir" + +#: ../plug-ins/gfig/gfig-dialog.c:902 +msgid "Show previous object" +msgstr "Önceki nesneyi göster" + +#: ../plug-ins/gfig/gfig-dialog.c:906 +msgid "Show next object" +msgstr "Sonraki nesneyi göster" + +#: ../plug-ins/gfig/gfig-dialog.c:910 ../plug-ins/gfig/gfig-stock.c:53 +msgid "Show all objects" +msgstr "Tüm nesneleri göster" + +#: ../plug-ins/gfig/gfig-dialog.c:916 ../plug-ins/gfig/gfig-stock.c:47 +msgid "Create line" +msgstr "Çizgi oluştur" + +#: ../plug-ins/gfig/gfig-dialog.c:919 ../plug-ins/gfig/gfig-stock.c:51 +msgid "Create rectangle" +msgstr "Dörtgen oluştur" + +#: ../plug-ins/gfig/gfig-dialog.c:922 ../plug-ins/gfig/gfig-stock.c:42 +msgid "Create circle" +msgstr "Daire oluştur" + +#: ../plug-ins/gfig/gfig-dialog.c:925 ../plug-ins/gfig/gfig-stock.c:46 +msgid "Create ellipse" +msgstr "Elips oluştur" + +#: ../plug-ins/gfig/gfig-dialog.c:928 ../plug-ins/gfig/gfig-stock.c:44 +msgid "Create arc" +msgstr "Arc oluştur" + +#: ../plug-ins/gfig/gfig-dialog.c:931 ../plug-ins/gfig/gfig-stock.c:50 +msgid "Create reg polygon" +msgstr "Reg poligonu oluştur" + +#: ../plug-ins/gfig/gfig-dialog.c:934 ../plug-ins/gfig/gfig-stock.c:55 +msgid "Create star" +msgstr "Yıldız oluştur" + +#: ../plug-ins/gfig/gfig-dialog.c:937 ../plug-ins/gfig/gfig-stock.c:54 +msgid "Create spiral" +msgstr "Spiral oluştur" + +#: ../plug-ins/gfig/gfig-dialog.c:940 +msgid "Create bezier curve. Shift + Button ends object creation." +msgstr "Bezier eğrisi oluştur. Shift + Tuş nesne oluşturmayı sonlandırır." + +#: ../plug-ins/gfig/gfig-dialog.c:944 ../plug-ins/gfig/gfig-stock.c:48 +msgid "Move an object" +msgstr "Bir nesneyi taşı" + +#: ../plug-ins/gfig/gfig-dialog.c:947 ../plug-ins/gfig/gfig-stock.c:49 +msgid "Move a single point" +msgstr "Tek nokta taşı" + +#: ../plug-ins/gfig/gfig-dialog.c:950 ../plug-ins/gfig/gfig-stock.c:43 +msgid "Copy an object" +msgstr "Bir nesne seç" + +#: ../plug-ins/gfig/gfig-dialog.c:953 ../plug-ins/gfig/gfig-stock.c:45 +msgid "Delete an object" +msgstr "Bir nesneyi sil" + +#: ../plug-ins/gfig/gfig-dialog.c:956 ../plug-ins/gfig/gfig-stock.c:52 +msgid "Select an object" +msgstr "Bir nesne seç" + +#: ../plug-ins/gfig/gfig-dialog.c:1038 +msgid "This tool has no options" +msgstr "Bu aracın seçeneği yok" + +#. Put buttons in +#: ../plug-ins/gfig/gfig-dialog.c:1228 +msgid "Show position" +msgstr "Konumu göster" + +#: ../plug-ins/gfig/gfig-dialog.c:1240 +msgid "Show control points" +msgstr "Denetim noktalarını göster" + +#: ../plug-ins/gfig/gfig-dialog.c:1274 +msgid "Max undo:" +msgstr "En Fazla Geri Alma:" + +#: ../plug-ins/gfig/gfig-dialog.c:1283 +#: ../plug-ins/gimpressionist/general.c:185 +msgid "Transparent" +msgstr "Şeffaf" + +#: ../plug-ins/gfig/gfig-dialog.c:1285 +msgid "Foreground" +msgstr "Önalan" + +#: ../plug-ins/gfig/gfig-dialog.c:1287 ../plug-ins/imagemap/imap_cmd_copy.c:54 +#: ../plug-ins/imagemap/imap_cmd_copy_object.c:55 +#: ../plug-ins/imagemap/imap_menu.c:160 +msgid "Copy" +msgstr "Kopyala" + +#: ../plug-ins/gfig/gfig-dialog.c:1296 +msgid "" +"Layer background type. Copy causes the previous layer to be copied before " +"the draw is performed." +msgstr "" +"Katman artalan biçimi. Kopyalama seçeneği, çizim gerçekleştirilmeden önce " +"önceki katmanın kopyalanmasına neden olur." + +#: ../plug-ins/gfig/gfig-dialog.c:1302 +msgid "Background:" +msgstr "Arkaplan:" + +#: ../plug-ins/gfig/gfig-dialog.c:1305 +msgid "Feather" +msgstr "Yumuşat" + +#: ../plug-ins/gfig/gfig-dialog.c:1329 +msgid "Radius:" +msgstr "Yarıçap:" + +#: ../plug-ins/gfig/gfig-dialog.c:1386 +msgid "Grid spacing:" +msgstr "Izgara aralığı:" + +#: ../plug-ins/gfig/gfig-dialog.c:1403 +msgid "Polar grid sectors desired:" +msgstr "İstenilen kutupsal ızgara dilimleri:" + +#: ../plug-ins/gfig/gfig-dialog.c:1425 +msgid "Polar grid radius interval:" +msgstr "Kutupsal ızgara yarıçapı aralığı:" + +#: ../plug-ins/gfig/gfig-dialog.c:1441 ../plug-ins/imagemap/imap_menu.c:220 +msgid "Rectangle" +msgstr "Dörtgen" + +#: ../plug-ins/gfig/gfig-dialog.c:1443 +msgid "Isometric" +msgstr "Izometrik" + +#: ../plug-ins/gfig/gfig-dialog.c:1452 +msgid "Grid type:" +msgstr "Izgara türü:" + +#: ../plug-ins/gfig/gfig-dialog.c:1459 +#: ../plug-ins/gradient-flare/gradient-flare.c:551 +msgid "Normal" +msgstr "Normal" + +#: ../plug-ins/gfig/gfig-dialog.c:1462 +msgid "Grey" +msgstr "Gri" + +#: ../plug-ins/gfig/gfig-dialog.c:1463 +msgid "Darker" +msgstr "Daha Koyu" + +#: ../plug-ins/gfig/gfig-dialog.c:1464 +msgid "Lighter" +msgstr "Daha Açık" + +#: ../plug-ins/gfig/gfig-dialog.c:1465 +msgid "Very dark" +msgstr "Çok koyu" + +#: ../plug-ins/gfig/gfig-dialog.c:1474 +msgid "Grid color:" +msgstr "Izgara rengi:" + +#: ../plug-ins/gfig/gfig-dialog.c:1697 +msgid "Sides:" +msgstr "Yanlar:" + +#: ../plug-ins/gfig/gfig-dialog.c:1707 +msgid "Right" +msgstr "Sağ" + +#: ../plug-ins/gfig/gfig-dialog.c:1708 +msgid "Left" +msgstr "Sol" + +#: ../plug-ins/gfig/gfig-dialog.c:1718 +#: ../plug-ins/gimpressionist/orientation.c:148 +msgid "Orientation:" +msgstr "Yöneliş:" + +#: ../plug-ins/gfig/gfig-dobject.c:585 +msgid "Hey where has the object gone ?" +msgstr "Hey cisim nereye gitti ?" + +#: ../plug-ins/gfig/gfig-dobject.c:955 +msgid "Error reading file" +msgstr "Dosya okunamıyor" + +#: ../plug-ins/gfig/gfig-dobject.c:1044 +msgid "Editing read-only object - you will not be able to save it" +msgstr "Salt okunur nesne düzenleniyor - dosyayı kaydedemeyeceksiniz." + +#: ../plug-ins/gfig/gfig-poly.c:51 +msgid "Regular Polygon Number of Sides" +msgstr "Kenarların Düzgün Çokgen Sayısı" + +#: ../plug-ins/gfig/gfig-preview.c:328 +msgid "Object Details" +msgstr "Nesne Özellikleri" + +#. Position labels +#: ../plug-ins/gfig/gfig-preview.c:378 +msgid "XY position:" +msgstr "XY konumu:" + +#: ../plug-ins/gfig/gfig-spiral.c:55 +msgid "Spiral Number of Turns" +msgstr "Dönüşlerin Sarmal Sayısı" + +#: ../plug-ins/gfig/gfig-star.c:52 +msgid "Star Number of Points" +msgstr "Yıldız Noktalarının Sayısı" + +#: ../plug-ins/gfig/gfig-stock.c:41 +msgid "Create bezier curve" +msgstr "Bezier eğrisi oluştur" + +#: ../plug-ins/gfig/gfig.c:124 +msgid "Create geometric shapes" +msgstr "Geometrik şekiller oluştur" + +#: ../plug-ins/gfig/gfig.c:135 +msgid "_Gfig..." +msgstr "_Gfig..." + +#: ../plug-ins/gfig/gfig.c:731 +msgid "" +"Error trying to save figure as a parasite: can't attach parasite to drawable." +msgstr "" +"Şekli parazit olarak kaydetmeye çalışırken hata: parazit çizilebilir olarak " +"eklenemiyor." + +#: ../plug-ins/gfig/gfig.c:758 +#, c-format +msgid "Error trying to open temporary file '%s' for parasite loading: %s" +msgstr "" +"Parazit yüklemesi için geçici dosya '%s' açılmaya çalışılırken hata: %s" + +#: ../plug-ins/gimpressionist/brush.c:247 +msgid "Can only save drawables!" +msgstr "Sadece çizilebilenler kaydedilebilir!" + +#: ../plug-ins/gimpressionist/brush.c:252 +msgid "Save Brush" +msgstr "Fırçayı Kaydet" + +#: ../plug-ins/gimpressionist/brush.c:507 +msgid "_Brush" +msgstr "_Fırça" + +#: ../plug-ins/gimpressionist/brush.c:544 +msgid "Gamma:" +msgstr "Gama:" + +#: ../plug-ins/gimpressionist/brush.c:562 +msgid "Changes the gamma (brightness) of the selected brush" +msgstr "Seçilen fırçada gamma (aydınlık) değişiklikleri" + +#: ../plug-ins/gimpressionist/brush.c:570 +msgid "Select:" +msgstr "Seç:" + +#: ../plug-ins/gimpressionist/brush.c:599 +msgid "Aspect ratio:" +msgstr "En-boy oranı:" + +#: ../plug-ins/gimpressionist/brush.c:603 +msgid "Specifies the aspect ratio of the brush" +msgstr "Fırçanın en-boy oranını belirler" + +#: ../plug-ins/gimpressionist/brush.c:612 +#: ../plug-ins/gimpressionist/paper.c:206 +msgid "Relief:" +msgstr "Kabartma:" + +#: ../plug-ins/gimpressionist/brush.c:616 +#: ../plug-ins/gimpressionist/paper.c:210 +msgid "Specifies the amount of embossing to apply to the image (in percent)" +msgstr "Resme uygulanacak kabartma miktarını belirtir (yüzde olarak)" + +#: ../plug-ins/gimpressionist/color.c:60 +msgid "Co_lor" +msgstr "R_enk" + +#: ../plug-ins/gimpressionist/color.c:70 +msgid "A_verage under brush" +msgstr "Fırça altı or_talaması" + +#: ../plug-ins/gimpressionist/color.c:72 +msgid "C_enter of brush" +msgstr "_Fırçayı ortala" + +#: ../plug-ins/gimpressionist/color.c:79 +msgid "Color is computed from the average of all pixels under the brush" +msgstr "Renk, fırça altındaki tüm beneklerin ortalamasından hesaplandı" + +#: ../plug-ins/gimpressionist/color.c:83 +msgid "Samples the color from the pixel in the center of the brush" +msgstr "Rengi fırçanın merkezindeki benekten örnekler" + +#: ../plug-ins/gimpressionist/color.c:94 +msgid "Color _noise:" +msgstr "Renk _gürültüsü:" + +#: ../plug-ins/gimpressionist/color.c:98 +msgid "Adds random noise to the color" +msgstr "Renge rasgele gürültü ekler" + +#: ../plug-ins/gimpressionist/general.c:134 +#: ../plug-ins/gradient-flare/gradient-flare.c:3529 +msgid "_General" +msgstr "_Genel" + +#: ../plug-ins/gimpressionist/general.c:150 +msgid "Keep original" +msgstr "Aslını koru" + +#: ../plug-ins/gimpressionist/general.c:151 +msgid "Preserve the original image as a background" +msgstr "Özgün resmi artalan olarak koru" + +#: ../plug-ins/gimpressionist/general.c:156 +msgid "From paper" +msgstr "Kağıttan" + +#: ../plug-ins/gimpressionist/general.c:157 +msgid "Copy the texture of the selected paper as a background" +msgstr "Seçilen kağıdın dokusunu artalan olarak kopyala" + +#: ../plug-ins/gimpressionist/general.c:167 +msgid "Solid colored background" +msgstr "Katı renkli artalan" + +#: ../plug-ins/gimpressionist/general.c:186 +msgid "" +"Use a transparent background; Only the strokes painted will be visible" +msgstr "Saydam artalan kullan; yalnızca boyanan darbeler görünür olacak" + +#: ../plug-ins/gimpressionist/general.c:203 +msgid "Paint edges" +msgstr "Boya kenarları" + +#: ../plug-ins/gimpressionist/general.c:208 +msgid "Selects if to place strokes all the way out to the edges of the image" +msgstr "Resimin kenarlarından dışa çıkması için darbeler seçer." + +#. Tileable checkbox +#: ../plug-ins/gimpressionist/general.c:213 ../plug-ins/maze/maze-dialog.c:278 +msgid "Tileable" +msgstr "Döşenebilir" + +#: ../plug-ins/gimpressionist/general.c:217 +msgid "Selects if the resulting image should be seamlessly tileable" +msgstr "" +"Sonuçlanan resmin kusursuz olarak döşenebilir olması istendiği için seçilir" + +#: ../plug-ins/gimpressionist/general.c:222 +msgid "Drop shadow" +msgstr "Gölge düşürme" + +#: ../plug-ins/gimpressionist/general.c:227 +msgid "Adds a shadow effect to each brush stroke" +msgstr "Her fırça darbesine bir gölge etkisi ekle" + +#: ../plug-ins/gimpressionist/general.c:240 +msgid "Edge darken:" +msgstr "Kenar karartma:" + +#: ../plug-ins/gimpressionist/general.c:244 +msgid "How much to \"darken\" the edges of each brush stroke" +msgstr "Her fırça darbesi için kenarlar ne kadar karartılacak" + +#: ../plug-ins/gimpressionist/general.c:249 +msgid "Shadow darken:" +msgstr "Gölge karartma:" + +#: ../plug-ins/gimpressionist/general.c:253 +msgid "How much to \"darken\" the drop shadow" +msgstr "Gölge düşürmenin ne kadar \"koyu\" olacağı" + +#: ../plug-ins/gimpressionist/general.c:258 +msgid "Shadow depth:" +msgstr "Gölge derinliği:" + +#: ../plug-ins/gimpressionist/general.c:262 +msgid "" +"The depth of the drop shadow, i.e. how far apart from the object it should be" +msgstr "" +"Gölge düşürmenin derinliği, örn. nesneden ne kadar uzaklıkta bulunmalı" + +#: ../plug-ins/gimpressionist/general.c:267 +msgid "Shadow blur:" +msgstr "Gölge bulanıklığı:" + +#: ../plug-ins/gimpressionist/general.c:271 +msgid "How much to blur the drop shadow" +msgstr "Gölge düşürme bulanıklılığının ne kadar olacağı" + +#: ../plug-ins/gimpressionist/general.c:276 +msgid "Deviation threshold:" +msgstr "Sapma eşiği:" + +#: ../plug-ins/gimpressionist/general.c:280 +msgid "A bailout-value for adaptive selections" +msgstr "Uyarlanabilir seçimler için bir kurtarma değeri" + +#: ../plug-ins/gimpressionist/gimp.c:90 +msgid "Performs various artistic operations" +msgstr "Çeşitli sanatsal işlemler gerçekleştirir" + +#: ../plug-ins/gimpressionist/gimp.c:95 +msgid "_GIMPressionist..." +msgstr "_GIMPressionist..." + +#: ../plug-ins/gimpressionist/gimp.c:371 +msgid "Painting" +msgstr "Boyama" + +#: ../plug-ins/gimpressionist/gimpressionist.c:139 +msgid "GIMPressionist" +msgstr "GIMPressionist" + +#: ../plug-ins/gimpressionist/orientation.c:92 +msgid "Or_ientation" +msgstr "_Yöneltme" + +#: ../plug-ins/gimpressionist/orientation.c:106 +msgid "Directions:" +msgstr "Yönler:" + +#: ../plug-ins/gimpressionist/orientation.c:110 +msgid "The number of directions (i.e. brushes) to use" +msgstr "Kullanıcılacak yönlerin sayısı (örn. fırçalar)" + +#: ../plug-ins/gimpressionist/orientation.c:118 +msgid "Start angle:" +msgstr "Başlangıç açısı:" + +#: ../plug-ins/gimpressionist/orientation.c:122 +msgid "The starting angle of the first brush to create" +msgstr "Oluşturulacak ilk fırçanın başlangıç açısı" + +#: ../plug-ins/gimpressionist/orientation.c:130 +msgid "Angle span:" +msgstr "Köşe kirişi:" + +#: ../plug-ins/gimpressionist/orientation.c:134 +msgid "The angle span of the first brush to create" +msgstr "İlk fırçanın oluşturulacak köşe kirişi" + +#: ../plug-ins/gimpressionist/orientation.c:157 +msgid "" +"Let the value (brightness) of the region determine the direction of the " +"stroke" +msgstr "Darbenin yönünü belirlemesi için alan değerine (parlaklık) izin ver" + +#: ../plug-ins/gimpressionist/orientation.c:160 +#: ../plug-ins/gimpressionist/size.c:163 +msgid "Radius" +msgstr "Yarıçap" + +#: ../plug-ins/gimpressionist/orientation.c:161 +msgid "" +"The distance from the center of the image determines the direction of the " +"stroke" +msgstr "Resmin ortasından gelen uzaklık darbenin yönünü belirler" + +#: ../plug-ins/gimpressionist/orientation.c:165 +msgid "Selects a random direction of each stroke" +msgstr "Her darbe için rasgele bir yön seçer" + +#: ../plug-ins/gimpressionist/orientation.c:168 +#: ../plug-ins/gimpressionist/size.c:171 +msgid "Radial" +msgstr "Dairesel" + +#: ../plug-ins/gimpressionist/orientation.c:169 +msgid "" +"Let the direction from the center determine the direction of the stroke" +msgstr "Darbenin merkezden gelen yöne göre yönünü belirlemesine izin ver" + +#: ../plug-ins/gimpressionist/orientation.c:176 +#: ../plug-ins/gimpressionist/size.c:179 +msgid "Flowing" +msgstr "Akış" + +#: ../plug-ins/gimpressionist/orientation.c:177 +#: ../plug-ins/gimpressionist/size.c:180 +msgid "The strokes follow a \"flowing\" pattern" +msgstr "Darbeler bir \"akıcı\" desen izler" + +#: ../plug-ins/gimpressionist/orientation.c:181 +msgid "The hue of the region determines the direction of the stroke" +msgstr "Alanın renk tonu darbenin yönünü belirler." + +#: ../plug-ins/gimpressionist/orientation.c:184 +#: ../plug-ins/gimpressionist/size.c:187 +msgid "Adaptive" +msgstr "Uyarlanır" + +#: ../plug-ins/gimpressionist/orientation.c:185 +msgid "The direction that matches the original image the closest is selected" +msgstr "Özgün resim ile en yakın eşleşen yön seçildi" + +#: ../plug-ins/gimpressionist/orientation.c:192 +#: ../plug-ins/gimpressionist/size.c:196 +msgid "Manual" +msgstr "Kılavuz" + +#: ../plug-ins/gimpressionist/orientation.c:193 +msgid "Manually specify the stroke orientation" +msgstr "Darbe yönlenmesini elle belirt" + +#: ../plug-ins/gimpressionist/orientation.c:204 +msgid "Opens up the Orientation Map Editor" +msgstr "Yönlendirme Eşlemi Düzenleyicisini açar" + +#: ../plug-ins/gimpressionist/orientmap.c:526 +msgid "Orientation Map Editor" +msgstr "Yönlendirme Eşlemi Düzenleyicisi" + +#: ../plug-ins/gimpressionist/orientmap.c:555 +msgid "Vectors" +msgstr "Vektörler" + +#: ../plug-ins/gimpressionist/orientmap.c:567 +msgid "" +"The vector-field. Left-click to move selected vector, Right-click to point " +"it towards mouse, Middle-click to add a new vector." +msgstr "" +"Vektör alanı. Seçilen vektörü taşımak için sol tıklayın, fareye göre " +"yönlendirmek için sağ tıklayın, yeni vektör eklemek için ortaya tıklayın." + +#: ../plug-ins/gimpressionist/orientmap.c:590 +#: ../plug-ins/gimpressionist/sizemap.c:459 +msgid "Adjust the preview's brightness" +msgstr "Önizlemenin parlaklığını ayarla" + +#: ../plug-ins/gimpressionist/orientmap.c:612 +msgid "Select previous vector" +msgstr "Önceki vektörü seç" + +#: ../plug-ins/gimpressionist/orientmap.c:618 +msgid "Select next vector" +msgstr "Sonraki vektörü seç" + +#: ../plug-ins/gimpressionist/orientmap.c:620 +#: ../plug-ins/gimpressionist/sizemap.c:490 +msgid "A_dd" +msgstr "_Ekle" + +#: ../plug-ins/gimpressionist/orientmap.c:624 +msgid "Add new vector" +msgstr "Yeni vektör ekle" + +#: ../plug-ins/gimpressionist/orientmap.c:626 +#: ../plug-ins/gimpressionist/sizemap.c:497 +msgid "_Kill" +msgstr "İşlemi Ö_ldür" + +#: ../plug-ins/gimpressionist/orientmap.c:630 +msgid "Delete selected vector" +msgstr "Seçilen vektörü sil" + +#: ../plug-ins/gimpressionist/orientmap.c:641 +msgid "Type" +msgstr "Tip" + +#: ../plug-ins/gimpressionist/orientmap.c:645 +msgid "_Normal" +msgstr "_Normal" + +#: ../plug-ins/gimpressionist/orientmap.c:646 +msgid "Vorte_x" +msgstr "_Girdap" + +#: ../plug-ins/gimpressionist/orientmap.c:647 +msgid "Vortex_2" +msgstr "Girdap_2" + +#: ../plug-ins/gimpressionist/orientmap.c:648 +msgid "Vortex_3" +msgstr "Girdap_3" + +#: ../plug-ins/gimpressionist/orientmap.c:654 +#: ../plug-ins/gimpressionist/sizemap.c:542 +msgid "_Voronoi" +msgstr "_Voronoi" + +#: ../plug-ins/gimpressionist/orientmap.c:662 +msgid "" +"Voronoi-mode makes only the vector closest to the given point have any " +"influence" +msgstr "" +"Voronoi-biçimi, verilen noktaya en yakın vektöre herhangi bir etki yapar" + +#: ../plug-ins/gimpressionist/orientmap.c:672 +msgid "A_ngle:" +msgstr "_Açı:" + +#: ../plug-ins/gimpressionist/orientmap.c:676 +msgid "Change the angle of the selected vector" +msgstr "Seçilen vektörün açısını değiştir" + +#: ../plug-ins/gimpressionist/orientmap.c:683 +msgid "Ang_le offset:" +msgstr "K_öşe konumu:" + +#: ../plug-ins/gimpressionist/orientmap.c:687 +msgid "Offset all vectors with a given angle" +msgstr "Tüm vektörleri bir açı ile dengele" + +#: ../plug-ins/gimpressionist/orientmap.c:698 +msgid "Change the strength of the selected vector" +msgstr "Seçilen vektörün keskinliğini değiştir" + +#: ../plug-ins/gimpressionist/orientmap.c:705 +msgid "S_trength exp.:" +msgstr "Keskinlik dışa aktarması:" + +#: ../plug-ins/gimpressionist/orientmap.c:709 +#: ../plug-ins/gimpressionist/sizemap.c:537 +msgid "Change the exponent of the strength" +msgstr "Keskinliğin şiddetini değiştir" + +#: ../plug-ins/gimpressionist/paper.c:138 +msgid "P_aper" +msgstr "K_ağıt" + +#: ../plug-ins/gimpressionist/paper.c:173 +msgid "Inverts the Papers texture" +msgstr "Kağıtların dokusunu tersine çevirir" + +#: ../plug-ins/gimpressionist/paper.c:177 +msgid "O_verlay" +msgstr "Ka_plama" + +#: ../plug-ins/gimpressionist/paper.c:182 +msgid "Applies the paper as it is (without embossing it)" +msgstr "Kağıdı olduğu gibi uygular (kabartma olmadan)" + +#: ../plug-ins/gimpressionist/paper.c:198 +msgid "Specifies the scale of the texture (in percent of original file)" +msgstr "Dokunun derecesini belirler (özgün dosyanın yüzdesi olarak)" + +#: ../plug-ins/gimpressionist/placement.c:67 +msgid "Pl_acement" +msgstr "Ye_rleşim" + +#: ../plug-ins/gimpressionist/placement.c:73 +msgid "Placement" +msgstr "Yerleştirme" + +#: ../plug-ins/gimpressionist/placement.c:77 +msgid "Randomly" +msgstr "Rastgele" + +#: ../plug-ins/gimpressionist/placement.c:81 +msgid "Evenly distributed" +msgstr "Eşit olarak dağıtılmış" + +#: ../plug-ins/gimpressionist/placement.c:89 +msgid "Place strokes randomly around the image" +msgstr "Darbeleri resmin çevresine rasgele yerleştir" + +#: ../plug-ins/gimpressionist/placement.c:93 +msgid "The strokes are evenly distributed across the image" +msgstr "Darbeler resim boyunca eşit bir şekilde dağıtılır" + +#: ../plug-ins/gimpressionist/placement.c:102 +msgid "Centered" +msgstr "Ortalanmış" + +#: ../plug-ins/gimpressionist/placement.c:108 +msgid "Focus the brush strokes around the center of the image" +msgstr "Fırça darbelerini resim merkezi etrafında odakla" + +#: ../plug-ins/gimpressionist/placement.c:120 +msgid "Stroke _density:" +msgstr "Darbe _yoğunluğu:" + +#: ../plug-ins/gimpressionist/placement.c:124 +msgid "The relative density of the brush strokes" +msgstr "Fırça darbelerinin göreceli yoğunluğu" + +#. +#. * gimp_filename_to_utf8 () and g_strerror () return temporary strings +#. * that need not and should not be freed. So this call is OK. +#. * +#: ../plug-ins/gimpressionist/ppmtool.c:650 +#, c-format +msgid "Failed to save PPM file '%s': %s" +msgstr "PPM dosyası '%s' kaydedilemedi: %s" + +#: ../plug-ins/gimpressionist/presets.c:640 +msgid "Save Current" +msgstr "Şimdikini Kaydet" + +#: ../plug-ins/gimpressionist/presets.c:894 +msgid "Gimpressionist Defaults" +msgstr "Gimpressionist Varsayılanları" + +#: ../plug-ins/gimpressionist/presets.c:1015 +msgid "_Presets" +msgstr "_Öntanımlı" + +#: ../plug-ins/gimpressionist/presets.c:1030 +msgid "Save Current..." +msgstr "Şimdikini Kaydet..." + +#: ../plug-ins/gimpressionist/presets.c:1038 +msgid "Save the current settings to the specified file" +msgstr "Geçerli ayarları belirtilen dosyaya kaydet" + +#: ../plug-ins/gimpressionist/presets.c:1066 +msgid "Reads the selected Preset into memory" +msgstr "Belleğe seçilen Öntanımı okur" + +#: ../plug-ins/gimpressionist/presets.c:1072 +msgid "Deletes the selected Preset" +msgstr "Seçili öntanımlı ayarı sil" + +#: ../plug-ins/gimpressionist/presets.c:1078 +msgid "Reread the folder of Presets" +msgstr "Öntanımlıların dizinlerini yeniden oku" + +#: ../plug-ins/gimpressionist/preview.c:174 +#: ../plug-ins/gimpressionist/repaint.c:1184 +#: ../plug-ins/imagemap/imap_polygon.c:515 +#: ../plug-ins/lighting/lighting-ui.c:1075 +msgid "_Update" +msgstr "_Güncelle" + +#: ../plug-ins/gimpressionist/preview.c:180 +msgid "Refresh the Preview window" +msgstr "Önizleme penceresini yenile" + +#: ../plug-ins/gimpressionist/preview.c:188 +msgid "Revert to the original image" +msgstr "Özgün resme geri döndür" + +#: ../plug-ins/gimpressionist/size.c:95 +msgid "_Size" +msgstr "_Boyut" + +#: ../plug-ins/gimpressionist/size.c:109 +msgid "Sizes:" +msgstr "Boyutlar:" + +#: ../plug-ins/gimpressionist/size.c:113 +msgid "The number of sizes of brushes to use" +msgstr "Kullanılacak fırçaların boyutlarının sayısı" + +#: ../plug-ins/gimpressionist/size.c:121 +msgid "Minimum size:" +msgstr "Asgari boyut:" + +#: ../plug-ins/gimpressionist/size.c:125 +msgid "The smallest brush to create" +msgstr "Oluşturulacak en küçük fırça" + +#: ../plug-ins/gimpressionist/size.c:133 +msgid "Maximum size:" +msgstr "Azami boyut:" + +#: ../plug-ins/gimpressionist/size.c:137 +msgid "The largest brush to create" +msgstr "Oluşturulacak en büyük fırça" + +#: ../plug-ins/gimpressionist/size.c:151 +msgid "Size:" +msgstr "Büyüklük:" + +#: ../plug-ins/gimpressionist/size.c:160 +msgid "" +"Let the value (brightness) of the region determine the size of the stroke" +msgstr "" +"Darbenin boyutunu belirlemesi için alan değerine (parlaklık) izin ver" + +#: ../plug-ins/gimpressionist/size.c:164 +msgid "" +"The distance from the center of the image determines the size of the stroke" +msgstr "Resmin ortasından gelen uzaklık darbenin boyutunu belirler" + +#: ../plug-ins/gimpressionist/size.c:168 +msgid "Selects a random size for each stroke" +msgstr "Her darbe için rasgele boyut seçer" + +#: ../plug-ins/gimpressionist/size.c:172 +msgid "Let the direction from the center determine the size of the stroke" +msgstr "Darbe boyutunun merkezden gelen yöne belirlenmesine izin ver" + +#: ../plug-ins/gimpressionist/size.c:184 +msgid "The hue of the region determines the size of the stroke" +msgstr "Alanın renk tonu darbenin boyutunu belirler" + +#: ../plug-ins/gimpressionist/size.c:188 +msgid "" +"The brush-size that matches the original image the closest is selected" +msgstr "Özgün resim ile eşleşen en yakın fırça boyutu seçildi" + +#: ../plug-ins/gimpressionist/size.c:197 +msgid "Manually specify the stroke size" +msgstr "Darbe boyutunu elle belirle" + +#: ../plug-ins/gimpressionist/size.c:208 +msgid "Opens up the Size Map Editor" +msgstr "Boyut Eşleme Düzenleyicisini açar" + +#: ../plug-ins/gimpressionist/sizemap.c:401 +msgid "Size Map Editor" +msgstr "Boyut Eşleme Düzenleyicisi" + +#: ../plug-ins/gimpressionist/sizemap.c:429 +msgid "Smvectors" +msgstr "Smvektörleri" + +#: ../plug-ins/gimpressionist/sizemap.c:439 +msgid "" +"The smvector-field. Left-click to move selected smvector, Right-click to " +"point it towards mouse, Middle-click to add a new smvector." +msgstr "" +"Smvektör alanı. smvektörü seçmek için ol tıklayın, fare istikametini " +"işaretlemek için sağ tıklayın, yeni bir smvektör oluşturmak için ortaya " +"tıklayın." + +#: ../plug-ins/gimpressionist/sizemap.c:481 +msgid "Select previous smvector" +msgstr "Önceki smvektörü seç" + +#: ../plug-ins/gimpressionist/sizemap.c:488 +msgid "Select next smvector" +msgstr "Sonraki smvektörü seç" + +#: ../plug-ins/gimpressionist/sizemap.c:495 +msgid "Add new smvector" +msgstr "Yeni smvektör ekle" + +#: ../plug-ins/gimpressionist/sizemap.c:502 +msgid "Delete selected smvector" +msgstr "Seçilen smvektörü sil" + +#: ../plug-ins/gimpressionist/sizemap.c:515 +msgid "Change the angle of the selected smvector" +msgstr "Seçilen smvektörün açısını değiştir" + +#: ../plug-ins/gimpressionist/sizemap.c:522 +msgid "S_trength:" +msgstr "Ke_skinlik" + +#: ../plug-ins/gimpressionist/sizemap.c:526 +msgid "Change the strength of the selected smvector" +msgstr "Seçilen smvektörün keskinliğini değiştir" + +#: ../plug-ins/gimpressionist/sizemap.c:533 +msgid "St_rength exp.:" +msgstr "Ke_skeinlik dışa aktarımı:" + +#: ../plug-ins/gimpressionist/sizemap.c:549 +msgid "" +"Voronoi-mode makes only the smvector closest to the given point have any " +"influence" +msgstr "" +"Voronoi-biçimi, verilen noktaya en yakın smvektöre herhangi bir etki yapar" + +#: ../plug-ins/gradient-flare/gradient-flare.c:552 +msgid "Addition" +msgstr "Ekleme" + +#: ../plug-ins/gradient-flare/gradient-flare.c:553 +msgid "Overlay" +msgstr "Üstekoyum" + +#: ../plug-ins/gradient-flare/gradient-flare.c:807 +msgid "Produce a lense flare effect using gradients" +msgstr "Artımlı geçiş kullanarak alev merceği etkisi üretir" + +#: ../plug-ins/gradient-flare/gradient-flare.c:812 +msgid "_Gradient Flare..." +msgstr "Alev A_rtımlı Geçişi..." + +#. +#. * Dialog Shell +#. +#: ../plug-ins/gradient-flare/gradient-flare.c:951 +#: ../plug-ins/gradient-flare/gradient-flare.c:2357 +msgid "Gradient Flare" +msgstr "Alev Artımlı Geçişi" + +#: ../plug-ins/gradient-flare/gradient-flare.c:1264 +#, c-format +msgid "Failed to open GFlare file '%s': %s" +msgstr "IşımaGeçişi dosyası '%s' açılamadı: %s" + +#: ../plug-ins/gradient-flare/gradient-flare.c:1272 +#, c-format +msgid "'%s' is not a valid GFlare file." +msgstr "'%s' geçerli bir IşımaGeçişi dosyası değil." + +#: ../plug-ins/gradient-flare/gradient-flare.c:1326 +#, c-format +msgid "invalid formatted GFlare file: %s\n" +msgstr "Geçersiz biçimli IşımaGeçişi dosyası: %s\n" + +#: ../plug-ins/gradient-flare/gradient-flare.c:1451 +#, c-format +msgid "" +"GFlare '%s' is not saved. If you add a new entry in '%s', like:\n" +"(gflare-path \"%s\")\n" +"and make a folder '%s', then you can save your own GFlares into that folder." +msgstr "" +"IşımaGeçişi '%s' kaydedilmedi. Eğer '%s' içerisine yeni bir girdi " +"ekleyecekseniz, örneğin:\n" +"(gflare-yolu \"%s\")\n" +"ve '%s' dizini oluşturacaksanız kendi IşımaGeçişlerinizi o dizine " +"kaydedebilirsiniz." + +#: ../plug-ins/gradient-flare/gradient-flare.c:1484 +#, c-format +msgid "Failed to write GFlare file '%s': %s" +msgstr "IşımaGeçişi dosyası '%s' yazılamadı: %s" + +#: ../plug-ins/gradient-flare/gradient-flare.c:2414 +msgid "A_uto update preview" +msgstr "Önizlemeyi o_tomatik güncelleştir" + +#: ../plug-ins/gradient-flare/gradient-flare.c:2465 +msgid "`Default' is created." +msgstr "`Varsayılan' yaratıldı." + +#: ../plug-ins/gradient-flare/gradient-flare.c:2466 +msgid "Default" +msgstr "Öntanımlı" + +#. +#. * Scales +#. +#. +#. * Scales +#. +#: ../plug-ins/gradient-flare/gradient-flare.c:2745 +#: ../plug-ins/gradient-flare/gradient-flare.c:3582 +#: ../plug-ins/gradient-flare/gradient-flare.c:3687 +#: ../plug-ins/gradient-flare/gradient-flare.c:3824 +msgid "Parameters" +msgstr "Parametreler" + +#: ../plug-ins/gradient-flare/gradient-flare.c:2771 +msgid "Ro_tation:" +msgstr "Dö_ndürme:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:2783 +msgid "_Hue rotation:" +msgstr "_Renk tonu dönüşü:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:2795 +msgid "Vector _angle:" +msgstr "Vektör _açısı:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:2807 +msgid "Vector _length:" +msgstr "Vektör _uzunluğu:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:2828 +msgid "A_daptive supersampling" +msgstr "U_yarlamalı Üstün Örnekleme" + +#: ../plug-ins/gradient-flare/gradient-flare.c:2847 +msgid "_Max depth:" +msgstr "A_zami derinlik:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:2857 +msgid "_Threshold" +msgstr "_Eşik" + +#: ../plug-ins/gradient-flare/gradient-flare.c:2995 +msgid "S_elector" +msgstr "S_eçici" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3059 +msgid "New Gradient Flare" +msgstr "Yeni Artımlı Işıma Geçişi" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3062 +msgid "Enter a name for the new GFlare" +msgstr "Yeni IşımaGeçişi için isim girin" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3082 +#, c-format +msgid "The name '%s' is used already!" +msgstr "'%s' adı zaten kullanımda!" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3138 +msgid "Copy Gradient Flare" +msgstr "Artımlı Işıma Geçişini Kopyala" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3141 +msgid "Enter a name for the copied GFlare" +msgstr "Kopyalanan IşımaGeçişi için isim girin" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3163 +#, c-format +msgid "The name `%s' is used already!" +msgstr "`%s' adı zaten kullanımda!" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3194 +msgid "Cannot delete!! There must be at least one GFlare." +msgstr "Silinemiyor! En az bir IşımaGeçişi olmalı." + +#: ../plug-ins/gradient-flare/gradient-flare.c:3204 +msgid "Delete Gradient Flare" +msgstr "Artımlı Işıma Geçişini Sil" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3276 +#, c-format +msgid "not found %s in gflares_list" +msgstr "%s ışımageçişi_listesinde bulunamadı" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3317 +msgid "Gradient Flare Editor" +msgstr "Artımlı Işıma Geçişi Düzenleyicisi" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3321 +msgid "Rescan Gradients" +msgstr "Artımlı Geçişleri Yeniden Tara" + +#. Glow +#: ../plug-ins/gradient-flare/gradient-flare.c:3446 +msgid "Glow Paint Options" +msgstr "Parıltı Boyama Seçenekleri" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3457 +#: ../plug-ins/gradient-flare/gradient-flare.c:3485 +#: ../plug-ins/gradient-flare/gradient-flare.c:3513 +msgid "Opacity:" +msgstr "Opaklık:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3470 +#: ../plug-ins/gradient-flare/gradient-flare.c:3498 +#: ../plug-ins/gradient-flare/gradient-flare.c:3526 +msgid "Paint mode:" +msgstr "Boyama kipi:" + +#. Rays +#: ../plug-ins/gradient-flare/gradient-flare.c:3474 +msgid "Rays Paint Options" +msgstr "Işınların Boyama Seçenekleri" + +#. Rays +#: ../plug-ins/gradient-flare/gradient-flare.c:3502 +msgid "Second Flares Paint Options" +msgstr "İkinci Işıma Boyaması Seçenekleri" + +#. +#. * Gradient Menus +#. +#: ../plug-ins/gradient-flare/gradient-flare.c:3555 +#: ../plug-ins/gradient-flare/gradient-flare.c:3658 +#: ../plug-ins/gradient-flare/gradient-flare.c:3797 +msgid "Gradients" +msgstr "Renk Geçişleri" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3566 +#: ../plug-ins/gradient-flare/gradient-flare.c:3671 +#: ../plug-ins/gradient-flare/gradient-flare.c:3808 +msgid "Radial gradient:" +msgstr "Işınsal renk geçişi:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3570 +#: ../plug-ins/gradient-flare/gradient-flare.c:3675 +msgid "Angular gradient:" +msgstr "Açısal artımlı geçişi:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3574 +#: ../plug-ins/gradient-flare/gradient-flare.c:3679 +msgid "Angular size gradient:" +msgstr "Artımlı geçişin açısal boyutu:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3594 +#: ../plug-ins/gradient-flare/gradient-flare.c:3699 +#: ../plug-ins/gradient-flare/gradient-flare.c:3836 +msgid "Size (%):" +msgstr "Boyut (%):" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3606 +#: ../plug-ins/gradient-flare/gradient-flare.c:3711 +#: ../plug-ins/gradient-flare/gradient-flare.c:3848 +msgid "Rotation:" +msgstr "Döndürme:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3618 +#: ../plug-ins/gradient-flare/gradient-flare.c:3724 +#: ../plug-ins/gradient-flare/gradient-flare.c:3861 +msgid "Hue rotation:" +msgstr "Renk tonu dönüşü:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3632 +msgid "G_low" +msgstr "Pa_rıltı" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3736 +msgid "# of Spikes:" +msgstr "# Çivi:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3748 +msgid "Spike thickness:" +msgstr "Çivi kalınlığı:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3762 +msgid "_Rays" +msgstr "I_şınlar" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3812 +msgid "Size factor gradient:" +msgstr "Artımlı geçiş değişkeni boyutu:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3816 +msgid "Probability gradient:" +msgstr "Artımlı geçiş olasılığı:" + +#. +#. * Shape Radio Button Frame +#. +#: ../plug-ins/gradient-flare/gradient-flare.c:3878 +msgid "Shape of Second Flares" +msgstr "İkinci Işıma Şekli" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3886 +#: ../plug-ins/imagemap/imap_menu.c:222 +msgid "Circle" +msgstr "Daire" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3903 +#: ../plug-ins/imagemap/imap_menu.c:224 +msgid "Polygon" +msgstr "Çok kenarlı" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3936 +msgid "Random seed:" +msgstr "Rasgele besleme:" + +#: ../plug-ins/gradient-flare/gradient-flare.c:3950 +msgid "_Second Flares" +msgstr "İ_kinci Işımalar" + +#: ../plug-ins/help-browser/dialog.c:186 +#: ../plug-ins/help-browser/dialog.c:1121 +msgid "GIMP Help Browser" +msgstr "GIMP Yardım Gezgini" + +#: ../plug-ins/help-browser/dialog.c:564 +msgid "Go back one page" +msgstr "Bir sayfa geri git" + +#: ../plug-ins/help-browser/dialog.c:569 +msgid "Go forward one page" +msgstr "Bir sayfa ileri git" + +#: ../plug-ins/help-browser/dialog.c:574 +msgid "_Reload" +msgstr "_Yeniden Yükle" + +#: ../plug-ins/help-browser/dialog.c:574 +msgid "Reload current page" +msgstr "Şimdiki sayfayı yeniden yükle" + +#: ../plug-ins/help-browser/dialog.c:579 +msgid "_Stop" +msgstr "_Dur" + +#: ../plug-ins/help-browser/dialog.c:579 +msgid "Stop loading this page" +msgstr "Sayfanın yüklenmesini durdur" + +#: ../plug-ins/help-browser/dialog.c:584 +msgid "Go to the index page" +msgstr "İndeks sayfasına git" + +#: ../plug-ins/help-browser/dialog.c:589 +msgid "C_opy location" +msgstr "Yeri k_opyala" + +#: ../plug-ins/help-browser/dialog.c:590 +msgid "Copy the location of this page to the clipboard" +msgstr "Bu sayfanın yerini panoya kopyala" + +#: ../plug-ins/help-browser/dialog.c:610 +msgid "Find text in current page" +msgstr "Şimdiki sayfada metni bul" + +#: ../plug-ins/help-browser/dialog.c:615 +msgid "Find _Again" +msgstr "Y_eniden Bul" + +#: ../plug-ins/help-browser/dialog.c:634 +msgid "S_how Index" +msgstr "İndeksi _Göster" + +#: ../plug-ins/help-browser/dialog.c:635 +msgid "Toggle the visibility of the sidebar" +msgstr "Kenar çubuğu görünürlüğünü değiştir" + +#: ../plug-ins/help-browser/dialog.c:656 +msgid "Visit the GIMP documentation website" +msgstr "GIMP belgeleme sitesine git" + +#: ../plug-ins/help-browser/dialog.c:1162 +msgid "Find:" +msgstr "Bul:" + +#: ../plug-ins/help-browser/dialog.c:1179 +msgctxt "search" +msgid "_Previous" +msgstr "_Önceki" + +#: ../plug-ins/help-browser/dialog.c:1191 +msgctxt "search" +msgid "_Next" +msgstr "_Sonraki" + +#: ../plug-ins/help/gimphelpdomain.c:181 +#, c-format +msgid "The help pages for '%s' are not available." +msgstr "'%s' için yardım sayfalarına şu an bakılamıyor." + +#: ../plug-ins/help/gimphelpdomain.c:187 +msgid "The GIMP user manual is not available." +msgstr "GIMP kullanıcı rehberine şu an bakılamıyor." + +#: ../plug-ins/help/gimphelpdomain.c:188 +msgid "" +"Please make sure gimp-help-en is installed, or the appropriate gimp-help " +"package for your language." +msgstr "" +"Lütfen gimp-help-en ya da diliniz için uygun gimp-help paketi kurulu " +"olduğundan emin olun." + +#: ../plug-ins/help/gimphelpdomain.c:197 +msgid "Perhaps you are missing GIO backends and need to install GVFS?" +msgstr "GIO arkauçları eksik olabilir ve GVFS yüklemeniz gerekebilir?" + +#: ../plug-ins/help/gimphelpdomain.c:216 +#, c-format +msgid "Help ID '%s' unknown" +msgstr "'%s' yardım kimliği bilinmiyor" + +#: ../plug-ins/help/gimphelplocale.c:209 +#, c-format +msgid "Loading index from '%s'" +msgstr "İçerik '%s' üzerinden yükleniyor" + +#: ../plug-ins/help/gimphelplocale.c:267 +#, c-format +msgid "" +"Parse error in '%s':\n" +"%s" +msgstr "" +"'%s' içinde ayrıştırma hatası:\n" +"%s" + +#: ../plug-ins/ifs-compose/ifs-compose.c:334 +msgid "Create an Iterated Function System (IFS) fractal" +msgstr "Ötelenmiş İşlev Sistemi (IFS) kesiri oluştur" + +#: ../plug-ins/ifs-compose/ifs-compose.c:346 +msgid "_IFS Fractal..." +msgstr "_IFS Kesiri..." + +#. X +#: ../plug-ins/ifs-compose/ifs-compose.c:526 +#: ../plug-ins/lighting/lighting-ui.c:527 +#: ../plug-ins/map-object/map-object-ui.c:675 +#: ../plug-ins/map-object/map-object-ui.c:729 +#: ../plug-ins/map-object/map-object-ui.c:997 +#: ../plug-ins/map-object/map-object-ui.c:1046 +msgid "X:" +msgstr "X:" + +#. Y +#: ../plug-ins/ifs-compose/ifs-compose.c:540 +#: ../plug-ins/lighting/lighting-ui.c:541 +#: ../plug-ins/map-object/map-object-ui.c:689 +#: ../plug-ins/map-object/map-object-ui.c:742 +#: ../plug-ins/map-object/map-object-ui.c:1010 +#: ../plug-ins/map-object/map-object-ui.c:1057 +#: ../plug-ins/map-object/map-object-ui.c:1155 +msgid "Y:" +msgstr "Y:" + +#. Asym +#: ../plug-ins/ifs-compose/ifs-compose.c:582 +msgid "Asymmetry:" +msgstr "Asimetri:" + +#. Shear +#: ../plug-ins/ifs-compose/ifs-compose.c:596 +msgid "Shear:" +msgstr "Kesme:" + +#. Simple color control section +#: ../plug-ins/ifs-compose/ifs-compose.c:641 +msgid "Simple" +msgstr "Basit" + +#: ../plug-ins/ifs-compose/ifs-compose.c:650 +msgid "IFS Fractal: Target" +msgstr "IFS Kesiri: Hedef" + +#: ../plug-ins/ifs-compose/ifs-compose.c:656 +msgid "Scale hue by:" +msgstr "Renk tonunu şuna göre ölçekle:" + +#: ../plug-ins/ifs-compose/ifs-compose.c:671 +msgid "Scale value by:" +msgstr "Değeri şuna göre ayarla:" + +#. Full color control section +#: ../plug-ins/ifs-compose/ifs-compose.c:688 +msgid "Full" +msgstr "Tam" + +#: ../plug-ins/ifs-compose/ifs-compose.c:696 +msgid "IFS Fractal: Red" +msgstr "IFS Kesiri: Kırmızı" + +#: ../plug-ins/ifs-compose/ifs-compose.c:704 +msgid "IFS Fractal: Green" +msgstr "IFS Kesiri: Yeşil" + +#: ../plug-ins/ifs-compose/ifs-compose.c:712 +msgid "IFS Fractal: Blue" +msgstr "IFS Kesiri: Mavi" + +#: ../plug-ins/ifs-compose/ifs-compose.c:720 +msgid "IFS Fractal: Black" +msgstr "IFS Kesiri: Siyah" + +#: ../plug-ins/ifs-compose/ifs-compose.c:770 +msgid "IFS Fractal" +msgstr "IFS Kesiri" + +#: ../plug-ins/ifs-compose/ifs-compose.c:868 +msgid "Spatial Transformation" +msgstr "Uzaysal Dönüşüm" + +#: ../plug-ins/ifs-compose/ifs-compose.c:874 +msgid "Color Transformation" +msgstr "Renk Dönüşümü" + +#: ../plug-ins/ifs-compose/ifs-compose.c:884 +msgid "Relative probability:" +msgstr "Nispi olasılık:" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1059 +#: ../plug-ins/imagemap/imap_menu.c:163 +msgid "Select _All" +msgstr "Hepsini _Seç" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1063 +msgid "Re_center" +msgstr "Yeniden_ortala" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1063 +msgid "Recompute Center" +msgstr "Merkezi yeniden hesapla" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1067 +msgid "Render Options" +msgstr "Tarama Seçenekleri" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1073 +#: ../plug-ins/imagemap/imap_cmd_move.c:86 +#: ../plug-ins/imagemap/imap_cmd_object_move.c:57 +msgid "Move" +msgstr "Taşı" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1076 +msgid "Rotate" +msgstr "Döndür" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1076 +msgid "Rotate / Scale" +msgstr "Döndür / Ölçekle" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1079 +msgid "Stretch" +msgstr "Germe" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1177 +msgid "IFS Fractal Render Options" +msgstr "IFS Kesirli Tarama Seçenekleri" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1199 +msgid "Max. memory:" +msgstr "Azami hafıza:" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1226 +msgid "Subdivide:" +msgstr "Tekrar Bölme:" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1239 +msgid "Spot radius:" +msgstr "Nokta yarıçapı:" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1304 +#, c-format +msgid "Rendering IFS (%d/%d)" +msgstr "IFS taranıyor (%d/%d)" + +#: ../plug-ins/ifs-compose/ifs-compose.c:1470 +#, c-format +msgid "Transformation %s" +msgstr "Dönüştürme %s" + +#: ../plug-ins/ifs-compose/ifs-compose.c:2379 +msgid "Save failed" +msgstr "Kaydetme işlemi başarısız" + +#: ../plug-ins/ifs-compose/ifs-compose.c:2460 +#: ../plug-ins/ifs-compose/ifs-compose.c:2473 +msgid "Open failed" +msgstr "Açma işlemi başarısız" + +#: ../plug-ins/ifs-compose/ifs-compose.c:2468 +#, c-format +msgid "File '%s' doesn't seem to be an IFS Fractal file." +msgstr "'%s' dosyası bir IFS Kesir dosyası gibi görünmüyor." + +#: ../plug-ins/ifs-compose/ifs-compose.c:2508 +msgid "Save as IFS Fractal file" +msgstr "IFS Kesir dosyası olarak kaydet" + +#: ../plug-ins/ifs-compose/ifs-compose.c:2545 +msgid "Open IFS Fractal file" +msgstr "IFS Kesir dosyasını aç" + +#: ../plug-ins/imagemap/imap_about.c:43 +msgid "Image Map Plug-In" +msgstr "Resim Eşleme Eklentisi" + +#: ../plug-ins/imagemap/imap_about.c:47 +msgid "Copyright © 1999-2005 by Maurits Rijk" +msgstr "Telif Hakkı © 1999-2005 Maurits Rijk" + +#: ../plug-ins/imagemap/imap_about.c:49 +msgid "Released under the GNU General Public License" +msgstr "GNU Genel Kamu Lisansı ile yayımlanmıştır" + +#: ../plug-ins/imagemap/imap_circle.c:64 +msgid "C_ircle" +msgstr "D_aire" + +#: ../plug-ins/imagemap/imap_circle.c:264 +msgid "Center _x:" +msgstr "Merkez _x:" + +#: ../plug-ins/imagemap/imap_circle.c:269 +#: ../plug-ins/imagemap/imap_circle.c:276 +#: ../plug-ins/imagemap/imap_circle.c:282 ../plug-ins/imagemap/imap_grid.c:250 +#: ../plug-ins/imagemap/imap_grid.c:256 +#: ../plug-ins/imagemap/imap_polygon.c:505 +#: ../plug-ins/imagemap/imap_polygon.c:513 +#: ../plug-ins/imagemap/imap_rectangle.c:394 +#: ../plug-ins/imagemap/imap_rectangle.c:401 +#: ../plug-ins/imagemap/imap_rectangle.c:408 +#: ../plug-ins/imagemap/imap_rectangle.c:415 +msgid "pixels" +msgstr "piksel" + +#: ../plug-ins/imagemap/imap_circle.c:271 +msgid "Center _y:" +msgstr "Merkez _y:" + +#: ../plug-ins/imagemap/imap_cmd_clear.c:51 +msgid "Clear" +msgstr "Temizle" + +#: ../plug-ins/imagemap/imap_cmd_create.c:58 +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:151 +msgid "Create" +msgstr "Oluştur" + +#: ../plug-ins/imagemap/imap_cmd_cut.c:55 +#: ../plug-ins/imagemap/imap_cmd_cut_object.c:51 +#: ../plug-ins/imagemap/imap_menu.c:159 +msgid "Cut" +msgstr "Kes" + +#: ../plug-ins/imagemap/imap_cmd_delete.c:57 +#: ../plug-ins/imagemap/imap_menu.c:162 +msgid "Delete" +msgstr "Sil" + +#: ../plug-ins/imagemap/imap_cmd_delete_point.c:61 +#: ../plug-ins/imagemap/imap_menu.c:179 +msgid "Delete Point" +msgstr "Nokta sil" + +#: ../plug-ins/imagemap/imap_cmd_edit_object.c:54 +msgid "Edit Object" +msgstr "Nesneyi Düzenle" + +#. Create the areas +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:117 +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:147 +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:251 +msgid "Use Gimp Guides" +msgstr "Gimp Kılavuzlarını Kullan" + +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:160 +msgid "Al_ternate" +msgstr "Al_ternatif" + +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:165 +msgid "A_ll" +msgstr "T_ümü" + +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:169 +msgid "Add Additional Guides" +msgstr "Ek Klavuzlar Ekle" + +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:177 +msgid "L_eft border" +msgstr "S_ol sınır" + +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:181 +msgid "_Right border" +msgstr "S_ağ sınır" + +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:185 +msgid "_Upper border" +msgstr "_Üst sınır" + +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:189 +msgid "Lo_wer border" +msgstr "_Alt sınır" + +#: ../plug-ins/imagemap/imap_cmd_gimp_guides.c:197 +msgid "_Base URL:" +msgstr "_Ana Adres:" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:74 +#: ../plug-ins/imagemap/imap_cmd_guides.c:140 +msgid "Create Guides" +msgstr "Kılavuz Oluştur" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:113 +#, c-format +msgid "Resulting Guide Bounds: %d,%d to %d,%d (%d areas)" +msgstr "Neticelendirme Klavuzu Sınırlamaları: %d,%d to %d,%d (%d alan)" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:144 +msgid "" +"Guides are pre-defined rectangles covering the image. You define them by " +"their width, height, and spacing from each other. This allows you to rapidly " +"create the most common image map type - image collection of \"thumbnails\", " +"suitable for navigation bars." +msgstr "" +"Rehberler resmi kaplayan ön tanımlı dikdörtgenlerdir. Onları genişliğine, " +"yüksekliğine ve birbirileri arasındaki mesafeye göre tanımlayabilirsiniz. Bu " +"sizin hızla en yakın resim eşleme biçimini, \"önizlemelerin\" resim " +"derlemesini oluşturmanıza olanak tanır, gezinti çubukları için uygundur." + +#: ../plug-ins/imagemap/imap_cmd_guides.c:170 +msgid "_Left start at:" +msgstr "_Sol başlangıç:" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:180 +msgid "_Top start at:" +msgstr "_Üst başlangıç:" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:185 +msgid "_Horz. spacing:" +msgstr "_Yatay aralık:" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:191 +msgid "_No. across:" +msgstr "_Geçiş sayısı:" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:197 +msgid "_Vert. spacing:" +msgstr "_Dikey aralık:" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:203 +msgid "No. _down:" +msgstr "Düşey sayısı:" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:212 +msgid "Base _URL:" +msgstr "Ana A_dres:" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:237 +msgid "Resulting Guide Bounds: 0,0 to 0,0 (0 areas)" +msgstr "Neticelendirme Klavuzu Sınırlamaları: 0,0 to 0,0 (0 alan)" + +#: ../plug-ins/imagemap/imap_cmd_guides.c:272 +msgid "Guides" +msgstr "Kılavuzlar" + +#: ../plug-ins/imagemap/imap_cmd_insert_point.c:62 +#: ../plug-ins/imagemap/imap_menu.c:178 +msgid "Insert Point" +msgstr "Nokta Ekle" + +#: ../plug-ins/imagemap/imap_cmd_move_down.c:53 +#: ../plug-ins/imagemap/imap_cmd_object_down.c:55 +#: ../plug-ins/imagemap/imap_menu.c:176 +msgid "Move Down" +msgstr "Aşağı Taşı" + +#: ../plug-ins/imagemap/imap_cmd_move_sash.c:68 +msgid "Move Sash" +msgstr "Kuşağı Taşı" + +#: ../plug-ins/imagemap/imap_cmd_move_selected.c:56 +msgid "Move Selected Objects" +msgstr "Seçilen NEsneyi Taşı" + +#: ../plug-ins/imagemap/imap_cmd_move_to_front.c:51 +msgid "Move To Front" +msgstr "Öne Taşı" + +#: ../plug-ins/imagemap/imap_cmd_move_up.c:53 +#: ../plug-ins/imagemap/imap_cmd_object_up.c:55 +#: ../plug-ins/imagemap/imap_menu.c:175 +msgid "Move Up" +msgstr "Yukarı Taşı" + +#: ../plug-ins/imagemap/imap_cmd_paste.c:51 +#: ../plug-ins/imagemap/imap_menu.c:161 +msgid "Paste" +msgstr "Yapıştır" + +#: ../plug-ins/imagemap/imap_cmd_select.c:53 +msgid "Select" +msgstr "Seç" + +#: ../plug-ins/imagemap/imap_cmd_select_next.c:51 +msgid "Select Next" +msgstr "Sonrakini Seç" + +#: ../plug-ins/imagemap/imap_cmd_select_prev.c:51 +msgid "Select Previous" +msgstr "Öncekini Seç" + +#: ../plug-ins/imagemap/imap_cmd_select_region.c:64 +msgid "Select Region" +msgstr "Bölge Seç" + +#: ../plug-ins/imagemap/imap_cmd_send_to_back.c:51 +msgid "Send To Back" +msgstr "Geri Gönder" + +#: ../plug-ins/imagemap/imap_cmd_unselect.c:53 +msgid "Unselect" +msgstr "Seçme" + +#: ../plug-ins/imagemap/imap_cmd_unselect_all.c:56 +msgid "Unselect All" +msgstr "Seçimi Temizle" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:196 +msgid "Link Type" +msgstr "Bağlantı Türü" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:205 +msgid "_Web Site" +msgstr "_Ağ Sayfası" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:211 +msgid "_Ftp Site" +msgstr "_Ftp Sitesi" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:217 +msgid "_Gopher" +msgstr "_Gopher" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:223 +msgid "Ot_her" +msgstr "D_iğer" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:229 +msgid "F_ile" +msgstr "_Dosya" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:235 +msgid "WAI_S" +msgstr "WAI_S" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:241 +msgid "Tel_net" +msgstr "Tel_net" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:247 +msgid "e-_mail" +msgstr "e-_posta" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:253 +msgid "_URL to activate when this area is clicked: (required)" +msgstr "Bu alana tıklandığında aktifleştirilecek _URL: (gerekli)" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:255 +msgid "Select HTML file" +msgstr "HTML dosyası seç" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:264 +msgid "Relati_ve link" +msgstr "Nis_pi bağlantı" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:270 +msgid "_Target frame name/ID: (optional - used for FRAMES only)" +msgstr "" +"_Hedef çerçeve adı/ID: (isteğe bağlı - sadece ÇERÇEVELER için kullanılır)" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:273 +msgid "ALT te_xt: (optional)" +msgstr "ALT me_tin: (isteğe bağlı)" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:276 +msgid "_Link" +msgstr "_Bağlantı" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:310 +msgid "Dimensions" +msgstr "Boyutlar" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:314 +msgid "Pre_view" +msgstr "Ön_izleme" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:352 +msgid "_JavaScript" +msgstr "_JavaScript" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:451 +msgid "Area Settings" +msgstr "Alan Ayarları" + +#: ../plug-ins/imagemap/imap_edit_area_info.c:493 +#, c-format +msgid "Area #%d Settings" +msgstr "Alan #%d Ayarları" + +#: ../plug-ins/imagemap/imap_file.c:48 ../plug-ins/imagemap/imap_menu.c:71 +msgid "Error opening file" +msgstr "Dosya açarken hata" + +#: ../plug-ins/imagemap/imap_file.c:68 +msgid "Load Image Map" +msgstr "Görüntü Eşlemini Yükle" + +#: ../plug-ins/imagemap/imap_file.c:123 +msgid "Save Image Map" +msgstr "Görüntü Eşlemini Kaydet" + +#: ../plug-ins/imagemap/imap_grid.c:197 +msgid "Grid Settings" +msgstr "Izgara Ayarları" + +#: ../plug-ins/imagemap/imap_grid.c:201 +msgid "_Snap-to grid enabled" +msgstr "Izgaraya hi_zalama etkinleştirildi" + +#: ../plug-ins/imagemap/imap_grid.c:207 +msgid "Grid Visibility and Type" +msgstr "Izgara Görünürlüğü ve Biçimi" + +#: ../plug-ins/imagemap/imap_grid.c:214 +msgid "_Hidden" +msgstr "_Gizli" + +#: ../plug-ins/imagemap/imap_grid.c:222 +msgid "_Lines" +msgstr "_Satırlar" + +#: ../plug-ins/imagemap/imap_grid.c:231 +msgid "C_rosses" +msgstr "Çap_razlar" + +#: ../plug-ins/imagemap/imap_grid.c:239 +msgid "Grid Granularity" +msgstr "Izgara ortalama öğe boyu" + +#: ../plug-ins/imagemap/imap_grid.c:246 +msgid "_Width" +msgstr "_Genişlik" + +#: ../plug-ins/imagemap/imap_grid.c:252 +msgid "_Height" +msgstr "_Yükseklik" + +#: ../plug-ins/imagemap/imap_grid.c:266 +msgid "Grid Offset" +msgstr "Izgara Konumu" + +#: ../plug-ins/imagemap/imap_grid.c:273 +msgid "pixels from l_eft" +msgstr "so_ldan benekler" + +#: ../plug-ins/imagemap/imap_grid.c:278 +msgid "pixels from _top" +msgstr "üs_tten benekler" + +#: ../plug-ins/imagemap/imap_grid.c:289 +msgid "_Preview" +msgstr "Ö_nizleme" + +#: ../plug-ins/imagemap/imap_main.c:122 +msgid "Create a clickable imagemap" +msgstr "Tıklanabilir resim eşlemi oluştur" + +#: ../plug-ins/imagemap/imap_main.c:127 +msgid "_Image Map..." +msgstr "_Görüntü Eşlemi..." + +#: ../plug-ins/imagemap/imap_main.c:517 +#: ../plug-ins/imagemap/imap_settings.c:171 +msgid "" +msgstr "" + +#: ../plug-ins/imagemap/imap_main.c:660 +msgid "Some data has been changed!" +msgstr "Bazı veriler değişti!" + +#: ../plug-ins/imagemap/imap_main.c:663 +msgid "Do you really want to discard your changes?" +msgstr "Yaptığınız değişikliklerden vazgeçmek istiyor musunuz?" + +#: ../plug-ins/imagemap/imap_main.c:873 +#, c-format +msgid "File \"%s\" saved." +msgstr "\"%s\" dosyası kaydedildi." + +#: ../plug-ins/imagemap/imap_main.c:877 +msgid "Couldn't save file:" +msgstr "Kaydedilemedi:" + +#: ../plug-ins/imagemap/imap_main.c:890 +msgid "Image size has changed." +msgstr "Şeklin boyutu değiştirildi." + +#: ../plug-ins/imagemap/imap_main.c:891 +msgid "Resize area's?" +msgstr "Alan yeniden boyutlandırılsın mı?" + +#: ../plug-ins/imagemap/imap_main.c:925 +msgid "Couldn't read file:" +msgstr "Dosya okunamadı:" + +#: ../plug-ins/imagemap/imap_main.c:972 +#, c-format +msgid "URL: %s" +msgstr "Adres: %s" + +#: ../plug-ins/imagemap/imap_menu.c:110 +#, c-format +msgid "_Undo %s" +msgstr "_Geri al %s" + +#: ../plug-ins/imagemap/imap_menu.c:123 +#, c-format +msgid "_Redo %s" +msgstr "_Yinele %s" + +#: ../plug-ins/imagemap/imap_menu.c:146 +msgid "_File" +msgstr "_Dosya" + +#: ../plug-ins/imagemap/imap_menu.c:147 +msgid "_Open..." +msgstr "_Aç..." + +#: ../plug-ins/imagemap/imap_menu.c:147 +msgid "Open" +msgstr "Aç" + +#: ../plug-ins/imagemap/imap_menu.c:149 +msgid "_Save..." +msgstr "_Kaydet..." + +#: ../plug-ins/imagemap/imap_menu.c:149 +msgid "Save" +msgstr "Kaydet" + +#: ../plug-ins/imagemap/imap_menu.c:151 +msgid "Save _As..." +msgstr "_Farklı Kaydet..." + +#: ../plug-ins/imagemap/imap_menu.c:156 +msgid "_Edit" +msgstr "_Düzenle" + +#: ../plug-ins/imagemap/imap_menu.c:157 +msgid "Undo" +msgstr "Geri al" + +#: ../plug-ins/imagemap/imap_menu.c:158 +msgid "Redo" +msgstr "İleri al" + +#: ../plug-ins/imagemap/imap_menu.c:164 +msgid "D_eselect All" +msgstr "Tüm Seçimi _Kaldır" + +#: ../plug-ins/imagemap/imap_menu.c:166 +msgid "Edit Area _Info..." +msgstr "Alan _Bilgisini Düzenle..." + +#: ../plug-ins/imagemap/imap_menu.c:167 +msgid "Edit selected area info" +msgstr "Seçilmiş alan bilgisini düzenle" + +#: ../plug-ins/imagemap/imap_menu.c:168 +msgid "Preferences" +msgstr "Tercihler" + +#: ../plug-ins/imagemap/imap_menu.c:170 +msgid "Move to Front" +msgstr "Öne al" + +#: ../plug-ins/imagemap/imap_menu.c:172 +msgid "Send to Back" +msgstr "Arkaya Gönder" + +#: ../plug-ins/imagemap/imap_menu.c:174 +msgid "Delete Area" +msgstr "Alanı sil" + +#: ../plug-ins/imagemap/imap_menu.c:181 +msgid "_View" +msgstr "_Görünüm" + +#: ../plug-ins/imagemap/imap_menu.c:182 +msgid "Source..." +msgstr "Kaynak..." + +#: ../plug-ins/imagemap/imap_menu.c:183 +msgid "Zoom in" +msgstr "Yakınlaş" + +#: ../plug-ins/imagemap/imap_menu.c:184 +msgid "Zoom out" +msgstr "Uzaklaş" + +#: ../plug-ins/imagemap/imap_menu.c:185 +msgid "_Zoom To" +msgstr "_Yaklaş" + +#: ../plug-ins/imagemap/imap_menu.c:187 +msgid "_Mapping" +msgstr "_Eşleme" + +#: ../plug-ins/imagemap/imap_menu.c:188 +msgid "Edit Map Info..." +msgstr "Eşlem Bilgisini Düzenle..." + +#: ../plug-ins/imagemap/imap_menu.c:189 +msgid "Edit Map Info" +msgstr "Eşlem Bilgisini Düzenle" + +#: ../plug-ins/imagemap/imap_menu.c:191 +msgid "_Tools" +msgstr "_Araçlar" + +#: ../plug-ins/imagemap/imap_menu.c:192 +msgid "Grid Settings..." +msgstr "Izgara Ayarları..." + +#: ../plug-ins/imagemap/imap_menu.c:194 +msgid "Use GIMP Guides..." +msgstr "GIMP kılavuzunu kullan" + +#: ../plug-ins/imagemap/imap_menu.c:196 +msgid "Create Guides..." +msgstr "Kılavuz oluştur" + +#: ../plug-ins/imagemap/imap_menu.c:199 +msgid "_Help" +msgstr "_Yardım" + +#: ../plug-ins/imagemap/imap_menu.c:200 +msgid "_Contents" +msgstr "_İçindekiler" + +#: ../plug-ins/imagemap/imap_menu.c:203 +msgid "_Zoom" +msgstr "_Yakınlaştır" + +#: ../plug-ins/imagemap/imap_menu.c:208 +msgid "Area List" +msgstr "Alan Listesi" + +#: ../plug-ins/imagemap/imap_menu.c:218 +msgid "Arrow" +msgstr "Ok" + +#: ../plug-ins/imagemap/imap_menu.c:219 +msgid "Select existing area" +msgstr "Mevcut alanı seç" + +#: ../plug-ins/imagemap/imap_menu.c:221 +msgid "Define Rectangle area" +msgstr "Dikdörtgen alanı tanımla" + +#: ../plug-ins/imagemap/imap_menu.c:223 +msgid "Define Circle/Oval area" +msgstr "Daire/oval alanı tanımla" + +#: ../plug-ins/imagemap/imap_menu.c:225 +msgid "Define Polygon area" +msgstr "Çokgen alanı tanımla" + +#: ../plug-ins/imagemap/imap_polygon.c:72 +msgid "_Polygon" +msgstr "_Çokgen" + +#: ../plug-ins/imagemap/imap_polygon.c:474 +msgid "x (pixels)" +msgstr "x (benek)" + +#: ../plug-ins/imagemap/imap_polygon.c:483 +msgid "y (pixels)" +msgstr "y (benek)" + +#: ../plug-ins/imagemap/imap_polygon.c:521 +msgid "_Insert" +msgstr "_Ekle" + +#: ../plug-ins/imagemap/imap_polygon.c:527 +msgid "A_ppend" +msgstr "So_na ekle" + +#: ../plug-ins/imagemap/imap_polygon.c:533 +msgid "_Remove" +msgstr "_Kaldır" + +#: ../plug-ins/imagemap/imap_preferences.c:236 +msgid "Couldn't save resource file:" +msgstr "Kaynak dosya kaydedilemez:" + +#: ../plug-ins/imagemap/imap_preferences.c:350 +msgid "General" +msgstr "Genel" + +#: ../plug-ins/imagemap/imap_preferences.c:354 +msgid "Default Map Type" +msgstr "Varsayılan Eşlem Türü" + +#: ../plug-ins/imagemap/imap_preferences.c:373 +msgid "_Prompt for area info" +msgstr "_Alan bilgisi için bilgi istemi" + +#: ../plug-ins/imagemap/imap_preferences.c:375 +msgid "_Require default URL" +msgstr "Öntanımlı URL gerekli" + +#: ../plug-ins/imagemap/imap_preferences.c:377 +msgid "Show area _handles" +msgstr "Alan _işleçlerini göster" + +#: ../plug-ins/imagemap/imap_preferences.c:379 +msgid "_Keep NCSA circles true" +msgstr "NCSA çemberlerini tam olarak _sakla" + +#: ../plug-ins/imagemap/imap_preferences.c:381 +msgid "Show area URL _tip" +msgstr "URL ö_nerisi alanını göster" + +#: ../plug-ins/imagemap/imap_preferences.c:384 +msgid "_Use double-sized grab handles" +msgstr "İki katı boyutlu tutacakları _kullan" + +#: ../plug-ins/imagemap/imap_preferences.c:391 +msgid "Menu" +msgstr "Menü" + +#: ../plug-ins/imagemap/imap_preferences.c:395 +msgid "Number of _undo levels (1 - 99):" +msgstr "Seviyeleri _geri alma sayısı (1-99)" + +#: ../plug-ins/imagemap/imap_preferences.c:400 +msgid "Number of M_RU entries (1 - 16):" +msgstr "M_RU girişleri sayısı (1 - 16):" + +#: ../plug-ins/imagemap/imap_preferences.c:409 +msgid "Select Color" +msgstr "Renk Seç" + +#: ../plug-ins/imagemap/imap_preferences.c:424 +msgid "Normal:" +msgstr "Normal:" + +#: ../plug-ins/imagemap/imap_preferences.c:428 +msgid "Selected:" +msgstr "Seçili:" + +#: ../plug-ins/imagemap/imap_preferences.c:437 +msgid "Co_ntiguous Region" +msgstr "Bi_tişik Bölge" + +#: ../plug-ins/imagemap/imap_preferences.c:443 +msgid "_Automatically convert" +msgstr "_Otomatik dönüştür" + +#: ../plug-ins/imagemap/imap_preferences.c:454 +msgid "General Preferences" +msgstr "Genel Yeğlenenler" + +#: ../plug-ins/imagemap/imap_rectangle.c:69 +msgid "_Rectangle" +msgstr "D_örtgen" + +#: ../plug-ins/imagemap/imap_rectangle.c:389 +msgid "Upper left _x:" +msgstr "Üst sol _x:" + +#: ../plug-ins/imagemap/imap_rectangle.c:396 +msgid "Upper left _y:" +msgstr "Üst sol _y:" + +#: ../plug-ins/imagemap/imap_selection.c:377 +msgid "#" +msgstr "#" + +#: ../plug-ins/imagemap/imap_selection.c:388 +msgid "URL" +msgstr "Adres" + +#: ../plug-ins/imagemap/imap_selection.c:406 +msgid "ALT Text" +msgstr "ALT Metni" + +#: ../plug-ins/imagemap/imap_selection.c:416 +msgid "Target" +msgstr "Hedef" + +#: ../plug-ins/imagemap/imap_settings.c:90 +msgid "Settings for this Mapfile" +msgstr "Bu Eşlem Dosyasının ayarları" + +#: ../plug-ins/imagemap/imap_settings.c:94 +msgid "Filename:" +msgstr "Dosya adı:" + +#: ../plug-ins/imagemap/imap_settings.c:97 +msgid "Image name:" +msgstr "Görüntü adı:" + +#: ../plug-ins/imagemap/imap_settings.c:98 +msgid "Select Image File" +msgstr "Görüntü Dosyası Seç" + +#: ../plug-ins/imagemap/imap_settings.c:102 +msgid "_Title:" +msgstr "_Başlık:" + +#: ../plug-ins/imagemap/imap_settings.c:104 +msgid "Aut_hor:" +msgstr "Ya_zar:" + +#: ../plug-ins/imagemap/imap_settings.c:106 +msgid "Default _URL:" +msgstr "Varsayılan _Adres:" + +#: ../plug-ins/imagemap/imap_settings.c:108 +msgid "_Description:" +msgstr "_Açıklama:" + +#: ../plug-ins/imagemap/imap_settings.c:130 +msgid "Map File Format" +msgstr "Eşlem Dosyası Biçimi" + +#: ../plug-ins/imagemap/imap_source.c:63 +msgid "View Source" +msgstr "Kaynağını Göster" + +#: ../plug-ins/lighting/lighting-apply.c:105 +#: ../plug-ins/lighting/lighting-ui.c:1019 +msgid "Lighting Effects" +msgstr "Işıklandırma Etkileri" + +#: ../plug-ins/lighting/lighting-main.c:192 +msgid "Apply various lighting effects to an image" +msgstr "Bir görüntüye çeşitli ışıklandırma etkileri uygula" + +#: ../plug-ins/lighting/lighting-main.c:197 +msgid "_Lighting Effects..." +msgstr "_Işıklandırma Etkileri..." + +#. General options +#: ../plug-ins/lighting/lighting-ui.c:295 +#: ../plug-ins/map-object/map-object-ui.c:472 +msgid "General Options" +msgstr "Genel Seçenekler" + +#: ../plug-ins/lighting/lighting-ui.c:303 +msgid "T_ransparent background" +msgstr "Sa_ydam artalan" + +#: ../plug-ins/lighting/lighting-ui.c:313 +msgid "Make destination image transparent where bump height is zero" +msgstr "Tümsek yüksekliğinin sıfır olduğu hedef resmi saydam yap" + +#: ../plug-ins/lighting/lighting-ui.c:316 +msgid "Cre_ate new image" +msgstr "Yeni görüntü _oluştur" + +#: ../plug-ins/lighting/lighting-ui.c:326 +#: ../plug-ins/map-object/map-object-ui.c:541 +msgid "Create a new image when applying filter" +msgstr "Süzgeç uygulanırken yeni bir görüntü oluştur" + +#: ../plug-ins/lighting/lighting-ui.c:328 +msgid "High _quality preview" +msgstr "Yüksek _kaliteli önizleme" + +#: ../plug-ins/lighting/lighting-ui.c:338 +msgid "Enable/disable high quality preview" +msgstr "Yüksek kaliteli önizlemeyi aktifleştir/pasifleştir" + +#: ../plug-ins/lighting/lighting-ui.c:345 +msgid "Distance:" +msgstr "Uzaklık:" + +#: ../plug-ins/lighting/lighting-ui.c:378 +#: ../plug-ins/map-object/map-object-ui.c:619 +msgid "Light Settings" +msgstr "Işık Ayarları" + +#: ../plug-ins/lighting/lighting-ui.c:391 +msgid "Light 1" +msgstr "Işık 1" + +#: ../plug-ins/lighting/lighting-ui.c:392 +msgid "Light 2" +msgstr "Işık 2" + +#: ../plug-ins/lighting/lighting-ui.c:393 +msgid "Light 3" +msgstr "Işık 3" + +#: ../plug-ins/lighting/lighting-ui.c:394 +msgid "Light 4" +msgstr "Işık 4" + +#: ../plug-ins/lighting/lighting-ui.c:395 +msgid "Light 5" +msgstr "Işık 5" + +#: ../plug-ins/lighting/lighting-ui.c:396 +msgid "Light 6" +msgstr "Işık 6" + +#: ../plug-ins/lighting/lighting-ui.c:410 +msgid "Color:" +msgstr "Renk:" + +#: ../plug-ins/lighting/lighting-ui.c:417 +msgid "Directional" +msgstr "Doğrusal" + +#: ../plug-ins/lighting/lighting-ui.c:418 +msgid "Point" +msgstr "Nokta" + +#: ../plug-ins/lighting/lighting-ui.c:432 +#: ../plug-ins/map-object/map-object-ui.c:642 +msgid "Type of light source to apply" +msgstr "Uygulanacak ışık kaynağının türü" + +#: ../plug-ins/lighting/lighting-ui.c:434 +#: ../plug-ins/map-object/map-object-ui.c:644 +msgid "Select lightsource color" +msgstr "Işıkkaynağı rengini seçin" + +#: ../plug-ins/lighting/lighting-ui.c:448 +#: ../plug-ins/map-object/map-object-ui.c:657 +msgid "Set light source color" +msgstr "Işık kaynağı rengini seçin" + +#: ../plug-ins/lighting/lighting-ui.c:456 +msgid "_Intensity:" +msgstr "_Yoğunluk:" + +#: ../plug-ins/lighting/lighting-ui.c:464 +msgid "Light intensity" +msgstr "Işık yoğunluğu" + +#: ../plug-ins/lighting/lighting-ui.c:467 +#: ../plug-ins/map-object/map-object-ui.c:659 +#: ../plug-ins/map-object/map-object-ui.c:986 +#: ../plug-ins/print/print-page-layout.c:343 +msgid "Position" +msgstr "Konum" + +#: ../plug-ins/lighting/lighting-ui.c:485 +#: ../plug-ins/map-object/map-object-ui.c:683 +msgid "Light source X position in XYZ space" +msgstr "XYZ alanındaki ışık kaynağının X konumu" + +#: ../plug-ins/lighting/lighting-ui.c:500 +#: ../plug-ins/map-object/map-object-ui.c:697 +msgid "Light source Y position in XYZ space" +msgstr "XYZ alanındaki ışık kaynağının Y konumu" + +#: ../plug-ins/lighting/lighting-ui.c:507 +msgid "_Z:" +msgstr "_Z:" + +#: ../plug-ins/lighting/lighting-ui.c:515 +#: ../plug-ins/map-object/map-object-ui.c:711 +msgid "Light source Z position in XYZ space" +msgstr "XYZ alanındaki ışık kaynağının Z konumu" + +#: ../plug-ins/lighting/lighting-ui.c:535 +#: ../plug-ins/map-object/map-object-ui.c:737 +msgid "Light source X direction in XYZ space" +msgstr "XYZ alanındaki ışık kaynağının X yönü" + +#: ../plug-ins/lighting/lighting-ui.c:549 +#: ../plug-ins/map-object/map-object-ui.c:750 +msgid "Light source Y direction in XYZ space" +msgstr "XYZ alanındaki ışık kaynağının Y yönü" + +#: ../plug-ins/lighting/lighting-ui.c:555 +#: ../plug-ins/map-object/map-object-ui.c:703 +#: ../plug-ins/map-object/map-object-ui.c:755 +#: ../plug-ins/map-object/map-object-ui.c:1023 +#: ../plug-ins/map-object/map-object-ui.c:1068 +#: ../plug-ins/map-object/map-object-ui.c:1167 +msgid "Z:" +msgstr "Z:" + +#: ../plug-ins/lighting/lighting-ui.c:563 +#: ../plug-ins/map-object/map-object-ui.c:763 +msgid "Light source Z direction in XYZ space" +msgstr "XYZ alanındaki ışık kaynağının Z yönü" + +#: ../plug-ins/lighting/lighting-ui.c:566 +msgid "I_solate" +msgstr "Ya_lıtma" + +#: ../plug-ins/lighting/lighting-ui.c:575 +msgid "Lighting preset:" +msgstr "Işıklandırma önayarı:" + +#: ../plug-ins/lighting/lighting-ui.c:621 +msgid "Material Properties" +msgstr "Malzeme özellikleri" + +#: ../plug-ins/lighting/lighting-ui.c:639 +msgid "_Glowing:" +msgstr "_Parıltı:" + +#: ../plug-ins/lighting/lighting-ui.c:658 +#: ../plug-ins/map-object/map-object-ui.c:824 +msgid "Amount of original color to show where no direct light falls" +msgstr "Doğrudan ışığın düşmediği yeri gösteren özgün renk miktarı" + +#: ../plug-ins/lighting/lighting-ui.c:672 +msgid "_Bright:" +msgstr "_Parlak:" + +#: ../plug-ins/lighting/lighting-ui.c:691 +#: ../plug-ins/map-object/map-object-ui.c:853 +msgid "Intensity of original color when lit by a light source" +msgstr "Hafif bir kaynak tarafından aydınlatılan özgün rengin yoğunluğu" + +#: ../plug-ins/lighting/lighting-ui.c:705 +msgid "_Shiny:" +msgstr "_Parlak:" + +#: ../plug-ins/lighting/lighting-ui.c:724 +#: ../plug-ins/map-object/map-object-ui.c:925 +msgid "Controls how intense the highlights will be" +msgstr "Vurgulamanın ne kadar yoğun olacağını denetler" + +#: ../plug-ins/lighting/lighting-ui.c:737 +msgid "_Polished:" +msgstr "_Cilalı:" + +#: ../plug-ins/lighting/lighting-ui.c:756 +#: ../plug-ins/map-object/map-object-ui.c:954 +msgid "Higher values makes the highlights more focused" +msgstr "Yüksek değerler daha fazla odaklanmış vurgular yapar" + +#. Metallic +#: ../plug-ins/lighting/lighting-ui.c:766 +msgid "_Metallic" +msgstr "_Metalik" + +#: ../plug-ins/lighting/lighting-ui.c:803 +msgid "E_nable bump mapping" +msgstr "Derinlik etkisini e_tkinleştir" + +#: ../plug-ins/lighting/lighting-ui.c:817 +msgid "Enable/disable bump-mapping (image depth)" +msgstr "Derinlik etkisini (resim derinliği) etkinleştir/etkisizleştir" + +#: ../plug-ins/lighting/lighting-ui.c:839 +msgid "Bumpm_ap image:" +msgstr "Derinlik e-tkisi resmi:" + +#: ../plug-ins/lighting/lighting-ui.c:843 +msgid "Logarithmic" +msgstr "Logaritmik" + +#: ../plug-ins/lighting/lighting-ui.c:855 +msgid "Cu_rve:" +msgstr "Eğri:" + +#: ../plug-ins/lighting/lighting-ui.c:860 +msgid "Ma_ximum height:" +msgstr "Mak_simum yükseklik" + +#: ../plug-ins/lighting/lighting-ui.c:870 +msgid "Maximum height for bumps" +msgstr "Tümsekler için en fazla yükseklik" + +#: ../plug-ins/lighting/lighting-ui.c:894 +msgid "E_nable environment mapping" +msgstr "Çevre eşlemesini e_tkinleştir" + +#: ../plug-ins/lighting/lighting-ui.c:908 +msgid "Enable/disable environment-mapping (reflection)" +msgstr "Çevre eşlemesini etkinleştir/iptal et (yansıma)" + +#: ../plug-ins/lighting/lighting-ui.c:925 +msgid "En_vironment image:" +msgstr "Or_tam görüntüsü:" + +#: ../plug-ins/lighting/lighting-ui.c:928 +msgid "Environment image to use" +msgstr "Kullanılacak ortam görüntüsü" + +#: ../plug-ins/lighting/lighting-ui.c:950 +msgid "Op_tions" +msgstr "Seçenekle_r" + +#: ../plug-ins/lighting/lighting-ui.c:954 +#: ../plug-ins/map-object/map-object-ui.c:1291 +msgid "_Light" +msgstr "_Işık" + +#: ../plug-ins/lighting/lighting-ui.c:958 +#: ../plug-ins/map-object/map-object-ui.c:1295 +msgid "_Material" +msgstr "_Madde" + +#: ../plug-ins/lighting/lighting-ui.c:962 +msgid "_Bump Map" +msgstr "_Derinlik Etkisi" + +#: ../plug-ins/lighting/lighting-ui.c:966 +msgid "_Environment Map" +msgstr "_Ortam Eşlemi" + +#: ../plug-ins/lighting/lighting-ui.c:1082 +#: ../plug-ins/map-object/map-object-ui.c:1397 +msgid "Recompute preview image" +msgstr "Önizleme remini yeniden hesapla" + +#: ../plug-ins/lighting/lighting-ui.c:1084 +msgid "I_nteractive" +msgstr "_Etkileşimli" + +#: ../plug-ins/lighting/lighting-ui.c:1098 +msgid "Enable/disable real time preview of changes" +msgstr "Değişikliklerin gerçek zamanlı önizlemelerini etkinleştir/iptal et" + +#: ../plug-ins/lighting/lighting-ui.c:1137 +msgid "Save Lighting Preset" +msgstr "Öntanımlı Aydınlatmayı Kaydet" + +#: ../plug-ins/lighting/lighting-ui.c:1281 +msgid "Load Lighting Preset" +msgstr "Öntanımlı Aydınlatmayı Yükle" + +#: ../plug-ins/map-object/map-object-apply.c:276 +msgid "Map to plane" +msgstr "Düzlem oluşturuluyor" + +#: ../plug-ins/map-object/map-object-apply.c:279 +msgid "Map to sphere" +msgstr "Küre oluşturuluyor" + +#: ../plug-ins/map-object/map-object-apply.c:282 +msgid "Map to box" +msgstr "Kutu oluşturuluyor" + +#: ../plug-ins/map-object/map-object-apply.c:285 +msgid "Map to cylinder" +msgstr "Silindir oluşturuluyor" + +#: ../plug-ins/map-object/map-object-main.c:193 +msgid "Map the image to an object (plane, sphere, box or cylinder)" +msgstr "Resmi bir nesneye eşle (düzlem, küre, kutu veya silindir)" + +#: ../plug-ins/map-object/map-object-main.c:198 +msgid "Map _Object..." +msgstr "_Nesne Eşleme..." + +#: ../plug-ins/map-object/map-object-ui.c:248 +#: ../plug-ins/map-object/map-object-ui.c:1305 +msgid "_Box" +msgstr "_Kutu" + +#: ../plug-ins/map-object/map-object-ui.c:266 +#: ../plug-ins/map-object/map-object-ui.c:1311 +msgid "C_ylinder" +msgstr "_Silindir" + +#: ../plug-ins/map-object/map-object-ui.c:484 +msgid "Map to:" +msgstr "Nesne" + +#: ../plug-ins/map-object/map-object-ui.c:488 +msgid "Plane" +msgstr "Düzlem" + +#: ../plug-ins/map-object/map-object-ui.c:489 +msgid "Sphere" +msgstr "Küre" + +#: ../plug-ins/map-object/map-object-ui.c:490 +msgid "Box" +msgstr "Kutu" + +#: ../plug-ins/map-object/map-object-ui.c:501 +msgid "Type of object to map to" +msgstr "Eşlenecek nesne biçimi" + +#: ../plug-ins/map-object/map-object-ui.c:503 +msgid "Transparent background" +msgstr "Şeffaf artalan" + +#: ../plug-ins/map-object/map-object-ui.c:514 +msgid "Make image transparent outside object" +msgstr "Görüntüyü nesnenin dışında saydam yap" + +#: ../plug-ins/map-object/map-object-ui.c:516 +msgid "Tile source image" +msgstr "Kaynak görüntüyü döşe" + +#: ../plug-ins/map-object/map-object-ui.c:527 +msgid "Tile source image: useful for infinite planes" +msgstr "Kaynak görüntüyü döşe: sonsuz düzlemler için kullanışlı" + +#: ../plug-ins/map-object/map-object-ui.c:530 +msgid "Create new image" +msgstr "Yeni görüntü oluştur" + +#: ../plug-ins/map-object/map-object-ui.c:549 +msgid "Enable _antialiasing" +msgstr "_Yumuşatmayı etkinleştir" + +#: ../plug-ins/map-object/map-object-ui.c:560 +msgid "Enable/disable jagged edges removal (antialiasing)" +msgstr "Aktif/pasif pürüzlü kenarları kaldırma (antialiasing)" + +#: ../plug-ins/map-object/map-object-ui.c:576 +msgid "Antialiasing quality. Higher is better, but slower" +msgstr "Yumuşatma kalitesi. Yüksek daha iyidir ama daha yavaştır" + +#: ../plug-ins/map-object/map-object-ui.c:593 +msgid "Stop when pixel differences are smaller than this value" +msgstr "Benek farklılıkları bu değerden daha küçük olduğu zaman dur" + +#: ../plug-ins/map-object/map-object-ui.c:628 +msgid "Point light" +msgstr "Noktadan ışık" + +#: ../plug-ins/map-object/map-object-ui.c:629 +msgid "Directional light" +msgstr "Yönlü ışık" + +#: ../plug-ins/map-object/map-object-ui.c:630 +msgid "No light" +msgstr "Işık yok" + +#: ../plug-ins/map-object/map-object-ui.c:635 +msgid "Lightsource type:" +msgstr "Işık kaynağı türü:" + +#: ../plug-ins/map-object/map-object-ui.c:649 +msgid "Lightsource color:" +msgstr "Işık kaynağı rengi:" + +#: ../plug-ins/map-object/map-object-ui.c:714 +msgid "Direction Vector" +msgstr "Doğrultu Vektörü" + +#: ../plug-ins/map-object/map-object-ui.c:790 +msgid "Intensity Levels" +msgstr "Yoğunluk Seviyeleri" + +#: ../plug-ins/map-object/map-object-ui.c:809 +msgid "Ambient:" +msgstr "Çevre:" + +#: ../plug-ins/map-object/map-object-ui.c:838 +#: ../plug-ins/map-object/map-object-ui.c:881 +msgid "Diffuse:" +msgstr "Dağıt:" + +#: ../plug-ins/map-object/map-object-ui.c:862 +msgid "Reflectivity" +msgstr "Yansıma" + +#: ../plug-ins/map-object/map-object-ui.c:896 +msgid "Higher values makes the object reflect more light (appear lighter)" +msgstr "" +"Yüksek değerler nesnenin daha fazla ışık yansıtmasını sağlar (daha aydınlık " +"görünür)" + +#: ../plug-ins/map-object/map-object-ui.c:910 +msgid "Specular:" +msgstr "Yansıtıcı:" + +#: ../plug-ins/map-object/map-object-ui.c:939 +msgid "Highlight:" +msgstr "Vurgulama:" + +#: ../plug-ins/map-object/map-object-ui.c:1000 +msgid "Object X position in XYZ space" +msgstr "XYZ alanında nesnenin X konumu" + +#: ../plug-ins/map-object/map-object-ui.c:1013 +msgid "Object Y position in XYZ space" +msgstr "XYZ alanında nesnenin Y konumu" + +#: ../plug-ins/map-object/map-object-ui.c:1026 +msgid "Object Z position in XYZ space" +msgstr "XYZ alanında nesnenin Z konumu" + +#: ../plug-ins/map-object/map-object-ui.c:1049 +msgid "Rotation angle about X axis" +msgstr "X eksenindeki döndürme açısı" + +#: ../plug-ins/map-object/map-object-ui.c:1060 +msgid "Rotation angle about Y axis" +msgstr "Y eksenindeki döndürme açısı" + +#: ../plug-ins/map-object/map-object-ui.c:1071 +msgid "Rotation angle about Z axis" +msgstr "Z eksenindeki döndürme açısı" + +#: ../plug-ins/map-object/map-object-ui.c:1097 +msgid "Front:" +msgstr "Yazıyüzü:" + +#: ../plug-ins/map-object/map-object-ui.c:1097 +msgid "Back:" +msgstr "Geri:" + +#: ../plug-ins/map-object/map-object-ui.c:1105 +msgid "Map Images to Box Faces" +msgstr "Resimleri Kutunun Yüzeylerine Eşle" + +#: ../plug-ins/map-object/map-object-ui.c:1146 +msgid "X scale (size)" +msgstr "X ölçeği (boyut)" + +#: ../plug-ins/map-object/map-object-ui.c:1158 +msgid "Y scale (size)" +msgstr "Y ölçeği (boyut)" + +#: ../plug-ins/map-object/map-object-ui.c:1170 +msgid "Z scale (size)" +msgstr "Z ölçeği (boyut)" + +#: ../plug-ins/map-object/map-object-ui.c:1193 +#: ../plug-ins/print/print-page-layout.c:402 +msgid "_Top:" +msgstr "_Tepe:" + +#: ../plug-ins/map-object/map-object-ui.c:1193 +#: ../plug-ins/print/print-page-layout.c:421 +msgid "_Bottom:" +msgstr "_Alt:" + +#: ../plug-ins/map-object/map-object-ui.c:1198 +msgid "Images for the Cap Faces" +msgstr "Kapak Yüzeyleri için resimler" + +#: ../plug-ins/map-object/map-object-ui.c:1227 +#: ../plug-ins/print/print-page-layout.c:219 +msgid "Size" +msgstr "Boyut" + +#: ../plug-ins/map-object/map-object-ui.c:1238 +msgid "R_adius:" +msgstr "Y_arıçap:" + +#: ../plug-ins/map-object/map-object-ui.c:1242 +msgid "Cylinder radius" +msgstr "Silindir yarıçapı" + +#: ../plug-ins/map-object/map-object-ui.c:1256 +msgid "Cylinder length" +msgstr "Silindir uzunluğu" + +#: ../plug-ins/map-object/map-object-ui.c:1287 +msgid "O_ptions" +msgstr "_Seçenekler" + +#: ../plug-ins/map-object/map-object-ui.c:1299 +msgid "O_rientation" +msgstr "_Konum" + +#: ../plug-ins/map-object/map-object-ui.c:1335 +msgid "Map to Object" +msgstr "Nesne Eşleme" + +#: ../plug-ins/map-object/map-object-ui.c:1415 +msgid "Show preview _wireframe" +msgstr "Kılavuz _çizgileri göster" + +#: ../plug-ins/maze/maze-algorithms.c:279 +msgid "Constructing maze using Prim's Algorithm" +msgstr "Prim Algoritması kullanarak labirent oluşturmak" + +#: ../plug-ins/maze/maze-algorithms.c:488 +msgid "Constructing tileable maze using Prim's Algorithm" +msgstr "Prim's Algoritması kullanılarak döşenebilir labirent inşa ediliyor" + +#: ../plug-ins/maze/maze-dialog.c:172 +msgid "Maze" +msgstr "Labirent" + +#. The maze size frame +#: ../plug-ins/maze/maze-dialog.c:194 +msgid "Maze Size" +msgstr "Labirent Boyutu" + +#. entscale == Entry and Scale pair function found in pixelize.c +#: ../plug-ins/maze/maze-dialog.c:208 +msgid "Width (pixels):" +msgstr "Genişlik (benek):" + +#: ../plug-ins/maze/maze-dialog.c:220 ../plug-ins/maze/maze-dialog.c:236 +msgid "Pieces:" +msgstr "Parçalar:" + +#: ../plug-ins/maze/maze-dialog.c:225 +msgid "Height (pixels):" +msgstr "Yükseklik (benek):" + +#. The maze algorithm frame +#: ../plug-ins/maze/maze-dialog.c:244 +msgid "Algorithm" +msgstr "Algoritma" + +#: ../plug-ins/maze/maze-dialog.c:270 +msgid "Depth first" +msgstr "Derinlemesine" + +#: ../plug-ins/maze/maze-dialog.c:271 +msgid "Prim's algorithm" +msgstr "Prim Algoritması" + +#: ../plug-ins/maze/maze-dialog.c:390 +msgid "" +"Selection size is not even.\n" +"Tileable maze won't work perfectly." +msgstr "" +"Seçim büyüklüğü dengeli değil.\n" +"Döşenebilir labirent düzgün çalışmayacak." + +#: ../plug-ins/maze/maze.c:123 +msgid "Draw a labyrinth" +msgstr "Bir labirent çiz" + +#: ../plug-ins/maze/maze.c:130 +msgid "_Maze..." +msgstr "_Labirent..." + +#: ../plug-ins/maze/maze.c:426 +msgid "Drawing maze" +msgstr "Labirent çizimi" + +#: ../plug-ins/metadata/xmp-parse.c:240 +#, c-format +msgid "Error: No XMP packet found" +msgstr "Hata: XMP paketi bulunamadı" + +#: ../plug-ins/metadata/xmp-parse.c:255 +#, c-format +msgid "Error on line %d char %d: %s" +msgstr "%d. satırda %d karakteri hatalı: %s" + +#: ../plug-ins/metadata/xmp-parse.c:277 +#, c-format +msgid "Expected text or optional element <%s>, found <%s> instead" +msgstr "Beklenen metin ya da seçimli öğe <%s>, <%s> yerine bulundu" + +#: ../plug-ins/metadata/xmp-parse.c:281 +#, c-format +msgid "Expected element <%s>, found <%s> instead" +msgstr "Beklenen eleman <%s>, <%s> yerine bulundu" + +#: ../plug-ins/metadata/xmp-parse.c:296 +#, c-format +msgid "Unknown element <%s>" +msgstr "Bilinmeyen öğe <%s>" + +#: ../plug-ins/metadata/xmp-parse.c:325 +#, c-format +msgid "Unknown attribute \"%s\"=\"%s\" in element <%s>" +msgstr "<%s> öğesinde \"%s\"=\"%s\" bilinmeyen özelliği" + +#: ../plug-ins/metadata/xmp-parse.c:655 +#, c-format +msgid "Required attribute rdf:about missing in <%s>" +msgstr "<%s> için rdf özelliği gerekiyor" + +#: ../plug-ins/metadata/xmp-parse.c:881 +#, c-format +msgid "Nested elements (<%s>) are not allowed in this context" +msgstr "İç içe öğelere (<%s>) bu durumda izin verilmiyor" + +#: ../plug-ins/metadata/xmp-parse.c:1010 +#, c-format +msgid "End of element <%s> not expected in this context" +msgstr "<%s> öğesinin sonu bu içerikte beklenmiyor" + +#: ../plug-ins/metadata/xmp-parse.c:1112 +#, c-format +msgid "The current element (<%s>) cannot contain text" +msgstr "Geçerli öğe (<%s>) metin içeremez" + +#: ../plug-ins/metadata/xmp-parse.c:1137 +msgid "XMP packets must start with " +msgstr "XMP paketleri ile başlamalıdır" + +#: ../plug-ins/metadata/xmp-parse.c:1151 +msgid "XMP packets must end with " +msgstr "XMP paketleri ile bitmelidir" + +#: ../plug-ins/metadata/xmp-parse.c:1164 +msgid "XMP cannot contain XML comments or processing instructions" +msgstr "XMP, XML yorumları veya işleme yönergeleri içeremez" + +#: ../plug-ins/pagecurl/pagecurl.c:216 +msgid "Curl up one of the image corners" +msgstr "Resmin köşelerinden birini kıvır" + +#: ../plug-ins/pagecurl/pagecurl.c:221 +msgid "_Pagecurl..." +msgstr "_Sayfa Kıvırma" + +#: ../plug-ins/pagecurl/pagecurl.c:440 +msgid "Pagecurl Effect" +msgstr "Sayfa Kıvırma Etkisi" + +#: ../plug-ins/pagecurl/pagecurl.c:462 +msgid "Curl Location" +msgstr "Kıvırma Yeri" + +#: ../plug-ins/pagecurl/pagecurl.c:481 +msgid "Lower right" +msgstr "Aşağı sağ" + +#: ../plug-ins/pagecurl/pagecurl.c:482 +msgid "Lower left" +msgstr "Aşağı sol" + +#: ../plug-ins/pagecurl/pagecurl.c:483 +msgid "Upper left" +msgstr "Yukarı sol" + +#: ../plug-ins/pagecurl/pagecurl.c:484 +msgid "Upper right" +msgstr "Yukarı sağ" + +#: ../plug-ins/pagecurl/pagecurl.c:524 +msgid "Curl Orientation" +msgstr "Kıvırma Yönlendirmesi" + +#: ../plug-ins/pagecurl/pagecurl.c:568 +msgid "_Shade under curl" +msgstr "_Kıvrımın altındaki gölge" + +#: ../plug-ins/pagecurl/pagecurl.c:581 +msgid "Current gradient (reversed)" +msgstr "Mevcut Artımlı Geçiş (ters çevrilmiş)" + +#: ../plug-ins/pagecurl/pagecurl.c:586 +msgid "Current gradient" +msgstr "Geçerli eğim" + +#: ../plug-ins/pagecurl/pagecurl.c:591 +msgid "Foreground / background colors" +msgstr "Önalan / artalan renkleri" + +#: ../plug-ins/pagecurl/pagecurl.c:611 +msgid "_Opacity:" +msgstr "_Opaklık:" + +#: ../plug-ins/pagecurl/pagecurl.c:734 +msgid "Curl Layer" +msgstr "Kıvrım Katmanı" + +#: ../plug-ins/pagecurl/pagecurl.c:1022 +msgid "Page Curl" +msgstr "Sayfa Kıvırma" + +#: ../plug-ins/print/print-page-layout.c:148 +msgid "Ignore Page _Margins" +msgstr "Sayfa _Kenarlarını Yoksay" + +#: ../plug-ins/print/print-page-layout.c:294 +msgid "_X resolution:" +msgstr "_X çözünürlüğü:" + +#: ../plug-ins/print/print-page-layout.c:298 +msgid "_Y resolution:" +msgstr "_Y çözünürlüğü:" + +#: ../plug-ins/print/print-page-layout.c:369 +msgid "_Left:" +msgstr "_Sol:" + +#: ../plug-ins/print/print-page-layout.c:388 +msgid "_Right:" +msgstr "_Sağ:" + +#: ../plug-ins/print/print-page-layout.c:442 +msgid "C_enter:" +msgstr "_Merkez:" + +#: ../plug-ins/print/print-page-layout.c:450 +msgid "Horizontally" +msgstr "Yatay olarak" + +#: ../plug-ins/print/print-page-layout.c:451 +msgid "Vertically" +msgstr "Dikeysel" + +#: ../plug-ins/print/print-page-layout.c:452 +msgid "Both" +msgstr "Her ikisi" + +#: ../plug-ins/print/print.c:102 +msgid "Print the image" +msgstr "Görüntüyü yazdır" + +#: ../plug-ins/print/print.c:107 +msgid "_Print..." +msgstr "_Yazdır..." + +#: ../plug-ins/print/print.c:118 +msgid "Adjust page size and orientation for printing" +msgstr "Yazdırma işlemi için sayfa boyutu ve oryantasyonu ayarla" + +#: ../plug-ins/print/print.c:124 +msgid "Page Set_up" +msgstr "Sayfa _Ayarı" + +#: ../plug-ins/print/print.c:265 +msgid "Image Settings" +msgstr "Görüntü Ayarları" + +#: ../plug-ins/print/print.c:348 +msgid "An error occurred while trying to print:" +msgstr "Yazdırmaya çalışırken bir hata oluştu" + +#: ../plug-ins/print/print.c:375 +msgid "Printing" +msgstr "Yazdırma" + +#. printf("width = %d, height = %d\n",BITMAP_WIDTH(marked),BITMAP_HEIGHT(marked)); +#: ../plug-ins/selection-to-path/pxl-outline.c:82 +msgid "Selection to Path" +msgstr "Yoldan Seçime" + +#: ../plug-ins/selection-to-path/selection-to-path.c:185 +msgid "No selection to convert" +msgstr "Çevrilecek bir seçim yok" + +#: ../plug-ins/selection-to-path/selection-to-path.c:302 +msgid "Selection to Path Advanced Settings" +msgstr "Gelişmiş Yol Ayarları Seçimi" + +#: ../plug-ins/twain/twain.c:87 +msgid "Capture an image from a TWAIN datasource" +msgstr "Bir TWAIN veri kaynağından bir görüntü alınıyor" + +#: ../plug-ins/twain/twain.c:352 +msgid "_Scanner/Camera..." +msgstr "_Tarayıcı/Kamera..." + +#. Initialize our progress dialog +#: ../plug-ins/twain/twain.c:486 +msgid "Transferring data from scanner/camera" +msgstr "Tarayıcıdan/kameradan veri aktarılıyor" + +#: ../plug-ins/win-snap/winsnap.c:865 +msgid "Grab" +msgstr "Yakala" + +#: ../plug-ins/win-snap/winsnap.c:881 +msgid "Grab a single window" +msgstr "Tek bir pencere tut" + +#: ../plug-ins/win-snap/winsnap.c:895 +msgid "Grab the whole screen" +msgstr "Tüm ekranı tut" + +#: ../plug-ins/win-snap/winsnap.c:911 +msgid "after" +msgstr "sonra" + +#: ../plug-ins/win-snap/winsnap.c:923 +msgid "Seconds delay" +msgstr "Saniye gecikmesi" + +#: ../plug-ins/win-snap/winsnap.c:930 +msgid "Include decorations" +msgstr "Süslemeleri içer" + +#: ../plug-ins/win-snap/winsnap.c:989 +msgid "Capture a window or desktop image" +msgstr "Bir pencere veya masaüstü resmi yakala" + +#: ../plug-ins/win-snap/winsnap.c:994 +msgid "_Screen Shot..." +msgstr "_Ekran Görüntüsü..." + +#: ../plug-ins/win-snap/winsnap.c:1142 +msgid "No data captured" +msgstr "Hiç veri yakalanmadı" diff --git a/multimedia/graphics/gimp/gimp/files/po-script-fu_gimp20-script-fu-tr.po b/multimedia/graphics/gimp/gimp/files/po-script-fu_gimp20-script-fu-tr.po new file mode 100644 index 0000000000..47476319ed --- /dev/null +++ b/multimedia/graphics/gimp/gimp/files/po-script-fu_gimp20-script-fu-tr.po @@ -0,0 +1,2775 @@ +# Copyright (C) 2001 Free Software Foundation, Inc. +# Ömer Fadıl USTA , 2002. +# Fatih Demir , 2001. +# Alper Ersoy , 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: GIMP 1.3.5\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-06-08 20:00+0000\n" +"PO-Revision-Date: 2011-01-22 13:45+0000\n" +"Last-Translator: Ömer Fadıl USTA \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-08-09 06:12+0000\n" +"X-Generator: Launchpad (build 13628)\n" + +#: ../plug-ins/script-fu/script-fu-console.c:131 +#: ../plug-ins/script-fu/script-fu-console.c:198 +msgid "Script-Fu Console" +msgstr "Script-Fu Konsolu" + +#: ../plug-ins/script-fu/script-fu-console.c:194 +msgid "Welcome to TinyScheme" +msgstr "Minik şemaya hoşgeldiniz" + +#: ../plug-ins/script-fu/script-fu-console.c:200 +msgid "Interactive Scheme Development" +msgstr "Etkileşimli Şema Geliştirici" + +#: ../plug-ins/script-fu/script-fu-console.c:236 +msgid "_Browse..." +msgstr "_Gözat..." + +#: ../plug-ins/script-fu/script-fu-console.c:294 +msgid "Save Script-Fu Console Output" +msgstr "Script-Fu Uçbirimi Çıktısını Kaydet" + +#: ../plug-ins/script-fu/script-fu-console.c:341 +#, c-format +msgid "Could not open '%s' for writing: %s" +msgstr "Yazma için '%s' açılamadı: %s" + +#: ../plug-ins/script-fu/script-fu-console.c:370 +msgid "Script-Fu Procedure Browser" +msgstr "Script-Fu Yordamı Gezgini" + +#: ../plug-ins/script-fu/script-fu-eval.c:63 +msgid "Script-Fu evaluation mode only allows non-interactive invocation" +msgstr "Script-Fu değerlendirme kipi sadece etkileşimsiz çağrıma izin verir" + +#: ../plug-ins/script-fu/script-fu-interface.c:196 +msgid "Script-Fu cannot process two scripts at the same time." +msgstr "Script-Fu iki betiği aynı anda çalıştıramaz." + +#: ../plug-ins/script-fu/script-fu-interface.c:198 +#, c-format +msgid "You are already running the \"%s\" script." +msgstr "\"%s\" betiğini zaten çalıştırıyorsunuz." + +#: ../plug-ins/script-fu/script-fu-interface.c:224 +#, c-format +msgid "Script-Fu: %s" +msgstr "Script-Fu: %s" + +#. we add a colon after the label; +#. * some languages want an extra space here +#. +#: ../plug-ins/script-fu/script-fu-interface.c:288 +#, c-format +msgid "%s:" +msgstr "%s:" + +#: ../plug-ins/script-fu/script-fu-interface.c:336 +msgid "Script-Fu Color Selection" +msgstr "Script-Fu Renk Seçimi" + +#: ../plug-ins/script-fu/script-fu-interface.c:445 +msgid "Script-Fu File Selection" +msgstr "Script-Fu Dosya Seçimi" + +#: ../plug-ins/script-fu/script-fu-interface.c:448 +msgid "Script-Fu Folder Selection" +msgstr "Script-Fu Dizin Seçimi" + +#: ../plug-ins/script-fu/script-fu-interface.c:461 +msgid "Script-Fu Font Selection" +msgstr "Script-Fu Yazıtipi Seçimi" + +#: ../plug-ins/script-fu/script-fu-interface.c:469 +msgid "Script-Fu Palette Selection" +msgstr "Script-Fu Palet Seçimi" + +#: ../plug-ins/script-fu/script-fu-interface.c:478 +msgid "Script-Fu Pattern Selection" +msgstr "Script-Fu Desen Seçimi" + +#: ../plug-ins/script-fu/script-fu-interface.c:487 +msgid "Script-Fu Gradient Selection" +msgstr "Script-Fu Gradyan Secimi" + +#: ../plug-ins/script-fu/script-fu-interface.c:496 +msgid "Script-Fu Brush Selection" +msgstr "Script-Fu Fırça Seçimi" + +#: ../plug-ins/script-fu/script-fu-interface.c:824 +#, c-format +msgid "Error while executing %s:" +msgstr "%s yürütülürken hata:" + +#: ../plug-ins/script-fu/script-fu-scripts.c:150 +msgid "Too few arguments to 'script-fu-register' call" +msgstr "'script-fu-register' çağrısında çok fazla bağımsız değişken" + +#: ../plug-ins/script-fu/script-fu-scripts.c:609 +#, c-format +msgid "Error while loading %s:" +msgstr "%s yüklenirken hata:" + +#: ../plug-ins/script-fu/script-fu-server.c:713 +msgid "Script-Fu Server Options" +msgstr "Script-Fu Sunucu Ayarları" + +#: ../plug-ins/script-fu/script-fu-server.c:718 +msgid "_Start Server" +msgstr "_Sunucuyu Başlat" + +#: ../plug-ins/script-fu/script-fu-server.c:746 +msgid "Server port:" +msgstr "Sunucu kapısı:" + +#: ../plug-ins/script-fu/script-fu-server.c:752 +msgid "Server logfile:" +msgstr "Sunucu günlük dosyası:" + +#: ../plug-ins/script-fu/script-fu.c:111 +msgid "Interactive console for Script-Fu development" +msgstr "Script-Fu geliştirmesi için etkileşimli uçbirim" + +#: ../plug-ins/script-fu/script-fu.c:117 +msgid "_Console" +msgstr "_Uçbirim" + +#: ../plug-ins/script-fu/script-fu.c:141 +msgid "Server for remote Script-Fu operation" +msgstr "Uzak Script-Fu işlemi için sunucu" + +#: ../plug-ins/script-fu/script-fu.c:146 +msgid "_Start Server..." +msgstr "Sunucuyu _Başlat..." + +#: ../plug-ins/script-fu/script-fu.c:302 +msgid "_GIMP Online" +msgstr "Çevrimiçi _GIMP" + +#: ../plug-ins/script-fu/script-fu.c:303 +msgid "_User Manual" +msgstr "_Kullanıcı Kılavuzu" + +#: ../plug-ins/script-fu/script-fu.c:306 +msgid "_Script-Fu" +msgstr "_Script-Fu" + +#: ../plug-ins/script-fu/script-fu.c:308 +msgid "_Test" +msgstr "_Dene" + +#: ../plug-ins/script-fu/script-fu.c:311 +msgid "_Buttons" +msgstr "_Düğmeler" + +#: ../plug-ins/script-fu/script-fu.c:313 +msgid "_Logos" +msgstr "_Logolar" + +#: ../plug-ins/script-fu/script-fu.c:315 +msgid "_Patterns" +msgstr "_Desenler" + +#: ../plug-ins/script-fu/script-fu.c:318 +msgid "_Web Page Themes" +msgstr "_Ağ Sayfası Temaları" + +#: ../plug-ins/script-fu/script-fu.c:320 +msgid "_Alien Glow" +msgstr "_Alien Glow" + +#: ../plug-ins/script-fu/script-fu.c:322 +msgid "_Beveled Pattern" +msgstr "_Eğimli Desen" + +#: ../plug-ins/script-fu/script-fu.c:324 +msgid "_Classic.Gimp.Org" +msgstr "_Classic.Gimp.Org" + +#: ../plug-ins/script-fu/script-fu.c:327 +msgid "Alpha to _Logo" +msgstr "_Logodan Görünüre" + +#: ../plug-ins/script-fu/script-fu.c:330 +msgid "Re-read all available Script-Fu scripts" +msgstr "Kullanılabilir tüm Script-Fu betiklerini yeniden oku" + +#: ../plug-ins/script-fu/script-fu.c:335 +msgid "_Refresh Scripts" +msgstr "Betikleri _Yenile" + +#: ../plug-ins/script-fu/script-fu.c:358 +msgid "" +"You can not use \"Refresh Scripts\" while a Script-Fu dialog box is open. " +"Please close all Script-Fu windows and try again." +msgstr "" +"Bir Script-Fu kutusu açıkken \"Betikleri Yenile\"yi kullanamazsınız. Lütfen " +"bütün Script-Fu pencerelerini kapatın ve yeniden deneyin." + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:1 +msgid "3D _Outline..." +msgstr "3B _Çerçeve..." + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:2 +msgid "Bumpmap (alpha layer) blur radius" +msgstr "Derinlik etkisi (görünür katman) bulanıklık yarıçapı" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:3 +msgid "Create a logo with outlined text and a drop shadow" +msgstr "Taslağı çizilmiş yazı ile bir logo ve gölge alanı oluştur" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:4 +#: ../plug-ins/script-fu/scripts/glossy.scm.h:6 +msgid "Default bumpmap settings" +msgstr "Mevcut tümsek eşlem ayarları" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:5 +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:5 +#: ../plug-ins/script-fu/scripts/alien-glow-logo.scm.h:4 +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/basic1-logo.scm.h:4 +#: ../plug-ins/script-fu/scripts/basic2-logo.scm.h:5 +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:3 +#: ../plug-ins/script-fu/scripts/beveled-pattern-button.scm.h:3 +#: ../plug-ins/script-fu/scripts/beveled-pattern-heading.scm.h:2 +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:11 +#: ../plug-ins/script-fu/scripts/bovinated-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/carved-logo.scm.h:5 +#: ../plug-ins/script-fu/scripts/chalk.scm.h:5 +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:8 +#: ../plug-ins/script-fu/scripts/chrome-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:5 +#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:5 +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:5 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:6 +#: ../plug-ins/script-fu/scripts/glossy.scm.h:7 +#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:5 +#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/i26-gunya2.scm.h:2 +#: ../plug-ins/script-fu/scripts/neon-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/news-text.scm.h:7 +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:3 +#: ../plug-ins/script-fu/scripts/slide.scm.h:2 +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/speed-text.scm.h:5 +#: ../plug-ins/script-fu/scripts/starscape-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/text-circle.scm.h:4 +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/title-header.scm.h:2 +msgid "Font" +msgstr "Yazıtipi" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:6 +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:6 +#: ../plug-ins/script-fu/scripts/alien-glow-logo.scm.h:5 +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/basic1-logo.scm.h:5 +#: ../plug-ins/script-fu/scripts/basic2-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:4 +#: ../plug-ins/script-fu/scripts/beveled-pattern-button.scm.h:4 +#: ../plug-ins/script-fu/scripts/beveled-pattern-heading.scm.h:3 +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:12 +#: ../plug-ins/script-fu/scripts/bovinated-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/carved-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/chalk.scm.h:6 +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:9 +#: ../plug-ins/script-fu/scripts/chrome-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:6 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:7 +#: ../plug-ins/script-fu/scripts/glossy.scm.h:8 +#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/i26-gunya2.scm.h:3 +#: ../plug-ins/script-fu/scripts/neon-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/news-text.scm.h:8 +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:4 +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/speed-text.scm.h:6 +#: ../plug-ins/script-fu/scripts/starscape-logo.scm.h:3 +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:9 +#: ../plug-ins/script-fu/scripts/text-circle.scm.h:5 +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/title-header.scm.h:3 +msgid "Font size (pixels)" +msgstr "Yazıyüzü boyutu (benek)" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:7 +msgid "Outline blur radius" +msgstr "Dış çizgi bulanıklık eğrisi" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:8 +msgid "" +"Outline the selected region (or alpha) with a pattern and add a drop shadow" +msgstr "" +"Seçilmiş bölge veya görünürün taslağını bir model ile çiz ve gölge alanı ekle" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:9 +#: ../plug-ins/script-fu/scripts/beveled-pattern-arrow.scm.h:5 +#: ../plug-ins/script-fu/scripts/beveled-pattern-bullet.scm.h:3 +#: ../plug-ins/script-fu/scripts/beveled-pattern-button.scm.h:5 +#: ../plug-ins/script-fu/scripts/beveled-pattern-heading.scm.h:5 +#: ../plug-ins/script-fu/scripts/beveled-pattern-hrule.scm.h:3 +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:13 +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:11 +msgid "Pattern" +msgstr "Desen" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:10 +#: ../plug-ins/script-fu/scripts/glossy.scm.h:16 +#: ../plug-ins/script-fu/scripts/round-corners.scm.h:6 +msgid "Shadow X offset" +msgstr "X göreli konum gölgesi" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:11 +#: ../plug-ins/script-fu/scripts/glossy.scm.h:17 +#: ../plug-ins/script-fu/scripts/round-corners.scm.h:7 +msgid "Shadow Y offset" +msgstr "Y göreli konum gölgesi" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:12 +msgid "Shadow blur radius" +msgstr "Bulanık yarıçap gölgesi" + +#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:13 +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:10 +#: ../plug-ins/script-fu/scripts/alien-glow-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:10 +#: ../plug-ins/script-fu/scripts/basic1-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/basic2-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:9 +#: ../plug-ins/script-fu/scripts/beveled-pattern-button.scm.h:7 +#: ../plug-ins/script-fu/scripts/beveled-pattern-heading.scm.h:6 +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:17 +#: ../plug-ins/script-fu/scripts/bovinated-logo.scm.h:10 +#: ../plug-ins/script-fu/scripts/carved-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/chalk.scm.h:7 +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:14 +#: ../plug-ins/script-fu/scripts/chrome-logo.scm.h:9 +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:11 +#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:10 +#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:13 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:17 +#: ../plug-ins/script-fu/scripts/glossy.scm.h:18 +#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:10 +#: ../plug-ins/script-fu/scripts/i26-gunya2.scm.h:7 +#: ../plug-ins/script-fu/scripts/neon-logo.scm.h:10 +#: ../plug-ins/script-fu/scripts/news-text.scm.h:10 +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:13 +#: ../plug-ins/script-fu/scripts/slide.scm.h:5 +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:11 +#: ../plug-ins/script-fu/scripts/speed-text.scm.h:8 +#: ../plug-ins/script-fu/scripts/starscape-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:11 +#: ../plug-ins/script-fu/scripts/text-circle.scm.h:8 +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:14 +#: ../plug-ins/script-fu/scripts/title-header.scm.h:5 +msgid "Text" +msgstr "Metin" + +#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:1 +msgid "3_D Truchet..." +msgstr "3_D Truchet..." + +#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:2 +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:1 +#: ../plug-ins/script-fu/scripts/alien-glow-bar.scm.h:1 +#: ../plug-ins/script-fu/scripts/alien-glow-bullet.scm.h:1 +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:2 +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:3 +#: ../plug-ins/script-fu/scripts/basic1-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/basic2-logo.scm.h:3 +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/bovinated-logo.scm.h:3 +#: ../plug-ins/script-fu/scripts/chalk.scm.h:1 +#: ../plug-ins/script-fu/scripts/chrome-logo.scm.h:3 +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:1 +#: ../plug-ins/script-fu/scripts/glossy.scm.h:2 +#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/neon-logo.scm.h:1 +#: ../plug-ins/script-fu/scripts/news-text.scm.h:1 +#: ../plug-ins/script-fu/scripts/speed-text.scm.h:1 +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:2 +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:1 +#: ../plug-ins/script-fu/scripts/truchet.scm.h:1 +msgid "Background color" +msgstr "Artalan rengi" + +#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:3 +#: ../plug-ins/script-fu/scripts/truchet.scm.h:2 +msgid "Block size" +msgstr "Blok boyutu" + +#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:4 +msgid "Create an image filled with a 3D Truchet pattern" +msgstr "3D Truchet şekli ile doldurulmuş bir resim oluştur" + +#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:5 +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:7 +msgid "End blend" +msgstr "Kaynaşımı sonlandır" + +#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:6 +#: ../plug-ins/script-fu/scripts/truchet.scm.h:5 +msgid "Number of X tiles" +msgstr "X Kiremitlerinin sayısı" + +#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:7 +#: ../plug-ins/script-fu/scripts/truchet.scm.h:6 +msgid "Number of Y tiles" +msgstr "Y kiremitlerinin sayısı" + +#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:8 +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:16 +msgid "Start blend" +msgstr "Kaynaşımı başlat" + +#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:9 +msgid "Supersample" +msgstr "Üstörneklem" + +#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:10 +#: ../plug-ins/script-fu/scripts/add-bevel.scm.h:4 +#: ../plug-ins/script-fu/scripts/truchet.scm.h:8 +msgid "Thickness" +msgstr "Kalınlık" + +#: ../plug-ins/script-fu/scripts/add-bevel.scm.h:1 +msgid "Add B_evel..." +msgstr "E_ğim Ekle" + +#: ../plug-ins/script-fu/scripts/add-bevel.scm.h:2 +msgid "Add a beveled border to an image" +msgstr "Bir görüntüye eğimli bir sınır ekle" + +#: ../plug-ins/script-fu/scripts/add-bevel.scm.h:3 +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:12 +msgid "Keep bump layer" +msgstr "Tümsek katmanı koru" + +#: ../plug-ins/script-fu/scripts/add-bevel.scm.h:5 +#: ../plug-ins/script-fu/scripts/fuzzyborder.scm.h:10 +#: ../plug-ins/script-fu/scripts/old-photo.scm.h:6 +#: ../plug-ins/script-fu/scripts/round-corners.scm.h:8 +#: ../plug-ins/script-fu/scripts/slide.scm.h:6 +#: ../plug-ins/script-fu/scripts/spinning-globe.scm.h:6 +msgid "Work on copy" +msgstr "Kopya üzerinde çalış" + +#: ../plug-ins/script-fu/scripts/addborder.scm.h:1 +msgid "Add _Border..." +msgstr "_Sınır Ekle..." + +#: ../plug-ins/script-fu/scripts/addborder.scm.h:2 +msgid "Add a border around an image" +msgstr "Bir görüntü etrafına bir sınır ekle" + +#: ../plug-ins/script-fu/scripts/addborder.scm.h:3 +msgid "Border X size" +msgstr "Sınırın X büyüklüğü" + +#: ../plug-ins/script-fu/scripts/addborder.scm.h:4 +msgid "Border Y size" +msgstr "Sınırın Y büyüklüğü" + +#: ../plug-ins/script-fu/scripts/addborder.scm.h:5 +msgid "Border color" +msgstr "Sınır rengi" + +#: ../plug-ins/script-fu/scripts/addborder.scm.h:6 +msgid "Delta value on color" +msgstr "Renk üzerindeki değişim değeri" + +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:2 +msgid "Create an arrow graphic with an eerie glow for web pages" +msgstr "Web sayfaları için tuhaf bir ışık ile ok şekli oluştur" + +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:3 +#: ../plug-ins/script-fu/scripts/beveled-pattern-arrow.scm.h:2 +msgid "Down" +msgstr "Aşağı" + +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:4 +#: ../plug-ins/script-fu/scripts/alien-glow-bar.scm.h:5 +#: ../plug-ins/script-fu/scripts/alien-glow-bullet.scm.h:3 +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:4 +#: ../plug-ins/script-fu/scripts/camo.scm.h:5 +#: ../plug-ins/script-fu/scripts/fuzzyborder.scm.h:6 +msgid "Flatten image" +msgstr "Görüntüyü düzleştir" + +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:5 +#: ../plug-ins/script-fu/scripts/alien-glow-bar.scm.h:6 +#: ../plug-ins/script-fu/scripts/alien-glow-bullet.scm.h:4 +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:7 +#: ../plug-ins/script-fu/scripts/alien-glow-logo.scm.h:6 +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:8 +#: ../plug-ins/script-fu/scripts/neon-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/starscape-logo.scm.h:4 +msgid "Glow color" +msgstr "Işık rengi" + +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:6 +#: ../plug-ins/script-fu/scripts/beveled-pattern-arrow.scm.h:3 +msgid "Left" +msgstr "Sol" + +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:7 +#: ../plug-ins/script-fu/scripts/beveled-pattern-arrow.scm.h:4 +msgid "Orientation" +msgstr "Konum" + +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:8 +#: ../plug-ins/script-fu/scripts/beveled-pattern-arrow.scm.h:6 +msgid "Right" +msgstr "Sağ" + +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:9 +#: ../plug-ins/script-fu/scripts/beveled-pattern-arrow.scm.h:7 +#: ../plug-ins/script-fu/scripts/lava.scm.h:7 +msgid "Size" +msgstr "Boyut" + +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:10 +#: ../plug-ins/script-fu/scripts/beveled-pattern-arrow.scm.h:8 +msgid "Up" +msgstr "Yukarı" + +#: ../plug-ins/script-fu/scripts/alien-glow-arrow.scm.h:11 +#: ../plug-ins/script-fu/scripts/beveled-pattern-arrow.scm.h:9 +msgid "_Arrow..." +msgstr "_Ok..." + +#: ../plug-ins/script-fu/scripts/alien-glow-bar.scm.h:2 +msgid "Bar height" +msgstr "Çubuk yüksekliği" + +#: ../plug-ins/script-fu/scripts/alien-glow-bar.scm.h:3 +msgid "Bar length" +msgstr "Çubuk uzunluğu" + +#: ../plug-ins/script-fu/scripts/alien-glow-bar.scm.h:4 +msgid "Create an Hrule graphic with an eerie glow for web pages" +msgstr "Web sayfaları için tuhaf bir ışık ile hrule şekli oluştur" + +#: ../plug-ins/script-fu/scripts/alien-glow-bar.scm.h:7 +#: ../plug-ins/script-fu/scripts/beveled-pattern-hrule.scm.h:5 +msgid "_Hrule..." +msgstr "_Hrule..." + +#: ../plug-ins/script-fu/scripts/alien-glow-bullet.scm.h:2 +msgid "Create a bullet graphic with an eerie glow for web pages" +msgstr "Web sayfaları için tuhaf bir ışık ile koyu nokta şekli oluştur" + +#: ../plug-ins/script-fu/scripts/alien-glow-bullet.scm.h:5 +#: ../plug-ins/script-fu/scripts/text-circle.scm.h:6 +#: ../plug-ins/script-fu/scripts/tileblur.scm.h:7 +msgid "Radius" +msgstr "Yarıçap" + +#: ../plug-ins/script-fu/scripts/alien-glow-bullet.scm.h:6 +#: ../plug-ins/script-fu/scripts/beveled-pattern-bullet.scm.h:5 +msgid "_Bullet..." +msgstr "_Koyu nokta..." + +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:1 +#: ../plug-ins/script-fu/scripts/beveled-pattern-button.scm.h:1 +msgid "B_utton..." +msgstr "D_üğme..." + +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:3 +msgid "Create a button graphic with an eerie glow for web pages" +msgstr "Web sayfaları için tuhaf bir ışık ile buton şekli oluştur" + +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:8 +msgid "Glow radius" +msgstr "Işık yarıçapı" + +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:9 +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:6 +msgid "Padding" +msgstr "Tampon" + +#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:11 +#: ../plug-ins/script-fu/scripts/basic1-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/basic2-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:10 +#: ../plug-ins/script-fu/scripts/beveled-pattern-button.scm.h:8 +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:18 +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:14 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:18 +#: ../plug-ins/script-fu/scripts/i26-gunya2.scm.h:8 +#: ../plug-ins/script-fu/scripts/news-text.scm.h:11 +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:14 +#: ../plug-ins/script-fu/scripts/speed-text.scm.h:9 +msgid "Text color" +msgstr "Metin rengi" + +#: ../plug-ins/script-fu/scripts/alien-glow-logo.scm.h:1 +msgid "Add an eerie glow around the selected region (or alpha)" +msgstr "Seçilmiş bölgenin veya görünürün etrafına tuhaf bir ışık ekle" + +#: ../plug-ins/script-fu/scripts/alien-glow-logo.scm.h:2 +msgid "Alien _Glow..." +msgstr "Tuhaf _Işık" + +#: ../plug-ins/script-fu/scripts/alien-glow-logo.scm.h:3 +msgid "Create a logo with an alien glow around the text" +msgstr "Tuhaf ışık ile yazının etrafına bir logo oluştur" + +#: ../plug-ins/script-fu/scripts/alien-glow-logo.scm.h:7 +msgid "Glow size (pixels * 4)" +msgstr "Işık hacmi (benek * 4)" + +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:1 +msgid "Add psychedelic outlines to the selected region (or alpha)" +msgstr "Seçilen bölge veya görünüre rengarenk dış çizgi ekle" + +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:2 +msgid "Alien _Neon..." +msgstr "Tuhaf _Neon..." + +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:4 +msgid "Create a logo with psychedelic outlines around the text" +msgstr "Yazının etrafında rengarenk çerçeveli bir logo oluşturun" + +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:5 +msgid "Fade away" +msgstr "Karart" + +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:9 +msgid "Number of bands" +msgstr "Şeritlerin sayısı" + +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:11 +msgid "Width of bands" +msgstr "Bantların genişliği" + +#: ../plug-ins/script-fu/scripts/alien-neon-logo.scm.h:12 +msgid "Width of gaps" +msgstr "Aralıkların genişliği" + +#: ../plug-ins/script-fu/scripts/basic1-logo.scm.h:1 +msgid "" +"Add a gradient effect, a drop shadow, and a background to the selected " +"region (or alpha)" +msgstr "" +"Eğimli bir etki, gölge ve artalanı seçili bölgeye (veya görünüre) ekleyin" + +#: ../plug-ins/script-fu/scripts/basic1-logo.scm.h:3 +msgid "" +"Create a plain text logo with a gradient effect, a drop shadow, and a " +"background" +msgstr "Eğim etkili, gölge ve artalanlı bir düz yazı logosu oluşturun." + +#: ../plug-ins/script-fu/scripts/basic1-logo.scm.h:8 +msgid "_Basic I..." +msgstr "_Temel I..." + +#: ../plug-ins/script-fu/scripts/basic2-logo.scm.h:1 +msgid "Add a shadow and a highlight to the selected region (or alpha)" +msgstr "Seçili bölge veya görünüre bir gölge veya vurgu ekleyin" + +#: ../plug-ins/script-fu/scripts/basic2-logo.scm.h:2 +msgid "B_asic II..." +msgstr "T_emel II..." + +#: ../plug-ins/script-fu/scripts/basic2-logo.scm.h:4 +msgid "Create a simple logo with a shadow and a highlight" +msgstr "Bir gölgeli ve vurgulu basit bir logo oluşturun" + +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:1 +#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:4 +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:1 +msgid "Bevel width" +msgstr "Eğimli genişlik" + +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:2 +msgid "Create a simple, beveled button graphic for webpages" +msgstr "Web sayfaları için basit, kabarık bir buton oluştur" + +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:5 +msgid "Lower-right color" +msgstr "Alt-sağ renk" + +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:7 +#: ../plug-ins/script-fu/scripts/beveled-pattern-button.scm.h:6 +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:11 +msgid "Pressed" +msgstr "Basılı" + +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:8 +msgid "Simple _Beveled Button..." +msgstr "Yalın _Eğimli Düğme..." + +#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:11 +msgid "Upper-left color" +msgstr "Üst-sol renk" + +#: ../plug-ins/script-fu/scripts/beveled-pattern-arrow.scm.h:1 +msgid "Create a beveled pattern arrow for webpages" +msgstr "Web sayfaları için kabarık ok deseni oluştur" + +#: ../plug-ins/script-fu/scripts/beveled-pattern-bullet.scm.h:1 +msgid "Create a beveled pattern bullet for webpages" +msgstr "Web sayfaları için kabarık madde imi deseni oluştur" + +#: ../plug-ins/script-fu/scripts/beveled-pattern-bullet.scm.h:2 +msgid "Diameter" +msgstr "Çevre" + +#: ../plug-ins/script-fu/scripts/beveled-pattern-bullet.scm.h:4 +#: ../plug-ins/script-fu/scripts/beveled-pattern-heading.scm.h:7 +#: ../plug-ins/script-fu/scripts/spinning-globe.scm.h:4 +msgid "Transparent background" +msgstr "Saydam artalan" + +#: ../plug-ins/script-fu/scripts/beveled-pattern-button.scm.h:2 +msgid "Create a beveled pattern button for webpages" +msgstr "Web sayfaları için kabarık madde imi deseni oluştur" + +#: ../plug-ins/script-fu/scripts/beveled-pattern-heading.scm.h:1 +msgid "Create a beveled pattern heading for webpages" +msgstr "Web sayfaları için kabarık başlık deseni oluştur" + +#: ../plug-ins/script-fu/scripts/beveled-pattern-heading.scm.h:4 +msgid "H_eading..." +msgstr "B_aşlık" + +#: ../plug-ins/script-fu/scripts/beveled-pattern-hrule.scm.h:1 +msgid "Create a beveled pattern hrule for webpages" +msgstr "Web sayfaları için eğim desenli hrule oluştur" + +#: ../plug-ins/script-fu/scripts/beveled-pattern-hrule.scm.h:2 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:8 +#: ../plug-ins/script-fu/scripts/gradient-example.scm.h:4 +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:7 +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:7 +msgid "Height" +msgstr "Yükseklik" + +#: ../plug-ins/script-fu/scripts/beveled-pattern-hrule.scm.h:4 +#: ../plug-ins/script-fu/scripts/gradient-example.scm.h:5 +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:11 +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:11 +msgid "Width" +msgstr "Genişlik" + +#: ../plug-ins/script-fu/scripts/blend-anim.scm.h:1 +msgid "Blend Animation needs at least three source layers" +msgstr "Kaynaşık Canlandırma için en az üç katman gerekli" + +#: ../plug-ins/script-fu/scripts/blend-anim.scm.h:2 +msgid "" +"Create intermediate layers to blend two or more layers over a background as " +"an animation" +msgstr "" +"İki ya da daha çok katmanı bir artalan üzerinde, canlandırma olarak " +"harmanlamak için ara katmanlar oluştur." + +#: ../plug-ins/script-fu/scripts/blend-anim.scm.h:3 +msgid "Intermediate frames" +msgstr "Ara çerçeveler" + +#: ../plug-ins/script-fu/scripts/blend-anim.scm.h:4 +msgid "Looped" +msgstr "Dönüşlü" + +#: ../plug-ins/script-fu/scripts/blend-anim.scm.h:5 +msgid "Max. blur radius" +msgstr "En yüksek bulanıklık yarıçapı" + +#: ../plug-ins/script-fu/scripts/blend-anim.scm.h:6 +msgid "_Blend..." +msgstr "_Kaynaşım..." + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:1 +msgid "" +"Add blended backgrounds, highlights, and shadows to the selected region (or " +"alpha)" +msgstr "" +"Seçilmiş bölgeye (ya da görünüre) kaynaşmış artalanlar, vurgular, ve " +"gölgeler ekle" + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:3 +msgid "Blen_ded..." +msgstr "Kaynaş_tırıldı..." + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:4 +msgid "Blend mode" +msgstr "Kaynaşım kipi" + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:5 +msgid "Create a logo with blended backgrounds, highlights, and shadows" +msgstr "Kaynaşmış artalanlar, vurgular, ve gölgelerle bir logo yap" + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:6 +msgid "Custom Gradient" +msgstr "Seçimli Gradyan" + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:8 +msgid "FG-BG-HSV" +msgstr "OP-AP-RDD" + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:9 +msgid "FG-BG-RGB" +msgstr "ÖP-AP-KYM" + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:10 +msgid "FG-Transparent" +msgstr "ÖP-Şeffaf" + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:13 +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:7 +#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/land.scm.h:3 +#: ../plug-ins/script-fu/scripts/lava.scm.h:2 +#: ../plug-ins/script-fu/scripts/rendermap.scm.h:4 +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:9 +msgid "Gradient" +msgstr "Gradyan" + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:14 +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:8 +#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:9 +#: ../plug-ins/script-fu/scripts/gradient-example.scm.h:3 +#: ../plug-ins/script-fu/scripts/rendermap.scm.h:5 +#: ../plug-ins/script-fu/scripts/title-header.scm.h:4 +msgid "Gradient reverse" +msgstr "Tersten renk geçişi" + +#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:15 +msgid "Offset (pixels)" +msgstr "Ofset (piksel)" + +#: ../plug-ins/script-fu/scripts/bovinated-logo.scm.h:1 +msgid "Add 'cow spots' to the selected region (or alpha)" +msgstr "Seçilmiş bölgeye (ya da görünüre) 'sığır benekleri' ekle" + +#: ../plug-ins/script-fu/scripts/bovinated-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/chrome-logo.scm.h:2 +msgid "Background Color" +msgstr "Arkaplan Rengi" + +#: ../plug-ins/script-fu/scripts/bovinated-logo.scm.h:4 +msgid "Bo_vination..." +msgstr "Be_nekleme..." + +#: ../plug-ins/script-fu/scripts/bovinated-logo.scm.h:5 +msgid "Create a logo with text in the style of 'cow spots'" +msgstr "'Sığır benekleri' biçeminde üstünde yazı olan bir logo oluştur" + +#: ../plug-ins/script-fu/scripts/bovinated-logo.scm.h:8 +msgid "Spots density X" +msgstr "X'te Noktaların Yoğunluğu" + +#: ../plug-ins/script-fu/scripts/bovinated-logo.scm.h:9 +msgid "Spots density Y" +msgstr "Y'de Noktaların Yoğunluğu" + +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:1 +msgid "Add glowing" +msgstr "Korlama ekle" + +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:2 +msgid "After glow" +msgstr "Kordan sonra" + +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:3 +msgid "B_urn-In..." +msgstr "_İçine Yaz" + +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:4 +msgid "Corona width" +msgstr "Doruk genişliği" + +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:5 +msgid "" +"Create intermediate layers to produce an animated 'burn-in' transition " +"between two layers" +msgstr "" +"İki katman arasında 'burn-in' geçişi oluşturmak için ara katman oluştur" + +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:6 +msgid "Fadeout" +msgstr "Solma" + +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:7 +msgid "Fadeout width" +msgstr "Kararma Genişliği" + +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:9 +msgid "Prepare for GIF" +msgstr "GIF İçin Hazırla" + +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:10 +msgid "Speed (pixels/frame)" +msgstr "Hız (piksel/kare)" + +#: ../plug-ins/script-fu/scripts/burn-in-anim.scm.h:11 +msgid "" +"The Burn-In script needs two layers in total. A foreground layer with " +"transparency and a background layer." +msgstr "" +"Burn-In betiği transparan bir ön katman ve arka katman olmak üzere iki " +"katmana ihtiyaç duyar." + +#: ../plug-ins/script-fu/scripts/camo.scm.h:1 +msgid "Color 1" +msgstr "1. Renk" + +#: ../plug-ins/script-fu/scripts/camo.scm.h:2 +msgid "Color 2" +msgstr "2. Renk" + +#: ../plug-ins/script-fu/scripts/camo.scm.h:3 +msgid "Color 3" +msgstr "3. Renk" + +#: ../plug-ins/script-fu/scripts/camo.scm.h:4 +msgid "Create an image filled with a camouflage pattern" +msgstr "Alalama örgüsüyle doldurulmuş bir görüntü oluştur" + +#: ../plug-ins/script-fu/scripts/camo.scm.h:6 +#: ../plug-ins/script-fu/scripts/rendermap.scm.h:6 +msgid "Granularity" +msgstr "Parçacıklılık" + +#: ../plug-ins/script-fu/scripts/camo.scm.h:7 +#: ../plug-ins/script-fu/scripts/rendermap.scm.h:7 +msgid "Image size" +msgstr "Görüntü boyutu" + +#: ../plug-ins/script-fu/scripts/camo.scm.h:8 +#: ../plug-ins/script-fu/scripts/distress-selection.scm.h:3 +msgid "Smooth" +msgstr "Yumuşat" + +#: ../plug-ins/script-fu/scripts/camo.scm.h:9 +msgid "_Camouflage..." +msgstr "_Alalama" + +#: ../plug-ins/script-fu/scripts/carve-it.scm.h:1 +msgid "Carve white areas" +msgstr "Ak alanları oy" + +#: ../plug-ins/script-fu/scripts/carve-it.scm.h:2 +msgid "Image to carve" +msgstr "Oyulacak imge" + +#: ../plug-ins/script-fu/scripts/carve-it.scm.h:3 +msgid "Stencil C_arve..." +msgstr "Kalıp O_yma" + +#: ../plug-ins/script-fu/scripts/carved-logo.scm.h:1 +msgid "Background Image" +msgstr "Arkaplan Resmi" + +#: ../plug-ins/script-fu/scripts/carved-logo.scm.h:2 +msgid "Carve raised text" +msgstr "Kabarık yazıyı oy" + +#: ../plug-ins/script-fu/scripts/carved-logo.scm.h:3 +msgid "Carved..." +msgstr "Oyuldu..." + +#: ../plug-ins/script-fu/scripts/carved-logo.scm.h:4 +msgid "" +"Create a logo with text raised above or carved in to the specified " +"background image" +msgstr "Kabarık ya da belli bir imgenin içine oyulmuş yazılı bir logo yap" + +#: ../plug-ins/script-fu/scripts/carved-logo.scm.h:7 +msgid "Padding around text" +msgstr "Yazının etrafındaki boşluk" + +#: ../plug-ins/script-fu/scripts/chalk.scm.h:2 +msgid "Chalk color" +msgstr "Kireç taşı rengi" + +#: ../plug-ins/script-fu/scripts/chalk.scm.h:3 +msgid "Create a chalk drawing effect for the selected region (or alpha)" +msgstr "Seçilen bölge (ya da görünür) için kireçtaşı çizim etkisi oluştur" + +#: ../plug-ins/script-fu/scripts/chalk.scm.h:4 +msgid "Create a logo resembling chalk scribbled on a blackboard" +msgstr "Tebeşir karalamasına benzeyen logo oluştur." + +#: ../plug-ins/script-fu/scripts/chalk.scm.h:8 +msgid "_Chalk..." +msgstr "_Kireç taşı" + +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:1 +msgid "Add a chipped woodcarving effect to the selected region (or alpha)" +msgstr "Seçili bölgeye (ya da görünüre) bir ağaç oyma etkisi ekle" + +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:2 +msgid "Blur amount" +msgstr "Bulanıklık niceliği" + +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:3 +msgid "Chip Awa_y..." +msgstr "Yont..." + +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:4 +msgid "Chip amount" +msgstr "Yontma niceliği" + +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:5 +msgid "Create a logo resembling a chipped wood carving" +msgstr "Oyulmuş ağaca benzeyen bir imlek oluştur" + +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:6 +msgid "Drop shadow" +msgstr "Gölge düşür" + +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:7 +msgid "Fill BG with pattern" +msgstr "Artalanı örgüyle doldur" + +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:10 +msgid "Invert" +msgstr "Tersine Çevir" + +#: ../plug-ins/script-fu/scripts/chip-away.scm.h:11 +msgid "Keep background" +msgstr "Artalanı değiştirme" + +#: ../plug-ins/script-fu/scripts/chrome-it.scm.h:1 +msgid "" +"Add a chrome effect to the selected region (or alpha) using a specified " +"(grayscale) stencil" +msgstr "" +"Belirtilen kalıbı (gri ölçekli) kullanarak seçili bölgeye (ya da görünüre) " +"gümüş etkisi uygula" + +#: ../plug-ins/script-fu/scripts/chrome-it.scm.h:2 +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:1 +msgid "Chrome balance" +msgstr "Krom dengesi" + +#: ../plug-ins/script-fu/scripts/chrome-it.scm.h:3 +#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:2 +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:2 +msgid "Chrome factor" +msgstr "Krom Katsayısı" + +#: ../plug-ins/script-fu/scripts/chrome-it.scm.h:4 +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:3 +msgid "Chrome lightness" +msgstr "Krom parlaklığı" + +#: ../plug-ins/script-fu/scripts/chrome-it.scm.h:5 +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:4 +msgid "Chrome saturation" +msgstr "Krom Doygunluğu" + +#: ../plug-ins/script-fu/scripts/chrome-it.scm.h:6 +msgid "Chrome white areas" +msgstr "Krom beyaz alanlar" + +#: ../plug-ins/script-fu/scripts/chrome-it.scm.h:7 +#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:5 +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:6 +msgid "Environment map" +msgstr "Ortam haritası" + +#: ../plug-ins/script-fu/scripts/chrome-it.scm.h:8 +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:9 +msgid "Highlight balance" +msgstr "Vurgu dengesi" + +#: ../plug-ins/script-fu/scripts/chrome-it.scm.h:9 +msgid "Stencil C_hrome..." +msgstr "Stencil C_hrome..." + +#: ../plug-ins/script-fu/scripts/chrome-logo.scm.h:1 +msgid "Add a simple chrome effect to the selected region (or alpha)" +msgstr "Seçili bölgeye (ya da görünüre) krom etkisi uygula" + +#: ../plug-ins/script-fu/scripts/chrome-logo.scm.h:4 +msgid "C_hrome..." +msgstr "K_rom" + +#: ../plug-ins/script-fu/scripts/chrome-logo.scm.h:5 +msgid "Create a simplistic, but cool, chromed logo" +msgstr "Basit ama hoş krom etkisi uygulanmış bir logo oluştur" + +#: ../plug-ins/script-fu/scripts/chrome-logo.scm.h:8 +msgid "Offsets (pixels * 2)" +msgstr "Ofset (piksel * 2)" + +#: ../plug-ins/script-fu/scripts/circuit.scm.h:1 +msgid "Circuit seed" +msgstr "Devre tohumu" + +#: ../plug-ins/script-fu/scripts/circuit.scm.h:2 +msgid "" +"Fill the selected region (or alpha) with traces like those on a circuit board" +msgstr "" +"Seçili bölgeyi (ya da görünürü) daire üzerindeymiş gibi izlerle doldur" + +#: ../plug-ins/script-fu/scripts/circuit.scm.h:3 +#: ../plug-ins/script-fu/scripts/lava.scm.h:3 +#: ../plug-ins/script-fu/scripts/predator.scm.h:3 +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:11 +msgid "Keep selection" +msgstr "Seçileni tut" + +#: ../plug-ins/script-fu/scripts/circuit.scm.h:4 +msgid "No background (only for separate layer)" +msgstr "Artalan yok (yalnız ayrı katman için)" + +#: ../plug-ins/script-fu/scripts/circuit.scm.h:5 +msgid "Oilify mask size" +msgstr "Mask boyutunu yağlımsıla" + +#: ../plug-ins/script-fu/scripts/circuit.scm.h:6 +#: ../plug-ins/script-fu/scripts/lava.scm.h:6 +#: ../plug-ins/script-fu/scripts/predator.scm.h:6 +msgid "Separate layer" +msgstr "Ayrı katman" + +#: ../plug-ins/script-fu/scripts/circuit.scm.h:7 +msgid "_Circuit..." +msgstr "_Devre..." + +#: ../plug-ins/script-fu/scripts/clothify.scm.h:1 +msgid "Add a cloth-like texture to the selected region (or alpha)" +msgstr "Seçilen bölgeye (ya da görünüre) bezimsi bir doku ekle" + +#: ../plug-ins/script-fu/scripts/clothify.scm.h:2 +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:1 +msgid "Azimuth" +msgstr "Azimut" + +#: ../plug-ins/script-fu/scripts/clothify.scm.h:3 +msgid "Blur X" +msgstr "X Bulanıklığı" + +#: ../plug-ins/script-fu/scripts/clothify.scm.h:4 +msgid "Blur Y" +msgstr "Y Bulanıklığı" + +#: ../plug-ins/script-fu/scripts/clothify.scm.h:5 +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:5 +msgid "Depth" +msgstr "Derinlik" + +#: ../plug-ins/script-fu/scripts/clothify.scm.h:6 +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:6 +msgid "Elevation" +msgstr "Kaldırma" + +#: ../plug-ins/script-fu/scripts/clothify.scm.h:7 +msgid "_Clothify..." +msgstr "_Bezimsileştir..." + +#: ../plug-ins/script-fu/scripts/coffee.scm.h:1 +msgid "Add realistic looking coffee stains to the image" +msgstr "Görüntüye gerçek gibi görünen kahve lekesi ekle" + +#: ../plug-ins/script-fu/scripts/coffee.scm.h:2 +msgid "Darken only" +msgstr "Sadece koyulaşan" + +#: ../plug-ins/script-fu/scripts/coffee.scm.h:3 +msgid "Stains" +msgstr "Lekeler" + +#: ../plug-ins/script-fu/scripts/coffee.scm.h:4 +msgid "_Coffee Stain..." +msgstr "_Kahve Lekesi..." + +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:1 +msgid "" +"Add a comic-book effect to the selected region (or alpha) by outlining and " +"filling with a gradient" +msgstr "" +"Seçili bölgeye (ya da görünüre) renk geçişi ile çevreleyen ve dolduran bir " +"çizgi roman etkisi uygula" + +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:3 +msgid "Comic Boo_k..." +msgstr "Karikatür Kitab_ı..." + +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:4 +msgid "" +"Create a comic-book style logo by outlining and filling with a gradient" +msgstr "" +"Kıyılarını çizerek ve içini bayırgıyla doldurarak, çizgi roman betiği " +"biçeminde bir imlek oluştur" + +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:9 +msgid "Outline color" +msgstr "Kıyı çizgisi rengi" + +#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:10 +#: ../plug-ins/script-fu/scripts/glossy.scm.h:11 +msgid "Outline size" +msgstr "Kıyı çizgisi boyutu" + +#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:1 +msgid "" +"Add a metallic effect to the selected region (or alpha) with reflections and " +"perspective shadows" +msgstr "" +"Yansımalarla ve gölgelerle seçili bölgeye (ya da görünüre) metalik etki ver" + +#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:3 +msgid "Cool _Metal..." +msgstr "Soğuk _Metal..." + +#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:4 +msgid "Create a metallic logo with reflections and perspective shadows" +msgstr "Yansımalarla ve gölgelerle metalik bir logo oluştur" + +#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:5 +#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:4 +#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:4 +#: ../plug-ins/script-fu/scripts/neon-logo.scm.h:5 +msgid "Effect size (pixels)" +msgstr "Etki boyutu (benek)" + +#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:1 +msgid "Background image" +msgstr "Artalan görüntüsü" + +#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:3 +msgid "" +"Create a logo with a crystal/gel effect displacing the image underneath" +msgstr "Resmin altından çıkartarak kristal/jel etkisi ile logo oluştur." + +#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:4 +msgid "Crystal..." +msgstr "Kristal..." + +#: ../plug-ins/script-fu/scripts/difference-clouds.scm.h:1 +msgid "Difference Clouds..." +msgstr "Farklı Bulutlar..." + +#: ../plug-ins/script-fu/scripts/difference-clouds.scm.h:2 +msgid "Solid noise applied with Difference layer mode" +msgstr "Değişik katman modu ile keskin ses uygulandı" + +#: ../plug-ins/script-fu/scripts/distress-selection.scm.h:1 +msgid "Distress the selection" +msgstr "Seçimi yıprat" + +#: ../plug-ins/script-fu/scripts/distress-selection.scm.h:2 +msgid "Granularity (1 is low)" +msgstr "Tanelilik (1 düşük)" + +#: ../plug-ins/script-fu/scripts/distress-selection.scm.h:4 +msgid "Smooth horizontally" +msgstr "Enine Yumuşalık" + +#: ../plug-ins/script-fu/scripts/distress-selection.scm.h:5 +msgid "Smooth vertically" +msgstr "Boyuna Yumuşalık" + +#: ../plug-ins/script-fu/scripts/distress-selection.scm.h:6 +msgid "Spread" +msgstr "Etrafa Saç" + +#: ../plug-ins/script-fu/scripts/distress-selection.scm.h:7 +msgid "Threshold (bigger 1<-->255 smaller)" +msgstr "Eşik (en büyük 1<-->255 en küçük)" + +#: ../plug-ins/script-fu/scripts/distress-selection.scm.h:8 +msgid "_Distort..." +msgstr "_Bük..." + +#: ../plug-ins/script-fu/scripts/drop-shadow.scm.h:1 +msgid "Add a drop shadow to the selected region (or alpha)" +msgstr "Seçili bölgeye (ya da görünüre) gölge ekle" + +#: ../plug-ins/script-fu/scripts/drop-shadow.scm.h:2 +#: ../plug-ins/script-fu/scripts/perspective-shadow.scm.h:2 +msgid "Allow resizing" +msgstr "Yeniden boyutlandırmaya izin ver" + +#: ../plug-ins/script-fu/scripts/drop-shadow.scm.h:3 +#: ../plug-ins/script-fu/scripts/news-text.scm.h:2 +#: ../plug-ins/script-fu/scripts/perspective-shadow.scm.h:4 +#: ../plug-ins/script-fu/scripts/round-corners.scm.h:3 +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:3 +msgid "Blur radius" +msgstr "Bulanıklık yarıçapı" + +#: ../plug-ins/script-fu/scripts/drop-shadow.scm.h:4 +#: ../plug-ins/script-fu/scripts/fuzzyborder.scm.h:5 +#: ../plug-ins/script-fu/scripts/perspective-shadow.scm.h:5 +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:5 +msgid "Color" +msgstr "Renk" + +#: ../plug-ins/script-fu/scripts/drop-shadow.scm.h:5 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:11 +msgid "Offset X" +msgstr "X Ofset" + +#: ../plug-ins/script-fu/scripts/drop-shadow.scm.h:6 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:12 +msgid "Offset Y" +msgstr "Y Ofset" + +#: ../plug-ins/script-fu/scripts/drop-shadow.scm.h:7 +#: ../plug-ins/script-fu/scripts/perspective-shadow.scm.h:7 +msgid "Opacity" +msgstr "Saydamsızlık" + +#: ../plug-ins/script-fu/scripts/drop-shadow.scm.h:8 +msgid "_Drop Shadow..." +msgstr "Gölge _Düşür..." + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:1 +msgid "Columns" +msgstr "Sütunlar" + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:2 +msgid "Erase" +msgstr "Sil" + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:3 +msgid "Erase every other row or column" +msgstr "Diğer satır ve sütunları sil" + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:4 +msgid "Erase/fill" +msgstr "Sil/doldur" + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:5 +msgid "Even" +msgstr "Çift" + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:6 +msgid "Even/odd" +msgstr "Tek/çift" + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:7 +msgid "Fill with BG" +msgstr "Arkaplanla Doldur" + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:8 +msgid "Odd" +msgstr "Tek" + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:9 +msgid "Rows" +msgstr "Satırlar" + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:10 +msgid "Rows/cols" +msgstr "Satırlar/Sütunlar" + +#: ../plug-ins/script-fu/scripts/erase-rows.scm.h:11 +msgid "_Erase Every Other Row..." +msgstr "Öteki Bütün Satırları _Sil..." + +#: ../plug-ins/script-fu/scripts/flatland.scm.h:1 +msgid "Create an image filled with a Land Pattern" +msgstr "Toprak Örgüsüyle doldurulmuş bir imge oluştur" + +#: ../plug-ins/script-fu/scripts/flatland.scm.h:2 +#: ../plug-ins/script-fu/scripts/land.scm.h:2 +msgid "Detail level" +msgstr "Ayrıntı düzeyi" + +#: ../plug-ins/script-fu/scripts/flatland.scm.h:3 +#: ../plug-ins/script-fu/scripts/land.scm.h:4 +msgid "Image height" +msgstr "Görüntü yüksekliği" + +#: ../plug-ins/script-fu/scripts/flatland.scm.h:4 +#: ../plug-ins/script-fu/scripts/land.scm.h:5 +msgid "Image width" +msgstr "Görüntü genişliği" + +#: ../plug-ins/script-fu/scripts/flatland.scm.h:5 +#: ../plug-ins/script-fu/scripts/land.scm.h:7 +msgid "Random seed" +msgstr "Rasgele tohum" + +#: ../plug-ins/script-fu/scripts/flatland.scm.h:6 +#: ../plug-ins/script-fu/scripts/land.scm.h:8 +msgid "Scale X" +msgstr "X Ölçeği" + +#: ../plug-ins/script-fu/scripts/flatland.scm.h:7 +#: ../plug-ins/script-fu/scripts/land.scm.h:9 +msgid "Scale Y" +msgstr "Y Ölçeği" + +#: ../plug-ins/script-fu/scripts/flatland.scm.h:8 +msgid "_Flatland..." +msgstr "_Düztoprak..." + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:1 +msgid "Active colors" +msgstr "Etkin renkler" + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:2 +msgid "Black on white" +msgstr "Beyaz üzerine siyah" + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:3 +msgid "" +"Create an image filled with previews of fonts matching a fontname filter" +msgstr "" +"Yazıyüzü adı süzgecine karşılık gelen yazıyüzlerinin, önizlemeleriyle " +"doldurulmuş bir imge oluştur" + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:4 +msgid "Font _size (pixels)" +msgstr "Yazıyüzü _boyutu (benek)" + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:5 +msgid "Render _Font Map..." +msgstr "_Yazıyüzü Haritası İşle..." + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:6 +msgid "Use font _name as text" +msgstr "Yazıyüzü _adını metin olarak kullan" + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:7 +msgid "_Border (pixels)" +msgstr "_Sınır (benek)" + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:8 +msgid "_Color scheme" +msgstr "_Renk şeması" + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:9 +msgid "_Filter (regexp)" +msgstr "_Süzgeç (düzenli anlatım)" + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:10 +msgid "_Labels" +msgstr "_Etiketler" + +#: ../plug-ins/script-fu/scripts/font-map.scm.h:11 +msgid "_Text" +msgstr "_Metin" + +#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:1 +msgid "" +"Add a frost effect to the selected region (or alpha) with an added drop " +"shadow" +msgstr "Ekli gölgeyle seçili bölgeye (ya da görünüre) donma etkisi uygula" + +#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:3 +msgid "Create frozen logo with an added drop shadow" +msgstr "Ekli kabartı gölgesiyle donma etkisi uygulanmış bir logo oluştur" + +#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:8 +msgid "_Frosty..." +msgstr "_Donuk..." + +#: ../plug-ins/script-fu/scripts/fuzzyborder.scm.h:1 +msgid "Add a jagged, fuzzy border to an image" +msgstr "Resme çıkıntılı, donuk çerçeve uygula" + +#: ../plug-ins/script-fu/scripts/fuzzyborder.scm.h:2 +msgid "Add shadow" +msgstr "Gölge ekle" + +#: ../plug-ins/script-fu/scripts/fuzzyborder.scm.h:3 +msgid "Blur border" +msgstr "Bulanık sınır çizgisi" + +#: ../plug-ins/script-fu/scripts/fuzzyborder.scm.h:4 +#: ../plug-ins/script-fu/scripts/old-photo.scm.h:1 +msgid "Border size" +msgstr "Sınır boyutu" + +#: ../plug-ins/script-fu/scripts/fuzzyborder.scm.h:7 +msgid "Granularity (1 is Low)" +msgstr "Parçacıklılık (1 Küçük Olmak Üzere)" + +#: ../plug-ins/script-fu/scripts/fuzzyborder.scm.h:9 +#, no-c-format +msgid "Shadow weight (%)" +msgstr "Gölge kalınlığı" + +#: ../plug-ins/script-fu/scripts/fuzzyborder.scm.h:11 +msgid "_Fuzzy Border..." +msgstr "_Bulanık Sınır..." + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:1 +msgid "Autocrop" +msgstr "Otomatik Kırp" + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:2 +msgid "Create an image of a large header using the gimp.org webpage theme" +msgstr "" +"gimp.org web sayfası desenini kullanarak, büyük bir üstbilgi imgesi oluşturun" + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:3 +msgid "Create an image of a small header using the gimp.org webpage theme" +msgstr "" +"gimp.org web sayfası desenini kullanarak, küçük bir üstbilgi imgesi oluşturun" + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:4 +msgid "Dark color" +msgstr "Koyu renk" + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:7 +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:9 +msgid "Highlight color" +msgstr "Aydınlatma rengi" + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:8 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:9 +msgid "Index image" +msgstr "Resim bilgisi" + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:9 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:10 +msgid "Number of colors" +msgstr "Renk sayısı" + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:10 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:13 +msgid "Remove background" +msgstr "Artalanı kaldır" + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:11 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:14 +msgid "Select-by-color threshold" +msgstr "Renge göre seçim eşiği" + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:12 +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:15 +msgid "Shadow color" +msgstr "Gölge rengi" + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:15 +msgid "_Big Header..." +msgstr "_Büyük Üstbilgi..." + +#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:16 +msgid "_Small Header..." +msgstr "_Küçük Üstbilgi..." + +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:2 +msgid "" +"Create an image of a Tube Button Label Header using the gimp.org webpage " +"theme" +msgstr "" +"gimp.org web sayfa temasını kullanarak Tüp Düğme Etiket başlığı resmi " +"oluştur." + +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:3 +msgid "" +"Create an image of a Tube Button Label using the gimp.org webpage theme" +msgstr "" +"gimp.org web sayfası temasını kullanarak Tüp Düğme Etiketi resmi oluştur" + +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:4 +msgid "" +"Create an image of a second level Tube Button Label using the gimp.org " +"webpage theme" +msgstr "" +"gimp.org web sayfası teması kullanarak ikinci seviye Tüp Düğme etiketinin " +"resmini oluştur." + +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:5 +msgid "" +"Create an image of a third level Tube Button Label using the gimp.org " +"webpage theme" +msgstr "" +"gimp.org web sayfası teması kullanarak üçüncü seviye Tüp Düğme etiketinin " +"resmini oluştur." + +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:16 +msgid "T_ube Sub-Button Label..." +msgstr "T_üp Alt-Düğme Etiketi" + +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:19 +msgid "Tub_e Sub-Sub-Button Label..." +msgstr "T_üp Alt-Alt-Düğme Etiketi" + +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:20 +msgid "_General Tube Labels..." +msgstr "_Genel Tüp Etiketleri" + +#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:21 +msgid "_Tube Button Label..." +msgstr "_Tüp Düğme Etiketi ..." + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:1 +msgid "" +"Add gradients, patterns, shadows, and bump maps to the selected region (or " +"alpha)" +msgstr "" +"Seçilen bölgeye (ya da görünüre) renk geçişleri, desenler, gölgeler ve " +"derinlik etkisi ekle" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:3 +msgid "Blend gradient (outline)" +msgstr "Renk Geçişi Uygula(dış çizgi)" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:4 +msgid "Blend gradient (text)" +msgstr "Renk Geçişi Uygula(metin)" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:5 +msgid "Create a logo with gradients, patterns, shadows, and bump maps" +msgstr "" +"Renk geçişleri, desenler, gölgeler ve derinlik etkileri ile bir logo oluştur" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:9 +msgid "Glo_ssy..." +msgstr "Par_lak" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:10 +msgid "Outline gradient reverse" +msgstr "Dış çizginin renk geçişini tersine çevir" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:12 +msgid "Pattern (outline)" +msgstr "Desen(dış çizgi)" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:13 +msgid "Pattern (overlay)" +msgstr "Örüntü (bindirme)" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:14 +msgid "Pattern (text)" +msgstr "Desen(metin)" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:15 +msgid "Shadow" +msgstr "Gölge" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:19 +msgid "Text gradient reverse" +msgstr "Metinin renk geçişini tersine çevir" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:20 +msgid "Use pattern for outline instead of gradient" +msgstr "Dış çizgi için renk geçişi yerine desen kullan" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:21 +msgid "Use pattern for text instead of gradient" +msgstr "Metin için renk geçişi yerine desen kullan" + +#: ../plug-ins/script-fu/scripts/glossy.scm.h:22 +msgid "Use pattern overlay" +msgstr "Desen kaplaması kullan" + +#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:1 +msgid "Add a glowing hot metal effect to the selected region (or alpha)" +msgstr "Seçili bölgeye (ya da görünüre) kızgın bir metal etkisi ekleyin" + +#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:3 +msgid "Create a logo that looks like glowing hot metal" +msgstr "Kızgın korlu ir gibi görünen bir imlek yap" + +#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:7 +msgid "Glo_wing Hot..." +msgstr "Kor Kızıl..." + +#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:1 +msgid "Add a shiny look and bevel effect to the selected region (or alpha)" +msgstr "" +"Seçili bölgeye (ya da görünüre) parlak bir görünüm ve eğim etkisi ekle" + +#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:3 +msgid "Bevel height (sharpness)" +msgstr "Eğim yüksekliği (keskinlik)" + +#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:5 +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:4 +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:2 +msgid "Border size (pixels)" +msgstr "Sınır boyutu (benek)" + +#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:6 +msgid "Create a logo with a shiny look and beveled edges" +msgstr "Parlak görünümlü ve eğik kıyılı bir logo yap" + +#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:9 +msgid "Gradient Beve_l..." +msgstr "Bayırgı_lı Renk Geçişi..." + +#: ../plug-ins/script-fu/scripts/gradient-example.scm.h:1 +msgid "Create an image filled with an example of the current gradient" +msgstr "Geçerli renk geçişi ile doldurulmuş bir resim oluştur" + +#: ../plug-ins/script-fu/scripts/gradient-example.scm.h:2 +msgid "Custom _Gradient..." +msgstr "Seçimlik _Bayırgı..." + +#: ../plug-ins/script-fu/scripts/grid-system.scm.h:1 +#: ../plug-ins/script-fu/scripts/guides-from-selection.scm.h:1 +msgid "" +"Draw a grid as specified by the lists of X and Y locations using the current " +"brush" +msgstr "" +"Şu anki fırçayı kullanarak, X ve Y konumlarınca belirlenmiş bir ızgara çiz" + +#: ../plug-ins/script-fu/scripts/grid-system.scm.h:2 +msgid "X divisions" +msgstr "X bölümleri" + +#: ../plug-ins/script-fu/scripts/grid-system.scm.h:3 +msgid "Y divisions" +msgstr "Y bölümleri" + +#: ../plug-ins/script-fu/scripts/grid-system.scm.h:4 +msgid "_Grid..." +msgstr "_Izgara..." + +#: ../plug-ins/script-fu/scripts/guides-from-selection.scm.h:2 +msgid "New Guides from _Selection" +msgstr "_Seçimden yeni kılavuzlar" + +#: ../plug-ins/script-fu/scripts/guides-new-percent.scm.h:1 +msgid "" +"Add a guide at the position specified as a percentage of the image size" +msgstr "İmge boyutunun yüzdesi olarak belirlenen konuma bir kılavuz ekle" + +#: ../plug-ins/script-fu/scripts/guides-new-percent.scm.h:2 +#: ../plug-ins/script-fu/scripts/guides-new.scm.h:2 +msgid "Direction" +msgstr "Yön" + +#: ../plug-ins/script-fu/scripts/guides-new-percent.scm.h:3 +#: ../plug-ins/script-fu/scripts/guides-new.scm.h:3 +msgid "Horizontal" +msgstr "Yatay" + +#: ../plug-ins/script-fu/scripts/guides-new-percent.scm.h:4 +msgid "New Guide (by _Percent)..." +msgstr "Yeni Kılavuz (_Yüzde olarak)" + +#: ../plug-ins/script-fu/scripts/guides-new-percent.scm.h:6 +#, no-c-format +msgid "Position (in %)" +msgstr "Konum (% içinde)" + +#: ../plug-ins/script-fu/scripts/guides-new-percent.scm.h:7 +#: ../plug-ins/script-fu/scripts/guides-new.scm.h:6 +msgid "Vertical" +msgstr "Dikey" + +#: ../plug-ins/script-fu/scripts/guides-new.scm.h:1 +msgid "Add a guide at the orientation and position specified (in pixels)" +msgstr "Belirlenen yön ve konuma (benek olarak) bir kılavuz ekle" + +#: ../plug-ins/script-fu/scripts/guides-new.scm.h:4 +msgid "New _Guide..." +msgstr "Yeni _Kılavuz..." + +#: ../plug-ins/script-fu/scripts/guides-new.scm.h:5 +msgid "Position" +msgstr "Konum" + +#: ../plug-ins/script-fu/scripts/guides-remove-all.scm.h:1 +msgid "Remove all horizontal and vertical guides" +msgstr "Bütün yatay ve dikey kılavuzları kaldır" + +#: ../plug-ins/script-fu/scripts/guides-remove-all.scm.h:2 +msgid "_Remove all Guides" +msgstr "Bütün Kılavuzları _Kaldır" + +#: ../plug-ins/script-fu/scripts/i26-gunya2.scm.h:1 +msgid "Create a logo in a two-color, scribbled text style" +msgstr "İki renkli, çiziktirilmiş yazı biçeminde bir logo yap" + +#: ../plug-ins/script-fu/scripts/i26-gunya2.scm.h:4 +msgid "Frame color" +msgstr "Çerçeve rengi" + +#: ../plug-ins/script-fu/scripts/i26-gunya2.scm.h:5 +msgid "Frame size" +msgstr "Çerçeve boyutu" + +#: ../plug-ins/script-fu/scripts/i26-gunya2.scm.h:6 +msgid "Imigre-_26..." +msgstr "Imigre-_26..." + +#: ../plug-ins/script-fu/scripts/land.scm.h:1 +msgid "Create an image filled with a topographic map pattern" +msgstr "Yerbetimsel eşlem örgüsüyle doldurulmuş bir imge oluştur" + +#: ../plug-ins/script-fu/scripts/land.scm.h:6 +msgid "Land height" +msgstr "Kara yüksekliği" + +#: ../plug-ins/script-fu/scripts/land.scm.h:10 +msgid "Sea depth" +msgstr "Deniz derinliği" + +#: ../plug-ins/script-fu/scripts/land.scm.h:11 +msgid "_Land..." +msgstr "_Kara..." + +#: ../plug-ins/script-fu/scripts/lava.scm.h:1 +msgid "Fill the current selection with lava" +msgstr "Seçilen alanı püskürtüyle doldur" + +#: ../plug-ins/script-fu/scripts/lava.scm.h:4 +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:8 +msgid "Roughness" +msgstr "Engebe Miktarı" + +#: ../plug-ins/script-fu/scripts/lava.scm.h:5 +msgid "Seed" +msgstr "Tohum" + +#: ../plug-ins/script-fu/scripts/lava.scm.h:8 +msgid "Use current gradient" +msgstr "Seçili renk geçişini kullan" + +#: ../plug-ins/script-fu/scripts/lava.scm.h:9 +msgid "_Lava..." +msgstr "_Püskürtü" + +#: ../plug-ins/script-fu/scripts/line-nova.scm.h:1 +msgid "" +"Fill a layer with rays emanating outward from its center using the FG color" +msgstr "" +"Bir katmanı FG renkleri kullanarak merkezden dışa doğru yayılan ışıkla doldur" + +#: ../plug-ins/script-fu/scripts/line-nova.scm.h:2 +msgid "Line _Nova..." +msgstr "_Nova çizgisi" + +#: ../plug-ins/script-fu/scripts/line-nova.scm.h:3 +msgid "Number of lines" +msgstr "Çizgi sayısı" + +#: ../plug-ins/script-fu/scripts/line-nova.scm.h:4 +msgid "Offset radius" +msgstr "Denge yarıçapı" + +#: ../plug-ins/script-fu/scripts/line-nova.scm.h:5 +msgid "Randomness" +msgstr "Raslantısallık" + +#: ../plug-ins/script-fu/scripts/line-nova.scm.h:6 +msgid "Sharpness (degrees)" +msgstr "Keskinlik (derece)" + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:1 +msgid "Create a rectangular brush" +msgstr "Dikdörtgen bir fırça oluştur" + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:2 +msgid "Create a rectangular brush with feathered edges" +msgstr "Tüylü kıyılı, dikdörtgen bir fırça oluştur" + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:3 +msgid "Create an elliptical brush" +msgstr "Söbe bir fırça oluştur" + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:4 +msgid "Create an elliptical brush with feathered edges" +msgstr "Tüylü kıyılı, söbe bir fırça oluştur" + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:5 +msgid "Elli_ptical, Feathered..." +msgstr "Sö_be, Tüylü..." + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:6 +msgid "Feathering" +msgstr "Yumuşak Geçiş" + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:8 +msgid "Name" +msgstr "Ad" + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:9 +msgid "Re_ctangular, Feathered..." +msgstr "Dik_dörtgen, Tüylü..." + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:10 +#: ../plug-ins/script-fu/scripts/paste-as-brush.scm.h:5 +#: ../plug-ins/script-fu/scripts/select-to-brush.scm.h:4 +msgid "Spacing" +msgstr "Boşluk" + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:12 +msgid "_Elliptical..." +msgstr "_Söbe..." + +#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:13 +msgid "_Rectangular..." +msgstr "_Dikdörtgen..." + +#: ../plug-ins/script-fu/scripts/neon-logo.scm.h:2 +msgid "Convert the selected region (or alpha) into a neon-sign like object" +msgstr "Seçilen bölgeyi (ya da görünürü) neon benzeri bir nesneye çevir" + +#: ../plug-ins/script-fu/scripts/neon-logo.scm.h:3 +msgid "Create a logo in the style of a neon sign" +msgstr "Neon biçeminde bir logo oluştur" + +#: ../plug-ins/script-fu/scripts/neon-logo.scm.h:4 +msgid "Create shadow" +msgstr "Gölge oluştur" + +#: ../plug-ins/script-fu/scripts/neon-logo.scm.h:9 +msgid "N_eon..." +msgstr "N_eon" + +#: ../plug-ins/script-fu/scripts/news-text.scm.h:3 +msgid "Cell size (pixels)" +msgstr "Hücre boyutu (benek)" + +#: ../plug-ins/script-fu/scripts/news-text.scm.h:4 +msgid "Create a logo in the style of newspaper printing" +msgstr "Gazete baskısı stilinde bir logo oluştur" + +#: ../plug-ins/script-fu/scripts/news-text.scm.h:6 +#: ../plug-ins/script-fu/scripts/speed-text.scm.h:4 +#, no-c-format +msgid "Density (%)" +msgstr "Yoğunluk (%)" + +#: ../plug-ins/script-fu/scripts/news-text.scm.h:9 +msgid "Newsprint Te_xt..." +msgstr "Gazete Ya_zısı" + +#: ../plug-ins/script-fu/scripts/old-photo.scm.h:2 +msgid "Defocus" +msgstr "Odak Dışına Çıkar" + +#: ../plug-ins/script-fu/scripts/old-photo.scm.h:3 +msgid "Make an image look like an old photo" +msgstr "Resmi eski fotoğraf görünümünde yap" + +#: ../plug-ins/script-fu/scripts/old-photo.scm.h:4 +msgid "Mottle" +msgstr "Benekle" + +#: ../plug-ins/script-fu/scripts/old-photo.scm.h:5 +msgid "Sepia" +msgstr "Renksiz" + +#: ../plug-ins/script-fu/scripts/old-photo.scm.h:7 +msgid "_Old Photo..." +msgstr "_Eski Fotoğraf..." + +#: ../plug-ins/script-fu/scripts/paste-as-brush.scm.h:1 +#: ../plug-ins/script-fu/scripts/select-to-brush.scm.h:1 +msgid "Brush name" +msgstr "Fırça adı" + +#: ../plug-ins/script-fu/scripts/paste-as-brush.scm.h:2 +#: ../plug-ins/script-fu/scripts/paste-as-pattern.scm.h:1 +#: ../plug-ins/script-fu/scripts/select-to-brush.scm.h:3 +#: ../plug-ins/script-fu/scripts/select-to-pattern.scm.h:2 +msgid "File name" +msgstr "Dosya adı" + +#: ../plug-ins/script-fu/scripts/paste-as-brush.scm.h:3 +msgid "New _Brush..." +msgstr "Yeni _Fırça" + +#: ../plug-ins/script-fu/scripts/paste-as-brush.scm.h:4 +msgid "Paste the clipboard contents into a new brush" +msgstr "Panodaki içeriği yeni fırçaya yapıştır" + +#: ../plug-ins/script-fu/scripts/paste-as-brush.scm.h:6 +#: ../plug-ins/script-fu/scripts/paste-as-pattern.scm.h:5 +msgid "There is no image data in the clipboard to paste." +msgstr "Panoda yapıştırılacak görüntü verisi yok." + +#: ../plug-ins/script-fu/scripts/paste-as-pattern.scm.h:2 +msgid "New _Pattern..." +msgstr "Yeni Desen" + +#: ../plug-ins/script-fu/scripts/paste-as-pattern.scm.h:3 +msgid "Paste the clipboard contents into a new pattern" +msgstr "Pano içeriğini yeni bir desene yapıştır" + +#: ../plug-ins/script-fu/scripts/paste-as-pattern.scm.h:4 +#: ../plug-ins/script-fu/scripts/select-to-pattern.scm.h:3 +msgid "Pattern name" +msgstr "Desen adı" + +#: ../plug-ins/script-fu/scripts/perspective-shadow.scm.h:1 +msgid "Add a perspective shadow to the selected region (or alpha)" +msgstr "Seçilen bölgeye (ya da görünüre) görüngesel gölge ekle" + +#: ../plug-ins/script-fu/scripts/perspective-shadow.scm.h:3 +msgid "Angle" +msgstr "Açı" + +#: ../plug-ins/script-fu/scripts/perspective-shadow.scm.h:6 +msgid "Interpolation" +msgstr "Ara değeri bulma" + +#: ../plug-ins/script-fu/scripts/perspective-shadow.scm.h:8 +msgid "Relative distance of horizon" +msgstr "Görüşün bağıl uzaklığı" + +#: ../plug-ins/script-fu/scripts/perspective-shadow.scm.h:9 +msgid "Relative length of shadow" +msgstr "Gölgenin bağıl uzunluğu" + +#: ../plug-ins/script-fu/scripts/perspective-shadow.scm.h:10 +msgid "_Perspective..." +msgstr "_Görünge..." + +#: ../plug-ins/script-fu/scripts/predator.scm.h:1 +msgid "Add a 'Predator' effect to the selected region (or alpha)" +msgstr "Seçili bölgeye (ya da görünüre) 'Yırtıcı' etkisi uygula" + +#: ../plug-ins/script-fu/scripts/predator.scm.h:2 +msgid "Edge amount" +msgstr "Kenar miktarı" + +#: ../plug-ins/script-fu/scripts/predator.scm.h:4 +msgid "Pixel amount" +msgstr "Benek niceliği" + +#: ../plug-ins/script-fu/scripts/predator.scm.h:5 +msgid "Pixelize" +msgstr "Pikselleştir" + +#: ../plug-ins/script-fu/scripts/predator.scm.h:7 +msgid "_Predator..." +msgstr "_Yırtıcı..." + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:2 +msgid "Create images, each containing an oval button graphic" +msgstr "Herbiri bir oval düğme grafiği içeren resimler oluşturun" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:5 +msgid "Lower color" +msgstr "Alt renk" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:6 +msgid "Lower color (active)" +msgstr "Alt renk (etkin)" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:7 +msgid "Not pressed" +msgstr "Basılmadı" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:8 +msgid "Not pressed (active)" +msgstr "Basılmadı (etkin)" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:9 +msgid "Padding X" +msgstr "X'te Tampon" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:10 +msgid "Padding Y" +msgstr "Y'de Tampon" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:12 +msgid "Round ratio" +msgstr "Yuvarlak oranı" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:15 +msgid "Text color (active)" +msgstr "Yazı rengi (etkin)" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:16 +msgid "Upper color" +msgstr "Üst renk" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:17 +msgid "Upper color (active)" +msgstr "Daha yüksek renk (aktif)" + +#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:18 +msgid "_Round Button..." +msgstr "_Yuvarlak Düğme..." + +#: ../plug-ins/script-fu/scripts/rendermap.scm.h:1 +msgid "Behavior" +msgstr "Davranış" + +#: ../plug-ins/script-fu/scripts/rendermap.scm.h:2 +msgid "Create an image filled with an Earth-like map pattern" +msgstr "Yeryüzü benzeri bir eşlem örüntüsüyle dolu bir imge oluşturun" + +#: ../plug-ins/script-fu/scripts/rendermap.scm.h:3 +msgid "Detail in Middle" +msgstr "Detay Ortada" + +#: ../plug-ins/script-fu/scripts/rendermap.scm.h:8 +msgid "Render _Map..." +msgstr "_Eşlem Oluştur..." + +#: ../plug-ins/script-fu/scripts/rendermap.scm.h:9 +msgid "Tile" +msgstr "Döşe" + +#: ../plug-ins/script-fu/scripts/reverse-layers.scm.h:1 +msgid "Reverse Layer Order" +msgstr "Katmanların Sırasını Tersine Çevir" + +#: ../plug-ins/script-fu/scripts/reverse-layers.scm.h:2 +msgid "Reverse the order of layers in the image" +msgstr "Resimdeki katmanların sırasını tersine çevir" + +#: ../plug-ins/script-fu/scripts/ripply-anim.scm.h:1 +msgid "Black" +msgstr "Siyah" + +#: ../plug-ins/script-fu/scripts/ripply-anim.scm.h:2 +msgid "" +"Create a multi-layer image by adding a ripple effect to the current image" +msgstr "" +"Geçerli resme dalgacık etkisi uygulayarak çok katmanlı yeni bir resim " +"oluştur." + +#: ../plug-ins/script-fu/scripts/ripply-anim.scm.h:3 +msgid "Edge behavior" +msgstr "Kıyı davranışı" + +#: ../plug-ins/script-fu/scripts/ripply-anim.scm.h:4 +#: ../plug-ins/script-fu/scripts/waves-anim.scm.h:4 +msgid "Number of frames" +msgstr "Çerçeve sayısı" + +#: ../plug-ins/script-fu/scripts/ripply-anim.scm.h:5 +msgid "Rippling strength" +msgstr "Dalgalanma gücü" + +#: ../plug-ins/script-fu/scripts/ripply-anim.scm.h:6 +msgid "Smear" +msgstr "Yayma" + +#: ../plug-ins/script-fu/scripts/ripply-anim.scm.h:7 +msgid "Wrap" +msgstr "Sarma" + +#: ../plug-ins/script-fu/scripts/ripply-anim.scm.h:8 +msgid "_Rippling..." +msgstr "_Dalgalanma..." + +#: ../plug-ins/script-fu/scripts/round-corners.scm.h:1 +msgid "Add background" +msgstr "Artalan ekle" + +#: ../plug-ins/script-fu/scripts/round-corners.scm.h:2 +msgid "Add drop-shadow" +msgstr "Kabartı gölgesi ekle" + +#: ../plug-ins/script-fu/scripts/round-corners.scm.h:4 +msgid "Edge radius" +msgstr "Kenar yarıçapı" + +#: ../plug-ins/script-fu/scripts/round-corners.scm.h:5 +msgid "" +"Round the corners of an image and optionally add a drop-shadow and background" +msgstr "" +"Bir imgenin köşelerini yuvarla, ve seçmeli olarak düşük gölge ve artalan ekle" + +#: ../plug-ins/script-fu/scripts/round-corners.scm.h:9 +msgid "_Round Corners..." +msgstr "Köşeleri _Yuvarla..." + +#: ../plug-ins/script-fu/scripts/script-fu-set-cmap.scm.h:1 +msgid "Change the colormap of an image to the colors in a specified palette." +msgstr "Resmin renk haritasını geçerli palet renklerine cevir." + +#: ../plug-ins/script-fu/scripts/script-fu-set-cmap.scm.h:2 +msgid "Palette" +msgstr "Palet" + +#: ../plug-ins/script-fu/scripts/script-fu-set-cmap.scm.h:3 +msgid "Se_t Colormap..." +msgstr "Renk Haritasını _Belirle..." + +#: ../plug-ins/script-fu/scripts/select-to-brush.scm.h:2 +msgid "Convert a selection to a brush" +msgstr "Seçimi fırçaya çevir" + +#: ../plug-ins/script-fu/scripts/select-to-brush.scm.h:5 +msgid "To _Brush..." +msgstr "_Fırçaya..." + +#: ../plug-ins/script-fu/scripts/select-to-image.scm.h:1 +msgid "Convert a selection to an image" +msgstr "Seçimi imgeye çevir" + +#: ../plug-ins/script-fu/scripts/select-to-image.scm.h:2 +msgid "To _Image" +msgstr "_Görüntüye" + +#: ../plug-ins/script-fu/scripts/select-to-pattern.scm.h:1 +msgid "Convert a selection to a pattern" +msgstr "Seçimi örüntüye çevir" + +#: ../plug-ins/script-fu/scripts/select-to-pattern.scm.h:4 +msgid "To _Pattern..." +msgstr "_Örüntüye" + +#: ../plug-ins/script-fu/scripts/selection-round.scm.h:1 +msgid "Concave" +msgstr "İç bükey" + +#: ../plug-ins/script-fu/scripts/selection-round.scm.h:3 +#, no-c-format +msgid "Radius (%)" +msgstr "Yarıçap (%)" + +#: ../plug-ins/script-fu/scripts/selection-round.scm.h:4 +msgid "Round the corners of the current selection" +msgstr "Şu anki seçimin köşelerini yuvarla" + +#: ../plug-ins/script-fu/scripts/selection-round.scm.h:5 +msgid "Rounded R_ectangle..." +msgstr "Yuvarlanmış D_ikdörtgen..." + +#: ../plug-ins/script-fu/scripts/slide.scm.h:1 +msgid "Add a slide-film like frame, sprocket holes, and labels to an image" +msgstr "Resme, çerçeve, dişli halkası ve etiketler gibi kaygan film ekle" + +#: ../plug-ins/script-fu/scripts/slide.scm.h:3 +msgid "Font color" +msgstr "Yazıyüzü rengi" + +#: ../plug-ins/script-fu/scripts/slide.scm.h:4 +msgid "Number" +msgstr "Sayı" + +#: ../plug-ins/script-fu/scripts/slide.scm.h:7 +msgid "_Slide..." +msgstr "_Kaydır..." + +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:5 +msgid "Create a State Of The Art chromed logo" +msgstr "Krom sanatı logosu oluştur." + +#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:10 +msgid "SOTA Chrome..." +msgstr "SOTA krom" + +#: ../plug-ins/script-fu/scripts/speed-text.scm.h:2 +msgid "Create a logo with a speedy text effect" +msgstr "Hızlı metin etkisi ile bir logo oluştur" + +#: ../plug-ins/script-fu/scripts/speed-text.scm.h:7 +msgid "Speed Text..." +msgstr "Hızlı Metin..." + +#: ../plug-ins/script-fu/scripts/spinning-globe.scm.h:1 +msgid "" +"Create an animation by mapping the current image onto a spinning sphere" +msgstr "Şu anki resmi dönen bir küreye uyarlayarak, bir canlandırma oluştur" + +#: ../plug-ins/script-fu/scripts/spinning-globe.scm.h:2 +msgid "Frames" +msgstr "Kare Sayısı" + +#: ../plug-ins/script-fu/scripts/spinning-globe.scm.h:3 +msgid "Index to n colors (0 = remain RGB)" +msgstr "n Renklerine içerik ( 0 = RGB kalan)" + +#: ../plug-ins/script-fu/scripts/spinning-globe.scm.h:5 +msgid "Turn from left to right" +msgstr "Soldan sağa dön" + +#: ../plug-ins/script-fu/scripts/spinning-globe.scm.h:7 +msgid "_Spinning Globe..." +msgstr "_Dönen Küre..." + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:1 +msgid "" +"Add Spirographs, Epitrochoids, and Lissajous Curves to the current layer" +msgstr "" +"Geçerli katmana Spirografiler, Epitrokoidler ve Lissajous Eğrileri ekle" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:2 +msgid "Airbrush" +msgstr "Sprey" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:3 +msgid "Brush" +msgstr "Fırça" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:4 +msgid "Circle" +msgstr "Çember" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:6 +msgid "Color method" +msgstr "Renk yöntemi" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:7 +msgid "Epitrochoid" +msgstr "Epitrokoit" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:8 +msgid "Frame" +msgstr "Çerçeve" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:10 +msgid "Gradient: Loop Sawtooth" +msgstr "Renk Geçişi: Testere Dişi Dönüşlü" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:11 +msgid "Gradient: Loop Triangle" +msgstr "Renk Geçişi: Üçgen Dönüşlü" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:12 +msgid "Hexagon" +msgstr "Altıgen" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:13 +msgid "Hole ratio" +msgstr "Boşluk oranı" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:14 +msgid "Inner teeth" +msgstr "İç dişler" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:15 +msgid "Lissajous" +msgstr "Lissajous" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:16 +msgid "Margin (pixels)" +msgstr "Kenar (benek)" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:17 +msgid "Outer teeth" +msgstr "Dış dişler" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:18 +msgid "Pencil" +msgstr "Kalem" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:19 +msgid "Pentagon" +msgstr "Beşgen" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:20 +msgid "Polygon: 10 sides" +msgstr "Çokgen: 10 köşeli" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:21 +msgid "Polygon: 7 sides" +msgstr "Çokgen: 7 köşeli" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:22 +msgid "Polygon: 8 sides" +msgstr "Çokgen: 8 köşeli" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:23 +msgid "Polygon: 9 sides" +msgstr "Çokgen: 9 köşeli" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:24 +msgid "Rendering Spyro" +msgstr "Spyro İşleme" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:25 +msgid "Shape" +msgstr "Şekil" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:26 +msgid "Solid Color" +msgstr "Düz Renk" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:27 +msgid "Spyrograph" +msgstr "Spirograf" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:28 +msgid "Square" +msgstr "Kare" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:29 +#: ../plug-ins/script-fu/scripts/text-circle.scm.h:7 +msgid "Start angle" +msgstr "Başlangıç açısı" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:30 +msgid "Tool" +msgstr "Araç" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:31 +msgid "Triangle" +msgstr "Üçgen" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:32 +msgid "Type" +msgstr "Tür" + +#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:33 +msgid "_Spyrogimp..." +msgstr "_Spyrogimp..." + +#: ../plug-ins/script-fu/scripts/starscape-logo.scm.h:1 +msgid "Create a logo using a rock-like texture, a nova glow, and shadow" +msgstr "" +"Kaya gibi bir doku, yıldız parlaklığı ve gölgelendirme kullanarak bir logo " +"oluşturun" + +#: ../plug-ins/script-fu/scripts/starscape-logo.scm.h:5 +msgid "Sta_rscape..." +msgstr "Yıl_dızalanı..." + +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:4 +msgid "Create an image filled with a swirled tile effect" +msgstr "Karo girdap etkisi ile doldurulmuş bir görüntü oluştur" + +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:9 +msgid "Swirl-_Tile..." +msgstr "Karo-_Girdap..." + +#: ../plug-ins/script-fu/scripts/swirltile.scm.h:10 +msgid "Whirl amount" +msgstr "Döndürme miktarı" + +#: ../plug-ins/script-fu/scripts/swirly-pattern.scm.h:1 +msgid "Create an image filled with a swirly pattern" +msgstr "Girdaplı model ile doldurulmuş bir görüntü oluştur" + +#: ../plug-ins/script-fu/scripts/swirly-pattern.scm.h:2 +msgid "Number of times to whirl" +msgstr "Döndürme sayısı" + +#: ../plug-ins/script-fu/scripts/swirly-pattern.scm.h:3 +msgid "Quarter size" +msgstr "Çeyrek boyut" + +#: ../plug-ins/script-fu/scripts/swirly-pattern.scm.h:4 +msgid "Whirl angle" +msgstr "Döndürme açısı" + +#: ../plug-ins/script-fu/scripts/swirly-pattern.scm.h:5 +msgid "_Swirly..." +msgstr "_Girdap..." + +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:1 +msgid "Add a Trace of Particles effect to the selected region (or alpha)" +msgstr "Seçili bölgeye (ya da görünüre) Parçacık İzi etkisi ekle" + +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:3 +msgid "Base color" +msgstr "Temel renk" + +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:5 +msgid "Create a logo using a Trace Of Particles effect" +msgstr "Parçacık İzi etkisi kullanarak bir logo oluştur" + +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:6 +msgid "Edge only" +msgstr "Yalnız kıyı" + +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:7 +msgid "Edge width" +msgstr "Kıyı genişliği" + +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:10 +msgid "Hit rate" +msgstr "Vurma oranı" + +#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:12 +msgid "_Particle Trace..." +msgstr "_Parçacık İzi..." + +#: ../plug-ins/script-fu/scripts/text-circle.scm.h:1 +msgid "Antialias" +msgstr "Örtüşmeönleyici" + +#: ../plug-ins/script-fu/scripts/text-circle.scm.h:2 +msgid "" +"Create a logo by rendering the specified text along the perimeter of a circle" +msgstr "Bir çember çevresi boyunca belirlenen metini tarayarak logo oluştur" + +#: ../plug-ins/script-fu/scripts/text-circle.scm.h:3 +msgid "Fill angle" +msgstr "Doldurma açısı" + +#: ../plug-ins/script-fu/scripts/text-circle.scm.h:9 +msgid "Text C_ircle..." +msgstr "Metin Çe_mberi..." + +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:3 +msgid "" +"Create a textured logo with highlights, shadows, and a mosaic background" +msgstr "Vurgular, gölgeler ve mozaik artalan ile bir dokulu logo oluşturun" + +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:4 +msgid "Ending blend" +msgstr "Kaynaşım sonlandırılıyor" + +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:5 +msgid "" +"Fill the selected region (or alpha) with a texture and add highlights, " +"shadows, and a mosaic background" +msgstr "" +"Seçili bölgeyi (ya da görünürü) bir doku ile doldur ve vurgular, gölgeler ve " +"mozaik artalan ekle" + +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:8 +msgid "Hexagons" +msgstr "Altıgenler" + +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:9 +msgid "Mosaic tile type" +msgstr "Mozaik döşeme türü" + +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:10 +msgid "Octagons" +msgstr "Sekizgenler" + +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:12 +msgid "Squares" +msgstr "Kareler" + +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:13 +msgid "Starting blend" +msgstr "Kaynaşım başlatılıyor" + +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:15 +msgid "Text pattern" +msgstr "Yazı deseni" + +#: ../plug-ins/script-fu/scripts/textured-logo.scm.h:16 +msgid "_Textured..." +msgstr "_Dokulu..." + +#: ../plug-ins/script-fu/scripts/tileblur.scm.h:1 +msgid "Blur horizontally" +msgstr "Yatay bulandır" + +#: ../plug-ins/script-fu/scripts/tileblur.scm.h:2 +msgid "Blur the edges of an image so the result tiles seamlessly" +msgstr "" +"Resmin kesitlerini bulanıklaştır, böylece sonuç kusursuz biçimde döşenir" + +#: ../plug-ins/script-fu/scripts/tileblur.scm.h:3 +msgid "Blur type" +msgstr "Bulanıklık türü" + +#: ../plug-ins/script-fu/scripts/tileblur.scm.h:4 +msgid "Blur vertically" +msgstr "Dikey bulandır" + +#: ../plug-ins/script-fu/scripts/tileblur.scm.h:5 +msgid "IIR" +msgstr "IIR" + +#: ../plug-ins/script-fu/scripts/tileblur.scm.h:6 +msgid "RLE" +msgstr "RLE" + +#: ../plug-ins/script-fu/scripts/tileblur.scm.h:8 +msgid "_Tileable Blur..." +msgstr "_Döşenebilir Bulanıklaştırma..." + +#: ../plug-ins/script-fu/scripts/title-header.scm.h:1 +msgid "Create a decorative web title header" +msgstr "Süslü bir web başlığı oluştur" + +#: ../plug-ins/script-fu/scripts/title-header.scm.h:6 +msgid "Web Title Header..." +msgstr "Web Başlığı..." + +#: ../plug-ins/script-fu/scripts/truchet.scm.h:3 +msgid "Create an image filled with a Truchet pattern" +msgstr "Truchet deseni ile doldurulmuş bir resim oluştur" + +#: ../plug-ins/script-fu/scripts/truchet.scm.h:4 +msgid "Foreground color" +msgstr "Önalan rengi" + +#: ../plug-ins/script-fu/scripts/truchet.scm.h:7 +msgid "T_ruchet..." +msgstr "T_ruchet..." + +#: ../plug-ins/script-fu/scripts/unsharp-mask.scm.h:1 +msgid "Mask opacity" +msgstr "Maske matlığı" + +#: ../plug-ins/script-fu/scripts/unsharp-mask.scm.h:2 +msgid "Mask size" +msgstr "Maske boyutu" + +#: ../plug-ins/script-fu/scripts/waves-anim.scm.h:1 +msgid "Amplitude" +msgstr "Boyut" + +#: ../plug-ins/script-fu/scripts/waves-anim.scm.h:2 +msgid "" +"Create a multi-layer image with an effect like a stone was thrown into the " +"current image" +msgstr "" +"Geçerli görüntüye taş fırlatılmasına benzer bir etki vererek çoklu katman " +"görüntüsü oluştur" + +#: ../plug-ins/script-fu/scripts/waves-anim.scm.h:3 +msgid "Invert direction" +msgstr "Yönü Tersine Çevir" + +#: ../plug-ins/script-fu/scripts/waves-anim.scm.h:5 +msgid "Wavelength" +msgstr "Dalgaboyu" + +#: ../plug-ins/script-fu/scripts/waves-anim.scm.h:6 +msgid "_Waves..." +msgstr "_Dalgalar..." + +#: ../plug-ins/script-fu/scripts/weave.scm.h:1 +msgid "" +"Create a new layer filled with a weave effect to be used as an overlay or " +"bump map" +msgstr "Yeni bir katman oluşturarak resme hasır etkisi verir" + +#: ../plug-ins/script-fu/scripts/weave.scm.h:2 +msgid "Ribbon spacing" +msgstr "Şerit aralığı" + +#: ../plug-ins/script-fu/scripts/weave.scm.h:3 +msgid "Ribbon width" +msgstr "Şerit genişliği" + +#: ../plug-ins/script-fu/scripts/weave.scm.h:4 +msgid "Shadow darkness" +msgstr "Gölge koyuluğu" + +#: ../plug-ins/script-fu/scripts/weave.scm.h:5 +msgid "Shadow depth" +msgstr "Gölge derinliği" + +#: ../plug-ins/script-fu/scripts/weave.scm.h:6 +msgid "Thread density" +msgstr "İşçik yoğunluğu" + +#: ../plug-ins/script-fu/scripts/weave.scm.h:7 +msgid "Thread intensity" +msgstr "Parçacık yoğunluğu" + +#: ../plug-ins/script-fu/scripts/weave.scm.h:8 +msgid "Thread length" +msgstr "İşçik uzunluğu" + +#: ../plug-ins/script-fu/scripts/weave.scm.h:9 +msgid "_Weave..." +msgstr "_Hasır..." + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:1 +msgid "Bookmark to the GIMP web site" +msgstr "GIMP web sitesinin yer imine ekleyin" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:2 +msgid "Bookmark to the user manual" +msgstr "Kullanıcı kılavuzunun yer imine ekleyin" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:3 +msgid "Create and Use _Selections" +msgstr "_Seçimleri Oluştur ve Kullan" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:4 +msgid "Create, Open and Save _Files" +msgstr "_Dosyaları Oluştur, Aç ve Kaydet" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:5 +msgid "Drawing _Simple Objects" +msgstr "_Yalın Nesne Çizimi" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:6 +msgid "How to Use _Dialogs" +msgstr "Nasıl Kullanılır _İletişim Kutuları" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:7 +msgid "Plug-in _Registry" +msgstr "Eklenti _Kayıt Defteri" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:8 +msgid "Using _Paths" +msgstr "_Yolları Kullanma" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:9 +msgid "_Basic Concepts" +msgstr "_Temel Kavramlar" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:10 +msgid "_Developer Web Site" +msgstr "_Geliştirici Web Sayfası" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:11 +msgid "_Main Web Site" +msgstr "_Ana Web Sayfası" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:12 +msgid "_Preparing your Images for the Web" +msgstr "Web için kendi İmgelerinizi _Hazırlama" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:13 +msgid "_User Manual Web Site" +msgstr "_Kullanıcı Kılavuzu Web Sayfası" + +#: ../plug-ins/script-fu/scripts/web-browser.scm.h:14 +msgid "_Working with Digital Camera Photos" +msgstr "Dijital Kamera Görüntüleri ile _çalışıyor" + +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:1 +msgid "Add a subtle translucent 3D effect to the selected region (or alpha)" +msgstr "Seçili bölgeye (ya da görünüre) 3 boyutlu cam etkisi ekle" + +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:2 +msgid "Drop shadow X offset" +msgstr "Gölgenin X konumu" + +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:3 +msgid "Drop shadow Y offset" +msgstr "Gölgenin Y konumu" + +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:4 +msgid "Drop shadow blur radius" +msgstr "Gölgenin bulanıklık yarıçapı" + +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:5 +msgid "Drop shadow color" +msgstr "Gölge rengi" + +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:6 +msgid "Drop shadow opacity" +msgstr "Gölge matlığı" + +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:7 +msgid "Highlight X offset" +msgstr "X konumunu aydınlat" + +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:8 +msgid "Highlight Y offset" +msgstr "Y konumunu aydınlat" + +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:10 +msgid "Highlight opacity" +msgstr "Aydınlatma şiddeti" + +#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:12 +msgid "_Xach-Effect..." +msgstr "_Cam Etkisi" diff --git a/multimedia/graphics/gimp/gimp/files/po_gimp20-tr.po b/multimedia/graphics/gimp/gimp/files/po_gimp20-tr.po new file mode 100644 index 0000000000..7764af110a --- /dev/null +++ b/multimedia/graphics/gimp/gimp/files/po_gimp20-tr.po @@ -0,0 +1,12875 @@ +# Turkish translation of GIMP. +# Copyright (C) 2001,2003, 2004 Free Software Foundation, Inc. +# Fatih Demir , 2001. +# Ömer Fadıl USTA , 2001. +# Alper Ersoy , 2001. +# Görkem Çetin , 2003, 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: gimp.gimp-2-0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-06-08 19:59+0000\n" +"PO-Revision-Date: 2011-01-22 14:58+0000\n" +"Last-Translator: Görkem Çetin \n" +"Language-Team: Türkçe \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Launchpad-Export-Date: 2011-08-09 06:12+0000\n" +"X-Generator: Launchpad (build 13628)\n" + +#: ../app/about.h:24 +msgid "GIMP" +msgstr "GIMP" + +#: ../app/about.h:27 +msgid "GNU Image Manipulation Program" +msgstr "GNU Resim Düzenleme Programı" + +#: ../app/about.h:30 +msgid "" +"Copyright © 1995-2008\n" +"Spencer Kimball, Peter Mattis and the GIMP Development Team" +msgstr "" +"Telif Hakkı © 1995-2008\n" +"Spencer Kimball, Peter Mattis ve the GIMP Geliştirme Takımı" + +#: ../app/about.h:34 +msgid "" +"GIMP is free software; you can redistribute it and/or modify it under the " +"terms of the GNU General Public License as published by the Free Software " +"Foundation; either version 2 of the License, or (at your option) any later " +"version.\n" +"\n" +"GIMP is distributed in the hope that it will be useful, but WITHOUT ANY " +"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS " +"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more " +"details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"GIMP; if not, write to the Free Software Foundation, Inc., 59 Temple Place - " +"Suite 330, Boston, MA 02111-1307, USA." +msgstr "" +"GIMP özgür bir yazılımdır, Özgür Yazılım Vakfı'nın yayınladığı GNU Genel " +"Kamu Lisansı'nın 2. veya daha sonraki sürümlerindeki şartlar altında " +"dağıtılabilir ve/veya değiştirilebilir. \n" +"\n" +"GIMP faydalı olacağı umut edilerek dağıtılmaktadır, fakat HİÇBİR GARANTİSİ " +"YOKTUR; hatta ÜRÜN DEĞERİ ya da BİR AMACA UYGUNLUK gibi garantiler de " +"vermez. Lütfen daha fazla ayrıntı için GNU Genel Kamu Lisansı'nı inceleyin. " +"\n" +"\n" +"GIMP ile beraber GNU Genel Kamu Lisansını da almış olmalısınız; eğer " +"almadıysanız, Free Software Foundation, Inc., 59 Temple Place - Suite 330, " +"Boston, MA 02111-1307, USA adresine yazınız." + +#: ../app/app.c:214 +#, c-format +msgid "" +"Unable to open a test swap file.\n" +"\n" +"To avoid data loss, please check the location and permissions of the swap " +"directory defined in your Preferences (currently \"%s\")." +msgstr "" +"Bir deneme takas dosyası açılamadı.\n" +"\n" +"Veri kaybından kaçınmak için, takas dosyasının yerini ve izinlerini " +"Tercihler içinde kontrol edin (güncel olan \"%s\")." + +#: ../app/batch.c:75 +#, c-format +msgid "No batch interpreter specified, using the default '%s'.\n" +msgstr "Belirlenmiş toplu yorumlayıcı yok, öntanımlı '%s' kullanılıyor.\n" + +#: ../app/batch.c:93 ../app/batch.c:111 +#, c-format +msgid "The batch interpreter '%s' is not available. Batch mode disabled." +msgstr "Toplu yorumlayıcı '%s' kullanılır değil. Toplu kip etkin değil." + +#: ../app/main.c:144 ../tools/gimp-remote.c:60 +msgid "Show version information and exit" +msgstr "Sürüm bilgisini göster ve çık" + +#: ../app/main.c:149 +msgid "Show license information and exit" +msgstr "Lisans bilgisini göster ve çık" + +#: ../app/main.c:154 +msgid "Be more verbose" +msgstr "Daha çok bilgi ver" + +#: ../app/main.c:159 +msgid "Start a new GIMP instance" +msgstr "Yeni bir GIMP örneği başlat" + +#: ../app/main.c:164 +msgid "Open images as new" +msgstr "Görüntüleri yeni olarak aç" + +#: ../app/main.c:169 +msgid "Run without a user interface" +msgstr "Bir kullanıcı arabirimi olmadan çalıştır" + +#: ../app/main.c:174 +msgid "Do not load brushes, gradients, patterns, ..." +msgstr "Fırçaları, renk geçişlerini, desenleri, ... yükleme." + +#: ../app/main.c:179 +msgid "Do not load any fonts" +msgstr "Herhangi bir yazıyüzünü yükleme" + +#: ../app/main.c:184 +msgid "Do not show a startup window" +msgstr "Açılış penceresini gösterme." + +#: ../app/main.c:189 +msgid "Do not use shared memory between GIMP and plugins" +msgstr "GIMP ve eklentiler arasında paylaşımlı bellek kullanma" + +#: ../app/main.c:194 +msgid "Do not use special CPU acceleration functions" +msgstr "Özel işlemci hızlandırma işlevleri kullanma" + +#: ../app/main.c:199 +msgid "Use an alternate sessionrc file" +msgstr "Başka bir sessionrc dosyası kullan" + +#: ../app/main.c:204 +msgid "Use an alternate user gimprc file" +msgstr "Başka bir kullanıcının gimprc dosyasını kullan" + +#: ../app/main.c:209 +msgid "Use an alternate system gimprc file" +msgstr "Başka bir sistem gimprc dosyası kullan" + +#: ../app/main.c:214 +msgid "Batch command to run (can be used multiple times)" +msgstr "Çalıştırılacak toplu komut (birçok defa kullanılabilir)" + +#: ../app/main.c:219 +msgid "The procedure to process batch commands with" +msgstr "Çoklu komutlar sürecinin yordamı, şunlarla:" + +#: ../app/main.c:224 +msgid "Send messages to console instead of using a dialog" +msgstr "İletişim kutusu kullanmak yerine iletileri uçbirime gönder" + +#. don't translate the mode names (off|on|warn) +#: ../app/main.c:230 +msgid "PDB compatibility mode (off|on|warn)" +msgstr "PDB uyumluluk kipi (off|on|warn)" + +#. don't translate the mode names (never|query|always) +#: ../app/main.c:236 +msgid "Debug in case of a crash (never|query|always)" +msgstr "Çökme durumunda yanlış ayıkla (never|query|always)" + +#: ../app/main.c:241 +msgid "Enable non-fatal debugging signal handlers" +msgstr "Ölümcül olmayan yanlış ayıklama imi işleyicilerini etkinleştir" + +#: ../app/main.c:246 +msgid "Make all warnings fatal" +msgstr "Bütün uyarıları ölümcül yap" + +#: ../app/main.c:251 +msgid "Output a gimprc file with default settings" +msgstr "Çıktı, varsayılan ayarlarla birlikte gelen bir gimprc dosyasıdır." + +#: ../app/main.c:355 +msgid "[FILE|URI...]" +msgstr "[DOSYA|ADRES...]" + +#: ../app/main.c:373 +msgid "" +"GIMP could not initialize the graphical user interface.\n" +"Make sure a proper setup for your display environment exists." +msgstr "" +"GIMP, grafiksel kullanıcı arabirimini başlatamadı.\n" +"Görüntüleme ortamınız için uygun bir kurulumun var olduğundan emin olun." + +#: ../app/main.c:392 +msgid "Another GIMP instance is already running." +msgstr "Başka bir GIMP zaten çalışıyor." + +#: ../app/main.c:462 +msgid "GIMP output. Type any character to close this window." +msgstr "" +"GIMP çıktısı. Bu pencereyi kapatmak için herhangi bir karakter girin." + +#: ../app/main.c:463 +#, c-format +msgid "(Type any character to close this window)\n" +msgstr "(Bu pencereyi kapatmak için herhangi bir karakter girin)\n" + +#: ../app/main.c:480 +msgid "GIMP output. You can minimize this window, but don't close it." +msgstr "GIMP çıktısı. Bu pencereyi küçültebilirsiniz, fakat kapatmayın." + +#: ../app/sanity.c:365 +#, c-format +msgid "" +"The configured filename encoding cannot be converted to UTF-8: %s\n" +"\n" +"Please check the value of the environment variable G_FILENAME_ENCODING." +msgstr "" +"Yapılandırılmış dosya adı kodlaması UTF-8'e dönüştürülemedi: %s\n" +"\n" +"Lütfen ortam değişkeninin değerini denetleyin, G_FILENAME_ENCODING." + +#: ../app/sanity.c:384 +#, c-format +msgid "" +"The name of the directory holding the GIMP user configuration cannot be " +"converted to UTF-8: %s\n" +"\n" +"Your filesystem probably stores files in an encoding other than UTF-8 and " +"you didn't tell GLib about this. Please set the environment variable " +"G_FILENAME_ENCODING." +msgstr "" +"GIMP kullanıcı yapılandırmalarını içeren dizinin adı UTF-8 'e " +"dönüştürülememiş: %s Dosya sisteminiz muhtemelen UTF-8 den başka bir biçimde " +"dosyalar içeriyor ve Glib bundan habersiz. Lütfen G_FILENAME_ENCODING " +"çevresel değişkenini ayarlarınız." + +#. show versions of libraries used by GIMP +#: ../app/version.c:64 +#, c-format +msgid "using %s version %s (compiled against version %s)" +msgstr "%s kullanılıyor, sürüm %s (%s sürümüne karşı derlendi)" + +#: ../app/version.c:127 ../tools/gimp-remote.c:95 +#, c-format +msgid "%s version %s" +msgstr "%s sürüm %s" + +#: ../app/actions/actions.c:101 ../app/actions/dialogs-actions.c:123 +#: ../app/dialogs/dialogs.c:224 ../app/widgets/gimpbrusheditor.c:90 +msgid "Brush Editor" +msgstr "Fırça Düzenleyici" + +#. initialize the list of gimp brushes +#: ../app/actions/actions.c:104 ../app/core/gimp.c:838 +#: ../app/dialogs/dialogs.c:157 ../app/dialogs/preferences-dialog.c:2744 +msgid "Brushes" +msgstr "Fırçalar" + +#: ../app/actions/actions.c:107 ../app/dialogs/dialogs.c:169 +msgid "Buffers" +msgstr "Tamponlar" + +#: ../app/actions/actions.c:110 ../app/dialogs/dialogs.c:182 +msgid "Channels" +msgstr "Kanallar" + +#: ../app/actions/actions.c:113 ../app/dialogs/convert-dialog.c:174 +#: ../app/dialogs/dialogs.c:190 +msgid "Colormap" +msgstr "Renk haritası" + +#: ../app/actions/actions.c:116 +msgid "Configuration" +msgstr "Yapılandırma" + +#: ../app/actions/actions.c:119 +msgid "Context" +msgstr "Bağlam" + +#: ../app/actions/actions.c:122 ../app/dialogs/dialogs.c:150 +msgid "Pointer Information" +msgstr "İşaretçi Bilgisi" + +#: ../app/actions/actions.c:125 +msgid "Debug" +msgstr "Hata Ayıklama" + +#: ../app/actions/actions.c:128 +msgid "Dialogs" +msgstr "Pencereler" + +#: ../app/actions/actions.c:131 +msgid "Dock" +msgstr "Rıhtım" + +#: ../app/actions/actions.c:134 +msgid "Dockable" +msgstr "Gömülebilir" + +#. Document History +#: ../app/actions/actions.c:137 ../app/dialogs/dialogs.c:171 +#: ../app/dialogs/preferences-dialog.c:1595 +msgid "Document History" +msgstr "Belge Geçmişi" + +#: ../app/actions/actions.c:140 +msgid "Drawable" +msgstr "Çizilebilir" + +#: ../app/actions/actions.c:143 ../app/tools/tools-enums.c:300 +msgid "Edit" +msgstr "Düzenle" + +#: ../app/actions/actions.c:146 ../app/dialogs/dialogs.c:146 +msgid "Error Console" +msgstr "Hata Konsolu" + +#: ../app/actions/actions.c:149 +msgid "File" +msgstr "Dosya" + +#: ../app/actions/actions.c:152 ../app/dialogs/dialogs.c:165 +#: ../app/dialogs/preferences-dialog.c:2760 +msgid "Fonts" +msgstr "Yazıtipleri" + +#: ../app/actions/actions.c:155 ../app/actions/dialogs-actions.c:141 +#: ../app/dialogs/dialogs.c:228 ../app/widgets/gimpgradienteditor.c:276 +msgid "Gradient Editor" +msgstr "Gradyan Düzenleyici" + +#. initialize the list of gimp gradients +#: ../app/actions/actions.c:158 ../app/core/gimp.c:850 +#: ../app/dialogs/dialogs.c:161 ../app/dialogs/preferences-dialog.c:2756 +msgid "Gradients" +msgstr "Gradyanlar" + +#: ../app/actions/actions.c:161 +msgid "Help" +msgstr "Yardım" + +#: ../app/actions/actions.c:164 ../app/core/core-enums.c:212 +#: ../app/tools/tools-enums.c:242 +msgid "Image" +msgstr "Resim" + +#. list & grid views +#: ../app/actions/actions.c:167 ../app/dialogs/dialogs.c:155 +msgid "Images" +msgstr "Resimler" + +#: ../app/actions/actions.c:170 ../app/dialogs/dialogs.c:178 +#: ../app/dialogs/resize-dialog.c:286 +msgid "Layers" +msgstr "Katmanlar" + +#: ../app/actions/actions.c:173 ../app/actions/dialogs-actions.c:153 +#: ../app/dialogs/dialogs.c:232 ../app/widgets/gimppaletteeditor.c:155 +msgid "Palette Editor" +msgstr "Palet Düzenleyici" + +#. initialize the list of gimp palettes +#: ../app/actions/actions.c:176 ../app/core/gimp.c:846 +#: ../app/dialogs/dialogs.c:163 ../app/dialogs/preferences-dialog.c:2752 +msgid "Palettes" +msgstr "Paletler" + +#. initialize the list of gimp patterns +#: ../app/actions/actions.c:179 ../app/core/gimp.c:842 +#: ../app/dialogs/dialogs.c:159 ../app/dialogs/preferences-dialog.c:2748 +msgid "Patterns" +msgstr "Desenler" + +#: ../app/actions/actions.c:182 ../app/dialogs/preferences-dialog.c:2764 +msgid "Plug-Ins" +msgstr "Eklentiler" + +#: ../app/actions/actions.c:185 ../app/core/core-enums.c:860 +#: ../app/core/gimpchannel.c:362 +msgid "Quick Mask" +msgstr "Hızlı Maske" + +#: ../app/actions/actions.c:188 ../app/dialogs/dialogs.c:206 +msgid "Sample Points" +msgstr "Örnek Noktalar" + +#: ../app/actions/actions.c:191 +msgid "Select" +msgstr "Seç" + +#. initialize the template list +#: ../app/actions/actions.c:194 ../app/core/gimp.c:859 +#: ../app/dialogs/dialogs.c:173 +msgid "Templates" +msgstr "Şablonlar" + +#: ../app/actions/actions.c:197 +msgid "Text Editor" +msgstr "Metin Düzenleyici" + +#: ../app/actions/actions.c:200 ../app/dialogs/dialogs.c:138 +#: ../app/dialogs/preferences-dialog.c:1880 ../app/gui/gui.c:429 +msgid "Tool Options" +msgstr "Alet Seçenekleri" + +#: ../app/actions/actions.c:203 ../app/dialogs/dialogs.c:167 +msgid "Tools" +msgstr "Araçlar" + +#: ../app/actions/actions.c:206 ../app/dialogs/dialogs.c:186 +#: ../app/tools/gimpvectortool.c:160 +msgid "Paths" +msgstr "Yollar" + +#: ../app/actions/actions.c:209 +msgid "View" +msgstr "Görünüm" + +#: ../app/actions/actions.c:212 +msgid "Windows" +msgstr "Pencereler" + +#: ../app/actions/brush-editor-actions.c:43 +msgid "Brush Editor Menu" +msgstr "Fırça Düzenleyici Menüsü" + +#: ../app/actions/brush-editor-actions.c:50 +msgid "Edit Active Brush" +msgstr "Etkin Fırçayı Düzenle" + +#: ../app/actions/brushes-actions.c:43 +msgid "Brushes Menu" +msgstr "Fırçalar Menüsü" + +#: ../app/actions/brushes-actions.c:47 +msgid "_Open Brush as Image" +msgstr "Fırçayı Görüntü olarak _Aç" + +#: ../app/actions/brushes-actions.c:48 +msgid "Open brush as image" +msgstr "Fırçayı görüntü olarak aç" + +#: ../app/actions/brushes-actions.c:53 +msgid "_New Brush" +msgstr "Y_eni Fırça" + +#: ../app/actions/brushes-actions.c:54 +msgid "New brush" +msgstr "Yeni Fırça" + +#: ../app/actions/brushes-actions.c:59 +msgid "D_uplicate Brush" +msgstr "Fırçayı Ç_oğalt" + +#: ../app/actions/brushes-actions.c:60 +msgid "Duplicate brush" +msgstr "Fırçayı Ç_oğalt" + +#: ../app/actions/brushes-actions.c:65 +msgid "Copy Brush _Location" +msgstr "Fırça _Yerini Kopyala" + +#: ../app/actions/brushes-actions.c:66 +msgid "Copy brush file location to clipboard" +msgstr "Fırça dosyasının yerini panoya kopyala" + +#: ../app/actions/brushes-actions.c:71 +msgid "_Delete Brush" +msgstr "Fı_rçayı Sil" + +#: ../app/actions/brushes-actions.c:72 +msgid "Delete brush" +msgstr "Fırçayı sil" + +#: ../app/actions/brushes-actions.c:77 +msgid "_Refresh Brushes" +msgstr "_Fırçaları Tazele" + +#: ../app/actions/brushes-actions.c:78 +msgid "Refresh brushes" +msgstr "Fırçaları tazele" + +#: ../app/actions/brushes-actions.c:86 +msgid "_Edit Brush..." +msgstr "Fırçayı _Düzenle..." + +#: ../app/actions/brushes-actions.c:87 +msgid "Edit brush" +msgstr "/Fırçayı düzenle" + +#: ../app/actions/buffers-actions.c:42 +msgid "Buffers Menu" +msgstr "Tamponlar Menüsü" + +#: ../app/actions/buffers-actions.c:46 +msgid "_Paste Buffer" +msgstr "_Tamponu Yapıştır" + +#: ../app/actions/buffers-actions.c:47 +msgid "Paste the selected buffer" +msgstr "Seçili tamponu yapıştır" + +#: ../app/actions/buffers-actions.c:52 +msgid "Paste Buffer _Into" +msgstr "Arabelleği _İçine Yapıştır" + +#: ../app/actions/buffers-actions.c:53 +msgid "Paste the selected buffer into the selection" +msgstr "Seçili arabelleği seçimin içine yapıştır" + +#: ../app/actions/buffers-actions.c:58 +msgid "Paste Buffer as _New" +msgstr "Arabelleği _Yeni olarak Yapıştır" + +#: ../app/actions/buffers-actions.c:59 +msgid "Paste the selected buffer as new image" +msgstr "Seçili arabelleği yeni görüntü olarak yapıştır" + +#: ../app/actions/buffers-actions.c:64 +msgid "_Delete Buffer" +msgstr "Arabelleği _Sil" + +#: ../app/actions/buffers-actions.c:65 +msgid "Delete the selected buffer" +msgstr "Seçili arabelleği sil" + +#: ../app/actions/channels-actions.c:44 +msgid "Channels Menu" +msgstr "Kanallar Menüsü" + +#: ../app/actions/channels-actions.c:48 +msgid "_Edit Channel Attributes..." +msgstr "Kanal Öznitel_iklerini Düzenle..." + +#: ../app/actions/channels-actions.c:49 +msgid "Edit the channel's name, color and opacity" +msgstr "Kanal adını, rengini ve ışık geçirmezliğini düzenle" + +#: ../app/actions/channels-actions.c:54 +msgid "_New Channel..." +msgstr "Yeni Ka_nal..." + +#: ../app/actions/channels-actions.c:55 +msgid "Create a new channel" +msgstr "Yeni bir kanal oluştur" + +#: ../app/actions/channels-actions.c:60 +msgid "_New Channel" +msgstr "_Yeni Kanal" + +#: ../app/actions/channels-actions.c:61 +msgid "Create a new channel with last used values" +msgstr "Son kullanılan değerlerle yeni bir kanal oluştur" + +#: ../app/actions/channels-actions.c:66 +msgid "D_uplicate Channel" +msgstr "_Kanalı Çoğalt" + +#: ../app/actions/channels-actions.c:67 +msgid "Create a duplicate of this channel and add it to the image" +msgstr "Bu kanalın bir eşini oluştur ve görüntüye ekle" + +#: ../app/actions/channels-actions.c:72 +msgid "_Delete Channel" +msgstr "Kanalı _Sil" + +#: ../app/actions/channels-actions.c:73 +msgid "Delete this channel" +msgstr "Bu kanalı sil" + +#: ../app/actions/channels-actions.c:78 +msgid "_Raise Channel" +msgstr "Ka_nalı Yükselt" + +#: ../app/actions/channels-actions.c:79 +msgid "Raise this channel one step in the channel stack" +msgstr "Bu kanalı kanal yığınında bir adım yükselt" + +#: ../app/actions/channels-actions.c:84 +msgid "Raise Channel to _Top" +msgstr "K_analı En Tepeye Yükselt" + +#: ../app/actions/channels-actions.c:85 +msgid "Raise this channel to the top of the channel stack" +msgstr "Bu kanalı kanal yığınında en tepeye yükselt" + +#: ../app/actions/channels-actions.c:90 +msgid "_Lower Channel" +msgstr "Kan_alı Alçalt" + +#: ../app/actions/channels-actions.c:91 +msgid "Lower this channel one step in the channel stack" +msgstr "Bu kanalı kanal yığınında bir adım indir" + +#: ../app/actions/channels-actions.c:96 +msgid "Lower Channel to _Bottom" +msgstr "Kanalı _En Alta İndir" + +#: ../app/actions/channels-actions.c:97 +msgid "Lower this channel to the bottom of the channel stack" +msgstr "Bu kanalı kanal yığınının en altına indir" + +#: ../app/actions/channels-actions.c:105 +msgid "Channel to Sele_ction" +msgstr "Kanaldan Seçi_me" + +#: ../app/actions/channels-actions.c:106 +msgid "Replace the selection with this channel" +msgstr "Seçimi bu kanalın yerine koy" + +#: ../app/actions/channels-actions.c:111 ../app/actions/layers-actions.c:266 +#: ../app/actions/vectors-actions.c:173 +msgid "_Add to Selection" +msgstr "Seçime _Ekle" + +#: ../app/actions/channels-actions.c:112 +msgid "Add this channel to the current selection" +msgstr "Mevcut seçime bu kanalı ekle" + +#: ../app/actions/channels-actions.c:117 ../app/actions/layers-actions.c:272 +#: ../app/actions/layers-actions.c:299 ../app/actions/layers-actions.c:326 +#: ../app/actions/vectors-actions.c:179 +msgid "_Subtract from Selection" +msgstr "Seçimden Çık_ar" + +#: ../app/actions/channels-actions.c:118 +msgid "Subtract this channel from the current selection" +msgstr "Mevcut seçimden bu kanalı çıkar" + +#: ../app/actions/channels-actions.c:123 ../app/actions/layers-actions.c:278 +#: ../app/actions/layers-actions.c:305 ../app/actions/layers-actions.c:332 +#: ../app/actions/vectors-actions.c:185 +msgid "_Intersect with Selection" +msgstr "Seçimle Ke_siştir" + +#: ../app/actions/channels-actions.c:124 +msgid "Intersect this channel with the current selection" +msgstr "Mevcut seçimle bu kanalı kesiştir" + +#: ../app/actions/channels-commands.c:85 +#: ../app/actions/channels-commands.c:393 +msgid "Channel Attributes" +msgstr "Kanal Öznitelikleri" + +#: ../app/actions/channels-commands.c:88 +msgid "Edit Channel Attributes" +msgstr "Kanal Özniteliklerini Düzenle" + +#: ../app/actions/channels-commands.c:90 +msgid "Edit Channel Color" +msgstr "Kanal Rengini Düzenle" + +#: ../app/actions/channels-commands.c:91 +#: ../app/actions/channels-commands.c:123 +msgid "_Fill opacity:" +msgstr "Işık geçirmezliği _doldur:" + +#: ../app/actions/channels-commands.c:116 +#: ../app/actions/channels-commands.c:117 +#: ../app/actions/channels-commands.c:159 +#: ../app/actions/channels-commands.c:163 +#: ../app/widgets/gimpchanneltreeview.c:316 +msgid "New Channel" +msgstr "Yeni Kanal" + +#: ../app/actions/channels-commands.c:120 +msgid "New Channel Options" +msgstr "Yeni Kanal Seçenekleri" + +#: ../app/actions/channels-commands.c:122 +msgid "New Channel Color" +msgstr "Yeni Kanal Rengi" + +#: ../app/actions/channels-commands.c:243 +#: ../app/display/gimpdisplayshell-dnd.c:584 +#: ../app/widgets/gimpchanneltreeview.c:249 +#: ../app/widgets/gimplayertreeview.c:773 ../app/widgets/gimptoolbox-dnd.c:313 +#, c-format +msgid "%s Channel Copy" +msgstr "%s Kanal Kopyası" + +#: ../app/actions/channels-commands.c:307 ../app/core/gimpselection.c:549 +#: ../app/pdb/selection-cmds.c:454 ../app/pdb/selection-cmds.c:521 +msgid "Channel to Selection" +msgstr "Kanaldan Seçime" + +#: ../app/actions/colormap-actions.c:44 +msgid "Colormap Menu" +msgstr "Renk Haritası Menüsü" + +#: ../app/actions/colormap-actions.c:48 +#: ../app/actions/palette-editor-actions.c:48 +msgid "_Edit Color..." +msgstr "_Renk Düzenle..." + +#: ../app/actions/colormap-actions.c:49 +#: ../app/actions/palette-editor-actions.c:49 +msgid "Edit color" +msgstr "Rengi düzenle" + +#: ../app/actions/colormap-actions.c:57 +msgid "_Add Color from FG" +msgstr "_Önplandan Renk Ekle" + +#: ../app/actions/colormap-actions.c:58 +msgid "Add current foreground color" +msgstr "Mevcut önalan rengini ekle" + +#: ../app/actions/colormap-actions.c:63 +msgid "_Add Color from BG" +msgstr "_Arkaplandan Renk Ekle" + +#: ../app/actions/colormap-actions.c:64 +msgid "Add current background color" +msgstr "Mevcut artalan rengini ekle" + +#: ../app/actions/colormap-commands.c:73 +#, c-format +msgid "Edit colormap entry #%d" +msgstr "%d palet girdi rengini düzenle" + +#: ../app/actions/colormap-commands.c:80 +msgid "Edit Colormap Entry" +msgstr "Palet Girdi Rengini Düzenle" + +#: ../app/actions/config-actions.c:39 +msgid "Use _GEGL" +msgstr "_GEGL kullan" + +#: ../app/actions/config-actions.c:40 +msgid "If possible, use GEGL for image processing" +msgstr "Eğer mümkünse, görüntü işlemlerinde GEGL kullan" + +#: ../app/actions/context-actions.c:46 +msgid "_Context" +msgstr "İçeri_k" + +#: ../app/actions/context-actions.c:47 ../app/actions/image-actions.c:59 +msgid "_Colors" +msgstr "_Renkler" + +#: ../app/actions/context-actions.c:48 ../app/actions/layers-actions.c:58 +msgid "_Opacity" +msgstr "_Saydamsızlık" + +#: ../app/actions/context-actions.c:49 +msgid "Paint _Mode" +msgstr "Boyama _Kipi" + +#: ../app/actions/context-actions.c:50 +msgid "_Tool" +msgstr "_Araç" + +#: ../app/actions/context-actions.c:51 +#: ../app/dialogs/preferences-dialog.c:1940 +msgid "_Brush" +msgstr "_Fırça" + +#: ../app/actions/context-actions.c:52 ../app/actions/plug-in-actions.c:99 +#: ../app/dialogs/preferences-dialog.c:1943 +msgid "_Pattern" +msgstr "_Desen" + +#: ../app/actions/context-actions.c:53 +msgid "_Palette" +msgstr "_Palet" + +#: ../app/actions/context-actions.c:54 +#: ../app/dialogs/palette-import-dialog.c:216 +#: ../app/dialogs/preferences-dialog.c:1946 +msgid "_Gradient" +msgstr "_Gradyan" + +#: ../app/actions/context-actions.c:55 +msgid "_Font" +msgstr "_Yazıtipi" + +#: ../app/actions/context-actions.c:57 +msgid "_Shape" +msgstr "Ş_ekil" + +#: ../app/actions/context-actions.c:58 +msgid "_Radius" +msgstr "_Yarıçap" + +#: ../app/actions/context-actions.c:59 +msgid "S_pikes" +msgstr "Ar_tışlar" + +#: ../app/actions/context-actions.c:60 +msgid "_Hardness" +msgstr "_Sertlik" + +#: ../app/actions/context-actions.c:61 +msgid "_Aspect" +msgstr "_Görüntü Oranı" + +#: ../app/actions/context-actions.c:62 +msgid "A_ngle" +msgstr "_Açı" + +#: ../app/actions/context-actions.c:65 +msgid "_Default Colors" +msgstr "Öntanımlı _Renkler" + +#: ../app/actions/context-actions.c:66 +msgid "Set foreground color to black, background color to white" +msgstr "Önalan rengini siyah, artalan rengini beyaz olarak ayarla" + +#: ../app/actions/context-actions.c:71 +msgid "S_wap Colors" +msgstr "Renkleri _Değiştir" + +#: ../app/actions/context-actions.c:72 +msgid "Exchange foreground and background colors" +msgstr "Önalan ile artalan renklerini karşılıklı değiştir" + +#: ../app/actions/cursor-info-actions.c:40 +msgid "Pointer Information Menu" +msgstr "İmleç Bilgi Menüsü" + +#: ../app/actions/cursor-info-actions.c:47 +#: ../app/actions/sample-points-actions.c:47 +#: ../app/widgets/gimpcursorview.c:192 +msgid "_Sample Merged" +msgstr "_Örnek Birleştirildi" + +#: ../app/actions/cursor-info-actions.c:48 +#: ../app/actions/sample-points-actions.c:48 +msgid "Sample Merged" +msgstr "Örnek Birleştirildi" + +#: ../app/actions/data-commands.c:107 ../app/actions/documents-commands.c:344 +#: ../app/actions/file-commands.c:184 ../app/dialogs/file-open-dialog.c:229 +#: ../app/dialogs/file-open-dialog.c:273 +#: ../app/dialogs/file-open-location-dialog.c:213 +#: ../app/dialogs/file-open-location-dialog.c:225 +#: ../app/display/gimpdisplayshell-dnd.c:537 +#: ../app/widgets/gimplayertreeview.c:730 ../app/widgets/gimptoolbox-dnd.c:158 +#: ../app/widgets/gimptoolbox.c:981 +#, c-format +msgid "" +"Opening '%s' failed:\n" +"\n" +"%s" +msgstr "" +"%s dosyasını açma işlemi başarısız oldu:\n" +"\n" +"%s" + +#: ../app/actions/data-commands.c:133 +#: ../app/core/gimpbrushgenerated-load.c:125 ../app/core/gimpimage.c:1419 +#: ../app/core/gimppalette-import.c:211 ../app/core/gimppalette-load.c:222 +#: ../app/core/gimppalette.c:333 ../app/dialogs/palette-import-dialog.c:774 +#: ../app/pdb/image-cmds.c:2198 ../app/widgets/gimpdnd-xds.c:92 +msgid "Untitled" +msgstr "İsimsiz" + +#: ../app/actions/data-commands.c:231 +msgid "Delete Object" +msgstr "Nesneyi Sil" + +#: ../app/actions/data-commands.c:254 +#, c-format +msgid "Delete '%s'?" +msgstr "Sil '%s'?" + +#: ../app/actions/data-commands.c:257 +#, c-format +msgid "" +"Are you sure you want to remove '%s' from the list and delete it on disk?" +msgstr "" +"'%s', listeden kaldırmak ve diskten silmek istediğinize emin misiniz?" + +#: ../app/actions/dialogs-actions.c:39 +msgid "Tool _Options" +msgstr "Araç _Seçenekleri" + +#: ../app/actions/dialogs-actions.c:40 +msgid "Open the tool options dialog" +msgstr "Araç seçenekleri kutusunu aç" + +#: ../app/actions/dialogs-actions.c:45 +msgid "_Device Status" +msgstr "_Aygıt Durumu" + +#: ../app/actions/dialogs-actions.c:46 +msgid "Open the device status dialog" +msgstr "Aygıt durumu kutusunu aç" + +#: ../app/actions/dialogs-actions.c:51 +msgid "_Layers" +msgstr "_Katmanlar" + +#: ../app/actions/dialogs-actions.c:52 +msgid "Open the layers dialog" +msgstr "Katmanlar kutusunu aç" + +#: ../app/actions/dialogs-actions.c:57 +msgid "_Channels" +msgstr "_Kanallar" + +#: ../app/actions/dialogs-actions.c:58 +msgid "Open the channels dialog" +msgstr "Kanallar kutusunu aç" + +#: ../app/actions/dialogs-actions.c:63 +msgid "_Paths" +msgstr "_Yollar" + +#: ../app/actions/dialogs-actions.c:64 +msgid "Open the paths dialog" +msgstr "Yollar kutusunu aç" + +#: ../app/actions/dialogs-actions.c:69 +msgid "Color_map" +msgstr "_Renk haritası" + +#: ../app/actions/dialogs-actions.c:70 +msgid "Open the colormap dialog" +msgstr "Renk haritası kutusunu aç" + +#: ../app/actions/dialogs-actions.c:75 +msgid "Histogra_m" +msgstr "_Historgram" + +#: ../app/actions/dialogs-actions.c:76 +msgid "Open the histogram dialog" +msgstr "Histogram kutusunu aç" + +#: ../app/actions/dialogs-actions.c:81 +msgid "_Selection Editor" +msgstr "_Seçim Düzenleyici" + +#: ../app/actions/dialogs-actions.c:82 +msgid "Open the selection editor" +msgstr "Seçim düzenleyiciyi aç" + +#: ../app/actions/dialogs-actions.c:87 +msgid "Na_vigation" +msgstr "_Gezgin" + +#: ../app/actions/dialogs-actions.c:88 +msgid "Open the display navigation dialog" +msgstr "Dolaşma görüntüsü kutusunu aç" + +#: ../app/actions/dialogs-actions.c:93 +msgid "Undo _History" +msgstr "_Geri Alma Geçmişi" + +#: ../app/actions/dialogs-actions.c:94 +msgid "Open the undo history dialog" +msgstr "Geri alma geçmişi kutusunu aç" + +#: ../app/actions/dialogs-actions.c:99 ../app/dialogs/dialogs.c:150 +msgid "Pointer" +msgstr "İmleç" + +#: ../app/actions/dialogs-actions.c:100 +msgid "Open the pointer information dialog" +msgstr "İmleç bilgi kutusunu aç" + +#: ../app/actions/dialogs-actions.c:105 +msgid "_Sample Points" +msgstr "_Örnek Noktalar" + +#: ../app/actions/dialogs-actions.c:106 +msgid "Open the sample points dialog" +msgstr "Örnek noktalar kutusunu aç" + +#: ../app/actions/dialogs-actions.c:111 +msgid "Colo_rs" +msgstr "Renk_ler" + +#: ../app/actions/dialogs-actions.c:112 +msgid "Open the FG/BG color dialog" +msgstr "Önalan/Artalan renk kutusunu aç" + +#: ../app/actions/dialogs-actions.c:117 +msgid "_Brushes" +msgstr "_Fırçalar" + +#: ../app/actions/dialogs-actions.c:118 +msgid "Open the brushes dialog" +msgstr "Fırçalar kutusunu aç" + +#: ../app/actions/dialogs-actions.c:124 +msgid "Open the brush editor" +msgstr "Fırça düzenleyiciyi aç" + +#: ../app/actions/dialogs-actions.c:129 +msgid "P_atterns" +msgstr "_Desenler" + +#: ../app/actions/dialogs-actions.c:130 +msgid "Open the patterns dialog" +msgstr "Desenler kutusunu aç" + +#: ../app/actions/dialogs-actions.c:135 +msgid "_Gradients" +msgstr "_Gradyanlar" + +#: ../app/actions/dialogs-actions.c:136 +msgid "Open the gradients dialog" +msgstr "Renk geçişleri kutusunu aç" + +#: ../app/actions/dialogs-actions.c:142 +msgid "Open the gradient editor" +msgstr "Renk geçişi düzenleyicisini aç" + +#: ../app/actions/dialogs-actions.c:147 +msgid "Pal_ettes" +msgstr "_Paletler" + +#: ../app/actions/dialogs-actions.c:148 +msgid "Open the palettes dialog" +msgstr "Paletler kutusunu aç" + +#: ../app/actions/dialogs-actions.c:154 +msgid "Open the palette editor" +msgstr "Palet düzenleyicisini aç" + +#: ../app/actions/dialogs-actions.c:159 +msgid "_Fonts" +msgstr "_Yazıtipleri" + +#: ../app/actions/dialogs-actions.c:160 +msgid "Open the fonts dialog" +msgstr "Yazıyüzleri kutusunu aç" + +#: ../app/actions/dialogs-actions.c:165 +msgid "B_uffers" +msgstr "_Tamponlar" + +#: ../app/actions/dialogs-actions.c:166 +msgid "Open the named buffers dialog" +msgstr "Adlandırılan arabellekler kutusunu aç" + +#: ../app/actions/dialogs-actions.c:171 +msgid "_Images" +msgstr "_Resimler" + +#: ../app/actions/dialogs-actions.c:172 +msgid "Open the images dialog" +msgstr "Görüntüler kutusunu aç" + +#: ../app/actions/dialogs-actions.c:177 +msgid "Document Histor_y" +msgstr "_Belge Geçmişi" + +#: ../app/actions/dialogs-actions.c:178 +msgid "Open the document history dialog" +msgstr "Belge geçmişi kutusunu aç" + +#: ../app/actions/dialogs-actions.c:183 +msgid "_Templates" +msgstr "Ş_ablonlar" + +#: ../app/actions/dialogs-actions.c:184 +msgid "Open the image templates dialog" +msgstr "Görüntü şablonları kutusunu aç" + +#: ../app/actions/dialogs-actions.c:189 +msgid "T_ools" +msgstr "_Araçlar" + +#: ../app/actions/dialogs-actions.c:190 +msgid "Open the tools dialog" +msgstr "Araçlar kutusunu aç" + +#: ../app/actions/dialogs-actions.c:195 +msgid "Error Co_nsole" +msgstr "Hata _Konsolu" + +#: ../app/actions/dialogs-actions.c:196 +msgid "Open the error console" +msgstr "Hata uçbirimini aç" + +#: ../app/actions/dialogs-actions.c:206 +msgid "_Preferences" +msgstr "_Tercihler" + +#: ../app/actions/dialogs-actions.c:207 +msgid "Open the preferences dialog" +msgstr "Yeğlenenler kutusunu aç" + +#: ../app/actions/dialogs-actions.c:212 +msgid "_Keyboard Shortcuts" +msgstr "_Klavye Kısayolları" + +#: ../app/actions/dialogs-actions.c:213 +msgid "Open the keyboard shortcuts editor" +msgstr "Klavye kısayolları düzenleyiciyi aç" + +#: ../app/actions/dialogs-actions.c:218 +msgid "_Modules" +msgstr "_Birimler" + +#: ../app/actions/dialogs-actions.c:219 +msgid "Open the module manager dialog" +msgstr "Birim yöneticisi kutusunu aç" + +#: ../app/actions/dialogs-actions.c:224 +msgid "_Tip of the Day" +msgstr "_Günün İpucu" + +#: ../app/actions/dialogs-actions.c:225 +msgid "Show some helpful tips on using GIMP" +msgstr "GIMP kullanımı ile ilgili ipuçları göster" + +#: ../app/actions/dialogs-actions.c:230 +msgid "_About" +msgstr "_Hakkında" + +#: ../app/actions/dialogs-actions.c:231 ../app/dialogs/about-dialog.c:114 +#: ../app/gui/gui.c:479 +msgid "About GIMP" +msgstr "GIMP Hakkında" + +#: ../app/actions/dock-actions.c:43 +msgid "M_ove to Screen" +msgstr "_Ekrana Taşı" + +#: ../app/actions/dock-actions.c:47 +msgid "Close Dock" +msgstr "Rıhtımı Kapat" + +#: ../app/actions/dock-actions.c:52 ../app/actions/view-actions.c:123 +msgid "_Open Display..." +msgstr "Görüntülemeyi _Aç..." + +#: ../app/actions/dock-actions.c:53 ../app/actions/view-actions.c:124 +msgid "Connect to another display" +msgstr "Başka bir görüntülemeye bağlan" + +#: ../app/actions/dock-actions.c:61 +msgid "_Show Image Selection" +msgstr "Re_sim Seçimini Göster" + +#: ../app/actions/dock-actions.c:67 +msgid "Auto _Follow Active Image" +msgstr "Etkin _Resmi Otomatik Takip et" + +#: ../app/actions/dockable-actions.c:49 +msgid "Dialogs Menu" +msgstr "Pencereler Menüsü" + +#: ../app/actions/dockable-actions.c:53 +msgid "_Add Tab" +msgstr "_Sekme Ekle" + +#: ../app/actions/dockable-actions.c:54 +msgid "_Preview Size" +msgstr "Önceki _Boyut" + +#: ../app/actions/dockable-actions.c:55 +msgid "_Tab Style" +msgstr "Sekme _Stili" + +#: ../app/actions/dockable-actions.c:58 +msgid "_Close Tab" +msgstr "_Sekmeyi Kapat" + +#: ../app/actions/dockable-actions.c:63 +msgid "_Detach Tab" +msgstr "_Sekmeyi Ayır" + +#: ../app/actions/dockable-actions.c:81 +msgid "_Tiny" +msgstr "_Minik" + +#: ../app/actions/dockable-actions.c:82 +msgid "E_xtra Small" +msgstr "Ç_ok Küçük" + +#: ../app/actions/dockable-actions.c:83 +msgid "_Small" +msgstr "_Küçük" + +#: ../app/actions/dockable-actions.c:84 +msgid "_Medium" +msgstr "_Orta" + +#: ../app/actions/dockable-actions.c:85 +msgid "_Large" +msgstr "_Büyük" + +#: ../app/actions/dockable-actions.c:86 +msgid "Ex_tra Large" +msgstr "Ço_k Büyük" + +#: ../app/actions/dockable-actions.c:87 +msgid "_Huge" +msgstr "_Kocaman" + +#: ../app/actions/dockable-actions.c:88 +msgid "_Enormous" +msgstr "İ_nanılmaz" + +#: ../app/actions/dockable-actions.c:89 +msgid "_Gigantic" +msgstr "_Dev gibi" + +#: ../app/actions/dockable-actions.c:94 +msgid "_Icon" +msgstr "_Simge" + +#: ../app/actions/dockable-actions.c:95 +msgid "Current _Status" +msgstr "Geçerli _Durum" + +#: ../app/actions/dockable-actions.c:96 +msgid "_Text" +msgstr "_Metin" + +#: ../app/actions/dockable-actions.c:97 +msgid "I_con & Text" +msgstr "Simg_e ve Metin" + +#: ../app/actions/dockable-actions.c:98 +msgid "St_atus & Text" +msgstr "_Durum ve Metin" + +#: ../app/actions/dockable-actions.c:108 +msgid "Loc_k Tab to Dock" +msgstr "Sekmeyi Rıhtıma _Kilitle" + +#: ../app/actions/dockable-actions.c:109 +msgid "Protect this tab from being dragged with the mouse pointer" +msgstr "Bu sekmeyi fare imleci ile sürüklenmeye karşı koru" + +#: ../app/actions/dockable-actions.c:115 +msgid "Show _Button Bar" +msgstr "Düğme _Çubuğunu Göster" + +#: ../app/actions/dockable-actions.c:124 +msgid "View as _List" +msgstr "_Liste Olarak Göster" + +#: ../app/actions/dockable-actions.c:129 +msgid "View as _Grid" +msgstr "Kılavuz _Olarak Görüntüle" + +#: ../app/actions/documents-actions.c:42 +msgid "Documents Menu" +msgstr "Belgeler Menüsü" + +#: ../app/actions/documents-actions.c:46 +msgid "_Open Image" +msgstr "Resim _Aç" + +#: ../app/actions/documents-actions.c:47 +msgid "Open the selected entry" +msgstr "Seçili girdiyi aç" + +#: ../app/actions/documents-actions.c:52 +msgid "_Raise or Open Image" +msgstr "_Yükselt veya Görüntü Aç" + +#: ../app/actions/documents-actions.c:53 +msgid "Raise window if already open" +msgstr "Zaten açıksa pencereyi yükselt" + +#: ../app/actions/documents-actions.c:58 +msgid "File Open _Dialog" +msgstr "Dosya Açma _Kutusu" + +#: ../app/actions/documents-actions.c:59 +msgid "Open image dialog" +msgstr "Görüntü kutusunu aç" + +#: ../app/actions/documents-actions.c:64 +msgid "Copy Image _Location" +msgstr "Görüntü _Yerini Kopyala" + +#: ../app/actions/documents-actions.c:65 +msgid "Copy image location to clipboard" +msgstr "Görüntü yerini panoya kopyala" + +#: ../app/actions/documents-actions.c:70 +msgid "Remove _Entry" +msgstr "_Girdiyi Sil" + +#: ../app/actions/documents-actions.c:71 +msgid "Remove the selected entry" +msgstr "Seçili girdiyi sil" + +#: ../app/actions/documents-actions.c:76 +msgid "_Clear History" +msgstr "Geçmişi _Temizle" + +#: ../app/actions/documents-actions.c:77 +msgid "Clear the entire document history" +msgstr "Bütün belge geçmişini temizle" + +#: ../app/actions/documents-actions.c:82 +msgid "Recreate _Preview" +msgstr "Yeniden Önizleme _Oluştur" + +#: ../app/actions/documents-actions.c:83 +msgid "Recreate preview" +msgstr "Yeniden önizleme oluştur" + +#: ../app/actions/documents-actions.c:88 +msgid "Reload _all Previews" +msgstr "_Tüm Önizlemeleri Yeniden Yükle" + +#: ../app/actions/documents-actions.c:89 +msgid "Reload all previews" +msgstr "Tüm önizlemeleri yeniden yükle" + +#: ../app/actions/documents-actions.c:94 +msgid "Remove Dangling E_ntries" +msgstr "_Sallanan Girişleri Kaldır" + +#: ../app/actions/documents-actions.c:95 +msgid "Remove dangling entries" +msgstr "Sallanan girişleri kaldır" + +#: ../app/actions/documents-commands.c:198 +msgid "Clear Document History" +msgstr "Belge Geçmişini Temizle" + +#: ../app/actions/documents-commands.c:221 +msgid "Clear the Recent Documents list?" +msgstr "Son Belgeler listesi temizlensin mi?" + +#: ../app/actions/documents-commands.c:224 +msgid "" +"Clearing the document history will permanently remove all items from the " +"recent documents list in all applications." +msgstr "" +"Belge geçmişinin temizlenmesi, son belgeler listesindeki tüm uygulamaların " +"öğelerini tamamen kaldıracaktır." + +#: ../app/actions/drawable-actions.c:45 +msgid "_Equalize" +msgstr "_Eşitlendir" + +#: ../app/actions/drawable-actions.c:46 +msgid "Automatic contrast enhancement" +msgstr "Otomatik karşıtlık arttır" + +#: ../app/actions/drawable-actions.c:51 +msgid "In_vert" +msgstr "_Tersine Çevir" + +#: ../app/actions/drawable-actions.c:52 +msgid "Invert the colors" +msgstr "Renkleri tersine çevir" + +#: ../app/actions/drawable-actions.c:57 +msgid "_White Balance" +msgstr "_Beyaz Dengesi" + +#: ../app/actions/drawable-actions.c:58 +msgid "Automatic white balance correction" +msgstr "Beyaz dengesini otomatik düzelt" + +#: ../app/actions/drawable-actions.c:63 +msgid "_Offset..." +msgstr "_Ofset..." + +#: ../app/actions/drawable-actions.c:64 +msgid "Shift the pixels, optionally wrapping them at the borders" +msgstr "Benekleri öteleyin, isteğe bağlı olarak sınırlara kaydırın" + +#: ../app/actions/drawable-actions.c:72 ../app/actions/vectors-actions.c:153 +msgid "_Linked" +msgstr "_Bağlı" + +#: ../app/actions/drawable-actions.c:73 +msgid "Toggle the linked state" +msgstr "Bağlanmış durumu değiştir" + +#: ../app/actions/drawable-actions.c:79 ../app/actions/vectors-actions.c:147 +msgid "_Visible" +msgstr "_Görünür" + +#: ../app/actions/drawable-actions.c:80 +msgid "Toggle visibility" +msgstr "Görünürlüğü değiştir" + +#: ../app/actions/drawable-actions.c:89 ../app/actions/image-actions.c:159 +msgid "Flip _Horizontally" +msgstr "_Yatay Çevir" + +#: ../app/actions/drawable-actions.c:90 +msgid "Flip horizontally" +msgstr "Yatay çevir" + +#: ../app/actions/drawable-actions.c:95 ../app/actions/image-actions.c:165 +msgid "Flip _Vertically" +msgstr "D_ikey Çevir" + +#: ../app/actions/drawable-actions.c:96 +msgid "Flip vertically" +msgstr "Dikey çevir" + +#: ../app/actions/drawable-actions.c:104 ../app/actions/image-actions.c:174 +msgid "Rotate 90° _clockwise" +msgstr "_Saat yönünde 90° döndür" + +#: ../app/actions/drawable-actions.c:105 +msgid "Rotate 90 degrees to the right" +msgstr "90° sağa döndür" + +#: ../app/actions/drawable-actions.c:110 ../app/actions/image-actions.c:180 +msgid "Rotate _180°" +msgstr "_180° döndür" + +#: ../app/actions/drawable-actions.c:111 +msgid "Turn upside-down" +msgstr "Baş aşağı döndür" + +#: ../app/actions/drawable-actions.c:116 ../app/actions/image-actions.c:186 +msgid "Rotate 90° counter-clock_wise" +msgstr "Saat _yönünün tersine 90° döndür" + +#: ../app/actions/drawable-actions.c:117 +msgid "Rotate 90 degrees to the left" +msgstr "90° sola döndür" + +#: ../app/actions/drawable-commands.c:62 +msgid "Equalize does not operate on indexed layers." +msgstr "Eşitleme indisli katmanlara uygulanamaz." + +#: ../app/actions/drawable-commands.c:85 +msgid "Invert does not operate on indexed layers." +msgstr "Terse çevrim indisli katmanlara uygulanamaz." + +#: ../app/actions/drawable-commands.c:108 +msgid "White Balance operates only on RGB color layers." +msgstr "Beyaz Dengesi, sadece RGB renk katmanlarına uygulanır." + +#: ../app/actions/edit-actions.c:63 +msgid "_Edit" +msgstr "Dü_zenle" + +#: ../app/actions/edit-actions.c:64 +msgid "_Paste as" +msgstr "_olarak Yapıştır" + +#: ../app/actions/edit-actions.c:65 +msgid "_Buffer" +msgstr "_Tamponlar" + +#: ../app/actions/edit-actions.c:68 +msgid "Undo History Menu" +msgstr "Geçmiş Menüsünü Geri Al" + +#: ../app/actions/edit-actions.c:72 ../app/actions/edit-actions.c:313 +msgid "_Undo" +msgstr "_Geri al" + +#: ../app/actions/edit-actions.c:73 +msgid "Undo the last operation" +msgstr "Son işlemi geri al" + +#: ../app/actions/edit-actions.c:78 ../app/actions/edit-actions.c:314 +msgid "_Redo" +msgstr "_Yinele" + +#: ../app/actions/edit-actions.c:79 +msgid "Redo the last operation that was undone" +msgstr "Bitmemiş son işlemi tekrar yap" + +#: ../app/actions/edit-actions.c:84 +msgid "Strong Undo" +msgstr "Çok Geri Al" + +#: ../app/actions/edit-actions.c:85 +msgid "Undo the last operation, skipping visibility changes" +msgstr "Görünürlük değişikliklerini atlayarak, son işlemi geri al" + +#: ../app/actions/edit-actions.c:90 +msgid "Strong Redo" +msgstr "Çok Yinele" + +#: ../app/actions/edit-actions.c:91 +msgid "Redo the last operation that was undone, skipping visibility changes" +msgstr "Görünürlük değişikliklerini atlayarak, bitmemiş son işlemi yinele" + +#: ../app/actions/edit-actions.c:96 +msgid "_Clear Undo History" +msgstr "_Geri Alma Geçmişini Temizle" + +#: ../app/actions/edit-actions.c:97 +msgid "Remove all operations from the undo history" +msgstr "Geri alma geçmişineki bütün işlemleri kaldır" + +#: ../app/actions/edit-actions.c:102 ../app/actions/edit-actions.c:315 +msgid "_Fade..." +msgstr "_Soldur..." + +#: ../app/actions/edit-actions.c:103 +msgid "Modify paint mode and opacity of the last pixel manipulation" +msgstr "Son benek işlemesinin boyama kipini ve ışık geçirmezliğini değiştir" + +#: ../app/actions/edit-actions.c:108 +msgid "Cu_t" +msgstr "_Kes" + +#: ../app/actions/edit-actions.c:109 +msgid "Move the selected pixels to the clipboard" +msgstr "Seçilmiş benekleri panoya taşı" + +#: ../app/actions/edit-actions.c:114 +msgid "_Copy" +msgstr "_Kopyala" + +#: ../app/actions/edit-actions.c:115 +msgid "Copy the selected pixels to the clipboard" +msgstr "Seçilmiş benekleri panoya kopyala" + +#. GIMP_STOCK_COPY_VISIBLE, +#: ../app/actions/edit-actions.c:120 +msgid "Copy _Visible" +msgstr "_Görünür Kısmı Kopyala" + +#: ../app/actions/edit-actions.c:121 +msgid "Copy what is visible in the selected region" +msgstr "Seçili bölgede ne görünebilir ise kopyala" + +#: ../app/actions/edit-actions.c:126 +msgid "_Paste" +msgstr "_Yapıştır" + +#: ../app/actions/edit-actions.c:127 +msgid "Paste the content of the clipboard" +msgstr "Pano içeriğini yapıştır" + +#: ../app/actions/edit-actions.c:132 +msgid "Paste _Into" +msgstr "İçi_ne Yapıştır" + +#: ../app/actions/edit-actions.c:133 +msgid "Paste the content of the clipboard into the current selection" +msgstr "Pano içeriğini şimdiki seçimin içine yapıştır" + +#: ../app/actions/edit-actions.c:138 +msgid "From _Clipboard" +msgstr "_Panodan" + +#: ../app/actions/edit-actions.c:139 ../app/actions/edit-actions.c:145 +msgid "Create a new image from the content of the clipboard" +msgstr "Pano içeriğinden yeni bir görüntü oluştur" + +#: ../app/actions/edit-actions.c:144 +msgid "_New Image" +msgstr "_Yeni Görüntü" + +#: ../app/actions/edit-actions.c:150 +msgid "New _Layer" +msgstr "Yeni _Katman" + +#: ../app/actions/edit-actions.c:151 +msgid "Create a new layer from the content of the clipboard" +msgstr "Pano içeriğinden yeni bir katman oluştur" + +#: ../app/actions/edit-actions.c:156 +msgid "Cu_t Named..." +msgstr "İsimle _Kes..." + +#: ../app/actions/edit-actions.c:157 +msgid "Move the selected pixels to a named buffer" +msgstr "Seçilmiş benekleri adlandırılan bir arabelleğe taşı" + +#: ../app/actions/edit-actions.c:162 +msgid "_Copy Named..." +msgstr "İ_simle Kopyala..." + +#: ../app/actions/edit-actions.c:163 +msgid "Copy the selected pixels to a named buffer" +msgstr "Seçilmiş benekleri adlandırılan bir arabelleğe kopyala" + +#. GIMP_STOCK_COPY_VISIBLE, +#: ../app/actions/edit-actions.c:168 +msgid "Copy _Visible Named..." +msgstr "_Görünür Adlandırılanı Kopyala..." + +#: ../app/actions/edit-actions.c:169 +msgid "Copy the selected region to a named buffer" +msgstr "Seçilmiş bölgeyi adlandırılan bir arabelleğe kopyala" + +#: ../app/actions/edit-actions.c:174 +msgid "_Paste Named..." +msgstr "İsimle Ya_pıştır..." + +#: ../app/actions/edit-actions.c:175 +msgid "Paste the content of a named buffer" +msgstr "Adlandırılan bir arabelleğin içeriğini yapıştır" + +#: ../app/actions/edit-actions.c:180 +msgid "Cl_ear" +msgstr "_Temizle" + +#: ../app/actions/edit-actions.c:181 +msgid "Clear the selected pixels" +msgstr "Seçilmiş benekleri temizle" + +#: ../app/actions/edit-actions.c:189 +msgid "Fill with _FG Color" +msgstr "_ÖP rengiyle doldur" + +#: ../app/actions/edit-actions.c:190 +msgid "Fill the selection using the foreground color" +msgstr "Seçimi, önalan rengini kullanarak doldur" + +#: ../app/actions/edit-actions.c:195 +msgid "Fill with B_G Color" +msgstr "_AP rengiyle doldur" + +#: ../app/actions/edit-actions.c:196 +msgid "Fill the selection using the background color" +msgstr "Seçimi, artalan rengini kullanarak doldur" + +#: ../app/actions/edit-actions.c:201 +msgid "Fill with P_attern" +msgstr "_Desen ile Doldur" + +#: ../app/actions/edit-actions.c:202 +msgid "Fill the selection using the active pattern" +msgstr "Seçimi, etkin deseni kullanarak doldur" + +#: ../app/actions/edit-actions.c:279 +#, c-format +msgid "_Undo %s" +msgstr "_Geri al: %s" + +#: ../app/actions/edit-actions.c:286 +#, c-format +msgid "_Redo %s" +msgstr "_Yinele: %s" + +#: ../app/actions/edit-actions.c:301 +#, c-format +msgid "_Fade %s..." +msgstr "_Soldur %s..." + +#: ../app/actions/edit-commands.c:134 +msgid "Clear Undo History" +msgstr "Geri Alma Geçmişini Sil" + +#: ../app/actions/edit-commands.c:160 +msgid "Really clear image's undo history?" +msgstr "Görüntünün geri alma geçmişi gerçekten silinsin mi?" + +#: ../app/actions/edit-commands.c:172 +#, c-format +msgid "Clearing the undo history of this image will gain %s of memory." +msgstr "" +"Bu görüntünün geri alma geçmişini silmek bellekte %s yer kazandıracak." + +#: ../app/actions/edit-commands.c:201 +msgid "Cut pixels to the clipboard" +msgstr "Benekleri panoya kes" + +#: ../app/actions/edit-commands.c:228 ../app/actions/edit-commands.c:254 +msgid "Copied pixels to the clipboard" +msgstr "Panoya kopyalanmış benekler" + +#: ../app/actions/edit-commands.c:315 ../app/actions/edit-commands.c:349 +#: ../app/actions/edit-commands.c:525 +msgid "There is no image data in the clipboard to paste." +msgstr "Panoda yapıştırılacak görüntü verisi yok." + +#: ../app/actions/edit-commands.c:338 ../app/core/gimpbrushclipboard.c:181 +#: ../app/core/gimppatternclipboard.c:181 ../app/widgets/gimpclipboard.c:296 +msgid "Clipboard" +msgstr "Pano" + +#: ../app/actions/edit-commands.c:363 +msgid "Cut Named" +msgstr "İsimle Kes" + +#: ../app/actions/edit-commands.c:366 ../app/actions/edit-commands.c:407 +#: ../app/actions/edit-commands.c:427 +msgid "Enter a name for this buffer" +msgstr "Bu bellek için bir isim yazın" + +#: ../app/actions/edit-commands.c:404 +msgid "Copy Named" +msgstr "İsimle Kopyala" + +#: ../app/actions/edit-commands.c:424 +msgid "Copy Visible Named " +msgstr "Görünür Adlandırılanı Kopyala " + +#: ../app/actions/edit-commands.c:542 +msgid "There is no active layer or channel to cut from." +msgstr "Kesilecek etkin katman veya kanal yok." + +#: ../app/actions/edit-commands.c:547 ../app/actions/edit-commands.c:579 +#: ../app/actions/edit-commands.c:603 +msgid "(Unnamed Buffer)" +msgstr "(Isimli Tampon)" + +#: ../app/actions/edit-commands.c:574 +msgid "There is no active layer or channel to copy from." +msgstr "Kopyalanacak etkin katman veya kanal yok." + +#: ../app/actions/error-console-actions.c:40 +msgid "Error Console Menu" +msgstr "Hata Konsolu Menüsü" + +#: ../app/actions/error-console-actions.c:44 +msgid "_Clear" +msgstr "_Temizle" + +#: ../app/actions/error-console-actions.c:45 +msgid "Clear error console" +msgstr "Hata uçbirimini temizle" + +#: ../app/actions/error-console-actions.c:50 +msgid "Select _All" +msgstr "Tü_münü Seç" + +#: ../app/actions/error-console-actions.c:51 +msgid "Select all errors" +msgstr "Tüm hataları seç" + +#: ../app/actions/error-console-actions.c:59 +msgid "_Save Error Log to File..." +msgstr "Hata Günlüğünü Dosyaya _Kaydet..." + +#: ../app/actions/error-console-actions.c:60 +msgid "Save error log" +msgstr "Hata günlüğünü kaydet" + +#: ../app/actions/error-console-actions.c:65 +msgid "Save S_election to File..." +msgstr "Seçimi _Dosyaya Kaydet..." + +#: ../app/actions/error-console-actions.c:66 +msgid "Save selection" +msgstr "Seçimi kaydet" + +#: ../app/actions/error-console-commands.c:84 +msgid "Cannot save. Nothing is selected." +msgstr "Kaydedilemiyor, çünkü hiçbir şey seçili değil." + +#: ../app/actions/error-console-commands.c:95 +msgid "Save Error Log to File" +msgstr "Hata kaydını dosyaya kaydet..." + +#: ../app/actions/error-console-commands.c:156 +#, c-format +msgid "" +"Error writing file '%s':\n" +"%s" +msgstr "" +"%s dosyasına kaydedilemedi:\n" +"%s" + +#: ../app/actions/file-actions.c:66 +msgid "_File" +msgstr "_Dosya" + +#: ../app/actions/file-actions.c:67 +msgid "Create" +msgstr "Oluştur" + +#: ../app/actions/file-actions.c:68 +msgid "Open _Recent" +msgstr "Son _Kullanılanı Aç" + +#: ../app/actions/file-actions.c:71 +msgid "_Open..." +msgstr "_Aç..." + +#: ../app/actions/file-actions.c:72 +msgid "Open an image file" +msgstr "Bir görüntü dosyası aç" + +#: ../app/actions/file-actions.c:77 +msgid "Op_en as Layers..." +msgstr "Katman _olarak Aç..." + +#: ../app/actions/file-actions.c:78 +msgid "Open an image file as layers" +msgstr "Bir görüntü dosyasını katman olarak aç" + +#: ../app/actions/file-actions.c:83 +msgid "Open _Location..." +msgstr "Konum _Aç..." + +#: ../app/actions/file-actions.c:84 +msgid "Open an image file from a specified location" +msgstr "Belirlenmiş bir yerden bir görüntü dosyası aç" + +#: ../app/actions/file-actions.c:89 +msgid "Save as _Template..." +msgstr "Ş_ablon Olarak Kaydet..." + +#: ../app/actions/file-actions.c:90 +msgid "Create a new template from this image" +msgstr "Bu görüntüden yeni bir şablon oluştur" + +#: ../app/actions/file-actions.c:95 +msgid "Re_vert" +msgstr "_Geri al" + +#: ../app/actions/file-actions.c:96 +msgid "Reload the image file from disk" +msgstr "Görüntü dosyasını diskten yeniden yükle" + +#: ../app/actions/file-actions.c:101 +msgid "Close all" +msgstr "Hepsini kapat" + +#: ../app/actions/file-actions.c:102 +msgid "Close all opened images" +msgstr "Açılmış bütün görüntüleri kapat" + +#: ../app/actions/file-actions.c:107 +msgid "_Quit" +msgstr "Çı_k" + +#: ../app/actions/file-actions.c:108 +msgid "Quit the GNU Image Manipulation Program" +msgstr "GNU Görüntü İşleme Programı'ndan Çık" + +#: ../app/actions/file-actions.c:116 +msgid "_Save" +msgstr "_Kaydet" + +#: ../app/actions/file-actions.c:117 +msgid "Save this image" +msgstr "Bu görüntüyü kaydet" + +#: ../app/actions/file-actions.c:122 +msgid "Save _As..." +msgstr "_Farklı Kaydet..." + +#: ../app/actions/file-actions.c:123 +msgid "Save this image with a different name" +msgstr "Bu görüntüyü farklı bir adla kaydet" + +#: ../app/actions/file-actions.c:128 +msgid "Save a Cop_y..." +msgstr "Bir K_opyasını Kaydet..." + +#: ../app/actions/file-actions.c:129 +msgid "Save this image with a different name, but keep its current name" +msgstr "Bu görüntüyü farklı bir adla kaydet, ama şimdiki adını sakla" + +#: ../app/actions/file-actions.c:134 +msgid "Save and Close..." +msgstr "Kaydet ve Kapat..." + +#: ../app/actions/file-actions.c:135 +msgid "Save this image and close its window" +msgstr "Bu görüntüyü kaydet ve penceresini kapat" + +#: ../app/actions/file-commands.c:104 ../app/actions/file-commands.c:456 +#: ../app/dialogs/file-open-dialog.c:76 +msgid "Open Image" +msgstr "Resim Aç" + +#: ../app/actions/file-commands.c:125 +msgid "Open Image as Layers" +msgstr "Görüntüyü Katman olarak Aç" + +#: ../app/actions/file-commands.c:266 +msgid "Saving canceled" +msgstr "Kaydetmeden vazgeçildi" + +#: ../app/actions/file-commands.c:275 ../app/dialogs/file-save-dialog.c:513 +#: ../app/widgets/gimpdnd-xds.c:173 +#, c-format +msgid "" +"Saving '%s' failed:\n" +"\n" +"%s" +msgstr "" +"%s dosyasını kaydetme başarısız oldu.\n" +"\n" +"%s" + +#: ../app/actions/file-commands.c:300 +msgid "No changes need to be saved" +msgstr "Kaydedilmesi gereken değişiklik yok" + +#: ../app/actions/file-commands.c:307 ../app/dialogs/file-save-dialog.c:88 +msgid "Save Image" +msgstr "Resmi Kaydet" + +#: ../app/actions/file-commands.c:313 +msgid "Save a Copy of the Image" +msgstr "Görüntünün bir Kopyasını Kaydet" + +#: ../app/actions/file-commands.c:333 +msgid "Create New Template" +msgstr "Yeni Şablon Oluştur" + +#: ../app/actions/file-commands.c:337 +msgid "Enter a name for this template" +msgstr "Bu şablon için bir isim yazın" + +#: ../app/actions/file-commands.c:363 +msgid "Revert failed. No file name associated with this image." +msgstr "" +"Geri dönme başarısız. Bu görüntü ile ilişkilendirilmiş bir dosya adı yok." + +#: ../app/actions/file-commands.c:376 +msgid "Revert Image" +msgstr "Resmi Geri Al" + +#: ../app/actions/file-commands.c:402 +#, c-format +msgid "Revert '%s' to '%s'?" +msgstr "'%s'dan '%s'a geri dönsün mü?" + +#: ../app/actions/file-commands.c:408 +msgid "" +"By reverting the image to the state saved on disk, you will lose all " +"changes, including all undo information." +msgstr "" +"Görüntüyü diskte kaydedilmiş durumu geri döndürerek, tüm geri alma bilgisini " +"de içerecek şekilde bütün değişiklikleri kaybedeceksiniz," + +#: ../app/actions/file-commands.c:563 +msgid "(Unnamed Template)" +msgstr "(İsimsiz Şablon)" + +#: ../app/actions/file-commands.c:611 +#, c-format +msgid "" +"Reverting to '%s' failed:\n" +"\n" +"%s" +msgstr "" +"'%s' geri dönme başarısız:\n" +"\n" +"%s" + +#: ../app/actions/fonts-actions.c:44 +msgid "Fonts Menu" +msgstr "Yazıtipleri Menüsü" + +#: ../app/actions/fonts-actions.c:48 +msgid "_Rescan Font List" +msgstr "_Yazıtipi Listesini Yeniden Tara" + +#: ../app/actions/fonts-actions.c:49 +msgid "Rescan font list" +msgstr "Yazıtipi listesini yeniden tara" + +#: ../app/actions/gradient-editor-actions.c:46 +msgid "Gradient Editor Menu" +msgstr "Gradyan Düzenleyici Menüsü" + +#: ../app/actions/gradient-editor-actions.c:50 +msgid "Left Color Type" +msgstr "Sol Renk Tipi" + +#: ../app/actions/gradient-editor-actions.c:52 +msgid "_Load Left Color From" +msgstr "S_ol Rengi Yükle" + +#: ../app/actions/gradient-editor-actions.c:54 +msgid "_Save Left Color To" +msgstr "Sol Rengi K_aydet" + +#: ../app/actions/gradient-editor-actions.c:57 +msgid "Right Color Type" +msgstr "Sağ Renk Tipi" + +#: ../app/actions/gradient-editor-actions.c:59 +msgid "Load Right Color Fr_om" +msgstr "S_ağ Rengi Yükle" + +#: ../app/actions/gradient-editor-actions.c:61 +msgid "Sa_ve Right Color To" +msgstr "Sağ Rengi Ka_ydet" + +#: ../app/actions/gradient-editor-actions.c:67 +msgid "L_eft Endpoint's Color..." +msgstr "S_ol Bitim Noktasının Rengi..." + +#: ../app/actions/gradient-editor-actions.c:72 +msgid "R_ight Endpoint's Color..." +msgstr "S_ağ Bitim Noktasının Rengi..." + +#: ../app/actions/gradient-editor-actions.c:112 +msgid "Ble_nd Endpoints' Colors" +msgstr "Bitim Noktasının Rengini Ka_rıştır" + +#: ../app/actions/gradient-editor-actions.c:117 +msgid "Blend Endpoints' Opacit_y" +msgstr "Bitim Noktasının I_şık Geçirmezliğini Karıştır" + +#: ../app/actions/gradient-editor-actions.c:125 +msgid "Edit Active Gradient" +msgstr "Etkin Renk Geçişini Düzenle" + +#: ../app/actions/gradient-editor-actions.c:156 +msgid "_Left Neighbor's Right Endpoint" +msgstr "_Sol Bitişiğin Sağ Bitim Noktası" + +#: ../app/actions/gradient-editor-actions.c:161 +msgid "_Right Endpoint" +msgstr "S_ağ Bitim Noktası" + +#: ../app/actions/gradient-editor-actions.c:166 +#: ../app/actions/gradient-editor-actions.c:214 +msgid "_Foreground Color" +msgstr "Ö_nalan Rengi" + +#: ../app/actions/gradient-editor-actions.c:171 +#: ../app/actions/gradient-editor-actions.c:219 +#: ../app/actions/gradient-editor-actions.c:273 +#: ../app/actions/gradient-editor-actions.c:301 +msgid "_Background Color" +msgstr "_Artalan Rengi" + +#: ../app/actions/gradient-editor-actions.c:204 +msgid "_Right Neighbor's Left Endpoint" +msgstr "Sağ _Komşunun Sol Bitim Noktası" + +#: ../app/actions/gradient-editor-actions.c:209 +msgid "_Left Endpoint" +msgstr "_Sol Bitim Noktası" + +#: ../app/actions/gradient-editor-actions.c:258 +#: ../app/actions/gradient-editor-actions.c:286 +msgid "_Fixed" +msgstr "_Değişmez" + +#: ../app/actions/gradient-editor-actions.c:263 +#: ../app/actions/gradient-editor-actions.c:291 +msgid "F_oreground Color" +msgstr "Ö_nalan Rengi" + +#: ../app/actions/gradient-editor-actions.c:268 +#: ../app/actions/gradient-editor-actions.c:296 +msgid "Fo_reground Color (Transparent)" +msgstr "Ön_alan Rengi (Saydam)" + +#: ../app/actions/gradient-editor-actions.c:278 +#: ../app/actions/gradient-editor-actions.c:306 +msgid "B_ackground Color (Transparent)" +msgstr "Ar_talan Rengi (Saydam)" + +#: ../app/actions/gradient-editor-actions.c:314 +msgid "_Linear" +msgstr "_Doğrusal" + +#: ../app/actions/gradient-editor-actions.c:319 +msgid "_Curved" +msgstr "Eğ_risel" + +#: ../app/actions/gradient-editor-actions.c:324 +msgid "_Sinusoidal" +msgstr "_Sinüzoidal" + +#: ../app/actions/gradient-editor-actions.c:329 +msgid "Spherical (i_ncreasing)" +msgstr "Küresel (a_rtarak)" + +#: ../app/actions/gradient-editor-actions.c:334 +msgid "Spherical (_decreasing)" +msgstr "Küresel (_azalarak)" + +#: ../app/actions/gradient-editor-actions.c:339 +#: ../app/actions/gradient-editor-actions.c:362 +msgid "(Varies)" +msgstr "(Değişen)" + +#: ../app/actions/gradient-editor-actions.c:347 +#: ../app/actions/image-actions.c:141 +msgid "_RGB" +msgstr "_RGB" + +#: ../app/actions/gradient-editor-actions.c:352 +msgid "HSV (_counter-clockwise hue)" +msgstr "HSV (_saat yönünün tersine renk özü)" + +#: ../app/actions/gradient-editor-actions.c:357 +msgid "HSV (clockwise _hue)" +msgstr "HSV (saat yönünde _renk özü)" + +#: ../app/actions/gradient-editor-actions.c:370 +#: ../app/actions/view-actions.c:273 +msgid "Zoom In" +msgstr "Yakınlaş" + +#: ../app/actions/gradient-editor-actions.c:371 +#: ../app/actions/palette-editor-actions.c:88 +#: ../app/actions/view-actions.c:262 ../app/actions/view-actions.c:274 +msgid "Zoom in" +msgstr "Yakınlaş" + +#: ../app/actions/gradient-editor-actions.c:376 +#: ../app/actions/view-actions.c:267 +msgid "Zoom Out" +msgstr "Uzaklaş" + +#: ../app/actions/gradient-editor-actions.c:377 +#: ../app/actions/palette-editor-actions.c:94 +#: ../app/actions/view-actions.c:256 ../app/actions/view-actions.c:268 +msgid "Zoom out" +msgstr "Uzaklaş" + +#: ../app/actions/gradient-editor-actions.c:382 +msgid "Zoom All" +msgstr "Hepsine Yakınlaş" + +#: ../app/actions/gradient-editor-actions.c:383 +#: ../app/actions/palette-editor-actions.c:100 +msgid "Zoom all" +msgstr "Hepsine yakınlaş" + +#: ../app/actions/gradient-editor-actions.c:773 +msgid "_Blending Function for Segment" +msgstr "Kesim için _Karıştırma İşlevi" + +#: ../app/actions/gradient-editor-actions.c:775 +msgid "Coloring _Type for Segment" +msgstr "Kesim için Renklendirme _Tipi" + +#: ../app/actions/gradient-editor-actions.c:778 +msgid "_Flip Segment" +msgstr "Kesimi _Çevir" + +#: ../app/actions/gradient-editor-actions.c:780 +msgid "_Replicate Segment..." +msgstr "Kesimi _Tekrarla..." + +#: ../app/actions/gradient-editor-actions.c:782 +msgid "Split Segment at _Midpoint" +msgstr "Kesimi Orta _Noktadan Ayır" + +#: ../app/actions/gradient-editor-actions.c:784 +msgid "Split Segment _Uniformly..." +msgstr "Kesimi _Birörnek olarak Ayır..." + +#: ../app/actions/gradient-editor-actions.c:786 +msgid "_Delete Segment" +msgstr "Kesimi _Sil" + +#: ../app/actions/gradient-editor-actions.c:788 +msgid "Re-_center Segment's Midpoint" +msgstr "Kesimin Orta Noktasını Yeniden O_rtala" + +#: ../app/actions/gradient-editor-actions.c:790 +msgid "Re-distribute _Handles in Segment" +msgstr "Kesim içindeki _Tanıtıcıları Yeniden Dağıt" + +#: ../app/actions/gradient-editor-actions.c:795 +msgid "_Blending Function for Selection" +msgstr "Seçim için _Karıştırma İşlevi" + +#: ../app/actions/gradient-editor-actions.c:797 +msgid "Coloring _Type for Selection" +msgstr "Seçim için Renklendirme _Tipi" + +#: ../app/actions/gradient-editor-actions.c:800 +msgid "_Flip Selection" +msgstr "Seçimi _Çevir" + +#: ../app/actions/gradient-editor-actions.c:802 +msgid "_Replicate Selection..." +msgstr "Seçimi _Tekrarla..." + +#: ../app/actions/gradient-editor-actions.c:804 +msgid "Split Segments at _Midpoints" +msgstr "Kesimleri O_rta Noktalarından Ayır" + +#: ../app/actions/gradient-editor-actions.c:806 +msgid "Split Segments _Uniformly..." +msgstr "Kesimleri _Birörnek olarak Ayır..." + +#: ../app/actions/gradient-editor-actions.c:808 +msgid "_Delete Selection" +msgstr "_Seçimi sil" + +#: ../app/actions/gradient-editor-actions.c:810 +msgid "Re-_center Midpoints in Selection" +msgstr "Seçimdeki Orta Noktaları Yeniden O_rtala" + +#: ../app/actions/gradient-editor-actions.c:812 +msgid "Re-distribute _Handles in Selection" +msgstr "Seçim içindeki _Tanıtıcıları Yeniden Dağıt" + +#: ../app/actions/gradient-editor-commands.c:86 +msgid "Left Endpoint Color" +msgstr "Sol Bitim Noktası Rengi" + +#: ../app/actions/gradient-editor-commands.c:88 +msgid "Gradient Segment's Left Endpoint Color" +msgstr "Renk Geçişi Kesimlerinin Sol Bitim Noktası Rengi" + +#: ../app/actions/gradient-editor-commands.c:237 +msgid "Right Endpoint Color" +msgstr "Sağ Bitim Noktasının Rengi" + +#: ../app/actions/gradient-editor-commands.c:239 +msgid "Gradient Segment's Right Endpoint Color" +msgstr "Renk Geçişi Kesimlerinin Sağ Bitim Noktası Rengi" + +#: ../app/actions/gradient-editor-commands.c:453 +msgid "Replicate Segment" +msgstr "Kesimi Tekrarla" + +#: ../app/actions/gradient-editor-commands.c:454 +msgid "Replicate Gradient Segment" +msgstr "Renk Geçişi Kesimini Tekrarla" + +#: ../app/actions/gradient-editor-commands.c:458 +msgid "Replicate Selection" +msgstr "Seçimi Tekrarla" + +#: ../app/actions/gradient-editor-commands.c:459 +msgid "Replicate Gradient Selection" +msgstr "Renk Geçişi Seçimini Tekrarla" + +#: ../app/actions/gradient-editor-commands.c:472 +msgid "Replicate" +msgstr "Çoğalt" + +#: ../app/actions/gradient-editor-commands.c:492 +msgid "" +"Select the number of times\n" +"to replicate the selected segment." +msgstr "" +"Seçilmiş kesimin kaç kere \n" +"tekrarlanacağını seçin." + +#: ../app/actions/gradient-editor-commands.c:495 +msgid "" +"Select the number of times\n" +"to replicate the selection." +msgstr "" +"Seçimin kaç kere \n" +"tekrarlanacağını seçin." + +#: ../app/actions/gradient-editor-commands.c:554 +msgid "Split Segment Uniformly" +msgstr "Kesimi Birörnek olarak Ayır" + +#: ../app/actions/gradient-editor-commands.c:555 +msgid "Split Gradient Segment Uniformly" +msgstr "Renk Geçişi Kesimini Birörnek olarak Ayır" + +#: ../app/actions/gradient-editor-commands.c:559 +msgid "Split Segments Uniformly" +msgstr "Kesimleri Birörnek olarak Ayır" + +#: ../app/actions/gradient-editor-commands.c:560 +msgid "Split Gradient Segments Uniformly" +msgstr "Renk Geçişi Kesimlerini Birörnek olarak Ayır" + +#: ../app/actions/gradient-editor-commands.c:573 +msgid "Split" +msgstr "Ayır" + +#: ../app/actions/gradient-editor-commands.c:594 +msgid "" +"Select the number of uniform parts\n" +"in which to split the selected segment." +msgstr "" +"Seçilmiş kesimlerin ayrılacağı \n" +"birörnek parça sayısını seçin." + +#: ../app/actions/gradient-editor-commands.c:597 +msgid "" +"Select the number of uniform parts\n" +"in which to split the segments in the selection." +msgstr "" +"Seçim içindeki kesimlerin ayrılacağı \n" +"birörnek parça sayısını seçin." + +#: ../app/actions/gradients-actions.c:44 +msgid "Gradients Menu" +msgstr "Gradyanlar Menüsü" + +#: ../app/actions/gradients-actions.c:48 +msgid "_New Gradient" +msgstr "_Yeni Gradyan" + +#: ../app/actions/gradients-actions.c:49 +msgid "New gradient" +msgstr "Yeni gradyan" + +#: ../app/actions/gradients-actions.c:54 +msgid "D_uplicate Gradient" +msgstr "_Gradyanı Çoğalt" + +#: ../app/actions/gradients-actions.c:55 +msgid "Duplicate gradient" +msgstr "Gradyanı Çoğalt" + +#: ../app/actions/gradients-actions.c:60 +msgid "Copy Gradient _Location" +msgstr "Renk Geçişi _Yerini Kopyala" + +#: ../app/actions/gradients-actions.c:61 +msgid "Copy gradient file location to clipboard" +msgstr "Renk geçişi dosyasının yerini panoya kopyala" + +#: ../app/actions/gradients-actions.c:66 +msgid "Save as _POV-Ray..." +msgstr "_POV-Ray olarak kaydet..." + +#: ../app/actions/gradients-actions.c:67 +msgid "Save gradient as POV-Ray" +msgstr "Gradyanı POV-Ray olarak kaydet" + +#: ../app/actions/gradients-actions.c:72 +msgid "_Delete Gradient" +msgstr "Renk Geçişini _Sil..." + +#: ../app/actions/gradients-actions.c:73 +msgid "Delete gradient" +msgstr "Gradyanı sil" + +#: ../app/actions/gradients-actions.c:78 +msgid "_Refresh Gradients" +msgstr "_Gradyanları Tazele" + +#: ../app/actions/gradients-actions.c:79 +msgid "Refresh gradients" +msgstr "Gradyanları tazele" + +#: ../app/actions/gradients-actions.c:87 +msgid "_Edit Gradient..." +msgstr "Gradyanı _Düzenle..." + +#: ../app/actions/gradients-actions.c:88 +msgid "Edit gradient" +msgstr "Gradyanı düzenle" + +#: ../app/actions/gradients-commands.c:66 +#, c-format +msgid "Save '%s' as POV-Ray" +msgstr "'%s' dosyasını POV-Ray olarak kaydet" + +#: ../app/actions/help-actions.c:38 ../app/actions/help-actions.c:41 +msgid "_Help" +msgstr "_Yardım" + +#: ../app/actions/help-actions.c:42 +msgid "Open the GIMP user manual" +msgstr "GIMP kullanıcı el kitabını aç" + +#: ../app/actions/help-actions.c:47 +msgid "_Context Help" +msgstr "_Bağlam Yardımı" + +#: ../app/actions/help-actions.c:48 +msgid "Show the help for a specific user interface item" +msgstr "Belli bir kullanıcı arabirimi öğesi için yardımı göster" + +#: ../app/actions/image-actions.c:47 ../app/actions/image-actions.c:51 +msgid "Image Menu" +msgstr "Resim Menüsü" + +#: ../app/actions/image-actions.c:54 +msgid "_Image" +msgstr "_Resim" + +#: ../app/actions/image-actions.c:55 +msgid "_Mode" +msgstr "_Kip" + +#: ../app/actions/image-actions.c:56 ../app/actions/layers-actions.c:56 +msgid "_Transform" +msgstr "_Dönüştür" + +#: ../app/actions/image-actions.c:57 +msgid "_Guides" +msgstr "_Kılavuzlar" + +#: ../app/actions/image-actions.c:60 +msgid "I_nfo" +msgstr "B_ilgi" + +#: ../app/actions/image-actions.c:61 ../app/tools/gimplevelstool.c:653 +#: ../app/tools/gimpthresholdtool.c:264 +msgid "_Auto" +msgstr "_Otomatik" + +#: ../app/actions/image-actions.c:62 ../app/actions/plug-in-actions.c:95 +msgid "_Map" +msgstr "_Harita" + +#: ../app/actions/image-actions.c:63 +msgid "C_omponents" +msgstr "Bil_eşenler" + +#: ../app/actions/image-actions.c:66 +msgid "_New..." +msgstr "_Yeni..." + +#: ../app/actions/image-actions.c:67 +msgid "Create a new image" +msgstr "Yeni bir görüntü oluştur" + +#: ../app/actions/image-actions.c:72 +msgid "Can_vas Size..." +msgstr "Tuval _Boyutu..." + +#: ../app/actions/image-actions.c:73 +msgid "Adjust the image dimensions" +msgstr "Görüntü boyutlarını ayarla" + +#: ../app/actions/image-actions.c:78 +msgid "F_it Canvas to Layers" +msgstr "Tuvali Katmalara U_ydur" + +#: ../app/actions/image-actions.c:79 +msgid "Resize the image to enclose all layers" +msgstr "Tüm katmanları kapsayacak şekilde görüntüyü yeniden boyutlandır" + +#: ../app/actions/image-actions.c:84 +msgid "F_it Canvas to Selection" +msgstr "Tuvali Seçime _Uydur" + +#: ../app/actions/image-actions.c:85 +msgid "Resize the image to the extents of the selection" +msgstr "Görüntüyü, seçimin ölçülerine göre yeniden boyutlandır" + +#: ../app/actions/image-actions.c:90 +msgid "_Print Size..." +msgstr "_Yazdırma Boyutu..." + +#: ../app/actions/image-actions.c:91 +msgid "Adjust the print resolution" +msgstr "Yazdırma çözünürlüğünü ayarla" + +#: ../app/actions/image-actions.c:96 +msgid "_Scale Image..." +msgstr "_Resmi Ölçekle..." + +#: ../app/actions/image-actions.c:97 +msgid "Change the size of the image content" +msgstr "Görüntü içeriğinin boyutunu değiştir" + +#: ../app/actions/image-actions.c:102 ../app/actions/layers-actions.c:188 +msgid "_Crop to Selection" +msgstr "Seçime göre _Kırp" + +#: ../app/actions/image-actions.c:103 +msgid "Crop the image to the extents of the selection" +msgstr "Seçimin ölçülerine göre görüntüyü kırp" + +#: ../app/actions/image-actions.c:108 +msgid "_Duplicate" +msgstr "Çoğal_t" + +#: ../app/actions/image-actions.c:109 +msgid "Create a duplicate of this image" +msgstr "Bu görüntünün bir eşini oluştur" + +#: ../app/actions/image-actions.c:114 +msgid "Merge Visible _Layers..." +msgstr "_Görünen Katmanları Birleştir..." + +#: ../app/actions/image-actions.c:115 ../app/actions/layers-actions.c:141 +msgid "Merge all visible layers into one layer" +msgstr "Görünen bütün katmanları bir katmana birleştir" + +#: ../app/actions/image-actions.c:120 ../app/actions/layers-actions.c:146 +msgid "_Flatten Image" +msgstr "_Resmi Düzleştir" + +#: ../app/actions/image-actions.c:121 ../app/actions/layers-actions.c:147 +msgid "Merge all layers into one and remove transparency" +msgstr "Görünen bütün katmanları bir olarak birleştir ve saydamlığı kaldır" + +#: ../app/actions/image-actions.c:126 +msgid "Configure G_rid..." +msgstr "Kılavuzları _Yapılandır..." + +#: ../app/actions/image-actions.c:127 +msgid "Configure the grid for this image" +msgstr "Bu görüntü için ızgarayı yapılandır" + +#: ../app/actions/image-actions.c:132 +msgid "Image Pr_operties" +msgstr "Görüntü Özellikleri" + +#: ../app/actions/image-actions.c:133 +msgid "Display information about this image" +msgstr "Bu görüntü hakkındaki bilgiyi göster" + +#: ../app/actions/image-actions.c:142 +msgid "Convert the image to the RGB colorspace" +msgstr "Görüntüyü RGB renk alanına dönüştür" + +#: ../app/actions/image-actions.c:146 +msgid "_Grayscale" +msgstr "_Gri Ölçekli" + +#: ../app/actions/image-actions.c:147 +msgid "Convert the image to grayscale" +msgstr "Görüntüyü gri ölçeğe dönüştür" + +#: ../app/actions/image-actions.c:151 +msgid "_Indexed..." +msgstr "İ_ndisli..." + +#: ../app/actions/image-actions.c:152 +msgid "Convert the image to indexed colors" +msgstr "Görüntüyü sıralanmış renklere dönüştür" + +#: ../app/actions/image-actions.c:160 +msgid "Flip image horizontally" +msgstr "Görüntüyü yatay olarak çevir" + +#: ../app/actions/image-actions.c:166 +msgid "Flip image vertically" +msgstr "Görüntüyü dikey olarak çevir" + +#: ../app/actions/image-actions.c:175 +msgid "Rotate the image 90 degrees to the right" +msgstr "Görüntüyü 90 derece sağa döndür" + +#: ../app/actions/image-actions.c:181 +msgid "Turn the image upside-down" +msgstr "Görüntüyü baş aşağı çevir" + +#: ../app/actions/image-actions.c:187 +msgid "Rotate the image 90 degrees to the left" +msgstr "Görüntüyü 90 derece sola döndür" + +#: ../app/actions/image-commands.c:235 +msgid "Set Image Canvas Size" +msgstr "Resim Tuval Boyutunu Belirle" + +#: ../app/actions/image-commands.c:261 ../app/actions/image-commands.c:282 +#: ../app/actions/image-commands.c:559 +msgid "Resizing" +msgstr "Yeniden boyutlandırma" + +#: ../app/actions/image-commands.c:306 +msgid "Set Image Print Resolution" +msgstr "Görüntünün Yazdırma Çözünürlüğünü Ayarla" + +#: ../app/actions/image-commands.c:362 +#: ../app/pdb/drawable-transform-cmds.c:148 +#: ../app/pdb/drawable-transform-cmds.c:223 +msgid "Flipping" +msgstr "Çevirme" + +#: ../app/actions/image-commands.c:383 +#: ../app/pdb/drawable-transform-cmds.c:525 +#: ../app/pdb/drawable-transform-cmds.c:604 ../app/pdb/image-cmds.c:533 +#: ../app/pdb/transform-tools-cmds.c:215 ../app/tools/gimprotatetool.c:122 +msgid "Rotating" +msgstr "Döndürme" + +#: ../app/actions/image-commands.c:408 ../app/actions/layers-commands.c:642 +msgid "Cannot crop because the current selection is empty." +msgstr "Kırpma yapılamaz çünkü seçili alan boş." + +#: ../app/actions/image-commands.c:606 +msgid "Change Print Size" +msgstr "Yazdırma Boyutunu Değiştir" + +#: ../app/actions/image-commands.c:647 ../app/core/gimpimage-scale.c:82 +msgid "Scale Image" +msgstr "Resmi Ölçekle" + +#. Scaling +#: ../app/actions/image-commands.c:658 ../app/actions/layers-commands.c:1104 +#: ../app/dialogs/preferences-dialog.c:1925 +#: ../app/pdb/drawable-transform-cmds.c:682 +#: ../app/pdb/drawable-transform-cmds.c:758 ../app/pdb/image-cmds.c:405 +#: ../app/pdb/image-cmds.c:441 ../app/pdb/layer-cmds.c:292 +#: ../app/pdb/layer-cmds.c:337 ../app/pdb/transform-tools-cmds.c:291 +#: ../app/tools/gimpscaletool.c:107 +msgid "Scaling" +msgstr "Ölçekleme" + +#: ../app/actions/images-actions.c:43 +msgid "Images Menu" +msgstr "Resimler Menüsü" + +#: ../app/actions/images-actions.c:47 +msgid "_Raise Views" +msgstr "_Görünümleri Yükselt" + +#: ../app/actions/images-actions.c:48 +msgid "Raise this image's displays" +msgstr "Görüntülerin gösterimlerini yükselt" + +#: ../app/actions/images-actions.c:53 ../app/actions/view-actions.c:75 +msgid "_New View" +msgstr "Yeni _Görünüm" + +#: ../app/actions/images-actions.c:54 +msgid "Create a new display for this image" +msgstr "Bu resim için yeni bir görünüm oluştur" + +#: ../app/actions/images-actions.c:59 +msgid "_Delete Image" +msgstr "_Resmi Sil" + +#: ../app/actions/images-actions.c:60 +msgid "Delete this image" +msgstr "Bu resmi sil" + +#: ../app/actions/layers-actions.c:48 +msgid "Layers Menu" +msgstr "Katmanlar Menüsü" + +#: ../app/actions/layers-actions.c:51 +msgid "_Layer" +msgstr "_Katman" + +#: ../app/actions/layers-actions.c:52 +msgid "Stac_k" +msgstr "Kü_me" + +#: ../app/actions/layers-actions.c:53 +msgid "Te_xt to Selection" +msgstr "Me_tinden Seçime" + +#: ../app/actions/layers-actions.c:54 +msgid "_Mask" +msgstr "_Maske" + +#: ../app/actions/layers-actions.c:55 +msgid "Tr_ansparency" +msgstr "Ş_effaflık" + +#: ../app/actions/layers-actions.c:57 +msgid "_Properties" +msgstr "Ö_zellikler" + +#: ../app/actions/layers-actions.c:59 +msgid "Layer _Mode" +msgstr "Katman Ki_pi" + +#: ../app/actions/layers-actions.c:62 +msgid "Te_xt Tool" +msgstr "Metin _Aracı" + +#: ../app/actions/layers-actions.c:63 +msgid "Activate the text tool on this text layer" +msgstr "Bu metin katmanı üzerinde metin aracını etkinleştir" + +#: ../app/actions/layers-actions.c:68 +msgid "_Edit Layer Attributes..." +msgstr "Katma_n Özniteliklerini Düzenle..." + +#: ../app/actions/layers-actions.c:69 +msgid "Edit the layer's name" +msgstr "Katman adını düzenle" + +#: ../app/actions/layers-actions.c:74 +msgid "_New Layer..." +msgstr "Y_eni Katman..." + +#: ../app/actions/layers-actions.c:75 +msgid "Create a new layer and add it to the image" +msgstr "Yeni bir katman oluştur ve bunu görüntüye ekle" + +#: ../app/actions/layers-actions.c:80 +msgid "_New Layer" +msgstr "_Yeni Katman" + +#: ../app/actions/layers-actions.c:81 +msgid "Create a new layer with last used values" +msgstr "Son kullanılan değerler ile yeni bir katman oluştur" + +#: ../app/actions/layers-actions.c:86 +msgid "New from _Visible" +msgstr "_Görünürden Yeni" + +#: ../app/actions/layers-actions.c:87 +msgid "Create a new layer from what is visible in this image" +msgstr "Bu görüntüdeki bütün görünür öğelerden yeni bir katman oluştur" + +#: ../app/actions/layers-actions.c:92 +msgid "D_uplicate Layer" +msgstr "Katmanı Ç_oğalt" + +#: ../app/actions/layers-actions.c:93 +msgid "Create a duplicate of the layer and add it to the image" +msgstr "Katmanın bir eşini oluştur ve bunu görüntüye ekle" + +#: ../app/actions/layers-actions.c:98 +msgid "_Delete Layer" +msgstr "Katma_nı Sil" + +#: ../app/actions/layers-actions.c:99 +msgid "Delete this layer" +msgstr "Bu katmanı sil" + +#: ../app/actions/layers-actions.c:104 +msgid "_Raise Layer" +msgstr "K_atmanı Yükselt" + +#: ../app/actions/layers-actions.c:105 +msgid "Raise this layer one step in the layer stack" +msgstr "Katman yığını içinde bu katmanı bir sıra yükselt" + +#: ../app/actions/layers-actions.c:110 +msgid "Layer to _Top" +msgstr "_Katmanı En Üste Çıkart" + +#: ../app/actions/layers-actions.c:111 +msgid "Move this layer to the top of the layer stack" +msgstr "Katman yığınında bu katmanı en üste taşı" + +#: ../app/actions/layers-actions.c:116 +msgid "_Lower Layer" +msgstr "K_atmanı Alçalt" + +#: ../app/actions/layers-actions.c:117 +msgid "Lower this layer one step in the layer stack" +msgstr "Katman yığını içinde bu katmanı bir sıra alçalt" + +#: ../app/actions/layers-actions.c:122 +msgid "Layer to _Bottom" +msgstr "Katmanı _En Alta İndir" + +#: ../app/actions/layers-actions.c:123 +msgid "Move this layer to the bottom of the layer stack" +msgstr "Katman yığınında bu katmanı en alta taşı" + +#: ../app/actions/layers-actions.c:128 +msgid "_Anchor Layer" +msgstr "Kat_manı Çıpala" + +#: ../app/actions/layers-actions.c:129 +msgid "Anchor the floating layer" +msgstr "Yüzen katmanı çıpala" + +#: ../app/actions/layers-actions.c:134 +msgid "Merge Do_wn" +msgstr "Aşağı _Birleştir" + +#: ../app/actions/layers-actions.c:135 +msgid "Merge this layer with the one below it" +msgstr "Bu katmanı bir altındaki katmanla birleştir" + +#: ../app/actions/layers-actions.c:140 +msgid "Merge _Visible Layers..." +msgstr "_Görünen Katmanları Birleştir..." + +#: ../app/actions/layers-actions.c:152 +msgid "_Discard Text Information" +msgstr "_Metin Bilgisini Sil" + +#: ../app/actions/layers-actions.c:153 +msgid "Turn this text layer into a normal layer" +msgstr "Bu metin katmanını normal bir katmana çevir" + +#: ../app/actions/layers-actions.c:158 +msgid "Text to _Path" +msgstr "Metinden _Yola" + +#: ../app/actions/layers-actions.c:159 +msgid "Create a path from this text layer" +msgstr "Bu metin katmanından bir yol oluştur" + +#: ../app/actions/layers-actions.c:164 +msgid "Text alon_g Path" +msgstr "Yol boyunca metin" + +#: ../app/actions/layers-actions.c:165 +msgid "Warp this layer's text along the current path" +msgstr "Bu katmanın yazısını mevcut yol boyunca eğ" + +#: ../app/actions/layers-actions.c:170 +msgid "Layer B_oundary Size..." +msgstr "Katman Sınır _Boyutları..." + +#: ../app/actions/layers-actions.c:171 +msgid "Adjust the layer dimensions" +msgstr "Katman boyutlarını ayarla" + +#: ../app/actions/layers-actions.c:176 +msgid "Layer to _Image Size" +msgstr "_Katmanı Resim Boyutuna" + +#: ../app/actions/layers-actions.c:177 +msgid "Resize the layer to the size of the image" +msgstr "Katmanı görüntünün boyutuna göre yeniden boyutlandır" + +#: ../app/actions/layers-actions.c:182 +msgid "_Scale Layer..." +msgstr "Katmanı Ölçe_klendir..." + +#: ../app/actions/layers-actions.c:183 +msgid "Change the size of the layer content" +msgstr "Katman içeriğinin büyüklüğünü değiştir" + +#: ../app/actions/layers-actions.c:189 +msgid "Crop the layer to the extents of the selection" +msgstr "Katmanı seçimin ölçülerine göre kırp" + +#: ../app/actions/layers-actions.c:194 +msgid "Add La_yer Mask..." +msgstr "Katman Maske_si Ekle..." + +#: ../app/actions/layers-actions.c:195 +msgid "Add a mask that allows non-destructive editing of transparency" +msgstr "Yıkıcı olmadan düzenlenebilen saydamlığa izin veren bir maske ekle" + +#: ../app/actions/layers-actions.c:200 +msgid "Add Alpha C_hannel" +msgstr "Alfa Kan_alı Ekle" + +#: ../app/actions/layers-actions.c:201 +msgid "Add transparency information to the layer" +msgstr "Katmana saydamlık bilgisi ekle" + +#: ../app/actions/layers-actions.c:206 +msgid "_Remove Alpha Channel" +msgstr "Görünür Kanalını _Kaldır" + +#: ../app/actions/layers-actions.c:207 +msgid "Remove transparency information from the layer" +msgstr "Katmandaki saydamlık bilgisini kaldır" + +#: ../app/actions/layers-actions.c:215 +msgid "Lock Alph_a Channel" +msgstr "Gö_rünür Kanalını Kilitle" + +#: ../app/actions/layers-actions.c:216 +msgid "Keep transparency information on this layer from being modified" +msgstr "Bu katman üzerindeki saydamlık bilgisini değiştirilmeden koru." + +#: ../app/actions/layers-actions.c:222 +msgid "_Edit Layer Mask" +msgstr "_Katman Maskesini Düzenle" + +#: ../app/actions/layers-actions.c:223 +msgid "Work on the layer mask" +msgstr "Katman maskesi üzerinde çalış" + +#: ../app/actions/layers-actions.c:229 +msgid "S_how Layer Mask" +msgstr "K_atman Maskesini Göster" + +#: ../app/actions/layers-actions.c:235 +msgid "_Disable Layer Mask" +msgstr "Katman _Maskesini Etkisiz Yap" + +#: ../app/actions/layers-actions.c:236 +msgid "Dismiss the effect of the layer mask" +msgstr "Katman maskesini etkisiz yap" + +#: ../app/actions/layers-actions.c:245 +msgid "Apply Layer _Mask" +msgstr "Katm_an Maskesini Uygula" + +#: ../app/actions/layers-actions.c:246 +msgid "Apply the effect of the layer mask and remove it" +msgstr "Katman maskesi etkisini uygula ve bunu kaldır" + +#: ../app/actions/layers-actions.c:251 +msgid "Delete Layer Mas_k" +msgstr "K_atman Maskesini Sil" + +#: ../app/actions/layers-actions.c:252 +msgid "Remove the layer mask and its effect" +msgstr "Katman maskesini ve bunun etkisini kaldır" + +#: ../app/actions/layers-actions.c:260 +msgid "_Mask to Selection" +msgstr "Maskeden _Seçime" + +#: ../app/actions/layers-actions.c:261 +msgid "Replace the selection with the layer mask" +msgstr "Seçim ile katman maskesini birbirlerinin yerine koy" + +#: ../app/actions/layers-actions.c:267 +msgid "Add the layer mask to the current selection" +msgstr "Şimdiki seçime katman maskesini ekle" + +#: ../app/actions/layers-actions.c:273 +msgid "Subtract the layer mask from the current selection" +msgstr "Şimdiki seçimden katman maskesini çıkar" + +#: ../app/actions/layers-actions.c:279 +msgid "Intersect the layer mask with the current selection" +msgstr "Katman maskesi ile şimdiki seçimi kesiştir" + +#: ../app/actions/layers-actions.c:287 +msgid "Al_pha to Selection" +msgstr "Alfa_dan Seçime" + +#: ../app/actions/layers-actions.c:288 +msgid "Replace the selection with the layer's alpha channel" +msgstr "Seçim ile katmanın görünür kanalını birbirlerinin yerine koy" + +#: ../app/actions/layers-actions.c:293 ../app/actions/layers-actions.c:320 +msgid "A_dd to Selection" +msgstr "Seçime _Ekle" + +#: ../app/actions/layers-actions.c:294 +msgid "Add the layer's alpha channel to the current selection" +msgstr "Şimdiki seçime katmanın görünür kanalını ekle" + +#: ../app/actions/layers-actions.c:300 +msgid "Subtract the layer's alpha channel from the current selection" +msgstr "Şimdiki seçimden katmanın görünür kanalını çıkar" + +#: ../app/actions/layers-actions.c:306 +msgid "Intersect the layer's alpha channel with the current selection" +msgstr "Şimdiki seçim ile katmanın görünür kanalını kesiştir" + +#: ../app/actions/layers-actions.c:314 +msgid "_Text to Selection" +msgstr "_Metinden Seçime" + +#: ../app/actions/layers-actions.c:315 +msgid "Replace the selection with the text layer's outline" +msgstr "Seçim ile metin katmanı çerçevesini biribirlerinin yerine koy" + +#: ../app/actions/layers-actions.c:321 +msgid "Add the text layer's outline to the current selection" +msgstr "Metin katmanı çerçevesini şimdiki seçime ekle" + +#: ../app/actions/layers-actions.c:327 +msgid "Subtract the text layer's outline from the current selection" +msgstr "Şimdiki seçimden metin katmanı çerçevesini çıkar" + +#: ../app/actions/layers-actions.c:333 +msgid "Intersect the text layer's outline with the current selection" +msgstr "Şimdiki seçim ile metin katmanı çerçevesini kesiştir" + +#: ../app/actions/layers-actions.c:341 +msgid "Select _Top Layer" +msgstr "En Üs_tteki Katmanı Seç" + +#: ../app/actions/layers-actions.c:342 +msgid "Select the topmost layer" +msgstr "En üstteki katmanı seç" + +#: ../app/actions/layers-actions.c:347 +msgid "Select _Bottom Layer" +msgstr "_En Alttaki Katmanı Seç" + +#: ../app/actions/layers-actions.c:348 +msgid "Select the bottommost layer" +msgstr "En alttaki katmanı seç" + +#: ../app/actions/layers-actions.c:353 +msgid "Select _Previous Layer" +msgstr "Önceki Katmanı _Seç" + +#: ../app/actions/layers-actions.c:354 +msgid "Select the layer above the current layer" +msgstr "Şimdiki katmanın üstündeki katmanı seç" + +#: ../app/actions/layers-actions.c:359 +msgid "Select _Next Layer" +msgstr "Sonraki _Katmanı Seç" + +#: ../app/actions/layers-actions.c:360 +msgid "Select the layer below the current layer" +msgstr "Şimdiki katmanın altındaki katmanı seç" + +#: ../app/actions/layers-actions.c:368 +msgid "Set Opacity" +msgstr "Opaklığı Tanımla" + +#: ../app/actions/layers-commands.c:204 +msgid "Layer Attributes" +msgstr "Katman Öznitelikleri" + +#: ../app/actions/layers-commands.c:207 +msgid "Edit Layer Attributes" +msgstr "Katman Özniteliklerini Düzenle" + +#: ../app/actions/layers-commands.c:250 ../app/actions/layers-commands.c:252 +#: ../app/actions/layers-commands.c:320 ../app/actions/layers-commands.c:324 +#: ../app/widgets/gimpdrawabletreeview.c:326 +#: ../app/widgets/gimplayertreeview.c:835 +msgid "New Layer" +msgstr "Yeni Katman" + +#: ../app/actions/layers-commands.c:255 +msgid "Create a New Layer" +msgstr "Yeni Katman Oluştur" + +#: ../app/actions/layers-commands.c:355 +msgid "Visible" +msgstr "Görünür" + +#: ../app/actions/layers-commands.c:574 +msgid "Set Layer Boundary Size" +msgstr "Katman Sınırlarını Belirle" + +#: ../app/actions/layers-commands.c:615 ../app/core/gimplayer.c:251 +msgid "Scale Layer" +msgstr "Katmanı Ölçekle" + +#: ../app/actions/layers-commands.c:652 +msgid "Crop Layer" +msgstr "Katmanı Kırp" + +#: ../app/actions/layers-commands.c:791 +msgid "Layer Mask to Selection" +msgstr "Katman Maskesinden Seçime" + +#: ../app/actions/layers-commands.c:1039 +msgid "Please select a channel first" +msgstr "Lütfen önce bir kanal seçin" + +#: ../app/actions/layers-commands.c:1047 ../app/core/gimplayer.c:1283 +#: ../app/dialogs/layer-add-mask-dialog.c:81 +msgid "Add Layer Mask" +msgstr "Katman Maskesi Ekle" + +#: ../app/actions/palette-editor-actions.c:44 +msgid "Palette Editor Menu" +msgstr "Palet Düzenleyici Menüsü" + +#: ../app/actions/palette-editor-actions.c:54 +msgid "_Delete Color" +msgstr "_Rengi Sil" + +#: ../app/actions/palette-editor-actions.c:55 +msgid "Delete color" +msgstr "Rengi Sil" + +#: ../app/actions/palette-editor-actions.c:63 +msgid "Edit Active Palette" +msgstr "Etkin Paleti Düzenle" + +#: ../app/actions/palette-editor-actions.c:72 +msgid "New Color from _FG" +msgstr "Ö_nplandan yeni renk" + +#: ../app/actions/palette-editor-actions.c:73 +msgid "New color from foreground color" +msgstr "Önalan renginden yeni renk" + +#: ../app/actions/palette-editor-actions.c:78 +msgid "New Color from _BG" +msgstr "Arkaplandan _yeni renk" + +#: ../app/actions/palette-editor-actions.c:79 +msgid "New color from background color" +msgstr "Artalan renginden yeni renk" + +#: ../app/actions/palette-editor-actions.c:87 +#: ../app/actions/view-actions.c:261 +msgid "Zoom _In" +msgstr "_Yakınlaş" + +#: ../app/actions/palette-editor-actions.c:93 +#: ../app/actions/view-actions.c:255 +msgid "Zoom _Out" +msgstr "_Uzaklaş" + +#: ../app/actions/palette-editor-actions.c:99 +msgid "Zoom _All" +msgstr "_Tamamını Göster" + +#: ../app/actions/palette-editor-commands.c:69 +msgid "Edit Palette Color" +msgstr "Palet Rengini Düzenle" + +#: ../app/actions/palette-editor-commands.c:71 +msgid "Edit Color Palette Entry" +msgstr "Palet Girdi Rengini Düzenle" + +#: ../app/actions/palettes-actions.c:44 +msgid "Palettes Menu" +msgstr "Paletler Menüsü" + +#: ../app/actions/palettes-actions.c:48 +msgid "_New Palette" +msgstr "_Yeni Palet" + +#: ../app/actions/palettes-actions.c:49 +msgid "New palette" +msgstr "Yeni palet" + +#: ../app/actions/palettes-actions.c:54 +msgid "_Import Palette..." +msgstr "_Palet Al..." + +#: ../app/actions/palettes-actions.c:55 +msgid "Import palette" +msgstr "Palet Al" + +#: ../app/actions/palettes-actions.c:60 +msgid "D_uplicate Palette" +msgstr "_Paleti Çoğalt" + +#: ../app/actions/palettes-actions.c:61 +msgid "Duplicate palette" +msgstr "Paleti çoğalt" + +#: ../app/actions/palettes-actions.c:66 +msgid "_Merge Palettes..." +msgstr "_Paletleri Birleştir..." + +#: ../app/actions/palettes-actions.c:67 +msgid "Merge palettes" +msgstr "Paletleri birleştir" + +#: ../app/actions/palettes-actions.c:72 +msgid "Copy Palette _Location" +msgstr "Palet _Yerini Kopyala" + +#: ../app/actions/palettes-actions.c:73 +msgid "Copy palette file location to clipboard" +msgstr "Palet dosyası yerini panoya kopyala" + +#: ../app/actions/palettes-actions.c:78 +msgid "_Delete Palette" +msgstr "P_aleti Sil" + +#: ../app/actions/palettes-actions.c:79 +msgid "Delete palette" +msgstr "Paleti sil" + +#: ../app/actions/palettes-actions.c:84 +msgid "_Refresh Palettes" +msgstr "P_aletleri Tazele" + +#: ../app/actions/palettes-actions.c:85 +msgid "Refresh palettes" +msgstr "Paletleri tazele" + +#: ../app/actions/palettes-actions.c:93 +msgid "_Edit Palette..." +msgstr "Paleti _Düzenle..." + +#: ../app/actions/palettes-actions.c:94 +msgid "Edit palette" +msgstr "Paleti düzenle" + +#: ../app/actions/palettes-commands.c:74 +msgid "Merge Palette" +msgstr "Paletleri Birleştir" + +#: ../app/actions/palettes-commands.c:78 +msgid "Enter a name for the merged palette" +msgstr "Birleştirilmiş palet için bir isim belirle" + +#: ../app/actions/patterns-actions.c:43 +msgid "Patterns Menu" +msgstr "Desenler Menüsü" + +#: ../app/actions/patterns-actions.c:47 +msgid "_Open Pattern as Image" +msgstr "Deseni Görüntü olarak _Aç" + +#: ../app/actions/patterns-actions.c:48 +msgid "Open pattern as image" +msgstr "Deseni resim olarak aç" + +#: ../app/actions/patterns-actions.c:53 +msgid "_New Pattern" +msgstr "_Yeni Desen" + +#: ../app/actions/patterns-actions.c:54 +msgid "New pattern" +msgstr "Yeni Desen" + +#: ../app/actions/patterns-actions.c:59 +msgid "D_uplicate Pattern" +msgstr "_Deseni Çoğalt" + +#: ../app/actions/patterns-actions.c:60 +msgid "Duplicate pattern" +msgstr "Deseni çoğalt" + +#: ../app/actions/patterns-actions.c:65 +msgid "Copy Pattern _Location" +msgstr "Desen _Yerini Kopyala" + +#: ../app/actions/patterns-actions.c:66 +msgid "Copy pattern file location to clipboard" +msgstr "Desen dosyası yerini panoya kopyala" + +#: ../app/actions/patterns-actions.c:71 +msgid "_Delete Pattern" +msgstr "D_eseni Sil" + +#: ../app/actions/patterns-actions.c:72 +msgid "Delete pattern" +msgstr "Deseni sil" + +#: ../app/actions/patterns-actions.c:77 +msgid "_Refresh Patterns" +msgstr "_Desenleri Tazele" + +#: ../app/actions/patterns-actions.c:78 +msgid "Refresh patterns" +msgstr "Desenleri tazele" + +#: ../app/actions/patterns-actions.c:86 +msgid "_Edit Pattern..." +msgstr "_Deseni Düzenle..." + +#: ../app/actions/patterns-actions.c:87 +msgid "Edit pattern" +msgstr "Deseni düzenle" + +#: ../app/actions/plug-in-actions.c:83 +msgid "Filte_rs" +msgstr "_Filtreler" + +#: ../app/actions/plug-in-actions.c:84 +msgid "Recently Used" +msgstr "Son Kullanılan" + +#: ../app/actions/plug-in-actions.c:85 +msgid "_Blur" +msgstr "B_ulanıklaştır" + +#: ../app/actions/plug-in-actions.c:86 +msgid "_Noise" +msgstr "_Gürültü" + +#: ../app/actions/plug-in-actions.c:87 +msgid "Edge-De_tect" +msgstr "Kenar Tanı_ma" + +#: ../app/actions/plug-in-actions.c:88 +msgid "En_hance" +msgstr "Ar_ttır" + +#: ../app/actions/plug-in-actions.c:89 +msgid "C_ombine" +msgstr "B_irleştir" + +#: ../app/actions/plug-in-actions.c:90 +msgid "_Generic" +msgstr "_Genel" + +#: ../app/actions/plug-in-actions.c:91 +msgid "_Light and Shadow" +msgstr "_Işık ve Gölge" + +#: ../app/actions/plug-in-actions.c:92 +msgid "_Distorts" +msgstr "_Bozulma" + +#: ../app/actions/plug-in-actions.c:93 +msgid "_Artistic" +msgstr "_Sanatsal" + +#: ../app/actions/plug-in-actions.c:94 +msgid "_Decor" +msgstr "_Süsleme" + +#: ../app/actions/plug-in-actions.c:96 +msgid "_Render" +msgstr "_Tarama" + +#: ../app/actions/plug-in-actions.c:97 +msgid "_Clouds" +msgstr "_Bulutlar" + +#: ../app/actions/plug-in-actions.c:98 +msgid "_Nature" +msgstr "_Doğa" + +#: ../app/actions/plug-in-actions.c:100 +msgid "_Web" +msgstr "_Web" + +#: ../app/actions/plug-in-actions.c:101 +msgid "An_imation" +msgstr "_Canlandırma" + +#: ../app/actions/plug-in-actions.c:104 +msgid "Reset all _Filters" +msgstr "_Tüm Filtreleri Sıfırla" + +#: ../app/actions/plug-in-actions.c:105 +msgid "Reset all plug-ins to their default settings" +msgstr "Tüm eklentileri öntanımlı ayarlarına sıfırla" + +#: ../app/actions/plug-in-actions.c:113 +msgid "Re_peat Last" +msgstr "_Sonuncuyu Tekrarla" + +#: ../app/actions/plug-in-actions.c:114 +msgid "Rerun the last used plug-in using the same settings" +msgstr "Son kullanılan eklentiyi kullanılmış aynı ayarlarla yeniden çalıştır" + +#: ../app/actions/plug-in-actions.c:119 +msgid "R_e-Show Last" +msgstr "S_onuncuyu Yeniden Göster" + +#: ../app/actions/plug-in-actions.c:120 +msgid "Show the last used plug-in dialog again" +msgstr "Son kullanılan eklentinin iletişim kutusunu yine göster" + +#: ../app/actions/plug-in-actions.c:503 +#, c-format +msgid "Re_peat \"%s\"" +msgstr "Y_inele \"%s\"" + +#: ../app/actions/plug-in-actions.c:504 +#, c-format +msgid "R_e-Show \"%s\"" +msgstr "Yeniden _Göster \"%s\"" + +#: ../app/actions/plug-in-actions.c:520 +msgid "Repeat Last" +msgstr "Sonuncuyu Tekrarla" + +#: ../app/actions/plug-in-actions.c:522 +msgid "Re-Show Last" +msgstr "Sonuncuyu Yeniden Göster" + +#: ../app/actions/plug-in-commands.c:262 +msgid "Reset all Filters" +msgstr "Tüm Filtreleri Sıfıla" + +#: ../app/actions/plug-in-commands.c:281 +msgid "Do you really want to reset all filters to default values?" +msgstr "Tüm filtreleri öntanımlı değerlerine geri almak istiyor musunuz?" + +#: ../app/actions/quick-mask-actions.c:42 +msgid "Quick Mask Menu" +msgstr "Hızlı Maske Menüsü" + +#: ../app/actions/quick-mask-actions.c:46 +msgid "_Configure Color and Opacity..." +msgstr "Rengi ve Işık Geçirmezliği _Yapılandır..." + +#: ../app/actions/quick-mask-actions.c:54 +msgid "Toggle _Quick Mask" +msgstr "_Hızlı Maskeyi Değiştir" + +#: ../app/actions/quick-mask-actions.c:54 +#: ../app/display/gimpdisplayshell.c:1169 +msgid "Toggle Quick Mask" +msgstr "Hızlı Maskeyi Değiştir" + +#: ../app/actions/quick-mask-actions.c:63 +msgid "Mask _Selected Areas" +msgstr "Seçilmiş Alanları Maskele" + +#: ../app/actions/quick-mask-actions.c:68 +msgid "Mask _Unselected Areas" +msgstr "Seçilme_miş Alanları Maskele" + +#: ../app/actions/quick-mask-commands.c:105 +msgid "Quick Mask Attributes" +msgstr "Öznitelikleri Hızlı Maskele" + +#: ../app/actions/quick-mask-commands.c:108 +msgid "Edit Quick Mask Attributes" +msgstr "Öznitelikleri Hızlı Maskelemeyi Düzenle" + +#: ../app/actions/quick-mask-commands.c:110 +msgid "Edit Quick Mask Color" +msgstr "Rengi Hızlı Maskelemeyi Düzenle" + +#: ../app/actions/quick-mask-commands.c:111 +msgid "_Mask opacity:" +msgstr "_Maske Işık Geçirmezliği:" + +#: ../app/actions/sample-points-actions.c:40 +msgid "Sample Point Menu" +msgstr "Örnek Nokta Menüsü" + +#: ../app/actions/select-actions.c:44 +msgid "Selection Editor Menu" +msgstr "Seçim Düzenleyici Menüsü" + +#: ../app/actions/select-actions.c:47 +msgid "_Select" +msgstr "_Seç" + +#: ../app/actions/select-actions.c:50 +msgid "select|_All" +msgstr "_Tümünü Seç" + +#: ../app/actions/select-actions.c:51 +msgid "Select everything" +msgstr "Her şeyi seç" + +#: ../app/actions/select-actions.c:56 +msgid "select|_None" +msgstr "Hiçbirini Seçme" + +#: ../app/actions/select-actions.c:57 +msgid "Dismiss the selection" +msgstr "Seçimi kaldır" + +#: ../app/actions/select-actions.c:62 +msgid "_Invert" +msgstr "_Tersine Çevir" + +#: ../app/actions/select-actions.c:63 +msgid "Invert the selection" +msgstr "Seçimi tersine çevir" + +#: ../app/actions/select-actions.c:68 +msgid "_Float" +msgstr "_Yüzdür" + +#: ../app/actions/select-actions.c:69 +msgid "Create a floating selection" +msgstr "Yüzen bir seçim oluştur" + +#: ../app/actions/select-actions.c:74 +msgid "Fea_ther..." +msgstr "Y_umuşat..." + +#: ../app/actions/select-actions.c:75 +msgid "Blur the selection border so that it fades out smoothly" +msgstr "Seçimin kenarını hafifçe kaybolacak şekilde bulanıklaştır." + +#: ../app/actions/select-actions.c:80 +msgid "_Sharpen" +msgstr "_Keskinleştir" + +#: ../app/actions/select-actions.c:81 +msgid "Remove fuzzyness from the selection" +msgstr "Seçimden donukluğu kaldır" + +#: ../app/actions/select-actions.c:86 +msgid "S_hrink..." +msgstr "K_üçült..." + +#: ../app/actions/select-actions.c:87 +msgid "Contract the selection" +msgstr "Seçimi daralt" + +#: ../app/actions/select-actions.c:92 +msgid "_Grow..." +msgstr "_Büyüt..." + +#: ../app/actions/select-actions.c:93 +msgid "Enlarge the selection" +msgstr "Seçimi genişlet" + +#: ../app/actions/select-actions.c:98 +msgid "Bo_rder..." +msgstr "_Sınır..." + +#: ../app/actions/select-actions.c:99 +msgid "Replace the selection by its border" +msgstr "Seçimi sınırları ile değiştir" + +#: ../app/actions/select-actions.c:104 +msgid "Save to _Channel" +msgstr "_Kanala Kaydet" + +#: ../app/actions/select-actions.c:105 +msgid "Save the selection to a channel" +msgstr "Seçimi bir kanala kaydet" + +#: ../app/actions/select-actions.c:110 +msgid "_Stroke Selection..." +msgstr "S_eçimi Darbele..." + +#: ../app/actions/select-actions.c:111 +msgid "Paint along the selection outline" +msgstr "Seçim çerçevesi boyunca boya" + +#: ../app/actions/select-actions.c:116 +msgid "_Stroke Selection" +msgstr "_Seçimi Darbele" + +#: ../app/actions/select-actions.c:117 +msgid "Stroke the selection with last used values" +msgstr "Son kullanılmış değerlerle seçimi darbele" + +#: ../app/actions/select-commands.c:153 ../app/core/gimpselection.c:167 +msgid "Feather Selection" +msgstr "Seçimi Yumuşat" + +#: ../app/actions/select-commands.c:157 +msgid "Feather selection by" +msgstr "Seçimi yumuşat:" + +#: ../app/actions/select-commands.c:191 ../app/core/gimpselection.c:174 +msgid "Shrink Selection" +msgstr "Seçimi Küçült" + +#: ../app/actions/select-commands.c:195 +msgid "Shrink selection by" +msgstr "Seçimi küçült" + +#: ../app/actions/select-commands.c:203 +msgid "_Shrink from image border" +msgstr "Görüntü sınırlarından _küçült" + +#: ../app/actions/select-commands.c:228 ../app/core/gimpselection.c:173 +msgid "Grow Selection" +msgstr "Seçimi Büyüt" + +#: ../app/actions/select-commands.c:232 +msgid "Grow selection by" +msgstr "Seçimi büyüt" + +#: ../app/actions/select-commands.c:255 ../app/core/gimpselection.c:172 +msgid "Border Selection" +msgstr "Sınırdan Seçim" + +#: ../app/actions/select-commands.c:259 +msgid "Border selection by" +msgstr "Kenarlık seçimi" + +#. Feather button +#: ../app/actions/select-commands.c:268 +msgid "_Feather border" +msgstr "_Sınırı yumuşat" + +#. Edge lock button +#: ../app/actions/select-commands.c:281 +msgid "_Lock selection to image edges" +msgstr "Seçimden görüntü kenarlarına _kilitle" + +#: ../app/actions/select-commands.c:330 ../app/actions/select-commands.c:362 +#: ../app/actions/vectors-commands.c:379 ../app/actions/vectors-commands.c:412 +#: ../app/dialogs/stroke-dialog.c:299 +msgid "There is no active layer or channel to stroke to." +msgstr "Etkin katman ya da darbelenecek kanal yok." + +#: ../app/actions/select-commands.c:336 ../app/core/gimpselection.c:151 +msgid "Stroke Selection" +msgstr "Seçimi Darbele" + +#: ../app/actions/templates-actions.c:42 +msgid "Templates Menu" +msgstr "Şablonlar Menüsü" + +#: ../app/actions/templates-actions.c:46 +msgid "_Create Image from Template" +msgstr "Şablondan Görüntü _Oluştur" + +#: ../app/actions/templates-actions.c:47 +msgid "Create a new image from the selected template" +msgstr "Seçilmiş şablondan yeni bir görüntü oluştur" + +#: ../app/actions/templates-actions.c:52 +msgid "_New Template..." +msgstr "_Yeni Şablon..." + +#: ../app/actions/templates-actions.c:53 +msgid "Create a new template" +msgstr "Yeni şablon oluştur" + +#: ../app/actions/templates-actions.c:58 +msgid "D_uplicate Template..." +msgstr "Şablonu Ç_oğalt..." + +#: ../app/actions/templates-actions.c:59 +msgid "Duplicate the selected template" +msgstr "Seçilmiş şablonu çoğalt" + +#: ../app/actions/templates-actions.c:64 +msgid "_Edit Template..." +msgstr "Şablonu _Düzenle..." + +#: ../app/actions/templates-actions.c:65 +msgid "Edit the selected template" +msgstr "Seçilmiş şablonu düzenle" + +#: ../app/actions/templates-actions.c:70 +msgid "_Delete Template" +msgstr "Şablonu _Düzenle" + +#: ../app/actions/templates-actions.c:71 +msgid "Delete the selected template" +msgstr "Seçilmiş şablonu sil" + +#: ../app/actions/templates-commands.c:113 +msgid "New Template" +msgstr "Yeni Şablon" + +#: ../app/actions/templates-commands.c:116 +msgid "Create a New Template" +msgstr "Yeni bir Şablon Oluştur" + +#: ../app/actions/templates-commands.c:175 +#: ../app/actions/templates-commands.c:178 +msgid "Edit Template" +msgstr "Şablonu Düzenle" + +#: ../app/actions/templates-commands.c:213 +msgid "Delete Template" +msgstr "Şablonu Sil" + +#: ../app/actions/templates-commands.c:239 +#, c-format +msgid "" +"Are you sure you want to delete template '%s' from the list and from disk?" +msgstr "" +"'%s' şablonunu listeden ve diskinizden silmek istediğinize emin misiniz?" + +#: ../app/actions/text-editor-actions.c:44 +msgid "Open" +msgstr "Aç" + +#: ../app/actions/text-editor-actions.c:45 +msgid "Load text from file" +msgstr "Metin dosyasından yükle" + +#: ../app/actions/text-editor-actions.c:50 ../app/core/gimp-edit.c:445 +msgid "Clear" +msgstr "Temizle" + +#: ../app/actions/text-editor-actions.c:51 +msgid "Clear all text" +msgstr "Tüm metni temizle" + +#: ../app/actions/text-editor-actions.c:59 +msgid "LTR" +msgstr "Sol > Sağ" + +#: ../app/actions/text-editor-actions.c:60 +msgid "From left to right" +msgstr "Soldan sağa" + +#: ../app/actions/text-editor-actions.c:65 +msgid "RTL" +msgstr "Sağ > Sol" + +#: ../app/actions/text-editor-actions.c:66 +msgid "From right to left" +msgstr "Sağdan sola" + +#: ../app/actions/text-editor-commands.c:63 +msgid "Open Text File (UTF-8)" +msgstr "Metin Dosyasını Aç (UTF-8)" + +#: ../app/actions/text-editor-commands.c:144 +#: ../app/config/gimpconfig-file.c:59 ../app/core/gimpbrush-load.c:140 +#: ../app/core/gimpbrush-load.c:420 ../app/core/gimpbrushgenerated-load.c:73 +#: ../app/core/gimpbrushpipe-load.c:81 ../app/core/gimpcurve-load.c:55 +#: ../app/core/gimpgradient-load.c:62 ../app/core/gimppalette-load.c:76 +#: ../app/core/gimppalette-load.c:270 ../app/core/gimppalette-load.c:314 +#: ../app/core/gimppalette-load.c:368 ../app/core/gimppalette-load.c:456 +#: ../app/core/gimppalette-load.c:599 ../app/core/gimppattern-load.c:76 +#: ../app/tools/gimpcurvestool.c:623 ../app/tools/gimplevelstool.c:743 +#: ../app/xcf/xcf.c:329 +#, c-format +msgid "Could not open '%s' for reading: %s" +msgstr "'%s' dosyası okumak için açılamadı: %s" + +#: ../app/actions/tool-options-actions.c:56 +msgid "Tool Options Menu" +msgstr "Araç Seçenekleri Menüsü" + +#: ../app/actions/tool-options-actions.c:60 +msgid "_Save Options To" +msgstr "S_eçeneklerin Kaydedileceği Yer:" + +#: ../app/actions/tool-options-actions.c:64 +msgid "_Restore Options From" +msgstr "Seçeneklerin Geri Yükleneceği Yer:" + +#: ../app/actions/tool-options-actions.c:68 +msgid "Re_name Saved Options" +msgstr "K_ayıtlı Seçenekleri Yeniden Adlandır" + +#: ../app/actions/tool-options-actions.c:72 +msgid "_Delete Saved Options" +msgstr "Kayıtlı _Seçenekleri Sil" + +#: ../app/actions/tool-options-actions.c:76 +msgid "_New Entry..." +msgstr "_Yeni Girdi..." + +#: ../app/actions/tool-options-actions.c:81 +msgid "R_eset Tool Options" +msgstr "Alet Seçeneklerini _Sıfırla" + +#: ../app/actions/tool-options-actions.c:82 +msgid "Reset to default values" +msgstr "Öntanımlı değerlerine geri al" + +#: ../app/actions/tool-options-actions.c:87 +msgid "Reset _all Tool Options" +msgstr "T_üm Araç Seçeneklerini Sıfırla" + +#: ../app/actions/tool-options-actions.c:88 +msgid "Reset all tool options" +msgstr "Tüm araç seçeneklerini sıfırla" + +#: ../app/actions/tool-options-commands.c:72 +msgid "Save Tool Options" +msgstr "Kaydetme Aracı Seçenekleri" + +#: ../app/actions/tool-options-commands.c:76 +msgid "Enter a name for the saved options" +msgstr "Kaydedilen seçenekler için bir yol adı girin" + +#: ../app/actions/tool-options-commands.c:77 +#: ../app/actions/tool-options-commands.c:247 +#: ../app/actions/tool-options-commands.c:264 +msgid "Saved Options" +msgstr "Kayıtlı Seçenekler" + +#: ../app/actions/tool-options-commands.c:140 +msgid "Rename Saved Tool Options" +msgstr "Kaydedilmiş Araç Seçeneklerini Yeniden Adlandır" + +#: ../app/actions/tool-options-commands.c:144 +msgid "Enter a new name for the saved options" +msgstr "Kaydedilmeş seçenekler için yeni bir ad girin" + +#: ../app/actions/tool-options-commands.c:187 +msgid "Reset Tool Options" +msgstr "Alet Seçeneklerini Sıfırla" + +#: ../app/actions/tool-options-commands.c:210 +msgid "Do you really want to reset all tool options to default values?" +msgstr "" +"Tüm alet seçeneklerini öntanımlı değerlerine geri almak istiyor musunuz?" + +#: ../app/actions/tools-actions.c:47 +msgid "Tools Menu" +msgstr "Araçlar Menüsü" + +#: ../app/actions/tools-actions.c:50 +msgid "_Tools" +msgstr "_Araçlar" + +#: ../app/actions/tools-actions.c:51 +msgid "_Selection Tools" +msgstr "Seçim Araçla_rı" + +#: ../app/actions/tools-actions.c:52 +msgid "_Paint Tools" +msgstr "_Boyama Araçları" + +#: ../app/actions/tools-actions.c:53 +msgid "_Transform Tools" +msgstr "_Dönüşüm Araçları" + +#: ../app/actions/tools-actions.c:54 +msgid "_Color Tools" +msgstr "R_enk Araçları" + +#: ../app/actions/tools-actions.c:57 +msgid "R_aise Tool" +msgstr "A_leti Yükselt" + +#: ../app/actions/tools-actions.c:58 +msgid "Raise tool" +msgstr "Aracı yükselt" + +#: ../app/actions/tools-actions.c:63 +msgid "Ra_ise to Top" +msgstr "En üste yükselt" + +#: ../app/actions/tools-actions.c:64 +msgid "Raise tool to top" +msgstr "Aracı en üste yükselt" + +#: ../app/actions/tools-actions.c:69 +msgid "L_ower Tool" +msgstr "Aracı Al_çalt" + +#: ../app/actions/tools-actions.c:70 +msgid "Lower tool" +msgstr "Aracı alçalt" + +#: ../app/actions/tools-actions.c:75 +msgid "Lo_wer to Bottom" +msgstr "Alta A_lçalt" + +#: ../app/actions/tools-actions.c:76 +msgid "Lower tool to bottom" +msgstr "Katmanı alta alçalt" + +#: ../app/actions/tools-actions.c:81 +msgid "_Reset Order & Visibility" +msgstr "Düzeni ve Görünürlüğü _Sıfırla" + +#: ../app/actions/tools-actions.c:82 +msgid "Reset tool order and visibility" +msgstr "Araç düzenini ve görünürlüğü sıfırla" + +#: ../app/actions/tools-actions.c:90 +msgid "_Show in Toolbox" +msgstr "_Araç kutusunda göster" + +#: ../app/actions/tools-actions.c:99 +msgid "_By Color" +msgstr "_Renge Göre" + +#: ../app/actions/tools-actions.c:100 +msgid "Select regions with similar colors" +msgstr "Bölgeleri benzer renklerle seç" + +#: ../app/actions/tools-actions.c:105 +msgid "_Arbitrary Rotation..." +msgstr "_Rastgele Dönüşüm..." + +#: ../app/actions/tools-actions.c:106 +msgid "Rotate by an arbitrary angle" +msgstr "İsteğe bağlı bir açı ile döndür" + +#: ../app/actions/vectors-actions.c:44 +msgid "Paths Menu" +msgstr "Yollar Menüsü" + +#: ../app/actions/vectors-actions.c:48 +msgid "Path _Tool" +msgstr "Yol _Aracı" + +#: ../app/actions/vectors-actions.c:53 +msgid "_Edit Path Attributes..." +msgstr "Yol Özniteliklerini _Düzenle..." + +#: ../app/actions/vectors-actions.c:54 +msgid "Edit path attributes" +msgstr "Yol özniteliklerini düzenle" + +#: ../app/actions/vectors-actions.c:59 +msgid "_New Path..." +msgstr "_Yeni Yol..." + +#: ../app/actions/vectors-actions.c:60 +msgid "New path..." +msgstr "Yeni yol..." + +#: ../app/actions/vectors-actions.c:65 +msgid "_New Path" +msgstr "_Yeni Yol" + +#: ../app/actions/vectors-actions.c:66 +msgid "New path with last values" +msgstr "Son değerlerle yeni yol" + +#: ../app/actions/vectors-actions.c:71 +msgid "D_uplicate Path" +msgstr "Yolu _Çoğalt" + +#: ../app/actions/vectors-actions.c:72 +msgid "Duplicate path" +msgstr "Yolu çoğalt" + +#: ../app/actions/vectors-actions.c:77 +msgid "_Delete Path" +msgstr "Yolu _Sil" + +#: ../app/actions/vectors-actions.c:78 ../app/core/core-enums.c:920 +msgid "Delete path" +msgstr "Yolu sil" + +#: ../app/actions/vectors-actions.c:83 +msgid "Merge _Visible Paths" +msgstr "_Görünür Yolları Birleştir" + +#: ../app/actions/vectors-actions.c:88 +msgid "_Raise Path" +msgstr "Yolu Y_ükselt" + +#: ../app/actions/vectors-actions.c:89 +msgid "Raise path" +msgstr "Yolu yükselt" + +#: ../app/actions/vectors-actions.c:94 +msgid "Raise Path to _Top" +msgstr "Yolu En _Üste Yükselt" + +#: ../app/actions/vectors-actions.c:95 +msgid "Raise path to top" +msgstr "Yolu en üste yükselt" + +#: ../app/actions/vectors-actions.c:100 +msgid "_Lower Path" +msgstr "Yolu _Alçalt" + +#: ../app/actions/vectors-actions.c:101 +msgid "Lower path" +msgstr "Yolu alçalt" + +#: ../app/actions/vectors-actions.c:106 +msgid "Lower Path to _Bottom" +msgstr "Yolu Al_ta Alçalt" + +#: ../app/actions/vectors-actions.c:107 +msgid "Lower path to bottom" +msgstr "Yolu alta alçalt" + +#: ../app/actions/vectors-actions.c:112 +msgid "Stro_ke Path..." +msgstr "Yolu Dar_bele..." + +#: ../app/actions/vectors-actions.c:113 +msgid "Paint along the path" +msgstr "Yol boyunca boya" + +#: ../app/actions/vectors-actions.c:118 +msgid "Stro_ke Path" +msgstr "Yolu Dar_bele" + +#: ../app/actions/vectors-actions.c:119 +msgid "Paint along the path with last values" +msgstr "Son değerlerle yol boyunca boya" + +#: ../app/actions/vectors-actions.c:124 +msgid "Co_py Path" +msgstr "Yolu Ko_pyala" + +#: ../app/actions/vectors-actions.c:129 +msgid "Paste Pat_h" +msgstr "Yo_lu Yapıştır" + +#: ../app/actions/vectors-actions.c:134 +msgid "E_xport Path..." +msgstr "Yolu D_ışa Aktar..." + +#: ../app/actions/vectors-actions.c:139 +msgid "I_mport Path..." +msgstr "Yolu İ_çe Aktar..." + +#: ../app/actions/vectors-actions.c:162 +msgid "Path to Sele_ction" +msgstr "Yoldan S_eçime" + +#: ../app/actions/vectors-actions.c:163 ../app/tools/gimpvectortool.c:1912 +msgid "Path to selection" +msgstr "Yoldan seçime" + +#: ../app/actions/vectors-actions.c:168 +msgid "Fr_om Path" +msgstr "Y_oldan" + +#: ../app/actions/vectors-actions.c:174 +msgid "Add" +msgstr "Ekle" + +#: ../app/actions/vectors-actions.c:180 ../app/base/base-enums.c:119 +msgid "Subtract" +msgstr "Çıkar" + +#: ../app/actions/vectors-actions.c:186 +msgid "Intersect" +msgstr "Kesiştir" + +#: ../app/actions/vectors-actions.c:194 +msgid "Selecti_on to Path" +msgstr "Seçi_mden Yola" + +#: ../app/actions/vectors-actions.c:195 ../app/actions/vectors-actions.c:201 +msgid "Selection to path" +msgstr "Seçimden yola" + +#: ../app/actions/vectors-actions.c:200 +msgid "To _Path" +msgstr "Yol_a" + +#: ../app/actions/vectors-actions.c:206 +msgid "Selection to Path (_Advanced)" +msgstr "Seçimden Yola (_Gelişmiş)" + +#: ../app/actions/vectors-actions.c:207 +msgid "Advanced options" +msgstr "Gelişmiş seçenekler" + +#: ../app/actions/vectors-commands.c:138 +msgid "Path Attributes" +msgstr "Yol Öznitelikleri" + +#: ../app/actions/vectors-commands.c:141 +msgid "Edit Path Attributes" +msgstr "Yol Özniteliklerini Düzenle" + +#: ../app/actions/vectors-commands.c:165 ../app/actions/vectors-commands.c:166 +#: ../app/actions/vectors-commands.c:188 +msgid "New Path" +msgstr "Yeni Yol" + +#: ../app/actions/vectors-commands.c:169 +msgid "New Path Options" +msgstr "Yeni Yol Seçenekleri" + +#: ../app/actions/vectors-commands.c:305 ../app/pdb/paths-cmds.c:640 +#: ../app/pdb/vectors-cmds.c:1253 +msgid "Path to Selection" +msgstr "Yoldan Seçime" + +#: ../app/actions/vectors-commands.c:385 ../app/tools/gimpvectoroptions.c:199 +#: ../app/tools/gimpvectortool.c:1945 ../app/vectors/gimpvectors.c:200 +msgid "Stroke Path" +msgstr "Yolu Darbele" + +#: ../app/actions/view-actions.c:67 +msgid "_View" +msgstr "_Görünüm" + +#: ../app/actions/view-actions.c:68 +msgid "_Zoom" +msgstr "_Odakla" + +#: ../app/actions/view-actions.c:69 +msgid "_Padding Color" +msgstr "_Doldurma Rengi" + +#: ../app/actions/view-actions.c:71 +msgid "Move to Screen" +msgstr "Ekrana Taşı" + +#: ../app/actions/view-actions.c:76 +msgid "Create another view on this image" +msgstr "Bu görüntü üzerinde yeni bir görünüm oluştur" + +#: ../app/actions/view-actions.c:81 +msgid "_Close" +msgstr "_Kapat" + +#: ../app/actions/view-actions.c:82 +msgid "Close this image window" +msgstr "Bu görüntü penceresini kapat" + +#: ../app/actions/view-actions.c:87 +msgid "_Fit Image in Window" +msgstr "Görüntüyü Pencereye _Uydur" + +#: ../app/actions/view-actions.c:88 +msgid "Adjust the zoom ratio so that the image becomes fully visible" +msgstr "" +"Yakınlaşma oranını ayarlayın, böylelikle görüntü tamamen görünür olacak" + +#: ../app/actions/view-actions.c:93 +msgid "Fi_ll Window" +msgstr "Pencereyi Dold_ur" + +#: ../app/actions/view-actions.c:94 +msgid "Adjust the zoom ratio so that the entire window is used" +msgstr "Yakınlaştırma oranını ayarla böylece bütün pencere kullanılmış olur" + +#: ../app/actions/view-actions.c:99 ../app/actions/view-actions.c:579 +msgid "Re_vert Zoom" +msgstr "Yakınlaşmayı _Geri Al" + +#: ../app/actions/view-actions.c:100 +msgid "Restore the previous zoom level" +msgstr "Önceki yakınlaşma düzeyini geri yükle" + +#: ../app/actions/view-actions.c:105 +msgid "Na_vigation Window" +msgstr "Dolaşma Penceresi" + +#: ../app/actions/view-actions.c:106 +msgid "Show an overview window for this image" +msgstr "Bu görüntü için bir gözden geçirme penceresi aç" + +#: ../app/actions/view-actions.c:111 +msgid "Display _Filters..." +msgstr "Süzgeçleri G_örüntüle..." + +#: ../app/actions/view-actions.c:112 +msgid "Configure filters applied to this view" +msgstr "Bu görünüme uygulanan süzgeçleri yapılandır" + +#: ../app/actions/view-actions.c:117 +msgid "Shrink _Wrap" +msgstr "Daralt ve _Bük" + +#: ../app/actions/view-actions.c:118 +msgid "Reduce the image window to the size of the image display" +msgstr "Görüntü penceresini görüntü gösterimi boyutuna küçült" + +#: ../app/actions/view-actions.c:132 +msgid "_Dot for Dot" +msgstr "_Bire Bir" + +#: ../app/actions/view-actions.c:133 +msgid "A pixel on the screen represents an image pixel" +msgstr "Ekran üzerindeki bir benek görüntünün bir beneğini belirtiyor" + +#: ../app/actions/view-actions.c:139 +msgid "Show _Selection" +msgstr "_Seçimi Göster" + +#: ../app/actions/view-actions.c:140 +msgid "Display the selection outline" +msgstr "Seçim çerçevesini görüntüle" + +#: ../app/actions/view-actions.c:146 +msgid "Show _Layer Boundary" +msgstr "_Katman Sınırını Göster" + +#: ../app/actions/view-actions.c:147 +msgid "Draw a border around the active layer" +msgstr "Etkin katman etrafında bir sınır çiz" + +#: ../app/actions/view-actions.c:153 +msgid "Show _Guides" +msgstr "Kıla_vuzları Göster" + +#: ../app/actions/view-actions.c:154 +msgid "Display the image's guides" +msgstr "Görüntünün kılavuzlarını göster" + +#: ../app/actions/view-actions.c:160 +msgid "S_how Grid" +msgstr "Izgarayı G_öster" + +#: ../app/actions/view-actions.c:161 +msgid "Display the image's grid" +msgstr "Görüntünün ızgarasını göster" + +#: ../app/actions/view-actions.c:167 +msgid "Show Sample Points" +msgstr "Örnek Noktaları Göster" + +#: ../app/actions/view-actions.c:168 +msgid "Display the image's color sample points" +msgstr "Görüntünün örnek renk noktalarını göster" + +#: ../app/actions/view-actions.c:174 +msgid "Sn_ap to Guides" +msgstr "_Rehbere Yapıştır" + +#: ../app/actions/view-actions.c:175 +msgid "Tool operations snap to guides" +msgstr "Araç işlemleri kılavuza yaslanır" + +#: ../app/actions/view-actions.c:181 +msgid "Sna_p to Grid" +msgstr "I_zgaraya Yapıştır" + +#: ../app/actions/view-actions.c:182 +msgid "Tool operations snap to the grid" +msgstr "Araç işlemleri kılavuz çizgisine yaslanır" + +#: ../app/actions/view-actions.c:188 +msgid "Snap to _Canvas Edges" +msgstr "_Alan Kenarı'na yaslan" + +#: ../app/actions/view-actions.c:189 +msgid "Tool operations snap to the canvas edges" +msgstr "Araç işlemleri alan kenarlarına yaslanır" + +#: ../app/actions/view-actions.c:195 +msgid "Snap t_o Active Path" +msgstr "Aktif _Yola Yapıştır" + +#: ../app/actions/view-actions.c:196 +msgid "Tool operations snap to the active path" +msgstr "Geçerli yolu taşı" + +#: ../app/actions/view-actions.c:202 +msgid "Show _Menubar" +msgstr "_Menü Çubuğunu Göster" + +#: ../app/actions/view-actions.c:203 +msgid "Show this window's menubar" +msgstr "Bu pencerenin menü çubuğunu göster" + +#: ../app/actions/view-actions.c:209 +msgid "Show R_ulers" +msgstr "C_etvelleri Göster" + +#: ../app/actions/view-actions.c:210 +msgid "Show this window's rulers" +msgstr "Bu pencerenin cetvellerini göster" + +#: ../app/actions/view-actions.c:216 +msgid "Show Scroll_bars" +msgstr "Ka_ydırma Çubuklarını Göster" + +#: ../app/actions/view-actions.c:217 +msgid "Show this window's scrollbars" +msgstr "Bu pencerenin kaydırma çubuklarını göster" + +#: ../app/actions/view-actions.c:223 +msgid "Show S_tatusbar" +msgstr "_Durum Çubuğunu Göster" + +#: ../app/actions/view-actions.c:224 +msgid "Show this window's statusbar" +msgstr "Bu pencerenin durum çubuğunu göster" + +#: ../app/actions/view-actions.c:230 +msgid "Fullscr_een" +msgstr "Tam _Ekran" + +#: ../app/actions/view-actions.c:231 +msgid "Toggle fullscreen view" +msgstr "Tam ekran görünüm geçişi" + +#: ../app/actions/view-actions.c:292 +msgid "1_6:1 (1600%)" +msgstr "1_6:1 (%%1600)" + +#: ../app/actions/view-actions.c:293 +msgid "Zoom 16:1" +msgstr "16:1 Yakınlaş" + +#: ../app/actions/view-actions.c:298 +msgid "_8:1 (800%)" +msgstr "_8:1 (%%800)" + +#: ../app/actions/view-actions.c:299 +msgid "Zoom 8:1" +msgstr "8:1 Yakınlaş" + +#: ../app/actions/view-actions.c:304 +msgid "_4:1 (400%)" +msgstr "_4:1 (%%400)" + +#: ../app/actions/view-actions.c:305 +msgid "Zoom 4:1" +msgstr "4:1 Yakınlaş" + +#: ../app/actions/view-actions.c:310 +msgid "_2:1 (200%)" +msgstr "_2:1 (%200)" + +#: ../app/actions/view-actions.c:311 +msgid "Zoom 2:1" +msgstr "2:1 Yakınlaş" + +#: ../app/actions/view-actions.c:316 +msgid "_1:1 (100%)" +msgstr "_1:1 (%%100)" + +#: ../app/actions/view-actions.c:317 +msgid "Zoom 1:1" +msgstr "1:1 Yakınlaş" + +#: ../app/actions/view-actions.c:322 +msgid "1:_2 (50%)" +msgstr "1:_2 (%%50)" + +#: ../app/actions/view-actions.c:323 +msgid "Zoom 1:2" +msgstr "1:2 Yakınlaş" + +#: ../app/actions/view-actions.c:328 +msgid "1:_4 (25%)" +msgstr "1:_4 (%%25)" + +#: ../app/actions/view-actions.c:329 +msgid "Zoom 1:4" +msgstr "1:4 Yakınlaş" + +#: ../app/actions/view-actions.c:334 +msgid "1:_8 (12.5%)" +msgstr "1:_8 (%%12.5)" + +#: ../app/actions/view-actions.c:335 +msgid "Zoom 1:8" +msgstr "1:8 Yakınlaş" + +#: ../app/actions/view-actions.c:340 +msgid "1:1_6 (6.25%)" +msgstr "1:1_6 (%%6.25)" + +#: ../app/actions/view-actions.c:341 +msgid "Zoom 1:16" +msgstr "1:16 Yakınlaş" + +#: ../app/actions/view-actions.c:346 +msgid "Othe_r..." +msgstr "_Diğer..." + +#: ../app/actions/view-actions.c:347 +msgid "Set a custom zoom factor" +msgstr "Özel bir yakınlaşma katsayısı ayarla" + +#: ../app/actions/view-actions.c:355 +msgid "From _Theme" +msgstr "_Temadan" + +#: ../app/actions/view-actions.c:356 +msgid "Use the current theme's background color" +msgstr "Şimdiki tema artalanının rengini kullan" + +#: ../app/actions/view-actions.c:361 +msgid "_Light Check Color" +msgstr "_Açık Denetim Rengi" + +#: ../app/actions/view-actions.c:362 +msgid "Use the light check color" +msgstr "Açık denetim rengini kullan" + +#: ../app/actions/view-actions.c:367 +msgid "_Dark Check Color" +msgstr "_Koyu Denetim Rengi" + +#: ../app/actions/view-actions.c:368 +msgid "Use the dark check color" +msgstr "Koyu denetim rengini kullan" + +#: ../app/actions/view-actions.c:373 +msgid "Select _Custom Color..." +msgstr "Öze_l Renk Seç..." + +#: ../app/actions/view-actions.c:374 +msgid "Use an arbitrary color" +msgstr "İsteğe bağlı bir renk kullan" + +#: ../app/actions/view-actions.c:379 +msgid "As in _Preferences" +msgstr "Ter_cihlerdeki Gibi" + +#: ../app/actions/view-actions.c:380 +msgid "Reset padding color to what's configured in preferences" +msgstr "Doldurma rengini yeğlenenlerdeki yapılandırılana göre yeniden ayarla" + +#: ../app/actions/view-actions.c:571 +#, c-format +msgid "Re_vert Zoom (%d%%)" +msgstr "Yakınlaşmayı Ge_ri Al (%d%%)" + +#: ../app/actions/view-actions.c:708 +#, c-format +msgid "Othe_r (%s)..." +msgstr "Diğe_r (%s)..." + +#: ../app/actions/view-actions.c:717 +#, c-format +msgid "_Zoom (%s)" +msgstr "_Yakınlaş (%s)" + +#: ../app/actions/view-commands.c:613 +msgid "Set Canvas Padding Color" +msgstr "Tuval Doldurma Rengini Ayarla" + +#: ../app/actions/view-commands.c:615 +msgid "Set Custom Canvas Padding Color" +msgstr "Özel Tuval Doldurma Rengini Ayarla" + +#: ../app/actions/window-actions.c:168 +#, c-format +msgid "Screen %s" +msgstr "Ekran %s" + +#: ../app/actions/window-actions.c:170 +#, c-format +msgid "Move this window to screen %s" +msgstr "Bu pencereyi ekrana taşı %s" + +#: ../app/actions/windows-actions.c:79 +msgid "_Windows" +msgstr "_Pencereler" + +#: ../app/actions/windows-actions.c:80 +msgid "_Recently Closed Docks" +msgstr "_Son Kapatılan Rıhtımlar" + +#: ../app/actions/windows-actions.c:81 +msgid "_Dockable Dialogs" +msgstr "_Rıhtımlanabilir Kutular" + +#: ../app/actions/windows-actions.c:84 +msgid "Tool_box" +msgstr "Araç _kutusu" + +#: ../app/actions/windows-actions.c:85 +msgid "Raise the toolbox" +msgstr "Araç kutusunu yükselt" + +#: ../app/base/base-enums.c:23 +msgid "Smooth" +msgstr "Yumuşak" + +#: ../app/base/base-enums.c:24 +msgid "Freehand" +msgstr "Serbest Çizim" + +#: ../app/base/base-enums.c:55 ../app/base/base-enums.c:125 +#: ../app/core/core-enums.c:1202 +msgid "Value" +msgstr "Değer" + +#: ../app/base/base-enums.c:56 ../app/core/core-enums.c:1197 +#: ../app/tools/gimpcolorbalancetool.c:296 +#: ../app/tools/gimphuesaturationtool.c:252 +msgid "Red" +msgstr "Kırmızı" + +#: ../app/base/base-enums.c:57 ../app/core/core-enums.c:1198 +#: ../app/tools/gimpcolorbalancetool.c:305 +#: ../app/tools/gimphuesaturationtool.c:254 +msgid "Green" +msgstr "Yeşil" + +#: ../app/base/base-enums.c:58 ../app/core/core-enums.c:1199 +#: ../app/tools/gimpcolorbalancetool.c:314 +#: ../app/tools/gimphuesaturationtool.c:256 +msgid "Blue" +msgstr "Mavi" + +#: ../app/base/base-enums.c:59 +msgid "Alpha" +msgstr "Alfa" + +#: ../app/base/base-enums.c:60 ../app/display/gimpdisplayshell-title.c:233 +#: ../app/widgets/widgets-enums.c:84 +msgid "RGB" +msgstr "RGB" + +#: ../app/base/base-enums.c:111 +msgid "Normal" +msgstr "Normal" + +#: ../app/base/base-enums.c:112 +msgid "Dissolve" +msgstr "Çözülme" + +#: ../app/base/base-enums.c:113 +msgid "Behind" +msgstr "Arkada" + +#: ../app/base/base-enums.c:114 +msgid "Multiply" +msgstr "Çoklandır" + +#: ../app/base/base-enums.c:115 +msgid "Screen" +msgstr "Ekran" + +#: ../app/base/base-enums.c:116 +msgid "Overlay" +msgstr "Üstekoyum" + +#: ../app/base/base-enums.c:117 +msgid "Difference" +msgstr "Fark" + +#: ../app/base/base-enums.c:118 +msgid "Addition" +msgstr "Toplam" + +#: ../app/base/base-enums.c:120 +msgid "Darken only" +msgstr "Sadece Koyulaşan" + +#: ../app/base/base-enums.c:121 +msgid "Lighten only" +msgstr "Sadece Açıklaşan" + +#: ../app/base/base-enums.c:122 ../app/core/core-enums.c:1200 +msgid "Hue" +msgstr "Renk" + +#: ../app/base/base-enums.c:123 ../app/core/core-enums.c:1201 +msgid "Saturation" +msgstr "Doygunluk" + +#: ../app/base/base-enums.c:124 ../app/tools/gimppaintoptions-gui.c:174 +msgid "Color" +msgstr "Renk" + +#: ../app/base/base-enums.c:126 +msgid "Divide" +msgstr "Böl" + +#: ../app/base/base-enums.c:127 +msgid "Dodge" +msgstr "Temizleme" + +#: ../app/base/base-enums.c:128 +msgid "Burn" +msgstr "Yakma" + +#: ../app/base/base-enums.c:129 +msgid "Hard light" +msgstr "Şiddetli Işık" + +#: ../app/base/base-enums.c:130 +msgid "Soft light" +msgstr "Kısık Işık" + +#: ../app/base/base-enums.c:131 +msgid "Grain extract" +msgstr "Tane çıkarma" + +#: ../app/base/base-enums.c:132 +msgid "Grain merge" +msgstr "Tane birleştirme" + +#: ../app/base/base-enums.c:133 +msgid "Color erase" +msgstr "Renk silme" + +#: ../app/base/base-enums.c:134 +msgid "Erase" +msgstr "Sil" + +#: ../app/base/base-enums.c:135 +msgid "Replace" +msgstr "Yerine Koy" + +#: ../app/base/base-enums.c:136 +msgid "Anti erase" +msgstr "Karşı silme" + +#: ../app/base/tile-swap.c:553 +msgid "" +"Unable to open swap file. GIMP has run out of memory and cannot use the swap " +"file. Some parts of your images may be corrupted. Try to save your work " +"using different filenames, restart GIMP and check the location of the swap " +"directory in your Preferences." +msgstr "" +"Takas dosyası açılamadı. GIMP bellek üzerinden çalışıyor ve takas dosyasını " +"kullanamaz. Görüntünün bazı bölümleri bozulmuş olabilir. Çalışmanızı farklı " +"dosya adları kullanarak kaydetmeyi deneyin, GIMP'i yeniden başlatın ve " +"Yeğlenenleriniz içinden takas dizininin yerini denetleyin." + +#: ../app/base/tile-swap.c:568 +#, c-format +msgid "Failed to resize swap file: %s" +msgstr "Takas dosyası yeniden boyutlandırılamadı: %s" + +#: ../app/config/gimpconfig-file.c:68 ../app/core/gimpbrushgenerated-save.c:63 +#: ../app/core/gimpcurve-save.c:53 ../app/core/gimpgradient-save.c:51 +#: ../app/core/gimpgradient-save.c:145 ../app/core/gimppalette-save.c:56 +#: ../app/gui/themes.c:239 ../app/tools/gimpcurvestool.c:676 +#: ../app/tools/gimplevelstool.c:796 ../app/vectors/gimpvectors-export.c:83 +#: ../app/xcf/xcf.c:422 +#, c-format +msgid "Could not open '%s' for writing: %s" +msgstr "'%s' dosyası yazma için açılamadı: %s" + +#: ../app/config/gimpconfig-file.c:79 ../app/config/gimpconfig-file.c:102 +#, c-format +msgid "Error writing '%s': %s" +msgstr "'%s' yazarken hata: %s" + +#: ../app/config/gimpconfig-file.c:90 +#, c-format +msgid "Error reading '%s': %s" +msgstr "'%s' okunurken hata: %s" + +#: ../app/config/gimpconfig-file.c:132 +#, c-format +msgid "" +"There was an error parsing your '%s' file. Default values will be used. A " +"backup of your configuration has been created at '%s'." +msgstr "" +"'%s' dosyası ayrıştırılırken bir hata oldu. Öntanımlı değerler kullanılacak. " +"Yapılandırmanızın yedeğinin oluşturulduğu yer '%s'." + +#. Not all strings defined here are used in the user interface +#. * (the preferences dialog mainly) and only those that are should +#. * be marked for translation. +#. +#: ../app/config/gimprc-blurbs.h:13 +msgid "" +"When enabled, an image will become the active image when its image window " +"receives the focus. This is useful for window managers using \"click to " +"focus\"." +msgstr "" +"Bu özelliği etkinleştirdiğinizde, tıkladığınız resim penceresi aktif pencere " +"haline gelecek. Bu özellik tıklayarak etkinleştirme yapan pencere " +"yöneticilerini kullananlar için yararlıdır." + +#: ../app/config/gimprc-blurbs.h:23 +msgid "" +"Sets the canvas padding color used if the padding mode is set to custom " +"color." +msgstr "" +"Eğer doldurma rengi özel renge ayarlıysa, tuval doldurma rengi kullanılmış " +"olarak ayarlanır." + +#: ../app/config/gimprc-blurbs.h:27 +msgid "Specifies how the area around the image should be drawn." +msgstr "Görüntü etrafındaki alanın nasıl çizileceğini belirler." + +#: ../app/config/gimprc-blurbs.h:33 +msgid "How to handle embedded color profiles when opening a file." +msgstr "Gömülü kullanım profillerinin bir dosya açarken nasıl ele alınacağı." + +#: ../app/config/gimprc-blurbs.h:36 +msgid "Ask for confirmation before closing an image without saving." +msgstr "" +"Bir görüntünün kaydedilmeden kapatılmasından önce doğrulama için sorar." + +#: ../app/config/gimprc-blurbs.h:39 +msgid "Sets the pixel format to use for mouse pointers." +msgstr "Fare imleçleri için kullanılacak benek biçimini ayarlar." + +#: ../app/config/gimprc-blurbs.h:42 +msgid "Sets the type of mouse pointers to use." +msgstr "Kullanılacak fare imleçlerinin türünü ayarlar." + +#: ../app/config/gimprc-blurbs.h:45 +msgid "" +"Context-dependent mouse pointers are helpful. They are enabled by default. " +"However, they require overhead that you may want to do without." +msgstr "" +"İçerik-bağımlı fare imleçleri yararlıdır. Öntanımlı olarak etkindirler. " +"Bununla birlikte, getirecekleri ek yük nedeniyle tercih etmeyebilirsiniz." + +#: ../app/config/gimprc-blurbs.h:53 +msgid "" +"When enabled, this will ensure that each pixel of an image gets mapped to a " +"pixel on the screen." +msgstr "" +"Etkin olduğunda, bir görüntüdeki her beneğin ekran üzerindeki bir benek ile " +"eşlenmesini sağlayacak." + +#: ../app/config/gimprc-blurbs.h:75 +msgid "" +"This is the distance in pixels where Guide and Grid snapping activates." +msgstr "Bu uzaklık klavuz ve ızgara yanaştırmasının etkinleştiği uzaklıktır." + +#: ../app/config/gimprc-blurbs.h:79 +msgid "" +"Tools such as fuzzy-select and bucket fill find regions based on a seed-fill " +"algorithm. The seed fill starts at the initially selected pixel and " +"progresses in all directions until the difference of pixel intensity from " +"the original is greater than a specified threshold. This value represents " +"the default threshold." +msgstr "" +"Bulanıklık seçimi ve kova doldurma gibi araçlar, bir parçacık doldurma " +"algoritmasındaki bölge tabanında bulunur. Parçacık doldurma, seçilen beneğin " +"başlangıcında ve özgünün belirli eşik değerinden daha büyük olan piksel " +"yoğunluğunun farkına kadar tüm işlemlerle başlar. Bu değer, öntanımlı eşik " +"seviyesini belirtir." + +#: ../app/config/gimprc-blurbs.h:92 +msgid "" +"The window type hint that is set on dock windows. This may affect the way " +"your window manager decorates and handles dock windows." +msgstr "" +"Pencere türü ipucu panel pencereleri üzerinden ayarlanır. Bu işlem, sizin " +"pencere yöneticisi süslemelerinizi ve panel pencereleri işlemlerinizi " +"etkileyebilir." + +#: ../app/config/gimprc-blurbs.h:123 +msgid "When enabled, the selected brush will be used for all tools." +msgstr "Etkin olduğunda, seçilmiş fırça bütün araçlar için kullanılacak." + +#: ../app/config/gimprc-blurbs.h:129 +msgid "When enabled, the selected gradient will be used for all tools." +msgstr "" +"Etkin olduğunda, seçilmiş renk geçişi bütün araçlar için kullanılacak." + +#: ../app/config/gimprc-blurbs.h:132 +msgid "When enabled, the selected pattern will be used for all tools." +msgstr "Etkin olduğunda, seçilmiş desen bütün araçlar için kullanılacak." + +#: ../app/config/gimprc-blurbs.h:146 +msgid "Sets the browser used by the help system." +msgstr "Tarayıcının yardım sistemi tarafından kullanılacağını ayarlar." + +#: ../app/config/gimprc-blurbs.h:154 +msgid "Sets the text to appear in image window status bars." +msgstr "" +"Görüntü penceresi durum çubukları içindeki metnin görüleceğini ayarlar." + +#: ../app/config/gimprc-blurbs.h:157 +msgid "Sets the text to appear in image window titles." +msgstr "Görüntü penceresi başlıkları içindeki metnin görüleceğini ayarlar." + +#: ../app/config/gimprc-blurbs.h:160 +msgid "" +"When enabled, this will ensure that the full image is visible after a file " +"is opened, otherwise it will be displayed with a scale of 1:1." +msgstr "" +"Etkin olduğunda, bir dosya açıldıktan sonra tüm görüntünün görünebilir " +"olmasını sağlar, aksi halde 1:1 ölçek ile görüntülenecek." + +#: ../app/config/gimprc-blurbs.h:164 +msgid "" +"Install a private colormap; might be useful on 8-bit (256 colors) displays." +msgstr "" +"Özel bir renk haritası yüklemek: 8-ikil (256 renk) görüntülemeler üzerinde " +"yararlı olabilir." + +#: ../app/config/gimprc-blurbs.h:167 +msgid "" +"Sets the level of interpolation used for scaling and other transformations." +msgstr "" +"Diğer dönüşümler ve ölçeklemeler için kullanılacak ara değerleme düzeyini " +"ayarlar." + +#: ../app/config/gimprc-blurbs.h:174 +msgid "How many recently opened image filenames to keep on the File menu." +msgstr "" +"Dosya menüsünde tutulacak son açılmış görüntü dosyası adlarının sayısıdır." + +#: ../app/config/gimprc-blurbs.h:177 +msgid "" +"Speed of marching ants in the selection outline. This value is in " +"milliseconds (less time indicates faster marching)." +msgstr "" +"Seçim çerçevesi içinde yürüyen karıncaların hızı. Bu değer milisaniye " +"cinsindendir (düşük zaman hızlı yürümeyi belirtir)." + +#: ../app/config/gimprc-blurbs.h:181 +msgid "" +"GIMP will warn the user if an attempt is made to create an image that would " +"take more memory than the size specified here." +msgstr "" +"Eğer bir teşebbüs burada belirlenmiş boyuttan daha çok bellek kaplayacak bir " +"görüntü oluşturmaya çalışırsa, GIMP kullanıcıyı uyaracak." + +#: ../app/config/gimprc-blurbs.h:185 +msgid "When enabled, GIMP will show mnemonics in menus." +msgstr "" +"Etkin olduğunda, GIMP menüler içinde anımsama yöntemlerini gösterecek." + +#: ../app/config/gimprc-blurbs.h:188 +msgid "" +"Generally only a concern for 8-bit displays, this sets the minimum number of " +"system colors allocated for GIMP." +msgstr "" +"Genellikle sadece 8-ikil görüntülemeler için bir ilişkisi vardır, bu GIMP " +"için sistemde tahsis edilmiş renklerin asgari sayısını ayarlar." + +#: ../app/config/gimprc-blurbs.h:198 +msgid "" +"Sets the monitor's horizontal resolution, in dots per inch. If set to 0, " +"forces the X server to be queried for both horizontal and vertical " +"resolution information." +msgstr "" +"Monitörün yatay çözünürlüğünü inç başına nokta cinsinden ayarlar. Eğer 0 " +"ayarlanırsa, X sunucusunun her iki yatay ve dikey çözünürlük bilgisini " +"sorgulanması için zorlayacak." + +#: ../app/config/gimprc-blurbs.h:203 +msgid "" +"Sets the monitor's vertical resolution, in dots per inch. If set to 0, " +"forces the X server to be queried for both horizontal and vertical " +"resolution information." +msgstr "" +"Monitörün dikey çözünürlüğünü inç başına nokta cinsinden ayarlar. Eğer 0 " +"ayarlanırsa, X sunucusunun her iki yatay ve dikey çözünürlük bilgisini " +"sorgulanması için zorlayacak." + +#: ../app/config/gimprc-blurbs.h:208 +msgid "" +"If enabled, the move tool sets the edited layer or path as active. This " +"used to be the default behaviour in older versions." +msgstr "" +"Seçili olduğunda, taşıma aracı katman ya da yolu etkin olacak şekilde " +"ayarlar. Bu eski sürümlerde öntanımlı davranış olarak kullanılır." + +#: ../app/config/gimprc-blurbs.h:212 +msgid "" +"Sets the size of the navigation preview available in the lower right corner " +"of the image window." +msgstr "" +"Dolaşma önizlemesi boyutunu görüntü penceresinin sağ alt köşesinde " +"kullanılabilir olarak ayarlar." + +#: ../app/config/gimprc-blurbs.h:216 +msgid "Sets how many processors GIMP should try to use simultaneously." +msgstr "" +"GIMP'in eş zamanlı olarak kaç tane işlemci kullanmayı deneyeceğini ayarlar." + +#: ../app/config/gimprc-blurbs.h:229 +msgid "" +"When enabled, the X server is queried for the mouse's current position on " +"each motion event, rather than relying on the position hint. This means " +"painting with large brushes should be more accurate, but it may be slower. " +"Perversely, on some X servers enabling this option results in faster " +"painting." +msgstr "" +"Etkin olduğunda, X sunucusu her hareketli olayda, konum ipucuna dayanmaktan " +"ziyade farenin mevcut konumu için sorgulanacak. Bunun anlamı, geniş " +"fırçalarla boyama daha eksiksiz olacak, ama yavaş olabilir. Aksilikle, bazı " +"X sunucuları üzerinde bu seçeneği etkinleştirmek daha hızlı boyama ile " +"sonuçlanır." + +#: ../app/config/gimprc-blurbs.h:245 +msgid "" +"Sets whether GIMP should create previews of layers and channels. Previews in " +"the layers and channels dialog are nice to have but they can slow things " +"down when working with large images." +msgstr "" +"GIMP'in katmanların ve kanalların önizlemelerini oluşturup oluşturmayacağı. " +"Katmanlar ve kanallar kutusu içindeki önizlemelerin olması güzel ama geniş " +"görüntüler ile çalışırken nesneleri yavaşlatabilir." + +#: ../app/config/gimprc-blurbs.h:250 +msgid "" +"Sets the preview size used for layers and channel previews in newly created " +"dialogs." +msgstr "" +"Katmanların ve kanalların önizleme boyutları için kullanılacak yeni " +"oluşturulmuş iletişim kutularının önizlemelerini ayarlar." + +#: ../app/config/gimprc-blurbs.h:254 +msgid "" +"When enabled, the image window will automatically resize itself whenever the " +"physical image size changes." +msgstr "" +"Etkin olduğunda, görüntü penceresi her ne zaman fiziksel görüntü boyutu " +"değişirse otomatik olarak kendini yeniden boyutlandıracaktır." + +#: ../app/config/gimprc-blurbs.h:258 +msgid "" +"When enabled, the image window will automatically resize itself when zooming " +"into and out of images." +msgstr "" +"Etkin olduğunda, görüntü penceresi görüntülere yaklaştırıldığında ve " +"uzaklaştırıldığında otomatik olarak kendini yeniden boyutlandıracaktır." + +#: ../app/config/gimprc-blurbs.h:262 +msgid "Let GIMP try to restore your last saved session on each startup." +msgstr "" +"Her başlangıçta kaydedilmiş son oturumunuzu geri yüklemesini denemek için " +"GIMP'e izin verin." + +#: ../app/config/gimprc-blurbs.h:265 +msgid "" +"Remember the current tool, pattern, color, and brush across GIMP sessions." +msgstr "" +"GIMP oturumları arasında mevcut aracı, deseni, rengi ve fırçayı hatırla." + +#: ../app/config/gimprc-blurbs.h:269 +msgid "" +"Keep a permanent record of all opened and saved files in the Recent " +"Documents list." +msgstr "" +"Son Belgeler listesinde tüm açılmış ve kaydedilmiş dosyaların kalıcı bir " +"kaydını tut." + +#: ../app/config/gimprc-blurbs.h:273 +msgid "Save the positions and sizes of the main dialogs when GIMP exits." +msgstr "" +"GIMP'ten çıkılırken, ana kutuların konumlarını ve boyutlarını kaydet." + +#: ../app/config/gimprc-blurbs.h:276 +msgid "Save the tool options when GIMP exits." +msgstr "GIMP'ten çıkılırken, araç seçeneklerini kaydet." + +#: ../app/config/gimprc-blurbs.h:282 +msgid "" +"When enabled, all paint tools will show a preview of the current brush's " +"outline." +msgstr "" +"Etkin olduğunda, tüm boyama araçları mevcut fırça çerçevesinin bir " +"önizlemesini gösterecek." + +#: ../app/config/gimprc-blurbs.h:286 +msgid "" +"When enabled, dialogs will show a help button that gives access to the " +"related help page. Without this button, the help page can still be reached " +"by pressing F1." +msgstr "" +"Etkin olduğunda, iletişim kutuları ilgili sayfanın yardımına girebilmek için " +"bir yardım butonu gösterecek. Bu buton olmadan, bu yardım sayfasına F1'e " +"basılarak erişilebilir." + +#: ../app/config/gimprc-blurbs.h:291 +msgid "" +"When enabled, the mouse pointer will be shown over the image while using a " +"paint tool." +msgstr "" +"Etkin olduğunda, bir boyama aracı kullanıldığında fare imleci görüntü " +"üzerinde gösterilecek." + +#: ../app/config/gimprc-blurbs.h:295 +msgid "" +"When enabled, the menubar is visible by default. This can also be toggled " +"with the \"View->Show Menubar\" command." +msgstr "" +"Etkin olduğunda, menü çubuğu öntanımlı olarak görünür olacak. Bu, \"Görünüm-" +">Menü Çubuğunu Göster\" komutuyla da değiştirilebilir." + +#: ../app/config/gimprc-blurbs.h:299 +msgid "" +"When enabled, the rulers are visible by default. This can also be toggled " +"with the \"View->Show Rulers\" command." +msgstr "" +"Etkin olduğunda, cetveller öntanımlı olarak görünür olacak. Bu, \"Görünüm-" +">Cetvelleri Göster\" komutuyla da değiştirilebilir." + +#: ../app/config/gimprc-blurbs.h:303 +msgid "" +"When enabled, the scrollbars are visible by default. This can also be " +"toggled with the \"View->Show Scrollbars\" command." +msgstr "" +"Etkin olduğunda, kaydırma çubukları öntanımlı olarak görünür olacak. Bu, " +"\"Görünüm->Kaydırma Çubuklarını Göster\" komutuyla da değiştirilebilir." + +#: ../app/config/gimprc-blurbs.h:307 +msgid "" +"When enabled, the statusbar is visible by default. This can also be toggled " +"with the \"View->Show Statusbar\" command." +msgstr "" +"Etkin olduğunda, durum çubuğu öntanımlı olarak görünür olacak. Bu, \"Görünüm-" +">Durum Çubuğunu Göster\" komutuyla da değiştirilebilir." + +#: ../app/config/gimprc-blurbs.h:311 +msgid "" +"When enabled, the selection is visible by default. This can also be toggled " +"with the \"View->Show Selection\" command." +msgstr "" +"Etkin olduğunda, seçim öntanımlı olarak görünür olacak. Bu, \"Görünüm-" +">Seçimi Göster\" komutuyla da değiştirilebilir." + +#: ../app/config/gimprc-blurbs.h:315 +msgid "" +"When enabled, the layer boundary is visible by default. This can also be " +"toggled with the \"View->Show Layer Boundary\" command." +msgstr "" +"Etkin olduğunda, katman sınırı öntanımlı olarak görünür olacak. Bu, " +"\"Görünüm->Katman Sınırını Göster\" komutuyla da değiştirilebilir." + +#: ../app/config/gimprc-blurbs.h:319 +msgid "" +"When enabled, the guides are visible by default. This can also be toggled " +"with the \"View->Show Guides\" command." +msgstr "" +"Etkin olduğunda, kılavuzlar öntanımlı olarak görünür olacak. Bu, \"Görünüm-" +">Kılavuzları Göster\" komutuyla da değiştirilebilir." + +#: ../app/config/gimprc-blurbs.h:323 +msgid "" +"When enabled, the grid is visible by default. This can also be toggled with " +"the \"View->Show Grid\" command." +msgstr "" +"Eğer etkinleştirilirse kılavuz çizgileri görüntülenir. Bu işlem aynı zamanda " +"\"Görüntüle - Kılavuzu Göster\" komutuyla da yapılabilir." + +#: ../app/config/gimprc-blurbs.h:327 +msgid "" +"When enabled, the sample points are visible by default. This can also be " +"toggled with the \"View->Show Sample Points\" command." +msgstr "" +"Etkin olduğunda, örnek noktalar öntanımlı olarak görünür olacak. Bu, " +"\"Görünüm->Örnek Noktaları Göster\" komutuyla da değiştirilebilir." + +#: ../app/config/gimprc-blurbs.h:331 +msgid "Show a tooltip when the pointer hovers over an item." +msgstr "İmleç bir öğe üzerinde durduğunda, bir araç ipucu göster." + +#: ../app/config/gimprc-blurbs.h:334 +msgid "What to do when the space bar is pressed in the image window." +msgstr "" +"Bir görüntü penceresi içinde ara çubuğuna basıldığında ne yapılacağı." + +#: ../app/config/gimprc-blurbs.h:337 +msgid "" +"Sets the swap file location. GIMP uses a tile based memory allocation " +"scheme. The swap file is used to quickly and easily swap tiles out to disk " +"and back in. Be aware that the swap file can easily get very large if GIMP " +"is used with large images. Also, things can get horribly slow if the swap " +"file is created on a folder that is mounted over NFS. For these reasons, it " +"may be desirable to put your swap file in \"/tmp\"." +msgstr "" +"Takas dosyası konumunu ayarlar. GIMP döşeme temelli bir bellek dağıtım " +"şeması kullanır. Takas dosyaları, döşemeleri çabuk ve kolayca disk dışına " +"takas etme ve geri almak için kullanılır. Eğer GIMP büyük görüntülerle " +"çalışırsa takas dosyalarının çabucak büyüyebileceğini unutmayın. Ayrıca " +"takas dosyası NFS üzerinde bir dizin oluşturursa bazı şeyler korkunç biçimde " +"yavaşlayabilir. Bu sebeplerden dolayı, takas dosyanızı \"/tmp\" içine koymak " +"daha iyi olabilir." + +#: ../app/config/gimprc-blurbs.h:346 +msgid "When enabled, menus can be torn off." +msgstr "Etkin olduğunda, menüler kapatılabilir." + +#: ../app/config/gimprc-blurbs.h:349 +msgid "" +"When enabled, dock windows (the toolbox and palettes) are set to be " +"transient to the active image window. Most window managers will keep the " +"dock windows above the image window then, but it may also have other effects." +msgstr "" +"Etkin olduğunda, rıhtım pencereleri (araç çubukları ve paletler) kullanılan " +"görüntü penceresi için geçici olarak ayarlı olacak. Çoğu pencere " +"yöneticileri rıhtım pencerelerini görüntü penceresinin altında tutacaktır, " +"ama bunun başka etkileri de olabilir." + +#: ../app/config/gimprc-blurbs.h:355 +msgid "" +"When enabled, you can change keyboard shortcuts for menu items by hitting a " +"key combination while the menu item is highlighted." +msgstr "" +"Etkin olduğunda, menü öğeleri için klavye kısayollarını, menü öğesi " +"aydınlatılmış olduğunda bir tuş birleşimi ile değiştirebilirsiniz." + +#: ../app/config/gimprc-blurbs.h:359 +msgid "Save changed keyboard shortcuts when GIMP exits." +msgstr "GIMP'ten çıkıldığında, değiştirilmiş klavye kısayollarını kaydet." + +#: ../app/config/gimprc-blurbs.h:362 +msgid "Restore saved keyboard shortcuts on each GIMP startup." +msgstr "Her GIMP başladığında kaydedilmiş klavye kısayollarını geri yükle." + +#: ../app/config/gimprc-blurbs.h:365 +msgid "" +"Sets the folder for temporary storage. Files will appear here during the " +"course of running GIMP. Most files will disappear when GIMP exits, but some " +"files are likely to remain, so it is best if this folder not be one that is " +"shared by other users." +msgstr "" +"Geçici depolama için dizin ayarlar. GIMP'in çalışması esnasında dosyalar " +"burada görülecek. Çoğu dosya GIMP'ten çıkıldığında kaybolacak, ama bazı " +"dosyalar muhtemelen duracak, bu yüzden en iyisi bu dizini diğer " +"kullanıcılarla paylaşmamak." + +#: ../app/config/gimprc-blurbs.h:377 +msgid "Sets the size of the thumbnail shown in the Open dialog." +msgstr "Açılış kutusunda gösterilecek küçük görüntü boyutunu ayarlar." + +#: ../app/config/gimprc-blurbs.h:380 +msgid "" +"The thumbnail in the Open dialog will be automatically updated if the file " +"being previewed is smaller than the size set here." +msgstr "" +"Eğer dosya önizlemesi burada ayarlanan boyuttan daha küçükse, Açılış " +"kutusundaki küçük görüntü otomatik olarak güncelleştirilecek." + +#: ../app/config/gimprc-blurbs.h:384 +msgid "" +"When the amount of pixel data exceeds this limit, GIMP will start to swap " +"tiles to disk. This is a lot slower but it makes it possible to work on " +"images that wouldn't fit into memory otherwise. If you have a lot of RAM, " +"you may want to set this to a higher value." +msgstr "" +"Benek verisi miktarı bu sınırı aşarsa, GIMP takas dosyasını diske yazmaya " +"başlayacak. Bu çok daha yavaştır, ama başka yolla belleğe uymayan " +"görüntülerde çalışılmasını mümkün kılar. Çok fazla rastgele erişimli " +"belleğiniz varsa, bu değeri daha yüksek olarak ayarlamak isteyebilirsiniz." + +#: ../app/config/gimprc-blurbs.h:390 +msgid "Show the current foreground and background colors in the toolbox." +msgstr "Mevcut önalan ve artalan renklerini araç kutusu içinde göster." + +#: ../app/config/gimprc-blurbs.h:393 +msgid "" +"Show the currently selected brush, pattern and gradient in the toolbox." +msgstr "" +"Mevcut seçilmiş fırçayı, deseni ve renk geçişini araç kutusu içinde göster." + +#: ../app/config/gimprc-blurbs.h:396 +msgid "Show the currently active image in the toolbox." +msgstr "Mevcut etkin görüntüyü araç kutusu içinde göster." + +#: ../app/config/gimprc-blurbs.h:402 +msgid "" +"The window type hint that is set on the toolbox. This may affect how your " +"window manager decorates and handles the toolbox window." +msgstr "" +"Araç kutusu üzerinde ayarlı pencere türü ipucudur. Bu, pencere yöneticisinin " +"araç kutusu penceresini nasıl ele alacağına ve süsleyeceğine etki edebilir." + +#: ../app/config/gimprc-blurbs.h:406 +msgid "Sets the manner in which transparency is displayed in images." +msgstr "Görüntülerde gösterilecek saydamlığın davranışını ayarlar." + +#: ../app/config/gimprc-blurbs.h:409 +msgid "Sets the size of the checkerboard used to display transparency." +msgstr "" +"Saydamlığı görüntülemek için kullanılan dama tahtasının boyutunu ayarlar." + +#: ../app/config/gimprc-blurbs.h:412 +msgid "" +"When enabled, GIMP will not save an image if it has not been changed since " +"it was opened." +msgstr "" +"Etkin olduğunda, eğer bir görüntü açıldıktan sonra değiştirilmemişse GIMP " +"bunu bunu kaydetmeyecek." + +#: ../app/config/gimprc-blurbs.h:416 +msgid "" +"Sets the minimal number of operations that can be undone. More undo levels " +"are kept available until the undo-size limit is reached." +msgstr "" +"Geri alınabilir işlemlerin asgari sayısını ayarlar. Daha çok geri alma " +"düzeyi, yapılmama-boyutu sınırına ulaşılana kadar kullanılabilir olarak " +"tutulur." + +#: ../app/config/gimprc-blurbs.h:420 +msgid "" +"Sets an upper limit to the memory that is used per image to keep operations " +"on the undo stack. Regardless of this setting, at least as many undo-levels " +"as configured can be undone." +msgstr "" +"Geri alma işlemleri için ayrılan belleğe üst limit belirleyin. Bu limitin " +"dikkatsizce belirlenmesi sonucunda değişiklikler geri alınamaz hale " +"gelebilir." + +#: ../app/config/gimprc-blurbs.h:425 +msgid "Sets the size of the previews in the Undo History." +msgstr "Geri Alma Geçmişindeki önizlemelerin boyutlarını ayarlar." + +#: ../app/config/gimprc-blurbs.h:428 +msgid "When enabled, pressing F1 will open the help browser." +msgstr "Etkin olduğunda, F1'e basmak yardım tarayıcısını açacak." + +#: ../app/config/gimprc-blurbs.h:439 +#, c-format +msgid "" +"Sets the external web browser to be used. This can be an absolute path or " +"the name of an executable to search for in the user's PATH. If the command " +"contains '%s' it will be replaced with the URL, else the URL will be " +"appended to the command with a space separating the two." +msgstr "" +"Kullanılacak harici web tarayıcıyı ayarlar. Bu, kullanıcının PATH'ında " +"aramak için, kesin bir yol veya yürütülebilir bir ad olabilir. Eğer komut " +"'%s' i içerirse, bu URL ile yer değiştirecek, aksi taktirde URL, iki boşluk " +"ayırıcı ile komuta eklenecektir." + +#: ../app/config/gimprc-deserialize.c:135 ../app/core/gimp-modules.c:134 +#: ../app/core/gimp-units.c:164 ../app/gui/session.c:206 +#: ../app/plug-in/plug-in-rc.c:213 +msgid "fatal parse error" +msgstr "ölümcül ayrıştırma hatası" + +#: ../app/config/gimprc-deserialize.c:163 +#, c-format +msgid "value for token %s is not a valid UTF-8 string" +msgstr "%s anahtarına verilen değer geçerli bir UTF-8 dizgesi değil" + +#. no undo (or redo) steps available +#: ../app/core/core-enums.c:53 ../app/core/core-enums.c:252 +#: ../app/core/core-enums.c:504 ../app/paint/paint-enums.c:81 +#: ../app/widgets/gimpimagepropview.c:416 +msgid "None" +msgstr "Yok" + +#: ../app/core/core-enums.c:54 +msgid "Floyd-Steinberg (normal)" +msgstr "Floyd-Steinberg (normal)" + +#: ../app/core/core-enums.c:55 +msgid "Floyd-Steinberg (reduced color bleeding)" +msgstr "Floyd-Steinberg (azaltılmış renk akması)" + +#: ../app/core/core-enums.c:56 +msgid "Positioned" +msgstr "Konumlandırılmış" + +#: ../app/core/core-enums.c:85 +msgid "Generate optimum palette" +msgstr "En iyi paleti üret" + +#: ../app/core/core-enums.c:86 +msgid "Use web-optimized palette" +msgstr "Ağ-ayarlı paleti kullan" + +#: ../app/core/core-enums.c:87 +msgid "Use black and white (1-bit) palette" +msgstr "Siyah ve beyaz (1-ikil) paleti kullan" + +#: ../app/core/core-enums.c:88 +msgid "Use custom palette" +msgstr "Özel palet kullan" + +#: ../app/core/core-enums.c:211 +msgid "First item" +msgstr "İlk öğe" + +#: ../app/core/core-enums.c:213 ../app/dialogs/dialogs.c:198 +#: ../app/tools/tools-enums.c:210 +msgid "Selection" +msgstr "Seçim" + +#: ../app/core/core-enums.c:214 +msgid "Active layer" +msgstr "Etkin katman" + +#: ../app/core/core-enums.c:215 +msgid "Active channel" +msgstr "Etkin kanal" + +#: ../app/core/core-enums.c:216 +msgid "Active path" +msgstr "Etkin yol" + +#: ../app/core/core-enums.c:247 +msgid "Foreground color" +msgstr "Önplan rengi" + +#: ../app/core/core-enums.c:248 +msgid "Background color" +msgstr "Arkaplan rengi" + +#: ../app/core/core-enums.c:249 +msgid "White" +msgstr "Beyaz" + +#. Transparency +#: ../app/core/core-enums.c:250 ../app/dialogs/preferences-dialog.c:2311 +msgid "Transparency" +msgstr "Şeffaflık" + +#: ../app/core/core-enums.c:251 ../app/core/core-enums.c:308 +msgid "Pattern" +msgstr "Desen" + +#: ../app/core/core-enums.c:279 +msgid "Stroke line" +msgstr "Darbeleme satırı" + +#: ../app/core/core-enums.c:280 +msgid "Stroke with a paint tool" +msgstr "Bir boyama aracı ile darbele" + +#: ../app/core/core-enums.c:307 +msgid "Solid color" +msgstr "Kesiksiz renk" + +#: ../app/core/core-enums.c:336 +msgid "Miter" +msgstr "Köşe" + +#: ../app/core/core-enums.c:337 ../app/core/core-enums.c:367 +msgid "Round" +msgstr "Yuvarla" + +#: ../app/core/core-enums.c:338 +msgid "Bevel" +msgstr "Kabarıklık" + +#: ../app/core/core-enums.c:366 +msgid "Butt" +msgstr "Buton" + +#: ../app/core/core-enums.c:368 ../app/core/core-enums.c:443 +msgid "Square" +msgstr "Kare" + +#: ../app/core/core-enums.c:404 +msgid "Custom" +msgstr "Özel" + +#: ../app/core/core-enums.c:405 +msgid "Line" +msgstr "Satır" + +#: ../app/core/core-enums.c:406 +msgid "Long dashes" +msgstr "Uzun çizgiler" + +#: ../app/core/core-enums.c:407 +msgid "Medium dashes" +msgstr "Orta çizgiler" + +#: ../app/core/core-enums.c:408 +msgid "Short dashes" +msgstr "Kısa çizgiler" + +#: ../app/core/core-enums.c:409 +msgid "Sparse dots" +msgstr "Dağınık noktalar" + +#: ../app/core/core-enums.c:410 +msgid "Normal dots" +msgstr "Normal noktalar" + +#: ../app/core/core-enums.c:411 +msgid "Dense dots" +msgstr "Sık noktalar" + +#: ../app/core/core-enums.c:412 +msgid "Stipples" +msgstr "Nokta çizimler" + +#: ../app/core/core-enums.c:413 +msgid "Dash, dot" +msgstr "Çizgi, nokta" + +#: ../app/core/core-enums.c:414 +msgid "Dash, dot, dot" +msgstr "Çizgi, nokta, nokta" + +#: ../app/core/core-enums.c:442 +msgid "Circle" +msgstr "Çember" + +#: ../app/core/core-enums.c:444 +msgid "Diamond" +msgstr "Elmas" + +#: ../app/core/core-enums.c:472 ../app/dialogs/preferences-dialog.c:2343 +msgid "Horizontal" +msgstr "Yatay" + +#: ../app/core/core-enums.c:473 ../app/dialogs/preferences-dialog.c:2345 +msgid "Vertical" +msgstr "Dikey" + +#: ../app/core/core-enums.c:474 +msgid "Unknown" +msgstr "Bilinmeyen" + +#: ../app/core/core-enums.c:505 +msgid "All layers" +msgstr "Bütün katmanlar" + +#: ../app/core/core-enums.c:506 +msgid "Image-sized layers" +msgstr "Görüntü-boyutlu katmanlar" + +#: ../app/core/core-enums.c:507 +msgid "All visible layers" +msgstr "Bütün görünür katmanlar" + +#: ../app/core/core-enums.c:508 +msgid "All linked layers" +msgstr "Bütün bağlanmış katmanlar" + +#: ../app/core/core-enums.c:572 +msgid "Tiny" +msgstr "Küçük" + +#: ../app/core/core-enums.c:573 +msgid "Very small" +msgstr "Çok küçük" + +#: ../app/core/core-enums.c:574 +msgid "Small" +msgstr "Ufak" + +#: ../app/core/core-enums.c:575 +msgid "Medium" +msgstr "Orta" + +#: ../app/core/core-enums.c:576 +msgid "Large" +msgstr "Büyük" + +#: ../app/core/core-enums.c:577 +msgid "Very large" +msgstr "Çok büyük" + +#: ../app/core/core-enums.c:578 +msgid "Huge" +msgstr "Kocaman" + +#: ../app/core/core-enums.c:579 +msgid "Enormous" +msgstr "Dev gibi" + +#: ../app/core/core-enums.c:580 +msgid "Gigantic" +msgstr "Dev gibi" + +#: ../app/core/core-enums.c:607 +msgid "View as list" +msgstr "Liste olarak göster" + +#: ../app/core/core-enums.c:608 +msgid "View as grid" +msgstr "Izgara olarak görüntüle" + +#: ../app/core/core-enums.c:672 +msgid "No thumbnails" +msgstr "Küçük resim yok" + +#: ../app/core/core-enums.c:673 +msgid "Normal (128x128)" +msgstr "Normal (128x128)" + +#: ../app/core/core-enums.c:674 +msgid "Large (256x256)" +msgstr "Büyük (256x256)" + +#: ../app/core/core-enums.c:850 +msgid "<>" +msgstr "<>" + +#: ../app/core/core-enums.c:851 +msgid "Scale image" +msgstr "Resmi ölçekle" + +#: ../app/core/core-enums.c:852 +msgid "Resize image" +msgstr "Resim boyutunu değiştir" + +#: ../app/core/core-enums.c:853 +msgid "Flip image" +msgstr "Görüntüyü çevir" + +#: ../app/core/core-enums.c:854 +msgid "Rotate image" +msgstr "Resmi Döndür" + +#: ../app/core/core-enums.c:855 +msgid "Crop image" +msgstr "Resmi kırp" + +#: ../app/core/core-enums.c:856 +msgid "Convert image" +msgstr "Resmi dönüştür" + +#: ../app/core/core-enums.c:857 +msgid "Remove item" +msgstr "Öğeyi sil" + +#: ../app/core/core-enums.c:858 +msgid "Merge layers" +msgstr "Katmanları birleştir" + +#: ../app/core/core-enums.c:859 +msgid "Merge paths" +msgstr "Yolları birleştir" + +#: ../app/core/core-enums.c:861 ../app/core/core-enums.c:892 +#: ../app/core/gimpimage-grid.c:58 ../app/dialogs/grid-dialog.c:152 +#: ../app/tools/tools-enums.c:241 +msgid "Grid" +msgstr "Kılavuz" + +#: ../app/core/core-enums.c:862 ../app/core/core-enums.c:894 +msgid "Guide" +msgstr "Rehber" + +#: ../app/core/core-enums.c:863 ../app/core/core-enums.c:895 +msgid "Sample Point" +msgstr "Örnek Nokta" + +#: ../app/core/core-enums.c:864 ../app/core/core-enums.c:896 +msgid "Layer/Channel" +msgstr "Katman/Kanal" + +#: ../app/core/core-enums.c:865 ../app/core/core-enums.c:897 +msgid "Layer/Channel modification" +msgstr "Katman/Kanal değişikliği" + +#: ../app/core/core-enums.c:866 ../app/core/core-enums.c:898 +msgid "Selection mask" +msgstr "Seçim maskesi" + +#: ../app/core/core-enums.c:867 ../app/core/core-enums.c:901 +msgid "Item visibility" +msgstr "Öğe görünürlüğü" + +#: ../app/core/core-enums.c:868 ../app/core/core-enums.c:902 +msgid "Link/Unlink item" +msgstr "Bağlı/Bağsız öğe" + +#: ../app/core/core-enums.c:869 +msgid "Item properties" +msgstr "Öğe özellikleri" + +#: ../app/core/core-enums.c:870 ../app/core/core-enums.c:900 +msgid "Move item" +msgstr "Öğeyi taşı" + +#: ../app/core/core-enums.c:871 +msgid "Scale item" +msgstr "Öğeyi ölçekle" + +#: ../app/core/core-enums.c:872 +msgid "Resize item" +msgstr "Öğeyi yeniden boyutlandır" + +#: ../app/core/core-enums.c:873 +msgid "Add layer" +msgstr "Katman ekle" + +#: ../app/core/core-enums.c:874 ../app/core/core-enums.c:911 +msgid "Add layer mask" +msgstr "Katman maskesi ekle" + +#: ../app/core/core-enums.c:875 ../app/core/core-enums.c:913 +msgid "Apply layer mask" +msgstr "Katman maskesini uygula" + +#: ../app/core/core-enums.c:876 ../app/core/core-enums.c:923 +msgid "Floating selection to layer" +msgstr "Katman için yüzdürme seçimi" + +#: ../app/core/core-enums.c:877 +msgid "Float selection" +msgstr "Yüzdürme seçimi" + +#: ../app/core/core-enums.c:878 +msgid "Anchor floating selection" +msgstr "Yüzen seçimi çıpala" + +#: ../app/core/core-enums.c:879 +msgid "Remove floating selection" +msgstr "Yüzdürme seçimini kaldır" + +#: ../app/core/core-enums.c:880 ../app/core/gimp-edit.c:262 +msgid "Paste" +msgstr "Yapıştır" + +#: ../app/core/core-enums.c:881 ../app/core/gimp-edit.c:557 +msgid "Cut" +msgstr "Kes" + +#: ../app/core/core-enums.c:882 ../app/tools/gimptexttool.c:161 +#: ../app/widgets/widgets-enums.c:265 +msgid "Text" +msgstr "Metin" + +#: ../app/core/core-enums.c:883 ../app/core/core-enums.c:926 +#: ../app/core/gimpdrawable-transform.c:567 +msgid "Transform" +msgstr "Dönüştür" + +#: ../app/core/core-enums.c:884 ../app/core/core-enums.c:927 +#: ../app/paint/gimppaintcore.c:137 +msgid "Paint" +msgstr "Boya" + +#: ../app/core/core-enums.c:885 ../app/core/core-enums.c:930 +msgid "Attach parasite" +msgstr "Parazit tuttur" + +#: ../app/core/core-enums.c:886 ../app/core/core-enums.c:931 +msgid "Remove parasite" +msgstr "Paraziti kaldır" + +#: ../app/core/core-enums.c:887 +msgid "Import paths" +msgstr "Yolları içe aktar" + +#: ../app/core/core-enums.c:888 ../app/pdb/drawable-cmds.c:885 +msgid "Plug-In" +msgstr "Eklentiler" + +#: ../app/core/core-enums.c:889 +msgid "Image type" +msgstr "Görüntü türü" + +#: ../app/core/core-enums.c:890 +msgid "Image size" +msgstr "Görüntü boyutu" + +#: ../app/core/core-enums.c:891 +msgid "Image resolution change" +msgstr "Görüntü çözünürlüğü değiştirme" + +#: ../app/core/core-enums.c:893 +msgid "Change indexed palette" +msgstr "Sıralanmış paleti değiştir" + +#: ../app/core/core-enums.c:899 +msgid "Rename item" +msgstr "Öğeyi yeniden adlandır" + +#: ../app/core/core-enums.c:903 +msgid "New layer" +msgstr "Yeni katman" + +#: ../app/core/core-enums.c:904 +msgid "Delete layer" +msgstr "Katmanı sil" + +#: ../app/core/core-enums.c:905 +msgid "Reposition layer" +msgstr "Katmanı yeniden konumlandır" + +#: ../app/core/core-enums.c:906 +msgid "Set layer mode" +msgstr "Katman kipini ayarla" + +#: ../app/core/core-enums.c:907 +msgid "Set layer opacity" +msgstr "Katman ışık geçirmezliğini ayarla" + +#: ../app/core/core-enums.c:908 +msgid "Lock/Unlock alpha channel" +msgstr "Görünür kanalını Kilitle/Kilidini aç" + +#: ../app/core/core-enums.c:909 +msgid "Text layer" +msgstr "Metin katmanı" + +#: ../app/core/core-enums.c:910 +msgid "Text layer modification" +msgstr "Metin katmanı değişikliği" + +#: ../app/core/core-enums.c:912 +msgid "Delete layer mask" +msgstr "Katman maskesini sil" + +#: ../app/core/core-enums.c:914 +msgid "Show layer mask" +msgstr "Katman maskesini göster" + +#: ../app/core/core-enums.c:915 +msgid "New channel" +msgstr "Yeni kanal" + +#: ../app/core/core-enums.c:916 +msgid "Delete channel" +msgstr "Kanalı sil" + +#: ../app/core/core-enums.c:917 +msgid "Reposition channel" +msgstr "Kanalı yeniden konumlandır" + +#: ../app/core/core-enums.c:918 +msgid "Channel color" +msgstr "Kanal rengi" + +#: ../app/core/core-enums.c:919 +msgid "New path" +msgstr "Yeni yol" + +#: ../app/core/core-enums.c:921 +msgid "Path modification" +msgstr "Yol değişikliği" + +#: ../app/core/core-enums.c:922 +msgid "Reposition path" +msgstr "Yolu yeniden konumlandır" + +#: ../app/core/core-enums.c:924 +msgid "Rigor floating selection" +msgstr "Özenli hareketli seçim" + +#: ../app/core/core-enums.c:925 +msgid "Relax floating selection" +msgstr "Gevşek hareketli seçim" + +#: ../app/core/core-enums.c:928 ../app/paint/gimpink.c:95 +#: ../app/tools/gimpinktool.c:55 +msgid "Ink" +msgstr "Mürekkep" + +#: ../app/core/core-enums.c:929 +msgid "Select foreground" +msgstr "Önalanı seç" + +#: ../app/core/core-enums.c:932 +msgid "Not undoable" +msgstr "Geri alınabilir değil" + +#: ../app/core/core-enums.c:1196 +msgid "Composite" +msgstr "Birleşik" + +#: ../app/core/core-enums.c:1230 +msgid "Message" +msgstr "İleti" + +#: ../app/core/core-enums.c:1231 +msgid "Warning" +msgstr "Uyarı" + +#: ../app/core/core-enums.c:1232 +msgid "Error" +msgstr "Hata" + +#: ../app/core/core-enums.c:1260 +msgid "Ask what to do" +msgstr "Ne yapılacağını sor" + +#: ../app/core/core-enums.c:1261 +msgid "Keep embedded profile" +msgstr "Gömülü profili sakla" + +#: ../app/core/core-enums.c:1262 +msgid "Convert to RGB workspace" +msgstr "Çalışma alanını RGB'ye dönüştür" + +#: ../app/core/gimp-contexts.c:155 ../app/core/gimptooloptions.c:231 +#: ../app/gui/session.c:307 ../app/menus/menus.c:433 +#: ../app/widgets/gimpdevices.c:258 +#, c-format +msgid "Deleting \"%s\" failed: %s" +msgstr "\"%s\" silme başarısız oldu: %s" + +#: ../app/core/gimp-edit.c:190 ../app/core/gimp-edit.c:326 +msgid "Pasted Layer" +msgstr "Yapıştırılan Katman" + +#: ../app/core/gimp-edit.c:464 +msgid "Fill with Foreground Color" +msgstr "Önalan Rengi ile Doldur" + +#: ../app/core/gimp-edit.c:468 +msgid "Fill with Background Color" +msgstr "Artalan Rengi ile Doldur" + +#: ../app/core/gimp-edit.c:472 +msgid "Fill with White" +msgstr "Beyaz ile Doldur" + +#: ../app/core/gimp-edit.c:476 +msgid "Fill with Transparency" +msgstr "Şeffaf doldur" + +#: ../app/core/gimp-edit.c:480 +msgid "Fill with Pattern" +msgstr "Desen ile Doldur" + +#: ../app/core/gimp-edit.c:573 +msgid "Global Buffer" +msgstr "Genel Arabellek" + +#: ../app/core/gimp-gradients.c:61 +msgid "FG to BG (RGB)" +msgstr "Önplandan Arkaplana (RGB)" + +#: ../app/core/gimp-gradients.c:66 +msgid "FG to BG (HSV counter-clockwise)" +msgstr "ÖA'dan AA'ya (HSV saat yönünün tersi)" + +#: ../app/core/gimp-gradients.c:71 +msgid "FG to BG (HSV clockwise hue)" +msgstr "ÖA'dan AA'ya (HSV saat yönünde renk özü)" + +#: ../app/core/gimp-gradients.c:76 +msgid "FG to Transparent" +msgstr "Önplandan Şeffafa" + +#: ../app/core/gimp-user-install.c:153 +#, c-format +msgid "" +"It seems you have used GIMP %s before. GIMP will now migrate your user " +"settings to '%s'." +msgstr "" +"GIMP %s daha önce kullanmış görünüyorsunuz. GIMP şimdi kullanıcı " +"ayarlarınızı '%s'a aktaracak." + +#: ../app/core/gimp-user-install.c:158 +#, c-format +msgid "" +"It appears that you are using GIMP for the first time. GIMP will now create " +"a folder named '%s' and copy some files to it." +msgstr "" +"GIMP'i ilk kez kullanıyor görünüyorsunuz. GIMP şimdi '%s' adında yeni bir " +"dizin oluşturacak ve bazı dosyaları içine kopyalayacak." + +#: ../app/core/gimp-user-install.c:309 +#, c-format +msgid "Copying file '%s' from '%s'..." +msgstr "'%s' dosyası '%s'dan kopyalanıyor..." + +#: ../app/core/gimp-user-install.c:324 ../app/core/gimp-user-install.c:350 +#, c-format +msgid "Creating folder '%s'..." +msgstr "'%s' dizini oluşturuluyor..." + +#: ../app/core/gimp-user-install.c:335 ../app/core/gimp-user-install.c:361 +#, c-format +msgid "Cannot create folder '%s': %s" +msgstr "'%s' dizini oluşturulamadı: %s" + +#: ../app/core/gimp.c:543 +msgid "Initialization" +msgstr "Başlangıç Durumuna Getirme" + +#. register all internal procedures +#: ../app/core/gimp.c:618 +msgid "Internal Procedures" +msgstr "İçsel İşlemler" + +#. initialize the global parasite table +#: ../app/core/gimp.c:834 +msgid "Looking for data files" +msgstr "Veri dosyaları taranıyor" + +#: ../app/core/gimp.c:834 +msgid "Parasites" +msgstr "Parazitler" + +#. initialize the list of fonts +#: ../app/core/gimp.c:854 +msgid "Fonts (this may take a while)" +msgstr "Yazıyüzleri (bu biraz zaman alabilir)" + +#. initialize the module list +#: ../app/core/gimp.c:863 ../app/dialogs/preferences-dialog.c:2772 +msgid "Modules" +msgstr "Modüller" + +#: ../app/core/gimpbrush-load.c:177 +#, c-format +msgid "Could not read %d bytes from '%s': %s" +msgstr "%d sekiz ikil '%s'dan okunamadı: %s" + +#: ../app/core/gimpbrush-load.c:197 +#, c-format +msgid "Fatal parse error in brush file '%s': Width = 0." +msgstr "'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: Genişlik = 0." + +#: ../app/core/gimpbrush-load.c:206 +#, c-format +msgid "Fatal parse error in brush file '%s': Height = 0." +msgstr "'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: Yükseklik = 0." + +#: ../app/core/gimpbrush-load.c:215 +#, c-format +msgid "Fatal parse error in brush file '%s': Bytes = 0." +msgstr "'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: Sekiz ikil = 0." + +#: ../app/core/gimpbrush-load.c:239 +#, c-format +msgid "Fatal parse error in brush file '%s': Unknown depth %d." +msgstr "" +"'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: Bilinmeyen derinlik %d." + +#: ../app/core/gimpbrush-load.c:252 +#, c-format +msgid "Fatal parse error in brush file '%s': Unknown version %d." +msgstr "" +"'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: Bilinmeyen sürüm %d." + +#: ../app/core/gimpbrush-load.c:268 ../app/core/gimpbrush-load.c:388 +#: ../app/core/gimpbrush-load.c:720 +#, c-format +msgid "Fatal parse error in brush file '%s': File appears truncated." +msgstr "" +"'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: Dosya kesilmiş " +"görünüyor." + +#: ../app/core/gimpbrush-load.c:276 ../app/core/gimpbrushgenerated-load.c:128 +#: ../app/core/gimpbrushpipe-load.c:97 +#, c-format +msgid "Invalid UTF-8 string in brush file '%s'." +msgstr "'%s' fırça dosyası içinde geçersiz UTF-8 dizgisi." + +#: ../app/core/gimpbrush-load.c:283 ../app/core/gimpitem.c:505 +#: ../app/core/gimppattern-load.c:146 +#: ../app/dialogs/template-options-dialog.c:83 +#: ../app/tools/gimpvectortool.c:299 +msgid "Unnamed" +msgstr "Isimsiz" + +#: ../app/core/gimpbrush-load.c:377 +#, c-format +msgid "" +"Fatal parse error in brush file '%s': Unsupported brush depth %d\n" +"GIMP brushes must be GRAY or RGBA." +msgstr "" +"'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: Desteklenmeyen fırça " +"derinliği %d\n" +"GIMP fırçaları GRİ ya da RGBA olmalı." + +#: ../app/core/gimpbrush-load.c:448 +#, c-format +msgid "" +"Fatal parse error in brush file '%s': unable to decode abr format version %d." +msgstr "" +"'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: abr biçimli %d sürüm " +"kod çözümü olanaksız." + +#: ../app/core/gimpbrush-load.c:615 +#, c-format +msgid "Fatal parse error in brush file '%s': Wide brushes are not supported." +msgstr "" +"'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: Geniş fırçalar " +"desteklenmemiş." + +#: ../app/core/gimpbrushgenerated-load.c:87 +#, c-format +msgid "Fatal parse error in brush file '%s': Not a GIMP brush file." +msgstr "" +"'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: Bir GIMP fırçası " +"dosyası değil." + +#: ../app/core/gimpbrushgenerated-load.c:104 +#, c-format +msgid "" +"Fatal parse error in brush file '%s': Unknown GIMP brush version in line %d." +msgstr "" +"'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: %d satırında bilinmeyen " +"GIMP fırçası sürümü." + +#: ../app/core/gimpbrushgenerated-load.c:150 +#, c-format +msgid "" +"Fatal parse error in brush file '%s': Unknown GIMP brush shape in line %d." +msgstr "" +"'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: %d satırında bilinmeyen " +"GIMP fırçası şekli." + +#: ../app/core/gimpbrushgenerated-load.c:226 +#, c-format +msgid "Line %d: %s" +msgstr "Satır %d: %s" + +#: ../app/core/gimpbrushgenerated-load.c:228 +#, c-format +msgid "File is truncated in line %d" +msgstr "Dosya %d satırında kesilmiş" + +#: ../app/core/gimpbrushgenerated-load.c:231 +#, c-format +msgid "Error while reading brush file '%s': %s" +msgstr "'%s' fırça dosyasını okurken hata: %s" + +#: ../app/core/gimpbrushpipe-load.c:113 ../app/core/gimpbrushpipe-load.c:133 +#: ../app/core/gimpbrushpipe-load.c:223 +#, c-format +msgid "Fatal parse error in brush file '%s': File is corrupt." +msgstr "'%s' fırça dosyası içinde ölümcül ayrıştırma hatası: Dosya bozulmuş." + +#: ../app/core/gimpchannel-select.c:60 +msgctxt "command" +msgid "Rectangle Select" +msgstr "Dikdörtgen Seçimi" + +#: ../app/core/gimpchannel-select.c:111 +msgctxt "command" +msgid "Ellipse Select" +msgstr "Eliptik Seçim" + +#: ../app/core/gimpchannel-select.c:165 +msgctxt "command" +msgid "Rounded Rectangle Select" +msgstr "Yuvarlatılmış Dikdörtgen Seçimi" + +#: ../app/core/gimpchannel-select.c:434 +msgid "Alpha to Selection" +msgstr "Alfadan Seçime" + +#: ../app/core/gimpchannel-select.c:472 +#, c-format +msgid "%s Channel to Selection" +msgstr "%s Kanalından Seçime" + +#: ../app/core/gimpchannel-select.c:520 ../app/tools/gimpfuzzyselecttool.c:80 +msgctxt "command" +msgid "Fuzzy Select" +msgstr "Bulanık Seçim" + +#: ../app/core/gimpchannel-select.c:567 +#: ../app/tools/gimpbycolorselecttool.c:82 +msgctxt "command" +msgid "Select by Color" +msgstr "Renk ile Seç" + +#: ../app/core/gimpchannel.c:257 +msgid "Channel" +msgstr "Kanal" + +#: ../app/core/gimpchannel.c:258 +msgid "Rename Channel" +msgstr "Kanalı Yeniden Adlandır" + +#: ../app/core/gimpchannel.c:259 +msgid "Move Channel" +msgstr "Kanalı Taşı" + +#: ../app/core/gimpchannel.c:260 +msgid "Scale Channel" +msgstr "Kanalı Boyutlandır" + +#: ../app/core/gimpchannel.c:261 +msgid "Resize Channel" +msgstr "Kanalın Boyutunu Değiştir" + +#: ../app/core/gimpchannel.c:262 +msgid "Flip Channel" +msgstr "Kanalı Döndür" + +#: ../app/core/gimpchannel.c:263 +msgid "Rotate Channel" +msgstr "Kanalı Çevir" + +#: ../app/core/gimpchannel.c:264 ../app/core/gimpdrawable-transform.c:886 +msgid "Transform Channel" +msgstr "Kanalı Dönüştür" + +#: ../app/core/gimpchannel.c:265 +msgid "Stroke Channel" +msgstr "Kanalı Darbele" + +#: ../app/core/gimpchannel.c:286 +msgid "Feather Channel" +msgstr "Yumuşatma Kanalı" + +#: ../app/core/gimpchannel.c:287 +msgid "Sharpen Channel" +msgstr "Kanalı Keskinleştir" + +#: ../app/core/gimpchannel.c:288 +msgid "Clear Channel" +msgstr "Kanalı Temizle" + +#: ../app/core/gimpchannel.c:289 +msgid "Fill Channel" +msgstr "Kanalı Doldur" + +#: ../app/core/gimpchannel.c:290 +msgid "Invert Channel" +msgstr "Kanalı Ters Çevir" + +#: ../app/core/gimpchannel.c:291 +msgid "Border Channel" +msgstr "Kanalın Kenarlarını Tanımla" + +#: ../app/core/gimpchannel.c:292 +msgid "Grow Channel" +msgstr "Kanalı Büyüt" + +#: ../app/core/gimpchannel.c:293 +msgid "Shrink Channel" +msgstr "Kanalı Küçült" + +#: ../app/core/gimpchannel.c:710 +#, c-format +msgid "Cannot stroke empty channel." +msgstr "Boş kanal darbelenemedi." + +#: ../app/core/gimpchannel.c:1631 +msgid "Set Channel Color" +msgstr "Kanal Rengini Belirle" + +#: ../app/core/gimpchannel.c:1679 +msgid "Set Channel Opacity" +msgstr "Kanal Opaklığını Belirle" + +#: ../app/core/gimpchannel.c:1747 ../app/core/gimpselection.c:520 +msgid "Selection Mask" +msgstr "Seçim Maskesi" + +#: ../app/core/gimpdata.c:526 ../app/core/gimptoolpresets.c:279 +#, c-format +msgid "Could not delete '%s': %s" +msgstr "'%s' dosyası açılamadı: %s" + +#: ../app/core/gimpdatafactory.c:415 ../app/core/gimpdatafactory.c:575 +#: ../app/core/gimpdatafactory.c:595 +#, c-format +msgid "" +"Failed to save data:\n" +"\n" +"%s" +msgstr "" +"Veri kaydetme başarısız:\n" +"\n" +"%s" + +#: ../app/core/gimpdatafactory.c:494 ../app/core/gimpdatafactory.c:497 +#: ../app/core/gimpitem.c:312 ../app/core/gimpitem.c:315 +msgid "copy" +msgstr "kopyala" + +#: ../app/core/gimpdatafactory.c:506 ../app/core/gimpitem.c:324 +#, c-format +msgid "%s copy" +msgstr "%s kopyası" + +#: ../app/core/gimpdatafactory.c:576 +msgid "You don't have a writable data folder configured." +msgstr "Yapılandırılmış, yazılabilir bir veri dizinine sahip değilsiniz." + +#: ../app/core/gimpdatafactory.c:751 +#, c-format +msgid "" +"Failed to load data:\n" +"\n" +"%s" +msgstr "" +"Veri yükleme başarısız:\n" +"\n" +"%s" + +#: ../app/core/gimpdrawable-blend.c:245 ../app/tools/gimpblendtool.c:107 +msgid "Blend" +msgstr "Harmanlama" + +#: ../app/core/gimpdrawable-brightness-contrast.c:76 +msgid "Brightness_Contrast" +msgstr "Parlaklık_Karşıtlık" + +#: ../app/core/gimpdrawable-brightness-contrast.c:87 +#: ../app/tools/gimpbrightnesscontrasttool.c:111 +msgid "Brightness-Contrast" +msgstr "Parlaklık-Kontrast" + +#: ../app/core/gimpdrawable-bucket-fill.c:91 +#, c-format +msgid "No patterns available for this operation." +msgstr "Bu işlem için hiç desen yok." + +#: ../app/core/gimpdrawable-bucket-fill.c:286 +msgctxt "command" +msgid "Bucket Fill" +msgstr "Kovadan Dolum" + +#: ../app/core/gimpdrawable-color-balance.c:80 +#: ../app/core/gimpdrawable-color-balance.c:90 +#: ../app/tools/gimpcolorbalancetool.c:94 +msgid "Color Balance" +msgstr "Renk Dengesi" + +#: ../app/core/gimpdrawable-colorize.c:73 +#: ../app/core/gimpdrawable-colorize.c:85 ../app/tools/gimpcolorizetool.c:90 +msgid "Colorize" +msgstr "Renklendir" + +#: ../app/core/gimpdrawable-curves.c:165 ../app/core/gimpdrawable-curves.c:182 +#: ../app/tools/gimpcurvestool.c:140 +msgid "Curves" +msgstr "Eğriler" + +#: ../app/core/gimpdrawable-desaturate.c:71 +#: ../app/core/gimpdrawable-desaturate.c:77 +#: ../app/tools/gimpdesaturatetool.c:77 +msgid "Desaturate" +msgstr "Solgunlaştır" + +#: ../app/core/gimpdrawable-equalize.c:53 +msgid "Equalize" +msgstr "Eşitle" + +#: ../app/core/gimpdrawable-foreground-extract.c:138 +msgid "Foreground Extraction" +msgstr "Önalan Çıkarma" + +#: ../app/core/gimpdrawable-hue-saturation.c:78 +#: ../app/tools/gimphuesaturationtool.c:102 +msgid "Hue-Saturation" +msgstr "Renk-Doygunluk" + +#: ../app/core/gimpdrawable-hue-saturation.c:88 +msgid "Hue_Saturation" +msgstr "Renk Özü_Doygunluk" + +#: ../app/core/gimpdrawable-invert.c:60 ../app/core/gimpdrawable-invert.c:68 +msgid "Invert" +msgstr "Tersine Çevir" + +#: ../app/core/gimpdrawable-levels.c:154 ../app/core/gimpdrawable-levels.c:170 +#: ../app/tools/gimplevelstool.c:150 +msgid "Levels" +msgstr "Seviyeler" + +#: ../app/core/gimpdrawable-offset.c:316 +msgid "Offset Drawable" +msgstr "Göreli Konum Çizilebilirliği" + +#: ../app/core/gimpdrawable-posterize.c:70 +#: ../app/core/gimpdrawable-posterize.c:80 ../app/tools/gimpposterizetool.c:84 +msgid "Posterize" +msgstr "Posterleştirme" + +#: ../app/core/gimpdrawable-stroke.c:324 +msgid "Render Stroke" +msgstr "Darbeli Tarama" + +#: ../app/core/gimpdrawable-threshold.c:71 +#: ../app/core/gimpdrawable-threshold.c:82 ../app/tools/gimpthresholdtool.c:90 +msgid "Threshold" +msgstr "Alt Sınır" + +#: ../app/core/gimpdrawable-transform.c:645 ../app/tools/gimpfliptool.c:116 +msgctxt "command" +msgid "Flip" +msgstr "Çevir" + +#: ../app/core/gimpdrawable-transform.c:745 ../app/tools/gimprotatetool.c:121 +msgctxt "command" +msgid "Rotate" +msgstr "Döndür" + +#: ../app/core/gimpdrawable-transform.c:884 ../app/core/gimplayer.c:255 +msgid "Transform Layer" +msgstr "Katmanı Dönüştür" + +#: ../app/core/gimpdrawable-transform.c:899 +msgid "Transformation" +msgstr "Dönüştürme" + +#: ../app/core/gimpgradient-load.c:71 ../app/core/gimpgradient-load.c:96 +#: ../app/core/gimpgradient-load.c:117 ../app/core/gimpgradient-load.c:168 +#, c-format +msgid "Fatal parse error in gradient file '%s': Read error in line %d." +msgstr "" +"'%s' renk geçişi dosyasında ölümcül ayrıştırma hatası: %d. satırda okuma " +"hatası." + +#: ../app/core/gimpgradient-load.c:81 +#, c-format +msgid "Fatal parse error in gradient file '%s': Not a GIMP gradient file." +msgstr "" +"'%s' renk geçişi dosyasında ölümcül ayrıştırma hatası: bir GIMP renk geçişi " +"dosyası değil." + +#: ../app/core/gimpgradient-load.c:109 +#, c-format +msgid "Invalid UTF-8 string in gradient file '%s'." +msgstr "'%s' GIMP gradyan dosyasında geçersiz UTF-8 dizge." + +#: ../app/core/gimpgradient-load.c:136 +#, c-format +msgid "Fatal parse error in gradient file '%s': File is corrupt in line %d." +msgstr "" +"'%s' renk geçişi dosyasında ölümcül ayrıştırma hatası: %d. satırdaki dosya " +"bozulmuş." + +#: ../app/core/gimpgradient-load.c:218 ../app/core/gimpgradient-load.c:229 +#, c-format +msgid "" +"Fatal parse error in gradient file '%s': Corrupt segment %d in line %d." +msgstr "" +"'%s' renk geçişi dosyasında ölümcül ayrıştırma hatası: %d kesimi %d. satırda " +"bozulmuş." + +#: ../app/core/gimpgradient-load.c:241 ../app/core/gimpgradient-load.c:255 +#, c-format +msgid "Gradient file '%s' is corrupt: Segments do not span the range 0-1." +msgstr "" +"'%s' renk geçişi dosyası bozulmuş: Kesimler 0-1 aralığında yayılmıyor." + +#: ../app/core/gimpgradient-load.c:334 +#, c-format +msgid "No linear gradients found in '%s'" +msgstr "'%s' içinde doğrusal renk geçişleri yok" + +#: ../app/core/gimpgradient-load.c:344 +#, c-format +msgid "Failed to import gradients from '%s': %s" +msgstr "'%s'dan renk geçişleri içe aktarma başarısız oldu: %s" + +#: ../app/core/gimpgrid.c:84 +msgid "Line style used for the grid." +msgstr "Izgara için kullanılan satır biçemi." + +#: ../app/core/gimpgrid.c:90 +msgid "The foreground color of the grid." +msgstr "Izgaranın önalan rengi." + +#: ../app/core/gimpgrid.c:95 +msgid "" +"The background color of the grid; only used in double dashed line style." +msgstr "" +"Izgaranın artlalan rengi; sadece iki çizgili satır biçemi içinde kullanıldı." + +#: ../app/core/gimpgrid.c:101 +msgid "Horizontal spacing of grid lines." +msgstr "Izgara satırlarının yatay aralık boşluğu." + +#: ../app/core/gimpgrid.c:106 +msgid "Vertical spacing of grid lines." +msgstr "Izgara satırlarının dikey aralık boşluğu." + +#: ../app/core/gimpgrid.c:115 +msgid "" +"Horizontal offset of the first grid line; this may be a negative number." +msgstr "İlk ızgara satırının yatay göreli konumu; negatif bir sayı olabilir." + +#: ../app/core/gimpgrid.c:122 +msgid "" +"Vertical offset of the first grid line; this may be a negative number." +msgstr "İlk ızgara satırının dikey göreli konumu; negatif bir sayı olabilir." + +#: ../app/core/gimpimage-arrange.c:143 +msgid "Arrange Objects" +msgstr "Nesneleri Hazırla" + +#: ../app/core/gimpimage-colormap.c:63 +msgid "Set Colormap" +msgstr "Renk Haritasını Ayarla" + +#: ../app/core/gimpimage-colormap.c:118 +msgid "Change Colormap entry" +msgstr "Renk Haritası girişini Değiştir" + +#: ../app/core/gimpimage-colormap.c:138 +msgid "Add Color to Colormap" +msgstr "Renk Haritasına Renk Ekle" + +#: ../app/core/gimpimage-convert.c:792 +#, c-format +msgid "Cannot convert image: palette is empty." +msgstr "Görüntü dönüştürülemedi: palet boş." + +#: ../app/core/gimpimage-convert.c:806 +msgid "Convert Image to RGB" +msgstr "Görüntüyü RGB'ye Dönüştür" + +#: ../app/core/gimpimage-convert.c:810 +msgid "Convert Image to Grayscale" +msgstr "Resmi Gri Ölçeğe Çevir" + +#: ../app/core/gimpimage-convert.c:814 +msgid "Convert Image to Indexed" +msgstr "Resmi İndisliye Çevir" + +#: ../app/core/gimpimage-convert.c:896 +msgid "Converting to indexed colors (stage 2)" +msgstr "Sıralanmış renklere dönüştürme (aşama 2)" + +#: ../app/core/gimpimage-convert.c:941 +msgid "Converting to indexed colors (stage 3)" +msgstr "Sıralanmış renklere dönüştürme (aşama 3)" + +#: ../app/core/gimpimage-crop.c:130 +msgctxt "command" +msgid "Crop Image" +msgstr "Görüntüyü Kırp" + +#: ../app/core/gimpimage-crop.c:133 ../app/core/gimpimage-resize.c:90 +msgid "Resize Image" +msgstr "Resim Boyutunu Değiştir" + +#: ../app/core/gimpimage-guides.c:51 +msgid "Add Horizontal Guide" +msgstr "Yatay Kılavuz Ekle" + +#: ../app/core/gimpimage-guides.c:74 +msgid "Add Vertical Guide" +msgstr "Dikey Kılavuz Ekle" + +#: ../app/core/gimpimage-guides.c:115 ../app/tools/gimpmovetool.c:564 +msgid "Remove Guide" +msgstr "Kılavuzu Sil" + +#: ../app/core/gimpimage-guides.c:140 +msgid "Move Guide" +msgstr "Kılavuzu Taşı" + +#: ../app/core/gimpimage-item-list.c:53 +msgid "Translate Items" +msgstr "Öğeleri Tercüme Et" + +#: ../app/core/gimpimage-item-list.c:80 +msgid "Flip Items" +msgstr "Öğeleri Çevir" + +#: ../app/core/gimpimage-item-list.c:107 +msgid "Rotate Items" +msgstr "Öğeleri Döndür" + +#: ../app/core/gimpimage-item-list.c:137 +msgid "Transform Items" +msgstr "Öğeleri Dönüştür" + +#: ../app/core/gimpimage-merge.c:102 ../app/core/gimpimage-merge.c:114 +msgid "Merge Visible Layers" +msgstr "Görünen Katmanları Birleştir" + +#: ../app/core/gimpimage-merge.c:165 +msgid "Flatten Image" +msgstr "Resmi Düzleştir" + +#: ../app/core/gimpimage-merge.c:214 +msgid "Merge Down" +msgstr "Aşağı Birleştir" + +#: ../app/core/gimpimage-merge.c:254 +msgid "Merge Visible Paths" +msgstr "Görünen Katmanları Birleştir" + +#: ../app/core/gimpimage-merge.c:289 +#, c-format +msgid "Not enough visible paths for a merge. There must be at least two." +msgstr "" +"Birleştirme için yeterli sayıda görünür katman yok. En az iki tane olmalıdır." + +#: ../app/core/gimpimage-quick-mask.c:82 +msgid "Enable Quick Mask" +msgstr "Hızlı Maskeyi Etkinleştir" + +#: ../app/core/gimpimage-quick-mask.c:132 +msgid "Disable Quick Mask" +msgstr "Hızlı Maskeyi Etkisizleştir" + +#: ../app/core/gimpimage-sample-points.c:53 +msgid "Add Sample Point" +msgstr "Örnek Nokta Ekle" + +#: ../app/core/gimpimage-sample-points.c:98 ../app/tools/gimpcolortool.c:429 +msgid "Remove Sample Point" +msgstr "Örnek Noktayı Kaldır" + +#: ../app/core/gimpimage-sample-points.c:135 +msgid "Move Sample Point" +msgstr "Örnek Noktayı Taşı" + +#: ../app/core/gimpimage-undo-push.c:863 +#, c-format +msgid "Can't undo %s" +msgstr "Geriye alınamıyor: %s" + +#: ../app/core/gimpimage.c:1506 +msgid "Change Image Resolution" +msgstr "Resim Çözünürlüğünü Değiştir" + +#: ../app/core/gimpimage.c:1550 +msgid "Change Image Unit" +msgstr "Resim Birimini Değiştir" + +#: ../app/core/gimpimage.c:2384 +msgid "Attach Parasite to Image" +msgstr "Görüntüye Parazit İliştir" + +#: ../app/core/gimpimage.c:2422 +msgid "Remove Parasite from Image" +msgstr "Resimdeki Paraziti Kaldır" + +#: ../app/core/gimpimage.c:2875 +msgid "Add Layer" +msgstr "Katman Ekle" + +#: ../app/core/gimpimage.c:2935 ../app/core/gimpimage.c:2948 +msgid "Remove Layer" +msgstr "Katmanı Sil" + +#: ../app/core/gimpimage.c:3092 +msgid "Layer cannot be raised higher." +msgstr "Katman daha fazla yükseltilemez." + +#: ../app/core/gimpimage.c:3097 +msgid "Raise Layer" +msgstr "Katmanı Yükselt" + +#: ../app/core/gimpimage.c:3116 +msgid "Layer cannot be lowered more." +msgstr "Katman daha fazla alçaltılamaz." + +#: ../app/core/gimpimage.c:3121 +msgid "Lower Layer" +msgstr "Katmanı Alçalt" + +#: ../app/core/gimpimage.c:3132 +msgid "Raise Layer to Top" +msgstr "Katmanı En Üste Çıkart" + +#: ../app/core/gimpimage.c:3147 +msgid "Lower Layer to Bottom" +msgstr "Katmanı En Alta İndir" + +#: ../app/core/gimpimage.c:3209 +msgid "Add Channel" +msgstr "Kanal Ekle" + +#: ../app/core/gimpimage.c:3252 ../app/core/gimpimage.c:3263 +msgid "Remove Channel" +msgstr "Kanal Sil" + +#: ../app/core/gimpimage.c:3312 +msgid "Channel cannot be raised higher." +msgstr "Kanal daha fazla yükseltilemez." + +#: ../app/core/gimpimage.c:3317 +msgid "Raise Channel" +msgstr "Kanalı Yükselt" + +#: ../app/core/gimpimage.c:3328 +msgid "Raise Channel to Top" +msgstr "Kanalı En Tepeye Yükselt" + +#: ../app/core/gimpimage.c:3348 +msgid "Channel cannot be lowered more." +msgstr "Kanal daha fazla alçaltılamaz." + +#: ../app/core/gimpimage.c:3353 +msgid "Lower Channel" +msgstr "Kanalı Alçalt" + +#: ../app/core/gimpimage.c:3368 +msgid "Lower Channel to Bottom" +msgstr "Kanalı En Alta İndir" + +#: ../app/core/gimpimage.c:3432 +msgid "Add Path" +msgstr "Yol Ekle" + +#: ../app/core/gimpimage.c:3476 +msgid "Remove Path" +msgstr "Yolu Sil" + +#: ../app/core/gimpimage.c:3522 +msgid "Path cannot be raised higher." +msgstr "Yol daha fazla yükseltilemez." + +#: ../app/core/gimpimage.c:3527 +msgid "Raise Path" +msgstr "Yolu Yükselt" + +#: ../app/core/gimpimage.c:3538 +msgid "Raise Path to Top" +msgstr "Yolu En Üste Çıkar" + +#: ../app/core/gimpimage.c:3557 +msgid "Path cannot be lowered more." +msgstr "Yol daha fazla alçaltılamaz." + +#: ../app/core/gimpimage.c:3562 +msgid "Lower Path" +msgstr "Yolu Alçalt" + +#: ../app/core/gimpimage.c:3577 +msgid "Lower Path to Bottom" +msgstr "Yolu En Alta İndir" + +#: ../app/core/gimpimagefile.c:528 ../app/dialogs/preferences-dialog.c:1727 +msgid "Folder" +msgstr "Dizin" + +#: ../app/core/gimpimagefile.c:533 +msgid "Special File" +msgstr "Özel Dosya" + +#: ../app/core/gimpimagefile.c:549 +msgid "Remote File" +msgstr "Uzak Dosya" + +#: ../app/core/gimpimagefile.c:568 +msgid "Click to create preview" +msgstr "Önizleme oluşturmak için tıklayın" + +#: ../app/core/gimpimagefile.c:574 +msgid "Loading preview..." +msgstr "Önizleme yükleniyor..." + +#: ../app/core/gimpimagefile.c:580 +msgid "Preview is out of date" +msgstr "Önizlemenin tarihi geçmiş" + +#: ../app/core/gimpimagefile.c:586 +msgid "Cannot create preview" +msgstr "Önizleme oluşturulamıyor" + +#: ../app/core/gimpimagefile.c:596 +msgid "(Preview may be out of date)" +msgstr "(Önizleme geçerliliğini yitirmiş olabilir)" + +#. pixel size +#: ../app/core/gimpimagefile.c:605 ../app/widgets/gimpimagepropview.c:446 +#: ../app/widgets/gimpsizebox.c:438 ../app/widgets/gimptemplateeditor.c:566 +#, c-format +msgid "%d × %d pixel" +msgid_plural "%d × %d pixels" +msgstr[0] "%d x %d benek" + +#: ../app/core/gimpimagefile.c:628 ../app/display/gimpdisplayshell-title.c:325 +#, c-format +msgid "%d layer" +msgid_plural "%d layers" +msgstr[0] "%d katman" + +#: ../app/core/gimpimagefile.c:675 +#, c-format +msgid "Could not open thumbnail '%s': %s" +msgstr "Küçük görüntü '%s' açılamadı: %s" + +#: ../app/core/gimpitem.c:1138 +msgid "Attach Parasite" +msgstr "Parazit İlişkile" + +#: ../app/core/gimpitem.c:1148 +msgid "Attach Parasite to Item" +msgstr "Öğeye Parazit İliştir" + +#: ../app/core/gimpitem.c:1190 ../app/core/gimpitem.c:1197 +msgid "Remove Parasite from Item" +msgstr "Öğeden Paraziti Kaldır" + +#: ../app/core/gimplayer-floating-sel.c:99 +msgid "Remove Floating Selection" +msgstr "Yüzen Seçimi Sil" + +#: ../app/core/gimplayer-floating-sel.c:130 +msgid "Anchor Floating Selection" +msgstr "Yüzen Seçimi Çıpala" + +#: ../app/core/gimplayer-floating-sel.c:205 ../app/core/gimplayer.c:643 +#, c-format +msgid "" +"Cannot create a new layer from the floating selection because it belongs to " +"a layer mask or channel." +msgstr "" +"Yüzen seçimden yeni bir katman oluşturulamıyor çünkü bu bir katman maskesine " +"ya da kanala ait." + +#: ../app/core/gimplayer-floating-sel.c:211 +msgid "Floating Selection to Layer" +msgstr "Katmana Yüzen Seçim" + +#: ../app/core/gimplayer.c:248 ../app/tools/tools-enums.c:209 +msgid "Layer" +msgstr "Katman" + +#: ../app/core/gimplayer.c:249 +msgid "Rename Layer" +msgstr "Katmanın Adını Değiştir" + +#: ../app/core/gimplayer.c:250 ../app/pdb/layer-cmds.c:437 +#: ../app/pdb/layer-cmds.c:473 +msgid "Move Layer" +msgstr "Katmanı Taşı" + +#: ../app/core/gimplayer.c:252 +msgid "Resize Layer" +msgstr "Katman Boyutunu Değiştir" + +#: ../app/core/gimplayer.c:253 +msgid "Flip Layer" +msgstr "Katmanı Çevir" + +#: ../app/core/gimplayer.c:254 +msgid "Rotate Layer" +msgstr "Katmanı Döndür" + +#: ../app/core/gimplayer.c:405 ../app/core/gimplayer.c:1330 +#: ../app/core/gimplayermask.c:208 +#, c-format +msgid "%s mask" +msgstr "%s maskesi" + +#: ../app/core/gimplayer.c:446 +#, c-format +msgid "" +"Floating Selection\n" +"(%s)" +msgstr "" +"Yüzen Seçim\n" +"(%s)" + +#: ../app/core/gimplayer.c:1266 +#, c-format +msgid "Unable to add a layer mask since the layer already has one." +msgstr "" +"Katmanın zaten bir maskesi olduğundan bir katman maskesi eklemek olanaksız." + +#: ../app/core/gimplayer.c:1277 +#, c-format +msgid "Cannot add layer mask of different dimensions than specified layer." +msgstr "" +"Belirlenmiş katman hariç farklı boyutlardaki katman maskesi eklenemiyor." + +#: ../app/core/gimplayer.c:1385 +msgid "Transfer Alpha to Mask" +msgstr "Görünürü Maskeye Aktar" + +#: ../app/core/gimplayer.c:1557 ../app/core/gimplayermask.c:235 +msgid "Apply Layer Mask" +msgstr "Katman Maskesini Uygula" + +#: ../app/core/gimplayer.c:1558 +msgid "Delete Layer Mask" +msgstr "Katman Maskesini Sil" + +#: ../app/core/gimplayer.c:1670 +msgid "Add Alpha Channel" +msgstr "Alfa Kanalı Ekle" + +#: ../app/core/gimplayer.c:1724 +msgid "Remove Alpha Channel" +msgstr "Görünür Kanalını Kaldır" + +#: ../app/core/gimplayer.c:1746 +msgid "Layer to Image Size" +msgstr "Katmandan Görüntü Boyutuna" + +#: ../app/core/gimplayermask.c:105 +msgid "Move Layer Mask" +msgstr "Katman Maskesini Taşı" + +#. reject renaming, layer masks are always named " mask" +#: ../app/core/gimplayermask.c:160 +#, c-format +msgid "Cannot rename layer masks." +msgstr "Katman maskeleri yeniden adlandırılamıyor." + +#: ../app/core/gimplayermask.c:303 +msgid "Show Layer Mask" +msgstr "Katman Maskesini Göster" + +#: ../app/core/gimppalette-import.c:428 +#, c-format +msgid "Index %d" +msgstr "İçerik %d" + +#: ../app/core/gimppalette-import.c:532 +#, c-format +msgid "Unknown type of palette file: %s" +msgstr "Bilinmeyen palet dosyası tipi: %s" + +#: ../app/core/gimppalette-load.c:85 ../app/core/gimppalette-load.c:110 +#: ../app/core/gimppalette-load.c:131 ../app/core/gimppalette-load.c:160 +#: ../app/core/gimppalette-load.c:236 +#, c-format +msgid "Fatal parse error in palette file '%s': Read error in line %d." +msgstr "" +"'%s' palet dosyası içinde ölümcül ayrıştırma hatası: %d. satırda okuma " +"hatası." + +#: ../app/core/gimppalette-load.c:95 +#, c-format +msgid "Fatal parse error in palette file '%s': Missing magic header." +msgstr "" +"'%s' palet dosyası içinde ölümcül ayrıştırma hatası: Kayıp sihirli sayfa " +"başlığı." + +#: ../app/core/gimppalette-load.c:123 +#, c-format +msgid "Invalid UTF-8 string in palette file '%s'" +msgstr "'%s' palet dosyası içinde geçersiz UTF-8 dizgisi" + +#: ../app/core/gimppalette-load.c:147 +#, c-format +msgid "" +"Reading palette file '%s': Invalid number of columns in line %d. Using " +"default value." +msgstr "" +"'%s' palet dosyası okunuyor: %d. satır içindeki sütunların sayısı geçersiz. " +"Öntanımlı değer kullanılıyor." + +#: ../app/core/gimppalette-load.c:183 +#, c-format +msgid "Reading palette file '%s': Missing RED component in line %d." +msgstr "'%s' palet dosyası okunuyor: %d. satırda KIRMIZI bileşen kayıp." + +#: ../app/core/gimppalette-load.c:191 +#, c-format +msgid "Reading palette file '%s': Missing GREEN component in line %d." +msgstr "'%s' palet dosyası okunuyor: %d. satırda YEŞİL bileşen kayıp." + +#: ../app/core/gimppalette-load.c:199 +#, c-format +msgid "Reading palette file '%s': Missing BLUE component in line %d." +msgstr "'%s' palet dosyası okunuyor: %d. satırda MAVİ bileşen kayıp." + +#: ../app/core/gimppalette-load.c:209 +#, c-format +msgid "Reading palette file '%s': RGB value out of range in line %d." +msgstr "'%s' palet dosyası okunuyor: %d. satırda RGB değeri erim dışı." + +#: ../app/core/gimppattern-load.c:85 ../app/core/gimppattern-load.c:131 +#: ../app/core/gimppattern-load.c:162 +#, c-format +msgid "Fatal parse error in pattern file '%s': File appears truncated." +msgstr "" +"'%s' desen dosyası içinde ölümcül ayrıştırma hatası: Dosya kesilmiş " +"görünüyor." + +#: ../app/core/gimppattern-load.c:104 +#, c-format +msgid "" +"Fatal parse error in pattern file '%s': Unknown pattern format version %d." +msgstr "" +"'%s' desen dosyası içinde ölümcül ayrıştırma hatası: Bilinmeyen desen biçimi " +"%d sürümü." + +#: ../app/core/gimppattern-load.c:114 +#, c-format +msgid "" +"Fatal parse error in pattern file '%s: Unsupported pattern depth %d.\n" +"GIMP Patterns must be GRAY or RGB." +msgstr "" +"'%s' desen dosyası içinde ölümcül ayrıştırma hatası: Desteklenmemiş desen " +"derinliği %d.\n" +"GIMP Desenleri GRİ ya da RGB olmalı." + +#: ../app/core/gimppattern-load.c:139 +#, c-format +msgid "Invalid UTF-8 string in pattern file '%s'." +msgstr "'%s' desen dosyası içinde geçersiz UTF-8 dizgisi." + +#: ../app/core/gimppdbprogress.c:288 ../app/widgets/gimppdbdialog.c:352 +#, c-format +msgid "" +"Unable to run %s callback. The corresponding plug-in may have crashed." +msgstr "" +"%s geri çağırmasını çalıştırmak olanaksız. İlgili uyumlu ek çökmüş olabilir." + +#: ../app/core/gimpprogress.c:107 ../app/core/gimpprogress.c:154 +msgid "Please wait" +msgstr "Lütfen bekleyin" + +#: ../app/core/gimpselection.c:150 ../app/tools/gimpeditselectiontool.c:240 +msgid "Move Selection" +msgstr "Seçimi Taşı" + +#: ../app/core/gimpselection.c:168 +msgid "Sharpen Selection" +msgstr "Seçimi Keskinleştir" + +#: ../app/core/gimpselection.c:169 +msgid "Select None" +msgstr "Hiçbirisini Seçme" + +#: ../app/core/gimpselection.c:170 +msgid "Select All" +msgstr "Tümünü Seç" + +#: ../app/core/gimpselection.c:171 +msgid "Invert Selection" +msgstr "Seçimi Tersine Çevir" + +#: ../app/core/gimpselection.c:275 +#, c-format +msgid "There is no selection to stroke." +msgstr "Darbelenecek seçim yok." + +#: ../app/core/gimpselection.c:640 +#, c-format +msgid "Unable to cut or copy because the selected region is empty." +msgstr "Kesme veya kopyalama yapılamaz çünkü seçili alan boş." + +#: ../app/core/gimpselection.c:814 +#, c-format +msgid "Cannot float selection because the selected region is empty." +msgstr "Seçim yüzdürülemez çünkü seçili alan boş." + +#: ../app/core/gimpselection.c:821 +msgid "Float Selection" +msgstr "Seçimi Yüzdür" + +#: ../app/core/gimpselection.c:837 +msgid "Floated Layer" +msgstr "Yüzen Katman" + +#: ../app/core/gimpstrokeoptions.c:119 +msgid "" +"Convert a mitered join to a bevelled join if the miter would extend to a " +"distance of more than miter-limit * line-width from the actual join point." +msgstr "" +"Bir köşe girişi, eğer eğik, aktif giriş noktasındaki köşe sınırlayıcı * " +"satır genişliğinden daha uzakta ise, eğik girişe dönüştür." + +#: ../app/core/gimptemplate.c:106 +msgid "The unit used for coordinate display when not in dot-for-dot mode." +msgstr "" +"Nokta-için-nokta kipinde değilken, görüntülemeyi eşgüdümleme için " +"kullanılacak birim." + +#: ../app/core/gimptemplate.c:113 +msgid "The horizontal image resolution." +msgstr "Yatay görüntü çözünürlüğü." + +#: ../app/core/gimptemplate.c:119 +msgid "The vertical image resolution." +msgstr "Dikey resim çözünürlüğü." + +#: ../app/core/gimptemplate.c:405 ../app/widgets/widgets-enums.c:24 +msgid "Background" +msgstr "Arkaplan" + +#. pseudo unit +#: ../app/core/gimpunit.c:56 +msgid "pixel" +msgstr "piksel" + +#: ../app/core/gimpunit.c:56 ../app/tools/gimpmeasuretool.c:877 +#: ../app/tools/gimpmeasuretool.c:1020 ../app/tools/gimpmeasuretool.c:1076 +#: ../app/tools/gimpmeasuretool.c:1104 ../app/tools/gimppainttool.c:615 +msgid "pixels" +msgstr "piksel" + +#. standard units +#: ../app/core/gimpunit.c:59 +msgid "inch" +msgstr "inç" + +#: ../app/core/gimpunit.c:59 +msgid "inches" +msgstr "inç" + +#: ../app/core/gimpunit.c:60 +msgid "millimeter" +msgstr "milimetre" + +#: ../app/core/gimpunit.c:60 +msgid "millimeters" +msgstr "milimetre" + +#. professional units +#: ../app/core/gimpunit.c:63 +msgid "point" +msgstr "punto" + +#: ../app/core/gimpunit.c:63 +msgid "points" +msgstr "punto" + +#: ../app/core/gimpunit.c:64 +msgid "pica" +msgstr "pika" + +#: ../app/core/gimpunit.c:64 +msgid "picas" +msgstr "pika" + +#: ../app/core/gimpunit.c:71 +msgid "percent" +msgstr "yüzde" + +#: ../app/core/gimpunit.c:71 +msgid "plural|percent" +msgstr "yüzde" + +#: ../app/dialogs/about-dialog.c:123 +msgid "Visit the GIMP website" +msgstr "GIMP sitesini ziyaret edin" + +#. Translators: insert your names here, separated by newline +#: ../app/dialogs/about-dialog.c:128 +msgid "translator-credits" +msgstr "" +"Görkem Çetin\n" +"\n" +"Launchpad Contributions:\n" +" Angel Spy https://launchpad.net/~dilara.ekinci\n" +" Burak Yucesoy https://launchpad.net/~burakyucesoy\n" +" Caner Dağlı https://launchpad.net/~eldirr\n" +" Captain-G https://launchpad.net/~cihangiruluaslan\n" +" Egemen Özkan https://launchpad.net/~egozkan\n" +" EsatYuce https://launchpad.net/~esat\n" +" Görkem Çetin https://launchpad.net/~gorkem-kde\n" +" Hasan Yılmaz https://launchpad.net/~hasanyilmaz\n" +" Hasan İlingi https://launchpad.net/~hasanilingi1981-gmail\n" +" Jimi Green https://launchpad.net/~spevja\n" +" Kılıç Köken https://launchpad.net/~kilickoken\n" +" PolatArasan https://launchpad.net/~polat-talforum\n" +" Yiğit Ateş https://launchpad.net/~yigitates52\n" +" ergin üresin https://launchpad.net/~ergin012\n" +" erkuserdem https://launchpad.net/~erkuserdem\n" +" erokay https://launchpad.net/~erokayca\n" +" maydin95 https://launchpad.net/~mma-95\n" +" sagirbas https://launchpad.net/~soner-agirbas2\n" +" servetummetoglu https://launchpad.net/~servetummetoglu-hotmail" + +#: ../app/dialogs/about-dialog.c:529 +msgid "GIMP is brought to you by" +msgstr "GIMP'i sizlere sunanlar" + +#: ../app/dialogs/about-dialog.c:603 +msgid "This is an unstable development release." +msgstr "Bu, kararsız bir geliştirme yayımıdır." + +#: ../app/dialogs/channel-options-dialog.c:145 +msgid "Channel _name:" +msgstr "Kanal _adı:" + +#: ../app/dialogs/channel-options-dialog.c:174 +msgid "Initialize from _selection" +msgstr "_Seçilenden başla" + +#: ../app/dialogs/convert-dialog.c:125 +msgid "Indexed Color Conversion" +msgstr "İndisli Renk Dönüşümü" + +#: ../app/dialogs/convert-dialog.c:128 +msgid "Convert Image to Indexed Colors" +msgstr "Görüntüyü Sıralanmış Renklere Dönüştür" + +#: ../app/dialogs/convert-dialog.c:138 +msgid "C_onvert" +msgstr "D_önüştür" + +#: ../app/dialogs/convert-dialog.c:189 +msgid "_Maximum number of colors:" +msgstr "Renklerin a_zami sayısı:" + +#: ../app/dialogs/convert-dialog.c:216 +msgid "_Remove unused colors from colormap" +msgstr "Kullanılmayan renkleri renk haritasından _kaldır" + +#. dithering +#: ../app/dialogs/convert-dialog.c:232 ../app/tools/gimpblendoptions.c:247 +msgid "Dithering" +msgstr "Titreme" + +#: ../app/dialogs/convert-dialog.c:244 +msgid "Color _dithering:" +msgstr "Renk _titremesi:" + +#: ../app/dialogs/convert-dialog.c:259 +msgid "Enable dithering of _transparency" +msgstr "_Saydamlığın titremesini etkinleştir" + +#: ../app/dialogs/convert-dialog.c:286 +msgid "Converting to indexed colors" +msgstr "Sıralanmış renklere dönüştürülüyor" + +#: ../app/dialogs/convert-dialog.c:414 ../app/pdb/convert-cmds.c:150 +#, c-format +msgid "Cannot convert to a palette with more than 256 colors." +msgstr "256 renkten fazla bir palete dönüştürülemedi." + +#: ../app/dialogs/dialogs-constructors.c:184 ../app/gui/gui.c:161 +#: ../app/gui/gui-message.c:148 +msgid "GIMP Message" +msgstr "GIMP İletisi" + +#: ../app/dialogs/dialogs.c:142 +msgid "Devices" +msgstr "Aygıtlar" + +#: ../app/dialogs/dialogs.c:142 +msgid "Device Status" +msgstr "Aygıt Durumu" + +#: ../app/dialogs/dialogs.c:146 +msgid "Errors" +msgstr "Hatalar" + +#: ../app/dialogs/dialogs.c:171 +msgid "History" +msgstr "Geçmiş" + +#: ../app/dialogs/dialogs.c:173 +msgid "Image Templates" +msgstr "Resim Şablonları" + +#: ../app/dialogs/dialogs.c:194 +msgid "Histogram" +msgstr "Historgram" + +#: ../app/dialogs/dialogs.c:198 +msgid "Selection Editor" +msgstr "Seçim Düzenleyici" + +#: ../app/dialogs/dialogs.c:202 +msgid "Undo" +msgstr "Geri al" + +#: ../app/dialogs/dialogs.c:202 +msgid "Undo History" +msgstr "Geri Alma Geçmişi" + +#: ../app/dialogs/dialogs.c:212 +msgid "Navigation" +msgstr "Gezgin" + +#: ../app/dialogs/dialogs.c:212 +msgid "Display Navigation" +msgstr "Gezgini Görüntüle" + +#: ../app/dialogs/dialogs.c:218 +msgid "FG/BG" +msgstr "Önplan/Arkaplan" + +#: ../app/dialogs/dialogs.c:218 +msgid "FG/BG Color" +msgstr "Önplan/Arkaplan Rengi" + +#: ../app/dialogs/fade-dialog.c:110 +#, c-format +msgid "Fade %s" +msgstr "Soldur %s" + +#: ../app/dialogs/fade-dialog.c:123 +msgid "_Fade" +msgstr "_Soldur" + +#: ../app/dialogs/fade-dialog.c:157 +msgid "_Mode:" +msgstr "_Kip:" + +#: ../app/dialogs/fade-dialog.c:163 +msgid "_Opacity:" +msgstr "_Işık Geçirmezlik:" + +#: ../app/dialogs/file-open-dialog.c:262 +msgid "Open layers" +msgstr "Katmanları aç" + +#: ../app/dialogs/file-open-location-dialog.c:72 +msgid "Open Location" +msgstr "Yeri Aç" + +#: ../app/dialogs/file-open-location-dialog.c:110 +msgid "Enter location (URI):" +msgstr "Yeri gir (URI):" + +#: ../app/dialogs/file-save-dialog.c:302 ../app/dialogs/file-save-dialog.c:338 +msgid "" +"The given filename does not have any known file extension. Please enter a " +"known file extension or select a file format from the file format list." +msgstr "" +"Verilen dosya adı, bilinen bir dosya uzantısına sahip değil. Lütfen bilinen " +"bir dosya uzantısı girin veya dosya biçimi listesinden bir dosya biçimi " +"seçin." + +#: ../app/dialogs/file-save-dialog.c:371 +msgid "" +"Saving remote files needs to determine the file format from the file " +"extension. Please enter a file extension that matches the selected file " +"format or enter no file extension at all." +msgstr "" +"Uzak dosyalar kaydedilirken, dosya uzantısından dosya biçiminin " +"tanımlanmasına gerek duyuyor. Lütfen seçilmiş dosya biçimi ile eşleşen bir " +"dosya uzantısı girin ya da hiçbir dosya uzantısı girmeyin." + +#: ../app/dialogs/file-save-dialog.c:428 +msgid "Extension Mismatch" +msgstr "Uzantı Uyuşmazlığı" + +#: ../app/dialogs/file-save-dialog.c:444 +msgid "The given file extension does not match the chosen file type." +msgstr "Verilen dosya uzantısı seçilmiş dosya türü ile eşleşmiyor." + +#: ../app/dialogs/file-save-dialog.c:448 +msgid "Do you want to save the image using this name anyway?" +msgstr "" +"Görüntüyü her şeye rağmen bu adı kullanarak kaydetmek istiyor musunuz?" + +#: ../app/dialogs/grid-dialog.c:85 +msgid "Configure Grid" +msgstr "Kılavuzları Yapılandır" + +#: ../app/dialogs/grid-dialog.c:86 +msgid "Configure Image Grid" +msgstr "Görüntü Izgarasını Yapılandır" + +#: ../app/dialogs/image-merge-layers-dialog.c:64 +msgid "Merge Layers" +msgstr "Katmanları Birleştir" + +#: ../app/dialogs/image-merge-layers-dialog.c:66 +msgid "Layers Merge Options" +msgstr "Katman Birleştirme Seçenekleri" + +#: ../app/dialogs/image-merge-layers-dialog.c:72 +msgid "_Merge" +msgstr "_Birleştir" + +#: ../app/dialogs/image-merge-layers-dialog.c:91 +msgid "Final, Merged Layer should be:" +msgstr "Son, Birleşmiş katman:" + +#: ../app/dialogs/image-merge-layers-dialog.c:95 +msgid "Expanded as necessary" +msgstr "Gerektiği gibi genişletilmeli" + +#: ../app/dialogs/image-merge-layers-dialog.c:98 +msgid "Clipped to image" +msgstr "Resim boyunda kesilmeli" + +#: ../app/dialogs/image-merge-layers-dialog.c:101 +msgid "Clipped to bottom layer" +msgstr "En alt katman boyunda kesilmeli" + +#: ../app/dialogs/image-merge-layers-dialog.c:109 +msgid "_Discard invisible layers" +msgstr "Görünmeyen katmanları _at" + +#: ../app/dialogs/image-new-dialog.c:96 +msgid "Create a New Image" +msgstr "Yeni Bir Resim Oluştur" + +#: ../app/dialogs/image-new-dialog.c:144 +#: ../app/dialogs/preferences-dialog.c:2021 +msgid "_Template:" +msgstr "Ş_ablon:" + +#: ../app/dialogs/image-new-dialog.c:299 +msgid "Confirm Image Size" +msgstr "Resim Boyutunu Doğrula" + +#: ../app/dialogs/image-new-dialog.c:321 +#: ../app/dialogs/image-scale-dialog.c:239 +#, c-format +msgid "You are trying to create an image with a size of %s." +msgstr "%s boyutunda bir görüntü oluşturmayı deniyorsunuz." + +#: ../app/dialogs/image-new-dialog.c:328 +#, c-format +msgid "" +"An image of the chosen size will use more memory than what is configured as " +"\"Maximum Image Size\" in the Preferences dialog (currently %s)." +msgstr "" +"Seçilmiş boyuttaki bir görüntü, Yeğlenenler kutusundaki \"Azama Görüntü " +"Boyutu\" olan yapılandırmadan daha çok bellek kullanacak (şimdiki %s)." + +#: ../app/dialogs/image-properties-dialog.c:60 +#: ../app/dialogs/image-properties-dialog.c:63 +msgid "Image Properties" +msgstr "Resim Özellikleri" + +#: ../app/dialogs/image-properties-dialog.c:84 +msgid "Properties" +msgstr "Özellikler" + +#: ../app/dialogs/image-properties-dialog.c:89 +msgid "Color Profile" +msgstr "Renk Profili" + +#: ../app/dialogs/image-properties-dialog.c:94 +msgid "Comment" +msgstr "Yorum" + +#: ../app/dialogs/image-scale-dialog.c:111 +msgctxt "dialog-title" +msgid "Scale Image" +msgstr "Görüntüyü Ölçekle" + +#: ../app/dialogs/image-scale-dialog.c:205 +msgid "Confirm Scaling" +msgstr "Ölçeklemeyi Onayla" + +#: ../app/dialogs/image-scale-dialog.c:245 +#, c-format +msgid "" +"Scaling the image to the chosen size will make it use more memory than what " +"is configured as \"Maximum Image Size\" in the Preferences dialog (currently " +"%s)." +msgstr "" +"Seçilmiş boyuttaki bir görüntü, Yeğlenenler kutusundaki \"Azama Görüntü " +"Boyutu\" olan yapılandırmadan daha çok bellek kullanılmasını sağlayacak " +"(şimdiki %s)." + +#: ../app/dialogs/image-scale-dialog.c:260 +msgid "" +"Scaling the image to the chosen size will shrink some layers completely away." +msgstr "" +"İmajı seçilen boyuta ölçeklemek bazı katmanları tamamen alakasız şekilde " +"küçültecek." + +#: ../app/dialogs/image-scale-dialog.c:264 +msgid "Is this what you want to do?" +msgstr "Yapmak istediğiniz şey bu mu?" + +#: ../app/dialogs/keyboard-shortcuts-dialog.c:49 +msgid "Configure Keyboard Shortcuts" +msgstr "Klavye Kısayollarını Yapılandır" + +#: ../app/dialogs/keyboard-shortcuts-dialog.c:73 +msgid "" +"To edit a shortcut key, click on the corresponding row and type a new " +"accelerator, or press backspace to clear." +msgstr "" +"İstediğiniz bir kısayol tuşunu değiştirmek için, uygun satıra tıklayın ve " +"yeni hızlandırıcıyı tuşlayın, ya da temizlemek için \"Backspace\" tuşunu " +"kullanın." + +#: ../app/dialogs/keyboard-shortcuts-dialog.c:81 +msgid "S_ave keyboard shortcuts on exit" +msgstr "Çıkışta klavye kısayollarını _kaydet" + +#: ../app/dialogs/layer-add-mask-dialog.c:83 +msgid "Add a Mask to the Layer" +msgstr "Katmana Maske Ekle" + +#: ../app/dialogs/layer-add-mask-dialog.c:110 +msgid "Initialize Layer Mask to:" +msgstr "İlklendirilen Maske:" + +#: ../app/dialogs/layer-add-mask-dialog.c:138 +msgid "In_vert mask" +msgstr "Maskeyi _Tersine Çevir" + +#: ../app/dialogs/layer-options-dialog.c:125 +msgid "Layer _name:" +msgstr "Katman _adı:" + +#. The size labels +#: ../app/dialogs/layer-options-dialog.c:139 +#: ../app/tools/gimpmeasuretool.c:1065 +msgid "Width:" +msgstr "Genişlik:" + +#: ../app/dialogs/layer-options-dialog.c:145 +#: ../app/tools/gimpmeasuretool.c:1093 +msgid "Height:" +msgstr "Yükseklik:" + +#: ../app/dialogs/layer-options-dialog.c:202 +msgid "Layer Fill Type" +msgstr "Katman Doldurma Tipi" + +#: ../app/dialogs/layer-options-dialog.c:217 +msgid "Set name from _text" +msgstr "_Metinden ad ayarla" + +#: ../app/dialogs/module-dialog.c:127 +msgid "Module Manager" +msgstr "Modül Düzenleyici" + +#: ../app/dialogs/module-dialog.c:150 +msgid "You will have to restart GIMP for the changes to take effect." +msgstr "Değişikliklerin geçerli olması için GIMP'i yeniden başlatmalısınız." + +#: ../app/dialogs/module-dialog.c:191 +msgid "Module" +msgstr "Birim" + +#: ../app/dialogs/module-dialog.c:464 +msgid "Only in memory" +msgstr "Sadece bellekte" + +#: ../app/dialogs/module-dialog.c:469 +msgid "No longer available" +msgstr "Artık kullanılır değil" + +#: ../app/dialogs/module-dialog.c:498 +msgid "Author:" +msgstr "Yazar:" + +#: ../app/dialogs/module-dialog.c:499 +msgid "Version:" +msgstr "Sürüm:" + +#: ../app/dialogs/module-dialog.c:500 +msgid "Date:" +msgstr "Tarih:" + +#: ../app/dialogs/module-dialog.c:501 +msgid "Copyright:" +msgstr "Telif hakkı:" + +#: ../app/dialogs/module-dialog.c:502 +msgid "Location:" +msgstr "Adres:" + +#: ../app/dialogs/offset-dialog.c:108 +msgid "Offset Layer" +msgstr "Göreli Konum Katmanı" + +#: ../app/dialogs/offset-dialog.c:110 +msgid "Offset Layer Mask" +msgstr "Göreli Konum Katman Maskesi" + +#: ../app/dialogs/offset-dialog.c:112 +msgid "Offset Channel" +msgstr "Göreli Konum Kanalı" + +#. The offset frame +#: ../app/dialogs/offset-dialog.c:118 ../app/dialogs/offset-dialog.c:152 +#: ../app/dialogs/resize-dialog.c:197 ../app/widgets/gimpgrideditor.c:276 +msgid "Offset" +msgstr "Ofset" + +#. offset, used as a verb +#: ../app/dialogs/offset-dialog.c:127 +msgid "_Offset" +msgstr "_Konum" + +#: ../app/dialogs/offset-dialog.c:184 ../app/dialogs/resize-dialog.c:226 +msgid "_X:" +msgstr "_X:" + +#: ../app/dialogs/offset-dialog.c:186 ../app/dialogs/resize-dialog.c:227 +msgid "_Y:" +msgstr "_Y:" + +#: ../app/dialogs/offset-dialog.c:213 +msgid "Offset by x/_2, y/2" +msgstr "x/_2, y/2 ile göreli konum" + +#. The edge behavior frame +#: ../app/dialogs/offset-dialog.c:222 +msgid "Edge Behavior" +msgstr "Kenar Davranışı" + +#: ../app/dialogs/offset-dialog.c:226 +msgid "_Wrap around" +msgstr "_Sarmala" + +#: ../app/dialogs/offset-dialog.c:229 +msgid "Fill with _background color" +msgstr "_Artalan rengi ile doldur" + +#: ../app/dialogs/offset-dialog.c:232 +msgid "Make _transparent" +msgstr "_Saydam yap" + +#: ../app/dialogs/palette-import-dialog.c:156 +msgid "Import a New Palette" +msgstr "Yeni bir Palet İçe Aktar" + +#: ../app/dialogs/palette-import-dialog.c:166 +msgid "_Import" +msgstr "İçe _Aktar" + +#. The "Source" frame +#: ../app/dialogs/palette-import-dialog.c:205 +msgid "Select Source" +msgstr "Kaynak Seç" + +#: ../app/dialogs/palette-import-dialog.c:227 +msgid "I_mage" +msgstr "G_örüntü" + +#: ../app/dialogs/palette-import-dialog.c:241 +msgid "Sample _Merged" +msgstr "_Birleştirilmiş Örnek" + +#: ../app/dialogs/palette-import-dialog.c:253 +msgid "_Selected Pixels only" +msgstr "Sadece _Seçilmiş Benekler" + +#: ../app/dialogs/palette-import-dialog.c:265 +msgid "Palette _file" +msgstr "Palet _dosyası" + +#. Palette file name entry +#: ../app/dialogs/palette-import-dialog.c:294 +msgid "Select Palette File" +msgstr "Palet Dosyasını Seç" + +#. The "Import" frame +#: ../app/dialogs/palette-import-dialog.c:305 +msgid "Import Options" +msgstr "Alma Seçenekleri" + +#: ../app/dialogs/palette-import-dialog.c:319 +msgid "New import" +msgstr "Yeni İçe Aktarma" + +#: ../app/dialogs/palette-import-dialog.c:321 +msgid "Palette _name:" +msgstr "Palet _adı:" + +#: ../app/dialogs/palette-import-dialog.c:327 +msgid "N_umber of colors:" +msgstr "Renklerin sa_yısı:" + +#: ../app/dialogs/palette-import-dialog.c:340 +msgid "C_olumns:" +msgstr "S_ütun:" + +#: ../app/dialogs/palette-import-dialog.c:352 +msgid "I_nterval:" +msgstr "A_ralık:" + +#. The "Preview" frame +#: ../app/dialogs/palette-import-dialog.c:363 +msgid "Preview" +msgstr "Önizleme" + +#: ../app/dialogs/palette-import-dialog.c:384 +msgid "The selected source contains no colors." +msgstr "Seçilmiş kaynak hiçbir renk içermiyor." + +#: ../app/dialogs/preferences-dialog.c:267 +msgid "Reset All Preferences" +msgstr "Tüm Yeğlenenleri Sıfırla" + +#: ../app/dialogs/preferences-dialog.c:285 +msgid "Do you really want to reset all preferences to default values?" +msgstr "Tüm yeğlenenleri öntanımlı değerlere getirmek istiyor musunuz?" + +#: ../app/dialogs/preferences-dialog.c:355 +msgid "" +"You will have to restart GIMP for the following changes to take effect:" +msgstr "" +"İzleyen değişikliklerin etkin olabilmesi için GIMP'i yeniden başlatmalısınız:" + +#: ../app/dialogs/preferences-dialog.c:500 +msgid "Configure Input Devices" +msgstr "Giriş Aygıtlarını Yapılandır" + +#: ../app/dialogs/preferences-dialog.c:577 +msgid "" +"Your keyboard shortcuts will be reset to default values the next time you " +"start GIMP." +msgstr "" +"Klavye kısayollarınız GIMP'in bir sonraki zaman yeniden başlatılmasında " +"öntanımlı değerlere getirilecek." + +#: ../app/dialogs/preferences-dialog.c:588 +msgid "Remove all Keyboard Shortcuts" +msgstr "Tüm Klavye Kısayollarını Kaldır" + +#: ../app/dialogs/preferences-dialog.c:610 +msgid "Do you really want to remove all keyboard shortcuts from all menus?" +msgstr "Tüm klavye kısayollarını bütün menülerden kaldırmak istiyor musunuz?" + +#: ../app/dialogs/preferences-dialog.c:651 +msgid "" +"Your window setup will be reset to default values the next time you start " +"GIMP." +msgstr "" +"Pencere düzeniniz GIMP'in sonraki başlangıcında öntanımlı değerlere " +"getirilecek." + +#: ../app/dialogs/preferences-dialog.c:686 +msgid "" +"Your input device settings will be reset to default values the next time you " +"start GIMP." +msgstr "" +"Girdi aygıtı ayarlarınız GIMP'in sonraki başlangıcında öntanımlı değerlere " +"getirilecek." + +#: ../app/dialogs/preferences-dialog.c:721 +msgid "" +"Your tool options will be reset to default values the next time you start " +"GIMP." +msgstr "" +"Alet seçenekleriniz GIMP'in sonraki başlangıcında öntanımlı değerlere " +"getirilecek." + +#: ../app/dialogs/preferences-dialog.c:1289 +msgid "Show _menubar" +msgstr "_Menü çubuğunu göster" + +#: ../app/dialogs/preferences-dialog.c:1293 +msgid "Show _rulers" +msgstr "_Cetveli göster" + +#: ../app/dialogs/preferences-dialog.c:1296 +msgid "Show scroll_bars" +msgstr "Ka_ydırma çubuğunu göster" + +#: ../app/dialogs/preferences-dialog.c:1299 +msgid "Show s_tatusbar" +msgstr "D_urum çubuğunu göster" + +#: ../app/dialogs/preferences-dialog.c:1307 +msgid "Show s_election" +msgstr "S_eçimi göster" + +#: ../app/dialogs/preferences-dialog.c:1310 +msgid "Show _layer boundary" +msgstr "Ka_tman sınırını göster" + +#: ../app/dialogs/preferences-dialog.c:1313 +msgid "Show _guides" +msgstr "K_ılavuzları göster" + +#: ../app/dialogs/preferences-dialog.c:1316 +msgid "Show gri_d" +msgstr "Kılavuzu _göster" + +#: ../app/dialogs/preferences-dialog.c:1322 +msgid "Canvas _padding mode:" +msgstr "Tuval _doldurma kipi:" + +#: ../app/dialogs/preferences-dialog.c:1327 +msgid "Custom p_adding color:" +msgstr "Tuval doldurma _rengi:" + +#: ../app/dialogs/preferences-dialog.c:1328 +msgid "Select Custom Canvas Padding Color" +msgstr "Özel Tuval Doldurma Rengi Seç" + +#: ../app/dialogs/preferences-dialog.c:1417 +msgid "Preferences" +msgstr "Tercihler" + +#: ../app/dialogs/preferences-dialog.c:1529 +#: ../app/dialogs/preferences-dialog.c:2780 +msgid "Environment" +msgstr "Çevre" + +#: ../app/dialogs/preferences-dialog.c:1543 +msgid "Resource Consumption" +msgstr "Kaynak Harcaması" + +#: ../app/dialogs/preferences-dialog.c:1553 +msgid "Minimal number of _undo levels:" +msgstr "_Geri alma düzeyinin en düşük sayısı:" + +#: ../app/dialogs/preferences-dialog.c:1556 +msgid "Maximum undo _memory:" +msgstr "Azami geri alma _belleği:" + +#: ../app/dialogs/preferences-dialog.c:1559 +msgid "Tile cache _size:" +msgstr "Önbellek b_oyutunu döşe:" + +#: ../app/dialogs/preferences-dialog.c:1562 +msgid "Maximum _new image size:" +msgstr "En büyük _yeni görüntü boyutu:" + +#: ../app/dialogs/preferences-dialog.c:1567 +msgid "Number of _processors to use:" +msgstr "Kullanılacak _işlemci sayısı:" + +#. Image Thumbnails +#: ../app/dialogs/preferences-dialog.c:1572 +msgid "Image Thumbnails" +msgstr "Görüntü Minyatürleri" + +#: ../app/dialogs/preferences-dialog.c:1577 +msgid "Size of _thumbnails:" +msgstr "_Minyatürlerin boyutu:" + +#: ../app/dialogs/preferences-dialog.c:1581 +msgid "Maximum _filesize for thumbnailing:" +msgstr "Minyatürler için en büyük dosya _boyutu:" + +#. File Saving +#: ../app/dialogs/preferences-dialog.c:1585 +msgid "Saving Images" +msgstr "Görüntüler Kaydediliyor" + +#: ../app/dialogs/preferences-dialog.c:1588 +msgid "Confirm closing of unsa_ved images" +msgstr "Kaydedilme_miş görüntülerin kapatılmasını doğrula" + +#: ../app/dialogs/preferences-dialog.c:1598 +msgid "Keep record of used files in the Recent Documents list" +msgstr "Açılan Son Belgeler listesindeki kullanılmış dosyaların kaydını tut" + +#: ../app/dialogs/preferences-dialog.c:1607 +msgid "User Interface" +msgstr "Kullanıcı Arayüzü" + +#: ../app/dialogs/preferences-dialog.c:1610 +msgid "Interface" +msgstr "Arayüz" + +#. Previews +#: ../app/dialogs/preferences-dialog.c:1617 +msgid "Previews" +msgstr "Önizlemeler" + +#: ../app/dialogs/preferences-dialog.c:1620 +msgid "_Enable layer & channel previews" +msgstr "_Katman ve kanal önizlemelerini etkinleştir" + +#: ../app/dialogs/preferences-dialog.c:1626 +msgid "_Default layer & channel preview size:" +msgstr "_Öntanımlı katman ve kanal önizleme boyutu:" + +#: ../app/dialogs/preferences-dialog.c:1629 +msgid "Na_vigation preview size:" +msgstr "Gezgin önizleme _boyutu:" + +#. Keyboard Shortcuts +#: ../app/dialogs/preferences-dialog.c:1633 +msgid "Keyboard Shortcuts" +msgstr "Klavye Kısayolları" + +#: ../app/dialogs/preferences-dialog.c:1637 +msgid "Show menu _mnemonics (access keys)" +msgstr "Menü _anımsatıcılarını göster (erişim tuşları)" + +#: ../app/dialogs/preferences-dialog.c:1640 +msgid "_Use dynamic keyboard shortcuts" +msgstr "Dinamik kla_vye kısayollarını kullan" + +#: ../app/dialogs/preferences-dialog.c:1644 +msgid "Configure _Keyboard Shortcuts..." +msgstr "Klavye kısayollarını _yapılandır..." + +#: ../app/dialogs/preferences-dialog.c:1651 +msgid "_Save keyboard shortcuts on exit" +msgstr "Çıkışta klavye kısayollarını kayde_t" + +#: ../app/dialogs/preferences-dialog.c:1655 +msgid "Save Keyboard Shortcuts _Now" +msgstr "Klavye Kısayollarını _Şimdi Kaydet" + +#: ../app/dialogs/preferences-dialog.c:1662 +msgid "_Reset Keyboard Shortcuts to Default Values" +msgstr "Klavye Kısayollarını Ö_ntanımlı Değerlere Getir" + +#: ../app/dialogs/preferences-dialog.c:1671 +msgid "Remove _All Keyboard Shortcuts" +msgstr "_Tüm Klavye Kısayollarını Kaldır" + +#: ../app/dialogs/preferences-dialog.c:1683 +#: ../app/dialogs/preferences-dialog.c:1722 +msgid "Theme" +msgstr "Temalar" + +#: ../app/dialogs/preferences-dialog.c:1692 +msgid "Select Theme" +msgstr "Tema Seç" + +#: ../app/dialogs/preferences-dialog.c:1774 +msgid "Reload C_urrent Theme" +msgstr "_Güncel Temayı Yeniden Yükle" + +#: ../app/dialogs/preferences-dialog.c:1786 +msgid "Help System" +msgstr "Yardım Sistemi" + +#. General +#: ../app/dialogs/preferences-dialog.c:1798 +#: ../app/dialogs/preferences-dialog.c:1892 +#: ../app/dialogs/preferences-dialog.c:2079 +#: ../app/widgets/gimpcontrollereditor.c:189 +msgid "General" +msgstr "Genel" + +#: ../app/dialogs/preferences-dialog.c:1801 +msgid "Show _tooltips" +msgstr "Araç _ipuçlarını göster" + +#: ../app/dialogs/preferences-dialog.c:1804 +msgid "Show help _buttons" +msgstr "_Yardım düğmelerini göster" + +#: ../app/dialogs/preferences-dialog.c:1817 +msgid "Use the online version" +msgstr "Çevrimiçi sürümü kullan" + +#: ../app/dialogs/preferences-dialog.c:1818 +msgid "Use a locally installed copy" +msgstr "Yerel olarak yüklenmiş bir kopya kullan" + +#: ../app/dialogs/preferences-dialog.c:1819 +msgid "User manual:" +msgstr "Kullanıcı el kitabı:" + +#: ../app/dialogs/preferences-dialog.c:1826 +msgid "There's a local installation of the user manual." +msgstr "Kullanıcı el kitabının yerel bir yüklenmişi var." + +#: ../app/dialogs/preferences-dialog.c:1831 +msgid "The user manual is not installed locally." +msgstr "Kullanıcı el kitabı yerel olarak yüklenmemiş." + +#. Help Browser +#: ../app/dialogs/preferences-dialog.c:1854 +msgid "Help Browser" +msgstr "Yardım Gezgini" + +#: ../app/dialogs/preferences-dialog.c:1858 +msgid "H_elp browser to use:" +msgstr "_Kullanılacak yardım gezgini:" + +#: ../app/dialogs/preferences-dialog.c:1863 +msgid "Web Browser" +msgstr "Web Tarayıcı" + +#: ../app/dialogs/preferences-dialog.c:1867 +msgid "_Web browser to use:" +msgstr "_Kullanılacak web tarayıcı:" + +#: ../app/dialogs/preferences-dialog.c:1895 +msgid "_Save tool options on exit" +msgstr "Çıkar_ken araç seçeneklerini kaydet" + +#: ../app/dialogs/preferences-dialog.c:1899 +msgid "Save Tool Options _Now" +msgstr "Araç Seçeneklerini _Şimdi Kaydet" + +#: ../app/dialogs/preferences-dialog.c:1906 +msgid "_Reset Saved Tool Options to Default Values" +msgstr "Kaydedilmiş Araç Seçeneklerini Öntanımlı Değerlere _Getir" + +#. Snapping Distance +#: ../app/dialogs/preferences-dialog.c:1916 +msgid "Guide & Grid Snapping" +msgstr "Kılavuz & Izgara Yanaştırması" + +#: ../app/dialogs/preferences-dialog.c:1921 +msgid "_Snap distance:" +msgstr "_Yanaştırma uzaklığı:" + +#: ../app/dialogs/preferences-dialog.c:1929 +msgid "Default _interpolation:" +msgstr "Öntanımlı _aradeğerleme:" + +#. Global Brush, Pattern, ... +#: ../app/dialogs/preferences-dialog.c:1936 +msgid "Paint Options Shared Between Tools" +msgstr "Araçlarla Paylaşılan Boyama Seçenekleri" + +#: ../app/dialogs/preferences-dialog.c:1949 +msgid "Move Tool" +msgstr "Taşıma Aracı" + +#: ../app/dialogs/preferences-dialog.c:1953 +msgid "Set layer or path as active" +msgstr "Katmanı veya yolu etkin olarak ayarla" + +#: ../app/dialogs/preferences-dialog.c:1966 ../app/widgets/gimptoolbox.c:633 +msgid "Toolbox" +msgstr "Araç kutusu" + +#. Appearance +#: ../app/dialogs/preferences-dialog.c:1978 +#: ../app/dialogs/preferences-dialog.c:2152 +#: ../app/widgets/gimpgrideditor.c:204 +msgid "Appearance" +msgstr "Görünüm" + +#: ../app/dialogs/preferences-dialog.c:1982 +msgid "Show _foreground & background color" +msgstr "_Önalan ve artalan rengini göster" + +#: ../app/dialogs/preferences-dialog.c:1986 +msgid "Show active _brush, pattern & gradient" +msgstr "Etkin _fırçayı, deseni ve renk geçişini göster" + +#: ../app/dialogs/preferences-dialog.c:1990 +msgid "Show active _image" +msgstr "Etkin _görüntüyü göster" + +#: ../app/dialogs/preferences-dialog.c:2003 +msgid "Default New Image" +msgstr "Öntanımlı Yeni Resim" + +#: ../app/dialogs/preferences-dialog.c:2006 +msgid "Default Image" +msgstr "Öntanımlı Resim" + +#: ../app/dialogs/preferences-dialog.c:2043 +msgid "Default Image Grid" +msgstr "Öntanımlı Resim Kılavuzu" + +#: ../app/dialogs/preferences-dialog.c:2046 +msgid "Default Grid" +msgstr "Öntanımlı Kılavuz" + +#: ../app/dialogs/preferences-dialog.c:2067 +msgid "Image Windows" +msgstr "Resim Pencereleri" + +#: ../app/dialogs/preferences-dialog.c:2082 +msgid "Use \"_Dot for dot\" by default" +msgstr "Öntanımlı olarak \"_Noktadan noktaya\" kullan" + +#: ../app/dialogs/preferences-dialog.c:2088 +msgid "Marching _ants speed:" +msgstr "Yürüyen _karıncaların hızı:" + +#. Zoom & Resize Behavior +#: ../app/dialogs/preferences-dialog.c:2092 +msgid "Zoom & Resize Behavior" +msgstr "Odaklama ve Boyutlama Davranışı" + +#: ../app/dialogs/preferences-dialog.c:2096 +msgid "Resize window on _zoom" +msgstr "_Yakınlaştırırken pencereyi yeniden boyulandır" + +#: ../app/dialogs/preferences-dialog.c:2099 +msgid "Resize window on image _size change" +msgstr "Görüntü _boyutu değiştiğinde pencereyi yeniden boyulandır" + +#: ../app/dialogs/preferences-dialog.c:2105 +msgid "Fit to window" +msgstr "Pencereye uydur" + +#: ../app/dialogs/preferences-dialog.c:2107 +msgid "Initial zoom _ratio:" +msgstr "İlk yakınlaştırma _oranı:" + +#. Space Bar +#: ../app/dialogs/preferences-dialog.c:2111 +msgid "Space Bar" +msgstr "Ara Çubuğu" + +#: ../app/dialogs/preferences-dialog.c:2117 +msgid "_While space bar is pressed:" +msgstr "Ara _çubuğuna basıldığında:" + +#. Mouse Pointers +#: ../app/dialogs/preferences-dialog.c:2121 +msgid "Mouse Pointers" +msgstr "Fare İmleçleri" + +#: ../app/dialogs/preferences-dialog.c:2125 +msgid "Show _brush outline" +msgstr "_Fırçanın ana çizgilerini göster" + +#: ../app/dialogs/preferences-dialog.c:2128 +msgid "Show pointer for paint _tools" +msgstr "Boyama _araçları için imleci göster" + +#: ../app/dialogs/preferences-dialog.c:2134 +msgid "Pointer _mode:" +msgstr "İmleç _kipi:" + +#: ../app/dialogs/preferences-dialog.c:2137 +msgid "Pointer re_ndering:" +msgstr "İmleç i_şlemesi:" + +#: ../app/dialogs/preferences-dialog.c:2149 +msgid "Image Window Appearance" +msgstr "Resim Penceresi Görünümü" + +#: ../app/dialogs/preferences-dialog.c:2160 +msgid "Default Appearance in Normal Mode" +msgstr "Normal Kipte Öntanımlı Görünüm" + +#: ../app/dialogs/preferences-dialog.c:2165 +msgid "Default Appearance in Fullscreen Mode" +msgstr "Tam Ekrandaki Öntanımlı Görünüm" + +#: ../app/dialogs/preferences-dialog.c:2174 +msgid "Image Title & Statusbar Format" +msgstr "Resim Başlığı ve Durum Çubuğu Biçimi" + +#: ../app/dialogs/preferences-dialog.c:2177 +msgid "Title & Status" +msgstr "Başlık & Durum" + +#: ../app/dialogs/preferences-dialog.c:2195 +msgid "Current format" +msgstr "Geçerli biçim" + +#: ../app/dialogs/preferences-dialog.c:2196 +msgid "Default format" +msgstr "Öntanımlı biçim" + +#: ../app/dialogs/preferences-dialog.c:2197 +msgid "Show zoom percentage" +msgstr "Odak yüzdesini göster" + +#: ../app/dialogs/preferences-dialog.c:2198 +msgid "Show zoom ratio" +msgstr "Odaklama oranını göster" + +#: ../app/dialogs/preferences-dialog.c:2199 +msgid "Show image size" +msgstr "Görüntü boyutunu göster" + +#: ../app/dialogs/preferences-dialog.c:2212 +msgid "Image Title Format" +msgstr "Resim Başlık Formatı" + +#: ../app/dialogs/preferences-dialog.c:2214 +msgid "Image Statusbar Format" +msgstr "Resim Durum Çubuğu Formatı" + +#: ../app/dialogs/preferences-dialog.c:2299 +msgid "Display" +msgstr "Görünüm" + +#: ../app/dialogs/preferences-dialog.c:2315 +msgid "_Check style:" +msgstr "_Denetleme biçemi:" + +#: ../app/dialogs/preferences-dialog.c:2318 +msgid "Check _size:" +msgstr "_Boyutu denetle:" + +#: ../app/dialogs/preferences-dialog.c:2321 +msgid "Monitor Resolution" +msgstr "Monitör Çözünürlüğü" + +#: ../app/dialogs/preferences-dialog.c:2325 +#: ../app/widgets/gimpcursorview.c:124 ../app/widgets/gimpgrideditor.c:269 +#: ../app/widgets/gimpgrideditor.c:301 +msgid "Pixels" +msgstr "Piksel" + +#: ../app/dialogs/preferences-dialog.c:2347 +#: ../app/widgets/gimpimagepropview.c:476 +msgid "ppi" +msgstr "ppi" + +#: ../app/dialogs/preferences-dialog.c:2363 +#, c-format +msgid "_Detect automatically (currently %d × %d ppi)" +msgstr "_Kendiliğinden bul (şimdiki %d × %d ppi)" + +#: ../app/dialogs/preferences-dialog.c:2383 +msgid "_Enter manually" +msgstr "_Elle gir" + +#: ../app/dialogs/preferences-dialog.c:2398 +msgid "C_alibrate..." +msgstr "İ_nce ayarlama..." + +#: ../app/dialogs/preferences-dialog.c:2421 +msgid "Color Management" +msgstr "Renk Yönetimi" + +#: ../app/dialogs/preferences-dialog.c:2441 +msgid "_RGB profile:" +msgstr "_RGB profili:" + +#: ../app/dialogs/preferences-dialog.c:2442 +msgid "Select RGB Color Profile" +msgstr "RGB Renk Profilini Seç" + +#: ../app/dialogs/preferences-dialog.c:2443 +msgid "_CMYK profile:" +msgstr "_CMYK profili:" + +#: ../app/dialogs/preferences-dialog.c:2444 +msgid "Select CMYK Color Profile" +msgstr "CMYK Renk Profilini Seç" + +#: ../app/dialogs/preferences-dialog.c:2445 +msgid "_Monitor profile:" +msgstr "_Monitör profili:" + +#: ../app/dialogs/preferences-dialog.c:2446 +msgid "Select Monitor Color Profile" +msgstr "Monitör Renk Profilini Seç" + +#: ../app/dialogs/preferences-dialog.c:2447 +msgid "_Print simulation profile:" +msgstr "Benzetim profilini _yazdır:" + +#: ../app/dialogs/preferences-dialog.c:2448 +msgid "Select Printer Color Profile" +msgstr "Yazıcı Renk Profilini Seç" + +#: ../app/dialogs/preferences-dialog.c:2459 +msgid "_Mode of operation:" +msgstr "İşlem _Kipi:" + +#: ../app/dialogs/preferences-dialog.c:2489 +msgid "_Try to use the system monitor profile" +msgstr "Sistem monitörü profilini kullanmayı _deneyin" + +#: ../app/dialogs/preferences-dialog.c:2499 +msgid "_Display rendering intent:" +msgstr "_Görüntü işleme amacı:" + +#: ../app/dialogs/preferences-dialog.c:2508 +msgid "_Softproof rendering intent:" +msgstr "_Ön deney yapma amacı:" + +#: ../app/dialogs/preferences-dialog.c:2521 +msgid "Mark out of gamut colors" +msgstr "Dizi renklerinin dışındakileri işaretle" + +#: ../app/dialogs/preferences-dialog.c:2526 +msgid "Select Warning Color" +msgstr "Uyarı Rengini Seç" + +#: ../app/dialogs/preferences-dialog.c:2539 +msgid "File Open behaviour:" +msgstr "Dosya Açma davranışı:" + +#: ../app/dialogs/preferences-dialog.c:2551 +msgid "Input Devices" +msgstr "Giriş Aygıtları" + +#. Extended Input Devices +#: ../app/dialogs/preferences-dialog.c:2561 +msgid "Extended Input Devices" +msgstr "Gelişmiş Giriş Aygıtları" + +#: ../app/dialogs/preferences-dialog.c:2565 +msgid "Configure E_xtended Input Devices..." +msgstr "G_elişmiş Girdi Aygıtlarını Yapılandır..." + +#: ../app/dialogs/preferences-dialog.c:2572 +msgid "_Save input device settings on exit" +msgstr "Çıkarken girdi aygıtı ayarlarını _kaydet" + +#: ../app/dialogs/preferences-dialog.c:2576 +msgid "Save Input Device Settings _Now" +msgstr "Girdi Aygıtı Ayarlarını _Şimdi Kaydet" + +#: ../app/dialogs/preferences-dialog.c:2583 +msgid "_Reset Saved Input Device Settings to Default Values" +msgstr "Kaydedilmiş Girdi Aygıtı Ayarlarını Öntanımlı Değerlere _Getir" + +#: ../app/dialogs/preferences-dialog.c:2598 +msgid "Additional Input Controllers" +msgstr "Ek Girdi Denetleyicileri" + +#: ../app/dialogs/preferences-dialog.c:2601 +msgid "Input Controllers" +msgstr "Girdi Denetleyicileri" + +#: ../app/dialogs/preferences-dialog.c:2617 +msgid "Window Management" +msgstr "Pencere Yönetimi" + +#: ../app/dialogs/preferences-dialog.c:2626 +msgid "Window Manager Hints" +msgstr "Pencere Yöneticisi İpuçları" + +#: ../app/dialogs/preferences-dialog.c:2632 +msgid "Hint for the _toolbox:" +msgstr "_Araç çubuğu ipuçları:" + +#: ../app/dialogs/preferences-dialog.c:2636 +msgid "Hint for other _docks:" +msgstr "Diğer _rıhtımlar için ipuçları:" + +#: ../app/dialogs/preferences-dialog.c:2641 +msgid "Toolbox and other docks are transient to the active image window" +msgstr "" +"Araç kutusu ve diğer rıhtımlar, etkin görüntü penceresi için geçici durumda" + +#: ../app/dialogs/preferences-dialog.c:2646 +msgid "Focus" +msgstr "Odaklama" + +#: ../app/dialogs/preferences-dialog.c:2650 +msgid "Activate the _focused image" +msgstr "_Odaklanılmış görüntüyü etkinleştir" + +#. Window Positions +#: ../app/dialogs/preferences-dialog.c:2654 +msgid "Window Positions" +msgstr "Pencere Boyutları" + +#: ../app/dialogs/preferences-dialog.c:2657 +msgid "_Save window positions on exit" +msgstr "Çıkarken pencere konumlarını _kaydet" + +#: ../app/dialogs/preferences-dialog.c:2661 +msgid "Save Window Positions _Now" +msgstr "Pencere Konumlarını _Şimdi Kaydet" + +#: ../app/dialogs/preferences-dialog.c:2668 +msgid "_Reset Saved Window Positions to Default Values" +msgstr "Kaydedilmiş Pencere Konumlarını Öntanımlı Değerlere Getir" + +#: ../app/dialogs/preferences-dialog.c:2683 +msgid "Folders" +msgstr "Dizinler" + +#: ../app/dialogs/preferences-dialog.c:2703 +msgid "Temporary folder:" +msgstr "Geçici dizin:" + +#: ../app/dialogs/preferences-dialog.c:2704 +msgid "Select Folder for Temporary Files" +msgstr "Geçici Dosyalar için Dizin Seç" + +#: ../app/dialogs/preferences-dialog.c:2708 +msgid "Swap folder:" +msgstr "Takas dizini:" + +#: ../app/dialogs/preferences-dialog.c:2709 +msgid "Select Swap Folder" +msgstr "Takas Dizinini Seç" + +#: ../app/dialogs/preferences-dialog.c:2744 +msgid "Brush Folders" +msgstr "Fırça Dizini" + +#: ../app/dialogs/preferences-dialog.c:2746 +msgid "Select Brush Folders" +msgstr "Fırça Dizinini Seç" + +#: ../app/dialogs/preferences-dialog.c:2748 +msgid "Pattern Folders" +msgstr "Desen Dizini" + +#: ../app/dialogs/preferences-dialog.c:2750 +msgid "Select Pattern Folders" +msgstr "Desen Dizinini Seç" + +#: ../app/dialogs/preferences-dialog.c:2752 +msgid "Palette Folders" +msgstr "Palet Dizini" + +#: ../app/dialogs/preferences-dialog.c:2754 +msgid "Select Palette Folders" +msgstr "Palet Dizinini Seç" + +#: ../app/dialogs/preferences-dialog.c:2756 +msgid "Gradient Folders" +msgstr "Gradyan Dizini" + +#: ../app/dialogs/preferences-dialog.c:2758 +msgid "Select Gradient Folders" +msgstr "Gradyan Dizinini Seç" + +#: ../app/dialogs/preferences-dialog.c:2760 +msgid "Font Folders" +msgstr "Yazıtipi Dizinleri" + +#: ../app/dialogs/preferences-dialog.c:2762 +msgid "Select Font Folders" +msgstr "Yazıtipi Dizinlerini Seç" + +#: ../app/dialogs/preferences-dialog.c:2764 +msgid "Plug-In Folders" +msgstr "Eklenti Dizini" + +#: ../app/dialogs/preferences-dialog.c:2766 +msgid "Select Plug-In Folders" +msgstr "Eklenti Dizinini Seç" + +#: ../app/dialogs/preferences-dialog.c:2768 +msgid "Scripts" +msgstr "Betikler" + +#: ../app/dialogs/preferences-dialog.c:2768 +msgid "Script-Fu Folders" +msgstr "Betik Dizini" + +#: ../app/dialogs/preferences-dialog.c:2770 +msgid "Select Script-Fu Folders" +msgstr "Betik Dizinini Seç" + +#: ../app/dialogs/preferences-dialog.c:2772 +msgid "Module Folders" +msgstr "Modül Dizini" + +#: ../app/dialogs/preferences-dialog.c:2774 +msgid "Select Module Folders" +msgstr "Modül Dizinini Seç" + +#: ../app/dialogs/preferences-dialog.c:2776 +msgid "Interpreters" +msgstr "Yorumlayıcılar" + +#: ../app/dialogs/preferences-dialog.c:2776 +msgid "Interpreter Folders" +msgstr "Yorumlayıcı Dizinleri" + +#: ../app/dialogs/preferences-dialog.c:2778 +msgid "Select Interpreter Folders" +msgstr "Yorumlayıcı Dizinlerini Seç" + +#: ../app/dialogs/preferences-dialog.c:2780 +msgid "Environment Folders" +msgstr "Çevresel Dizinler" + +#: ../app/dialogs/preferences-dialog.c:2782 +msgid "Select Environment Folders" +msgstr "Çevresel Dizinleri Seç" + +#: ../app/dialogs/preferences-dialog.c:2784 +msgid "Themes" +msgstr "Temalar" + +#: ../app/dialogs/preferences-dialog.c:2784 +msgid "Theme Folders" +msgstr "Tema Dizinleri" + +#: ../app/dialogs/preferences-dialog.c:2786 +msgid "Select Theme Folders" +msgstr "Tema Dizinlerini Seç" + +#: ../app/dialogs/print-size-dialog.c:138 +msgid "Print Size" +msgstr "Yazdırma Boyutu" + +#. the image size labels +#: ../app/dialogs/print-size-dialog.c:165 ../app/widgets/gimpsizebox.c:202 +#: ../app/widgets/gimptemplateeditor.c:161 +msgid "_Width:" +msgstr "_Genişlik:" + +#: ../app/dialogs/print-size-dialog.c:172 ../app/widgets/gimpsizebox.c:206 +#: ../app/widgets/gimptemplateeditor.c:168 +msgid "H_eight:" +msgstr "_Yükseklik:" + +#. the resolution labels +#: ../app/dialogs/print-size-dialog.c:222 ../app/widgets/gimpsizebox.c:264 +#: ../app/widgets/gimptemplateeditor.c:288 +msgid "_X resolution:" +msgstr "_X çözünürlüğü:" + +#: ../app/dialogs/print-size-dialog.c:229 ../app/widgets/gimpsizebox.c:267 +#: ../app/widgets/gimptemplateeditor.c:295 +msgid "_Y resolution:" +msgstr "_Y çözünürlüğü:" + +#: ../app/dialogs/print-size-dialog.c:240 ../app/widgets/gimpsizebox.c:260 +#: ../app/widgets/gimptemplateeditor.c:308 +#, c-format +msgid "pixels/%a" +msgstr "piksel/%a" + +#: ../app/dialogs/quit-dialog.c:106 +msgid "Quit GIMP" +msgstr "GIMP'ten Çık" + +#: ../app/dialogs/quit-dialog.c:106 +msgid "Close All Images" +msgstr "Tüm Görüntüleri Kapat" + +#: ../app/dialogs/quit-dialog.c:165 +msgid "If you quit GIMP now, these changes will be lost." +msgstr "GIMP'ten şimdi çıkarsanız, değişiklikler kaybedilecektir." + +#: ../app/dialogs/quit-dialog.c:168 +msgid "If you close these images now, changes will be lost." +msgstr "Eğer görüntüleri şimdi kapatırsanız, değişiklikler kaybedilecektir." + +#: ../app/dialogs/quit-dialog.c:216 +#, c-format +msgid "There is one image with unsaved changes:" +msgid_plural "There are %d images with unsaved changes:" +msgstr[0] "Değişikliklerin kaydedilmediği %d görüntü:" + +#: ../app/dialogs/quit-dialog.c:238 +msgid "_Discard Changes" +msgstr "_Değişiklikleri Sil" + +#: ../app/dialogs/resize-dialog.c:119 +msgid "Canvas Size" +msgstr "Tuval Boyutu" + +#: ../app/dialogs/resize-dialog.c:130 ../app/dialogs/scale-dialog.c:109 +msgid "Layer Size" +msgstr "Katman Boyutu" + +#: ../app/dialogs/resize-dialog.c:294 +msgid "Resize _layers:" +msgstr "Ka_tmanları yeniden boyutlandır:" + +#: ../app/dialogs/resolution-calibrate-dialog.c:70 +msgid "Calibrate Monitor Resolution" +msgstr "Ekran Çözünürlüğünü Kalibre Et" + +#: ../app/dialogs/resolution-calibrate-dialog.c:128 +msgid "Measure the rulers and enter their lengths:" +msgstr "Cetvelleri ölçülendir ve uzunluklarını gir:" + +#: ../app/dialogs/resolution-calibrate-dialog.c:153 +msgid "_Horizontal:" +msgstr "_Yatay:" + +#: ../app/dialogs/resolution-calibrate-dialog.c:158 +msgid "_Vertical:" +msgstr "_Dikey:" + +#. Image size frame +#: ../app/dialogs/scale-dialog.c:98 ../app/widgets/gimptemplateeditor.c:139 +msgid "Image Size" +msgstr "Resim Boyutu" + +#: ../app/dialogs/scale-dialog.c:175 +msgid "Quality" +msgstr "Kalite" + +#: ../app/dialogs/scale-dialog.c:187 +msgid "I_nterpolation:" +msgstr "_Aradeğerleme:" + +#: ../app/dialogs/scale-dialog.c:206 +msgid "" +"Indexed color layers are always scaled without interpolation. The chosen " +"interpolation type will affect channels and layer masks only." +msgstr "" +"Sıralanmış renk katmanları her zaman ara değerleme olmadan ölçeklenir. " +"Seçilmiş ara değerleme tipi sadece kanalları ve katman maskelerini etkiler." + +#: ../app/dialogs/stroke-dialog.c:102 +msgid "Choose Stroke Style" +msgstr "Darbeleme Yöntemini Seç" + +#: ../app/dialogs/stroke-dialog.c:225 +msgid "Paint tool:" +msgstr "Boyama aleti:" + +#: ../app/dialogs/stroke-dialog.c:246 +msgid "_Emulate brush dynamics" +msgstr "_Fırça hareketine benzet" + +#: ../app/dialogs/tips-dialog.c:89 +msgid "The GIMP tips file is empty!" +msgstr "GIMP ipucu dosyası boş!" + +#: ../app/dialogs/tips-dialog.c:93 +msgid "The GIMP tips file appears to be missing!" +msgstr "GIMP ipucu dosyası kayıp görünüyor!" + +#: ../app/dialogs/tips-dialog.c:95 +#, c-format +msgid "There should be a file called '%s'. Please check your installation." +msgstr "" +"Burada '%s' adında bir dosya olmalıydı. Lütfen kurulumunuzu denetleyin." + +#: ../app/dialogs/tips-dialog.c:101 +msgid "The GIMP tips file could not be parsed!" +msgstr "GIMP ipuçları dosyası okunamadı!" + +#: ../app/dialogs/tips-dialog.c:129 +msgid "GIMP Tip of the Day" +msgstr "Günün GIMP İpucu" + +#: ../app/dialogs/tips-dialog.c:135 +msgid "_Previous Tip" +msgstr "Ö_nceki İpucu" + +#: ../app/dialogs/tips-dialog.c:141 +msgid "_Next Tip" +msgstr "_Sonraki İpucu" + +#. a link to the related section in the user manual +#: ../app/dialogs/tips-dialog.c:194 +msgid "Learn more" +msgstr "Daha çok öğren" + +#. This is a special string to specify the language identifier to +#. look for in the gimp-tips.xml file. Please translate the C in it +#. according to the name of the po file used for gimp-tips.xml. +#. E.g. for the german translation, that would be "tips-locale:de". +#. +#: ../app/dialogs/tips-parser.c:188 +msgid "tips-locale:C" +msgstr "tips-locale:tr" + +#: ../app/dialogs/user-install-dialog.c:85 +msgid "GIMP User Installation" +msgstr "GIMP Kullanıcı Kurulumu" + +#: ../app/dialogs/user-install-dialog.c:94 +msgid "User installation failed!" +msgstr "Kullanıcı kurulumu başarısız!" + +#: ../app/dialogs/user-install-dialog.c:96 +msgid "The GIMP user installation failed; see the log for details." +msgstr "Kullanıcı kurulumu başarısız; ayrıntılar için günlüğe bakın." + +#: ../app/dialogs/user-install-dialog.c:99 +msgid "Installation Log" +msgstr "Kurulum Günlüğü" + +#: ../app/dialogs/vectors-export-dialog.c:55 +msgid "Export Path to SVG" +msgstr "SVG için Dışa Aktarma Yolu" + +#: ../app/dialogs/vectors-export-dialog.c:90 +msgid "Export the active path" +msgstr "Geçerli yolu taşı" + +#: ../app/dialogs/vectors-export-dialog.c:91 +msgid "Export all paths from this image" +msgstr "Bu görüntüden tüm yolları dışa aktar" + +#: ../app/dialogs/vectors-import-dialog.c:58 +msgid "Import Paths from SVG" +msgstr "SVG'den Yolları İçe Aktar" + +#: ../app/dialogs/vectors-import-dialog.c:92 +#: ../app/widgets/gimpprofilechooserdialog.c:132 +msgid "All files (*.*)" +msgstr "Tüm dosyalar (*.*)" + +#: ../app/dialogs/vectors-import-dialog.c:97 +msgid "Scalable SVG image (*.svg)" +msgstr "Ölçeklenebilir SVG görüntüsü (*.svg)" + +#: ../app/dialogs/vectors-import-dialog.c:108 +msgid "_Merge imported paths" +msgstr "İçe aktarılmış yolları _birleştir" + +#: ../app/dialogs/vectors-import-dialog.c:118 +msgid "_Scale imported paths to fit image" +msgstr "Görüntüye uyması için içe aktarılmış yolları _ölçekle" + +#: ../app/dialogs/vectors-options-dialog.c:121 +msgid "Path name:" +msgstr "Yol adı:" + +#: ../app/display/display-enums.c:24 +msgid "Tool icon" +msgstr "Alet simgesi" + +#: ../app/display/display-enums.c:25 +msgid "Tool icon with crosshair" +msgstr "Artı imleci ile alet simgesi" + +#: ../app/display/display-enums.c:26 +msgid "Crosshair only" +msgstr "Sadece Kesişik Yollar" + +#: ../app/display/display-enums.c:85 +msgid "From theme" +msgstr "Temadan" + +#: ../app/display/display-enums.c:86 +msgid "Light check color" +msgstr "Açık denetleme rengi" + +#: ../app/display/display-enums.c:87 +msgid "Dark check color" +msgstr "Koyu denetleme rengi" + +#: ../app/display/display-enums.c:88 +msgid "Custom color" +msgstr "Özel renk" + +#: ../app/display/display-enums.c:116 +msgid "No action" +msgstr "Eylem Yok" + +#: ../app/display/display-enums.c:117 +msgid "Pan view" +msgstr "Engin Görünüm" + +#: ../app/display/display-enums.c:118 +msgid "Switch to Move tool" +msgstr "Taşıma aracına çevir" + +#: ../app/display/display-enums.c:145 +msgid "quality|Low" +msgstr "quality|Düşük" + +#: ../app/display/display-enums.c:146 +msgid "quality|High" +msgstr "quality|Yüksek" + +#: ../app/display/gimpdisplay-handlers.c:160 +#, c-format +msgid "Image saved to '%s'" +msgstr "Görüntünün kaydedildiği yer, '%s'" + +#: ../app/display/gimpdisplayshell.c:1035 +msgid "Access the image menu" +msgstr "Görüntü menüsüne erişim" + +#: ../app/display/gimpdisplayshell.c:1140 +msgid "Zoom image when window size changes" +msgstr "Pencere boyutu değiştiğinde görüntüye yakınlaştır" + +#: ../app/display/gimpdisplayshell.c:1190 +msgid "Navigate the image display" +msgstr "Resim ekranında dolaş" + +#: ../app/display/gimpdisplayshell.c:1285 +#: ../app/display/gimpdisplayshell.c:1375 ../app/widgets/gimptoolbox.c:222 +msgid "Drop image files here to open them" +msgstr "Görüntü dosyalarını açmak için buraya bırakın" + +#: ../app/display/gimpdisplayshell-close.c:147 +#: ../app/display/gimpdisplayshell-close.c:224 +#, c-format +msgid "Close %s" +msgstr "'%s' Dosyası Kapatılsın mı?" + +#: ../app/display/gimpdisplayshell-close.c:159 +msgid "Do_n't Save" +msgstr "Ka_ydetme" + +#: ../app/display/gimpdisplayshell-close.c:231 +#, c-format +msgid "Save the changes to image '%s' before closing?" +msgstr "%s resmi üzerinde yapılan değişiklikleri kaydetmek istiyor musunuz?" + +#: ../app/display/gimpdisplayshell-close.c:254 +#, c-format +msgid "If you don't save the image, changes from the last hour will be lost." +msgid_plural "" +"If you don't save the image, changes from the last %d hours will be lost." +msgstr[0] "" +"Eğer görüntüyü kaydetmezseniz son %d saatteki değişiklikler kaybedilecek." + +#: ../app/display/gimpdisplayshell-close.c:264 +#, c-format +msgid "" +"If you don't save the image, changes from the last hour and %d minute will " +"be lost." +msgid_plural "" +"If you don't save the image, changes from the last hour and %d minutes will " +"be lost." +msgstr[0] "" +"Eğer görüntüyü kaydetmezseniz son bir saat ve %d dakikadaki değişiklikler " +"kaybedilecek." + +#: ../app/display/gimpdisplayshell-close.c:275 +#, c-format +msgid "" +"If you don't save the image, changes from the last minute will be lost." +msgid_plural "" +"If you don't save the image, changes from the last %d minutes will be lost." +msgstr[0] "" +"Eğer görüntüyü kaydetmezseniz son %d dakikadaki değişiklikler kaybedilecek." + +#: ../app/display/gimpdisplayshell-dnd.c:255 +#: ../app/display/gimpdisplayshell-dnd.c:587 +#: ../app/display/gimpdisplayshell-dnd.c:658 +msgid "Drop New Layer" +msgstr "Yeni Katmanı Düşür" + +#: ../app/display/gimpdisplayshell-dnd.c:301 +msgid "Drop New Path" +msgstr "Yeni Yolu Düşür" + +#: ../app/display/gimpdisplayshell-dnd.c:497 +#: ../app/widgets/gimplayertreeview.c:719 +msgid "Drop layers" +msgstr "Katmanları Düşür" + +#: ../app/display/gimpdisplayshell-dnd.c:648 +#: ../app/widgets/gimplayertreeview.c:801 ../app/widgets/gimptoolbox-dnd.c:361 +msgid "Dropped Buffer" +msgstr "Düşürülmüş Arabellek" + +#: ../app/display/gimpdisplayshell-filter-dialog.c:75 +msgid "Color Display Filters" +msgstr "Renk Görünüm Filtreleri" + +#: ../app/display/gimpdisplayshell-filter-dialog.c:78 +msgid "Configure Color Display Filters" +msgstr "Renk Görünüm Süzgeçlerini Yapılandır" + +#: ../app/display/gimpdisplayshell-layer-select.c:120 +msgid "Layer Select" +msgstr "Katman Seçimi" + +#: ../app/display/gimpdisplayshell-scale-dialog.c:114 +msgid "Zoom Ratio" +msgstr "Ölçek Oranı" + +#: ../app/display/gimpdisplayshell-scale-dialog.c:116 +msgid "Select Zoom Ratio" +msgstr "Ölçek Oranını Seçin" + +#: ../app/display/gimpdisplayshell-scale-dialog.c:159 +msgid "Zoom ratio:" +msgstr "Yakınlaştırma oranı:" + +#: ../app/display/gimpdisplayshell-scale-dialog.c:184 +msgid "Zoom:" +msgstr "Odakla:" + +#: ../app/display/gimpdisplayshell-title.c:233 +msgid "RGB-empty" +msgstr "RGB-boş" + +#: ../app/display/gimpdisplayshell-title.c:236 +msgid "grayscale-empty" +msgstr "griölçek-boş" + +#: ../app/display/gimpdisplayshell-title.c:236 +msgid "grayscale" +msgstr "griölçek" + +#: ../app/display/gimpdisplayshell-title.c:239 +msgid "indexed-empty" +msgstr "indisli-boş" + +#: ../app/display/gimpdisplayshell-title.c:239 +msgid "indexed" +msgstr "indisli" + +#: ../app/display/gimpdisplayshell-title.c:293 +msgid "(modified)" +msgstr "(değiştirildi)" + +#: ../app/display/gimpdisplayshell-title.c:298 +msgid "(clean)" +msgstr "(temiz)" + +#: ../app/display/gimpdisplayshell-title.c:346 +#: ../app/display/gimpdisplayshell-title.c:359 +#: ../app/widgets/gimpactiongroup.c:805 +msgid "(none)" +msgstr "(hiçbiri)" + +#: ../app/display/gimpstatusbar.c:364 +#, c-format +msgid "Cancel %s" +msgstr "Vazgeç %s" + +#: ../app/file/file-open.c:131 ../app/file/file-save.c:111 +#, c-format +msgid "Not a regular file" +msgstr "Normal bir dosya değil" + +#: ../app/file/file-open.c:183 +#, c-format +msgid "%s plug-in returned SUCCESS but did not return an image" +msgstr "%s eklentisi BAŞARIYLA dönüştü. Fakat bir resme dönüşmedi" + +#: ../app/file/file-open.c:194 +#, c-format +msgid "%s plug-In could not open image" +msgstr "%s eklentisi görüntüyü açamadı" + +#: ../app/file/file-open.c:455 +#, c-format +msgid "Image doesn't contain any layers" +msgstr "Görüntü hiçbir katman içermiyor" + +#: ../app/file/file-open.c:505 +#, c-format +msgid "Opening '%s' failed: %s" +msgstr "%s dosyasını açma başarısız oldu: %s" + +#: ../app/file/file-open.c:613 +msgid "" +"Color management has been disabled. It can be enabled again in the " +"Preferences dialog." +msgstr "" +"Renk yönetimi etkisizleştirilmiş. Yeğlenenler kutusundan yeniden " +"etkinleştirilebilir." + +#: ../app/file/file-procedure.c:200 +#, c-format +msgid "Unknown file type" +msgstr "Bilinmeyen dosya türü" + +#: ../app/file/file-save.c:192 +#, c-format +msgid "%s plug-in could not save image" +msgstr "%s eklentisi görüntüyü kaydedemedi" + +#: ../app/file/file-utils.c:74 +#, c-format +msgid "'%s:' is not a valid URI scheme" +msgstr "'%s:' geçerli bir adres düzeni değil" + +#: ../app/file/file-utils.c:88 ../app/file/file-utils.c:122 +#, c-format +msgid "Invalid character sequence in URI" +msgstr "Adreste geçersiz karakter sırası" + +#: ../app/gegl/gimpcurvesconfig.c:384 +#, c-format +msgid "not a GIMP Curves file" +msgstr "GIMP Eğrileri dosyası değil" + +#: ../app/gegl/gimpcurvesconfig.c:398 ../app/gegl/gimplevelsconfig.c:711 +#, c-format +msgid "parse error" +msgstr "ayrıştırma hatası" + +#: ../app/gegl/gimplevelsconfig.c:664 +#, c-format +msgid "not a GIMP Levels file" +msgstr "bir GIMP Düzeyleri dosyası değil" + +#. initialize the document history +#: ../app/gui/gui.c:426 +msgid "Documents" +msgstr "Belgeler" + +#: ../app/gui/splash.c:116 +msgid "GIMP Startup" +msgstr "GIMP Başlangıcı" + +#: ../app/paint/gimpairbrush.c:69 ../app/tools/gimpairbrushtool.c:54 +msgid "Airbrush" +msgstr "Sprey" + +#: ../app/paint/gimpbrushcore.c:353 +#, c-format +msgid "No brushes available for use with this tool." +msgstr "Bu aletle kullanılabilecek fırça yok." + +#: ../app/paint/gimpclone.c:99 ../app/tools/gimpclonetool.c:61 +msgid "Clone" +msgstr "Kopyala" + +#: ../app/paint/gimpclone.c:140 +#, c-format +msgid "No patterns available for use with this tool." +msgstr "Bu aletle kullanılabilecek desen yok." + +#: ../app/paint/gimpconvolve.c:77 +msgid "Convolve" +msgstr "Evriştirme" + +#: ../app/paint/gimpdodgeburn.c:87 +msgid "Dodge/Burn" +msgstr "Temizle/Yak" + +#: ../app/paint/gimperaser.c:62 ../app/tools/gimperasertool.c:66 +msgid "Eraser" +msgstr "Silgi" + +#: ../app/paint/gimpheal.c:115 ../app/tools/gimphealtool.c:53 +msgid "Heal" +msgstr "İyileştir" + +#: ../app/paint/gimpheal.c:154 +#, c-format +msgid "Healing does not operate on indexed layers." +msgstr "İyileştirme, sıralanmış katmanlar üzerinde uygulanamaz." + +#: ../app/paint/gimppaintbrush.c:63 ../app/tools/gimppaintbrushtool.c:51 +msgid "Paintbrush" +msgstr "Boya Fırçası" + +#: ../app/paint/gimppaintcore-stroke.c:332 +#, c-format +msgid "Not enough points to stroke" +msgstr "İşaretlemek için yeterli nokta yok" + +#: ../app/paint/gimppencil.c:42 ../app/tools/gimppenciltool.c:51 +msgid "Pencil" +msgstr "Kalem" + +#: ../app/paint/gimpperspectiveclone.c:97 ../app/paint/paint-enums.c:52 +#: ../app/tools/gimpperspectiveclonetool.c:126 +msgid "Perspective Clone" +msgstr "Perspektif Kopya" + +#: ../app/paint/gimpperspectiveclone.c:162 +#, c-format +msgid "Perspective Clone does not operate on indexed layers." +msgstr "Perspektif Kopya sıralanmış katmanlar üzerinde uygulanamaz." + +#: ../app/paint/gimpsmudge.c:78 ../app/tools/gimpsmudgetool.c:53 +msgid "Smudge" +msgstr "Lekeleme" + +#: ../app/paint/gimpsourcecore.c:227 +#, c-format +msgid "Set a source image first." +msgstr "Önce bir kaynak görüntü ayarlayın." + +#: ../app/paint/paint-enums.c:51 +msgid "Modify Perspective" +msgstr "Perspektifi Değiştir" + +#: ../app/paint/paint-enums.c:82 +msgid "Aligned" +msgstr "Hizalı" + +#: ../app/paint/paint-enums.c:83 +msgid "Registered" +msgstr "Kayıtlı" + +#: ../app/paint/paint-enums.c:84 +msgid "Fixed" +msgstr "Sabitlendi" + +#: ../app/paint/paint-enums.c:111 +msgid "Blur" +msgstr "Bulanıklaştır" + +#: ../app/paint/paint-enums.c:112 +msgid "Sharpen" +msgstr "Keskinleştir" + +#: ../app/pdb/channel-cmds.c:183 +msgid "Combine Masks" +msgstr "Maskeleri Birleştir" + +#: ../app/pdb/drawable-transform-cmds.c:310 +#: ../app/pdb/drawable-transform-cmds.c:395 +#: ../app/pdb/transform-tools-cmds.c:146 ../app/tools/gimpperspectivetool.c:69 +msgid "Perspective" +msgstr "Perspektif" + +#: ../app/pdb/drawable-transform-cmds.c:832 +#: ../app/pdb/drawable-transform-cmds.c:904 +#: ../app/pdb/transform-tools-cmds.c:362 ../app/tools/gimpsheartool.c:111 +msgid "Shearing" +msgstr "Kesme" + +#: ../app/pdb/drawable-transform-cmds.c:989 +#: ../app/pdb/transform-tools-cmds.c:438 +msgid "2D Transform" +msgstr "2B Dönüşüm" + +#: ../app/pdb/drawable-transform-cmds.c:1072 +#: ../app/pdb/drawable-transform-cmds.c:1165 +#: ../app/pdb/drawable-transform-cmds.c:1256 +msgid "2D Transforming" +msgstr "2B Dönüştürme" + +#: ../app/pdb/edit-cmds.c:709 ../app/tools/gimpblendtool.c:225 +msgid "Blending" +msgstr "Harmanlama" + +#: ../app/pdb/floating-sel-cmds.c:63 +#, c-format +msgid "Cannot remove this layer because it is not a floating selection." +msgstr "Bu katman kaldırılamıyor çünkü bu yüzen bir seçim değil." + +#: ../app/pdb/floating-sel-cmds.c:95 +#, c-format +msgid "Cannot anchor this layer because it is not a floating selection." +msgstr "Bu katmana demir atılamıyor çünkü bu yüzen bir seçim değil." + +#: ../app/pdb/floating-sel-cmds.c:127 +#, c-format +msgid "" +"Cannot convert this layer to a normal layer because it is not a floating " +"selection." +msgstr "" +"Bu katman normal bir katmana dönüştürülemiyor çünkü bu yüzen bir seçim değil." + +#: ../app/pdb/floating-sel-cmds.c:188 +#, c-format +msgid "Cannot rigor this layer because it is not a floating selection." +msgstr "Bu katman katılaştırılamıyor çünkü bu yüzen bir seçim değil." + +#: ../app/pdb/floating-sel-cmds.c:222 +#, c-format +msgid "Cannot relax this layer because it is not a floating selection." +msgstr "Bu katman yumuşatılamıyor çünkü bu yüzen bir seçim değil." + +#: ../app/pdb/gimppdb-query.c:300 ../app/pdb/gimppdb.c:307 +#: ../app/pdb/gimppdb.c:377 +#, c-format +msgid "Procedure '%s' not found" +msgstr "'%s' yordamı bulunamadı" + +#: ../app/pdb/gimppdb-utils.c:61 +#, c-format +msgid "Invalid empty brush name" +msgstr "Geçersiz boş fırça adı" + +#: ../app/pdb/gimppdb-utils.c:71 +#, c-format +msgid "Brush '%s' not found" +msgstr "'%s' fırçası bulunamadı" + +#: ../app/pdb/gimppdb-utils.c:76 +#, c-format +msgid "Brush '%s' is not editable" +msgstr "'%s' fırçası düzenlenebilir değil" + +#: ../app/pdb/gimppdb-utils.c:102 +#, c-format +msgid "Brush '%s' is not a generated brush" +msgstr "'%s' fırçası oluşturulmuş bir fırça değil" + +#: ../app/pdb/gimppdb-utils.c:122 +#, c-format +msgid "Invalid empty pattern name" +msgstr "Geçersiz boş desen adı" + +#: ../app/pdb/gimppdb-utils.c:132 +#, c-format +msgid "Pattern '%s' not found" +msgstr "'%s' deseni bulunamadı" + +#: ../app/pdb/gimppdb-utils.c:152 +#, c-format +msgid "Invalid empty gradient name" +msgstr "Geçersiz boş renk geçişi adı" + +#: ../app/pdb/gimppdb-utils.c:162 +#, c-format +msgid "Gradient '%s' not found" +msgstr "'%s' renk geçişi bulunamadı" + +#: ../app/pdb/gimppdb-utils.c:167 +#, c-format +msgid "Gradient '%s' is not editable" +msgstr "'%s' renk geçişi düzenlenebilir değil" + +#: ../app/pdb/gimppdb-utils.c:188 +#, c-format +msgid "Invalid empty palette name" +msgstr "Geçersiz boş palet adı" + +#: ../app/pdb/gimppdb-utils.c:198 +#, c-format +msgid "Palette '%s' not found" +msgstr "'%s' paleti bulunamadı" + +#: ../app/pdb/gimppdb-utils.c:203 +#, c-format +msgid "Palette '%s' is not editable" +msgstr "'%s' paleti düzenlenebilir değil" + +#: ../app/pdb/gimppdb-utils.c:223 +#, c-format +msgid "Invalid empty font name" +msgstr "Geçersiz boş yazıyüzü adı" + +#: ../app/pdb/gimppdb-utils.c:233 +#, c-format +msgid "Font '%s' not found" +msgstr "'%s' yazıyüzü bulunamadı" + +#: ../app/pdb/gimppdb-utils.c:252 +#, c-format +msgid "Invalid empty buffer name" +msgstr "Geçersiz boş arabellek adı" + +#: ../app/pdb/gimppdb-utils.c:262 +#, c-format +msgid "Named buffer '%s' not found" +msgstr "'%s' adlandırılmış arabellek bulunanamadı" + +#: ../app/pdb/gimppdb-utils.c:281 +#, c-format +msgid "Invalid empty paint method name" +msgstr "Geçersiz boş boyama yöntemi adı" + +#: ../app/pdb/gimppdb-utils.c:291 +#, c-format +msgid "Paint method '%s' does not exist" +msgstr "'%s' boyama yöntemi mevcut değil" + +#: ../app/pdb/gimppdb-utils.c:307 +#, c-format +msgid "" +"Item '%s' (%d) can not be used because it has not been added to an image" +msgstr "'%s' (%d) öğesi kullanılamadı çünkü bir görüntüye eklenmemiş" + +#: ../app/pdb/gimppdb-utils.c:329 +#, c-format +msgid "Item '%s' (%d) has already been added to an image" +msgstr "'%s' (%d) öğesi zaten bir görüntüye eklenmiş" + +#: ../app/pdb/gimppdb-utils.c:337 +#, c-format +msgid "Trying to add item '%s' (%d) to wrong image" +msgstr "'%s' (%d) öğesi yanlış görünüye eklenmeye çalışılıyor" + +#: ../app/pdb/gimppdb-utils.c:356 +#, c-format +msgid "Layer '%s' (%d) can not be used because it is not a text layer" +msgstr "'%s' (%d) katmanı kullanılamadı çünkü bir metin katmanı değil" + +#: ../app/pdb/gimppdb-utils.c:401 +#, c-format +msgid "" +"Image '%s' (%d) is of type '%s', but an image of type '%s' is expected" +msgstr "" +"'%s' (%d) görüntüsü '%s' türünde, ancak '%s' türündeki bir görüntü bekleniyor" + +#: ../app/pdb/gimppdb-utils.c:430 +#, c-format +msgid "Image '%s' (%d) is already of type '%s'" +msgstr "'%s' (%d) görüntüsü zaten '%s' türünde" + +#: ../app/pdb/gimppdb-utils.c:455 +#, c-format +msgid "Vectors object %d does not contain stroke with ID %d" +msgstr "%d vektörel nesnesi %d kimliği ile bir vuruş içermiyor" + +#: ../app/pdb/gimppdb.c:411 +#, c-format +msgid "" +"Procedure '%s' has been called with a wrong type for argument #%d. Expected " +"%s, got %s." +msgstr "" +"'%s' yordamı, yanlış türdeki bir #%d bağımsız değişkeni için çağrıldı. " +"İstenen %s, olan %s." + +#: ../app/pdb/gimpprocedure.c:361 ../app/plug-in/gimppluginprocframe.c:209 +#, c-format +msgid "Procedure '%s' returned no return values" +msgstr "'%s' yöntemi, değeri olmayana dönüştü" + +#: ../app/pdb/gimpprocedure.c:585 +#, c-format +msgid "" +"Procedure '%s' returned a wrong value type for return value '%s' (#%d). " +"Expected %s, got %s." +msgstr "" +"'%s' yöntemi, '%s' dönüşüm değeri için yanlış bir değer türüne dönüştü " +"(#%d). Beklenen %s, alınan %s." + +#: ../app/pdb/gimpprocedure.c:597 +#, c-format +msgid "" +"Procedure '%s' has been called with a wrong value type for argument '%s' " +"(#%d). Expected %s, got %s." +msgstr "" +"'%s' yöntemi, '%s' argümanı için yanlış bir değer türü ile çağrıldı (#%d). " +"Beklenen %s, alınan %s." + +#: ../app/pdb/gimpprocedure.c:629 +#, c-format +msgid "" +"Procedure '%s' returned an invalid ID for argument '%s'. Most likely a plug-" +"in is trying to work on a layer that doesn't exist any longer." +msgstr "" +"'%s' yöntemi, '%s' argümanı için geçersiz bir kimliğe dönüştü. En çok benzer " +"eklenti, artık bulunmayan bir katmanda çalışacak şekilde deneniyor." + +#: ../app/pdb/gimpprocedure.c:641 +#, c-format +msgid "" +"Procedure '%s' has been called with an invalid ID for argument '%s'. Most " +"likely a plug-in is trying to work on a layer that doesn't exist any longer." +msgstr "" +"'%s' yöntemi, '%s' argümanı için geçersiz bir kimlik ile çağrıldı. En çok " +"benzer eklenti, artık bulunmayan bir katmanda çalışacak şekilde deneniyor." + +#: ../app/pdb/gimpprocedure.c:657 +#, c-format +msgid "" +"Procedure '%s' returned an invalid ID for argument '%s'. Most likely a plug-" +"in is trying to work on an image that doesn't exist any longer." +msgstr "" +"'%s' yöntemi, '%s' argümanı için geçersiz bir kimliğe dönüştü. En çok benzer " +"eklenti, artık bulunmayan bir resimde çalışacak şekilde deneniyor." + +#: ../app/pdb/gimpprocedure.c:669 +#, c-format +msgid "" +"Procedure '%s' has been called with an invalid ID for argument '%s'. Most " +"likely a plug-in is trying to work on an image that doesn't exist any longer." +msgstr "" +"'%s' yöntemi, '%s' argümanı için geçersiz bir kimlik ile çağrıldı. En çok " +"benzer eklenti, artık bulunmayan bir resimde çalışacak şekilde deneniyor." + +#: ../app/pdb/gimpprocedure.c:689 +#, c-format +msgid "" +"Procedure '%s' returned '%s' as return value '%s' (#%d, type %s). This value " +"is out of range." +msgstr "" +"'%s' yöntemi, '%s' e, '%s' dönüşüm değeri olarak dönüştü (#%d, %s türü). Bu " +"değer, istenenin dışındadır." + +#: ../app/pdb/gimpprocedure.c:702 +#, c-format +msgid "" +"Procedure '%s' has been called with value '%s' for argument '%s' (#%d, type " +"%s). This value is out of range." +msgstr "" +"'%s' yöntemi, '%s' ile, '%s' argümanı için çağrıldı (#%d,%s türü). Bu değer " +"istenenin dışındadır." + +#: ../app/pdb/image-cmds.c:2268 +#, c-format +msgid "" +"Image resolution is out of bounds, using the default resolution instead." +msgstr "" +"Resim çözünürlüğü izin verilen sınırların dışında, öntanımlı çözünürlük " +"kullanılacak" + +#: ../app/pdb/selection-tools-cmds.c:218 ../app/tools/gimpfreeselecttool.c:197 +msgid "Free Select" +msgstr "Serbest Seçim" + +#: ../app/pdb/text-layer-cmds.c:90 +#, c-format +msgid "Failed to create text layer" +msgstr "Metin katmanı oluşturma başarısız" + +#: ../app/pdb/text-layer-cmds.c:163 ../app/pdb/text-layer-cmds.c:235 +#: ../app/pdb/text-layer-cmds.c:314 ../app/pdb/text-layer-cmds.c:394 +#: ../app/pdb/text-layer-cmds.c:467 ../app/pdb/text-layer-cmds.c:539 +#: ../app/pdb/text-layer-cmds.c:611 ../app/pdb/text-layer-cmds.c:683 +#: ../app/pdb/text-layer-cmds.c:755 ../app/pdb/text-layer-cmds.c:825 +#: ../app/pdb/text-layer-cmds.c:897 ../app/pdb/text-layer-cmds.c:969 +#: ../app/pdb/text-layer-cmds.c:1041 +msgid "Set text layer attribute" +msgstr "Metin katmanı özniteliğini ayarla" + +#: ../app/plug-in/gimpenvirontable.c:282 +#, c-format +msgid "Empty variable name in environment file %s" +msgstr "%s çevresel dosya içinde boş değişken adı" + +#: ../app/plug-in/gimpenvirontable.c:300 +#, c-format +msgid "Illegal variable name in environment file %s: %s" +msgstr "%s çevresel dosya içinde geçersiz değişken adı: %s" + +#: ../app/plug-in/gimpinterpreterdb.c:264 +#, c-format +msgid "Bad interpreter referenced in interpreter file %s: %s" +msgstr "%s yorumlayıcı dosyası içinde kötü yorumlayıcı başvurusu: %s" + +#: ../app/plug-in/gimpinterpreterdb.c:323 +#, c-format +msgid "Bad binary format string in interpreter file %s" +msgstr "%s yorumlayıcı dosyası içinde kötü ikili biçimi dizgisi" + +#: ../app/plug-in/gimpplugin-message.c:423 +#, c-format +msgid "" +"Calling error for procedure '%s':\n" +"%s" +msgstr "" +"'%s' yordamı için çağırma hatası:\n" +"%s" + +#: ../app/plug-in/gimpplugin-message.c:432 +#, c-format +msgid "" +"Execution error for procedure '%s':\n" +"%s" +msgstr "" +"'%s' yordamı için uygulama hatası:\n" +"%s" + +#: ../app/plug-in/gimpplugin-progress.c:330 +msgid "Cancelled" +msgstr "Vazgeçildi" + +#: ../app/plug-in/gimpplugin.c:639 +#, c-format +msgid "" +"Plug-in crashed: \"%s\"\n" +"(%s)\n" +"\n" +"The dying plug-in may have messed up GIMP's internal state. You may want to " +"save your images and restart GIMP to be on the safe side." +msgstr "" +"Eklenti çöktü: \"%s\"\n" +"(%s)\n" +"\n" +"Ölen eklenti GIMP'in iç durumunu karıştırmış olabilir. Çalışmalarınızı " +"kaydedip GIMP'i yeniden başlatmanızı öneriririz." + +#: ../app/plug-in/gimppluginmanager-call.c:173 +#: ../app/plug-in/gimppluginmanager-call.c:223 +#: ../app/plug-in/gimppluginmanager-call.c:321 +#, c-format +msgid "Failed to run plug-in \"%s\"" +msgstr "\"%s\" eklentisini çalıştırma başarısız oldu" + +#: ../app/plug-in/gimppluginmanager-restore.c:222 +msgid "Searching Plug-Ins" +msgstr "Eklentiler Aranıyor" + +#: ../app/plug-in/gimppluginmanager-restore.c:271 +msgid "Resource configuration" +msgstr "Kaynak ayarları" + +#: ../app/plug-in/gimppluginmanager-restore.c:307 +msgid "Querying new Plug-ins" +msgstr "Yeni eklentiler aranıyor" + +#: ../app/plug-in/gimppluginmanager-restore.c:357 +msgid "Initializing Plug-ins" +msgstr "Eklentiler Çalıştırılıyor" + +#: ../app/plug-in/gimppluginmanager-restore.c:429 +msgid "Starting Extensions" +msgstr "Uzantılar Başlatılıyor" + +#: ../app/plug-in/gimppluginmanager.c:290 +msgid "Plug-In Interpreters" +msgstr "Eklenti yorumlayıcıları" + +#: ../app/plug-in/gimppluginmanager.c:297 +msgid "Plug-In Environment" +msgstr "Eklenti Sistemi" + +#: ../app/plug-in/gimppluginprocedure.c:989 +#, c-format +msgid "" +"Calling error for '%s':\n" +"%s" +msgstr "" +"'%s' için çağırma hatası:\n" +"%s" + +#: ../app/plug-in/gimppluginprocedure.c:1001 +#, c-format +msgid "" +"Execution error for '%s':\n" +"%s" +msgstr "" +"'%s' için uygulama hatası:\n" +"%s" + +#: ../app/plug-in/plug-in-icc-profile.c:113 +#: ../app/plug-in/plug-in-icc-profile.c:188 +#: ../app/plug-in/plug-in-icc-profile.c:247 +#, c-format +msgid "Error running '%s'" +msgstr "'%s' çalıştırılırkan hata" + +#: ../app/plug-in/plug-in-icc-profile.c:137 +#: ../app/plug-in/plug-in-icc-profile.c:198 +#: ../app/plug-in/plug-in-icc-profile.c:257 +#, c-format +msgid "Plug-In missing (%s)" +msgstr "Kayıp eklenti (%s)" + +#: ../app/plug-in/plug-in-rc.c:206 +#, c-format +msgid "Skipping '%s': wrong GIMP protocol version." +msgstr "'%s' atlanıyor: yanlış GIMP iletişim kuralı sürümü." + +#: ../app/plug-in/plug-in-rc.c:479 +#, c-format +msgid "invalid value '%s' for icon type" +msgstr "'%s' geçersiz değerinin olduğu simge türü" + +#: ../app/plug-in/plug-in-rc.c:494 +#, c-format +msgid "invalid value '%ld' for icon type" +msgstr "'%ld' geçersiz değerinin olduğu simge türü" + +#. This is a so-called pangram; it's supposed to +#. contain all characters found in the alphabet. +#: ../app/text/gimpfont.c:45 +msgid "" +"Pack my box with\n" +"five dozen liquor jugs." +msgstr "" +"Kutumu paketle\n" +"beş düzine demlik çayı." + +#: ../app/text/gimptext-compat.c:108 ../app/tools/gimptexttool.c:901 +msgid "Add Text Layer" +msgstr "Metin Katmanı Ekle" + +#: ../app/text/gimptextlayer.c:138 +msgid "Text Layer" +msgstr "Metin Katmanı" + +#: ../app/text/gimptextlayer.c:139 +msgid "Rename Text Layer" +msgstr "Metin Katmanını Yeniden Adlandır" + +#: ../app/text/gimptextlayer.c:140 +msgid "Move Text Layer" +msgstr "Metin Katmanını Taşı" + +#: ../app/text/gimptextlayer.c:141 +msgid "Scale Text Layer" +msgstr "Metin Katmanını Ölçekle" + +#: ../app/text/gimptextlayer.c:142 +msgid "Resize Text Layer" +msgstr "Metin Katmanını Yeniden Boyutlandır" + +#: ../app/text/gimptextlayer.c:143 +msgid "Flip Text Layer" +msgstr "Metin Katmanını Çevir" + +#: ../app/text/gimptextlayer.c:144 +msgid "Rotate Text Layer" +msgstr "Metin Katmanını Döndür" + +#: ../app/text/gimptextlayer.c:145 +msgid "Transform Text Layer" +msgstr "Metin Katmanını Dönüştür" + +#: ../app/text/gimptextlayer.c:492 +msgid "Discard Text Information" +msgstr "Metin Bilgisini Sil" + +#: ../app/text/gimptextlayer.c:543 +msgid "Due to lack of any fonts, text functionality is not available." +msgstr "" +"Bir yazıyüzü eksikliğinden dolayı, metin işlevselliği kullanılabilir değil." + +#: ../app/text/gimptextlayer.c:579 +msgid "Empty Text Layer" +msgstr "Boş Metin Katmanı" + +#: ../app/text/gimptextlayer-xcf.c:75 +#, c-format +msgid "" +"Problems parsing the text parasite for layer '%s':\n" +"%s\n" +"\n" +"Some text properties may be wrong. Unless you want to edit the text layer, " +"you don't need to worry about this." +msgstr "" +"'%s' katmanı için metin paraziti ayrıştırma problemleri:\n" +"%s\n" +"\n" +"Bazı metin özellikleri yanlış olabilir. Metin katmanını düzenlemek " +"istemedikçe, bunun hakkında endişelenmenize gerek yok." + +#: ../app/tools/gimp-tools.c:335 +msgid "" +"This tool has\n" +"no options." +msgstr "" +"Bu aletin\n" +"hiç seçeneği yok." + +#: ../app/tools/gimpairbrushtool.c:55 +msgid "Airbrush Tool: Paint using a brush, with variable pressure" +msgstr "" +"Hava Fırçası Aracı: Değişken basınç ile boyarken bir fırça kullanılır" + +#: ../app/tools/gimpairbrushtool.c:56 +msgid "_Airbrush" +msgstr "_Hava Fırçası" + +#: ../app/tools/gimpairbrushtool.c:92 ../app/tools/gimpconvolvetool.c:217 +#: ../app/tools/gimpsmudgetool.c:97 +msgid "Rate:" +msgstr "Oran:" + +#: ../app/tools/gimpairbrushtool.c:98 ../app/tools/gimppaintoptions-gui.c:198 +msgid "Pressure:" +msgstr "Basınç:" + +#: ../app/tools/gimpaligntool.c:134 ../app/tools/gimpaligntool.c:766 +msgid "Align" +msgstr "Hizala" + +#: ../app/tools/gimpaligntool.c:135 +msgid "Alignment Tool: Align or arrange layers and other objects" +msgstr "Hizalama Aracı: Katmanları ve diğer nesneleri hizala ya da sırala" + +#: ../app/tools/gimpaligntool.c:136 +msgid "_Align" +msgstr "_Hizala" + +#: ../app/tools/gimpaligntool.c:599 +msgid "Click on a layer, path or guide, or Click-Drag to pick several layers" +msgstr "" +"Bir katmanı, yolu veya kılavuzu tıklayın, ya da birkaç katman seçmek için " +"Sürüklemeyi-Tıklayın" + +#: ../app/tools/gimpaligntool.c:608 +msgid "Click to pick this layer as first item" +msgstr "Bu katmanı ilk öğe olarak seçmek için tıklayın" + +#: ../app/tools/gimpaligntool.c:616 +msgid "Click to add this layer to the list" +msgstr "Bu katmanı listeye eklemek için tıklayın" + +#: ../app/tools/gimpaligntool.c:620 +msgid "Click to pick this guide as first item" +msgstr "Bu kılavuzu ilk öğe olarak seçmek için tıklayın" + +#: ../app/tools/gimpaligntool.c:628 +msgid "Click to add this guide to the list" +msgstr "Bu kılavuzu listeye eklemek için tıklayın" + +#: ../app/tools/gimpaligntool.c:632 +msgid "Click to pick this path as first item" +msgstr "Bu yolu ilk öğe olarak seçmek için tıklayın" + +#: ../app/tools/gimpaligntool.c:640 +msgid "Click to add this path to the list" +msgstr "Bu yolu listeye eklemek için tıklayın" + +#: ../app/tools/gimpaligntool.c:778 +msgid "Relative to:" +msgstr "Göreli:" + +#: ../app/tools/gimpaligntool.c:796 +msgid "Align left edge of target" +msgstr "Hedefin sol kenarını hizala" + +#: ../app/tools/gimpaligntool.c:802 +msgid "Align center of target" +msgstr "Hedefin merkezini hizala" + +#: ../app/tools/gimpaligntool.c:808 +msgid "Align right edge of target" +msgstr "Hedefin sağ kenarını hizala" + +#: ../app/tools/gimpaligntool.c:818 +msgid "Align top edge of target" +msgstr "Hedefin üst kenarını hizala" + +#: ../app/tools/gimpaligntool.c:824 +msgid "Align middle of target" +msgstr "Hedefin ortasını hizala" + +#: ../app/tools/gimpaligntool.c:830 +msgid "Align bottom of target" +msgstr "Hedefin altını hizala" + +#: ../app/tools/gimpaligntool.c:834 +msgid "Distribute" +msgstr "Dağıt" + +#: ../app/tools/gimpaligntool.c:848 +msgid "Distribute left edges of targets" +msgstr "Hedeflerin sol kenarlarını dağıt" + +#: ../app/tools/gimpaligntool.c:855 +msgid "Distribute horizontal centers of targets" +msgstr "Hedeflerin yatay merkezlerini dağıt" + +#: ../app/tools/gimpaligntool.c:862 +msgid "Distribute right edges of targets" +msgstr "Hedeflerin sağ kenarlarını dağıt" + +#: ../app/tools/gimpaligntool.c:872 +msgid "Distribute top edges of targets" +msgstr "Hedeflerin üst kenarlarını dağıt" + +#: ../app/tools/gimpaligntool.c:879 +msgid "Distribute vertical centers of targets" +msgstr "Hedeflerin dikey merkezlerini dağıt" + +#: ../app/tools/gimpaligntool.c:885 +msgid "Distribute bottoms of targets" +msgstr "Hedeflerin altlarını dağıt" + +#: ../app/tools/gimpaligntool.c:893 ../app/tools/gimpblendoptions.c:222 +msgid "Offset:" +msgstr "Ofset:" + +#: ../app/tools/gimpblendoptions.c:216 ../app/tools/gimppaintoptions-gui.c:648 +msgid "Gradient:" +msgstr "Gradyan:" + +#: ../app/tools/gimpblendoptions.c:232 ../app/widgets/gimpbrusheditor.c:146 +msgid "Shape:" +msgstr "Şekil:" + +#: ../app/tools/gimpblendoptions.c:239 ../app/tools/gimppaintoptions-gui.c:672 +msgid "Repeat:" +msgstr "Tekrarlama:" + +#: ../app/tools/gimpblendoptions.c:257 +msgid "Adaptive supersampling" +msgstr "Süper örneklemeyi uyarla" + +#: ../app/tools/gimpblendoptions.c:265 +msgid "Max depth:" +msgstr "Azami derinlik:" + +#: ../app/tools/gimpblendoptions.c:272 +#: ../app/tools/gimpbucketfilloptions.c:287 +#: ../app/tools/gimpregionselectoptions.c:220 +msgid "Threshold:" +msgstr "Alt sınır:" + +#: ../app/tools/gimpblendtool.c:108 +msgid "Blend Tool: Fill selected area with a color gradient" +msgstr "Harmanlama Aracı: Seçilmiş alanı bir renk geçişi ile doldur" + +#: ../app/tools/gimpblendtool.c:109 +msgid "Blen_d" +msgstr "_Harmanlama" + +#: ../app/tools/gimpblendtool.c:164 +#, c-format +msgid "Blend does not operate on indexed layers." +msgstr "Harmanlama, sıralanmış katmanlarda uygulanamaz." + +#: ../app/tools/gimpblendtool.c:402 ../app/tools/gimppainttool.c:606 +#, c-format +msgid "%s for constrained angles" +msgstr "kısıtlanmış açılar için %s" + +#: ../app/tools/gimpblendtool.c:403 +#, c-format +msgid "%s to move the whole line" +msgstr "Bütün satırı taşımak için %s" + +#: ../app/tools/gimpblendtool.c:407 +msgid "Blend: " +msgstr "Harman: " + +#: ../app/tools/gimpbrightnesscontrasttool.c:112 +msgid "Brightness/Contrast Tool: Adjust brightness and contrast" +msgstr "Parlaklık/Karşıtlık Aracı: Parlaklık ve karşıtlığı ayarla" + +#: ../app/tools/gimpbrightnesscontrasttool.c:113 +msgid "B_rightness-Contrast..." +msgstr "_Parlaklık-Karşıtlık..." + +#: ../app/tools/gimpbrightnesscontrasttool.c:133 +msgid "Adjust Brightness and Contrast" +msgstr "Parlaklık ve Karşıtlığı Ayarla" + +#: ../app/tools/gimpbrightnesscontrasttool.c:135 +msgid "Import Brightness-Contrast settings" +msgstr "Parlaklık-Karşıtlık ayarlarını içe aktar" + +#: ../app/tools/gimpbrightnesscontrasttool.c:136 +msgid "Export Brightness-Contrast settings" +msgstr "Parlaklık-Karşıtlık ayarlarını dışa aktar" + +#: ../app/tools/gimpbrightnesscontrasttool.c:184 +#, c-format +msgid "Brightness-Contrast does not operate on indexed layers." +msgstr "Parlaklık-kontrast indisli katmanlar üzerinde kullanılamaz." + +#: ../app/tools/gimpbrightnesscontrasttool.c:325 +msgid "_Brightness:" +msgstr "_Parlaklık:" + +#: ../app/tools/gimpbrightnesscontrasttool.c:340 +msgid "Con_trast:" +msgstr "_Kontrast:" + +#: ../app/tools/gimpbrightnesscontrasttool.c:354 +msgid "Edit these Settings as Levels" +msgstr "Bu Ayarları, Düzey olarak düzenle" + +#: ../app/tools/gimpbucketfilloptions.c:100 +msgid "Allow completely transparent regions to be filled" +msgstr "Saydam bölgelerin tamamen doldurulmasına izin ver" + +#: ../app/tools/gimpbucketfilloptions.c:106 +msgid "Base filled area on all visible layers" +msgstr "Tüm görünür katmanlar üzerinde tabanı doldurulmuş alan" + +#: ../app/tools/gimpbucketfilloptions.c:112 +#: ../app/tools/gimpregionselectoptions.c:96 +msgid "Maximum color difference" +msgstr "Azami renk farklılığı" + +#. fill type +#: ../app/tools/gimpbucketfilloptions.c:226 +#, c-format +msgid "Fill Type (%s)" +msgstr "Doldurma Türü: (%s)" + +#. fill selection +#: ../app/tools/gimpbucketfilloptions.c:239 +#, c-format +msgid "Affected Area (%s)" +msgstr "Etkilenen Bölge (%s)" + +#: ../app/tools/gimpbucketfilloptions.c:243 +msgid "Fill whole selection" +msgstr "Tüm seçimi doldur" + +#: ../app/tools/gimpbucketfilloptions.c:244 +msgid "Fill similar colors" +msgstr "Benzer renklerle doldur" + +#: ../app/tools/gimpbucketfilloptions.c:253 +msgid "Finding Similar Colors" +msgstr "Benzer Renklerin Bulunması" + +#: ../app/tools/gimpbucketfilloptions.c:269 +msgid "Fill transparent areas" +msgstr "Saydam alanları doldur" + +#: ../app/tools/gimpbucketfilloptions.c:275 ../app/tools/gimpclonetool.c:114 +#: ../app/tools/gimpcolorpickeroptions.c:151 ../app/tools/gimphealtool.c:99 +#: ../app/tools/gimpperspectiveclonetool.c:941 +#: ../app/tools/gimpregionselectoptions.c:208 +msgid "Sample merged" +msgstr "Birleştirme örneği" + +#: ../app/tools/gimpbucketfilloptions.c:294 +msgid "Fill by:" +msgstr "Doldur:" + +#: ../app/tools/gimpbucketfilltool.c:81 +msgid "Bucket Fill" +msgstr "Kovadan Dolum" + +#: ../app/tools/gimpbucketfilltool.c:82 +msgid "Bucket Fill Tool: Fill selected area with a color or pattern" +msgstr "" +"Kovadan Dolum Aracı: Seçilmiş bölgeyi bir renkle ya da desenle doldur" + +#: ../app/tools/gimpbucketfilltool.c:83 +msgid "_Bucket Fill" +msgstr "_Kovadan Dolum" + +#: ../app/tools/gimpbycolorselecttool.c:67 +msgid "Select by Color" +msgstr "Renk ile Seç" + +#: ../app/tools/gimpbycolorselecttool.c:68 +msgid "Select by Color Tool: Select regions with similar colors" +msgstr "Renge göre Seçim Aracı: Bölgeleri benzer renklerle seç" + +#: ../app/tools/gimpbycolorselecttool.c:69 +msgid "_By Color Select" +msgstr "_Renk Seçimine Göre" + +#: ../app/tools/gimpclonetool.c:62 +msgid "Clone Tool: Selectively copy from an image or pattern, using a brush" +msgstr "" +"Kopyalama Aracı: Bir görüntüden ya da desenden, bir fırça kullanıp seçerek " +"kopyalayın" + +#: ../app/tools/gimpclonetool.c:63 +msgid "_Clone" +msgstr "_Kopyala" + +#: ../app/tools/gimpclonetool.c:86 ../app/tools/gimpclonetool.c:89 +msgid "Click to clone" +msgstr "Kopyalama için Tıklayın" + +#: ../app/tools/gimpclonetool.c:87 ../app/tools/gimpclonetool.c:91 +#, c-format +msgid "%s to set a new clone source" +msgstr "Yeni bir kopyalama kaynağı ayarlamak için %s" + +#: ../app/tools/gimpclonetool.c:90 +msgid "Click to set a new clone source" +msgstr "Yeni bir kopyalama aracı ayarlamak için tıklayın" + +#: ../app/tools/gimpclonetool.c:109 +#: ../app/tools/gimpperspectiveclonetool.c:936 +msgid "Source" +msgstr "Kaynak" + +#: ../app/tools/gimpclonetool.c:128 ../app/tools/gimphealtool.c:111 +#: ../app/tools/gimpperspectiveclonetool.c:955 +msgid "Alignment:" +msgstr "Hizalama:" + +#: ../app/tools/gimpcolorbalancetool.c:95 +msgid "Color Balance Tool: Adjust color distribution" +msgstr "Renk Dengesi Aracı: Renk dağılımını ayarlayın" + +#: ../app/tools/gimpcolorbalancetool.c:96 +msgid "Color _Balance..." +msgstr "Renk _Dengesi..." + +#: ../app/tools/gimpcolorbalancetool.c:113 +msgid "Adjust Color Balance" +msgstr "Renk Dengesini Ayarla" + +#: ../app/tools/gimpcolorbalancetool.c:115 +msgid "Import Color Balance Settings" +msgstr "Renk Dengesi Ayarlarını İçe Aktar" + +#: ../app/tools/gimpcolorbalancetool.c:116 +msgid "Export Color Balance Settings" +msgstr "Renk Dengesi Ayarlarını Dışa Aktar" + +#: ../app/tools/gimpcolorbalancetool.c:163 +#, c-format +msgid "Color Balance operates only on RGB color layers." +msgstr "Renk Dengesi sadece RGB renk katmanlarında uygulanabilir." + +#: ../app/tools/gimpcolorbalancetool.c:270 +msgid "Select Range to Adjust" +msgstr "Ayarlamak için Erim Seç" + +#: ../app/tools/gimpcolorbalancetool.c:279 ../app/tools/gimplevelstool.c:172 +msgid "Adjust Color Levels" +msgstr "Renk Seviyelerini Ayarla" + +#: ../app/tools/gimpcolorbalancetool.c:296 +#: ../app/tools/gimphuesaturationtool.c:255 +msgid "Cyan" +msgstr "Turkuaz" + +#: ../app/tools/gimpcolorbalancetool.c:305 +#: ../app/tools/gimphuesaturationtool.c:257 +msgid "Magenta" +msgstr "Pembe" + +#: ../app/tools/gimpcolorbalancetool.c:314 +#: ../app/tools/gimphuesaturationtool.c:253 +msgid "Yellow" +msgstr "Sarı" + +#: ../app/tools/gimpcolorbalancetool.c:325 +msgid "R_eset Range" +msgstr "Aralığı _Sıfırla" + +#: ../app/tools/gimpcolorbalancetool.c:334 +msgid "Preserve _luminosity" +msgstr "Parlaklığı _koru" + +#: ../app/tools/gimpcolorizetool.c:91 +msgid "Colorize Tool: Colorize the image" +msgstr "Renklendirme Aracı: Görüntüyü renklendir" + +#: ../app/tools/gimpcolorizetool.c:92 +msgid "Colori_ze..." +msgstr "_Renklendir..." + +#: ../app/tools/gimpcolorizetool.c:109 +msgid "Colorize the Image" +msgstr "Resmi Renklendir" + +#: ../app/tools/gimpcolorizetool.c:111 +msgid "Import Colorize Settings" +msgstr "Renklendirme Ayarlarını İçe Aktar" + +#: ../app/tools/gimpcolorizetool.c:112 +msgid "Export Colorize Settings" +msgstr "Renklendirme Ayarlarını Dışa Aktar" + +#: ../app/tools/gimpcolorizetool.c:156 +#, c-format +msgid "Colorize operates only on RGB color layers." +msgstr "Renklendirme sadece RGB renk katmanlarında uygulanabilir." + +#: ../app/tools/gimpcolorizetool.c:221 +msgid "Select Color" +msgstr "Rengi Seç" + +#: ../app/tools/gimpcolorizetool.c:238 +#: ../app/tools/gimphuesaturationtool.c:388 +msgid "_Hue:" +msgstr "Renk _Özü:" + +#: ../app/tools/gimpcolorizetool.c:253 +#: ../app/tools/gimphuesaturationtool.c:426 +msgid "_Saturation:" +msgstr "_Doygunluk:" + +#: ../app/tools/gimpcolorizetool.c:268 +#: ../app/tools/gimphuesaturationtool.c:407 +msgid "_Lightness:" +msgstr "_Aydınlanma:" + +#: ../app/tools/gimpcoloroptions.c:161 +msgid "Sample average" +msgstr "Örnek ortalama" + +#: ../app/tools/gimpcoloroptions.c:171 +#: ../app/tools/gimprectangleselectoptions.c:176 +#: ../app/tools/gimpselectionoptions.c:281 +#: ../app/widgets/gimpbrusheditor.c:154 +msgid "Radius:" +msgstr "Yarıçap:" + +#. the pick FG/BG frame +#: ../app/tools/gimpcolorpickeroptions.c:156 +#, c-format +msgid "Pick Mode (%s)" +msgstr "Seçme Kipi (%s)" + +#. the use_info_window toggle button +#: ../app/tools/gimpcolorpickeroptions.c:165 +#, c-format +msgid "Use info window (%s)" +msgstr "Bilgi penceresi kullan (%s)" + +#: ../app/tools/gimpcolorpickertool.c:96 +msgid "Color Picker" +msgstr "Renk Alıcı" + +#: ../app/tools/gimpcolorpickertool.c:97 +msgid "Color Picker Tool: Set colors from image pixels" +msgstr "Renk Seçme Aracı: Görüntü beneklerinden renk seç" + +#: ../app/tools/gimpcolorpickertool.c:98 +msgid "C_olor Picker" +msgstr "_Renk Alıcı" + +#: ../app/tools/gimpcolorpickertool.c:242 +msgid "Click in any image to view its color" +msgstr "Rengini görmek için herhangi bir görüntüye tıklayın" + +#: ../app/tools/gimpcolorpickertool.c:249 ../app/tools/gimppainttool.c:509 +msgid "Click in any image to pick the foreground color" +msgstr "Önalan rengini seçmek için herhangi bir görüntüye tıklayın" + +#: ../app/tools/gimpcolorpickertool.c:257 ../app/tools/gimppainttool.c:515 +msgid "Click in any image to pick the background color" +msgstr "Artalan rengini seçmek için herhangi bir görüntüye tıklayın" + +#: ../app/tools/gimpcolorpickertool.c:265 +msgid "Click in any image to add the color to the palette" +msgstr "Palete renk eklemek için herhangi bir görüntüye tıklayın" + +#. tool->display->shell +#: ../app/tools/gimpcolorpickertool.c:318 +msgid "Color Picker Information" +msgstr "Renk Alıcı Bilgisi" + +#: ../app/tools/gimpcolortool.c:258 ../app/tools/gimpcolortool.c:437 +msgid "Move Sample Point: " +msgstr "Örnek Noktayı Taşı: " + +#: ../app/tools/gimpcolortool.c:430 +msgid "Cancel Sample Point" +msgstr "Örnek Noktadan Vazgeç" + +#: ../app/tools/gimpcolortool.c:438 +msgid "Add Sample Point: " +msgstr "Örnek Nokta Ekle: " + +#: ../app/tools/gimpconvolvetool.c:73 +msgid "Blur / Sharpen" +msgstr "Bulanıklaştır / Keskinleştir" + +#: ../app/tools/gimpconvolvetool.c:74 +msgid "Blur / Sharpen Tool: Selective blurring or unblurring using a brush" +msgstr "" +"Bulanıklaştırma / Keskinleştirme Aracı: Fırça kullanarak seçici " +"bulanıklaştırma ya da tersi" + +#: ../app/tools/gimpconvolvetool.c:75 +msgid "Bl_ur / Sharpen" +msgstr "B_ulanıklaştır / Keskinleştir" + +#: ../app/tools/gimpconvolvetool.c:170 +msgid "Click to blur" +msgstr "Bulanıklaştırmak için tıklayın" + +#: ../app/tools/gimpconvolvetool.c:171 +msgid "Click to blur the line" +msgstr "Çizgiyi bulanıklaştırmak için tıklayın" + +#: ../app/tools/gimpconvolvetool.c:172 +#, c-format +msgid "%s to sharpen" +msgstr "Keskinleştirmek için %s" + +#: ../app/tools/gimpconvolvetool.c:176 +msgid "Click to sharpen" +msgstr "Keskinleştirmek için tıklayın" + +#: ../app/tools/gimpconvolvetool.c:177 +msgid "Click to sharpen the line" +msgstr "Çizgiyi keskinleştirmek için tıklayın" + +#: ../app/tools/gimpconvolvetool.c:178 +#, c-format +msgid "%s to blur" +msgstr "Bulanıklaştırmak için %s" + +#. the type radio box +#: ../app/tools/gimpconvolvetool.c:199 +#, c-format +msgid "Convolve Type (%s)" +msgstr "Evriştime Türü (%s)" + +#: ../app/tools/gimpcropoptions.c:161 +msgid "Current layer only" +msgstr "Sadece etkin katman" + +#: ../app/tools/gimpcropoptions.c:167 +msgid "Allow growing" +msgstr "Büyümeye izin ver" + +#: ../app/tools/gimpcroptool.c:126 +msgid "Crop" +msgstr "Kırp" + +#: ../app/tools/gimpcroptool.c:127 +msgid "Crop Tool: Remove edge areas from image or layer" +msgstr "Kırpma Aracı: Görüntüden ya da katmandan kenar alanlarını kaldır" + +#: ../app/tools/gimpcroptool.c:128 +msgid "_Crop" +msgstr "_Kırp" + +#: ../app/tools/gimpcroptool.c:269 +msgid "Click or press Enter to crop" +msgstr "Kırpma için \"Enter\" tuşuna basın" + +#: ../app/tools/gimpcurvestool.c:141 +msgid "Curves Tool: Adjust color curves" +msgstr "Eğri Aracı: Renk eğrilerini ayarla" + +#: ../app/tools/gimpcurvestool.c:142 +msgid "_Curves..." +msgstr "_Eğriler..." + +#: ../app/tools/gimpcurvestool.c:168 +msgid "Adjust Color Curves" +msgstr "Renk Eğrilerini Ayarla" + +#: ../app/tools/gimpcurvestool.c:170 +msgid "Import Curves" +msgstr "Eğrileri İçe Aktar" + +#: ../app/tools/gimpcurvestool.c:171 +msgid "Export Curves" +msgstr "Eğrileri Dışa Aktar" + +#: ../app/tools/gimpcurvestool.c:221 +#, c-format +msgid "Curves does not operate on indexed layers." +msgstr "Eğriler sıralanmış katmanlarda uygulanamaz." + +#: ../app/tools/gimpcurvestool.c:323 +msgid "Click to add a control point" +msgstr "Bir kontrol noktası eklemek için tıklayın" + +#: ../app/tools/gimpcurvestool.c:328 +msgid "Click to add control points to all channels" +msgstr "Tüm kanallara kontrol noktaları eklemek için tıklayın" + +#: ../app/tools/gimpcurvestool.c:441 ../app/tools/gimplevelstool.c:380 +msgid "Cha_nnel:" +msgstr "_Kanal:" + +#: ../app/tools/gimpcurvestool.c:467 ../app/tools/gimplevelstool.c:404 +msgid "R_eset Channel" +msgstr "Kanalı _Sıfırla" + +#: ../app/tools/gimpcurvestool.c:557 +msgid "Curve _type:" +msgstr "Eğri _tipi:" + +#: ../app/tools/gimpcurvestool.c:632 ../app/tools/gimplevelstool.c:752 +#, c-format +msgid "Could not read header from '%s': %s" +msgstr "'%s' başlığı okunamadı: %s" + +#: ../app/tools/gimpcurvestool.c:705 +msgid "Use _old curves file format" +msgstr "_Eski kavislerin dosya biçimini kullan" + +#: ../app/tools/gimpdesaturatetool.c:78 +msgid "Desaturate Tool: Turn colors into shades of gray" +msgstr "Solgunlaştırma Aracı: Renkleri gri tonlara dönüştür" + +#: ../app/tools/gimpdesaturatetool.c:79 +msgid "_Desaturate..." +msgstr "_Solgunlaştır..." + +#: ../app/tools/gimpdesaturatetool.c:93 +msgid "Desaturate (Remove Colors)" +msgstr "Solgunlaştırma (Renkleri Kaldır)" + +#: ../app/tools/gimpdesaturatetool.c:125 +#, c-format +msgid "Desaturate does only operate on RGB layers." +msgstr "Solgunlaştırma sadece RGB katmanlarında uygulanabilir." + +#: ../app/tools/gimpdesaturatetool.c:191 +msgid "Choose shade of gray based on:" +msgstr "Gri gölgelemeyi seç:" + +#: ../app/tools/gimpdodgeburntool.c:73 +msgid "Dodge / Burn" +msgstr "Temizle / Yak" + +#: ../app/tools/gimpdodgeburntool.c:74 +msgid "Dodge / Burn Tool: Selectively lighten or darken using a brush" +msgstr "" +"Temizleme / Yakma Aracı: Fırça kullanarak seçerek renk aç ya da koyulaştır" + +#: ../app/tools/gimpdodgeburntool.c:75 +msgid "Dod_ge / Burn" +msgstr "Te_mizle / Yak" + +#: ../app/tools/gimpdodgeburntool.c:173 +msgid "Click to dodge" +msgstr "Temizlemek için tıklayın" + +#: ../app/tools/gimpdodgeburntool.c:174 +msgid "Click to dodge the line" +msgstr "Çizgiyi temizlemek için tıklayın" + +#: ../app/tools/gimpdodgeburntool.c:175 +#, c-format +msgid "%s to burn" +msgstr "Yakmak için %s" + +#: ../app/tools/gimpdodgeburntool.c:179 +msgid "Click to burn" +msgstr "Yakmak için tıklayın" + +#: ../app/tools/gimpdodgeburntool.c:180 +msgid "Click to burn the line" +msgstr "Çizgiyi yakmak için tıklayın" + +#: ../app/tools/gimpdodgeburntool.c:181 +#, c-format +msgid "%s to dodge" +msgstr "Temizlemek için %s" + +#. the type (dodge or burn) +#: ../app/tools/gimpdodgeburntool.c:202 +#, c-format +msgid "Type (%s)" +msgstr "Tip (%s)" + +#. mode (highlights, midtones, or shadows) +#: ../app/tools/gimpdodgeburntool.c:213 +msgid "Range" +msgstr "Erim" + +#: ../app/tools/gimpdodgeburntool.c:225 +msgid "Exposure:" +msgstr "Belirlilik:" + +#: ../app/tools/gimpeditselectiontool.c:244 +#: ../app/tools/gimpeditselectiontool.c:1229 +msgid "Move Floating Selection" +msgstr "Yüzen Seçimi Taşı" + +#: ../app/tools/gimpeditselectiontool.c:457 +#: ../app/tools/gimpeditselectiontool.c:726 +msgid "Move: " +msgstr "Taşı: " + +#: ../app/tools/gimpellipseselecttool.c:68 +msgid "Ellipse Select" +msgstr "Eliptik Seçim" + +#: ../app/tools/gimpellipseselecttool.c:69 +msgid "Ellipse Select Tool: Select an elliptical region" +msgstr "Elips Seçim Aracı: Eliptik bir bölge seç" + +#: ../app/tools/gimpellipseselecttool.c:70 +msgid "_Ellipse Select" +msgstr "_Elips Seçimi" + +#: ../app/tools/gimperasertool.c:67 +msgid "Eraser Tool: Erase to background or transparency using a brush" +msgstr "" +"Silme Aracı: Bir fırça kullanarak artalana ya da saydamlığa yönelik sil" + +#: ../app/tools/gimperasertool.c:68 +msgid "_Eraser" +msgstr "_Silgi" + +#: ../app/tools/gimperasertool.c:97 +msgid "Click to erase" +msgstr "Silmek için tıklayın" + +#: ../app/tools/gimperasertool.c:98 +msgid "Click to erase the line" +msgstr "Çizgiyi silmek için tıklayın" + +#: ../app/tools/gimperasertool.c:99 +#, c-format +msgid "%s to pick a background color" +msgstr "Bir artalan rengi seçmek için %s" + +#. the anti_erase toggle +#: ../app/tools/gimperasertool.c:146 +#, c-format +msgid "Anti erase (%s)" +msgstr "Karşı silme (%s)" + +#: ../app/tools/gimpflipoptions.c:130 +msgid "Affect:" +msgstr "Etki:" + +#. tool toggle +#: ../app/tools/gimpflipoptions.c:139 +#, c-format +msgid "Flip Type (%s)" +msgstr "Çevirme Türü (%s)" + +#: ../app/tools/gimpfliptool.c:79 +msgid "Flip" +msgstr "Çevir" + +#: ../app/tools/gimpfliptool.c:80 +msgid "" +"Flip Tool: Reverse the layer, selection or path horizontally or vertically" +msgstr "" +"Çevirme Aracı: Katmanı, seçimi ya da yolu, yatay veya dikey olarak ters çevir" + +#: ../app/tools/gimpfliptool.c:82 +msgid "_Flip" +msgstr "_Çevir" + +#: ../app/tools/gimpforegroundselectoptions.c:79 +#: ../app/tools/gimpselectionoptions.c:79 +msgid "Smooth edges" +msgstr "Kenarları yumuşat" + +#: ../app/tools/gimpforegroundselectoptions.c:85 +msgid "Select a single contiguous area" +msgstr "Tek bir bitişik alan seç" + +#: ../app/tools/gimpforegroundselectoptions.c:96 +msgid "Size of the brush used for refinements" +msgstr "Saflık için kullanılacak fırçanın boyutu" + +#: ../app/tools/gimpforegroundselectoptions.c:102 +msgid "" +"Smaller values give a more accurate selection border but may introduce holes " +"in the selection" +msgstr "" +"Küçük değerler daha doğru bir seçim sınırı verir ama seçim içinde delikler " +"ortaya çıkabilir" + +#: ../app/tools/gimpforegroundselectoptions.c:121 +msgid "Sensitivity for brightness component" +msgstr "Parlaklık bileşeni için duyarlık" + +#: ../app/tools/gimpforegroundselectoptions.c:127 +msgid "Sensitivity for red/green component" +msgstr "Kırmızı/yeşil bileşen için duyarlık" + +#: ../app/tools/gimpforegroundselectoptions.c:133 +msgid "Sensitivity for yellow/blue component" +msgstr "Sarı/mave bileşen için duyarlık" + +#. single / multiple objects +#: ../app/tools/gimpforegroundselectoptions.c:276 +msgid "Contiguous" +msgstr "Sürekli" + +#. foreground / background +#: ../app/tools/gimpforegroundselectoptions.c:281 +#, c-format +msgid "Interactive refinement (%s)" +msgstr "Etkileşimli saflık (%s)" + +#: ../app/tools/gimpforegroundselectoptions.c:285 +msgid "Mark background" +msgstr "Artalanı imle" + +#: ../app/tools/gimpforegroundselectoptions.c:286 +msgid "Mark foreground" +msgstr "Önalanı imle" + +#: ../app/tools/gimpforegroundselectoptions.c:302 +msgid "Small brush" +msgstr "Küçük fırça" + +#: ../app/tools/gimpforegroundselectoptions.c:310 +msgid "Large brush" +msgstr "Geniş fırça" + +#: ../app/tools/gimpforegroundselectoptions.c:334 +msgid "Smoothing:" +msgstr "Yumuşatma:" + +#: ../app/tools/gimpforegroundselectoptions.c:340 +msgid "Preview color:" +msgstr "Renk önizleme:" + +#. granularity +#: ../app/tools/gimpforegroundselectoptions.c:343 +msgid "Color Sensitivity" +msgstr "Renk Duyarlığı" + +#: ../app/tools/gimpforegroundselecttool.c:145 +msgid "Foreground Select" +msgstr "Önalan Seçimi" + +#: ../app/tools/gimpforegroundselecttool.c:146 +msgid "Foreground Select Tool: Select a region containing foreground objects" +msgstr "Önalan Seçim Aracı: Önalan nesnelerini içeren bir bölge seçin" + +#: ../app/tools/gimpforegroundselecttool.c:147 +msgid "F_oreground Select" +msgstr "Önalan Seçimi" + +#: ../app/tools/gimpforegroundselecttool.c:314 +msgid "Add more strokes or press Enter to accept the selection" +msgstr "" +"Daha çok vuruş ekle ve seçimi kabul etmek için \"Enter\" tuşuna basın" + +#: ../app/tools/gimpforegroundselecttool.c:316 +msgid "Mark foreground by painting on the object to extract" +msgstr "Çıkarılacak nesne üzerini boyayarak önalanı imle" + +#: ../app/tools/gimpforegroundselecttool.c:327 +msgid "Rougly outline the object to extract" +msgstr "Kabaca çıkarılacak nesnenin çerçevesini çiz" + +#: ../app/tools/gimpforegroundselecttool.c:766 +msgctxt "command" +msgid "Foreground Select" +msgstr "Önalanı Seç" + +#: ../app/tools/gimpfreeselecttool.c:198 +msgid "" +"Free Select Tool: Select a hand-drawn region with free and polygonal segments" +msgstr "" +"Serbest Seçim Aracı: Serbest ve çok köşeli seçimlerle bir el-çizimi bölgesi " +"seç" + +#: ../app/tools/gimpfreeselecttool.c:199 +msgid "_Free Select" +msgstr "_Serbest Seçim" + +#: ../app/tools/gimpfreeselecttool.c:1117 +msgid "Click to complete selection" +msgstr "Seçimi tamamlamak için tıklayın" + +#: ../app/tools/gimpfreeselecttool.c:1121 +msgid "Click-Drag to move segment vertex" +msgstr "Kesimin tepe noktasına taşımak için sürükleyi tıklayın" + +#: ../app/tools/gimpfreeselecttool.c:1126 +msgid "Return commits, Escape cancels, Backspace removes last segment" +msgstr "" +"\"Return\" üstlenir, \"Escape\" vazgeçer, \"Backspace\" son kesimi kaldırır" + +#: ../app/tools/gimpfreeselecttool.c:1130 +msgid "Click-Drag adds a free segment, Click adds a polygonal segment" +msgstr "" +"Sürükleyi tıklamak serbest bir kesim ekler, tıklamak çok köşeli bir kesim " +"ekler" + +#: ../app/tools/gimpfreeselecttool.c:1582 +msgctxt "command" +msgid "Free Select" +msgstr "Serbest Seçim" + +#: ../app/tools/gimpfuzzyselecttool.c:65 +msgid "Fuzzy Select" +msgstr "Bulanık Seçim" + +#: ../app/tools/gimpfuzzyselecttool.c:66 +msgid "Fuzzy Select Tool: Select a contiguous region on the basis of color" +msgstr "Bulanık Seçim Aracı: Renk olarak sürekli bir bölge seçin" + +#: ../app/tools/gimpfuzzyselecttool.c:67 +msgid "Fu_zzy Select" +msgstr "_Bulanık Seçim" + +#: ../app/tools/gimpgegltool.c:92 ../app/tools/gimpgegltool.c:111 +msgid "GEGL Operation" +msgstr "GEGL İşlemi" + +#: ../app/tools/gimpgegltool.c:93 +msgid "GEGL Tool: Use an arbitrary GEGL operation" +msgstr "GEGL Aracı: İsteğe bağlı bir GEGL işlemi kullan" + +#: ../app/tools/gimpgegltool.c:94 +msgid "_GEGL Operation..." +msgstr "_GEGL İşlemi..." + +#: ../app/tools/gimpgegltool.c:158 +#, c-format +msgid "GEGL operations do not operate on indexed layers." +msgstr "GEGL işlemleri sıralanmış katmanlarda uygulanamaz." + +#: ../app/tools/gimpgegltool.c:339 +msgid "_Operation:" +msgstr "_İşlem:" + +#. The options vbox +#: ../app/tools/gimpgegltool.c:412 +msgid "Operation Settings" +msgstr "İşlem Ayarları" + +#: ../app/tools/gimphealtool.c:54 +msgid "Healing Tool: Heal image irregularities" +msgstr "İyileştirme Aracı: Görüntü düzensizliklerini iyileştir" + +#: ../app/tools/gimphealtool.c:55 +msgid "_Heal" +msgstr "_İyileştir" + +#: ../app/tools/gimphealtool.c:77 ../app/tools/gimphealtool.c:80 +msgid "Click to heal" +msgstr "İyileştirmek için tıklayın" + +#: ../app/tools/gimphealtool.c:78 ../app/tools/gimphealtool.c:82 +#, c-format +msgid "%s to set a new heal source" +msgstr "Yeni bir iyileştirme kaynağı ayarlamak için %s" + +#: ../app/tools/gimphealtool.c:81 +msgid "Click to set a new heal source" +msgstr "Yeni bir iyileştirme kaynağı ayarlamak için tıklayın" + +#: ../app/tools/gimphistogramoptions.c:127 +msgid "Histogram Scale" +msgstr "Histogram Ölçekleme" + +#: ../app/tools/gimphuesaturationtool.c:103 +msgid "Hue-Saturation Tool: Adjust hue, saturation, and lightness" +msgstr "" +"Renk Özü-Doygunluk Aracı: Renk özünü, doygunluğu ve hafifliği ayarlayın" + +#: ../app/tools/gimphuesaturationtool.c:104 +msgid "Hue-_Saturation..." +msgstr "_Renk-Doygunluk..." + +#: ../app/tools/gimphuesaturationtool.c:121 +msgid "Adjust Hue / Lightness / Saturation" +msgstr "Renk Özü / Hafiflik / Doygunluk Ayarı" + +#: ../app/tools/gimphuesaturationtool.c:123 +msgid "Import Hue-Saturation Settings" +msgstr "Renk Özü-Doygunluk Ayarlarını İçe Aktar" + +#: ../app/tools/gimphuesaturationtool.c:124 +msgid "Export Hue-Saturation Settings" +msgstr "Renk Özü-Doygunluk Ayarlarını Dışa Aktar" + +#: ../app/tools/gimphuesaturationtool.c:171 +#, c-format +msgid "Hue-Saturation operates only on RGB color layers." +msgstr "Renk Özü-Doygunluk sadece RGB renk katmanlarında uygulanabilir." + +#: ../app/tools/gimphuesaturationtool.c:251 +msgid "M_aster" +msgstr "_Ana" + +#: ../app/tools/gimphuesaturationtool.c:251 +msgid "Adjust all colors" +msgstr "Tüm renkleri ayarla" + +#: ../app/tools/gimphuesaturationtool.c:252 +msgid "_R" +msgstr "_R" + +#: ../app/tools/gimphuesaturationtool.c:253 +msgid "_Y" +msgstr "_Y" + +#: ../app/tools/gimphuesaturationtool.c:254 +msgid "_G" +msgstr "_G" + +#: ../app/tools/gimphuesaturationtool.c:255 +msgid "_C" +msgstr "_C" + +#: ../app/tools/gimphuesaturationtool.c:256 +msgid "_B" +msgstr "_B" + +#: ../app/tools/gimphuesaturationtool.c:257 +msgid "_M" +msgstr "_M" + +#: ../app/tools/gimphuesaturationtool.c:262 +msgid "Select Primary Color to Adjust" +msgstr "Ayarlanacak Birincil Renk Seçimi" + +#: ../app/tools/gimphuesaturationtool.c:352 +msgid "_Overlap:" +msgstr "_Örtüşme:" + +#: ../app/tools/gimphuesaturationtool.c:371 +msgid "Adjust Selected Color" +msgstr "Seçilen Rengi Ayarla" + +#: ../app/tools/gimphuesaturationtool.c:447 +msgid "R_eset Color" +msgstr "_Rengi Sıfırla" + +#: ../app/tools/gimpimagemaptool-settings.c:81 +msgid "Pre_sets:" +msgstr "Ön_ayarlar:" + +#: ../app/tools/gimpimagemaptool-settings.c:221 +#, c-format +msgid "Settings saved to '%s'" +msgstr "Ayararın kaydedildiği yer, '%s'" + +#: ../app/tools/gimpimagemaptool.c:318 +msgid "_Preview" +msgstr "Öniz_leme" + +#. adjust sliders +#: ../app/tools/gimpinkoptions-gui.c:56 +msgid "Adjustment" +msgstr "Ayarlama" + +#: ../app/tools/gimpinkoptions-gui.c:68 ../app/tools/gimpinkoptions-gui.c:93 +#: ../app/tools/gimprectangleoptions.c:973 ../app/tools/gimptextoptions.c:452 +msgid "Size:" +msgstr "Büyüklük:" + +#: ../app/tools/gimpinkoptions-gui.c:76 ../app/tools/gimpmeasuretool.c:1037 +#: ../app/widgets/gimpbrusheditor.c:208 +msgid "Angle:" +msgstr "Açı:" + +#. sens sliders +#: ../app/tools/gimpinkoptions-gui.c:81 +msgid "Sensitivity" +msgstr "Duyarlılık" + +#: ../app/tools/gimpinkoptions-gui.c:100 +msgid "Tilt:" +msgstr "Yatma:" + +#: ../app/tools/gimpinkoptions-gui.c:107 +msgid "Speed:" +msgstr "Hız:" + +#: ../app/tools/gimpinkoptions-gui.c:118 +msgid "Type" +msgstr "Tip" + +#. Blob shape widget +#: ../app/tools/gimpinkoptions-gui.c:149 +msgid "Shape" +msgstr "Şekil" + +#: ../app/tools/gimpinktool.c:56 +msgid "Ink Tool: Calligraphy-style painting" +msgstr "Mürekkep Aracı: Kaligrafi biçemle boyama" + +#: ../app/tools/gimpinktool.c:57 +msgid "In_k" +msgstr "_Mürekkep" + +#: ../app/tools/gimpiscissorsoptions.c:126 +msgid "Interactive boundary" +msgstr "Etkileşimli sınır" + +#: ../app/tools/gimpiscissorstool.c:278 +msgid "Scissors" +msgstr "Makas" + +#: ../app/tools/gimpiscissorstool.c:279 +msgid "Scissors Select Tool: Select shapes using intelligent edge-fitting" +msgstr "Makas Seçim Aracı:" + +#: ../app/tools/gimpiscissorstool.c:280 +msgid "Intelligent _Scissors" +msgstr "Akıllı _Makaslar" + +#: ../app/tools/gimpiscissorstool.c:940 ../app/tools/gimpmeasuretool.c:609 +msgid "Click-Drag to move this point" +msgstr "Bu noktayı taşımak için Sürükle'yi tıklayın" + +#: ../app/tools/gimpiscissorstool.c:942 ../app/tools/gimpiscissorstool.c:1007 +#, c-format +msgid "%s: disable auto-snap" +msgstr "%s: otomatik yanaştırma aktif değil" + +#: ../app/tools/gimpiscissorstool.c:959 +msgid "Click to close the curve" +msgstr "Eğriyi kapatmak için tıklayın" + +#: ../app/tools/gimpiscissorstool.c:965 +msgid "Click to add a point on this segment" +msgstr "Bu kesim üzerine bir nokta eklemek için tıklayın" + +#: ../app/tools/gimpiscissorstool.c:979 +msgid "Click or press Enter to convert to a selection" +msgstr "Bir seçime dönüştürmek için \"Enter\"a basın ya da tıklayın" + +#: ../app/tools/gimpiscissorstool.c:989 +msgid "Press Enter to convert to a selection" +msgstr "Bir seçime dönüştürmek için \"Enter\"a basın" + +#: ../app/tools/gimpiscissorstool.c:1004 +msgid "Click or Click-Drag to add a point" +msgstr "Bir nokta eklemek için tıklayın ya da Sürükle'ye tıklayın" + +#: ../app/tools/gimplevelstool.c:151 +msgid "Levels Tool: Adjust color levels" +msgstr "Düzey Aracı: Renk düzeylerini ayarla" + +#: ../app/tools/gimplevelstool.c:152 +msgid "_Levels..." +msgstr "_Seviyeler..." + +#: ../app/tools/gimplevelstool.c:174 +msgid "Import Levels" +msgstr "Düzeyleri İçe Aktar" + +#: ../app/tools/gimplevelstool.c:175 +msgid "Export Levels" +msgstr "Düzeyleri Dışa Aktar" + +#: ../app/tools/gimplevelstool.c:228 +#, c-format +msgid "Levels does not operate on indexed layers." +msgstr "Düzeyler sıralanmış katmanlar üzerinde uygulanamaz." + +#: ../app/tools/gimplevelstool.c:310 +msgid "Pick black point" +msgstr "Siyah nokta seç" + +#: ../app/tools/gimplevelstool.c:314 +msgid "Pick gray point" +msgstr "Gri nokta seç" + +#: ../app/tools/gimplevelstool.c:318 +msgid "Pick white point" +msgstr "Beyaz nokta seç" + +#. Input levels frame +#: ../app/tools/gimplevelstool.c:419 +msgid "Input Levels" +msgstr "Giriş Seviyeleri" + +#: ../app/tools/gimplevelstool.c:522 +msgid "Gamma" +msgstr "Gamma" + +#. Output levels frame +#: ../app/tools/gimplevelstool.c:564 +msgid "Output Levels" +msgstr "Çıkış Seviyeleri" + +#. all channels frame +#: ../app/tools/gimplevelstool.c:641 +msgid "All Channels" +msgstr "Tüm Kanallar" + +#: ../app/tools/gimplevelstool.c:655 +msgid "Adjust levels automatically" +msgstr "Seviyeleri otomatik ayarla" + +#: ../app/tools/gimplevelstool.c:682 +msgid "Edit these Settings as Curves" +msgstr "Bu Ayarları Eğri olarak düzenle" + +#: ../app/tools/gimplevelstool.c:825 +msgid "Use _old levels file format" +msgstr "_Eski seviyelerin dosya biçimini kullan" + +#: ../app/tools/gimpmagnifyoptions.c:167 +msgid "Auto-resize window" +msgstr "Pencereyi otomatik boyutlandır" + +#. tool toggle +#: ../app/tools/gimpmagnifyoptions.c:172 ../app/tools/gimpmoveoptions.c:188 +#, c-format +msgid "Tool Toggle (%s)" +msgstr "Araç Geçişi (%s)" + +#: ../app/tools/gimpmagnifytool.c:86 +msgid "Zoom" +msgstr "Yakınlaştır" + +#: ../app/tools/gimpmagnifytool.c:87 +msgid "Zoom Tool: Adjust the zoom level" +msgstr "Yakınlaştırma Aracı: Yakınlaştırma düzeyini ayarla" + +#: ../app/tools/gimpmagnifytool.c:88 +msgid "tool|_Zoom" +msgstr "_Yakınlaştır" + +#: ../app/tools/gimpmeasureoptions.c:124 +msgid "Use info window" +msgstr "Bilgi penceresini kullan" + +#: ../app/tools/gimpmeasuretool.c:121 +msgid "Measure" +msgstr "Ölçüm" + +#: ../app/tools/gimpmeasuretool.c:122 +msgid "Measure Tool: Measure distances and angles" +msgstr "Ölçüm Aracı: Açıları ve uzaklıkları ölç" + +#: ../app/tools/gimpmeasuretool.c:123 +msgid "_Measure" +msgstr "Ö_lçüm" + +#: ../app/tools/gimpmeasuretool.c:241 +msgid "Add Guides" +msgstr "Kılavuz Ekle" + +#: ../app/tools/gimpmeasuretool.c:561 +msgid "Click to place vertical and horizontal guides" +msgstr "Dikey ve yatay kılavuzları yerleştirmek için tıklayın" + +#: ../app/tools/gimpmeasuretool.c:570 +msgid "Click to place a horizontal guide" +msgstr "Yatay bir kılavuz yerleştirmek için tıklayın" + +#: ../app/tools/gimpmeasuretool.c:584 +msgid "Click to place a vertical guide" +msgstr "Dikey bir kılavuz yerleştirmek için tıklayın" + +#: ../app/tools/gimpmeasuretool.c:598 +msgid "Click-Drag to add a new point" +msgstr "Yeni bir nokta eklemek için Sürükle'ye tıklayın" + +#: ../app/tools/gimpmeasuretool.c:628 +msgid "Click-Drag to move all points" +msgstr "Tüm noktaları taşımak için Sürükle'ye tıklayın" + +#. tool->display->shell +#: ../app/tools/gimpmeasuretool.c:989 +msgid "Measure Distances and Angles" +msgstr "Açı ve Uzunlukları Ölç" + +#: ../app/tools/gimpmeasuretool.c:1009 +msgid "Distance:" +msgstr "Uzaklık:" + +#: ../app/tools/gimpmoveoptions.c:140 +msgid "Pick a layer or guide" +msgstr "Bir katman ya da kılavuz seçin" + +#: ../app/tools/gimpmoveoptions.c:141 +msgid "Move the active layer" +msgstr "Etkin katmanı taşı" + +#: ../app/tools/gimpmoveoptions.c:145 +msgid "Move selection" +msgstr "Seçimi taşı" + +#: ../app/tools/gimpmoveoptions.c:149 +msgid "Pick a path" +msgstr "Bir yol seç" + +#: ../app/tools/gimpmoveoptions.c:150 +msgid "Move the active path" +msgstr "Etkin yolu taşı" + +#: ../app/tools/gimpmoveoptions.c:179 +msgid "Move:" +msgstr "Taşı:" + +#: ../app/tools/gimpmovetool.c:127 +msgctxt "tool" +msgid "Move" +msgstr "Taşı" + +#: ../app/tools/gimpmovetool.c:128 +msgid "Move Tool: Move layers, selections, and other objects" +msgstr "Taşıma Aracı: Katmanları, seçimleri ve diğer nesneleri taşı" + +#: ../app/tools/gimpmovetool.c:129 +msgid "_Move" +msgstr "_Taşı" + +#: ../app/tools/gimpmovetool.c:276 ../app/tools/gimpmovetool.c:570 +msgid "Move Guide: " +msgstr "Kılavuzu Taşı: " + +#: ../app/tools/gimpmovetool.c:564 +msgid "Cancel Guide" +msgstr "İptal Et" + +#: ../app/tools/gimpmovetool.c:570 +msgid "Add Guide: " +msgstr "Kılavuz Ekle: " + +#: ../app/tools/gimppaintbrushtool.c:52 +msgid "Paintbrush Tool: Paint smooth strokes using a brush" +msgstr "Boya Fırçası Aracı: Bir fırça kullaranak yumuşak vuruşlarla boya" + +#: ../app/tools/gimppaintbrushtool.c:53 +msgid "_Paintbrush" +msgstr "_Boya Fırçası" + +#: ../app/tools/gimppaintoptions-gui.c:112 +#: ../app/tools/gimpselectionoptions.c:211 +#: ../app/widgets/gimpbrushselect.c:191 ../app/widgets/gimplayertreeview.c:269 +msgid "Mode:" +msgstr "Kip:" + +#: ../app/tools/gimppaintoptions-gui.c:127 +#: ../app/tools/gimptransformoptions.c:348 +#: ../app/widgets/gimpbrushselect.c:178 ../app/widgets/gimplayertreeview.c:284 +msgid "Opacity:" +msgstr "Saydamsızlık:" + +#: ../app/tools/gimppaintoptions-gui.c:137 +msgid "Brush:" +msgstr "Fırça:" + +#: ../app/tools/gimppaintoptions-gui.c:142 +msgid "Scale:" +msgstr "Ölçek:" + +#: ../app/tools/gimppaintoptions-gui.c:150 +msgid "Opacity" +msgstr "Saydamsızlık" + +#: ../app/tools/gimppaintoptions-gui.c:156 +msgid "Hardness" +msgstr "Sertlik" + +#: ../app/tools/gimppaintoptions-gui.c:162 +msgid "Rate" +msgstr "Oran" + +#: ../app/tools/gimppaintoptions-gui.c:168 ../app/tools/tools-enums.c:151 +msgid "Size" +msgstr "Boyut" + +#: ../app/tools/gimppaintoptions-gui.c:186 +msgid "Brush Dynamics" +msgstr "Fırça Dinamikleri" + +#: ../app/tools/gimppaintoptions-gui.c:204 +msgid "Velocity:" +msgstr "Hızlılık:" + +#: ../app/tools/gimppaintoptions-gui.c:210 +msgid "Random:" +msgstr "Rastgele:" + +#: ../app/tools/gimppaintoptions-gui.c:264 +msgid "Incremental" +msgstr "Artımlı" + +#: ../app/tools/gimppaintoptions-gui.c:280 +msgid "Hard edge" +msgstr "Kalın kenar" + +#: ../app/tools/gimppaintoptions-gui.c:565 +msgid "Fade out" +msgstr "Soldurma Uygula" + +#: ../app/tools/gimppaintoptions-gui.c:574 +#: ../app/tools/gimppaintoptions-gui.c:657 +msgid "Length:" +msgstr "Uzunluk:" + +#: ../app/tools/gimppaintoptions-gui.c:601 +msgid "Apply Jitter" +msgstr "Kararsızlık Uygula" + +#: ../app/tools/gimppaintoptions-gui.c:606 +msgid "Amount:" +msgstr "Miktar:" + +#: ../app/tools/gimppaintoptions-gui.c:631 +msgid "Use color from gradient" +msgstr "Renk geçişinden renk kullan" + +#: ../app/tools/gimppainttool.c:136 +msgid "Click to paint" +msgstr "Boyamak için tıklayın" + +#: ../app/tools/gimppainttool.c:137 +msgid "Click to draw the line" +msgstr "Çizgi çekmek için tıklayın" + +#: ../app/tools/gimppainttool.c:138 +#, c-format +msgid "%s to pick a color" +msgstr "Bir renk seçmek için %s" + +#: ../app/tools/gimppainttool.c:662 +#, c-format +msgid "%s for a straight line" +msgstr "Düz bir çizgi için %s" + +#: ../app/tools/gimppenciltool.c:52 +msgid "Pencil Tool: Hard edge painting using a brush" +msgstr "Kalem Aracı:" + +#: ../app/tools/gimppenciltool.c:53 +msgid "Pe_ncil" +msgstr "_Kalem" + +#: ../app/tools/gimpperspectiveclonetool.c:127 +msgid "" +"Perspective Clone Tool: Clone from an image source after applying a " +"perspective transformation" +msgstr "" +"Perspektif Kopyalama Aracı: Bir perspektif dönüşümü uyguladıktan sonra bir " +"görüntü kaynağından kopyala" + +#: ../app/tools/gimpperspectiveclonetool.c:129 +msgid "_Perspective Clone" +msgstr "_Perspektif Kopyalama" + +#: ../app/tools/gimpperspectiveclonetool.c:692 +msgid "Ctrl-Click to set a clone source" +msgstr "Bir kopya kaynağı ayarlamak için \"Ctrl\" ile tıklayın" + +#: ../app/tools/gimpperspectivetool.c:70 +msgid "Perspective Tool: Change perspective of the layer, selection or path" +msgstr "" +"Perspektif Aracı: Katmanın, seçimin ya da yolun perspektifini değiştir" + +#: ../app/tools/gimpperspectivetool.c:72 +msgid "_Perspective" +msgstr "_Perspektif" + +#: ../app/tools/gimpperspectivetool.c:99 +msgctxt "command" +msgid "Perspective" +msgstr "Perspektif" + +#: ../app/tools/gimpperspectivetool.c:100 +msgid "Perspective transformation" +msgstr "Perspektif Dönüşümü" + +#: ../app/tools/gimpperspectivetool.c:115 +msgid "Transformation Matrix" +msgstr "Dönüşüm Dizeyi" + +#: ../app/tools/gimpposterizetool.c:85 +msgid "Posterize Tool: Reduce to a limited set of colors" +msgstr "Posterleştirme Aracı: Sınırlı bir renk grubuna küçült" + +#: ../app/tools/gimpposterizetool.c:86 +msgid "_Posterize..." +msgstr "_Posterleştir.." + +#: ../app/tools/gimpposterizetool.c:103 +msgid "Posterize (Reduce Number of Colors)" +msgstr "Posterleştir (Renk Sayısını Azalt)" + +#: ../app/tools/gimpposterizetool.c:151 +#, c-format +msgid "Posterize does not operate on indexed layers." +msgstr "Posterleştirme indisli katmanlarda çalışmaz." + +#: ../app/tools/gimpposterizetool.c:226 +msgid "Posterize _levels:" +msgstr "Seviyeleri _posterleştir:" + +#: ../app/tools/gimprectangleoptions.c:112 +msgid "Use all visible layers when shrinking the selection" +msgstr "Seçimi küçültürken tüm görünür katmanları kullan" + +#. Current, as in what is currently in use. +#: ../app/tools/gimprectangleoptions.c:729 +msgid "Current" +msgstr "Şimdiki" + +#: ../app/tools/gimprectangleoptions.c:807 +msgid "Expand from center" +msgstr "Merkezden genişlet" + +#: ../app/tools/gimprectangleoptions.c:830 +msgid "Fixed:" +msgstr "Değişmez:" + +#: ../app/tools/gimprectangleoptions.c:963 +msgid "Position:" +msgstr "Konum:" + +#: ../app/tools/gimprectangleoptions.c:981 +msgid "Highlight" +msgstr "Vurgulama" + +#. Auto Shrink +#: ../app/tools/gimprectangleoptions.c:991 +msgid "Auto Shrink" +msgstr "Otomatik Küçült" + +#: ../app/tools/gimprectangleoptions.c:998 +msgid "Shrink merged" +msgstr "Birleştirip küçült" + +#: ../app/tools/gimprectangleselectoptions.c:164 +msgid "Rounded corners" +msgstr "Yuvarlatılmış köşeler" + +#: ../app/tools/gimprectangleselecttool.c:167 +msgid "Rectangle Select" +msgstr "Dikdörtgen Seçimi" + +#: ../app/tools/gimprectangleselecttool.c:168 +msgid "Rectangle Select Tool: Select a rectangular region" +msgstr "Dikdörtgen Seçim Aracı: Dikdörtgen bir bölge seçin" + +#: ../app/tools/gimprectangleselecttool.c:169 +msgid "_Rectangle Select" +msgstr "D_ikdörtgen Seçimi" + +#: ../app/tools/gimprectangletool.c:1085 ../app/tools/gimprectangletool.c:1981 +msgid "Rectangle: " +msgstr "Dikdörtgen: " + +#: ../app/tools/gimpregionselectoptions.c:83 +msgid "Allow completely transparent regions to be selected" +msgstr "Tamamen saydam bölgelerin seçilebilmesine izin ver" + +#: ../app/tools/gimpregionselectoptions.c:90 +msgid "Base region_select on all visible layers" +msgstr "Tüm görünür katmanlar üzerinde taban bölge _seçimi" + +#: ../app/tools/gimpregionselectoptions.c:202 +msgid "Select transparent areas" +msgstr "Şeffaf alanları seç" + +#: ../app/tools/gimpregionselectoptions.c:227 +msgid "Select by:" +msgstr "Seçme göreliği:" + +#: ../app/tools/gimpregionselecttool.c:162 +msgid "Move the mouse to change threshold" +msgstr "Eşiği değiştirmek için fareyi taşıyın" + +#: ../app/tools/gimprotatetool.c:90 +msgid "Rotate" +msgstr "Döndür" + +#: ../app/tools/gimprotatetool.c:91 +msgid "Rotate Tool: Rotate the layer, selection or path" +msgstr "Döndürme Aracı: Katmanı, seçimi ya da yolu döndür" + +#: ../app/tools/gimprotatetool.c:92 +msgid "_Rotate" +msgstr "_Döndür" + +#: ../app/tools/gimprotatetool.c:188 +msgid "_Angle:" +msgstr "_Açı:" + +#: ../app/tools/gimprotatetool.c:204 +msgid "Center _X:" +msgstr "Merkez _X:" + +#: ../app/tools/gimprotatetool.c:213 +msgid "Center _Y:" +msgstr "Merkez _Y:" + +#: ../app/tools/gimpscaletool.c:78 +msgid "Scale" +msgstr "Ölçeklendir" + +#: ../app/tools/gimpscaletool.c:79 +msgid "Scale Tool: Scale the layer, selection or path" +msgstr "Ölçeklendirme Aracı: Katmanı, seçimi ya da yolu ölçeklendir" + +#: ../app/tools/gimpscaletool.c:80 +msgid "_Scale" +msgstr "Ö_lçeklendir" + +#: ../app/tools/gimpscaletool.c:106 +msgctxt "command" +msgid "Scale" +msgstr "Ölçeklendir" + +#: ../app/tools/gimpselectionoptions.c:258 ../app/tools/gimptextoptions.c:473 +msgid "Antialiasing" +msgstr "Yazıtipi yumuşatma" + +#: ../app/tools/gimpselectionoptions.c:273 +msgid "Feather edges" +msgstr "Kenarları yumuşat" + +#: ../app/tools/gimpselectiontool.c:251 +msgid "Click-Drag to replace the current selection" +msgstr "Şimdiki seçimin yerine koymak için tıklayıp sürükleyin" + +#: ../app/tools/gimpselectiontool.c:259 +msgid "Click-Drag to create a new selection" +msgstr "Yeni bir seçim oluşturmak için tıklayıp sürükleyin" + +#: ../app/tools/gimpselectiontool.c:264 +msgid "Click-Drag to add to the current selection" +msgstr "Şimdiki seçime eklemek için tıklayıp sürükleyin" + +#: ../app/tools/gimpselectiontool.c:273 +msgid "Click-Drag to subtract from the current selection" +msgstr "Şimdiki seçimden çıkartmak için tıklayıp sürükleyin" + +#: ../app/tools/gimpselectiontool.c:282 +msgid "Click-Drag to intersect with the current selection" +msgstr "Şimdiki seçimle kesiştirmek için tıklayıp sürükleyin" + +#: ../app/tools/gimpselectiontool.c:292 +msgid "Click-Drag to move the selection mask" +msgstr "Seçim maskesini taşımak için tıklayıp sürükleyin" + +#: ../app/tools/gimpselectiontool.c:300 +msgid "Click-Drag to move the selected pixels" +msgstr "Seçilmiş benekleri taşımak için tıklayıp sürükleyin" + +#: ../app/tools/gimpselectiontool.c:304 +msgid "Click-Drag to move a copy of the selected pixels" +msgstr "Seçilmiş beneklerin bir kopyasını taşımak için tıklayıp sürükleyin" + +#: ../app/tools/gimpselectiontool.c:308 +msgid "Click to anchor the floating selection" +msgstr "Yüzen seçimi çapalamak için tıklayın" + +#: ../app/tools/gimpsheartool.c:82 +msgid "Shear" +msgstr "Eğme" + +#: ../app/tools/gimpsheartool.c:83 +msgid "Shear Tool: Shear the layer, selection or path" +msgstr "Eğme Aracı: Katmanı, seçimi ya da yolu eğ" + +#: ../app/tools/gimpsheartool.c:84 +msgid "S_hear" +msgstr "_Eğme" + +#: ../app/tools/gimpsheartool.c:110 +msgctxt "command" +msgid "Shear" +msgstr "Eğ" + +#: ../app/tools/gimpsheartool.c:134 +msgid "Shear magnitude _X:" +msgstr "_X eğme büyüklüğü:" + +#: ../app/tools/gimpsheartool.c:144 +msgid "Shear magnitude _Y:" +msgstr "_Y eğme büyüklüğü:" + +#: ../app/tools/gimpsmudgetool.c:54 +msgid "Smudge Tool: Smudge selectively using a brush" +msgstr "Lekeleme Aracı: Bir fırça kullanıp seçerek lekeleyin" + +#: ../app/tools/gimpsmudgetool.c:55 +msgid "_Smudge" +msgstr "_Lekeleme" + +#: ../app/tools/gimpsmudgetool.c:74 +msgid "Click to smudge" +msgstr "Lekelemek için tıklayın" + +#: ../app/tools/gimpsmudgetool.c:75 +msgid "Click to smudge the line" +msgstr "Çizgiyi lekelemek için tıklayın" + +#: ../app/tools/gimptextoptions.c:127 +msgid "" +"Hinting alters the font outline to produce a crisp bitmap at small sizes" +msgstr "" +"Dokunma, yazıyüzü dış çizgisini, küçük boyutlu canlı bit eşlem oluşturmak " +"için değiştirir" + +#: ../app/tools/gimptextoptions.c:134 +msgid "" +"If available, hints from the font are used but you may prefer to always use " +"the automatic hinter" +msgstr "" +"Eğer kullanılır ise, yazıyüzlerindeki ipuçları kullanılır ama otomatik ipucu " +"vericiyi kullanmayı tercih edebilirsiniz" + +#: ../app/tools/gimptextoptions.c:159 +msgid "Indentation of the first line" +msgstr "İlk satırın girintili yazımı" + +#: ../app/tools/gimptextoptions.c:165 +msgid "Adjust line spacing" +msgstr "Satır boşluğunu ayarla" + +#: ../app/tools/gimptextoptions.c:171 +msgid "Adjust letter spacing" +msgstr "Harf boşluğunu ayarla" + +#: ../app/tools/gimptextoptions.c:445 +msgid "Font:" +msgstr "Yazıtipi:" + +#: ../app/tools/gimptextoptions.c:461 +msgid "Hinting" +msgstr "İpucu Verme" + +#: ../app/tools/gimptextoptions.c:466 +msgid "Force auto-hinter" +msgstr "Otomatik ipucu vermeyi zorla" + +#: ../app/tools/gimptextoptions.c:487 +msgid "Text Color" +msgstr "Metin Rengi" + +#: ../app/tools/gimptextoptions.c:492 +msgid "Color:" +msgstr "Renk:" + +#: ../app/tools/gimptextoptions.c:498 +msgid "Justify:" +msgstr "Hizalama:" + +#. Create a path from the current text +#: ../app/tools/gimptextoptions.c:520 +msgid "Path from Text" +msgstr "Metinden Yola" + +#: ../app/tools/gimptextoptions.c:527 +msgid "Text along Path" +msgstr "Yol boyunca metin" + +#: ../app/tools/gimptexttool.c:162 +msgid "Text Tool: Create or edit text layers" +msgstr "Metin Aracı: Metin katmanları oluştur ya da düzenle" + +#: ../app/tools/gimptexttool.c:163 +msgid "Te_xt" +msgstr "_Metin" + +#: ../app/tools/gimptexttool.c:987 +msgid "GIMP Text Editor" +msgstr "GIMP Metin Düzenleyici" + +#: ../app/tools/gimptexttool.c:1103 ../app/tools/gimptexttool.c:1106 +msgid "Confirm Text Editing" +msgstr "Metin Düzenlemeyi Onayla" + +#: ../app/tools/gimptexttool.c:1110 +msgid "Create _New Layer" +msgstr "_Yeni Katman Oluştur" + +#: ../app/tools/gimptexttool.c:1134 +msgid "" +"The layer you selected is a text layer but it has been modified using other " +"tools. Editing the layer with the text tool will discard these " +"modifications.\n" +"\n" +"You can edit the layer or create a new text layer from its text attributes." +msgstr "" +"Seçtiğiniz katman bir metin katmanı ama başka araçlar kullanılarak " +"değiştirilmiş. Katmanı bir metin aracı ile düzenlemek bu değişikliklerden " +"vazgeçilmesini sağlayacaktır.\n" +"\n" +"Katmanı düzenleyebilirsiniz ya da metin özniteliklerinden yeni bir metin " +"katmanı oluşturabilirsiniz." + +#: ../app/tools/gimptexttool.c:1356 +msgid "Reshape Text Layer" +msgstr "Metin Katmanını Yeniden Şekillendir" + +#: ../app/tools/gimpthresholdtool.c:91 +msgid "Threshold Tool: Reduce image to two colors using a threshold" +msgstr "Eşik Aracı: Bir eşik kullanarak görüntüyü iki renge düşürün" + +#: ../app/tools/gimpthresholdtool.c:92 +msgid "_Threshold..." +msgstr "_Eşik..." + +#: ../app/tools/gimpthresholdtool.c:109 +msgid "Apply Threshold" +msgstr "Sınırı Uygula" + +#: ../app/tools/gimpthresholdtool.c:111 +msgid "Import Threshold Settings" +msgstr "Eşik Ayarlarını İçe Aktar" + +#: ../app/tools/gimpthresholdtool.c:112 +msgid "Export Threshold Settings" +msgstr "Eşik Ayarlarını Dışa Aktar" + +#: ../app/tools/gimpthresholdtool.c:161 +#, c-format +msgid "Threshold does not operate on indexed layers." +msgstr "Alt sınır işlemi indisli katmanlarda çalışamaz." + +#: ../app/tools/gimpthresholdtool.c:266 +msgid "Automatically adjust to optimal binarization threshold" +msgstr "Otomatik olarak en uygun ikili eşiğe göre ayarla" + +#: ../app/tools/gimptransformoptions.c:273 +msgid "Transform:" +msgstr "Dönüştür:" + +#: ../app/tools/gimptransformoptions.c:282 +msgid "Direction" +msgstr "Yön" + +#. the interpolation menu +#: ../app/tools/gimptransformoptions.c:287 +msgid "Interpolation:" +msgstr "Aradeğerleme:" + +#: ../app/tools/gimptransformoptions.c:300 +msgid "Clipping:" +msgstr "Kırpma:" + +#: ../app/tools/gimptransformoptions.c:318 +msgid "Preview:" +msgstr "Önizleme:" + +#: ../app/tools/gimptransformoptions.c:389 +#, c-format +msgid "15 degrees (%s)" +msgstr "15 derece (%s)" + +#: ../app/tools/gimptransformoptions.c:393 +#, c-format +msgid "Keep aspect (%s)" +msgstr "Görünüşü koru (%s)" + +#: ../app/tools/gimptransformtool.c:238 +msgid "Transforming" +msgstr "Dönüştürme" + +#: ../app/tools/gimptransformtool.c:1165 +msgid "There is no layer to transform." +msgstr "Dönüştürmek için hiçbir katman yok." + +#: ../app/tools/gimptransformtool.c:1176 +msgid "There is no path to transform." +msgstr "Dönüştürülecek hiçbir yol yok." + +#: ../app/tools/gimpvectoroptions.c:77 +msgid "Restrict editing to polygons" +msgstr "Düzenlemeyi çokgenlerle kısıtla" + +#: ../app/tools/gimpvectoroptions.c:156 +msgid "Edit Mode" +msgstr "Düzenleme Kipi" + +#: ../app/tools/gimpvectoroptions.c:174 +msgid "Polygonal" +msgstr "Poligonal" + +#: ../app/tools/gimpvectoroptions.c:178 +#, c-format +msgid "" +"Path to Selection\n" +"%s Add\n" +"%s Subtract\n" +"%s Intersect" +msgstr "" +"Seçimden Yola\n" +"%s Ekle\n" +"%s Çıkar\n" +"%s Kesiştir" + +#. Create a selection from the current path +#: ../app/tools/gimpvectoroptions.c:189 +msgid "Selection from Path" +msgstr "Yoldan Seçim" + +#: ../app/tools/gimpvectortool.c:161 +msgid "Paths Tool: Create and edit paths" +msgstr "Yol Aracı: Yol oluştur ve düzenle" + +#: ../app/tools/gimpvectortool.c:162 +msgid "Pat_hs" +msgstr "Y_ollar" + +#: ../app/tools/gimpvectortool.c:322 +msgid "Add Stroke" +msgstr "Darbe Ekle" + +#: ../app/tools/gimpvectortool.c:345 +msgid "Add Anchor" +msgstr "Çıpa Ekle" + +#: ../app/tools/gimpvectortool.c:370 +msgid "Insert Anchor" +msgstr "Çıpayı Araya Ekle" + +#: ../app/tools/gimpvectortool.c:400 +msgid "Drag Handle" +msgstr "Tanıtıcıyı Sürükle" + +#: ../app/tools/gimpvectortool.c:429 +msgid "Drag Anchor" +msgstr "Çıpayı Sürükle" + +#: ../app/tools/gimpvectortool.c:446 +msgid "Drag Anchors" +msgstr "Çıpaları Sürükle" + +#: ../app/tools/gimpvectortool.c:468 +msgid "Drag Curve" +msgstr "Eğriyi Sürükle" + +#: ../app/tools/gimpvectortool.c:496 +msgid "Connect Strokes" +msgstr "Vuruşları Bağla" + +#: ../app/tools/gimpvectortool.c:527 +msgid "Drag Path" +msgstr "Yolu Sürükle" + +#: ../app/tools/gimpvectortool.c:537 +msgid "Convert Edge" +msgstr "Kenarları Dönüştür" + +#: ../app/tools/gimpvectortool.c:567 +msgid "Delete Anchor" +msgstr "Çıpayı Sil" + +#: ../app/tools/gimpvectortool.c:589 +msgid "Delete Segment" +msgstr "Segmenti Sil" + +#: ../app/tools/gimpvectortool.c:807 +msgid "Move Anchors" +msgstr "Çıpaları Taşı" + +#: ../app/tools/gimpvectortool.c:1167 +msgid "Click to pick path to edit" +msgstr "Yolu seçip düzenlemek için tıklayın" + +#: ../app/tools/gimpvectortool.c:1171 +msgid "Click to create a new path" +msgstr "Yeni yol oluşturmak için tıklayın" + +#: ../app/tools/gimpvectortool.c:1175 +msgid "Click to create a new component of the path" +msgstr "Yolun yeni bir bileşenini oluşturmak için tıklayın" + +#: ../app/tools/gimpvectortool.c:1179 +msgid "Click or Click-Drag to create a new anchor" +msgstr "Yeni bir çıpa oluşturmak için tıklayın ya da tıklayıp sürükleyin" + +#: ../app/tools/gimpvectortool.c:1189 ../app/tools/gimpvectortool.c:1196 +msgid "Click-Drag to move the anchor around" +msgstr "Çıpayı etrafında taşımak için tıklayıp sürükleyin" + +#: ../app/tools/gimpvectortool.c:1200 ../app/tools/gimpvectortool.c:1213 +msgid "Click-Drag to move the anchors around" +msgstr "Çıpaları etraflarında taşımak için tıklayıp sürükleyin" + +#: ../app/tools/gimpvectortool.c:1204 +msgid "Click-Drag to move the handle around" +msgstr "Tanıtıcıyı etrafında döndürmek için tıklayıp sürükleyin" + +#: ../app/tools/gimpvectortool.c:1218 +msgid "Click-Drag to change the shape of the curve" +msgstr "Eğrinin şeklini değiştirmek için tıklayıp sürükleyin" + +#: ../app/tools/gimpvectortool.c:1221 +#, c-format +msgid "%s: symmetrical" +msgstr "%s: simetrik" + +#: ../app/tools/gimpvectortool.c:1226 +msgid "Click-Drag to move the component around" +msgstr "Bileşeni etrafında taşımak için tıklayıp sürükleyin" + +#: ../app/tools/gimpvectortool.c:1234 +msgid "Click-Drag to move the path around" +msgstr "Yolu etrafında taşımak için tıklayıp sürükleyin" + +#: ../app/tools/gimpvectortool.c:1238 +msgid "Click-Drag to insert an anchor on the path" +msgstr "Yol üzerine bir çıpa eklemek için tıklayıp sürükleyin" + +#: ../app/tools/gimpvectortool.c:1246 +msgid "Click to delete this anchor" +msgstr "Bu çıpayı silmek için tıklayın" + +#: ../app/tools/gimpvectortool.c:1250 +msgid "Click to connect this anchor with the selected endpoint" +msgstr "Bu çıpa ile seçilmiş bitim noktasını bağlamak için tıklayın" + +#: ../app/tools/gimpvectortool.c:1255 +msgid "Click to open up the path" +msgstr "Yolu açmak için tıklayın" + +#: ../app/tools/gimpvectortool.c:1259 +msgid "Click to make this node angular" +msgstr "Bu düğümü köşeli yapmak için tıklayın" + +#: ../app/tools/gimpvectortool.c:1766 +msgid "Delete Anchors" +msgstr "Çıpaları Sil" + +#: ../app/tools/gimpvectortool.c:1939 +msgid "There is no active layer or channel to stroke to" +msgstr "Vuruş yapılacak etkin bir katman ya da kanal yok" + +#: ../app/tools/tools-enums.c:58 +msgid "No guides" +msgstr "Kılavuz yok" + +#: ../app/tools/tools-enums.c:59 +msgid "Center lines" +msgstr "Orta çizgiler" + +#: ../app/tools/tools-enums.c:60 +msgid "Rule of thirds" +msgstr "Üçlü Kuralı" + +#: ../app/tools/tools-enums.c:61 +msgid "Golden sections" +msgstr "Altın bölümler" + +#: ../app/tools/tools-enums.c:148 +msgid "Aspect ratio" +msgstr "En boy oranı" + +#: ../app/tools/tools-enums.c:149 ../app/widgets/gimpgrideditor.c:265 +#: ../app/widgets/gimpgrideditor.c:297 +msgid "Width" +msgstr "Genişlik" + +#: ../app/tools/tools-enums.c:150 ../app/widgets/gimpgrideditor.c:267 +#: ../app/widgets/gimpgrideditor.c:299 +msgid "Height" +msgstr "Yükseklik" + +#: ../app/tools/tools-enums.c:179 +msgid "Free select" +msgstr "Serbest seçim" + +#: ../app/tools/tools-enums.c:180 +msgid "Fixed size" +msgstr "Sabit boyut" + +#: ../app/tools/tools-enums.c:181 +msgid "Fixed aspect ratio" +msgstr "Sabit görünüm oranı" + +#: ../app/tools/tools-enums.c:211 ../app/vectors/gimpvectors.c:192 +msgid "Path" +msgstr "Yol" + +#: ../app/tools/tools-enums.c:240 +msgid "Outline" +msgstr "Çerçeve" + +#: ../app/tools/tools-enums.c:243 +msgid "Image + Grid" +msgstr "Görüntü + Izgara" + +#: ../app/tools/tools-enums.c:270 +msgid "Number of grid lines" +msgstr "Izgara çizgilerinin sayısı" + +#: ../app/tools/tools-enums.c:271 +msgid "Grid line spacing" +msgstr "Izgara çizgisi boşluğu" + +#: ../app/tools/tools-enums.c:299 +msgid "Design" +msgstr "Tasarım" + +#: ../app/tools/tools-enums.c:301 +msgid "Move" +msgstr "Taşı" + +#: ../app/vectors/gimpvectors.c:193 +msgid "Rename Path" +msgstr "Yolu Yeniden Adlandır" + +#: ../app/vectors/gimpvectors.c:194 ../app/vectors/gimpvectors.c:316 +msgid "Move Path" +msgstr "Yolu Taşı" + +#: ../app/vectors/gimpvectors.c:195 +msgid "Scale Path" +msgstr "Yolu Ölçeklendir" + +#: ../app/vectors/gimpvectors.c:196 +msgid "Resize Path" +msgstr "Yolu Boyutlandır" + +#: ../app/vectors/gimpvectors.c:197 ../app/vectors/gimpvectors.c:415 +msgid "Flip Path" +msgstr "Yolu Çevir" + +#: ../app/vectors/gimpvectors.c:198 ../app/vectors/gimpvectors.c:446 +msgid "Rotate Path" +msgstr "Yolu Döndür" + +#: ../app/vectors/gimpvectors.c:199 ../app/vectors/gimpvectors.c:476 +msgid "Transform Path" +msgstr "Yolu Dönüştür" + +#: ../app/vectors/gimpvectors-export.c:96 +#, c-format +msgid "Error while writing '%s': %s" +msgstr "'%s' yazılırken hata: %s" + +#: ../app/vectors/gimpvectors-import.c:296 +msgid "Import Paths" +msgstr "Yolları Al" + +#: ../app/vectors/gimpvectors-import.c:307 +msgid "Imported Path" +msgstr "İçe Aktarılmış Yol" + +#: ../app/vectors/gimpvectors-import.c:336 +#, c-format +msgid "No paths found in '%s'" +msgstr "%s içinde yol bulunamadı" + +#: ../app/vectors/gimpvectors-import.c:339 +#, c-format +msgid "No paths found in the buffer" +msgstr "Tamponda yol bulunamadı" + +#: ../app/vectors/gimpvectors-import.c:349 +#, c-format +msgid "Failed to import paths from '%s': %s" +msgstr "%s dosyasından yol okunurken hata: %s" + +#: ../app/widgets/gimpactioneditor.c:71 +msgid "_Search:" +msgstr "_Ara:" + +#: ../app/widgets/gimpactiongroup.c:802 +#, c-format +msgid "RGBA (%0.3f, %0.3f, %0.3f, %0.3f)" +msgstr "RGBA (%0.3f, %0.3f, %0.3f, %0.3f)" + +#: ../app/widgets/gimpactionview.c:346 +#: ../app/widgets/gimpcontrollereditor.c:348 +msgid "Action" +msgstr "Eylem" + +#: ../app/widgets/gimpactionview.c:375 +msgid "Shortcut" +msgstr "Kısayol" + +#: ../app/widgets/gimpactionview.c:401 +msgid "Name" +msgstr "İsim" + +#: ../app/widgets/gimpactionview.c:641 ../app/widgets/gimpactionview.c:846 +msgid "Changing shortcut failed." +msgstr "Kısayol değişimi başarısız oldu." + +#: ../app/widgets/gimpactionview.c:683 +msgid "Conflicting Shortcuts" +msgstr "Çelişen Kısayollar" + +#: ../app/widgets/gimpactionview.c:689 +msgid "_Reassign shortcut" +msgstr "Kısayolu Yeniden A_ta" + +#: ../app/widgets/gimpactionview.c:704 +#, c-format +msgid "Shortcut \"%s\" is already taken by \"%s\" from the \"%s\" group." +msgstr "" +"\"%s\" kısayolu zaten \"%s\" tarafından \"%s\" grubundan alınmış durumda." + +#: ../app/widgets/gimpactionview.c:708 +#, c-format +msgid "Reassigning the shortcut will cause it to be removed from \"%s\"." +msgstr "" +"Kısayolu yeniden atamak \"%s\" üzerinden kaldırılmasına neden olacak." + +#: ../app/widgets/gimpactionview.c:781 +msgid "Invalid shortcut." +msgstr "Geçersiz kısayol." + +#: ../app/widgets/gimpactionview.c:870 +msgid "Removing shortcut failed." +msgstr "Kısayolu kaldırma başarısız oldu." + +#: ../app/widgets/gimpbrusheditor.c:169 +msgid "Spikes:" +msgstr "Artışlar:" + +#: ../app/widgets/gimpbrusheditor.c:182 +msgid "Hardness:" +msgstr "Sertlik:" + +#: ../app/widgets/gimpbrusheditor.c:195 +msgid "Aspect ratio:" +msgstr "Görüntü oranı:" + +#: ../app/widgets/gimpbrusheditor.c:221 +#: ../app/widgets/gimpbrushfactoryview.c:82 +msgid "Spacing:" +msgstr "Boşluk:" + +#: ../app/widgets/gimpbrusheditor.c:224 +#: ../app/widgets/gimpbrushfactoryview.c:85 +msgid "Percentage of width of brush" +msgstr "Fırça genişliğinin yüzdesi" + +#: ../app/widgets/gimpbufferview.c:173 ../app/widgets/gimpbufferview.c:257 +#: ../app/widgets/gimpeditor.c:754 +msgid "(None)" +msgstr "(Hiçbiri)" + +#: ../app/widgets/gimpchanneltreeview.c:119 +msgid "Reorder Channel" +msgstr "Kanalı Yeniden Düzenle" + +#: ../app/widgets/gimpchanneltreeview.c:321 +msgid "Empty Channel" +msgstr "Kanalı Boşalt" + +#: ../app/widgets/gimpcolordialog.c:150 +msgid "Add the current color to the color history" +msgstr "Renk geçmişine şimdiki rengi ekle" + +#: ../app/widgets/gimpcolordisplayeditor.c:152 +msgid "Available Filters" +msgstr "Mevcut Filtreler" + +#: ../app/widgets/gimpcolordisplayeditor.c:213 +msgid "Move the selected filter up" +msgstr "Seçilmiş süzgeci yükselt" + +#: ../app/widgets/gimpcolordisplayeditor.c:222 +msgid "Move the selected filter down" +msgstr "Seçilmiş süzgeci indir" + +#: ../app/widgets/gimpcolordisplayeditor.c:268 +msgid "Active Filters" +msgstr "Etkin Filtreler" + +#: ../app/widgets/gimpcolordisplayeditor.c:319 +msgid "Reset the selected filter to default values" +msgstr "Seçili filtreleri öntanımlı değerlerine geri al" + +#: ../app/widgets/gimpcolordisplayeditor.c:493 +#, c-format +msgid "Add '%s' to the list of active filters" +msgstr "Etkin süzgeçler listesine '%s' ekle" + +#: ../app/widgets/gimpcolordisplayeditor.c:530 +#, c-format +msgid "Remove '%s' from the list of active filters" +msgstr "Etkin süzgeçler listesinden '%s' kaldır" + +#: ../app/widgets/gimpcolordisplayeditor.c:561 +msgid "No filter selected" +msgstr "Seçilmiş süzgeç yok" + +#: ../app/widgets/gimpcoloreditor.c:263 +msgid "" +"Hexadecimal color notation as used in HTML and CSS. This entry also accepts " +"CSS color names." +msgstr "" +"HTML ve CSS içinde kullanılıan onaltılı renk gösterimi. Bu giriş ayrıca CSS " +"renk adlarını da kabul eder." + +#: ../app/widgets/gimpcolorframe.c:501 +msgid "Index:" +msgstr "Sıra:" + +#: ../app/widgets/gimpcolorframe.c:514 ../app/widgets/gimpcolorframe.c:540 +msgid "Red:" +msgstr "Kırmızı:" + +#: ../app/widgets/gimpcolorframe.c:515 ../app/widgets/gimpcolorframe.c:541 +msgid "Green:" +msgstr "Yeşil:" + +#: ../app/widgets/gimpcolorframe.c:516 ../app/widgets/gimpcolorframe.c:542 +msgid "Blue:" +msgstr "Mavi:" + +#: ../app/widgets/gimpcolorframe.c:529 ../app/widgets/gimpcolorframe.c:562 +msgid "Value:" +msgstr "Değer:" + +#: ../app/widgets/gimpcolorframe.c:553 +msgid "Hex:" +msgstr "Onaltılı:" + +#: ../app/widgets/gimpcolorframe.c:560 +msgid "Hue:" +msgstr "Renk Özü:" + +#: ../app/widgets/gimpcolorframe.c:561 +msgid "Sat.:" +msgstr "Doyg.:" + +#: ../app/widgets/gimpcolorframe.c:579 +msgid "Cyan:" +msgstr "Turkuaz:" + +#: ../app/widgets/gimpcolorframe.c:580 +msgid "Magenta:" +msgstr "Magenta:" + +#: ../app/widgets/gimpcolorframe.c:581 +msgid "Yellow:" +msgstr "Sarı:" + +#: ../app/widgets/gimpcolorframe.c:582 +msgid "Black:" +msgstr "Siyah:" + +#: ../app/widgets/gimpcolorframe.c:602 +msgid "Alpha:" +msgstr "Alfa:" + +#: ../app/widgets/gimpcolorframe.c:623 ../app/widgets/gimpcursorview.c:134 +#: ../app/widgets/gimpcursorview.c:140 ../app/widgets/gimpcursorview.c:156 +#: ../app/widgets/gimpcursorview.c:162 ../app/widgets/gimpcursorview.c:444 +#: ../app/widgets/gimpcursorview.c:445 ../app/widgets/gimpcursorview.c:446 +#: ../app/widgets/gimpcursorview.c:447 +msgid "n/a" +msgstr "mevcut değil" + +#: ../app/widgets/gimpcolormapeditor.c:225 +msgid "Color index:" +msgstr "Renk indisi:" + +#: ../app/widgets/gimpcolormapeditor.c:235 +msgid "HTML notation:" +msgstr "HTML gösterim:" + +#: ../app/widgets/gimpcolormapeditor.c:492 +msgid "Only indexed images have a colormap." +msgstr "Sadece sıralanmış görüntülerin bir renk haritası olabilir." + +#: ../app/widgets/gimpcolorselectorpalette.c:59 +msgid "Palette" +msgstr "Palet" + +#: ../app/widgets/gimpcontainerpopup.c:571 +msgid "Smaller Previews" +msgstr "Daha Küçük Önizlemeler" + +#: ../app/widgets/gimpcontainerpopup.c:576 +msgid "Larger Previews" +msgstr "Daha Büyük Önizlemeler" + +#: ../app/widgets/gimpcontrollereditor.c:202 +msgid "_Dump events from this controller" +msgstr "Bu denetleyiciden olayların _dökümünü al" + +#: ../app/widgets/gimpcontrollereditor.c:207 +msgid "_Enable this controller" +msgstr "Bu denetleyiciyi _etkinleştir" + +#: ../app/widgets/gimpcontrollereditor.c:228 +msgid "Name:" +msgstr "İsim:" + +#: ../app/widgets/gimpcontrollereditor.c:234 +msgid "State:" +msgstr "Durum:" + +#: ../app/widgets/gimpcontrollereditor.c:342 +msgid "Event" +msgstr "Olay" + +#: ../app/widgets/gimpcontrollereditor.c:367 +msgid "_Grab event" +msgstr "_Olayı Yakala" + +#: ../app/widgets/gimpcontrollereditor.c:377 +msgid "Select the next event arriving from the controller" +msgstr "Denetleyiciden gelen sonraki olayı seç" + +#: ../app/widgets/gimpcontrollereditor.c:535 +#, c-format +msgid "Remove the action assigned to '%s'" +msgstr "'%s' olayına atanan eylemi kaldır" + +#: ../app/widgets/gimpcontrollereditor.c:540 +#, c-format +msgid "Assign an action to '%s'" +msgstr "'%s' olayına bir eylem ata" + +#: ../app/widgets/gimpcontrollereditor.c:661 +#, c-format +msgid "Select Action for Event '%s'" +msgstr "'%s' Olayı için Eylem Seç" + +#: ../app/widgets/gimpcontrollereditor.c:666 +msgid "Select Controller Event Action" +msgstr "Denetleyici Olayı Eylemi Seç" + +#: ../app/widgets/gimpcontrollerkeyboard.c:70 +#: ../app/widgets/gimpcontrollerkeyboard.c:73 +#: ../app/widgets/gimpcontrollerkeyboard.c:76 +#: ../app/widgets/gimpcontrollerkeyboard.c:79 +#: ../app/widgets/gimpcontrollerkeyboard.c:82 +#: ../app/widgets/gimpcontrollerkeyboard.c:85 +#: ../app/widgets/gimpcontrollerkeyboard.c:88 +#: ../app/widgets/gimpcontrollerkeyboard.c:91 +msgid "Cursor Up" +msgstr "Üst İmleç" + +#: ../app/widgets/gimpcontrollerkeyboard.c:95 +#: ../app/widgets/gimpcontrollerkeyboard.c:98 +#: ../app/widgets/gimpcontrollerkeyboard.c:101 +#: ../app/widgets/gimpcontrollerkeyboard.c:104 +#: ../app/widgets/gimpcontrollerkeyboard.c:107 +#: ../app/widgets/gimpcontrollerkeyboard.c:110 +#: ../app/widgets/gimpcontrollerkeyboard.c:113 +#: ../app/widgets/gimpcontrollerkeyboard.c:116 +msgid "Cursor Down" +msgstr "Alt İmleç" + +#: ../app/widgets/gimpcontrollerkeyboard.c:120 +#: ../app/widgets/gimpcontrollerkeyboard.c:123 +#: ../app/widgets/gimpcontrollerkeyboard.c:126 +#: ../app/widgets/gimpcontrollerkeyboard.c:129 +#: ../app/widgets/gimpcontrollerkeyboard.c:132 +#: ../app/widgets/gimpcontrollerkeyboard.c:135 +#: ../app/widgets/gimpcontrollerkeyboard.c:138 +#: ../app/widgets/gimpcontrollerkeyboard.c:141 +msgid "Cursor Left" +msgstr "Sol İmleç" + +#: ../app/widgets/gimpcontrollerkeyboard.c:145 +#: ../app/widgets/gimpcontrollerkeyboard.c:148 +#: ../app/widgets/gimpcontrollerkeyboard.c:151 +#: ../app/widgets/gimpcontrollerkeyboard.c:154 +#: ../app/widgets/gimpcontrollerkeyboard.c:157 +#: ../app/widgets/gimpcontrollerkeyboard.c:160 +#: ../app/widgets/gimpcontrollerkeyboard.c:163 +#: ../app/widgets/gimpcontrollerkeyboard.c:166 +msgid "Cursor Right" +msgstr "Sağ İmleç" + +#: ../app/widgets/gimpcontrollerkeyboard.c:178 +msgid "Keyboard" +msgstr "Klavye" + +#: ../app/widgets/gimpcontrollerkeyboard.c:222 +msgid "Keyboard Events" +msgstr "Klavye Olayları" + +#: ../app/widgets/gimpcontrollerkeyboard.c:223 +#: ../app/widgets/gimpcontrollerwheel.c:225 +msgid "Ready" +msgstr "Hazır" + +#: ../app/widgets/gimpcontrollerlist.c:182 +msgid "Available Controllers" +msgstr "Mevcut Denetleyiciler" + +#: ../app/widgets/gimpcontrollerlist.c:274 +msgid "Active Controllers" +msgstr "Etkin Denetleyiciler" + +#: ../app/widgets/gimpcontrollerlist.c:290 +msgid "Configure the selected controller" +msgstr "Seçili denetleyiciyi yapılandır" + +#: ../app/widgets/gimpcontrollerlist.c:298 +msgid "Move the selected controller up" +msgstr "Seçili denetleyiciyi yukarı taşı" + +#: ../app/widgets/gimpcontrollerlist.c:306 +msgid "Move the selected controller down" +msgstr "Seçili denetleyiciyi aşağı taşı" + +#: ../app/widgets/gimpcontrollerlist.c:430 +#, c-format +msgid "Add '%s' to the list of active controllers" +msgstr "Etkin denetleyiciler listesine '%s' ekle" + +#: ../app/widgets/gimpcontrollerlist.c:481 +#, c-format +msgid "Remove '%s' from the list of active controllers" +msgstr "Etkin denetleyiciler listesinden '%s' kaldır" + +#: ../app/widgets/gimpcontrollerlist.c:514 +msgid "" +"There can only be one active keyboard controller.\n" +"\n" +"You already have a keyboard controller in your list of active controllers." +msgstr "" +"Etkin sadece bir klavye denetleyicisi olabilir.\n" +"\n" +"Etkin denetleyiciler listenizde zaten bir klavye denetleyiciniz var." + +#: ../app/widgets/gimpcontrollerlist.c:524 +msgid "" +"There can only be one active wheel controller.\n" +"\n" +"You already have a wheel controller in your list of active controllers." +msgstr "" +"Etkin sadece bir teker denetleyicisi olabilir.\n" +"\n" +"Etkin denetleyiciler listenizde zaten bir teker denetleyiciniz var." + +#: ../app/widgets/gimpcontrollerlist.c:551 +msgid "Remove Controller?" +msgstr "Denetleyiciyi Sil?" + +#: ../app/widgets/gimpcontrollerlist.c:556 +msgid "Disable Controller" +msgstr "Denetleyiciyi Kapat" + +#: ../app/widgets/gimpcontrollerlist.c:558 +msgid "Remove Controller" +msgstr "Denetleyiciyi Sil" + +#: ../app/widgets/gimpcontrollerlist.c:569 +#, c-format +msgid "Remove Controller '%s'?" +msgstr "%s Denetleyicisini Sil?" + +#: ../app/widgets/gimpcontrollerlist.c:573 +#, c-format +msgid "" +"Removing this controller from the list of active controllers will " +"permanently delete all event mappings you have configured.\n" +"\n" +"Selecting \"Disable Controller\" will disable the controller without " +"removing it." +msgstr "" +"Bu denetleyicinin etkin denetleyiciler listesinden silinmesi, " +"yapılandırdığınız olay eşlemlerinin tümünü kalıcı olarak silecektir.\n" +"\n" +"\"Denetleyiciyi Kapat\" seçimini yapmak denetleyicinin kaldırmadan " +"kapatılmasını sağlar." + +#: ../app/widgets/gimpcontrollerlist.c:633 +msgid "Configure Input Controller" +msgstr "Girdi Denetleyicisini Yapılandır" + +#: ../app/widgets/gimpcontrollerwheel.c:72 +#: ../app/widgets/gimpcontrollerwheel.c:75 +#: ../app/widgets/gimpcontrollerwheel.c:78 +#: ../app/widgets/gimpcontrollerwheel.c:81 +#: ../app/widgets/gimpcontrollerwheel.c:84 +#: ../app/widgets/gimpcontrollerwheel.c:87 +#: ../app/widgets/gimpcontrollerwheel.c:90 +#: ../app/widgets/gimpcontrollerwheel.c:93 +msgid "Scroll Up" +msgstr "Yukarı Kaydır" + +#: ../app/widgets/gimpcontrollerwheel.c:97 +#: ../app/widgets/gimpcontrollerwheel.c:100 +#: ../app/widgets/gimpcontrollerwheel.c:103 +#: ../app/widgets/gimpcontrollerwheel.c:106 +#: ../app/widgets/gimpcontrollerwheel.c:109 +#: ../app/widgets/gimpcontrollerwheel.c:112 +#: ../app/widgets/gimpcontrollerwheel.c:115 +#: ../app/widgets/gimpcontrollerwheel.c:118 +msgid "Scroll Down" +msgstr "Aşağı Kaydır" + +#: ../app/widgets/gimpcontrollerwheel.c:122 +#: ../app/widgets/gimpcontrollerwheel.c:125 +#: ../app/widgets/gimpcontrollerwheel.c:128 +#: ../app/widgets/gimpcontrollerwheel.c:131 +#: ../app/widgets/gimpcontrollerwheel.c:134 +#: ../app/widgets/gimpcontrollerwheel.c:137 +#: ../app/widgets/gimpcontrollerwheel.c:140 +#: ../app/widgets/gimpcontrollerwheel.c:143 +msgid "Scroll Left" +msgstr "Sola Kaydır" + +#: ../app/widgets/gimpcontrollerwheel.c:147 +#: ../app/widgets/gimpcontrollerwheel.c:150 +#: ../app/widgets/gimpcontrollerwheel.c:153 +#: ../app/widgets/gimpcontrollerwheel.c:156 +#: ../app/widgets/gimpcontrollerwheel.c:159 +#: ../app/widgets/gimpcontrollerwheel.c:162 +#: ../app/widgets/gimpcontrollerwheel.c:165 +#: ../app/widgets/gimpcontrollerwheel.c:168 +msgid "Scroll Right" +msgstr "Sağa Kaydır" + +#: ../app/widgets/gimpcontrollerwheel.c:180 +msgid "Mouse Wheel" +msgstr "Fare Tekerleği" + +#: ../app/widgets/gimpcontrollerwheel.c:224 +msgid "Mouse Wheel Events" +msgstr "Fare Tekerleği Olayları" + +#: ../app/widgets/gimpcursorview.c:137 ../app/widgets/gimpcursorview.c:159 +msgid "X" +msgstr "X" + +#: ../app/widgets/gimpcursorview.c:143 ../app/widgets/gimpcursorview.c:165 +msgid "Y" +msgstr "Y" + +#: ../app/widgets/gimpcursorview.c:146 +msgid "Units" +msgstr "Birim" + +#: ../app/widgets/gimpdataeditor.c:220 +msgid "Save" +msgstr "Kaydet" + +#: ../app/widgets/gimpdataeditor.c:228 +msgid "Revert" +msgstr "Geri al" + +#: ../app/widgets/gimpdataeditor.c:444 +#, c-format +msgid "%s (read only)" +msgstr "%s (sadece oku)" + +#: ../app/widgets/gimpdevicestatus.c:138 +msgid "Save device status" +msgstr "Aygıt durumunu kaydet" + +#: ../app/widgets/gimpdevicestatus.c:448 +#, c-format +msgid "Foreground: %d, %d, %d" +msgstr "Önplan: %d, %d, %d" + +#: ../app/widgets/gimpdevicestatus.c:453 +#, c-format +msgid "Background: %d, %d, %d" +msgstr "Arkaplan: %d, %d, %d" + +#: ../app/widgets/gimpdnd-xds.c:190 +msgid "The given filename does not have any known file extension." +msgstr "Verilen dosya adı bilinen hiçbir dosya uzantısına sahip değil." + +#: ../app/widgets/gimpdnd-xds.c:208 +msgid "File Exists" +msgstr "Dosya Mevcut" + +#: ../app/widgets/gimpdnd-xds.c:213 +msgid "_Replace" +msgstr "_Yerine Koy" + +#: ../app/widgets/gimpdnd-xds.c:224 +#, c-format +msgid "A file named '%s' already exists." +msgstr "'%s' adında bir dosya zaten mevcut." + +#: ../app/widgets/gimpdnd-xds.c:229 +msgid "Do you want to replace it with the image you are saving?" +msgstr "Varolan görüntüyü kaydettiğinizle değiştirmek istiyor musunuz?" + +#: ../app/widgets/gimpdockable.c:194 +msgid "Configure this tab" +msgstr "Bu sekmeyi yapılandır" + +#: ../app/widgets/gimpdockseparator.c:44 +msgid "You can drop dockable dialogs here" +msgstr "Rıhtımlanabilir kutuları buraya bırakabilirsiniz" + +#: ../app/widgets/gimperrordialog.c:151 +msgid "Too many error messages!" +msgstr "Çok fazla hata mesajı!" + +#: ../app/widgets/gimperrordialog.c:152 +msgid "Messages are redirected to stderr." +msgstr "İletiler stderr'e yönlendirilmiş." + +#: ../app/widgets/gimperrordialog.c:171 +#, c-format +msgid "%s Message" +msgstr "%s Mesajı" + +#: ../app/widgets/gimpfiledialog.c:310 +msgid "Automatically Detected" +msgstr "Otomatik Tanıma" + +#: ../app/widgets/gimpfiledialog.c:320 +msgid "By Extension" +msgstr "Uzantıya Göre" + +#: ../app/widgets/gimpfiledialog.c:652 +msgid "All files" +msgstr "Tüm dosyalar" + +#: ../app/widgets/gimpfiledialog.c:657 +msgid "All images" +msgstr "Tüm görüntüler" + +#: ../app/widgets/gimpfiledialog.c:786 +#, c-format +msgid "Select File _Type (%s)" +msgstr "_Dosya Türünü Seç (%s)" + +#: ../app/widgets/gimpfileprocview.c:187 +msgid "File Type" +msgstr "Dosya Türü" + +#: ../app/widgets/gimpfileprocview.c:199 +msgid "Extensions" +msgstr "Uzantılar" + +#. Instant update toggle +#: ../app/widgets/gimpgradienteditor.c:414 +msgid "Instant update" +msgstr "Anında tazeleme" + +#: ../app/widgets/gimpgradienteditor.c:775 +#, c-format +msgid "Zoom factor: %d:1" +msgstr "Odaklama oranı: %d: 1" + +#: ../app/widgets/gimpgradienteditor.c:778 +#, c-format +msgid "Displaying [%0.4f, %0.4f]" +msgstr "Görüntüleme [%0.4f, %0.4f]" + +#: ../app/widgets/gimpgradienteditor.c:997 +#, c-format +msgid "Position: %0.4f" +msgstr "Konum: %0.4f" + +#: ../app/widgets/gimpgradienteditor.c:998 +#, c-format +msgid "RGB (%0.3f, %0.3f, %0.3f)" +msgstr "RGB (%0.3f, %0.3f, %0.3f)" + +#: ../app/widgets/gimpgradienteditor.c:1000 +#, c-format +msgid "HSV (%0.1f, %0.1f, %0.1f)" +msgstr "HSV (%0.1f, %0.1f, %0.1f)" + +#: ../app/widgets/gimpgradienteditor.c:1002 +#, c-format +msgid "Luminance: %0.1f Opacity: %0.1f" +msgstr "Parlaklık: %0.1f Işık Geçirmezlik: %0.1f" + +#: ../app/widgets/gimpgradienteditor.c:1033 +#, c-format +msgid "RGB (%d, %d, %d)" +msgstr "RGB (%d, %d, %d)" + +#: ../app/widgets/gimpgradienteditor.c:1044 +msgid "Foreground color set to:" +msgstr "Önplan rengi değiştirildi:" + +#: ../app/widgets/gimpgradienteditor.c:1051 +msgid "Background color set to:" +msgstr "Arkaplan rengi değiştirildi:" + +#: ../app/widgets/gimpgradienteditor.c:1285 +#: ../app/widgets/gimpgradienteditor.c:1351 +#, c-format +msgid "%s%sDrag: move & compress" +msgstr "%s%sSürükle: taşı ve sıkıştır" + +#: ../app/widgets/gimpgradienteditor.c:1291 +msgid "Drag: move" +msgstr "Sürükle: taşı" + +#: ../app/widgets/gimpgradienteditor.c:1298 +#: ../app/widgets/gimpgradienteditor.c:1312 +#: ../app/widgets/gimpgradienteditor.c:1326 +#: ../app/widgets/gimpgradienteditor.c:1348 +#, c-format +msgid "%s%sClick: extend selection" +msgstr "%s%sTıkla: seçimi genişlet" + +#: ../app/widgets/gimpgradienteditor.c:1304 +#: ../app/widgets/gimpgradienteditor.c:1318 +msgid "Click: select" +msgstr "Tıkla: seç" + +#: ../app/widgets/gimpgradienteditor.c:1332 +#: ../app/widgets/gimpgradienteditor.c:1356 +msgid "Click: select Drag: move" +msgstr "Tıkla: seç Sürükle: taşı" + +#: ../app/widgets/gimpgradienteditor.c:1571 +#: ../app/widgets/gimpgradienteditor.c:1579 +#, c-format +msgid "Handle position: %0.4f" +msgstr "Tanıtıcı konumu: %0.4f" + +#: ../app/widgets/gimpgradienteditor.c:1596 +#, c-format +msgid "Distance: %0.4f" +msgstr "Uzaklık: %0.4f" + +#: ../app/widgets/gimpgrideditor.c:217 +msgid "Line _style:" +msgstr "Çizgi _biçemi:" + +#: ../app/widgets/gimpgrideditor.c:221 +msgid "Change grid foreground color" +msgstr "Izgaranın önalan rengini değiştir" + +#: ../app/widgets/gimpgrideditor.c:228 +msgid "_Foreground color:" +msgstr "Ö_nplan rengi:" + +#: ../app/widgets/gimpgrideditor.c:232 +msgid "Change grid background color" +msgstr "Izgaranın artalan rengini değiştir" + +#: ../app/widgets/gimpgrideditor.c:239 +msgid "_Background color:" +msgstr "_Arkaplan rengi:" + +#: ../app/widgets/gimpgrideditor.c:244 +msgid "Spacing" +msgstr "Boşluk" + +#: ../app/widgets/gimphelp.c:294 +msgid "Help browser is missing" +msgstr "Yardım gezgini kayıp" + +#: ../app/widgets/gimphelp.c:295 +msgid "The GIMP help browser is not available." +msgstr "GIMP yardım gezgini kullanılır durumda değil." + +#: ../app/widgets/gimphelp.c:296 +msgid "" +"The GIMP help browser plug-in appears to be missing from your installation. " +"You may instead use the web browser for reading the help pages." +msgstr "" +"GIMP yardım gezgini eklentisi kurulumunuzda kayıp görünüyor. Bunun yerine " +"yardım sayfalarını okumak için ağ tarayıcınızı kullanabilirsiniz." + +#: ../app/widgets/gimphelp.c:337 +msgid "Help browser doesn't start" +msgstr "Yardım gezgini başlatılamıyor" + +#: ../app/widgets/gimphelp.c:338 +msgid "Could not start the GIMP help browser plug-in." +msgstr "GIMP Yardımcısı başlatılamadı." + +#: ../app/widgets/gimphelp.c:365 +msgid "Use _Web Browser" +msgstr "A_ğ Tarayıcısını Kullan" + +#: ../app/widgets/gimphelp.c:614 +msgid "GIMP user manual is missing" +msgstr "GIMP kullanıcı kılavuzu kayıp" + +#: ../app/widgets/gimphelp.c:621 +msgid "_Read Online" +msgstr "Çevrimiçi _Oku" + +#: ../app/widgets/gimphelp.c:645 +msgid "The GIMP user manual is not installed on your computer." +msgstr "GIMP kullanıcı kılavuzu bilgisayarınızda yüklü değil." + +#: ../app/widgets/gimphelp.c:648 +msgid "" +"You may either install the additional help package or change your " +"preferences to use the online version." +msgstr "" +"Eklenebilir yardım paketini kurabilirsiniz ya da yeğlenenlerinizi " +"değiştirerek çevrimiçi sürümü kullanabilirsiniz." + +#: ../app/widgets/gimphistogrameditor.c:99 +msgid "Mean:" +msgstr "Ortalama:" + +#: ../app/widgets/gimphistogrameditor.c:100 +msgid "Std dev:" +msgstr "Standart Sapma:" + +#: ../app/widgets/gimphistogrameditor.c:101 +msgid "Median:" +msgstr "Ortanca:" + +#: ../app/widgets/gimphistogrameditor.c:102 +msgid "Pixels:" +msgstr "Piksel:" + +#: ../app/widgets/gimphistogrameditor.c:103 +msgid "Count:" +msgstr "Adet:" + +#: ../app/widgets/gimphistogrameditor.c:104 +msgid "Percentile:" +msgstr "Yüzde:" + +#: ../app/widgets/gimphistogrameditor.c:122 +msgid "Channel:" +msgstr "Kanal:" + +#: ../app/widgets/gimpimageprofileview.c:200 +msgid "Querying..." +msgstr "Sorguluyor..." + +#: ../app/widgets/gimpimagepropview.c:122 +msgid "Pixel dimensions:" +msgstr "Piksel ölçüleri:" + +#: ../app/widgets/gimpimagepropview.c:125 +msgid "Print size:" +msgstr "Yazdırma boyutu:" + +#: ../app/widgets/gimpimagepropview.c:128 +msgid "Resolution:" +msgstr "Çözünürlük:" + +#: ../app/widgets/gimpimagepropview.c:131 +msgid "Color space:" +msgstr "Renk uzayı:" + +#: ../app/widgets/gimpimagepropview.c:136 +msgid "File Name:" +msgstr "Dosya Adı:" + +#: ../app/widgets/gimpimagepropview.c:142 +msgid "File Size:" +msgstr "Dosya Boyutu:" + +#: ../app/widgets/gimpimagepropview.c:145 +msgid "File Type:" +msgstr "Dosya Türü:" + +#: ../app/widgets/gimpimagepropview.c:150 +msgid "Size in memory:" +msgstr "Bellekte kapladığı yer:" + +#: ../app/widgets/gimpimagepropview.c:153 +msgid "Undo steps:" +msgstr "Geri alma adımları:" + +#: ../app/widgets/gimpimagepropview.c:156 +msgid "Redo steps:" +msgstr "Yineleme adımları:" + +#: ../app/widgets/gimpimagepropview.c:161 +msgid "Number of pixels:" +msgstr "Benek sayısı:" + +#: ../app/widgets/gimpimagepropview.c:164 +msgid "Number of layers:" +msgstr "Katman sayısı:" + +#: ../app/widgets/gimpimagepropview.c:167 +msgid "Number of channels:" +msgstr "Kanal sayısı:" + +#: ../app/widgets/gimpimagepropview.c:170 +msgid "Number of paths:" +msgstr "Yol sayısı:" + +#: ../app/widgets/gimpimagepropview.c:471 +#, c-format +msgid "pixels/%s" +msgstr "piksel/%s" + +#: ../app/widgets/gimpimagepropview.c:473 +#, c-format +msgid "%g × %g %s" +msgstr "%g × %g %s" + +#: ../app/widgets/gimpimagepropview.c:494 +msgid "colors" +msgstr "renk" + +#: ../app/widgets/gimpitemtreeview.c:980 +msgid "Set Item Exclusive Visible" +msgstr "Öğeyi Özel Görünür Ayarla" + +#: ../app/widgets/gimpitemtreeview.c:988 +msgid "Set Item Exclusive Linked" +msgstr "Öğeyi Özel Bağlanmış Ayarla" + +#: ../app/widgets/gimplayertreeview.c:218 +msgid "Reorder Layer" +msgstr "Katmanı Yeniden Sırala" + +#: ../app/widgets/gimplayertreeview.c:306 +msgid "Lock alpha channel" +msgstr "Görünür kanalını kilitle" + +#: ../app/widgets/gimplayertreeview.c:318 +msgid "Lock:" +msgstr "Kilitle:" + +#: ../app/widgets/gimplayertreeview.c:841 +msgid "Empty Layer" +msgstr "Boş Katman" + +#: ../app/widgets/gimpmenudock.c:159 +msgid "Auto" +msgstr "Otomatik" + +#: ../app/widgets/gimpmenudock.c:170 +msgid "" +"When enabled the dialog automatically follows the image you are working on." +msgstr "" +"Etkinleştirildiğinde iletişim kutusu otomatik olarak çalıştığınız görüntüyü " +"takip eder." + +#: ../app/widgets/gimpmessagebox.c:443 +#, c-format +msgid "Message repeated %d times." +msgstr "İleti %d kere yinelendi." + +#: ../app/widgets/gimpmessagebox.c:445 +msgid "Message repeated once." +msgstr "Mesaj bir kez tekrarlandı." + +#: ../app/widgets/gimppaletteeditor.c:255 +#: ../app/widgets/gimppaletteeditor.c:741 +msgid "Undefined" +msgstr "Tanımsız" + +#: ../app/widgets/gimppaletteeditor.c:263 +msgid "Columns:" +msgstr "Sütunlar:" + +#: ../app/widgets/gimpprofilechooserdialog.c:137 +msgid "ICC color profile (*.icc, *.icm)" +msgstr "ICC renk profili (*.icc, *.icm)" + +#: ../app/widgets/gimpprogressdialog.c:220 +msgid "Progress" +msgstr "İşlem" + +#: ../app/widgets/gimpselectiondata.c:242 +#, c-format +msgid "" +"The filename '%s' couldn't be converted to a valid URI:\n" +"\n" +"%s" +msgstr "" +"'%s' dosya adı geçerli bir adrese dönüştürelemedi:\n" +"\n" +"%s" + +#: ../app/widgets/gimpselectiondata.c:246 +msgid "Invalid UTF-8" +msgstr "Geçersiz UTF-8" + +#: ../app/widgets/gimpsettingsbox.c:239 +msgid "Pick a setting from the list" +msgstr "Listeden bir ayar seçin" + +#: ../app/widgets/gimpsettingsbox.c:260 +msgid "Add settings to favorites" +msgstr "Ayarları favorilerinize ekleyin" + +#: ../app/widgets/gimpsettingsbox.c:288 +msgid "_Import Settings from File..." +msgstr "Dosyadan Ayarları _İçe Aktar..." + +#: ../app/widgets/gimpsettingsbox.c:294 +msgid "_Export Settings to File..." +msgstr "Ayarları (Dosyaya) _Dışa Aktar..." + +#: ../app/widgets/gimpsettingsbox.c:301 +msgid "_Manage Settings..." +msgstr "Ayarları _Yönet..." + +#: ../app/widgets/gimpsettingsbox.c:588 +msgid "Add Settings to Favorites" +msgstr "Ayarları Favorilere Ekle" + +#: ../app/widgets/gimpsettingsbox.c:591 +msgid "Enter a name for the settings" +msgstr "Ayarları için bir ad girin" + +#: ../app/widgets/gimpsettingsbox.c:592 +msgid "Saved Settings" +msgstr "Kaydedilmiş Ayarlar" + +#: ../app/widgets/gimpsettingsbox.c:627 +msgid "Manage Saved Settings" +msgstr "Kaydedilmiş Ayarları Yönet" + +#: ../app/widgets/gimpsettingseditor.c:174 +msgid "Import settings from a file" +msgstr "Bir dosyadan ayarları içe aktar" + +#: ../app/widgets/gimpsettingseditor.c:183 +msgid "Export the selected settings to a file" +msgstr "Seçilmiş ayarları (bir dosyaya) dışa aktar" + +#: ../app/widgets/gimpsettingseditor.c:192 +msgid "Delete the selected settings" +msgstr "Seçilmiş ayarları sil" + +#: ../app/widgets/gimpsizebox.c:464 +#, c-format +msgid "%d × %d ppi" +msgstr "%d × %d ppi" + +#: ../app/widgets/gimpsizebox.c:466 +#, c-format +msgid "%d ppi" +msgstr "%d ppi" + +#: ../app/widgets/gimpstrokeeditor.c:185 +msgid "Line width:" +msgstr "Çizgi genişliği:" + +#: ../app/widgets/gimpstrokeeditor.c:202 +msgid "_Line Style" +msgstr "Çizgi _Biçemi" + +#: ../app/widgets/gimpstrokeeditor.c:221 +msgid "_Cap style:" +msgstr "_Tepe biçemi:" + +#: ../app/widgets/gimpstrokeeditor.c:227 +msgid "_Join style:" +msgstr "_Birleştirme biçemi:" + +#: ../app/widgets/gimpstrokeeditor.c:232 +msgid "_Miter limit:" +msgstr "_Köşe sınırı:" + +#: ../app/widgets/gimpstrokeeditor.c:239 +msgid "Dash pattern:" +msgstr "Çizgi deseni:" + +#: ../app/widgets/gimpstrokeeditor.c:302 +msgid "Dash _preset:" +msgstr "Çizgi _önayarı:" + +#: ../app/widgets/gimpstrokeeditor.c:323 +msgid "_Antialiasing" +msgstr "_Yazıtipi Yumuşatma" + +#: ../app/widgets/gimptemplateeditor.c:180 +#, c-format +msgid "%p" +msgstr "%p" + +#: ../app/widgets/gimptemplateeditor.c:255 +msgid "_Advanced Options" +msgstr "_Gelişmiş Seçenekler" + +#: ../app/widgets/gimptemplateeditor.c:362 +msgid "Color _space:" +msgstr "Renk _uzayı:" + +#: ../app/widgets/gimptemplateeditor.c:370 +msgid "_Fill with:" +msgstr "_Doldur:" + +#: ../app/widgets/gimptemplateeditor.c:380 +msgid "Comme_nt:" +msgstr "_Açıklama:" + +#: ../app/widgets/gimptemplateeditor.c:530 +msgid "_Name:" +msgstr "İsi_m:" + +#: ../app/widgets/gimptemplateeditor.c:543 +msgid "_Icon:" +msgstr "_Simge:" + +#: ../app/widgets/gimptemplateeditor.c:671 +#, c-format +msgid "%d × %d ppi, %s" +msgstr "%d × %d ppi, %s" + +#: ../app/widgets/gimptemplateeditor.c:673 +#, c-format +msgid "%d ppi, %s" +msgstr "%d ppi, %s" + +#: ../app/widgets/gimptexteditor.c:188 +msgid "_Language:" +msgstr "_Dil:" + +#: ../app/widgets/gimptexteditor.c:234 +msgid "_Use selected font" +msgstr "_Seçili yazıtipini kullan" + +#: ../app/widgets/gimpthumbbox.c:344 +#, c-format +msgid "" +"Click to update preview\n" +"%s%sClick to force update even if preview is up-to-date" +msgstr "" +"Görüntüyü güncelleştirmek için tıklayın\n" +"%s%sGörüntü güncel olsa bile hızlı yenileme için tıklayın" + +#: ../app/widgets/gimpthumbbox.c:362 +msgid "Pr_eview" +msgstr "Ön_izleme" + +#: ../app/widgets/gimpthumbbox.c:417 ../app/widgets/gimpthumbbox.c:481 +msgid "No selection" +msgstr "Seçim yok" + +#: ../app/widgets/gimpthumbbox.c:609 ../app/widgets/gimpthumbbox.c:630 +#, c-format +msgid "Thumbnail %d of %d" +msgstr "Küçük Önizleme %d of %d" + +#: ../app/widgets/gimpthumbbox.c:743 ../app/widgets/gimpthumbbox.c:753 +msgid "Creating preview..." +msgstr "Önizleme oluşturuluyor..." + +#: ../app/widgets/gimptoolbox-color-area.c:80 +msgid "" +"Foreground & background colors.\n" +"The black and white squares reset colors.\n" +"The arrows swap colors.\n" +"Click to open the color selection dialog." +msgstr "" +"Önalan ve artalan renkleri.\n" +"Siyah ve beyaz karelerin sıfırlama renkleri.\n" +"Okların takas renkleri.\n" +"Renk seçme kutusunu açmak için tıklayın." + +#: ../app/widgets/gimptoolbox-color-area.c:141 +msgid "Change Foreground Color" +msgstr "Önplan Resmini Değiştir" + +#: ../app/widgets/gimptoolbox-color-area.c:146 +msgid "Change Background Color" +msgstr "Arkaplan Resmini Değiştir" + +#: ../app/widgets/gimptoolbox-image-area.c:112 +#: ../app/widgets/gimptoolbox-image-area.c:117 +msgid "" +"The active image.\n" +"Click to open the Image Dialog." +msgstr "" +"Etkin görüntü.\n" +"Görüntü Kutusunu açmak için tıklayın." + +#: ../app/widgets/gimptoolbox-image-area.c:114 +msgid "Drag to an XDS enabled file-manager to save the image." +msgstr "" +"Etkin XDS olan bir dosya yöneticisine görüntüyü kaydetmek için sürükleyin." + +#: ../app/widgets/gimptoolbox-indicator-area.c:150 +msgid "" +"The active brush.\n" +"Click to open the Brush Dialog." +msgstr "" +"Etkin fırça.\n" +"Fırça Kutusu'nu açmak için tıklayın." + +#: ../app/widgets/gimptoolbox-indicator-area.c:182 +msgid "" +"The active pattern.\n" +"Click to open the Pattern Dialog." +msgstr "" +"Etkin desen.\n" +"Desen Kutusu'nu açmak için tıklayın." + +#: ../app/widgets/gimptoolbox-indicator-area.c:214 +msgid "" +"The active gradient.\n" +"Click to open the Gradient Dialog." +msgstr "" +"Etkin renk geçişi.\n" +"Renk Geçişi Kutusu'nu açmak için tıklayın." + +#: ../app/widgets/gimptooloptionseditor.c:165 +msgid "Save options to..." +msgstr "Seçenekleri kaydet..." + +#: ../app/widgets/gimptooloptionseditor.c:173 +msgid "Restore options from..." +msgstr "Seçenekleri geri yükle..." + +#: ../app/widgets/gimptooloptionseditor.c:181 +msgid "Delete saved options..." +msgstr "Kayıtlı seçenekleri sil..." + +#: ../app/widgets/gimptooloptionseditor.c:480 +#, c-format +msgid "Error saving tool options presets: %s" +msgstr "Araç seçenekleri önayarları kaydedilirken hata: %s" + +#: ../app/widgets/gimpuimanager.c:738 +msgid "Your GIMP installation is incomplete:" +msgstr "GIMP kurulumu tamamlanamadı:" + +#: ../app/widgets/gimpuimanager.c:740 +msgid "Plase make sure the menu XML files are correctly installed." +msgstr "Lütfen XML dosyalarının doğru yüklendiğine emin olun." + +#: ../app/widgets/gimpuimanager.c:746 +#, c-format +msgid "There was an error parsing the menu definition from %s: %s" +msgstr "%s içinden menü tanımı ayrıştırılırken bir hata meydana geldi: %s" + +#: ../app/widgets/gimpundoeditor.c:270 +msgid "[ Base Image ]" +msgstr "[ Temel Resim ]" + +#: ../app/widgets/gimpvectorstreeview.c:110 +msgid "Reorder path" +msgstr "Yolu yeniden düzenle" + +#: ../app/widgets/gimpvectorstreeview.c:253 +msgid "Empty Path" +msgstr "Boş Yol" + +#: ../app/widgets/gimpviewablebox.c:81 +msgid "Open the brush selection dialog" +msgstr "Fırça seçim kutusunu aç" + +#: ../app/widgets/gimpviewablebox.c:138 +msgid "Open the pattern selection dialog" +msgstr "Desen seçim kutusunu aç" + +#: ../app/widgets/gimpviewablebox.c:204 +msgid "Open the gradient selection dialog" +msgstr "Renk geçişi seçim kutusunu aç" + +#: ../app/widgets/gimpviewablebox.c:224 +msgid "Reverse" +msgstr "Ters" + +#: ../app/widgets/gimpviewablebox.c:306 +msgid "Open the palette selection dialog" +msgstr "Palet seçim kutusunu aç" + +#: ../app/widgets/gimpviewablebox.c:364 +msgid "Open the font selection dialog" +msgstr "Yazıtipi seçim penceresini aç" + +#: ../app/widgets/gimpwidgets-utils.c:608 +#, c-format +msgid "%s (try %s)" +msgstr "%s (%s dene)" + +#: ../app/widgets/gimpwidgets-utils.c:608 +#, c-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#: ../app/widgets/gimpwidgets-utils.c:612 +#, c-format +msgid "%s (try %s, %s)" +msgstr "%s (%s, %s dene)" + +#: ../app/widgets/gimpwidgets-utils.c:616 +#, c-format +msgid "%s (try %s, %s, %s)" +msgstr "%s (%s, %s, %s dene)" + +#: ../app/widgets/gimpwidgets-utils.c:882 +#, c-format +msgid "Invalid UTF-8 data in file '%s'." +msgstr "'%s' dosyası içinde geçersiz UTF-8 verisi." + +#: ../app/widgets/widgets-enums.c:23 +msgid "Foreground" +msgstr "Önplan" + +#: ../app/widgets/widgets-enums.c:83 +msgid "Pixel" +msgstr "Piksel" + +#: ../app/widgets/widgets-enums.c:85 +msgid "HSV" +msgstr "HSV" + +#: ../app/widgets/widgets-enums.c:86 +msgid "CMYK" +msgstr "CMYK" + +#: ../app/widgets/widgets-enums.c:115 +msgid "Pick only" +msgstr "Sadece al" + +#: ../app/widgets/widgets-enums.c:116 +msgid "Set foreground color" +msgstr "Önplan rengini tanımla" + +#: ../app/widgets/widgets-enums.c:117 +msgid "Set background color" +msgstr "Arkaplan rengini tanımla" + +#: ../app/widgets/widgets-enums.c:118 +msgid "Add to palette" +msgstr "Palete ekle" + +#: ../app/widgets/widgets-enums.c:173 +msgid "Black & white" +msgstr "Siyah ve beyaz" + +#: ../app/widgets/widgets-enums.c:174 +msgid "Fancy" +msgstr "Süslü" + +#: ../app/widgets/widgets-enums.c:201 +msgid "GIMP help browser" +msgstr "GIMP yardım gezgini" + +#: ../app/widgets/widgets-enums.c:202 +msgid "Web browser" +msgstr "Web tarayıcı" + +#: ../app/widgets/widgets-enums.c:229 +msgid "Linear histogram" +msgstr "Doğrusal histogram" + +#: ../app/widgets/widgets-enums.c:230 +msgid "Logarithmic histogram" +msgstr "Logaritmik histogram" + +#: ../app/widgets/widgets-enums.c:263 +msgid "Icon" +msgstr "Simge" + +#: ../app/widgets/widgets-enums.c:264 +msgid "Current status" +msgstr "Geçerli durum" + +#: ../app/widgets/widgets-enums.c:266 +msgid "Description" +msgstr "Açıklama" + +#: ../app/widgets/widgets-enums.c:267 +msgid "Icon & text" +msgstr "Simge ve metin" + +#: ../app/widgets/widgets-enums.c:268 +msgid "Icon & desc" +msgstr "Simge ve açıklama" + +#: ../app/widgets/widgets-enums.c:269 +msgid "Status & text" +msgstr "Durum ve metin" + +#: ../app/widgets/widgets-enums.c:270 +msgid "Status & desc" +msgstr "Durum ve betimleme" + +#: ../app/widgets/widgets-enums.c:298 +msgid "Normal window" +msgstr "Normal pencere" + +#: ../app/widgets/widgets-enums.c:299 +msgid "Utility window" +msgstr "Yardımcı pencere" + +#: ../app/widgets/widgets-enums.c:300 +msgid "Keep above" +msgstr "Üzerinde tut" + +#: ../app/xcf/xcf-load.c:277 +msgid "" +"This XCF file is corrupt! I have loaded as much of it as I can, but it is " +"incomplete." +msgstr "" +"Bu XCF dosyası bozulmuş! Yapabildiğim kadar çok yükledim, ama tamamlanamadı." + +#: ../app/xcf/xcf-load.c:286 +#, c-format +msgid "" +"This XCF file is corrupt! I could not even salvage any partial image data " +"from it." +msgstr "" +"Bu XCF dosyası bozulmuş! Herhangi bir kısmi görüntü verisi kurtaramadım." + +#: ../app/xcf/xcf-load.c:324 +msgid "" +"XCF warning: version 0 of XCF file format\n" +"did not save indexed colormaps correctly.\n" +"Substituting grayscale map." +msgstr "" +"XCF uyarısı: XCF dosya biçiminin 0. sürümü\n" +"indisli renk haritalarını düzgün saklamaz.\n" +"Griölçekli palet ile değiştiriliyor." + +#: ../app/xcf/xcf-read.c:109 +msgid "Invalid UTF-8 string in XCF file" +msgstr "XCF dosyasında geçersiz UTF-8 dizge." + +#: ../app/xcf/xcf-write.c:87 +#, c-format +msgid "Error writing XCF: %s" +msgstr "XCF dosyasına yazılırken bir hata oldu: %s" + +#: ../app/xcf/xcf-seek.c:44 ../app/xcf/xcf-seek.c:61 ../app/xcf/xcf-seek.c:72 +#, c-format +msgid "Could not seek in XCF file: %s" +msgstr "XCF dosyası açılamadı: %s" + +#: ../app/xcf/xcf.c:99 ../app/xcf/xcf.c:167 +msgid "GIMP XCF image" +msgstr "GIMP XCF dosyası" + +#: ../app/xcf/xcf.c:271 +#, c-format +msgid "Opening '%s'" +msgstr "'%s' açılıyor" + +#: ../app/xcf/xcf.c:313 +#, c-format +msgid "XCF error: unsupported XCF file version %d encountered" +msgstr "XCF hatası: desteklenmeyen %d XCF dosya sürümüyle karşılaşıldı" + +#: ../app/xcf/xcf.c:383 +#, c-format +msgid "Saving '%s'" +msgstr "'%s' kaydediliyor" + +#: ../app/xcf/xcf.c:403 +#, c-format +msgid "Error saving XCF file: %s" +msgstr "XCF dosyası kaydedilirken bir hata oldu: %s" + +#: ../desktop/gimp.desktop.in.in.h:1 +msgid "Create images and edit photographs" +msgstr "Resim ya da fotoğrafları oluşturun ve düzenleyin" + +#: ../desktop/gimp.desktop.in.in.h:2 +msgid "GIMP Image Editor" +msgstr "GIMP Görüntü Düzenleyici" + +#: ../desktop/gimp.desktop.in.in.h:3 +msgid "Image Editor" +msgstr "Resim Düzenleyici" + +#: ../tools/gimp-remote.c:65 +msgid "Use a running GIMP only, never start a new one" +msgstr "Sadece bir tane çalışan GIMP kullan, yenisini başlatma" + +#: ../tools/gimp-remote.c:70 +msgid "Only check if GIMP is running, then quit" +msgstr "Sadece GIMP çalışıyor mu diye bak, sonra çık" + +#: ../tools/gimp-remote.c:76 +msgid "Print X window ID of GIMP toolbox window, then quit" +msgstr "" +"GIMP araç kutusu penceresinin X penceresi kimliğini yazdır, sonra çık" + +#: ../tools/gimp-remote.c:82 +msgid "Start GIMP without showing the startup window" +msgstr "GIMP'i başlangıç penceresi olmadan başlat" + +#: ../tools/gimp-remote-x11.c:67 +msgid "Could not connect to GIMP." +msgstr "GIMP'e bağlanılamadı." + +#: ../tools/gimp-remote-x11.c:68 +msgid "Make sure that the Toolbox is visible!" +msgstr "Araç kutusunun görünür olduğundan emin olun!" + +#. if execv and execvp return, there was an error +#: ../tools/gimp-remote-x11.c:248 +#, c-format +msgid "Couldn't start '%s': %s" +msgstr "'%s' başlatılamadı: %s" diff --git a/multimedia/graphics/gimp/gimp/pspec.xml b/multimedia/graphics/gimp/gimp/pspec.xml new file mode 100644 index 0000000000..388797d8ce --- /dev/null +++ b/multimedia/graphics/gimp/gimp/pspec.xml @@ -0,0 +1,1206 @@ + + + + + gimp + http://www.gimp.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 +

GNU Image Manipulation Program + GIMP is a mature image editor with many advanced features and plugin support. + http://download.gimp.org/pub/gimp/v2.8/gimp-2.8.14.tar.bz2 + + gtk-doc + atk-devel + xdg-utils + pkgconfig + tiff-devel + zlib-devel + lcms-devel + gegl-devel + babl-devel + dbus-devel + gtk2-devel + aalib-devel + bzip2-devel + pango-devel + cairo-devel + glib2-devel + libwmf-devel + jasper-devel + libX11-devel + libmng-devel + libpng-devel + libXpm-devel + libXmu-devel + libXext-devel + librsvg-devel + libexif-devel + alsa-lib-devel + freetype-devel + dbus-glib-devel + libXfixes-devel + libgudev1-devel + libXcursor-devel + fontconfig-devel + python-gtk-devel + gdk-pixbuf-devel + ghostscript-devel + webkit-gtk2-devel + poppler-glib-devel + libjpeg-turbo-devel + + + + + gimp-devel + data + data:doc + Development header and documents for GIMP + + gtk2-devel + cairo-devel + gdk-pixbuf-devel + gimp + + + /usr/include + /usr/share/gtk-doc + /usr/lib/pkgconfig + /usr/share/aclocal + + + + + gimp + app:gui + + atk + gegl + babl + dbus + gtk2 + tiff + zlib + lcms + aalib + bzip2 + pango + cairo + glib2 + libwmf + libXpm + libmng + libpng + libXmu + jasper + libX11 + libXext + librsvg + libexif + alsa-lib + freetype + dbus-glib + libXfixes + libgudev1 + xdg-utils + libXcursor + fontconfig + python-gtk + gdk-pixbuf + ghostscript + webkit-gtk2 + poppler-glib + libjpeg-turbo + + + /etc + /usr/lib + /usr/share/man + /usr/share/doc + /usr/bin + /usr/share/gimp + /usr/share/icons + /usr/share/appdata + /usr/share/mime-info + /usr/share/applications + /usr/share/application-registry + + + gimp-splash-colors.png + + + + + gimp-i18n-tr + locale:tr + multimedia.graphics.gimp.l10n + Gimp translation files for Turkish + + gimp + + + /usr/share/locale/tr + + + + + gimp-i18n-ast + locale:ast + multimedia.graphics.gimp.l10n + Gimp translation files for Asturian + + gimp + + + /usr/share/locale/ast + + + + + gimp-i18n-my + locale:my + multimedia.graphics.gimp.l10n + Gimp translation files for Burmese + + gimp + + + /usr/share/locale/my + + + + + gimp-i18n-nds + locale:nds + multimedia.graphics.gimp.l10n + Gimp translation files for Low Saxon + + gimp + + + /usr/share/locale/nds + + + + + gimp-i18n-el + locale:el + multimedia.graphics.gimp.l10n + Gimp translation files for Greek + + gimp + + + /usr/share/locale/el + + + + + gimp-i18n-gu + locale:gu + multimedia.graphics.gimp.l10n + Gimp translation files for Gujarati + + gimp + + + /usr/share/locale/gu + + + + + gimp-i18n-be + locale:be + multimedia.graphics.gimp.l10n + Gimp translation files for Belarusian + + gimp + + + /usr/share/locale/be + + + + + gimp-i18n-vi + locale:vi + multimedia.graphics.gimp.l10n + Gimp translation files for Vietnamese + + gimp + + + /usr/share/locale/vi + + + + + gimp-i18n-ca + locale:ca + multimedia.graphics.gimp.l10n + Gimp translation files for Catalan + + gimp + + + /usr/share/locale/ca + + + + + gimp-i18n-eo + locale:eo + multimedia.graphics.gimp.l10n + Gimp translation files for Esperanto + + gimp + + + /usr/share/locale/eo + + + + + gimp-i18n-cs + locale:cs + multimedia.graphics.gimp.l10n + Gimp translation files for Czech + + gimp + + + /usr/share/locale/cs + + + + + gimp-i18n-ca_valencia + locale:ca@valencia + multimedia.graphics.gimp.l10n + Gimp translation files for Catalan (Valencia) + + gimp + + + /usr/share/locale/ca@valencia + + + + + gimp-i18n-ar + locale:ar + multimedia.graphics.gimp.l10n + Gimp translation files for Arabic + + gimp + + + /usr/share/locale/ar + + + + + gimp-i18n-km + locale:km + multimedia.graphics.gimp.l10n + Gimp translation files for Khmer + + gimp + + + /usr/share/locale/km + + + + + gimp-i18n-ga + locale:ga + multimedia.graphics.gimp.l10n + Gimp translation files for Irish Gaelic + + gimp + + + /usr/share/locale/ga + + + + + gimp-i18n-fi + locale:fi + multimedia.graphics.gimp.l10n + Gimp translation files for Finnish + + gimp + + + /usr/share/locale/fi + + + + + gimp-i18n-eu + locale:eu + multimedia.graphics.gimp.l10n + Gimp translation files for Basque + + gimp + + + /usr/share/locale/eu + + + + + gimp-i18n-et + locale:et + multimedia.graphics.gimp.l10n + Gimp translation files for Estonian + + gimp + + + /usr/share/locale/et + + + + + gimp-i18n-xh + locale:xh + multimedia.graphics.gimp.l10n + Gimp translation files for Xhosa + + gimp + + + /usr/share/locale/xh + + + + + gimp-i18n-gl + locale:gl + multimedia.graphics.gimp.l10n + Gimp translation files for Galician + + gimp + + + /usr/share/locale/gl + + + + + gimp-i18n-id + locale:id + multimedia.graphics.gimp.l10n + Gimp translation files for Indonesian + + gimp + + + /usr/share/locale/id + + + + + gimp-i18n-es + locale:es + multimedia.graphics.gimp.l10n + Gimp translation files for Spanish + + gimp + + + /usr/share/locale/es + + + + + gimp-i18n-ru + locale:ru + multimedia.graphics.gimp.l10n + Gimp translation files for Russian + + gimp + + + /usr/share/locale/ru + + + + + gimp-i18n-rw + locale:rw + multimedia.graphics.gimp.l10n + Gimp translation files for Kinyarwanda + + gimp + + + /usr/share/locale/rw + + + + + gimp-i18n-nl + locale:nl + multimedia.graphics.gimp.l10n + Gimp translation files for Dutch + + gimp + + + /usr/share/locale/nl + + + + + gimp-i18n-nn + locale:nn + multimedia.graphics.gimp.l10n + Gimp translation files for Norwegian Nynorsk + + gimp + + + /usr/share/locale/nn + + + + + gimp-i18n-nb + locale:nb + multimedia.graphics.gimp.l10n + Gimp translation files for Norwegian Bookmal + + gimp + + + /usr/share/locale/nb + + + + + gimp-i18n-ne + locale:ne + multimedia.graphics.gimp.l10n + Gimp translation files for Nepali + + gimp + + + /usr/share/locale/ne + + + + + gimp-i18n-lt + locale:lt + multimedia.graphics.gimp.l10n + Gimp translation files for Lithuanian + + gimp + + + /usr/share/locale/lt + + + + + gimp-i18n-pa + locale:pa + multimedia.graphics.gimp.l10n + Gimp translation files for Punjabi + + gimp + + + /usr/share/locale/pa + + + + + gimp-i18n-ro + locale:ro + multimedia.graphics.gimp.l10n + Gimp translation files for Romanian + + gimp + + + /usr/share/locale/ro + + + + + gimp-i18n-en_GB + locale:en_GB + multimedia.graphics.gimp.l10n + Gimp translation files for British English + + gimp + + + /usr/share/locale/en_GB + + + + + gimp-i18n-yi + locale:yi + multimedia.graphics.gimp.l10n + Gimp translation files for Yi + + gimp + + + /usr/share/locale/yi + + + + + gimp-i18n-en_CA + locale:en_CA + multimedia.graphics.gimp.l10n + Gimp translation files for Catalan (en) + + gimp + + + /usr/share/locale/en_CA + + + + + gimp-i18n-fr + locale:fr + multimedia.graphics.gimp.l10n + Gimp translation files for French + + gimp + + + /usr/share/locale/fr + + + + + gimp-i18n-bg + locale:bg + multimedia.graphics.gimp.l10n + Gimp translation files for Bulgarian + + gimp + + + /usr/share/locale/bg + + + + + gimp-i18n-ms + locale:ms + multimedia.graphics.gimp.l10n + Gimp translation files for Malay + + gimp + + + /usr/share/locale/ms + + + + + gimp-i18n-pt_BR + locale:pt_BR + multimedia.graphics.gimp.l10n + Gimp translation files for Brazilian Portuguese + + gimp + + + /usr/share/locale/pt_BR + + + + + gimp-i18n-hr + locale:hr + multimedia.graphics.gimp.l10n + Gimp translation files for Croatian (Hrvatski) + + gimp + + + /usr/share/locale/hr + + + + + gimp-i18n-zh_TW + locale:zh_TW + multimedia.graphics.gimp.l10n + Gimp translation files for Chinese Traditional + + gimp + + + /usr/share/locale/zh_TW + + + + + gimp-i18n-ko + locale:ko + multimedia.graphics.gimp.l10n + Gimp translation files for Korean + + gimp + + + /usr/share/locale/ko + + + + + gimp-i18n-it + locale:it + multimedia.graphics.gimp.l10n + Gimp translation files for Italian + + gimp + + + /usr/share/locale/it + + + + + gimp-i18n-fa + locale:fa + multimedia.graphics.gimp.l10n + Gimp translation files for Farsi (Persian) + + gimp + + + /usr/share/locale/fa + + + + + gimp-i18n-dz + locale:dz + multimedia.graphics.gimp.l10n + Gimp translation files for Dzongkha + + gimp + + + /usr/share/locale/dz + + + + + gimp-i18n-sr_Latn + locale:sr@Latn + multimedia.graphics.gimp.l10n + Gimp translation files for Serbian Latin + + gimp + + + /usr/share/locale/sr@latin + + + + + gimp-i18n-da + locale:da + multimedia.graphics.gimp.l10n + Gimp translation files for Danish + + gimp + + + /usr/share/locale/da + + + + + gimp-i18n-ja + locale:ja + multimedia.graphics.gimp.l10n + Gimp translation files for Japanese + + gimp + + + /usr/share/locale/ja + + + + + gimp-i18n-he + locale:he + multimedia.graphics.gimp.l10n + Gimp translation files for Hebrew + + gimp + + + /usr/share/locale/he + + + + + gimp-i18n-pt + locale:pt + multimedia.graphics.gimp.l10n + Gimp translation files for Portuguese + + gimp + + + /usr/share/locale/pt + + + + + gimp-i18n-zh_CN + locale:zh_CN + multimedia.graphics.gimp.l10n + Gimp translation files for Chinese Simplified + + gimp + + + /usr/share/locale/zh_CN + + + + + gimp-i18n-sr + locale:sr + multimedia.graphics.gimp.l10n + Gimp translation files for Serbian + + gimp + + + /usr/share/locale/sr + + + + + gimp-i18n-oc + locale:oc + multimedia.graphics.gimp.l10n + Gimp translation files for Occitan + + gimp + + + /usr/share/locale/oc + + + + + gimp-i18n-sv + locale:sv + multimedia.graphics.gimp.l10n + Gimp translation files for Swedish + + gimp + + + /usr/share/locale/sv + + + + + gimp-i18n-mk + locale:mk + multimedia.graphics.gimp.l10n + Gimp translation files for Macedonian + + gimp + + + /usr/share/locale/mk + + + + + gimp-i18n-sk + locale:sk + multimedia.graphics.gimp.l10n + Gimp translation files for Slovak + + gimp + + + /usr/share/locale/sk + + + + + gimp-i18n-de + locale:de + multimedia.graphics.gimp.l10n + Gimp translation files for German + + gimp + + + /usr/share/locale/de + + + + + gimp-i18n-pl + locale:pl + multimedia.graphics.gimp.l10n + Gimp translation files for Polish + + gimp + + + /usr/share/locale/pl + + + + + gimp-i18n-uk + locale:uk + multimedia.graphics.gimp.l10n + Gimp translation files for Ukrainian + + gimp + + + /usr/share/locale/uk + + + + + gimp-i18n-sl + locale:sl + multimedia.graphics.gimp.l10n + Gimp translation files for Slovenian + + gimp + + + /usr/share/locale/sl + + + + + gimp-i18n-hu + locale:hu + multimedia.graphics.gimp.l10n + Gimp translation files for Hungarian + + gimp + + + /usr/share/locale/hu + + + + + gimp-i18n-tt + locale:tt + multimedia.graphics.gimp.l10n + Gimp translation files for Tatarish + + gimp + + + /usr/share/locale/tt + + + + + gimp-i18n-az + locale:az + multimedia.graphics.gimp.l10n + Gimp translation files for Azerbaijani + + gimp + + + /usr/share/locale/az + + + + + gimp-i18n-am + locale:am + multimedia.graphics.gimp.l10n + Gimp translation files for Amharic + + gimp + + + /usr/share/locale/am + + + + + gimp-i18n-is + locale:is + multimedia.graphics.gimp.l10n + Gimp translation files for Icelandic + + gimp + + + /usr/share/locale/is + + + + + gimp-i18n-lv + locale:lv + multimedia.graphics.gimp.l10n + Gimp translation files for Latvia + + gimp + + + /usr/share/locale/lv + + + + + gimp-i18n-th + locale:th + multimedia.graphics.gimp.l10n + Gimp translation files for Thai + + gimp + + + /usr/share/locale/th + + + + + gimp-i18n-ka + locale:ka + multimedia.graphics.gimp.l10n + Gimp translation files for Georgian + + gimp + + + /usr/share/locale/ka + + + + + gimp-i18n-hi + locale:hi + multimedia.graphics.gimp.l10n + Gimp translation files for Hindi + + gimp + + + /usr/share/locale/hi + + + + + gimp-i18n-zh_HK + locale:zh_HK + multimedia.graphics.gimp.l10n + Gimp translation files for Chinese Hong Kong + + gimp + + + /usr/share/locale/zh_HK + + + + + gimp-i18n-ml + locale:ml + multimedia.graphics.gimp.l10n + Gimp translation files for Malayalam + + gimp + + + /usr/share/locale/ml + + + + + gimp-i18n-ta + locale:ta + multimedia.graphics.gimp.l10n + Gimp translation files for Tamil + + gimp + + + /usr/share/locale/ta + + + + + gimp-i18n-kn + locale:kn + multimedia.graphics.gimp.l10n + Gimp translation files for Kannada + + gimp + + + /usr/share/locale/kn + + + + + gimp-i18n-si + locale:si + multimedia.graphics.gimp.l10n + Gimp translation files for Sinhala + + gimp + + + /usr/share/locale/si + + + + + gimp-i18n-kk + locale:kk + multimedia.graphics.gimp.l10n + Gimp translation files for Kazakh + + gimp + + + /usr/share/locale/kk + + + + + gimp-i18n-br + locale:br + multimedia.graphics.gimp.l10n + Gimp translation files for Breton + + gimp + + + /usr/share/locale/br + + + + gimp-i18n-te + locale:te + multimedia.graphics.gimp.l10n + Gimp translation files for Telugu + + gimp + + + /usr/share/locale/te + + + + gimp-i18n-csb + locale:csb + multimedia.graphics.gimp.l10n + Gimp translation files for Kashubian + + gimp + + + /usr/share/locale/csb + + + + gimp-i18n-gd + locale:gd + multimedia.graphics.gimp.l10n + Gimp translation files for Scottish Gaelic + + gimp + + + /usr/share/locale/gd + + + + + + 2015-02-21 + 2.8.14 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-19 + 2.8.10 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-02-27 + 2.8.10 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-12-13 + 2.8.10 + Release bump. + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-08-17 + 2.8.6 + Release bump. + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-06-23 + 2.8.6 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-01-16 + 2.8.4 + Updated + Osman Erkan + osman.erkan@pisilinux.org + + + 2012-08-25 + 2.8.2 + First release + Fatih Turgel + admins@pisilinux.org + + + diff --git a/multimedia/graphics/gimp/gimp/translations.xml b/multimedia/graphics/gimp/gimp/translations.xml new file mode 100644 index 0000000000..53e41f6046 --- /dev/null +++ b/multimedia/graphics/gimp/gimp/translations.xml @@ -0,0 +1,317 @@ + + + + gimp + Bir resim işleme programı + Piksel düzeyinde işlem yapılabilen gelişmiş bir grafik düzenleme programı + Programme de Manipulation d'Image GNU. + + + + gimp-devel + GIMP için geliştirme belgeleri ve başlık dosyaları + Documents et entêtes de développement pour GIMP. + + + + gimp-i18n-tr + Türkçe için GIMP yerelleştirme dosyaları + + + gimp-i18n-ast + Asturya dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-my + Burmese dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-nds + Aşağı Saxon dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-el + Yunanca için GIMP yerelleştirme dosyaları + + + gimp-i18n-gu + Gujarati dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-be + Belarusça için GIMP yerelleştirme dosyaları + + + gimp-i18n-vi + Viyetnamca için GIMP yerelleştirme dosyaları + + + gimp-i18n-ca + Katalanca için GIMP yerelleştirme dosyaları + + + gimp-i18n-eo + Esperanto için GIMP yerelleştirme dosyaları + + + gimp-i18n-cs + Çekçe için GIMP yerelleştirme dosyaları + + + gimp-i18n-ca_valencia + Valensiya Katalancası için GIMP yerelleştirme dosyaları + + + gimp-i18n-ar + Arapça için GIMP yerelleştirme dosyaları + + + gimp-i18n-km + Khmer dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-ga + Gaelik İrlandacası için GIMP yerelleştirme dosyaları + + + gimp-i18n-fi + Fince için GIMP yerelleştirme dosyaları + + + gimp-i18n-eu + Baskça için GIMP yerelleştirme dosyaları + + + gimp-i18n-et + Estonyaca için GIMP yerelleştirme dosyaları + + + gimp-i18n-xh + Xhosa dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-gl + Galiçya dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-id + Endonezyaca için GIMP yerelleştirme dosyaları + + + gimp-i18n-es + İspanyolca için GIMP yerelleştirme dosyaları + + + gimp-i18n-ru + Rusça için GIMP yerelleştirme dosyaları + + + gimp-i18n-rw + Kinyarwanda dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-nl + Hollandaca için GIMP yerelleştirme dosyaları + + + gimp-i18n-nn + Norveç Nynorsk dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-nb + Norveç Bookmal dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-ne + Nepali dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-lt + Litvanyaca için GIMP yerelleştirme dosyaları + + + gimp-i18n-pa + Punjabi dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-ro + Rumence için GIMP yerelleştirme dosyaları + + + gimp-i18n-en_GB + İngiliz İngilizcesi için GIMP yerelleştirme dosyaları + + + gimp-i18n-yi + Yi dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-en_CA + Katalanca için GIMP yerelleştirme dosyaları + + + gimp-i18n-fr + Fransızca için GIMP yerelleştirme dosyaları + + + gimp-i18n-bg + Bulgarca için GIMP yerelleştirme dosyaları + + + gimp-i18n-ms + Malay dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-pt_BR + Brezilya Portekizcesi için GIMP yerelleştirme dosyaları + + + gimp-i18n-hr + Hırvatça için GIMP yerelleştirme dosyaları + + + gimp-i18n-zh_TW + Geleneksel Çince için GIMP yerelleştirme dosyaları + + + gimp-i18n-ko + Korece için GIMP yerelleştirme dosyaları + + + gimp-i18n-it + İtalyanca için GIMP yerelleştirme dosyaları + + + gimp-i18n-fa + Farsça için GIMP yerelleştirme dosyaları + + + gimp-i18n-dz + Dzongkha dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-sr_Latn + Latin sırpça için GIMP yerelleştirme dosyaları + + + gimp-i18n-da + Danimarkaca için GIMP yerelleştirme dosyaları + + + gimp-i18n-ja + Japonca için GIMP yerelleştirme dosyaları + + + gimp-i18n-he + İbranice için GIMP yerelleştirme dosyaları + + + gimp-i18n-pt + Portekizce için GIMP yerelleştirme dosyaları + + + gimp-i18n-zh_CN + Basitleştirilmiş Çince için GIMP yerelleştirme dosyaları + + + gimp-i18n-sr + Sırpça için GIMP yerelleştirme dosyaları + + + gimp-i18n-oc + Occitan dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-sv + İsveççe için GIMP yerelleştirme dosyaları + + + gimp-i18n-mk + Makedonyaca için GIMP yerelleştirme dosyaları + + + gimp-i18n-sk + Slovakça için GIMP yerelleştirme dosyaları + + + gimp-i18n-de + Almanca için GIMP yerelleştirme dosyaları + + + gimp-i18n-pl + Lehçe için GIMP yerelleştirme dosyaları + + + gimp-i18n-uk + Ukraynaca için GIMP yerelleştirme dosyaları + + + gimp-i18n-sl + Slovence için GIMP yerelleştirme dosyaları + + + gimp-i18n-hu + Macarca için GIMP yerelleştirme dosyaları + + + gimp-i18n-tt + Tatarca için GIMP yerelleştirme dosyaları + + + gimp-i18n-az + Azerice için GIMP yerelleştirme dosyaları + + + gimp-i18n-am + Amharic dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-is + İzlanda dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-lv + Latvia dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-th + Thai dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-ka + Gürcüce için GIMP yerelleştirme dosyaları + + + gimp-i18n-hi + Hindi dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-zh_HK + Hong Kong Çincesi için GIMP yerelleştirme dosyaları + + + gimp-i18n-ml + Malayalam dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-ta + Tamil dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-kn + Kannada dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-si + Sinhala dili için GIMP yerelleştirme dosyaları + + + gimp-i18n-kk + Kazakça için GIMP yerelleştirme dosyaları + + + gimp-i18n-br + Breton dili için GIMP yerelleştirme dosyaları + + + From 499ee3aa5b3df629abd86b3dbeb15220cba06ca1 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 03:07:23 +0300 Subject: [PATCH 121/175] liblqr:moved into main repo for pisi 2.0 --- multimedia/misc/liblqr/actions.py | 24 ++++++++++ multimedia/misc/liblqr/pspec.xml | 62 +++++++++++++++++++++++++ multimedia/misc/liblqr/translations.xml | 13 ++++++ 3 files changed, 99 insertions(+) create mode 100644 multimedia/misc/liblqr/actions.py create mode 100644 multimedia/misc/liblqr/pspec.xml create mode 100644 multimedia/misc/liblqr/translations.xml diff --git a/multimedia/misc/liblqr/actions.py b/multimedia/misc/liblqr/actions.py new file mode 100644 index 0000000000..3dbc0069e1 --- /dev/null +++ b/multimedia/misc/liblqr/actions.py @@ -0,0 +1,24 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt. + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +WorkDir = "%s-1-%s" % (get.srcNAME(), get.srcVERSION()) + +def setup(): + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.install() + + pisitools.removeDir("/usr/share/man") + + pisitools.dodoc("AUTHORS", "COPYING*", "ChangeLog", "README", "NEWS") diff --git a/multimedia/misc/liblqr/pspec.xml b/multimedia/misc/liblqr/pspec.xml new file mode 100644 index 0000000000..750e05d35d --- /dev/null +++ b/multimedia/misc/liblqr/pspec.xml @@ -0,0 +1,62 @@ + + + + + liblqr + http://liblqr.wikidot.com + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + LGPLv3 + library + An easy to use C/C++ seam carving library + liblqr is a free, open source implementation of a seam carving algorithm which aims at resizing pictures non uniformly while preserving their features. + http://liblqr.wdfiles.com/local--files/en:download-page/liblqr-1-0.4.2.tar.bz2 + + + + liblqr + + /usr/lib + /usr/share/doc + + + + + liblqr-devel + Development files for liblqr + + liblqr + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-05-24 + 0.4.2 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-01-31 + 0.4.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2010-10-12 + 0.4.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/misc/liblqr/translations.xml b/multimedia/misc/liblqr/translations.xml new file mode 100644 index 0000000000..c3002a4c1b --- /dev/null +++ b/multimedia/misc/liblqr/translations.xml @@ -0,0 +1,13 @@ + + + + liblqr + Görüntü boyutlandırma kütüphanesi + liblqr, yeniden boyutlandırılacak resimlerin özelliklerini koruyan liquid rescale algoritmasının bir gerçeklemesidir. + + + + liblqr-devel + liblqr için geliştirme dosyaları + + From 18d9611c8c6a643f95bd666ae28c05e8a77bc8bb Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 03:08:04 +0300 Subject: [PATCH 122/175] openexr:moved into main repo for pisi 2.0 --- multimedia/misc/openexr/actions.py | 28 ++++++++ multimedia/misc/openexr/pspec.xml | 90 ++++++++++++++++++++++++ multimedia/misc/openexr/translations.xml | 24 +++++++ 3 files changed, 142 insertions(+) create mode 100644 multimedia/misc/openexr/actions.py create mode 100644 multimedia/misc/openexr/pspec.xml create mode 100644 multimedia/misc/openexr/translations.xml diff --git a/multimedia/misc/openexr/actions.py b/multimedia/misc/openexr/actions.py new file mode 100644 index 0000000000..80932f975f --- /dev/null +++ b/multimedia/misc/openexr/actions.py @@ -0,0 +1,28 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def setup(): + pisitools.flags.add("-pthread -I/usr/include/OpenEXR -I/usr/include/libdrm") + pisitools.ldflags.add("-lImath -lHalf -lIex -lIexMath -lIlmThread -lpthread") + shelltools.system("./bootstrap") + autotools.configure("--enable-shared \ + --disable-static") + +def build(): + autotools.make() + +def install(): + # documents and examples go to "/usr/share/OpenEXR" without these parameters + docdir = "/usr/share/doc/%s" % get.srcNAME() + examplesdir = "%s/examples" % docdir + autotools.rawInstall("DESTDIR=%s docdir=%s examplesdir=%s" % (get.installDIR(), docdir, examplesdir)) + + pisitools.dodoc("AUTHORS", "ChangeLog","NEWS", "README","LICENSE") diff --git a/multimedia/misc/openexr/pspec.xml b/multimedia/misc/openexr/pspec.xml new file mode 100644 index 0000000000..c6fbfad9cb --- /dev/null +++ b/multimedia/misc/openexr/pspec.xml @@ -0,0 +1,90 @@ + + + + + openexr + http://www.openexr.com + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + library + A high dynamic-range (HDR) image file format library + OpenEXR is a high dynamic-range (HDR) image file format for use in computer imaging applications. OpenEXR's features include: Higher dynamic range and color precision than existing 8- and 10-bit image file formats; support for 16-bit floating-point, 32-bit floating-point, and 32-bit integer pixels; multiple lossless image compression algorithms; extensibility. + http://download.savannah.nongnu.org/releases/openexr/openexr-2.1.0.tar.gz + + ilmbase-devel + + + + + openexr + + ilmbase + openexr-libs + + + /usr/bin + + + + + openexr-libs + OpenEXR runtime libraries + + ilmbase + + + /usr/lib/lib* + /usr/share/doc + + + + + openexr-docs + OpenEXR example files + + /usr/share/doc/openexr/examples + + + + + openexr-devel + Development files for openexr + + openexr + ilmbase-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/share/aclocal + + + + + + 2014-05-25 + 2.1.0 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-16 + 2.1.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2010-10-12 + 1.7.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/misc/openexr/translations.xml b/multimedia/misc/openexr/translations.xml new file mode 100644 index 0000000000..5c87c8c370 --- /dev/null +++ b/multimedia/misc/openexr/translations.xml @@ -0,0 +1,24 @@ + + + + openexr + OpenEXR, bilgisayar görüntüleme uygulamalarında kullanılan yüksek dinamik görüntü erimidir. OpenEXR özellikleri şunları içerir: Mevcut 8 ve 10 bitlik görüntü dosya formatlarından daha yüksek dinamik görüntü erişimi, 16 ya da 32 bit piksel desteği ve kayıpsız görüntü sıkıştırma algoritması + OpenEXR est un formation de fichier d'image à haut rang dynamique (HDR - High Dynamic Range) utilisable pour les applications d'imagerie sur ordinateur. OpenEXR inclus notamment : Un rang dynamique plus grand que les formats d'image existants de 8 et 10 bit; le support pour pixel de 16 bit à virgule flottante, 32 bit à virgule flottante et d'entiers à 32 bit; de nombreux algorithmes de compression d'image sans perte, le fait d'être extensible. + OpenEXR es un formato de archivo de imagen de alto fango dinámico (HDR) para uso en aplicaciones de computación de imágenes. OpenEXR contiene facilidades: rango dinámico y precisión de colores más alto que formatos existentes de 8- y 10-bit; soporta para punto flotante 16-bit, punto flotante 32-bit, y entero 32-bit pixels; algoritmos de compresión múltiple sin pérdida; extensible. + + + + openexr-devel + OpenEXR için geliştirme dosyaları + + + + openexr-libs + OpenEXR çalışma zamanı kitaplıkları + + + + openexr-docs + OpenEXR örnek dosyalar + + From d986ed269491e31390635d90961f4b9e6f609d9a Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 03:08:37 +0300 Subject: [PATCH 123/175] science:moved into main repo for pisi 2.0 --- science/misc/ilmbase/actions.py | 25 ++++ .../files/ilmbase-1.0.3-pkgconfig.patch | 8 ++ .../files/ilmbase-2.0.1-no_undefined.patch | 24 ++++ .../misc/ilmbase/files/ilmbase-IexMath.patch | 12 ++ science/misc/ilmbase/pspec.xml | 68 ++++++++++ science/misc/ilmbase/translations.xml | 18 +++ science/robotics/component.xml | 3 + science/robotics/opencv/actions.py | 66 ++++++++++ science/robotics/opencv/pspec.xml | 120 ++++++++++++++++++ science/robotics/opencv/translations.xml | 16 +++ 10 files changed, 360 insertions(+) create mode 100644 science/misc/ilmbase/actions.py create mode 100644 science/misc/ilmbase/files/ilmbase-1.0.3-pkgconfig.patch create mode 100644 science/misc/ilmbase/files/ilmbase-2.0.1-no_undefined.patch create mode 100644 science/misc/ilmbase/files/ilmbase-IexMath.patch create mode 100644 science/misc/ilmbase/pspec.xml create mode 100644 science/misc/ilmbase/translations.xml create mode 100644 science/robotics/component.xml create mode 100644 science/robotics/opencv/actions.py create mode 100644 science/robotics/opencv/pspec.xml create mode 100644 science/robotics/opencv/translations.xml diff --git a/science/misc/ilmbase/actions.py b/science/misc/ilmbase/actions.py new file mode 100644 index 0000000000..f2f348b5bd --- /dev/null +++ b/science/misc/ilmbase/actions.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def setup(): + shelltools.system("./bootstrap") + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def check(): + autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "LICENSE", "README") diff --git a/science/misc/ilmbase/files/ilmbase-1.0.3-pkgconfig.patch b/science/misc/ilmbase/files/ilmbase-1.0.3-pkgconfig.patch new file mode 100644 index 0000000000..bbc704fc4f --- /dev/null +++ b/science/misc/ilmbase/files/ilmbase-1.0.3-pkgconfig.patch @@ -0,0 +1,8 @@ +diff -up ilmbase-1.0.3/IlmBase.pc.in.pkgconfig ilmbase-1.0.3/IlmBase.pc.in +--- ilmbase-1.0.3/IlmBase.pc.in.pkgconfig 2012-07-17 18:27:25.000000000 -0500 ++++ ilmbase-1.0.3/IlmBase.pc.in 2012-09-08 11:11:15.913468312 -0500 +@@ -9,3 +9,4 @@ Description: Base math and exception lib + Version: @ILMBASE_VERSION@ + Libs: -L${libdir} -lImath -lHalf -lIex -lIexMath -lIlmThread @PTHREAD_LIBS@ + Cflags: @PTHREAD_CFLAGS@ -I${OpenEXR_includedir} ++Requires.private: gl glu diff --git a/science/misc/ilmbase/files/ilmbase-2.0.1-no_undefined.patch b/science/misc/ilmbase/files/ilmbase-2.0.1-no_undefined.patch new file mode 100644 index 0000000000..87a35c9d75 --- /dev/null +++ b/science/misc/ilmbase/files/ilmbase-2.0.1-no_undefined.patch @@ -0,0 +1,24 @@ +diff -up ilmbase-2.0.1/IlmThread/Makefile.am.no_undefined ilmbase-2.0.1/IlmThread/Makefile.am +--- ilmbase-2.0.1/IlmThread/Makefile.am.no_undefined 2013-06-18 14:51:38.000000000 -0500 ++++ ilmbase-2.0.1/IlmThread/Makefile.am 2013-08-28 21:04:25.793391766 -0500 +@@ -14,7 +14,7 @@ libIlmThread_la_LDFLAGS = -version-info + if LIB_SUFFIX_EXISTS + libIlmThread_la_LDFLAGS += -release @LIB_SUFFIX@ + endif +-libIlmThread_la_LIBADD = ../Iex/libIex.la ++libIlmThread_la_LIBADD = ../Iex/libIex.la $(PTHREAD_LIBS) + + libIlmThreadincludedir = $(includedir)/OpenEXR + +diff -up ilmbase-2.0.1/IlmThread/Makefile.in.no_undefined ilmbase-2.0.1/IlmThread/Makefile.in +--- ilmbase-2.0.1/IlmThread/Makefile.in.no_undefined 2013-06-18 14:55:24.000000000 -0500 ++++ ilmbase-2.0.1/IlmThread/Makefile.in 2013-08-28 21:04:55.395049371 -0500 +@@ -253,7 +253,7 @@ libIlmThread_la_SOURCES = IlmThreadPool. + + libIlmThread_la_LDFLAGS = -version-info @LIBTOOL_VERSION@ \ + -no-undefined $(am__append_1) +-libIlmThread_la_LIBADD = ../Iex/libIex.la ++libIlmThread_la_LIBADD = ../Iex/libIex.la $(PTHREAD_LIBS) + libIlmThreadincludedir = $(includedir)/OpenEXR + libIlmThreadinclude_HEADERS = IlmThreadPool.h IlmThread.h \ + IlmThreadSemaphore.h IlmThreadMutex.h \ diff --git a/science/misc/ilmbase/files/ilmbase-IexMath.patch b/science/misc/ilmbase/files/ilmbase-IexMath.patch new file mode 100644 index 0000000000..5460349667 --- /dev/null +++ b/science/misc/ilmbase/files/ilmbase-IexMath.patch @@ -0,0 +1,12 @@ +--- IexMath/IexMathFpu.cpp.orig 2012-07-26 20:51:55.000000000 +0200 ++++ IexMath/IexMathFpu.cpp 2012-10-04 15:30:47.000000000 +0200 +@@ -27,8 +27,7 @@ + #endif + + +-#ifdef HAVE_UCONTEXT_H +- ++#if defined(HAVE_UCONTEXT_H) && (defined(x86_64) || defined(i386_)) + + #include + #include diff --git a/science/misc/ilmbase/pspec.xml b/science/misc/ilmbase/pspec.xml new file mode 100644 index 0000000000..cda3640dde --- /dev/null +++ b/science/misc/ilmbase/pspec.xml @@ -0,0 +1,68 @@ + + + + + ilmbase + http://www.openexr.com + + PisiLinux Community + admins@pisilinux.org + + BSD + library + Several utility libraries from ILM (Industrial Light & Magic) used by OpenEXR + IlmBase are a set of utility libraries released by ILM, and used in their OpenEXR implementation. Included in this package you can find; libHalf (a class named Half for manipulating "half" values (16-bit floating point format) as if they were a built-in C++ data type), libIlmThread (a thread abstraction library on top of pthreads), libImath (a math library with support for matrices, 2d and 3d transformations, solvers for linear/quadratic/cubic equations and more), libIex (an exception handling library). + http://download.savannah.nongnu.org/releases/openexr/ilmbase-2.0.1.tar.gz + + ilmbase-2.0.1-no_undefined.patch + ilmbase-IexMath.patch + ilmbase-1.0.3-pkgconfig.patch + + + + + ilmbase + + /usr/lib + /usr/share/doc + + + + + ilmbase-devel + Development files for ilmbase + + ilmbase + mesa-glu-devel + mesa-devel + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-05-25 + 2.0.1 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-16 + 2.0.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2010-10-13 + 1.0.2 + First release + Gökcen Eraslan + admins@pisilinux.org + + + diff --git a/science/misc/ilmbase/translations.xml b/science/misc/ilmbase/translations.xml new file mode 100644 index 0000000000..dbaf17257a --- /dev/null +++ b/science/misc/ilmbase/translations.xml @@ -0,0 +1,18 @@ + + + + ilmbase + ILM (Industrial Light & Magic) şirketinden OpenEXR tarafından kullanılan çeşitli araç ve kitaplıklar + IlmBase, ILM tarafından yayınlanan ve onların OpenEXR gerçeklemelerinde kullandıkları kitaplıkları içerir. Bu pakette; libHalf ("yarım" değerleri (16-bit kayan noktalı sayı biçimi) C++ dilinin kendi tipleriymiş gibi kullanan Half sınıfı), libIlmThread (pthread üerine yazılmış bir soyutlama kitaplığı), libImath (matris, 2 ve 3 boyutlu dönüşümler, lineer, ikinci ve üçüncü dereceden denklem çözücü destekli matematik kitaplığı), libIex (istisna işleme kitaplığı) kitaplıklarını bulabilirsiniz. + + + + ilmbase-devel + ilmbase için geliştirme dosyaları + + + + ilmbase-devel + ilmbase için geliştirme dosyaları + + diff --git a/science/robotics/component.xml b/science/robotics/component.xml new file mode 100644 index 0000000000..8f17ce2ba6 --- /dev/null +++ b/science/robotics/component.xml @@ -0,0 +1,3 @@ + + science.robotics + diff --git a/science/robotics/opencv/actions.py b/science/robotics/opencv/actions.py new file mode 100644 index 0000000000..18ceff541f --- /dev/null +++ b/science/robotics/opencv/actions.py @@ -0,0 +1,66 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 2 +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import cmaketools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +shelltools.export("PYTHONDONTWRITEBYTECODE", "") + +def setup(): + + #temporary workaround for error: "'UINT64_C' was not declared in this scope" + shelltools.export("CXXFLAGS", "%s -D__STDC_CONSTANT_MACROS" % get.CXXFLAGS()) + + cmaketools.configure("-D CMAKE_BUILD_TYPE=Release \ + -D CMAKE_INSTALL_PREFIX=/usr \ + -D CMAKE_SKIP_RPATH=ON \ + DESTDIR=%s \ + -DBUILD_EXAMPLES=1 \ + -DBUILD_SWIG_PYTHON_SUPPORT=1 \ + -DINSTALL_C_EXAMPLES=1 \ + -DINSTALL_PYTHON_EXAMPLES=1 \ + -DINSTALL_OCTAVE_EXAMPLES=1 \ + -DWITH_FFMPEG=0 \ + -DWITH_UNICAP=0 \ + -DENABLE_OPENMP=0 \ + -DNEW_PYTHIN_SUPPORT=1 \ + -DOCTAVE_SUPPORT=0 \ + -DUSE_MMX=1 \ + -DUSE_SSE2=1 \ + -DUSE_SSE3=0 \ + -DUSE_SSE=1 \ + -DWITH_TBB=ON \ + -DWITH_EIGEN=ON \ + -DWITH_1394=1 \ + -DWITH_GSTREAMER=1 \ + -DWITH_GTK=1 \ + -DWITH_JASPER=1 \ + -DWITH_JPEG=1 \ + -DWITH_PNG=1 \ + -DWITH_TIFF=1 \ + -DWITH_V4L=1 \ + -DWITH_XINE=1 \ + -DCMAKE_SKIP_RPATH=1" % get.installDIR()) + # -DUSE_O3=OFF + # -DUSE_OMIT_FRAME_POINTER=OFF + + +def build(): + cmaketools.make("VERBOSE=1") + +def install(): + cmaketools.rawInstall("DESTDIR=%s" % get.installDIR()) + + # Move other docs and samples under standart doc dir + #doc_dir = "usr/share/doc/" + get.srcNAME() + + #pisitools.domove("usr/share/opencv/doc", doc_dir) + #pisitools.domove("usr/share/opencv/samples", doc_dir) + + pisitools.dodoc("README.md", "LICENSE", ) + diff --git a/science/robotics/opencv/pspec.xml b/science/robotics/opencv/pspec.xml new file mode 100644 index 0000000000..14e06cfa5a --- /dev/null +++ b/science/robotics/opencv/pspec.xml @@ -0,0 +1,120 @@ + + + + + opencv + http://opencv.willowgarage.com/wiki + + PisiLinux Community + admins@pisilinux.org + + BSD + library + Computer vision library + opencv is a programming library mainly aimed at the real time computer vision. Example applications are human-computer interaction, object identification, face recognition, motion tracking, mobile robotics. + https://github.com/Itseez/opencv/archive/2.4.9.tar.gz + + eigen + gtk2-devel + tiff-devel + libv4l-devel + openexr-libs + jasper-devel + lapack-devel + ilmbase-devel + openexr-devel + lapack-devel + xine-lib-devel + xine-lib-devel + libdc1394-devel + gstreamer-devel + intel-tbb-devel + libjpeg-turbo-devel + gst-plugins-base-devel + + + + + opencv + + gtk2 + tiff + jasper + libv4l + ilmbase + openexr + xine-lib + libdc1394 + intel-tbb + gstreamer + openexr-libs + gst-plugins-base + libjpeg-turbo + + + /usr/lib + /usr/bin + /usr/share/OpenCV + /usr/share/opencv + + + + + opencv-docs + Computer vision library documents and examples + + /usr/share/doc/opencv + /usr/share/doc/opencv/samples + + + + + opencv-devel + Development files for opencv + + opencv + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-05-15 + 2.4.9 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-11-20 + 2.4.7 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2013-08-20 + 2.4.6.1 + ignore xine-lib + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-07-13 + 2.4.6.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-08 + 2.4.3 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/science/robotics/opencv/translations.xml b/science/robotics/opencv/translations.xml new file mode 100644 index 0000000000..cac2bf2ba9 --- /dev/null +++ b/science/robotics/opencv/translations.xml @@ -0,0 +1,16 @@ + + + + opencv + Bilgisayarla görme kütüphanesi + Biblioteka funkcji do grafiki komputerowej w czasie rzeczywistym + opencv gerçek zamanlı bilgisayarla görme işlemleri için tasarlanmış bir kütüphanedir. İnsan-bilgisayar etkileşimi, nesne tanımlama, yüz tanıma, hareket izleme, mobil robotik, opencv'nin kullanıldığı bazı uygulama alanlarıdır. + OpenCV (Open Source Computer Vision) to biblioteka funkcji przeznaczonych głównie do grafiki komputerowej w czasie rzeczywistym. + + + + opencv-devel + opencv için geliştirme dosyaları + Pliki naglowkowe do opencv + + From 554af71490a23e1852e59de44dd2b680aeda943c Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 03:09:16 +0300 Subject: [PATCH 124/175] moved into main repo for pisi 2.0 --- system/base/component.xml | 3 + system/base/udev/actions.py | 157 +++++++++++++++ system/base/udev/comar/package.py | 29 +++ system/base/udev/files/tmpfiles.conf | 1 + system/base/udev/pspec.xml | 284 +++++++++++++++++++++++++++ system/base/udev/translations.xml | 35 ++++ 6 files changed, 509 insertions(+) create mode 100644 system/base/component.xml create mode 100644 system/base/udev/actions.py create mode 100644 system/base/udev/comar/package.py create mode 100644 system/base/udev/files/tmpfiles.conf create mode 100644 system/base/udev/pspec.xml create mode 100644 system/base/udev/translations.xml diff --git a/system/base/component.xml b/system/base/component.xml new file mode 100644 index 0000000000..f190047625 --- /dev/null +++ b/system/base/component.xml @@ -0,0 +1,3 @@ + + system.base + diff --git a/system/base/udev/actions.py b/system/base/udev/actions.py new file mode 100644 index 0000000000..e188082fdc --- /dev/null +++ b/system/base/udev/actions.py @@ -0,0 +1,157 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import libtools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +suffix = "32" if get.buildTYPE() == "emul32" else "" + +def setup(): + pisitools.flags.add("-fno-lto") + #shelltools.echo("docs/gtk-doc.make", "EXTRA_DIST=") + autotools.autoreconf("-fi") + libtools.libtoolize("--force") + + options = " ac_cv_header_sys_capability_h=yes \ + --bindir=/sbin%s \ + --sbindir=/sbin%s \ + --docdir=/usr/share/doc/udev \ + --libdir=/usr/lib%s \ + --libexecdir=/lib%s/udev \ + --with-firmware-path=/lib%s/firmware/updates:/lib%s/firmware \ + --with-html-dir=/usr/share/doc/udev/html \ + --with-rootlibdir=/lib%s \ + --with-rootprefix= \ + --without-python \ + --disable-xz \ + --disable-nls \ + --disable-pam \ + --disable-dbus \ + --disable-audit \ + --disable-gcrypt \ + --disable-gnutls \ + --disable-logind \ + --disable-polkit \ + --disable-seccomp \ + --disable-selinux \ + --disable-qrencode \ + --disable-readahead \ + --disable-microhttpd \ + --disable-myhostname \ + --disable-quotacheck \ + --disable-python-devel \ + --disable-libcryptsetup \ + --enable-gudev \ + --enable-split-usr \ + " % ((suffix, )*7) + + options += "\ + --disable-acl \ + --disable-kmod \ + --disable-static \ + --disable-manpages \ + --disable-gtk-doc \ + --disable-introspection \ + " if get.buildTYPE() == "emul32" else \ + "\ + --enable-acl \ + --enable-kmod \ + --enable-static \ + --enable-introspection \ + " + + shelltools.system("sed -i -e '/--enable-static is not supported by systemd/s:as_fn_error:echo:' configure") + autotools.configure(options) + +def build(): + shelltools.echo("Makefile.extra", "BUILT_SOURCES: $(BUILT_SOURCES)") + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + autotools.make("-f Makefile -f Makefile.extra") + + targets = " \ + libudev.la \ + libgudev-1.0.la \ + systemd-udevd \ + udevadm \ + ata_id \ + cdrom_id \ + collect \ + scsi_id \ + v4l_id \ + accelerometer \ + mtd_probe \ + " + + autotools.make(targets) + + autotools.make("-C docs/libudev") + autotools.make("-C docs/gudev") + +#~ def check(): + #~ autotools.make("check") +#~ + +def install(): + targets = " install-libLTLIBRARIES \ + install-includeHEADERS \ + install-libgudev_includeHEADERS \ + install-rootbinPROGRAMS \ + install-rootlibexecPROGRAMS \ + install-udevlibexecPROGRAMS \ + install-dist_udevconfDATA \ + install-dist_udevrulesDATA \ + install-girDATA \ + install-pkgconfiglibDATA \ + install-sharepkgconfigDATA \ + install-typelibsDATA \ + install-dist_docDATA \ + libudev-install-hook \ + install-directories-hook \ + install-dist_bashcompletionDATA \ + install-dist_networkDATA \ + rootlibexec_PROGRAMS='systemd-udevd' \ + rootbin_PROGRAMS='udevadm' \ + lib_LTLIBRARIES='libudev.la \ + libgudev-1.0.la' \ + pkgconfiglib_DATA='src/libudev/libudev.pc \ + src/gudev/gudev-1.0.pc' \ + dist_bashcompletion_DATA='shell-completion/bash/udevadm' \ + dist_network_DATA='network/99-default.link' \ + pkginclude_HEADERS='src/libudev/libudev.h' \ + " + + autotools.make("-j1 DESTDIR=%s%s %s" % (get.installDIR(), suffix, targets)) + if get.buildTYPE() == "emul32": + shelltools.move("%s%s/lib%s" % (get.installDIR(), suffix, suffix), "%s/lib%s" % (get.installDIR(), suffix)) + shelltools.move("%s%s/usr/lib%s" % (get.installDIR(), suffix, suffix), "%s/usr/lib%s" % (get.installDIR(), suffix)) + for f in shelltools.ls("%s/usr/lib32/pkgconfig" % get.installDIR()): + pisitools.dosed("%s/usr/lib32/pkgconfig/%s" % (get.installDIR(), f), "emul32", "usr") + #shelltools.unlinkDir("%s%s" % (get.installDIR(), suffix)) + return + # Create needed directories + #for d in ("", "net", "pts", "shm", "hugepages"): + #pisitools.dodir("/lib/udev/devices/%s" % d) + + # Create vol_id and scsi_id symlinks in /sbin probably needed by multipath-tools + pisitools.dosym("/lib/udev/scsi_id", "/sbin/scsi_id") + + # Create /sbin/systemd-udevd -> /sbin/udevd sysmlink, we need it for MUDUR, do not touch this sysmlink. + pisitools.dosym("/sbin/systemd-udevd", "/sbin/udevd") + pisitools.dosym("/lib/systemd/systemd-udevd", "/sbin/systemd-udevd") + # Mudur needs this symlink as well + pisitools.dosym("/bin/udevadm", "/sbin/udevadm") + + # Create /etc/udev/rules.d for backward compatibility + pisitools.dodir("/etc/udev/rules.d") + + pisitools.dodir("/run/udev") + pisitools.dodoc("README", "TODO") + + # Add man files + pisitools.doman("man/systemd.link.5", "man/udev.7", "man/udevadm.8", "man/systemd-udevd.service.8") diff --git a/system/base/udev/comar/package.py b/system/base/udev/comar/package.py new file mode 100644 index 0000000000..e81903334f --- /dev/null +++ b/system/base/udev/comar/package.py @@ -0,0 +1,29 @@ +#!/usr/bin/python + +import os + +def createNode(mode, uid, gid, minor, major, path): + os.system("/bin/mknod --mode=%d %s c %d %d" % (mode, path, minor, major)) + os.system("/bin/chown %s:%s %s" % (uid, gid, path)) + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + createNode(600, "root", "root", 1, 11, "/lib/udev/devices/kmsg") + createNode(666, "root", "root", 1, 3, "/lib/udev/devices/null") + createNode(666, "root", "root", 1, 5, "/lib/udev/devices/zero") + createNode(600, "root", "root", 10, 130, "/lib/udev/devices/watchdog") + createNode(666, "root", "root", 10, 229, "/lib/udev/devices/fuse") + createNode(600, "root", "tty", 5, 1, "/lib/udev/devices/console") + createNode(666, "root", "tty", 5, 2, "/lib/udev/devices/ptmx") + createNode(666, "root", "tty", 5, 0, "/lib/udev/devices/tty") + createNode(620, "root", "tty", 4, 1, "/lib/udev/devices/tty1") + createNode(600, "root", "root", 10, 200, "/lib/udev/devices/net/tun") + createNode(600, "root", "root", 36, 0, "/lib/udev/devices/route") + createNode(600, "root", "root", 10, 200, "/lib/udev/devices/skip") + createNode(660, "root", "dialout", 108, 0, "/lib/udev/devices/ppp") + + if os.path.exists("/lib/udev/devices/rtc"): + os.unlink("/lib/udev/devices/rtc") + + # Migrate UDEV database + if fromVersion and int(fromVersion) < 165: + os.system("/sbin/udevadm info --convert-db &> /dev/null") diff --git a/system/base/udev/files/tmpfiles.conf b/system/base/udev/files/tmpfiles.conf new file mode 100644 index 0000000000..9a7ad93d58 --- /dev/null +++ b/system/base/udev/files/tmpfiles.conf @@ -0,0 +1 @@ +D /run/udev 0755 root root diff --git a/system/base/udev/pspec.xml b/system/base/udev/pspec.xml new file mode 100644 index 0000000000..439be79e58 --- /dev/null +++ b/system/base/udev/pspec.xml @@ -0,0 +1,284 @@ + + + + + udev + http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + Linux dynamic and persistent device naming support + udev allows Linux users to have a dynamic /dev directory and it provides the ability to have persistent device names. + http://www.freedesktop.org/software/systemd/systemd-214.tar.xz + + glib2 + gperf + acl-devel + libkmod-devel + libblkid-devel + + + + + udev + + libudev + acl + libkmod + libblkid + util-linux + + + /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/dbus-1/services + /usr/share/bash-completion/completions + /usr/share/doc + /usr/share/man + + + tmpfiles.conf + + + + System.Package + + + + + udev-devel + system.devel + Development files for udev + + udev + + + /usr/include/systemd/sd-daemon.h + /usr/lib32/pkgconfig/libsystemd-daemon.pc + /usr/lib/pkgconfig/libsystemd-daemon.pc + /usr/share/pkgconfig/udev.pc + + + + + libudev + Dynamic library to access udev device information + + udev + + + /usr/lib/libudev* + /lib/libudev* + + + + + libudev-devel + system.devel + Development files for libudev + + udev + libudev + + + /usr/include/libudev.h + /usr/lib/pkgconfig/libudev.pc + /usr/lib32/pkgconfig/libudev.pc + /usr/share/gtk-doc/html/libudev + + + + + libgudev1 + Libraries for adding libudev support to applications that use glib + + glib2 + libudev + > + + /usr/lib/libgudev* + + + + + libgudev1-devel + system.devel + Development files for libgudev1 + + libudev-devel + libgudev1 + + + /usr/include/gudev-1.0 + /usr/lib/pkgconfig/gudev-1.0* + /usr/lib32/pkgconfig/gudev-1.0* + /usr/share/gir-1.0/GUdev-1.0.gir + /usr/share/gtk-doc/html/gudev + + + + + libudev-32bit + emul32 + 32-bit shared libraries for libudev + emul32 + + libkmod-32bit + libblkid-32bit + + + libudev + + + /usr/lib32/libudev* + /lib32/libudev* + + + + + libgudev1-32bit + emul32 + 32-bit shared libraries for libgudev1 + emul32 + + glib2-32bit + + + libgudev1 + libudev-32bit + glib2-32bit + + + /usr/lib32/libgudev* + + + + + + 2014-07-01 + 214 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 212 + Add upstream patches. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-28 + 212 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-12 + 211 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 210 + Rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-26 + 210 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-20 + 209 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-11 + 208 + Add tmpfiles.conf, git updates. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-30 + 208 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-10 + 206 + Add /run/udev directory. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-13 + 206 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-28 + 204 + Fix pc files for emul32. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-13 + 204 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-30 + 200 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-24 + 197 + Version bump, add emul32 + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-11 + 194 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/system/base/udev/translations.xml b/system/base/udev/translations.xml new file mode 100644 index 0000000000..5535e5820b --- /dev/null +++ b/system/base/udev/translations.xml @@ -0,0 +1,35 @@ + + + + udev + Linux dinamik ve sürekli aygıt isimlendirme desteği (kernel dışındaki devfs) + udev linux kullanıcılarının dinamik /dev dizinine sahip olmalarına olanek verir ve tutarlı cihaz isimleri almasını sağlar. + udev permet aux utilisateurs Linux d'avoir un répertoire /dev dynamique et donne la possibilité d'avoir des noms de périphériques persistants. + udev ermöglicht Linux Benutzern ein dynamisches /dev Verzeichnis und beständige Gerätenamen + + + + libudev + udev aygıt bilgilerini sunan kitaplık + + + + libudev-32bit + udev için 32-bit paylaşımlı kitaplıklar + + + + libudev-devel + libudev için geliştirme dosyaları + + + + libgudev1 + glib kullanan uygulamalara libudev desteği eklemek için kullanılan kitaplık + + + + libgudev1-devel + libgudev1 için geliştirme dosyaları + + From 0bd665287da6da7234a5985ad15809d308ae1f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 03:39:34 +0300 Subject: [PATCH 125/175] enable-ps,pdf,svg in cairo --- desktop/toolkit/gtk/cairo/actions.py | 6 +++--- desktop/toolkit/gtk/cairo/pspec.xml | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/desktop/toolkit/gtk/cairo/actions.py b/desktop/toolkit/gtk/cairo/actions.py index 8c5488c775..1e0080f661 100644 --- a/desktop/toolkit/gtk/cairo/actions.py +++ b/desktop/toolkit/gtk/cairo/actions.py @@ -17,9 +17,9 @@ def setup(): --disable-drm \ --enable-xml \ --enable-ft \ - --disable-ps \ - --disable-pdf \ - --disable-svg \ + --enable-ps \ + --enable-pdf \ + --enable-svg \ --enable-tee \ --enable-gl \ --enable-gobject \ diff --git a/desktop/toolkit/gtk/cairo/pspec.xml b/desktop/toolkit/gtk/cairo/pspec.xml index 6352076e83..1e714a5053 100644 --- a/desktop/toolkit/gtk/cairo/pspec.xml +++ b/desktop/toolkit/gtk/cairo/pspec.xml @@ -30,6 +30,7 @@ xcb-util-devel libXext-devel mesa-devel + gtk-doc From e36c6def2e895b3650ed9df2732efebe07aa91cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 04:06:36 +0300 Subject: [PATCH 126/175] gtk2 verbump and fix deps --- desktop/toolkit/gtk/gtk2/pspec.xml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/desktop/toolkit/gtk/gtk2/pspec.xml b/desktop/toolkit/gtk/gtk2/pspec.xml index 0d5963c943..8aa3012002 100644 --- a/desktop/toolkit/gtk/gtk2/pspec.xml +++ b/desktop/toolkit/gtk/gtk2/pspec.xml @@ -11,7 +11,7 @@ LGPLv2.1 The GIMP Toolkit version 2 GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. - mirrors://gnome/gtk+/2.24/gtk+-2.24.23.tar.xz + mirrors://gnome/gtk+/2.24/gtk+-2.24.28.tar.xz cups-devel libXi-devel @@ -28,6 +28,7 @@ atk-devel pango-devel gdk-pixbuf-devel + gtk-doc gobject-introspection-devel @@ -57,6 +58,8 @@ fontconfig libXinerama libXcomposite + glib2 + libX11 atk pango gdk-pixbuf @@ -91,6 +94,7 @@ cairo pango gdk-pixbuf + glib2 /usr/bin/gtk-demo @@ -132,6 +136,7 @@ 32-bit shared libraries for gtk2 _emul32 + glibc-32bit cairo-32bit cups-32bit fontconfig-32bit @@ -152,6 +157,7 @@ gtk2 + glibc-32bit cairo-32bit pango-32bit glib2-32bit @@ -177,6 +183,13 @@ + + 2015-07-05 + 2.24.28 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2014-05-17 2.24.23 From c65910901bd2b9fadddccc00f4351b8b0e73e302 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Sun, 5 Jul 2015 07:59:32 +0300 Subject: [PATCH 127/175] atk and gdk-pixbuf removed --- desktop/toolkit/gtk/atk/actions.py | 26 --- desktop/toolkit/gtk/atk/pspec.xml | 121 ------------ desktop/toolkit/gtk/atk/translations.xml | 19 -- desktop/toolkit/gtk/gdk-pixbuf/actions.py | 43 ----- .../gtk/gdk-pixbuf/comar/pakhandler-32.py | 23 --- .../gtk/gdk-pixbuf/comar/pakhandler.py | 23 --- desktop/toolkit/gtk/gdk-pixbuf/pspec.xml | 177 ------------------ .../toolkit/gtk/gdk-pixbuf/translations.xml | 23 --- 8 files changed, 455 deletions(-) delete mode 100644 desktop/toolkit/gtk/atk/actions.py delete mode 100644 desktop/toolkit/gtk/atk/pspec.xml delete mode 100644 desktop/toolkit/gtk/atk/translations.xml delete mode 100644 desktop/toolkit/gtk/gdk-pixbuf/actions.py delete mode 100644 desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py delete mode 100644 desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py delete mode 100644 desktop/toolkit/gtk/gdk-pixbuf/pspec.xml delete mode 100644 desktop/toolkit/gtk/gdk-pixbuf/translations.xml diff --git a/desktop/toolkit/gtk/atk/actions.py b/desktop/toolkit/gtk/atk/actions.py deleted file mode 100644 index ec9ba2d284..0000000000 --- a/desktop/toolkit/gtk/atk/actions.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# -# Licensed under the GNU General Public License, version 3. -# See the file http://www.gnu.org/licenses/gpl.txt - -from pisi.actionsapi import get -from pisi.actionsapi import autotools -from pisi.actionsapi import pisitools - -def setup(): - pisitools.dosed(".", "^(SUBDIRS =.*)tests(.*)$", "\\1\\2", filePattern="^Makefile.(am|in)", level=0) - autotools.autoreconf("-fiv") - autotools.configure("\ - --disable-static \ - --enable-introspection=%s \ - " % ("no" if get.buildTYPE() == "emul32" else "yes")) - -def build(): - autotools.make() - -def install(): - autotools.rawInstall("DESTDIR=%s" % get.installDIR()) - - pisitools.removeDir("/usr/share/gtk-doc") - pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README") diff --git a/desktop/toolkit/gtk/atk/pspec.xml b/desktop/toolkit/gtk/atk/pspec.xml deleted file mode 100644 index b2ea252763..0000000000 --- a/desktop/toolkit/gtk/atk/pspec.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - - - atk - http://developer.gnome.org/atk - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - GTK+ and GNOME Accessibility Toolkit - These libraries provide tools for making software for people with disabilities. - mirrors://gnome/atk/2.16/atk-2.16.0.tar.xz - - gobject-introspection-devel - gnome-common - - - - - atk - - /usr/lib/libatk* - /usr/lib/girepository-1.0 - /usr/share/gir-1.0 - /usr/share/locale - /usr/share/doc - - - - - atk-devel - Development files for atk - - atk - - - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - - - - - atk-32bit - emul32 - 32-bit shared libraries for atk - emul32 - - glib2-32bit - - - atk - glib2-32bit - - - /usr/lib32 - - - - - - 2015-04-17 - 2.16.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-17 - 2.12.0 - Release bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-03-30 - 2.12.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-10 - 2.10.0 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-08-21 - 2.8.0 - Release bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-04-07 - 2.8.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-24 - 2.7.91 - V.Bump - PisiLinux Community - admins@pisilinux.org - - - 2012-10-22 - 2.7.2 - First release - PisiLinux Community - admins@pisilinux.org - - - diff --git a/desktop/toolkit/gtk/atk/translations.xml b/desktop/toolkit/gtk/atk/translations.xml deleted file mode 100644 index 1c5014a9a5..0000000000 --- a/desktop/toolkit/gtk/atk/translations.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - atk - GTK+ ve GNOME erişilebilirlik kitaplığı - Bu kitaplıklar engelli insanlar için yapılan programlarda kullanılabilecek araçları içerir. - Ces librairies fournissent des outils pour faire des logiciels pour personnes handicapées. - - - - atk-devel - atk için geliştirme dosyaları - - - - atk-32bit - atk için 32-bit paylaşımlı kitaplıklar - - diff --git a/desktop/toolkit/gtk/gdk-pixbuf/actions.py b/desktop/toolkit/gtk/gdk-pixbuf/actions.py deleted file mode 100644 index bc00299dba..0000000000 --- a/desktop/toolkit/gtk/gdk-pixbuf/actions.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# -# Licensed under the GNU General Public License, version 3. -# See the file http://www.gnu.org/licenses/gpl.txt - -from pisi.actionsapi import get -from pisi.actionsapi import autotools -from pisi.actionsapi import pisitools - -def setup(): - options = "\ - --disable-static \ - --disable-silent-rules \ - --with-libjasper \ - --with-x11 \ - --with-included-loaders=png \ - " - - options += "\ - --bindir=/_emul32/bin \ - --disable-introspection \ - " if get.buildTYPE() == "emul32" else \ - "\ - --enable-introspection \ - " - autotools.configure(options) - - pisitools.dosed("libtool", "^(hardcode_libdir_flag_spec=).*", '\\1""') - pisitools.dosed("libtool", "^(runpath_var=)LD_RUN_PATH", "\\1DIE_RPATH_DIE") - pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ") - -def build(): - autotools.make() - -def install(): - autotools.rawInstall("DESTDIR=%s" % get.installDIR()) - if get.buildTYPE() == "emul32": - pisitools.domove("/_emul32/bin/gdk-pixbuf-query-loaders", "/usr/bin", "gdk-pixbuf-query-loaders-32") - pisitools.removeDir("/_emul32") - return - pisitools.dosym("/usr/bin/gdk-pixbuf-query-loaders", "/usr/bin/gdk-pixbuf-query-loaders-64") - pisitools.dodoc("AUTHORS", "COPYING", "NEWS", "README") diff --git a/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py b/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py deleted file mode 100644 index 6edaa81706..0000000000 --- a/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler-32.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -import piksemel -import os - -def updateData(filepath): - parse = piksemel.parse(filepath) - - for icon in parse.tags("File"): - path = icon.getTagData("Path") - if path.startswith("usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders"): - os.system("/usr/bin/gdk-pixbuf-query-loaders-32 --update-cache") - return - -def setupPackage(metapath, filepath): - updateData(filepath) - -def cleanupPackage(metapath, filepath): - pass - -def postCleanupPackage(metapath, filepath): - updateData(filepath) diff --git a/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py b/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py deleted file mode 100644 index 0e2637d6b0..0000000000 --- a/desktop/toolkit/gtk/gdk-pixbuf/comar/pakhandler.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -import piksemel -import os - -def updateData(filepath): - parse = piksemel.parse(filepath) - - for icon in parse.tags("File"): - path = icon.getTagData("Path") - if path.startswith("usr/lib/gdk-pixbuf-2.0/2.10.0/loaders"): - os.system("/usr/bin/gdk-pixbuf-query-loaders --update-cache") - return - -def setupPackage(metapath, filepath): - updateData(filepath) - -def cleanupPackage(metapath, filepath): - pass - -def postCleanupPackage(metapath, filepath): - updateData(filepath) diff --git a/desktop/toolkit/gtk/gdk-pixbuf/pspec.xml b/desktop/toolkit/gtk/gdk-pixbuf/pspec.xml deleted file mode 100644 index 3ae3292f1d..0000000000 --- a/desktop/toolkit/gtk/gdk-pixbuf/pspec.xml +++ /dev/null @@ -1,177 +0,0 @@ - - - - - gdk-pixbuf - http://www.gnome.org - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - GDK pixbuf library - gdk-pixbuf is a library that provides image loading and scaling support for gtk+ applications - mirrors://gnome/gdk-pixbuf/2.31/gdk-pixbuf-2.31.3.tar.xz - - gtk-doc - glib2-devel - libX11-devel - tiff-devel - libjpeg-turbo-devel - libpng-devel - jasper-devel - gobject-introspection-devel - - - - - gdk-pixbuf - - tiff - jasper - libjpeg-turbo - > - - /etc - /usr/bin - /usr/lib - /usr/share/locale - /usr/share/man - /usr/share/doc - /usr/share - - - System.PackageHandler - - - - - gdk-pixbuf-devel - Development files for gdk-pixbuf - - gdk-pixbuf - libpng-devel - - - /usr/bin/gdk-pixbuf-csource - /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/share/gir-1.0 - - - - - gdk-pixbuf-docs - Reference documents for gdk-pixbuf - - /usr/share/gtk-doc - - - - - gdk-pixbuf-32bit - emul32 - 32-bit shared libraries for gdk-pixbuf - emul32 - - tiff-32bit - libjpeg-turbo-32bit - glib2-32bit - libX11-32bit - libpng-32bit - jasper-32bit - libX11-32bit - - - gdk-pixbuf - tiff-32bit - glib2-32bit - libpng-32bit - libX11-32bit - jasper-32bit - libjpeg-turbo-32bit - - - /usr/bin/gdk-pixbuf-query-loaders-32 - /usr/lib32 - - - System.PackageHandler - - - - - - 2015-04-27 - 2.31.3 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2014-05-17 - 2.30.7 - Release bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-03-30 - 2.30.7 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-10 - 2.30.0 - Add missing method and fix pakhandler.py - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-09-05 - 2.28.2 - Add missing method and fix pakhandler.py - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-20 - 2.28.2 - Fix build emul32. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-11 - 2.28.2 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-04-07 - 2.28.0 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-02-24 - 2.27.1 - V.Bump - PisiLinux Community - admins@pisilinux.org - - - 2012-11-25 - 2.26.5 - First release - Serdar Soytetir - kaptan@pisilinux.org - - - diff --git a/desktop/toolkit/gtk/gdk-pixbuf/translations.xml b/desktop/toolkit/gtk/gdk-pixbuf/translations.xml deleted file mode 100644 index b2815ba5ad..0000000000 --- a/desktop/toolkit/gtk/gdk-pixbuf/translations.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - gdk-pixbuf - GDK pixbuf kitaplığı - gdk-pixbuf, gtk+ uygulamalarına resim açma ve ölçeklendirme desteği sağlayan bir kitaplıktır. - - - - gdk-pixbuf-devel - gdk-pixbuf için geliştirme dosyaları - - - - gdk-pixbuf-docs - gdk-pixbuf için başvuru belgeleri - - - - gdk-pixbuf-32bit - gdk-pixbuf için 32-bit paylaşımlı kitaplıklar - - From 8c5873bb15654f2c98f37bc174d94dabd191af92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 11:59:58 +0300 Subject: [PATCH 128/175] giflib fix deps --- multimedia/graphics/giflib/actions.py | 27 ++++++ multimedia/graphics/giflib/pspec.xml | 94 +++++++++++++++++++++ multimedia/graphics/giflib/translations.xml | 9 ++ 3 files changed, 130 insertions(+) create mode 100644 multimedia/graphics/giflib/actions.py create mode 100644 multimedia/graphics/giflib/pspec.xml create mode 100644 multimedia/graphics/giflib/translations.xml diff --git a/multimedia/graphics/giflib/actions.py b/multimedia/graphics/giflib/actions.py new file mode 100644 index 0000000000..5d314875a2 --- /dev/null +++ b/multimedia/graphics/giflib/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import libtools +from pisi.actionsapi import get + +def setup(): + libtools.libtoolize("--force --install") + autotools.autoreconf("-fi") + + autotools.configure("--disable-static") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make("-j1") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dohtml("doc/") + pisitools.dodoc("AUTHORS","BUGS","ChangeLog","NEWS","doc/*.txt") diff --git a/multimedia/graphics/giflib/pspec.xml b/multimedia/graphics/giflib/pspec.xml new file mode 100644 index 0000000000..03730291c1 --- /dev/null +++ b/multimedia/graphics/giflib/pspec.xml @@ -0,0 +1,94 @@ + + + + + giflib + http://sourceforge.net/projects/giflib + + PisiLinux Community + admins@pisilinux.org + + MIT + library + Library to handle, display and manipulate GIF images + The giflib package contains a shared library of functions for loading and saving GIF format image files. It is API and ABI compatible with libungif, the library which supported uncompressed GIFs while the Unisys LZW patent was in effect. + mirrors://sourceforge/giflib/giflib-5.0.6.tar.bz2 + + + + + + + giflib + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + + + + + giflib-devel + + giflib + + + /usr/include + /usr/share/doc/giflib/html + + + + + giflib-32bit + emul32 + 32-bit shared libraries for giflib + emul32 + + glibc-32bit + + + + giflib + glibc-32bit + + + /usr/lib32 + + + + + + 2014-05-20 + 5.0.6 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-28 + 5.0.5 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-31 + 4.1.6 + missing dep. + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2011-05-03 + 4.1.6 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/graphics/giflib/translations.xml b/multimedia/graphics/giflib/translations.xml new file mode 100644 index 0000000000..eb492cc023 --- /dev/null +++ b/multimedia/graphics/giflib/translations.xml @@ -0,0 +1,9 @@ + + + + giflib + GIF türündeki resimleri görüntüleyip işlemeye aracılık eden kitaplık + libungif, gif dosyalarını okumaya ve yazmaya yarayan bir kütüphanedir. Kaydetme algoritması Unisys LZW patentine takılmamak için sıkıştırma yapmamaktadır. Böylece LZW'nin patentli olmadığı ülkelerde kullanılmak için API ve ABI uyumlu bir alternatif sunar. + libungif est une librairies de lecture et d'écriture d'images gif. La fonctionnalité de sauvegarde utilise un algorithme gif non compressé pour éviter le brevet Unisys LZW. giflib est un remplaçant de cette dernière compatible aussi bien au niveau de l'interface de programmation (API) qu'au niveau binaire (ABI) pour les pays où LZW n'est pas breveté. + + From 1a71026d39de5385380e9be1926ba4456e938025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 13:08:35 +0300 Subject: [PATCH 129/175] works for qt5-base --- .../gtk-theme-mediterranean/actions.py | 14 + .../gtk-theme-mediterranean/pspec.xml | 64 +++ .../gtk-theme-mediterranean/translations.xml | 8 + .../gtk2-engines-murrine/actions.py | 25 ++ .../gtk2-engines-murrine/pspec.xml | 60 +++ .../gtk2-engines-murrine/translations.xml | 8 + desktop/toolkit/gtk/gtk2/pspec.xml | 2 +- desktop/toolkit/qt5/qt5-base/pspec.xml | 15 +- hardware/misc/libmtdev/pspec.xml | 4 + multimedia/sound/speex/actions.py | 39 ++ multimedia/sound/speex/files/configure.patch | 32 ++ multimedia/sound/speex/files/constant.patch | 83 ++++ multimedia/sound/speex/pspec.xml | 81 ++++ multimedia/sound/speex/translations.xml | 18 + network/analyzer/avahi/actions.py | 63 +++ .../avahi/comar/avahi-daemon-package.py | 19 + .../avahi/comar/avahi-daemon-service.py | 25 ++ .../avahi/comar/avahi-dnsconfd-service.py | 29 ++ .../files/avahi-0.6.31-no-deprecations.patch | 22 + network/analyzer/avahi/files/avahi.conf | 1 + network/analyzer/avahi/pspec.xml | 404 ++++++++++++++++++ network/analyzer/avahi/translations.xml | 103 +++++ network/analyzer/component.xml | 3 + x11/library/freeglut/actions.py | 38 ++ x11/library/freeglut/pspec.xml | 121 ++++++ x11/library/freeglut/translations.xml | 20 + 26 files changed, 1288 insertions(+), 13 deletions(-) create mode 100644 desktop/lookandfeel/gtk-theme-mediterranean/actions.py create mode 100644 desktop/lookandfeel/gtk-theme-mediterranean/pspec.xml create mode 100644 desktop/lookandfeel/gtk-theme-mediterranean/translations.xml create mode 100644 desktop/lookandfeel/gtk2-engines-murrine/actions.py create mode 100644 desktop/lookandfeel/gtk2-engines-murrine/pspec.xml create mode 100644 desktop/lookandfeel/gtk2-engines-murrine/translations.xml create mode 100644 multimedia/sound/speex/actions.py create mode 100644 multimedia/sound/speex/files/configure.patch create mode 100644 multimedia/sound/speex/files/constant.patch create mode 100644 multimedia/sound/speex/pspec.xml create mode 100644 multimedia/sound/speex/translations.xml create mode 100644 network/analyzer/avahi/actions.py create mode 100644 network/analyzer/avahi/comar/avahi-daemon-package.py create mode 100644 network/analyzer/avahi/comar/avahi-daemon-service.py create mode 100644 network/analyzer/avahi/comar/avahi-dnsconfd-service.py create mode 100644 network/analyzer/avahi/files/avahi-0.6.31-no-deprecations.patch create mode 100644 network/analyzer/avahi/files/avahi.conf create mode 100644 network/analyzer/avahi/pspec.xml create mode 100644 network/analyzer/avahi/translations.xml create mode 100644 network/analyzer/component.xml create mode 100644 x11/library/freeglut/actions.py create mode 100644 x11/library/freeglut/pspec.xml create mode 100644 x11/library/freeglut/translations.xml diff --git a/desktop/lookandfeel/gtk-theme-mediterranean/actions.py b/desktop/lookandfeel/gtk-theme-mediterranean/actions.py new file mode 100644 index 0000000000..710f66b2e4 --- /dev/null +++ b/desktop/lookandfeel/gtk-theme-mediterranean/actions.py @@ -0,0 +1,14 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools + +WorkDir = "Work" + + +def install(): + + pisitools.insinto("/usr/share/themes", "*") diff --git a/desktop/lookandfeel/gtk-theme-mediterranean/pspec.xml b/desktop/lookandfeel/gtk-theme-mediterranean/pspec.xml new file mode 100644 index 0000000000..94e6721467 --- /dev/null +++ b/desktop/lookandfeel/gtk-theme-mediterranean/pspec.xml @@ -0,0 +1,64 @@ + + + + + gtk-theme-mediterranean + http://gnome-look.org/content/show.php/MediterraneanNight+Series?content=156782 + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + data + Great themes for GTK2 and GTK3 + Themes for GTK2 and GTK3. + https://dl.dropboxusercontent.com/u/80497678/MediterraneanNight-2.03.tar.gz + + + + gtk-theme-mediterranean + + gtk2-engines-murrine + gdk-pixbuf + + + /usr/share/themes/MediterraneanDark + /usr/share/themes/MediterraneanWhite + /usr/share/themes/MediterraneanLightDarkest + + + + gtk-theme-mediterranean-others + + gtk2-engines-murrine + gdk-pixbuf + + + /usr/share/themes + + + + + + 2014-02-06 + 2.03 + Add MediterraneanLightDarkest to main package. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-26 + 2.03 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-10-05 + 2.0.3 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + diff --git a/desktop/lookandfeel/gtk-theme-mediterranean/translations.xml b/desktop/lookandfeel/gtk-theme-mediterranean/translations.xml new file mode 100644 index 0000000000..72ec7f3178 --- /dev/null +++ b/desktop/lookandfeel/gtk-theme-mediterranean/translations.xml @@ -0,0 +1,8 @@ + + + + gtk-theme-mediterranean + GTK2 ve GTK3 için güzel temalar + GTK2 ve GTK3 için yazılmış tema paketleri. + + diff --git a/desktop/lookandfeel/gtk2-engines-murrine/actions.py b/desktop/lookandfeel/gtk2-engines-murrine/actions.py new file mode 100644 index 0000000000..1d775dd948 --- /dev/null +++ b/desktop/lookandfeel/gtk2-engines-murrine/actions.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +WorkDir = "murrine-%s" % get.srcVERSION() + +def setup(): + autotools.configure("--disable-static \ + --enable-animation") + + pisitools.dosed("libtool", " -shared ", " -Wl,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.install() + + pisitools.dodoc("AUTHORS", "ChangeLog", "NEWS") diff --git a/desktop/lookandfeel/gtk2-engines-murrine/pspec.xml b/desktop/lookandfeel/gtk2-engines-murrine/pspec.xml new file mode 100644 index 0000000000..32bd2fbaeb --- /dev/null +++ b/desktop/lookandfeel/gtk2-engines-murrine/pspec.xml @@ -0,0 +1,60 @@ + + + + + gtk2-engines-murrine + http://cimitan.com/murrine/project/murrine + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + GTK+ Murrine theme engine + The Murrine engine is a cairo-based GTK+ theming tool. It's very fast compared to clearlooks-cairo. Murrine includes animations and a unique style. + mirrors://gnome/murrine/0.98/murrine-0.98.2.tar.xz + + gtk2-devel + glib2-devel + intltool + + + + + gtk2-engines-murrine + + gtk2 + + glib2 + + + /usr/lib + /usr/share/doc + /usr/share/gtk-engines + + + + + + 2014-02-07 + 0.98.2 + Remove gtk2 runtime dep to avoid cyclic deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-17 + 0.98.2 + Release bump + Erdinç Gültekin + erdinc@pisilinux.org + + + 2012-06-10 + 0.98.2 + First release + Erdinç Gültekin + admins@pisilinux.org + + + diff --git a/desktop/lookandfeel/gtk2-engines-murrine/translations.xml b/desktop/lookandfeel/gtk2-engines-murrine/translations.xml new file mode 100644 index 0000000000..a3b7b03427 --- /dev/null +++ b/desktop/lookandfeel/gtk2-engines-murrine/translations.xml @@ -0,0 +1,8 @@ + + + + gtk2-engines-murrine + GTK+ Murrine tema motoru + Murrine motoru, Cairo tabanlı GTK+ tema aracıdır. Clearlooks temasına göre çok daha hızlıdır. Aynı zamanda canlandırmalar, benzersiz biçemler içerir. + + diff --git a/desktop/toolkit/gtk/gtk2/pspec.xml b/desktop/toolkit/gtk/gtk2/pspec.xml index 8aa3012002..f46dc4d330 100644 --- a/desktop/toolkit/gtk/gtk2/pspec.xml +++ b/desktop/toolkit/gtk/gtk2/pspec.xml @@ -64,7 +64,7 @@ pango gdk-pixbuf dejavu-fonts - gtk-theme-mediterranean + /etc diff --git a/desktop/toolkit/qt5/qt5-base/pspec.xml b/desktop/toolkit/qt5/qt5-base/pspec.xml index cfad7f908c..bedbc2ea4c 100644 --- a/desktop/toolkit/qt5/qt5-base/pspec.xml +++ b/desktop/toolkit/qt5/qt5-base/pspec.xml @@ -13,18 +13,15 @@ LGPLv2.1-linking-exception http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtbase-opensource-src-5.4.2.tar.xz - alsa-lib-devel at-spi2-core-devel cups-devel dbus-devel zlib-devel glib2-devel + libpcre-devel desktop-file-utils fontconfig-devel - gperf - gst-plugins-base-devel - gstreamer-devel gtk2-devel harfbuzz-devel icon-theme-hicolor @@ -32,9 +29,6 @@ firebird-superserver libjpeg-turbo-devel mariadb-lib - libmng-devel - pulseaudio-libs-devel - webp-devel libxcb-devel libXcomposite-devel libxkbcommon-devel @@ -42,11 +36,10 @@ mesa-devel libmtdev-devel nss-devel - openal-devel pciutils-devel postgresql-server python-devel - ruby-devel + sqlite-devel unixODBC-devel xcb-proto @@ -56,9 +49,8 @@ xcb-util-wm-devel tiff-devel libdrm-devel - DirectFB-devel libpng-devel - libudev-devel + eudev-devel libSM-devel libICE-devel libX11-devel @@ -95,7 +87,6 @@ libICE libX11 libdrm - DirectFB libpng libxcb libudev diff --git a/hardware/misc/libmtdev/pspec.xml b/hardware/misc/libmtdev/pspec.xml index 85f68c1e03..918a1ecbee 100644 --- a/hardware/misc/libmtdev/pspec.xml +++ b/hardware/misc/libmtdev/pspec.xml @@ -41,8 +41,12 @@ emul32 32-bit shared libraries for libmtdev emul32 + + glibc-32bit + libmtdev + glibc-32bit /usr/lib32 diff --git a/multimedia/sound/speex/actions.py b/multimedia/sound/speex/actions.py new file mode 100644 index 0000000000..bca5a90e5e --- /dev/null +++ b/multimedia/sound/speex/actions.py @@ -0,0 +1,39 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def setup(): + shelltools.export("CFLAGS", "%s -D_FILE_OFFSET_BITS=64" % get.CFLAGS()) + + pisitools.dosed("libspeex/Makefile.am", "noinst_PROGRAMS", "check_PROGRAMS") + + options = "--enable-ogg \ + --enable-sse \ + --disable-static" + + if get.buildTYPE() == "emul32": + # ogg only affects the executables so it's safe to disable for emul32 + options += " --libdir=/usr/lib32 --disable-ogg" + shelltools.export("CFLAGS", "%s -m32" % get.CFLAGS()) + + autotools.autoreconf("-vif") + autotools.configure(options) + + # Remove rpath from speexenc and speexdec + pisitools.dosed("libtool", "^hardcode_libdir_flag_spec=.*", "hardcode_libdir_flag_spec=\"\"") + pisitools.dosed("libtool", "^runpath_var=LD_RUN_PATH", "runpath_var=DIE_RPATH_DIE") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s docdir=/usr/share/doc/speex" % get.installDIR()) + + pisitools.dodoc("README") diff --git a/multimedia/sound/speex/files/configure.patch b/multimedia/sound/speex/files/configure.patch new file mode 100644 index 0000000000..17457576b6 --- /dev/null +++ b/multimedia/sound/speex/files/configure.patch @@ -0,0 +1,32 @@ +Index: speex-1.2rc1/configure.ac +=================================================================== +--- speex-1.2rc1.orig/configure.ac ++++ speex-1.2rc1/configure.ac +@@ -112,9 +112,6 @@ AC_MSG_RESULT($has_visibility) + + AC_CHECK_HEADERS(sys/soundcard.h sys/audioio.h) + +-XIPH_PATH_OGG([src="src"], [src=""]) +-AC_SUBST(src) +- + AC_CHECK_LIB(m, sin) + + # Check for getopt_long; if not found, use included source. +@@ -139,10 +136,16 @@ AC_ARG_ENABLE(valgrind, [ --enable-valg + AC_DEFINE([ENABLE_VALGRIND], , [Enable valgrind extra checks]) + fi]) + ++AC_ARG_ENABLE(ogg, [ --enable-ogg Enable OGG support], [if test "$enableval" = yes; then ++ XIPH_PATH_OGG([src="src"], [src=""]) ++ AC_SUBST(src) ++fi ++]) ++ + AC_ARG_ENABLE(sse, [ --enable-sse Enable SSE support], [ + if test "x$enableval" != xno; then + has_sse=yes +-CFLAGS="$CFLAGS -O3 -msse" ++CFLAGS="$CFLAGS -msse" + else + has_sse=no + fi diff --git a/multimedia/sound/speex/files/constant.patch b/multimedia/sound/speex/files/constant.patch new file mode 100644 index 0000000000..5f881333c6 --- /dev/null +++ b/multimedia/sound/speex/files/constant.patch @@ -0,0 +1,83 @@ +Index: speex-1.2beta3/libspeex/resample.c +=================================================================== +--- speex-1.2beta3.orig/libspeex/resample.c ++++ speex-1.2beta3/libspeex/resample.c +@@ -130,7 +130,7 @@ struct SpeexResamplerState_ { + int out_stride; + } ; + +-static double kaiser12_table[68] = { ++static const double kaiser12_table[68] = { + 0.99859849, 1.00000000, 0.99859849, 0.99440475, 0.98745105, 0.97779076, + 0.96549770, 0.95066529, 0.93340547, 0.91384741, 0.89213598, 0.86843014, + 0.84290116, 0.81573067, 0.78710866, 0.75723148, 0.72629970, 0.69451601, +@@ -144,7 +144,7 @@ static double kaiser12_table[68] = { + 0.00105297, 0.00069463, 0.00043489, 0.00025272, 0.00013031, 0.0000527734, + 0.00001000, 0.00000000}; + /* +-static double kaiser12_table[36] = { ++static const double kaiser12_table[36] = { + 0.99440475, 1.00000000, 0.99440475, 0.97779076, 0.95066529, 0.91384741, + 0.86843014, 0.81573067, 0.75723148, 0.69451601, 0.62920216, 0.56287762, + 0.49704014, 0.43304576, 0.37206735, 0.31506490, 0.26276832, 0.21567274, +@@ -152,7 +152,7 @@ static double kaiser12_table[36] = { + 0.03111947, 0.02127838, 0.01402878, 0.00886058, 0.00531256, 0.00298291, + 0.00153438, 0.00069463, 0.00025272, 0.0000527734, 0.00000500, 0.00000000}; + */ +-static double kaiser10_table[36] = { ++static const double kaiser10_table[36] = { + 0.99537781, 1.00000000, 0.99537781, 0.98162644, 0.95908712, 0.92831446, + 0.89005583, 0.84522401, 0.79486424, 0.74011713, 0.68217934, 0.62226347, + 0.56155915, 0.50119680, 0.44221549, 0.38553619, 0.33194107, 0.28205962, +@@ -160,7 +160,7 @@ static double kaiser10_table[36] = { + 0.05731132, 0.04193980, 0.02979584, 0.02044510, 0.01345224, 0.00839739, + 0.00488951, 0.00257636, 0.00115101, 0.00035515, 0.00000000, 0.00000000}; + +-static double kaiser8_table[36] = { ++static const double kaiser8_table[36] = { + 0.99635258, 1.00000000, 0.99635258, 0.98548012, 0.96759014, 0.94302200, + 0.91223751, 0.87580811, 0.83439927, 0.78875245, 0.73966538, 0.68797126, + 0.63451750, 0.58014482, 0.52566725, 0.47185369, 0.41941150, 0.36897272, +@@ -168,7 +168,7 @@ static double kaiser8_table[36] = { + 0.10562887, 0.08273982, 0.06335451, 0.04724088, 0.03412321, 0.02369490, + 0.01563093, 0.00959968, 0.00527363, 0.00233883, 0.00050000, 0.00000000}; + +-static double kaiser6_table[36] = { ++static const double kaiser6_table[36] = { + 0.99733006, 1.00000000, 0.99733006, 0.98935595, 0.97618418, 0.95799003, + 0.93501423, 0.90755855, 0.87598009, 0.84068475, 0.80211977, 0.76076565, + 0.71712752, 0.67172623, 0.62508937, 0.57774224, 0.53019925, 0.48295561, +@@ -177,19 +177,19 @@ static double kaiser6_table[36] = { + 0.05031820, 0.03607231, 0.02432151, 0.01487334, 0.00752000, 0.00000000}; + + struct FuncDef { +- double *table; ++ const double *table; + int oversample; + }; + +-static struct FuncDef _KAISER12 = {kaiser12_table, 64}; ++static const struct FuncDef _KAISER12 = {kaiser12_table, 64}; + #define KAISER12 (&_KAISER12) + /*static struct FuncDef _KAISER12 = {kaiser12_table, 32}; + #define KAISER12 (&_KAISER12)*/ +-static struct FuncDef _KAISER10 = {kaiser10_table, 32}; ++static const struct FuncDef _KAISER10 = {kaiser10_table, 32}; + #define KAISER10 (&_KAISER10) +-static struct FuncDef _KAISER8 = {kaiser8_table, 32}; ++static const struct FuncDef _KAISER8 = {kaiser8_table, 32}; + #define KAISER8 (&_KAISER8) +-static struct FuncDef _KAISER6 = {kaiser6_table, 32}; ++static const struct FuncDef _KAISER6 = {kaiser6_table, 32}; + #define KAISER6 (&_KAISER6) + + struct QualityMapping { +@@ -197,7 +197,7 @@ struct QualityMapping { + int oversample; + float downsample_bandwidth; + float upsample_bandwidth; +- struct FuncDef *window_func; ++ const struct FuncDef *window_func; + }; + + diff --git a/multimedia/sound/speex/pspec.xml b/multimedia/sound/speex/pspec.xml new file mode 100644 index 0000000000..2ef7e09f92 --- /dev/null +++ b/multimedia/sound/speex/pspec.xml @@ -0,0 +1,81 @@ + + + + + speex + http://www.speex.org/ + + PisiLinux Community + admins@pisilinux.org + + xiph + app:console + Audio compression format designed for speech and its converter application + speex is an Open Source/Free Software patent-free audio compression format designed for speech. The Speex Project aims to lower the barrier of entry for voice applications by providing a free alternative to expensive proprietary speech codecs. The package also contains a command-line tool to convert to/from Speex codec. + http://downloads.us.xiph.org/releases/speex/speex-1.2rc1.tar.gz + + libogg-devel + + + constant.patch + configure.patch + + + + + speex + + libogg + + + /usr/bin + /usr/share/man + /usr/lib + /usr/share/doc + + + + + speex-devel + Development files for speex + + speex + + + /usr/include + /usr/share/aclocal + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + speex-32bit + emul32 + 32-bit shared libraries for speex + emul32 + + speex + + + /usr/lib32 + + + + + + 2014-05-20 + 1.2_rc1 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2011-03-01 + 1.2_rc1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/sound/speex/translations.xml b/multimedia/sound/speex/translations.xml new file mode 100644 index 0000000000..384d450765 --- /dev/null +++ b/multimedia/sound/speex/translations.xml @@ -0,0 +1,18 @@ + + + + speex + Konuşma için tasarlanmış bir ses sıkıştırma biçimi kütüphanesi ve araçları + speex, konuşma için tasarlanmış özgür ve açık kaynaklı bir ses sıkıştırma biçimidir. Paket kütüphanenin yanında speex biçimine/biçiminden dönüştürme yapmak için gerekli araçları içerir. + + + + speex-devel + speex için geliştirme dosyaları + + + + speex-32bit + speex için 32-bit paylaşımlı kitaplıklar + + diff --git a/network/analyzer/avahi/actions.py b/network/analyzer/avahi/actions.py new file mode 100644 index 0000000000..46a3e9d1b8 --- /dev/null +++ b/network/analyzer/avahi/actions.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + pisitools.dosed("avahi-daemon/avahi-daemon.conf", "^#(disallow-other-stacks=)no", "\\1yes") + + # fix avahi socket path + pisitools.dosed('configure.ac', '^(avahi_runtime_dir=")\$\{localstatedir\}(\/run")', r'\1\2') + + autotools.autoreconf("-fi") + # --with-systemdsystemunitdir=/lib/systemd/system + autotools.configure("\ + --with-distro=none \ + --disable-monodoc \ + --disable-static \ + --disable-xmltoman \ + --disable-qt3 \ + --disable-qt4 \ + --disable-doxygen-doc \ + --enable-glib \ + --enable-gobject \ + --enable-introspection \ + --disable-mono \ + --enable-gtk3 \ + --enable-compat-howl \ + --enable-compat-libdns_sd \ + --with-avahi-user=avahi \ + --with-avahi-group=avahi \ + --with-autoipd-user=avahi-autoipd \ + --with-autoipd-group=avahi-autoipd \ + --with-avahi-priv-access-group=avahi \ + --with-dbus-system-address=unix:path=/run/dbus/system_bus_socket \ + ") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + # Add missing symlinks for avahi-compat-howl and avahi-compat-dns-sd + pisitools.dosym("/usr/lib/pkgconfig/avahi-compat-howl.pc", "/usr/lib/pkgconfig/howl.pc") + pisitools.dosym("/usr/lib/pkgconfig/avahi-compat-libdns_sd.pc", "/usr/lib/pkgconfig/libdns_sd.pc") + pisitools.dosym("/usr/include/avahi-compat-libdns_sd/dns_sd.h", "/usr/include/dns_sd.h") + + # Remove example + pisitools.remove("/etc/avahi/services/sftp-ssh.service") + + pisitools.dodir("/run/avahi-daemon") + pisitools.dodir("/var/lib/avahi-autoipd") + + pisitools.dodoc("docs/AUTHORS", "docs/README", "docs/TODO") + + pisitools.removeDir("var/run") \ No newline at end of file diff --git a/network/analyzer/avahi/comar/avahi-daemon-package.py b/network/analyzer/avahi/comar/avahi-daemon-package.py new file mode 100644 index 0000000000..2c2248ef21 --- /dev/null +++ b/network/analyzer/avahi/comar/avahi-daemon-package.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import os +import shutil + +ownerships = { + "/run/avahi-daemon" : "avahi:avahi", + } + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + for directory,owners in ownerships.items(): + if os.path.exists(directory): + os.system("/bin/chown %s %s" % (owners, directory)) + + if os.path.exists("/etc/localtime"): + if not os.path.isdir("/etc/avahi/etc"): + os.makedirs("/etc/avahi/etc") + shutil.copy("/etc/localtime", "/etc/avahi/etc/localtime") diff --git a/network/analyzer/avahi/comar/avahi-daemon-service.py b/network/analyzer/avahi/comar/avahi-daemon-service.py new file mode 100644 index 0000000000..1414adf72b --- /dev/null +++ b/network/analyzer/avahi/comar/avahi-daemon-service.py @@ -0,0 +1,25 @@ +from comar.service import * + +serviceType="server" +serviceDesc = _({"en": "Avahi Server", + "tr": "Avahi Hizmeti"}) + +@synchronized +def start(): + startService(command="/usr/sbin/avahi-daemon", + args="-D", + donotify=True) + +@synchronized +def stop(): + stopService(command="/usr/sbin/avahi-daemon", + args="-k", + donotify=True) + +def reload(): + stopService(command="/usr/sbin/avahi-daemon", + args="-r", + donotify=True) + +def status(): + return isServiceRunning("/run/avahi-daemon/pid") diff --git a/network/analyzer/avahi/comar/avahi-dnsconfd-service.py b/network/analyzer/avahi/comar/avahi-dnsconfd-service.py new file mode 100644 index 0000000000..bcf46320d9 --- /dev/null +++ b/network/analyzer/avahi/comar/avahi-dnsconfd-service.py @@ -0,0 +1,29 @@ +from comar.service import * +import signal + +serviceType="server" +serviceDesc = _({"en": "Avahi DNS Configuration Daemon", + "tr": "Avahi DNS Yapılandırma Hizmeti"}) + +PIDFILE = "/run/avahi-dnsconfd.pid" +DAEMON = "/usr/sbin/avahi-dnsconfd" + +@synchronized +def start(): + startDependencies("avahi") + startService(command=DAEMON, + args="-D", + donotify=True) + +@synchronized +def stop(): + stopService(pidfile=PIDFILE, + donotify=True) + +@synchronized +def reload(): + stopService(command=DAEMON, + signal=signal.SIGHUP) + +def status(): + return isServiceRunning(pidfile=PIDFILE) diff --git a/network/analyzer/avahi/files/avahi-0.6.31-no-deprecations.patch b/network/analyzer/avahi/files/avahi-0.6.31-no-deprecations.patch new file mode 100644 index 0000000000..9ca9d38dec --- /dev/null +++ b/network/analyzer/avahi/files/avahi-0.6.31-no-deprecations.patch @@ -0,0 +1,22 @@ +--- avahi-0.6.31/avahi-ui/Makefile.am.orig 2013-09-21 16:47:28.677659361 +0200 ++++ avahi-0.6.31/avahi-ui/Makefile.am 2013-09-21 16:47:34.852520537 +0200 +@@ -15,7 +15,7 @@ + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + # USA. + +-AM_CFLAGS=-I$(top_srcdir) -DG_DISABLE_DEPRECATED=1 -DGDK_DISABLE_DEPRECATED=1 -DGTK_DISABLE_DEPRECATED=1 ++AM_CFLAGS=-I$(top_srcdir) + + # This cool debug trap works on i386/gcc only + AM_CFLAGS+='-DDEBUG_TRAP=__asm__("int $$3")' +--- avahi-0.6.31/configure.ac.orig 2013-09-21 16:46:43.750669413 +0200 ++++ avahi-0.6.31/configure.ac 2013-09-21 16:47:02.566246400 +0200 +@@ -92,7 +92,7 @@ + AC_MSG_CHECKING([whether stack-smashing protection is available]) + ssp_old_cflags="$CFLAGS" + ssp_old_ldflags="$LDFLAGS" +- CFLAGS="$CFLAGS -Werror -fstack-protector-all -fPIC" ++ CFLAGS="$CFLAGS -fstack-protector-all -fPIC" + LDFLAGS="$LDFLAGS -Wl,-z,defs" + cat confdefs.h > conftest.c + cat >>conftest.c <<_ACEOF diff --git a/network/analyzer/avahi/files/avahi.conf b/network/analyzer/avahi/files/avahi.conf new file mode 100644 index 0000000000..0abe0e5732 --- /dev/null +++ b/network/analyzer/avahi/files/avahi.conf @@ -0,0 +1 @@ +d /run/avahi-daemon 0755 avahi avahi \ No newline at end of file diff --git a/network/analyzer/avahi/pspec.xml b/network/analyzer/avahi/pspec.xml new file mode 100644 index 0000000000..988686ca36 --- /dev/null +++ b/network/analyzer/avahi/pspec.xml @@ -0,0 +1,404 @@ + + + + + avahi + http://avahi.org/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2 + app:console + Local network service discovery + avahi is a system which facilitates service discovery on a local network. This means that you can plug your laptop or computer into a network and instantly be able to view other people who you can chat with, find printers to print to or find files being shared. + http://avahi.org/download/avahi-0.6.31.tar.gz + + gtk2-devel + gtk3-devel + + libcap-devel + libdaemon-devel + python-gtk-devel + + + avahi-0.6.31-no-deprecations.patch + + + + + avahi-glib + Libraries for easy use of avahi from glib applications + + avahi + avahi-libs + + + /usr/lib/libavahi-glib.* + /usr/lib/libavahi-gobject.* + + + + avahi-glib-devel + Development files for avahi-glib + + avahi-glib + avahi-devel + + + /usr/include/avahi-glib + /usr/include/avahi-gobject + /usr/lib/pkgconfig/avahi-glib.pc + /usr/lib/pkgconfig/avahi-gobject.pc + + + + + + + avahi-ui + Gtk user interface library for Avahi + + gtk2 + avahi-libs + avahi-glib + atk + cairo + pango + gdk-pixbuf + fontconfig + + + /usr/lib/libavahi-ui.so* + + + + + avahi-ui-devel + Development files for avahi-ui + + gtk2-devel + avahi-ui + avahi-devel + avahi-glib-devel + + + /usr/include/avahi-ui + /usr/lib/pkgconfig/avahi-ui.pc + + + + + avahi-ui-gtk3 + Gtk3 user interface library for Avahi + + gtk3 + avahi-libs + avahi-glib + atk + cairo + pango + gdk-pixbuf + + + /usr/lib/libavahi-ui-gtk3.so* + + + + + avahi-ui-gtk3-devel + Development files for avahi-ui-gtk3 + + gtk2-devel + avahi-ui-gtk3 + avahi-devel + avahi-glib-devel + gtk3-devel + + + /usr/lib/pkgconfig/avahi-ui-gtk3.pc + + + + + avahi-ui-tools + UI tools for mDNS browsing + + gtk3 + python-gtk + avahi + avahi-ui + avahi-glib + avahi-ui-gtk3 + avahi-libs + gtk3 + + + /usr/lib/python*/site-packages + /usr/bin/b* + /usr/bin/avahi-discover* + /usr/bin/avahi-bookmarks + /usr/share/man/man1/b* + /usr/share/man/man1/avahi-discover* + /usr/share/man/man1/avahi-bookmarks* + /usr/share/avahi/interfaces + /usr/share/applications/b* + /usr/share/applications/avahi-discover.desktop + + + + + avahi-compat-howl + Libraries for howl compatibility + + avahi + avahi-libs + + + /usr/lib/libhowl.so* + + + + + avahi-compat-howl-devel + Development files for avahi-compat-howl + + avahi-compat-howl + + + /usr/include/avahi-compat-howl + /usr/lib/pkgconfig/avahi-compat-howl.pc + /usr/lib/pkgconfig/howl.pc + + + + + avahi-compat-libdns_sd + Libraries for Apple Bonjour mDNSResponder compatibility + + avahi + avahi-libs + + + /usr/lib/libdns_sd.so* + + + + + avahi-compat-libdns_sd-devel + Development files for avahi-compat-libdns_sd + + avahi-compat-libdns_sd + + + /usr/include/avahi-compat-libdns_sd + /usr/include/dns_sd.h + /usr/lib/pkgconfig/avahi-compat-libdns_sd.pc + /usr/lib/pkgconfig/libdns_sd.pc + + + + + avahi-libs + Libraries needed to run programs that use avahi + + /usr/lib/libavahi-common.so* + /usr/lib/libavahi-client.so* + + + + + avahi + + libdaemon + avahi-libs + + + /usr/sbin/avahi-daemon + /usr/lib/libavahi-core.so* + /etc/avahi/avahi-daemon.conf + /etc/avahi/hosts + /etc/avahi/services/ssh.service + /etc/dbus-1/system.d/avahi-dbus.conf + /usr/share/avahi + /usr/share/dbus-1/interfaces/*.xml + /usr/share/dbus-1/system-services + /usr/lib/avahi/service* + /lib/systemd/system + /usr/share/locale + /usr/share/doc + /usr/share/man/man5/* + /usr/share/man/man8/avahi-daemon.* + /run/avahi-daemon + /usr/lib/tmpfiles.d/avahi.conf + + + avahi.conf + + + System.Service + System.Package + + + + + avahi-autoipd + Link-local IPv4 address automatic configuration daemon (IPv4LL) + + libdaemon + + + /etc/avahi/avahi-autoipd.action + /usr/sbin/avahi-autoipd + /usr/share/man/man8/avahi-autoipd.* + /var/lib/avahi-autoipd + + + + + avahi-dnsconfd + Configure local unicast DNS settings based on information published in mDNS + + libdaemon + avahi + avahi-libs + + + /etc/avahi/avahi-dnsconfd.action + /usr/sbin/avahi-dnsconfd + /usr/share/man/man8/avahi-dnsconfd.* + + + System.Service + + + + + avahi-tools + Command line tools for mDNS browsing and publishing + + avahi + avahi-libs + + + /usr/bin + /usr/share/man/man1 + + + + + avahi-devel + Development files for avahi + + avahi-libs + + + /usr/lib/pkgconfig/avahi-core.pc + /usr/lib/pkgconfig/avahi-client.pc + /usr/lib/girepository-1.0 + /usr/share/gir-1.0 + /usr/include/avahi-client + /usr/include/avahi-common + /usr/include/avahi-core + + + + + + 2014-05-20 + 0.6.31 + Rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-24 + 0.6.31 + rebuild for unused + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-08 + 0.6.31 + Add avahi.conf, fix build + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-17 + 0.6.31 + Fix deps + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-06-27 + 0.6.31 + Fix avahi-daemon.conf + Marcin Bojara + marcin@pisilinux.org + + + 2013-05-03 + 0.6.31 + Avahi-ui-gtk3 added + PisiLinux Community + admins@pisilinux.org + + + 2013-04-23 + 0.6.31 + Dep fixed + PisiLinux Community + admins@pisilinux.org + + + 2012-10-05 + 0.6.31 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/network/analyzer/avahi/translations.xml b/network/analyzer/avahi/translations.xml new file mode 100644 index 0000000000..0a955989d2 --- /dev/null +++ b/network/analyzer/avahi/translations.xml @@ -0,0 +1,103 @@ + + + + avahi + Yerel ağ hizmeti bulma sistemi + avahi yerel ağ üzerindeki hizmetleri tespit etmeyi kolaylaştıran bir sistemdir. Bu sayede, bilgisayarınızı ağa dahil ettikten sonra anında mevcut bilgisayarları ve yazıcıları görebilir ve kullanabilirsiniz. + + + + avahi-devel + avahi için geliştirme dosyaları + + + + avahi-glib + Glib uygulamalarında avahi kullanımını kolaylaştıran kitaplıklar + + + + avahi-glib-devel + avahi-glib için geliştirme dosyaları + + + + avahi-sharp + Mono uygulamalarında avahi kullanımını kolaylaştıran kitaplıklar + + + + avahi-ui-sharp + avahi-ui için Mono dil bağlayıcıları + + + + avahi-ui-sharp-devel + avahi-ui-sharp için geliştirme dosyaları + + + + avahi-ui + avahi için geliştirme dosyaları + + + + avahi-ui-devel + avahi-ui için geliştirme dosyaları + + + + avahi-ui-gtk3 + avahi-gtk3, Gtk3 user interface library for Avahi + + + + avahi-ui-gtk3-devel + avahi-ui-gtk3 için geliştirme dosyaları + + + + avahi-ui-tools + Grafiksel mDNS tarama araçları + + + + avahi-compat-howl + howl uyumluluk kitaplıkları + + + + avahi-compat-howl-devel + avahi-compat-howl için geliştirme dosyaları + + + + avahi-compat-libdns_sd + libdns_sd uyumluluk kitaplıkları + + + + avahi-compat-libdns_sd-devel + avahi-compat-libdns_sd için geliştirme dosyaları + + + + avahi-libs + Avahi kullanan uygulamaları çalıştırmak için gerekli kitaplıklar + + + + avahi-autoipd + Link-local IPv4 adresi otomatik yapılandırma hizmeti (IPv4LL) + + + + avahi-dnsconfd + Yerel unicast DNS ayarlarını mDNS üzerinden gelen bilgilere göre yapılandırma hizmeti + + + + avahi-tools + mDNS taramak ve yayınlamak için komut satırı araçları + + diff --git a/network/analyzer/component.xml b/network/analyzer/component.xml new file mode 100644 index 0000000000..8f39797520 --- /dev/null +++ b/network/analyzer/component.xml @@ -0,0 +1,3 @@ + + network.analyzer + diff --git a/x11/library/freeglut/actions.py b/x11/library/freeglut/actions.py new file mode 100644 index 0000000000..4316ca50f8 --- /dev/null +++ b/x11/library/freeglut/actions.py @@ -0,0 +1,38 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt. + +from pisi.actionsapi import cmaketools +from pisi.actionsapi import shelltools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + options = "\-DCMAKE_BUILD_TYPE=Release \ + " + + if get.buildTYPE() == "emul32": + + shelltools.export("CFLAGS", "-m32") + shelltools.export("CXXFLAGS", "-m32") + + options += "-DCMAKE_INSTALL_LIBDIR=lib32 \ + " + + elif get.ARCH() == "x86_64": + + options += "-DCMAKE_INSTALL_LIBDIR=lib \ + " + + cmaketools.configure(options) + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() + + pisitools.dodoc("AUTHORS", "ChangeLog", "README") + pisitools.dohtml("doc/*") diff --git a/x11/library/freeglut/pspec.xml b/x11/library/freeglut/pspec.xml new file mode 100644 index 0000000000..61e7a2234b --- /dev/null +++ b/x11/library/freeglut/pspec.xml @@ -0,0 +1,121 @@ + + + + + freeglut + http://freeglut.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + The OpenGL Utility Toolkit (Freeglut) + Freeglut is the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL programs. It implements a simple windowing application programming interface (API) for OpenGL. Freeglut makes it considerably easier to learn about and explore OpenGL Programming. + mirrors://sourceforge/freeglut/freeglut-3.0.0.tar.gz + + mesa-devel + libX11-devel + libXi-devel + libXxf86vm-devel + libXext-devel + libXrandr-devel + cmake + + + + + freeglut + + mesa + libX11 + libXi + libXxf86vm + libXrandr + + + /usr/lib + /usr/share/doc/freeglut + + + + + freeglut-devel + Development files for freeglut + + freeglut + + + /usr/include + + + + + freeglut-32bit + emul32 + 32-bit shared libraries for freeglut + emul32 + + mesa-32bit + libXi-32bit + libX11-32bit + libXxf86vm-32bit + libXrandr-32bit + + + freeglut + mesa-32bit + libXi-32bit + libXxf86vm-32bit + libX11-32bit + libXrandr-32bit + + + /usr/lib32 + + + + + 2015-04-27 + 3.0.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-16 + 2.8.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-25 + 2.8.1 + rebuild unused + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-08 + 2.8.1 + verbump to 2.8.1 , Rebuild, clean emul32 installation. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-25 + 2.8.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-13 + 2.8.0 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/x11/library/freeglut/translations.xml b/x11/library/freeglut/translations.xml new file mode 100644 index 0000000000..ebee90b5e2 --- /dev/null +++ b/x11/library/freeglut/translations.xml @@ -0,0 +1,20 @@ + + + + freeglut + OpenGL Araç Kiti (Freeglut) + Freeglut, OpenGL programlarını yazmak için bağımsız araç kutusu pencere sistemin olan bir OpenGL Hizmeti Araç Takımıdır. OpenGl için basit bir pencere uygulama proglaması arayüzü (API) sağlar. Freeglut, OpenGL Programlamasını keşfetmek öğrenmek isteyenler için kolaylıklar sağlar. + Freeglut est la boîte à outils utilitaire d'OpenGL, une boîte à outils indépendante du système de fenêtrage pour écrire des programmes OpenGL. Il implémente une Interface de Programmation d'Application (API) de fenêtrage pour OpenGL. Freeglut facilite considérablement l'apprentissage et l'exploration de la programmation en OpenGL. + Freeglut es la caja de herramientas de OpenGL, con herramientas para crear programas OpenGL, independientemente del sistema de ventanas. Facilita una simple interfaz de programación de aplicaciones (API) con ventanas para OpanGL. Freeglut facilita considerablemente el aprendizaje y exploración de la programación OpenGL. + + + + freeglut-devel + freeglut için geliştirme dosyaları + + + + freeglut-32bit + freeglut için 32-bit paylaşımlı kitaplıklar + + From df3f44cf15da1c84cd35849d266fbab053428c33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 13:44:19 +0300 Subject: [PATCH 130/175] qt5-base, fix for build emul32 --- desktop/toolkit/qt5/qt5-base/pspec.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/desktop/toolkit/qt5/qt5-base/pspec.xml b/desktop/toolkit/qt5/qt5-base/pspec.xml index bedbc2ea4c..b90da92c37 100644 --- a/desktop/toolkit/qt5/qt5-base/pspec.xml +++ b/desktop/toolkit/qt5/qt5-base/pspec.xml @@ -181,10 +181,8 @@ 32-bit shared libraries for qt5 emul32 - cups-32bit dbus-32bit - qt5-base-devel gtk2-32bit mesa-32bit zlib-32bit @@ -196,7 +194,7 @@ libdrm-32bit libpng-32bit sqlite-32bit - libudev-32bit + eudev-32bit openssl-32bit freetype-32bit harfbuzz-32bit @@ -204,6 +202,7 @@ fontconfig-32bit libXrender-32bit libjpeg-turbo-32bit + libgcc libpcre From 7f4b81c8c6aa6c233602257a835dde546145e9ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 14:02:14 +0300 Subject: [PATCH 131/175] gtk2-engines-murrine fix deps --- desktop/lookandfeel/gtk2-engines-murrine/pspec.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/desktop/lookandfeel/gtk2-engines-murrine/pspec.xml b/desktop/lookandfeel/gtk2-engines-murrine/pspec.xml index 32bd2fbaeb..48a2f9fc0c 100644 --- a/desktop/lookandfeel/gtk2-engines-murrine/pspec.xml +++ b/desktop/lookandfeel/gtk2-engines-murrine/pspec.xml @@ -16,6 +16,10 @@ gtk2-devel glib2-devel + cairo-devel + pango-devel + pixman-devel + gdk-pixbuf-devel intltool @@ -26,6 +30,10 @@ gtk2 glib2 + cairo + pango + pixman + gdk-pixbuf /usr/lib From d0abdc241d231a104567385dd07cdeb8df9fca2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 14:10:48 +0300 Subject: [PATCH 132/175] remove space --- desktop/toolkit/qt5/qt5-base/pspec.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/toolkit/qt5/qt5-base/pspec.xml b/desktop/toolkit/qt5/qt5-base/pspec.xml index b90da92c37..ba14cbf991 100644 --- a/desktop/toolkit/qt5/qt5-base/pspec.xml +++ b/desktop/toolkit/qt5/qt5-base/pspec.xml @@ -18,7 +18,7 @@ dbus-devel zlib-devel glib2-devel - libpcre-devel + libpcre-devel desktop-file-utils fontconfig-devel gperf From 9833004480bbb5dd846db5b79c1863435149baaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 15:05:34 +0300 Subject: [PATCH 133/175] qt5-base in repo --- desktop/toolkit/qt5/qt5-base/pspec.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/desktop/toolkit/qt5/qt5-base/pspec.xml b/desktop/toolkit/qt5/qt5-base/pspec.xml index ba14cbf991..fd200c8aa5 100644 --- a/desktop/toolkit/qt5/qt5-base/pspec.xml +++ b/desktop/toolkit/qt5/qt5-base/pspec.xml @@ -74,6 +74,8 @@ qt5-base + libpcre + libgcc cups dbus gtk2 @@ -89,7 +91,7 @@ libdrm libpng libxcb - libudev + eudev openssl freetype harfbuzz @@ -135,6 +137,7 @@ qt5-sql-mysql qt5-base + libgcc mariadb-lib @@ -146,6 +149,7 @@ qt5-sql-postgresql qt5-base + libgcc postgresql-lib @@ -157,6 +161,7 @@ qt5-sql-sqlite qt5-base + libgcc sqlite @@ -168,6 +173,7 @@ qt5-sql-odbc qt5-base + libgcc unixODBC @@ -220,7 +226,7 @@ libdrm-32bit libpng-32bit sqlite-32bit - libudev-32bit + eudev-32bit openssl-32bit freetype-32bit harfbuzz-32bit From a53ce5d7de0f559d1908e18c7cd6b54b0c611475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 15:10:03 +0300 Subject: [PATCH 134/175] qt5-xmlpatterns in repo --- desktop/toolkit/qt5/qt5-xmlpatterns/pspec.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/desktop/toolkit/qt5/qt5-xmlpatterns/pspec.xml b/desktop/toolkit/qt5/qt5-xmlpatterns/pspec.xml index f36dfec6d2..bf5a613e51 100644 --- a/desktop/toolkit/qt5/qt5-xmlpatterns/pspec.xml +++ b/desktop/toolkit/qt5/qt5-xmlpatterns/pspec.xml @@ -19,6 +19,10 @@ qt5-xmlpatterns + + qt5-base + libgcc + /usr/lib /usr/lib/qt5 @@ -26,9 +30,6 @@ /usr/lib/qt5/bin/ /usr/bin - - qt5-base - From a419578ef64ac34e6fb6065095c5069d529e91e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 15:54:41 +0300 Subject: [PATCH 135/175] works for qt5 --- desktop/gnome/base/component.xml | 3 + desktop/gnome/base/dconf/actions.py | 21 ++ desktop/gnome/base/dconf/pspec.xml | 96 +++++++ desktop/gnome/base/dconf/translations.xml | 9 + desktop/gnome/component.xml | 3 + desktop/toolkit/gtk/gtk3/actions.py | 61 ++++ desktop/toolkit/gtk/gtk3/comar/pakhandler.py | 41 +++ .../071_fix-installation-of-HTML-images.patch | 28 ++ .../files/073_treeview_almost_fixed.patch | 76 +++++ desktop/toolkit/gtk/gtk3/files/settings.ini | 4 + desktop/toolkit/gtk/gtk3/pspec.xml | 263 ++++++++++++++++++ desktop/toolkit/gtk/gtk3/translations.xml | 31 +++ .../toolkit/qt5/qt5-accountsservice/pspec.xml | 10 +- .../toolkit/qt5/qt5-configuration/pspec.xml | 12 +- desktop/toolkit/qt5/qt5-declarative/pspec.xml | 12 +- desktop/toolkit/qt5/qt5-enginio/pspec.xml | 11 +- .../qt5/qt5-graphicaleffects/pspec.xml | 8 +- .../toolkit/qt5/qt5-imageformats/pspec.xml | 12 +- desktop/toolkit/qt5/qt5-script/pspec.xml | 6 +- desktop/toolkit/qt5/qt5-x11extras/pspec.xml | 7 +- 20 files changed, 678 insertions(+), 36 deletions(-) create mode 100644 desktop/gnome/base/component.xml create mode 100644 desktop/gnome/base/dconf/actions.py create mode 100644 desktop/gnome/base/dconf/pspec.xml create mode 100644 desktop/gnome/base/dconf/translations.xml create mode 100644 desktop/gnome/component.xml create mode 100644 desktop/toolkit/gtk/gtk3/actions.py create mode 100644 desktop/toolkit/gtk/gtk3/comar/pakhandler.py create mode 100644 desktop/toolkit/gtk/gtk3/files/071_fix-installation-of-HTML-images.patch create mode 100644 desktop/toolkit/gtk/gtk3/files/073_treeview_almost_fixed.patch create mode 100644 desktop/toolkit/gtk/gtk3/files/settings.ini create mode 100644 desktop/toolkit/gtk/gtk3/pspec.xml create mode 100644 desktop/toolkit/gtk/gtk3/translations.xml diff --git a/desktop/gnome/base/component.xml b/desktop/gnome/base/component.xml new file mode 100644 index 0000000000..be92ed3ab9 --- /dev/null +++ b/desktop/gnome/base/component.xml @@ -0,0 +1,3 @@ + + desktop.gnome.base + diff --git a/desktop/gnome/base/dconf/actions.py b/desktop/gnome/base/dconf/actions.py new file mode 100644 index 0000000000..c8d97d3a6a --- /dev/null +++ b/desktop/gnome/base/dconf/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("COPYING", "NEWS") + diff --git a/desktop/gnome/base/dconf/pspec.xml b/desktop/gnome/base/dconf/pspec.xml new file mode 100644 index 0000000000..088156668b --- /dev/null +++ b/desktop/gnome/base/dconf/pspec.xml @@ -0,0 +1,96 @@ + + + + + dconf + http://live.gnome.org/dconf + + Pisi Linux Admins + admin@pisilinux.org + + GPLv2 + app:console + Simple low-level configuration system + dconf is a low-level configuration system. Its main purpose is to provide a backend to GSettings on platforms that don't already have configuration storage systems. + http://ftp.gnome.org/pub/gnome/sources/dconf/0.20/dconf-0.20.0.tar.xz + + dbus-devel + glib2-devel + libxml2-devel + gtk3-devel + pango-devel + + + + + dconf + + gtk3 + pango + + + /etc + /usr/share + /usr/lib + /usr/share/doc + /usr/bin + /usr/libexec + + + + + dconf-devel + Development files for dconf + + dconf + + + /usr/include + /usr/share/vala + /usr/lib/pkgconfig + + + + + dconf-docs + data:doc + Reference files for dconf + + dconf + + + /usr/share/gtk-doc + + + + + + 2014-06-14 + 0.20 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-29 + 0.18 + Version bump. + Richard de Bruin + richdb@pisilinux.org + + + 2013-07-31 + 0.16.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-21 + 0.15.2 + First release + PisiLinux Community + admins@pisilinux.org + + + \ No newline at end of file diff --git a/desktop/gnome/base/dconf/translations.xml b/desktop/gnome/base/dconf/translations.xml new file mode 100644 index 0000000000..57eca86d64 --- /dev/null +++ b/desktop/gnome/base/dconf/translations.xml @@ -0,0 +1,9 @@ + + + + dconf + Düşük seviyeli yapılandırma sistemi + FIXME + + + diff --git a/desktop/gnome/component.xml b/desktop/gnome/component.xml new file mode 100644 index 0000000000..679894d717 --- /dev/null +++ b/desktop/gnome/component.xml @@ -0,0 +1,3 @@ + + desktop.gnome + diff --git a/desktop/toolkit/gtk/gtk3/actions.py b/desktop/toolkit/gtk/gtk3/actions.py new file mode 100644 index 0000000000..90763b9448 --- /dev/null +++ b/desktop/toolkit/gtk/gtk3/actions.py @@ -0,0 +1,61 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + + +def setup(): + options = "--enable-x11-backend \ + --enable-xinerama \ + --enable-xkb \ + --disable-silent-rules \ + --disable-schemas-compile \ + --enable-introspection \ + --enable-gtk2-dependency \ + --disable-papi \ + --disable-wayland-backend \ + " + + shelltools.export("CFLAGS", get.CFLAGS().replace("-fomit-frame-pointer","")) + + if get.buildTYPE() == "_emul32": + options += " --libdir=/usr/lib32 \ + --bindir=/_emul32/bin \ + --sbindir=/_emul32/sbin \ + --enable-colord=no \ + " + + shelltools.export("CC", "%s -m32" % get.CC()) + shelltools.export("CXX", "%s -m32" % get.CC()) + shelltools.export("CFLAGS", "%s -m32" % get.CFLAGS().replace("-fomit-frame-pointer","")) + shelltools.export("CXXFLAGS", "%s -m32" % get.CFLAGS()) + shelltools.export("LDFLAGS", "%s -m32" % get.LDFLAGS()) + shelltools.export("PKG_CONFIG_PATH", "/usr/lib32/pkgconfig") + + pisitools.dosed("configure.ac", "cups-config", "cups-config-32bit") + + autotools.autoreconf("-fiv") + autotools.configure(options) + + pisitools.dosed("libtool", "( -shared )", r" -Wl,-O1,--as-needed\1") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + # remove empty dir + pisitools.removeDir("/usr/share/man") + pisitools.dodoc("AUTHORS", "README*", "HACKING", "ChangeLog*", "NEWS*") + + if get.buildTYPE() == "_emul32": + for binaries in ["gtk-query-immodules-3.0"]: + pisitools.domove("/_emul32/bin/%s" % binaries, "/usr/bin/", "%s-32bit" % binaries) + pisitools.removeDir("/_emul32") diff --git a/desktop/toolkit/gtk/gtk3/comar/pakhandler.py b/desktop/toolkit/gtk/gtk3/comar/pakhandler.py new file mode 100644 index 0000000000..c902fa4b79 --- /dev/null +++ b/desktop/toolkit/gtk/gtk3/comar/pakhandler.py @@ -0,0 +1,41 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import piksemel +import os +import fnmatch + +def updateData(filepath): + parse = piksemel.parse(filepath) + + iconFound = False + immoduleFound = False + + for icon in parse.tags("File"): + path = icon.getTagData("Path") + if path.startswith("usr/share/icons/hicolor") and not iconFound: + os.system("/usr/bin/gtk-update-icon-cache -f /usr/share/icons/hicolor") + iconFound = True + if immoduleFound: + return + + if fnmatch.fnmatch(path, "usr/lib/gtk-3.0/*immodules/*.so") and not immoduleFound: + os.system("/usr/bin/gtk-query-immodules-3.0 --update-cache") + immoduleFound = True + if iconFound: + return + + if fnmatch.fnmatch(path, "usr/lib32/gtk-3.0/*immodules/*.so") and not immoduleFound: + os.system("/usr/bin/gtk-query-immodules-3.0-32bit --update-cache") + immoduleFound = True + if iconFound: + return + +def setupPackage(metapath, filepath): + updateData(filepath) + +def cleanupPackage(metapath, filepath): + pass + +def postCleanupPackage(metapath, filepath): + updateData(filepath) diff --git a/desktop/toolkit/gtk/gtk3/files/071_fix-installation-of-HTML-images.patch b/desktop/toolkit/gtk/gtk3/files/071_fix-installation-of-HTML-images.patch new file mode 100644 index 0000000000..cf79ca77f5 --- /dev/null +++ b/desktop/toolkit/gtk/gtk3/files/071_fix-installation-of-HTML-images.patch @@ -0,0 +1,28 @@ +From 4c220ef6650afeba334570ad00db0a95c9ba38e6 Mon Sep 17 00:00:00 2001 +From: Michael Biebl +Date: Tue, 17 Apr 2012 13:29:09 +0200 +Subject: [PATCH] Fix installation of HTML images for absolute paths + +when using out-of-tree builds. + +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=674163 +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=656803 +--- + gtk-doc.make | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: gtk+-3.6.4/gtk-doc.make +=================================================================== +--- gtk+-3.6.4.orig/gtk-doc.make 2013-01-10 16:03:56.697595578 +1300 ++++ gtk+-3.6.4/gtk-doc.make 2013-01-10 16:03:56.693595578 +1300 +@@ -173,8 +173,8 @@ + if test -f $(abs_srcdir)/$$file ; then \ + cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ + fi; \ +- if test -f $(abs_builddir)/$$file ; then \ +- cp $(abs_builddir)/$$file $(abs_builddir)/html; \ ++ if test -f $$file ; then \ ++ cp $$file $(abs_builddir)/html; \ + fi; \ + done; + $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) diff --git a/desktop/toolkit/gtk/gtk3/files/073_treeview_almost_fixed.patch b/desktop/toolkit/gtk/gtk3/files/073_treeview_almost_fixed.patch new file mode 100644 index 0000000000..6a892b3d6d --- /dev/null +++ b/desktop/toolkit/gtk/gtk3/files/073_treeview_almost_fixed.patch @@ -0,0 +1,76 @@ +Description: "ubuntu-almost-fixed-height" private property to speed-up software-center +Bug: https://bugzilla.gnome.org/607447 +Bug-Ubuntu: https://launchpad.net/bugs/514879 + +=== modified file 'gtk/gtktreeview.c' +Index: gtk+-3.6.4/gtk/gtktreeview.c +=================================================================== +--- gtk+-3.6.4.orig/gtk/gtktreeview.c 2013-01-10 16:03:58.421595565 +1300 ++++ gtk+-3.6.4/gtk/gtktreeview.c 2013-01-10 16:03:58.417595565 +1300 +@@ -462,6 +462,7 @@ + + guint fixed_height_mode : 1; + guint fixed_height_check : 1; ++ guint ubuntu_almost_fixed_height_mode : 1; + + guint reorderable : 1; + guint header_has_focus : 1; +@@ -552,6 +553,7 @@ + PROP_ENABLE_SEARCH, + PROP_SEARCH_COLUMN, + PROP_FIXED_HEIGHT_MODE, ++ PROP_UBUNTU_ALMOST_FIXED_HEIGHT_MODE, + PROP_HOVER_SELECTION, + PROP_HOVER_EXPAND, + PROP_SHOW_EXPANDERS, +@@ -1075,6 +1077,15 @@ + P_("Speeds up GtkTreeView by assuming that all rows have the same height"), + FALSE, + GTK_PARAM_READWRITE)); ++ ++ /* Private ubuntu extension to fix bugzilla bug #607447 */ ++ g_object_class_install_property (o_class, ++ PROP_UBUNTU_ALMOST_FIXED_HEIGHT_MODE, ++ g_param_spec_boolean ("ubuntu-almost-fixed-height-mode", ++ "Private Ubuntu extension", ++ "Private Ubuntu extension", ++ FALSE, ++ GTK_PARAM_READWRITE)); + + /** + * GtkTreeView:hover-selection: +@@ -1736,6 +1747,7 @@ + tree_view->priv->fixed_height = -1; + tree_view->priv->fixed_height_mode = FALSE; + tree_view->priv->fixed_height_check = 0; ++ tree_view->priv->ubuntu_almost_fixed_height_mode = FALSE; + tree_view->priv->selection = _gtk_tree_selection_new_with_tree_view (tree_view); + tree_view->priv->enable_search = TRUE; + tree_view->priv->search_column = -1; +@@ -1828,6 +1840,9 @@ + case PROP_FIXED_HEIGHT_MODE: + gtk_tree_view_set_fixed_height_mode (tree_view, g_value_get_boolean (value)); + break; ++ case PROP_UBUNTU_ALMOST_FIXED_HEIGHT_MODE: ++ tree_view->priv->ubuntu_almost_fixed_height_mode = g_value_get_boolean (value); ++ break; + case PROP_HOVER_SELECTION: + tree_view->priv->hover_selection = g_value_get_boolean (value); + break; +@@ -8740,7 +8755,15 @@ + + _gtk_tree_view_accessible_changed (tree_view, tree, node); + +- if (tree_view->priv->fixed_height_mode ++ if (tree_view->priv->ubuntu_almost_fixed_height_mode ++ && tree_view->priv->fixed_height >= 0) ++ { ++ _gtk_rbtree_node_mark_invalid (tree, node); ++ validate_visible_area (tree_view); ++ if (gtk_widget_get_realized (GTK_WIDGET (tree_view))) ++ gtk_tree_view_node_queue_redraw (tree_view, tree, node); ++ } ++ else if (tree_view->priv->fixed_height_mode + && tree_view->priv->fixed_height >= 0) + { + _gtk_rbtree_node_set_height (tree, node, tree_view->priv->fixed_height); diff --git a/desktop/toolkit/gtk/gtk3/files/settings.ini b/desktop/toolkit/gtk/gtk3/files/settings.ini new file mode 100644 index 0000000000..36d8423477 --- /dev/null +++ b/desktop/toolkit/gtk/gtk3/files/settings.ini @@ -0,0 +1,4 @@ +[Settings] +gtk-icon-theme-name = Faenza +gtk-theme-name = MediterraneanLightDarkest +gtk-font-name = DejaVuSans 10 diff --git a/desktop/toolkit/gtk/gtk3/pspec.xml b/desktop/toolkit/gtk/gtk3/pspec.xml new file mode 100644 index 0000000000..30d4c5e723 --- /dev/null +++ b/desktop/toolkit/gtk/gtk3/pspec.xml @@ -0,0 +1,263 @@ + + + + + gtk3 + http://www.gtk.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + The GIMP Toolkit version 3 + GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. + mirrors://gnome/gtk+/3.14/gtk+-3.14.9.tar.xz + + atk-devel + cups-devel + at-spi2-atk-devel + pango-devel + librest-devel + json-glib-devel + libXi-devel + cairo-devel + colord-devel + libXext-devel + libXrandr-devel + libXfixes-devel + gdk-pixbuf-devel + fontconfig-devel + libXcursor-devel + libXdamage-devel + libXinerama-devel + libXcomposite-devel + + + 071_fix-installation-of-HTML-images.patch + + + + + + gtk3 + + atk + cups + pango + libXi + librest + json-glib + cairo + colord + libXext + libXrandr + libXfixes + gdk-pixbuf + fontconfig + libXcursor + libXdamage + libXinerama + at-spi2-atk + libXcomposite + dejavu-fonts + gtk-theme-mediterranean + + + /etc + /usr/bin + /usr/share/themes + /usr/share/gtk-3.0 + /usr/share/ + /usr/share/man + /usr/share/doc + /usr/lib + /usr/share/locale + + + + settings.ini + + + System.PackageHandler + + + + + gtk3-demo + app:gui + GTK demo application + + gtk3 + cairo + pango + gdk-pixbuf + + + /usr/bin/gtk3-demo + /usr/bin/gtk3-demo-application + + + + + gtk3-docs + data:doc + GTK reference documents + + /usr/share/doc/gtk3 + + + + + gtk3-devel + Development files for gtk3 + + gtk3 + atk-devel + pango-devel + libXi-devel + cairo-devel + libXext-devel + libXfixes-devel + libXrandr-devel + gdk-pixbuf-devel + fontconfig-devel + libXdamage-devel + libXcursor-devel + libXinerama-devel + at-spi2-atk-devel + libXcomposite-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/aclocal + /usr/share/gir-1.0 + + + + + gtk3-32bit + emul32 + 32-bit shared libraries for gtk3 + _emul32 + + atk-32bit + cups-32bit + glib2-32bit + cairo-32bit + pango-32bit + libXi-32bit + libX11-32bit + libXext-32bit + libXrandr-32bit + libXfixes-32bit + gdk-pixbuf-32bit + libXcursor-32bit + libXdamage-32bit + fontconfig-32bit + at-spi2-atk-32bit + libXinerama-32bit + libXcomposite-32bit + + + gtk3 + atk-32bit + cups-32bit + glib2-32bit + cairo-32bit + pango-32bit + librest-32bit + json-glib-32bit + libXi-32bit + libX11-32bit + libXext-32bit + libXrandr-32bit + libXfixes-32bit + gdk-pixbuf-32bit + libXcursor-32bit + libXdamage-32bit + fontconfig-32bit + at-spi2-atk-32bit + libXinerama-32bit + libXcomposite-32bit + + + /usr/bin/*-32bit + /usr/lib32 + + + + + + 2015-03-18 + 3.14.9 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-04-12 + 3.12.2 + Version Bump + PisiLinux Community + admins@pisilinux.org + + + 2014-04-06 + 3.10.7 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-02-05 + 3.10.7 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-21 + 3.10.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-11 + 3.10.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-09-05 + 3.8.2 + Add missing method and fix pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-27 + 3.8.2 + Dep Fixed + PisiLinux Community + admins@pisilinux.org + + + 2013-07-14 + 3.8.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-24 + 3.6.4 + First release + Ertan Güven + ertan@pisilinux.org + + + diff --git a/desktop/toolkit/gtk/gtk3/translations.xml b/desktop/toolkit/gtk/gtk3/translations.xml new file mode 100644 index 0000000000..3b3f58e3bd --- /dev/null +++ b/desktop/toolkit/gtk/gtk3/translations.xml @@ -0,0 +1,31 @@ + + + + gtk3 + GTK grafik arayüz kitaplığı versiyon 3 + GTK+, grafik kullanıcı arayüzü oluşturma amaçlı araçlardan oluşur. GTK+ hem küçük, hem de büyük uygulamalar için ideal olan, eksiksiz bir araçtır. + GTK+ est une boîte à outil multi-plateforme servant à créer des interfaces graphiques. Offrant un ensemble complet de widgets (objets graphiques), GTK+ convient aussi bien pour les petits projets que pour les suites complètes d'applications. + Wersja 3 bibliotek przeznaczonych do tworzenia interfejsów graficznych programów — GTK+. Interfejs GTK+ znany jest z takich programów, jak GIMP i Inkscape, oraz środowisk graficznych GNOME i Xfce. + + + + gtk3-demo + GTK demo uyulaması + + + + gtk3-docs + GTK referans dökümanları + + + + gtk3-devel + gtk3 için geliştirme dosyaları + Pliki nagłówkowe do gtk3 + + + + gtk3-32bit + gtk3 için 32-bit paylaşımlı kitaplıklar + + diff --git a/desktop/toolkit/qt5/qt5-accountsservice/pspec.xml b/desktop/toolkit/qt5/qt5-accountsservice/pspec.xml index b1a6216127..4707194f36 100644 --- a/desktop/toolkit/qt5/qt5-accountsservice/pspec.xml +++ b/desktop/toolkit/qt5/qt5-accountsservice/pspec.xml @@ -21,6 +21,11 @@ qt5-accountsservice + + libgcc + qt5-base + qt5-declarative + /usr/lib /usr/lib/qt5 @@ -29,11 +34,6 @@ /usr/lib/qt5/bin/ /usr/bin - - libgcc - qt5-base - qt5-declarative - diff --git a/desktop/toolkit/qt5/qt5-configuration/pspec.xml b/desktop/toolkit/qt5/qt5-configuration/pspec.xml index 0e783f4c1e..b0663ee1d2 100644 --- a/desktop/toolkit/qt5/qt5-configuration/pspec.xml +++ b/desktop/toolkit/qt5/qt5-configuration/pspec.xml @@ -22,6 +22,12 @@ qt5-configuration + + libgcc + glib2 + dconf + qt5-base + /usr/lib /usr/lib/qt5 @@ -30,12 +36,6 @@ /usr/lib/qt5/bin/ /usr/bin - - libgcc - glib2 - dconf - qt5-base - diff --git a/desktop/toolkit/qt5/qt5-declarative/pspec.xml b/desktop/toolkit/qt5/qt5-declarative/pspec.xml index 59be51eaad..0448a179d1 100644 --- a/desktop/toolkit/qt5/qt5-declarative/pspec.xml +++ b/desktop/toolkit/qt5/qt5-declarative/pspec.xml @@ -22,6 +22,12 @@ qt5-declarative + + libgcc + qt5-base + mesa + qt5-xmlpatterns + /usr/lib /usr/lib/qt5 @@ -29,11 +35,7 @@ /usr/lib/qt5/bin/ /usr/bin/ - - qt5-base - mesa - qt5-xmlpatterns - + diff --git a/desktop/toolkit/qt5/qt5-enginio/pspec.xml b/desktop/toolkit/qt5/qt5-enginio/pspec.xml index be0de0ac2c..07d5f8a2c7 100644 --- a/desktop/toolkit/qt5/qt5-enginio/pspec.xml +++ b/desktop/toolkit/qt5/qt5-enginio/pspec.xml @@ -13,6 +13,7 @@ LGPLv2.1-linking-exception http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtenginio-opensource-src-5.4.2.tar.xz + libgcc qt5-base-devel qt5-declarative-devel @@ -20,6 +21,11 @@ qt5-enginio + + libgcc + qt5-base + qt5-declarative + /usr/lib /usr/lib/qt5/ @@ -27,10 +33,7 @@ /usr/lib/qt5/bin/ /usr/bin/ - - qt5-base - qt5-declarative - + diff --git a/desktop/toolkit/qt5/qt5-graphicaleffects/pspec.xml b/desktop/toolkit/qt5/qt5-graphicaleffects/pspec.xml index 3ac16e116d..38a3bd09b6 100644 --- a/desktop/toolkit/qt5/qt5-graphicaleffects/pspec.xml +++ b/desktop/toolkit/qt5/qt5-graphicaleffects/pspec.xml @@ -20,16 +20,16 @@ qt5-graphicaleffects + + qt5-base + qt5-declarative + /usr/lib /usr/lib/qt5 /usr/share/licenses /usr/share/doc - - qt5-base - qt5-declarative - diff --git a/desktop/toolkit/qt5/qt5-imageformats/pspec.xml b/desktop/toolkit/qt5/qt5-imageformats/pspec.xml index 78d177dd2c..9f745e14b7 100644 --- a/desktop/toolkit/qt5/qt5-imageformats/pspec.xml +++ b/desktop/toolkit/qt5/qt5-imageformats/pspec.xml @@ -14,18 +14,13 @@ http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtimageformats-opensource-src-5.4.2.tar.xz qt5-base-devel - jasper-32bit + jasper-devel libmng-devel qt5-imageformats - - /usr/lib - /usr/lib/qt5 - /usr/share/licenses - qt5-base libmng @@ -33,6 +28,11 @@ webp jasper + + /usr/lib + /usr/lib/qt5 + /usr/share/licenses + diff --git a/desktop/toolkit/qt5/qt5-script/pspec.xml b/desktop/toolkit/qt5/qt5-script/pspec.xml index bebe313f8b..fec6c327e0 100644 --- a/desktop/toolkit/qt5/qt5-script/pspec.xml +++ b/desktop/toolkit/qt5/qt5-script/pspec.xml @@ -31,13 +31,13 @@ qt5-script-devel + + qt5-base-devel + /usr/lib/pkgconfig /usr/include/qt5 - - qt5-base-devel - diff --git a/desktop/toolkit/qt5/qt5-x11extras/pspec.xml b/desktop/toolkit/qt5/qt5-x11extras/pspec.xml index 3503dc4da4..7dbf3a143d 100644 --- a/desktop/toolkit/qt5/qt5-x11extras/pspec.xml +++ b/desktop/toolkit/qt5/qt5-x11extras/pspec.xml @@ -14,19 +14,20 @@ http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtx11extras-opensource-src-5.4.2.tar.xz qt5-base-devel + mesa-devel qt5-x11extras + + qt5-base + /usr/lib /usr/lib/qt5 /usr/share/licenses - - qt5-base - From 283483754f3645e4af264eaab210b4b62e615963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Sun, 5 Jul 2015 16:13:06 +0300 Subject: [PATCH 136/175] qt5-script in repo --- desktop/toolkit/qt5/qt5-script/pspec.xml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/desktop/toolkit/qt5/qt5-script/pspec.xml b/desktop/toolkit/qt5/qt5-script/pspec.xml index fec6c327e0..6fa21a07ee 100644 --- a/desktop/toolkit/qt5/qt5-script/pspec.xml +++ b/desktop/toolkit/qt5/qt5-script/pspec.xml @@ -14,19 +14,23 @@ http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtscript-opensource-src-5.4.2.tar.xz qt5-base-devel + mesa-devel + libgcc qt5-script + + qt5-base + libgcc + /usr/lib /usr/lib/qt5 /usr/share/licenses - - qt5-base - + From ff6f176c59bfe441dd57283455651c2d02585679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 6 Jul 2015 01:45:02 +0300 Subject: [PATCH 137/175] qt5-imqgeformats and deps is ready --- .../toolkit/qt5/qt5-imageformats/pspec.xml | 4 + multimedia/graphics/libmng/pspec.xml | 11 +- multimedia/graphics/webp/pspec.xml | 3 +- x11/library/freeglut/actions.py | 3 +- x11/library/freeglut/pspec.xml | 3 + x11/library/mesa-glu/actions.py | 21 ++++ x11/library/mesa-glu/pspec.xml | 105 ++++++++++++++++++ x11/library/mesa-glu/translations.xml | 15 +++ 8 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 x11/library/mesa-glu/actions.py create mode 100644 x11/library/mesa-glu/pspec.xml create mode 100644 x11/library/mesa-glu/translations.xml diff --git a/desktop/toolkit/qt5/qt5-imageformats/pspec.xml b/desktop/toolkit/qt5/qt5-imageformats/pspec.xml index 9f745e14b7..c7993cff18 100644 --- a/desktop/toolkit/qt5/qt5-imageformats/pspec.xml +++ b/desktop/toolkit/qt5/qt5-imageformats/pspec.xml @@ -16,6 +16,9 @@ qt5-base-devel jasper-devel libmng-devel + zlib-devel + tiff-devel + webp-devel @@ -23,6 +26,7 @@ qt5-imageformats qt5-base + libgcc libmng tiff webp diff --git a/multimedia/graphics/libmng/pspec.xml b/multimedia/graphics/libmng/pspec.xml index c381ad2c9b..d986b728d7 100644 --- a/multimedia/graphics/libmng/pspec.xml +++ b/multimedia/graphics/libmng/pspec.xml @@ -14,7 +14,8 @@ Libmng -The reference library for reading, displaying, writing and examining Multiple-Image Network Graphics. MNG is the animation extension to the popular PNG image-format. http://sourceforge.net/projects/libmng/files/libmng-devel/2.0.2/libmng-2.0.2.tar.gz - lcms-devel + zlib-devel + lcms2-devel libjpeg-turbo-devel @@ -22,6 +23,7 @@ libmng + zlib libjpeg-turbo lcms2 @@ -47,10 +49,17 @@ emul32 32-bit shared libraries for libmng emul32 + + zlib-32bit + lcms2-32bit + libjpeg-turbo-32bit + glibc-32bit + zlib-32bit lcms2-32bit libjpeg-turbo-32bit + glibc-32bit libmng diff --git a/multimedia/graphics/webp/pspec.xml b/multimedia/graphics/webp/pspec.xml index 8c429afb5f..a1409f8319 100644 --- a/multimedia/graphics/webp/pspec.xml +++ b/multimedia/graphics/webp/pspec.xml @@ -15,9 +15,10 @@ http://downloads.webmproject.org/releases/webp/libwebp-0.4.3.tar.gz mesa-devel + mesa-glu-devel + libpng-devel tiff-devel giflib-devel - mesa-glu-devel freeglut-devel libjpeg-turbo-devel diff --git a/x11/library/freeglut/actions.py b/x11/library/freeglut/actions.py index 4316ca50f8..e9f39ec4fa 100644 --- a/x11/library/freeglut/actions.py +++ b/x11/library/freeglut/actions.py @@ -11,6 +11,7 @@ from pisi.actionsapi import get def setup(): options = "\-DCMAKE_BUILD_TYPE=Release \ + -DFREEGLUT_BUILD_DEMOS=OFF \ " if get.buildTYPE() == "emul32": @@ -18,7 +19,7 @@ def setup(): shelltools.export("CFLAGS", "-m32") shelltools.export("CXXFLAGS", "-m32") - options += "-DCMAKE_INSTALL_LIBDIR=lib32 \ + options += "-DCMAKE_INSTALL_LIBDIR=lib32 -DFREEGLUT_BUILD_DEMOS=OFF \ " elif get.ARCH() == "x86_64": diff --git a/x11/library/freeglut/pspec.xml b/x11/library/freeglut/pspec.xml index 61e7a2234b..ed972f413d 100644 --- a/x11/library/freeglut/pspec.xml +++ b/x11/library/freeglut/pspec.xml @@ -15,6 +15,7 @@ mirrors://sourceforge/freeglut/freeglut-3.0.0.tar.gz mesa-devel + mesa-glu-devel libX11-devel libXi-devel libXxf86vm-devel @@ -57,6 +58,7 @@ emul32 mesa-32bit + mesa-glu-32bit libXi-32bit libX11-32bit libXxf86vm-32bit @@ -64,6 +66,7 @@ freeglut + glibc-32bit mesa-32bit libXi-32bit libXxf86vm-32bit diff --git a/x11/library/mesa-glu/actions.py b/x11/library/mesa-glu/actions.py new file mode 100644 index 0000000000..ed7dcd78a7 --- /dev/null +++ b/x11/library/mesa-glu/actions.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def check(): + autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) diff --git a/x11/library/mesa-glu/pspec.xml b/x11/library/mesa-glu/pspec.xml new file mode 100644 index 0000000000..bc68244c45 --- /dev/null +++ b/x11/library/mesa-glu/pspec.xml @@ -0,0 +1,105 @@ + + + + + mesa-glu + http://www.mesa3d.org + + PisiLinux Community + admins@pisilinux.org + + MIT + library + Mesa OpenGL Utility library + Mesa implementation of the standard GLU OpenGL utility API. + ftp://ftp.freedesktop.org/pub/mesa/glu/glu-9.0.0.tar.gz + + mesa-devel + libgcc + + + + + mesa-glu + + mesa + libgcc + + + /usr/lib + + + + + mesa-glu-devel + Development files for mesa-glu + + mesa-glu + mesa-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + mesa-glu-32bit + emul32 + 32-bit shared libraries for mesa-glu + emul32 + + mesa-32bit + libgcc + glibc-32bit + + + mesa-glu + mesa-32bit + libgcc + glibc-32bit + + + /usr/lib32 + + + + + + 2015-01-22 + 9.0.0 + Release bump. + Ergün Salman + Poyraz76@pisilinux.org + + + 2014-05-16 + 9.0.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 9.0.0 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 9.0.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-13 + 9.0.0 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/x11/library/mesa-glu/translations.xml b/x11/library/mesa-glu/translations.xml new file mode 100644 index 0000000000..c1ec79f642 --- /dev/null +++ b/x11/library/mesa-glu/translations.xml @@ -0,0 +1,15 @@ + + + + + + + mesa-glu-devel + mesa-glu için geliştirme dosyaları + + + + mesa-glu-32bit + mesa-glu için 32-bit paylaşımlı kitaplıklar + + From ba95c746525633d1472f9b2d4c418e7344a46e5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 6 Jul 2015 08:31:59 +0300 Subject: [PATCH 138/175] qt5-svg fix deps --- desktop/toolkit/qt5/qt5-svg/pspec.xml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/desktop/toolkit/qt5/qt5-svg/pspec.xml b/desktop/toolkit/qt5/qt5-svg/pspec.xml index a11a0fff0a..2e1f3852c3 100644 --- a/desktop/toolkit/qt5/qt5-svg/pspec.xml +++ b/desktop/toolkit/qt5/qt5-svg/pspec.xml @@ -14,31 +14,34 @@ http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtsvg-opensource-src-5.4.2.tar.xz qt5-base-devel + zlib-devel + mesa-devel qt5-svg + + zlib + libgcc + qt5-base + /usr/lib /usr/lib/qt5 /usr/share/licenses/ - - mesa - qt5-base - qt5-svg-devel + + qt5-base-devel + /usr/lib/pkgconfig /usr/include/qt5/ - - qt5-base-devel - From 423709cc6ec9d13ede33530b19450de95d9ec141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 6 Jul 2015 09:47:15 +0300 Subject: [PATCH 139/175] DirectFB fix build. --- multimedia/misc/DirectFB/actions.py | 1 - multimedia/misc/DirectFB/pspec.xml | 17 +- multimedia/sound/flac/actions.py | 35 +++++ multimedia/sound/flac/pspec.xml | 111 +++++++++++++ multimedia/sound/flac/translations.xml | 23 +++ multimedia/sound/libao/actions.py | 35 +++++ multimedia/sound/libao/pspec.xml | 82 ++++++++++ multimedia/sound/libao/translations.xml | 13 ++ multimedia/sound/libmad/actions.py | 27 ++++ .../sound/libmad/files/amd64-64bit.diff | 10 ++ .../files/libmad-0.15.1b-cflags-O2.patch | 12 ++ .../libmad/files/libmad-0.15.1b-cflags.patch | 146 ++++++++++++++++++ multimedia/sound/libmad/files/mad.pc | 11 ++ multimedia/sound/libmad/pspec.xml | 69 +++++++++ multimedia/sound/libmad/translations.xml | 14 ++ multimedia/sound/libogg/actions.py | 21 +++ multimedia/sound/libogg/pspec.xml | 82 ++++++++++ multimedia/sound/libogg/translations.xml | 14 ++ multimedia/sound/libvorbis/actions.py | 23 +++ multimedia/sound/libvorbis/pspec.xml | 90 +++++++++++ multimedia/sound/libvorbis/translations.xml | 14 ++ multimedia/sound/vorbis-tools/actions.py | 32 ++++ multimedia/sound/vorbis-tools/pspec.xml | 60 +++++++ .../sound/vorbis-tools/translations.xml | 8 + 24 files changed, 946 insertions(+), 4 deletions(-) create mode 100644 multimedia/sound/flac/actions.py create mode 100644 multimedia/sound/flac/pspec.xml create mode 100644 multimedia/sound/flac/translations.xml create mode 100644 multimedia/sound/libao/actions.py create mode 100644 multimedia/sound/libao/pspec.xml create mode 100644 multimedia/sound/libao/translations.xml create mode 100644 multimedia/sound/libmad/actions.py create mode 100644 multimedia/sound/libmad/files/amd64-64bit.diff create mode 100644 multimedia/sound/libmad/files/libmad-0.15.1b-cflags-O2.patch create mode 100644 multimedia/sound/libmad/files/libmad-0.15.1b-cflags.patch create mode 100644 multimedia/sound/libmad/files/mad.pc create mode 100644 multimedia/sound/libmad/pspec.xml create mode 100644 multimedia/sound/libmad/translations.xml create mode 100644 multimedia/sound/libogg/actions.py create mode 100644 multimedia/sound/libogg/pspec.xml create mode 100644 multimedia/sound/libogg/translations.xml create mode 100644 multimedia/sound/libvorbis/actions.py create mode 100644 multimedia/sound/libvorbis/pspec.xml create mode 100644 multimedia/sound/libvorbis/translations.xml create mode 100644 multimedia/sound/vorbis-tools/actions.py create mode 100644 multimedia/sound/vorbis-tools/pspec.xml create mode 100644 multimedia/sound/vorbis-tools/translations.xml diff --git a/multimedia/misc/DirectFB/actions.py b/multimedia/misc/DirectFB/actions.py index 9c928c1a20..f785a5d01d 100644 --- a/multimedia/misc/DirectFB/actions.py +++ b/multimedia/misc/DirectFB/actions.py @@ -18,7 +18,6 @@ def setup(): --enable-gif \ --enable-freetype \ --enable-multi \ - --enable-sysfs \ --disable-sdl \ --disable-multi \ --disable-debug \ diff --git a/multimedia/misc/DirectFB/pspec.xml b/multimedia/misc/DirectFB/pspec.xml index aeaba3efcd..c44b2a2afb 100644 --- a/multimedia/misc/DirectFB/pspec.xml +++ b/multimedia/misc/DirectFB/pspec.xml @@ -14,15 +14,25 @@ DirectFB is a thin library that provides hardware graphics acceleration, input device handling and abstraction, integrated windowing system with support for translucent windows and multiple display layers. http://www.directfb.org/downloads/Core/DirectFB-1.7/DirectFB-1.7.1.tar.gz + libgcc giflib-devel libX11-devel + zlib-devel + tiff-devel + jasper-devel + freetype-devel + libpng-devel libXext-devel mesa-devel + webp-devel mesa-glu-devel libdrm-devel libjpeg-turbo-devel libmng-devel + lcms2-devel libvdpau-devel + libmad-devel + libvorbis-devel @@ -41,14 +51,15 @@ DirectFB - giflib + zlib + libgcc + libpng + freetype libX11 libXext mesa - mesa-glu libdrm libjpeg-turbo - libmng libvdpau webp tiff diff --git a/multimedia/sound/flac/actions.py b/multimedia/sound/flac/actions.py new file mode 100644 index 0000000000..0794824e66 --- /dev/null +++ b/multimedia/sound/flac/actions.py @@ -0,0 +1,35 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get +from pisi.actionsapi import shelltools + +def setup(): + options = "--with-pic \ + --enable-ogg \ + --enable-sse \ + --disable-doxygen-docs \ + --disable-dependency-tracking \ + --disable-xmms-plugin \ + --disable-static" + + autotools.autoconf() + autotools.configure(options) + +def build(): + autotools.make() + +#def check(): + #autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.removeDir("/usr/share/doc/") + + pisitools.dohtml("doc/html/*") diff --git a/multimedia/sound/flac/pspec.xml b/multimedia/sound/flac/pspec.xml new file mode 100644 index 0000000000..7f34135441 --- /dev/null +++ b/multimedia/sound/flac/pspec.xml @@ -0,0 +1,111 @@ + + + + + flac + http://flac.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + LGPLv2.1 + app:console + An encoder/decoder for the Free Lossless Audio Codec + flac is the Free Lossless Audio Codec. The FLAC format supports streaming, seeking, and archival, and gives 25-75% compression on typical CD audio. This package contains tools and libraries to work with and support for files in FLAC format. + http://downloads.xiph.org/releases/flac/flac-1.3.1.tar.xz + + libogg-devel + + + + + flac + + libogg + libgcc + + + /usr/bin + /usr/lib + /usr/share/man + + + + + flac-docs + Documentation for flac + + flac + + + /usr/share/doc + + + + + flac-devel + Development files for flac + + libogg-devel + flac + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/aclocal + + + + + flac-32bit + emul32 + 32-bit shared libraries for flac + emul32 + + libogg-32bit + glibc-32bit + + + libogg-32bit + libgcc + glibc-32bit + flac + + + /usr/lib32 + + + + + + 2014-12-03 + 1.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-05-21 + 1.3.0 + Rebuild + Kamil Atlı + suvarice@gmail.com + + + 2013-11-16 + 1.3.0 + Version bump + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2011-03-01 + 1.2.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/sound/flac/translations.xml b/multimedia/sound/flac/translations.xml new file mode 100644 index 0000000000..1755e43723 --- /dev/null +++ b/multimedia/sound/flac/translations.xml @@ -0,0 +1,23 @@ + + + + flac + Özgür Kayıpsız Ses Kodlaması için kodlayıcı/çözücü araçları + flac bir Özgür Kayıpsız Ses Kodlaması'dır. (Free Lossless Audio Codec) FLAC biçemi akan görüntü, arama ve arşivleme ve tipik bir Ses CD'sinde %25-75 sıkıştırmayı destekler. + + + + flac-docs + flac ile ilgili belgeler + + + + flac-devel + flac için geliştirme dosyaları + + + + flac-32bit + flac için 32-bit paylaşımlı kitaplıklar + + diff --git a/multimedia/sound/libao/actions.py b/multimedia/sound/libao/actions.py new file mode 100644 index 0000000000..69eaa6bae8 --- /dev/null +++ b/multimedia/sound/libao/actions.py @@ -0,0 +1,35 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import libtools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vfi") + # libtools.libtoolize("--force --install") + autotools.configure("--disable-dependency-tracking \ + --enable-alsa \ + --enable-alsa-mmap \ + --enable-pulse \ + --disable-arts \ + --disable-esd \ + --disable-nas \ + --enable-shared \ + --disable-static") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + pisitools.removeDir("/usr/share/doc") + + pisitools.dohtml("doc/*") + pisitools.dodoc("AUTHORS", "CHANGES", "README", "TODO") diff --git a/multimedia/sound/libao/pspec.xml b/multimedia/sound/libao/pspec.xml new file mode 100644 index 0000000000..3e5aba7aa7 --- /dev/null +++ b/multimedia/sound/libao/pspec.xml @@ -0,0 +1,82 @@ + + + + + libao + http://www.xiph.org/ao/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + The audio output library + Libao is a cross platform audio output library. It currently supports ESD, OSS, Solaris, and IRIX. + http://downloads.xiph.org/releases/ao/libao-1.2.0.tar.gz + + alsa-lib-devel + pulseaudio-libs-devel + + + + + + libao + + alsa-lib + pulseaudio-libs + + + /usr/lib + /usr/share/doc + /usr/share/man + + + + + libao-devel + Development files for libao + + libao + + + /usr/include/ao + /usr/lib/pkgconfig + /usr/share/aclocal + /usr/share/doc/libao/html + + + + + + 2014-05-26 + 1.2.0 + version bump + Kamil Atlı + suvarice@gmail.com + + + 2014-02-25 + 1.1.0 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-10-14 + 1.1.0 + Rebuild + PisiLinux Community + admins@pisilinux.org + + + 2012-08-31 + 1.1.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/multimedia/sound/libao/translations.xml b/multimedia/sound/libao/translations.xml new file mode 100644 index 0000000000..8d0f51c2c7 --- /dev/null +++ b/multimedia/sound/libao/translations.xml @@ -0,0 +1,13 @@ + + + + libao + Ses çıktısı kütüphanesi + La librairie de rendu (sortie) audio. + + + + libao-devel + libao için geliştirme dosyaları + + diff --git a/multimedia/sound/libmad/actions.py b/multimedia/sound/libmad/actions.py new file mode 100644 index 0000000000..379741c6f4 --- /dev/null +++ b/multimedia/sound/libmad/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +def setup(): + pisitools.cflags.add("-ftree-vectorize -ftree-vectorizer-verbose=1") + for i in ["NEWS", "AUTHORS", "ChangeLog"]: + shelltools.touch(i) + + autotools.autoreconf("-vfi") + + autotools.configure("--disable-debugging \ + --disable-static") + +def build(): + autotools.make() + +def install(): + autotools.install() + + pisitools.dodoc("CHANGES", "COPYRIGHT", "CREDITS", "README", "TODO", "VERSION") diff --git a/multimedia/sound/libmad/files/amd64-64bit.diff b/multimedia/sound/libmad/files/amd64-64bit.diff new file mode 100644 index 0000000000..fd36a6f20a --- /dev/null +++ b/multimedia/sound/libmad/files/amd64-64bit.diff @@ -0,0 +1,10 @@ +--- configure.ac.orig 2004-01-23 11:41:32.000000000 +0200 ++++ configure.ac 2014-05-21 14:28:19.470907858 +0300 +@@ -298,6 +298,7 @@ + case "$host" in + i?86-*) FPM="INTEL" ;; + arm*-*) FPM="ARM" ;; ++ x86_64*) FPM="64BIT" ;; + mips*-*) FPM="MIPS" ;; + sparc*-*) FPM="SPARC" ;; + powerpc*-*) FPM="PPC" ;; diff --git a/multimedia/sound/libmad/files/libmad-0.15.1b-cflags-O2.patch b/multimedia/sound/libmad/files/libmad-0.15.1b-cflags-O2.patch new file mode 100644 index 0000000000..61b4b13bd7 --- /dev/null +++ b/multimedia/sound/libmad/files/libmad-0.15.1b-cflags-O2.patch @@ -0,0 +1,12 @@ +diff -Naur libmad-0.15.1b-orig/configure.ac libmad-0.15.1b/configure.ac +--- libmad-0.15.1b-orig/configure.ac 2007-07-01 12:58:13.000000000 -0600 ++++ libmad-0.15.1b/configure.ac 2007-07-01 12:59:13.000000000 -0600 +@@ -105,7 +105,7 @@ + shift + ;; + -O2) +- optimize="-O" ++ optimize="-O2" + shift + ;; + -fomit-frame-pointer) diff --git a/multimedia/sound/libmad/files/libmad-0.15.1b-cflags.patch b/multimedia/sound/libmad/files/libmad-0.15.1b-cflags.patch new file mode 100644 index 0000000000..2ec44e3445 --- /dev/null +++ b/multimedia/sound/libmad/files/libmad-0.15.1b-cflags.patch @@ -0,0 +1,146 @@ +diff -Naur libmad-0.15.1b-orig/configure.ac libmad-0.15.1b/configure.ac +--- libmad-0.15.1b-orig/configure.ac 2007-06-30 20:22:31.000000000 -0600 ++++ libmad-0.15.1b/configure.ac 2007-06-30 20:25:31.000000000 -0600 +@@ -122,74 +122,74 @@ + esac + done + +-if test "$GCC" = yes +-then +- if test -z "$arch" +- then +- case "$host" in +- i386-*) ;; +- i?86-*) arch="-march=i486" ;; +- arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;; +- armv4*-*) arch="-march=armv4 -mtune=strongarm" ;; +- powerpc-*) ;; +- mips*-agenda-*) arch="-mcpu=vr4100" ;; +- mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;; +- esac +- fi +- +- case "$optimize" in +- -O|"-O "*) +- optimize="-O" +- optimize="$optimize -fforce-mem" +- optimize="$optimize -fforce-addr" +- : #x optimize="$optimize -finline-functions" +- : #- optimize="$optimize -fstrength-reduce" +- optimize="$optimize -fthread-jumps" +- optimize="$optimize -fcse-follow-jumps" +- optimize="$optimize -fcse-skip-blocks" +- : #x optimize="$optimize -frerun-cse-after-loop" +- : #x optimize="$optimize -frerun-loop-opt" +- : #x optimize="$optimize -fgcse" +- optimize="$optimize -fexpensive-optimizations" +- optimize="$optimize -fregmove" +- : #* optimize="$optimize -fdelayed-branch" +- : #x optimize="$optimize -fschedule-insns" +- optimize="$optimize -fschedule-insns2" +- : #? optimize="$optimize -ffunction-sections" +- : #? optimize="$optimize -fcaller-saves" +- : #> optimize="$optimize -funroll-loops" +- : #> optimize="$optimize -funroll-all-loops" +- : #x optimize="$optimize -fmove-all-movables" +- : #x optimize="$optimize -freduce-all-givs" +- : #? optimize="$optimize -fstrict-aliasing" +- : #* optimize="$optimize -fstructure-noalias" +- +- case "$host" in +- arm*-*) +- optimize="$optimize -fstrength-reduce" +- ;; +- mips*-*) +- optimize="$optimize -fstrength-reduce" +- optimize="$optimize -finline-functions" +- ;; +- i?86-*) +- optimize="$optimize -fstrength-reduce" +- ;; +- powerpc-apple-*) +- # this triggers an internal compiler error with gcc2 +- : #optimize="$optimize -fstrength-reduce" +- +- # this is really only beneficial with gcc3 +- : #optimize="$optimize -finline-functions" +- ;; +- *) +- # this sometimes provokes bugs in gcc 2.95.2 +- : #optimize="$optimize -fstrength-reduce" +- ;; +- esac +- ;; +- esac +-fi ++#if test "$GCC" = yes ++#then ++# if test -z "$arch" ++# then ++# case "$host" in ++# i386-*) ;; ++# i?86-*) arch="-march=i486" ;; ++# arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;; ++# armv4*-*) arch="-march=armv4 -mtune=strongarm" ;; ++# powerpc-*) ;; ++# mips*-agenda-*) arch="-mcpu=vr4100" ;; ++# mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;; ++# esac ++# fi ++# ++# case "$optimize" in ++# -O|"-O "*) ++# optimize="-O" ++# optimize="$optimize -fforce-mem" ++# optimize="$optimize -fforce-addr" ++# : #x optimize="$optimize -finline-functions" ++# : #- optimize="$optimize -fstrength-reduce" ++# optimize="$optimize -fthread-jumps" ++# optimize="$optimize -fcse-follow-jumps" ++# optimize="$optimize -fcse-skip-blocks" ++# : #x optimize="$optimize -frerun-cse-after-loop" ++# : #x optimize="$optimize -frerun-loop-opt" ++# : #x optimize="$optimize -fgcse" ++# optimize="$optimize -fexpensive-optimizations" ++# optimize="$optimize -fregmove" ++# : #* optimize="$optimize -fdelayed-branch" ++# : #x optimize="$optimize -fschedule-insns" ++# optimize="$optimize -fschedule-insns2" ++# : #? optimize="$optimize -ffunction-sections" ++# : #? optimize="$optimize -fcaller-saves" ++# : #> optimize="$optimize -funroll-loops" ++# : #> optimize="$optimize -funroll-all-loops" ++# : #x optimize="$optimize -fmove-all-movables" ++# : #x optimize="$optimize -freduce-all-givs" ++# : #? optimize="$optimize -fstrict-aliasing" ++# : #* optimize="$optimize -fstructure-noalias" ++# ++# case "$host" in ++# arm*-*) ++# optimize="$optimize -fstrength-reduce" ++# ;; ++# mips*-*) ++# optimize="$optimize -fstrength-reduce" ++# optimize="$optimize -finline-functions" ++# ;; ++# i?86-*) ++# optimize="$optimize -fstrength-reduce" ++# ;; ++# powerpc-apple-*) ++# # this triggers an internal compiler error with gcc2 ++# : #optimize="$optimize -fstrength-reduce" ++# ++# # this is really only beneficial with gcc3 ++# : #optimize="$optimize -finline-functions" ++# ;; ++# *) ++# # this sometimes provokes bugs in gcc 2.95.2 ++# : #optimize="$optimize -fstrength-reduce" ++# ;; ++# esac ++# ;; ++# esac ++#fi + + case "$host" in + mips*-agenda-*) diff --git a/multimedia/sound/libmad/files/mad.pc b/multimedia/sound/libmad/files/mad.pc new file mode 100644 index 0000000000..14a66f5525 --- /dev/null +++ b/multimedia/sound/libmad/files/mad.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: mad +Description: MPEG Audio Decoder +Requires: +Version: 0.15.0b +Libs: -L${libdir} -lmad -lm +Cflags: -I${includedir} diff --git a/multimedia/sound/libmad/pspec.xml b/multimedia/sound/libmad/pspec.xml new file mode 100644 index 0000000000..f4d18e6d38 --- /dev/null +++ b/multimedia/sound/libmad/pspec.xml @@ -0,0 +1,69 @@ + + + + + libmad + http://mad.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + "M"peg "A"udio "D"ecoder library + libmad is an audio decoder library for MPEG based content. + mirrors://sourceforge/mad/libmad-0.15.1b.tar.gz + + amd64-64bit.diff + libmad-0.15.1b-cflags-O2.patch + libmad-0.15.1b-cflags.patch + + + + + libmad + + /usr/lib + /usr/share/doc + + + + + libmad-devel + Development files for libmad + + libmad + + + /usr/include + /usr/lib/pkgconfig + + + mad.pc + + + + + + 2014-05-20 + 0.15.1b + Rebuild, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-28 + 0.15.1b + Rebuild + Kamil Atlı + suvarice@gmail.com + + + 2010-10-12 + 0.15.1b + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/sound/libmad/translations.xml b/multimedia/sound/libmad/translations.xml new file mode 100644 index 0000000000..63edea7853 --- /dev/null +++ b/multimedia/sound/libmad/translations.xml @@ -0,0 +1,14 @@ + + + + libmad + Yüksek kaliteli MPEG ses çözücü kütüphanesi + Librairie de "D"écompression "A"udio "M"peg ("M"peg "A"udio "D"ecoder") + libmad MPEG tabanlı ses çözüm kitaplığıdır. + + + + libmad-devel + libmad için geliştirme dosyaları + + diff --git a/multimedia/sound/libogg/actions.py b/multimedia/sound/libogg/actions.py new file mode 100644 index 0000000000..34c743bc80 --- /dev/null +++ b/multimedia/sound/libogg/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import autotools +from pisi.actionsapi import get + + +def setup(): + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "CHANGES", "COPYING", "README") diff --git a/multimedia/sound/libogg/pspec.xml b/multimedia/sound/libogg/pspec.xml new file mode 100644 index 0000000000..a068718df0 --- /dev/null +++ b/multimedia/sound/libogg/pspec.xml @@ -0,0 +1,82 @@ + + + + + libogg + http://www.vorbis.com + + PisiLinux Community + admins@pisilinux.org + + as-is + library + The Ogg media file format library + libogg is a library for manipulating Ogg bitstream file formats. libogg supports both making Ogg bitstreams and getting packets from Ogg bitstreams. + http://downloads.xiph.org/releases/ogg/libogg-1.3.1.tar.xz + + + + libogg + + /usr/lib + /usr/share/doc + + + + + libogg-devel + + libogg + + + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/include + /usr/share/aclocal + /usr/share/doc/libogg/*html + /usr/share/doc/libogg/*png + /usr/share/doc/libogg/ogg + + + + + libogg-32bit + emul32 + 32-bit shared libraries for libogg + emul32 + + glibc-32bit + + + glibc-32bit + libogg + + + /usr/lib32 + + + + + + 2014-05-20 + 1.3.1 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-16 + 1.3.1 + Version bump + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2012-08-31 + 1.3.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/multimedia/sound/libogg/translations.xml b/multimedia/sound/libogg/translations.xml new file mode 100644 index 0000000000..c701ce291e --- /dev/null +++ b/multimedia/sound/libogg/translations.xml @@ -0,0 +1,14 @@ + + + + libogg + Ogg dosya biçimi kütüphanesi + libogg Ogg biçimli dosyalara erişmek için kullanılan bir kütüphanedir. Hem Ogg biçimli dosya oluşturmak için hem de Ogg dosyalarından paket ayıklamak için kullanılabilir. + La librairie pour fichiers au format média Ogg. + + + + libogg-32bit + libogg için 32-bit paylaşımlı kitaplıklar + + diff --git a/multimedia/sound/libvorbis/actions.py b/multimedia/sound/libvorbis/actions.py new file mode 100644 index 0000000000..7a676e3957 --- /dev/null +++ b/multimedia/sound/libvorbis/actions.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.removeDir("/usr/share/doc") + + pisitools.dodoc("AUTHORS", "README", "todo.txt", "doc/*.txt") + pisitools.dohtml("doc/*") diff --git a/multimedia/sound/libvorbis/pspec.xml b/multimedia/sound/libvorbis/pspec.xml new file mode 100644 index 0000000000..7c962c84c9 --- /dev/null +++ b/multimedia/sound/libvorbis/pspec.xml @@ -0,0 +1,90 @@ + + + + + libvorbis + http://www.vorbis.com + + PisiLinux Community + admins@pisilinux.org + + BSD + library + The Vorbis general audio compression codec + libvorbis is a fully open, non-proprietary, patent- and royalty-free, general-purpose compressed audio format for audio and music at fixed variable bitrates from 16 to 128 kbps/channel. + http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.xz + + libogg-devel + + + + + libvorbis + + libogg + + + /usr/lib + /usr/share/doc/libvorbis/AUTHORS + /usr/share/doc/libvorbis/README + + + + + libvorbis-devel + + libvorbis + libogg-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/aclocal + /usr/share/doc/libvorbis + + + + + libvorbis-32bit + emul32 + 32-bit shared libraries for libvorbis + emul32 + + glibc-32bit + libogg-32bit + + + libvorbis + glibc-32bit + libogg-32bit + + + /usr/lib32 + + + + + + 2014-05-20 + 1.3.4 + Rebuild, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-01 + 1.3.4 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-31 + 1.3.3 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/multimedia/sound/libvorbis/translations.xml b/multimedia/sound/libvorbis/translations.xml new file mode 100644 index 0000000000..533c21748b --- /dev/null +++ b/multimedia/sound/libvorbis/translations.xml @@ -0,0 +1,14 @@ + + + + libvorbis + Vorbis genel ses sıkıştırma kodlaması + libvorbis tamamen açık, sahipsiz, genel amaçlı sıkıştırılmış ses biçimidir. + Librairie de formatage de fichier son Ogg Vorbis libre. + + + + libvorbis-32bit + libvorbis için 32-bit paylaşımlı kitaplıklar + + diff --git a/multimedia/sound/vorbis-tools/actions.py b/multimedia/sound/vorbis-tools/actions.py new file mode 100644 index 0000000000..0af2405b79 --- /dev/null +++ b/multimedia/sound/vorbis-tools/actions.py @@ -0,0 +1,32 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def setup(): + shelltools.export("AT_M4DIR", "m4") + autotools.autoreconf("-vfi") + + autotools.configure('--disable-dependency-tracking \ + --enable-nls \ + --enable-vcut \ + --enable-ogg123 \ + --with-flac \ + --with-speex \ + --with-kate \ + --docdir="/%s/%s"' % (get.docDIR(), get.srcNAME())) + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.removeDir("/usr/share/doc") + pisitools.dodoc("CHANGES", "COPYING", "AUTHORS", "README", "ogg123/ogg123rc-example") diff --git a/multimedia/sound/vorbis-tools/pspec.xml b/multimedia/sound/vorbis-tools/pspec.xml new file mode 100644 index 0000000000..b105920878 --- /dev/null +++ b/multimedia/sound/vorbis-tools/pspec.xml @@ -0,0 +1,60 @@ + + + + + vorbis-tools + http://www.vorbis.com/ + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + Tools for using the Ogg Vorbis sound file format + This set of tools allow you to play and encode Ogg Vorbis files. + http://downloads.xiph.org/releases/vorbis/vorbis-tools-1.4.0.tar.gz + + libvorbis-devel + libao-devel + flac-devel + speex-devel + libogg-devel + libkate-devel + + + + + vorbis-tools + + libvorbis + libao + flac + speex + libogg + libkate + + + /usr/bin + /usr/share/doc + /usr/share/locale + /usr/share/man + + + + + + 2014-01-28 + 1.4.0 + Rebuild + Alihan Öztürk + alihan@pisilinux.org + + + 2010-10-12 + 1.4.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/sound/vorbis-tools/translations.xml b/multimedia/sound/vorbis-tools/translations.xml new file mode 100644 index 0000000000..a043010dba --- /dev/null +++ b/multimedia/sound/vorbis-tools/translations.xml @@ -0,0 +1,8 @@ + + + + vorbis-tools + Ogg Vorbis ses dosyaları için araçlar paketi. + vorbis-tools Ogg Vorbis dosyaları oluşturabilmenize ve oynatabilmenize olanak tanır. + + From 6494f592ee52574a90bf60523a5816f9716c2914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 6 Jul 2015 13:07:11 +0300 Subject: [PATCH 140/175] qt5-base (DirectFB added. ) and qt5-imageformats fix deps --- desktop/toolkit/qt5/qt5-base/pspec.xml | 2 ++ desktop/toolkit/qt5/qt5-imageformats/pspec.xml | 1 + 2 files changed, 3 insertions(+) diff --git a/desktop/toolkit/qt5/qt5-base/pspec.xml b/desktop/toolkit/qt5/qt5-base/pspec.xml index fd200c8aa5..683069fce3 100644 --- a/desktop/toolkit/qt5/qt5-base/pspec.xml +++ b/desktop/toolkit/qt5/qt5-base/pspec.xml @@ -39,6 +39,7 @@ pciutils-devel postgresql-server python-devel + DirectFB-devel sqlite-devel unixODBC-devel @@ -92,6 +93,7 @@ libpng libxcb eudev + DirectFB openssl freetype harfbuzz diff --git a/desktop/toolkit/qt5/qt5-imageformats/pspec.xml b/desktop/toolkit/qt5/qt5-imageformats/pspec.xml index c7993cff18..c9f6220c68 100644 --- a/desktop/toolkit/qt5/qt5-imageformats/pspec.xml +++ b/desktop/toolkit/qt5/qt5-imageformats/pspec.xml @@ -16,6 +16,7 @@ qt5-base-devel jasper-devel libmng-devel + libjpeg-turbo-devel zlib-devel tiff-devel webp-devel From 6786e7835bacedff15e339b1804a29650b48edc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 6 Jul 2015 19:31:28 +0300 Subject: [PATCH 141/175] fix --- desktop/toolkit/qt5/qt5-script/pspec.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/toolkit/qt5/qt5-script/pspec.xml b/desktop/toolkit/qt5/qt5-script/pspec.xml index 6fa21a07ee..81dcfc3dc2 100644 --- a/desktop/toolkit/qt5/qt5-script/pspec.xml +++ b/desktop/toolkit/qt5/qt5-script/pspec.xml @@ -37,6 +37,7 @@ qt5-script-devel qt5-base-devel + qt5-script /usr/lib/pkgconfig From 2e622e8fa3f7623ab54007dbcc3260e5e8245614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 6 Jul 2015 23:42:29 +0300 Subject: [PATCH 142/175] fix depeendency --- desktop/toolkit/qt5/qt5-quick1/pspec.xml | 1 + .../toolkit/qt5/qt5-quickcontrols/pspec.xml | 9 +++++---- desktop/toolkit/qt5/qt5-script/pspec.xml | 2 +- desktop/toolkit/qt5/qt5-sensors/pspec.xml | 17 +++++++++------- desktop/toolkit/qt5/qt5-serialport/pspec.xml | 20 +++++++++++-------- 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/desktop/toolkit/qt5/qt5-quick1/pspec.xml b/desktop/toolkit/qt5/qt5-quick1/pspec.xml index 6ceb0f4ee9..2339858ef9 100644 --- a/desktop/toolkit/qt5/qt5-quick1/pspec.xml +++ b/desktop/toolkit/qt5/qt5-quick1/pspec.xml @@ -42,6 +42,7 @@ qt5-base-devel qt5-script-devel + qt5-quick1 Development file for qt5-quick1 Development file for qt5-quick1 diff --git a/desktop/toolkit/qt5/qt5-quickcontrols/pspec.xml b/desktop/toolkit/qt5/qt5-quickcontrols/pspec.xml index dbf17965d7..fcd4704973 100644 --- a/desktop/toolkit/qt5/qt5-quickcontrols/pspec.xml +++ b/desktop/toolkit/qt5/qt5-quickcontrols/pspec.xml @@ -15,20 +15,21 @@ qt5-base-devel qt5-declarative-devel + qt5-quick1-devel qt5-quickcontrols + + qt5-base + qt5-declarative + /usr/lib /usr/lib/qt5 /usr/share/licenses/ - - qt5-base - qt5-declarative - diff --git a/desktop/toolkit/qt5/qt5-script/pspec.xml b/desktop/toolkit/qt5/qt5-script/pspec.xml index 81dcfc3dc2..d0c60d0c00 100644 --- a/desktop/toolkit/qt5/qt5-script/pspec.xml +++ b/desktop/toolkit/qt5/qt5-script/pspec.xml @@ -37,7 +37,7 @@ qt5-script-devel qt5-base-devel - qt5-script + qt5-script /usr/lib/pkgconfig diff --git a/desktop/toolkit/qt5/qt5-sensors/pspec.xml b/desktop/toolkit/qt5/qt5-sensors/pspec.xml index 9d1c12604a..9b849ea0b4 100644 --- a/desktop/toolkit/qt5/qt5-sensors/pspec.xml +++ b/desktop/toolkit/qt5/qt5-sensors/pspec.xml @@ -20,26 +20,29 @@ qt5-sensors + + libgcc + qt5-base + qt5-declarative + /usr/lib /usr/lib/qt5 /usr/share/licenses - - qt5-base - qt5-declarative - qt5-sensors-devel + + qt5-sensors + qt5-base-devel + /usr/lib/pkgconfig /usr/include/qt5 - - qt5-base-devel - + diff --git a/desktop/toolkit/qt5/qt5-serialport/pspec.xml b/desktop/toolkit/qt5/qt5-serialport/pspec.xml index 2dee32317d..2f0202044b 100644 --- a/desktop/toolkit/qt5/qt5-serialport/pspec.xml +++ b/desktop/toolkit/qt5/qt5-serialport/pspec.xml @@ -14,31 +14,35 @@ http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtserialport-opensource-src-5.4.2.tar.xz qt5-base-devel + eudev-devel qt5-tools-devel qt5-serialport - + + qt5-base + eudev + libgcc + + /usr/lib /usr/lib/qt5 /usr/share/licenses - - qt5-base - qt5-serialport-devel - + + qt5-base-devel + qt5-serialport + + /usr/lib/pkgconfig /usr/include/qt5 - - qt5-base-devel - From 69842c3994064eb937fa7b2179cec4e4a5258623 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Tue, 7 Jul 2015 00:45:18 +0300 Subject: [PATCH 143/175] continue for avahi and pulseaudio --- hardware/bluetooth/sbc/actions.py | 21 ++++ hardware/bluetooth/sbc/pspec.xml | 63 ++++++++++ multimedia/misc/orc/actions.py | 16 +++ multimedia/misc/orc/pspec.xml | 91 +++++++++++++++ multimedia/misc/orc/translations.xml | 14 +++ multimedia/sound/libsndfile/actions.py | 44 +++++++ ...bsndfile-1.0.17-regtests-need-sqlite.patch | 25 ++++ .../libsndfile-1.0.18-less_strict_tests.patch | 26 +++++ multimedia/sound/libsndfile/files/m4dir.patch | 11 ++ multimedia/sound/libsndfile/pspec.xml | 108 ++++++++++++++++++ multimedia/sound/libsndfile/translations.xml | 20 ++++ multimedia/sound/speex/pspec.xml | 4 + office/misc/doxygen/actions.py | 31 +++++ office/misc/doxygen/files/doxywizard.desktop | 6 + office/misc/doxygen/files/doxywizard.png | Bin 0 -> 4243 bytes .../files/fedora/doxygen-1.8.3-multilib.patch | 43 +++++++ ...n-1.8.5-html_timestamp_default_false.patch | 12 ++ .../files/fedora/doxygen-1.8.6-config.patch | 78 +++++++++++++ ...n-1.8.7-html_timestamp_default_false.patch | 21 ++++ office/misc/doxygen/pspec.xml | 90 +++++++++++++++ office/misc/doxygen/translations.xml | 14 +++ 21 files changed, 738 insertions(+) create mode 100644 hardware/bluetooth/sbc/actions.py create mode 100644 hardware/bluetooth/sbc/pspec.xml create mode 100644 multimedia/misc/orc/actions.py create mode 100644 multimedia/misc/orc/pspec.xml create mode 100644 multimedia/misc/orc/translations.xml create mode 100644 multimedia/sound/libsndfile/actions.py create mode 100644 multimedia/sound/libsndfile/files/libsndfile-1.0.17-regtests-need-sqlite.patch create mode 100644 multimedia/sound/libsndfile/files/libsndfile-1.0.18-less_strict_tests.patch create mode 100644 multimedia/sound/libsndfile/files/m4dir.patch create mode 100644 multimedia/sound/libsndfile/pspec.xml create mode 100644 multimedia/sound/libsndfile/translations.xml create mode 100644 office/misc/doxygen/actions.py create mode 100644 office/misc/doxygen/files/doxywizard.desktop create mode 100644 office/misc/doxygen/files/doxywizard.png create mode 100644 office/misc/doxygen/files/fedora/doxygen-1.8.3-multilib.patch create mode 100644 office/misc/doxygen/files/fedora/doxygen-1.8.5-html_timestamp_default_false.patch create mode 100644 office/misc/doxygen/files/fedora/doxygen-1.8.6-config.patch create mode 100644 office/misc/doxygen/files/fedora/doxygen-1.8.7-html_timestamp_default_false.patch create mode 100644 office/misc/doxygen/pspec.xml create mode 100644 office/misc/doxygen/translations.xml diff --git a/hardware/bluetooth/sbc/actions.py b/hardware/bluetooth/sbc/actions.py new file mode 100644 index 0000000000..d2ae885761 --- /dev/null +++ b/hardware/bluetooth/sbc/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.configure("--disable-static \ + --disable-tester") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING*", "README") diff --git a/hardware/bluetooth/sbc/pspec.xml b/hardware/bluetooth/sbc/pspec.xml new file mode 100644 index 0000000000..e6a7225b4d --- /dev/null +++ b/hardware/bluetooth/sbc/pspec.xml @@ -0,0 +1,63 @@ + + + + + sbc + http://www.bluez.org/ + + Marcin Bojara + marcin@pisilinux.org + + GPLv2 + LGPLv2.1 + library + Bluetooth Subband Codec (SBC) library + An audio codec to connect bluetooth high quality audio devices like headphones or loudspeakers. + http://www.kernel.org/pub/linux/bluetooth/sbc-1.3.tar.gz + + + + sbc + + /usr/bin/* + /usr/lib + /usr/share/doc/sbc/* + + + + + sbc-devel + Development files for sbc + + sbc + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-12-12 + 1.3 + Version bump + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-27 + 1.0 + R.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-12-19 + 1.0 + First release + Marcin Bojara + marcin@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/misc/orc/actions.py b/multimedia/misc/orc/actions.py new file mode 100644 index 0000000000..7a538a558c --- /dev/null +++ b/multimedia/misc/orc/actions.py @@ -0,0 +1,16 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import get + +def setup(): + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) diff --git a/multimedia/misc/orc/pspec.xml b/multimedia/misc/orc/pspec.xml new file mode 100644 index 0000000000..53497aa28a --- /dev/null +++ b/multimedia/misc/orc/pspec.xml @@ -0,0 +1,91 @@ + + + + + orc + http://code.entropywave.com/projects/orc/ + + PisiLinux Community + admins@pisilinux.org + + BSD + BSD-2 + app:console + The Oil Runtime Compiler + Optimized Inner Loop Runtime Compiler + http://gstreamer.freedesktop.org/src/orc/orc-0.4.19.tar.gz + + + + + + + orc + + /usr/bin/ + /usr/lib/ + /usr/share/ + + + + + orc-32bit + emul32 + 32-bit shared libraries for orc + emul32 + + glibc-32bit + + + glibc-32bit + orc + + + /usr/lib32 + + + + + orc-devel + orc için geliştirme dosyaları + + orc + + + /usr/include/ + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + + 2014-05-20 + 0.4.19 + Version bump, fix version. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-24 + 4.18 + Version bump + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-02-14 + 4.16 + Add emul32 + Marcin Bojara + marcin@pisilinux.org + + + 2012-08-29 + 4.16 + First release + PisiLinux Community + admins@pisilinux.org + + + \ No newline at end of file diff --git a/multimedia/misc/orc/translations.xml b/multimedia/misc/orc/translations.xml new file mode 100644 index 0000000000..1d5f6d7748 --- /dev/null +++ b/multimedia/misc/orc/translations.xml @@ -0,0 +1,14 @@ + + + + ocr + The Oil Runtime Compiler + Optimized Inner Loop Runtime Compiler + + + + orc-devel + orc için geliştirme dosyaları + + + diff --git a/multimedia/sound/libsndfile/actions.py b/multimedia/sound/libsndfile/actions.py new file mode 100644 index 0000000000..34a9b9700e --- /dev/null +++ b/multimedia/sound/libsndfile/actions.py @@ -0,0 +1,44 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import libtools +from pisi.actionsapi import get + +def setup(): + options = "--disable-static \ + --disable-sqlite \ + --enable-flac \ + --enable-alsa \ + --enable-largefile \ + --disable-gcc-pipe \ + --disable-jack \ + --disable-octave \ + --disable-gcc-werror \ + --disable-dependency-tracking" + + pisitools.dosed("examples/Makefile.am", "noinst_PROGRAMS", "check_PROGRAMS") + pisitools.dosed("tests/Makefile.am", "noinst_PROGRAMS", "check_PROGRAMS") + + shelltools.unlink("M4/libtool.m4") + + for i in shelltools.ls("M4/lt*.m4"): + shelltools.unlink(i) + + autotools.autoreconf("-fi -I M4") + autotools.configure(options) + + pisitools.dosed("doc/Makefile", "^htmldocdir.*", "htmldocdir = /usr/share/doc/%s/html" % get.srcNAME()) + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "NEWS", "README") diff --git a/multimedia/sound/libsndfile/files/libsndfile-1.0.17-regtests-need-sqlite.patch b/multimedia/sound/libsndfile/files/libsndfile-1.0.17-regtests-need-sqlite.patch new file mode 100644 index 0000000000..85d628000f --- /dev/null +++ b/multimedia/sound/libsndfile/files/libsndfile-1.0.17-regtests-need-sqlite.patch @@ -0,0 +1,25 @@ +Index: libsndfile-1.0.17/configure.ac +=================================================================== +--- libsndfile-1.0.17.orig/configure.ac ++++ libsndfile-1.0.17/configure.ac +@@ -268,6 +268,7 @@ else + fi + + AC_DEFINE_UNQUOTED([HAVE_SQLITE3],$HAVE_SQLITE3,[Set to 1 if you have libsqlite3.]) ++AM_CONDITIONAL(HAVE_SQLITE3, [test "x$ac_cv_sqlite3" = "xyes"]) + + #==================================================================================== + # Determine if the processor can do clipping on float to int conversions. +Index: libsndfile-1.0.17/regtest/Makefile.am +=================================================================== +--- libsndfile-1.0.17.orig/regtest/Makefile.am ++++ libsndfile-1.0.17/regtest/Makefile.am +@@ -1,6 +1,8 @@ + ## Process this file with automake to produce Makefile.in + ++if HAVE_SQLITE3 + bin_PROGRAMS = sndfile-regtest ++endif + + noinst_HEADERS = regtest.h + diff --git a/multimedia/sound/libsndfile/files/libsndfile-1.0.18-less_strict_tests.patch b/multimedia/sound/libsndfile/files/libsndfile-1.0.18-less_strict_tests.patch new file mode 100644 index 0000000000..f2a264c54f --- /dev/null +++ b/multimedia/sound/libsndfile/files/libsndfile-1.0.18-less_strict_tests.patch @@ -0,0 +1,26 @@ +This one fails on amd64; vorbis is lossy anyway so just increase the tolerance +for now. + + +Index: libsndfile-1.0.18/tests/floating_point_test.tpl +=================================================================== +--- libsndfile-1.0.18.orig/tests/floating_point_test.tpl ++++ libsndfile-1.0.18/tests/floating_point_test.tpl +@@ -111,7 +111,7 @@ main (int argc, char *argv []) + float_scaled_test ("flac_16.flac", allow_exit, SF_FALSE, SF_FORMAT_FLAC | SF_FORMAT_PCM_16, -87.0) ; + float_scaled_test ("flac_24.flac", allow_exit, SF_FALSE, SF_FORMAT_FLAC | SF_FORMAT_PCM_24, -138.0) ; + +- float_scaled_test ("vorbis.oga", allow_exit, SF_FALSE, SF_FORMAT_OGG | SF_FORMAT_VORBIS, -31.0) ; ++ float_scaled_test ("vorbis.oga", allow_exit, SF_FALSE, SF_FORMAT_OGG | SF_FORMAT_VORBIS, -21.0) ; + #endif + + float_scaled_test ("replace_float.raw", allow_exit, SF_TRUE, SF_ENDIAN_LITTLE | SF_FORMAT_RAW | SF_FORMAT_FLOAT, -163.0) ; +@@ -163,7 +163,7 @@ main (int argc, char *argv []) + double_scaled_test ("flac_16.flac", allow_exit, SF_FALSE, SF_FORMAT_FLAC | SF_FORMAT_PCM_16, -87.0) ; + double_scaled_test ("flac_24.flac", allow_exit, SF_FALSE, SF_FORMAT_FLAC | SF_FORMAT_PCM_24, -138.0) ; + +- double_scaled_test ("vorbis.oga", allow_exit, SF_FALSE, SF_FORMAT_OGG | SF_FORMAT_VORBIS, -29.0) ; ++ double_scaled_test ("vorbis.oga", allow_exit, SF_FALSE, SF_FORMAT_OGG | SF_FORMAT_VORBIS, -19.0) ; + #endif + + double_scaled_test ("replace_double.raw", allow_exit, SF_TRUE, SF_FORMAT_RAW | SF_FORMAT_DOUBLE, -300.0) ; diff --git a/multimedia/sound/libsndfile/files/m4dir.patch b/multimedia/sound/libsndfile/files/m4dir.patch new file mode 100644 index 0000000000..0ad839cf4d --- /dev/null +++ b/multimedia/sound/libsndfile/files/m4dir.patch @@ -0,0 +1,11 @@ +diff -Nur libsndfile-1.0.20-old/Makefile.am libsndfile-1.0.20/Makefile.am +--- libsndfile-1.0.20-old/Makefile.am 2009-06-01 15:18:00.043146693 +0300 ++++ libsndfile-1.0.20/Makefile.am 2009-06-01 15:18:12.023269283 +0300 +@@ -1,6 +1,7 @@ + ## Process this file with automake to produce Makefile.in + + DISTCHECK_CONFIGURE_FLAGS = --enable-gcc-werror ++ACLOCAL_AMFLAGS = -I M4 + + if BUILD_OCTAVE_MOD + octave_dir = Octave diff --git a/multimedia/sound/libsndfile/pspec.xml b/multimedia/sound/libsndfile/pspec.xml new file mode 100644 index 0000000000..8da1a6dac9 --- /dev/null +++ b/multimedia/sound/libsndfile/pspec.xml @@ -0,0 +1,108 @@ + + + + + libsndfile + http://www.mega-nerd.com/libsndfile/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + app:console + A C library for reading and writing files containing sampled sound + Libsndfile is a C library for reading and writing files containing sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format) through one standard library interface. + http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25.tar.gz + + flac-devel + libogg-devel + alsa-lib-devel + libvorbis-devel + + + libsndfile-1.0.18-less_strict_tests.patch + libsndfile-1.0.17-regtests-need-sqlite.patch + m4dir.patch + + + + + libsndfile + + flac + libogg + alsa-lib + libvorbis + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/octave + + + + + libsndfile-devel + Development files for libsndfile + + libsndfile + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + libsndfile-32bit + emul32 + 32-bit shared libraries for libsndfile + emul32 + + glibc-32bit + flac-32bit + alsa-lib-32bit + libogg-32bit + libvorbis-32bit + + + glibc-32bit + flac-32bit + alsa-lib-32bit + libogg-32bit + libvorbis-32bit + libsndfile + + + /usr/lib32 + + + + + + 2014-05-25 + 1.0.25 + Rebuild + Alihan Öztürk + alihan@pisilinux.org + + + 2014-02-01 + 1.0.25 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2011-07-17 + 1.0.25 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/sound/libsndfile/translations.xml b/multimedia/sound/libsndfile/translations.xml new file mode 100644 index 0000000000..b7b5784916 --- /dev/null +++ b/multimedia/sound/libsndfile/translations.xml @@ -0,0 +1,20 @@ + + + + libsndfile + Örneklenmiş ses verileri içeren dosyalar yazmak ve okumak için C dili kütüphanesi. + Libsndfile, standart bir kütüphane arayüzü vasıtası ile (MS Windows WAV ve Apple/SGI AIFF biçimi gibi)örneklenmiş ses içeren dosyalar yazmak ve okumak için bir C dili kütüphanesidir. + Libsndfile est une librairie C pour lire et écrire des fichiers contenant des échantillons sonores (tels que les fichiers aux formats MS Windows WAV et Apple/SGI AIFF) à travers une seule interface de librairie standard. + Libsndfile es una librería C de lectura y escritura para archivos de sonido (como MS Windows WAV y el formato Apple/SGI AIFF) con una interfaz estándar de libería. + + + + libsndfile-devel + libsndfile için geliştirme dosyaları + + + + libsndfile-32bit + libsndfile için 32-bit paylaşımlı kitaplıklar + + diff --git a/multimedia/sound/speex/pspec.xml b/multimedia/sound/speex/pspec.xml index 2ef7e09f92..d339e4b2e1 100644 --- a/multimedia/sound/speex/pspec.xml +++ b/multimedia/sound/speex/pspec.xml @@ -54,8 +54,12 @@ emul32 32-bit shared libraries for speex emul32 + + glibc-32bit + speex + glibc-32bit /usr/lib32 diff --git a/office/misc/doxygen/actions.py b/office/misc/doxygen/actions.py new file mode 100644 index 0000000000..5a2720be33 --- /dev/null +++ b/office/misc/doxygen/actions.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + # --shared and --release are default parameters, however we just write them + # to down to avoid confusing wheter it's a static/shared or release/debug + # package at the first look :) + autotools.rawConfigure("--shared \ + --release \ + --dot dot \ + --prefix /usr") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + #pisitools.doman("doc/doxywizard.1") + + # The makefile included is there to generate the html files + # The user itself should execute it + pisitools.insinto(get.docDIR() + "/doxygen" , "examples") + + pisitools.dodoc("LANGUAGE.HOWTO", "LICENSE", "README*", "VERSION") diff --git a/office/misc/doxygen/files/doxywizard.desktop b/office/misc/doxygen/files/doxywizard.desktop new file mode 100644 index 0000000000..f3d0a4ffcb --- /dev/null +++ b/office/misc/doxygen/files/doxywizard.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Type=Application +Exec=doxywizard +Name=Doxygen Wizard +Icon=doxywizard +Categories=Qt;Development; diff --git a/office/misc/doxygen/files/doxywizard.png b/office/misc/doxygen/files/doxywizard.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba163f7f74c6d0a759de2e09145aef79f88605e GIT binary patch literal 4243 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 literal 0 HcmV?d00001 diff --git a/office/misc/doxygen/files/fedora/doxygen-1.8.3-multilib.patch b/office/misc/doxygen/files/fedora/doxygen-1.8.3-multilib.patch new file mode 100644 index 0000000000..7cb1c9255c --- /dev/null +++ b/office/misc/doxygen/files/fedora/doxygen-1.8.3-multilib.patch @@ -0,0 +1,43 @@ +diff -up doxygen-1.8.3/src/htmlgen.cpp.multilib doxygen-1.8.3/src/htmlgen.cpp +--- doxygen-1.8.3/src/htmlgen.cpp.multilib 2012-12-25 11:27:52.000000000 +0100 ++++ doxygen-1.8.3/src/htmlgen.cpp 2013-01-02 17:08:57.559028518 +0100 +@@ -125,6 +125,17 @@ static unsigned char tab_b_png[36] = + 205, 207, 209, 211, 213, 217, 219, 206, 188 + }; + ++static unsigned char nav_g_png[95] = { ++0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, ++0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, ++0x08, 0x06, 0x00, 0x00, 0x00, 0x02, 0x10, 0xf4, 0x31, 0x00, 0x00, 0x00, ++0x26, 0x49, 0x44, 0x41, 0x54, 0x78, 0x01, 0xed, 0xdd, 0x31, 0x0d, 0x00, ++0x00, 0x08, 0x03, 0xc1, 0x4f, 0x48, 0x17, 0x66, 0x84, 0xe1, 0x5f, 0x0d, ++0x2d, 0x3e, 0x7e, 0xb8, 0xe5, 0x4d, 0x20, 0x69, 0xcb, 0x4d, 0xe8, 0xc0, ++0x83, 0x07, 0x07, 0x0f, 0x53, 0x00, 0xbd, 0xfc, 0x82, 0x3c, 0x05, 0x00, ++0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, ++}; ++ + // hovering tab background luma + static unsigned char tab_h_png[36] = + { +@@ -824,6 +835,7 @@ static ColoredImgDataItem colored_tab_da + { "tab_s.png", 1, 36, tab_s_png, 0 }, + { "nav_h.png", 1, 12, header_png, 0 }, + { "nav_f.png", 1, 56, func_header_png, 0 }, ++ { "nav_g.png", 1, 6, nav_g_png, 0 }, + { "bc_s.png", 8, 30, bc_s_png, bc_s_a_png }, + { "doxygen.png", 104,31, doxygen_png, doxygen_a_png }, + { "closed.png", 9, 9, closed_png, closed_a_png }, +@@ -1502,13 +1514,6 @@ void HtmlGenerator::writeTabData() + Doxygen::indexList->addStyleSheetFile("tabs.css"); + QCString dname=Config_getString("HTML_OUTPUT"); + writeColoredImgData(dname,colored_tab_data); +- +- { +- unsigned char shadow[6] = { 5, 5, 5, 5, 5, 5 }; +- unsigned char shadow_alpha[6] = { 80, 60, 40, 20, 10, 0 }; +- ColoredImage img(1,6,shadow,shadow_alpha,0,0,100); +- img.save(dname+"/nav_g.png"); +- } + } + + void HtmlGenerator::writeSearchData(const char *dir) diff --git a/office/misc/doxygen/files/fedora/doxygen-1.8.5-html_timestamp_default_false.patch b/office/misc/doxygen/files/fedora/doxygen-1.8.5-html_timestamp_default_false.patch new file mode 100644 index 0000000000..fd90b4d95a --- /dev/null +++ b/office/misc/doxygen/files/fedora/doxygen-1.8.5-html_timestamp_default_false.patch @@ -0,0 +1,12 @@ +diff -up doxygen-1.8.5/src/configoptions.cpp.html_timestamp_default_false doxygen-1.8.5/src/configoptions.cpp +--- doxygen-1.8.5/src/configoptions.cpp.html_timestamp_default_false 2013-08-26 16:07:23.000000000 +0200 ++++ doxygen-1.8.5/src/configoptions.cpp 2013-08-26 18:31:40.000000000 +0200 +@@ -1499,7 +1499,7 @@ void addConfigOptions(Config *cfg) + "to NO can help when comparing the output of multiple runs.\n" + "The default value is: YES.\n" + "This tag requires that the tag GENERATE_HTML is set to YES.", +- TRUE ++ FALSE + ); + cb->addDependency("GENERATE_HTML"); + //---- diff --git a/office/misc/doxygen/files/fedora/doxygen-1.8.6-config.patch b/office/misc/doxygen/files/fedora/doxygen-1.8.6-config.patch new file mode 100644 index 0000000000..c0b205571c --- /dev/null +++ b/office/misc/doxygen/files/fedora/doxygen-1.8.6-config.patch @@ -0,0 +1,78 @@ +diff -up doxygen-1.8.6/addon/doxywizard/Makefile.in.config doxygen-1.8.6/addon/doxywizard/Makefile.in +--- doxygen-1.8.6/addon/doxywizard/Makefile.in.config 2013-12-26 12:17:57.281368574 -0700 ++++ doxygen-1.8.6/addon/doxywizard/Makefile.in 2013-12-26 12:20:44.673513404 -0700 +@@ -10,7 +10,6 @@ + # See the GNU General Public License for more details. + # + +-QMAKE=$(QTDIR)/bin/qmake $(MKSPECS) + INCBUFSIZE=$(PYTHON) ../../src/increasebuffer.py + + all: Makefile.doxywizard +diff -up doxygen-1.8.6/configure.config doxygen-1.8.6/configure +--- doxygen-1.8.6/configure.config 2013-12-24 09:14:46.000000000 -0700 ++++ doxygen-1.8.6/configure 2013-12-26 12:20:20.542636493 -0700 +@@ -326,9 +326,10 @@ if test "$f_wizard" = YES; then + if test -z "$QTDIR"; then + echo " QTDIR environment variable not set!" + printf " Checking for Qt..." +- for d in /usr/{lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do ++ for d in /usr/{lib64,lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do + if test -x "$d/bin/qmake"; then + QTDIR=$d ++ QMAKE=$d/bin/qmake + break 2 + fi + done +@@ -704,6 +705,8 @@ INSTTOOL = $f_insttool + DOXYDOCS = .. + DOCDIR = $f_docdir + QTDIR = $QTDIR ++QMAKE = $QMAKE ++MAN1DIR = share/man/man1 + EOF + + if test "$f_dot" != NO; then +diff -up doxygen-1.8.6/Makefile.in.config doxygen-1.8.6/Makefile.in +--- doxygen-1.8.6/Makefile.in.config 2013-12-26 12:17:57.283368564 -0700 ++++ doxygen-1.8.6/Makefile.in 2013-12-26 12:19:17.796956667 -0700 +@@ -78,8 +78,6 @@ realclean: clean + + DATE=$(shell date "+%B %Y") + +-MAN1DIR = man/man1 +- + install: doxywizard_install doxysearch_install + $(INSTTOOL) -d $(DESTDIR)$(INSTALL)/bin + $(INSTTOOL) -m 755 bin/doxygen $(DESTDIR)$(INSTALL)/bin +diff -up doxygen-1.8.6/tmake/lib/linux-g++/tmake.conf.config doxygen-1.8.6/tmake/lib/linux-g++/tmake.conf +--- doxygen-1.8.6/tmake/lib/linux-g++/tmake.conf.config 2013-11-02 08:18:53.000000000 -0600 ++++ doxygen-1.8.6/tmake/lib/linux-g++/tmake.conf 2013-12-26 12:18:38.268158455 -0700 +@@ -11,7 +11,7 @@ TMAKE_CC = gcc + TMAKE_CFLAGS = -pipe -fsigned-char + TMAKE_CFLAGS_WARN_ON = -Wall -W + TMAKE_CFLAGS_WARN_OFF = +-TMAKE_CFLAGS_RELEASE = -O2 ++TMAKE_CFLAGS_RELEASE = $(RPM_OPT_FLAGS) + TMAKE_CFLAGS_DEBUG = -g + TMAKE_CFLAGS_SHLIB = -fPIC + TMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses +@@ -27,12 +27,12 @@ TMAKE_CXXFLAGS_YACC = $$TMAKE_CFLAGS_YAC + + TMAKE_INCDIR = + TMAKE_LIBDIR = +-TMAKE_INCDIR_X11 = /usr/X11R6/include +-TMAKE_LIBDIR_X11 = /usr/X11R6/lib +-TMAKE_INCDIR_QT = $(QTDIR)/include +-TMAKE_LIBDIR_QT = $(QTDIR)/lib +-TMAKE_INCDIR_OPENGL = /usr/X11R6/include +-TMAKE_LIBDIR_OPENGL = /usr/X11R6/lib ++TMAKE_INCDIR_X11 = ++TMAKE_LIBDIR_X11 = ++TMAKE_INCDIR_QT = ++TMAKE_LIBDIR_QT = ++TMAKE_INCDIR_OPENGL = ++TMAKE_LIBDIR_OPENGL = + + TMAKE_LINK = g++ + TMAKE_LINK_SHLIB = g++ diff --git a/office/misc/doxygen/files/fedora/doxygen-1.8.7-html_timestamp_default_false.patch b/office/misc/doxygen/files/fedora/doxygen-1.8.7-html_timestamp_default_false.patch new file mode 100644 index 0000000000..abb03dd917 --- /dev/null +++ b/office/misc/doxygen/files/fedora/doxygen-1.8.7-html_timestamp_default_false.patch @@ -0,0 +1,21 @@ +diff -up doxygen-1.8.7/src/config.xml.than doxygen-1.8.7/src/config.xml +--- doxygen-1.8.7/src/config.xml.than 2014-05-12 13:54:38.000000000 +0200 ++++ doxygen-1.8.7/src/config.xml 2014-05-12 13:56:31.000000000 +0200 +@@ -1617,7 +1617,7 @@ to disable this feature. + + + +- +- gtk3 @@ -181,6 +190,7 @@ at-spi2-atk-32bit libXinerama-32bit libXcomposite-32bit + libepoxy-32bit /usr/bin/*-32bit @@ -189,6 +199,13 @@ + + 2015-07-07 + 3.16.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2015-03-18 3.14.9 diff --git a/desktop/toolkit/gtk/libglade/actions.py b/desktop/toolkit/gtk/libglade/actions.py new file mode 100644 index 0000000000..cfac2a0c95 --- /dev/null +++ b/desktop/toolkit/gtk/libglade/actions.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--disable-static \ + --disable-gtk-doc") + + pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.install() + + pisitools.dodoc("AUTHORS","ChangeLog", "COPYING", "NEWS", "README") diff --git a/desktop/toolkit/gtk/libglade/comar/package.py b/desktop/toolkit/gtk/libglade/comar/package.py new file mode 100644 index 0000000000..945b069831 --- /dev/null +++ b/desktop/toolkit/gtk/libglade/comar/package.py @@ -0,0 +1,10 @@ +#!/usr/bin/python + +import os + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + os.system("xmlcatalog --noout --add \ + \"system\" \"http://glade.gnome.org/glade-2.0.dtd\" /usr/share/xml/libglade/glade-2.0.dtd") + +def preRemove(): + os.system("xmlcatalog --noout --del /usr/share/xml/libglade/glade-2.0.dtd /etc/xml/catalog") diff --git a/desktop/toolkit/gtk/libglade/files/Makefile.in.am-2.4.2-xmlcatalog.patch b/desktop/toolkit/gtk/libglade/files/Makefile.in.am-2.4.2-xmlcatalog.patch new file mode 100644 index 0000000000..059cdc20f7 --- /dev/null +++ b/desktop/toolkit/gtk/libglade/files/Makefile.in.am-2.4.2-xmlcatalog.patch @@ -0,0 +1,22 @@ +--- a/Makefile.am 2004-11-11 18:56:13.000000000 +0800 ++++ b/Makefile.am 2004-12-06 11:00:24.501734048 +0800 +@@ -24,7 +24,7 @@ + + if HAVE_XMLCATALOG + install-data-local: +- -$(XMLCATALOG) --noout --add "system" "http://glade.gnome.org/glade-2.0.dtd" $(xmldir)/glade-2.0.dtd $(XML_CATALOG_FILE) ++# -$(XMLCATALOG) --noout --add "system" "http://glade.gnome.org/glade-2.0.dtd" $(xmldir)/glade-2.0.dtd $(XML_CATALOG_FILE) + uninstall-local: + -$(XMLCATALOG) --noout --del $(xmldir)/glade-2.0.dtd $(XML_CATALOG_FILE) + endif +--- a/Makefile.in 2004-11-11 19:21:38.000000000 +0800 ++++ b/Makefile.in 2004-12-06 11:00:49.786890120 +0800 +@@ -819,7 +819,7 @@ + + + @HAVE_XMLCATALOG_TRUE@install-data-local: +-@HAVE_XMLCATALOG_TRUE@ -$(XMLCATALOG) --noout --add "system" "http://glade.gnome.org/glade-2.0.dtd" $(xmldir)/glade-2.0.dtd $(XML_CATALOG_FILE) ++@HAVE_XMLCATALOG_TRUE@# -$(XMLCATALOG) --noout --add "system" "http://glade.gnome.org/glade-2.0.dtd" $(xmldir)/glade-2.0.dtd $(XML_CATALOG_FILE) + @HAVE_XMLCATALOG_TRUE@uninstall-local: + @HAVE_XMLCATALOG_TRUE@ -$(XMLCATALOG) --noout --del $(xmldir)/glade-2.0.dtd $(XML_CATALOG_FILE) + diff --git a/desktop/toolkit/gtk/libglade/files/libglade-2.6.3-fix_tests-page_size.patch b/desktop/toolkit/gtk/libglade/files/libglade-2.6.3-fix_tests-page_size.patch new file mode 100644 index 0000000000..37c5b69e54 --- /dev/null +++ b/desktop/toolkit/gtk/libglade/files/libglade-2.6.3-fix_tests-page_size.patch @@ -0,0 +1,11 @@ +--- a/tests/test-libglade-gtk.glade 2008-09-27 16:50:40.164242312 +0300 ++++ b/tests/test-libglade-gtk.glade 2008-09-27 16:50:43.460908927 +0300 +@@ -470,7 +470,7 @@ + 100 + 1 + 10 +- 10 ++ 0 + + 1 + 2 diff --git a/desktop/toolkit/gtk/libglade/pspec.xml b/desktop/toolkit/gtk/libglade/pspec.xml new file mode 100644 index 0000000000..61658717f5 --- /dev/null +++ b/desktop/toolkit/gtk/libglade/pspec.xml @@ -0,0 +1,105 @@ + + + + + libglade + http://www.gnome.org/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + Glade interface builder + Libglade is a library that performs a similar job to the C source output routines in the GLADE user interface builder. Whereas GLADE's output routines create C code that can then be compiled, libglade builds the interface from an XML file (GLADE's save format) at runtime. This way you can change the look of a program without needing to recompile. + mirrors://gnome/libglade/2.6/libglade-2.6.4.tar.bz2 + + glib2-devel + libxml2-devel + atk-devel + pango-devel + gtk2-devel + + + Makefile.in.am-2.4.2-xmlcatalog.patch + libglade-2.6.3-fix_tests-page_size.patch + + + + + libglade + + glib2 + libxml2 + atk + pango + gtk2 + gdk-pixbuf + + + /usr/lib + /usr/share/doc + /usr/share/xml + + + System.Package + + + + + libglade-docs + data:doc + Libglade reference documents + + libglade + + + /usr/share/gtk-doc + + + + + libglade-devel + Development files for libglade + + libglade + gtk2-devel + + + /usr/bin + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-05-18 + 2.6.4 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-07 + 2.6.4 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-17 + 2.6.4 + Release bump + Pisi Linux Admins + admins@pisilinux.org + + + 2010-10-12 + 2.6.4 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/desktop/toolkit/gtk/libglade/translations.xml b/desktop/toolkit/gtk/libglade/translations.xml new file mode 100644 index 0000000000..201310228e --- /dev/null +++ b/desktop/toolkit/gtk/libglade/translations.xml @@ -0,0 +1,19 @@ + + + + libglade + Glade arayüz oluşturucu + Libglade, GLADE kullanıcı arayüzü yapıcısındaki C kaynak çıkışı yöntemine benzer iş yapan bir kitaplıktır. GLADE'in çıkış yöntemi derlenebilir C kodu oluştururken, libglade arayüzü bir XML dosyasında oluşturur. Böylece yeniden derlenmeye gerek kalmadan arayüz değiştirilebilir. + Libglade est une librairie effectuant un travail similaire aux routines de génération de source C dans le constructeur d'interface graphique GLADE. Là ou les routines de génération de GLADE génerent du code C à compiler, libglade construit l interface depuis un fichier XML (le format de sauvegarde de GLADE) à l'exécution. De cette manière, vous pouvez changer l'apparence de votre programme sans avoir à le recompiler. + + + + libglade-docs + Libglade referans belgeleri + + + + libglade-devel + libglade için geliştirme dosyaları + + diff --git a/x11/library/libepoxy/pspec.xml b/x11/library/libepoxy/pspec.xml index 4b5d0ae496..7f21de7035 100755 --- a/x11/library/libepoxy/pspec.xml +++ b/x11/library/libepoxy/pspec.xml @@ -14,17 +14,14 @@ Epoxy is a library for handling OpenGL function pointer management for you. https://github.com/anholt/libepoxy/archive/v1.2.tar.gz - python3 - xorg-util + libX11-devel mesa-devel + util-macros libepoxy - - mesa - /etc/xdg /usr/bin @@ -44,7 +41,26 @@ /usr/include - /usr/lib/pkgconfig + /usr/lib/pkgconfig + + + + + libepoxy-32bit + emul32 + 32-bit shared libraries for libeproxy + emul32 + + glibc-32bit + libX11-32bit + mesa-32bit + + + glibc-32bit + + + /lib32 + /usr/lib32 @@ -57,4 +73,4 @@ groni@pisilinux.org - + \ No newline at end of file From 28a6e5e059c59f6abcae21bcef68f59c714d9a5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Tue, 7 Jul 2015 16:42:55 +0300 Subject: [PATCH 148/175] avahi without python ready for with python pygtk need py-gobject an pycairo pycairo not builded. --- network/analyzer/avahi/actions.py | 4 +- network/analyzer/avahi/pspec.xml | 26 ++++++- .../language/python/python-cairo/actions.py | 23 ++++++ .../language/python/python-cairo/pspec.xml | 72 ++++++++++++++++++ .../python/python-cairo/translations.xml | 13 ++++ .../python/python-pygobject/actions.py | 28 +++++++ .../files/pygobject-2.16.1-fixdetection.patch | 13 ++++ .../python/python-pygobject/pspec.xml | 74 +++++++++++++++++++ .../python/python-pygobject/translations.xml | 19 +++++ 9 files changed, 267 insertions(+), 5 deletions(-) create mode 100644 programming/language/python/python-cairo/actions.py create mode 100644 programming/language/python/python-cairo/pspec.xml create mode 100644 programming/language/python/python-cairo/translations.xml create mode 100644 programming/language/python/python-pygobject/actions.py create mode 100644 programming/language/python/python-pygobject/files/pygobject-2.16.1-fixdetection.patch create mode 100644 programming/language/python/python-pygobject/pspec.xml create mode 100644 programming/language/python/python-pygobject/translations.xml diff --git a/network/analyzer/avahi/actions.py b/network/analyzer/avahi/actions.py index 46a3e9d1b8..dad0acc9da 100644 --- a/network/analyzer/avahi/actions.py +++ b/network/analyzer/avahi/actions.py @@ -28,6 +28,7 @@ def setup(): --enable-gobject \ --enable-introspection \ --disable-mono \ + --disable-python \ --enable-gtk3 \ --enable-compat-howl \ --enable-compat-libdns_sd \ @@ -60,4 +61,5 @@ def install(): pisitools.dodoc("docs/AUTHORS", "docs/README", "docs/TODO") - pisitools.removeDir("var/run") \ No newline at end of file + pisitools.removeDir("var/run") + pisitools.removeDir("/usr/lib/avahi") \ No newline at end of file diff --git a/network/analyzer/avahi/pspec.xml b/network/analyzer/avahi/pspec.xml index 988686ca36..c4cceb34db 100644 --- a/network/analyzer/avahi/pspec.xml +++ b/network/analyzer/avahi/pspec.xml @@ -16,11 +16,16 @@ gtk2-devel gtk3-devel - libcap-devel libdaemon-devel - python-gtk-devel + gobject-introspection-devel + libepoxy-devel + at-spi2-core-devel + gdbm-devel + intltool + + avahi-0.6.31-no-deprecations.patch @@ -31,6 +36,7 @@ avahi-glib Libraries for easy use of avahi from glib applications + glib2 avahi avahi-libs @@ -99,7 +105,9 @@ avahi-ui Gtk user interface library for Avahi + gdbm gtk2 + glib2 avahi-libs avahi-glib atk @@ -132,6 +140,8 @@ avahi-ui-gtk3 Gtk3 user interface library for Avahi + gdbm + glib2 gtk3 avahi-libs avahi-glib @@ -165,7 +175,8 @@ UI tools for mDNS browsing gtk3 - python-gtk + glib2 + avahi avahi-ui avahi-glib @@ -241,6 +252,9 @@ avahi-libs Libraries needed to run programs that use avahi + + dbus + /usr/lib/libavahi-common.so* /usr/lib/libavahi-client.so* @@ -250,6 +264,9 @@ avahi + dbus + expat + libcap libdaemon avahi-libs @@ -317,6 +334,7 @@ avahi-tools Command line tools for mDNS browsing and publishing + gdbm avahi avahi-libs diff --git a/programming/language/python/python-cairo/actions.py b/programming/language/python/python-cairo/actions.py new file mode 100644 index 0000000000..01d21ad075 --- /dev/null +++ b/programming/language/python/python-cairo/actions.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get +from pisi.actionsapi import pisitools + +shelltools.export("JOBS", get.makeJOBS().replace("-j", "")) + +def setup(): + shelltools.system("python waf configure --prefix=/usr") + +def build(): + shelltools.system("python waf build -v") + +def install(): + shelltools.system("DESTDIR=%s python waf install" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "COPYING", "README","COPYING-*") \ No newline at end of file diff --git a/programming/language/python/python-cairo/pspec.xml b/programming/language/python/python-cairo/pspec.xml new file mode 100644 index 0000000000..db19525fc8 --- /dev/null +++ b/programming/language/python/python-cairo/pspec.xml @@ -0,0 +1,72 @@ + + + + + python-cairo + http://cairographics.org/pycairo + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + Python wrapper for cairo graphics library + Pycairo is set of Python bindings for the cairo graphics library. + http://cairographics.org/releases/py2cairo-1.10.0.tar.bz2 + + cairo-devel + + + + + + + + python-cairo + + cairo + + + /usr/lib + /usr/share/doc + + + + + python-cairo-devel + Development files for python-cairo + + python-cairo + cairo-devel + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-06-01 + 1.10.0 + rebuild + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2013-11-05 + 1.10.0 + Version bump + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2010-10-13 + 1.8.10 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/programming/language/python/python-cairo/translations.xml b/programming/language/python/python-cairo/translations.xml new file mode 100644 index 0000000000..bfba25017f --- /dev/null +++ b/programming/language/python/python-cairo/translations.xml @@ -0,0 +1,13 @@ + + + + python-cairo + Cairo vektörel grafik kitaplığı için Python bağlayıcıları + wrapper (version enrobée) Python de la librairie de graphisme vectoriel cairo. + + + + python-cairo-devel + python-cairo için geliştirme dosyaları + + diff --git a/programming/language/python/python-pygobject/actions.py b/programming/language/python/python-pygobject/actions.py new file mode 100644 index 0000000000..f5ebc6a529 --- /dev/null +++ b/programming/language/python/python-pygobject/actions.py @@ -0,0 +1,28 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +WorkDir = "pygobject-%s" % get.srcVERSION() + +def setup(): + # autoreconf is for under linking problem + autotools.autoreconf("-fi") + autotools.configure("--disable-introspection") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.install() + + #shelltools.chmod("%s/usr/share/pygobject/xsl/fixxref.py" % get.installDIR(), 0755) + pisitools.dodoc("AUTHORS", "NEWS", "ChangeLog", "README") diff --git a/programming/language/python/python-pygobject/files/pygobject-2.16.1-fixdetection.patch b/programming/language/python/python-pygobject/files/pygobject-2.16.1-fixdetection.patch new file mode 100644 index 0000000000..714144d620 --- /dev/null +++ b/programming/language/python/python-pygobject/files/pygobject-2.16.1-fixdetection.patch @@ -0,0 +1,13 @@ +diff -p -up pygobject-2.16.1/pygtk.py.fixdetection pygobject-2.16.1/pygtk.py +--- pygobject-2.16.1/pygtk.py.fixdetection 2009-02-20 22:27:14.000000000 +0100 ++++ pygobject-2.16.1/pygtk.py 2009-02-23 09:44:55.000000000 +0100 +@@ -57,6 +57,9 @@ def _get_available_versions(): + # skip empty directories + if not os.listdir(pathname): + continue ++ # only accept directories containing gtk.py or gobject.so ++ if not glob.glob(os.path.join(pathname, "gtk.py")) and not glob.glob(os.path.join(pathname,"gobject.so")): ++ continue + + if not versions.has_key(filename[-3:]): + versions[filename[-3:]] = pathname diff --git a/programming/language/python/python-pygobject/pspec.xml b/programming/language/python/python-pygobject/pspec.xml new file mode 100644 index 0000000000..787e2ceafe --- /dev/null +++ b/programming/language/python/python-pygobject/pspec.xml @@ -0,0 +1,74 @@ + + + + + python-pygobject + http://www.pygtk.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + Glib bindings for Python + pygobject is GLib's GObject library bindings for Python. + http://ftp.gnome.org/pub/GNOME/sources/pygobject/2.28/pygobject-2.28.6.tar.xz + + cairo-devel + gobject-introspection-devel + libffi-devel + python-devel + + + pygobject-2.16.1-fixdetection.patch + + + + + python-pygobject + + glib2 + cairo + gobject-introspection + libffi + + + /usr/lib + /usr/share/doc + + + + + python-pygobject-devel + pygobject development files + + python-pygobject + gobject-introspection-devel + + + /usr/bin/pygobject-codegen-2.0 + /usr/include + /usr/lib/pkgconfig + /usr/share/pygobject + + + + + python-pygobject-docs + data:doc + API documents for pygobject + + /usr/share/gtk-doc + + + + + + 2012-10-14 + 2.28.6 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/programming/language/python/python-pygobject/translations.xml b/programming/language/python/python-pygobject/translations.xml new file mode 100644 index 0000000000..a4ee875e96 --- /dev/null +++ b/programming/language/python/python-pygobject/translations.xml @@ -0,0 +1,19 @@ + + + + python-pygobject + glib için python bağlayıcıları + Bindings (liens) glib pour Python. + pygobject, Python için yazılmış, Glib'in GObject kütüphanesi bağlayıcısıdır. + + + + python-pygobject-devel + pygobject geliştirme dosyaları + + + + python-pygobject-docs + pygobject için API dökümanları + + From 4a11aaca7ae4fff64f0194a0715eec899a595ac0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Tue, 7 Jul 2015 20:25:40 +0300 Subject: [PATCH 149/175] not builded, move to temp --- .../language/python/python-cairo/actions.py | 23 ---- .../language/python/python-cairo/pspec.xml | 72 ----------- .../python/python-cairo/translations.xml | 13 -- .../language/python/python-gtk/actions.py | 32 ----- .../language/python/python-gtk/pspec.xml | 112 ------------------ .../python/python-gtk/translations.xml | 24 ---- .../python/python-pygobject/actions.py | 28 ----- .../files/pygobject-2.16.1-fixdetection.patch | 13 -- .../python/python-pygobject/pspec.xml | 74 ------------ .../python/python-pygobject/translations.xml | 19 --- 10 files changed, 410 deletions(-) delete mode 100644 programming/language/python/python-cairo/actions.py delete mode 100644 programming/language/python/python-cairo/pspec.xml delete mode 100644 programming/language/python/python-cairo/translations.xml delete mode 100644 programming/language/python/python-gtk/actions.py delete mode 100644 programming/language/python/python-gtk/pspec.xml delete mode 100644 programming/language/python/python-gtk/translations.xml delete mode 100644 programming/language/python/python-pygobject/actions.py delete mode 100644 programming/language/python/python-pygobject/files/pygobject-2.16.1-fixdetection.patch delete mode 100644 programming/language/python/python-pygobject/pspec.xml delete mode 100644 programming/language/python/python-pygobject/translations.xml diff --git a/programming/language/python/python-cairo/actions.py b/programming/language/python/python-cairo/actions.py deleted file mode 100644 index 01d21ad075..0000000000 --- a/programming/language/python/python-cairo/actions.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# -# Licensed under the GNU General Public License, version 3. -# See the file http://www.gnu.org/licenses/gpl.txt - -from pisi.actionsapi import autotools -from pisi.actionsapi import shelltools -from pisi.actionsapi import get -from pisi.actionsapi import pisitools - -shelltools.export("JOBS", get.makeJOBS().replace("-j", "")) - -def setup(): - shelltools.system("python waf configure --prefix=/usr") - -def build(): - shelltools.system("python waf build -v") - -def install(): - shelltools.system("DESTDIR=%s python waf install" % get.installDIR()) - - pisitools.dodoc("AUTHORS", "COPYING", "README","COPYING-*") \ No newline at end of file diff --git a/programming/language/python/python-cairo/pspec.xml b/programming/language/python/python-cairo/pspec.xml deleted file mode 100644 index db19525fc8..0000000000 --- a/programming/language/python/python-cairo/pspec.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - python-cairo - http://cairographics.org/pycairo - - PisiLinux Community - admins@pisilinux.org - - GPLv2 - library - Python wrapper for cairo graphics library - Pycairo is set of Python bindings for the cairo graphics library. - http://cairographics.org/releases/py2cairo-1.10.0.tar.bz2 - - cairo-devel - - - - - - - - python-cairo - - cairo - - - /usr/lib - /usr/share/doc - - - - - python-cairo-devel - Development files for python-cairo - - python-cairo - cairo-devel - - - /usr/include - /usr/lib/pkgconfig - - - - - - 2014-06-01 - 1.10.0 - rebuild - Burak Fazıl Ertürk - burakerturk@pisilinux.org - - - 2013-11-05 - 1.10.0 - Version bump - Burak Fazıl Ertürk - burakerturk@pisilinux.org - - - 2010-10-13 - 1.8.10 - First release - Pisi Linux Admins - admins@pisilinux.org - - - diff --git a/programming/language/python/python-cairo/translations.xml b/programming/language/python/python-cairo/translations.xml deleted file mode 100644 index bfba25017f..0000000000 --- a/programming/language/python/python-cairo/translations.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - python-cairo - Cairo vektörel grafik kitaplığı için Python bağlayıcıları - wrapper (version enrobée) Python de la librairie de graphisme vectoriel cairo. - - - - python-cairo-devel - python-cairo için geliştirme dosyaları - - diff --git a/programming/language/python/python-gtk/actions.py b/programming/language/python/python-gtk/actions.py deleted file mode 100644 index 1f15a6a321..0000000000 --- a/programming/language/python/python-gtk/actions.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# -# Licensed under the GNU General Public License, version 3. -# See the file http://www.gnu.org/licenses/gpl.txt - -from pisi.actionsapi import autotools -from pisi.actionsapi import pisitools -from pisi.actionsapi import shelltools -from pisi.actionsapi import get - -WorkDir = "pygtk-%s" % (get.srcVERSION()) - -def setup(): - shelltools.unlink("py-compile" ) - shelltools.sym("/bin/true", "%s/py-compile" % get.curDIR()) - - autotools.configure("--enable-thread \ - --disable-docs") - - shelltools.touch("%s/style.css" % get.curDIR()) - pisitools.dosed("docs/Makefile", "CSS_FILES = .*", "CSS_FILES = %s/style.css" % get.curDIR()) - - pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ") - -def build(): - autotools.make() - -def install(): - autotools.rawInstall("DESTDIR=%s" % get.installDIR()) - - pisitools.dodoc("AUTHORS", "ChangeLog", "MAPPING", "NEWS", "README", "THREADS", "TODO") diff --git a/programming/language/python/python-gtk/pspec.xml b/programming/language/python/python-gtk/pspec.xml deleted file mode 100644 index f9defa28e5..0000000000 --- a/programming/language/python/python-gtk/pspec.xml +++ /dev/null @@ -1,112 +0,0 @@ - - - - - python-gtk - http://www.pygtk.org - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - GTK+ bindings for Python - python-gtk lets you to easily create programs with a graphical user interface using the Python programming language and GTK+ library. - mirrors://gnome/pygtk/2.24/pygtk-2.24.0.tar.bz2 - - cairo-devel - pango-devel - atk-devel - gtk2-devel - libglade-devel - python-pygobject-devel - python-cairo-devel - python-numpy - - - - - python-gtk - - cairo - pango - atk - gtk2 - libglade - gdk-pixbuf - python-pygobject - python-cairo - python-numpy - - - /usr/lib - /usr/share/doc - - - - - python-gtk-demo - app:gui - Demo applications for python-gtk - - python-gtk - - - /usr/bin/pygtk-demo - /usr/lib/pygtk/2.0/pygtk-demo.py - /usr/lib/pygtk/2.0/demos - - - - - python-gtk-docs - data:doc - Reference documents for python-gtk - - python-gtk - - - /usr/share/gtk-doc - - - - - python-gtk-devel - Development files for python-gtk - - python-gtk - python-pygobject-devel - gtk2-devel - - - /usr/bin/pygtk-codegen-2.0 - /usr/include - /usr/lib/pkgconfig - /usr/share/pygtk - - - - - - 2013-08-17 - 2.24.0 - Dep Fixed - PisiLinux Community - admins@pisilinux.org - - - 2013-07-28 - 2.24.0 - Dep Fixed - PisiLinux Community - admins@pisilinux.org - - - 2012-11-11 - 2.24.0 - First release - Erdinç Gültekin - admins@pisilinux.org - - - \ No newline at end of file diff --git a/programming/language/python/python-gtk/translations.xml b/programming/language/python/python-gtk/translations.xml deleted file mode 100644 index c77b510540..0000000000 --- a/programming/language/python/python-gtk/translations.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - python-gtk - Python için GTK+ bağlayıcıları - python-gtk, Python programlama diliyle GTK+ kitaplığını kullanarak, basit grafiksel kullanıcı arayüzü oluşturmanızı sağlar. - Bindings (liens) GTK+2 pour Python. - - - - python-gtk-demo - python-gtk için demo uygulamalar - - - - python-gtk-docs - python-gtk için referans belgeleri - - - - python-gtk-devel - python-gtk için geliştirme dosyaları - - diff --git a/programming/language/python/python-pygobject/actions.py b/programming/language/python/python-pygobject/actions.py deleted file mode 100644 index f5ebc6a529..0000000000 --- a/programming/language/python/python-pygobject/actions.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# -# Licensed under the GNU General Public License, version 3. -# See the file http://www.gnu.org/licenses/gpl.txt - -from pisi.actionsapi import autotools -from pisi.actionsapi import pisitools -from pisi.actionsapi import shelltools -from pisi.actionsapi import get - -WorkDir = "pygobject-%s" % get.srcVERSION() - -def setup(): - # autoreconf is for under linking problem - autotools.autoreconf("-fi") - autotools.configure("--disable-introspection") - - pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") - -def build(): - autotools.make() - -def install(): - autotools.install() - - #shelltools.chmod("%s/usr/share/pygobject/xsl/fixxref.py" % get.installDIR(), 0755) - pisitools.dodoc("AUTHORS", "NEWS", "ChangeLog", "README") diff --git a/programming/language/python/python-pygobject/files/pygobject-2.16.1-fixdetection.patch b/programming/language/python/python-pygobject/files/pygobject-2.16.1-fixdetection.patch deleted file mode 100644 index 714144d620..0000000000 --- a/programming/language/python/python-pygobject/files/pygobject-2.16.1-fixdetection.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -p -up pygobject-2.16.1/pygtk.py.fixdetection pygobject-2.16.1/pygtk.py ---- pygobject-2.16.1/pygtk.py.fixdetection 2009-02-20 22:27:14.000000000 +0100 -+++ pygobject-2.16.1/pygtk.py 2009-02-23 09:44:55.000000000 +0100 -@@ -57,6 +57,9 @@ def _get_available_versions(): - # skip empty directories - if not os.listdir(pathname): - continue -+ # only accept directories containing gtk.py or gobject.so -+ if not glob.glob(os.path.join(pathname, "gtk.py")) and not glob.glob(os.path.join(pathname,"gobject.so")): -+ continue - - if not versions.has_key(filename[-3:]): - versions[filename[-3:]] = pathname diff --git a/programming/language/python/python-pygobject/pspec.xml b/programming/language/python/python-pygobject/pspec.xml deleted file mode 100644 index 787e2ceafe..0000000000 --- a/programming/language/python/python-pygobject/pspec.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - python-pygobject - http://www.pygtk.org - - PisiLinux Community - admins@pisilinux.org - - LGPLv2.1 - library - Glib bindings for Python - pygobject is GLib's GObject library bindings for Python. - http://ftp.gnome.org/pub/GNOME/sources/pygobject/2.28/pygobject-2.28.6.tar.xz - - cairo-devel - gobject-introspection-devel - libffi-devel - python-devel - - - pygobject-2.16.1-fixdetection.patch - - - - - python-pygobject - - glib2 - cairo - gobject-introspection - libffi - - - /usr/lib - /usr/share/doc - - - - - python-pygobject-devel - pygobject development files - - python-pygobject - gobject-introspection-devel - - - /usr/bin/pygobject-codegen-2.0 - /usr/include - /usr/lib/pkgconfig - /usr/share/pygobject - - - - - python-pygobject-docs - data:doc - API documents for pygobject - - /usr/share/gtk-doc - - - - - - 2012-10-14 - 2.28.6 - First release - PisiLinux Community - admins@pisilinux.org - - - diff --git a/programming/language/python/python-pygobject/translations.xml b/programming/language/python/python-pygobject/translations.xml deleted file mode 100644 index a4ee875e96..0000000000 --- a/programming/language/python/python-pygobject/translations.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - python-pygobject - glib için python bağlayıcıları - Bindings (liens) glib pour Python. - pygobject, Python için yazılmış, Glib'in GObject kütüphanesi bağlayıcısıdır. - - - - python-pygobject-devel - pygobject geliştirme dosyaları - - - - python-pygobject-docs - pygobject için API dökümanları - - From 7b57d439d4d274082fb2c77f19928acb9f4258f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Wed, 8 Jul 2015 10:59:49 +0300 Subject: [PATCH 150/175] libtdb, dep for pulseaudio --- server/database/libtdb/actions.py | 27 ++++++++ server/database/libtdb/pspec.xml | 89 +++++++++++++++++++++++++ server/database/libtdb/translations.xml | 13 ++++ 3 files changed, 129 insertions(+) create mode 100644 server/database/libtdb/actions.py create mode 100644 server/database/libtdb/pspec.xml create mode 100644 server/database/libtdb/translations.xml diff --git a/server/database/libtdb/actions.py b/server/database/libtdb/actions.py new file mode 100644 index 0000000000..297ab72a16 --- /dev/null +++ b/server/database/libtdb/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +shelltools.export("JOBS", get.makeJOBS().replace("-j", "")) + +def setup(): + autotools.configure("\ + --builtin-libraries=replace \ + --bundled-libraries=NONE \ + --disable-rpath \ + ") + +def build(): + shelltools.system("make") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("docs/README") diff --git a/server/database/libtdb/pspec.xml b/server/database/libtdb/pspec.xml new file mode 100644 index 0000000000..555dbb910d --- /dev/null +++ b/server/database/libtdb/pspec.xml @@ -0,0 +1,89 @@ + + + + + libtdb + http://tdb.samba.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv3+ + library + app:console + Trivial database library + libtdb contains C library and Python bindings to access to a trivial database. TDB is very much like GDBM and BSDDB except that it allows multiple simultaneous writers and uses locking internally to keep writers from trampling on each other. + http://www.samba.org/ftp/tdb/tdb-1.2.13.tar.gz + + libxslt + python-devel + docbook-xsl + libbsd-devel + + + + + + + libtdb + + python + + + /usr/bin + /usr/lib + /usr/share/man + /usr/share/doc + + + + + libtdb-devel + Development files for libtdb + + libtdb + + + /usr/lib/pkgconfig + /usr/include + + + + + + 2014-05-22 + 1.2.13 + rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-26 + 1.2.13 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-09 + 1.2.12 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-18 + 1.2.11 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2010-10-13 + 1.2.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/server/database/libtdb/translations.xml b/server/database/libtdb/translations.xml new file mode 100644 index 0000000000..e354444fd4 --- /dev/null +++ b/server/database/libtdb/translations.xml @@ -0,0 +1,13 @@ + + + + libtdb + TDB veritabanına erişim için gerekli kitaplıklar + libtdb basit bir veritabanı olan TDB ile iletişime geçmek için gerekli C ve Python kitaplıklarını içerir. + + + + libtdb-devel + libtdb için geliştirme dosyaları + + From ee19cd1858cef69ffa07891a768123b7076dfea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Wed, 8 Jul 2015 12:53:44 +0300 Subject: [PATCH 151/175] fix deps for pulseaudio lirc left. --- hardware/bluetooth/bluez/pspec.xml | 7 +- hardware/bluetooth/component.xml | 3 + multimedia/misc/orc/actions.py | 3 + multimedia/misc/orc/pspec.xml | 4 +- multimedia/sound/libsamplerate/actions.py | 30 ++++++++ .../files/dontbuild-tests-examples.patch | 32 +++++++++ multimedia/sound/libsamplerate/pspec.xml | 71 ++++++++++++++++++ .../sound/libsamplerate/translations.xml | 15 ++++ network/misc/libasyncns/actions.py | 23 ++++++ network/misc/libasyncns/pspec.xml | 55 ++++++++++++++ network/misc/libasyncns/translations.xml | 13 ++++ network/misc/libnl/actions.py | 2 + programming/misc/libical/actions.py | 17 +++++ programming/misc/libical/pspec.xml | 72 +++++++++++++++++++ programming/misc/libical/translations.xml | 13 ++++ 15 files changed, 355 insertions(+), 5 deletions(-) create mode 100644 hardware/bluetooth/component.xml create mode 100644 multimedia/sound/libsamplerate/actions.py create mode 100644 multimedia/sound/libsamplerate/files/dontbuild-tests-examples.patch create mode 100644 multimedia/sound/libsamplerate/pspec.xml create mode 100644 multimedia/sound/libsamplerate/translations.xml create mode 100644 network/misc/libasyncns/actions.py create mode 100644 network/misc/libasyncns/pspec.xml create mode 100644 network/misc/libasyncns/translations.xml create mode 100644 programming/misc/libical/actions.py create mode 100644 programming/misc/libical/pspec.xml create mode 100644 programming/misc/libical/translations.xml diff --git a/hardware/bluetooth/bluez/pspec.xml b/hardware/bluetooth/bluez/pspec.xml index df7725cdce..1f1fcda4bb 100644 --- a/hardware/bluetooth/bluez/pspec.xml +++ b/hardware/bluetooth/bluez/pspec.xml @@ -17,15 +17,16 @@ https://www.kernel.org/pub/linux/bluetooth/bluez-5.27.tar.xz cups-devel - dbus-devel + dbus-devel libnl-devel alsa-lib-devel gstreamer-devel libsndfile-devel - gst-plugins-base-devel + libical-devel glib2-devel - libical-devel + eudev-devel + readline-devel bluez-5.27-obexd_without_systemd-1.patch diff --git a/hardware/bluetooth/component.xml b/hardware/bluetooth/component.xml new file mode 100644 index 0000000000..14ed87a2bf --- /dev/null +++ b/hardware/bluetooth/component.xml @@ -0,0 +1,3 @@ + + hardware.bluetooth + diff --git a/multimedia/misc/orc/actions.py b/multimedia/misc/orc/actions.py index 7a538a558c..53ba05240b 100644 --- a/multimedia/misc/orc/actions.py +++ b/multimedia/misc/orc/actions.py @@ -4,10 +4,13 @@ # See the file http://www.gnu.org/copyleft/gpl.txt from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools from pisi.actionsapi import get def setup(): autotools.configure("--disable-static") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") def build(): autotools.make() diff --git a/multimedia/misc/orc/pspec.xml b/multimedia/misc/orc/pspec.xml index 53497aa28a..49248409d0 100644 --- a/multimedia/misc/orc/pspec.xml +++ b/multimedia/misc/orc/pspec.xml @@ -48,9 +48,9 @@ orc-devel orc için geliştirme dosyaları - + orc - + /usr/include/ /usr/lib/pkgconfig diff --git a/multimedia/sound/libsamplerate/actions.py b/multimedia/sound/libsamplerate/actions.py new file mode 100644 index 0000000000..cb5572601a --- /dev/null +++ b/multimedia/sound/libsamplerate/actions.py @@ -0,0 +1,30 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import libtools +from pisi.actionsapi import get + +def setup(): + autotools.configure("--with-pic \ + --enable-sndfile \ + --disable-static \ + --enable-shared \ + --disable-fftw \ + --disable-dependency-tracking") + + # Remove RPATH + pisitools.dosed("libtool", "^hardcode_libdir_flag_spec=.*", "hardcode_libdir_flag_spec=\"\"") + pisitools.dosed("libtool", "^runpath_var=LD_RUN_PATH", "runpath_var=DIE_RPATH_DIE") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "NEWS", "README") diff --git a/multimedia/sound/libsamplerate/files/dontbuild-tests-examples.patch b/multimedia/sound/libsamplerate/files/dontbuild-tests-examples.patch new file mode 100644 index 0000000000..23cf5897a5 --- /dev/null +++ b/multimedia/sound/libsamplerate/files/dontbuild-tests-examples.patch @@ -0,0 +1,32 @@ +Index: libsamplerate-0.1.3/examples/Makefile.am +=================================================================== +--- libsamplerate-0.1.3.orig/examples/Makefile.am ++++ libsamplerate-0.1.3/examples/Makefile.am +@@ -3,7 +3,7 @@ + + bin_PROGRAMS = sndfile-resample + +-noinst_PROGRAMS = varispeed-play timewarp-file ++EXTRA_PROGRAMS = varispeed-play timewarp-file + + SAMPLERATEDIR =../src + INCLUDES = -I$(srcdir)/$(SAMPLERATEDIR) @OS_SPECIFIC_INCLUDES@ +Index: libsamplerate-0.1.3/tests/Makefile.am +=================================================================== +--- libsamplerate-0.1.3.orig/tests/Makefile.am ++++ libsamplerate-0.1.3/tests/Makefile.am +@@ -1,4 +1,4 @@ +-noinst_PROGRAMS = misc_test termination_test simple_test callback_test \ ++EXTRA_PROGRAMS = misc_test termination_test simple_test callback_test \ + reset_test multi_channel_test snr_bw_test \ + float_short_test varispeed_test callback_hang_test \ + src-evaluate throughput_test +@@ -55,7 +55,7 @@ throughput_test_LDADD = $(SAMPLRATEDIR) + + #=============================================================================== + +-check: $(noinst_PROGRAMS) ++check: $(EXTRA_PROGRAMS) + date + uname -a + ./misc_test diff --git a/multimedia/sound/libsamplerate/pspec.xml b/multimedia/sound/libsamplerate/pspec.xml new file mode 100644 index 0000000000..63fe397eaf --- /dev/null +++ b/multimedia/sound/libsamplerate/pspec.xml @@ -0,0 +1,71 @@ + + + + + libsamplerate + http://www.mega-nerd.com/SRC/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + Secret Rabbit Code (aka libsamplerate) is a Sample Rate Converter for audio + Secret Rabbit Code is a sample rate converter for audio. It is capable of arbitrary and time varying conversions. It can downsample by a factor of 12 and upsample by the same factor. The ratio of input and output sample rates can be a real number. The conversion ratio can also vary with time for speeding up and slowing down effects. + http://www.mega-nerd.com/SRC/libsamplerate-0.1.8.tar.gz + + libsndfile-devel + + + dontbuild-tests-examples.patch + + + + + libsamplerate + + libsndfile + + + /usr/bin + /usr/lib + /usr/share/doc + + + + + libsamplerate-devel + Development files for libsamplerate + + libsamplerate + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-05-25 + 0.1.8 + Rebuild + Alihan Öztürk + alihan@pisilinux.org + + + 2014-02-01 + 0.1.8 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2011-10-17 + 0.1.8 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/multimedia/sound/libsamplerate/translations.xml b/multimedia/sound/libsamplerate/translations.xml new file mode 100644 index 0000000000..5b080133f4 --- /dev/null +++ b/multimedia/sound/libsamplerate/translations.xml @@ -0,0 +1,15 @@ + + + + libsamplerate + libsamplerate ses dosyaları için basit bir örnekleme oranı dönüştürücü + Secret Rabbit Code (alias libsamplerate) est un convertisseur audio de taux de Sample (Sample Rate Converter). + libsamplerate (Seceret Rabbit Code) ses dosyaları için basit bir örnekleme oranı dönüştürücüsüdür. Zaman ya da tercih edilen başka bir yapıya bağlı olarak 12 kata kadar dönüşüm yapabilir. Örnekleme oranı değiştirebildiği gibi hızlandırma ve yavaşlatma filtreleri de uygulayabilir. + + + + libsamplerate-devel + libsamplerate için geliştirme dosyaları + libsamplerate için geliştirme dosyaları + + diff --git a/network/misc/libasyncns/actions.py b/network/misc/libasyncns/actions.py new file mode 100644 index 0000000000..0848e6e5df --- /dev/null +++ b/network/misc/libasyncns/actions.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.configure("--enable-static=no \ + --disable-lynx \ + --disable-static") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.install() + + pisitools.dodoc("LICENSE") diff --git a/network/misc/libasyncns/pspec.xml b/network/misc/libasyncns/pspec.xml new file mode 100644 index 0000000000..826c214d60 --- /dev/null +++ b/network/misc/libasyncns/pspec.xml @@ -0,0 +1,55 @@ + + + + + libasyncns + http://0pointer.de/lennart/projects/libasyncns + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + A C library for asynchronous name service queries + libasyncns is a C library for Linux/Unix for executing name service queries asynchronously. It is an asynchronous wrapper around getaddrinfo(), getnameinfo(), res_query() and res_search() from libc and libresolv. + http://0pointer.de/lennart/projects/libasyncns/libasyncns-0.8.tar.gz + + + + libasyncns + + /usr/lib + /usr/share/doc + + + + + libasyncns-devel + Development files for libasyncns + + libasyncns + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + + 2014-01-29 + 0.8 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2010-10-13 + 0.8 + First release + Gökcen Eraslan + admins@pisilinux.org + + + diff --git a/network/misc/libasyncns/translations.xml b/network/misc/libasyncns/translations.xml new file mode 100644 index 0000000000..33345246db --- /dev/null +++ b/network/misc/libasyncns/translations.xml @@ -0,0 +1,13 @@ + + + + libasyncns + Asenkron isim servisi sorguları için C kitaplığı + libasyncns, Linux/Unix üzerinde isim servisi sorgularını asenkron olarak gerçekleştirme imkanı veren bir C kitaplığıdır. + + + + libasyncns-devel + libasyncns için geliştirme dosyaları + + diff --git a/network/misc/libnl/actions.py b/network/misc/libnl/actions.py index c56f300979..d7192153cf 100644 --- a/network/misc/libnl/actions.py +++ b/network/misc/libnl/actions.py @@ -10,6 +10,8 @@ from pisi.actionsapi import pisitools def setup(): autotools.configure() + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") def build(): autotools.make() diff --git a/programming/misc/libical/actions.py b/programming/misc/libical/actions.py new file mode 100644 index 0000000000..86fb042c4b --- /dev/null +++ b/programming/misc/libical/actions.py @@ -0,0 +1,17 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import cmaketools +from pisi.actionsapi import pisitools + +def setup(): + cmaketools.configure() + +def build(): + cmaketools.make() + +def install(): + cmaketools.install() diff --git a/programming/misc/libical/pspec.xml b/programming/misc/libical/pspec.xml new file mode 100644 index 0000000000..d44ae15838 --- /dev/null +++ b/programming/misc/libical/pspec.xml @@ -0,0 +1,72 @@ + + + + + libical + https://github.com/libical/libical + + PisiLinux Community + admins@pisilinux.org + + MPL-1.1 + LGPLv2 + library + An open source reference implementation of the icalendar data type and serialization format + libical is an Open Source implementation of the IETF's iCalendar Calendaring and Scheduling protocols. (RFC 2445, 2446, and 2447). It parses iCal components and provides a C API for manipulating the component properties, parameters, and subcomponents. + https://github.com/libical/libical/releases/download/v1.0.1/libical-1.0.1.tar.gz + + cmake + + + + + libical + + /usr/lib + /usr/share/libical/zoneinfo + + + + + libical-devel + Development files for libical + + libical + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2015-07-08 + 1.0.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-01 + 1.0 + Rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-27 + 1.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 201-10-02 + 0.48 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/programming/misc/libical/translations.xml b/programming/misc/libical/translations.xml new file mode 100644 index 0000000000..3677353fa2 --- /dev/null +++ b/programming/misc/libical/translations.xml @@ -0,0 +1,13 @@ + + + + libical + icalendar veri tipi ve serileştirme biçiminin açık kaynak referans gerçeklemesi + libical IETF'in iCalendar Takvim ve Planlama protokülün açık kaynak gerçeklemesidir. (RFC 2445, 2446, 2447) Kitaplık, iCal bileşenlerini ayrıştırır ve bileşen özelliklerini, parametrelerini ve alt bileşenlerini işlemek için bir C programlama arayüzü sunar. + + + + libical-devel + libical için geliştirme dosyaları + + From 5ae146286121ff874336eb5973939a2d6139e8a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Wed, 8 Jul 2015 13:19:39 +0300 Subject: [PATCH 152/175] pulseaudio is fini.. gconf, lirc deps is disabled. --- multimedia/sound/pulseaudio/pspec.xml | 33 ++++++++++++++++++++------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/multimedia/sound/pulseaudio/pspec.xml b/multimedia/sound/pulseaudio/pspec.xml index 28430f1a28..0e0932dcfc 100644 --- a/multimedia/sound/pulseaudio/pspec.xml +++ b/multimedia/sound/pulseaudio/pspec.xml @@ -23,8 +23,8 @@ doxygen xcb-proto gtk2-devel - lirc-devel - gconf-devel + + avahi-devel speex-devel libSM-devel @@ -33,12 +33,14 @@ libXtst-devel xcb-util-devel alsa-lib-devel - bluez-libs-devel libsndfile-devel libasyncns-devel libatomic_ops-devel - libsamplerate-devel - libasyncns-devel + eudev-devel + dbus-devel + intltool + libcap-devel + json-c-devel @@ -46,9 +48,17 @@ pulseaudio-libs Libraries for PulseAudio clients + dbus + glib2 + json-c + libX11 + libxcb + eudev + + libtool-ltdl orc sbc - lirc + fftw3 libSM speex @@ -58,6 +68,7 @@ avahi-libs libasyncns libsndfile + bluez /usr/bin/pa* @@ -100,6 +111,10 @@ pulseaudio + dbus + libX11 + libcap + libtool-ltdl orc speex libtdb @@ -155,7 +170,7 @@ - + pulseaudio-libs-32bit @@ -181,6 +196,7 @@ libcap-32bit libsndfile-32bit libtool-ltdl-32bit + glibc-32bit pulseaudio-libs @@ -188,6 +204,7 @@ glib2-32bit libsndfile-32bit json-c-32bit + glibc-32bit /usr/lib32 From c029c5dce071b00f0cb5754fff9ef25f0ec6ca61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Wed, 8 Jul 2015 16:24:02 +0300 Subject: [PATCH 153/175] remove setserial dep in bluez --- hardware/bluetooth/bluez/pspec.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/hardware/bluetooth/bluez/pspec.xml b/hardware/bluetooth/bluez/pspec.xml index 1f1fcda4bb..20aa2ea124 100644 --- a/hardware/bluetooth/bluez/pspec.xml +++ b/hardware/bluetooth/bluez/pspec.xml @@ -42,7 +42,6 @@ libical alsa-lib alsa-lib - setserial gstreamer libsndfile gst-plugins-base From 2ceb02bd4ab1c54c6c2830804e1823946ee6cad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Wed, 8 Jul 2015 16:29:55 +0300 Subject: [PATCH 154/175] remove gst-plugins-base in deps bluez --- hardware/bluetooth/bluez/pspec.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/hardware/bluetooth/bluez/pspec.xml b/hardware/bluetooth/bluez/pspec.xml index 20aa2ea124..31220411c7 100644 --- a/hardware/bluetooth/bluez/pspec.xml +++ b/hardware/bluetooth/bluez/pspec.xml @@ -44,7 +44,6 @@ alsa-lib gstreamer libsndfile - gst-plugins-base bluez-libs From 9636ca056ae75bfe4d6c2153242d05c169e6380d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Wed, 8 Jul 2015 18:27:57 +0300 Subject: [PATCH 155/175] openal, fix deps --- multimedia/sound/openal/pspec.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/multimedia/sound/openal/pspec.xml b/multimedia/sound/openal/pspec.xml index a062aa84bc..5be9b05392 100644 --- a/multimedia/sound/openal/pspec.xml +++ b/multimedia/sound/openal/pspec.xml @@ -16,6 +16,7 @@ alsa-lib-devel pulseaudio-libs-devel + cmake pthread.patch @@ -57,7 +58,11 @@ emul32 32-bit shared libraries for openal emul32 - + + glibc-32bit + + + glibc-32bit openal From 69dbd1e9ffb66438a9ff8b7cb4bcc0788e0a4597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Wed, 8 Jul 2015 18:42:05 +0300 Subject: [PATCH 156/175] qt5-multimedia fix build --- desktop/toolkit/qt5/qt5-multimedia/pspec.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/desktop/toolkit/qt5/qt5-multimedia/pspec.xml b/desktop/toolkit/qt5/qt5-multimedia/pspec.xml index 12e6bd9e60..39338bf673 100644 --- a/desktop/toolkit/qt5/qt5-multimedia/pspec.xml +++ b/desktop/toolkit/qt5/qt5-multimedia/pspec.xml @@ -18,6 +18,7 @@ pulseaudio-libs-devel gstreamer-devel openal-devel + mesa-devel @@ -30,6 +31,7 @@ /usr/share/licenses + libgcc mesa openal alsa-lib @@ -37,8 +39,8 @@ gstreamer pulseaudio-libs qt5-declarative - gst-plugins-base - gst-plugins-bad + From a1a1ef18d9a72ed731a824d4552751bdef60fdf2 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Thu, 9 Jul 2015 08:56:28 +0300 Subject: [PATCH 157/175] NM moved into main for pisi20 --- network/connection/NetworkManager/actions.py | 68 + .../NetworkManager/comar/service.py | 44 + ...ling-back-in-the-resolv.conf-methods.patch | 34 + .../01-org.freedesktop.ModemManager1.rules | 6 + ...etworkManager.settings.modify.system.rules | 6 + .../NetworkManager/files/NetworkManager.conf | 4 + .../NetworkManager/files/NetworkManager.confd | 2 + .../files/disable_set_hostname.patch | 19 + ...NetworkManager.settings.modify.system.pkla | 6 + .../files/migrate-comar-network-profiles | 606 ++++++ ...ger-0.9.8.9-fix-crash-on-wifi-rescan.patch | 48 + .../NetworkManager/files/tmpfiles.conf | 1 + network/connection/NetworkManager/files/tr.po | 1933 +++++++++++++++++ network/connection/NetworkManager/pspec.xml | 213 ++ .../NetworkManager/translations.xml | 13 + 15 files changed, 3003 insertions(+) create mode 100644 network/connection/NetworkManager/actions.py create mode 100644 network/connection/NetworkManager/comar/service.py create mode 100644 network/connection/NetworkManager/files/0001-dns-Fix-falling-back-in-the-resolv.conf-methods.patch create mode 100644 network/connection/NetworkManager/files/01-org.freedesktop.ModemManager1.rules create mode 100644 network/connection/NetworkManager/files/01-org.freedesktop.NetworkManager.settings.modify.system.rules create mode 100644 network/connection/NetworkManager/files/NetworkManager.conf create mode 100644 network/connection/NetworkManager/files/NetworkManager.confd create mode 100644 network/connection/NetworkManager/files/disable_set_hostname.patch create mode 100644 network/connection/NetworkManager/files/gentoo/01-org.freedesktop.NetworkManager.settings.modify.system.pkla create mode 100644 network/connection/NetworkManager/files/migrate-comar-network-profiles create mode 100644 network/connection/NetworkManager/files/networkmanager-0.9.8.9-fix-crash-on-wifi-rescan.patch create mode 100644 network/connection/NetworkManager/files/tmpfiles.conf create mode 100644 network/connection/NetworkManager/files/tr.po create mode 100644 network/connection/NetworkManager/pspec.xml create mode 100644 network/connection/NetworkManager/translations.xml diff --git a/network/connection/NetworkManager/actions.py b/network/connection/NetworkManager/actions.py new file mode 100644 index 0000000000..9718f9c8ef --- /dev/null +++ b/network/connection/NetworkManager/actions.py @@ -0,0 +1,68 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 2. +# See the file http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + + +def setup(): + # /var/run => /run + for f in ["configure.ac", "src/Makefile.am", "src/Makefile.in"]: + pisitools.dosed(f, "\$\(?localstatedir\)?(\/run\/(\$PACKAGE|NetworkManager))", "\\1") + pisitools.dosed("configure.ac", "\/var(\/run\/ConsoleKit)", "\\1") + pisitools.dosed("configure.ac", "^initscript", deleteLine=True) + autotools.autoreconf("-fi") + shelltools.system("intltoolize --force --copy --automake") + + autotools.configure("--disable-static \ + --disable-silent-rules \ + --disable-wimax \ + --disable-lto \ + --disable-config-plugin-ibft \ + --disable-ifnet \ + --disable-more-warnings \ + --enable-modify-system \ + --enable-ppp=yes \ + --enable-bluez5=yes \ + --enable-concheck \ + --without-netconfig \ + --with-modem-manager-1 \ + --with-libsoup=yes \ + --with-session-tracking=consolekit \ + --with-suspend-resume=upower \ + --with-system-ca-path=/etc/ssl/certs \ + --with-crypto=nss \ + --with-dhcpcd=/sbin/dhcpcd \ + --with-pppd=/usr/sbin/pppd \ + --with-pppd-plugin-dir=/usr/lib/pppd/2.4.6 \ + --with-dbus-sys-dir=/etc/dbus-1/system.d \ + --with-dhclient=/usr/sbin/dhclient \ + --with-kernel-firmware-dir=/lib/firmware \ + --with-udev-dir=/lib/udev \ + --with-resolvconf=/etc/resolv.default.conf \ + --with-iptables=/usr/sbin/iptables \ + --with-dnsmasq=/usr/sbin/dnsmasq \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/NetworkManager \ + ") + + pisitools.dosed("libtool", " -shared ", " -Wl,--as-needed -shared ") + +def build(): + autotools.make() + +#def check(): +# autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodir("/etc/NetworkManager/VPN") + + pisitools.dodoc("AUTHORS", "ChangeLog", "CONTRIBUTING", "COPYING", "NEWS", "README") diff --git a/network/connection/NetworkManager/comar/service.py b/network/connection/NetworkManager/comar/service.py new file mode 100644 index 0000000000..52f2d23b94 --- /dev/null +++ b/network/connection/NetworkManager/comar/service.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +from comar.service import * +import os + +serviceType = "local" +serviceDesc = _({"en": "Network Manager", + "tr": "Ağ Yöneticisi Hizmeti"}) +serviceDefault = "conditional" + +MSG_BACKEND_WARNING = _({ + "en" : "NetworkManager is not enabled by default. You can change this from /etc/conf.d/NetworkManager.", + "tr" : "NetworkManager öntanımlı olarak etkin değil. /etc/conf.d/NetworkManager dosyasından bu ayarı değiştirebilirsiniz." + }) + +PIDFILE="/run/NetworkManager/NetworkManager.pid" +USETHIS=eval(config.get("DEFAULT", "True")) + +@synchronized +def start(): + if not USETHIS: + fail(MSG_BACKEND_WARNING) + + startService(command="/usr/sbin/NetworkManager", + args="--pid-file=%s" % PIDFILE, + donotify=True) + +@synchronized +def stop(): + stopService(pidfile=PIDFILE, + donotify=True) + + try: + os.unlink(PIDFILE) + except: + pass + +def ready(): + if not USETHIS: + fail(MSG_BACKEND_WARNING) + else: + start() + +def status(): + return isServiceRunning(pidfile=PIDFILE) \ No newline at end of file diff --git a/network/connection/NetworkManager/files/0001-dns-Fix-falling-back-in-the-resolv.conf-methods.patch b/network/connection/NetworkManager/files/0001-dns-Fix-falling-back-in-the-resolv.conf-methods.patch new file mode 100644 index 0000000000..a729b2d25c --- /dev/null +++ b/network/connection/NetworkManager/files/0001-dns-Fix-falling-back-in-the-resolv.conf-methods.patch @@ -0,0 +1,34 @@ +From 35c9e8d5321b6451fb74f8e7231a690c940a6e69 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Wed, 6 May 2015 20:49:57 +0200 +Subject: [PATCH] dns: Fix falling back in the resolv.conf methods + +--- + src/dns-manager/nm-dns-manager.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c +index 2f8ceab..eade2a0 100644 +--- a/src/dns-manager/nm-dns-manager.c ++++ b/src/dns-manager/nm-dns-manager.c +@@ -782,13 +782,16 @@ update_dns (NMDnsManager *self, + + #ifdef NETCONFIG_PATH + if (success == FALSE) { ++ g_clear_error (error); + success = dispatch_netconfig (searches, nameservers, + nis_domain, nis_servers, error); + } + #endif + +- if (success == FALSE) ++ if (success == FALSE) { ++ g_clear_error (error); + success = update_resolv_conf (searches, nameservers, error); ++ } + + /* signal that resolv.conf was changed */ + if (success) +-- +2.4.0 + diff --git a/network/connection/NetworkManager/files/01-org.freedesktop.ModemManager1.rules b/network/connection/NetworkManager/files/01-org.freedesktop.ModemManager1.rules new file mode 100644 index 0000000000..6df2427c54 --- /dev/null +++ b/network/connection/NetworkManager/files/01-org.freedesktop.ModemManager1.rules @@ -0,0 +1,6 @@ +polkit.addRule(function(action, subject) { + if (/^org\.freedesktop\.ModemManager1\.(Device\.Control|Contacts|Messaging|Location)$/.test(action.id) && + subject.isInGroup("network")) { + return "yes"; + } +}); diff --git a/network/connection/NetworkManager/files/01-org.freedesktop.NetworkManager.settings.modify.system.rules b/network/connection/NetworkManager/files/01-org.freedesktop.NetworkManager.settings.modify.system.rules new file mode 100644 index 0000000000..ed4a41f9d2 --- /dev/null +++ b/network/connection/NetworkManager/files/01-org.freedesktop.NetworkManager.settings.modify.system.rules @@ -0,0 +1,6 @@ +polkit.addRule(function(action, subject) { + if (action.id == "org.freedesktop.NetworkManager.settings.modify.system" && + subject.isInGroup("network")) { + return "yes"; + } +}); diff --git a/network/connection/NetworkManager/files/NetworkManager.conf b/network/connection/NetworkManager/files/NetworkManager.conf new file mode 100644 index 0000000000..002534833b --- /dev/null +++ b/network/connection/NetworkManager/files/NetworkManager.conf @@ -0,0 +1,4 @@ +[main] +plugins=keyfile +dhcp=internal +dns=default \ No newline at end of file diff --git a/network/connection/NetworkManager/files/NetworkManager.confd b/network/connection/NetworkManager/files/NetworkManager.confd new file mode 100644 index 0000000000..c5b43e5be8 --- /dev/null +++ b/network/connection/NetworkManager/files/NetworkManager.confd @@ -0,0 +1,2 @@ +# Set this to False for disabling NM startup on boot +DEFAULT="True" diff --git a/network/connection/NetworkManager/files/disable_set_hostname.patch b/network/connection/NetworkManager/files/disable_set_hostname.patch new file mode 100644 index 0000000000..ee95dd0e1c --- /dev/null +++ b/network/connection/NetworkManager/files/disable_set_hostname.patch @@ -0,0 +1,19 @@ +diff -Nur NetworkManager-0.9.0.orig/src/nm-policy.c NetworkManager-0.9.0/src/nm-policy.c +--- NetworkManager-0.9.0.orig/src/nm-policy.c 2011-08-23 06:41:02.099686450 +0000 ++++ NetworkManager-0.9.0/src/nm-policy.c 2011-08-23 06:43:38.227791737 +0000 +@@ -302,6 +302,7 @@ + return; + } + ++#if 0 + /* Try automatically determined hostname from the best device's IP config */ + if (!best4) + best4 = get_best_ip4_device (policy->manager, &best_req4); +@@ -356,6 +357,7 @@ + } + } + ++#endif + /* If no automatically-configured hostname, try using the hostname from + * when NM started up. + */ diff --git a/network/connection/NetworkManager/files/gentoo/01-org.freedesktop.NetworkManager.settings.modify.system.pkla b/network/connection/NetworkManager/files/gentoo/01-org.freedesktop.NetworkManager.settings.modify.system.pkla new file mode 100644 index 0000000000..24f8d0bd17 --- /dev/null +++ b/network/connection/NetworkManager/files/gentoo/01-org.freedesktop.NetworkManager.settings.modify.system.pkla @@ -0,0 +1,6 @@ +[Let users in removable group modify NetworkManager] +Identity=unix-group:removable +Action=org.freedesktop.NetworkManager.settings.* +ResultAny=no +ResultInactive=no +ResultActive=yes \ No newline at end of file diff --git a/network/connection/NetworkManager/files/migrate-comar-network-profiles b/network/connection/NetworkManager/files/migrate-comar-network-profiles new file mode 100644 index 0000000000..6c96382bec --- /dev/null +++ b/network/connection/NetworkManager/files/migrate-comar-network-profiles @@ -0,0 +1,606 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# Copyright 2009-2010 TUBITAK/UEKAE +# Licensed under the GNU General Public License, version 2. +# See the file http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt +# +# +# +# A migration script to transform COMAR based network profiles into NetworkManager based network profiles. +# +# The main purpose of the script is help Pardus 2009 users to be able to use their network profiles in Pardus 2011 +# without any effort when they upgrade their system. +# +# A few words about how stuff works. COMAR based network manager keeps profile settings under /etc/network with two +# files: net_tools which includes ethernet profile settings and wireless_tools which includes wireless profile settings. +# On the other hand, NetworkManager keeps each profile settings in an individual file under /etc/NetworkManager/system-connections. +# +# This script simply reads your old profile files and try to create a new profile file compatible with NetworkManager for each profile. +# +# + + +import os +import ConfigParser + + +default_nameservers = [] +default_resolv_conf_file = "/etc/resolv.default.conf" +lan_config_file = "/etc/network/net_tools" +wlan_config_file = "/etc/network/wireless_tools" +migration_sign = "/etc/network/.migrated" +NetworkManager_conf_dir = "/etc/NetworkManager/system-connections" + +def is_migrated_before(): + """Make this tool run once; so after migration, touch a file named '.migrated' + under old network manager profiles dir. Check it first and then try to migrate profiles. + """ + + global migration_sign + if os.path.exists(migration_sign): + return True + else: + return False + +def get_default_nameservers(): + """Read once default name servers in resolve.default.conf, if 'name_mode' in + given profile was set to default, supply these values in the new profile file + """ + global default_nameservers + if len(default_nameservers) == 0: + if os.path.exists(default_resolv_conf_file): + with open(default_resolv_conf_file) as f: + nameservers_file = f.readlines() + + for line in nameservers_file: + if not line.startswith("#") and line.startswith("nameserver"): + ns = line.split()[-1] + default_nameservers.append(ns) + + #If we can't find default.resolv.conf, supply default Pardus DNS servers + else: + default_nameservers = ["193.140.100.210", "193.140.100.215", "193.140.100.220"] + + return default_nameservers + + +class PardusNetworkProfile: + """Represents COMAR based network profiles that we have been using in Pardus' network + manager. We have two types of network profiles specified: wired or wireless + """ + + def __init__(self, name, connection_type, settings): + + self.profile_name = name + self.connection_type = connection_type + self.device = "none" + self.net_mode = "none" + self.name_mode = "none" + self.state = "none" + self.name_server = "none" + self.net_address = "none" + self.net_mask = "none" + self.net_gateway = "none" + self.remote = "none" + self.auth = "none" + self.auth_password = "none" + + self.set_attributes(settings) + + def set_attributes(self, settings): + """We receive profile settings as dictionary type in 'settings' + Map each key-value pairs for each object. + """ + + for key, value in settings.items(): + self.__dict__[key] = value + + def get_profile_name(self): + return self.profile_name + + def get_connection_type(self): + return self.connection_type + + def get_device(self): + return self.device + + def get_net_mode(self): + return self.net_mode + + def get_name_mode(self): + return self.name_mode + + def get_state(self): + return self.state + + def get_name_server(self): + return self.name_server + + def get_net_address(self): + return self.net_address + + def get_net_mask(self): + return self.net_mask + + def get_net_gateway(self): + return self.net_gateway + + def get_remote(self): + return self.remote + + def get_auth(self): + return self.auth + + def get_auth_password(self): + return self.auth_password + + +class NetworkManagerProfile: + """Represents network profiles used in NetworkManager. In NetworkManager, + settings are kept in a seperate file for each profile. + """ + + def __init__(self, name, pardus_profile): + """Each section is kept in corresponding class attribute""" + + self.cfg = ConfigParser.ConfigParser() + self.connection = Connection(pardus_profile) + self.ipv4 = IpV4(pardus_profile) + self.ipv6 = IpV6(pardus_profile) + self._802_3_ethernet = self.set_802_3_ethernet(pardus_profile) + self._802_11_wireless = self.set_802_11_wireless(pardus_profile) + self._802_11_wireless_security = self.set_802_11_wireless_security(pardus_profile) + + self.create_config() + + def set_802_3_ethernet(self, pardus_profile): + """If this is a wired (802-3-ethernet) profile, set _802_3_ethernet + attribute. + """ + + if pardus_profile.connection_type == "802-3-ethernet": + return _802_3_Ethernet(pardus_profile) + else: + return "none" + + def set_802_11_wireless(self, pardus_profile): + """If this is a wireless (802-11-wirelesss) profile, set + _802_11_wireless attribute.""" + if pardus_profile.connection_type == "802-11-wireless": + return _802_11_Wireless(pardus_profile) + else: + return "none" + + def set_802_11_wireless_security(self, pardus_profile): + """If the wireless connection has any security restrictions, create a + 802-11-wireless-security section with corresponding values. + """ + + if pardus_profile.get_connection_type() == "802-11-wireless": #Check if it is a wlan profile + if pardus_profile.get_auth() == "none": + self._802_11_wireless.security = "none" + return "none" + else: + self._802_11_wireless.security = "802-11-wireless-security" + return _802_11_Wireless_Security(pardus_profile) + else: + return "none" + + def create_config(self): + """Create sections and options in the prfoile's config file by calling + each options corresponding method. + """ + + #FIXME: Try to do it over loops ie. self[attr].set_config() + for attr, value in self.__dict__.items(): + if attr == "connection": + self.connection.set_config(self.cfg) + if attr == "ipv4": + self.ipv4.set_config(self.cfg) + if attr == "ipv6": + self.ipv6.set_config(self.cfg) + if attr == "_802_3_ethernet" and not value == "none": + self._802_3_ethernet.set_config(self.cfg) + if attr == "_802_11_wireless" and not value == "none": + self._802_11_wireless.set_config(self.cfg) + if attr == "_802_11_wireless_security" and not value == "none": + self._802_11_wireless_security.set_config(self.cfg) + + def write_config(self): + """Write settings to profile file""" + + #Before writing to file we must convert underscores to dashes, moreover _id must be written as id, and _type as type + + if not os.path.exists(NetworkManager_conf_dir): + os.makedirs(NetworkManager_conf_dir, mode=0755) + + profile_path = os.path.join("%s" % NetworkManager_conf_dir, self.connection._id) + with open(profile_path, "wb") as configfile: + self.cfg.write(configfile) + + def set_ownership(self): + """NetworkManager is smart enough to understand whether a configuration file is valid + by checking its permissions""" + + os.chmod(os.path.join("%s" % NetworkManager_conf_dir, self.connection._id), 0600) + + +class Connection: + """Instances of Connection class represent essential properties of a network connection to identify itself.""" + + def __init__(self, pardus_profile): + self.name = "connection" + self._id = pardus_profile.get_profile_name() + self.uuid = self.set_uuid(device = pardus_profile.get_device()) + self._type = pardus_profile.get_connection_type() + self.autoconnect = self.set_autoconnect(pardus_profile) + self.timestamp = "none" + self.read_only = "false" + + def set_autoconnect(self, profile): + """Set profile activation at startup""" + + if str(profile.get_state()) == "down": + return "false" + else: + return "none" #NM set this 'true' as default if we dont set anything + + def set_uuid(self, device): + """Generate random type UUID""" + import uuid + + return str(uuid.uuid4()) + + def set_config(self, cfg): + """One single config file will be used to write settings""" + + cfg.add_section(self.name) + for attr, value in self.__dict__.items(): + if value not in ["false", "none"] and attr != "name": + #Before creating config file _id must be id, and _type must be type + if attr == "_id" or attr == "_type" : attr = attr.split("_")[-1] + #There isnt any underscore in config options, replace them with dashes if found any + attr = attr.replace("_", "-") + cfg.set(self.name, attr, value) + + +class IpV4: + """Instances of IpV4 class represent IPv4 based properties of a connection.""" + + def __init__(self, pardus_profile): + self.name = "ipv4" + self.dns_search = "none" + self.routes = "none" + self.ignore_auto_routes = "false" + self.ignore_auto_dns = "false" + self.dhcp_client_id = "none" + self.dhcp_send_hostname = "false" + self.dhcp_hostname = "none" + self.never_default = "false" + self.method = pardus_profile.get_net_mode() # auto or manual, same as in NM + self.addresses1 = self.set_addresses(pardus_profile) # NM uses array of IPv4 address structures. We have only one for each iface + self.dns = self.set_dns(pardus_profile) + + def set_dns(self, pardus_profile): + """Decide whether to use default, custom or auto (DHCP assigned) nameservers""" + + if pardus_profile.get_name_mode() == "default": + default_nameservers = ";".join( get_default_nameservers()) + default_nameservers = default_nameservers + ";" # Make sure addresses end with ';' + self.ignore_auto_dns = "true" + return str(default_nameservers) + elif pardus_profile.get_name_mode() == "custom": + name_server = str(pardus_profile.get_name_server()) + name_server = name_server + ";" + self.ignore_auto_dns = "true" + return str(name_server) + else: + # Nothing done in auto option + return "none" + + def set_addresses(self, pardus_profile): + """Set network addresses from given settings""" + + addresses = [] + if self.method == "manual": + net_mask = self.calculate_prefix(pardus_profile.get_net_mask()) + addresses.append(str(pardus_profile.get_net_address())) + addresses.append(str(net_mask)) + addresses.append(str(pardus_profile.get_net_gateway())) + addresses = ";".join(addresses) + addresses = addresses + ";" # Make sure addresses end with ';' + return addresses + else: + return "none" + + def decimal2binary(self, n): + """Convert decimal octet value to binary format""" + + octet = ["0", "0", "0", "0", "0", "0", "0", "0"] + index = 0 + if n < 0 or n > 255: + raise ValueError, "Octet value must be between [0-255]" + if n == 0: + return "".join(octet) + while n > 0: + octet[index] = str((n % 2)) + index += 1 + n = n >> 1 + octet.reverse() + return "".join(octet) + + def calculate_prefix(self, net_mask): + """Convert netmask value to CIDR prefix type which is between [1-32] as told in NM spec + See http://mail.gnome.org/archives/networkmanager-list/2008-August/msg00076.html""" + + octets = net_mask.split(".") + octet_in_binary = [] + netmask_value = 0 + for octet in octets: + ret = self.decimal2binary(int(octet)) + octet_in_binary.append(ret) + for i in "".join(octet_in_binary): + if int(i) == 1 : netmask_value += 1 + return netmask_value + + def set_config(self, cfg): + """One single config file will be used to write settings""" + + cfg.add_section(self.name) + for attr, value in self.__dict__.items(): + if value not in ["false", "none"] and attr != "name": + attr = attr.replace("_", "-") + cfg.set(self.name, attr, value) + + +class IpV6: + """Instances of IpV6 class represent IPv6 based properties of a connection.""" + + def __init__(self, pardus_profile): + self.name = "ipv6" + self.method = "none" + self.dns = "none" + self.dns_search = "none" + self.addresses = "none" + self.routes = "none" + self.ignore_auto_routes = "false" + self.ignore_auto_dns = "false" + self.dhcp_client_id = "none" + self.dhcp_send_hostname = "none" + self.dhcp_hostname = "none" + self.never_default = "false" + + self.set_method() + + def set_method(self): + """Ignoring by default for nowadays""" + self.method = "ignore" + + def set_config(self, cfg): + """One single config file will be used to write settings""" + + cfg.add_section(self.name) + for attr, value in self.__dict__.items(): + if value not in ["false", "none"] and attr != "name": + attr = attr.replace("_", "-") + cfg.set(self.name, attr, value) + +class _802_3_Ethernet: + """Instances of _802_3_Ethernet class represent options related with ethernet device.""" + + def __init__(self, pardus_profile): + self.name = "802-3-ethernet" + self.port = "none" + self.speed = "none" #0 + self.duplex = "full" + self.auto_negotiate = "false" + self.mac_address = self.set_mac_address(pardus_profile.get_device()) + self.mtu = "none" #0 + + def set_mac_address(self, iface): + """Return MAC addresses of given interface on the machine""" + if os.path.exists("/sys/class/net/%s" % iface): + return open("/sys/class/net/%s/address" % iface).read().strip() + return "none" + + def set_config(self, cfg): + """One single config file will be used to write settings""" + + cfg.add_section(self.name) + for attr, value in self.__dict__.items(): + if value not in ["false", "none"] and attr != "name": + attr = attr.replace("_", "-") + cfg.set(self.name, attr, value) + + +class _802_11_Wireless: + """Instances of _802_11_Wireless class represent options related with wireless device.""" + + def __init__(self, pardus_profile): + self.name = "802-11-wireless" + self.ssid = self.set_ssid(pardus_profile) + self.band = "none" + self.channel = "0" + self.bssid = "none" + self.rate = "0" + self.tx_power = "0" + self.mtu = "0" + self.seen_bssids = "none" + self.security = "none" + self.mode = self.set_mode(pardus_profile) + self.mac_address = self.set_mac_address(pardus_profile.get_device()) + + def set_mac_address(self, iface): + """Return MAC addresses of given interface on the machine""" + if os.path.exists("/sys/class/net/%s" % iface): + return open("/sys/class/net/%s/address" % iface).read().strip() + return "none" + + def set_mode(self, pardus_profile): + """One of 'infrastructure' or 'adhoc'. If blank, infrastructure is assumed""" + + #TODO: How to determine mode (adhoc or infrastructure) from old profile settings + return "infrastructure" + + def set_ssid(self, pardus_profile): + """Set ssid value""" + + if pardus_profile.connection_type == "802-11-wireless": + return str(pardus_profile.get_remote()) + else: + return "none" + + def set_config(self, cfg): + """One single config file will be used to write settings""" + + cfg.add_section(self.name) + for attr, value in self.__dict__.items(): + if value not in ["false", "none", "0"] and attr != "name": + attr = attr.replace("_", "-") + cfg.set(self.name, attr, value) + + +class _802_11_Wireless_Security: + """Instances of _802_11_Wireless_Security class represent authentication properties and operations + used in order to be included in networks requiring them. + """ + + def __init__(self, pardus_profile): + self.name = "802-11-wireless-security" + self.key_mgmt = "none" + self.wep_tx_keyidx = "0" + self.auth_alg = "none" + self.proto = "none" + self.pairwise = "none" + self.group = "none" + self.leap_username = "none" + self.wep_key0 = "none" + self.wep_key1 = "none" + self.wep_key2 = "none" + self.wep_key3 = "none" + self.psk = "none" + self.leap_password = "none" + self.wep_key_type = "0" + + self.set_up_wireless_security(pardus_profile) + + def set_up_wireless_security(self, pardus_profile): + """WEP, WPA or none type security based operations""" + + if pardus_profile.get_auth() in ["wep", "wepascii"]: + self.set_wep(pardus_profile) + elif pardus_profile.get_auth() == "wpa-psk": + self.set_wpa(pardus_profile) + else: + return + + def set_wpa(self, pardus_profile): + """Set up WPA based networks""" + + self.key_mgmt = "wpa-psk" + self.psk = str(pardus_profile.get_auth_password()) + + def set_wep(self, pardus_profile): + """Set up WEP based networks""" + + self.auth_alg = "open" #TODO: or 'shared' ?? + self.key_mgmt = "None" # Which stands for WEP based key management + self.wep_key0 = str(pardus_profile.get_auth_password()) # Default index + self.wep_key_type = "1" # Interpret WEP keys as hex or ascii keys + + + def set_config(self, cfg): + """One single config file will be used to write settings""" + + cfg.add_section(self.name) + for attr, value in self.__dict__.items(): + if value not in ["false", "none", "0"] and attr != "name": + attr = attr.replace("_", "-") + + # key-mgmt=none is a mandatory assignment for WEP based + # configurations. As we set all class members' default value + # to 'none', and then filter to set config file with non-none + # values, key-mgmt is set to 'None' intentionally to pass that + # filtering, and its value is set later on by lowercasing to + # hack around this situation. + if attr == "key-mgmt": + value = value.lower() + cfg.set(self.name, attr, value) + + +class Migrator: + """Read COMAR based network profiles we have been using in Pardus' network manager and + transform them into NetworkManager profile type. + """ + + def __init__(self): + + self.pardus_profiles = [] + self.network_manager_profiles = [] + self.lan_config_path = lan_config_file + self.wlan_config_path = wlan_config_file + self.read_pardus_profiles() + + def read_pardus_profiles(self): + """Read wired/wireless profile settings, create PardusNetworkProfile + object for each one, and store them in a list. + """ + + self.lan_config = ConfigParser.ConfigParser() + self.lan_config.read(self.lan_config_path) + connection_type = "802-3-ethernet" + for section in self.lan_config.sections(): + lan_settings = {} + for option in self.lan_config.options(section): + if option == "device": + #To strip device name from long device string + lan_settings[option] = self.lan_config.get(section, option).split("_")[-1] + else: + lan_settings[option] = self.lan_config.get(section, option) + p = PardusNetworkProfile(section, connection_type, lan_settings) + self.pardus_profiles.append(p) + + self.wlan_config = ConfigParser.ConfigParser() + self.wlan_config.read(self.wlan_config_path) + connection_type = "802-11-wireless" + for section in self.wlan_config.sections(): + wlan_settings = {} + for option in self.wlan_config.options(section): + if option == "device": + wlan_settings[option] = self.wlan_config.get(section, option).split("_")[-1] + else: + wlan_settings[option] = self.wlan_config.get(section, option) + p = PardusNetworkProfile(section, connection_type, wlan_settings) + self.pardus_profiles.append(p) + + def transform_profiles(self): + """Convert Pardus' network profiles to NetworkManager profiles""" + + if len(self.pardus_profiles) > 0: # Make sure we have some profiles to migrate + for profile in self.pardus_profiles: + network_manager_profile = NetworkManagerProfile(profile.get_profile_name, profile) + self.network_manager_profiles.append(network_manager_profile) + + def write_network_manager_profiles(self): + """Create profile file for each NetworkManager profile and change ownerships to 0600""" + + if len(self.network_manager_profiles) > 0: # Make sure we have some profiles to migrate + for profile in self.network_manager_profiles: + profile.write_config() + profile.set_ownership() + with open(migration_sign, "w") as f: + pass + + +if __name__ == "__main__": + + print "DEBUG: Checking whether network profiles migrated..." + if not is_migrated_before(): + m = Migrator() + m.transform_profiles() + m.write_network_manager_profiles() + print "DEBUG: Network profiles migration completed successfully!" + else: + print "DEBUG: Network profiles migration seems already done before. Nothing done this time!" + diff --git a/network/connection/NetworkManager/files/networkmanager-0.9.8.9-fix-crash-on-wifi-rescan.patch b/network/connection/NetworkManager/files/networkmanager-0.9.8.9-fix-crash-on-wifi-rescan.patch new file mode 100644 index 0000000000..b41bbb0aa0 --- /dev/null +++ b/network/connection/NetworkManager/files/networkmanager-0.9.8.9-fix-crash-on-wifi-rescan.patch @@ -0,0 +1,48 @@ +From 4099c9242b091604466dda081dc5f6909354258b Mon Sep 17 00:00:00 2001 +From: M. Vefa Bicakci +Date: Sat, 24 May 2014 23:37:00 +0000 +Subject: core: fix crash during Wi-Fi rescan by emitting NM_DEVICE_AUTH_REQUEST signal correctly + +Fixes regression introduced by commit da59b6d2229b85afbb9e14846931376340dc6030. + +https://mail.gnome.org/archives/networkmanager-list/2014-May/msg00038.html + +Backport-of: d9653484859c426f707b4759bc9882f7a57c1152 +[thaller@redhat.com: original patch modified in nm-device-wifi.c to pass no + connection, as it is done on master] +Signed-off-by: Thomas Haller +--- +diff --git a/src/nm-device-wifi.c b/src/nm-device-wifi.c +index 8ca5278..052d68f 100644 +--- a/zsrc/nm-device-wifi.c ++++ b/src/nm-device-wifi.c +@@ -1563,6 +1563,7 @@ impl_device_request_scan (NMDeviceWifi *self, + g_signal_emit_by_name (device, + NM_DEVICE_AUTH_REQUEST, + context, ++ NULL, + NM_AUTH_PERMISSION_NETWORK_CONTROL, + TRUE, + request_scan_cb, +diff --git a/src/nm-manager.c b/src/nm-manager.c +index 9037e64..96bf3b4 100644 +--- a/src/nm-manager.c ++++ b/src/nm-manager.c +@@ -1874,10 +1874,10 @@ device_auth_request_cb (NMDevice *device, + } + + /* Ensure the subject has permissions for this connection */ +- if (!nm_auth_uid_in_acl (connection, +- priv->session_monitor, +- sender_uid, +- &error_desc)) { ++ if (connection != NULL && !nm_auth_uid_in_acl (connection, ++ priv->session_monitor, ++ sender_uid, ++ &error_desc)) { + error = g_error_new_literal (NM_MANAGER_ERROR, + NM_MANAGER_ERROR_PERMISSION_DENIED, + error_desc); +-- +cgit v0.9.0.2-2-gbebe + diff --git a/network/connection/NetworkManager/files/tmpfiles.conf b/network/connection/NetworkManager/files/tmpfiles.conf new file mode 100644 index 0000000000..2ba9393f63 --- /dev/null +++ b/network/connection/NetworkManager/files/tmpfiles.conf @@ -0,0 +1 @@ +d /root/NetworkManager 0755 root root diff --git a/network/connection/NetworkManager/files/tr.po b/network/connection/NetworkManager/files/tr.po new file mode 100644 index 0000000000..b4ddee6604 --- /dev/null +++ b/network/connection/NetworkManager/files/tr.po @@ -0,0 +1,1933 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Ozan Çağlayan , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-12-22 13:45+0000\n" +"PO-Revision-Date: 2010-04-30 10:28+0300\n" +"Last-Translator: Ozan Çağlayan \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../cli/src/connections.c:60 ../cli/src/connections.c:76 +#: ../cli/src/devices.c:89 ../cli/src/devices.c:102 ../cli/src/devices.c:112 +#: ../cli/src/devices.c:122 ../cli/src/devices.c:135 ../cli/src/devices.c:146 +#: ../cli/src/devices.c:157 ../cli/src/devices.c:166 ../cli/src/devices.c:175 +msgid "NAME" +msgstr "" + +#. 0 +#: ../cli/src/connections.c:61 ../cli/src/connections.c:77 +msgid "UUID" +msgstr "UUID" + +#. 1 +#: ../cli/src/connections.c:62 +msgid "DEVICES" +msgstr "" + +#. 2 +#: ../cli/src/connections.c:63 ../cli/src/connections.c:79 +msgid "SCOPE" +msgstr "" + +#. 3 +#: ../cli/src/connections.c:64 +msgid "DEFAULT" +msgstr "" + +#. 4 +#: ../cli/src/connections.c:65 +msgid "DBUS-SERVICE" +msgstr "" + +#. 5 +#: ../cli/src/connections.c:66 +msgid "SPEC-OBJECT" +msgstr "" + +#. 6 +#: ../cli/src/connections.c:67 +msgid "VPN" +msgstr "" + +#. 7 +#. 2 +#: ../cli/src/connections.c:68 ../cli/src/connections.c:84 +#: ../cli/src/devices.c:64 +msgid "DBUS-PATH" +msgstr "" + +#. 1 +#. 0 +#. 1 +#: ../cli/src/connections.c:78 ../cli/src/devices.c:62 ../cli/src/devices.c:91 +msgid "TYPE" +msgstr "" + +#. 3 +#: ../cli/src/connections.c:80 +msgid "TIMESTAMP" +msgstr "" + +#. 4 +#: ../cli/src/connections.c:81 +msgid "TIMESTAMP-REAL" +msgstr "" + +#. 5 +#: ../cli/src/connections.c:82 +msgid "AUTOCONNECT" +msgstr "" + +#. 6 +#: ../cli/src/connections.c:83 +msgid "READONLY" +msgstr "" + +#: ../cli/src/connections.c:160 +#, c-format +msgid "" +"Usage: nmcli con { COMMAND | help }\n" +" COMMAND := { list | status | up | down }\n" +"\n" +" list [id | uuid | system | user]\n" +" status\n" +" up id | uuid [iface ] [ap ] [--nowait] [--timeout " +"]\n" +" down id | uuid \n" +msgstr "" +"Kullanım: nmcli con { KOMUT | help }\n" +" KOMUT := { list | status | up | down }\n" +"\n" +" list [id | uuid | system | user]\n" +" status\n" +" up id | uuid [iface ] [ap ] [--nowait] " +"[--timeout ]\n" +" down id | uuid \n" + +#: ../cli/src/connections.c:200 ../cli/src/connections.c:541 +#, c-format +msgid "Error: 'con list': %s" +msgstr "" + +#: ../cli/src/connections.c:202 ../cli/src/connections.c:543 +#, c-format +msgid "Error: 'con list': %s; allowed fields: %s" +msgstr "" + +#: ../cli/src/connections.c:210 +#, fuzzy +msgid "Connection details" +msgstr "Bağlantılar" + +#: ../cli/src/connections.c:385 ../cli/src/connections.c:606 +#, fuzzy +msgid "system" +msgstr "Sistem" + +#: ../cli/src/connections.c:385 ../cli/src/connections.c:606 +msgid "user" +msgstr "" + +#: ../cli/src/connections.c:387 +msgid "never" +msgstr "" + +#. "CAPABILITIES" +#. Print header +#. "WIFI-PROPERTIES" +#: ../cli/src/connections.c:388 ../cli/src/connections.c:389 +#: ../cli/src/connections.c:607 ../cli/src/connections.c:610 +#: ../cli/src/devices.c:433 ../cli/src/devices.c:558 ../cli/src/devices.c:584 +#: ../cli/src/devices.c:585 ../cli/src/devices.c:586 ../cli/src/devices.c:587 +#: ../cli/src/devices.c:588 ../cli/src/settings.c:508 +#: ../cli/src/settings.c:551 ../cli/src/settings.c:652 +#: ../cli/src/settings.c:926 ../cli/src/settings.c:927 +#: ../cli/src/settings.c:929 ../cli/src/settings.c:931 +#: ../cli/src/settings.c:1056 ../cli/src/settings.c:1057 +#: ../cli/src/settings.c:1058 ../cli/src/settings.c:1137 +#: ../cli/src/settings.c:1138 ../cli/src/settings.c:1139 +#: ../cli/src/settings.c:1140 ../cli/src/settings.c:1141 +#: ../cli/src/settings.c:1142 ../cli/src/settings.c:1143 +#: ../cli/src/settings.c:1144 ../cli/src/settings.c:1145 +#: ../cli/src/settings.c:1146 ../cli/src/settings.c:1147 +#: ../cli/src/settings.c:1148 ../cli/src/settings.c:1149 +#: ../cli/src/settings.c:1224 +msgid "yes" +msgstr "evet" + +#: ../cli/src/connections.c:388 ../cli/src/connections.c:389 +#: ../cli/src/connections.c:607 ../cli/src/connections.c:610 +#: ../cli/src/devices.c:433 ../cli/src/devices.c:558 ../cli/src/devices.c:584 +#: ../cli/src/devices.c:585 ../cli/src/devices.c:586 ../cli/src/devices.c:587 +#: ../cli/src/devices.c:588 ../cli/src/settings.c:508 +#: ../cli/src/settings.c:510 ../cli/src/settings.c:551 +#: ../cli/src/settings.c:652 ../cli/src/settings.c:926 +#: ../cli/src/settings.c:927 ../cli/src/settings.c:929 +#: ../cli/src/settings.c:931 ../cli/src/settings.c:1056 +#: ../cli/src/settings.c:1057 ../cli/src/settings.c:1058 +#: ../cli/src/settings.c:1137 ../cli/src/settings.c:1138 +#: ../cli/src/settings.c:1139 ../cli/src/settings.c:1140 +#: ../cli/src/settings.c:1141 ../cli/src/settings.c:1142 +#: ../cli/src/settings.c:1143 ../cli/src/settings.c:1144 +#: ../cli/src/settings.c:1145 ../cli/src/settings.c:1146 +#: ../cli/src/settings.c:1147 ../cli/src/settings.c:1148 +#: ../cli/src/settings.c:1149 ../cli/src/settings.c:1224 +msgid "no" +msgstr "hayır" + +#: ../cli/src/connections.c:462 ../cli/src/connections.c:505 +#, fuzzy +msgid "System connections" +msgstr "Sistem bağlantıları:\n" + +#: ../cli/src/connections.c:467 ../cli/src/connections.c:518 +msgid "User connections" +msgstr "Kullanıcı bağlantıları" + +#: ../cli/src/connections.c:479 ../cli/src/connections.c:1342 +#: ../cli/src/connections.c:1358 ../cli/src/connections.c:1367 +#: ../cli/src/connections.c:1378 ../cli/src/connections.c:1463 +#: ../cli/src/devices.c:964 ../cli/src/devices.c:974 ../cli/src/devices.c:1076 +#: ../cli/src/devices.c:1083 +#, c-format +msgid "Error: %s argument is missing." +msgstr "Hata: %s argümanı eksik." + +#: ../cli/src/connections.c:492 +#, c-format +msgid "Error: %s - no such connection." +msgstr "Error: %s isminde bir bağlantı yok." + +#: ../cli/src/connections.c:524 ../cli/src/connections.c:1391 +#: ../cli/src/connections.c:1481 ../cli/src/devices.c:787 +#: ../cli/src/devices.c:854 ../cli/src/devices.c:988 ../cli/src/devices.c:1089 +#, c-format +msgid "Unknown parameter: %s\n" +msgstr "Bilinmeyen parametre:%s\n" + +#: ../cli/src/connections.c:533 +#, c-format +msgid "Error: no valid parameter specified." +msgstr "Hata: Geçerli parametre verilmedi." + +#: ../cli/src/connections.c:548 ../cli/src/connections.c:1584 +#: ../cli/src/devices.c:1295 ../cli/src/network-manager.c:359 +#, c-format +msgid "Error: %s." +msgstr "" + +#: ../cli/src/connections.c:655 +#, c-format +msgid "Error: 'con status': %s" +msgstr "" + +#: ../cli/src/connections.c:657 +#, c-format +msgid "Error: 'con status': %s; allowed fields: %s" +msgstr "" + +#: ../cli/src/connections.c:664 +msgid "Active connections" +msgstr "Etkin bağlantılar" + +#: ../cli/src/connections.c:1034 +#, c-format +msgid "no active connection on device '%s'" +msgstr "'%s' aygıtı için etkin bağlantı yok" + +#: ../cli/src/connections.c:1042 +#, c-format +msgid "no active connection or device" +msgstr "etkin bağlantı veya aygıt yok" + +#: ../cli/src/connections.c:1092 +#, c-format +msgid "device '%s' not compatible with connection '%s'" +msgstr "" + +#: ../cli/src/connections.c:1094 +#, fuzzy, c-format +msgid "no device found for connection '%s'" +msgstr "'%s' aygıtı için etkin bağlantı yok" + +#: ../cli/src/connections.c:1105 +msgid "activating" +msgstr "etkinleştiriliyor" + +#: ../cli/src/connections.c:1107 +msgid "activated" +msgstr "etkinleştirildi" + +#: ../cli/src/connections.c:1110 ../cli/src/connections.c:1133 +#: ../cli/src/connections.c:1166 ../cli/src/devices.c:247 +#: ../cli/src/devices.c:559 ../cli/src/network-manager.c:94 +#: ../cli/src/network-manager.c:149 ../cli/src/settings.c:473 +msgid "unknown" +msgstr "bilinmeyen" + +#: ../cli/src/connections.c:1119 +msgid "VPN connecting (prepare)" +msgstr "VPN bağlantısı kuruluyor (hazırlanıyor)" + +#: ../cli/src/connections.c:1121 +msgid "VPN connecting (need authentication)" +msgstr "VPN bağlantısı kuruluyor (kimlik doğrulama gerekiyor)" + +#: ../cli/src/connections.c:1123 +msgid "VPN connecting" +msgstr "VPN bağlantısı kuruluyor" + +#: ../cli/src/connections.c:1125 +msgid "VPN connecting (getting IP configuration)" +msgstr "VPN bağlantısı kuruluyor (IP yapılandırması alınıyor)" + +#: ../cli/src/connections.c:1127 +msgid "VPN connected" +msgstr "VPN bağlantısı kuruldu" + +#: ../cli/src/connections.c:1129 +msgid "VPN connection failed" +msgstr "VPN bağlantısı kurulamadı" + +#: ../cli/src/connections.c:1131 +msgid "VPN disconnected" +msgstr "VPN bağlantısı kesildi" + +#: ../cli/src/connections.c:1142 +msgid "unknown reason" +msgstr "bilinmeyen sebep" + +#: ../cli/src/connections.c:1144 +msgid "none" +msgstr "hiçbiri" + +#: ../cli/src/connections.c:1146 +msgid "the user was disconnected" +msgstr "kullanıcının bağlantısı kesildi" + +#: ../cli/src/connections.c:1148 +msgid "the base network connection was interrupted" +msgstr "Temel ağ bağlantısı kesildi" + +#: ../cli/src/connections.c:1150 +msgid "the VPN service stopped unexpectedly" +msgstr "VPN hizmeti beklenmeyen bir şekilde durdu" + +#: ../cli/src/connections.c:1152 +msgid "the VPN service returned invalid configuration" +msgstr "VPN hizmeti geçersiz yapılandırma hatası bildirdi" + +#: ../cli/src/connections.c:1154 +msgid "the connection attempt timed out" +msgstr "Bağlantı denemesi zaman aşımına uğradı" + +#: ../cli/src/connections.c:1156 +msgid "the VPN service did not start in time" +msgstr "VPN hizmeti zamanında başlamadı" + +#: ../cli/src/connections.c:1158 +msgid "the VPN service failed to start" +msgstr "VPN hizmeti başlatılamadı" + +#: ../cli/src/connections.c:1160 +msgid "no valid VPN secrets" +msgstr "geçerli VPN parola dosyası bulunamadı" + +#: ../cli/src/connections.c:1162 +msgid "invalid VPN secrets" +msgstr "geçersiz VPN parola dosyaları" + +#: ../cli/src/connections.c:1164 +msgid "the connection was removed" +msgstr "bağlantı kaldırıldı" + +#: ../cli/src/connections.c:1178 +#, c-format +msgid "state: %s\n" +msgstr "durum:%s\n" + +#: ../cli/src/connections.c:1181 ../cli/src/connections.c:1207 +#, c-format +msgid "Connection activated\n" +msgstr "Bağlantı etkinleştirildi\n" + +#: ../cli/src/connections.c:1184 +#, c-format +msgid "Error: Connection activation failed." +msgstr "Hata: Bağlantı etkinleştirilemedi." + +#: ../cli/src/connections.c:1203 +#, c-format +msgid "state: %s (%d)\n" +msgstr "durum: %s (%d)\n" + +#: ../cli/src/connections.c:1213 +#, c-format +msgid "Error: Connection activation failed: %s." +msgstr "Hata: Bağlantı etkinleştirilemedi: %s." + +#: ../cli/src/connections.c:1230 ../cli/src/devices.c:911 +#, c-format +msgid "Error: Timeout %d sec expired." +msgstr "Hata: %d saniye zaman aşımı süresi doldu." + +#: ../cli/src/connections.c:1273 +#, c-format +msgid "Error: Connection activation failed: %s" +msgstr "Hata: Bağlantı etkinleştirilemedi: %s" + +#: ../cli/src/connections.c:1287 +#, c-format +msgid "Error: Obtaining active connection for '%s' failed." +msgstr "Hata: '%s' için etkin bağlantı bilgisi alınamadı." + +#: ../cli/src/connections.c:1296 +#, c-format +msgid "Active connection state: %s\n" +msgstr "Etkin bağlantı durumu: %s\n" + +#: ../cli/src/connections.c:1297 +#, c-format +msgid "Active connection path: %s\n" +msgstr "Etkin bağlantı yolu: %s\n" + +#: ../cli/src/connections.c:1351 ../cli/src/connections.c:1472 +#, c-format +msgid "Error: Unknown connection: %s." +msgstr "Hata: Bilinmeyen bağlantı: %s." + +#: ../cli/src/connections.c:1386 ../cli/src/devices.c:982 +#, c-format +msgid "Error: timeout value '%s' is not valid." +msgstr "Hata: '%s' zaman aşımı için geçerli bir değer değil." + +#: ../cli/src/connections.c:1399 ../cli/src/connections.c:1489 +#, c-format +msgid "Error: id or uuid has to be specified." +msgstr "Hata: id veya uuid verilmeli." + +#: ../cli/src/connections.c:1419 +#, c-format +msgid "Error: No suitable device found: %s." +msgstr "Hata: Uygun bir aygıt bulunamadı: %s." + +#: ../cli/src/connections.c:1421 +#, c-format +msgid "Error: No suitable device found." +msgstr "Hata: Uygun bir aygıt bulunamadı." + +#: ../cli/src/connections.c:1516 +#, c-format +msgid "Warning: Connection not active\n" +msgstr "Uyarı: Bağlantı etkin değil\n" + +#: ../cli/src/connections.c:1573 +#, c-format +msgid "Error: 'con' command '%s' is not valid." +msgstr "Hata: 'con' komutu '%s' geçerli değil." + +#: ../cli/src/connections.c:1609 +#, c-format +msgid "Error: could not connect to D-Bus." +msgstr "Hata: D-Bus'a bağlanılamadı." + +#: ../cli/src/connections.c:1616 +#, c-format +msgid "Error: Could not get system settings." +msgstr "Hata: Sistem ayarları alınamadı." + +#: ../cli/src/connections.c:1624 +#, c-format +msgid "Error: Could not get user settings." +msgstr "Hata: Kullanıcı ayarları alınamadı." + +#: ../cli/src/connections.c:1634 +#, c-format +msgid "Error: Can't obtain connections: settings services are not running." +msgstr "Hata: Bağlantılar alınamadı: ayar hizmeti çalışmıyor." + +#. 0 +#. 9 +#: ../cli/src/devices.c:61 ../cli/src/devices.c:90 ../cli/src/devices.c:185 +msgid "DEVICE" +msgstr "" + +#. 1 +#. 4 +#. 0 +#: ../cli/src/devices.c:63 ../cli/src/devices.c:94 +#: ../cli/src/network-manager.c:36 +msgid "STATE" +msgstr "" + +#: ../cli/src/devices.c:73 +msgid "GENERAL" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:74 +msgid "CAPABILITIES" +msgstr "" + +#. 1 +#: ../cli/src/devices.c:75 +msgid "WIFI-PROPERTIES" +msgstr "" + +#. 2 +#: ../cli/src/devices.c:76 +msgid "AP" +msgstr "" + +#. 3 +#: ../cli/src/devices.c:77 +msgid "WIRED-PROPERTIES" +msgstr "" + +#. 4 +#: ../cli/src/devices.c:78 +msgid "IP4-SETTINGS" +msgstr "" + +#. 5 +#: ../cli/src/devices.c:79 +msgid "IP4-DNS" +msgstr "" + +#. 6 +#: ../cli/src/devices.c:80 +msgid "IP6-SETTINGS" +msgstr "" + +#. 7 +#: ../cli/src/devices.c:81 +msgid "IP6-DNS" +msgstr "" + +#. 2 +#: ../cli/src/devices.c:92 +msgid "DRIVER" +msgstr "" + +#. 3 +#: ../cli/src/devices.c:93 +msgid "HWADDR" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:103 +msgid "CARRIER-DETECT" +msgstr "" + +#. 1 +#: ../cli/src/devices.c:104 +msgid "SPEED" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:113 +msgid "CARRIER" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:123 +#, fuzzy +msgid "WEP" +msgstr "WEP" + +#. 1 +#: ../cli/src/devices.c:124 +#, fuzzy +msgid "WPA" +msgstr " WPA" + +#. 2 +#: ../cli/src/devices.c:125 +#, fuzzy +msgid "WPA2" +msgstr " WPA2" + +#. 3 +#: ../cli/src/devices.c:126 +msgid "TKIP" +msgstr "" + +#. 4 +#: ../cli/src/devices.c:127 +msgid "CCMP" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:136 ../cli/src/devices.c:147 +msgid "ADDRESS" +msgstr "" + +#. 1 +#: ../cli/src/devices.c:137 ../cli/src/devices.c:148 +msgid "PREFIX" +msgstr "" + +#. 2 +#: ../cli/src/devices.c:138 ../cli/src/devices.c:149 +msgid "GATEWAY" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:158 ../cli/src/devices.c:167 +msgid "DNS" +msgstr "DNS" + +#. 0 +#: ../cli/src/devices.c:176 +#, fuzzy +msgid "SSID" +msgstr "SSID:" + +#. 1 +#: ../cli/src/devices.c:177 +#, fuzzy +msgid "BSSID" +msgstr "BSSID:" + +#. 2 +#: ../cli/src/devices.c:178 +msgid "MODE" +msgstr "" + +#. 3 +#: ../cli/src/devices.c:179 +msgid "FREQ" +msgstr "" + +#. 4 +#: ../cli/src/devices.c:180 +msgid "RATE" +msgstr "" + +#. 5 +#: ../cli/src/devices.c:181 +msgid "SIGNAL" +msgstr "" + +#. 6 +#: ../cli/src/devices.c:182 +msgid "SECURITY" +msgstr "" + +#. 7 +#: ../cli/src/devices.c:183 +msgid "WPA-FLAGS" +msgstr "" + +#. 8 +#: ../cli/src/devices.c:184 +msgid "RSN-FLAGS" +msgstr "" + +#. 10 +#: ../cli/src/devices.c:186 +msgid "ACTIVE" +msgstr "" + +#: ../cli/src/devices.c:209 +#, fuzzy, c-format +msgid "" +"Usage: nmcli dev { COMMAND | help }\n" +"\n" +" COMMAND := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [iface ]\n" +" disconnect iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] [hwaddr ]]\n" +"\n" +msgstr "" +"Kullanım: nmcli dev { KOMUT | help }\n" +"\n" +" KOMUT := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [iface ]\n" +" disconnect iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] | apinfo iface hwaddr ]\n" +"\n" + +#: ../cli/src/devices.c:229 +msgid "unmanaged" +msgstr "yönetilmiyor" + +#: ../cli/src/devices.c:231 +msgid "unavailable" +msgstr "mevcut değil" + +#: ../cli/src/devices.c:233 ../cli/src/network-manager.c:91 +msgid "disconnected" +msgstr "bağlı değil" + +#: ../cli/src/devices.c:235 +msgid "connecting (prepare)" +msgstr "bağlanıyor (hazırlanıyor)" + +#: ../cli/src/devices.c:237 +msgid "connecting (configuring)" +msgstr "bağlanıyor (yapılandırılıyor)" + +#: ../cli/src/devices.c:239 +msgid "connecting (need authentication)" +msgstr "bağlanıyor (kimlik doğrulama gerekiyor)" + +#: ../cli/src/devices.c:241 +msgid "connecting (getting IP configuration)" +msgstr "bağlanıyor (IP yapılandırması alınıyor)" + +#: ../cli/src/devices.c:243 ../cli/src/network-manager.c:89 +msgid "connected" +msgstr "bağlandı" + +#: ../cli/src/devices.c:245 +msgid "connection failed" +msgstr "bağlantı başarısız" + +#: ../cli/src/devices.c:268 ../cli/src/devices.c:425 +msgid "Unknown" +msgstr "Bilinmeyen" + +#: ../cli/src/devices.c:300 +msgid "(none)" +msgstr "(hiçbiri)" + +#: ../cli/src/devices.c:325 +#, c-format +msgid "%s: error converting IP4 address 0x%X" +msgstr "%s: 0x%X IP4 adresi dönüştürülemedi" + +#: ../cli/src/devices.c:394 +#, c-format +msgid "%u MHz" +msgstr "%u MHz" + +#: ../cli/src/devices.c:395 +#, c-format +msgid "%u MB/s" +msgstr "%u MB/s" + +#: ../cli/src/devices.c:404 +#, fuzzy +msgid "Encrypted: " +msgstr ", Şifreli:" + +#: ../cli/src/devices.c:409 +msgid "WEP " +msgstr "" + +#: ../cli/src/devices.c:411 +msgid "WPA " +msgstr "" + +#: ../cli/src/devices.c:413 +#, fuzzy +msgid "WPA2 " +msgstr " WPA2" + +#: ../cli/src/devices.c:416 +#, fuzzy +msgid "Enterprise " +msgstr " Enterprise" + +#: ../cli/src/devices.c:425 +msgid "Ad-Hoc" +msgstr "Ad-Hoc" + +#: ../cli/src/devices.c:425 +msgid "Infrastructure" +msgstr "Infrastructure" + +#: ../cli/src/devices.c:487 +#, c-format +msgid "Error: 'dev list': %s" +msgstr "" + +#: ../cli/src/devices.c:489 +#, fuzzy, c-format +msgid "Error: 'dev list': %s; allowed fields: %s" +msgstr "Hata: '%s' aygıtının (%s) bağlantısı kesilemedi: %s" + +#: ../cli/src/devices.c:498 +#, fuzzy +msgid "Device details" +msgstr "Aygıtlar" + +#: ../cli/src/devices.c:528 ../cli/src/devices.c:927 +msgid "(unknown)" +msgstr "(bilinmeyen)" + +#: ../cli/src/devices.c:529 +#, fuzzy +msgid "unknown)" +msgstr "(bilinmeyen)" + +#: ../cli/src/devices.c:555 +#, c-format +msgid "%u Mb/s" +msgstr "%u Mb/s" + +#. Print header +#. "WIRED-PROPERTIES" +#: ../cli/src/devices.c:628 +msgid "on" +msgstr "açık" + +#: ../cli/src/devices.c:628 +msgid "off" +msgstr "kapalı" + +#: ../cli/src/devices.c:810 +#, c-format +msgid "Error: 'dev status': %s" +msgstr "" + +#: ../cli/src/devices.c:812 +#, c-format +msgid "Error: 'dev status': %s; allowed fields: %s" +msgstr "" + +#: ../cli/src/devices.c:819 +msgid "Status of devices" +msgstr "Aygıtların Durumları" + +#: ../cli/src/devices.c:847 +#, c-format +msgid "Error: '%s' argument is missing." +msgstr "Hata: '%s' argümanı eksik." + +#: ../cli/src/devices.c:876 ../cli/src/devices.c:1015 +#: ../cli/src/devices.c:1138 +#, c-format +msgid "Error: Device '%s' not found." +msgstr "Hata: '%s' aygıtı bulunamadı." + +#: ../cli/src/devices.c:899 +#, c-format +msgid "Success: Device '%s' successfully disconnected." +msgstr "'%s' aygıtının bağlantısı başarıyla kesildi." + +#: ../cli/src/devices.c:924 +#, c-format +msgid "Error: Device '%s' (%s) disconnecting failed: %s" +msgstr "Hata: '%s' aygıtının (%s) bağlantısı kesilemedi: %s" + +#: ../cli/src/devices.c:932 +#, c-format +msgid "Device state: %d (%s)\n" +msgstr "Aygıt durumu: %d (%s)\n" + +#: ../cli/src/devices.c:996 +#, c-format +msgid "Error: iface has to be specified." +msgstr "Hata: arayüz belirtilmeli." + +#: ../cli/src/devices.c:1114 +#, fuzzy, c-format +msgid "Error: 'dev wifi': %s" +msgstr "Hata: '%s' 'dev wifi' komutu geçersiz." + +#: ../cli/src/devices.c:1116 +#, c-format +msgid "Error: 'dev wifi': %s; allowed fields: %s" +msgstr "" + +#: ../cli/src/devices.c:1123 +msgid "WiFi scan list" +msgstr "Kablosuz tarama listesi" + +#: ../cli/src/devices.c:1158 ../cli/src/devices.c:1212 +#, c-format +msgid "Error: Access point with hwaddr '%s' not found." +msgstr "Hata: donanım adresi '%s' olan erişim noktası bulunamadı." + +#: ../cli/src/devices.c:1175 +#, c-format +msgid "Error: Device '%s' is not a WiFi device." +msgstr "Hata: '%s' aygıtı kablosuz bir aygıt değil." + +#: ../cli/src/devices.c:1239 +#, c-format +msgid "Error: 'dev wifi' command '%s' is not valid." +msgstr "Hata: '%s' 'dev wifi' komutu geçersiz." + +#: ../cli/src/devices.c:1286 +#, c-format +msgid "Error: 'dev' command '%s' is not valid." +msgstr "Hata: '%s' 'dev' komutu geçersiz." + +#: ../cli/src/network-manager.c:35 +msgid "RUNNING" +msgstr "" + +#. 1 +#: ../cli/src/network-manager.c:37 +msgid "NET-ENABLED" +msgstr "" + +#. 2 +#: ../cli/src/network-manager.c:38 +msgid "WIFI-HARDWARE" +msgstr "" + +#. 3 +#: ../cli/src/network-manager.c:39 +msgid "WIFI" +msgstr "" + +#. 4 +#: ../cli/src/network-manager.c:40 +msgid "WWAN-HARDWARE" +msgstr "" + +#. 5 +#: ../cli/src/network-manager.c:41 +#, fuzzy +msgid "WWAN" +msgstr "NM WWAN:" + +#: ../cli/src/network-manager.c:64 +#, fuzzy, c-format +msgid "" +"Usage: nmcli nm { COMMAND | help }\n" +"\n" +" COMMAND := { status | enable | sleep | wifi | wwan }\n" +"\n" +" status\n" +" enable [true|false]\n" +" sleep [true|false]\n" +" wifi [on|off]\n" +" wwan [on|off]\n" +"\n" +msgstr "" +"Kullanım: nmcli nm { KOMUT | help }\n" +"\n" +" KOMUT := { status | sleep | wakeup | wifi | wwan }\n" +"\n" +" status\n" +" sleep\n" +" wakeup\n" +" wifi [on|off]\n" +" wwan [on|off]\n" +"\n" + +#: ../cli/src/network-manager.c:85 +msgid "asleep" +msgstr "uykuda" + +#: ../cli/src/network-manager.c:87 +msgid "connecting" +msgstr "bağlanıyor" + +#: ../cli/src/network-manager.c:128 +#, c-format +msgid "Error: 'nm status': %s" +msgstr "" + +#: ../cli/src/network-manager.c:130 +#, c-format +msgid "Error: 'nm status': %s; allowed fields: %s" +msgstr "" + +#: ../cli/src/network-manager.c:137 +msgid "NetworkManager status" +msgstr "NetworkManager durumu" + +#. Print header +#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145 +#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147 +#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247 +#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328 +msgid "enabled" +msgstr "etkin" + +#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145 +#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147 +#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247 +#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328 +msgid "disabled" +msgstr "etkin değil" + +#: ../cli/src/network-manager.c:152 +msgid "running" +msgstr "çalışıyor" + +#: ../cli/src/network-manager.c:152 +msgid "not running" +msgstr "çalışmıyor" + +#: ../cli/src/network-manager.c:175 +#, fuzzy, c-format +msgid "Error: Couldn't connect to system bus: %s" +msgstr "Hata: D-Bus'a bağlanılamadı." + +#: ../cli/src/network-manager.c:186 +#, fuzzy, c-format +msgid "Error: Couldn't create D-Bus object proxy." +msgstr "Hata: D-Bus'a bağlanılamadı." + +#: ../cli/src/network-manager.c:192 +#, c-format +msgid "Error in sleep: %s" +msgstr "" + +#: ../cli/src/network-manager.c:237 ../cli/src/network-manager.c:286 +#: ../cli/src/network-manager.c:318 +#, fuzzy, c-format +msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s" +msgstr "Hata: '%s' zaman aşımı için geçerli bir değer değil." + +#: ../cli/src/network-manager.c:245 +msgid "Networking enabled" +msgstr "" + +#: ../cli/src/network-manager.c:256 +#, fuzzy, c-format +msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'." +msgstr "Hata: geçersiz 'wwan' parametresi: '%s'." + +#: ../cli/src/network-manager.c:265 +#, fuzzy, c-format +msgid "Error: Sleeping status is not exported by NetworkManager." +msgstr "Hata: NetworkManager'a bağlanılamadı." + +#: ../cli/src/network-manager.c:273 +#, fuzzy, c-format +msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'." +msgstr "Hata: geçersiz 'wifi' parametresi: '%s'." + +#: ../cli/src/network-manager.c:294 +#, fuzzy +msgid "WiFi enabled" +msgstr "etkin" + +#: ../cli/src/network-manager.c:305 +#, c-format +msgid "Error: invalid 'wifi' parameter: '%s'." +msgstr "Hata: geçersiz 'wifi' parametresi: '%s'." + +#: ../cli/src/network-manager.c:326 +#, fuzzy +msgid "WWAN enabled" +msgstr "etkin" + +#: ../cli/src/network-manager.c:337 +#, c-format +msgid "Error: invalid 'wwan' parameter: '%s'." +msgstr "Hata: geçersiz 'wwan' parametresi: '%s'." + +#: ../cli/src/network-manager.c:348 +#, c-format +msgid "Error: 'nm' command '%s' is not valid." +msgstr "Hata: 'nm' komutu '%s' geçersiz." + +#: ../cli/src/nmcli.c:69 +#, fuzzy, c-format +msgid "" +"Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" +"\n" +"OPTIONS\n" +" -t[erse] terse output\n" +" -p[retty] pretty output\n" +" -m[ode] tabular|multiline output mode\n" +" -f[ields] |all|common specify fields to output\n" +" -e[scape] yes|no escape columns separators in " +"values\n" +" -v[ersion] show program version\n" +" -h[elp] print this help\n" +"\n" +"OBJECT\n" +" nm NetworkManager status\n" +" con NetworkManager connections\n" +" dev devices managed by NetworkManager\n" +"\n" +msgstr "" +"Kullanım: %s [SEÇENEKLER] NESNE { KOMUT | help }\n" +"\n" +"SEÇENEKLER\n" +" -t[erse] düz çıktı\n" +" -p[retty] süslü çıktı\n" +" -v[ersion] program sürümünü göster\n" +" -h[elp] bu yardımı göster\n" +"\n" +"NESNE\n" +" nm NetworkManager durumu\n" +" con NetworkManager bağlantıları\n" +" dev NetworkManager tarafından yönetilen aygıtlar\n" +"\n" + +#: ../cli/src/nmcli.c:113 +#, fuzzy, c-format +msgid "Error: Object '%s' is unknown, try 'nmcli help'." +msgstr "'%s' nesnesi bilinmiyor, 'nmcli help' ile yardım alın." + +#: ../cli/src/nmcli.c:143 +#, c-format +msgid "Error: Option '--terse' is specified the second time." +msgstr "" + +#: ../cli/src/nmcli.c:148 +#, c-format +msgid "Error: Option '--terse' is mutually exclusive with '--pretty'." +msgstr "" + +#: ../cli/src/nmcli.c:156 +#, c-format +msgid "Error: Option '--pretty' is specified the second time." +msgstr "" + +#: ../cli/src/nmcli.c:161 +#, c-format +msgid "Error: Option '--pretty' is mutually exclusive with '--terse'." +msgstr "" + +#: ../cli/src/nmcli.c:171 ../cli/src/nmcli.c:187 +#, fuzzy, c-format +msgid "Error: missing argument for '%s' option." +msgstr "Hata: %s argümanı eksik." + +#: ../cli/src/nmcli.c:180 ../cli/src/nmcli.c:196 +#, fuzzy, c-format +msgid "Error: '%s' is not valid argument for '%s' option." +msgstr "Hata: '%s' argümanı eksik." + +#: ../cli/src/nmcli.c:203 +#, fuzzy, c-format +msgid "Error: fields for '%s' options are missing." +msgstr "Hata: '%s' argümanı eksik." + +#: ../cli/src/nmcli.c:209 +#, c-format +msgid "nmcli tool, version %s\n" +msgstr "nmcli aracı, sürüm %s\n" + +#: ../cli/src/nmcli.c:215 +#, fuzzy, c-format +msgid "Error: Option '%s' is unknown, try 'nmcli -help'." +msgstr "'%s' seçeneği bilinmiyor, 'nmcli -help' ile yardım alın." + +#: ../cli/src/nmcli.c:234 +#, c-format +msgid "Caught signal %d, shutting down..." +msgstr "%d sinyali yakalandı, sonlandırılıyor..." + +#: ../cli/src/nmcli.c:259 +#, c-format +msgid "Error: Could not connect to NetworkManager." +msgstr "Hata: NetworkManager'a bağlanılamadı." + +#: ../cli/src/nmcli.c:275 +msgid "Success" +msgstr "Başarılı" + +#: ../cli/src/settings.c:411 +#, c-format +msgid "%d (hex-ascii-key)" +msgstr "" + +#: ../cli/src/settings.c:413 +#, c-format +msgid "%d (104/128-bit passphrase)" +msgstr "" + +#: ../cli/src/settings.c:416 +#, fuzzy, c-format +msgid "%d (unknown)" +msgstr "(bilinmeyen)" + +#: ../cli/src/settings.c:442 +#, fuzzy +msgid "0 (unknown)" +msgstr "(bilinmeyen)" + +#: ../cli/src/settings.c:448 +msgid "any, " +msgstr "" + +#: ../cli/src/settings.c:450 +msgid "900 MHz, " +msgstr "" + +#: ../cli/src/settings.c:452 +msgid "1800 MHz, " +msgstr "" + +#: ../cli/src/settings.c:454 +msgid "1900 MHz, " +msgstr "" + +#: ../cli/src/settings.c:456 +msgid "850 MHz, " +msgstr "" + +#: ../cli/src/settings.c:458 +msgid "WCDMA 3GPP UMTS 2100 MHz, " +msgstr "" + +#: ../cli/src/settings.c:460 +msgid "WCDMA 3GPP UMTS 1800 MHz, " +msgstr "" + +#: ../cli/src/settings.c:462 +msgid "WCDMA 3GPP UMTS 1700/2100 MHz, " +msgstr "" + +#: ../cli/src/settings.c:464 +msgid "WCDMA 3GPP UMTS 800 MHz, " +msgstr "" + +#: ../cli/src/settings.c:466 +msgid "WCDMA 3GPP UMTS 850 MHz, " +msgstr "" + +#: ../cli/src/settings.c:468 +msgid "WCDMA 3GPP UMTS 900 MHz, " +msgstr "" + +#: ../cli/src/settings.c:470 +msgid "WCDMA 3GPP UMTS 1700 MHz, " +msgstr "" + +#: ../cli/src/settings.c:554 ../cli/src/settings.c:721 +msgid "auto" +msgstr "" + +#: ../cli/src/settings.c:716 ../cli/src/settings.c:719 +#: ../cli/src/settings.c:720 ../cli/src/utils.c:172 +msgid "not set" +msgstr "" + +#: ../cli/src/utils.c:124 +#, c-format +msgid "field '%s' has to be alone" +msgstr "" + +#: ../cli/src/utils.c:127 +#, c-format +msgid "invalid field '%s'" +msgstr "" + +#: ../cli/src/utils.c:146 +#, c-format +msgid "Option '--terse' requires specifying '--fields'" +msgstr "" + +#: ../cli/src/utils.c:150 +#, c-format +msgid "Option '--terse' requires specific '--fields' option values , not '%s'" +msgstr "" + +#: ../libnm-util/crypto.c:121 +#, c-format +msgid "PEM key file had no end tag '%s'." +msgstr "PEM anahtar dosyası '%s' kapatma etiketine sahip değil." + +#: ../libnm-util/crypto.c:131 +#, c-format +msgid "Doesn't look like a PEM private key file." +msgstr "PEM özel anahtar dosyasına benzemiyor." + +#: ../libnm-util/crypto.c:139 +#, c-format +msgid "Not enough memory to store PEM file data." +msgstr "PEM dosya verisini saklayacak yeterli bellek yok." + +#: ../libnm-util/crypto.c:155 +#, c-format +msgid "Malformed PEM file: Proc-Type was not first tag." +msgstr "Bozuk PEM dosyası: Proc-Type ilk etiket değil." + +#: ../libnm-util/crypto.c:163 +#, c-format +msgid "Malformed PEM file: unknown Proc-Type tag '%s'." +msgstr "Bozuk PEM dosyası: bilinmeyen Proc-Type etiketi '%s'." + +#: ../libnm-util/crypto.c:173 +#, c-format +msgid "Malformed PEM file: DEK-Info was not the second tag." +msgstr "Bozuk PEM dosyası: DEK-Info ikinci etiket değil." + +#: ../libnm-util/crypto.c:184 +#, c-format +msgid "Malformed PEM file: no IV found in DEK-Info tag." +msgstr "Bozuk PEM dosyası: DEK-Info etiketinde IV bulunamadı." + +#: ../libnm-util/crypto.c:191 +#, c-format +msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." +msgstr "Bozuk PEM dosyası: DEK-Info etiketindeki IV biçimi geçersiz." + +#: ../libnm-util/crypto.c:204 +#, c-format +msgid "Malformed PEM file: unknown private key cipher '%s'." +msgstr "Bozuk PEM dosyası: bilinmeyen özel anahtar şifresi '%s'." + +#: ../libnm-util/crypto.c:223 +#, c-format +msgid "Could not decode private key." +msgstr "Özel anahtar çözülemiyor." + +#: ../libnm-util/crypto.c:268 +#, c-format +msgid "PEM certificate '%s' had no end tag '%s'." +msgstr "PEM sertifikası '%s', '%s' kapatma etiketine sahip değil." + +#: ../libnm-util/crypto.c:278 +#, c-format +msgid "Failed to decode certificate." +msgstr "Sertifika çözülemedi." + +#: ../libnm-util/crypto.c:287 +#, c-format +msgid "Not enough memory to store certificate data." +msgstr "Sertifika verisini saklayacak yeterli bellek yok." + +#: ../libnm-util/crypto.c:295 +#, c-format +msgid "Not enough memory to store file data." +msgstr "Dosya verisini saklayacak yeterli bellek yok." + +#: ../libnm-util/crypto.c:325 +#, c-format +msgid "IV must be an even number of bytes in length." +msgstr "IV uzunluğu bayt cinsinden çift sayı olmalı." + +#: ../libnm-util/crypto.c:334 +#, c-format +msgid "Not enough memory to store the IV." +msgstr "IV'yi saklayacak yeterli bellek yok." + +#: ../libnm-util/crypto.c:345 +#, c-format +msgid "IV contains non-hexadecimal digits." +msgstr "IV onaltılık olmayan rakamlar içeriyor." + +#: ../libnm-util/crypto.c:383 ../libnm-util/crypto_gnutls.c:148 +#: ../libnm-util/crypto_gnutls.c:266 ../libnm-util/crypto_nss.c:171 +#: ../libnm-util/crypto_nss.c:336 +#, c-format +msgid "Private key cipher '%s' was unknown." +msgstr "Özel anahtar şifresi '%s' bilinmiyor." + +#: ../libnm-util/crypto.c:392 +#, c-format +msgid "Not enough memory to decrypt private key." +msgstr "Özel anahtarın şifresini çözecek yeterli bellek yok." + +#: ../libnm-util/crypto.c:512 +#, c-format +msgid "Unable to determine private key type." +msgstr "Özel anahtar türü belirlenemiyor." + +#: ../libnm-util/crypto.c:531 +#, c-format +msgid "Not enough memory to store decrypted private key." +msgstr "Çözülmüş özel anahtarı saklayacak yeterli bellek yok." + +#: ../libnm-util/crypto_gnutls.c:49 +msgid "Failed to initialize the crypto engine." +msgstr "Şifreleme motoru başlatılamadı." + +#: ../libnm-util/crypto_gnutls.c:93 +#, c-format +msgid "Failed to initialize the MD5 engine: %s / %s." +msgstr "MD5 motoru başlatılamadı: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:156 +#, c-format +msgid "Invalid IV length (must be at least %zd)." +msgstr "Geçersiz IV uzunluğu (en az %zd olmalı)." + +#: ../libnm-util/crypto_gnutls.c:165 ../libnm-util/crypto_nss.c:188 +#, c-format +msgid "Not enough memory for decrypted key buffer." +msgstr "Çözülmüş anahtar tamponu için yetersiz bellek." + +#: ../libnm-util/crypto_gnutls.c:173 +#, c-format +msgid "Failed to initialize the decryption cipher context: %s / %s." +msgstr "" +"Şifre çözme şifre içeriği (decryption cipher context) ilklendirilemedi: %s / " +"%s." + +#: ../libnm-util/crypto_gnutls.c:182 +#, c-format +msgid "Failed to set symmetric key for decryption: %s / %s." +msgstr "Şifre çözme için simetrik anahtar ayarlanamadı: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:191 +#, c-format +msgid "Failed to set IV for decryption: %s / %s." +msgstr "Şifre çözme için IV ayarlanamadı: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:200 +#, c-format +msgid "Failed to decrypt the private key: %s / %s." +msgstr "Özel anahtar çözülemedi: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:210 ../libnm-util/crypto_nss.c:267 +#, c-format +msgid "Failed to decrypt the private key: unexpected padding length." +msgstr "Özel anahtar çözülemedi: beklenmeyen doldurma (padding) uzunluğu." + +#: ../libnm-util/crypto_gnutls.c:221 ../libnm-util/crypto_nss.c:278 +#, c-format +msgid "Failed to decrypt the private key." +msgstr "Özel anahtar çözülemedi." + +#: ../libnm-util/crypto_gnutls.c:286 ../libnm-util/crypto_nss.c:356 +#, c-format +msgid "Could not allocate memory for encrypting." +msgstr "Şifreleme için bellek ayrılamadı." + +#: ../libnm-util/crypto_gnutls.c:294 +#, c-format +msgid "Failed to initialize the encryption cipher context: %s / %s." +msgstr "Şifreleme içeriği ilklendirilemedi: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:303 +#, c-format +msgid "Failed to set symmetric key for encryption: %s / %s." +msgstr "Şifreleme için simetrik anahtar ayarlanamadı: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:313 +#, c-format +msgid "Failed to set IV for encryption: %s / %s." +msgstr "Şifreleme için IV ayarlanamadı: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:322 +#, c-format +msgid "Failed to encrypt the data: %s / %s." +msgstr "Veri şifrelenemedi: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:362 +#, c-format +msgid "Error initializing certificate data: %s" +msgstr "Sertifika verisi ilklendirilemedi: %s" + +#: ../libnm-util/crypto_gnutls.c:384 +#, c-format +msgid "Couldn't decode certificate: %s" +msgstr "Sertifika çözülemiyor: %s" + +#: ../libnm-util/crypto_gnutls.c:408 +#, c-format +msgid "Couldn't initialize PKCS#12 decoder: %s" +msgstr "PKCS#12 çözücüsü başlatılamadı: %s" + +#: ../libnm-util/crypto_gnutls.c:421 +#, c-format +msgid "Couldn't decode PKCS#12 file: %s" +msgstr "PKCS#12 dosyası '%s' çözülemedi" + +#: ../libnm-util/crypto_gnutls.c:433 +#, c-format +msgid "Couldn't verify PKCS#12 file: %s" +msgstr "PKCS#12 dosyası '%s' doğrulanamadı" + +#: ../libnm-util/crypto_nss.c:56 +#, c-format +msgid "Failed to initialize the crypto engine: %d." +msgstr "Şifreleme motoru başlatılamadı: %d." + +#: ../libnm-util/crypto_nss.c:111 +#, c-format +msgid "Failed to initialize the MD5 context: %d." +msgstr "MD5 içeriği ilklendirilemedi: %d." + +#: ../libnm-util/crypto_nss.c:179 +#, c-format +msgid "Invalid IV length (must be at least %d)." +msgstr "Geçersiz IV uzunluğu (en az %d olmalı)." + +#: ../libnm-util/crypto_nss.c:196 +#, c-format +msgid "Failed to initialize the decryption cipher slot." +msgstr "Şifre çözme şifre yuvası ilklendirilemedi." + +#: ../libnm-util/crypto_nss.c:206 +#, c-format +msgid "Failed to set symmetric key for decryption." +msgstr "Şifre çözme için simetrik anahtar ayarlanamadı." + +#: ../libnm-util/crypto_nss.c:216 +#, c-format +msgid "Failed to set IV for decryption." +msgstr "Şifre çözme için IV ayarlanamadı." + +#: ../libnm-util/crypto_nss.c:224 +#, c-format +msgid "Failed to initialize the decryption context." +msgstr "Şifre çözme içeriği ilklendirilemedi." + +#: ../libnm-util/crypto_nss.c:237 +#, c-format +msgid "Failed to decrypt the private key: %d." +msgstr "Özel anahtarın şifresi çözülemedi: %d." + +#: ../libnm-util/crypto_nss.c:245 +#, c-format +msgid "Failed to decrypt the private key: decrypted data too large." +msgstr "Özel anahtarın şifresi çözülemedi: şifresi çözülen veri çok büyük." + +#: ../libnm-util/crypto_nss.c:256 +#, c-format +msgid "Failed to finalize decryption of the private key: %d." +msgstr "Özel anahtarın şifresinin çözülme işlemi sonlandırılamadı: %d." + +#: ../libnm-util/crypto_nss.c:364 +#, c-format +msgid "Failed to initialize the encryption cipher slot." +msgstr "Şifreleme şifre yuvası (encryption cipher slot) ilklendirilemedi." + +#: ../libnm-util/crypto_nss.c:372 +#, c-format +msgid "Failed to set symmetric key for encryption." +msgstr "Şifreleme için simetrik anahtar ayarlanamadı." + +#: ../libnm-util/crypto_nss.c:380 +#, c-format +msgid "Failed to set IV for encryption." +msgstr "Şifreleme için IV ayarlanamadı." + +#: ../libnm-util/crypto_nss.c:388 +#, c-format +msgid "Failed to initialize the encryption context." +msgstr "Şifreleme içeriği ilklendirilemedi." + +#: ../libnm-util/crypto_nss.c:396 +#, c-format +msgid "Failed to encrypt: %d." +msgstr "Şifreleme başarısız: %d." + +#: ../libnm-util/crypto_nss.c:404 +#, c-format +msgid "Unexpected amount of data after encrypting." +msgstr "Şifrelemeden sonra beklenmeyen veri boyutu." + +#: ../libnm-util/crypto_nss.c:447 +#, c-format +msgid "Couldn't decode certificate: %d" +msgstr "Sertifika çözülemedi: %d" + +#: ../libnm-util/crypto_nss.c:482 +#, c-format +msgid "Couldn't convert password to UCS2: %d" +msgstr "Parola UCS2 biçimine dönüştürülemedi: %d" + +#: ../libnm-util/crypto_nss.c:510 +#, c-format +msgid "Couldn't initialize PKCS#12 decoder: %d" +msgstr "PKCS#12 çözücüsü başlatılamadı: %d" + +#: ../libnm-util/crypto_nss.c:519 +#, c-format +msgid "Couldn't decode PKCS#12 file: %d" +msgstr "PKCS#12 dosyası çözülemedi: %d" + +#: ../libnm-util/crypto_nss.c:528 +#, c-format +msgid "Couldn't verify PKCS#12 file: %d" +msgstr "PKCS#12 dosyası doğrulanamadı: %d" + +#: ../libnm-util/crypto_nss.c:557 +msgid "Could not generate random data." +msgstr "Rastgele veri üretilemedi." + +#: ../libnm-util/nm-utils.c:1975 +#, c-format +msgid "Not enough memory to make encryption key." +msgstr "Şifreleme anahtarı üretecek yeterli bellek yok." + +#: ../libnm-util/nm-utils.c:2085 +msgid "Could not allocate memory for PEM file creation." +msgstr "PEM dosyası üretimi için bellek ayrılamıyor." + +#: ../libnm-util/nm-utils.c:2097 +#, c-format +msgid "Could not allocate memory for writing IV to PEM file." +msgstr "IV'nin PEM dosyasına yazılması için bellek ayrılamıyor." + +#: ../libnm-util/nm-utils.c:2109 +#, c-format +msgid "Could not allocate memory for writing encrypted key to PEM file." +msgstr "Şifreli anahtarın PEM dosyasına yazılması için bellek ayrılamıyor." + +#: ../libnm-util/nm-utils.c:2128 +#, c-format +msgid "Could not allocate memory for PEM file data." +msgstr "PEM dosyası verisi için bellek ayrılamıyor." + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1 +msgid "Connection sharing via a protected WiFi network" +msgstr "Güvenli kablosuz ağ üzerinden bağlantı paylaşımı" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:2 +msgid "Connection sharing via an open WiFi network" +msgstr "Açık kablosuz ağ üzerinden bağlantı paylaşımı" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:3 +msgid "Modify persistent system hostname" +msgstr "Sistemin kalıcı makine adını değiştir" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:4 +msgid "Modify system connections" +msgstr "Sistem bağlantılarını değiştir" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:5 +msgid "System policy prevents modification of system settings" +msgstr "Sistem politikası sistem ayarlarının değiştirilmesini engelliyor" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:6 +msgid "System policy prevents modification of the persistent system hostname" +msgstr "" +"Sistem politikası sistemin kalıcı makine adının değiştirilmesini engelliyor" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:7 +msgid "System policy prevents sharing connections via a protected WiFi network" +msgstr "" +"Sistem politikası güvenli kablosuz ağ üzerinden bağlantı paylaşımını " +"engelliyor" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:8 +msgid "System policy prevents sharing connections via an open WiFi network" +msgstr "" +"Sistem politikası açık kablosuz ağ üzerinden bağlantı paylaşımını engelliyor" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:1 +msgid "Allow control of network connections" +msgstr "Ağ bağlantılarının kontrolüne izin ver" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:2 +msgid "Allow use of user-specific connections" +msgstr "Kullanıcı temelli bağlantıların kullanımına izin ver" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:3 +msgid "Enable or disable WiFi devices" +msgstr "WiFi aygıtları etkinleştir/kapat" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 +msgid "Enable or disable mobile broadband devices" +msgstr "Mobil geniş bant aygıtları etkinleştir/kapat" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +msgid "Enable or disable system networking" +msgstr "Ağ iletişimini etkinleştir/kapat" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 +msgid "" +"Put NetworkManager to sleep or wake it up (should only be used by system " +"power management)" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7 +msgid "System policy prevents control of network connections" +msgstr "Sistem politikası ağ bağlantılarının kontrolünü engelliyor" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8 +msgid "System policy prevents enabling or disabling WiFi devices" +msgstr "" +"Sistem politikası WiFi aygıtlarının etkinleştirilmesini/kapatılmasını engelliyor" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +msgid "System policy prevents enabling or disabling mobile broadband devices" +msgstr "Sistem politikası mobil geniş bant aygıtlarının etkinleştirilmesini/kapatılmasını engelliyor" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:10 +msgid "System policy prevents enabling or disabling system networking" +msgstr "Sistem politikası ağ iletişiminin etkinleştirilmesini/kapanmasını engelliyor" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11 +msgid "System policy prevents putting NetworkManager to sleep or waking it up" +msgstr "Sistem politikası NetworkManager'ın uyku moduna geçmesini veya uyanmasını engelliyor" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:12 +msgid "System policy prevents use of user-specific connections" +msgstr "Sistem politikası kullanıcı temelli bağlantıların kullanılmasını engelliyor" + +#: ../src/nm-netlink-monitor.c:100 ../src/nm-netlink-monitor.c:231 +#: ../src/nm-netlink-monitor.c:653 +#, c-format +msgid "error processing netlink message: %s" +msgstr "netlink iletisinin işlenmesinde hata: %s" + +#: ../src/nm-netlink-monitor.c:214 +msgid "error occurred while waiting for data on socket" +msgstr "soketten veri beklenirken hata oluştu" + +#: ../src/nm-netlink-monitor.c:254 +#, c-format +msgid "unable to connect to netlink for monitoring link status: %s" +msgstr "hat durumunu gözlemlemek için netlink'e bağlanılamadı: %s" + +#: ../src/nm-netlink-monitor.c:265 +#, c-format +msgid "unable to enable netlink handle credential passing: %s" +msgstr "" +"hat durumunu gözlemlemek için netlink tanımlayıcısı etkinleştirilemedi: %s" + +#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353 +#, c-format +msgid "unable to allocate netlink handle for monitoring link status: %s" +msgstr "hat durumunu gözlemlemek için netlink tanımlayıcısı ayrılamadı: %s" + +#: ../src/nm-netlink-monitor.c:376 +#, c-format +msgid "unable to allocate netlink link cache for monitoring link status: %s" +msgstr "hat durumunu gözlemlemek için netlink hat önbelleği ayrılamadı: %s" + +#: ../src/nm-netlink-monitor.c:502 +#, c-format +msgid "unable to join netlink group: %s" +msgstr "netlink grubuna bağlanılamadı: %s" + +#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642 +#, c-format +msgid "error updating link cache: %s" +msgstr "Hat önbelleği güncellenemedi: %s" + +#: ../src/main.c:502 +#, c-format +msgid "Invalid option. Please use --help to see a list of valid options.\n" +msgstr "" +"Geçersiz seçenek. Lütfen --help kullanarak geçerli seçeneklere göz atın.\n" + +#: ../src/main.c:573 +#, c-format +msgid "%s. Please use --help to see a list of valid options.\n" +msgstr "%s. --help parametresiyle geçerli seçenekleri görebilirsiniz.\n" + +#: ../src/dhcp-manager/nm-dhcp-dhclient.c:328 +msgid "# Created by NetworkManager\n" +msgstr "# NetworkManager tarafından oluşturuldu\n" + +#: ../src/dhcp-manager/nm-dhcp-dhclient.c:344 +#, c-format +msgid "" +"# Merged from %s\n" +"\n" +msgstr "" +"# %s'ten birleştirildi\n" +"\n" + +#: ../src/dhcp-manager/nm-dhcp-manager.c:284 +msgid "no usable DHCP client could be found." +msgstr "Kullanılabilecek DHCP istemcisi bulunamadı." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:293 +msgid "'dhclient' could be found." +msgstr "'dhclient' bulunamadı." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:303 +msgid "'dhcpcd' could be found." +msgstr "'dhcpcd' bulunamadı." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:311 +#, c-format +msgid "unsupported DHCP client '%s'" +msgstr "Desteklenmeyen DHCP istemcisi '%s'" + +#: ../src/logging/nm-logging.c:146 +#, c-format +msgid "Unknown log level '%s'" +msgstr "Bilinmeyen günlük seviyesi '%s'" + +#: ../src/logging/nm-logging.c:171 +#, c-format +msgid "Unknown log domain '%s'" +msgstr "Bilinmeyen günlük alanı '%s'" + +#: ../src/dns-manager/nm-dns-manager.c:367 +msgid "NOTE: the libc resolver may not support more than 3 nameservers." +msgstr "" +"NOT: libc alan adı çözücüsü 3'ten fazla isim sunucuyu desteklemeyebilir." + +#: ../src/dns-manager/nm-dns-manager.c:369 +msgid "The nameservers listed below may not be recognized." +msgstr "Aşağıda listelenen isim sunucuları tanınmayabilir." + +#: ../src/system-settings/nm-sysconfig-connection.c:354 +#: ../src/system-settings/nm-sysconfig-connection.c:469 +#: ../src/system-settings/nm-sysconfig-connection.c:561 +msgid "Insufficient privileges." +msgstr "Bu işlemi yapmak için yeterli yetkiniz yok." + +#: ../src/system-settings/nm-default-wired-connection.c:157 +#, c-format +msgid "Auto %s" +msgstr "Oto %s" + +#: ../system-settings/plugins/ifcfg-rh/reader.c:3413 +#: ../system-settings/plugins/ifnet/connection_parser.c:49 +msgid "System" +msgstr "Sistem" + +#~ msgid "Type" +#~ msgstr "Tür" + +#~ msgid "Name" +#~ msgstr "İsim" + +#~ msgid "User connections:\n" +#~ msgstr "Kullanıcı bağlantıları:\n" + +#~ msgid "System-wide connections" +#~ msgstr "Sistem-geneli bağlantılar" + +#~ msgid "Default" +#~ msgstr "Öntanımlı" + +#~ msgid "Service" +#~ msgstr "Hizmet" + +#~ msgid "%s, %s, Freq %d MHz, Rate %d Mb/s, Strength %d" +#~ msgstr "%s, %s, Frekans %d MHz, Hız %d Mb/s, Sinyal %d" + +#~ msgid "Device" +#~ msgstr "Aygıt" + +#~ msgid "Driver" +#~ msgstr "Sürücü" + +#~ msgid "State" +#~ msgstr "Durum" + +#~ msgid "HW Address" +#~ msgstr "Donanım Adresi" + +#~ msgid "" +#~ "\n" +#~ " Capabilities:\n" +#~ msgstr "" +#~ "\n" +#~ " Yetenekler:\n" + +#~ msgid "Carrier Detect" +#~ msgstr "Taşıyıcı Tanıma" + +#~ msgid "Speed" +#~ msgstr "Hız" + +#~ msgid "" +#~ "\n" +#~ " Wireless Properties\n" +#~ msgstr "" +#~ "\n" +#~ " Kablosuz Seçenekler\n" + +#~ msgid "WEP Encryption" +#~ msgstr "WEP Şifreleme" + +#~ msgid "WPA Encryption" +#~ msgstr "WPA Şifreleme" + +#~ msgid "WPA2 Encryption" +#~ msgstr "WPA2 Şifreleme" + +#~ msgid "TKIP cipher" +#~ msgstr "TKIP şifresi" + +#~ msgid "CCMP cipher" +#~ msgstr "CCMP şifresi" + +#~ msgid "" +#~ "\n" +#~ " Wireless Access Points %s\n" +#~ msgstr "" +#~ "\n" +#~ " Kablosuz Erişim Noktaları %s\n" + +#~ msgid "(* = current AP)" +#~ msgstr "(* şimdiki AP)" + +#~ msgid "" +#~ "\n" +#~ " Wired Properties\n" +#~ msgstr "" +#~ "\n" +#~ " Kablolu Ağ Seçenekleri\n" + +#~ msgid "Carrier" +#~ msgstr "Taşıyıcı" + +#~ msgid "" +#~ "\n" +#~ " IPv4 Settings:\n" +#~ msgstr "" +#~ "\n" +#~ " IPv4 Ayarları:\n" + +#~ msgid "Address" +#~ msgstr "Adres" + +#~ msgid "Prefix" +#~ msgstr "Ön ek" + +#~ msgid "Gateway" +#~ msgstr "Ağ Geçidi" + +#~ msgid "Device:" +#~ msgstr "Aygıt:" + +#~ msgid "Error: hwaddr has to be specified." +#~ msgstr "Hata: donanım adresi verilmeli." + +#~ msgid "AP parameters" +#~ msgstr "AP parametreleri" + +#~ msgid "Frequency:" +#~ msgstr "Frekans:" + +#~ msgid "Mode:" +#~ msgstr "Mod:" + +#~ msgid "Ad-hoc" +#~ msgstr "Ad-hoc" + +#~ msgid "Maximal bitrate:" +#~ msgstr "Azami bit oranı:" + +#~ msgid "Strength:" +#~ msgstr "Şiddet:" + +#~ msgid "Flags:" +#~ msgstr "Bayraklar:" + +#~ msgid "privacy" +#~ msgstr "gizlilik" + +#~ msgid "WPA flags:" +#~ msgstr "WPA bayrakları:" + +#~ msgid "RSN flags:" +#~ msgstr "RSN bayrakları:" + +#~ msgid "NM running:" +#~ msgstr "NM çalışıyor:" + +#~ msgid "NM state:" +#~ msgstr "NM durumu:" + +#~ msgid "NM wireless hardware:" +#~ msgstr "NM kablosuz donanım:" + +#~ msgid "NM wireless:" +#~ msgstr "NM kablosuz:" + +#~ msgid "NM WWAN hardware:" +#~ msgstr "NM WWAN donanım:" diff --git a/network/connection/NetworkManager/pspec.xml b/network/connection/NetworkManager/pspec.xml new file mode 100644 index 0000000000..77f81cc48d --- /dev/null +++ b/network/connection/NetworkManager/pspec.xml @@ -0,0 +1,213 @@ + + + + + NetworkManager + http://projects.gnome.org/NetworkManager + + Pisi Linux Admins + admins@pisilinux.org + + GPLv2+ + app:console + Network connection manager powered by D-Bus and UDEV + NetworkManager attempts to keep an active network connection available at all times. + https://download.gnome.org/sources/NetworkManager/1.0/NetworkManager-1.0.2.tar.xz + + tr.po + + + intltool + dhclient + ppp-devel + nss-devel + newt-devel + nspr-devel + libnl-devel + libsoup-devel + bluez-libs-devel + iptables-devel + wpa_supplicant + dbus-glib-devel + gobject-introspection + libndp-devel + libmm-glib-devel + dbus-devel + glib2-devel + polkit-devel + readline-devel + libuuid-devel + libgudev1-devel + ConsoleKit-devel + + + 0001-dns-Fix-falling-back-in-the-resolv.conf-methods.patch + disable_set_hostname.patch + + + + + NetworkManager + + dbus + nspr + glib2 + polkit + readline + dbus-glib + libuuid + libgudev1 + nss + newt + ppp + libnl + libsoup + bluez-libs + iproute2 + iptables + libmm-glib + ModemManager + avahi-autoipd + wpa_supplicant + libndp + ConsoleKit + mobile-broadband-provider-info + + + /etc + /usr/share + /etc/dbus-1 + /usr/lib + /usr/share/man + /usr/share/doc + /usr/bin + /lib/udev + /usr/sbin + /lib/udev/rules.d + /usr/libexec + /run/NetworkManager + /lib/systemd/system + /usr/share/locale + /var/lib/NetworkManager + /etc/NetworkManager/system-connections + /usr/lib/tmpfiles.d/NetworkManager.conf + /etc/polkit-1/localauthority/10-vendor.d + + + NetworkManager.confd + tmpfiles.conf + NetworkManager.conf + migrate-comar-network-profiles + gentoo/01-org.freedesktop.NetworkManager.settings.modify.system.pkla + 01-org.freedesktop.ModemManager1.rules + 01-org.freedesktop.NetworkManager.settings.modify.system.rules + + + System.Service + + + + + NetworkManager-devel + Development files for NetworkManager + + dbus-glib-devel + NetworkManager + + + /usr/include + /usr/lib/pkgconfig/ + + + + + + 2015-06-14 + 1.0.2 + fixed missing dep and added rules files + + systemRestart + + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2015-05-14 + 1.0.2 + Version bump. + + systemRestart + + Vedat Demir + vedat@pisilinux.org + + + 2015-01-07 + 1.0 + Version bump. + + systemRestart + + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-05-17 + 0.9.8.10 + Version bump. + + systemRestart + + Vedat Demir + vedat@pisilinux.org + + + 2014-01-10 + 0.9.8.8 + Version bump. Add tmpfiles.conf + + systemRestart + + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-08 + 0.9.8.2 + /var/run => /run + + systemRestart + + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-27 + 0.9.8.2 + Version bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-02-21 + 0.9.8.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-23 + 0.9.7.995 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-13 + 0.9.6.4 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/network/connection/NetworkManager/translations.xml b/network/connection/NetworkManager/translations.xml new file mode 100644 index 0000000000..8d13fe3b6f --- /dev/null +++ b/network/connection/NetworkManager/translations.xml @@ -0,0 +1,13 @@ + + + + NetworkManager + D-Bus üzerinden yapılandırmaya izin veren, gelişmiş bir ağ yönetim altyapısı + NetworkManager, etkin bir bağlantı kurmak ve onu sürekli ayakta tutmak üzere tasarlanmış, D-Bus ve UDEV teknolojilerini kullanan bir ağ yönetim altyapısıdır. + + + + NetworkManager-devel + NetworkManager için geliştirme dosyaları + + From 677e97697ff933f2400af8bf010dfaf37bf76d8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Thu, 9 Jul 2015 14:16:08 +0300 Subject: [PATCH 158/175] work continue --- desktop/gnome/base/dconf/pspec.xml | 10 + desktop/gnome/base/gnome-common/actions.py | 19 ++ desktop/gnome/base/gnome-common/pspec.xml | 65 +++++++ .../gnome/base/gnome-common/translations.xml | 7 + .../toolkit/qt5/qt5-configuration/pspec.xml | 1 + .../toolkit/qt5/qt5-connectivity/pspec.xml | 11 +- office/misc/iso-codes/actions.py | 21 +++ office/misc/iso-codes/pspec.xml | 53 ++++++ office/misc/iso-codes/translations.xml | 8 + programming/language/vala/actions.py | 25 +++ .../language/vala/files/vim/vala.ftdetect | 2 + .../language/vala/files/vim/vala.syntax | 171 ++++++++++++++++++ programming/language/vala/pspec.xml | 107 +++++++++++ programming/language/vala/translations.xml | 22 +++ programming/misc/libnotify/actions.py | 24 +++ programming/misc/libnotify/pspec.xml | 85 +++++++++ programming/misc/libnotify/translations.xml | 20 ++ util/misc/component.xml | 3 + util/misc/ibus/actions.py | 39 ++++ util/misc/ibus/pspec.xml | 151 ++++++++++++++++ util/misc/ibus/translations.xml | 13 ++ 21 files changed, 852 insertions(+), 5 deletions(-) create mode 100644 desktop/gnome/base/gnome-common/actions.py create mode 100644 desktop/gnome/base/gnome-common/pspec.xml create mode 100644 desktop/gnome/base/gnome-common/translations.xml create mode 100644 office/misc/iso-codes/actions.py create mode 100644 office/misc/iso-codes/pspec.xml create mode 100644 office/misc/iso-codes/translations.xml create mode 100644 programming/language/vala/actions.py create mode 100644 programming/language/vala/files/vim/vala.ftdetect create mode 100644 programming/language/vala/files/vim/vala.syntax create mode 100644 programming/language/vala/pspec.xml create mode 100644 programming/language/vala/translations.xml create mode 100644 programming/misc/libnotify/actions.py create mode 100644 programming/misc/libnotify/pspec.xml create mode 100644 programming/misc/libnotify/translations.xml create mode 100644 util/misc/component.xml create mode 100644 util/misc/ibus/actions.py create mode 100644 util/misc/ibus/pspec.xml create mode 100644 util/misc/ibus/translations.xml diff --git a/desktop/gnome/base/dconf/pspec.xml b/desktop/gnome/base/dconf/pspec.xml index 088156668b..4b2ff20748 100644 --- a/desktop/gnome/base/dconf/pspec.xml +++ b/desktop/gnome/base/dconf/pspec.xml @@ -19,12 +19,22 @@ libxml2-devel gtk3-devel pango-devel + libxslt + intltool + docbook-xsl + libepoxy-devel + at-spi2-core-devel + vala-devel + gtk-doc dconf + dbus + glib2 + libxml2 gtk3 pango diff --git a/desktop/gnome/base/gnome-common/actions.py b/desktop/gnome/base/gnome-common/actions.py new file mode 100644 index 0000000000..ca6d9b6136 --- /dev/null +++ b/desktop/gnome/base/gnome-common/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.configure() + +def build(): + autotools.make() + +def install(): + autotools.install() + + pisitools.dodoc("COPYING", "ChangeLog") \ No newline at end of file diff --git a/desktop/gnome/base/gnome-common/pspec.xml b/desktop/gnome/base/gnome-common/pspec.xml new file mode 100644 index 0000000000..c78f7d80c4 --- /dev/null +++ b/desktop/gnome/base/gnome-common/pspec.xml @@ -0,0 +1,65 @@ + + + + + gnome-common + http://www.gnome.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + Common files for development of GNOME packages + gnome-common package contains aclocal macros, makefile headers and documents tools in order to build GNOME sources. + mirrors://gnome/gnome-common/3.10/gnome-common-3.10.0.tar.xz + + + + gnome-common + + /usr/share/doc + /usr/bin + /usr/share/aclocal + /usr/share/gnome-common + + + + + + 2014-06-14 + 3.10.0 + Rebuild for gcc + PisiLinux Community + admins@pisilinux.org + + + 2014-05-21 + 3.12.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-27 + 3.10.0 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2013-08-26 + 2.34.0 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-12-22 + 2.34.0 + First release + PisiLinux Community + admins@pisilinux.org + + + \ No newline at end of file diff --git a/desktop/gnome/base/gnome-common/translations.xml b/desktop/gnome/base/gnome-common/translations.xml new file mode 100644 index 0000000000..dd5b508d0d --- /dev/null +++ b/desktop/gnome/base/gnome-common/translations.xml @@ -0,0 +1,7 @@ + + + + gnome-common + GNOME uygulamalarının geliştirmede kullandığı yaygın dosyalar + + diff --git a/desktop/toolkit/qt5/qt5-configuration/pspec.xml b/desktop/toolkit/qt5/qt5-configuration/pspec.xml index b0663ee1d2..4d0b51db6e 100644 --- a/desktop/toolkit/qt5/qt5-configuration/pspec.xml +++ b/desktop/toolkit/qt5/qt5-configuration/pspec.xml @@ -16,6 +16,7 @@ libgcc glib2-devel dconf-devel + cmake qt5-base-devel diff --git a/desktop/toolkit/qt5/qt5-connectivity/pspec.xml b/desktop/toolkit/qt5/qt5-connectivity/pspec.xml index 9b2e2e07fb..eaf4831008 100644 --- a/desktop/toolkit/qt5/qt5-connectivity/pspec.xml +++ b/desktop/toolkit/qt5/qt5-connectivity/pspec.xml @@ -21,6 +21,12 @@ qt5-connectivity + + qt5-base + qt5-declarative + bluez-libs + libgcc + /usr/bin /usr/lib @@ -28,11 +34,6 @@ /usr/lib/qt5 /usr/lib/qt5/bin/ - - qt5-base - qt5-declarative - bluez-libs - diff --git a/office/misc/iso-codes/actions.py b/office/misc/iso-codes/actions.py new file mode 100644 index 0000000000..acf8dbabf8 --- /dev/null +++ b/office/misc/iso-codes/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt. + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.configure() + +def build(): + autotools.make() + +def install(): + autotools.install() + pisitools.domove("/usr/share/pkgconfig/iso-codes.pc","/usr/lib/pkgconfig") + pisitools.removeDir("/usr/share/pkgconfig") + + pisitools.dodoc("ChangeLog","LICENSE", "README", "TODO") diff --git a/office/misc/iso-codes/pspec.xml b/office/misc/iso-codes/pspec.xml new file mode 100644 index 0000000000..195bd667d7 --- /dev/null +++ b/office/misc/iso-codes/pspec.xml @@ -0,0 +1,53 @@ + + + + + iso-codes + http://pkg-isocodes.alioth.debian.org/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + International country codes + iso-codes provides IS0-639_3, ISO-4127, ISO-3166, ISO-3166_2, ISO-15924 standards. + http://pkg-isocodes.alioth.debian.org/downloads/iso-codes-3.53.tar.xz + + + + iso-codes + + + /usr/lib/pkgconfig + /usr/share/locale + /usr/share/doc + /usr/share/xml + /usr/share/iso-codes + + + + + + 2014-05-21 + 3.53 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2013-10-13 + 3.47 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-10-02 + 3.39 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/office/misc/iso-codes/translations.xml b/office/misc/iso-codes/translations.xml new file mode 100644 index 0000000000..27ca618f0f --- /dev/null +++ b/office/misc/iso-codes/translations.xml @@ -0,0 +1,8 @@ + + + + iso-codes + Uluslararası ülke kodları + iso-codes IS0-639_3, ISO-4127, ISO-3166, ISO-3166_2, ISO-15924 standartlarını sağlar. + + diff --git a/programming/language/vala/actions.py b/programming/language/vala/actions.py new file mode 100644 index 0000000000..856debc335 --- /dev/null +++ b/programming/language/vala/actions.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vfi") + autotools.configure("--enable-vapigen \ + --with-pic") + +def build(): + autotools.make() + +#def check(): + #autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("NEWS", "README", "AUTHORS", "COPYING") diff --git a/programming/language/vala/files/vim/vala.ftdetect b/programming/language/vala/files/vim/vala.ftdetect new file mode 100644 index 0000000000..ced5abd487 --- /dev/null +++ b/programming/language/vala/files/vim/vala.ftdetect @@ -0,0 +1,2 @@ +autocmd BufNewFile,BufRead *.vala set ft=vala +autocmd BufNewFile,BufRead *.vapi set ft=vala diff --git a/programming/language/vala/files/vim/vala.syntax b/programming/language/vala/files/vim/vala.syntax new file mode 100644 index 0000000000..11f9e28561 --- /dev/null +++ b/programming/language/vala/files/vim/vala.syntax @@ -0,0 +1,171 @@ +" Vim syntax file +" Language: Vala +" Maintainers: Emmanuele Bassi +" Hans Vercammen +" pancake +" Filenames: *.vala *.vapi +" +" REFERENCES: +" [1] http://live.gnome.org/Vala +" +" TODO: Possibly when reaching vala 1.0 release +" - validate code attributes +" - better error checking for known errors +" - full support for valadoc + +if exists("b:current_syntax") + finish +endif + +let s:vala_cpo_save = &cpo +set cpo&vim + +" Types +syn keyword valaType bool char double float size_t ssize_t string unichar void +syn keyword valaType int int8 int16 int32 int64 long short +syn keyword valaType uint uint8 uint16 uint32 uint64 ulong ushort +" Storage keyword +syn keyword valaStorage class delegate enum errordomain interface namespace struct +" repeat / condition / label +syn keyword valaRepeat break continue do for foreach return while +syn keyword valaConditional else if switch assert +" User Labels +syn keyword valaLabel case default + +" Modifiers +syn keyword valaModifier abstract const dynamic ensures extern inline internal override +syn keyword valaModifier private protected public requires signal static virtual volatile weak +syn keyword valaModifier async owned unowned +" Constants +syn keyword valaConstant false null true +" Exceptions +syn keyword valaException try catch finally throw +" Unspecified Statements +syn keyword valaUnspecifiedStatement as base construct delete get in is lock new out params ref sizeof set this throws typeof using value var yield + +" Comments +syn cluster valaCommentGroup contains=valaTodo +syn keyword valaTodo contained TODO FIXME XXX NOTE + +" valadoc Comments (ported from javadoc comments in java.vim) +" TODO: need to verify valadoc syntax +if !exists("vala_ignore_valadoc") + syn cluster valaDocCommentGroup contains=valaDocTags,valaDocSeeTag + syn region valaDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" + syn match valaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=valaDocParam + syn match valaDocParam contained "\s\S\+" + syn match valaDocTags contained "@\(author\|brief\|version\|return\|deprecated\)\>" + syn region valaDocSeeTag contained matchgroup=valaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=valaDocSeeTagParam + syn match valaDocSeeTagParam contained @"\_[^"]\+"\|\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend +endif + +" Comment Strings (ported from c.vim) +if exists("vala_comment_strings") + syn match valaCommentSkip contained "^\s*\*\($\|\s\+\)" + syn region valaCommentString contained start=+L\=\\\@" +syn match valaNumber display "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" +syn match valaNumber display "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" +syn match valaNumber display "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" + +" when wanted, highlight trailing white space +if exists("vala_space_errors") + if !exists("vala_no_trail_space_error") + syn match valaSpaceError display excludenl "\s\+$" + endif + if !exists("vala_no_tab_space_error") + syn match valaSpaceError display " \+\t"me=e-1 + endif +endif + +" when wanted, set minimum lines for comment syntax syncing +if exists("vala_minlines") + let b:vala_minlines = vala_minlines +else + let b:vala_minlines = 50 +endif +exec "syn sync ccomment valaComment minlines=" . b:vala_minlines + +" The default highlighting. +hi def link valaType Type +hi def link valaStorage StorageClass +hi def link valaRepeat Repeat +hi def link valaConditional Conditional +hi def link valaLabel Label +hi def link valaModifier StorageClass +hi def link valaConstant Constant +hi def link valaException Exception +hi def link valaUnspecifiedStatement Statement +hi def link valaUnspecifiedKeyword Keyword +hi def link valaContextualStatement Statement + +hi def link valaCommentError Error +hi def link valaCommentStartError Error +hi def link valaSpecialError Error +hi def link valaSpecialCharError Error +hi def link valaSpaceError Error + +hi def link valaTodo Todo +hi def link valaCommentL valaComment +hi def link valaCommentStart valaComment +hi def link valaCommentSkip valaComment +hi def link valaComment Comment +hi def link valaDocComment Comment +hi def link valaDocTags Special +hi def link valaDocParam Function +hi def link valaDocSeeTagParam Function +hi def link valaAttribute PreCondit + +hi def link valaCommentString valaString +hi def link valaComment2String valaString +hi def link valaString String +hi def link valaVerbatimString String +hi def link valaCharacter Character +hi def link valaSpecialChar SpecialChar +hi def link valaNumber Number +hi def link valaUnicodeNumber SpecialChar +hi def link valaUnicodeSpecifier SpecialChar + +let b:current_syntax = "vala" + +let &cpo = s:vala_cpo_save +unlet s:vala_cpo_save diff --git a/programming/language/vala/pspec.xml b/programming/language/vala/pspec.xml new file mode 100644 index 0000000000..036e963854 --- /dev/null +++ b/programming/language/vala/pspec.xml @@ -0,0 +1,107 @@ + + + + + vala + http://live.gnome.org/Vala + + PisiLinux Community + admins@pisilinux.org + + LGPLv2+ + BSD + A modern programming language for GNOME + Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C. + mirrors://gnome/vala/0.28/vala-0.28.0.tar.xz + + glib2-devel + gobject-introspection-devel + libxslt + + + + + vala + app:console + library + + glib2 + + + /usr/lib/vala + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/vala-*/vapi + /usr/share/vim/vimfiles + + + vim/vala.syntax + vim/vala.ftdetect + + + + + vala-docs + data:doc + GNOME devhelp documentation for Vala + + /usr/share/devhelp + + + + + vala-devel + Development files for vala + + vala + + + /usr/include + /usr/lib/pkgconfig + /usr/share/pkgconfig + /usr/share/aclocal + /usr/share/vala/Makefile.vapigen + /usr/share/man/man3 + + + + + + 2015-05-22 + 0.28.0 + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-05-25 + 0.24.0 + Version bump. + Kamil Atlı + suvarice@gmail.com + + + 2013-11-18 + 0.22.1 + Version bump. + Richard de Bruin + richdb@pisilinux.org + + + 2013-04-13 + 0.20.1 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-11-15 + 0.18.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/programming/language/vala/translations.xml b/programming/language/vala/translations.xml new file mode 100644 index 0000000000..428bafa5c6 --- /dev/null +++ b/programming/language/vala/translations.xml @@ -0,0 +1,22 @@ + + + + vala + GNOME için modern bir programlama dili + Kompilator języka opartego na bibliotece GObject + Vala, ek bir çalışma zamanı bağımlılığı olmayan ve C kitaplıklarının olduğu gibi kullanılabilmesini sağlayan modern bir programlama dilidir. + Vala to nowy język programowania, którego celem jest udostępnienie cech nowoczesnych języków programowania programistom GNOME bez wymuszania dodatkowych wymagań co do środowiska uruchomieniowego i używania API innego niż w aplikacjach i bibliotekach napisanych w C. + + + + vala-docs + Vala için GNOME devhelp kitabı + Pliki dokumentacji dla kompilatora vala + + + + vala-devel + vala için geliştirme dosyaları + Pliki nagłówkowe dla kompilatora vala + + diff --git a/programming/misc/libnotify/actions.py b/programming/misc/libnotify/actions.py new file mode 100644 index 0000000000..a1ba4b2135 --- /dev/null +++ b/programming/misc/libnotify/actions.py @@ -0,0 +1,24 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + + +def setup(): + autotools.autoreconf("-vif") + + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "NEWS", "README", "COPYING") diff --git a/programming/misc/libnotify/pspec.xml b/programming/misc/libnotify/pspec.xml new file mode 100644 index 0000000000..a0dc766be7 --- /dev/null +++ b/programming/misc/libnotify/pspec.xml @@ -0,0 +1,85 @@ + + + + + libnotify + http://www.galago-project.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + Desktop notification library + libnotify sends desktop notifications to a notification daemon. + http://ftp.acc.umu.se/pub/GNOME/sources/libnotify/0.7/libnotify-0.7.6.tar.xz + + gtk3-devel + gdk-pixbuf-devel + gnome-common + libepoxy-devel + at-spi2-core-devel + gobject-introspection-devel + gtk-doc + + + + + libnotify + + gdk-pixbuf + glib2 + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/gir-1.0/ + /usr/share/gtk-doc/html + + + + + libnotify-devel + Development files for libnotify + + libnotify + gdk-pixbuf-devel + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-05-31 + 0.7.6 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2013-10-27 + 0.7.6 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-28 + 0.7.5 + Dep Fixed + PisiLinux Community + admins@pisilinux.org + + + 2012-11-23 + 0.7.5 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/programming/misc/libnotify/translations.xml b/programming/misc/libnotify/translations.xml new file mode 100644 index 0000000000..ee6b808ccb --- /dev/null +++ b/programming/misc/libnotify/translations.xml @@ -0,0 +1,20 @@ + + + + libnotify + Masaüstü bildirim kitaplığı + Libnotify, masaüstü uyarılarını uyarı birimine gönderir. + Envoie les notifications bureautiques à un daemon de notification. + Envía notificaciones de escritorio al demonio de notificaciones + + + + libnotify-docs + Libnotify belgeleri + + + + libnotify-devel + libnotify için geliştirme dosyaları + + diff --git a/util/misc/component.xml b/util/misc/component.xml new file mode 100644 index 0000000000..14a07743ae --- /dev/null +++ b/util/misc/component.xml @@ -0,0 +1,3 @@ + + util.misc + diff --git a/util/misc/ibus/actions.py b/util/misc/ibus/actions.py new file mode 100644 index 0000000000..e75a65509c --- /dev/null +++ b/util/misc/ibus/actions.py @@ -0,0 +1,39 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + + +def setup(): + #sandbox error fixed + #pisitools.dosed("data/dconf/Makefile.am", "dconf update", "") + #pisitools.dosed("data/dconf/Makefile.in", "dconf update", "") + + autotools.configure("--prefix=/usr \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/ibus \ + --disable-gconf \ + --enable-dconf \ + --enable-wayland \ + --enable-vala \ + --enable-ui \ + --enable-gtk-doc \ + --enable-python-library \ + --with-python=python \ + --enable-gtk3 \ + --enable-gtk2") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "README") \ No newline at end of file diff --git a/util/misc/ibus/pspec.xml b/util/misc/ibus/pspec.xml new file mode 100644 index 0000000000..c639498e7f --- /dev/null +++ b/util/misc/ibus/pspec.xml @@ -0,0 +1,151 @@ + + + + + ibus + http://code.google.com/p/ibus/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + app + Intelligent Input Bus for Linux / Unix OS + IBus is an Intelligent Input Bus. It is a new input framework for Linux OS. It provides full featured and user friendly input method user interface. + https://github.com/ibus/ibus/releases/download/1.5.10/ibus-1.5.10.tar.gz + + + gtk2-devel + gtk3-devel + glib2-devel + dconf-devel + vala-devel + libnotify-devel + libxkbcommon-devel + intltool + iso-codes + libxslt + docbook-xsl + + + + + ibus + + glib2 + libX11 + atk + gtk2 + gtk3 + cairo + + libXi + pango + dconf + libnotify + gdk-pixbuf + libxkbcommon + wayland-client + + + /etc/bash_completion.d/ + /etc/gconf/schemas/ibus.schemas + /etc/dconf/ + /usr/bin + /usr/lib + /usr/share + + + + + ibus-gtk2 + ibus için gtk2 desteği + + ibus + glib2 + gtk2 + pango + + + /usr/lib/gtk-2.0/2.10.0/immodules/ + + + + + ibus-gtk3 + ibus için gtk3 desteği + + ibus + glib2 + gtk3 + pango + + + /usr/lib/gtk-3.0/3.0.0/immodules/ + + + + + ibus-devel + ibus için geliştirme dosyaları + + ibus + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2015-06-16 + 1.5.10 + Version Bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-02-26 + 1.5.4 + Delete Unused Deps. + Varol Maksutoğlu + waroi@pisilinux.org + + + 2014-02-25 + 1.5.4 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-12-08 + 1.5.4 + Version Bump + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-07-27 + 1.5.3 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-04-30 + 1.5.2 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-10-04 + 1.4.99.20120917 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/util/misc/ibus/translations.xml b/util/misc/ibus/translations.xml new file mode 100644 index 0000000000..2813e10569 --- /dev/null +++ b/util/misc/ibus/translations.xml @@ -0,0 +1,13 @@ + + + + ibus + Intelligent Input Bus for Linux / Unix OS + IBus is an Intelligent Input Bus. It is a new input framework for Linux OS. It provides full featured and user friendly input method user interface. + + + + ibus-devel + ibus için geliştirme dosyaları + + From 272edf8dd4c59921935633989b5f3cce3170a235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Thu, 9 Jul 2015 15:45:26 +0300 Subject: [PATCH 159/175] fix build qt5-websockets --- desktop/toolkit/qt5/qt5-websockets/pspec.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/toolkit/qt5/qt5-websockets/pspec.xml b/desktop/toolkit/qt5/qt5-websockets/pspec.xml index c9b64aa156..ff3b42184a 100644 --- a/desktop/toolkit/qt5/qt5-websockets/pspec.xml +++ b/desktop/toolkit/qt5/qt5-websockets/pspec.xml @@ -25,6 +25,7 @@ /usr/lib/qt5 + libgcc qt5-base qt5-declarative From b77e6255bbaf83544250823f604fe78b2b9f1c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Thu, 9 Jul 2015 20:23:19 +0300 Subject: [PATCH 160/175] gpsd version bump can't builded. --- science/gis/gpsd/actions.py | 27 +++++++++------------- science/gis/gpsd/actions.py.old | 40 +++++++++++++++++++++++++++++++++ science/gis/gpsd/pspec.xml | 33 ++++++++++++++++++++------- 3 files changed, 76 insertions(+), 24 deletions(-) create mode 100644 science/gis/gpsd/actions.py.old diff --git a/science/gis/gpsd/actions.py b/science/gis/gpsd/actions.py index c1c3a67ddb..072bca0dfd 100644 --- a/science/gis/gpsd/actions.py +++ b/science/gis/gpsd/actions.py @@ -8,33 +8,28 @@ from pisi.actionsapi import autotools from pisi.actionsapi import pisitools from pisi.actionsapi import shelltools from pisi.actionsapi import get - -def setup(): - shelltools.touch("%s/ChangeLog" % get.curDIR()) - autotools.autoreconf("-fi") - - autotools.configure("--disable-static \ - --disable-libQgpsmm \ - --enable-dbus") - - pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") - +from pisi.actionsapi import scons + +shelltools.export("PYTHONDONTWRITEBYTECODE", "1") def build(): - autotools.make() + scons.make( "prefix=/usr \ + systemd=no \ + libQgpsmm=no \ + PYTHONPATH=/usr/bin/python") def install(): - autotools.install() + scons.install("--install-sandbox=%s" % get.installDIR()) # We're using conf.d instead of sysconfig - pisitools.dosed("gpsd.hotplug.wrapper", "sysconfig\/", "conf.d/") + #pisitools.dosed("gpsd.hotplug.wrapper", "sysconfig\/", "conf.d/") # Install UDEV files pisitools.insinto("/lib/udev/rules.d", "gpsd.rules", "99-gpsd.rules") pisitools.dobin("gpsd.hotplug", "/lib/udev") - pisitools.dobin("gpsd.hotplug.wrapper", "/lib/udev") + #pisitools.dobin("gpsd.hotplug.wrapper", "/lib/udev") # Fix permissions - shelltools.chmod("%s/usr/lib/%s/site-packages/gps/gps.py" % (get.installDIR(), get.curPYTHON())) + #lsshelltools.chmod("%s/usr/lib/%s/site-packages/gps/gps.py" % (get.installDIR(), get.curPYTHON())) pisitools.dodoc("README", "TODO", "AUTHORS", "COPYING") diff --git a/science/gis/gpsd/actions.py.old b/science/gis/gpsd/actions.py.old new file mode 100644 index 0000000000..c1c3a67ddb --- /dev/null +++ b/science/gis/gpsd/actions.py.old @@ -0,0 +1,40 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def setup(): + shelltools.touch("%s/ChangeLog" % get.curDIR()) + autotools.autoreconf("-fi") + + autotools.configure("--disable-static \ + --disable-libQgpsmm \ + --enable-dbus") + + pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ") + + +def build(): + autotools.make() + +def install(): + autotools.install() + + # We're using conf.d instead of sysconfig + pisitools.dosed("gpsd.hotplug.wrapper", "sysconfig\/", "conf.d/") + + # Install UDEV files + pisitools.insinto("/lib/udev/rules.d", "gpsd.rules", "99-gpsd.rules") + pisitools.dobin("gpsd.hotplug", "/lib/udev") + pisitools.dobin("gpsd.hotplug.wrapper", "/lib/udev") + + # Fix permissions + shelltools.chmod("%s/usr/lib/%s/site-packages/gps/gps.py" % (get.installDIR(), get.curPYTHON())) + + pisitools.dodoc("README", "TODO", "AUTHORS", "COPYING") diff --git a/science/gis/gpsd/pspec.xml b/science/gis/gpsd/pspec.xml index 1714860c32..04f3180b02 100644 --- a/science/gis/gpsd/pspec.xml +++ b/science/gis/gpsd/pspec.xml @@ -3,7 +3,7 @@ gpsd - http://gpsd.berlios.de + http://catb.org/gpsd/ PisiLinux Community admins@pisilinux.org @@ -11,15 +11,25 @@ BSD GPS daemon and library to support serial/USB GPS devices gpsd is a service daemon that monitor one or more GPSes attached to a host computer through serial or USB ports, making all data of the sensors available to be queried on TCP port 2947 of the host computer. - http://www.openadk.org/distfiles/gpsd-2.95.tar.gz + http://download.savannah.gnu.org/releases/gpsd/gpsd-3.15.tar.gz xmlto + libusb-devel + desktop-file-utils + ncurses-devel + python-devel + dbus-devel + bluez-libs-devel + util-linux + libxslt + scons + docbook-xsl - + @@ -45,7 +55,7 @@ - + - + + + 2015-07-09 + 3.15 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2014-09-13 2.95 From a582d7479d6c35c4d22e0b1b04dff19c9716cbde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 13 Jul 2015 01:00:15 +0300 Subject: [PATCH 161/175] index . --- pisi-index.xml | 12629 +++++++++++++++++++++++++++++++++++- pisi-index.xml.sha1sum | 2 +- pisi-index.xml.xz | Bin 78780 -> 122408 bytes pisi-index.xml.xz.sha1sum | 2 +- 4 files changed, 12319 insertions(+), 314 deletions(-) diff --git a/pisi-index.xml b/pisi-index.xml index be403907d3..f493487ec9 100644 --- a/pisi-index.xml +++ b/pisi-index.xml @@ -65,6 +65,150 @@ + + + gegl + http://gegl.org + + PisiLinux Community + admins@pisilinux.org + + GPLv3+ + LGPLv3+ + library + app:console + multimedia.graphics + A graph based image processing framework + Graf tabanlı resim işleme altyapısı + gegl (Generic Graphics Library) provides infrastructure to do demand based cached non destructive image editing on larger than RAM buffers. Through babl it provides support for a wide range of color models and pixel storage formats for input and output. + gegl, orijinal kopyaya zarar vermeden (non-destructive) isteğe bağlı (demand based) resim işleme altyapısı sunan bir kütüphanedir. + http://ftp.gimp.org/pub/gegl/0.2/gegl-0.2.0.tar.bz2 + + SuiteSparse-devel + libopenraw-devel + libspiro-devel + librsvg-devel + openexr-devel + ffmpeg-devel + libsdl-devel + libv4l-devel + jasper-devel + cairo-devel + pango-devel + exiv2-devel + babl-devel + libjpeg-turbo-devel + gtk2-devel + lua-devel + asciidoc + graphviz + enscript + ruby + ilmbase-devel + + + gegl-0.2.0-cve-2012-4433-1e92e523.patch + gegl-0.2.0-cve-2012-4433-4757cdf7.patch + gegl-0.2.0-ffmpeg-0.11.patch + + multimedia/graphics/gegl/pspec.xml + + + gegl + + openexr-libs + SuiteSparse + gdk-pixbuf + libopenraw + libspiro + graphviz + librsvg + ffmpeg + jasper + libsdl + libv4l + cairo + pango + ruby + babl + libjpeg-turbo + gtk2 + lua + ilmbase + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/locale/ + + + + gegl-devel + Development files for gegl + gegl için geliştirme dosyaları + + gegl + babl-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/share/gtk-doc/html + + + + + 2014-12-20 + 0.2.0 + Rebuild for lua + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-06-19 + 0.2.0 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-31 + 0.2.0 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-11-29 + 0.2.0 + rebuild for ffmpeg + Kamil Atlı + suvarice@gmail.com + + + 2013-08-23 + 0.2.0 + Release bump + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-05-20 + 0.2.0 + Configure parameter fixed + Ertan Güven + ertan@pisilinux.org + + + 2012-12-08 + 0.2.0 + First release + marcin bojara + marcin@pisilinux.org + + + jasper @@ -196,7 +340,8 @@ Libmng -librería de referencia para lectura, visualización, escritura y análisis de gráficos tipo Multiple-Image Network. MNG es la extensión de animación al formato popular de imágenes PNG. http://sourceforge.net/projects/libmng/files/libmng-devel/2.0.2/libmng-2.0.2.tar.gz - lcms-devel + zlib-devel + lcms2-devel libjpeg-turbo-devel multimedia/graphics/libmng/pspec.xml @@ -204,6 +349,7 @@ libmng + zlib libjpeg-turbo lcms2 @@ -227,10 +373,17 @@ 32-bit shared libraries for libmng emul32 emul32 + + zlib-32bit + lcms2-32bit + libjpeg-turbo-32bit + glibc-32bit + zlib-32bit lcms2-32bit libjpeg-turbo-32bit + glibc-32bit libmng @@ -261,6 +414,2085 @@ + + + lcms + http://www.littlecms.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + app:console + library + multimedia.graphics + Moteur de gestion de couleurs léger et optimisé pour la vitesse. + A lightweight, speed optimized color management engine + Hız geliştirmesi yapılmış, hafif bir renk yönetim motoru + LittleCMS intends to be a small-footprint, speed optimized color management engine in open source form. + mirrors://sourceforge/project/lcms/lcms/1.19/lcms-1.19.tar.gz + + tiff-devel + libjpeg-turbo-devel + + + CVE-2009-0793.patch + + multimedia/graphics/lcms/pspec.xml + + + lcms + + tiff + libjpeg-turbo + + + /usr/bin + /usr/lib + /usr/share/lcms + /usr/share/doc + /usr/share/man + + + + lcms-devel + lcms için geliştirme dosyaları + + lcms + + + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/include + + + + lcms-32bit + 32-bit shared libraries for lcms + lcms için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + tiff-32bit + libjpeg-turbo-32bit + + + lcms + tiff-32bit + libjpeg-turbo-32bit + + + /usr/lib32 + + + + + 2014-05-19 + 1.19 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2011-05-04 + 1.19 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + gimp-dds-plugin + http://code.google.com/p/gimp-dds/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + library + multimedia.graphics.gimp.addon + DirectDraw Surface (DDS) format plugin for Gimp + This is a plugin for GIMP version 2.6.x. It allows you to load and save images in the Direct Draw Surface (DDS) format. + http://gimp-dds.googlecode.com/files/gimp-dds-3.0.1.tar.bz2 + + gimp-devel + gtk2-devel + + multimedia/graphics/gimp/addon/gimp-dds-plugin/pspec.xml + + + gimp-dds-plugin + + atk + cairo + fontconfig + gdk-pixbuf + gimp + gtk2 + pango + libgomp + + + /usr/lib/gimp/2.0/plug-ins/dds + /usr/share/doc/gimp-dds-plugin + + + + + 2014-06-19 + 3.0.1 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 3.0.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-07-07 + 2.2.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + gimp-refocus-it-plugin + http://sourceforge.net/projects/refocus-it + + Osman Erkan + osman.erkan@pisilinux.org + + GPLv2 + library + multimedia.graphics.gimp.addon + Iterative refocus GIMP plug-in can be used to refocus images acquired by a defocused camera, blurred by gaussian or motion blur or any combination of these. + Iterative refocus GIMP plug-in can be used to refocus images acquired by a defocused camera, blurred by gaussian or motion blur or any combination of these. Adaptive or static area smoothing can be used to remove the so called \"ringing\" effect. + mirrors://sourceforge/refocus-it/refocus-it-2.0.0.tar.gz + + gimp-devel + gtk2-devel + + multimedia/graphics/gimp/addon/gimp-refocus-it-plugin/pspec.xml + + + gimp-refocus-it-plugin + + gimp + gtk2 + + + /usr/bin + /usr/lib/gimp/2.0/plug-ins + /usr/share/doc/gimp-refocus-it-plugin + /usr/share/help + /usr/share/locale + + + + + 2014-06-19 + 2.0.0 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 2.0.0 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-03-28 + 2.0.0 + First release + Osman Erkan + osman.erkan@pisilinux.org + + + + + + gimpfx-foundry + http://gimpfx-foundry.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + GPLv3 + public-domain + data + multimedia.graphics.gimp.addon + A scripts collection for GIMP + GIMP için zengin bir betik paketi + FX-Foundry project is constantly updating custom scripts for each major GIMP release. + FX-Foundry GIMP için hazırlanmış çeşitli betikleri GIMP'in yeni sürümleri için güncelleyen bir projedir. + mirrors://sourceforge/gimpfx-foundry/gimpfx-foundry-scriptpack/gimpfx-foundry-2.6-1/gimpfx-foundry-2.6-1.tar.gz + multimedia/graphics/gimp/addon/gimpfx-foundry/pspec.xml + + + gimpfx-foundry + + gimp + + + /usr/share/gimp/2.0/scripts + /usr/share/doc + + + + + 2014-06-19 + 2.6.1 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 2.6.1 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2009-07-24 + 2.6.1 + First release + Anıl Özbek + admins@pisilinux.org + + + + + + gimp-gmic-plugin + http://gmic.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + CeCILL-2 + app:console + library + multimedia.graphics.gimp.addon + Image procession framework. + G'MIC stands for GREYC's Magic Image Converter. G'MIC is focused on the design of possibly complex pipelines for converting, manipulating, filtering and visualizing generic 1d/2d/3d multi-spectral image datasets. + mirrors://sourceforge/gmic/gmic_1.6.0.3.tar.gz + + ffmpeg-devel + fftw3-devel + gimp-devel + GraphicsMagick-devel + libjpeg-turbo-devel + lapack-devel + opencv-devel + openexr-devel + tiff-devel + + multimedia/graphics/gimp/addon/gimp-gmic-plugin/pspec.xml + + + gmic + + tiff + fftw3 + ffmpeg + opencv + libgomp + ilmbase + libXext + openexr-libs + libjpeg-turbo + GraphicsMagick + + + /etc/bash_completion.d + /usr/bin + /usr/lib + /usr/share/doc/gmic + /usr/share/man + + + + gmic-devel + Development files for gmic + + gmic + + + /usr/include + + + + gimp-gmic-plugin + Gimp plugin for the GMIC image procession framework. + + atk + gtk2 + gimp + cairo + pango + fftw3 + fontconfig + gdk-pixbuf + + + /usr/lib/gimp + /usr/share/doc/gimp-gmic-plugin + + + + + 2014-12-25 + 1.6.0.3 + version bump + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-06-19 + 1.5.5.0 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-12-01 + 1.5.5.0 + Rebuild for ffmpeg. + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-03-27 + 1.5.5.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-08-13 + 1.5.1.7 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + gimp-resynthesizer + http://www.logarithmic.net/pfh/resynthesizer + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + addon + multimedia.graphics.gimp.addon + Resynthesizer is a Gimp plug-in for texture synthesis + Resynthesizer is a Gimp plug-in for texture synthesis. Given a sample of a texture, it can create more of that texture. + http://www.logarithmic.net/pfh-files/resynthesizer/resynthesizer-0.16.tar.gz + + gimp-devel + + multimedia/graphics/gimp/addon/gimp-resynthesizer/pspec.xml + + + gimp-resynthesizer + + gimp + atk + gtk2 + cairo + pango + fontconfig + gdk-pixbuf + + + /usr/lib/gimp/2.0/plug-ins + /usr/share/gimp/2.0/scripts + /usr/share/doc + + + + + 2014-06-19 + 0.16 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-07-29 + 0.16 + Dep fixed + Fatih Turgel + hitaf@pisilinux.org + + + 2011-02-20 + 0.16 + First release + Erdem Artan + erdem.artan@linux.org.tr + + + + + + gimp-lqr-plugin + http://liquidrescale.wikidot.com/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + multimedia.graphics.gimp.addon + Plugin for The GIMP providing Liquid Rescale. + Provides an implementation of the Seam Carving algorithm. The Seam Carving procedure aims at resizing pictures non uniformly while preserving their features, i.e. avoiding distortion of the important parts. The plugin supports manual feature selection, and can also be used to remove portions of the picture in a consistent way. + http://liquidrescale.wikidot.com/local--files/en:download-page-sources/gimp-lqr-plugin-0.7.2.tar.bz2 + + gimp-devel + liblqr-devel + + multimedia/graphics/gimp/addon/gimp-lqr-plugin/pspec.xml + + + gimp-lqr-plugin + + gdk-pixbuf + gimp + gtk2 + liblqr + + + /usr/lib/gimp/2.0/plug-ins/* + /usr/share/doc/gimp-lqr-plugin/* + /usr/share/gimp-lqr-plugin/* + /usr/share/gimp/2.0/scripts/* + /usr/share/locale/* + + + + + 2014-06-19 + 0.7.2 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 0.7.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-14 + 0.7.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + gimp-data-extras + http//www.gimp.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + data + multimedia.graphics.gimp.addon + Gimp extras + Gimp ekleri + Contains extra brushes, palettes, and gradients for extra GIMPy artistic enjoyment. + Daha eğlenceli bir çalışma için ek fırçalar, paketler ve gradyanlar içerir. + gimp + ftp://ftp.gimp.org/pub/gimp/extras/gimp-data-extras-2.0.2.tar.bz2 + + gimp-devel + + multimedia/graphics/gimp/addon/gimp-data-extras/pspec.xml + + + gimp-data-extras + + gimp + + + /usr/share/gimp + /usr/share/doc + + + + + 2014-06-19 + 2.0.2 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 2.0.2 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2009-09-07 + 2.0.2 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + gimp-focusblur-plugin + http://registry.gimp.org/node/1444 + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + multimedia.graphics.gimp.addon + Makes out of focus with luminosity and depth. + Focus Blur plug-in is blurring effect, a kind of called DoF. This software makes a out of focus with luminosity and depth, like a sight or lenses. It can be used with depth map, depth fakes and shine effect. Also it can work as simple and applicable blur. + http://registry.gimp.org/files/focusblur-3.2.6.tar.bz2 + + fftw3-devel + gimp-devel + + multimedia/graphics/gimp/addon/gimp-focusblur-plugin/pspec.xml + + + gimp-focusblur-plugin + + fftw3 + gdk-pixbuf + gimp + gtk2 + + + /usr/lib/gimp/2.0/plug-ins + /usr/share/doc + /usr/share/locale + + + + + 2014-06-19 + 3.2.6 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 3.2.6 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-10 + 3.2.6 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + gimp-save-for-web + http://registry.gimp.org/node/33 + + Osman Erkan + osman.erkan@pisilinux.org + + GPLv2 + library + multimedia.graphics.gimp.addon + GIMP Save for Web + GIMP Save for Web + GIMP Save for Web allows to find compromise between minimal file size and acceptable quality of image quickly. While adjusting various settings, you may explore how image quality and file size change. Options to reduce file size of an image include setting compression quality, number or colors, resizing, cropping, Exif information removal, etc. + GIMP Save for Web, kalite ve dosya boyutu değerlerini eniyilemeyi kolaylaştıran bir eklentidir. Çeşitli ayarları değiştirerek resimlerin ne kadar kaliteli veya büyük olacağını görebilirsiniz. Dosya boyutunu küçültecek ayarlar arasında sıkıştırma kalitesi, renk sayısı, yeniden boyutlandırma, kırpma ve Exif bilgeleri silme seçenekleri vb. vardır. + http://registry.gimp.org/files/gimp-save-for-web-0.29.3.tar.bz2 + + gimp-devel + gtk2-devel + gdk-pixbuf-devel + + multimedia/graphics/gimp/addon/gimp-save-for-web/pspec.xml + + + gimp-save-for-web + + gimp + gtk2 + gdk-pixbuf + + + /usr/lib/gimp/2.0/plug-ins + /usr/share/gimp-save-for-web + /usr/share/locale + /usr/share/doc + + + + + 2014-06-19 + 0.29.3 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-03-30 + 0.29.3 + V.bump + Osman Erkan + osman.erkan@pisilinux.org + + + 2011-01-30 + 0.29.0 + First release + Anıl Özbek + admins@pisilinux.org + + + + + + gimp-layer-effects + http://registry.gimp.org/node/186 + + PisiLinux Community + admins@pisilinux.org + + GPLv3+ + library + multimedia.graphics.gimp.addon + Layer effects for GIMP + GIMP için katman efektleri + Layer Effects is a GIMP plugin which contains a series of scripts that implement various layer effects. + Layer Effects, yaygın olarak kullanılan katman efektlerini içeren bir GIMP eklentisidir. + gimp + http://ozbekanil.googlepages.com/layer-effects.tar.gz + multimedia/graphics/gimp/addon/gimp-layer-effects/pspec.xml + + + gimp-layer-effects + + gimp + + + /usr/lib/gimp/2.0/plug-ins + /usr/share/doc + + + COPYING + + + + + 2014-06-19 + 2.6.0 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-25 + 2.6.0 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2011-01-30 + 2.6.0 + First release + Anıl Özbek + admins@pisilinux.org + + + + + + colorize-gimp + http://zenthought.org/content/project/colorize + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + library + multimedia.graphics.gimp.addon + Colorization plugin for GIMP + GIMP için renklendirme eklentisi + colorize-gimp is an implementation of colorization using optimization for GIMP. + colorize-gimp, GIMP ile siyah beyaz fotoğrafları renklendirmek için bir eklentidir. + gimp + http://zenthought.org/system/files/asset/2/colorize-gimp-20070930.tar.gz + + gimp-devel + gtk2-devel + atlas-devel + SuiteSparse-devel + + multimedia/graphics/gimp/addon/colorize-gimp/pspec.xml + + + colorize-gimp + + gimp + gtk2 + atlas + SuiteSparse + atk + cairo + pango + gdk-pixbuf + fontconfig + + + /usr/lib/gimp/2.0/plug-ins + /usr/share/doc + + + COPYING + + + + + 2014-06-19 + 2.6.0 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-07-29 + 2.6.0 + Dep fixed + Fatih Turgel + hitaf@pisilinux.org + + + 2011-01-30 + 2.6.0 + First release + Anıl Özbek + admins@pisilinux.org + + + + + + gimp + http://www.gimp.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + multimedia.graphics.gimp + GNU Image Manipulation Program + Bir resim işleme programı + Programme de Manipulation d'Image GNU. + GIMP is a mature image editor with many advanced features and plugin support. + Piksel düzeyinde işlem yapılabilen gelişmiş bir grafik düzenleme programı + http://download.gimp.org/pub/gimp/v2.8/gimp-2.8.14.tar.bz2 + + gtk-doc + atk-devel + xdg-utils + pkgconfig + tiff-devel + zlib-devel + lcms-devel + gegl-devel + babl-devel + dbus-devel + gtk2-devel + aalib-devel + bzip2-devel + pango-devel + cairo-devel + glib2-devel + libwmf-devel + jasper-devel + libX11-devel + libmng-devel + libpng-devel + libXpm-devel + libXmu-devel + libXext-devel + librsvg-devel + libexif-devel + alsa-lib-devel + freetype-devel + dbus-glib-devel + libXfixes-devel + libgudev1-devel + libXcursor-devel + fontconfig-devel + python-gtk-devel + gdk-pixbuf-devel + ghostscript-devel + webkit-gtk2-devel + poppler-glib-devel + libjpeg-turbo-devel + + multimedia/graphics/gimp/gimp/pspec.xml + + + gimp-devel + Documents et entêtes de développement pour GIMP. + Development header and documents for GIMP + GIMP için geliştirme belgeleri ve başlık dosyaları + data + data:doc + + gtk2-devel + cairo-devel + gdk-pixbuf-devel + gimp + + + /usr/include + /usr/share/gtk-doc + /usr/lib/pkgconfig + /usr/share/aclocal + + + + gimp + app:gui + + atk + gegl + babl + dbus + gtk2 + tiff + zlib + lcms + aalib + bzip2 + pango + cairo + glib2 + libwmf + libXpm + libmng + libpng + libXmu + jasper + libX11 + libXext + librsvg + libexif + alsa-lib + freetype + dbus-glib + libXfixes + libgudev1 + xdg-utils + libXcursor + fontconfig + python-gtk + gdk-pixbuf + ghostscript + webkit-gtk2 + poppler-glib + libjpeg-turbo + + + /etc + /usr/lib + /usr/share/man + /usr/share/doc + /usr/bin + /usr/share/gimp + /usr/share/icons + /usr/share/appdata + /usr/share/mime-info + /usr/share/applications + /usr/share/application-registry + + + gimp-splash-colors.png + + + + gimp-i18n-tr + Gimp translation files for Turkish + Türkçe için GIMP yerelleştirme dosyaları + locale:tr + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/tr + + + + gimp-i18n-ast + Gimp translation files for Asturian + Asturya dili için GIMP yerelleştirme dosyaları + locale:ast + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ast + + + + gimp-i18n-my + Gimp translation files for Burmese + Burmese dili için GIMP yerelleştirme dosyaları + locale:my + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/my + + + + gimp-i18n-nds + Gimp translation files for Low Saxon + Aşağı Saxon dili için GIMP yerelleştirme dosyaları + locale:nds + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/nds + + + + gimp-i18n-el + Gimp translation files for Greek + Yunanca için GIMP yerelleştirme dosyaları + locale:el + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/el + + + + gimp-i18n-gu + Gimp translation files for Gujarati + Gujarati dili için GIMP yerelleştirme dosyaları + locale:gu + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/gu + + + + gimp-i18n-be + Gimp translation files for Belarusian + Belarusça için GIMP yerelleştirme dosyaları + locale:be + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/be + + + + gimp-i18n-vi + Gimp translation files for Vietnamese + Viyetnamca için GIMP yerelleştirme dosyaları + locale:vi + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/vi + + + + gimp-i18n-ca + Gimp translation files for Catalan + Katalanca için GIMP yerelleştirme dosyaları + locale:ca + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ca + + + + gimp-i18n-eo + Gimp translation files for Esperanto + Esperanto için GIMP yerelleştirme dosyaları + locale:eo + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/eo + + + + gimp-i18n-cs + Gimp translation files for Czech + Çekçe için GIMP yerelleştirme dosyaları + locale:cs + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/cs + + + + gimp-i18n-ca_valencia + Gimp translation files for Catalan (Valencia) + Valensiya Katalancası için GIMP yerelleştirme dosyaları + locale:ca@valencia + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ca@valencia + + + + gimp-i18n-ar + Gimp translation files for Arabic + Arapça için GIMP yerelleştirme dosyaları + locale:ar + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ar + + + + gimp-i18n-km + Gimp translation files for Khmer + Khmer dili için GIMP yerelleştirme dosyaları + locale:km + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/km + + + + gimp-i18n-ga + Gimp translation files for Irish Gaelic + Gaelik İrlandacası için GIMP yerelleştirme dosyaları + locale:ga + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ga + + + + gimp-i18n-fi + Gimp translation files for Finnish + Fince için GIMP yerelleştirme dosyaları + locale:fi + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/fi + + + + gimp-i18n-eu + Gimp translation files for Basque + Baskça için GIMP yerelleştirme dosyaları + locale:eu + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/eu + + + + gimp-i18n-et + Gimp translation files for Estonian + Estonyaca için GIMP yerelleştirme dosyaları + locale:et + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/et + + + + gimp-i18n-xh + Gimp translation files for Xhosa + Xhosa dili için GIMP yerelleştirme dosyaları + locale:xh + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/xh + + + + gimp-i18n-gl + Gimp translation files for Galician + Galiçya dili için GIMP yerelleştirme dosyaları + locale:gl + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/gl + + + + gimp-i18n-id + Gimp translation files for Indonesian + Endonezyaca için GIMP yerelleştirme dosyaları + locale:id + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/id + + + + gimp-i18n-es + Gimp translation files for Spanish + İspanyolca için GIMP yerelleştirme dosyaları + locale:es + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/es + + + + gimp-i18n-ru + Gimp translation files for Russian + Rusça için GIMP yerelleştirme dosyaları + locale:ru + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ru + + + + gimp-i18n-rw + Gimp translation files for Kinyarwanda + Kinyarwanda dili için GIMP yerelleştirme dosyaları + locale:rw + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/rw + + + + gimp-i18n-nl + Gimp translation files for Dutch + Hollandaca için GIMP yerelleştirme dosyaları + locale:nl + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/nl + + + + gimp-i18n-nn + Gimp translation files for Norwegian Nynorsk + Norveç Nynorsk dili için GIMP yerelleştirme dosyaları + locale:nn + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/nn + + + + gimp-i18n-nb + Gimp translation files for Norwegian Bookmal + Norveç Bookmal dili için GIMP yerelleştirme dosyaları + locale:nb + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/nb + + + + gimp-i18n-ne + Gimp translation files for Nepali + Nepali dili için GIMP yerelleştirme dosyaları + locale:ne + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ne + + + + gimp-i18n-lt + Gimp translation files for Lithuanian + Litvanyaca için GIMP yerelleştirme dosyaları + locale:lt + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/lt + + + + gimp-i18n-pa + Gimp translation files for Punjabi + Punjabi dili için GIMP yerelleştirme dosyaları + locale:pa + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/pa + + + + gimp-i18n-ro + Gimp translation files for Romanian + Rumence için GIMP yerelleştirme dosyaları + locale:ro + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ro + + + + gimp-i18n-en_GB + Gimp translation files for British English + İngiliz İngilizcesi için GIMP yerelleştirme dosyaları + locale:en_GB + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/en_GB + + + + gimp-i18n-yi + Gimp translation files for Yi + Yi dili için GIMP yerelleştirme dosyaları + locale:yi + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/yi + + + + gimp-i18n-en_CA + Gimp translation files for Catalan (en) + Katalanca için GIMP yerelleştirme dosyaları + locale:en_CA + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/en_CA + + + + gimp-i18n-fr + Gimp translation files for French + Fransızca için GIMP yerelleştirme dosyaları + locale:fr + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/fr + + + + gimp-i18n-bg + Gimp translation files for Bulgarian + Bulgarca için GIMP yerelleştirme dosyaları + locale:bg + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/bg + + + + gimp-i18n-ms + Gimp translation files for Malay + Malay dili için GIMP yerelleştirme dosyaları + locale:ms + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ms + + + + gimp-i18n-pt_BR + Gimp translation files for Brazilian Portuguese + Brezilya Portekizcesi için GIMP yerelleştirme dosyaları + locale:pt_BR + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/pt_BR + + + + gimp-i18n-hr + Gimp translation files for Croatian (Hrvatski) + Hırvatça için GIMP yerelleştirme dosyaları + locale:hr + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/hr + + + + gimp-i18n-zh_TW + Gimp translation files for Chinese Traditional + Geleneksel Çince için GIMP yerelleştirme dosyaları + locale:zh_TW + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/zh_TW + + + + gimp-i18n-ko + Gimp translation files for Korean + Korece için GIMP yerelleştirme dosyaları + locale:ko + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ko + + + + gimp-i18n-it + Gimp translation files for Italian + İtalyanca için GIMP yerelleştirme dosyaları + locale:it + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/it + + + + gimp-i18n-fa + Gimp translation files for Farsi (Persian) + Farsça için GIMP yerelleştirme dosyaları + locale:fa + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/fa + + + + gimp-i18n-dz + Gimp translation files for Dzongkha + Dzongkha dili için GIMP yerelleştirme dosyaları + locale:dz + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/dz + + + + gimp-i18n-sr_Latn + Gimp translation files for Serbian Latin + Latin sırpça için GIMP yerelleştirme dosyaları + locale:sr@Latn + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/sr@latin + + + + gimp-i18n-da + Gimp translation files for Danish + Danimarkaca için GIMP yerelleştirme dosyaları + locale:da + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/da + + + + gimp-i18n-ja + Gimp translation files for Japanese + Japonca için GIMP yerelleştirme dosyaları + locale:ja + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ja + + + + gimp-i18n-he + Gimp translation files for Hebrew + İbranice için GIMP yerelleştirme dosyaları + locale:he + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/he + + + + gimp-i18n-pt + Gimp translation files for Portuguese + Portekizce için GIMP yerelleştirme dosyaları + locale:pt + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/pt + + + + gimp-i18n-zh_CN + Gimp translation files for Chinese Simplified + Basitleştirilmiş Çince için GIMP yerelleştirme dosyaları + locale:zh_CN + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/zh_CN + + + + gimp-i18n-sr + Gimp translation files for Serbian + Sırpça için GIMP yerelleştirme dosyaları + locale:sr + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/sr + + + + gimp-i18n-oc + Gimp translation files for Occitan + Occitan dili için GIMP yerelleştirme dosyaları + locale:oc + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/oc + + + + gimp-i18n-sv + Gimp translation files for Swedish + İsveççe için GIMP yerelleştirme dosyaları + locale:sv + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/sv + + + + gimp-i18n-mk + Gimp translation files for Macedonian + Makedonyaca için GIMP yerelleştirme dosyaları + locale:mk + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/mk + + + + gimp-i18n-sk + Gimp translation files for Slovak + Slovakça için GIMP yerelleştirme dosyaları + locale:sk + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/sk + + + + gimp-i18n-de + Gimp translation files for German + Almanca için GIMP yerelleştirme dosyaları + locale:de + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/de + + + + gimp-i18n-pl + Gimp translation files for Polish + Lehçe için GIMP yerelleştirme dosyaları + locale:pl + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/pl + + + + gimp-i18n-uk + Gimp translation files for Ukrainian + Ukraynaca için GIMP yerelleştirme dosyaları + locale:uk + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/uk + + + + gimp-i18n-sl + Gimp translation files for Slovenian + Slovence için GIMP yerelleştirme dosyaları + locale:sl + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/sl + + + + gimp-i18n-hu + Gimp translation files for Hungarian + Macarca için GIMP yerelleştirme dosyaları + locale:hu + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/hu + + + + gimp-i18n-tt + Gimp translation files for Tatarish + Tatarca için GIMP yerelleştirme dosyaları + locale:tt + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/tt + + + + gimp-i18n-az + Gimp translation files for Azerbaijani + Azerice için GIMP yerelleştirme dosyaları + locale:az + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/az + + + + gimp-i18n-am + Gimp translation files for Amharic + Amharic dili için GIMP yerelleştirme dosyaları + locale:am + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/am + + + + gimp-i18n-is + Gimp translation files for Icelandic + İzlanda dili için GIMP yerelleştirme dosyaları + locale:is + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/is + + + + gimp-i18n-lv + Gimp translation files for Latvia + Latvia dili için GIMP yerelleştirme dosyaları + locale:lv + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/lv + + + + gimp-i18n-th + Gimp translation files for Thai + Thai dili için GIMP yerelleştirme dosyaları + locale:th + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/th + + + + gimp-i18n-ka + Gimp translation files for Georgian + Gürcüce için GIMP yerelleştirme dosyaları + locale:ka + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ka + + + + gimp-i18n-hi + Gimp translation files for Hindi + Hindi dili için GIMP yerelleştirme dosyaları + locale:hi + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/hi + + + + gimp-i18n-zh_HK + Gimp translation files for Chinese Hong Kong + Hong Kong Çincesi için GIMP yerelleştirme dosyaları + locale:zh_HK + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/zh_HK + + + + gimp-i18n-ml + Gimp translation files for Malayalam + Malayalam dili için GIMP yerelleştirme dosyaları + locale:ml + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ml + + + + gimp-i18n-ta + Gimp translation files for Tamil + Tamil dili için GIMP yerelleştirme dosyaları + locale:ta + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/ta + + + + gimp-i18n-kn + Gimp translation files for Kannada + Kannada dili için GIMP yerelleştirme dosyaları + locale:kn + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/kn + + + + gimp-i18n-si + Gimp translation files for Sinhala + Sinhala dili için GIMP yerelleştirme dosyaları + locale:si + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/si + + + + gimp-i18n-kk + Gimp translation files for Kazakh + Kazakça için GIMP yerelleştirme dosyaları + locale:kk + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/kk + + + + gimp-i18n-br + Gimp translation files for Breton + Breton dili için GIMP yerelleştirme dosyaları + locale:br + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/br + + + + gimp-i18n-te + Gimp translation files for Telugu + locale:te + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/te + + + + gimp-i18n-csb + Gimp translation files for Kashubian + locale:csb + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/csb + + + + gimp-i18n-gd + Gimp translation files for Scottish Gaelic + locale:gd + multimedia.graphics.gimp.l10n + + gimp + + + /usr/share/locale/gd + + + + + 2015-02-21 + 2.8.14 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-19 + 2.8.10 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-02-27 + 2.8.10 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-12-13 + 2.8.10 + Release bump. + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-08-17 + 2.8.6 + Release bump. + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-06-23 + 2.8.6 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-01-16 + 2.8.4 + Updated + Osman Erkan + osman.erkan@pisilinux.org + + + 2012-08-25 + 2.8.2 + First release + Fatih Turgel + admins@pisilinux.org + + + + + + libwmf + http://wvware.sourceforge.net/libwmf.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + multimedia.graphics + Library for reading and converting WMF files + WMF (Windows metafile) okuma ve dönüştürme kitaplığı + Librairie pour convertir les fichiers WMF. + A library for reading and converting Windows MetaFile vector graphics (WMF). + Microsoft Word gibi uygulamaların kullandığı WMF (Windows metafile) dosyalarını standart formatlara (PNG, JPEG, PS, EPS, SVG gibi) dönüştürebilmek ve gösterebilmek için gereken kütüphanedir. + mirrors://sourceforge/wvware/libwmf-0.2.8.4.tar.gz + + libjpeg-turbo-devel + harfbuzz-devel + + multimedia/graphics/libwmf/pspec.xml + + + libwmf + + libjpeg-turbo + harfbuzz + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/libwmf + + + + libwmf-devel + Development files for libwmf + libwmf için geliştirme dosyaları + + libwmf + + + /usr/bin/libwmf-config + /usr/include + /usr/lib/pkgconfig + + + + + 2014-05-24 + 0.2.8.4 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-02-01 + 0.2.8.4 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2010-10-12 + 0.2.8.4 + First release + Pisi Linux Admins + admins@pisilinux.org + + + lcms2 @@ -355,6 +2587,91 @@ + + + giflib + http://sourceforge.net/projects/giflib + + PisiLinux Community + admins@pisilinux.org + + MIT + library + multimedia.graphics + Library to handle, display and manipulate GIF images + GIF türündeki resimleri görüntüleyip işlemeye aracılık eden kitaplık + libungif est une librairies de lecture et d'écriture d'images gif. La fonctionnalité de sauvegarde utilise un algorithme gif non compressé pour éviter le brevet Unisys LZW. giflib est un remplaçant de cette dernière compatible aussi bien au niveau de l'interface de programmation (API) qu'au niveau binaire (ABI) pour les pays où LZW n'est pas breveté. + The giflib package contains a shared library of functions for loading and saving GIF format image files. It is API and ABI compatible with libungif, the library which supported uncompressed GIFs while the Unisys LZW patent was in effect. + libungif, gif dosyalarını okumaya ve yazmaya yarayan bir kütüphanedir. Kaydetme algoritması Unisys LZW patentine takılmamak için sıkıştırma yapmamaktadır. Böylece LZW'nin patentli olmadığı ülkelerde kullanılmak için API ve ABI uyumlu bir alternatif sunar. + mirrors://sourceforge/giflib/giflib-5.0.6.tar.bz2 + multimedia/graphics/giflib/pspec.xml + + + giflib + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + + + + giflib-devel + + giflib + + + /usr/include + /usr/share/doc/giflib/html + + + + giflib-32bit + 32-bit shared libraries for giflib + emul32 + emul32 + + glibc-32bit + + + giflib + glibc-32bit + + + /usr/lib32 + + + + + 2014-05-20 + 5.0.6 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-28 + 5.0.5 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-31 + 4.1.6 + missing dep. + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2011-05-03 + 4.1.6 + First release + Pisi Linux Admins + admins@pisilinux.org + + + libjpeg-turbo @@ -519,6 +2836,79 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + babl + http://gegl.org/babl + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + LGPLv3 + library + multimedia.graphics + A dynamic, any to any, pixel format translation library + Dinamik piksel biçimi dönüştürme kütüphanesi + babl is a library that allows converting between different methods of storing pixels known as pixel formats that have with different bitdepths and other data representations, color models and component permutations. + babl, çeşitli piksel saklama yöntemleri arasında dönüşüme izin veren bir programlama kütüphanesidir. + http://download.gimp.org/pub/babl/0.1/babl-0.1.12.tar.bz2 + + librsvg + + multimedia/graphics/babl/pspec.xml + + + babl + + /usr/lib + /usr/share/doc + + + + babl-devel + Development files for babl + babl için geliştirme dosyaları + + babl + + + /usr/include + /usr/lib/pkgconfig + /usr/share/gir-1.0 + + + + + 2015-02-07 + 0.1.12 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-06-19 + 0.1.10 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-01-18 + 0.1.10 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-28 + 0.1.10 + First release + Osman Erkan + osman.erkan@pisilinux.org + + + webp @@ -537,9 +2927,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression http://downloads.webmproject.org/releases/webp/libwebp-0.4.3.tar.gz mesa-devel + mesa-glu-devel + libpng-devel tiff-devel giflib-devel - mesa-glu-devel freeglut-devel libjpeg-turbo-devel @@ -619,6 +3010,143 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + GraphicsMagick + http://www.graphicsmagick.org + + PisiLinux Community + admins@pisilinux.org + + MIT + library + multimedia.graphics + GraphicsMagick Image Processing System + GraphicsMagick Resim İşleme Sistemi + GraphicsMagick is a comprehensive image processing package which is initially based on ImageMagick 5.5.2, but which has undergone significant re-work by the GraphicsMagick Group to significantly improve the quality and performance of the software. + GraphicsMagick, başlangıçta ImageMagick 5.5.2 sürümünü temel almış kapsamlı bir resim işleme paketidir. Yazılımın kalitesini ve performansını önemli derecede artırmak için bu pakette büyük bir değişiklik yapılmıştır. + mirrors://sourceforge/graphicsmagick/GraphicsMagick-1.3.20.tar.xz + + tiff-devel + webp-devel + lcms2-devel + libSM-devel + libwmf-devel + libICE-devel + jasper-devel + jbigkit-devel + libXext-devel + libjpeg-turbo-devel + ghostscript-devel + + + GraphicsMagick-1.3.14-perl_linkage.patch + GraphicsMagick-1.3.16-multilib.patch + + multimedia/graphics/GraphicsMagick/pspec.xml + + + GraphicsMagick + app:console + + tiff + webp + lcms2 + libwmf + jasper + libXext + jbigkit + libgomp + ghostscript + libjpeg-turbo + + + /etc + /usr/bin/gm + /usr/lib/GraphicsMagick-* + /usr/lib/lib* + /usr/share/GraphicsMagick-* + /usr/share/doc + /usr/share/man + + + + GraphicsMagick-devel + Development files for GraphicsMagick + + GraphicsMagick + + + /usr/bin/*-config + /usr/include + /usr/lib/pkgconfig + /usr/share/doc/GraphicsMagick/www + /usr/share/man/man1/*-config.* + + + + PerlMagick + GraphicsMagick perl bindings + + GraphicsMagick + + + /usr/lib/perl5 + /usr/share/doc/PerlMagick + + + + + 2014-09-13 + 1.3.20 + Version bump + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-06-19 + 1.3.19 + Rebuild for gcc + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-04-23 + 1.3.19 + Rebuild + Varol Maksutoğlu + waroi@pisilinux.org + + + 2014-02-07 + 1.3.19 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2014-01-04 + 1.3.19 + Version bump + Osman Erkan + osman.erkan@pisilinux.org + + + 2013-07-29 + 1.3.17 + Dep fixed + Fatih Turgel + hitaf@pisilinux.org + + + 2012-11-22 + 1.3.17 + First release + Marcin Bojara + marcin@pisilinux.org + + + tiff @@ -730,6 +3258,275 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + aalib + http://aa-project.sourceforge.net/aalib/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + multimedia.graphics + An ASCII-graphics Library + Bir ASCII-grafik Kitaplığı + Aalib est une librairie de graphiques ASCII générant des sorties en caractères ASCII. + Aalib is an ASCII-graphics library generating ASCII character outputs. + AAlib, bir ASCII sanatı grafik kütüphanesidir. Görsel bir ekran gibi çalışır, ancak oluşturulan çıktı platform bağımsız olarak ASCII karakterler ile gösterilir. + Aalib es una librería gráfica ASCII que genera salidas con caracteres ASCII. + mirrors://sourceforge/aa-project/aalib-1.4rc5.tar.gz + + gpm + + + m4.patch + + multimedia/graphics/aalib/pspec.xml + + + aalib + + gpm + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/info + /usr/share/man + + + + aalib-devel + Development files for aalib + aalib için geliştirme dosyaları + + aalib + + + /usr/share/aclocal + /usr/include + /usr/share/man/man3 + + + + + 2014-05-20 + 1.4_rc5 + Rebuild, cleanup, fix gpm linking. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-16 + 1.4_rc5 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2010-12-20 + 1.4_rc5 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libogg + http://www.vorbis.com + + PisiLinux Community + admins@pisilinux.org + + as-is + library + multimedia.sound + La librairie pour fichiers au format média Ogg. + The Ogg media file format library + Ogg dosya biçimi kütüphanesi + libogg is a library for manipulating Ogg bitstream file formats. libogg supports both making Ogg bitstreams and getting packets from Ogg bitstreams. + libogg Ogg biçimli dosyalara erişmek için kullanılan bir kütüphanedir. Hem Ogg biçimli dosya oluşturmak için hem de Ogg dosyalarından paket ayıklamak için kullanılabilir. + http://downloads.xiph.org/releases/ogg/libogg-1.3.1.tar.xz + multimedia/sound/libogg/pspec.xml + + + libogg + + /usr/lib + /usr/share/doc + + + + libogg-devel + + libogg + + + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/include + /usr/share/aclocal + /usr/share/doc/libogg/*html + /usr/share/doc/libogg/*png + /usr/share/doc/libogg/ogg + + + + libogg-32bit + 32-bit shared libraries for libogg + libogg için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + glibc-32bit + libogg + + + /usr/lib32 + + + + + 2014-05-20 + 1.3.1 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-16 + 1.3.1 + Version bump + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2012-08-31 + 1.3.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + flac + http://flac.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + LGPLv2.1 + app:console + multimedia.sound + An encoder/decoder for the Free Lossless Audio Codec + Özgür Kayıpsız Ses Kodlaması için kodlayıcı/çözücü araçları + flac is the Free Lossless Audio Codec. The FLAC format supports streaming, seeking, and archival, and gives 25-75% compression on typical CD audio. This package contains tools and libraries to work with and support for files in FLAC format. + flac bir Özgür Kayıpsız Ses Kodlaması'dır. (Free Lossless Audio Codec) FLAC biçemi akan görüntü, arama ve arşivleme ve tipik bir Ses CD'sinde %25-75 sıkıştırmayı destekler. + http://downloads.xiph.org/releases/flac/flac-1.3.1.tar.xz + + libogg-devel + + multimedia/sound/flac/pspec.xml + + + flac + + libogg + libgcc + + + /usr/bin + /usr/lib + /usr/share/man + + + + flac-docs + Documentation for flac + flac ile ilgili belgeler + + flac + + + /usr/share/doc + + + + flac-devel + Development files for flac + flac için geliştirme dosyaları + + libogg-devel + flac + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/aclocal + + + + flac-32bit + 32-bit shared libraries for flac + flac için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + libogg-32bit + glibc-32bit + + + libogg-32bit + libgcc + glibc-32bit + flac + + + /usr/lib32 + + + + + 2014-12-03 + 1.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-05-21 + 1.3.0 + Rebuild + Kamil Atlı + suvarice@gmail.com + + + 2013-11-16 + 1.3.0 + Version bump + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2011-03-01 + 1.2.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + openal @@ -750,6 +3547,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression alsa-lib-devel pulseaudio-libs-devel + cmake pthread.patch @@ -789,7 +3587,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression openal için 32-bit paylaşımlı kitaplıklar emul32 emul32 + + glibc-32bit + + glibc-32bit openal @@ -846,8 +3648,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression doxygen xcb-proto gtk2-devel - lirc-devel - gconf-devel avahi-devel speex-devel libSM-devel @@ -856,12 +3656,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXtst-devel xcb-util-devel alsa-lib-devel - bluez-libs-devel libsndfile-devel libasyncns-devel libatomic_ops-devel - libsamplerate-devel - libasyncns-devel + eudev-devel + dbus-devel + intltool + libcap-devel + json-c-devel multimedia/sound/pulseaudio/pspec.xml @@ -870,9 +3672,15 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Libraries for PulseAudio clients PulseAudio istemci kitaplığı + dbus + glib2 + json-c + libX11 + libxcb + eudev + libtool-ltdl orc sbc - lirc fftw3 libSM speex @@ -882,6 +3690,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression avahi-libs libasyncns libsndfile + bluez /usr/bin/pa* @@ -924,6 +3733,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression pulseaudio + dbus + libX11 + libcap + libtool-ltdl orc speex libtdb @@ -971,19 +3784,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression mandriva/pulseaudio128.png - - pulseaudio-gconf - GConf configuration backend for the PulseAudio sound server - pulseaudio ses sunucusu için Gconf yapılandırma arayüzü - - pulseaudio-libs - gconf - - - /usr/lib/pulse-2.1/modules/module-gconf.so - /usr/libexec/pulse/gconf-helper - - pulseaudio-libs-32bit 32-bit shared libraries for pulseaudio-libs @@ -998,6 +3798,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libcap-32bit libsndfile-32bit libtool-ltdl-32bit + glibc-32bit pulseaudio-libs @@ -1005,6 +3806,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression glib2-32bit libsndfile-32bit json-c-32bit + glibc-32bit /usr/lib32 @@ -1069,6 +3871,573 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libmad + http://mad.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + multimedia.sound + Librairie de "D"écompression "A"udio "M"peg ("M"peg "A"udio "D"ecoder") + "M"peg "A"udio "D"ecoder library + Yüksek kaliteli MPEG ses çözücü kütüphanesi + libmad is an audio decoder library for MPEG based content. + libmad MPEG tabanlı ses çözüm kitaplığıdır. + mirrors://sourceforge/mad/libmad-0.15.1b.tar.gz + + amd64-64bit.diff + libmad-0.15.1b-cflags-O2.patch + libmad-0.15.1b-cflags.patch + + multimedia/sound/libmad/pspec.xml + + + libmad + + /usr/lib + /usr/share/doc + + + + libmad-devel + Development files for libmad + libmad için geliştirme dosyaları + + libmad + + + /usr/include + /usr/lib/pkgconfig + + + mad.pc + + + + + 2014-05-20 + 0.15.1b + Rebuild, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-28 + 0.15.1b + Rebuild + Kamil Atlı + suvarice@gmail.com + + + 2010-10-12 + 0.15.1b + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libao + http://www.xiph.org/ao/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + multimedia.sound + La librairie de rendu (sortie) audio. + The audio output library + Ses çıktısı kütüphanesi + Libao is a cross platform audio output library. It currently supports ESD, OSS, Solaris, and IRIX. + http://downloads.xiph.org/releases/ao/libao-1.2.0.tar.gz + + alsa-lib-devel + pulseaudio-libs-devel + + multimedia/sound/libao/pspec.xml + + + libao + + alsa-lib + pulseaudio-libs + + + /usr/lib + /usr/share/doc + /usr/share/man + + + + libao-devel + Development files for libao + libao için geliştirme dosyaları + + libao + + + /usr/include/ao + /usr/lib/pkgconfig + /usr/share/aclocal + /usr/share/doc/libao/html + + + + + 2014-05-26 + 1.2.0 + version bump + Kamil Atlı + suvarice@gmail.com + + + 2014-02-25 + 1.1.0 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-10-14 + 1.1.0 + Rebuild + PisiLinux Community + admins@pisilinux.org + + + 2012-08-31 + 1.1.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libvorbis + http://www.vorbis.com + + PisiLinux Community + admins@pisilinux.org + + BSD + library + multimedia.sound + Librairie de formatage de fichier son Ogg Vorbis libre. + The Vorbis general audio compression codec + Vorbis genel ses sıkıştırma kodlaması + libvorbis is a fully open, non-proprietary, patent- and royalty-free, general-purpose compressed audio format for audio and music at fixed variable bitrates from 16 to 128 kbps/channel. + libvorbis tamamen açık, sahipsiz, genel amaçlı sıkıştırılmış ses biçimidir. + http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.xz + + libogg-devel + + multimedia/sound/libvorbis/pspec.xml + + + libvorbis + + libogg + + + /usr/lib + /usr/share/doc/libvorbis/AUTHORS + /usr/share/doc/libvorbis/README + + + + libvorbis-devel + + libvorbis + libogg-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/aclocal + /usr/share/doc/libvorbis + + + + libvorbis-32bit + 32-bit shared libraries for libvorbis + libvorbis için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + libogg-32bit + + + libvorbis + glibc-32bit + libogg-32bit + + + /usr/lib32 + + + + + 2014-05-20 + 1.3.4 + Rebuild, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-01 + 1.3.4 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-31 + 1.3.3 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libsndfile + http://www.mega-nerd.com/libsndfile/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + app:console + multimedia.sound + A C library for reading and writing files containing sampled sound + Örneklenmiş ses verileri içeren dosyalar yazmak ve okumak için C dili kütüphanesi. + Libsndfile est une librairie C pour lire et écrire des fichiers contenant des échantillons sonores (tels que les fichiers aux formats MS Windows WAV et Apple/SGI AIFF) à travers une seule interface de librairie standard. + Libsndfile is a C library for reading and writing files containing sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format) through one standard library interface. + Libsndfile, standart bir kütüphane arayüzü vasıtası ile (MS Windows WAV ve Apple/SGI AIFF biçimi gibi)örneklenmiş ses içeren dosyalar yazmak ve okumak için bir C dili kütüphanesidir. + Libsndfile es una librería C de lectura y escritura para archivos de sonido (como MS Windows WAV y el formato Apple/SGI AIFF) con una interfaz estándar de libería. + http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25.tar.gz + + flac-devel + libogg-devel + alsa-lib-devel + libvorbis-devel + + + libsndfile-1.0.18-less_strict_tests.patch + libsndfile-1.0.17-regtests-need-sqlite.patch + m4dir.patch + + multimedia/sound/libsndfile/pspec.xml + + + libsndfile + + flac + libogg + alsa-lib + libvorbis + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/octave + + + + libsndfile-devel + Development files for libsndfile + libsndfile için geliştirme dosyaları + + libsndfile + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + libsndfile-32bit + 32-bit shared libraries for libsndfile + libsndfile için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + flac-32bit + alsa-lib-32bit + libogg-32bit + libvorbis-32bit + + + glibc-32bit + flac-32bit + alsa-lib-32bit + libogg-32bit + libvorbis-32bit + libsndfile + + + /usr/lib32 + + + + + 2014-05-25 + 1.0.25 + Rebuild + Alihan Öztürk + alihan@pisilinux.org + + + 2014-02-01 + 1.0.25 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2011-07-17 + 1.0.25 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + vorbis-tools + http://www.vorbis.com/ + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + multimedia.sound + Tools for using the Ogg Vorbis sound file format + Ogg Vorbis ses dosyaları için araçlar paketi. + This set of tools allow you to play and encode Ogg Vorbis files. + vorbis-tools Ogg Vorbis dosyaları oluşturabilmenize ve oynatabilmenize olanak tanır. + http://downloads.xiph.org/releases/vorbis/vorbis-tools-1.4.0.tar.gz + + libvorbis-devel + libao-devel + flac-devel + speex-devel + libogg-devel + libkate-devel + + multimedia/sound/vorbis-tools/pspec.xml + + + vorbis-tools + + libvorbis + libao + flac + speex + libogg + libkate + + + /usr/bin + /usr/share/doc + /usr/share/locale + /usr/share/man + + + + + 2014-01-28 + 1.4.0 + Rebuild + Alihan Öztürk + alihan@pisilinux.org + + + 2010-10-12 + 1.4.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + speex + http://www.speex.org/ + + PisiLinux Community + admins@pisilinux.org + + xiph + app:console + multimedia.sound + Audio compression format designed for speech and its converter application + Konuşma için tasarlanmış bir ses sıkıştırma biçimi kütüphanesi ve araçları + speex is an Open Source/Free Software patent-free audio compression format designed for speech. The Speex Project aims to lower the barrier of entry for voice applications by providing a free alternative to expensive proprietary speech codecs. The package also contains a command-line tool to convert to/from Speex codec. + speex, konuşma için tasarlanmış özgür ve açık kaynaklı bir ses sıkıştırma biçimidir. Paket kütüphanenin yanında speex biçimine/biçiminden dönüştürme yapmak için gerekli araçları içerir. + http://downloads.us.xiph.org/releases/speex/speex-1.2rc1.tar.gz + + libogg-devel + + + constant.patch + configure.patch + + multimedia/sound/speex/pspec.xml + + + speex + + libogg + + + /usr/bin + /usr/share/man + /usr/lib + /usr/share/doc + + + + speex-devel + Development files for speex + speex için geliştirme dosyaları + + speex + + + /usr/include + /usr/share/aclocal + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + speex-32bit + 32-bit shared libraries for speex + speex için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + speex + glibc-32bit + + + /usr/lib32 + + + + + 2014-05-20 + 1.2_rc1 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2011-03-01 + 1.2_rc1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libsamplerate + http://www.mega-nerd.com/SRC/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + multimedia.sound + Secret Rabbit Code (alias libsamplerate) est un convertisseur audio de taux de Sample (Sample Rate Converter). + Secret Rabbit Code (aka libsamplerate) is a Sample Rate Converter for audio + libsamplerate ses dosyaları için basit bir örnekleme oranı dönüştürücü + Secret Rabbit Code is a sample rate converter for audio. It is capable of arbitrary and time varying conversions. It can downsample by a factor of 12 and upsample by the same factor. The ratio of input and output sample rates can be a real number. The conversion ratio can also vary with time for speeding up and slowing down effects. + libsamplerate (Seceret Rabbit Code) ses dosyaları için basit bir örnekleme oranı dönüştürücüsüdür. Zaman ya da tercih edilen başka bir yapıya bağlı olarak 12 kata kadar dönüşüm yapabilir. Örnekleme oranı değiştirebildiği gibi hızlandırma ve yavaşlatma filtreleri de uygulayabilir. + http://www.mega-nerd.com/SRC/libsamplerate-0.1.8.tar.gz + + libsndfile-devel + + + dontbuild-tests-examples.patch + + multimedia/sound/libsamplerate/pspec.xml + + + libsamplerate + + libsndfile + + + /usr/bin + /usr/lib + /usr/share/doc + + + + libsamplerate-devel + Development files for libsamplerate + libsamplerate için geliştirme dosyaları + libsamplerate için geliştirme dosyaları + + libsamplerate + + + /usr/include + /usr/lib/pkgconfig + + + + + 2014-05-25 + 0.1.8 + Rebuild + Alihan Öztürk + alihan@pisilinux.org + + + 2014-02-01 + 0.1.8 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2011-10-17 + 0.1.8 + First release + Pisi Linux Admins + admins@pisilinux.org + + + gstreamer-next @@ -1206,6 +4575,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression GStreamer is a streaming media framework, based on graphs of filters which operate on media data. Applications using this library can do anything from real-time sound processing to playing videos, and just about anything else media-related. gstreamer bir ses yayın altyapısı kütüphanesidir. Bu kütüphaneyi kullanan uygulamalar, gerçek zamanlı ses işleme, görüntü oynatma gibi çokluortam ile ilgili birçok işlem gerçekleştirebilirler. http://ftp.gnome.org/pub/gnome/sources/gstreamer/0.10/gstreamer-0.10.36.tar.xz + + glib2-devel + gobject-introspection-devel + libxml2-devel + wrapper-plugins.patch bison3.patch @@ -1214,6 +4588,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression gstreamer + + glib2 + libxml2 + /usr/bin /usr/lib @@ -1229,7 +4607,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Development files for gstreamer gstreamer için geliştirme dosyaları - gstreamer + gstreamer /usr/include @@ -1246,11 +4624,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 glib2-32bit + glibc-32bit libxml2-32bit - gstreamer + gstreamer glib2-32bit + glibc-32bit libxml2-32bit @@ -1258,6 +4638,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + 2015-06-26 + 0.10.36 + Rebuild, fixed. + Hakan Yıldız + hknyldz93@gmail.com + 2014-05-19 0.10.36 @@ -1654,6 +5041,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Bu paket, Gstreamer'ın rahatlıkla genişleyebilmesini sağlayan ve bakımları sürekli yapılan temel eklentileri içerir. Program parçacığı yazmak için yardımcı kütüphaneler ve temel sınıflar da bulunur. http://ftp.gnome.org/pub/gnome/sources/gst-plugins-base/0.10/gst-plugins-base-0.10.36.tar.xz + zlib-devel + glib2-devel + libX11-devel + libxml2-devel gstreamer-devel libcdio-devel cdparanoia-devel @@ -1824,6 +5215,315 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + liblqr + http://liblqr.wikidot.com + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + LGPLv3 + library + multimedia.misc + An easy to use C/C++ seam carving library + Görüntü boyutlandırma kütüphanesi + liblqr is a free, open source implementation of a seam carving algorithm which aims at resizing pictures non uniformly while preserving their features. + liblqr, yeniden boyutlandırılacak resimlerin özelliklerini koruyan liquid rescale algoritmasının bir gerçeklemesidir. + http://liblqr.wdfiles.com/local--files/en:download-page/liblqr-1-0.4.2.tar.bz2 + multimedia/misc/liblqr/pspec.xml + + + liblqr + + /usr/lib + /usr/share/doc + + + + liblqr-devel + Development files for liblqr + liblqr için geliştirme dosyaları + + liblqr + + + /usr/include + /usr/lib/pkgconfig + + + + + 2014-05-24 + 0.4.2 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-01-31 + 0.4.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2010-10-12 + 0.4.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libexif + http://libexif.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + multimedia.misc + Librairie pour analyser, éditer et sauvegarder des données EXIF. + Library for parsing, editing, and saving EXIF data + EXIF verilerini işlemek, değiştirmek ve kaydetmek için bir kütüphane + Most digital cameras produce EXIF files, which are JPEG files with extra tags that contain information about the image. The EXIF library allows you to parse an EXIF file and read the data from those tags. + mirrors://sourceforge/libexif/libexif-0.6.21.tar.bz2 + + doxygen + + + libexif-0.6.13-pkgconfig.patch + + multimedia/misc/libexif/pspec.xml + + + libexif + + /usr/lib + /usr/share/doc + /usr/share/locale + + + + libexif-devel + Development files for libexif + libexif için geliştirme dosyaları + + libexif + + + /usr/include + /usr/lib/pkgconfig + /usr/share/doc/libexif/libexif-api.html + + + + + 2014-05-24 + 0.6.21 + Rebuild + Alihan Öztürk + alihan@pisilinux.org + + + 2014-01-30 + 0.6.21 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-29 + 0.6.21 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libkate + http://code.google.com/p/libkate + + PisiLinux Community + admins@pisilinux.org + + BSD + library + app:console + multimedia.misc + A text codec for embedding in Ogg + Ogg için karaoke ve metin kitaplığı + Kate is a codec for karaoke and text encapsulation for Ogg. + Kate, karaoke ve metinleri ogg dosyalara gömmek için kullanılan kitaplık ve konsol uygulamaları içerir. + http://libkate.googlecode.com/files/libkate-0.4.1.tar.gz + + libogg-devel + libpng-devel + doxygen + + multimedia/misc/libkate/pspec.xml + + + libkate + + libogg + libpng + + + /usr/bin + /usr/lib + /usr/share/man + /usr/share/doc + + + + libkate-devel + Development files for libkate + libkate için geliştirme dosyaları + + libkate + libogg-devel + + + /usr/include + /usr/lib/pkgconfig + + + + libkate-docs + API documentation for libkate + libkate paketine ait API belgeleri + + libkate + + + /usr/share/doc/libkate/html + /usr/share/doc/libkate/examples + + + + + 2014-05-24 + 0.4.1 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-09 + 0.4.1 + Rebuild. + Kamil Atlı + suvarice@gmail.com + + + 2013-07-31 + 0.4.1 + missing dep. + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2012-08-29 + 0.4.1 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + orc + http://code.entropywave.com/projects/orc/ + + PisiLinux Community + admins@pisilinux.org + + BSD + BSD-2 + app:console + multimedia.misc + The Oil Runtime Compiler + Optimized Inner Loop Runtime Compiler + http://gstreamer.freedesktop.org/src/orc/orc-0.4.19.tar.gz + multimedia/misc/orc/pspec.xml + + + orc + + /usr/bin/ + /usr/lib/ + /usr/share/ + + + + orc-32bit + 32-bit shared libraries for orc + emul32 + emul32 + + glibc-32bit + + + glibc-32bit + orc + + + /usr/lib32 + + + + orc-devel + orc için geliştirme dosyaları + orc için geliştirme dosyaları + + orc + + + /usr/include/ + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + 2014-05-20 + 0.4.19 + Version bump, fix version. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-24 + 4.18 + Version bump + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-02-14 + 4.16 + Add emul32 + Marcin Bojara + marcin@pisilinux.org + + + 2012-08-29 + 4.16 + First release + PisiLinux Community + admins@pisilinux.org + + + DirectFB @@ -1841,15 +5541,25 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression DirectFB donanımsal grafik hızlandırması, giriş aygıtları işleme ve soyutlama sağlayan yarısaydam pencereler ve çoklu görüntü katmanlarını destekleyen pencere sistemi ile bütünleşik bir kütüphanedir. http://www.directfb.org/downloads/Core/DirectFB-1.7/DirectFB-1.7.1.tar.gz + libgcc giflib-devel libX11-devel + zlib-devel + tiff-devel + jasper-devel + freetype-devel + libpng-devel libXext-devel mesa-devel + webp-devel mesa-glu-devel libdrm-devel libjpeg-turbo-devel libmng-devel + lcms2-devel libvdpau-devel + libmad-devel + libvorbis-devel multimedia/misc/DirectFB/pspec.xml @@ -1865,14 +5575,15 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression DirectFB - giflib + zlib + libgcc + libpng + freetype libX11 libXext mesa - mesa-glu libdrm libjpeg-turbo - libmng libvdpau webp tiff @@ -1936,6 +5647,97 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + openexr + http://www.openexr.com + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + library + multimedia.misc + A high dynamic-range (HDR) image file format library + OpenEXR est un formation de fichier d'image à haut rang dynamique (HDR - High Dynamic Range) utilisable pour les applications d'imagerie sur ordinateur. OpenEXR inclus notamment : Un rang dynamique plus grand que les formats d'image existants de 8 et 10 bit; le support pour pixel de 16 bit à virgule flottante, 32 bit à virgule flottante et d'entiers à 32 bit; de nombreux algorithmes de compression d'image sans perte, le fait d'être extensible. + OpenEXR is a high dynamic-range (HDR) image file format for use in computer imaging applications. OpenEXR's features include: Higher dynamic range and color precision than existing 8- and 10-bit image file formats; support for 16-bit floating-point, 32-bit floating-point, and 32-bit integer pixels; multiple lossless image compression algorithms; extensibility. + OpenEXR, bilgisayar görüntüleme uygulamalarında kullanılan yüksek dinamik görüntü erimidir. OpenEXR özellikleri şunları içerir: Mevcut 8 ve 10 bitlik görüntü dosya formatlarından daha yüksek dinamik görüntü erişimi, 16 ya da 32 bit piksel desteği ve kayıpsız görüntü sıkıştırma algoritması + OpenEXR es un formato de archivo de imagen de alto fango dinámico (HDR) para uso en aplicaciones de computación de imágenes. OpenEXR contiene facilidades: rango dinámico y precisión de colores más alto que formatos existentes de 8- y 10-bit; soporta para punto flotante 16-bit, punto flotante 32-bit, y entero 32-bit pixels; algoritmos de compresión múltiple sin pérdida; extensible. + http://download.savannah.nongnu.org/releases/openexr/openexr-2.1.0.tar.gz + + ilmbase-devel + + multimedia/misc/openexr/pspec.xml + + + openexr + + ilmbase + openexr-libs + + + /usr/bin + + + + openexr-libs + OpenEXR runtime libraries + OpenEXR çalışma zamanı kitaplıkları + + ilmbase + + + /usr/lib/lib* + /usr/share/doc + + + + openexr-docs + OpenEXR example files + OpenEXR örnek dosyalar + + /usr/share/doc/openexr/examples + + + + openexr-devel + Development files for openexr + OpenEXR için geliştirme dosyaları + + openexr + ilmbase-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/share/aclocal + + + + + 2014-05-25 + 2.1.0 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-16 + 2.1.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2010-10-12 + 1.7.0 + First release + Pisi Linux Admins + admins@pisilinux.org + + + perf @@ -3808,6 +7610,1216 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + wpa_supplicant + http://hostap.epitest.fi/wpa_supplicant/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + BSD + service + unknown + IEEE 802.1X/WPA supplicant for secure wireless transfers + Güvenli kablosuz erişim için IEEE 802.1X/WPA sağlayıcı + wpa_supplicant is a WPA supplicant with support for WPA and WPA2. + WPA ve WPA2 desteği olan ve Linux, BSD ve Windows ortamları için bir WPA istemcisidir. + http://hostap.epitest.fi/releases/wpa_supplicant-2.1.tar.gz + + wpa_supplicant.config + + + libnl-devel + + + ubuntu/01_use_pkg-config_for_pcsc-lite_module.patch + wpa_supplicant-1.0-dbus-path-fix.patch + wpa_supplicant-1.0-do-not-call-dbus-functions-with-NULL-path.patch + mandriva/wpa_supplicant-0.6.3-WEP232.patch + fedora/wpa_supplicant-openssl-more-algs.patch + fedora/wpa_supplicant-flush-debug-output.patch + fedora/wpa_supplicant-assoc-timeout.patch + suse/wpa_supplicant-errormsg.patch + + network/connection/wpa_supplicant/pspec.xml + + + wpa_supplicant + + libnl + + + /etc + /etc/dbus-1 + /usr/sbin + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/dbus-1/system-services + /run + + + System.Service + + + wpa_supplicant.conf + wpa_supplicant.confd + wpa_supplicant.logrotate + wpa_supplicant.py + + + + + 2014-06-02 + 2.1 + Version Bump. + Aydın Demirel + aydin.demirel@pisilinux.org + + + 2013-03-02 + 2.0 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-10-14 + 1.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + ModemManager + http://projects.gnome.org/NetworkManager + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + app:console + service + unknown + A manager framework for mobile broadband modems + Mobil modemler için yönetim katmanı + ModemManager provides a unified high level API for communicating with mobile broadband modems. + ModemManager, 3G ve GSM gibi mobil genişbant modemlerle D-Bus üzerinden iletişimi sağlayan bir sistem hizmetidir. + http://www.freedesktop.org/software/ModemManager/ModemManager-1.2.0.tar.xz + + ppp-devel + libqmi-devel + libmbim-devel + + network/connection/ModemManager/pspec.xml + + + ModemManager + + ppp + libqmi + libmbim + libmm-glib + + + /usr/share/doc + /usr/sbin + /usr/share/icons + /usr/share/locale + /usr/share/dbus-1 + /usr/share/gir-1.0/ModemManager-1.0.gir + /lib/udev/rules.d/ + /etc/dbus-1/system.d/ + /usr/lib/ModemManager + /usr/lib/girepository-1.0/ModemManager-1.0.typelib + /usr/share/man/man8/ModemManager.8 + + + + ModemManager-devel + Development files for ModemManager + ModemManager için geliştirme dosyaları + + ModemManager + + + /usr/include/ModemManager/ + /usr/lib/pkgconfig/ModemManager.pc + + + + libmm-glib + D-Bus service for managing modems - shared libraries + + /usr/bin + /usr/share/vala/vapi/libmm-glib.vapi + /usr/share/vala/vapi/libmm-glib.deps + /usr/lib/libmm-glib.so* + /usr/share/man/man8/mmcli.8 + + + + libmm-glib-devel + Development files for libmm-glib + libmm-glib için geliştirme dosyaları + + ModemManager-devel + libmm-glib + + + /usr/include/libmm-glib/ + /usr/lib/pkgconfig/mm-glib.pc + + + + + 2014-02-17 + 1.2.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-20 + 1.0.0 + Version Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-08-28 + 5.3.96 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + NetworkManager + http://projects.gnome.org/NetworkManager + + Pisi Linux Admins + admins@pisilinux.org + + GPLv2+ + app:console + unknown + Network connection manager powered by D-Bus and UDEV + D-Bus üzerinden yapılandırmaya izin veren, gelişmiş bir ağ yönetim altyapısı + NetworkManager attempts to keep an active network connection available at all times. + NetworkManager, etkin bir bağlantı kurmak ve onu sürekli ayakta tutmak üzere tasarlanmış, D-Bus ve UDEV teknolojilerini kullanan bir ağ yönetim altyapısıdır. + https://download.gnome.org/sources/NetworkManager/1.0/NetworkManager-1.0.2.tar.xz + + tr.po + + + intltool + dhclient + ppp-devel + nss-devel + newt-devel + nspr-devel + libnl-devel + libsoup-devel + bluez-libs-devel + iptables-devel + wpa_supplicant + dbus-glib-devel + gobject-introspection + libndp-devel + libmm-glib-devel + dbus-devel + glib2-devel + polkit-devel + readline-devel + libuuid-devel + libgudev1-devel + ConsoleKit-devel + + + 0001-dns-Fix-falling-back-in-the-resolv.conf-methods.patch + disable_set_hostname.patch + + network/connection/NetworkManager/pspec.xml + + + NetworkManager + + dbus + nspr + glib2 + polkit + readline + dbus-glib + libuuid + libgudev1 + nss + newt + ppp + libnl + libsoup + bluez-libs + iproute2 + iptables + libmm-glib + ModemManager + avahi-autoipd + wpa_supplicant + libndp + ConsoleKit + mobile-broadband-provider-info + + + /etc + /usr/share + /etc/dbus-1 + /usr/lib + /usr/share/man + /usr/share/doc + /usr/bin + /lib/udev + /usr/sbin + /lib/udev/rules.d + /usr/libexec + /run/NetworkManager + /lib/systemd/system + /usr/share/locale + /var/lib/NetworkManager + /etc/NetworkManager/system-connections + /usr/lib/tmpfiles.d/NetworkManager.conf + /etc/polkit-1/localauthority/10-vendor.d + + + System.Service + + + NetworkManager.confd + tmpfiles.conf + NetworkManager.conf + migrate-comar-network-profiles + gentoo/01-org.freedesktop.NetworkManager.settings.modify.system.pkla + 01-org.freedesktop.ModemManager1.rules + 01-org.freedesktop.NetworkManager.settings.modify.system.rules + + + + NetworkManager-devel + Development files for NetworkManager + NetworkManager için geliştirme dosyaları + + dbus-glib-devel + NetworkManager + + + /usr/include + /usr/lib/pkgconfig/ + + + + + 2015-06-14 + 1.0.2 + fixed missing dep and added rules files + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + systemRestart + + + + 2015-05-14 + 1.0.2 + Version bump. + Vedat Demir + vedat@pisilinux.org + + systemRestart + + + + 2015-01-07 + 1.0 + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + systemRestart + + + + 2014-05-17 + 0.9.8.10 + Version bump. + Vedat Demir + vedat@pisilinux.org + + systemRestart + + + + 2014-01-10 + 0.9.8.8 + Version bump. Add tmpfiles.conf + Marcin Bojara + marcin@pisilinux.org + + systemRestart + + + + 2013-09-08 + 0.9.8.2 + /var/run => /run + Marcin Bojara + marcin@pisilinux.org + + systemRestart + + + + 2013-07-27 + 0.9.8.2 + Version bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-02-21 + 0.9.8.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-23 + 0.9.7.995 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-13 + 0.9.6.4 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + ppp + http://samba.org/ppp + + PisiLinux Community + admins@pisilinux.org + + BSD + GPLv2 + service + unknown + Point-to-point protocol - patched for PPPOE + Modem ile internet erişimi için PPP (point to point protocol) noktadan noktaya erişim protokolü + The Point-to-Point Protocol (PPP) provides a standard way to transmit datagrams over a serial link. + PPP protokolü veriyi seri bir bağlantı üzerinden transfer etmek için standart bir yol sağlar. + http://samba.org/ftp/ppp/ppp-2.4.6.tar.gz + http://www.netservers.net.uk/gpl/ppp-dhcpc.tgz + + libpcap-devel + + + gentoo/02_all_make-vars.patch + gentoo/04_all_mpls.patch + gentoo/06_all_killaddr-smarter.patch + gentoo/08_all_wait-children.patch + gentoo/10_all_defaultgateway.patch + gentoo/12_all_linkpidfile.patch + gentoo/16_all_auth-fail.patch + gentoo/18_all_defaultmetric.patch + gentoo/20_all_dev-ppp.patch + gentoo/24_all_passwordfd-read-early.patch + gentoo/26_all_pppd-usepeerwins.patch + gentoo/28_all_connect-errors.patch + gentoo/30_all_Makefile.patch + gentoo/32_all_pado-timeout.patch + gentoo/34_all_lcp-echo-adaptive.patch + ppp-2.3.6-sample.patch + ppp-2.4.3-fix64.patch + ppp-2.4.2-change_resolv_conf.patch + nostrip.patch + ppp-2.4.3-local.patch + ppp-2.4.3-ipv6-accept-remote.patch + ppp-2.4.5-ppp_resolv.patch + ppp-2.4.5-var_run_ppp.patch + ppp-2.4.6-eaptls-mppe-0.99.patch + + network/connection/ppp/pspec.xml + + + ppp + + libpcap + + + /etc + /usr/lib/tmpfiles.d/ppp.conf + /usr/lib + /usr/sbin + /usr/share/doc + /usr/share/man + /run/ppp + + + tmpfiles.conf + options-pptp + options-pppoe + chat-default + ip-up + ip-down + confd.ppp0 + ppp.pamd + ppp.logrotate + + + + ppp-devel + Development files for ppp + ppp için geliştirme dosyaları + + ppp + + + /usr/include + + + + + 2014-04-03 + 2.4.6 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-10 + 2.4.5 + Add tmpfiles.conf + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-12 + 2.4.5 + service.py no longer needed. + Marcin Bojara + marcin@pisilinux.org + + + 2013-05-23 + 2.4.5 + Add service.py + Marcin Bojara + marcin@pisilinux.org + + + 2010-10-13 + 2.4.5 + First release + Gökcen Eraslan + admins@pisilinux.org + + + + + + mobile-broadband-provider-info + http://live.gnome.org/NetworkManager/MobileBroadband/ServiceProviders + + PisiLinux Community + admins@pisilinux.org + + public-domain + data + unknown + Service provider specific settings of mobile broadband providers in different countries + Çeşitli ülkelerdeki mobil genişbant servis sağlayıcıları hakkında bilgileri içeren ayar veritabanı + The mobile-broadband-provider-info package contains listings of mobile broadband (3G) providers and associated network and plan information. + mobile-broadband-provider-info paketi, dünya üzerindeki mobil genişbant sağlayıcılarının ve ilgili tarifelerinin listesini tutan bir veritabanıdır. + ftp://ftp.gnome.org/pub/gnome/sources/mobile-broadband-provider-info/20120614/mobile-broadband-provider-info-20120614.tar.xz + network/connection/mobile-broadband-provider-info/pspec.xml + + + mobile-broadband-provider-info + + /usr/share + + + + + 2012-08-28 + 20120614 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + linux-atm + http://linux-atm.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + library + unknown + Tools to support ATM networking under Liunx + ATM ağ bağlantısı desteği için araçlar + linux-atm contains tools for Asynchronous Transfer Mode. Supports raw ATM connections (PVCs and SVCs), IP over ATM, LAN emulation, MPOA, Arequipa, and some others. + linux-atm ATM (Asynchronous Transfer Mode) bağlantısı için gerekli çeşitli araçlar ve kitaplıklarını içerir. + mirrors://sourceforge/project/linux-atm/linux-atm/2.5.2/linux-atm-2.5.2.tar.gz + + flex + + + man-pages.patch + + network/connection/linux-atm/pspec.xml + + + linux-atm + + flex + + + /lib/firmware + /usr/sbin + /usr/bin + /etc + /usr/lib + /usr/share/man + /usr/share/doc + + + + linux-atm-devel + Development files for linux-atm + linux-atm için geliştirme dosyaları + + linux-atm + + + /usr/include + + + + + 2015-04-13 + 2.5.2 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2010-10-13 + 2.5.1 + First release + Gökcen Eraslan + admins@pisilinux.org + + + + + + avahi + http://avahi.org/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2 + app:console + network.analyzer + Local network service discovery + Yerel ağ hizmeti bulma sistemi + avahi is a system which facilitates service discovery on a local network. This means that you can plug your laptop or computer into a network and instantly be able to view other people who you can chat with, find printers to print to or find files being shared. + avahi yerel ağ üzerindeki hizmetleri tespit etmeyi kolaylaştıran bir sistemdir. Bu sayede, bilgisayarınızı ağa dahil ettikten sonra anında mevcut bilgisayarları ve yazıcıları görebilir ve kullanabilirsiniz. + http://avahi.org/download/avahi-0.6.31.tar.gz + + gtk2-devel + gtk3-devel + libcap-devel + libdaemon-devel + gobject-introspection-devel + libepoxy-devel + at-spi2-core-devel + gdbm-devel + intltool + + + avahi-0.6.31-no-deprecations.patch + + network/analyzer/avahi/pspec.xml + + + avahi-glib + Libraries for easy use of avahi from glib applications + Glib uygulamalarında avahi kullanımını kolaylaştıran kitaplıklar + + glib2 + avahi + avahi-libs + + + /usr/lib/libavahi-glib.* + /usr/lib/libavahi-gobject.* + + + + avahi-glib-devel + Development files for avahi-glib + avahi-glib için geliştirme dosyaları + + avahi-glib + avahi-devel + + + /usr/include/avahi-glib + /usr/include/avahi-gobject + /usr/lib/pkgconfig/avahi-glib.pc + /usr/lib/pkgconfig/avahi-gobject.pc + + + + avahi-ui + Gtk user interface library for Avahi + avahi için geliştirme dosyaları + + gdbm + gtk2 + glib2 + avahi-libs + avahi-glib + atk + cairo + pango + gdk-pixbuf + fontconfig + + + /usr/lib/libavahi-ui.so* + + + + avahi-ui-devel + Development files for avahi-ui + avahi-ui için geliştirme dosyaları + + gtk2-devel + avahi-ui + avahi-devel + avahi-glib-devel + + + /usr/include/avahi-ui + /usr/lib/pkgconfig/avahi-ui.pc + + + + avahi-ui-gtk3 + Gtk3 user interface library for Avahi + avahi-gtk3, Gtk3 user interface library for Avahi + + gdbm + glib2 + gtk3 + avahi-libs + avahi-glib + atk + cairo + pango + gdk-pixbuf + + + /usr/lib/libavahi-ui-gtk3.so* + + + + avahi-ui-gtk3-devel + Development files for avahi-ui-gtk3 + avahi-ui-gtk3 için geliştirme dosyaları + + gtk2-devel + avahi-ui-gtk3 + avahi-devel + avahi-glib-devel + gtk3-devel + + + /usr/lib/pkgconfig/avahi-ui-gtk3.pc + + + + avahi-ui-tools + UI tools for mDNS browsing + Grafiksel mDNS tarama araçları + + gtk3 + glib2 + avahi + avahi-ui + avahi-glib + avahi-ui-gtk3 + avahi-libs + gtk3 + + + /usr/lib/python*/site-packages + /usr/bin/b* + /usr/bin/avahi-discover* + /usr/bin/avahi-bookmarks + /usr/share/man/man1/b* + /usr/share/man/man1/avahi-discover* + /usr/share/man/man1/avahi-bookmarks* + /usr/share/avahi/interfaces + /usr/share/applications/b* + /usr/share/applications/avahi-discover.desktop + + + + avahi-compat-howl + Libraries for howl compatibility + howl uyumluluk kitaplıkları + + avahi + avahi-libs + + + /usr/lib/libhowl.so* + + + + avahi-compat-howl-devel + Development files for avahi-compat-howl + avahi-compat-howl için geliştirme dosyaları + + avahi-compat-howl + + + /usr/include/avahi-compat-howl + /usr/lib/pkgconfig/avahi-compat-howl.pc + /usr/lib/pkgconfig/howl.pc + + + + avahi-compat-libdns_sd + Libraries for Apple Bonjour mDNSResponder compatibility + libdns_sd uyumluluk kitaplıkları + + avahi + avahi-libs + + + /usr/lib/libdns_sd.so* + + + + avahi-compat-libdns_sd-devel + Development files for avahi-compat-libdns_sd + avahi-compat-libdns_sd için geliştirme dosyaları + + avahi-compat-libdns_sd + + + /usr/include/avahi-compat-libdns_sd + /usr/include/dns_sd.h + /usr/lib/pkgconfig/avahi-compat-libdns_sd.pc + /usr/lib/pkgconfig/libdns_sd.pc + + + + avahi-libs + Libraries needed to run programs that use avahi + Avahi kullanan uygulamaları çalıştırmak için gerekli kitaplıklar + + dbus + + + /usr/lib/libavahi-common.so* + /usr/lib/libavahi-client.so* + + + + avahi + + dbus + expat + libcap + libdaemon + avahi-libs + + + /usr/sbin/avahi-daemon + /usr/lib/libavahi-core.so* + /etc/avahi/avahi-daemon.conf + /etc/avahi/hosts + /etc/avahi/services/ssh.service + /etc/dbus-1/system.d/avahi-dbus.conf + /usr/share/avahi + /usr/share/dbus-1/interfaces/*.xml + /usr/share/dbus-1/system-services + /usr/lib/avahi/service* + /lib/systemd/system + /usr/share/locale + /usr/share/doc + /usr/share/man/man5/* + /usr/share/man/man8/avahi-daemon.* + /run/avahi-daemon + /usr/lib/tmpfiles.d/avahi.conf + + + System.Service + System.Package + + + avahi.conf + + + + avahi-autoipd + Link-local IPv4 address automatic configuration daemon (IPv4LL) + Link-local IPv4 adresi otomatik yapılandırma hizmeti (IPv4LL) + + libdaemon + + + /etc/avahi/avahi-autoipd.action + /usr/sbin/avahi-autoipd + /usr/share/man/man8/avahi-autoipd.* + /var/lib/avahi-autoipd + + + + avahi-dnsconfd + Configure local unicast DNS settings based on information published in mDNS + Yerel unicast DNS ayarlarını mDNS üzerinden gelen bilgilere göre yapılandırma hizmeti + + libdaemon + avahi + avahi-libs + + + /etc/avahi/avahi-dnsconfd.action + /usr/sbin/avahi-dnsconfd + /usr/share/man/man8/avahi-dnsconfd.* + + + System.Service + + + + avahi-tools + Command line tools for mDNS browsing and publishing + mDNS taramak ve yayınlamak için komut satırı araçları + + gdbm + avahi + avahi-libs + + + /usr/bin + /usr/share/man/man1 + + + + avahi-devel + Development files for avahi + avahi için geliştirme dosyaları + + avahi-libs + + + /usr/lib/pkgconfig/avahi-core.pc + /usr/lib/pkgconfig/avahi-client.pc + /usr/lib/girepository-1.0 + /usr/share/gir-1.0 + /usr/include/avahi-client + /usr/include/avahi-common + /usr/include/avahi-core + + + + + 2014-05-20 + 0.6.31 + Rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-24 + 0.6.31 + rebuild for unused + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-08 + 0.6.31 + Add avahi.conf, fix build + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-17 + 0.6.31 + Fix deps + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-06-27 + 0.6.31 + Fix avahi-daemon.conf + Marcin Bojara + marcin@pisilinux.org + + + 2013-05-03 + 0.6.31 + Avahi-ui-gtk3 added + PisiLinux Community + admins@pisilinux.org + + + 2013-04-23 + 0.6.31 + Dep fixed + PisiLinux Community + admins@pisilinux.org + + + 2012-10-05 + 0.6.31 + First release + Erdem Artan + admins@pisilinux.org + + + + + + iptables + http://www.iptables.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + network.filter + Firewall, NAT and packet mangling tools + Güvenlik duvarı, ağ adres çevrimi ve paket çevrimi aracı + Contains iptables firewall, NAT and packet mangling tools. + Iptables kural tabanlı gelişmiş güvenlik duvarı uygulamasıdır. + ftp://ftp.netfilter.org/pub/iptables/iptables-1.4.21.tar.bz2 + + libnfnetlink-devel + + network/filter/iptables/pspec.xml + + + iptables + + libnfnetlink + + + /usr/bin + /sbin + /lib + /usr/lib + /usr/share/man + /etc + /var + /usr/share/xtables + + + System.Service + Network.Firewall + + + + iptables-devel + Development files for iptables + iptables için geliştirme dosyaları + + iptables + + + /usr/include + /usr/lib/*.a + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + 2013-11-23 + 1.4.21 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2013-03-04 + 1.4.17 + Version bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-10-21 + 1.4.16.3 + First release + PisiLinux Community + admins@pisilinux.org + + reverseDependencyUpdate + + + + + + + iproute2 + http://linux-net.osdl.org/index.php/Iproute2 + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + network.filter + Kernel routing and traffic control utilities + Çekirdek içinde yer alan ağ trafiği yönlendirme ve trafik kontrol araçları. + Iproute2 is a collection of utilites for controlling TCP/IP networking and traffic control in Linux. + Iproute2 TCP/IP ağları ve trafik kontrolü için araçlar içeren bir koolleksiyondur. + https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.0.0.tar.xz + + iptables-devel + linux-atm-devel + db-devel + + network/filter/iproute2/pspec.xml + + + iproute2 + + linux-atm + iptables + db + + + /etc + /sbin + /usr/sbin + /lib + /usr/lib + /usr/share/man + /usr/share/doc + /var/lib + + + + + 2015-04-13 + 4.0.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2013-11-23 + 3.12.0 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2012-09-01 + 3.5.1 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libasyncns + http://0pointer.de/lennart/projects/libasyncns + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + network.misc + A C library for asynchronous name service queries + Asenkron isim servisi sorguları için C kitaplığı + libasyncns is a C library for Linux/Unix for executing name service queries asynchronously. It is an asynchronous wrapper around getaddrinfo(), getnameinfo(), res_query() and res_search() from libc and libresolv. + libasyncns, Linux/Unix üzerinde isim servisi sorgularını asenkron olarak gerçekleştirme imkanı veren bir C kitaplığıdır. + http://0pointer.de/lennart/projects/libasyncns/libasyncns-0.8.tar.gz + network/misc/libasyncns/pspec.xml + + + libasyncns + + /usr/lib + /usr/share/doc + + + + libasyncns-devel + Development files for libasyncns + libasyncns için geliştirme dosyaları + + libasyncns + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + 2014-01-29 + 0.8 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2010-10-13 + 0.8 + First release + Gökcen Eraslan + admins@pisilinux.org + + + geoclue @@ -3892,6 +8904,302 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libndp + http://libndp.org/ + + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + GPLv2+ + library + network.misc + Library for Neighbor Discovery Protocol + Ağ tarama protokolü için kitaplık + Library for Neighbor Discovery Protocol + Ağ tarama protokolü için kitaplık + http://libndp.org/files/libndp-1.4.tar.gz + + glibc-devel + + network/misc/libndp/pspec.xml + + + libndp + libndp için geliştirme dosyaları + + /etc + /usr/share + /etc/dbus-1 + /usr/lib + /usr/share/man + /usr/share/doc + /usr/bin + + + + libndp-devel + Development files for NetworkManager + + libndp + + + /usr/include + /usr/lib/pkgconfig/ + + + + + 2015-01-07 + 1.4 + First release + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + + + + webkit-gtk2 + http://webkitgtk.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2 + LGPLv2.1 + BSD + library + network.misc + An opensource web browser engine for GTK+ applications + The GTK+ port of WebKit is intended to provide a browser component primarily for users of the portable GTK+ UI toolkit on platforms like Linux. + http://www.webkitgtk.org/releases/webkitgtk-2.4.8.tar.xz + + mesa-devel + gtk-doc + atk-devel + zlib-devel + glib2-devel + gtk2-devel + ruby-devel + webp-devel + cairo-devel + icu4c-devel + libXt-devel + pango-devel + enchant-devel + sqlite-devel + geoclue-devel + libsoup-devel + fontconfig-devel + libxslt-devel + harfbuzz-devel + libsecret-devel + gdk-pixbuf-devel + libXcomposite-devel + libjpeg-turbo-devel + gstreamer-next-devel + gobject-introspection-devel + gst-plugins-base-next-devel + which + icon-theme-hicolor + + + webkitgtk-2.4.8-gmutexlocker.patch + + network/misc/webkit-gtk2/pspec.xml + + + webkit-gtk2 + + atk + zlib + glib2 + gtk2 + mesa + webp + cairo + icu4c + libXt + libX11 + libgcc + libpng + libxml2 + pango + sqlite + enchant + libsoup + libxslt + harfbuzz + freetype + libsecret + fontconfig + gdk-pixbuf + libXdamage + libXrender + libXcomposite + libjpeg-turbo + gstreamer-next + gst-plugins-base-next + + + /usr/lib + /usr/share + /usr/share/doc + + + + webkit-gtk2-devel + Development files for GTK+ port of WebKit + library + data:doc + + libgcc + gtk2-devel + glib2-devel + webkit-gtk2 + libsoup-devel + + + /usr/bin + /usr/include + /usr/lib/pkgconfig + /usr/share/doc/webkit-gtk/Web* + /usr/share/doc/webkit-gtk2/html + /usr/share/doc/webkit-gtk/JavaScriptCore + + + + + 2015-04-07 + 2.4.8 + Version Bump + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2015-01-16 + 2.4.8 + Version Bump + Rebuild. + Osman Erkan + osman.erkan@pisilinux.org + + + 2014-05-24 + 2.4.1 + Rebuild. + Kamil Atlı + suvarice@gmail.com + + + 2014-04-21 + 2.4.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-14 + 1.10.2 + Rebuild for icu4c + PisiLinux Community + admins@pisilinux.org + + + 2013-07-29 + 1.10.2 + Dep Fixed + PisiLinux Community + admins@pisilinux.org + + + 2013-02-25 + 1.10.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-23 + 1.10.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + libnl + http://people.suug.ch/~tgr/libnl + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + network.misc + A library for applications dealing with netlink sockets + Netlink soketleri erişimi için bir kitaplığı + libnl is a convenience library to simplify the usage of the Linux kernel's netlink sockets interface for network manipulation. + libnl Linux çekirdeğinin netlink soket arayüzünü ağ ile ilgili çeşitli işlemleri kolaylaştırmak için kullanan bir kitaplığıdır. + http://www.infradead.org/~tgr/libnl/files/libnl-3.2.24.tar.gz + network/misc/libnl/pspec.xml + + + libnl + + /usr/lib + /usr/share/doc + /usr/share/man + /etc/libnl + /usr/sbin + + + + libnl-devel + Development files for libnl + libnl için geliştirme dosyaları + + libnl + + + /usr/include + /usr/lib/pkgconfig + + + + + 2014-04-03 + 3.2.24 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-13 + 3.2.23 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-11-19 + 3.2.23 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2012-10-14 + 3.2.13 + First release + PisiLinux Community + admins@pisilinux.org + + + ocaml @@ -4578,6 +9886,117 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + vala + http://live.gnome.org/Vala + + PisiLinux Community + admins@pisilinux.org + + LGPLv2+ + BSD + programming.language + A modern programming language for GNOME + GNOME için modern bir programlama dili + Kompilator języka opartego na bibliotece GObject + Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C. + Vala, ek bir çalışma zamanı bağımlılığı olmayan ve C kitaplıklarının olduğu gibi kullanılabilmesini sağlayan modern bir programlama dilidir. + Vala to nowy język programowania, którego celem jest udostępnienie cech nowoczesnych języków programowania programistom GNOME bez wymuszania dodatkowych wymagań co do środowiska uruchomieniowego i używania API innego niż w aplikacjach i bibliotekach napisanych w C. + mirrors://gnome/vala/0.28/vala-0.28.0.tar.xz + + glib2-devel + gobject-introspection-devel + libxslt + + programming/language/vala/pspec.xml + + + vala + app:console + library + + glib2 + + + /usr/lib/vala + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/vala-*/vapi + /usr/share/vim/vimfiles + + + vim/vala.syntax + vim/vala.ftdetect + + + + vala-docs + GNOME devhelp documentation for Vala + Vala için GNOME devhelp kitabı + Pliki dokumentacji dla kompilatora vala + data:doc + + /usr/share/devhelp + + + + vala-devel + Development files for vala + vala için geliştirme dosyaları + Pliki nagłówkowe dla kompilatora vala + + vala + + + /usr/include + /usr/lib/pkgconfig + /usr/share/pkgconfig + /usr/share/aclocal + /usr/share/vala/Makefile.vapigen + /usr/share/man/man3 + + + + + 2015-05-22 + 0.28.0 + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-05-25 + 0.24.0 + Version bump. + Kamil Atlı + suvarice@gmail.com + + + 2013-11-18 + 0.22.1 + Version bump. + Richard de Bruin + richdb@pisilinux.org + + + 2013-04-13 + 0.20.1 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-11-15 + 0.18.1 + First release + Marcin Bojara + marcin@pisilinux.org + + + libbsd @@ -4628,6 +10047,97 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libaio + http://lse.sourceforge.net/io/aio.html + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + programming.library + Librairie d'entrée/sortie asynchrone utilisant l'interface native du noyau. + Linux-native asynchronous I/O access library + Linux asenkron girdi/çıktı kütüphanesi + libaio has a richer API and capability set than the simple POSIX async I/O facility. + libaio, basit POSIX asenkron girdi/çıktı desteğinden daha iyi bir programlama arayüzü sunan bir kütüphanedir. + http://enterprise-storage-os.googlecode.com/files/libaio-0.3.109.tar.bz2 + + libaio-0.3.106-build.patch + libaio-0.3.107-ar-ranlib.patch + 92_unused_warnings.patch + libaio-0.3.109-testcase-8.patch + libaio-0.3.109-generic-arch.patch + libaio-0.3.109-unify-bits-endian.patch + libaio-0.3.109-x32.patch + + programming/library/libaio/pspec.xml + + + libaio + + /lib + /usr/lib + /usr/share/doc + + + + libaio-32bit + 32-bit shared libraries for libaio + emul32 + emul32 + + libaio + + + /usr/lib32 + + + + libaio-devel + Development files for libaio + libaio için geliştirme dosyaları + + libaio + + + /usr/include + /usr/share/man/man3 + + + + + 2014-05-19 + 0.3.109 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-06 + 0.3.109 + Add emul32 + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-16 + 0.3.109 + URL Fixed + PisiLinux Community + admins@pisilinux.org + + + 2012-11-14 + 0.3.109 + First release + PisiLinux Community + admins@pisilinux.org + + + unixODBC @@ -4643,10 +10153,16 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression ODBC Interface for Linux The unixODBC Project goals are to develop and promote unixODBC to be the definitive standard for ODBC on non MS Windows platforms. http://www.unixodbc.org/unixODBC-2.3.2.tar.gz + + libtool-ltdl + programming/misc/unixODBC/pspec.xml unixODBC + + libtool-ltdl + /etc /usr/bin @@ -4694,6 +10210,360 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libsoup + http://live.gnome.org/LibSoup + + PisiLinux Community + admins@pisilinux.org + + LGPLv2 + library + programming.misc + An HTTP library implementation in C + C için HTTP kitaplık gerçekleyicisi + libsoup is an HTTP client/server library for GNOME. + libsoup, GNOME için HTTP istemci / sunucu kitaplığıdır. + mirrors://gnome/libsoup/2.50/libsoup-2.50.0.tar.xz + + gtk-doc + tls-devel + gconf-devel + gnutls-devel + glib-networking + libgcrypt-devel + libgnome-keyring-devel + glib2-devel + libxml2-devel + sqlite-devel + + programming/misc/libsoup/pspec.xml + + + libsoup + + glib2 + libxml2 + sqlite + + + /usr/lib + /usr/share/doc + /usr/share/locale/ + /usr/lib/girepository-1.0/Soup-2.4.typelib + + + + libsoup-gnome + + libsoup + + + /usr/lib/lib*gnome* + /usr/lib/girepository-1.0/SoupGNOME-2.4.typelib + + + + libsoup-docs + libsoup reference documents + libsoup başvuru belgeleri + data:doc + + libsoup + + + /usr/share/gtk-doc + + + + libsoup-devel + Development files for libsoup + libsoup için geliştirme dosyaları + + glib2-devel + libxml2-devel + libsoup + + + /usr/include + /usr/share/gir-1.0 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + libsoup-32bit + 32-bit shared libraries for libsoup + libsoup için 32-bit paylaşımlı kitaplıklar + emul32 + _emul32 + + glib2-32bit + sqlite-32bit + libxml2-32bit + glibc-32bit + + + glib2-32bit + sqlite-32bit + libxml2-32bit + glibc-32bit + libsoup + + + /usr/lib32 + + + + + 2015-06-14 + 2.50.0 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-20 + 2.49.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-05-25 + 2.46.0 + Rebuil. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-30 + 2.46.0 + 32bit split packages. + PisiLinux Community + admins@pisilinux.org + + + 2014-03-30 + 2.46.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02.20 + 2.44.0 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-10.10 + 2.44.0 + Version Bump. + PisiLinux Community + admins@pisilinux.org + + + 2013-03-08 + 2.41.91 + bump + Erdinç Gültekin + erdincgultekin@gmail + + + 2013-01-29 + 2.40.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-14 + 2.40.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libdaemon + http://0pointer.de/lennart/projects/libdaemon + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + programming.misc + Library for writing UNIX daemons + UNIX hizmetleri yazmak için bir kitaplığı + libdaemon is a lightweight C library which eases the writing of UNIX daemons. + libdaemon, UNIX hizmetleri yazmayı kolaylaştıran hafif bir C kitaplığıdır. + http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.14.tar.gz + programming/misc/libdaemon/pspec.xml + + + libdaemon + + /usr/lib + /usr/share/doc + + + + libdaemon-devel + Development files for libdaemon + libdaemon için geliştirme dosyaları + + libdaemon + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/man/man3 + + + + libdaemon-32bit + 32-bit shared libraries for libdaemon + emul32 + emul32 + + glibc-32bit + + + glibc-32bit + libdaemon + + + /usr/lib32 + + + + + 2014-03-09 + 0.14 + Rebuild for buildhost + PisiLinux Community + admins@pisilinux.org + + + 2013-07-27 + 0.14 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-02-15 + 0.14 + add emul32 + Erdinç Gültekin + admins@pisilinux.org + + + 2010-10-12 + 0.14 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + libevent + http://monkey.org/~provos/libevent + + PisiLinux Community + admins@pisilinux.org + + BSD + library + programming.misc + Une librairie pour exécuter une fonction lorsqu'un événement spécifique a lieu sur un descripteur (descriptor) de fichier. + A library to execute a function when a specific event occurs on a file descriptor + Dosya tanımlayıcıları üzerindeki belirli değişiklerde belirli fonksiyonların çalıştırılmasını sağlayan bir kitaplığı + The libevent API provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached. libevent is meant to replace the asynchronous event loop found in event driven network servers. An application just needs to call event_dispatch() and can then add or remove events dynamically without having to change the event loop. + libevent dosya tanımlayıcısında tanımlı bir olay oluştuğunda ya da zamanaşımı olduğunda belirlenmiş fonksiyonların çalıştırılma mekanizmasını sağlar. Olay güdümlü(event-driven) ağ sunucularının bulundurduğu asenkron olay döngülerinin(event-loop) yerine alması anlamına gelir. Uygulamanın olay döngüsünü degiştirmek zorunda kalmadan dinamik olarak olay ekleme ve silme işlemlerini yapabilmek için yalnızca event_dispatch() fonksiyonunu çağırması yeterli olur. + https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz + + openssl-devel + zlib-devel + + + libevent-linkage_fix.diff + libevent-2.0.13-manpages-on.patch + libevent-2.0.21-stable-automake-fix.patch + + programming/misc/libevent/pspec.xml + + + libevent + + openssl + + + /usr/bin + /usr/lib + /usr/share/doc + + + + libevent-devel + Development files for libevent + libevent için geliştirme dosyaları + + libevent + + + /usr/include + /usr/lib/pkgconfig + /usr/share/man/man3 + + + + + 2014-05-31 + 2.0.21 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-02-25 + 2.0.21 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-07-27 + 2.0.21 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-03-27 + 2.0.21 + bump + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2012-10-14 + 2.0.20 + First release + PisiLinux Community + admins@pisilinux.org + + + icu4c @@ -4711,11 +10581,17 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression ICU is a mature, widely used set of C/C++ and Java libraries for Unicode support, software internationalization and globalization (i18n/g11n). This package contains the C/C++ libraries. ICU, Unicode desteği, yazılım uluslararasılaştırma ve yerelleştirme konusunda yaygın olarak kullanılan gelişmiş bir kitaplıktır. ICU, Unicode ve u10a desteği için C/C++ ve Java kitaplıklarını içerir. ICU es un conjunto maduro y muy utilizado de librerías C/C++ y Java para soporte Unicode, internacionalización y globalización de software (i18n/g11n). Este paque te contiene las librerías C/C++. - http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.tgz + http://download.icu-project.org/files/icu4c/55.1/icu4c-55_1-src.tgz + + libgcc + programming/misc/icu4c/pspec.xml icu4c + + libgcc + /usr/bin /usr/sbin @@ -4729,7 +10605,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Development files for icu4c icu4c için geliştirme dosyaları - icu4c + icu4c /usr/bin/icu-config @@ -4745,8 +10621,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression 32-bit shared libraries for icu4c emul32 _emul32 + + libgcc + glibc-32bit + - icu4c + icu4c + libgcc + glibc-32bit /usr/lib32/libicu* @@ -4754,6 +10636,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + 2015-07-03 + 55.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2015-01-22 54.1 @@ -4951,6 +10840,286 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libnotify + http://www.galago-project.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + programming.misc + Desktop notification library + Masaüstü bildirim kitaplığı + Envoie les notifications bureautiques à un daemon de notification. + libnotify sends desktop notifications to a notification daemon. + Libnotify, masaüstü uyarılarını uyarı birimine gönderir. + Envía notificaciones de escritorio al demonio de notificaciones + http://ftp.acc.umu.se/pub/GNOME/sources/libnotify/0.7/libnotify-0.7.6.tar.xz + + gtk3-devel + gdk-pixbuf-devel + gnome-common + libepoxy-devel + at-spi2-core-devel + gobject-introspection-devel + gtk-doc + + programming/misc/libnotify/pspec.xml + + + libnotify + + gdk-pixbuf + glib2 + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/gir-1.0/ + /usr/share/gtk-doc/html + + + + libnotify-devel + Development files for libnotify + libnotify için geliştirme dosyaları + + libnotify + gdk-pixbuf-devel + + + /usr/include + /usr/lib/pkgconfig + + + + + 2014-05-31 + 0.7.6 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2013-10-27 + 0.7.6 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-28 + 0.7.5 + Dep Fixed + PisiLinux Community + admins@pisilinux.org + + + 2012-11-23 + 0.7.5 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + libical + https://github.com/libical/libical + + PisiLinux Community + admins@pisilinux.org + + MPL-1.1 + LGPLv2 + library + programming.misc + An open source reference implementation of the icalendar data type and serialization format + icalendar veri tipi ve serileştirme biçiminin açık kaynak referans gerçeklemesi + libical is an Open Source implementation of the IETF's iCalendar Calendaring and Scheduling protocols. (RFC 2445, 2446, and 2447). It parses iCal components and provides a C API for manipulating the component properties, parameters, and subcomponents. + libical IETF'in iCalendar Takvim ve Planlama protokülün açık kaynak gerçeklemesidir. (RFC 2445, 2446, 2447) Kitaplık, iCal bileşenlerini ayrıştırır ve bileşen özelliklerini, parametrelerini ve alt bileşenlerini işlemek için bir C programlama arayüzü sunar. + https://github.com/libical/libical/releases/download/v1.0.1/libical-1.0.1.tar.gz + + cmake + + programming/misc/libical/pspec.xml + + + libical + + /usr/lib + /usr/share/libical/zoneinfo + + + + libical-devel + Development files for libical + libical için geliştirme dosyaları + + libical + + + /usr/include + /usr/lib/pkgconfig + + + + + 2015-07-08 + 1.0.1 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-06-01 + 1.0 + Rebuild. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-27 + 1.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 201-10-02 + 0.48 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + json-glib + http://live.gnome.org/JsonGlib + + PisiLinux Community + admins@pisilinux.org + + LGPLv2+ + library + programming.misc + Library for JavaScript Object Notation format + JavaScript Nesne Notasyon biçimi için bir kitaplık + json-glib is a library providing serialization and deserialization support for the JavaScript Object Notation (JSON) format. + json-glib JavaScript Nesne Notasyon (JSON) biçimi için serileştirme ve ters serileştirme sağlayan bir kitaplıktır. + mirrors://gnome/json-glib/1.0/json-glib-1.0.2.tar.xz + + gobject-introspection-devel + glib2-devel + + programming/misc/json-glib/pspec.xml + + + json-glib + + gobject-introspection + glib2 + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/locale + + + + json-glib-devel + Development files for json-glib + json-glib için geliştirme dosyaları + + json-glib + + + /usr/include + /usr/share/gir* + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + json-glib-32bit + 32-bit shared libraries for json-glib + json-glib için 32-bit paylaşımlı kitaplıklar + emul32 + _emul32 + + glibc-32bit + glib2-32bit + + + glibc-32bit + glib2-32bit + json-glib + + + /usr/lib32 + + + + + 2015-03-18 + 1.0.2 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-05-18 + 1.0.0 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-03-30 + 1.0.0 + 32bit split packages. + PisiLinux Community + admins@pisilinux.org + + + 2014-03-30 + 1.0.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-13 + 0.16.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-09 + 0.16.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-08-26 + 0.15.2 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + libtalloc @@ -5281,6 +11450,199 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + opensp + http://openjade.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + office.docbook + A SGML parsing and entity management toolkit + SGML ayrıştırma araç seti + OpenSP is a free, object-oriented toolkit for Standard Generalized Markup Language (SGML) parsing and entity management maintained by the OpenJade project. + OpenSP SGML sözdizimsel ayrıştırma ve içerik yönetimi için nesne-odaklı bir araç setidir ve OpenJade projesinin bir parçasıdır. + mirrors://sourceforge/openjade/OpenSP-1.5.2.tar.gz + + docbook-xml + libgcc + + + opensp-1.5-gcc34.patch + opensp-sigsegv.patch + + office/docbook/opensp/pspec.xml + + + opensp + + libgcc + + + /usr/bin + /usr/share/doc/opensp + /usr/share/man + /usr/lib + /usr/share/locale + /usr/share/sgml + + + + opensp-devel + Development files for opensp + opensp için geliştirme dosyaları + + opensp + + + /usr/include + + + + + 2014-05-18 + 1.5.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-01 + 1.5.2 + Rebuild + Alihan Öztürk + alihan@pisilinux.org + + + 2010-10-13 + 1.5.2 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + openjade + http://openjade.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + as-is + app:console + office.docbook + An implementation of DSSSL + Bir DSSSL uyarlaması + OpenJade is an implementation of Document Style Semantics and Specification Language (DSSSL), a style language to format Standard Generalized Markup Language (SGML) or Extensible Markup Language (XML) documents. + OpenJade SGML ya da XML belgelerinin biçimlendirilmesine yarayan bir biçem lisanı olan DSSSL'nin bir uyarlamasıdır. + http://downloads.sourceforge.net/openjade/openjade-1.3.2.tar.gz + + sgml-common + opensp-devel + libgcc + + + openjade-1.3.2-ldflags.patch + openjade-1.3.2-respect-ldflags.patch + openjade-1.3.2-msggen.pl.patch + + office/docbook/openjade/pspec.xml + + + openjade + + sgml-common + opensp + libgcc + + + /usr/bin + /usr/lib + /usr/share/doc/openjade + /usr/share/sgml + + + System.Package + + + openjade-1.3.2.dsssl-catalog + openjade-1.3.2.catalog + + + + + 2014-05-18 + 1.3.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-01 + 1.3.2 + Rebuild. + Alihan Öztürk + alihan@pisilinux.org + + + 2012-10-18 + 1.3.2 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + itstool + http://itstool.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + office.docbook + XML to PO and back again + XML to PO and back again + http://files.itstool.org/itstool/itstool-2.0.2.tar.bz2 + office/docbook/itstool/pspec.xml + + + itstool + + /usr + + + + + 2014-05-18 + 2.0.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-26 + 2.0.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-09-12 + 1.2.0 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + poppler-data @@ -5540,16 +11902,15 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Wspólna biblioteka renderująca PDF do integrowania oglądania PDF w aplikacjach desktopowych (oparta na kodzie xpdf-3.0). http://poppler.freedesktop.org/poppler-0.31.0.tar.xz - qt-devel lcms2-devel - libjpeg-turbo-devel - gtk2-devel + curl-devel cairo-devel + gobject-introspection-devel + libjpeg-turbo-devel + freetype-devel libpng-devel - openjpeg-devel tiff-devel fontconfig-devel - gdk-pixbuf-devel office/postscript/poppler/pspec.xml @@ -5557,9 +11918,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression poppler lcms2 + curl + freetype + libgcc libjpeg-turbo libpng - openjpeg tiff fontconfig poppler-data @@ -5583,30 +11946,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression /usr/share/man/man1 - - poppler-qt - Qt wrapper for poppler - Poppler için Qt bağlayıcısı - - qt - poppler - - - /usr/lib/libpoppler-qt4.so* - - - - poppler-qt-devel - Development files for poppler-qt - poppler-qt için geliştirme dosyaları - - poppler-qt - poppler-devel - - - /usr/lib/pkgconfig/poppler-qt4.pc - - poppler-cpp Pure C++ wrapper for poppler @@ -5636,6 +11975,8 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Poppler için Glib bağlayıcısı cairo + glib2 + freetype gdk-pixbuf poppler @@ -5684,7 +12025,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression lcms2-32bit libjpeg-turbo-32bit libpng-32bit - openjpeg-32bit tiff-32bit freetype-32bit fontconfig-32bit @@ -5782,6 +12122,569 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + doxygen + http://www.doxygen.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + office.misc + Documentation and analysis tool for C++, C, Java, IDL, PHP and C# + C, C++, Java, IDL, PHP ve C# için döküman ve analiz aracı + Doxygen is a documentation system for C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors) and to some extent PHP, C#, and D. + Doxygen C++, C, Java, Objective-C, Python, IDL (Corba ve Microsoft ile ilgili diğerleri ) ve PHP, C# ve D'yi de kapsayan diller için bir dokümantasyon sistemidir. + Doxygen es un sistema de documentación para C++, C, Java, Objective-C, Python, IDL (versiones Corba y Microsoft) y hasta cierto punto también PHP, C#, y D. + ftp://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.7.src.tar.gz + + libgcc + + + fedora/doxygen-1.8.6-config.patch + fedora/doxygen-1.8.3-multilib.patch + fedora/doxygen-1.8.7-html_timestamp_default_false.patch + + office/misc/doxygen/pspec.xml + + + doxygen + + libgcc + + + /usr/share/doc + /usr/bin/doxygen + /usr/share/man/man1/doxygen.1 + + + + + 2014-05-24 + 1.8.7 + Version bump + Alihan Öztürk + alihan@pisilinux.org + + + 2013-12-30 + 1.8.6 + Version bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-09-14 + 1.8.2 + First release + Yusuf Aydemir + yusuf.aydemir + + + + + + graphite2 + http://sourceforge.net/projects/silgraphite + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + app:gui + office.misc + SILGraphite: rendering non-roman scripts + Graphite is a project within SIL's scripts and software dev groups to provide cross-platform rendering for complex writing systems. + graphite2 + mirrors://sourceforge/silgraphite/graphite2-1.2.4.tgz + + cmake + freetype-devel + + office/misc/graphite2/pspec.xml + + + graphite2 + + /usr/bin + /usr/share/doc + /usr/share/graphite2 + /usr/lib/ + + + + graphite2-devel + graphite2 için geliştirme dosyaları + graphite2 için geliştirme dosyaları + + graphite2 + + + /usr/include + /usr/lib/pkgconfig/ + + + + + 2014-05-17 + 1.2.4 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-25 + 1.2.1 + Rebuild. + Kamil Atlı + suvarice@gmail.com + + + 2013-08-21 + 1.2.1 + Rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-02 + 1.2.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-12-28 + 1.2.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + iso-codes + http://pkg-isocodes.alioth.debian.org/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + office.misc + International country codes + Uluslararası ülke kodları + iso-codes provides IS0-639_3, ISO-4127, ISO-3166, ISO-3166_2, ISO-15924 standards. + iso-codes IS0-639_3, ISO-4127, ISO-3166, ISO-3166_2, ISO-15924 standartlarını sağlar. + http://pkg-isocodes.alioth.debian.org/downloads/iso-codes-3.53.tar.xz + office/misc/iso-codes/pspec.xml + + + iso-codes + + /usr/lib/pkgconfig + /usr/share/locale + /usr/share/doc + /usr/share/xml + /usr/share/iso-codes + + + + + 2014-05-21 + 3.53 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2013-10-13 + 3.47 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-10-02 + 3.39 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + fftw3 + http://www.fftw.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + science.mathematics + A library for computing the discrete Fourier transform (DFT) + Ayrık Fourier dönüşümü hesaplamak için bir kütüphane + FFTW v3 est une librairie sous-routine C pour le calcul discret de transformation de Fourier (DFT) dans une ou plusieurs dimensions, pour une entrée de taille arbitraire, aussi bien pour des données réeles ou complexes (ainsi que les données paires/impaires, i.e. la transformation discrète cosinus/sinus ou DCT/DST). + fftw3 is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST). + fftw3, ayrık Fourier dönüşümü hesaplamak için kullanılabilecek bir C kütüphanesidir. + FFTW v3 es una librería con subrutinas C para computar la transformación Fourier discreta (DFT) en una o más dimensiones, con longitud de entrada arbitraria, para datos reales y complejos (y también de datos par/impar, i.e. transformación discreta coseno/seno DCT/DST). + http://www.fftw.org/fftw-3.3.4.tar.gz + + libgfortran + libquadmath + gettext + + science/mathematics/fftw3/pspec.xml + + + fftw3 + + libquadmath + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + /usr/share/info + + + + fftw3-devel + Development files for fftw3 + fftw3 için geliştirme dosyaları + + fftw3 + + + /usr/lib/pkgconfig + /usr/include + /usr/share/doc/fftw3/html + + + + + 2014-05-25 + 3.3.4 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-01-24 + 3.3.3 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-01-07 + 3.3.3 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + gpsd + http://catb.org/gpsd/ + + PisiLinux Community + admins@pisilinux.org + + BSD + science.gis + GPS daemon and library to support serial/USB GPS devices + Seri ve USB GPS aygıtlarını destekleyen GPS hizmeti ve kütüphanesi + gpsd is a service daemon that monitor one or more GPSes attached to a host computer through serial or USB ports, making all data of the sensors available to be queried on TCP port 2947 of the host computer. + gpsd, çalıştırıldığı makineye bağlı tüm GPS aygıtlarını dinleyen ve 2947. TCP port'undan sunan bir sistem hizmetidir. + http://download.savannah.gnu.org/releases/gpsd/gpsd-3.15.tar.gz + + xmlto + libusb-devel + desktop-file-utils + ncurses-devel + python-devel + dbus-devel + bluez-libs-devel + util-linux + libxslt + scons + docbook-xsl + + science/gis/gpsd/pspec.xml + + + gpsd + service + library + + /usr/bin + /usr/sbin + /lib/udev + /usr/share/man + /usr/share/doc + /etc/conf.d + /lib/udev/rules.d + /usr/lib + /usr/share/man/man3/libgps* + + + System.Service + + + gpsd.sysconfig + + + + + 2015-07-09 + 3.15 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-09-13 + 2.95 + Rebuild. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-06-14 + 2.95 + Rebuild for gcc + PisiLinux Community + admins@pisilinux.org + + + 2014-02-27 + 2.95 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2014-02-25 + 2.95 + Rebuild + Kamil Atlı + suvarice@gmail.com + + + 2013-07-28 + 2.95 + Dep Fixed + PisiLinux Community + admins@pisilinux.org + + + 2012-10-05 + 2.95 + First release + Erdem Artan + admins@pisilinux.org + + + + + + ilmbase + http://www.openexr.com + + PisiLinux Community + admins@pisilinux.org + + BSD + library + unknown + Several utility libraries from ILM (Industrial Light & Magic) used by OpenEXR + ILM (Industrial Light & Magic) şirketinden OpenEXR tarafından kullanılan çeşitli araç ve kitaplıklar + IlmBase are a set of utility libraries released by ILM, and used in their OpenEXR implementation. Included in this package you can find; libHalf (a class named Half for manipulating "half" values (16-bit floating point format) as if they were a built-in C++ data type), libIlmThread (a thread abstraction library on top of pthreads), libImath (a math library with support for matrices, 2d and 3d transformations, solvers for linear/quadratic/cubic equations and more), libIex (an exception handling library). + IlmBase, ILM tarafından yayınlanan ve onların OpenEXR gerçeklemelerinde kullandıkları kitaplıkları içerir. Bu pakette; libHalf ("yarım" değerleri (16-bit kayan noktalı sayı biçimi) C++ dilinin kendi tipleriymiş gibi kullanan Half sınıfı), libIlmThread (pthread üerine yazılmış bir soyutlama kitaplığı), libImath (matris, 2 ve 3 boyutlu dönüşümler, lineer, ikinci ve üçüncü dereceden denklem çözücü destekli matematik kitaplığı), libIex (istisna işleme kitaplığı) kitaplıklarını bulabilirsiniz. + http://download.savannah.nongnu.org/releases/openexr/ilmbase-2.0.1.tar.gz + + ilmbase-2.0.1-no_undefined.patch + ilmbase-IexMath.patch + ilmbase-1.0.3-pkgconfig.patch + + science/misc/ilmbase/pspec.xml + + + ilmbase + + /usr/lib + /usr/share/doc + + + + ilmbase-devel + Development files for ilmbase + ilmbase için geliştirme dosyaları + + ilmbase + mesa-glu-devel + mesa-devel + + + /usr/include + /usr/lib/pkgconfig + + + + + 2014-05-25 + 2.0.1 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-01-16 + 2.0.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2010-10-13 + 1.0.2 + First release + Gökcen Eraslan + admins@pisilinux.org + + + + + + opencv + http://opencv.willowgarage.com/wiki + + PisiLinux Community + admins@pisilinux.org + + BSD + library + science.robotics + Computer vision library + Bilgisayarla görme kütüphanesi + Biblioteka funkcji do grafiki komputerowej w czasie rzeczywistym + opencv is a programming library mainly aimed at the real time computer vision. Example applications are human-computer interaction, object identification, face recognition, motion tracking, mobile robotics. + opencv gerçek zamanlı bilgisayarla görme işlemleri için tasarlanmış bir kütüphanedir. İnsan-bilgisayar etkileşimi, nesne tanımlama, yüz tanıma, hareket izleme, mobil robotik, opencv'nin kullanıldığı bazı uygulama alanlarıdır. + OpenCV (Open Source Computer Vision) to biblioteka funkcji przeznaczonych głównie do grafiki komputerowej w czasie rzeczywistym. + https://github.com/Itseez/opencv/archive/2.4.9.tar.gz + + eigen + gtk2-devel + tiff-devel + libv4l-devel + openexr-libs + jasper-devel + lapack-devel + ilmbase-devel + openexr-devel + lapack-devel + xine-lib-devel + xine-lib-devel + libdc1394-devel + gstreamer-devel + intel-tbb-devel + libjpeg-turbo-devel + gst-plugins-base-devel + + science/robotics/opencv/pspec.xml + + + opencv + + gtk2 + tiff + jasper + libv4l + ilmbase + openexr + xine-lib + libdc1394 + intel-tbb + gstreamer + openexr-libs + gst-plugins-base + libjpeg-turbo + + + /usr/lib + /usr/bin + /usr/share/OpenCV + /usr/share/opencv + + + + opencv-docs + Computer vision library documents and examples + + /usr/share/doc/opencv + /usr/share/doc/opencv/samples + + + + opencv-devel + Development files for opencv + opencv için geliştirme dosyaları + Pliki naglowkowe do opencv + + opencv + + + /usr/include + /usr/lib/pkgconfig + + + + + 2014-05-15 + 2.4.9 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-11-20 + 2.4.7 + Version bump + Richard de Bruin + richdb@pisilinux.org + + + 2013-08-20 + 2.4.6.1 + ignore xine-lib + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-07-13 + 2.4.6.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-08 + 2.4.3 + First release + Marcin Bojara + marcin@pisilinux.org + + + postgresql @@ -5797,12 +12700,19 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Güçlü bir açık kaynaklı ilişkisel veritabanı sistemi PostgreSQL is a powerful, open source relational database system. PostgreSQL, açık kaynak kodlu, güçlü bir ilişkisel veritabanıdır - http://ftp.postgresql.org/pub/source/v9.3.4/postgresql-9.3.4.tar.bz2 + https://ftp.postgresql.org/pub/source/v9.3.9/postgresql-9.3.9.tar.bz2 mit-kerberos + e2fsprogs-devel + pam-devel + readline-devel + zlib-devel + python-devel + openssl-devel tcl-devel libxslt-devel libxml2-devel + openldap-server server/database/postgresql/pspec.xml @@ -5812,7 +12722,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression library mit-kerberos - tcl + python + zlib + libxml2 + openssl + e2fsprogs libxslt openldap-client @@ -5831,7 +12745,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression PostegreSQL için ek belgelendirme data:doc - postgresql-lib + postgresql-lib /usr/share/doc @@ -5841,7 +12755,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression postgresql-server service - postgresql-lib + postgresql-lib + pam + zlib + libxml2 + openssl + readline + e2fsprogs mit-kerberos openldap-client @@ -5864,8 +12784,9 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression postgresql-pl - postgresql-lib + postgresql-lib tcl + perl /usr/bin/pltcl_listmod @@ -5878,6 +12799,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + 2015-07-03 + 9.3.9 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2014-05-19 9.3.4 @@ -5947,7 +12875,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Birçok ANSI SQL-99 özelliği sunan ilişkisel bir veritabanı Firebird is an open source relational database management system offering many ANSI SQL-99 features. Birçok ANSI SQL-99 özelliği sunan, küçük, hızlı ve çok kararlı bir veritabanı sunucu. - http://sourceforge.net/projects/firebird/files/firebird/2.5.2-Release/Firebird-2.5.2.26540-0.tar.bz2/download + http://sourceforge.net/projects/firebird/files/firebird/2.5.4-Release/Firebird-2.5.4.26856-0.tar.bz2 icu4c-devel btyacc @@ -5965,6 +12893,9 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Firebird veritabanı istemci kütüphanesi Firebird relational database client library. Firebird sunucuya bağlantı için kullanılan istemci kütüphanesi + + libgcc + /usr/lib/libfbclient.* /usr/lib/libgds.* @@ -5985,6 +12916,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression firebird-client icu4c libedit + libgcc /etc/firebird @@ -6020,13 +12952,20 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Development files for firebird Firebird için geliştirme dosyaları - firebird-client + firebird-client /usr/include/firebird + + 2015-07-03 + 2.5.4.26856 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2014-05-19 2.5.2.26540 @@ -6072,10 +13011,18 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Hızlı, çok kullanıcılı ve çok görevli SQL veritabanı sunucusu MariaDB strives to be the logical choice for database professionals looking for a robust, scalable, and reliable SQL server. MySQL, çoklu iş parçacıklı (multi-threaded), çok kullanıcılı (multi-user), hızlı ve sağlam (robust) bir Veritabanı yönetim sistemidir. Özelllikle basit web uygulamaları için LAMP sistemi içinde sıkça tercih edilmektedir. - ftp://ftp.ulak.net.tr/pub/MariaDB/mariadb-10.0.17/source/mariadb-10.0.17.tar.gz + ftp://ftp.ulak.net.tr/pub/MariaDB/mariadb-10.0.20/source/mariadb-10.0.20.tar.gz + ncurses-devel + zlib-devel + libxml2-devel + readline-devel + libevent-devel + openssl-devel + libpcre-devel libaio-devel unixODBC-devel + cmake server/database/mariadb/pspec.xml @@ -6086,6 +13033,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression app:console library + zlib + libgcc + libpcre + libxml2 + openssl libaio unixODBC @@ -6130,8 +13082,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression MariaDB istemci uygulamaları app:console - mariadb-lib + mariadb-lib libaio + zlib + libgcc + libpcre + ncurses + openssl /usr/bin @@ -6146,9 +13103,11 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression MariaDB sunucusu ve ilgili dosyalar service - mariadb-lib - mariadb-client - libaio + mariadb-lib + mariadb-client + zlib + libgcc + openssl /etc @@ -6208,6 +13167,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + 2015-07-03 + 10.0.20 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + 2015-01-25 10.0.17 @@ -6270,6 +13236,224 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libtdb + http://tdb.samba.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv3+ + library + app:console + server.database + Trivial database library + TDB veritabanına erişim için gerekli kitaplıklar + libtdb contains C library and Python bindings to access to a trivial database. TDB is very much like GDBM and BSDDB except that it allows multiple simultaneous writers and uses locking internally to keep writers from trampling on each other. + libtdb basit bir veritabanı olan TDB ile iletişime geçmek için gerekli C ve Python kitaplıklarını içerir. + http://www.samba.org/ftp/tdb/tdb-1.2.13.tar.gz + + libxslt + python-devel + docbook-xsl + libbsd-devel + + server/database/libtdb/pspec.xml + + + libtdb + + python + + + /usr/bin + /usr/lib + /usr/share/man + /usr/share/doc + + + + libtdb-devel + Development files for libtdb + libtdb için geliştirme dosyaları + + libtdb + + + /usr/lib/pkgconfig + /usr/include + + + + + 2014-05-22 + 1.2.13 + rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2014-04-26 + 1.2.13 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-09 + 1.2.12 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-18 + 1.2.11 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2010-10-13 + 1.2.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + dhcp + http://www.isc.org/products/DHCP + + PisiLinux Community + admins@pisilinux.org + + isc-dhcp + app:console + library + service + server + DHCP Sunucusu + DHCP-Server + Dynamic host configuration protocol software + DHCP (Dynamic Host Configuration Protocol) is a protocol which allows individual devices on an IP network to get their own network configuration information (IP address, subnetmask, broadcast address, etc.) from a DHCP server. + IP adresi atanmasını ve TCP/IP bilgilerinin yapılandırılmasını sağlayan DHCP Sunucusu + http://ftp.isc.org/isc/dhcp/4.3.0/dhcp-4.3.0.tar.gz + + groff + openldap-client + bind-devel + + + dhcp-4.2.0-release-by-ifup.patch + dhcp-4.2.0-dhclient-decline-backoff.patch + dhcp-4.2.0-unicast-bootp.patch + dhcp-4.2.0-default-requested-options.patch + dhcp-4.2.0-paths.patch + dhcp-4.2.0-inherit-leases.patch + dhcp-4.2.0-garbage-chars.patch + dhcp-4.2.0-IFNAMSIZ.patch + dhcp-4.2.0-add_timeout_when_NULL.patch + dhcp-4.2.0-logpid.patch + dhcp-4.2.0-sendDecline.patch + dhcp-4.2.1-retransmission.patch + dhcp-4.2.0-honor-expired.patch + dhcp-4.3.0a1-PPP.patch + dhcp-4.2.0-P2-omapi.patch + + server/dhcp/pspec.xml + + + dhcp + + openldap-client + bind-libs + + + /etc + /usr/bin + /usr/sbin + /usr/lib + /var/lib + /run + /usr/share/man + /usr/share/doc + + + System.Service + System.Service + System.Service + System.Package + + + dhcpd + dhcpd6 + dhcrelay + dhcpd.conf + + + + dhclient + Provides the dhclient ISC DHCP client daemon + DHCP İstemcisi + app:console + + dhcp + bind-libs + + + /etc/dhcp/dhclient.conf + /usr/sbin/dhclient + /var/lib/dhclient + /usr/share/man/man5/dhclient* + /usr/share/man/man8/dhclient* + /usr/share/man/man5/dhcp-options* + /usr/share/man/man5/dhcp-eval* + /usr/share/doc/dhcp/dhclient* + + + dhclient.conf + + + + dhcp-devel + Development files for dhcp + dhcp için geliştirme dosyaları + + dhcp + + + /usr/include + /usr/share/man/man3 + + + + + 2014-05-19 + 4.3.0 + Version Bump + Vedat Demir + vedat@pisilinux.org + + + 2014-01-22 + 4.2.5 + Version Bump + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-10-14 + 4.2.3 + First release + PisiLinux Community + admins@pisilinux.org + + + mit-kerberos @@ -6367,6 +13551,460 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + cyrus-sasl + http://asg.web.cmu.edu/sasl/ + + PisiLinux Community + admins@pisilinux.org + + as-is + library + service + server.auth + The Cyrus SASL (Simple Authentication and Security Layer) + Cyrus basit kimlik tanımlama ve güvenlik katmanı + cyrus-sasl is the Simple Authentication and Security Layer, a method for adding authentication support to connection-based protocols. To use SASL, a protocol includes a command for identifying and authenticating a user to a server and for optionally negotiating protection of subsequent protocol interactions. + Cyrus-sasl, bağlantı tabanlı protokoller için kullanılan bir kimlik doğrulama uygulamasıdır. Çoğunlukla Smtp doğrulaması için kullanılır. + http://cyrusimap.org/releases/cyrus-sasl-2.1.26.tar.gz + + mit-kerberos + pam-devel + gdbm-devel + e2fsprogs-devel + openssl-devel + groff + + + CVE-2013-4122.patch + 0011_saslauthd_ac_prog_libtool.patch + 0025_ld_as_needed.patch + 0026_drop_krb5support_dependency.patch + 0030-dont_use_la_files_for_opening_plugins.patch + cyrus-sasl-2.1.20-saslauthd.conf-path.patch + cyrus-sasl-2.1.21-sizes.patch + cyrus-sasl-2.1.22-as-needed.patch + cyrus-sasl-2.1.22-qa.patch + cyrus-sasl-2.1.22-kerberos4.patch + cyrus-sasl-2.1.22-ldap-timeout.patch + cyrus-sasl-2.1.23-man.patch + cyrus-sasl-2.1.26-keytab.patch + cyrus-sasl-2.1.26-no_rpath.patch + cyrus-sasl-2.1.26-obsolete-macro.patch + cyrus-sasl-2.1.26-prefer-SCRAM-SHA-1-over-PLAIN.patch + cyrus-sasl-2.1.26-relro.patch + cyrus-sasl-2.1.26-size_t.patch + cyrus-sasl-2.1.26-warnings.patch + + server/auth/cyrus-sasl/pspec.xml + + + cyrus-sasl + + mit-kerberos + pam + gdbm + e2fsprogs + openssl + + + /etc + /usr/lib/tmpfiles.d/cyrus-sasl.conf + /usr/sbin + /usr/lib + /usr/share/cyrus-sasl-2 + /run + /usr/share/man + /usr/share/doc + + + System.Service + System.Package + + + saslauthd.confd + saslauthd.pam + tmpfiles.conf + + + + cyrus-sasl-devel + Development files for cyrus-sasl + cyrus-sasl için geliştirme dosyaları + + cyrus-sasl + + + /usr/include + /usr/lib/pkgconfig + /usr/share/doc/cyrus-sasl/*.txt + /usr/share/man/man3 + + + + + 2014-07-05 + 2.1.26 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-09 + 2.1.26 + Version bump. Add tmpfiles.conf + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-30 + 2.1.25 + Rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-05-05 + 2.1.25 + Added some patches and remove unused. + Aydın Demirel + aydin@demirel.web.tr + + + 2013-04-25 + 2.1.25 + Dep Fixed. + PisiLinux Community + admins@pisilinux.org + + + 2012-09-29 + 2.1.25 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + openldap + http://www.openldap.org + + PisiLinux Community + admins@pisilinux.org + + OPENLDAP + server + Open-source suite of LDAP applications and development tools + LDAP uygulamaları ve geliştirme araçları + OpenLDAP is an open-source suite of LDAP (Lightweight Directory Access Protocol) applications and development tools + LDAP hizmeti için gereken uygulamalar ve geliştirme araçlarını içerir + ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.41.tgz + + nss-devel + db-devel + openssl-devel + tcp-wrappers-devel + cyrus-sasl-devel + libtool-ltdl + groff + + + openldap-2.4.39-blfs_paths-1.patch + openldap-2.4.39-symbol_versions-1.patch + openldap-2.4.39-ntlm-1.patch + fedora/openldap-sql-linking.patch + fedora/openldap-reentrant-gethostby.patch + fedora/openldap-ldaprc-currentdir.patch + fedora/openldap-userconfig-setgid.patch + fedora/openldap-syncrepl-unset-tls-options.patch + fedora/openldap-nss-update-list-of-ciphers.patch + fedora/openldap-tls-no-reuse-of-tls_session.patch + fedora/openldap-nss-regex-search-hashed-cacert-dir.patch + fedora/openldap-nss-ignore-certdb-type-prefix.patch + fedora/openldap-nss-certs-from-certdb-fallback-pem.patch + fedora/openldap-nss-pk11-freeslot.patch + fedora/openldap-switch-to-lt_dlopenadvise-to-get-RTLD_GLOBAL-set.patch + fedora/openldap-ldapi-sasl.patch + fedora/openldap-autoconf-pkgconfig-nss.patch + + server/openldap/pspec.xml + + + openldap-client + Command-line ldap client commands (ldapsearch, ldapadd etc..) + library + app:console + + nss + nspr + cyrus-sasl + + + /etc/openldap/ldap.conf* + /usr/include + /usr/bin + /usr/lib + /usr/share/man/man1 + /usr/share/man/man5/ldap.conf.5 + + + + openldap-server + OpenLDAP server slapd and releated tools + OpenLDAP server slapd, additional backends, configuration files, schema definitions required for operation, and database maintenance tools + service + + db + perl + tcp-wrappers + libtool-ltdl + nss + cyrus-sasl + openldap-client + + + /etc/conf.d + /etc/openldap + /usr/lib/tmpfiles.d/openldap-server.conf + /usr/sbin + /usr/libexec + /usr/share/man/man3 + /usr/share/man/man5 + /usr/share/man/man8 + /usr/share/doc + /var/lib + /run/openldap + + + System.Package + System.Service + + + tmpfiles.conf + slapd.conf + gencert.sh + + + + openldap-32bit + 32-bit shared libraries for openldap + openldap için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + openssl-32bit + glibc-32bit + libtool-ltdl-32bit + + + glibc-32bit + openssl-32bit + openldap-client + + + /usr/lib32 + + + + + 2015-07-01 + 2.4.41 + Release bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-17 + 2.4.39 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-02-03 + 2.4.39 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-09 + 2.4.38 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-20 + 2.4.33 + ignore cyrus + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2012-09-19 + 2.4.33 + First release + PisiLinux Community + admins@pisilinux.org + + + 2012-09-19 + 2.4.32 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + ibus + http://code.google.com/p/ibus/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + app + util.misc + Intelligent Input Bus for Linux / Unix OS + IBus is an Intelligent Input Bus. It is a new input framework for Linux OS. It provides full featured and user friendly input method user interface. + https://github.com/ibus/ibus/releases/download/1.5.10/ibus-1.5.10.tar.gz + + gtk2-devel + gtk3-devel + glib2-devel + dconf-devel + vala-devel + libnotify-devel + libxkbcommon-devel + intltool + iso-codes + libxslt + docbook-xsl + + util/misc/ibus/pspec.xml + + + ibus + + glib2 + libX11 + atk + gtk2 + gtk3 + cairo + libXi + pango + dconf + libnotify + gdk-pixbuf + libxkbcommon + wayland-client + + + /etc/bash_completion.d/ + /etc/gconf/schemas/ibus.schemas + /etc/dconf/ + /usr/bin + /usr/lib + /usr/share + + + + ibus-gtk2 + ibus için gtk2 desteği + + ibus + glib2 + gtk2 + pango + + + /usr/lib/gtk-2.0/2.10.0/immodules/ + + + + ibus-gtk3 + ibus için gtk3 desteği + + ibus + glib2 + gtk3 + pango + + + /usr/lib/gtk-3.0/3.0.0/immodules/ + + + + ibus-devel + ibus için geliştirme dosyaları + ibus için geliştirme dosyaları + + ibus + + + /usr/include + /usr/lib/pkgconfig + + + + + 2015-06-16 + 1.5.10 + Version Bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-02-26 + 1.5.4 + Delete Unused Deps. + Varol Maksutoğlu + waroi@pisilinux.org + + + 2014-02-25 + 1.5.4 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-12-08 + 1.5.4 + Version Bump + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-07-27 + 1.5.3 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-04-30 + 1.5.2 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-10-04 + 1.4.99.20120917 + First release + PisiLinux Community + admins@pisilinux.org + + + keyutils @@ -6379,7 +14017,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression LGPLv2+ library app:console - unknown + util.crypt Linux key management utilities Linux anahtar yönetim araçları keyutils contains utilities to control the kernel key management facility and to provide a mechanism by which the kernel call back to userspace to get a key instantiated. @@ -6459,6 +14097,8 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression nspr-devel + sqlite-devel + zlib-devel nss-3.18.1-standalone-1.patch @@ -6604,6 +14244,438 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + ConsoleKit2 + http://freedesktop.org/Software/Hal + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + system.auth + A framework for defining and tracking users, login sessions, and seats + ConsoleKit is a system daemon for tracking what users are logged into the system and how they interact with the computer (e.g. which keyboard and mouse they use). + https://github.com/ConsoleKit2/ConsoleKit2/releases/download/0.9.4/ConsoleKit2-0.9.4.tar.bz2 + + acl-devel + pam-devel + dbus-devel + udev-devel + zlib-devel + glib2-devel + libX11-devel + polkit-devel + dbus-glib-devel + + system/auth/ConsoleKit/pspec.xml + + + ConsoleKit + + acl + pam + dbus + zlib + glib2 + libX11 + polkit + libudev + dbus-glib + + + /etc + /usr/lib/tmpfiles.d/ConsoleKit.conf + /usr/bin + /usr/sbin + /usr/libexec + /lib + /usr/lib + /usr/share/dbus-1 + /usr/share/polkit-1/actions + /usr/share/polkit-1/rules.d + /usr/share/man + /usr/share/locale + /usr/share/doc + /var + + + ConsoleKit.conf + 25-consolekit.rules + consolekit.pamd + + + + ConsoleKit-devel + Development files for ConsoleKit + ConsoleKit için geliştirme dosyaları + system.devel + + ConsoleKit + dbus-devel + + + /usr/include + /usr/lib/pkgconfig + + + + + 2015-06-16 + 0.9.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-06-15 + 0.9.3 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-02-05 + 0.9.2 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-08-01 + 0.4.6 + Rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 0.4.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-06 + 0.4.6 + Dep Fix + Varol Maksutoğlu + waroi@pisilinux.org + + + 2014-01-09 + 0.4.6 + Add gentoo patches and ConsoleKit.conf + Marcin Bojara + marcin@pisilinux.org + + + 2013-09-08 + 0.4.6 + /var/run => /run + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-04 + 0.4.6 + Version bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-08-23 + 0.4.5 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + udev + http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + system.base + Linux dynamic and persistent device naming support + Linux dinamik ve sürekli aygıt isimlendirme desteği (kernel dışındaki devfs) + udev permet aux utilisateurs Linux d'avoir un répertoire /dev dynamique et donne la possibilité d'avoir des noms de périphériques persistants. + udev allows Linux users to have a dynamic /dev directory and it provides the ability to have persistent device names. + udev linux kullanıcılarının dinamik /dev dizinine sahip olmalarına olanek verir ve tutarlı cihaz isimleri almasını sağlar. + udev ermöglicht Linux Benutzern ein dynamisches /dev Verzeichnis und beständige Gerätenamen + http://www.freedesktop.org/software/systemd/systemd-214.tar.xz + + glib2 + gperf + acl-devel + libkmod-devel + libblkid-devel + + system/base/udev/pspec.xml + + + udev + + libudev + acl + libkmod + libblkid + util-linux + + + /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/dbus-1/services + /usr/share/bash-completion/completions + /usr/share/doc + /usr/share/man + + + System.Package + + + tmpfiles.conf + + + + udev-devel + Development files for udev + system.devel + + udev + + + /usr/include/systemd/sd-daemon.h + /usr/lib32/pkgconfig/libsystemd-daemon.pc + /usr/lib/pkgconfig/libsystemd-daemon.pc + /usr/share/pkgconfig/udev.pc + + + + libudev + Dynamic library to access udev device information + udev aygıt bilgilerini sunan kitaplık + + /usr/lib/libudev* + /lib/libudev* + + + udev + + + + libudev-devel + Development files for libudev + libudev için geliştirme dosyaları + system.devel + + udev + libudev + + + /usr/include/libudev.h + /usr/lib/pkgconfig/libudev.pc + /usr/lib32/pkgconfig/libudev.pc + /usr/share/gtk-doc/html/libudev + + + + libgudev1 + Libraries for adding libudev support to applications that use glib + glib kullanan uygulamalara libudev desteği eklemek için kullanılan kitaplık + + glib2 + libudev + + + /usr/lib/libgudev* + + + + libgudev1-devel + Development files for libgudev1 + libgudev1 için geliştirme dosyaları + system.devel + + libudev-devel + libgudev1 + + + /usr/include/gudev-1.0 + /usr/lib/pkgconfig/gudev-1.0* + /usr/lib32/pkgconfig/gudev-1.0* + /usr/share/gir-1.0/GUdev-1.0.gir + /usr/share/gtk-doc/html/gudev + + + + libudev-32bit + 32-bit shared libraries for libudev + udev için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + libkmod-32bit + libblkid-32bit + + + libudev + + + /usr/lib32/libudev* + /lib32/libudev* + + + + libgudev1-32bit + 32-bit shared libraries for libgudev1 + emul32 + emul32 + + glib2-32bit + + + libgudev1 + libudev-32bit + glib2-32bit + + + /usr/lib32/libgudev* + + + + + 2014-07-01 + 214 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-11 + 212 + Add upstream patches. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-28 + 212 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-12 + 211 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 210 + Rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-26 + 210 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-20 + 209 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-11 + 208 + Add tmpfiles.conf, git updates. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-30 + 208 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-10 + 206 + Add /run/udev directory. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-13 + 206 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-28 + 204 + Fix pc files for emul32. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-13 + 204 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-03-30 + 200 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-24 + 197 + Version bump, add emul32 + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-11 + 194 + First release + Erdem Artan + admins@pisilinux.org + + + libSM @@ -8881,6 +16953,224 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libXpm + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + Librairie Xpm de X.Org + X.Org Xpm library + X.Org Xpm kitaplığı + X.Org Xpm Bibliothek + LibXpm is the X pixmap library. + mirrors://xorg/individual/lib/libXpm-3.5.11.tar.bz2 + + libXext-devel + libXt-devel + + x11/library/libXpm/pspec.xml + + + libXpm + + libXext + libXt + + + /usr/bin + /usr/lib + /usr/share/doc + /usr/share/man + + + + libXpm-devel + Development files for libXpm + libXpm için geliştirme dosyaları + + libXpm + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + libXpm-32bit + 32-bit shared libraries for libXpm + libXpm için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + libXext-32bit + libXt-32bit + libX11-32bit + + + libXpm + libXext-32bit + libXt-32bit + libX11-32bit + + + /usr/lib32 + + + + + 2014-05-16 + 3.5.11 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 3.5.11 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-09-12 + 3.5.10 + Revert back to 3.5.10. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-12 + 3.5.11 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-25 + 3.5.10 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 3.5.10 + First release + Erdem Artan + admins@pisilinux.org + + + + + + mesa-glu + http://www.mesa3d.org + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + Mesa OpenGL Utility library + Mesa implementation of the standard GLU OpenGL utility API. + ftp://ftp.freedesktop.org/pub/mesa/glu/glu-9.0.0.tar.gz + + mesa-devel + libgcc + + x11/library/mesa-glu/pspec.xml + + + mesa-glu + + mesa + libgcc + + + /usr/lib + + + + mesa-glu-devel + Development files for mesa-glu + mesa-glu için geliştirme dosyaları + + mesa-glu + mesa-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + mesa-glu-32bit + 32-bit shared libraries for mesa-glu + mesa-glu için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + mesa-32bit + libgcc + glibc-32bit + + + mesa-glu + mesa-32bit + libgcc + glibc-32bit + + + /usr/lib32 + + + + + 2015-01-22 + 9.0.0 + Release bump. + Ergün Salman + Poyraz76@pisilinux.org + + + 2014-05-16 + 9.0.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 9.0.0 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 9.0.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-13 + 9.0.0 + First release + Marcin Bojara + marcin@pisilinux.org + + + libXdamage @@ -9129,6 +17419,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Mesa jest open-source'ową implementacją specyfikacji OpenGL do renderowania trójwymiarowej grafiki. ftp://ftp.freedesktop.org/pub/mesa/10.5.5/mesa-10.5.5.tar.gz + llvm llvm-libs llvm-clang-devel xorg-proto @@ -9155,6 +17446,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression mesa + alternatives llvm-libs llvm-clang libX11 @@ -9235,9 +17527,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libxshmfence-32bit + alternatives glibc-32bit libgcc - libcxb-32bit + libxcb-32bit expat-32bit libX11-32bit libdrm-32bit @@ -9515,17 +17808,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Epoxy is a library for handling OpenGL function pointer management for you. https://github.com/anholt/libepoxy/archive/v1.2.tar.gz - python3 - xorg-util + libX11-devel mesa-devel + util-macros x11/library/libepoxy/pspec.xml libepoxy - - mesa - /etc/xdg /usr/bin @@ -9547,6 +17837,24 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression /usr/lib/pkgconfig + + libepoxy-32bit + 32-bit shared libraries for libeproxy + emul32 + emul32 + + glibc-32bit + libX11-32bit + mesa-32bit + + + glibc-32bit + + + /lib32 + /usr/lib32 + + 2015-05-27 @@ -9686,6 +17994,120 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + pixman + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + Pixel manipulation library + Piksel işleme kitaplığı + Pixman contains lowlevel pixel manipulation routines. + Pixman, düşük düzey piksel işleme yordamlarını içerir. + mirrors://xorg/individual/lib/pixman-0.32.6.tar.bz2 + x11/library/pixman/pspec.xml + + + pixman + + /usr/lib + /usr/share/doc + + + + pixman-devel + Development files for pixman + pixman için geliştirme dosyaları + + pixman + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + pixman-32bit + 32-bit shared libraries for pixman + pixman için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glibc-32bit + + + pixman + glibc-32bit + + + /usr/lib32 + + + + + 2014-08-31 + 0.32.6 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-16 + 0.32.4 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 0.32.4 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-07 + 0.30.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-12 + 0.30.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-25 + 0.30.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-21 + 0.30.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-22 + 0.28.0 + First release + Marcin Bojara + marcin@pisilinux.org + + + libXrandr @@ -9952,6 +18374,133 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + freeglut + http://freeglut.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + The OpenGL Utility Toolkit (Freeglut) + OpenGL Araç Kiti (Freeglut) + Freeglut est la boîte à outils utilitaire d'OpenGL, une boîte à outils indépendante du système de fenêtrage pour écrire des programmes OpenGL. Il implémente une Interface de Programmation d'Application (API) de fenêtrage pour OpenGL. Freeglut facilite considérablement l'apprentissage et l'exploration de la programmation en OpenGL. + Freeglut is the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL programs. It implements a simple windowing application programming interface (API) for OpenGL. Freeglut makes it considerably easier to learn about and explore OpenGL Programming. + Freeglut, OpenGL programlarını yazmak için bağımsız araç kutusu pencere sistemin olan bir OpenGL Hizmeti Araç Takımıdır. OpenGl için basit bir pencere uygulama proglaması arayüzü (API) sağlar. Freeglut, OpenGL Programlamasını keşfetmek öğrenmek isteyenler için kolaylıklar sağlar. + Freeglut es la caja de herramientas de OpenGL, con herramientas para crear programas OpenGL, independientemente del sistema de ventanas. Facilita una simple interfaz de programación de aplicaciones (API) con ventanas para OpanGL. Freeglut facilita considerablemente el aprendizaje y exploración de la programación OpenGL. + mirrors://sourceforge/freeglut/freeglut-3.0.0.tar.gz + + mesa-devel + mesa-glu-devel + libX11-devel + libXi-devel + libXxf86vm-devel + libXext-devel + libXrandr-devel + cmake + + x11/library/freeglut/pspec.xml + + + freeglut + + mesa + libX11 + libXi + libXxf86vm + libXrandr + + + /usr/lib + /usr/share/doc/freeglut + + + + freeglut-devel + Development files for freeglut + freeglut için geliştirme dosyaları + + freeglut + + + /usr/include + + + + freeglut-32bit + 32-bit shared libraries for freeglut + freeglut için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + mesa-32bit + mesa-glu-32bit + libXi-32bit + libX11-32bit + libXxf86vm-32bit + libXrandr-32bit + + + freeglut + glibc-32bit + mesa-32bit + libXi-32bit + libXxf86vm-32bit + libX11-32bit + libXrandr-32bit + + + /usr/lib32 + + + + + 2015-04-27 + 3.0.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-16 + 2.8.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-25 + 2.8.1 + rebuild unused + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-08 + 2.8.1 + verbump to 2.8.1 , Rebuild, clean emul32 installation. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-25 + 2.8.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-13 + 2.8.0 + First release + Marcin Bojara + marcin@pisilinux.org + + + libICE @@ -10399,12 +18948,17 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libXcomposite, X Birleşiklik kitaplığıdır. Birleşiklik, pencerelere ait kenarlar, butonlar ve başlık çubukları gibi pencere sisteminin temel elemanlarını değiştirmeye izin verir. mirrors://xorg/individual/lib/libXcomposite-0.4.4.tar.bz2 + libX11-devel libXfixes-devel + util-macros x11/library/libXcomposite/pspec.xml libXcomposite + + libX11 + /usr/lib /usr/share/doc @@ -10433,10 +18987,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression emul32 libX11-32bit + glibc-32bit libXcomposite libX11-32bit + glibc-32bit /usr/lib32 @@ -10815,6 +19371,251 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + libXmu + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + Librairie Xmu de X.Org + X.Org Xmu library + X.Org Xmu kitaplığı + X.Org Xmu Bibliothek + libXmu provides a set of miscellaneous utility convenience functions for X libraries to use. + LibXmu, X kitaplıklarında kullanmak için çeşitli yardımcı fonksiyonlar içerir. + mirrors://xorg/individual/lib/libXmu-1.1.2.tar.bz2 + + libXt-devel + libXext-devel + + x11/library/libXmu/pspec.xml + + + libXmu + + libXt + libXext + + + /usr/lib + /usr/share/doc + + + + libXmu-devel + Development files for libXmu + libXmu için geliştirme dosyaları + + libXmu + libXt-devel + libXext-devel + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + libXmu-32bit + 32-bit shared libraries for libXmu + libXmu için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + libXt-32bit + libXext-32bit + + + libXmu + libXt-32bit + libX11-32bit + libXext-32bit + + + /usr/lib32 + + + + + 2014-05-16 + 1.1.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 1.1.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-07 + 1.1.1 + Revert back to 1.1.1. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-12 + 1.1.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-25 + 1.1.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-27 + 1.1.1 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-07-27 + 1.1.1 + Move .pc files to devel package + Fatih Turgel + hitaf@pisilinux.org + + + 2012-06-01 + 1.1.1 + First release + Erdem Artan + admins@pisilinux.org + + + + + + libXinerama + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + x11.library + librairie Xinerama de X.Org + X.Org Xinerama library + X.Org Xinerama kitaplığı + X.Org Xinerama Bibliothek + Xorg Xinerama library. Xinerama is an extension to the X Window System which enables applications and window managers to use two (or more) physical displays as one large virtual display. + mirrors://xorg/individual/lib/libXinerama-1.1.3.tar.bz2 + + libXext-devel + libX11-devel + util-macros + + x11/library/libXinerama/pspec.xml + + + libXinerama + + libXext + libX11 + + + /usr/lib + /usr/share/doc + + + + libXinerama-devel + Development files for libXinerama + libXinerama için geliştirme dosyaları + + libXinerama + libXext-devel + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/man + + + + libXinerama-32bit + 32-bit shared libraries for libXinerama + libXinerama için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + libXext-32bit + libX11-32bit + glibc-32bit + + + libXinerama + libX11-32bit + libXext-32bit + glibc-32bit + + + /usr/lib32 + + + + + 2014-05-16 + 1.1.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 1.1.3 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 1.1.3 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-30 + 1.1.3 + Rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-06-21 + 1.1.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-22 + 1.1.2 + First release + Marcin Bojara + marcin@pisilinux.org + + + xorg-server @@ -11205,6 +20006,218 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + bluez + http://bluez.sourceforge.net + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + service + library + app:console + hardware.bluetooth + Official Linux Bluetooth protocol stack + Linux resmi Bluetooth protokol yığını + bluez contains the tools and libraries that provides support for the core Bluetooth layers and protocols. + Bu projenin genel amacı Linux'ta Bluetooth kablosuz standartların ayrıntılarını yerine getirmektir. + https://www.kernel.org/pub/linux/bluetooth/bluez-5.27.tar.xz + + cups-devel + dbus-devel + libnl-devel + alsa-lib-devel + gstreamer-devel + libsndfile-devel + libical-devel + glib2-devel + eudev-devel + readline-devel + + + bluez-5.27-obexd_without_systemd-1.patch + + hardware/bluetooth/bluez/pspec.xml + + + bluez + + cups + libnl + libusb + libical + alsa-lib + alsa-lib + gstreamer + libsndfile + bluez-libs + + + /lib/udev/rules.d + /lib/systemd/system + /usr/share/misc + /usr/bin + /usr/sbin + /lib/udev + /lib/bluetooth/obexd + /lib/bluetooth/bluetoothd + /usr/lib + /usr/libexec + /usr/share/man + /var/lib/bluetooth + /usr/share/alsa/bluetooth.conf + /usr/share/dbus-1 + /etc + + + System.Service + + + + bluez-libs + Libraries for use in Bluetooth applications + Uygulamalar için bluetooth erişim kitaplığı + + libical + + + /usr/lib/libbluetooth.so* + /usr/share/doc + + + + bluez-libs-devel + Development files for bluez-libs + bluez-libs için geliştirme dosyaları + + bluez-libs + + + /usr/include/bluetooth + /usr/lib/pkgconfig + + + + + 2015-01-29 + 5.27 + rebuild. + Vedat Demir + vedat@pisilinux.org + + + 2015-01-25 + 5.27 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-07-05 + 5.21 + Version bump and bugs fix. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-23 + 5.18 + Version bump + Burak Fazıl Ertürk + burakerturk@pisilinux.org + + + 2014-01-28 + 4.101 + Rebuild Unused + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-08-27 + 4.101 + R.Bump + PisiLinux Community + admins@pisilinux.org + + + 2013-06-28 + 4.101 + Add patches, --enable-hid2hci --enable-wiimote + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-09 + 4.101 + First release + Erdinç Gültekin + admins@pisilinux.org + + + + + + sbc + http://www.bluez.org/ + + Marcin Bojara + marcin@pisilinux.org + + GPLv2 + LGPLv2.1 + library + hardware.bluetooth + Bluetooth Subband Codec (SBC) library + An audio codec to connect bluetooth high quality audio devices like headphones or loudspeakers. + http://www.kernel.org/pub/linux/bluetooth/sbc-1.3.tar.gz + hardware/bluetooth/sbc/pspec.xml + + + sbc + + /usr/bin/* + /usr/lib + /usr/share/doc/sbc/* + + + + sbc-devel + Development files for sbc + + sbc + + + /usr/include + /usr/lib/pkgconfig + + + + + 2014-12-12 + 1.3 + Version bump + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-27 + 1.0 + R.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-12-19 + 1.0 + First release + Marcin Bojara + marcin@pisilinux.org + + + alsa-lib @@ -11373,8 +20386,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression 32-bit shared libraries for libmtdev emul32 emul32 + + glibc-32bit + libmtdev + glibc-32bit /usr/lib32 @@ -11878,6 +20895,8 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression glib2-devel icu4c-devel graphite2-devel + freetype-devel + expat-devel desktop/font/harfbuzz/pspec.xml @@ -12105,6 +21124,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Fontconfig sistem genelindeki programlar için yazıtiplerinin ayarlanmasını, özelleştirilmesini ve programlar tarafından erişilmesini sağlar. Fontconfig jest biblioteką do konfigurowania i dostosowywania do własnych potrzeb czcionek, które nie zależą od systemu X Window. Została zaprojektowana, aby znajdować czcionki w systemie i dobierać je do wymagań określanych przez aplikacje. http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.11.1.tar.bz2 + + freetype-devel + expat-devel + prefer_dejavu.patch anymetrics_urw.patch @@ -12117,6 +21140,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression fontconfig + + freetype + expat + /etc/fonts /usr/bin @@ -12137,6 +21164,8 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Pliki nagłówkowe fontconfig fontconfig + freetype-devel + expat-devel /usr/include @@ -12155,11 +21184,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression expat-32bit freetype-32bit + glibc-32bit fontconfig expat-32bit freetype-32bit + glibc-32bit /usr/lib32 @@ -12217,6 +21248,174 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + gnome-common + http://www.gnome.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + desktop.gnome.base + Common files for development of GNOME packages + GNOME uygulamalarının geliştirmede kullandığı yaygın dosyalar + gnome-common package contains aclocal macros, makefile headers and documents tools in order to build GNOME sources. + mirrors://gnome/gnome-common/3.10/gnome-common-3.10.0.tar.xz + desktop/gnome/base/gnome-common/pspec.xml + + + gnome-common + + /usr/share/doc + /usr/bin + /usr/share/aclocal + /usr/share/gnome-common + + + + + 2014-06-14 + 3.10.0 + Rebuild for gcc + PisiLinux Community + admins@pisilinux.org + + + 2014-05-21 + 3.12.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-27 + 3.10.0 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2013-08-26 + 2.34.0 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2010-12-22 + 2.34.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + dconf + http://live.gnome.org/dconf + + Pisi Linux Admins + admin@pisilinux.org + + GPLv2 + app:console + desktop.gnome.base + Simple low-level configuration system + Düşük seviyeli yapılandırma sistemi + dconf is a low-level configuration system. Its main purpose is to provide a backend to GSettings on platforms that don't already have configuration storage systems. + FIXME + http://ftp.gnome.org/pub/gnome/sources/dconf/0.20/dconf-0.20.0.tar.xz + + dbus-devel + glib2-devel + libxml2-devel + gtk3-devel + pango-devel + libxslt + intltool + docbook-xsl + libepoxy-devel + at-spi2-core-devel + vala-devel + gtk-doc + + desktop/gnome/base/dconf/pspec.xml + + + dconf + + dbus + glib2 + libxml2 + gtk3 + pango + + + /etc + /usr/share + /usr/lib + /usr/share/doc + /usr/bin + /usr/libexec + + + + dconf-devel + Development files for dconf + + dconf + + + /usr/include + /usr/share/vala + /usr/lib/pkgconfig + + + + dconf-docs + Reference files for dconf + data:doc + + dconf + + + /usr/share/gtk-doc + + + + + 2014-06-14 + 0.20 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-29 + 0.18 + Version bump. + Richard de Bruin + richdb@pisilinux.org + + + 2013-07-31 + 0.16.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-21 + 0.15.2 + First release + PisiLinux Community + admins@pisilinux.org + + + kde5-kplasma-addons @@ -22597,6 +31796,151 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + kwrited + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 daemon listening for wall and write messages + KDE5 daemon listening for wall and write messages + http://download.kde.org/stable/plasma/5.3.2/kwrited-5.3.2.tar.xz + + qt5-base-devel + ki18n-devel + kdoctools-devel + kcoreaddons-devel + knotifications-devel + kpty-devel + libgcc + kdelibs4-support-devel + kdbusaddons-devel + extra-cmake-modules + + desktop/kde/plasma/kwrited/pspec.xml + + + kwrited + + qt5-base + kpty + libgcc + kcoreaddons + knotifications + kdbusaddons + + + /usr/share + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-14 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + sddm + https://github.com/sddm/sddm + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + unknown + QML based X11 display manager + KDE Power Management module. Provides kded daemon DBus helper and KCM for configuring Power settings + https://github.com/sddm/sddm/archive/v0.11.0.tar.gz + + qt5-base-devel + qt5-tools-devel + qt5-base-devel + libgcc + pkgconfig + libxcb-devel + libxkbfile-devel + extra-cmake-modules + docutils + + + sddm_upstream.patch + sddm-0.10.0-upower.patch + sddm-0.11.0-consolekit.patch + + desktop/kde/plasma/sddm/pspec.xml + + + sddm + + qt5-base + qt5-declarative + libgcc + libxcb + + + /etc + /usr/share + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/man + /usr/share/doc + + + System.Service + System.Package + + + sddm.conf + sddm + + + + + 2015-07-03 + 0.11 + Rebuild. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-09-20 + 0.11 + First release + Stefan Gronewold (groni) + groni@pisilinux.org + + + breeze @@ -22784,6 +32128,332 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + plasma-desktop + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 plasma workspace + This package contains the basic packages for a Plasma workspace. + http://download.kde.org/stable/plasma/5.3.2/plasma-desktop-5.3.2.tar.xz + + qt5-base-devel + boost-devel + kdoctools-devel + kio-devel + libX11-devel + libgcc + libxcb-devel + freetype-devel + libusb-compat-devel + xorg-server-devel + xorg-input-evdev-devel + xorg-input-synaptics-devel + extra-cmake-modules + + desktop/kde/plasma/plasma-desktop/pspec.xml + + + plasma-desktop + + qt5-base + kio + libX11 + libgcc + libxcb + freetype + libusb-compat + kf5-baloo + libxkbfile + kconfigwidgets + kwindowsystem + kpeople + knotifications + kwin + kwindowsystem + knotifyconfig + libcanberra + sonnet + powerdevil + system-settings + libXi + libXft + qt5-svg + libXfixes + fontconfig + kauth + ki18n + solid + libXcursor + qt5-phonon + kparts + kcodecs + kconfig + krunner + kwallet + kxmlgui + karchive + kcmutils + kservice + qt5-x11extras + knewstuff + xcb-util-image + kbookmarks + kemoticons + kguiaddons + kitemviews + pulseaudio-libs + qt5-declarative + kactivities + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + kjobwidgets + kdeclarative + kglobalaccel + kwidgetsaddons + kdelibs4-support + plasma-framework + plasma-workspace + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kcm-touchpad-frameworks, kdebase-workspace + + + kcm-touchpad-frameworks + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-29 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + plasma-workspace + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + app:gui + unknown + The KDE5 Plasma Workspace Components + The KDE5 Plasma Workspace Components + http://download.kde.org/stable/plasma/5.3.2/plasma-workspace-5.3.2.tar.xz + + qt5-base-devel + libkscreen-devel + libksysguard-devel + libqalculate-devel + gpsd-devel + kwayland + baloo-devel + extra-cmake-modules + kdelibs4-support-devel + kdoctools-devel + krunner-devel + kwin-devel + libXcursor-devel + libXrender-devel + xorg-util + xcb-util-keysyms-devel + xcb-util-image-devel + xcb-util-renderutil-devel + networkmanager-qt-devel + kxmlrpcclient-devel + kio-devel + kjs-devel + pam + zlib-devel + libX11-devel + libXau-devel + libgcc + libxcb-devel + kactivities-devel + extra-cmake-modules + + desktop/kde/plasma/plasma-workspace/pspec.xml + + + plasma-workspace + + qt5-base + qt5-tools + cln + kio + kjs + pam + zlib + libX11 + libXau + libgcc + libxcb + kactivities + gpsd + libSM + libXi + libICE + kio + kjs + libXfixes + baloo + kauth + kdesu + ki18n + solid + qt5-script + qt5-phonon + qt5-webkit + kcrash + kconfig + kwallet + kxmlgui + kpackage + kservice + qt5-x11extras + kdewebkit + kidletime + wayland-client + wayland-server + kbookmarks + kguiaddons + kitemviews + qt5-declarative + qt5-libdbusmenu + kcompletion + kcoreaddons + kdbusaddons + kiconthemes + kjobwidgets + kdeclarative + kglobalaccel + ktextwidgets + kwindowsystem + kxmlrpcclient + kconfigwidgets + knotifications + kwidgetsaddons + plasma-framework + kde-cli-tools + kjsembed + knewstuff + knotifyconfig + ktexteditor + kwayland + libkscreen + libksysguard + libqalculate + krunner + libksysguard + kdelibs4-support + networkmanager-qt + libXrender + xcb-util-keysyms + + + /etc/pam.d + /etc/xdg + /usr/share + /usr/share/applications + /usr/share/locale + /usr/bin + /usr/lib/qt5/plugins + /usr/lib/qt5/qml + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + plasma-workspace-devel + Development files for kde5 plasma-workspace + + qt5-base-devel + plasma-workspace + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + kde-workspace-devel + + + kde-workspace-devel + + + kde.pam + + + + drkonqi + KDE crash handler + + kdewebkit + kxmlrpcclient + plasma-workspace + + + /usr/lib/libexec + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-12 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + polkit-kde-authentication-agent-1 @@ -22932,6 +32602,93 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + sddm-kcm + https://projects.kde.org/projects/kde/workspace/sddm-kcm + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + app:console + unknown + KDE5 Config Module for SDDM + KDE5 Config Module for SDDM + http://download.kde.org/stable/plasma/5.3.2/sddm-kcm-5.3.2.tar.xz + + kcoreaddons-devel + kdoctools-devel + kconfigwidgets-devel + kauth-devel + libgcc + libX11-devel + kxmlgui-devel + ki18n-devel + qt5-base-devel + kio-devel + qt5-declarative-devel + qt5-tools-devel + qt5-x11extras-devel + kconfig-devel + docutils + libXcursor-devel + extra-cmake-modules + + desktop/kde/plasma/sddm-kcm/pspec.xml + + + sddm-kcm + + kcoreaddons + sddm + libgcc + libX11 + kconfigwidgets + kauth + kxmlgui + ki18n + qt5-base + kio + kdoctools + libXcursor + kconfig + qt5-x11extras + qt5-declarative + xorg-server-xephyr + + + /etc/dbus-1/system.d + /usr/share/dbus-1/system-services + /usr/share/kservices5 + /usr/share/ + /usr/share/polkit-1/actions + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5/plugins + /usr/lib/libexec/kauth + /usr/lib + /usr/share/doc + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-14 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + libksysguard @@ -23029,6 +32786,91 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + powerdevil + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE power manager module + KDE Power Management module. Provides kded daemon DBus helper and KCM for configuring Power settings + http://download.kde.org/stable/plasma/5.3.2/powerdevil-5.3.2.tar.xz + + qt5-base-devel + kdoctools-devel + kidletime-devel + libgcc + libxcb-devel + libudev-devel + plasma-workspace-devel + extra-cmake-modules + + desktop/kde/plasma/powerdevil/pspec.xml + + + powerdevil + + qt5-base + kdoctools + kidletime + libgcc + libxcb + libudev + plasma-workspace + kio + kauth + ki18n + solid + kconfig + kxmlgui + kservice + qt5-x11extras + libkscreen + kf5-kactivities + kcompletion + kcoreaddons + kdbusaddons + kglobalaccel + knotifyconfig + kconfigwidgets + knotifications + kwidgetsaddons + kdelibs4-support + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-29 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + bluez-qt @@ -23259,6 +33101,108 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + khotkeys + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 hotkey daemon + KDE hotkey daemon module allows you to configure custom keyboard shortcuts and mouse gestures. + http://download.kde.org/stable/plasma/5.3.2/khotkeys-5.3.2.tar.xz + + qt5-base-devel + python3 + kdoctools-devel + libgcc + libX11-devel + kconfig-devel + kservice-devel + qt5-x11extras-devel + kcompletion-devel + kcoreaddons-devel + ktextwidgets-devel + kwindowsystem-devel + kconfigwidgets-devel + kwidgetsaddons-devel + kcmutils-devel + kdbusaddons-devel + kdelibs4-support-devel + kglobalaccel-devel + ki18n-devel + kio-devel + kxmlgui-devel + plasma-framework-devel + plasma-workspace-devel + libgcc + extra-cmake-modules + + desktop/kde/plasma/khotkeys/pspec.xml + + + khotkeys + + qt5-base + kconfig + libgcc + libX11 + kservice + qt5-x11extras + kcompletion + kcoreaddons + ktextwidgets + kwindowsystem + kconfigwidgets + kwidgetsaddons + kcmutils + kdbusaddons + kdelibs4-support + kglobalaccel + ki18n + kio + kxmlgui + plasma-framework + plasma-workspace + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/cmake + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + 2015-07-02 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-15 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + libkscreen @@ -23332,6 +33276,75 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + milou + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDedicated search application built on top of Baloo + Dedicated search application built on top of Baloo + http://download.kde.org/stable/plasma/5.3.2/milou-5.3.2.tar.xz + + qt5-base-devel + qt5-declarative + python3 + libgcc + kdoctools-devel + kdeclarative-devel + ki18n-devel + krunner-devel + plasma-framework-devel + kconfig-devel + kservice-devel + kcoreaddons-devel + extra-cmake-modules + + desktop/kde/plasma/milou/pspec.xml + + + milou + + qt5-base + qt5-declarative + krunner + libgcc + kconfig + kservice + kcoreaddons + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-12 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kinfocenter @@ -23755,6 +33768,131 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + plasma-workspace-wallpapers + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + app:gui + unknown + The KDE Plasma Workspace Components + The KDE Plasma Workspace Components + http://download.kde.org/stable/plasma/5.3.2/plasma-workspace-wallpapers-5.3.2.tar.xz + + qt5-base-devel + alsa-lib-devel + baloo-devel + kactivities-devel + kcmutils-devel + kcoreaddons-devel + kcrash-devel + kdeclarative-devel + kdelibs4-support-devel + kdesu-devel + kdewebkit-devel + kdoctools-devel + kidletime-devel + kjsembed-devel + knewstuff-devel + knotifyconfig-devel + krunner-devel + ktexteditor-devel + kwallet-devel + kwin-devel + libkscreen-devel + libksysguard-devel + plasma-framework-devel + solid-devel + frameworkintegration-devel + breeze-style + milou + qt5-phonon-devel + libqalculate-devel + prison-qt5-devel + libXrender-devel + xcb-util-keysyms-devel + xcb-util-image-devel + libXcursor-devel + + desktop/kde/plasma/plasma-workspace-wallpapers/pspec.xml + + + plasma-workspace-wallpapers + + qt5-base + alsa-lib + baloo + kactivities + kcmutils + kcoreaddons + kcrash + kdeclarative + kdelibs4-support + kdesu + kdewebkit + kdoctools + kidletime + kjsembed + knewstuff + knotifyconfig + krunner + ktexteditor + kwallet + kwin + libkscreen + libksysguard + plasma-framework + solid + frameworkintegration + breeze-style + milou + qt5-phonon + libqalculate + prison-qt5 + libXrender + xcb-util-keysyms + xcb-util-image + libXcursor + + + /etc + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-05-25 + 5.3.0 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kwin @@ -24002,6 +34140,72 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + plasma-mediacenter + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + GPLv2 + library + unknown + A mediacenter user interface based on KDE Plasma components + A mediacenter user interface based on KDE Plasma components + http://download.kde.org/stable/plasma/5.3.2/plasma-mediacenter-5.3.2.tar.xz + + qt5-base-devel + qt5-multimedia-devel + libgcc + kfilemetadata-devel + baloo-devel + extra-cmake-modules + + desktop/kde/plasma/plasma-mediacenter/pspec.xml + + + plasma-mediacenter + + qt5-base + baloo + libgcc + kfilemetadata + kcoreaddons + qt5-declarative + kguiaddons + kservice + kconfig + ki18n + kio + taglib + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-18 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + bluedevil @@ -24175,6 +34379,164 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + oxygen-themes + http://www.kde.org + + Pisi Linux Admins + admins@pisilinux.org + + LGPLv2 + library + app:console + unknown + KDE5 Oxygen themes + KDE5 Oxygen themes + http://download.kde.org/stable/plasma/5.3.2/oxygen-5.3.2.tar.xz + + qt5-base-devel + python3 + kdoctools-devel + libgcc + libxcb-devel + kdecorations-devel + frameworkintegration-devel + automoc4 + gettext + extra-cmake-modules + + desktop/kde/plasma/oxygen-themes/pspec.xml + + + oxygen-themes + + qt5-base + python3 + ki18n + kconfig + libgcc + libxcb + kdecorations + qt5-x11extras + kguiaddons + kcompletion + kcoreaddons + kwindowsystem + kconfigwidgets + kwidgetsaddons + frameworkintegration + + + /usr/share + /usr/share/locale + /usr/share/icons + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-11 + 5.3.1 + First Release. + Stefan Gronewold(groni) + groni@pisilinux.org + + + + + + plasma-sdk + http://www.kde.org + + Pisi Linux Admins + admin@pisilinux.org + + LGPLv2 + library + app:console + app:gui + unknown + Applications useful for Plasma development + Applications useful for Plasma development + http://download.kde.org/stable/plasma/5.3.2/plasma-sdk-5.3.2.tar.xz + + qt5-base-devel + qt5-webkit-devel + libgcc + extra-cmake-modules + + desktop/kde/plasma/plasma-sdk/pspec.xml + + + plasma-sdk + + qt5-base + ktexteditor + plasma-framework + kio + libgcc + ki18n + kconfig + karchive + kpackage + kservice + qt5-declarative + kcompletion + kcoreaddons + kiconthemes + kdeclarative + kconfigwidgets + kwidgetsaddons + + + /usr/share + /usr/share/locale + /usr/bin + /usr/lib/qt5 + /usr/lib + /usr/share/doc + + + kde-workspace + + + kde-workspace + + + + + 2015-07-03 + 5.3.2 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2015-06-14 + 5.3.1 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + kio-extras @@ -24919,6 +35281,137 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + gtk-theme-mediterranean + http://gnome-look.org/content/show.php/MediterraneanNight+Series?content=156782 + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + data + desktop.lookandfeel + Great themes for GTK2 and GTK3 + GTK2 ve GTK3 için güzel temalar + Themes for GTK2 and GTK3. + GTK2 ve GTK3 için yazılmış tema paketleri. + https://dl.dropboxusercontent.com/u/80497678/MediterraneanNight-2.03.tar.gz + desktop/lookandfeel/gtk-theme-mediterranean/pspec.xml + + + gtk-theme-mediterranean + + gtk2-engines-murrine + gdk-pixbuf + + + /usr/share/themes/MediterraneanDark + /usr/share/themes/MediterraneanWhite + /usr/share/themes/MediterraneanLightDarkest + + + + gtk-theme-mediterranean-others + + gtk2-engines-murrine + gdk-pixbuf + + + /usr/share/themes + + + + + 2014-02-06 + 2.03 + Add MediterraneanLightDarkest to main package. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-01-26 + 2.03 + Rebuild + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2013-10-05 + 2.0.3 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + gtk2-engines-murrine + http://cimitan.com/murrine/project/murrine + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + desktop.lookandfeel + GTK+ Murrine theme engine + GTK+ Murrine tema motoru + The Murrine engine is a cairo-based GTK+ theming tool. It's very fast compared to clearlooks-cairo. Murrine includes animations and a unique style. + Murrine motoru, Cairo tabanlı GTK+ tema aracıdır. Clearlooks temasına göre çok daha hızlıdır. Aynı zamanda canlandırmalar, benzersiz biçemler içerir. + mirrors://gnome/murrine/0.98/murrine-0.98.2.tar.xz + + gtk2-devel + glib2-devel + cairo-devel + pango-devel + pixman-devel + gdk-pixbuf-devel + intltool + + desktop/lookandfeel/gtk2-engines-murrine/pspec.xml + + + gtk2-engines-murrine + + gtk2 + glib2 + cairo + pango + pixman + gdk-pixbuf + + + /usr/lib + /usr/share/doc + /usr/share/gtk-engines + + + + + 2014-02-07 + 0.98.2 + Remove gtk2 runtime dep to avoid cyclic deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-17 + 0.98.2 + Release bump + Erdinç Gültekin + erdinc@pisilinux.org + + + 2012-06-10 + 0.98.2 + First release + Erdinç Gültekin + admins@pisilinux.org + + + icon-theme-hicolor @@ -24963,256 +35456,86 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression - gtk2 - http://www.gtk.org + newt + https://fedorahosted.org/newt/ PisiLinux Community admins@pisilinux.org - LGPLv2.1 - unknown - The GIMP Toolkit version 2 - GTK grafik arayüz kitaplığı versiyon 2 - GTK+ est une boîte à outil multi-plateforme servant à créer des interfaces graphiques. Offrant un ensemble complet de widgets (objets graphiques), GTK+ convient aussi bien pour les petits projets que pour les suites complètes d'applications. - GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. - GTK+, grafik kullanıcı arayüzü oluşturma amaçlı araçlardan oluşur. GTK+ hem küçük, hem de büyük uygulamalar için ideal olan, eksiksiz bir araçtır. - mirrors://gnome/gtk+/2.24/gtk+-2.24.23.tar.xz + GPLv2 + library + app:console + desktop.toolkit + A windowing toolkit for text mode + Metin tabanlı bir pencere araç seti. + newt is a windowing toolkit for text mode, which provides many widgets and stackable windows. + Newt, metin tabanlı bir pencere araç setidir. Pek çok alet ve istiflenebilir pencere sağlar. + https://fedorahosted.org/releases/n/e/newt/newt-0.52.17.tar.gz - cups-devel - libXi-devel - cairo-devel - libXext-devel - libXrandr-devel - libXfixes-devel - libXrender-devel - libXdamage-devel - libXcursor-devel - fontconfig-devel - libXinerama-devel - libXcomposite-devel - atk-devel - pango-devel - gdk-pixbuf-devel - gobject-introspection-devel + tcl-devel - - xid-collision-debug.patch - fedora/system-python.patch - fedora/icon-padding.patch - fedora/tooltip-positioning.patch - fedora/window-dragging.patch - - desktop/toolkit/gnome/gtk2/pspec.xml + desktop/toolkit/newt/pspec.xml - gtk2 + newt - cups - libXi - cairo - libXext - libXrandr - libXfixes - libXrender - libXdamage - libXcursor - fontconfig - libXinerama - libXcomposite - atk - pango - gdk-pixbuf - dejavu-fonts - gtk-theme-mediterranean + tcl - /etc /usr/bin - /usr/share/themes - /usr/share/gtk-2.0 - /usr/share/man - /usr/share/doc /usr/lib /usr/share/locale + /usr/share/doc + /usr/share/man - - System.PackageHandler - - - gtkrc - - gtk2-demo - GTK demo application - GTK demo uyulaması - app:gui + newt-devel + Development files for newt + newt için geliştirme dosyaları - gtk2 - cairo - pango - gdk-pixbuf - - - /usr/bin/gtk-demo - /usr/share/gtk-2.0/demo - - - - gtk2-docs - GTK reference documents - GTK referans dökümanları - data:doc - - /usr/share/gtk-doc - - - - gtk2-devel - Development files for gtk2 - gtk2 için geliştirme dosyaları - - gtk2 - atk-devel - pango-devel - cairo-devel - gdk-pixbuf-devel + newt /usr/include - /usr/lib/pkgconfig - /usr/lib32/pkgconfig - /usr/share/aclocal - /usr/share/gir-1.0 - - - - gtk2-32bit - 32-bit shared libraries for gtk2 - gtk2 için 32-bit paylaşımlı kitaplıklar - emul32 - _emul32 - - cairo-32bit - cups-32bit - fontconfig-32bit - pango-32bit - glib2-32bit - atk-32bit - libX11-32bit - gdk-pixbuf-32bit - libXcomposite-32bit - libXcursor-32bit - libXdamage-32bit - libXext-32bit - libXfixes-32bit - libXi-32bit - libXinerama-32bit - libXrandr-32bit - libXrender-32bit - - - gtk2 - cairo-32bit - pango-32bit - glib2-32bit - atk-32bit - libX11-32bit - cups-32bit - fontconfig-32bit - gdk-pixbuf-32bit - libXcomposite-32bit - libXcursor-32bit - libXdamage-32bit - libXext-32bit - libXfixes-32bit - libXi-32bit - libXinerama-32bit - libXrandr-32bit - libXrender-32bit - - - /usr/bin/*-32bit - /usr/lib32 + /usr/lib/pkgconfig - - 2014-05-17 - 2.24.23 - Version bump. - Alihan Öztürk - alihan@pisilinux.org - - - 2014-04-06 - 2.24.22 - Rebuild - Serdar Soytetir - kaptan@pisilinux.org - - - 2014-02-06 - 2.24.22 - Set proper settings to gtkrc, change location of gtkrc. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-10-21 - 2.24.22 - Version bump. - Yusuf Aydemir - yusuf.aydemir@pisilinux.org - - - 2013-09-05 - 2.24.21 - Minor version bump, cleanup. - Serdar Soytetir - kaptan@pisilinux.org - - 2013-09-05 - 2.24.20 - Add missing method and fix pakhandler.py - Marcin Bojara - marcin@pisilinux.org + 2014-07-05 + 0.52.17 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org - 2013-07-06 - 2.24.20 + 2013-11-05 + 0.52.16 Version bump. - Marcin Bojara - marcin@pisilinux.org + Serdar Soytetir + kaptan@pisilinux.org - 2013-04-20 - 2.24.17 - Version bump. - Marcin Bojara - marcin@pisilinux.org + 2013-08-26 + 0.52.14 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org - 2013-02-23 - 2.24.16 - Version bump, add new cppflags, enhancements. + 2013-01-30 + 0.52.14 + Build with new relaese Tcl Erdinç Gültekin admins@pisilinux.org - - 2013-01-23 - 2.24.14 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - 2012-09-25 - 2.24.13 + 2012-09-17 + 0.52.14 First release - Erdem Artan - admins@pisilinux.org + Serdar Soytetir + kaptan@pisilinux.org @@ -25245,7 +35568,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base qt5-xmlpatterns qt5-script - qt5-webkit /usr/lib @@ -25262,6 +35584,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel qt5-script-devel + qt5-quick1 /usr/lib/pkgconfig @@ -25309,6 +35632,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-sensors + libgcc qt5-base qt5-declarative @@ -25322,6 +35646,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-sensors-devel qt5-sensors için geliştirme dosyaları + qt5-sensors qt5-base-devel @@ -25370,6 +35695,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-websockets + libgcc qt5-base qt5-declarative @@ -25423,6 +35749,8 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtscript-opensource-src-5.4.2.tar.xz qt5-base-devel + mesa-devel + libgcc desktop/toolkit/qt5/qt5-script/pspec.xml @@ -25430,6 +35758,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-script qt5-base + libgcc /usr/lib @@ -25442,6 +35771,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-script için geliştirme dosyaları qt5-base-devel + qt5-script /usr/lib/pkgconfig @@ -25482,6 +35812,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtserialport-opensource-src-5.4.2.tar.xz qt5-base-devel + eudev-devel qt5-tools-devel desktop/toolkit/qt5/qt5-serialport/pspec.xml @@ -25490,6 +35821,8 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-serialport qt5-base + eudev + libgcc /usr/lib @@ -25502,6 +35835,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-serialport için geliştirme dosyaları qt5-base-devel + qt5-serialport /usr/lib/pkgconfig @@ -25553,6 +35887,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base qt5-declarative bluez-libs + libgcc /usr/bin @@ -25767,6 +36102,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel qt5-declarative-devel + qt5-quick1-devel desktop/toolkit/qt5/qt5-quickcontrols/pspec.xml @@ -25900,8 +36236,12 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtimageformats-opensource-src-5.4.2.tar.xz qt5-base-devel - jasper-32bit + jasper-devel libmng-devel + libjpeg-turbo-devel + zlib-devel + tiff-devel + webp-devel desktop/toolkit/qt5/qt5-imageformats/pspec.xml @@ -25909,6 +36249,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-imageformats qt5-base + libgcc libmng tiff webp @@ -25963,6 +36304,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-declarative + libgcc qt5-base mesa qt5-xmlpatterns @@ -26027,6 +36369,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-xmlpatterns qt5-base + libgcc /usr/lib @@ -26082,6 +36425,8 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base-devel qt5-declarative-devel + qt5-tools + qt5-sql-sqlite desktop/toolkit/qt5/qt5-graphicaleffects/pspec.xml @@ -26187,17 +36532,15 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Qt es un toolkit para GUI multiplataforma. http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtbase-opensource-src-5.4.2.tar.xz - alsa-lib-devel at-spi2-core-devel cups-devel dbus-devel zlib-devel glib2-devel + libpcre-devel desktop-file-utils fontconfig-devel gperf - gst-plugins-base-devel - gstreamer-devel gtk2-devel harfbuzz-devel icon-theme-hicolor @@ -26205,9 +36548,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression firebird-superserver libjpeg-turbo-devel mariadb-lib - libmng-devel - pulseaudio-libs-devel - webp-devel libxcb-devel libXcomposite-devel libxkbcommon-devel @@ -26215,11 +36555,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression mesa-devel libmtdev-devel nss-devel - openal-devel pciutils-devel postgresql-server python-devel - ruby-devel + DirectFB-devel sqlite-devel unixODBC-devel xcb-proto @@ -26229,9 +36568,8 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression xcb-util-wm-devel tiff-devel libdrm-devel - DirectFB-devel libpng-devel - libudev-devel + eudev-devel libSM-devel libICE-devel libX11-devel @@ -26254,6 +36592,8 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base + libpcre + libgcc cups dbus gtk2 @@ -26267,10 +36607,10 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libICE libX11 libdrm - DirectFB libpng libxcb - libudev + eudev + DirectFB openssl freetype harfbuzz @@ -26316,6 +36656,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Qt5'in SQL sınıfları için MySQL sürücüsü qt5-base + libgcc mariadb-lib @@ -26327,6 +36668,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Qt5'in SQL sınıfları için PostgreSQL sürücüsü qt5-base + libgcc postgresql-lib @@ -26338,6 +36680,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Qt5'in SQL sınıfları için SQLite sürücüsü qt5-base + libgcc sqlite @@ -26349,6 +36692,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Qt5'in SQL sınıfları için ODBC sürücüsü qt5-base + libgcc unixODBC @@ -26360,6 +36704,29 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression 32-bit shared libraries for qt5 emul32 emul32 + + cups-32bit + dbus-32bit + gtk2-32bit + mesa-32bit + zlib-32bit + glib2-32bit + glibc-32bit + icu4c-32bit + pango-32bit + libX11-32bit + libdrm-32bit + libpng-32bit + sqlite-32bit + eudev-32bit + openssl-32bit + freetype-32bit + harfbuzz-32bit + libmtdev-32bit + fontconfig-32bit + libXrender-32bit + libjpeg-turbo-32bit + libgcc libpcre @@ -26377,7 +36744,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libdrm-32bit libpng-32bit sqlite-32bit - libudev-32bit + eudev-32bit openssl-32bit freetype-32bit harfbuzz-32bit @@ -26479,6 +36846,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Bağlı ve veritabanlı uygulamlar için arka uç geliştirmeyi kolaylaştıran bir sevice çözümü http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtenginio-opensource-src-5.4.2.tar.xz + libgcc qt5-base-devel qt5-declarative-devel @@ -26487,6 +36855,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-enginio + libgcc qt5-base qt5-declarative @@ -26542,6 +36911,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Konum, uydu ve alan izleme sınıflarına erişim sağlar http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtlocation-opensource-src-5.4.2.tar.xz + geoclue-devel qt5-base-devel qt5-declarative-devel @@ -26667,13 +37037,16 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtsvg-opensource-src-5.4.2.tar.xz qt5-base-devel + zlib-devel + mesa-devel desktop/toolkit/qt5/qt5-svg/pspec.xml qt5-svg - mesa + zlib + libgcc qt5-base @@ -26727,6 +37100,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression http://download.qt.io/official_releases/qt/5.4/5.4.2/submodules/qtx11extras-opensource-src-5.4.2.tar.xz qt5-base-devel + mesa-devel desktop/toolkit/qt5/qt5-x11extras/pspec.xml @@ -26788,6 +37162,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression libgcc glib2-devel dconf-devel + cmake qt5-base-devel desktop/toolkit/qt5/qt5-configuration/pspec.xml @@ -26850,13 +37225,14 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression pulseaudio-libs-devel gstreamer-devel openal-devel - pulseaudio-libs-32bit + mesa-devel desktop/toolkit/qt5/qt5-multimedia/pspec.xml qt5-multimedia + libgcc mesa openal alsa-lib @@ -26864,8 +37240,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression gstreamer pulseaudio-libs qt5-declarative - gst-plugins-base - gst-plugins-bad /usr/lib @@ -27063,7 +37437,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression qt5-base mesa - qt5-webkit qt5-declarative @@ -27119,6 +37492,1638 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + + gdk-pixbuf + http://www.gnome.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + desktop.toolkit.gtk + GDK pixbuf library + GDK pixbuf kitaplığı + gdk-pixbuf is a library that provides image loading and scaling support for gtk+ applications + gdk-pixbuf, gtk+ uygulamalarına resim açma ve ölçeklendirme desteği sağlayan bir kitaplıktır. + mirrors://gnome/gdk-pixbuf/2.31/gdk-pixbuf-2.31.4.tar.xz + + gtk-doc + glib2-devel + libX11-devel + tiff-devel + libjpeg-turbo-devel + libpng-devel + jasper-devel + gobject-introspection-devel + + desktop/toolkit/gtk/gdk-pixbuf/pspec.xml + + + gdk-pixbuf + + glib2 + libpng + libX11 + tiff + jasper + libjpeg-turbo + + + /etc + /usr/bin + /usr/lib + /usr/share/locale + /usr/share/man + /usr/share/doc + /usr/share + + + System.PackageHandler + + + + gdk-pixbuf-devel + Development files for gdk-pixbuf + gdk-pixbuf için geliştirme dosyaları + + gdk-pixbuf + glib2 + + + /usr/bin/gdk-pixbuf-csource + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/gir-1.0 + + + + gdk-pixbuf-docs + Reference documents for gdk-pixbuf + gdk-pixbuf için başvuru belgeleri + + /usr/share/gtk-doc + + + + gdk-pixbuf-32bit + 32-bit shared libraries for gdk-pixbuf + gdk-pixbuf için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + tiff-32bit + libjpeg-turbo-32bit + glibc-32bit + glib2-32bit + libX11-32bit + libpng-32bit + jasper-32bit + libX11-32bit + + + gdk-pixbuf + glibc-32bit + tiff-32bit + glib2-32bit + libpng-32bit + libX11-32bit + jasper-32bit + libjpeg-turbo-32bit + + + /usr/bin/gdk-pixbuf-query-loaders-32 + /usr/lib32 + + + System.PackageHandler + + + + + 2015-07-05 + 2.31.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-27 + 2.31.3 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-17 + 2.30.7 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-30 + 2.30.7 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-10 + 2.30.0 + Add missing method and fix pakhandler.py + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-05 + 2.28.2 + Add missing method and fix pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-20 + 2.28.2 + Fix build emul32. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-11 + 2.28.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-07 + 2.28.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-24 + 2.27.1 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-11-25 + 2.26.5 + First release + Serdar Soytetir + kaptan@pisilinux.org + + + + + + gtk2 + http://www.gtk.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + desktop.toolkit.gtk + The GIMP Toolkit version 2 + GTK grafik arayüz kitaplığı versiyon 2 + GTK+ est une boîte à outil multi-plateforme servant à créer des interfaces graphiques. Offrant un ensemble complet de widgets (objets graphiques), GTK+ convient aussi bien pour les petits projets que pour les suites complètes d'applications. + GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. + GTK+, grafik kullanıcı arayüzü oluşturma amaçlı araçlardan oluşur. GTK+ hem küçük, hem de büyük uygulamalar için ideal olan, eksiksiz bir araçtır. + mirrors://gnome/gtk+/2.24/gtk+-2.24.28.tar.xz + + cups-devel + libXi-devel + cairo-devel + libXext-devel + libXrandr-devel + libXfixes-devel + libXrender-devel + libXdamage-devel + libXcursor-devel + fontconfig-devel + libXinerama-devel + libXcomposite-devel + atk-devel + pango-devel + gdk-pixbuf-devel + gtk-doc + gobject-introspection-devel + + + xid-collision-debug.patch + fedora/system-python.patch + fedora/icon-padding.patch + fedora/tooltip-positioning.patch + fedora/window-dragging.patch + + desktop/toolkit/gtk/gtk2/pspec.xml + + + gtk2 + + cups + libXi + cairo + libXext + libXrandr + libXfixes + libXrender + libXdamage + libXcursor + fontconfig + libXinerama + libXcomposite + glib2 + libX11 + atk + pango + gdk-pixbuf + dejavu-fonts + + + /etc + /usr/bin + /usr/share/themes + /usr/share/gtk-2.0 + /usr/share/man + /usr/share/doc + /usr/lib + /usr/share/locale + + + System.PackageHandler + + + gtkrc + + + + gtk2-demo + GTK demo application + GTK demo uyulaması + app:gui + + gtk2 + cairo + pango + gdk-pixbuf + glib2 + + + /usr/bin/gtk-demo + /usr/share/gtk-2.0/demo + + + + gtk2-docs + GTK reference documents + GTK referans dökümanları + data:doc + + /usr/share/gtk-doc + + + + gtk2-devel + Development files for gtk2 + gtk2 için geliştirme dosyaları + + gtk2 + atk-devel + pango-devel + cairo-devel + gdk-pixbuf-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/aclocal + /usr/share/gir-1.0 + + + + gtk2-32bit + 32-bit shared libraries for gtk2 + gtk2 için 32-bit paylaşımlı kitaplıklar + emul32 + _emul32 + + glibc-32bit + cairo-32bit + cups-32bit + fontconfig-32bit + pango-32bit + glib2-32bit + atk-32bit + libX11-32bit + gdk-pixbuf-32bit + libXcomposite-32bit + libXcursor-32bit + libXdamage-32bit + libXext-32bit + libXfixes-32bit + libXi-32bit + libXinerama-32bit + libXrandr-32bit + libXrender-32bit + + + gtk2 + glibc-32bit + cairo-32bit + pango-32bit + glib2-32bit + atk-32bit + libX11-32bit + cups-32bit + fontconfig-32bit + gdk-pixbuf-32bit + libXcomposite-32bit + libXcursor-32bit + libXdamage-32bit + libXext-32bit + libXfixes-32bit + libXi-32bit + libXinerama-32bit + libXrandr-32bit + libXrender-32bit + + + /usr/bin/*-32bit + /usr/lib32 + + + + + 2015-07-05 + 2.24.28 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-05-17 + 2.24.23 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-04-06 + 2.24.22 + Rebuild + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-02-06 + 2.24.22 + Set proper settings to gtkrc, change location of gtkrc. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-21 + 2.24.22 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-09-05 + 2.24.21 + Minor version bump, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-05 + 2.24.20 + Add missing method and fix pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-06 + 2.24.20 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-20 + 2.24.17 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-23 + 2.24.16 + Version bump, add new cppflags, enhancements. + Erdinç Gültekin + admins@pisilinux.org + + + 2013-01-23 + 2.24.14 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-09-25 + 2.24.13 + First release + Erdem Artan + admins@pisilinux.org + + + + + + libglade + http://www.gnome.org/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + desktop.toolkit.gtk + Glade interface builder + Glade arayüz oluşturucu + Libglade est une librairie effectuant un travail similaire aux routines de génération de source C dans le constructeur d'interface graphique GLADE. Là ou les routines de génération de GLADE génerent du code C à compiler, libglade construit l interface depuis un fichier XML (le format de sauvegarde de GLADE) à l'exécution. De cette manière, vous pouvez changer l'apparence de votre programme sans avoir à le recompiler. + Libglade is a library that performs a similar job to the C source output routines in the GLADE user interface builder. Whereas GLADE's output routines create C code that can then be compiled, libglade builds the interface from an XML file (GLADE's save format) at runtime. This way you can change the look of a program without needing to recompile. + Libglade, GLADE kullanıcı arayüzü yapıcısındaki C kaynak çıkışı yöntemine benzer iş yapan bir kitaplıktır. GLADE'in çıkış yöntemi derlenebilir C kodu oluştururken, libglade arayüzü bir XML dosyasında oluşturur. Böylece yeniden derlenmeye gerek kalmadan arayüz değiştirilebilir. + mirrors://gnome/libglade/2.6/libglade-2.6.4.tar.bz2 + + glib2-devel + libxml2-devel + atk-devel + pango-devel + gtk2-devel + + + Makefile.in.am-2.4.2-xmlcatalog.patch + libglade-2.6.3-fix_tests-page_size.patch + + desktop/toolkit/gtk/libglade/pspec.xml + + + libglade + + glib2 + libxml2 + atk + pango + gtk2 + gdk-pixbuf + + + /usr/lib + /usr/share/doc + /usr/share/xml + + + System.Package + + + + libglade-docs + Libglade reference documents + Libglade referans belgeleri + data:doc + + libglade + + + /usr/share/gtk-doc + + + + libglade-devel + Development files for libglade + libglade için geliştirme dosyaları + + libglade + gtk2-devel + + + /usr/bin + /usr/include + /usr/lib/pkgconfig + + + + + 2014-05-18 + 2.6.4 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-07 + 2.6.4 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-17 + 2.6.4 + Release bump + Pisi Linux Admins + admins@pisilinux.org + + + 2010-10-12 + 2.6.4 + First release + Pisi Linux Admins + admins@pisilinux.org + + + + + + gtk-doc + http://www.gtk.org/gtk-doc + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + FDL-1.1 + app:console + desktop.toolkit.gtk + GTK+ API documentation generator + GTK+ API belge oluşturucusu + Gtk-Doc is typically used to document the public API of GTK+ and GNOME libraries, but it can also be used to document application code. + gtk-doc, GNOME ve GTK+ gibi kitaplıkların API'lerinin belgelendirilmesi için yazılmış bir uygulama projesidir. + mirrors://gnome/gtk-doc/1.21/gtk-doc-1.21.tar.xz + + itstool + openjade + sgml-common + docbook-xml + docbook-xsl + libxslt-devel + + desktop/toolkit/gtk/gtk-doc/pspec.xml + + + gtk-doc + + docbook-xml + sgml-common + + + /usr/bin + /usr/share + /usr/share/doc + /usr/share/omf + /var/lib + + + + + 2015-04-06 + 1.21 + Version bump. + Ayhan Yalçınsoy + ayhanyalcinsoy@pisilinux.org + + + 2014-05-18 + 1.20 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-03-30 + 1.20 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-26 + 1.18 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-08-26 + 1.18 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + gtk3 + http://www.gtk.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + desktop.toolkit.gtk + The GIMP Toolkit version 3 + GTK grafik arayüz kitaplığı versiyon 3 + GTK+ est une boîte à outil multi-plateforme servant à créer des interfaces graphiques. Offrant un ensemble complet de widgets (objets graphiques), GTK+ convient aussi bien pour les petits projets que pour les suites complètes d'applications. + GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. + GTK+, grafik kullanıcı arayüzü oluşturma amaçlı araçlardan oluşur. GTK+ hem küçük, hem de büyük uygulamalar için ideal olan, eksiksiz bir araçtır. + Wersja 3 bibliotek przeznaczonych do tworzenia interfejsów graficznych programów — GTK+. Interfejs GTK+ znany jest z takich programów, jak GIMP i Inkscape, oraz środowisk graficznych GNOME i Xfce. + mirrors://gnome/gtk+/3.16/gtk+-3.16.4.tar.xz + + atk-devel + cups-devel + at-spi2-atk-devel + pango-devel + json-glib-devel + libXi-devel + cairo-devel + gobject-introspection-devel + libXext-devel + libXrandr-devel + libXfixes-devel + gdk-pixbuf-devel + fontconfig-devel + libXcursor-devel + libXdamage-devel + libXinerama-devel + libXcomposite-devel + at-spi2-core-devel + libepoxy-devel + gtk-doc + + + 071_fix-installation-of-HTML-images.patch + + desktop/toolkit/gtk/gtk3/pspec.xml + + + gtk3 + + glib2 + libX11 + libepoxy + atk + cups + pango + libXi + json-glib + cairo + gobject-introspection + libXext + libXrandr + libXfixes + gdk-pixbuf + fontconfig + libXcursor + libXdamage + libXinerama + at-spi2-atk + libXcomposite + dejavu-fonts + + + /etc + /usr/bin + /usr/share/themes + /usr/share/gtk-3.0 + /usr/share/ + /usr/share/man + /usr/share/doc + /usr/lib + /usr/share/locale + + + System.PackageHandler + + + settings.ini + + + + gtk3-demo + GTK demo application + GTK demo uyulaması + app:gui + + gtk3 + cairo + pango + gdk-pixbuf + + + /usr/bin/gtk3-demo + /usr/bin/gtk3-demo-application + + + + gtk3-docs + GTK reference documents + GTK referans dökümanları + data:doc + + /usr/share/doc/gtk3 + + + + gtk3-devel + Development files for gtk3 + gtk3 için geliştirme dosyaları + Pliki nagłówkowe do gtk3 + + gtk3 + atk-devel + pango-devel + libXi-devel + cairo-devel + libXext-devel + libXfixes-devel + libXrandr-devel + gdk-pixbuf-devel + fontconfig-devel + libXdamage-devel + libXcursor-devel + libXinerama-devel + at-spi2-atk-devel + libXcomposite-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/aclocal + /usr/share/gir-1.0 + + + + gtk3-32bit + 32-bit shared libraries for gtk3 + gtk3 için 32-bit paylaşımlı kitaplıklar + emul32 + _emul32 + + atk-32bit + cups-32bit + glib2-32bit + cairo-32bit + pango-32bit + libXi-32bit + libX11-32bit + libXext-32bit + libXrandr-32bit + libXfixes-32bit + gdk-pixbuf-32bit + libXcursor-32bit + libXdamage-32bit + fontconfig-32bit + at-spi2-atk-32bit + libXinerama-32bit + libXcomposite-32bit + libepoxy-32bit + + + gtk3 + atk-32bit + cups-32bit + glib2-32bit + cairo-32bit + pango-32bit + librest-32bit + json-glib-32bit + libXi-32bit + libX11-32bit + libXext-32bit + libXrandr-32bit + libXfixes-32bit + gdk-pixbuf-32bit + libXcursor-32bit + libXdamage-32bit + fontconfig-32bit + at-spi2-atk-32bit + libXinerama-32bit + libXcomposite-32bit + libepoxy-32bit + + + /usr/bin/*-32bit + /usr/lib32 + + + + + 2015-07-07 + 3.16.4 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-03-18 + 3.14.9 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-04-12 + 3.12.2 + Version Bump + PisiLinux Community + admins@pisilinux.org + + + 2014-04-06 + 3.10.7 + Rebuild + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-02-05 + 3.10.7 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-21 + 3.10.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-11 + 3.10.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-09-05 + 3.8.2 + Add missing method and fix pakhandler.py + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-27 + 3.8.2 + Dep Fixed + PisiLinux Community + admins@pisilinux.org + + + 2013-07-14 + 3.8.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-24 + 3.6.4 + First release + Ertan Güven + ertan@pisilinux.org + + + + + + atk + http://developer.gnome.org/atk + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + library + desktop.toolkit.gtk + GTK+ and GNOME Accessibility Toolkit + GTK+ ve GNOME erişilebilirlik kitaplığı + Ces librairies fournissent des outils pour faire des logiciels pour personnes handicapées. + These libraries provide tools for making software for people with disabilities. + Bu kitaplıklar engelli insanlar için yapılan programlarda kullanılabilecek araçları içerir. + mirrors://gnome/atk/2.16/atk-2.16.0.tar.xz + + gobject-introspection-devel + glib2-devel + gtk-doc + + desktop/toolkit/gtk/atk/pspec.xml + + + atk + + glib2 + + + /usr/lib/libatk* + /usr/lib/girepository-1.0 + /usr/share/gir-1.0 + /usr/share/locale + /usr/share/doc + + + + atk-devel + Development files for atk + atk için geliştirme dosyaları + + atk + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + atk-32bit + 32-bit shared libraries for atk + atk için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + glib2-32bit + glibc-32bit + + + atk + glib2-32bit + glibc-32bit + + + /usr/lib32 + + + + + 2015-04-17 + 2.16.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-17 + 2.12.0 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-30 + 2.12.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-10 + 2.10.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-21 + 2.8.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-07 + 2.8.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-02-24 + 2.7.91 + V.Bump + PisiLinux Community + admins@pisilinux.org + + + 2012-10-22 + 2.7.2 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + pango + http://www.pango.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + FTL + library + desktop.toolkit.gtk + Outil de positionnement et de rendu de texte. + Text rendering and layout library + Metin görüntüleme kitaplığı + Pango is a library for laying out and rendering of text, with an emphasis on internationalization. Pango can be used anywhere that text layout is needed, though most of the work on Pango so far has been done in the context of the GTK+ widget toolkit. Pango forms the core of text and font handling for GTK+-2.x. + Pango, özellikle yerelleştirme ile birlikte metin düzenlemek ve biçimlendirmek için bir kitaplıktır. Pango metin biçimlendirmenin gerekli olduğu her yerde kullanılabilir ama şimdiye kadar ki birçok Pango çalışması GTK+ araç takımının parçası ile tamamlandı. Pango formları, GTK+-2.x. için temel metin ve yazı tipini yönetir. + mirrors://gnome/pango/1.36/pango-1.36.8.tar.xz + + gtk-doc + glib2-devel + libX11-devel + freetype-devel + cairo-devel + libXft-devel + harfbuzz-devel + fontconfig-devel + libXrender-devel + gobject-introspection-devel + + + pango-1.32.1-lib64.patch + + desktop/toolkit/gtk/pango/pspec.xml + + + pango + + glib2 + libX11 + freetype + cairo + libXft + harfbuzz + fontconfig + libXrender + + + /etc/pango + /usr/bin + /usr/lib/libpango* + /usr/lib/girepository-1.0 + /usr/lib/pango + /usr/share/gir-1.0 + /usr/share/man + /usr/share/doc + + + System.Package + + + + pango-devel + Development files for pango + pango için geliştirme dosyaları + + pango + cairo-devel + libXft-devel + harfbuzz-devel + fontconfig-devel + + + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/include + + + + pango-docs + Pango reference documents + Pango referans dokümanları + data:doc + + /usr/share/gtk-doc + + + + pango-32bit + 32-bit shared libraries for pango + pango için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + cairo-32bit + glib2-32bit + libX11-32bit + libXft-32bit + freetype-32bit + libXrender-32bit + fontconfig-32bit + libffi-32bit + harfbuzz-32bit + glibc-32bit + + + pango + cairo-32bit + glib2-32bit + libX11-32bit + libXft-32bit + freetype-32bit + libXrender-32bit + fontconfig-32bit + libffi-32bit + harfbuzz-32bit + glibc-32bit + + + /usr/bin/pango-querymodules-32 + /usr/lib32/libpango* + /usr/lib32/girepository-1.0 + /usr/lib32/pango + + + + + 2015-03-18 + 1.36.8 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-07-07 + 1.36.5 + Version Bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-17 + 1.36.3 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-30 + 1.36.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-02-05 + 1.36.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-10 + 1.36.0 + Version bump, cleanup. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-17 + 1.34.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-20 + 1.34.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-07 + 1.32.6 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-22 + 1.32.5 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2011-07-07 + 1.30.1 + First release + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + + + + cairo + http://cairographics.org + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1 + MPL-1.1 + library + desktop.toolkit.gtk + Cairo est une librairie graphique 2D supportant de nombreux périphériques de sortie. + 2D graphics library with bindings of many programming languages + Birden çok çıktı cihazına destek veren bir 2 boyutlu grafik kitaplığı + Cairo is a 2D graphics library with support for multiple output devices (and fileformats). + http://cairographics.org/releases/cairo-1.14.2.tar.xz + + lzo-devel + zlib-devel + glib2-devel + libX11-devel + libpng-devel + libxcb-devel + freetype-devel + libgcc + expat-devel + fontconfig-devel + libXrender-devel + pixman-devel + xcb-util-devel + libXext-devel + mesa-devel + gtk-doc + + desktop/toolkit/gtk/cairo/pspec.xml + + + cairo + + lzo + zlib + glib2 + libX11 + libpng + libxcb + freetype + fontconfig + libXrender + pixman + libXext + mesa + + + /usr/bin + /usr/share/man + /usr/share/doc + /usr/share/gtk-doc + /usr/share/info + /usr/lib + + + + cairo-devel + Development files for cairo + cairo için geliştirme dosyaları + + cairo + mesa-devel + pixman-devel + libXext-devel + fontconfig-devel + libXrender-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + cairo-32bit + 32-bit shared libraries for cairo + cairo için 32-bit paylaşımlı kitaplıklar + emul32 + emul32 + + mesa-32bit + zlib-32bit + glib2-32bit + libX11-32bit + pixman-32bit + libpng-32bit + libxcb-32bit + libXext-32bit + freetype-32bit + fontconfig-32bit + libXrender-32bit + + + cairo + mesa-32bit + zlib-32bit + glib2-32bit + libX11-32bit + pixman-32bit + libpng-32bit + libxcb-32bit + libXext-32bit + freetype-32bit + fontconfig-32bit + libXrender-32bit + + + /usr/lib32/lib* + /usr/lib32/cairo + + + + + 2015-04-18 + 1.14.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2015-01-28 + 1.14.0 + Version bump. + Ergün Salman + Poyraz76@pisilinux.org + + + 2014-05-17 + 1.12.16 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2013-10-09 + 1.12.16 + Version bump, fixes. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-29 + 1.12.14 + Fix dependencies. + Marcin Bojara + marcin@pisilinux.org + + + 2013-04-23 + 1.12.14 + Dep fixed + PisiLinux Community + admins@pisilinux.org + + + 2013-02-24 + 1.12.14 + Version bump, missing dep. + Ertan Güven + ertan@pisilinux.org + + + 2013-01-22 + 1.12.10 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-23 + 1.12.8 + First release + Marcin Bojara + marcin@pisilinux.org + + + + + + at-spi2-atk + http://www.linuxfoundation.org/collaborate/workgroups/accessibility + + PisiLinux Community + admins@pisilinux.org + + LGPLv2+ + service + desktop.misc + Protocol definitions and daemons for D-Bus at-spi + at-spi allows assistive technologies to access GTK-based applications. Essentially it exposes the internals of applications over D-Bus for automation. + mirrors://gnome/at-spi2-atk/2.16/at-spi2-atk-2.16.0.tar.xz + + at-spi2-core-devel + glib2-devel + atk-devel + libX11-devel + dbus-devel + libXtst-devel + + desktop/misc/at-spi2-atk/pspec.xml + + + at-spi2-atk + + atk + dbus + glib2 + at-spi2-core + + + /usr/lib + /usr/share/doc + + + + at-spi2-atk-32bit + 32-bit shared libraries for at-spi2-atk + emul32 + emul32 + + glibc-32bit + at-spi2-core-32bit + atk-32bit + dbus-32bit + glib2-32bit + + + glibc-32bit + atk-32bit + dbus-32bit + glib2-32bit + at-spi2-core-32bit + + + /usr/lib32 + + + + at-spi2-atk-devel + at-spi2-atk için geliştirme dosyaları + at-spi2-atk için geliştirme dosyaları + + at-spi2-atk + + + /usr/lib32/pkgconfig + /usr/lib/pkgconfig + /usr/include + + + + + 2015-04-17 + 2.16.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-04-15 + 2.12.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-10 + 2.10.0 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-27 + 2.8.1 + Move pc files to devel pack, rebuild + split packages + PisiLinux Community + admins@pisilinux.org + + + 2013-06-01 + 2.8.1 + Dep fixed + PisiLinux Community + admins@pisilinux.org + + + 2013-04-23 + 2.8.1 + Dep fixed + PisiLinux Community + admins@pisilinux.org + + + 2013-04-17 + 2.8.1 + Version bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-10-22 + 2.7.2 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + xdg-utils + http://portland.freedesktop.org/wiki/ + + PisiLinux Community + admins@pisilinux.org + + MIT + app:console + desktop.misc + Utilitaires de bureaux communs. + Common desktop utilities + Ortak masaüstü komutları + Xdg-utils is a set of command line tools that assist applications with a variety of desktop integration tasks. About half of the tools focus on tasks commonly required during the installation of a desktop application and the other half focuses on integration with the desktop environment while the application is running. + http://source.pisilinux.org/1.0/xdg-utils.tar.xz + + xmlto + docbook-xsl + lynx + + + enable-other-xdg.patch + xfce-detection.patch + drop-xmlto-stuff.patch + + desktop/misc/xdg-utils/pspec.xml + + + xdg-utils + + /usr/bin + /usr/share/man + + + + + 2014-02-16 + 1.1.0_20140207 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-23 + 20131006 + Release bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-26 + 1.1.0_rc1 + Release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-04-05 + 1.1.0_rc1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + at-spi2-core diff --git a/pisi-index.xml.sha1sum b/pisi-index.xml.sha1sum index 8cd6932f51..e57ac11492 100644 --- a/pisi-index.xml.sha1sum +++ b/pisi-index.xml.sha1sum @@ -1 +1 @@ -05c7da290a12f3f08864fcb88e9194a2c6b1f6a0 \ No newline at end of file +a6a84f54e1890dcfe655f06e3ced47b528b8a180 \ No newline at end of file diff --git a/pisi-index.xml.xz b/pisi-index.xml.xz index bc52378c38ae89b8f322d7e2d9ca5dfa265bc5db..af343e50a10b79b1e7cbfc1ce2c79ccba48dcfff 100644 GIT binary patch delta 122333 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

{{e25h~%6 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 WvygUOajqObFb#_W000000a;pypk(;~ delta 78362 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

0K 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

X3T_5eg4DwP^OaU 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�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

CT^0Gd}VYpG+OVocecl@{D{P{0&I-)(qfN&`!Z# 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 diff --git a/pisi-index.xml.xz.sha1sum b/pisi-index.xml.xz.sha1sum index 09fc8adaf0..0397e192f6 100644 --- a/pisi-index.xml.xz.sha1sum +++ b/pisi-index.xml.xz.sha1sum @@ -1 +1 @@ -234d63ce3646d79210e1e22bd24a17a7ee3e6125 \ No newline at end of file +68ba9e2bc905eccddf9c9c40f4011c3a464147e6 \ No newline at end of file From cc6f78b5505dacc557465e25e21183fd14a664ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 13 Jul 2015 11:42:04 +0300 Subject: [PATCH 162/175] fix build ConsoleKit, remove udev is replaced with eudev in core --- system/auth/ConsoleKit/pspec.xml | 16 +- system/base/udev/actions.py | 157 --------------- system/base/udev/comar/package.py | 29 --- system/base/udev/files/tmpfiles.conf | 1 - system/base/udev/pspec.xml | 284 --------------------------- system/base/udev/translations.xml | 35 ---- 6 files changed, 13 insertions(+), 509 deletions(-) delete mode 100644 system/base/udev/actions.py delete mode 100644 system/base/udev/comar/package.py delete mode 100644 system/base/udev/files/tmpfiles.conf delete mode 100644 system/base/udev/pspec.xml delete mode 100644 system/base/udev/translations.xml diff --git a/system/auth/ConsoleKit/pspec.xml b/system/auth/ConsoleKit/pspec.xml index 86cfe98319..c36fdef99b 100644 --- a/system/auth/ConsoleKit/pspec.xml +++ b/system/auth/ConsoleKit/pspec.xml @@ -12,17 +12,20 @@ library

A framework for defining and tracking users, login sessions, and seats ConsoleKit is a system daemon for tracking what users are logged into the system and how they interact with the computer (e.g. which keyboard and mouse they use). - https://github.com/ConsoleKit2/ConsoleKit2/releases/download/0.9.4/ConsoleKit2-0.9.4.tar.bz2 + https://github.com/ConsoleKit2/ConsoleKit2/releases/download/0.9.5/ConsoleKit2-0.9.5.tar.bz2 acl-devel pam-devel dbus-devel - udev-devel + eudev-devel zlib-devel glib2-devel libX11-devel polkit-devel dbus-glib-devel + libxslt + xmlto + util-linux - - - /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/dbus-1/services - /usr/share/bash-completion/completions - /usr/share/doc - /usr/share/man - - - tmpfiles.conf - - - - System.Package - - - - - udev-devel - system.devel - Development files for udev - - udev - - - /usr/include/systemd/sd-daemon.h - /usr/lib32/pkgconfig/libsystemd-daemon.pc - /usr/lib/pkgconfig/libsystemd-daemon.pc - /usr/share/pkgconfig/udev.pc - - - - - libudev - Dynamic library to access udev device information - - udev - - - /usr/lib/libudev* - /lib/libudev* - - - - - libudev-devel - system.devel - Development files for libudev - - udev - libudev - - - /usr/include/libudev.h - /usr/lib/pkgconfig/libudev.pc - /usr/lib32/pkgconfig/libudev.pc - /usr/share/gtk-doc/html/libudev - - - - - libgudev1 - Libraries for adding libudev support to applications that use glib - - glib2 - libudev - > - - /usr/lib/libgudev* - - - - - libgudev1-devel - system.devel - Development files for libgudev1 - - libudev-devel - libgudev1 - - - /usr/include/gudev-1.0 - /usr/lib/pkgconfig/gudev-1.0* - /usr/lib32/pkgconfig/gudev-1.0* - /usr/share/gir-1.0/GUdev-1.0.gir - /usr/share/gtk-doc/html/gudev - - - - - libudev-32bit - emul32 - 32-bit shared libraries for libudev - emul32 - - libkmod-32bit - libblkid-32bit - - - libudev - - - /usr/lib32/libudev* - /lib32/libudev* - - - - - libgudev1-32bit - emul32 - 32-bit shared libraries for libgudev1 - emul32 - - glib2-32bit - - - libgudev1 - libudev-32bit - glib2-32bit - - - /usr/lib32/libgudev* - - - - - - 2014-07-01 - 214 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-05-11 - 212 - Add upstream patches. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-28 - 212 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-12 - 211 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-03-07 - 210 - Rebuild. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-26 - 210 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-02-20 - 209 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2014-01-11 - 208 - Add tmpfiles.conf, git updates. - Marcin Bojara - marcin@pisilinux.org - - - 2013-10-30 - 208 - Version bump. - Serdar Soytetir - kaptan@pisilinux.org - - - 2013-09-10 - 206 - Add /run/udev directory. - Marcin Bojara - marcin@pisilinux.org - - - 2013-08-13 - 206 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-07-28 - 204 - Fix pc files for emul32. - Marcin Bojara - marcin@pisilinux.org - - - 2013-06-13 - 204 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-03-30 - 200 - Version bump. - Marcin Bojara - marcin@pisilinux.org - - - 2013-01-24 - 197 - Version bump, add emul32 - Marcin Bojara - marcin@pisilinux.org - - - 2012-10-11 - 194 - First release - Erdem Artan - admins@pisilinux.org - - - diff --git a/system/base/udev/translations.xml b/system/base/udev/translations.xml deleted file mode 100644 index 5535e5820b..0000000000 --- a/system/base/udev/translations.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - udev - Linux dinamik ve sürekli aygıt isimlendirme desteği (kernel dışındaki devfs) - udev linux kullanıcılarının dinamik /dev dizinine sahip olmalarına olanek verir ve tutarlı cihaz isimleri almasını sağlar. - udev permet aux utilisateurs Linux d'avoir un répertoire /dev dynamique et donne la possibilité d'avoir des noms de périphériques persistants. - udev ermöglicht Linux Benutzern ein dynamisches /dev Verzeichnis und beständige Gerätenamen - - - - libudev - udev aygıt bilgilerini sunan kitaplık - - - - libudev-32bit - udev için 32-bit paylaşımlı kitaplıklar - - - - libudev-devel - libudev için geliştirme dosyaları - - - - libgudev1 - glib kullanan uygulamalara libudev desteği eklemek için kullanılan kitaplık - - - - libgudev1-devel - libgudev1 için geliştirme dosyaları - - From 58e38c5148fc092048ffeada642d9356214e0034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 13 Jul 2015 14:24:05 +0300 Subject: [PATCH 163/175] gnutls and deps fix deps. --- util/crypt/gnutls/actions.py | 39 +++++ util/crypt/gnutls/files/libgnutls-config | 91 ++++++++++ util/crypt/gnutls/pspec.xml | 183 +++++++++++++++++++++ util/crypt/gnutls/translations.xml | 30 ++++ util/crypt/libtasn1/actions.py | 32 ++++ util/crypt/libtasn1/files/libgnutls-config | 91 ++++++++++ util/crypt/libtasn1/pspec.xml | 118 +++++++++++++ util/crypt/libtasn1/translations.xml | 18 ++ util/crypt/p11-kit/actions.py | 22 +++ util/crypt/p11-kit/pspec.xml | 138 ++++++++++++++++ util/crypt/p11-kit/translations.xml | 16 ++ 11 files changed, 778 insertions(+) create mode 100644 util/crypt/gnutls/actions.py create mode 100644 util/crypt/gnutls/files/libgnutls-config create mode 100644 util/crypt/gnutls/pspec.xml create mode 100644 util/crypt/gnutls/translations.xml create mode 100644 util/crypt/libtasn1/actions.py create mode 100644 util/crypt/libtasn1/files/libgnutls-config create mode 100644 util/crypt/libtasn1/pspec.xml create mode 100644 util/crypt/libtasn1/translations.xml create mode 100644 util/crypt/p11-kit/actions.py create mode 100644 util/crypt/p11-kit/pspec.xml create mode 100644 util/crypt/p11-kit/translations.xml diff --git a/util/crypt/gnutls/actions.py b/util/crypt/gnutls/actions.py new file mode 100644 index 0000000000..549c18c256 --- /dev/null +++ b/util/crypt/gnutls/actions.py @@ -0,0 +1,39 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + options = "--disable-static \ + --disable-rpath \ + --disable-silent-rules \ + --disable-guile \ + --enable-heartbeat-support \ + --with-zlib \ + --without-tpm \ + --disable-valgrind-tests" + + if get.buildTYPE() == "emul32": + options += " --disable-hardware-acceleration \ + --enable-local-libopts \ + " + + autotools.configure(options) + + pisitools.dosed("libtool", " -shared ", " -Wl,--as-needed -shared ") + +def build(): + autotools.make() + +def check(): + #some tests fail in emul32 + if not get.buildTYPE() == "emul32": + autotools.make("-k check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) diff --git a/util/crypt/gnutls/files/libgnutls-config b/util/crypt/gnutls/files/libgnutls-config new file mode 100644 index 0000000000..8970bf4de8 --- /dev/null +++ b/util/crypt/gnutls/files/libgnutls-config @@ -0,0 +1,91 @@ +#!/bin/sh + +prefix=/usr +exec_prefix=/usr +exec_prefix_set=no + +name=`basename $0` +name=${name#lib} +name=${name%-config} + +libs=`pkg-config --libs $name` +cflags=`pkg-config --cflags $name` +version=`pkg-config --modversion $name` + +usage() +{ + +echo Usage: lib$name-config [OPTIONS] + cat <&2 +fi + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then + exec_prefix=$optarg + fi + ;; + --prefix) + echo_prefix=yes + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo_exec_prefix=yes + ;; + --version) + echo $version + exit 0 + ;; + --cflags) + echo_cflags=yes + ;; + --libs) + echo_libs=yes + ;; + --help) + usage 0 + ;; + *) + usage 1 1>&2 + ;; + esac + shift +done + +if test "$echo_prefix" = "yes"; then + echo $prefix +fi + +if test "$echo_exec_prefix" = "yes"; then + echo $exec_prefix +fi + +if test "$echo_cflags" = "yes"; then + echo $cflags +fi + +if test "$echo_libs" = "yes"; then + echo $libs +fi diff --git a/util/crypt/gnutls/pspec.xml b/util/crypt/gnutls/pspec.xml new file mode 100644 index 0000000000..d82d61976a --- /dev/null +++ b/util/crypt/gnutls/pspec.xml @@ -0,0 +1,183 @@ + + + + + gnutls + http://www.gnutls.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + GNU TLS Library + gnutls is a project that aims to develop a library which provides a secure layer, over a reliable transport layer. Currently the GnuTLS library implements the proposed standards by the IETF's TLS working group. + http://mirror.tje.me.uk/pub/mirrors/ftp.gnupg.org/gnutls/v3.3/gnutls-3.3.16.tar.xz + + gc-devel + gmp-devel + nettle-devel + autogen-devel + p11-kit-devel + libidn-devel + zlib-devel + libtasn1-devel + + + + + gnutls + + zlib + libidn + gmp + nettle + autogen + p11-kit + libgcc + libtasn1 + + + /usr/share + /usr/lib + /usr/bin + + + + + gnutls-devel + Development files for gnutls + + nettle-devel + p11-kit-devel + libtasn1-devel + gnutls + + + /usr/include + /usr/share/man/man3 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/info/gnutls* + /usr/bin/libgnutls*-config + + + libgnutls-config + libgnutls-config + + + + + gnutls-32bit + emul32 + 32-bit shared libraries for gnutls + emul32 + + gmp-32bit + zlib-32bit + libidn-32bit + nettle-32bit + p11-kit-32bit + libtasn1-32bit + + + libgcc + glibc-32bit + gmp-32bit + zlib-32bit + nettle-32bit + p11-kit-32bit + libtasn1-32bit + + + /usr/lib32 + + + + + + 2015-07-13 + 3.3.16 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-05-20 + 3.3.15 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-12-13 + 3.3.11 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-07-06 + 3.3.5 + Version bump and security update(CVE-2014-3466) + Vedat Demir + vedat@pisilinux.org + + + 2014-05-24 + 3.3.2 + Rebuild for gcc. + PisiLinux Community + admins@pisilinux.org + + + 2014-05-21 + 3.3.2 + Version bump, rm unneed deps. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-04-20 + 3.3.1 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-06 + 3.2.5 + Rebuild to fix stripping. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-10-27 + 3.2.5 + Version bump, clean up, enable tests. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-30 + 3.1.9 + Rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-03-04 + 3.1.9 + Version bump + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2012-11-02 + 3.1.3 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/util/crypt/gnutls/translations.xml b/util/crypt/gnutls/translations.xml new file mode 100644 index 0000000000..82138c8c89 --- /dev/null +++ b/util/crypt/gnutls/translations.xml @@ -0,0 +1,30 @@ + + + + gnutls + GNU TLS Kütüphanesi + Biblioteka GNU TLS (Transport Layer Security) + GnuTLS, erişilebilir bir gönderim katmanı üzerinde güvenli katman oluşturmayı amaçlayan bir projedir. GnuTLS kütüphanesi halen IETF TLS çalışma grubunun öngördüğü standartları uygulamaya geçirmektedir. + GnuTLS est un projet dont l'objectif est de développer une librairie fournissant une couche de sécurité au dessus d'une couche de transport fiable. Actuellement la librairie GnuTLS implémente les standards proposés par le groupe de travail TLs de l'IETF. + GnuTLS es un proyecto que apunta al desarrollo de una librería, que facilite una capa segura, a través de una capa de transporte fiable. Actualmente la librería GnuTLS implementa los estándares propuestos del grupo de trabajo de TLS de IETF. + GnuTLS to projekt mający na celu stworzenie biblioteki udostępniającej powłokę bezpieczeństwa ponad powłoką transportową (np. TCP/IP). Aktualnie biblioteka gnuTLS implementuje standardy proponowane przez grupę roboczą IETF TLS. + + + + gnutls-guile + gnutls için guile bağlayıcıları + Wiązania Guile do GnuTLS. + + + + gnutls-devel + gnutls için geliştirme dosyaları + Pliki nagłówkowe do gnutls. + + + + gnutls-32bit + gnutls için 32-bit paylaşımlı kitaplıklar + 32-bitowe biblioteki GnuTLS. + + diff --git a/util/crypt/libtasn1/actions.py b/util/crypt/libtasn1/actions.py new file mode 100644 index 0000000000..1f294ed102 --- /dev/null +++ b/util/crypt/libtasn1/actions.py @@ -0,0 +1,32 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + options = "--disable-static" + + if not get.buildTYPE() == "emul32": + options += " --libdir=/usr/lib" + + autotools.configure(options) + + #pisitools.dosed("libtool", "^sys_lib_dlsearch_path_spec=.*", "sys_lib_dlsearch_path_spec=\"/%{_lib} %{_libdir} \"") + +def build(): + autotools.make() + +def check(): + autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + if get.buildTYPE() == "emul32": return + + pisitools.dodoc("ChangeLog", "README", "NEWS", "AUTHORS", "COPYING") diff --git a/util/crypt/libtasn1/files/libgnutls-config b/util/crypt/libtasn1/files/libgnutls-config new file mode 100644 index 0000000000..167bc483d5 --- /dev/null +++ b/util/crypt/libtasn1/files/libgnutls-config @@ -0,0 +1,91 @@ +#!/bin/sh + +prefix=/usr +exec_prefix=/usr +exec_prefix_set=no + +name=`basename $0` +name=${name#lib} +name=${name%-config} + +libs=`pkg-config --libs $name` +cflags=`pkg-config --cflags $name` +version=`pkg-config --modversion $name` + +usage() +{ + +echo Usage: lib$name-config [OPTIONS] +cat <&2 +fi + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then +exec_prefix=$optarg + fi + ;; + --prefix) + echo_prefix=yes + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo_exec_prefix=yes + ;; + --version) + echo $version + exit 0 + ;; + --cflags) + echo_cflags=yes + ;; + --libs) + echo_libs=yes + ;; + --help) + usage 0 + ;; + *) + usage 1 1>&2 + ;; + esac + shift +done + +if test "$echo_prefix" = "yes"; then + echo $prefix +fi + +if test "$echo_exec_prefix" = "yes"; then + echo $exec_prefix +fi + +if test "$echo_cflags" = "yes"; then + echo $cflags +fi + +if test "$echo_libs" = "yes"; then + echo $libs +fi \ No newline at end of file diff --git a/util/crypt/libtasn1/pspec.xml b/util/crypt/libtasn1/pspec.xml new file mode 100644 index 0000000000..878ace5a76 --- /dev/null +++ b/util/crypt/libtasn1/pspec.xml @@ -0,0 +1,118 @@ + + + + + libtasn1 + http://www.gnutls.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + ASN.1 library used in GNUTLS + libtasn1 is the ASN.1 library which provides ASN.1 structures parsing capabilities for use with GNUTLS. + http://ftp.gnu.org/gnu/libtasn1/libtasn1-4.5.tar.gz + + + + libtasn1 + + /usr/share + /usr/lib + /usr/share/man + /usr/share/doc + /usr/bin + + + + + libtasn1-devel + Development files for libtasn1 + + libtasn1 + + + /usr/include + /usr/share/man/man3 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + libtasn1-32bit + emul32 + 32-bit shared libraries for libtasn1 + emul32 + + glibc-32bit + + + libtasn1 + glibc-32bit + + + /usr/lib32/ + + + + + + 2015-07-13 + 4.5 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2015-04-28 + 4.4 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-10-31 + 4.2 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-24 + 3.5 + Version bump. + PisiLinux Community + admins@pisilinux.org + + + 2014-04-20 + 3.4 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-09 + 3.3 + Rebuild. + Kamil Atlı + suvarice@gmail.com + + + 2013-07-27 + 3.3 + Move pc files to devel pack, rebuild + v.bump + PisiLinux Community + admins@pisilinux.org + + + 2012-10-18 + 2.14 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/util/crypt/libtasn1/translations.xml b/util/crypt/libtasn1/translations.xml new file mode 100644 index 0000000000..da660e3c43 --- /dev/null +++ b/util/crypt/libtasn1/translations.xml @@ -0,0 +1,18 @@ + + + + libtasn1 + GNUTLS için kullanılan ASN.1 kütüphanesi + libtasn1, ASN.1 yapılarının ayrıştırılmasını sağlayan ve GNUTLS içerisinde kullanılan ASN.1 kütüphanesidir. + + + + libtasn1-devel + libtasn1 için geliştirme dosyaları + + + + libtasn1-32bit + libtasn1 için 32bit kütüphanesi + + \ No newline at end of file diff --git a/util/crypt/p11-kit/actions.py b/util/crypt/p11-kit/actions.py new file mode 100644 index 0000000000..b5d24041f4 --- /dev/null +++ b/util/crypt/p11-kit/actions.py @@ -0,0 +1,22 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.configure("--with-module-path=/usr/lib%s/pkcs11" % ("32" if get.buildTYPE() == "emul32" else "")) + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + if get.buildTYPE() == "emul32": return + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "README") diff --git a/util/crypt/p11-kit/pspec.xml b/util/crypt/p11-kit/pspec.xml new file mode 100644 index 0000000000..e1594e058d --- /dev/null +++ b/util/crypt/p11-kit/pspec.xml @@ -0,0 +1,138 @@ + + + + + p11-kit + http://p11-glue.freedesktop.org/ + + PisiLinux Community + admins@pisilinux.org + + BSD + library + util.crypt + Library to work with PKCS#11 modules + The p11-kit package Provides a way to load and enumerate PKCS #11 (a Cryptographic Token Interface Standard) modules. + http://p11-glue.freedesktop.org/releases/p11-kit-0.23.1.tar.gz + + libtasn1-devel + libffi-devel + + + + + p11-kit + + libtasn1 + libffi + + + /usr/bin + /usr/share/doc + /usr/share/gtk-doc + /usr/share/p11-kit + /usr/lib + /etc/pkcs11 + + + + + p11-kit-devel + p11-kit için geliştirme dosyaları + + p11-kit + + + /usr/include + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + + + + + p11-kit-32bit + emul32 + 32-bit shared libraries for p11-kit + emul32 + + libtasn1-32bit + libffi-32bit + glibc-32bit + + + p11-kit + libffi-32bit + libtasn1-32bit + glibc-32bit + + + /usr/lib32 + + + + + + 2015-04-28 + 0.23.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-12-13 + 0.22.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2014-05-24 + 0.20.2 + Rebuild for gcc. + PisiLinux Community + admins@pisilinux.org + + + 2014-04-20 + 0.20.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-26 + 0.20.1 + Version bump + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-07-31 + 0.19.3 + version bump + Erdinç Gültekin + erdincgultekin@pisilinux.org + + + 2013-07-26 + 0.15.2 + Move pc files to devel pack,rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-02-23 + 0.15.2 + Version bump + Ertan Güven + ertan@pisilinux.org + + + 2012-11-02 + 0.14 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/util/crypt/p11-kit/translations.xml b/util/crypt/p11-kit/translations.xml new file mode 100644 index 0000000000..c93b170330 --- /dev/null +++ b/util/crypt/p11-kit/translations.xml @@ -0,0 +1,16 @@ + + + + p11-kit + Library to work with PKCS#11 modules + Biblioteka i moduł proxy do właściwego wczytywania i współdzielenia modułów PKCS #11 + The p11-kit package Provides a way to load and enumerate PKCS #11 (a Cryptographic Token Interface Standard) modules. + p11-kit zapewnia możliwość ładowania i numeracji modułów PKCS #11 (a Cryptographic Token Interface Standard). + + + + p11-kit-devel + p11-kit için geliştirme dosyaları. + Pliki nagłówkowe do biplioteki p11-kit. + + From 0a5bc79cc4324e9f18b4f1b0854883b05d24f966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 13 Jul 2015 15:15:56 +0300 Subject: [PATCH 164/175] libsoup, glib-networking and gnutls fix deps. --- network/library/component.xml | 3 + network/library/glib-networking/actions.py | 27 +++++++++ network/library/glib-networking/pspec.xml | 57 +++++++++++++++++++ .../library/glib-networking/translations.xml | 8 +++ programming/misc/libsoup/actions.py | 6 +- programming/misc/libsoup/pspec.xml | 15 ++--- util/crypt/gnutls/pspec.xml | 1 + 7 files changed, 106 insertions(+), 11 deletions(-) create mode 100644 network/library/component.xml create mode 100644 network/library/glib-networking/actions.py create mode 100644 network/library/glib-networking/pspec.xml create mode 100644 network/library/glib-networking/translations.xml diff --git a/network/library/component.xml b/network/library/component.xml new file mode 100644 index 0000000000..4e017e10ad --- /dev/null +++ b/network/library/component.xml @@ -0,0 +1,3 @@ + + network.library + diff --git a/network/library/glib-networking/actions.py b/network/library/glib-networking/actions.py new file mode 100644 index 0000000000..43ba527a00 --- /dev/null +++ b/network/library/glib-networking/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.configure("--disable-static \ + --disable-installed-tests \ + --with-ca-certificates=/etc/ssl/certs/ca-certificates.crt \ + --without-libproxy \ + --with-gnutls \ + --with-pkcs11") + +def build(): + autotools.make() + +def check(): + autotools.make("check") + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README") \ No newline at end of file diff --git a/network/library/glib-networking/pspec.xml b/network/library/glib-networking/pspec.xml new file mode 100644 index 0000000000..45b5cef2b5 --- /dev/null +++ b/network/library/glib-networking/pspec.xml @@ -0,0 +1,57 @@ + + + + + glib-networking + http://git.gnome.org/browse/glib-networking/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2+ + library + Network-related giomodules for glib + This package contains various network related extensions for the GIO library. + mirrors://gnome/glib-networking/2.38/glib-networking-2.38.2.tar.xz + + gnutls-devel + p11-kit-devel + ca-certificates + intltool + glib2-devel + + + + + glib-networking + + gnutls + p11-kit + glib2 + ca-certificates + + + /usr/lib/gio/modules + /usr/libexec + /usr/share + /usr/share/doc/glib-networking + + + + + + 2014-03-30 + 2.38.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-01-27 + 2.34.2 + First release. + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/network/library/glib-networking/translations.xml b/network/library/glib-networking/translations.xml new file mode 100644 index 0000000000..a366fdd11f --- /dev/null +++ b/network/library/glib-networking/translations.xml @@ -0,0 +1,8 @@ + + + + glib-networking + Moduły GIO dotyczące sieci do glib + Pakiet zawiera różne rozszerzenia dotyczące sieci do biblioteki GIO. + + diff --git a/programming/misc/libsoup/actions.py b/programming/misc/libsoup/actions.py index a0f37d9448..2d5a212166 100644 --- a/programming/misc/libsoup/actions.py +++ b/programming/misc/libsoup/actions.py @@ -14,12 +14,14 @@ def setup(): --disable-static \ --without-apache-httpd \ --without-apache-module-dir \ + --disable-tls-check \ " + if get.buildTYPE() == "_emul32": options += " --libdir=/usr/lib32 \ --bindir=/_emul32/bin \ - --sbindir=/_emul32/sbin \ - --disable-tls-check" + --sbindir=/_emul32/sbin" + shelltools.export("CC", "%s -m32" % get.CC()) shelltools.export("CXX", "%s -m32" % get.CXX()) diff --git a/programming/misc/libsoup/pspec.xml b/programming/misc/libsoup/pspec.xml index 5b571fcf38..e593e023f0 100644 --- a/programming/misc/libsoup/pspec.xml +++ b/programming/misc/libsoup/pspec.xml @@ -14,19 +14,14 @@ libsoup is an HTTP client/server library for GNOME. mirrors://gnome/libsoup/2.50/libsoup-2.50.0.tar.xz - gtk-doc - tls-devel - gconf-devel - gnutls-devel - glib-networking libgcrypt-devel - libgnome-keyring-devel + gtk-doc glib2-devel libxml2-devel sqlite-devel - - - + intltool + gettext-devel + @@ -35,6 +30,7 @@ glib2 libxml2 sqlite + glib-networking /usr/lib @@ -47,6 +43,7 @@ libsoup-gnome + glib2 libsoup diff --git a/util/crypt/gnutls/pspec.xml b/util/crypt/gnutls/pspec.xml index d82d61976a..a7bbc66ed3 100644 --- a/util/crypt/gnutls/pspec.xml +++ b/util/crypt/gnutls/pspec.xml @@ -51,6 +51,7 @@ nettle-devel p11-kit-devel libtasn1-devel + zlib-devel gnutls From e2b0e4e10924ad9b212341239e15383683837cdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 13 Jul 2015 15:49:06 +0300 Subject: [PATCH 165/175] nano moved here. --- editor/component.xml | 3 + editor/nano/actions.py | 25 +++ ...0001-nanorc-default-settings-changes.patch | 173 ++++++++++++++++++ ...ult-and-avoid-calling-stat-on-a-NULL.patch | 77 ++++++++ ...timens-if-available-instead-of-utime.patch | 128 +++++++++++++ .../files/fedora/nano-2.3.0-warnings.patch | 42 +++++ editor/nano/pspec.xml | 77 ++++++++ editor/nano/translations.xml | 9 + 8 files changed, 534 insertions(+) create mode 100644 editor/component.xml create mode 100644 editor/nano/actions.py create mode 100644 editor/nano/files/0001-nanorc-default-settings-changes.patch create mode 100644 editor/nano/files/fedora/0001-check-stat-s-result-and-avoid-calling-stat-on-a-NULL.patch create mode 100644 editor/nano/files/fedora/0002-use-futimens-if-available-instead-of-utime.patch create mode 100644 editor/nano/files/fedora/nano-2.3.0-warnings.patch create mode 100644 editor/nano/pspec.xml create mode 100644 editor/nano/translations.xml diff --git a/editor/component.xml b/editor/component.xml new file mode 100644 index 0000000000..84a47fb070 --- /dev/null +++ b/editor/component.xml @@ -0,0 +1,3 @@ + + editor + diff --git a/editor/nano/actions.py b/editor/nano/actions.py new file mode 100644 index 0000000000..49e400a34c --- /dev/null +++ b/editor/nano/actions.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-fvi") + autotools.configure("--disable-rpath \ + --enable-utf8 \ + --enable-altrcname \ + --disable-speller") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.insinto("/etc/", "doc/nanorc.sample", "nanorc") + pisitools.dosym("/usr/bin/nano", "/bin/nano") + + pisitools.dohtml("doc/*.html") + pisitools.dodoc("ChangeLog*", "README", "doc/nanorc.sample", "AUTHORS", "NEWS", "TODO", "COPYING*", "THANKS", "UPGRADE") diff --git a/editor/nano/files/0001-nanorc-default-settings-changes.patch b/editor/nano/files/0001-nanorc-default-settings-changes.patch new file mode 100644 index 0000000000..d72750a939 --- /dev/null +++ b/editor/nano/files/0001-nanorc-default-settings-changes.patch @@ -0,0 +1,173 @@ +From ffb42bb0d87586adac14144b98333eb52808ce99 Mon Sep 17 00:00:00 2001 +From: Mehmet Emre Atasever +Date: Sun, 26 Jun 2011 18:39:04 +0300 +Subject: [PATCH] nanorc default settings changes + +Some default settings are not so convenient for Pisi Linux nano users. + +also fixes bugs (#pb18483, #pb18484) +--- + doc/nanorc.sample.in | 64 +++++++++++++++++++++++++------------------------- + 1 files changed, 32 insertions(+), 32 deletions(-) + +diff --git a/doc/nanorc.sample.in b/doc/nanorc.sample.in +index f164c26..24d3c7b 100644 +--- a/doc/nanorc.sample.in ++++ b/doc/nanorc.sample.in +@@ -25,17 +25,17 @@ + # set backupdir "" + + ## Do backwards searches by default. +-# set backwards ++set backwards + + ## Use bold text instead of reverse video text. +-# set boldtext ++set boldtext + + ## The characters treated as closing brackets when justifying + ## paragraphs. They cannot contain blank characters. Only closing + ## punctuation, optionally followed by closing brackets, can end + ## sentences. + ## +-# set brackets ""')>]}" ++set brackets ""')>]}" + + ## Do case sensitive searches by default. + # set casesensitive +@@ -60,7 +60,7 @@ + ## searches. They cannot contain blank characters. The former set must + ## come before the latter set, and both must be in the same order. + ## +-# set matchbrackets "(<[{)>]}" ++set matchbrackets "(<[{)>]}" + + ## Use the blank line below the titlebar as extra editing space. + # set morespace +@@ -139,7 +139,7 @@ + # set smarthome + + ## Use smooth scrolling as the default. +-# set smooth ++set smooth + + ## Enable soft line wrapping (AKA full line display). + # set softwrap +@@ -153,7 +153,7 @@ + # set suspend + + ## Use this tab size instead of the default; it must be greater than 0. +-# set tabsize 8 ++set tabsize 4 + + ## Convert typed tabs to spaces. + # set tabstospaces +@@ -234,79 +234,79 @@ + + + ## Nanorc files +-# include "@PKGDATADIR@/nanorc.nanorc" ++include "@PKGDATADIR@/nanorc.nanorc" + + ## C/C++ +-# include "@PKGDATADIR@/c.nanorc" ++include "@PKGDATADIR@/c.nanorc" + + ## Makefiles +-# include "@PKGDATADIR@/makefile.nanorc" ++include "@PKGDATADIR@/makefile.nanorc" + + ## Cascading Style Sheets +-# include "@PKGDATADIR@/css.nanorc" ++include "@PKGDATADIR@/css.nanorc" + + ## Debian files +-# include "@PKGDATADIR@/debian.nanorc" ++include "@PKGDATADIR@/debian.nanorc" + + ## Gentoo files +-# include "@PKGDATADIR@/gentoo.nanorc" ++include "@PKGDATADIR@/gentoo.nanorc" + + ## HTML +-# include "@PKGDATADIR@/html.nanorc" ++include "@PKGDATADIR@/html.nanorc" + + ## PHP +-# include "@PKGDATADIR@/php.nanorc" ++include "@PKGDATADIR@/php.nanorc" + + ## TCL +-# include "@PKGDATADIR@/tcl.nanorc" ++include "@PKGDATADIR@/tcl.nanorc" + + ## TeX +-# include "@PKGDATADIR@/tex.nanorc" ++include "@PKGDATADIR@/tex.nanorc" + + ## Quoted emails (under e.g. mutt) +-# include "@PKGDATADIR@/mutt.nanorc" ++include "@PKGDATADIR@/mutt.nanorc" + + ## Patch files +-# include "@PKGDATADIR@/patch.nanorc" ++include "@PKGDATADIR@/patch.nanorc" + + ## Manpages +-# include "@PKGDATADIR@/man.nanorc" ++include "@PKGDATADIR@/man.nanorc" + + ## Groff +-# include "@PKGDATADIR@/groff.nanorc" ++include "@PKGDATADIR@/groff.nanorc" + + ## Perl +-# include "@PKGDATADIR@/perl.nanorc" ++include "@PKGDATADIR@/perl.nanorc" + + ## Python +-# include "@PKGDATADIR@/python.nanorc" ++include "@PKGDATADIR@/python.nanorc" + + ## Ruby +-# include "@PKGDATADIR@/ruby.nanorc" ++include "@PKGDATADIR@/ruby.nanorc" + + ## Java +-# include "@PKGDATADIR@/java.nanorc" ++include "@PKGDATADIR@/java.nanorc" + + ## Fortran +-# include "@PKGDATADIR@/fortran.nanorc" ++include "@PKGDATADIR@/fortran.nanorc" + + ## Objective-C +-# include "@PKGDATADIR@/objc.nanorc" ++include "@PKGDATADIR@/objc.nanorc" + + ## OCaml +-# include "@PKGDATADIR@/ocaml.nanorc" ++include "@PKGDATADIR@/ocaml.nanorc" + + ## AWK +-# include "@PKGDATADIR@/awk.nanorc" ++include "@PKGDATADIR@/awk.nanorc" + + ## Assembler +-# include "@PKGDATADIR@/asm.nanorc" ++include "@PKGDATADIR@/asm.nanorc" + + ## Bourne shell scripts +-# include "@PKGDATADIR@/sh.nanorc" ++include "@PKGDATADIR@/sh.nanorc" + + ## POV-Ray +-# include "@PKGDATADIR@/pov.nanorc" ++include "@PKGDATADIR@/pov.nanorc" + + ## XML-type files +-# include "@PKGDATADIR@/xml.nanorc" ++include "@PKGDATADIR@/xml.nanorc" +-- +1.7.5.4 + diff --git a/editor/nano/files/fedora/0001-check-stat-s-result-and-avoid-calling-stat-on-a-NULL.patch b/editor/nano/files/fedora/0001-check-stat-s-result-and-avoid-calling-stat-on-a-NULL.patch new file mode 100644 index 0000000000..739f6f5d2f --- /dev/null +++ b/editor/nano/files/fedora/0001-check-stat-s-result-and-avoid-calling-stat-on-a-NULL.patch @@ -0,0 +1,77 @@ +From fc87b0a32c130a2b3ab37e614d4a1c6c8e5d70e7 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Thu, 19 Aug 2010 13:58:12 +0200 +Subject: [PATCH 1/2] check stat's result and avoid calling stat on a NULL pointer + +--- + src/files.c | 33 +++++++++++++++++++++++++-------- + 1 files changed, 25 insertions(+), 8 deletions(-) + +diff --git a/src/files.c b/src/files.c +index f6efbf1..99cc1b8 100644 +--- a/src/files.c ++++ b/src/files.c +@@ -103,6 +103,24 @@ void initialize_buffer_text(void) + openfile->totsize = 0; + } + ++#ifndef NANO_TINY ++/* If *pstat is NULL, perform a stat call with the given file name. On success, ++ * *pstat points to a newly allocated buffer that contains the stat's result. ++ * On stat's failure, the NULL pointer in *pstat is left intact. */ ++void stat_if_needed(const char *filename, struct stat **pstat) ++{ ++ struct stat *tmp; ++ if (*pstat) ++ return; ++ ++ tmp = (struct stat *)nmalloc(sizeof(struct stat)); ++ if (0 == stat(filename, tmp)) ++ *pstat = tmp; ++ else ++ free(tmp); ++} ++#endif ++ + /* If it's not "", filename is a file to open. We make a new buffer, if + * necessary, and then open and read the file, if applicable. */ + void open_buffer(const char *filename, bool undoable) +@@ -148,11 +166,7 @@ void open_buffer(const char *filename, bool undoable) + if (rc > 0) { + read_file(f, rc, filename, undoable, new_buffer); + #ifndef NANO_TINY +- if (openfile->current_stat == NULL) { +- openfile->current_stat = +- (struct stat *)nmalloc(sizeof(struct stat)); +- stat(filename, openfile->current_stat); +- } ++ stat_if_needed(filename, &openfile->current_stat); + #endif + } + +@@ -1532,8 +1546,8 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type + * specified it interactively), stat and save the value + * or else we will chase null pointers when we do + * modtime checks, preserve file times, etc. during backup */ +- if (openfile->current_stat == NULL && !tmp && realexists) +- stat(realname, openfile->current_stat); ++ if (!tmp && realexists) ++ stat_if_needed(realname, &openfile->current_stat); + + /* We backup only if the backup toggle is set, the file isn't + * temporary, and the file already exists. Furthermore, if we +@@ -1924,7 +1938,10 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type + if (openfile->current_stat == NULL) + openfile->current_stat = + (struct stat *)nmalloc(sizeof(struct stat)); +- stat(realname, openfile->current_stat); ++ if (stat(realname, openfile->current_stat)) { ++ free(openfile->current_stat); ++ openfile->current_stat = NULL; ++ } + #endif + + statusbar(P_("Wrote %lu line", "Wrote %lu lines", +-- +1.7.4 + diff --git a/editor/nano/files/fedora/0002-use-futimens-if-available-instead-of-utime.patch b/editor/nano/files/fedora/0002-use-futimens-if-available-instead-of-utime.patch new file mode 100644 index 0000000000..d2a687fb24 --- /dev/null +++ b/editor/nano/files/fedora/0002-use-futimens-if-available-instead-of-utime.patch @@ -0,0 +1,128 @@ +From 23510b930ea31f7de8005e2f0ff6cab7062b4e26 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Thu, 19 Aug 2010 15:23:06 +0200 +Subject: [PATCH 2/2] use futimens() if available, instead of utime() + +--- + config.h.in | 3 +++ + configure | 2 +- + configure.ac | 2 +- + src/files.c | 48 +++++++++++++++++++++++++++++++++++------------- + 4 files changed, 40 insertions(+), 15 deletions(-) + +diff --git a/config.h.in b/config.h.in +index 52e13f1..cb17b29 100644 +--- a/config.h.in ++++ b/config.h.in +@@ -64,6 +64,9 @@ + /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ + #undef HAVE_DOPRNT + ++/* Define to 1 if you have the `futimens' function. */ ++#undef HAVE_FUTIMENS ++ + /* Define to 1 if you have the `getdelim' function. */ + #undef HAVE_GETDELIM + +diff --git a/configure b/configure +index 02733c7..1805e53 100755 +--- a/configure ++++ b/configure +@@ -7484,7 +7484,7 @@ fi + + + +-for ac_func in getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf ++for ac_func in futimens getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf + do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +diff --git a/configure.ac b/configure.ac +index 66f8ee3..f4975d3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -415,7 +415,7 @@ fi]) + + dnl Checks for functions. + +-AC_CHECK_FUNCS(getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf) ++AC_CHECK_FUNCS(futimens getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf) + + if test x$enable_utf8 != xno; then + AC_CHECK_FUNCS(iswalnum iswblank iswpunct iswspace nl_langinfo mblen mbstowcs mbtowc wctomb wcwidth) +diff --git a/src/files.c b/src/files.c +index 99cc1b8..9a1bdcc 100644 +--- a/src/files.c ++++ b/src/files.c +@@ -1455,6 +1455,29 @@ int copy_file(FILE *inn, FILE *out) + return retval; + } + ++#ifdef HAVE_FUTIMENS ++/* set atime/mtime by file descriptor */ ++int utime_wrap(int fd, const char *filename, struct utimbuf *ut) ++{ ++ struct timespec times[2]; ++ (void) filename; ++ ++ times[0].tv_sec = ut->actime; ++ times[1].tv_sec = ut->modtime; ++ times[0].tv_nsec = 0L; ++ times[1].tv_nsec = 0L; ++ ++ return futimens(fd, times); ++} ++#else ++/* set atime/mtime by file name */ ++int utime_wrap(int fd, const char *filename, struct utimbuf *ut) ++{ ++ (void) fd; ++ return utime(filename, ut); ++} ++#endif ++ + /* Write a file out to disk. If f_open isn't NULL, we assume that it is + * a stream associated with the file, and we don't try to open it + * ourselves. If tmp is TRUE, we set the umask to disallow anyone else +@@ -1694,6 +1717,18 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type + fprintf(stderr, "Backing up %s to %s\n", realname, backupname); + #endif + ++ /* Set backup's file metadata. */ ++ if (utime_wrap(backup_fd, backupname, &filetime) == -1 ++ && !ISSET(INSECURE_BACKUP)) { ++ statusbar(_("Error writing backup file %s: %s"), backupname, ++ strerror(errno)); ++ /* If we can't write to the backup, DONT go on, since ++ whatever caused the backup file to fail (e.g. disk ++ full may well cause the real file write to fail, which ++ means we could lose both the backup and the original! */ ++ goto cleanup_and_exit; ++ } ++ + /* Copy the file. */ + copy_status = copy_file(f, backup_file); + +@@ -1704,19 +1739,6 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type + goto cleanup_and_exit; + } + +- /* And set its metadata. */ +- if (utime(backupname, &filetime) == -1 && !ISSET(INSECURE_BACKUP)) { +- if (prompt_failed_backupwrite(backupname)) +- goto skip_backup; +- statusbar(_("Error writing backup file %s: %s"), backupname, +- strerror(errno)); +- /* If we can't write to the backup, DONT go on, since +- whatever caused the backup file to fail (e.g. disk +- full may well cause the real file write to fail, which +- means we could lose both the backup and the original! */ +- goto cleanup_and_exit; +- } +- + free(backupname); + } + +-- +1.7.4 + diff --git a/editor/nano/files/fedora/nano-2.3.0-warnings.patch b/editor/nano/files/fedora/nano-2.3.0-warnings.patch new file mode 100644 index 0000000000..5fa561790f --- /dev/null +++ b/editor/nano/files/fedora/nano-2.3.0-warnings.patch @@ -0,0 +1,42 @@ + po/Makefile.in.in | 1 + + src/nano.c | 2 +- + 2 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/po/Makefile.in.in b/po/Makefile.in.in +index ada8bb4..f7b2a95 100644 +--- a/po/Makefile.in.in ++++ b/po/Makefile.in.in +@@ -20,6 +20,7 @@ VPATH = @srcdir@ + + prefix = @prefix@ + exec_prefix = @exec_prefix@ ++datarootdir = @datarootdir@ + datadir = @datadir@ + localedir = $(datadir)/locale + gettextsrcdir = $(datadir)/gettext/po +diff --git a/src/nano.c b/src/nano.c +index 269ab29..5b605bf 100644 +--- a/src/nano.c ++++ b/src/nano.c +@@ -1925,7 +1925,7 @@ precalc_cleanup: + * TRUE. */ + void do_output(char *output, size_t output_len, bool allow_cntrls) + { +- size_t current_len, orig_lenpt, i = 0; ++ size_t current_len, orig_lenpt = 0, i = 0; + char *char_buf = charalloc(mb_cur_max()); + int char_buf_len; + +diff --git a/src/search.c b/src/search.c +index ca93098..3451600 100644 +--- a/src/search.c ++++ b/src/search.c +@@ -138,7 +138,7 @@ int search_init(bool replacing, bool use_answer) + int i = 0; + char *buf; + sc *s; +- void (*func)(void); ++ void (*func)(void) = (void (*)(void))0; + bool meta_key = FALSE, func_key = FALSE; + static char *backupstring = NULL; + /* The search string we'll be using. */ diff --git a/editor/nano/pspec.xml b/editor/nano/pspec.xml new file mode 100644 index 0000000000..46245b9609 --- /dev/null +++ b/editor/nano/pspec.xml @@ -0,0 +1,77 @@ + + + + + nano + http://www.nano-editor.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + app:console + GNU GPL'd Pico clone with more functionality + Nano is a small, free and friendly editor which aims to replace Pico, the default editor included in the non-free Pine package. Rather than just copying Pico's look and feel, nano also implements some missing (or disabled by default) features in Pico, such as "search and replace" and "go to line number". + http://www.nano-editor.org/dist/v2.3/nano-2.3.5.tar.gz + + ncurses-devel + gettext-devel + slang + + + + + + + + nano + + ncurses + file + + + /etc + /usr/share/locale + /usr/share/doc/nano + /usr/share/man + /usr/share/info + /usr/share/nano + /usr/bin + /bin + + + + + + 2014-07-11 + 2.3.5 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-05-11 + 2.3.1 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-26 + 2.3.1 + Fix dep, release bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2011-06-27 + 2.3.1 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/editor/nano/translations.xml b/editor/nano/translations.xml new file mode 100644 index 0000000000..97ae4015e7 --- /dev/null +++ b/editor/nano/translations.xml @@ -0,0 +1,9 @@ + + + + nano + Konsol ortamında kullanabileceğiniz bir metin düzenleyicidir. + Nano özgür olmayan Pine paketinin içindeki metin düzenleme programı olan Pico'nun yerine geçme hedefini güden küçük, özgür ve kullanışlı bir metin düzenleme programıdır. Pico'nun görünüşünü ve işlevini kopyalamaktan çok, Nano aynı zamanda "ara ve değiştir" ve "satır numarasına git" gibi Pico'da olmayan (veya ön tanımlı olarak kapalı) bazı özellikleri sunar. + Nano est un petit éditeur libre et convivial qui a pour but de remplacer Pico, l'éditeur par défaut inclus dans le paquet non-libre Pine. Plutôt que juste copier l'apparence et le ressenti de Pico, nan implémente également certaines fonctionnalité manquantes (ou désactivées par défaut), tel que "rechercher et remplacer" ou "allez à la ligne numéro". + + From 3dbe3211c03e6442b25ec1a8685ee289c87f7686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Mon, 13 Jul 2015 15:58:59 +0300 Subject: [PATCH 166/175] nano in mai --- editor/nano/pspec.xml | 2 +- pisi-index.xml | 885 +++++++++++++++++++++++++------------- pisi-index.xml.sha1sum | 2 +- pisi-index.xml.xz | Bin 122408 -> 124224 bytes pisi-index.xml.xz.sha1sum | 2 +- 5 files changed, 595 insertions(+), 296 deletions(-) diff --git a/editor/nano/pspec.xml b/editor/nano/pspec.xml index 46245b9609..c8754da55d 100644 --- a/editor/nano/pspec.xml +++ b/editor/nano/pspec.xml @@ -16,7 +16,7 @@ ncurses-devel gettext-devel - slang + + + + + + imlib2 + + giflib + libid3tag + libXext + libjpeg-turbo + tiff + zlib + bzip2 + libX11 + libpng + freetype + + + /usr/bin + /usr/lib + /usr/share/imlib2 + /usr/share/doc + + + + + imlib2-devel + Development files for imlib2 + + imlib2 + + + /usr/include + /usr/lib/pkgconfig + + + + + + 2014-05-25 + 1.4.6 + Fix build. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-21 + 1.4.6 + Rebuild. + Kamil Atlı + suvarice@gmail.com + + + 2014-01-26 + 1.4.6 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-08-29 + 1.4.5 + First release + PisiLinux Community + namsp-01@hotmail.it + + + diff --git a/multimedia/graphics/imlib2/translations.xml b/multimedia/graphics/imlib2/translations.xml new file mode 100644 index 0000000000..3d36f89320 --- /dev/null +++ b/multimedia/graphics/imlib2/translations.xml @@ -0,0 +1,15 @@ + + + + imlib2 + Genel resim yükleme ve tarama kütüphanesi'nin ikinci versiyonu + Imlib 2, Imlib'in gelişmişidir. Sadece ileri bir sürümü değildir, tamamen yeni bir kütüphanedir. Imlib2 ve Imlib 1.x tamamen farklı oldukları için bir arada kurulu bulunabilirler. İkisi de aynı amaçla yapılmıştır. + Imlib 2 est le successeur de Imlib. Il ne s'agit pas là juste d'une version plus récente d'imlib 1, mais vraiment d'une librairie complètement différente. S'agissant effectivement d'une différente librairie - même si elles ont des fonctionnalités similaires, Imlib2 peut être installée aux côtés de Imlib1.x sans aucun problème. + Imlib 2 es el sucesor de Imlib. no es simplemente una versión actualizada - es una librería completamente nueva. Imlib2 puede instalarse junto con Imlib 1.x sin problemas, ya que efectivamente son librerías diferentes - sin embargo tienen una funcionalidad similar. + + + + imlib2-devel + imlib2 için geliştirme dosyaları + + From dc92c5cf2ed2877f20332b386ee221d082f37cc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Tue, 14 Jul 2015 08:13:15 +0300 Subject: [PATCH 173/175] works for xorg-server 1 --- x11/library/libFS/actions.py | 20 ++++ x11/library/libFS/pspec.xml | 80 ++++++++++++++++ x11/library/libFS/translations.xml | 14 +++ x11/library/libfontenc/actions.py | 21 ++++ x11/library/libfontenc/pspec.xml | 84 ++++++++++++++++ x11/library/libfontenc/translations.xml | 14 +++ x11/misc/xorg-font/actions.py | 53 +++++++++++ x11/misc/xorg-font/pspec.xml | 121 ++++++++++++++++++++++++ x11/misc/xorg-font/translations.xml | 14 +++ x11/util/component.xml | 3 + x11/util/font-util/actions.py | 19 ++++ x11/util/font-util/pspec.xml | 70 ++++++++++++++ x11/util/font-util/translations.xml | 9 ++ 13 files changed, 522 insertions(+) create mode 100644 x11/library/libFS/actions.py create mode 100644 x11/library/libFS/pspec.xml create mode 100644 x11/library/libFS/translations.xml create mode 100644 x11/library/libfontenc/actions.py create mode 100644 x11/library/libfontenc/pspec.xml create mode 100644 x11/library/libfontenc/translations.xml create mode 100644 x11/misc/xorg-font/actions.py create mode 100644 x11/misc/xorg-font/pspec.xml create mode 100644 x11/misc/xorg-font/translations.xml create mode 100644 x11/util/component.xml create mode 100644 x11/util/font-util/actions.py create mode 100644 x11/util/font-util/pspec.xml create mode 100644 x11/util/font-util/translations.xml diff --git a/x11/library/libFS/actions.py b/x11/library/libFS/actions.py new file mode 100644 index 0000000000..79bbe451f4 --- /dev/null +++ b/x11/library/libFS/actions.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "COPYING", "README") diff --git a/x11/library/libFS/pspec.xml b/x11/library/libFS/pspec.xml new file mode 100644 index 0000000000..833fa5bb31 --- /dev/null +++ b/x11/library/libFS/pspec.xml @@ -0,0 +1,80 @@ + + + + + libFS + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + X.Org FS library + libFS is the interface library to the X Font Server. + mirrors://xorg/individual/lib/libFS-1.0.6.tar.bz2 + + util-macros + xorg-proto + xtrans + + + + + libFS + + /usr/lib + /usr/share/doc + + + + + libFS-devel + Development files for libFS + + libFS + + + /usr/include/X11 + /usr/lib/pkgconfig + + + + + + 2014-05-16 + 1.0.6 + Version bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2013-10-07 + 1.0.5 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 1.0.5 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-21 + 1.0.5 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 1.0.4 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/x11/library/libFS/translations.xml b/x11/library/libFS/translations.xml new file mode 100644 index 0000000000..d5246a2bb4 --- /dev/null +++ b/x11/library/libFS/translations.xml @@ -0,0 +1,14 @@ + + + + libFS + X.Org FS kitaplığı + Librairie FS de X.Org + X.Org FS Bibliothek + + + + libFS-devel + libFS için geliştirme dosyaları + + diff --git a/x11/library/libfontenc/actions.py b/x11/library/libfontenc/actions.py new file mode 100644 index 0000000000..8bf7dc7367 --- /dev/null +++ b/x11/library/libfontenc/actions.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--with-encodingsdir=/usr/share/fonts/encodings \ + --disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "COPYING", "README") diff --git a/x11/library/libfontenc/pspec.xml b/x11/library/libfontenc/pspec.xml new file mode 100644 index 0000000000..7c6c15bcd6 --- /dev/null +++ b/x11/library/libfontenc/pspec.xml @@ -0,0 +1,84 @@ + + + + + libfontenc + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + X.Org fontenc library + libfontenc is the X Window System font encoding library. + mirrors://xorg/individual/lib/libfontenc-1.1.2.tar.bz2 + + zlib-devel + util-macros + font-util + xorg-proto + + + + + libfontenc + + zlib + + + /usr/lib + /usr/share/doc + + + + + libfontenc-devel + Development files for libfontenc + + libfontenc + + + /usr/include/X11 + /usr/lib/pkgconfig + + + + + + 2014-05-16 + 1.1.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 1.1.2 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 1.1.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-21 + 1.1.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 1.1.1 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/x11/library/libfontenc/translations.xml b/x11/library/libfontenc/translations.xml new file mode 100644 index 0000000000..08eb2e04dc --- /dev/null +++ b/x11/library/libfontenc/translations.xml @@ -0,0 +1,14 @@ + + + + libfontenc + X.Org fontenc kitaplığı + Librairie fontenc de X.Org + X.Org fontenc Bibliothek + + + + libfontenc-devel + libfontenc için geliştirme dosyaları + + diff --git a/x11/misc/xorg-font/actions.py b/x11/misc/xorg-font/actions.py new file mode 100644 index 0000000000..8023355101 --- /dev/null +++ b/x11/misc/xorg-font/actions.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +WorkDir = "." +NoStrip = ["/"] + +def setup(): + for package in shelltools.ls("*-*"): + shelltools.cd(package) + autotools.configure("--with-fontrootdir=/usr/share/fonts") + shelltools.cd("../") + +def build(): + for package in shelltools.ls("*-*"): + shelltools.cd(package) + autotools.make() + shelltools.cd("../") + +def install(): + for package in shelltools.ls("*-*"): + shelltools.cd(package) + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + shelltools.cd("../") + + # Trailing slash is important since it is used with dosed. + encodingsDir = "/usr/share/fonts/encodings/" + + # Create encodings.dir scanning installed files only + encdir = get.installDIR() + encodingsDir + shelltools.system("/usr/bin/mkfontdir -n -e %s -e %slarge ." % (encdir, encdir)) + pisitools.dosed("encodings.dir", encdir, "") + pisitools.insinto(encodingsDir, "encodings.dir") + + fontpaths = { + "misc" : "misc:unscaled:pri=10", + "75dpi" : "75dpi:unscaled", + "100dpi" : "100dpi:unscaled", + "cyrillic" : "cyrillic", + } + + for fontdir, sym in fontpaths.items(): + fontpath = "/usr/share/fonts/%s" % fontdir + pisitools.dosym(fontpath, "/etc/X11/fontpath.d/%s" % sym) + + # These will be generated by the package handler in xorg-app package + pisitools.remove("/usr/share/fonts/*/fonts.dir") diff --git a/x11/misc/xorg-font/pspec.xml b/x11/misc/xorg-font/pspec.xml new file mode 100644 index 0000000000..98adc68395 --- /dev/null +++ b/x11/misc/xorg-font/pspec.xml @@ -0,0 +1,121 @@ + + + + + xorg-font + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + data:font + X.Org font files + xorg-font contains base X.Org fonts. + mirrors://xorg/individual/font/encodings-1.0.4.tar.bz2 + mirrors://xorg/individual/font/font-adobe-75dpi-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-adobe-100dpi-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-adobe-utopia-75dpi-1.0.4.tar.bz2 + mirrors://xorg/individual/font/font-adobe-utopia-100dpi-1.0.4.tar.bz2 + mirrors://xorg/individual/font/font-adobe-utopia-type1-1.0.4.tar.bz2 + mirrors://xorg/individual/font/font-alias-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-arabic-misc-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-bh-75dpi-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-bh-100dpi-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-bh-lucidatypewriter-75dpi-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-bh-lucidatypewriter-100dpi-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-bh-ttf-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-bh-type1-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-bitstream-75dpi-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-bitstream-100dpi-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-bitstream-type1-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-cronyx-cyrillic-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-cursor-misc-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-daewoo-misc-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-dec-misc-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-ibm-type1-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-isas-misc-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-jis-misc-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-micro-misc-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-misc-cyrillic-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-misc-ethiopic-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-misc-meltho-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-mutt-misc-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-misc-misc-1.1.2.tar.bz2 + mirrors://xorg/individual/font/font-schumacher-misc-1.1.2.tar.bz2 + mirrors://xorg/individual/font/font-screen-cyrillic-1.0.4.tar.bz2 + mirrors://xorg/individual/font/font-sony-misc-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-sun-misc-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-winitzki-cyrillic-1.0.3.tar.bz2 + mirrors://xorg/individual/font/font-xfree86-type1-1.0.4.tar.bz2 + + font-util + xorg-app + + + + + xorg-font + + xorg-app + + + /etc/X11/fontpath.d + /usr/share/fonts + /etc/fonts/conf.avail/42-luxi-mono.conf + /etc/fonts/conf.d/42-luxi-mono.conf + + + + + xorg-font-extra + X.Org additional font files + + xorg-app + + + /etc/X11/fontpath.d/75dpi:unscaled + /etc/X11/fontpath.d/100dpi:unscaled + /usr/share/fonts/75dpi + /usr/share/fonts/100dpi + + + + + + 2015-05-10 + 7.6 + Release Bump + Burak Ertürk + burakerturk@pisilinux.org + + + 2014-05-16 + 7.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-01 + 7.6 + Add fonts. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-08-25 + 7.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2010-11-01 + 7.6 + First release + Pisi Linux Admins + admins@pisilinux.org + + + \ No newline at end of file diff --git a/x11/misc/xorg-font/translations.xml b/x11/misc/xorg-font/translations.xml new file mode 100644 index 0000000000..0c1e1e463b --- /dev/null +++ b/x11/misc/xorg-font/translations.xml @@ -0,0 +1,14 @@ + + + + xorg-font + X.Org yazı tipi dosyaları + Fichiers de fontes d'écrans graphiques (X.Org) + Grafische Oberfläche (X.Org) Schrift Dateien + + + + xorg-font-extra + X.Org ek yazı tipi dosyaları + + diff --git a/x11/util/component.xml b/x11/util/component.xml new file mode 100644 index 0000000000..7253e5208e --- /dev/null +++ b/x11/util/component.xml @@ -0,0 +1,3 @@ + + x11.util + diff --git a/x11/util/font-util/actions.py b/x11/util/font-util/actions.py new file mode 100644 index 0000000000..8ec8f9d712 --- /dev/null +++ b/x11/util/font-util/actions.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.configure("--with-mapdir=/usr/share/fonts/util") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "COPYING", "README") diff --git a/x11/util/font-util/pspec.xml b/x11/util/font-util/pspec.xml new file mode 100644 index 0000000000..47d118904b --- /dev/null +++ b/x11/util/font-util/pspec.xml @@ -0,0 +1,70 @@ + + + + + font-util + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + app:console + X.Org font utilities + font-util package contains core font utilities for the Xorg XWindow system. + mirrors://xorg/individual/font/font-util-1.3.1.tar.bz2 + + zlib-devel + + + + + font-util + + /usr/bin + /usr/lib/pkgconfig + /usr/share/fonts + /usr/share/aclocal + /usr/share/doc + /usr/share/man + + + + + + 2015-05-10 + 1.3.1 + Version bump. + Burak Ertürk + burakerturk@pisilinux.org + + + 2014-05-16 + 1.3.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-11-06 + 1.3.0 + Fix deps. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 1.3.0 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-09-25 + 1.3.0 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/x11/util/font-util/translations.xml b/x11/util/font-util/translations.xml new file mode 100644 index 0000000000..a41d5bed81 --- /dev/null +++ b/x11/util/font-util/translations.xml @@ -0,0 +1,9 @@ + + + + font-util + X.Org font araçları + Utilitaires de fontes de X.Org + X.Org Schrift Werkzeuge + + From 6aacb49d98294593f36ab8074f8abb86644ee657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Tue, 14 Jul 2015 08:48:39 +0300 Subject: [PATCH 174/175] libXu and libXaw fix deps --- x11/library/libXaw/actions.py | 21 ++++ x11/library/libXaw/pspec.xml | 146 ++++++++++++++++++++++++++++ x11/library/libXaw/translations.xml | 17 ++++ x11/library/libXmu/pspec.xml | 6 ++ 4 files changed, 190 insertions(+) create mode 100644 x11/library/libXaw/actions.py create mode 100644 x11/library/libXaw/pspec.xml create mode 100644 x11/library/libXaw/translations.xml diff --git a/x11/library/libXaw/actions.py b/x11/library/libXaw/actions.py new file mode 100644 index 0000000000..2751a4ee7a --- /dev/null +++ b/x11/library/libXaw/actions.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vif") + + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "COPYING", "README") diff --git a/x11/library/libXaw/pspec.xml b/x11/library/libXaw/pspec.xml new file mode 100644 index 0000000000..892e274177 --- /dev/null +++ b/x11/library/libXaw/pspec.xml @@ -0,0 +1,146 @@ + + + + + libXaw + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + X Athena Widgets Library + Xaw is a widget set based on the X Toolkit Intrinsics (Xt) Library. + mirrors://xorg/individual/lib/libXaw-1.0.12.tar.bz2 + + libXext-devel + libXmu-devel + libXpm-devel + libXt-devel + util-macros + libICE-devel + libSM-devel + libX11-devel + + + + + libXaw + + libX11 + libXext + libXmu + libXpm + libXt + + + /usr/lib + /usr/share/doc + + + + + libXaw-devel + Development files for libXaw + + libXaw + libXext-devel + libXmu-devel + libXpm-devel + libXt-devel + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/man + + + + + libXaw-32bit + emul32 + 32-bit shared libraries for libSM + emul32 + + libXext-32bit + libXmu-32bit + libXpm-32bit + libXt-32bit + libX11-32bit + glibc-32bit + + + libXaw + libXext-32bit + libXmu-32bit + libXpm-32bit + libXt-32bit + libX11-32bit + glibc-32bit + + + /usr/lib32 + + + + + + 2014-05-16 + 1.0.12 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-03-07 + 1.0.12 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-07 + 1.0.11 + Revert back to 1.0.11. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-09-12 + 1.0.12 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-25 + 1.0.11 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-27 + 1.0.11 + Move pc files to devel pack, rebuild + PisiLinux Community + admins@pisilinux.org + + + 2013-07-27 + 1.0.11 + Move .pc files to devel package + Fatih Turgel + hitaf@pisilinux.org + + + 2012-11-22 + 1.0.11 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/x11/library/libXaw/translations.xml b/x11/library/libXaw/translations.xml new file mode 100644 index 0000000000..38f97c5379 --- /dev/null +++ b/x11/library/libXaw/translations.xml @@ -0,0 +1,17 @@ + + + + libXaw + X Athena Parçacıkları kitaplığı + + + + libXaw-devel + libXaw için geliştirme dosyaları + + + + libXaw-32bit + libXaw için 32-bit paylaşımlı kitaplıklar + + diff --git a/x11/library/libXmu/pspec.xml b/x11/library/libXmu/pspec.xml index 6a9e028b89..41bbc8162a 100644 --- a/x11/library/libXmu/pspec.xml +++ b/x11/library/libXmu/pspec.xml @@ -14,7 +14,10 @@ libXmu provides a set of miscellaneous utility convenience functions for X libraries to use. mirrors://xorg/individual/lib/libXmu-1.1.2.tar.bz2 + util-macros libXt-devel + libICE-devel + libSM-devel libXext-devel @@ -23,6 +26,7 @@ libXmu libXt + libX11 libXext @@ -54,9 +58,11 @@ libXt-32bit libXext-32bit + glibc-32bit libXmu + glibc-32bit libXt-32bit libX11-32bit libXext-32bit From 5e961bf0bd2c03aa7627caca8bf2631c29d78bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Erata?= Date: Tue, 14 Jul 2015 11:01:20 +0300 Subject: [PATCH 175/175] libXfont, libXmu, and other xorg-apps dep. added. --- x11/library/libXfont/actions.py | 25 ++++++ x11/library/libXfont/pspec.xml | 104 +++++++++++++++++++++++ x11/library/libXfont/translations.xml | 14 +++ x11/library/libXmu/pspec.xml | 4 +- x11/library/libXxf86dga/actions.py | 20 +++++ x11/library/libXxf86dga/pspec.xml | 104 +++++++++++++++++++++++ x11/library/libXxf86dga/translations.xml | 19 +++++ x11/library/libxkbfile/actions.py | 19 +++++ x11/library/libxkbfile/pspec.xml | 83 ++++++++++++++++++ x11/library/libxkbfile/translations.xml | 14 +++ 10 files changed, 404 insertions(+), 2 deletions(-) create mode 100644 x11/library/libXfont/actions.py create mode 100644 x11/library/libXfont/pspec.xml create mode 100644 x11/library/libXfont/translations.xml create mode 100644 x11/library/libXxf86dga/actions.py create mode 100644 x11/library/libXxf86dga/pspec.xml create mode 100644 x11/library/libXxf86dga/translations.xml create mode 100644 x11/library/libxkbfile/actions.py create mode 100644 x11/library/libxkbfile/pspec.xml create mode 100644 x11/library/libxkbfile/translations.xml diff --git a/x11/library/libXfont/actions.py b/x11/library/libXfont/actions.py new file mode 100644 index 0000000000..c3c57386bc --- /dev/null +++ b/x11/library/libXfont/actions.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--disable-static \ + --disable-devel-docs") + + pisitools.dosed("libtool", "^(hardcode_libdir_flag_spec=).*", '\\1""') + pisitools.dosed("libtool", "^(runpath_var=)LD_RUN_PATH", "\\1DIE_RPATH_DIE") + pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "README") diff --git a/x11/library/libXfont/pspec.xml b/x11/library/libXfont/pspec.xml new file mode 100644 index 0000000000..86458a2888 --- /dev/null +++ b/x11/library/libXfont/pspec.xml @@ -0,0 +1,104 @@ + + + + + libXfont + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + X.Org Xfont library + libXfont is the Xorg library that allows using various types of fonts. + mirrors://xorg/individual/lib/libXfont-1.5.0.tar.bz2 + + libfontenc-devel + util-macros + freetype-devel + xorg-proto + xtrans + zlib-devel + freetype-devel + + + + + libXfont + + libfontenc + zlib + freetype + + + /usr/lib + /usr/share/doc + + + + + libXfont-devel + Development files for libXfont + + libXfont + libfontenc-devel + + + /usr/include/X11 + /usr/lib/pkgconfig + + + + + + 2014-08-31 + 1.5.0 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-05-17 + 1.4.7 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-07 + 1.4.7 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-10-07 + 1.4.6 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 1.4.6 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-30 + 1.4.6 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-11-22 + 1.4.5 + First release + Marcin Bojara + marcin@pisilinux.org + + + diff --git a/x11/library/libXfont/translations.xml b/x11/library/libXfont/translations.xml new file mode 100644 index 0000000000..d7059c5dd0 --- /dev/null +++ b/x11/library/libXfont/translations.xml @@ -0,0 +1,14 @@ + + + + libXfont + X.Org Xfont kitaplığı + Librairie Xfont de X.Org + X.Org Xfont Bibliothek + + + + libXfont-devel + libXfont için geliştirme dosyaları + + diff --git a/x11/library/libXmu/pspec.xml b/x11/library/libXmu/pspec.xml index 41bbc8162a..02d294fa63 100644 --- a/x11/library/libXmu/pspec.xml +++ b/x11/library/libXmu/pspec.xml @@ -16,8 +16,8 @@ util-macros libXt-devel - libICE-devel - libSM-devel + libICE-devel + libSM-devel libXext-devel diff --git a/x11/library/libXxf86dga/actions.py b/x11/library/libXxf86dga/actions.py new file mode 100644 index 0000000000..c2c1791cce --- /dev/null +++ b/x11/library/libXxf86dga/actions.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "COPYING", "README") diff --git a/x11/library/libXxf86dga/pspec.xml b/x11/library/libXxf86dga/pspec.xml new file mode 100644 index 0000000000..7f394ec581 --- /dev/null +++ b/x11/library/libXxf86dga/pspec.xml @@ -0,0 +1,104 @@ + + + + + libXxf86dga + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + X.Org Xxf86dga library + LibXxf86dga is the client library for the XFree86-DGA extension. + mirrors://xorg/individual/lib/libXxf86dga-1.1.4.tar.bz2 + + libXext-devel + libX11-devel + util-macros + + + + + libXxf86dga + + libXext + libX11 + + + /usr/lib + /usr/share/doc + + + + + libXxf86dga-devel + Development files for libXxf86dga + + libXxf86dga + libXext-devel + + + /usr/include/X11 + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/share/man + + + + + libXxf86dga-32bit + emul32 + 32-bit shared libraries for libXxf86dga + emul32 + + libXext-32bit + + + libXxf86dga + libXext-32bit + libX11-32bit + + + /usr/lib32 + + + + + 2014-05-16 + 1.1.4 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 1.1.4 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 1.1.4 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-06-21 + 1.1.4 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 1.1.3 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/x11/library/libXxf86dga/translations.xml b/x11/library/libXxf86dga/translations.xml new file mode 100644 index 0000000000..87ead9933d --- /dev/null +++ b/x11/library/libXxf86dga/translations.xml @@ -0,0 +1,19 @@ + + + + libXxf86dga + X.Org Xxf86dga kitaplığı + Librairie Xxf86dga de X.Org + X.Org Xxf86dga Bibliothek + + + + libXxf86dga-devel + libXxf86dga için geliştirme dosyaları + + + + libXxf86dga-32bit + libXxf86dga için 32-bit paylaşımlı kitaplıklar + + diff --git a/x11/library/libxkbfile/actions.py b/x11/library/libxkbfile/actions.py new file mode 100644 index 0000000000..885b169574 --- /dev/null +++ b/x11/library/libxkbfile/actions.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools + +def setup(): + autotools.autoreconf("-vif") + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.install() + + pisitools.dodoc("ChangeLog", "COPYING", "README") diff --git a/x11/library/libxkbfile/pspec.xml b/x11/library/libxkbfile/pspec.xml new file mode 100644 index 0000000000..93008c3a4e --- /dev/null +++ b/x11/library/libxkbfile/pspec.xml @@ -0,0 +1,83 @@ + + + + + libxkbfile + http://www.x.org/ + + PisiLinux Community + admins@pisilinux.org + + MIT + library + X.Org xkbfile library + Libxkbfile provides an interface to read and manipulate description files for XKB, the X11 keyboard configuration extension. + mirrors://xorg/individual/lib/libxkbfile-1.0.8.tar.bz2 + + util-macros + libX11-devel + xorg-proto + + + + + libxkbfile + + libX11 + + + /usr/lib + /usr/share/doc + + + + + libxkbfile-devel + Development files for libxkbfile + + libxkbfile + + + /usr/include/X11 + /usr/lib/pkgconfig + + + + + + 2014-05-16 + 1.0.8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-10-07 + 1.0.8 + Rebuild. + Serdar Soytetir + kaptan@pisilinux.org + + + 2013-08-25 + 1.0.8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-08-25 + 1.0.8 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-06-01 + 1.0.8 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/x11/library/libxkbfile/translations.xml b/x11/library/libxkbfile/translations.xml new file mode 100644 index 0000000000..2430de9836 --- /dev/null +++ b/x11/library/libxkbfile/translations.xml @@ -0,0 +1,14 @@ + + + + libxkbfile + X.Org xkbfile kitaplığı + Librairie xkbfile de X.Org + X.Org xkbfile Bibliothek + + + + libxkbfile-devel + libxkbfile için geliştirme dosyaları + +