[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Generating msvc-export Re: Playing with svnmover

From: Daniel Shahaf <d.s_at_daniel.shahaf.name>
Date: Thu, 19 Mar 2015 07:14:57 +0000

Bert Huijben wrote on Thu, Mar 19, 2015 at 00:44:02 +0100:
> > [[[
> > svn_repos-1.lib(commit.obj) : error LNK2019: unresolved external
> > symbol _svn_editor3p__insert_shims referenced in funct
> > ion _svn_repos_get_commit_editor5
> > [C:\research\svn\dev\move-tracking-2\build\win32\vcnet-
> > vcproj\libsvn_repos_dll.vcxpro
> > j]
> > C:\research\svn\dev\move-tracking-
> > 2\Debug\subversion\libsvn_repos\libsvn_repos-1.dll
> > : fatal error LNK1120: 1 unresolve
> > d externals [C:\research\svn\dev\move-tracking-2\build\win32\vcnet-
> > vcproj\libsvn_repos_dll.vcxproj]
> > ...
> > svn_wc-1.lib(update_editor.obj) : error LNK2019: unresolved external
> > symbol _svn_delta__ev3_from_delta_for_update refer
> > enced in function _make_editor3
> > [C:\research\svn\dev\move-tracking-2\build\win32\vcnet-
> > vcproj\libsvn_wc_dll.vcxproj]
> > svn_wc-1.lib(deprecated.obj) : error LNK2019: unresolved external
> > symbol _svn_delta__delta_from_ev3_for_update referenc
> > ed in function _svn_wc_get_update_editor4
> > [C:\research\svn\dev\move-tracking-2\build\win32\vcnet-
> > vcproj\libsvn_wc_dll.v
> > cxproj]
> > C:\research\svn\dev\move-tracking-2\Debug\subversion\libsvn_wc\libsvn_wc-
> > 1.dll
> > : fatal error LNK1120: 2 unresolved exte
> > rnals [C:\research\svn\dev\move-tracking-2\build\win32\vcnet-
> > vcproj\libsvn_wc_dll.vcxproj]
> > ]]]
>
> I'm guessing this is caused by a missing msvc-export = <new-header> definition in build.conf.
>
> Without that new functions are not exported from .DLLs on Windows.

For what it's worth, here are a pair of scripts that can be used
together to generate a list of headers missing from msvc-export for
a given library.

That's just a proof-of-concept, in particular, it depends on having
an up-to-date tags file in the source tree.

Here is how it works:

    % cd root-of-trunk-working-copy
    % ctags -R ./
    % ./extract-msvc-export.py libsvn_wc
    subversion/include/private/svn_wc_private.h
    subversion/include/svn_wc.h
    % ./compute-msvc-export.py libsvn_wc
    subversion/include/private/svn_wc_private.h
    subversion/include/svn_wc.h
    % list-headers-missing-from-msvc-export-for() { ./extract-msvc-export.py $1 >1; ./compute-msvc-export.py $1 >2; diff 1 2; rm 1 2 }
    % list-headers-missing-from-msvc-export-for libsvn_subr
    18a19
> subversion/include/private/svn_pseudo_md5.h

This example shows the script correctly determined that svn_pseudo_md5.h
declares functions that are defined in libsvn_subr, but is not listed in
the msvc-export setting for that library.¹

It won't be hard to turn it into a tools/dev/ script that automatically
edits build.conf to add anything that's missing, if anyone thinks that's
a good idea...

Daniel

¹ That svn_pseudo_md5.h discrepancy doesn't break the windows build
because, currently, nothing that uses libsvn_subr.dll uses that header.

Received on 2015-03-19 08:17:34 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.