Bug ID 1020046
Summary xsp build should fail but not
Classification openSUSE
Product openSUSE Tumbleweed
Version Current
Hardware Other
OS Other
Status NEW
Severity Normal
Priority P5 - None
Component Mono
Assignee bnc-team-mono@forge.provo.novell.com
Reporter i@marguerite.su
QA Contact qa-bugs@suse.de
Found By ---
Blocker ---

Hi,

Recently I fixed build for xsp in Leap 42.3 by backporting a patch from
Tumbleweed.[1]

The error message was: configure: error: missing required Mono 2.0 assembly:
System.Core.dll

I sent a maintenance request[2] because the mono-core's versions are all 4.x
and the xsp's versions are all the same.

and Andreas Stieger rejected it because he thought why we should fix build
problems for successful builds.

So I invested further:

In the configure.ac of xsp there is a check:

<pre>
SHAMROCK_CHECK_MONO_2_0_GAC_ASSEMBLIES([        
        System.Core
    System.Configuration
    System.Data
    System.Web
    Mono.Posix
    Mono.Security
])
</pre>

SHAMROCK_CHECK_MONO_2_0_GAC_ASSEMBLIES refers to this:

<pre>
AC_DEFUN([_SHAMROCK_CHECK_MONO_GAC_ASSEMBLIES],
[
    for asm in $(echo "$*" | cut -d, -f3- | sed 's/\,/ /g')
    do
        AC_MSG_CHECKING([for Mono $2 GAC for $asm.dll])
        echo "$($PKG_CONFIG --variable=libdir $1)/mono/$2/$asm.dll"
        echo "$($PKG_CONFIG --variable=prefix $1)/lib/mono/$2/$asm.dll"
        if test \
            -e "$($PKG_CONFIG --variable=libdir $1)/mono/$2/$asm.dll" -o \
            -e "$($PKG_CONFIG --variable=prefix $1)/lib/mono/$2/$asm.dll"; \
            then \
            AC_MSG_RESULT([found])
        else
            AC_MSG_RESULT([not found])
            AC_MSG_ERROR([missing required Mono $2 assembly: $asm.dll])
        fi
    done
])
</pre>

in build/m4/shamrock/mono.m4, basically it will check the existence of these
two files:

/usr/lib64/mono/2.0/System.Core.dll
/usr/lib/mono/2.0/System.Core.dll

There are certainly no such files because there's no longer
/usr/lib/mono/2.0/System.Core.dll in mono-core 4.x.

So, theoretically xsp build should fail on every openSUSE release and
Tumbleweed.

But, the only failure I saw was on Leap 42.3. After applying two patches that
certainly will not fix this, it build successfully again.

In Leap 42.1/42.2 released repository without those two patches, I saw:

[   46s] checking for Mono 2.0 GAC for System.Core.dll... found
[   46s] checking for Mono 2.0 GAC for System.Configuration.dll... found
[   46s] checking for Mono 2.0 GAC for System.Data.dll... found
[   46s] checking for Mono 2.0 GAC for System.Web.dll... found
[   46s] checking for Mono 2.0 GAC for Mono.Posix.dll... found
[   46s] checking for Mono 2.0 GAC for Mono.Security.dll... found

But actually they should fail, see my test:

https://build.opensuse.org/package/show/home:MargueriteSu:branches:OBS_Maintained:xsp/xsp.openSUSE_Leap_42.2_Update

I didn't change anything actually. I didn't apply any patch, just defined some
inner variables in the specfile.

Theoretically it should build successfully just as it was in Leap 42.1/42.2,
but it didn't.

So there're two directions now:

1. Why our Build Service didn't trigger a failure when it should and it can.
2. Why xsp/mono continued the build when a must-have library was missing? Did
it fallback to /usr/lib/mono/4.5/System.Core.dll? or it just bundled/rebuilt a
System.Core.dll 2.0? 

References:
1. https://build.opensuse.org/request/show/448139
2. https://build.opensuse.org/request/show/448186


You are receiving this mail because: