Package: busybox
Version: 1:1.30.1-4
Severity: important
Tags: patch
User: ubuntu-de...@lists.ubuntu.com
Usertags: origin-ubuntu focal ubuntu-patch

Dear maintainers,

In Ubuntu, the busybox package has begun to FTBFS because Ubuntu has moved
to glibc 2.31, which has obsoleted the stime() function and busybox still
calls this function.

The attached patch has been uploaded to Ubuntu, replacing the calls to
stime() with clock_settime(), per the glibc upstream documentation.

This is not a serious bug today in Debian because glibc 2.31 is only in
experimental, but at some point it will become a serious FTBFS.

Thanks,
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                   https://www.debian.org/
slanga...@ubuntu.com                                     vor...@debian.org
diff -Nru busybox-1.30.1/debian/patches/series 
busybox-1.30.1/debian/patches/series
--- busybox-1.30.1/debian/patches/series        2019-05-23 06:37:05.000000000 
-0700
+++ busybox-1.30.1/debian/patches/series        2020-03-30 07:43:36.000000000 
-0700
@@ -14,3 +14,4 @@
 temp-deb-installer-hack.patch
 install-readlink-in-bin.patch
 ignore-ip-valid_lft.patch
+stime-is-clock_settime.patch
diff -Nru busybox-1.30.1/debian/patches/stime-is-clock_settime.patch 
busybox-1.30.1/debian/patches/stime-is-clock_settime.patch
--- busybox-1.30.1/debian/patches/stime-is-clock_settime.patch  1969-12-31 
16:00:00.000000000 -0800
+++ busybox-1.30.1/debian/patches/stime-is-clock_settime.patch  2020-03-30 
08:37:00.000000000 -0700
@@ -0,0 +1,46 @@
+Description: stime is obsolete, use clock_settime instead
+Author: Steve Langasek <steve.langa...@ubuntu.com>
+Last-Update: 2020-03-30
+
+Index: busybox-1.30.1/util-linux/rdate.c
+===================================================================
+--- busybox-1.30.1.orig/util-linux/rdate.c
++++ busybox-1.30.1/util-linux/rdate.c
+@@ -79,11 +79,13 @@
+ int rdate_main(int argc UNUSED_PARAM, char **argv)
+ {
+       time_t remote_time;
++      struct timespec remote_timespec = { 0, 0 };
+       unsigned flags;
+ 
+       flags = getopt32(argv, "^" "sp" "\0" "-1");
+ 
+       remote_time = askremotedate(argv[optind]);
++      remote_timespec.tv_sec = remote_time;
+ 
+       /* Manpages of various Unixes are confusing. What happens is:
+        * (no opts) set and print time
+@@ -96,7 +98,7 @@
+               if (time(NULL) == remote_time)
+                       bb_error_msg("current time matches remote time");
+               else
+-                      if (stime(&remote_time) < 0)
++                      if (clock_settime(CLOCK_REALTIME, &remote_timespec) < 0)
+                               bb_perror_msg_and_die("can't set time of day");
+       }
+ 
+Index: busybox-1.30.1/coreutils/date.c
+===================================================================
+--- busybox-1.30.1.orig/coreutils/date.c
++++ busybox-1.30.1/coreutils/date.c
+@@ -303,7 +303,9 @@
+               ts.tv_sec = validate_tm_time(date_str, &tm_time);
+ 
+               /* if setting time, set it */
+-              if ((opt & OPT_SET) && stime(&ts.tv_sec) < 0) {
++              if ((opt & OPT_SET)
++                  && clock_settime(CLOCK_REALTIME, &ts.tv_sec) < 0)
++              {
+                       bb_perror_msg("can't set date");
+               }
+       }

Reply via email to