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 + +