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);
 }

Reply via email to