Gary,

I haven't had issues with "nmake clean" not working. I have had issues in the past with the build environment not being set correctly.

Are you calling the appropriate vcvars64.bat or vcvars32.bat (see README.txt for full paths if necessary) when you switch between 32-bit and 64-bit? The error messages look like you have a mix of 32-bit and 64-bit configuration.

For release builds where I am especailly paranoid, I use spearate command prompts for 32-bit and 64-bit builds to make sure the environments are set correctly.

Mark


On 08/01/2025 19:15, Gary D. Gregory wrote:
Hi Mark,

I think some of the problems I am running into are due to building over and over and 
"nmake clean" not working properly, I'm not sure, see below. Maybe you can 
clarify what I could be missing.

I am on Windows 10 (ver = Microsoft Windows [Version 10.0.19045.5247])

For prunmgr, I can build X86, X64, with and without Hybrid, EXCEPT:

nmake clean
nmake CPU=X86 STATIC_CRT=Hybrid

Microsoft (R) Program Maintenance Utility Version 14.41.34120.0
Copyright (C) Microsoft Corporation.  All rights reserved.

         link.exe /NOLOGO /SUBSYSTEM:WINDOWS /MACHINE:X86 /INCREMENTAL:NO 
/DEBUG /OPT:REF /guard:cf /NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib 
/version:1.0 /DYNAMICBASE /NXCOMPAT WIN10_X86_GUI_RELEASE\cmdline.obj  
WIN10_X86_GUI_RELEASE\console.obj  WIN10_X86_GUI_RELEASE\gui.obj  
WIN10_X86_GUI_RELEASE\handles.obj  WIN10_X86_GUI_RELEASE\javajni.obj  
WIN10_X86_GUI_RELEASE\log.obj  WIN10_X86_GUI_RELEASE\mclib.obj  
WIN10_X86_GUI_RELEASE\registry.obj  WIN10_X86_GUI_RELEASE\rprocess.obj  
WIN10_X86_GUI_RELEASE\security.obj  WIN10_X86_GUI_RELEASE\service.obj  
WIN10_X86_GUI_RELEASE\utils.obj  WIN10_X86_GUI_RELEASE\prunmgr.obj 
WIN10_X86_GUI_RELEASE\prunmgr.res kernel32.lib advapi32.lib ole32.lib 
shell32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib comctl32.lib 
shlwapi.lib  /pdb:WIN10_X86_GUI_RELEASE\prunmgr.pdb 
/out:WIN10_X86_GUI_RELEASE\prunmgr.exe
WIN10_X86_GUI_RELEASE\cmdline.obj : fatal error LNK1112: module machine type 
'x64' conflicts with target machine type 'x86'
NMAKE : fatal error U1077: 'link.exe /NOLOGO /SUBSYSTEM:WINDOWS /MACHINE:X86 
/INCREMENTAL:NO /DEBUG /OPT:REF /guard:cf /NODEFAULTLIB:libucrt.lib 
/DEFAULTLIB:ucrt.lib /version:1.0 /DYNAMICBASE /NXCOMPAT 
WIN10_X86_GUI_RELEASE\cmdline.obj  WIN10_X86_GUI_RELEASE\console.obj  
WIN10_X86_GUI_RELEASE\gui.obj  WIN10_X86_GUI_RELEASE\handles.obj  
WIN10_X86_GUI_RELEASE\javajni.obj  WIN10_X86_GUI_RELEASE\log.obj  
WIN10_X86_GUI_RELEASE\mclib.obj  WIN10_X86_GUI_RELEASE\registry.obj  
WIN10_X86_GUI_RELEASE\rprocess.obj  WIN10_X86_GUI_RELEASE\security.obj  
WIN10_X86_GUI_RELEASE\service.obj  WIN10_X86_GUI_RELEASE\utils.obj  
WIN10_X86_GUI_RELEASE\prunmgr.obj WIN10_X86_GUI_RELEASE\prunmgr.res 
kernel32.lib advapi32.lib ole32.lib shell32.lib user32.lib gdi32.lib 
winspool.lib comdlg32.lib comctl32.lib shlwapi.lib  
/pdb:WIN10_X86_GUI_RELEASE\prunmgr.pdb /out:WIN10_X86_GUI_RELEASE\prunmgr.exe' 
: return code '0x458'
Stop.

Maybe something is not getting cleaned?

The X64 is OK though:

nmake clean
nmake CPU=X64 STATIC_CRT=Hybrid

Same issue with prunsrv:

C:\tmp\commons-daemon-1.4.1-src\src\native\windows\apps\prunsrv>nmake clean && 
nmake CPU=X86 STATIC_CRT=Hybrid

