Hi
Currently mingw-filesystem contains
# (rpm -ql mingw32-crt | grep '.a$' | while read f ; do i686-w64-mingw32-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-mingw32 Source20: standard-dlls-mingw32 # (rpm -ql mingw64-crt | grep '.a$' | while read f ; do x86_64-w64-mingw32-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-mingw64 Source21: standard-dlls-mingw64 # (rpm -ql ucrt64-crt | grep '.a$' | while read f ; do x86_64-w64-mingw32ucrt-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-ucrt64 Source22: standard-dlls-ucrt64
and
%package -n mingw32-filesystem [...] Provides: %(sed "s/(.*)/mingw32(\1) /g" %{SOURCE20} | tr "\n" " ") Provides: mingw32(mscoree.dll)
%package -n mingw64-filesystem [...] Provides: %(sed "s/(.*)/mingw64(\1) /g" %{SOURCE21} | tr "\n" " ") Provides: mingw64(mscoree.dll)
%package -n ucrt64-filesystem [...] Provides: %(sed "s/(.*)/ucrt64(\1) /g" %{SOURCE22} | tr "\n" " ") Provides: ucrt64(mscoree.dll)
I wonder whether these standard DLL provides should be provided by mingw32-crt, mingw64 and ucrt64-crt instead? The provided DLLs depend on the mingw-w64 version (indeed I just had to update them for mingw-w64-10.0.0), and IMO it would be better to keep mingw-filesystem independent from the mingw-w64 version, i.e. to allow adding macros etc and allow simple git merges to update also the other branches. I'd proceed with removing these from mingw-filesystem, and adding to mingw-crt.spec:
# Steps: # - Perform (scratch) build with bootstrap=1 # - Update the standard-dlls-xxx files as documented below, and rebuild with bootstrap=0 %global bootstrap 0
%if 0%{?bootstrap:1} # (rpm -ql mingw32-crt | grep '.a$' | while read f ; do i686-w64-mingw32-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-mingw32 Source1: standard-dlls-mingw32 # (rpm -ql mingw64-crt | grep '.a$' | while read f ; do x86_64-w64-mingw32-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-mingw64 Source2: standard-dlls-mingw64 # (rpm -ql ucrt64-crt | grep '.a$' | while read f ; do x86_64-w64-mingw32ucrt-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-ucrt64 Source3: standard-dlls-ucrt64 %endif
%package -n mingw32-crt [...] %if 0%{?bootstrap:1} Provides: %(sed "s/(.*)/mingw32(\1) /g" %{SOURCE1} | tr "\n" " ") Provides: mingw32(mscoree.dll) %endif
%package -n mingw64-crt [...] %if 0%{?bootstrap:1} Provides: %(sed "s/(.*)/mingw64(\1) /g" %{SOURCE2} | tr "\n" " ") Provides: mingw64(mscoree.dll) %endif
%package -n ucrt64-crt [...] %if 0%{?bootstrap:1} Provides: %(sed "s/(.*)/ucrt64(\1) /g" %{SOURCE3} | tr "\n" " ") Provides: ucrt64(mscoree.dll) %endif
Any comments/objections?
Thanks Sandro
On Tue, May 3, 2022 at 9:59 AM Sandro Mani manisandro@gmail.com wrote:
Hi
Currently mingw-filesystem contains
# (rpm -ql mingw32-crt | grep '.a$' | while read f ; do i686-w64-mingw32-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-mingw32 Source20: standard-dlls-mingw32 # (rpm -ql mingw64-crt | grep '.a$' | while read f ; do x86_64-w64-mingw32-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-mingw64 Source21: standard-dlls-mingw64 # (rpm -ql ucrt64-crt | grep '.a$' | while read f ; do x86_64-w64-mingw32ucrt-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-ucrt64 Source22: standard-dlls-ucrt64
and
%package -n mingw32-filesystem [...] Provides: %(sed "s/(.*)/mingw32(\1) /g" %{SOURCE20} | tr "\n" " ") Provides: mingw32(mscoree.dll)
%package -n mingw64-filesystem [...] Provides: %(sed "s/(.*)/mingw64(\1) /g" %{SOURCE21} | tr "\n" " ") Provides: mingw64(mscoree.dll)
%package -n ucrt64-filesystem [...] Provides: %(sed "s/(.*)/ucrt64(\1) /g" %{SOURCE22} | tr "\n" " ") Provides: ucrt64(mscoree.dll)
I wonder whether these standard DLL provides should be provided by mingw32-crt, mingw64 and ucrt64-crt instead? The provided DLLs depend on the mingw-w64 version (indeed I just had to update them for mingw-w64-10.0.0), and IMO it would be better to keep mingw-filesystem independent from the mingw-w64 version, i.e. to allow adding macros etc and allow simple git merges to update also the other branches. I'd proceed with removing these from mingw-filesystem, and adding to mingw-crt.spec:
# Steps: # - Perform (scratch) build with bootstrap=1 # - Update the standard-dlls-xxx files as documented below, and rebuild with bootstrap=0 %global bootstrap 0
%if 0%{?bootstrap:1} # (rpm -ql mingw32-crt | grep '.a$' | while read f ; do i686-w64-mingw32-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-mingw32 Source1: standard-dlls-mingw32 # (rpm -ql mingw64-crt | grep '.a$' | while read f ; do x86_64-w64-mingw32-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-mingw64 Source2: standard-dlls-mingw64 # (rpm -ql ucrt64-crt | grep '.a$' | while read f ; do x86_64-w64-mingw32ucrt-dlltool -I $f 2>/dev/null ; done) | sort | uniq | tr A-Z a-z > standard-dlls-ucrt64 Source3: standard-dlls-ucrt64 %endif
%package -n mingw32-crt [...] %if 0%{?bootstrap:1} Provides: %(sed "s/(.*)/mingw32(\1) /g" %{SOURCE1} | tr "\n" " ") Provides: mingw32(mscoree.dll) %endif
%package -n mingw64-crt [...] %if 0%{?bootstrap:1} Provides: %(sed "s/(.*)/mingw64(\1) /g" %{SOURCE2} | tr "\n" " ") Provides: mingw64(mscoree.dll) %endif
%package -n ucrt64-crt [...] %if 0%{?bootstrap:1} Provides: %(sed "s/(.*)/ucrt64(\1) /g" %{SOURCE3} | tr "\n" " ") Provides: ucrt64(mscoree.dll) %endif
Any comments/objections?
That seems to make sense to me, is there a reason why it wasn't before?
On Tue, May 03, 2022 at 04:46:34PM +0200, Sandro Mani wrote:
Any comments/objections?
That seems to make sense to me, is there a reason why it wasn't before?
As far as I see mingw-filesystem provided the standard DLLs since the beginning of the package, perhaps @rjones can recall if there was a reason?
The reason for having the standard provides at all, or the reason they are in mingw-filesystem? The reason for having them at all is just for uniformity. You can "BuildRequires: mingw(wsock32.dll)" and not care whether that comes from Windows/Wine or from Fedora.
The reason they are in mingw-filesystem and not in mingw-crt is likely just because we put them there without thinking about it too much. (Or "filesystem" is the system environment).
Anyway moving them seem sensible, I have no objections.
Rich.
The reason for having the standard provides at all, or the reason they are in mingw-filesystem? The reason for having them at all is just for uniformity. You can "BuildRequires: mingw(wsock32.dll)" and not care whether that comes from Windows/Wine or from Fedora.
The reason they are in mingw-filesystem and not in mingw-crt is likely just because we put them there without thinking about it too much. (Or "filesystem" is the system environment).
Anyway moving them seem sensible, I have no objections.
Done, I've also added a README to mingw-filesystem documenting the steps to build the environment [1].
Sandro
[1] https://src.fedoraproject.org/rpms/mingw-filesystem/blob/rawhide/f/README.md