Hello community,
here is the log from the commit of package icecream
checked in at Sat Aug 26 00:23:10 CEST 2006.
--------
--- KDE/icecream/icecream.changes 2006-08-23 10:55:01.000000000 +0200
+++ icecream/icecream.changes 2006-08-25 21:31:52.000000000 +0200
@@ -1,0 +2,10 @@
+Fri Aug 25 21:31:23 CEST 2006 - coolo@suse.de
+
+- 0.7.7:
+ - clear all internal maps
+ - patches by Frerich to support FreeBSD
+ - avoid busy loop in bizarre conditions
+ - found another case of endless hanging jobs
+ - some process fixes
+
+-------------------------------------------------------------------
Old:
----
icecc-0.7.6.diff
icecc-0.7.6.tar.bz2
New:
----
icecc-0.7.7.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ icecream.spec ++++++
--- /var/tmp/diff_new_pack.WlTR5I/_old 2006-08-26 00:21:11.000000000 +0200
+++ /var/tmp/diff_new_pack.WlTR5I/_new 2006-08-26 00:21:11.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package icecream (Version 0.7.6)
+# spec file for package icecream (Version 0.7.7)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -22,11 +22,10 @@
%endif
Prereq: /usr/sbin/useradd /usr/sbin/groupadd
Requires: gcc-c++
-Version: 0.7.6
-Release: 3
+Version: 0.7.7
+Release: 1
Source0: ftp://ftp.suse.com/pub/projects/icecream/icecc-%{version}.tar.bz2
Source1: %name-manpages.tar.bz2
-Patch: icecc-%{version}.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -63,7 +62,6 @@
%prep
%setup -q -n %name -a 1
-%patch
%build
export CFLAGS="$RPM_OPT_FLAGS"
@@ -73,6 +71,7 @@
make
%install
+rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT KDEDIR=/opt/kde3 install
mkdir -p $RPM_BUILD_ROOT/opt/icecream/bin
for i in g++ gcc cc c++; do
@@ -140,6 +139,13 @@
%_libdir/pkgconfig/icecc.pc
%changelog -n icecream
+* Fri Aug 25 2006 - coolo@suse.de
+- 0.7.7:
+- clear all internal maps
+- patches by Frerich to support FreeBSD
+- avoid busy loop in bizarre conditions
+- found another case of endless hanging jobs
+- some process fixes
* Wed Aug 23 2006 - schwab@suse.de
- Avoid race condition with slow scheduler.
* Thu Jul 13 2006 - coolo@suse.de
++++++ icecc-0.7.6.tar.bz2 -> icecc-0.7.7.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/NEWS new/icecream/NEWS
--- old/icecream/NEWS 2006-07-13 09:48:36.000000000 +0200
+++ new/icecream/NEWS 2006-08-25 21:28:06.000000000 +0200
@@ -1,3 +1,10 @@
+0.7.7 (r574260):
+ - clear all internal maps
+ - patches by Frerich to support FreeBSD
+ - avoid busy loop in bizarre conditions
+ - found another case of endless hanging jobs
+ - some process fixes
+
0.7.6 (r561764):
- report all daemon error message to the client
- fix support for biarch machines that have only one
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/client/icecc-create-env new/icecream/client/icecc-create-env
--- old/icecream/client/icecc-create-env 2006-07-02 20:18:52.000000000 +0200
+++ new/icecream/client/icecc-create-env 2006-07-18 13:44:57.000000000 +0200
@@ -1,4 +1,4 @@
-#! /bin/sh
+#! /usr/bin/env bash
# icecc -- A simple distributed compiler system
#
# Copyright (C) 2004 by the Icecream Authors
@@ -23,7 +23,9 @@
name="$2"
fi
test -z "$name" && return
- path=$(readlink -f $path)
+ # ls -H isn't really the same as readlink, but
+ # readlink is not portable enough.
+ path=`ls -H $path`
toadd="$name=$path"
if test "$name" = "$path"; then
toadd=$path
@@ -33,7 +35,8 @@
target_files="$target_files $toadd"
if test -x "$path"; then
# Only call ldd when it makes sense
- if file "$path" | grep 'ELF' > /dev/null 2>&1 ; then
+ if file "$path" | grep 'ELF' > /dev/null 2>&1; then
+ if ! file "$path" | grep 'static' > /dev/null 2>&1; then
# ldd now outputs ld as /lib/ld-linux.so.xx on current nptl based glibc
# this regexp parse the outputs like:
# ldd /usr/bin/gcc
@@ -41,13 +44,14 @@
# libc.so.6 => /lib/tls/libc.so.6 (0xb7e81000)
# /lib/ld-linux.so.2 (0xb7fe8000)
# covering both situations ( with => and without )
- for lib in `ldd "$path" | sed -n 's,^[^/]*\(/[^ ]*\).*,\1,p'`; do
- # Check wether the same library also exists in the parent directory,
- # and prefer that on the assumption that it is a more generic one.
- local baselib=`echo "$lib" | sed 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'`
- test -f "$baselib" && lib=$baselib
- add_file "$lib"
- done
+ for lib in `ldd "$path" | tail -n +2 | sed -n 's,^[^/]*\(/[^ ]*\).*,\1,p'`; do
+ # Check wether the same library also exists in the parent directory,
+ # and prefer that on the assumption that it is a more generic one.
+ local baselib=`echo "$lib" | sed 's,\(/[^/]*\)/.*\(/[^/]*\)$,\1\2,'`
+ test -f "$baselib" && lib=$baselib
+ add_file "$lib"
+ done
+ fi
fi
fi
}
@@ -109,10 +113,18 @@
new_target_files="$new_target_files $target"
done
+md5sum=NONE
+for file in /usr/bin/md5sum /bin/md5 /usr/bin/md5; do
+ if test -x $file; then
+ md5sum=$file
+ break
+ fi
+done
+
# now sort the files in order to make the md5sums independent
# of ordering
target_files=`for i in $new_target_files; do echo $i; done | sort`
-md5=`for i in $target_files; do md5sum $tempdir/$i; done | sed -e 's/ .*$//' | md5sum | sed -e 's/ .*$//'` || {
+md5=`for i in $target_files; do $md5sum $tempdir/$i; done | sed -e 's/ .*$//' | $md5sum | sed -e 's/ .*$//'` || {
echo "Couldn't compute MD5 sum."
exit 2
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/client/main.cpp new/icecream/client/main.cpp
--- old/icecream/client/main.cpp 2006-07-08 18:05:56.000000000 +0200
+++ new/icecream/client/main.cpp 2006-08-02 03:48:36.000000000 +0200
@@ -52,6 +52,9 @@
#include
#include
#include
+#ifdef __FreeBSD__
+# include
+#endif
#include
#include "client.h"
@@ -317,13 +320,14 @@
If we don't, the local daemon will have to assume the job failed
and tell the scheduler - and that fail message may arrive earlier
than the remote daemon's success msg. */
- local_daemon->send_msg (EndMsg());
+ if (ret == 0)
+ local_daemon->send_msg (EndMsg());
} catch ( int error ) {
fprintf( stderr, "got exception %d (this should be an exception!)\n", error );
/* currently debugging a client ? throw an error then */
if (debug_level != Error)
return error;
- ret = build_local( job, 0 );
+ goto do_local_error;
}
}
delete local_daemon;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/client/remote.cpp new/icecream/client/remote.cpp
--- old/icecream/client/remote.cpp 2006-07-12 21:44:31.000000000 +0200
+++ new/icecream/client/remote.cpp 2006-08-02 03:49:10.000000000 +0200
@@ -336,7 +336,8 @@
}
log_block wait_cpp("wait for cpp");
- waitpid( cpp_pid, &status, 0);
+ while(waitpid( cpp_pid, &status, 0) < 0 && errno == EINTR)
+ ;
if ( status ) { // failure
delete cserver;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/client/util.cpp new/icecream/client/util.cpp
--- old/icecream/client/util.cpp 2006-06-19 15:18:26.000000000 +0200
+++ new/icecream/client/util.cpp 2006-08-18 17:14:19.000000000 +0200
@@ -221,7 +221,7 @@
if (cline.find(": error:") != string::npos)
fprintf(stderr, "\x1b[1;31m%s\x1b[0m\n", cline.c_str());
else if (cline.find(": warning:") != string::npos)
- fprintf(stderr, "\x1b[34m%s\x1b[0m\n", cline.c_str());
+ fprintf(stderr, "\x1b[36m%s\x1b[0m\n", cline.c_str());
else
fprintf(stderr, "%s\n", cline.c_str());
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/configure.in new/icecream/configure.in
--- old/icecream/configure.in 2006-07-13 09:48:36.000000000 +0200
+++ new/icecream/configure.in 2006-08-25 21:28:06.000000000 +0200
@@ -4,13 +4,11 @@
AC_INIT(client/main.cpp)
-AM_INIT_AUTOMAKE(icecc, "0.7.6")
+AM_INIT_AUTOMAKE(icecc, "0.7.7")
AM_CONFIG_HEADER(config.h)
AC_CANONICAL_HOST
dnl Checks for programs
-CFLAGS=-g
-CXXFLAGS=-g
AC_PROG_CC
AC_PROG_CXX
if test "$GCC" = yes
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/daemon/load.cpp new/icecream/daemon/load.cpp
--- old/icecream/daemon/load.cpp 2006-06-19 11:50:09.000000000 +0200
+++ new/icecream/daemon/load.cpp 2006-07-18 13:44:57.000000000 +0200
@@ -92,7 +92,6 @@
currSysTicks = ticks[CP_SYS];
currIdleTicks = ticks[CP_IDLE];
}
- (void)(line);
#else
char buf[ 256 ];
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/daemon/main.cpp new/icecream/daemon/main.cpp
--- old/icecream/daemon/main.cpp 2006-07-12 20:53:04.000000000 +0200
+++ new/icecream/daemon/main.cpp 2006-08-18 17:14:19.000000000 +0200
@@ -60,11 +60,15 @@
#include
#ifdef __FreeBSD__
-#include // for kill(2)
-#include
-#include
-#define RUSAGE_SELF (0)
-#define RUSAGE_CHILDREN (-1)
+# include // for kill(2)
+# include
+# include
+# ifndef RUSAGE_SELF
+# define RUSAGE_SELF (0)
+# endif
+# ifndef RUSAGE_CHILDREN
+# define RUSAGE_CHILDREN (-1)
+# endif
#endif
#include <deque>
@@ -542,7 +546,7 @@
unsigned long idleLoad = 0;
/* we didn't talk with the scheduler for a long time, try if connection is dead */
- if (now.tv_sec - std::max(last_scheduler, last_sent.tv_sec) >= MAX_SCHEDULER_PING - MIN_SCHEDULER_PING)
+ if (now.tv_sec - std::max(last_scheduler, (time_t)last_sent.tv_sec) >= MAX_SCHEDULER_PING - MIN_SCHEDULER_PING)
force = true;
if ( diff_sent >= MIN_SCHEDULER_PING * 1000 || force ) {
@@ -761,9 +765,12 @@
&& ( m->user_msec + m->sys_msec ) <= m->real_msec)
icecream_load += (m->user_msec + m->sys_msec) / num_cpus;
- send_scheduler( *msg );
- cl->job_id = 0; // the scheduler doesn't have it anymore
- return true;
+ assert(msg->job_id == cl->job_id);
+ if(send_scheduler( *msg )) {
+ cl->job_id = 0; // the scheduler doesn't have it anymore
+ return true;
+ }
+ return false;
}
int Daemon::handle_old_request()
@@ -861,8 +868,10 @@
;
if ( child > 0 ) {
JobDoneMsg *msg = jobmap[child];
- if ( msg )
+ if ( msg ) {
current_kids--;
+ log_error() << "reaped child pid " << child << " current kids: " << current_kids << endl;
+ }
else {
log_error() << "catched child pid " << child << " not in my map\n";
assert(0);
@@ -904,13 +913,12 @@
if ( cl->status == Client::CLIENTWORK )
{
assert( job->environmentVersion() == "__client" );
- if ( !send_scheduler( JobBeginMsg( job->jobID() ) ) )
+ if ( scheduler && !send_scheduler( JobBeginMsg( job->jobID() ) ) )
{
- log_info() << "can't reach scheduler to tell him about job start of "
+ trace() << "can't reach scheduler to tell him about compile file job "
<< job->jobID() << endl;
- handle_end( cl, 114 );
- return false; // pretty unlikely after all
}
+ // no scheduler is not an error case!
} else
cl->status = Client::TOCOMPILE;
return true;
@@ -973,7 +981,9 @@
while ( current_kids > 0 ) {
int status;
- pid_t child = wait(&status);
+ pid_t child;
+ while ( (child = waitpid( -1, &status, 0 )) < 0 && errno == EINTR )
+ ;
current_kids--;
if ( child > 0 )
jobmap.erase( child );
@@ -984,6 +994,7 @@
// they should be all in clients too
assert( fd2chan.empty() );
+ envmap.clear();
fd2chan.clear();
new_client_id = 0;
trace() << "cleared children\n";
@@ -1006,7 +1017,8 @@
cl->status = Client::PENDING_USE_CS;
cl->job_id = umsg->client_id;
}
- send_scheduler( *umsg );
+ else
+ send_scheduler( *umsg );
return true;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/daemon/serve.cpp new/icecream/daemon/serve.cpp
--- old/icecream/daemon/serve.cpp 2006-07-12 21:34:16.000000000 +0200
+++ new/icecream/daemon/serve.cpp 2006-08-18 17:14:19.000000000 +0200
@@ -48,10 +48,6 @@
#include "logging.h"
#include "serve.h"
-#ifdef __linux__
-#include
-#endif
-
#include
#ifdef __FreeBSD__
@@ -123,22 +119,22 @@
if ( chdir( dirname.c_str() ) < 0 ) {
error_client( client, string( "chdir to " ) + dirname + "failed" );
log_perror("chdir() failed" );
- exit(145);
+ _exit(145);
}
if ( chroot( dirname.c_str() ) < 0 ) {
error_client( client, string( "chroot to " ) + dirname + "failed" );
log_perror("chroot() failed" );
- exit(144);
+ _exit(144);
}
if ( setgid( nobody_gid ) < 0 ) {
error_client( client, "setgid failed" );
log_perror("setgid() failed" );
- exit(143);
+ _exit(143);
}
if ( setuid( nobody_uid ) < 0) {
error_client( client, "setuid failed" );
log_perror("setuid() failed" );
- exit(142);
+ _exit(142);
}
}
else
@@ -256,6 +252,6 @@
if ( out_fd > -1)
close( out_fd );
- exit( e.exitcode() );
+ _exit( e.exitcode() );
}
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/debian/changelog new/icecream/debian/changelog
--- old/icecream/debian/changelog 2006-07-12 21:30:06.000000000 +0200
+++ new/icecream/debian/changelog 2006-07-16 20:04:48.000000000 +0200
@@ -1,3 +1,9 @@
+icecc (0.7.6-1) unstable; urgency=low
+
+ * New upstream version.
+
+ -- Andre Woebbeking Sun, 16 Jul 2006 19:52:23 +0200
+
icecc (0.7.5-1) unstable; urgency=low
* New upstream version.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/debian/rules new/icecream/debian/rules
--- old/icecream/debian/rules 2006-07-09 10:03:41.000000000 +0200
+++ new/icecream/debian/rules 2006-07-13 16:23:28.000000000 +0200
@@ -67,9 +67,9 @@
$(MAKE)
# generate manpages
- #for i in debian/man/*.sgml; do \
- # docbook-to-man $$i > `dirname $$i`/`basename $$i .sgml`.1 ;\
- #done
+ for i in debian/man/*.docbook; do \
+ docbook2x-man $$i; \
+ done
touch build-arch-stamp
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/services/comm.h new/icecream/services/comm.h
--- old/icecream/services/comm.h 2006-07-12 21:34:16.000000000 +0200
+++ new/icecream/services/comm.h 2006-08-18 17:14:19.000000000 +0200
@@ -147,7 +147,7 @@
bool write_a_bit (void) {
return need_write () ? flush_writebuf (false) : true;
}
- bool at_eof (void) const { return eof; }
+ bool at_eof (void) const { return instate != HAS_MSG && eof; }
bool is_text_based(void) const { return text_based; }
void readuint32 (uint32_t &buf);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecream/services/scheduler.cpp new/icecream/services/scheduler.cpp
--- old/icecream/services/scheduler.cpp 2006-07-12 21:34:16.000000000 +0200
+++ new/icecream/services/scheduler.cpp 2006-08-18 17:14:19.000000000 +0200
@@ -1395,6 +1395,18 @@
for (list::iterator it = css.begin(); it != css.end(); ++it)
{
Msg *msg = NULL;
+
+ if (!l.empty())
+ {
+ list<string>::const_iterator si;
+ for (si = l.begin(); si != l.end(); ++si) {
+ if ((*it)->nodename == *si || (*it)->name == *si)
+ break;
+ }
+ if(si == l.end())
+ continue;
+ }
+
if(( *it )->send_msg( GetInternalStatus() ))
msg = ( *it )->get_msg();
if ( msg && msg->type == M_STATUS_TEXT ) {
++++++ icecream-manpages.tar.bz2 ++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org