Microsoft (R) Program Maintenance Utility Version 14.41.34120.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Microsoft (R) Program Maintenance Utility Version 14.41.34120.0
Copyright (C) Microsoft Corporation.  All rights reserved.

         link.exe /NOLOGO /SUBSYSTEM:CONSOLE /MACHINE:X86 /INCREMENTAL:NO 
/DEBUG /OPT:REF /guard:cf /NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib 
/stack:0x64000 /version:1.0 /DYNAMICBASE  /NXCOMPAT 
WIN10_X86_EXE_RELEASE\cmdline.obj  WIN10_X86_EXE_RELEASE\console.obj  
WIN10_X86_EXE_RELEASE\gui.obj  WIN10_X86_EXE_RELEASE\handles.obj  
WIN10_X86_EXE_RELEASE\javajni.obj  WIN10_X86_EXE_RELEASE\log.obj  
WIN10_X86_EXE_RELEASE\mclib.obj  WIN10_X86_EXE_RELEASE\registry.obj  
WIN10_X86_EXE_RELEASE\rprocess.obj  WIN10_X86_EXE_RELEASE\security.obj  
WIN10_X86_EXE_RELEASE\service.obj  WIN10_X86_EXE_RELEASE\utils.obj  
WIN10_X86_EXE_RELEASE\prunsrv.obj WIN10_X86_EXE_RELEASE\prunsrv.res 
kernel32.lib advapi32.lib ole32.lib shell32.lib user32.lib gdi32.lib 
winspool.lib comdlg32.lib comctl32.lib shlwapi.lib  
/pdb:WIN10_X86_EXE_RELEASE\prunsrv.pdb /out:WIN10_X86_EXE_RELEASE\prunsrv.exe
WIN10_X86_EXE_RELEASE\cmdline.obj : fatal error LNK1112: module machine type 
'x64' conflicts with target machine type 'x86'
NMAKE : fatal error U1077: 'link.exe /NOLOGO /SUBSYSTEM:CONSOLE /MACHINE:X86 
/INCREMENTAL:NO /DEBUG /OPT:REF /guard:cf /NODEFAULTLIB:libucrt.lib 
/DEFAULTLIB:ucrt.lib /stack:0x64000 /version:1.0 /DYNAMICBASE  /NXCOMPAT 
WIN10_X86_EXE_RELEASE\cmdline.obj  WIN10_X86_EXE_RELEASE\console.obj  
WIN10_X86_EXE_RELEASE\gui.obj  WIN10_X86_EXE_RELEASE\handles.obj  
WIN10_X86_EXE_RELEASE\javajni.obj  WIN10_X86_EXE_RELEASE\log.obj  
WIN10_X86_EXE_RELEASE\mclib.obj  WIN10_X86_EXE_RELEASE\registry.obj  
WIN10_X86_EXE_RELEASE\rprocess.obj  WIN10_X86_EXE_RELEASE\security.obj  
WIN10_X86_EXE_RELEASE\service.obj  WIN10_X86_EXE_RELEASE\utils.obj  
WIN10_X86_EXE_RELEASE\prunsrv.obj WIN10_X86_EXE_RELEASE\prunsrv.res 
kernel32.lib advapi32.lib ole32.lib shell32.lib user32.lib gdi32.lib 
winspool.lib comdlg32.lib comctl32.lib shlwapi.lib  
/pdb:WIN10_X86_EXE_RELEASE\prunsrv.pdb /out:WIN10_X86_EXE_RELEASE\prunsrv.exe' 
: return code '0x458'

In addition, a plain X86 build fails:

C:\tmp\commons-daemon-1.4.1-src\src\native\windows\apps\prunsrv>nmake clean && 
nmake CPU=X86

Microsoft (R) Program Maintenance Utility Version 14.41.34120.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Microsoft (R) Program Maintenance Utility Version 14.41.34120.0
Copyright (C) Microsoft Corporation.  All rights reserved.

         link.exe /NOLOGO /SUBSYSTEM:CONSOLE /MACHINE:X86 /INCREMENTAL:NO 
