Hello community, here is the log from the commit of package xclock for openSUSE:Factory checked in at 2019-02-26 22:19:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xclock (Old) and /work/SRC/openSUSE:Factory/.xclock.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xclock" Tue Feb 26 22:19:14 2019 rev:8 rq:677758 version:1.0.8 Changes: -------- --- /work/SRC/openSUSE:Factory/xclock/xclock.changes 2014-02-07 11:56:25.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.xclock.new.28833/xclock.changes 2019-02-26 22:19:34.746126212 +0100 @@ -1,0 +2,6 @@ +Wed Feb 20 14:17:16 UTC 2019 - [email protected] + +- Update to version 1.0.8 + * bugfixes + +------------------------------------------------------------------- Old: ---- xclock-1.0.7.tar.bz2 New: ---- xclock-1.0.8.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xclock.spec ++++++ --- /var/tmp/diff_new_pack.EMueQW/_old 2019-02-26 22:19:35.258126038 +0100 +++ /var/tmp/diff_new_pack.EMueQW/_new 2019-02-26 22:19:35.262126036 +0100 @@ -1,7 +1,7 @@ # # spec file for package xclock # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: xclock -Version: 1.0.7 +Version: 1.0.8 Release: 0 Summary: Analog / digital clock for X License: X11 @@ -55,7 +55,7 @@ %files %defattr(-,root,root) -%doc ChangeLog COPYING README +%doc ChangeLog COPYING README.md %{_bindir}/xclock %dir %{_datadir}/X11/app-defaults %{_datadir}/X11/app-defaults/XClock ++++++ xclock-1.0.7.tar.bz2 -> xclock-1.0.8.tar.bz2 ++++++ ++++ 10366 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/ChangeLog new/xclock-1.0.8/ChangeLog --- old/xclock-1.0.7/ChangeLog 2013-09-08 08:37:05.000000000 +0200 +++ new/xclock-1.0.8/ChangeLog 2019-02-19 23:14:40.000000000 +0100 @@ -1,3 +1,132 @@ +commit 9af0790d71fc321d97486aa40b055656d99050c2 +Author: Alan Coopersmith <[email protected]> +Date: Tue Feb 19 14:12:54 2019 -0800 + + xclock 1.0.8 + + Signed-off-by: Alan Coopersmith <[email protected]> + +commit a646aa84a8892b091bc7b7b24cfa89f8e628ec0e +Author: Alan Coopersmith <[email protected]> +Date: Sun Jan 6 15:05:13 2019 -0800 + + Replace remaining sprintf calls with snprintf + + Signed-off-by: Alan Coopersmith <[email protected]> + +commit 62a8e169e13c218dd43e245eea959562769d9ffa +Author: Alan Coopersmith <[email protected]> +Date: Wed Nov 21 16:59:51 2018 -0800 + + Update configure.ac bug URL for gitlab migration + + Signed-off-by: Alan Coopersmith <[email protected]> + +commit 1297c089414cb17e684803739f47d9dd9ff5dbe6 +Author: Alan Coopersmith <[email protected]> +Date: Fri Nov 16 21:14:58 2018 -0800 + + Update README for gitlab migration + + Signed-off-by: Alan Coopersmith <[email protected]> + +commit 7ad730d892c899df3bb0b51a757ff2c55b6dc6d1 +Author: Keith Packard <[email protected]> +Date: Sat May 13 23:48:55 2017 -0700 + + Allow sub-second updates. + + Lets you run the clock at whatever tick rate you like. + + Note that this changes the behaviour of the clock when the update + isn't a divisor of the number of seconds in a day. In the old code, + the time to display was an integer number of intervals from the start + of the year, in the new code, it is an integer number of intervals + from the start of the day. + + I like that better as it makes the seconds consistent from day to day, + even if it means an uneven tick at local midnight. Given that I + suspect no-one has ever done this in practice, I doubt it really + matters. + + At least the code is simpler now, while supporting updates at the + level of the Xt timers, which are milliseconds. + + Signed-off-by: Keith Packard <[email protected]> + +commit 9fa28e7fe8dc5e883211b29031446b42cbffe31f +Author: Mihail Konev <[email protected]> +Date: Thu Jan 26 14:00:20 2017 +1000 + + autogen: add default patch prefix + + Signed-off-by: Mihail Konev <[email protected]> + +commit 436544737f6a2e4f9669517207db62578cf2917c +Author: Emil Velikov <[email protected]> +Date: Mon Mar 9 12:00:52 2015 +0000 + + autogen.sh: use quoted string variables + + Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent + fall-outs, when they contain space. + + Signed-off-by: Emil Velikov <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + Signed-off-by: Peter Hutterer <[email protected]> + +commit 6773417208468060d57c90225009f6f3fab4e244 +Author: Peter Hutterer <[email protected]> +Date: Tue Jan 24 10:32:07 2017 +1000 + + autogen.sh: use exec instead of waiting for configure to finish + + Syncs the invocation of configure with the one from the server. + + Signed-off-by: Peter Hutterer <[email protected]> + Reviewed-by: Emil Velikov <[email protected]> + +commit 4697248c5a3e2aa505eceadd45f17554d4424aff +Author: Jon TURNEY <[email protected]> +Date: Sun Sep 14 18:08:55 2014 +0100 + + No point in trying to use iconv if we don't have nl_langinfo + + This fixes the build for MinGW + + Signed-off-by: Jon TURNEY <[email protected]> + Reviewed-by: Alan Coopersmith <[email protected]> + Reviewed-by: David Macek <[email protected]> + +commit 67382af06d38fdfd7f08c2bae30a7d5f1bb3fe89 +Author: Alan Coopersmith <[email protected]> +Date: Mon Jun 2 22:12:53 2014 -0700 + + autogen.sh: Honor NOCONFIGURE=1 + + See http://people.gnome.org/~walters/docs/build-api.txt + + Signed-off-by: Alan Coopersmith <[email protected]> + +commit a135ec20812ae83c8afc0d7ce6d8f3f15c4aeafe +Author: Alan Coopersmith <[email protected]> +Date: Mon Jun 2 22:12:53 2014 -0700 + + configure: Drop AM_MAINTAINER_MODE + + Signed-off-by: Alan Coopersmith <[email protected]> + +commit 0574c56ea9107eab2597b830bc95e3d62e876060 +Author: Alan Coopersmith <[email protected]> +Date: Mon Jun 2 22:12:48 2014 -0700 + + config: Add missing AC_CONFIG_SRCDIR + + Regroup AC statements under the Autoconf initialization section. + Regroup AM statements under the Automake initialization section. + + Signed-off-by: Alan Coopersmith <[email protected]> + commit 66a2f29e7c649d1eb4079910b0211ffdf7dbbd4d Author: Alan Coopersmith <[email protected]> Date: Sat Sep 7 23:33:09 2013 -0700 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/Clock.c new/xclock-1.0.8/Clock.c --- old/xclock-1.0.7/Clock.c 2013-09-08 08:33:18.000000000 +0200 +++ new/xclock-1.0.8/Clock.c 2019-02-19 23:14:28.000000000 +0100 @@ -87,7 +87,7 @@ #include <stdio.h> #include <X11/Xos.h> #include <X11/Xaw/XawInit.h> -#if !defined(NO_I18N) && defined(HAVE_ICONV) +#if !defined(NO_I18N) && defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) #include <iconv.h> #include <langinfo.h> #include <errno.h> @@ -145,8 +145,8 @@ goffset(width), XtRImmediate, (XtPointer) 0}, {XtNheight, XtCHeight, XtRDimension, sizeof(Dimension), goffset(height), XtRImmediate, (XtPointer) 0}, - {XtNupdate, XtCInterval, XtRInt, sizeof(int), - offset(update), XtRImmediate, (XtPointer) 60 }, + {XtNupdate, XtCInterval, XtRFloat, sizeof(float), + offset(update), XtRString, "60.0" }, #ifndef XRENDER {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel), offset(fgpixel), XtRString, XtDefaultForeground}, @@ -226,7 +226,7 @@ static int clock_round ( double x ); static Boolean SetValues ( Widget gcurrent, Widget grequest, Widget gnew, ArgList args, Cardinal *num_args ); -#if !defined(NO_I18N) && defined(HAVE_ICONV) +#if !defined(NO_I18N) && defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) static char *clock_to_utf8(const char *str, int in_len); #endif @@ -521,7 +521,7 @@ if (w->clock.twentyfour) { static char brief[6]; - sprintf (brief, "%02d:%02d", tm->tm_hour, tm->tm_min); + snprintf (brief, sizeof(brief), "%02d:%02d", tm->tm_hour, tm->tm_min); return brief; } else @@ -529,7 +529,7 @@ static char brief[9]; int hour = tm->tm_hour % 12; if (!hour) hour = 12; - sprintf (brief, "%02d:%02d %cM", hour, tm->tm_min, + snprintf (brief, sizeof(brief), "%02d:%02d %cM", hour, tm->tm_min, tm->tm_hour >= 12 ? 'P' : 'A'); return brief; } @@ -539,7 +539,8 @@ static char utime[35]; Time_t tsec; tsec = time(NULL); - sprintf (utime, "%10lu seconds since Epoch", (unsigned long)tsec); + snprintf (utime, sizeof(utime), "%10lu seconds since Epoch", + (unsigned long)tsec); return utime; } else if (*w->clock.strftime) { /*Note: this code is probably excessively paranoid @@ -584,7 +585,7 @@ if(!w->clock.analog) { char *str; struct tm tm; - Time_t time_value; + struct timeval tv; int len; #ifndef NO_I18N @@ -612,8 +613,8 @@ } #endif /* NO_I18N */ - (void) time(&time_value); - tm = *localtime(&time_value); + (void) gettimeofday(&tv, NULL); + tm = *localtime(&tv.tv_sec); str = TimeString (w, &tm); len = strlen(str); if (len && str[len - 1] == '\n') str[--len] = '\0'; @@ -623,13 +624,13 @@ { XGlyphInfo extents; #ifndef NO_I18N -# ifdef HAVE_ICONV +# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) char *utf8_str; # endif if (w->clock.utf8) XftTextExtentsUtf8 (XtDisplay (w), w->clock.face, (FcChar8 *) str, len, &extents); -# ifdef HAVE_ICONV +# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) else if ((utf8_str = clock_to_utf8(str, len)) != NULL) { XftTextExtentsUtf8 (XtDisplay (w), w->clock.face, (FcChar8 *)utf8_str, strlen(utf8_str), &extents); @@ -724,7 +725,7 @@ /* make invalid update's use a default */ /*if (w->clock.update <= 0) w->clock.update = 60;*/ - w->clock.show_second_hand = (abs(w->clock.update) <= SECOND_HAND_TIME); + w->clock.show_second_hand = (abs((int) w->clock.update) <= SECOND_HAND_TIME); w->clock.numseg = 0; w->clock.interval_id = 0; memset (&w->clock.otm, '\0', sizeof (w->clock.otm)); @@ -814,7 +815,7 @@ int x, y; #ifndef NO_I18N -# ifdef HAVE_ICONV +# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) char *utf8_str; # endif if (w->clock.utf8) @@ -824,7 +825,7 @@ XftTextExtentsUtf8 (XtDisplay (w), w->clock.face, (FcChar8 *) str + off, len - off, &tail); } -# ifdef HAVE_ICONV +# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) else if ((utf8_str = clock_to_utf8(str, off)) != NULL) { XftTextExtentsUtf8 (XtDisplay (w), w->clock.face, @@ -1089,15 +1090,21 @@ } static void -RenderSec (ClockWidget w, struct tm *tm, Boolean draw) +RenderSec (ClockWidget w, struct tm *tm, struct timeval *tv, Boolean draw) { double c, s; XPointDouble poly[10]; double inner_x, middle_x, outer_x, far_x; double middle_y; double line_y; + double sec; - ClockAngle (tm->tm_sec * 60, &c, &s); + sec = tm->tm_sec; + + if (w->clock.update < 1.0) + sec += tv->tv_usec / 1000000.0; + + ClockAngle ((int) (sec * 60.0), &c, &s); s = -s; @@ -1248,6 +1255,69 @@ clock_tic((XtPointer)w, (XtIntervalId *)NULL); } +#define USEC_MILLIS(us) ((unsigned long) (us) / 1000) +#define SEC_MILLIS(s) ((unsigned long) (s) * 1000) +#define MIN_MILLIS(m) SEC_MILLIS((unsigned long) (m) * 60) +#define HOUR_MILLIS(h) MIN_MILLIS((unsigned long) (h) * 60) +#define DAY_MILLIS HOUR_MILLIS((unsigned long) 24) + +#define MIN_SECS(m) ((unsigned long) (m) * 60) +#define HOUR_SECS(h) MIN_SECS((unsigned long) (h) * 60) + +/* Seconds since midnight */ +static unsigned long +time_seconds(struct tm *tm) +{ + return HOUR_SECS(tm->tm_hour) + MIN_SECS(tm->tm_min) + tm->tm_sec; +} + +/* Milliseconds since midnight */ +static unsigned long +time_millis(struct tm *tm, struct timeval *tv) +{ + return time_seconds(tm) * 1000 + USEC_MILLIS(tv->tv_usec); +} + +/* Round milliseconds to number of intervals (measured in milliseconds) */ +static unsigned long +time_intervals(unsigned long millis, unsigned long interval) +{ + return (millis + interval / 2) / interval; +} + +/* + * Round the current time to the nearest update interval using + * milliseconds since midnight + */ +static void +round_time(float _update, struct tm *tm, struct timeval *tv) +{ + /* interval in milliseconds */ + unsigned long update = (int) (_update * 1000.0 + 0.5); + + /* compute milliseconds since midnight */ + unsigned long old_secs = time_seconds(tm); + unsigned long old_millis = time_millis(tm, tv); + + /* Nearest number of intervals since midnight */ + unsigned long intervals = time_intervals(old_millis, update); + + /* The number of milliseconds for that number of intervals */ + unsigned long new_millis = intervals * update; + time_t t; + + if (new_millis > DAY_MILLIS) + new_millis = DAY_MILLIS; + + /* Compute the time_t of that interval by subtracting off the real + * seconds and adding back in the desired second + */ + + t = tv->tv_sec - old_secs + new_millis / 1000; + *tm = *localtime(&t); + tv->tv_usec = (new_millis % 1000) * 1000; +} + /* Choose the update times for well-defined clock states. * * For example, in HH:MM:SS notation the last number rolls over @@ -1328,36 +1398,22 @@ * The code below implements (2) with n this year's duration in seconds * and using local time year's start as epoch. */ + static unsigned long -waittime(int update, struct timeval *tv, struct tm *tm) +waittime(float _update, struct timeval *tv, struct tm *tm) { - int twait; - long twaitms; - unsigned long retval; - - if(update>0) { - long tcur; - int trem; - - tcur=tm->tm_sec+60*(tm->tm_min+60*(tm->tm_hour+24*tm->tm_yday)); - /* ti=floor(tcur/u)*u, w=u-(tcur-ti), and tcur-ti==tcur % u */ - trem=tcur % update; - twait=update-trem; - } else { - twait=-update; - } - - if(tv->tv_usec>0) { - long usec; - twait--; - usec=1000000-tv->tv_usec; - twaitms=(usec+999)/1000; /* must round up to avoid zero retval */ - } else { - twaitms=0; - } + unsigned long update_millis = (unsigned long) (_update * 1000 + 0.5); + unsigned long millis = time_millis(tm, tv); + unsigned long intervals = time_intervals(millis, update_millis); + unsigned long next = intervals + 1; + unsigned long next_millis = next * update_millis; + unsigned long result; + + if (next_millis > DAY_MILLIS) + next_millis = DAY_MILLIS; - retval=(unsigned long)labs(twaitms+1000*twait); - return retval; + result = next_millis - millis; + return result; } /* ARGSUSED */ @@ -1366,20 +1422,20 @@ { ClockWidget w = (ClockWidget)client_data; struct tm tm; - Time_t time_value; struct timeval tv; char *time_ptr; register Display *dpy = XtDisplay(w); register Window win = XtWindow(w); X_GETTIMEOFDAY (&tv); - time_value = tv.tv_sec; - tm = *localtime(&time_value); + tm = *localtime(&tv.tv_sec); if (w->clock.update && (id || !w->clock.interval_id)) w->clock.interval_id = XtAppAddTimeOut( XtWidgetToApplicationContext( (Widget) w), waittime(w->clock.update, &tv, &tm), clock_tic, (XtPointer)w ); + + round_time(w->clock.update, &tm, &tv); /* * Beep on the half hour; double-beep on the hour. */ @@ -1421,7 +1477,7 @@ { XRectangle old_tail, new_tail, head; int x, y; -#if !defined(NO_I18N) && defined(HAVE_ICONV) +#if !defined(NO_I18N) && defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) char *utf8_str; #endif @@ -1451,7 +1507,7 @@ (FcChar8 *) time_ptr + i, len - i); } -# ifdef HAVE_ICONV +# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) else if ((utf8_str = clock_to_utf8(time_ptr + i, len - i)) != NULL) { XftDrawStringUtf8 (w->clock.draw, @@ -1554,10 +1610,11 @@ RenderHands (w, &tm, False); } if (w->clock.show_second_hand && - tm.tm_sec != w->clock.otm.tm_sec) + tm.tm_sec != w->clock.otm.tm_sec || + tv.tv_usec != w->clock.otv.tv_usec) { - RenderSec (w, &w->clock.otm, False); - RenderSec (w, &tm, False); + RenderSec (w, &w->clock.otm, &w->clock.otv, False); + RenderSec (w, &tm, &tv, False); } if (w->clock.damage.width && w->clock.damage.height) @@ -1566,9 +1623,10 @@ DrawClockFace (w); RenderHands (w, &tm, True); if (w->clock.show_second_hand == TRUE) - RenderSec (w, &tm, True); + RenderSec (w, &tm, &tv, True); } w->clock.otm = tm; + w->clock.otv = tv; RenderUpdate (w); RenderResetBounds (&w->clock.damage); return; @@ -1579,7 +1637,8 @@ if (w->clock.numseg == 0 || tm.tm_min != w->clock.otm.tm_min || - tm.tm_hour != w->clock.otm.tm_hour) { + tm.tm_hour != w->clock.otm.tm_hour || + tm.tm_sec != w->clock.otm.tm_sec) { w->clock.segbuffptr = w->clock.segbuff; w->clock.numseg = 0; /* @@ -1590,7 +1649,7 @@ */ DrawHand(w, w->clock.minute_hand_length, w->clock.hand_width, - tm.tm_min * 60 + tm.tm_min * 60 + tm.tm_sec ); if(w->clock.Hdpixel != w->core.background_pixel) XFillPolygon( dpy, @@ -1628,7 +1687,7 @@ w->clock.second_hand_length - 2, w->clock.second_hand_width, w->clock.minute_hand_length + 2, - tm.tm_sec * 60 + tm.tm_sec * 60 + tv.tv_usec * 60 / 1000000 ); if(w->clock.Hdpixel != w->core.background_pixel) XFillPolygon( dpy, @@ -1646,6 +1705,7 @@ } w->clock.otm = tm; + w->clock.otv = tv; } } @@ -1677,7 +1737,8 @@ } } if(!tm || tm->tm_min != w->clock.otm.tm_min || - tm->tm_hour != w->clock.otm.tm_hour) + tm->tm_hour != w->clock.otm.tm_hour || + tm->tm_sec != w->clock.otm.tm_sec) { XDrawLines( dpy, win, w->clock.EraseGC, @@ -2206,7 +2267,7 @@ } -#if !defined(NO_I18N) && defined(HAVE_ICONV) +#if !defined(NO_I18N) && defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) static char * clock_to_utf8(const char *str, int in_len) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/ClockP.h new/xclock-1.0.8/ClockP.h --- old/xclock-1.0.7/ClockP.h 2013-09-08 08:33:18.000000000 +0200 +++ new/xclock-1.0.8/ClockP.h 2019-02-19 23:14:28.000000000 +0100 @@ -85,7 +85,7 @@ GC HandGC; /* Hand GC */ GC HighGC; /* Highlighting GC */ /* start of graph stuff */ - int update; /* update period in second */ + float update; /* update period in second */ Dimension radius; /* radius factor */ int backing_store; /* backing store type */ Boolean chime; @@ -109,6 +109,7 @@ XPoint *segbuffptr; XPoint *hour, *sec; struct tm otm ; + struct timeval otv ; XtIntervalId interval_id; char prev_time_string[STRFTIME_BUFF_SIZE]; #ifndef NO_I18N diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/INSTALL new/xclock-1.0.8/INSTALL --- old/xclock-1.0.7/INSTALL 2013-09-08 08:37:05.000000000 +0200 +++ new/xclock-1.0.8/INSTALL 2019-02-19 23:14:40.000000000 +0100 @@ -1,11 +1,13 @@ Installation Instructions ************************* -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006, 2007, 2008 Free Software Foundation, Inc. +Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, +Inc. - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. Basic Installation ================== @@ -13,7 +15,11 @@ Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for -instructions specific to this package. +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses @@ -42,7 +48,7 @@ you want to change it or regenerate `configure' using a newer version of `autoconf'. -The simplest way to compile this package is: + The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. @@ -53,12 +59,22 @@ 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with - the package. + the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and - documentation. + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. - 5. You can remove the program binaries and object files from the + 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is @@ -67,8 +83,15 @@ all sorts of other programs in order to regenerate files that came with the distribution. - 6. Often, you can also type `make uninstall' to remove the installed - files again. + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. Compilers and Options ===================== @@ -93,7 +116,8 @@ own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have @@ -120,7 +144,8 @@ By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you @@ -131,15 +156,46 @@ In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. -Optional Features -================= - Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE @@ -152,6 +208,13 @@ you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + Particular systems ================== @@ -159,10 +222,15 @@ CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: - ./configure CC="cc -Ae" + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `<wchar.h>' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended @@ -174,6 +242,16 @@ ./configure CC="cc -nodtk" + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + Specifying the System Type ========================== @@ -189,7 +267,8 @@ where SYSTEM can have one of these forms: - OS KERNEL-OS + OS + KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't @@ -277,7 +356,7 @@ `configure' can determine that directory automatically. `--prefix=DIR' - Use DIR as the installation prefix. *Note Installation Names:: + Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/Makefile.am new/xclock-1.0.8/Makefile.am --- old/xclock-1.0.7/Makefile.am 2013-09-08 08:33:18.000000000 +0200 +++ new/xclock-1.0.8/Makefile.am 2019-02-19 23:14:28.000000000 +0100 @@ -42,6 +42,7 @@ app-defaults/XClock EXTRA_DIST = \ + README.md \ clmask.bit \ clock.bit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/README new/xclock-1.0.8/README --- old/xclock-1.0.7/README 2013-09-08 08:33:18.000000000 +0200 +++ new/xclock-1.0.8/README 1970-01-01 01:00:00.000000000 +0100 @@ -1,27 +0,0 @@ -xclock is the classic X Window System clock utility. It displays -the time in analog or digital form, continuously updated at a -frequency which may be specified by the user. - -All questions regarding this software should be directed at the -Xorg mailing list: - - http://lists.freedesktop.org/mailman/listinfo/xorg - -Please submit bug reports to the Xorg bugzilla: - - https://bugs.freedesktop.org/enter_bug.cgi?product=xorg - -The master development code repository can be found at: - - git://anongit.freedesktop.org/git/xorg/app/xclock - - http://cgit.freedesktop.org/xorg/app/xclock - -For patch submission instructions, see: - - http://www.x.org/wiki/Development/Documentation/SubmittingPatches - -For more information on the git code manager, see: - - http://wiki.x.org/wiki/GitPage - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/README.md new/xclock-1.0.8/README.md --- old/xclock-1.0.7/README.md 1970-01-01 01:00:00.000000000 +0100 +++ new/xclock-1.0.8/README.md 2019-02-19 23:14:28.000000000 +0100 @@ -0,0 +1,19 @@ +xclock is the classic X Window System clock utility. It displays +the time in analog or digital form, continuously updated at a +frequency which may be specified by the user. + +All questions regarding this software should be directed at the +Xorg mailing list: + + https://lists.x.org/mailman/listinfo/xorg + +The master development code repository can be found at: + + https://gitlab.freedesktop.org/xorg/app/xclock + +Please submit bug reports and requests to merge patches there. + +For patch submission instructions, see: + + https://www.x.org/wiki/Development/Documentation/SubmittingPatches + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/compile new/xclock-1.0.8/compile --- old/xclock-1.0.7/compile 2013-09-08 08:33:25.000000000 +0200 +++ new/xclock-1.0.8/compile 2019-02-19 23:14:32.000000000 +0100 @@ -3,7 +3,7 @@ scriptversion=2012-10-14.11; # UTC -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey <[email protected]>. # # This program is free software; you can redistribute it and/or modify diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/config.h.in new/xclock-1.0.8/config.h.in --- old/xclock-1.0.7/config.h.in 2013-09-08 08:33:24.000000000 +0200 +++ new/xclock-1.0.8/config.h.in 2019-02-19 23:14:31.000000000 +0100 @@ -3,7 +3,7 @@ /* Define to 1 if you have the `getpid' function. */ #undef HAVE_GETPID -/* Define if you have the iconv() function. */ +/* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV /* Define to 1 if you have the <inttypes.h> header file. */ @@ -12,6 +12,9 @@ /* Define to 1 if you have the <memory.h> header file. */ #undef HAVE_MEMORY_H +/* Define to 1 if you have the `nl_langinfo' function. */ +#undef HAVE_NL_LANGINFO + /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/configure.ac new/xclock-1.0.8/configure.ac --- old/xclock-1.0.7/configure.ac 2013-09-08 08:33:18.000000000 +0200 +++ new/xclock-1.0.8/configure.ac 2019-02-19 23:14:28.000000000 +0100 @@ -21,13 +21,17 @@ dnl dnl Process this file with autoconf to create configure. +# Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xclock], - [1.0.7], - [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], + [1.0.8], + [https://gitlab.freedesktop.org/xorg/app/xclock/issues], [xclock]) +AC_CONFIG_SRCDIR([Makefile.am]) +AC_CONFIG_HEADERS([config.h]) + +# Initialize Automake AM_INIT_AUTOMAKE([foreign dist-bzip2]) -AM_MAINTAINER_MODE # Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS m4_ifndef([XORG_MACROS_VERSION], @@ -35,11 +39,7 @@ XORG_MACROS_VERSION(1.8) XORG_DEFAULT_OPTIONS -AC_CONFIG_HEADERS([config.h]) - - - -AC_CHECK_FUNCS([strlcpy getpid]) +AC_CHECK_FUNCS([strlcpy getpid nl_langinfo]) AM_ICONV diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xclock-1.0.7/missing new/xclock-1.0.8/missing --- old/xclock-1.0.7/missing 2013-09-08 08:33:25.000000000 +0200 +++ new/xclock-1.0.8/missing 2019-02-19 23:14:32.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2012-06-26.16; # UTC +scriptversion=2013-10-28.13; # UTC -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <[email protected]>, 1996. # This program is free software; you can redistribute it and/or modify @@ -160,7 +160,7 @@ ;; autom4te*) echo "You might have modified some maintainer files that require" - echo "the 'automa4te' program to be rebuilt." + echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*)
