Closed alefminus closed 9 months ago
This is the diff between the failed and successful builds (after replacing some spaces by end of lines to let the line oriented meld give better output):
The main difference is a missing mscorelib.dll in the failed build, and some changes from api-4.5 versions to 4.0.0.0 versions success.txt failed.txt
Hello @alefminus,
Thanks for reporting this issue.
We are able to reproduce the problem on Fedora 39. It isn't really related to the C# language version but it's due to the .NET Framework version upgrade.
Fedora's mono-complete
package only contains libraries to build with .NET Framework versions 4.0, 4.5 and 4.7.1. This is why building Renode, which currently targets .NET Framework 4.6.2, fails.
We strongly recommend using a mono-complete
package supplied directly by the Mono Project. This is the most complete package as it contains the Roslyn compiler, which is missing in the Fedora's package, and enables building software targeting any .NET Framework version. The first one is especially important because there are known issues with mcs
, the legacy C# compiler, e.g., handling numbers with separators like 0x1_0000_0000
.
The site doesn't contain any official instructions for Fedora but they supply RPM repositories targetting CentOS. We have verified one can add the repository, use it to install Mono and then build Renode successfully in a fresh Fedora 39 docker container with:
dnf install 'dnf-command(config-manager)'
dnf config-manager --add-repo https://download.mono-project.com/repo/centos8-stable.repo
yum install gcc git gtk-sharp2 mono-complete
git clone --recursive -j 10 https://github.com/renode/renode
cd renode
./build.sh
If there are any reasons you have to use Fedora's mono-complete
package, it is possible to enforce .NET Framework version building Renode. If this is the case then we have verified it's possible to build Renode with it by enforcing the use of .NET Framework 4.7.1:
./build.sh --force-net-framework-version 4.7.1
Thanks for the quick reply and detailed diagnosys. I can confirm it works.
On Fri, Feb 2, 2024 at 1:09 PM Adam Jeliński @.***> wrote:
Hello @alefminus https://github.com/alefminus,
Thanks for reporting this issue.
We are able to reproduce the problem on Fedora 39. It isn't really related to the C# language version but it's due to the .NET Framework version upgrade.
Fedora's mono-complete package only contains libraries to build with .NET Framework versions 4.0, 4.5 and 4.7.1. This is why building Renode, which currently targets .NET Framework 4.6.2, fails.
We strongly recommend using a mono-complete package supplied directly by the Mono Project https://www.mono-project.com/download/stable. This is the most complete package as it contains the Roslyn compiler, which is missing in the Fedora's package, and enables building software targeting any .NET Framework version. The first one is especially important because there are known issues with mcs, the legacy C# compiler, e.g., handling numbers with separators like 0x1_0000_0000.
The site doesn't contain any official instructions for Fedora but they supply RPM repositories targetting CentOS. We have verified one can add the repository, use it to install Mono and then build Renode successfully in a fresh Fedora 39 docker container with:
dnf install 'dnf-command(config-manager)' dnf config-manager --add-repo https://download.mono-project.com/repo/centos8-stable.repo yum install gcc git gtk-sharp2 mono-complete git clone --recursive -j 10 https://github.com/renode/renode cd renode ./build.sh
If there are any reasons you have to use Fedora's mono-complete package, it is possible to enforce .NET Framework version building Renode. If this is the case then we have verified it's possible to build Renode with it by enforcing the use of .NET Framework 4.7.1:
./build.sh --force-net-framework-version 4.7.1
— Reply to this email directly, view it on GitHub https://github.com/renode/renode/issues/584#issuecomment-1923586926, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYWFZPBUHWTR4IRPIB5VHWDYRTCQBAVCNFSM6AAAAABCS22EX6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRTGU4DMOJSGY . You are receiving this because you were mentioned.Message ID: @.***>
-- Alon Levy Software Developer Greenvibe 054-2395317
Excellent, thanks for the confirmation.
Just to add to this ticket, I'm running RHEL 9.4 and had the same issues. I managed to build Renode after installing the centos8-stable version of Mono but had to add the --nogpgcheck
flag to DNF as RHEL 9 doesn't support SHA-1 any more.
sudo dnf install -y --nogpgcheck gtk-sharp2 mono-complete
Description
Renode fails to build from source after commit [#53740] Upgrade/limit C# language version to 7.2 (3f4741be5bed39e13806cd1524b87d2e68ab9a3b) on fedora using mono 6.12.0.199.
Expected behaviour
I expected "./build.sh -s" to complete successfully. It does when running on the previous commit; I used git bisect to find it.
How to reproduce?
clone and reset to 3f4741be5bed39e13806cd1524b87d2e68ab9a3b, then build
Failed output: (snipped some to fit github's 2^16 bytes limit)
I did not consult the issue reproduction template since the failure is a basic one, before actually launching anything.
Environment
Please, provide the following information:
Additional information
mono version:
Do you plan to address this issue and file a PR?
I'm pretty clueless and timeless, waiting for help to help.