/DEBUG /OPT:REF /guard:cf /stack:0x64000 /version:1.0 /DYNAMICBASE  /NXCOMPAT 
WIN10_X86_EXE_RELEASE\cmdline.obj  WIN10_X86_EXE_RELEASE\console.obj  
WIN10_X86_EXE_RELEASE\gui.obj  WIN10_X86_EXE_RELEASE\handles.obj  
WIN10_X86_EXE_RELEASE\javajni.obj  WIN10_X86_EXE_RELEASE\log.obj  
WIN10_X86_EXE_RELEASE\mclib.obj  WIN10_X86_EXE_RELEASE\registry.obj  
WIN10_X86_EXE_RELEASE\rprocess.obj  WIN10_X86_EXE_RELEASE\security.obj  
WIN10_X86_EXE_RELEASE\service.obj  WIN10_X86_EXE_RELEASE\utils.obj  
WIN10_X86_EXE_RELEASE\prunsrv.obj WIN10_X86_EXE_RELEASE\prunsrv.res 
kernel32.lib advapi32.lib ole32.lib shell32.lib user32.lib gdi32.lib 
winspool.lib comdlg32.lib comctl32.lib shlwapi.lib  
/pdb:WIN10_X86_EXE_RELEASE\prunsrv.pdb /out:WIN10_X86_EXE_RELEASE\prunsrv.exe
WIN10_X86_EXE_RELEASE\cmdline.obj : fatal error LNK1112: module machine type 
'x64' conflicts with target machine type 'x86'
NMAKE : fatal error U1077: 'link.exe /NOLOGO /SUBSYSTEM:CONSOLE /MACHINE:X86 
/INCREMENTAL:NO /DEBUG /OPT:REF /guard:cf /stack:0x64000 /version:1.0 
/DYNAMICBASE  /NXCOMPAT WIN10_X86_EXE_RELEASE\cmdline.obj  
WIN10_X86_EXE_RELEASE\console.obj  WIN10_X86_EXE_RELEASE\gui.obj  
WIN10_X86_EXE_RELEASE\handles.obj  WIN10_X86_EXE_RELEASE\javajni.obj  
WIN10_X86_EXE_RELEASE\log.obj  WIN10_X86_EXE_RELEASE\mclib.obj  
WIN10_X86_EXE_RELEASE\registry.obj  WIN10_X86_EXE_RELEASE\rprocess.obj  
WIN10_X86_EXE_RELEASE\security.obj  WIN10_X86_EXE_RELEASE\service.obj  
WIN10_X86_EXE_RELEASE\utils.obj  WIN10_X86_EXE_RELEASE\prunsrv.obj 
WIN10_X86_EXE_RELEASE\prunsrv.res kernel32.lib advapi32.lib ole32.lib 
shell32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib comctl32.lib 
shlwapi.lib  /pdb:WIN10_X86_EXE_RELEASE\prunsrv.pdb 
/out:WIN10_X86_EXE_RELEASE\prunsrv.exe' : return code '0x458'

My tool chain:

nmake:
Microsoft (R) Program Maintenance Utility Version 14.41.34120.0
cl:
Microsoft (R) C/C++ Optimizing Compiler Version 19.41.34120 for x64
link:
Microsoft (R) Incremental Linker Version 14.41.34120.0

VS 2022 says my build tools are at 16.11.40 and the current version is 
16.11.42, not sure that matters.

Gary

On 2025/01/07 17:35:48 Gary Gregory wrote:
HI Mark,

After "brew install automake", I was able to "sh support/buildconf.sh"
which gave me:

aclocal: warning: autoconf input should be named 'configure.ac', not
'configure.in'
./support/apfunctions.m4:18: warning: underquoted definition of AP_MSG_HEADER
./support/apfunctions.m4:18:   run info Automake 'Extending aclocal'
./support/apfunctions.m4:18:   or see
https://www.gnu.org/software/automake/manual/automake.html#Extending-aclocal
support/buildconf.sh: configure script generated successfully

Then it worked with "make" giving 3 warnings:

