commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] Debian GNU Hurd packaging branch, master, updated. debian/20130620


From: Samuel Thibault
Subject: [SCM] Debian GNU Hurd packaging branch, master, updated. debian/20130620-1-3-g4b473c6
Date: Sat, 29 Jun 2013 20:18:16 +0000

The following commit has been merged in the master branch:
commit 4b473c601d1431ed5f09598e1766e4ef273f340a
Author: Samuel Thibault <address@hidden>
Date:   Sat Jun 29 20:17:51 2013 +0000

    Make procfs behave as sysvinit desires
    
    patches/procfs-{update,default,get-options}.patch: New patches from Justus
    Winter

diff --git a/debian/changelog b/debian/changelog
index 0cd3879..92161bc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,8 @@ hurd (20130620-1.1) UNRELEASED; urgency=low
   * patches/mount-{f,n,remount}.patch: New patches from Justus Winter to make
     mount more compatible with Linux'.
   * patches/mount-loop.patch: New patch to ignore loop option.
+  * patches/procfs-{update,default,get-options}.patch: New patches from Justus
+    Winter to make procfs behave as sysvinit desires.
 
  -- Samuel Thibault <address@hidden>  Wed, 19 Jun 2013 23:32:07 +0000
 
diff --git a/debian/patches/procfs-default.patch 
b/debian/patches/procfs-default.patch
new file mode 100644
index 0000000..62cd7b9
--- /dev/null
+++ b/debian/patches/procfs-default.patch
@@ -0,0 +1,48 @@
+Define a macro for the default value of each command line
+parameter. This allows one to generate a minimal response to
+fsys_get_options requests.
+
+* procfs/main.c: New macro definitions for default values.
+---
+ procfs/main.c |   17 ++++++++++++-----
+ 1 file changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/procfs/main.c b/procfs/main.c
+index ba74e87..3e53307 100644
+--- a/procfs/main.c
++++ b/procfs/main.c
+@@ -37,6 +37,13 @@ pid_t opt_fake_self;
+ pid_t opt_kernel_pid;
+ uid_t opt_anon_owner;
+ 
++/* Default values */
++#define OPT_CLK_TCK    sysconf(_SC_CLK_TCK)
++#define OPT_STAT_MODE  0400
++#define OPT_FAKE_SELF  -1
++#define OPT_KERNEL_PID 2
++#define OPT_ANON_OWNER 0
++
+ static error_t
+ argp_parser (int key, char *arg, struct argp_state *state)
+ {
+@@ -211,11 +218,11 @@ int main (int argc, char **argv)
+   mach_port_t bootstrap;
+   error_t err;
+ 
+-  opt_clk_tck = sysconf(_SC_CLK_TCK);
+-  opt_stat_mode = 0400;
+-  opt_fake_self = -1;
+-  opt_kernel_pid = 2;
+-  opt_anon_owner = 0;
++  opt_clk_tck = OPT_CLK_TCK;
++  opt_stat_mode = OPT_STAT_MODE;
++  opt_fake_self = OPT_FAKE_SELF;
++  opt_kernel_pid = OPT_KERNEL_PID;
++  opt_anon_owner = OPT_ANON_OWNER;
+   err = argp_parse (&argp, argc, argv, 0, 0, 0);
+   if (err)
+     error (1, err, "Could not parse command line");
+-- 
+1.7.10.4
+
+
diff --git a/debian/patches/procfs-get-options.patch 
b/debian/patches/procfs-get-options.patch
new file mode 100644
index 0000000..9910417
--- /dev/null
+++ b/debian/patches/procfs-get-options.patch
@@ -0,0 +1,73 @@
+Implement our own netfs_append_args function that provides the
+appropriate command line flags if the current values differ from the
+default values.
+
+* procfs/main.c (netfs_append_args): New function.
+---
+ procfs/main.c |   42 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
+
+diff --git a/procfs/main.c b/procfs/main.c
+index 3e53307..bcf9590 100644
+--- a/procfs/main.c
++++ b/procfs/main.c
+@@ -22,6 +22,7 @@
+ #include <unistd.h>
+ #include <error.h>
+ #include <argp.h>
++#include <argz.h>
+ #include <hurd/netfs.h>
+ #include <ps.h>
+ #include "procfs.h"
+@@ -193,6 +194,47 @@ struct argp netfs_runtime_argp_ = {
+ /* Used by netfs_set_options to handle runtime option parsing.  */
+ struct argp *netfs_runtime_argp = &netfs_runtime_argp_;
+ 
++/* Return an argz string describing the current options.  Fill *ARGZ
++   with a pointer to newly malloced storage holding the list and *LEN
++   to the length of that storage.  */
++error_t
++netfs_append_args (char **argz, size_t *argz_len)
++{
++  char buf[80];
++  error_t err = 0;
++
++#define FOPT(opt, default, fmt, args...)             \
++  do { \
++    if (! err && opt != default) \
++      { \
++      snprintf (buf, sizeof buf, fmt, ## args); \
++      err = argz_add (argz, argz_len, buf); \
++      } \
++  } while (0)
++
++  FOPT (opt_clk_tck, OPT_CLK_TCK,
++        "--clk-tck=%d", opt_clk_tck);
++
++  FOPT (opt_stat_mode, OPT_STAT_MODE,
++        "--stat-mode=%o", opt_stat_mode);
++
++  FOPT (opt_fake_self, OPT_FAKE_SELF,
++        "--fake-self=%d", opt_fake_self);
++
++  FOPT (opt_anon_owner, OPT_ANON_OWNER,
++        "--anonymous-owner=%d", opt_anon_owner);
++
++  FOPT (opt_kernel_pid, OPT_KERNEL_PID,
++        "--kernel-process=%d", opt_kernel_pid);
++
++#undef FOPT
++
++  if (! err)
++    err = netfs_append_std_options (argz, argz_len);
++
++  return err;
++}
++
+ error_t
+ root_make_node (struct ps_context *pc, struct node **np)
+ {
+-- 
+1.7.10.4
+
+
diff --git a/debian/patches/procfs-update.patch 
b/debian/patches/procfs-update.patch
new file mode 100644
index 0000000..fc5cb4a
--- /dev/null
+++ b/debian/patches/procfs-update.patch
@@ -0,0 +1,131 @@
+Split the argument handling into a common part and one for
+fsys_update_options. Handle the --update parameter; for procfs this is
+a no-op.
+
+* procfs/main.c (common_options): New variable.
+(runtime_argp_parser): Handle --update.
+(startup_argp): New variable.
+(netfs_runtime_argp_): New variable.
+---
+ procfs/main.c |   93 ++++++++++++++++++++++++++++++++++++++++-----------------
+ 1 file changed, 65 insertions(+), 28 deletions(-)
+
+diff --git a/procfs/main.c b/procfs/main.c
+index 1b19c01..ba74e87 100644
+--- a/procfs/main.c
++++ b/procfs/main.c
+@@ -109,45 +109,82 @@ argp_parser (int key, char *arg, struct argp_state 
*state)
+   return 0;
+ }
+ 
++struct argp_option common_options[] = {
++  { "clk-tck", 'h', "HZ", 0,
++      "Unit used for the values expressed in system clock ticks "
++      "(default: sysconf(_SC_CLK_TCK))" },
++  { "stat-mode", 's', "MODE", 0,
++      "The [pid]/stat file publishes information which on Hurd is only "
++      "available to the process owner.  "
++      "You can use this option to override its mode to be more permissive "
++      "for compatibility purposes.  "
++      "(default: 0400)" },
++  { "fake-self", 'S', "PID", OPTION_ARG_OPTIONAL,
++      "Provide a fake \"self\" symlink to the given PID, for compatibility "
++      "purposes.  If PID is omitted, \"self\" will point to init.  "
++      "(default: no self link)" },
++  { "kernel-process", 'k', "PID", 0,
++      "Process identifier for the kernel, used to retreive its command "
++      "line, as well as the global up and idle times. "
++      "(default: 2)" },
++  { "compatible", 'c', NULL, 0,
++      "Try to be compatible with the Linux procps utilities.  "
++      "Currently equivalent to -h 100 -s 0444 -S 1." },
++  { "anonymous-owner", 'a', "USER", 0,
++      "Make USER the owner of files related to processes without one.  "
++      "Be aware that USER will be granted access to the environment and "
++      "other sensitive information about the processes in question.  "
++      "(default: use uid 0)" },
++  {}
++};
++
+ struct argp argp = {
+-  .options = (struct argp_option []) {
+-    { "clk-tck", 'h', "HZ", 0,
+-      "Unit used for the values expressed in system clock ticks "
+-      "(default: sysconf(_SC_CLK_TCK))" },
+-    { "stat-mode", 's', "MODE", 0,
+-      "The [pid]/stat file publishes information which on Hurd is only "
+-      "available to the process owner.  "
+-      "You can use this option to override its mode to be more permissive "
+-      "for compatibility purposes.  "
+-      "(default: 0400)" },
+-    { "fake-self", 'S', "PID", OPTION_ARG_OPTIONAL,
+-      "Provide a fake \"self\" symlink to the given PID, for compatibility "
+-      "purposes.  If PID is omitted, \"self\" will point to init.  "
+-      "(default: no self link)" },
+-    { "kernel-process", 'k', "PID", 0,
+-      "Process identifier for the kernel, used to retreive its command "
+-      "line, as well as the global up and idle times. "
+-      "(default: 2)" },
+-    { "compatible", 'c', NULL, 0,
+-      "Try to be compatible with the Linux procps utilities.  "
+-      "Currently equivalent to -h 100 -s 0444 -S 1." },
+-    { "anonymous-owner", 'a', "USER", 0,
+-      "Make USER the owner of files related to processes without one.  "
+-      "Be aware that USER will be granted access to the environment and "
+-      "other sensitive information about the processes in question.  "
+-      "(default: use uid 0)" },
++  .options = common_options,
++  .parser = argp_parser,
++  .doc = "A virtual filesystem emulating the Linux procfs.",
++  .children = (struct argp_child []) {
++    { &netfs_std_startup_argp, },
+     {}
+   },
++};
++
++static error_t
++runtime_argp_parser (int key, char *arg, struct argp_state *state)
++{
++  switch (key)
++  {
++    case 'u':
++      /* do nothing */
++      break;
++
++    default:
++      return ARGP_ERR_UNKNOWN;
++  }
++
++  return 0;
++}
++
++struct argp runtime_argp = {
++  .options = (struct argp_option []) {
++    { "update", 'u', NULL, 0, "remount; for procfs this does nothing" },
++    {},
++  },
++  .parser = runtime_argp_parser,
++};
++
++struct argp netfs_runtime_argp_ = {
++  .options = common_options,
+   .parser = argp_parser,
+   .doc = "A virtual filesystem emulating the Linux procfs.",
+   .children = (struct argp_child []) {
+-    { &netfs_std_startup_argp, },
++    { &runtime_argp, },
++    { &netfs_std_runtime_argp, },
+     {}
+   },
+ };
+ 
+ /* Used by netfs_set_options to handle runtime option parsing.  */
+-struct argp *netfs_runtime_argp = &argp;
++struct argp *netfs_runtime_argp = &netfs_runtime_argp_;
+ 
+ error_t
+ root_make_node (struct ps_context *pc, struct node **np)
+-- 
+1.7.10.4
+
+
diff --git a/debian/patches/series b/debian/patches/series
index d902bd8..52ff2b9 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -45,3 +45,6 @@ mount-n.patch
 mount-f.patch
 mount-remount.patch
 mount-loop.patch
+procfs-update.patch
+procfs-default.patch
+procfs-get-options.patch

-- 
Debian GNU Hurd packaging



reply via email to

[Prev in Thread] Current Thread [Next in Thread]