Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pdpmake for openSUSE:Factory checked in at 2026-01-27 16:08:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pdpmake (Old) and /work/SRC/openSUSE:Factory/.pdpmake.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pdpmake" Tue Jan 27 16:08:25 2026 rev:2 rq:1329281 version:2.0.4 Changes: -------- --- /work/SRC/openSUSE:Factory/pdpmake/pdpmake.changes 2025-06-05 20:37:52.226102969 +0200 +++ /work/SRC/openSUSE:Factory/.pdpmake.new.1928/pdpmake.changes 2026-01-27 16:08:27.804422584 +0100 @@ -1,0 +2,10 @@ +Sun Jan 25 16:18:25 UTC 2026 - Andrea Manzini <[email protected]> + +- Update to 2.0.4: + * Fix detection of target rule with inline command + * Immediate-expansion macros aren't expanded recursively + * Immediate-mode macros and suffix substitution + * Override commands for single-colon target rule + + +------------------------------------------------------------------- Old: ---- pdpmake-2.0.3.tar.gz New: ---- pdpmake-2.0.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pdpmake.spec ++++++ --- /var/tmp/diff_new_pack.3Mp02V/_old 2026-01-27 16:08:28.464450421 +0100 +++ /var/tmp/diff_new_pack.3Mp02V/_new 2026-01-27 16:08:28.464450421 +0100 @@ -1,7 +1,7 @@ # # spec file for package pdpmake # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # 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: pdpmake -Version: 2.0.3 +Version: 2.0.4 Release: 0 Summary: Public domain POSIX make License: SUSE-Public-Domain ++++++ pdpmake-2.0.3.tar.gz -> pdpmake-2.0.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdpmake-2.0.3/input.c new/pdpmake-2.0.4/input.c --- old/pdpmake-2.0.3/input.c 2025-01-21 10:45:22.000000000 +0100 +++ new/pdpmake-2.0.4/input.c 2025-11-27 12:18:26.000000000 +0100 @@ -315,7 +315,13 @@ opts |= OPT_make; #endif mp->m_flag = TRUE; - expval = expand_macros(mp->m_val, FALSE); +#if ENABLE_FEATURE_MAKE_POSIX_2024 || ENABLE_FEATURE_MAKE_EXTENSIONS + // Immediate-expansion macros aren't recursively expanded + if (mp->m_immediate) + expval = xstrdup(mp->m_val); + else +#endif + expval = expand_macros(mp->m_val, FALSE); mp->m_flag = FALSE; modified = modify_words(expval, modifier, lenf, lenr, find_pref, repl_pref, find_suff, repl_suff); @@ -983,6 +989,20 @@ #endif /* + * Determine if a line is a target rule with an inline command. + * Return a pointer to the semicolon separator if it is, else NULL. + */ +static char * +inline_command(char *line) +{ + char *p = find_char(line, ':'); + + if (p) + p = strchr(p, ';'); + return p; +} + +/* * Parse input from the makefile and construct a tree structure of it. */ void @@ -1245,9 +1265,9 @@ cp = NULL; s = strchr(q, ';'); if (s) { - // Retrieve command from expanded copy of line + // Retrieve command from original or expanded copy of line char *copy3 = expand_macros(copy, FALSE); - if ((p = find_colon(copy3)) && (p = strchr(p, ';'))) + if ((p = inline_command(copy)) || (p = inline_command(copy3))) cp = newcmd(process_command(p + 1), cp); free(copy3); *s = '\0'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdpmake-2.0.3/main.c new/pdpmake-2.0.4/main.c --- old/pdpmake-2.0.3/main.c 2025-01-21 10:45:22.000000000 +0100 +++ new/pdpmake-2.0.4/main.c 2025-11-27 12:18:26.000000000 +0100 @@ -25,6 +25,7 @@ const char *myname; const char *makefile; struct file *makefiles; +struct cmd *curr_cmd; #if ENABLE_FEATURE_MAKE_POSIX_2024 char *numjobs = NULL; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdpmake-2.0.3/make.c new/pdpmake-2.0.4/make.c --- old/pdpmake-2.0.3/make.c 2025-01-21 10:45:22.000000000 +0100 +++ new/pdpmake-2.0.4/make.c 2025-11-27 12:18:26.000000000 +0100 @@ -53,8 +53,7 @@ uint32_t ssilent, signore, sdomake; // Location of command in makefile (for use in error messages) - makefile = cp->c_makefile; - dispno = cp->c_dispno; + curr_cmd = cp; #if ENABLE_FEATURE_MAKE_POSIX_2024 opts &= ~OPT_make; // We want to know if $(MAKE) is expanded #endif @@ -156,7 +155,7 @@ estat = MAKE_DIDSOMETHING; } - makefile = NULL; + curr_cmd = NULL; return estat; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdpmake-2.0.3/make.h new/pdpmake-2.0.4/make.h --- old/pdpmake-2.0.3/make.h 2025-01-21 10:45:22.000000000 +0100 +++ new/pdpmake-2.0.4/make.h 2025-11-27 12:18:26.000000000 +0100 @@ -32,7 +32,7 @@ // Resetting getopt(3) is hopelessly platform-dependent. If command // line options don't work as expected you may need to tweak this. // The default should work for GNU libc and OpenBSD. -#if defined(__FreeBSD__) || defined(__NetBSD__) +#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) # define GETOPT_RESET() do { \ extern int optreset; \ optind = 1; \ @@ -71,7 +71,7 @@ // IF ENABLE_FEATURE_MAKE_POSIX_2024 is non-zero POSIX 2024 features // are enabled. #ifndef ENABLE_FEATURE_MAKE_POSIX_2024 -# define ENABLE_FEATURE_MAKE_POSIX_2024 ENABLE_FEATURE_MAKE_EXTENSIONS +# define ENABLE_FEATURE_MAKE_POSIX_2024 1 #endif #if ENABLE_FEATURE_MAKE_POSIX_2024 @@ -300,6 +300,7 @@ extern uint32_t opts; extern int lineno; extern int dispno; +extern struct cmd *curr_cmd; #if ENABLE_FEATURE_MAKE_POSIX_2024 extern char *numjobs; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdpmake-2.0.3/target.c new/pdpmake-2.0.4/target.c --- old/pdpmake-2.0.3/target.c 2025-01-21 10:45:22.000000000 +0100 +++ new/pdpmake-2.0.4/target.c 2025-11-27 12:18:26.000000000 +0100 @@ -348,6 +348,7 @@ { struct rule *rp; struct rule **rpp; + struct cmd *old_cp; #if ENABLE_FEATURE_MAKE_EXTENSIONS // Can't mix single-colon and double-colon rules @@ -368,7 +369,7 @@ return; } - if (cp && !(np->n_flag & N_DOUBLE) && getcmd(np)) { + if (cp && !(np->n_flag & N_DOUBLE) && (old_cp = getcmd(np))) { // Handle the inference rule redefinition case // .DEFAULT rule can also be redefined (as an extension). if ((np->n_flag & N_INFERENCE) @@ -379,7 +380,17 @@ freerules(np->n_rule); np->n_rule = NULL; } else { - error("commands defined twice for target %s", np->n_name); + // We're adding commands to a single colon rule which + // already has some. Clear the old ones first. + warning("overriding rule for target %s", np->n_name); + curr_cmd = old_cp; + warning("previous rule for target %s", np->n_name); + curr_cmd = NULL; + + for (rp = np->n_rule; rp; rp = rp->r_next) { + freecmds(rp->r_cmd); + rp->r_cmd = NULL; + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdpmake-2.0.3/testsuite/make.tests new/pdpmake-2.0.4/testsuite/make.tests --- old/pdpmake-2.0.3/testsuite/make.tests 2025-01-21 10:45:22.000000000 +0100 +++ new/pdpmake-2.0.4/testsuite/make.tests 2025-11-27 12:18:26.000000000 +0100 @@ -233,6 +233,24 @@ @echo $(reset) ' +# Immediate expansion macros aren't expanded recursively. +testing "Expanding immediate-expansion macro" \ + "make -f -" \ + "\$@\n" "" ' +a ::= $$@ +all: + @echo '\''$a'\'' +' + +# Suffix substitution in immediate expansion macros +testing "Suffix substitution in immediate-expansion macro" \ + "make -f -" \ + "file.o\n" "" ' +a ::= file.c +all: + @echo $(a:.c=.o) +' + # Since GNU make and bmake interpret := macro assignments differently, # POSIX has ::= for the GNU variant and :::= for BSD. testing "Different styles of := macro assignment" \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdpmake-2.0.3/utils.c new/pdpmake-2.0.4/utils.c --- old/pdpmake-2.0.3/utils.c 2025-01-21 10:45:22.000000000 +0100 +++ new/pdpmake-2.0.4/utils.c 2025-11-27 12:18:26.000000000 +0100 @@ -9,10 +9,20 @@ static void vwarning(FILE *stream, const char *msg, va_list list) { - if (makefile) - fprintf(stream, "%s: (%s:%d): ", myname, makefile, dispno); - else - fprintf(stream, "%s: ", myname); + const char *m = NULL; + int d = 0; + + if (curr_cmd) { + m = curr_cmd->c_makefile; + d = curr_cmd->c_dispno; + } else if (makefile) { + m = makefile; + d = dispno; + } + + fprintf(stream, "%s: ", myname); + if (m) + fprintf(stream, "(%s:%d): ", m, d); vfprintf(stream, msg, list); fputc('\n', stream); }
