diff --git a/hardware/cpu/component.xml b/hardware/cpu/component.xml new file mode 100644 index 0000000000..1e92460830 --- /dev/null +++ b/hardware/cpu/component.xml @@ -0,0 +1,3 @@ + + hardware.cpu + diff --git a/hardware/cpu/intel-ucode/actions.py b/hardware/cpu/intel-ucode/actions.py new file mode 100644 index 0000000000..475a945dee --- /dev/null +++ b/hardware/cpu/intel-ucode/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 +from pisi.actionsapi import shelltools +from pisi.actionsapi import get + +def build(): + autotools.compile("-Wall %s -o intel-microcode2ucode intel-microcode2ucode.c" % get.CFLAGS()) + shelltools.system("./intel-microcode2ucode ./microcode.dat") + +def install(): + pisitools.insinto("/lib/firmware/intel-ucode", "intel-ucode/*") diff --git a/hardware/cpu/intel-ucode/files/LICENSE b/hardware/cpu/intel-ucode/files/LICENSE new file mode 100644 index 0000000000..c05358c0f8 --- /dev/null +++ b/hardware/cpu/intel-ucode/files/LICENSE @@ -0,0 +1,123 @@ +INTEL SOFTWARE LICENSE AGREEMENT + +IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING. +Do not use or load this software and any associated materials (collectively, +the "Software") until you have carefully read the following terms and +conditions. By loading or using the Software, you agree to the terms of this +Agreement. If you do not wish to so agree, do not install or use the Software. + +LICENSES: Please Note: +- If you are a network administrator, the "Site License" below shall +apply to you. +- If you are an end user, the "Single User License" shall apply to you. +- If you are an original equipment manufacturer (OEM), the "OEM License" +shall apply to you. + +SITE LICENSE. You may copy the Software onto your organization's computers +for your organization's use, and you may make a reasonable number of +back-up copies of the Software, subject to these conditions: + +1. This Software is licensed for use only in conjunction with Intel +component products. Use of the Software in conjunction with non-Intel +component products is not licensed hereunder. +2. You may not copy, modify, rent, sell, distribute or transfer any part +of the Software except as provided in this Agreement, and you agree to +prevent unauthorized copying of the Software. +3. You may not reverse engineer, decompile, or disassemble the Software. +4. You may not sublicense or permit simultaneous use of the Software by +more than one user. +5. The Software may include portions offered on terms in addition to those +set out here, as set out in a license accompanying those portions. + +SINGLE USER LICENSE. You may copy the Software onto a single computer for +your personal, noncommercial use, and you may make one back-up copy of the +Software, subject to these conditions: + +1. This Software is licensed for use only in conjunction with Intel +component products. Use of the Software in conjunction with non-Intel +component products is not licensed hereunder. +2. You may not copy, modify, rent, sell, distribute or transfer any part +of the Software except as provided in this Agreement, and you agree to +prevent unauthorized copying of the Software. +3. You may not reverse engineer, decompile, or disassemble the Software. +4. You may not sublicense or permit simultaneous use of the Software by +more than one user. +5. The Software may include portions offered on terms in addition to those +set out here, as set out in a license accompanying those portions. + +OEM LICENSE: You may reproduce and distribute the Software only as an +integral part of or incorporated in Your product or as a standalone +Software maintenance update for existing end users of Your products, +excluding any other standalone products, subject to these conditions: + +1. This Software is licensed for use only in conjunction with Intel +component products. Use of the Software in conjunction with non-Intel +component products is not licensed hereunder. +2. You may not copy, modify, rent, sell, distribute or transfer any part +of the Software except as provided in this Agreement, and you agree to +prevent unauthorized copying of the Software. +3. You may not reverse engineer, decompile, or disassemble the Software. +4. You may only distribute the Software to your customers pursuant to a +written license agreement. Such license agreement may be a "break-the- +seal" license agreement. At a minimum such license shall safeguard +Intel's ownership rights to the Software. +5. The Software may include portions offered on terms in addition to those +set out here, as set out in a license accompanying those portions. + +NO OTHER RIGHTS. No rights or licenses are granted by Intel to You, expressly +or by implication, with respect to any proprietary information or patent, +copyright, mask work, trademark, trade secret, or other intellectual property +right owned or controlled by Intel, except as expressly provided in this +Agreement. + +OWNERSHIP OF SOFTWARE AND COPYRIGHTS. Title to all copies of the Software +remains with Intel or its suppliers. The Software is copyrighted and +protected by the laws of the United States and other countries, and +international treaty provisions. You may not remove any copyright notices +from the Software. Intel may make changes to the Software, or to items +referenced therein, at any time without notice, but is not obligated to +support or update the Software. Except as otherwise expressly provided, Intel +grants no express or implied right under Intel patents, copyrights, +trademarks, or other intellectual property rights. You may transfer the +Software only if the recipient agrees to be fully bound by these terms and if +you retain no copies of the Software. + +LIMITED MEDIA WARRANTY. If the Software has been delivered by Intel on +physical media, Intel warrants the media to be free from material physical +defects for a period of ninety days after delivery by Intel. If such a defect +is found, return the media to Intel for replacement or alternate delivery of +the Software as Intel may select. + +EXCLUSION OF OTHER WARRANTIES. EXCEPT AS PROVIDED ABOVE, THE SOFTWARE IS +PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND +INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A +PARTICULAR PURPOSE. Intel does not warrant or assume responsibility for the +accuracy or completeness of any information, text, graphics, links or other +items contained within the Software. + +LIMITATION OF LIABILITY. IN NO EVENT SHALL INTEL OR ITS SUPPLIERS BE LIABLE +FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS, +BUSINESS INTERRUPTION, OR LOST INFORMATION) ARISING OUT OF THE USE OF OR +INABILITY TO USE THE SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR +LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES OR CONSEQUENTIAL OR INCIDENTAL +DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. YOU MAY ALSO HAVE +OTHER LEGAL RIGHTS THAT VARY FROM JURISDICTION TO JURISDICTION. + +TERMINATION OF THIS AGREEMENT. Intel may terminate this Agreement at any time +if you violate its terms. Upon termination, you will immediately destroy the +Software or return all copies of the Software to Intel. + +APPLICABLE LAWS. Claims arising under this Agreement shall be governed by the +laws of California, excluding its principles of conflict of laws and the +United Nations Convention on Contracts for the Sale of Goods. You may not +export the Software in violation of applicable export laws and regulations. +Intel is not obligated under any other agreements unless they are in writing +and signed by an authorized representative of Intel. + +GOVERNMENT RESTRICTED RIGHTS. The Software is provided with "RESTRICTED +RIGHTS." Use, duplication, or disclosure by the Government is subject to +restrictions as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or its +successor. Use of the Software by the Government constitutes acknowledgment +of Intel's proprietary rights therein. Contractor or Manufacturer is Intel +2200 Mission College Blvd., Santa Clara, CA 95052. diff --git a/hardware/cpu/intel-ucode/files/intel-microcode2ucode.c b/hardware/cpu/intel-ucode/files/intel-microcode2ucode.c new file mode 100644 index 0000000000..caad0323e8 --- /dev/null +++ b/hardware/cpu/intel-ucode/files/intel-microcode2ucode.c @@ -0,0 +1,163 @@ +/* + * Convert Intel microcode.dat into individual ucode files + * named: intel-ucode/$family-$model-$stepping + * + * The subdir intel-ucode/ is created in the current working + * directory. We get multiple ucodes in the same file, so they + * are appended to an existing file. Make sure the directory + * is empty before every run of the converter. + * + * Kay Sievers + */ + + +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct microcode_header_intel { + unsigned int hdrver; + unsigned int rev; + unsigned int date; + unsigned int sig; + unsigned int cksum; + unsigned int ldrver; + unsigned int pf; + unsigned int datasize; + unsigned int totalsize; + unsigned int reserved[3]; +}; + +union mcbuf { + struct microcode_header_intel hdr; + unsigned int i[0]; + char c[0]; +}; + +int main(int argc, char *argv[]) +{ + char *filename = "/lib/firmware/microcode.dat"; + FILE *f; + char line[LINE_MAX]; + char buf[4000000]; + union mcbuf *mc; + size_t bufsize, count, start; + int rc = EXIT_SUCCESS; + + if (argv[1] != NULL) + filename = argv[1]; + + count = 0; + mc = (union mcbuf *) buf; + f = fopen(filename, "re"); + if (f == NULL) { + printf("open %s: %m\n", filename); + rc = EXIT_FAILURE; + goto out; + } + + while (fgets(line, sizeof(line), f) != NULL) { + if (sscanf(line, "%x, %x, %x, %x", + &mc->i[count], + &mc->i[count + 1], + &mc->i[count + 2], + &mc->i[count + 3]) != 4) + continue; + count += 4; + } + fclose(f); + + bufsize = count * sizeof(int); + printf("%s: %lu(%luk) bytes, %zu integers\n", + filename, + bufsize, + bufsize / 1024, + count); + + if (bufsize < sizeof(struct microcode_header_intel)) + goto out; + + mkdir("intel-ucode", 0750); + + start = 0; + for (;;) { + size_t size; + unsigned int family, model, stepping; + unsigned int year, month, day; + + mc = (union mcbuf *) &buf[start]; + + if (mc->hdr.totalsize) + size = mc->hdr.totalsize; + else + size = 2000 + sizeof(struct microcode_header_intel); + + if (mc->hdr.ldrver != 1 || mc->hdr.hdrver != 1) { + printf("unknown version/format:\n"); + rc = EXIT_FAILURE; + break; + } + + /* + * 0- 3 stepping + * 4- 7 model + * 8-11 family + * 12-13 type + * 16-19 extended model + * 20-27 extended family + */ + family = (mc->hdr.sig >> 8) & 0xf; + if (family == 0xf) + family += (mc->hdr.sig >> 20) & 0xff; + model = (mc->hdr.sig >> 4) & 0x0f; + if (family == 0x06) + model += ((mc->hdr.sig >> 16) & 0x0f) << 4; + stepping = mc->hdr.sig & 0x0f; + + year = mc->hdr.date & 0xffff; + month = mc->hdr.date >> 24; + day = (mc->hdr.date >> 16) & 0xff; + + asprintf(&filename, "intel-ucode/%02x-%02x-%02x", family, model, stepping); + printf("\n"); + printf("%s\n", filename); + printf("signature: 0x%02x\n", mc->hdr.sig); + printf("flags: 0x%02x\n", mc->hdr.pf); + printf("revision: 0x%02x\n", mc->hdr.rev); + printf("date: %04x-%02x-%02x\n", year, month, day); + printf("size: %zu\n", size); + + f = fopen(filename, "ae"); + if (f == NULL) { + printf("open %s: %m\n", filename); + rc = EXIT_FAILURE; + goto out; + } + if (fwrite(mc, size, 1, f) != 1) { + printf("write %s: %m\n", filename); + rc = EXIT_FAILURE; + goto out; + } + fclose(f); + free(filename); + + start += size; + if (start >= bufsize) + break; + } + printf("\n"); +out: + return rc; +} diff --git a/hardware/cpu/intel-ucode/pspec.xml b/hardware/cpu/intel-ucode/pspec.xml new file mode 100644 index 0000000000..305feb76d5 --- /dev/null +++ b/hardware/cpu/intel-ucode/pspec.xml @@ -0,0 +1,55 @@ + + + + + intel-ucode + http://www.intel.com/ + + PisiLinux Community + admins@pisilinux.org + + as-is + library + Microcode update files for Intel CPUs + Microcode update files for Intel CPUs + http://downloadmirror.intel.com/23574/eng/microcode-20140122.tgz + + intel-microcode2ucode.c + + + + + intel-ucode + + /usr/share/doc + /lib/firmware + + + LICENSE + + + + + + 2014-05-06 + 20140122 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-01-23 + 20130906 + Version Bump + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2012-10-01 + 20120606 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/hardware/cpu/intel-ucode/translations.xml b/hardware/cpu/intel-ucode/translations.xml new file mode 100644 index 0000000000..f0b40671be --- /dev/null +++ b/hardware/cpu/intel-ucode/translations.xml @@ -0,0 +1,8 @@ + + + + intel-ucode + Intel işlemciler için microcode dosyaları + Intel işlemciler için microcode dosyaları + + diff --git a/hardware/cpu/irqbalance/actions.py b/hardware/cpu/irqbalance/actions.py new file mode 100644 index 0000000000..2f2ac09109 --- /dev/null +++ b/hardware/cpu/irqbalance/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 shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def setup(): + autotools.configure() + +def build(): + autotools.make("CFLAGS='%s'" % get.CFLAGS()) + +def install(): + pisitools.doman("irqbalance.1") + pisitools.dosbin("irqbalance") + + pisitools.dodoc("COPYING", "AUTHORS") diff --git a/hardware/cpu/irqbalance/comar/service.py b/hardware/cpu/irqbalance/comar/service.py new file mode 100644 index 0000000000..8033598651 --- /dev/null +++ b/hardware/cpu/irqbalance/comar/service.py @@ -0,0 +1,46 @@ +from comar.service import * +import os + +serviceType = "local" +serviceConf = "irqbalance" +serviceDefault = "conditional" +serviceDesc = _({"en": "Irqbalance Daemon", + "tr": "Irqbalance Servisi"}) + +@synchronized +def start(): + args = "" + oneshot = config.get("ONESHOT") + affinity = config.get("IRQ_AFFINITY_MASK") + + if oneshot == "yes" and os.path.exists("/run/irqbalance.pid"): + return + + if oneshot == "yes": + args += ("--oneshot -f") + + if affinity: + os.environ["IRQBALANCE_BANNED_CPUS"] = affinity + + startService(command="/usr/sbin/irqbalance", + args=args, donotify=True) + os.system("pidof -o %PPID /usr/sbin/irqbalance > /run/irqbalance.pid") + +@synchronized +def stop(): + stopService(command="/usr/sbin/irqbalance", + pidfile="/run/irqbalance.pid", + donotify=True) + + try: + os.unlink("/var/lock/subsys/irqbalance") + except: + pass + +def ready(): + status = is_on() + if status == "on" or (status == "conditional" and os.path.exists("/sys/devices/system/cpu/cpu1")): + start() + +def status(): + return isServiceRunning("/run/irqbalance.pid") diff --git a/hardware/cpu/irqbalance/files/irqbalance.confd b/hardware/cpu/irqbalance/files/irqbalance.confd new file mode 100644 index 0000000000..0ff3939a83 --- /dev/null +++ b/hardware/cpu/irqbalance/files/irqbalance.confd @@ -0,0 +1,18 @@ +# irqbalance is a daemon process that distributes interrupts across +# CPUS on SMP systems. The default is to rebalance once every 10 +# seconds. There is one configuration option: +# +# ONESHOT=yes +# after starting, wait for a minute, then look at the interrupt +# load and balance it once; after balancing exit and do not change +# it again. +ONESHOT= + +# +# IRQ_AFFINITY_MASK +# 64 bit bitmask which allows you to indicate which cpu's should +# be skipped when reblancing irqs. Cpu numbers which have their +# corresponding bits set to zero in this mask will not have any +# irq's assigned to them on rebalance +# +#IRQ_AFFINITY_MASK= diff --git a/hardware/cpu/irqbalance/files/irqbalance.service b/hardware/cpu/irqbalance/files/irqbalance.service new file mode 100644 index 0000000000..3d4528a8c2 --- /dev/null +++ b/hardware/cpu/irqbalance/files/irqbalance.service @@ -0,0 +1,9 @@ +[Unit] +Description=irqbalance daemon +After=syslog.target + +[Service] +ExecStart=/usr/sbin/irqbalance --foreground $IRQBALANCE_ARGS + +[Install] +WantedBy=multi-user.target diff --git a/hardware/cpu/irqbalance/pspec.xml b/hardware/cpu/irqbalance/pspec.xml new file mode 100644 index 0000000000..e74ac398c6 --- /dev/null +++ b/hardware/cpu/irqbalance/pspec.xml @@ -0,0 +1,66 @@ + + + + + irqbalance + http://www.irqbalance.org + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + service + Distribute hardware interrupts across processors + Daemon to balance IRQs across multiple CPUs on systems.This can lead to better performance and I/O balance on SMP systems. + + http://pkgs.fedoraproject.org/repo/pkgs/irqbalance/irqbalance-1.0.7.tar.bz2/09cb0ab81ab4f3401a7ff5dabc158a1e/irqbalance-1.0.7.tar.bz2 + + numactl-devel + + + + + irqbalance + + numactl + + + /etc + /usr/sbin + /lib/systemd/system + /usr/share/man + /usr/share/doc + + + irqbalance.confd + irqbalance.service + + + System.Service + + + + + + 2014-06-06 + 1.0.7 + Version bump. + Aydın Demirel + aydin.demirel@pisilinux.org + + + 2014-01-26 + 1.0.4 + Rebuild with new Download Area + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2012-10-01 + 1.0.4 + First release + Erdem Artan + admins@pisilinux.org + + + diff --git a/hardware/cpu/irqbalance/translations.xml b/hardware/cpu/irqbalance/translations.xml new file mode 100644 index 0000000000..c09b304b3c --- /dev/null +++ b/hardware/cpu/irqbalance/translations.xml @@ -0,0 +1,8 @@ + + + + irqbalance + Donanım kesmelerini işlemciler arasında dağıtır + Birden fazla işlemcili sistemlerde donanım kesmelerini (hardware interrupt) işlemciler arasında dağıtarak dengeleme sağlayan artalan süreci. Bu SMP (simetrik çoklu işlemcili) sistemlerde daha iyi performans ve G/Ç dengesi sağlar. + + diff --git a/hardware/disk/squashfs-tools/actions.py b/hardware/disk/squashfs-tools/actions.py new file mode 100644 index 0000000000..0f0d939ac3 --- /dev/null +++ b/hardware/disk/squashfs-tools/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 shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +def build(): + shelltools.cd("squashfs-tools") + #Chakra features + #reduce memory requirements of unsquashfs to support installation on systems with 256 MB RAM + cmd1='sed -i -e "s/BUFFER_DEFAULT [0-9]*/BUFFER_DEFAULT 32/" unsquashfs.h' + cmd2="sed -i 's|^#XZ_SUPPORT = 1|XZ_SUPPORT = 1|' Makefile" + cmd3="sed -i 's|^#LZO_SUPPORT = 1|LZO_SUPPORT = 1|' Makefile" + cmd4="sed -i 's|^COMP_DEFAULT = gzip|COMP_DEFAULT = xz|' Makefile" + cmds=[cmd1,cmd2,cmd3,cmd4] + + for cmd in cmds: + shelltools.system(cmd) + autotools.make('RPM_OPT_FLAGS="%s"' % get.CFLAGS()) + +def install(): + shelltools.cd("squashfs-tools") + autotools.install("INSTALL_DIR='%s/usr/sbin'" % get.installDIR()) diff --git a/hardware/disk/squashfs-tools/pspec.xml b/hardware/disk/squashfs-tools/pspec.xml new file mode 100644 index 0000000000..f37221d0bb --- /dev/null +++ b/hardware/disk/squashfs-tools/pspec.xml @@ -0,0 +1,61 @@ + + + + + squashfs-tools + http://squashfs.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + Userspace tools to create squashfs compressed filesystem + Squashfs is a highly compressed read-only filesystem for Linux. This package contains the utilities for manipulating squashfs filesystems. + http://sourceforge.net/projects/squashfs/files/squashfs/squashfs4.2/squashfs4.2.tar.gz + + lzo-devel + + xz-devel + zlib-devel + + + + + squashfs-tools + + lzo + + zlib + xz + + + /usr/sbin + /usr/share/doc + + + + + + 2014-03-09 + 4.2 + Rebuild + Varol Maksutoğlu + waroi@pisilinux.org + + + 2013-02-12 + 4.2 + Change compression type to xz, and some other enhancements. + Serdar Soytetir + kaptan@pisilinux.org + + + 2012-11-14 + 4.2 + First release + Osman Erkan + osman.erkan@pisilinux.org + + + diff --git a/hardware/disk/squashfs-tools/translations.xml b/hardware/disk/squashfs-tools/translations.xml new file mode 100644 index 0000000000..0799d13cc3 --- /dev/null +++ b/hardware/disk/squashfs-tools/translations.xml @@ -0,0 +1,8 @@ + + + + squashfs-tools + squashfs sıkıştırılmış salt-okunur dosya sistemi oluşturma aracı + squashfs, Linux için sıkıştırılmış ve salt-okunur bir dosya sistemidir. Bu paket squashfs dosya sistemiyle çalışmak için kullanılabilecek araçları içerir. + + diff --git a/hardware/powermanagement/suspend/actions.py b/hardware/powermanagement/suspend/actions.py new file mode 100644 index 0000000000..045c5a933c --- /dev/null +++ b/hardware/powermanagement/suspend/actions.py @@ -0,0 +1,30 @@ +# -*- 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") + autotools.configure("--enable-threads \ + --enable-compress \ + --enable-plymouth \ + --disable-encrypt \ + --disable-resume-static \ + --with-initramfsdir=/usr/sbin") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.removeDir("/dev") + + shelltools.touch("%s/etc/suspend.key" % get.installDIR()) diff --git a/hardware/powermanagement/suspend/files/mandriva/suspend-0.8-printf_format.patch b/hardware/powermanagement/suspend/files/mandriva/suspend-0.8-printf_format.patch new file mode 100644 index 0000000000..e1ba36be3e --- /dev/null +++ b/hardware/powermanagement/suspend/files/mandriva/suspend-0.8-printf_format.patch @@ -0,0 +1,22 @@ +--- suspend-0.8.20080612/bootsplash.c.printf_format 2009-02-04 09:45:15.000000000 +0100 ++++ suspend-0.8.20080612/bootsplash.c 2009-02-04 10:03:01.000000000 +0100 +@@ -118,7 +118,7 @@ int bootsplash_dialog(const char *prompt + { + int ret; + bootsplash_to_verbose(); +- printf(prompt); ++ printf("%s", prompt); + ret = getchar(); + bootsplash_to_silent(); + +--- suspend-0.8.20080612/splash.c.printf_format 2009-02-04 09:45:15.000000000 +0100 ++++ suspend-0.8.20080612/splash.c 2009-02-04 09:56:30.000000000 +0100 +@@ -53,7 +53,7 @@ static void splash_dummy_readpass(char * + + static int splash_dialog(const char *prompt) + { +- printf(prompt); ++ printf("%s", prompt); + return getchar(); + } + diff --git a/hardware/powermanagement/suspend/files/resume-dont-ask-questions.patch b/hardware/powermanagement/suspend/files/resume-dont-ask-questions.patch new file mode 100644 index 0000000000..3ed565b885 --- /dev/null +++ b/hardware/powermanagement/suspend/files/resume-dont-ask-questions.patch @@ -0,0 +1,27 @@ +Index: suspend-0.8_20100831/resume.c +=================================================================== +--- suspend-0.8_20100831.orig/resume.c ++++ suspend-0.8_20100831/resume.c +@@ -471,19 +471,9 @@ int main(int argc, char *argv[]) + + while (stat(resume_dev_name, &stat_buf)) { + fprintf(stderr, +- "%s: Could not stat the resume device file '%s'\n" +- "\tPlease type in the full path name to try again\n" +- "\tor press ENTER to boot the system: ", my_name, +- resume_dev_name); +- fgets(resume_dev_name, MAX_STR_LEN - 1, stdin); +- n = strlen(resume_dev_name) - 1; +- if (n <= 0) { +- error = EINVAL; +- goto Free; +- } +- +- if (resume_dev_name[n] == '\n') +- resume_dev_name[n] = '\0'; ++ "%s: Could not stat the resume device file '%s'\n", my_name, resume_dev_name); ++ error = EINVAL; ++ goto Free; + } + + setvbuf(stdout, NULL, _IONBF, 0); diff --git a/hardware/powermanagement/suspend/files/suppress-outputs.patch b/hardware/powermanagement/suspend/files/suppress-outputs.patch new file mode 100644 index 0000000000..80a95733c7 --- /dev/null +++ b/hardware/powermanagement/suspend/files/suppress-outputs.patch @@ -0,0 +1,50 @@ +Index: suspend-0.8_20100831/splash.c +=================================================================== +--- suspend-0.8_20100831.orig/splash.c ++++ suspend-0.8_20100831/splash.c +@@ -206,7 +206,7 @@ void splash_prepare(struct splash *splas + if (!mode) + return; + +- printf("Looking for splash system... "); ++ /*printf("Looking for splash system... ");*/ + + if (!bootsplash_open()) { + splash->finish = bootsplash_finish; +@@ -246,12 +246,12 @@ void splash_prepare(struct splash *splas + } else if (0) { + /* add another splash system here */ + } else { +- printf("none\n"); ++ /*printf("none\n");*/ + if (!open_input_fd()) + splash->key_pressed = key_pressed; + return; + } +- printf("found\n"); ++ /*printf("found\n");*/ + + splash->progress(0); + } +Index: suspend-0.8_20100831/suspend.c +=================================================================== +--- suspend-0.8_20100831.orig/suspend.c ++++ suspend-0.8_20100831/suspend.c +@@ -1733,7 +1733,7 @@ int suspend_system(int snapshot_fd, int + } + + sprintf(message, "Snapshotting system"); +- printf("%s: %s\n", my_name, message); ++ /*printf("%s: %s\n", my_name, message);*/ + splash.set_caption(message); + attempts = 2; + do { +@@ -1748,7 +1748,7 @@ int suspend_system(int snapshot_fd, int + if (!in_suspend) { + /* first unblank the console, see console_codes(4) */ + printf("\e[13]"); +- printf("%s: returned to userspace\n", my_name); ++ /*printf("%s: returned to userspace\n", my_name);*/ + free_snapshot(snapshot_fd); + break; + } diff --git a/hardware/powermanagement/suspend/files/suse/configure-suspend-encryption.sh b/hardware/powermanagement/suspend/files/suse/configure-suspend-encryption.sh new file mode 100644 index 0000000000..189b9882b4 --- /dev/null +++ b/hardware/powermanagement/suspend/files/suse/configure-suspend-encryption.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# +# configuration script for encrypted suspend +# +# (C) 2008 Stefan Seyfried SUSE Linux Products GmbH +# released under the GPL V2 + +CONF=/etc/suspend.conf + +if [ $UID != 0 ]; then + echo "Sorry, this configuration script needs root privileges." + echo "Exiting now..." + echo + exit 1 +fi + +cat <> $CONF + +# if we have more than one CPU / core, enabling threads will speed up +# suspend. +NUMCPU=$(grep -c ^processor /proc/cpuinfo) +if [ $NUMCPU -gt 1 ]; then + # remove the threads setting... + sed -i '/^threads /d; ' $CONF + # ..and add it back. + echo "threads = y" >> $CONF +fi + +echo +echo "/etc/suspend.conf written, you can find the original file as /etc/suspend.conf.backup" +echo + diff --git a/hardware/powermanagement/suspend/files/suse/suspend-0.80-dont-return-eintr-on-abort.diff b/hardware/powermanagement/suspend/files/suse/suspend-0.80-dont-return-eintr-on-abort.diff new file mode 100644 index 0000000000..dddba22a4c --- /dev/null +++ b/hardware/powermanagement/suspend/files/suse/suspend-0.80-dont-return-eintr-on-abort.diff @@ -0,0 +1,16 @@ +Index: b/suspend.c +=================================================================== +--- a/suspend.c ++++ b/suspend.c +@@ -1261,6 +1261,11 @@ Shutdown: + + Unfreeze: + unfreeze(snapshot_fd); ++ /* ugly hack, because "user aborted suspend" is not really ++ * an error. ++ */ ++ if (error == EINTR) ++ return 0; + return error; + } + diff --git a/hardware/powermanagement/suspend/files/suse/suspend-0.80-fix-s2both-resume-hacks.diff b/hardware/powermanagement/suspend/files/suse/suspend-0.80-fix-s2both-resume-hacks.diff new file mode 100644 index 0000000000..3c52d6c3bd --- /dev/null +++ b/hardware/powermanagement/suspend/files/suse/suspend-0.80-fix-s2both-resume-hacks.diff @@ -0,0 +1,79 @@ +Index: b/suspend.c +=================================================================== +--- a/suspend.c ++++ b/suspend.c +@@ -1772,11 +1772,10 @@ int suspend_system(int snapshot_fd, int + if (error) + goto Shutdown; + reset_signature(resume_fd); + free_swap_pages(snapshot_fd); + free_snapshot(snapshot_fd); +- s2ram_resume(); + goto Unfreeze; + } + Shutdown: + #endif + close(resume_fd); +@@ -2268,11 +2267,11 @@ int main(int argc, char *argv[]) + struct stat stat_buf; + int resume_fd, snapshot_fd, vt_fd, orig_vc = -1, suspend_vc = -1; + int test_fd = -1; + dev_t resume_dev; + int orig_loglevel, orig_swappiness, ret; +- struct rlimit rlim; ++ struct rlimit rlim, rlim_saved; + static char chroot_path[MAX_STR_LEN]; + + my_name = basename(argv[0]); + + /* Make sure the 0, 1, 2 descriptors are open before opening the +@@ -2500,19 +2499,19 @@ int main(int argc, char *argv[]) + goto Restore_console; + } + + splash.progress(5); + ++#ifdef CONFIG_ENCRYPT ++ if (do_encrypt && ! use_RSA) ++ splash.read_password(password, 1); ++#endif + #ifdef CONFIG_BOTH + /* If s2ram_hacks returns != 0, better not try to suspend to RAM */ + if (s2ram) + s2ram = !s2ram_hacks(); + #endif +-#ifdef CONFIG_ENCRYPT +- if (do_encrypt && ! use_RSA) +- splash.read_password(password, 1); +-#endif + + open_printk(); + orig_loglevel = get_kernel_console_loglevel(); + set_kernel_console_loglevel(suspend_loglevel); + +@@ -2522,18 +2521,25 @@ int main(int argc, char *argv[]) + + sync(); + + splash.progress(10); + ++ getrlimit(RLIMIT_NOFILE, &rlim_saved); + rlim.rlim_cur = 0; + rlim.rlim_max = 0; + setrlimit(RLIMIT_NOFILE, &rlim); + setrlimit(RLIMIT_NPROC, &rlim); + setrlimit(RLIMIT_CORE, &rlim); + + ret = suspend_system(snapshot_fd, resume_fd, test_fd); + ++ setrlimit(RLIMIT_NOFILE, &rlim_saved); ++#ifdef CONFIG_BOTH ++ if (s2ram) ++ s2ram_resume(); ++#endif ++ + if (orig_loglevel >= 0) + set_kernel_console_loglevel(orig_loglevel); + + close_printk(); + diff --git a/hardware/powermanagement/suspend/files/suse/suspend-0.80-keygen-new-defaults.diff b/hardware/powermanagement/suspend/files/suse/suspend-0.80-keygen-new-defaults.diff new file mode 100644 index 0000000000..08d2369a04 --- /dev/null +++ b/hardware/powermanagement/suspend/files/suse/suspend-0.80-keygen-new-defaults.diff @@ -0,0 +1,48 @@ +Index: b/keygen.c +=================================================================== +--- a/keygen.c ++++ b/keygen.c +@@ -25,11 +25,11 @@ + + #define MIN_KEY_BITS 1024 + #define MAX_KEY_BITS 4096 + #define MAX_OUT_SIZE (sizeof(struct RSA_data)) + #define MAX_STR_LEN 256 +-#define DEFAULT_FILE "suspend.key" ++#define DEFAULT_FILE "/etc/suspend.key" + + static char in_buffer[MAX_STR_LEN]; + static char pass_buf[MAX_STR_LEN]; + static struct RSA_data rsa; + static unsigned char encrypt_buffer[RSA_DATA_SIZE]; +@@ -40,11 +40,11 @@ int main(int argc, char *argv[]) + gcry_ac_handle_t rsa_hd; + gcry_ac_key_t rsa_priv; + gcry_ac_key_pair_t rsa_key_pair; + gcry_mpi_t mpi; + size_t offset; +- int len = MIN_KEY_BITS, ret = EXIT_SUCCESS; ++ int len = 2048, ret = EXIT_SUCCESS; + struct termios termios; + char *vrfy_buf; + struct md5_ctx ctx; + unsigned char key_buf[PK_KEY_SIZE]; + gcry_cipher_hd_t sym_hd; +@@ -197,12 +197,15 @@ Retry: + gcry_free(str); + } + + size = offset + sizeof(struct RSA_data) - RSA_DATA_SIZE; + +- printf("File name [%s]: ", DEFAULT_FILE); +- fgets(in_buffer, MAX_STR_LEN, stdin); ++ *in_buffer = 0; ++ if (!((argc > 1) && (strcmp(argv[1], "-q") == 0))) { ++ printf("File name [%s]: ", DEFAULT_FILE); ++ fgets(in_buffer, MAX_STR_LEN, stdin); ++ } + if (!strlen(in_buffer) || *in_buffer == '\n') + strcpy(in_buffer, DEFAULT_FILE); + else if (in_buffer[strlen(in_buffer)-1] == '\n') + in_buffer[strlen(in_buffer)-1] = '\0'; + fd = open(in_buffer, O_RDWR | O_CREAT | O_TRUNC, 00600); diff --git a/hardware/powermanagement/suspend/files/suse/suspend-0.80-vbetool-retry-on-errors.diff b/hardware/powermanagement/suspend/files/suse/suspend-0.80-vbetool-retry-on-errors.diff new file mode 100644 index 0000000000..2637e3d644 --- /dev/null +++ b/hardware/powermanagement/suspend/files/suse/suspend-0.80-vbetool-retry-on-errors.diff @@ -0,0 +1,102 @@ +Index: s2ram-x86.c +=================================================================== +--- s2ram-x86.c.orig ++++ s2ram-x86.c +@@ -321,6 +321,7 @@ int s2ram_do(void) + + void s2ram_resume(void) + { ++ int i = 0; + if (flags & PCI_SAVE) { + printf("restoring PCI config of device %02x:%02x.%d\n", + vga_dev.bus, vga_dev.dev, vga_dev.func); +@@ -330,19 +331,36 @@ void s2ram_resume(void) + } + // FIXME: can we call vbetool_init() multiple times without cleaning up? + if (flags & VBE_POST) { +- vbetool_init(); +- printf("Calling do_post\n"); +- do_post(); ++ while (i++ < 5) { ++ vbetool_init(); ++ printf("Calling do_post\n"); ++ if (!do_post()) ++ break; ++ printf("do_post failed, sleeping 100ms and retrying...\n"); ++ usleep(100000); ++ } ++ i = 0; + } + if (vbe_buffer) { +- vbetool_init(); +- printf("Calling restore_state_from\n"); +- restore_state_from(vbe_buffer); ++ while (i++ < 5) { ++ vbetool_init(); ++ printf("Calling restore_state_from\n"); ++ if (!restore_state_from(vbe_buffer)) ++ break; ++ printf("restore_state_from failed, sleeping 100ms and retrying...\n"); ++ usleep(100000); ++ } ++ i = 0; + } + if (vbe_mode >= 0) { +- vbetool_init(); +- printf("Calling set_vbe_mode\n"); +- do_set_mode(vbe_mode, 0); ++ while (i++ < 5) { ++ vbetool_init(); ++ printf("Calling set_vbe_mode\n"); ++ if (!do_set_mode(vbe_mode, 0)) ++ break; ++ printf("set_vbe_mode failed, sleeping 100ms and retrying...\n"); ++ usleep(100000); ++ } + } + if (!fb_nosuspend) + resume_fbcon(); +Index: vbetool/vbetool.c +=================================================================== +--- vbetool/vbetool.c.orig ++++ vbetool/vbetool.c +@@ -231,9 +231,10 @@ int do_post(void) + return 0; + } + +-void restore_state_from(char *data) ++int restore_state_from(char *data) + { + struct LRMI_regs r; ++ int ret = 1; + + /* VGA BIOS mode 3 is text mode */ + do_set_mode(3,1); +@@ -252,12 +253,16 @@ void restore_state_from(char *data) + "Can't restore video state (vm86 failure)\n"); + } else if ((r.eax & 0xffff) != 0x4f) { + fprintf(stderr, "Restore video state failed\n"); ++ } else { ++ /* everything ok */ ++ ret = 0; + } + + LRMI_free_real(data); + + ioctl(0, KDSETMODE, KD_TEXT); + ++ return ret; + } + + #ifndef S2RAM +Index: vbetool/vbetool.h +=================================================================== +--- vbetool/vbetool.h.orig ++++ vbetool/vbetool.h +@@ -18,5 +18,5 @@ int disable_vga(void); + int do_get_panel_id(); + void vbetool_init(void); + char *__save_state(int *); +-void restore_state_from(char *); ++int restore_state_from(char *); + int __get_mode(void); diff --git a/hardware/powermanagement/suspend/files/suse/suspend-comment-configfile-options.diff b/hardware/powermanagement/suspend/files/suse/suspend-comment-configfile-options.diff new file mode 100644 index 0000000000..7d3ddae382 --- /dev/null +++ b/hardware/powermanagement/suspend/files/suse/suspend-comment-configfile-options.diff @@ -0,0 +1,71 @@ +Index: b/conf/suspend.conf +=================================================================== +--- a/conf/suspend.conf ++++ b/conf/suspend.conf +@@ -1,9 +1,62 @@ +-snapshot device = /dev/snapshot +-resume device = ++############################################################################# ++## ++## note: ++## using pm-utils or powersaved, this file (/etc/suspend.conf) only serves as ++## a template, image_size and resume_device are filled in dynamically ++## and the generated /var/lib/s2disk.conf is used to suspend. ++## _If_ you enter stuff here, it will be copied to that file unchanged, ++## but this might skip some features and sanity checks. ++## ++############################################################################# ++## ++## your snapshot device. You should not need to change this. ++# snapshot device = /dev/snapshot ++# ++## enter your swap device here. Read the warning on pm-utils above, please! ++#resume device = ++# ++## image size will also be filled in by pm-utils + #image size = 350000000 ++# + #suspend loglevel = 2 ++#max loglevel = ++# ++## compute checksum will slow down suspend and resume. ++## Debugging option, default n + #compute checksum = y +-#compress = y ++# ++## compression will often speed up suspend and resume (default n) ++#compress = n ++# ++## encryption support is rather basic right now - e.g. USB keyboards will not ++## work to enter the key in the standard initrd, also beware of ++## non-US keyboard layouts. Only use this if you know what you are doing. + #encrypt = y +-#early writeout = y ++# ++## RSA key file that is used for encryption ++#RSA key file = /etc/suspend.key ++# ++## start writing out the image early, before buffers are full. ++## will most of the time speed up overall writing time (default y) ++#early writeout = n ++# ++## use splash picture? (default n) + #splash = y ++# ++## shutdown method: ++## platform - go through ACPI BIOS to power off the machine (default on ++## machines that support it) ++## shutdown - just power off like after a shutdown ++## reboot - reboot instead of powering off. For debugging only. ++#shutdown method = platform ++# ++## resume offset: for use with swapfiles, use "swap-offset" to find out. ++#resume offset = 12345 ++# ++## pause after resume for n seconds, so that the timing information can ++## actually be read (default 0 => don't pause) ++#resume pause = 2 ++# ++## use threads for suspend? (default n) ++## this hugely speeds up encryption and also compression on mulitcore machines ++#threads = y diff --git a/hardware/powermanagement/suspend/files/suse/suspend-default-compress.diff b/hardware/powermanagement/suspend/files/suse/suspend-default-compress.diff new file mode 100644 index 0000000000..f4058c2489 --- /dev/null +++ b/hardware/powermanagement/suspend/files/suse/suspend-default-compress.diff @@ -0,0 +1,39 @@ +Index: suspend.c +=================================================================== +--- suspend.c.orig ++++ suspend.c +@@ -1768,13 +1768,15 @@ int main(int argc, char *argv[]) + if (compute_checksum != 'y' && compute_checksum != 'Y') + compute_checksum = 0; + #ifdef CONFIG_COMPRESS +- if (do_compress != 'y' && do_compress != 'Y') { ++ if (do_compress != 'n' && do_compress != 'N') { ++ do_compress = 1; ++ if (lzo_init() != LZO_E_OK) { ++ suspend_error("Failed to initialize LZO. " ++ "Compression disabled.\n"); ++ do_compress = 0; ++ } ++ } else + do_compress = 0; +- } else if (lzo_init() != LZO_E_OK) { +- suspend_error("Failed to initialize LZO. " +- "Compression disabled.\n"); +- do_compress = 0; +- } + #endif + #ifdef CONFIG_ENCRYPT + if (do_encrypt != 'y' && do_encrypt != 'Y') +Index: conf/suspend.conf +=================================================================== +--- conf/suspend.conf.orig ++++ conf/suspend.conf +@@ -25,7 +25,7 @@ + ## Debugging option, default n + #compute checksum = y + # +-## compression will often speed up suspend and resume (default n) ++## compression will often speed up suspend and resume (default y) + #compress = n + # + ## encryption support is rather basic right now - e.g. USB keyboards will not diff --git a/hardware/powermanagement/suspend/files/suse/suspend-default-splash.diff b/hardware/powermanagement/suspend/files/suse/suspend-default-splash.diff new file mode 100644 index 0000000000..06bdf76fd3 --- /dev/null +++ b/hardware/powermanagement/suspend/files/suse/suspend-default-splash.diff @@ -0,0 +1,49 @@ +Index: resume.c +=================================================================== +--- resume.c.orig ++++ resume.c +@@ -421,10 +421,10 @@ int main(int argc, char *argv[]) + if (error) + return -error; + +- if (splash_param != 'y' && splash_param != 'Y') +- splash_param = 0; +- else ++ if (splash_param != 'n' && splash_param != 'N') + splash_param = SPL_RESUME; ++ else ++ splash_param = 0; + + get_page_and_buffer_sizes(); + +Index: suspend.c +=================================================================== +--- suspend.c.orig ++++ suspend.c +@@ -1782,10 +1782,10 @@ int main(int argc, char *argv[]) + if (do_encrypt != 'y' && do_encrypt != 'Y') + do_encrypt = 0; + #endif +- if (splash_param != 'y' && splash_param != 'Y') +- splash_param = 0; +- else ++ if (splash_param != 'n' && splash_param != 'N') + splash_param = SPL_SUSPEND; ++ else ++ splash_param = 0; + + if (early_writeout != 'n' && early_writeout != 'N') + early_writeout = 1; +Index: conf/suspend.conf +=================================================================== +--- conf/suspend.conf.orig ++++ conf/suspend.conf +@@ -40,7 +40,7 @@ + ## will most of the time speed up overall writing time (default y) + #early writeout = n + # +-## use splash picture? (default n) ++## use splash picture? (default y) + #splash = y + # + ## shutdown method: diff --git a/hardware/powermanagement/suspend/pspec.xml b/hardware/powermanagement/suspend/pspec.xml new file mode 100644 index 0000000000..38214b666f --- /dev/null +++ b/hardware/powermanagement/suspend/pspec.xml @@ -0,0 +1,76 @@ + + + + + suspend + http://suspend.sourceforge.net/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + A set of tools to support sleep modes + suspend package allows users to suspend-to-ram, suspend-to-disk, and suspend-to-both. + http://sourceforge.net/projects/suspend/files/suspend/suspend-1.0/suspend-utils-1.0.tar.bz2 + + lzo-devel + pciutils-devel + libx86-devel + plymouth-devel + + + suse/suspend-comment-configfile-options.diff + suse/suspend-default-compress.diff + suse/suspend-default-splash.diff + suse/suspend-0.80-dont-return-eintr-on-abort.diff + + suse/suspend-0.80-keygen-new-defaults.diff + suse/suspend-0.80-vbetool-retry-on-errors.diff + + mandriva/suspend-0.8-printf_format.patch + + + + resume-dont-ask-questions.patch + suppress-outputs.patch + + + + + + suspend + + lzo + libx86 + plymouth-core-libs + pciutils + + + /etc/suspend.conf + /etc/suspend.key + /usr/sbin + /usr/share/doc + + + suse/configure-suspend-encryption.sh + + + + + + 2014-03-09 + 1.0 + Rebuild + Varol Maksutoğlu + waroi@pisilinux.org + + + 2012-12-29 + 1.0 + First release + Osman Erkan + osman.erkan@pisilinux.org + + + diff --git a/hardware/powermanagement/suspend/translations.xml b/hardware/powermanagement/suspend/translations.xml new file mode 100644 index 0000000000..1ce8506914 --- /dev/null +++ b/hardware/powermanagement/suspend/translations.xml @@ -0,0 +1,8 @@ + + + + suspend + Uyku kiplerini destekleme araçları + suspend, kullanıcıların bellek, disk veya her ikisini de kullanarak sistemlerini askıya almalarını sağlayan araçları içerir. + + diff --git a/util/admin/logrotate/actions.py b/util/admin/logrotate/actions.py new file mode 100644 index 0000000000..4dbf198244 --- /dev/null +++ b/util/admin/logrotate/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 get + +def build(): + autotools.make("RPM_OPT_FLAGS=\"%s\" WITH_ACL=yes" % get.CFLAGS()) + +def install(): + autotools.rawInstall("PREFIX=%s MANDIR=%s" % (get.installDIR(), get.manDIR())) + + pisitools.dodir("/etc/logrotate.d") + + pisitools.dobin("examples/logrotate.cron", "/etc/cron.daily") + pisitools.insinto("/etc", "examples/logrotate-default", "logrotate.conf") + + pisitools.dodoc("CHANGES", "COPYING", "README*") diff --git a/util/admin/logrotate/pspec.xml b/util/admin/logrotate/pspec.xml new file mode 100644 index 0000000000..2a323d9665 --- /dev/null +++ b/util/admin/logrotate/pspec.xml @@ -0,0 +1,66 @@ + + + + + logrotate + https://fedorahosted.org/releases/l/o/logrotate + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + app:console + Rotates, compresses, removes and emails system log files + logrotate is designed to ease administration of systems that generate large numbers of log files. It allows automatic rotation, compression, removal, and emailing of log files. + https://fedorahosted.org/releases/l/o/logrotate/logrotate-3.8.8.tar.gz + + popt-devel + acl-devel + + + + + logrotate + + popt + acl + + + /etc + /usr/sbin + /usr/share/doc + /usr/share/man + + + + + + 2015-01-26 + 3.8.8 + Version bump. + Stefan Gronewold(groni) + groni@pisilinux.org + + + 2014-06-18 + 3.8.7 + v.bump + Ayhan Yalçınsoy + ayhanyacinsoy@gmail.com + + + 2014-03-09 + 3.7.9 + Rebuild. + Kamil Atlı + suvarice@gmail.com + + + 2011-09-29 + 3.7.9 + First release + Pisi Linux Admins + admins@pisilinux.org + + + diff --git a/util/admin/logrotate/translations.xml b/util/admin/logrotate/translations.xml new file mode 100644 index 0000000000..248d52b3c5 --- /dev/null +++ b/util/admin/logrotate/translations.xml @@ -0,0 +1,8 @@ + + + + logrotate + Sistem günlük (log) dosyalarını yönetmeyi kolaylaştıran bir araç + Logrotate kayıt dosyalarının rotasyonunu, silinmesini veya e-posta ile gönderilmesi gibi işlevleri ile sistem yönetimini kolaylaştırıan bir uygulamadır. + +