- elsif ($maint) {
- init_mail();
- $main::mail_addr = $maint;
- $main::mail_addr = $1 if $main::mail_addr =~ /<([^>]*)>/;
- $main::mail_subject = "Incomplete upload found in ".
- "Debian upload queue";
- msg( "mail", "Probably you are the uploader of the following ".
- "file(s) in\n" );
- msg( "mail", "the Debian upload queue directory:\n " );
- msg( "mail", join( "\n ", @job_files ), "\n" );
- msg( "mail", "This looks like an upload, but a .changes file ".
- "is missing, so the job\n" );
- msg( "mail", "cannot be processed.\n\n" );
- msg( "mail", "If no .changes file arrives within ",
- print_time( $conf::stray_remove_timeout - $age ),
- ", the files will be deleted.\n\n" );
- msg( "mail", "If you didn't upload those files, please just ".
- "ignore this message.\n" );
- finish_mail();
- msg( "log", "Sending problem report for an upload without a ".
- ".changes\n" );
- msg( "log", "Maintainer: $maint\n" );
+ elsif ($age > $conf::no_changes_timeout &&
+ is_debian_file( $file ) &&
+ # not already reported
+ !($stats[ST_MODE] & S_ISGID) &&
+ ($pattern = debian_file_stem( $file )) &&
+ (@job_files = glob($pattern)) &&
+ # If a .changes is in the list, it has the same stem as the
+ # found file (probably a .orig.tar.gz). Don't report in this
+ # case.
+ !(grep( /\.changes$/, @job_files ))) {
+ $maint = get_maintainer( $file );
+ # Don't send a mail if this looks like the recompilation of a
+ # package for a non-i386 arch. For those, the maintainer field is
+ # useless :-(
+ if (!grep( /(\.dsc|_(i386|all)\.deb)$/, @job_files )) {
+ msg( "log", "Found an upload without .changes and with no ",
+ ".dsc file\n" );
+ msg( "log", "Not sending a report, because probably ",
+ "recompilation job\n" );
+ }
+ elsif ($maint) {
+ init_mail();
+ $main::mail_addr = $maint;
+ $main::mail_addr = $1 if $main::mail_addr =~ /<([^>]*)>/;
+ $main::mail_subject = "Incomplete upload found in ".
+ "Debian upload queue";
+ msg( "mail", "Probably you are the uploader of the following ".
+ "file(s) in\n" );
+ msg( "mail", "the Debian upload queue directory:\n " );
+ msg( "mail", join( "\n ", @job_files ), "\n" );
+ msg( "mail", "This looks like an upload, but a .changes file ".
+ "is missing, so the job\n" );
+ msg( "mail", "cannot be processed.\n\n" );
+ msg( "mail", "If no .changes file arrives within ",
+ print_time( $conf::stray_remove_timeout - $age ),
+ ", the files will be deleted.\n\n" );
+ msg( "mail", "If you didn't upload those files, please just ".
+ "ignore this message.\n" );
+ finish_mail();
+ msg( "log", "Sending problem report for an upload without a ".
+ ".changes\n" );
+ msg( "log", "Maintainer: $maint\n" );
+ }
+ else {
+ msg( "log", "Found an upload without .changes, but can't ".
+ "find a maintainer address\n" );
+ }
+ msg( "log", "Files: @job_files\n" );
+ # remember we already have sent a mail regarding this file
+ foreach ( @job_files ) {
+ my @st = stat($_);
+ next if !@st; # file may have disappeared in the meantime
+ chmod +($st[ST_MODE] |= S_ISGID), $_;
+ }