arguments.c:453:5: warning: switch condition has boolean value [-Wswitch-bool]
   453 |     switch (par) {
       |     ^       ~~~
arguments.c:464:5: warning: switch condition has boolean value [-Wswitch-bool]
   464 |     switch (par) {
       |     ^       ~~~
arguments.c:475:5: warning: switch condition has boolean value [-Wswitch-bool]
   475 |     switch (par) {
       |     ^       ~~~
3 warnings generated.

Then I was also able to build the 64-binaries but not the fat binaries
(I must be missing something)

I will try Windows next.

Gary.

On Tue, Jan 7, 2025 at 12:22 PM Mark Thomas <ma...@apache.org> wrote:

On 07/01/2025 15:59, Gary Gregory wrote:
Hi Mark,

I tested the src zip file, on macOS, when I run:

sh support/buildconf.sh

I get:

support/buildconf.sh: line 22: autoreconf: command not found
support/buildconf.sh: cannot generate configure script

I have gcc installed (Apple clang version 16.0.0 (clang-1600.0.26.6)),
so an unlisted requirement is "autoreconf". I installed "brew install
autoconf".

src/native/unix/install lists autoconf as a requirement

Then, I get:

sh support/buildconf.sh
autoreconf: warning: autoconf input should be named 'configure.ac',
not 'configure.in'

That warning is harmless but has been fixed for the next release as I
saw it too when I was building RC1.

Can't exec "aclocal": No such file or directory at
/opt/homebrew/Cellar/autoconf/2.72/share/autoconf/Autom4te/FileUtils.pm
line 299.
autoreconf: error: aclocal failed with exit status: 2
support/buildconf.sh: cannot generate configure script

Looks like this issue:
https://github.com/Homebrew/homebrew-core/issues/21125

Updating the docs to state automake is required rather than autoconf
will probably save a few folks some Googling.

When I try it from the HEAD of git master, I get:

Can't exec "aclocal": No such file or directory at
/opt/homebrew/Cellar/autoconf/2.72/share/autoconf/Autom4te/FileUtils.pm
line 299.
autoreconf: error: aclocal failed with exit status: 2
support/buildconf.sh: cannot generate configure script

Any ideas? If macOS isn't supported, it would be nice to say that in
unix/INSTALL.txt

Please let me know.

I'll update the INSTALL.txt to refer to to automake rather than autoconf.

Let me know if you think that requires a new RC.

Mark


--
On the Java side: I tested the src zip file:

- SHA512 OK
- ASC OK
- mvn clean verify

The above succeeds on:

openjdk version "11.0.25" 2024-10-15
OpenJDK Runtime Environment Homebrew (build 11.0.25+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.25+0, mixed mode)

openjdk version "17.0.13" 2024-10-15
OpenJDK Runtime Environment Homebrew (build 17.0.13+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.13+0, mixed mode, sharing)

openjdk version "21.0.5" 2024-10-15
OpenJDK Runtime Environment Homebrew (build 21.0.5)
OpenJDK 64-Bit Server VM Homebrew (build 21.0.5, mixed mode, sharing)

openjdk version "23.0.1" 2024-10-15
OpenJDK Runtime Environment Homebrew (build 23.0.1)
OpenJDK 64-Bit Server VM Homebrew (build 23.0.1, mixed mode, sharing)

Maven:

Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /opt/homebrew/Cellar/maven/3.9.9/libexec
Java version: 17.0.13, vendor: Homebrew, runtime:
/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "15.2", arch: "aarch64", family: "mac"

Darwin ****.local 24.2.0 Darwin Kernel Version 24.2.0: Fri Dec  6
19:03:40 PST 2024; root:xnu-11215.61.5~2/RELEASE_ARM64_T6041 arm64
Docker version 27.3.1, build ce12230

On Tue, Jan 7, 2025 at 10:21 AM Mark Thomas <ma...@apache.org> wrote:

We have fixed a few bugs and added enhancements since Apache Commons
Daemon 1.4.0 was released, so I would like to release Apache Commons
Daemon 1.4.1.

Apache Commons Daemon 1.4.1 RC1 is available for review here:
       https://dist.apache.org/repos/dist/dev/commons/daemon/1.4.1-RC1
(svn revision 74028)

The Git tag commons-daemon-1.4.1-RC1 commit for this RC is
067ee7f609ad25c90fb1c0ff6ad049f33b2ed387 which you can browse here:

https://gitbox.apache.org/repos/asf?p=commons-daemon.git;a=commit;h=067ee7f609ad25c90fb1c0ff6ad049f33b2ed387
You may checkout this tag using:
       git clone https://gitbox.apache.org/repos/asf/commons-daemon.git
--branch commons-daemon-1.4.1-RC1 commons-daemon-1.4.1-RC1

Maven artifacts are here:

https://repository.apache.org/content/repositories/orgapachecommons-1799/commons-daemon/commons-daemon/1.4.1/

These are the artifacts and their hashes:

#Release SHA-512s
#Tue Jan 07 14:42:59 GMT 2025
commons-daemon-1.4.1-bin-windows.zip=b8eeea01dbca495780e61db26776eab1561990d54499202bcb5d97c9f49e194ebc40002fabbaf74b5334481a2f42f80df5132efd0671632074df83759e04484a
commons-daemon-1.4.1-bin.tar.gz=6e1e590d1b25b1c543b7e149748b25b7a200a20a70d490b1f2628ce808dd9da170d33c62b57421bdf7db0a9e0ac1df7f67de5e9ea4e70d500ec97ff7e6662e6a
commons-daemon-1.4.1-bin.zip=bc9f1f27c450556893b738e4ff1068c5289be56c2fc333abbe418abe42a039e1e8677608b54e4514d7fa82d220060c35c8492c23cd73515f961fc5091c8ec43f
commons-daemon-1.4.1-bom.json=d6a6877f3714a2ebd87d7601cf17bfeff03c7be68a8e14ef9ad6f4766b95a327f980e7c141eee0f6eb2353d67c1f873d41679088f363b8f796620ea81924999a
commons-daemon-1.4.1-bom.xml=f1faf168562749df30d268ab50d36c77b675d78d181d595c15f1de5fde5ffb1645ab183fe03524885a89465ec3fb8bfea983f4bb1b2d4c50b579bb08806646a7
commons-daemon-1.4.1-javadoc.jar=ac426d6eb10fa88f61e22ab039abd13f244db4687481cdc97bc42d4f1ae0534251eeb500b95d042d44939e5466aff924d68c6499a20a392fdf91da74519bd4c3
commons-daemon-1.4.1-native-src.tar.gz=578002ddd6d1a63488b9920b848d839cab39fca58c1e208b929b5c327590ca63c5878cd5280d2a2006191a8e81d93e5ca07414f6f6f4a72669352df72a5977b1
commons-daemon-1.4.1-native-src.zip=2e957e7b762b0031a6cea90d737037b0ede72e0d24573ad358a4fc7ba138e0ef1b7fd1a039543a96b0037120088c09a89737967619df6d202b2863703f146cbd
commons-daemon-1.4.1-sources.jar=55dbeb7b0dd8474a786d20b336cd86cb767692f1fd6b476c33e45f8c66adb85596d7f1b303bd9a039fe5939270fef198697347bf646574a32aa5e478d51ee5c7
commons-daemon-1.4.1-src.tar.gz=948d176922e3d7d0843e9e8d6bdba653b367b3d4d87dc96e600bfe6a8721c1d813584116773e4a32740424e276b93c1808e0b644ee79e21b23b23d1b08b5569a
commons-daemon-1.4.1-src.zip=b18eec0a2937d52b14ee468d42b8d0a3e317d6de181377fee38b9f6d87e3151188563e4630f364ac44ccbb080c16f0bdd2c8e1f243efcd34111ce182a2f3b573
commons-daemon_commons-daemon-1.4.1.spdx.json=957ab7bd230f6d6f401be67e50dad3cead32139f001156d57e46521c367c48c5dd579b3a01f3c8b2ca6bf735682018e8f88dc3c5247e9a8f82bd3d0345e2eb69


KEYS:
     https://downloads.apache.org/commons/KEYS

Please review the release candidate and vote.
This vote will close no sooner than 72 hours from now.

     [ ] +1 Release these artifacts
     [ ] +0 OK, but...
     [ ] -0 OK, but really should fix...
     [ ] -1 I oppose this release because...

Thank you,

Mark Thomas,
Release Manager (using key 10C01C5A2F6059E7)

For following is intended as a helper and refresher for reviewers.

Validating a release candidate
==============================

These guidelines are NOT complete.

Requirements: Git, Java, Maven.

You can validate a release from a release candidate (RC) tag as follows.

1a) Clone and checkout the RC tag

git clone https://gitbox.apache.org/repos/asf/commons-daemon.git
--branch commons-daemon-1.4.1-RC1 commons-daemon-1.4.1-RC1
cd commons-daemon-1.4.1-RC1

1b) Download and unpack the source archive from:

https://dist.apache.org/repos/dist/dev/commons/daemon/1.4.1-RC1/source

2) Check Apache licenses

This step is not required if the site includes a RAT report page which
you then must check.

mvn apache-rat:check

3) Check binary compatibility

Older components still use Apache Clirr:

This step is not required if the site includes a Clirr report page which
you then must check.

mvn clirr:check

Newer components use JApiCmp with the japicmp Maven Profile:

This step is not required if the site includes a JApiCmp report page
which you then must check.

mvn install -DskipTests -P japicmp japicmp:cmp

4) Build the package

mvn -V clean package

You can record the Maven and Java version produced by -V in your VOTE reply.
To gather OS information from a command line:
Windows: ver
Linux: uname -a

5) Build the site for a single module project

Note: Some plugins require the components to be installed instead of
packaged.

mvn site
Check the site reports in:
- Windows: target\site\index.html
- Linux: target/site/index.html

6) Build the site for a multi-module project

mvn site
mvn site:stage
Check the site reports in:
- Windows: target\site\index.html
- Linux: target/site/index.html

Note that the project reports are created for each module.
Modules can be accessed using the 'Project Modules' link under
the 'Project Information' menu (see <path-to-site>/modules.html).

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to