diff --git a/utils/procps/Makefile b/utils/procps/Makefile new file mode 100644 index 0000000000..25d1ddbc8b --- /dev/null +++ b/utils/procps/Makefile @@ -0,0 +1,86 @@ +# +# Copyright (C) 2006-2014 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=procps +PKG_VERSION:=3.2.8 +PKG_RELEASE:=1 +PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILES:=COPYING COPYING.LIB + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://procps.sourceforge.net +PKG_MD5SUM:=9532714b6846013ca9898984ba4cd7e0 + +PKG_BUILD_PARALLEL:=1 + +include $(INCLUDE_DIR)/package.mk + +PROCPS_APPLETS := \ + ps free pgrep pkill pmap pwdx skill w \ + slabtop snice tload top vmstat watch + +define Package/procps/Default + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:=+libncurses + TITLE:=proc utilities + URL:=http://procps.sourceforge.net/ + MAINTAINER:=Gergely Kiss +endef + +define Package/procps + $(call Package/procps/Default) + MENU:=1 +endef + +define Package/procps/description + procps is the package that has a bunch of small useful utilities that give + information about processes using the /proc filesystem. The package + includes the programs ps, top, vmstat, w, kill, free, slabtop, and skill. +endef + +define GenPlugin + define Package/$(1) + $(call Package/procps/Default) + DEPENDS:=procps + TITLE:=Applet $(2) from the procps package + DEFAULT:=y + endef + + define Package/$(1)/description + Installs the applet $(2). + endef +endef + +$(foreach a,$(PROCPS_APPLETS),$(eval $(call GenPlugin,procps-$(a),$(a)))) + +MAKE_FLAGS += \ + CFLAGS="$(TARGET_CFLAGS)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + +define Package/procps/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_DIR) $(1)/usr/lib + $(INSTALL_BIN) $(PKG_BUILD_DIR)/proc/libproc-$(PKG_VERSION).so $(1)/usr/lib/ +endef + +AUXDIR_ps := "ps/" + +define BuildPlugin + define Package/$(1)/install + $(INSTALL_DIR) $$(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(AUXDIR_$(2))$(2) $$(1)/usr/bin/ + endef + + $$(eval $$(call BuildPackage,$(1))) +endef + +$(foreach a,$(PROCPS_APPLETS),$(eval $(call BuildPlugin,procps-$(a),$(a)))) +$(eval $(call BuildPackage,procps)) diff --git a/utils/procps/patches/010-make_fix.patch b/utils/procps/patches/010-make_fix.patch new file mode 100644 index 0000000000..74b1d3cc64 --- /dev/null +++ b/utils/procps/patches/010-make_fix.patch @@ -0,0 +1,11 @@ +--- a/Makefile ++++ b/Makefile +@@ -174,7 +174,7 @@ INSTALL := $(BINFILES) $(MANFILES) + # want this rule first, use := on ALL, and ALL not filled in yet + all: do_all + +--include */module.mk ++-include proc/module.mk ps/module.mk + + do_all: $(ALL) + diff --git a/utils/procps/patches/020_hz_fix.patch b/utils/procps/patches/020_hz_fix.patch new file mode 100644 index 0000000000..1954453a49 --- /dev/null +++ b/utils/procps/patches/020_hz_fix.patch @@ -0,0 +1,41 @@ +--- a/proc/sysinfo.c ++++ b/proc/sysinfo.c +@@ -209,7 +209,12 @@ static int check_for_privs(void){ + return !!rc; + } + ++#if __GNUC__ < 4 || __GNUC_MINOR__ < 3 + static void init_libproc(void) __attribute__((constructor)); ++#else ++static void init_libproc(void) __attribute__((constructor(200))); ++#endif ++ + static void init_libproc(void){ + have_privs = check_for_privs(); + // ought to count CPUs in /proc/stat instead of relying +--- a/proc/version.c ++++ b/proc/version.c +@@ -33,7 +33,12 @@ void display_version(void) { + + int linux_version_code; + ++#if __GNUC__ < 4 || __GNUC_MINOR__ < 3 + static void init_Linux_version(void) __attribute__((constructor)); ++#else ++static void init_Linux_version(void) __attribute__((constructor(100))); ++#endif ++ + static void init_Linux_version(void) { + static struct utsname uts; + int x = 0, y = 0, z = 0; /* cleared in case sscanf() < 3 */ +--- a/proc/module.mk ++++ b/proc/module.mk +@@ -76,7 +76,7 @@ proc/$(ANAME): $(LIBOBJ) + + #proc/$(SONAME): proc/library.map + proc/$(SONAME): $(LIBOBJ) +- $(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) -shared -Wl,-soname,$(SONAME) -Wl,--version-script=proc/library.map -o $@ $^ -lc ++ $(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) -shared -Wl,-soname,$(SONAME) -Wl,--version-script=proc/library.map -o $@ $(sort $^) -lc + + + # AUTOMATIC DEPENDENCY GENERATION -- GCC AND GNUMAKE DEPENDENT diff --git a/utils/procps/patches/030-fix-string-problems.patch b/utils/procps/patches/030-fix-string-problems.patch new file mode 100644 index 0000000000..de3756bb46 --- /dev/null +++ b/utils/procps/patches/030-fix-string-problems.patch @@ -0,0 +1,11 @@ +--- a/proc/sig.c ++++ b/proc/sig.c +@@ -214,7 +214,7 @@ void pretty_print_signals(void){ + while(++i <= number_of_signals){ + int n; + n = printf("%2d %s", i, signal_number_to_name(i)); +- if(i%7) printf(" \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + n); ++ if(i%7) printf("%s", " \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + n); + else printf("\n"); + } + if((i-1)%7) printf("\n");