[Distutils] Building ordinary shared library?

Pearu Peterson pearu@cens.ioc.ee
Sun Oct 6 04:43:01 2002


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--296533764-2147227541-1033893716=:5990
Content-Type: TEXT/PLAIN; charset=US-ASCII


On Sat, 5 Oct 2002, David Abrahams wrote:

> Hi,
> 
> I'm about to release v2 of Boost.Python, and I thought it might be nice to
> provide a distutils setup for it. We have our own build system, but some
> Python users might be more comfortable with distutils, and I have a secret
> hope that distutils will be able to work on a few paltforms we don't have
> covered such as MacOS X.
> 
> I'm now kicking myself for throwing them away, but one of my users sent me
> distutils scripts for Boost.Python a while back as part of a bug report.
> 
> My problems are twofold:
> 
> 1. I have to distribute a shared library which is not an extension module.
> The extension modules I have to distribute (tests and examples) all link to
> this library.

Attached is a setup_libbpl2.py file that builds libbpl2.so file containing
boost.python code. After
  setup_libbpl2.py install
it can be used as follows. The setup.py file of the extension module
contains the following bits:

from libbpl2 import __file__ as boost_so

ext = Extension('foo',
                sources=[..],
                include_dirs=[boost_dir]+..,
                ..
                extra_objects = [boost_so],
                )

Attachement also includes setup_ginac.py file as a real example of using
libbpl2 library.

Note that setup_libbpl2.py will not probaly work with the current
boost.python V2 as the last time I checked it was few months ago and
since then I have not had time to update it. However, the attached files
illustrate one way how to solve one of your problems.

HTH,
	Pearu

--296533764-2147227541-1033893716=:5990
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="setup_ginac.py"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.21.0210061141560.5990@cens.kybi>
Content-Description: 
Content-Disposition: attachment; filename="setup_ginac.py"

IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMi4yDQoiIiINCg0KQnVpbGQvaW5zdGFs
bCBQeXRob24gYmluZGluZ3MgdG8gR2lOYUMgbGlicmFyeS4NCg0KQ29weXJp
Z2h0IDIwMDIgUGVhcnUgUGV0ZXJzb24gYWxsIHJpZ2h0cyByZXNlcnZlZCwN
ClBlYXJ1IFBldGVyc29uIDxwZWFydUBjZW5zLmlvYy5lZT4gICAgICAgICAg
DQpQZXJtaXNzaW9uIHRvIHVzZSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0
aGlzIHNvZnR3YXJlIGlzIGdpdmVuIHVuZGVyIHRoZQ0KdGVybXMgb2YgdGhl
IExHUEwuICBTZWUgaHR0cDovL3d3dy5mc2Yub3JnDQoNCk5PIFdBUlJBTlRZ
IElTIEVYUFJFU1NFRCBPUiBJTVBMSUVELiAgVVNFIEFUIFlPVVIgT1dOIFJJ
U0suDQokUmV2aXNpb246IDEuNCAkDQokRGF0ZTogMjAwMi8wNi8wMSAxNjox
Nzo0MyAkDQpQZWFydSBQZXRlcnNvbg0KIiIiDQoNCl9fdmVyc2lvbl9fID0g
IiRJZDogc2V0dXAucHksdiAxLjQgMjAwMi8wNi8wMSAxNjoxNzo0MyBwZWFy
dSBFeHAgJCINCg0KYm9vc3RfZGlyID0gJy4vYm9vc3QnDQpnY2NfZXhlID0g
J2djYycNCmdwcF9leGUgPSAnZysrJw0KZGlzYWJsZV9vcHQgPSAxDQoNCmlt
cG9ydCBzeXMsb3MscmUNCg0KaWYgc3lzLnZlcnNpb24gPCAnMi4yJzoNCiAg
ICBwcmludCAnUHl0aG9uID49Mi4yIGlzIHJlcXVpcmVkIGJ1dCBnb3QgJytz
eXMudmVyc2lvbls6Nl0NCiAgICBzeXMuZXhpdCgpDQoNCmlmIG5vdCBvcy5w
YXRoLmlzZGlyKGJvb3N0X2Rpcik6DQogICAgcHJpbnQgJ05vIEJvb3N0IGRp
cmVjdG9yeScsYm9vc3RfZGlyDQogICAgc3lzLmV4aXQoKQ0KDQpmcm9tIGxp
YmJwbDIgaW1wb3J0IF9fZmlsZV9fIGFzIGJvb3N0X3NvDQoNCmV4dHJhX2Nv
bXBpbGVfYXJncyA9IFtdDQoNCiMrKysrKysrKyBHaU5hQyBpbmZvcm1hdGlv
biArKysrKysrKysNCmZyb20gY29tbWFuZHMgaW1wb3J0IGdldHN0YXR1c291
dHB1dCxnZXRvdXRwdXQNCmdpbmFjX2NvbmZpZ19zY3JpcHQgPSAnZ2luYWMt
Y29uZmlnJw0KcyxnaW5hY192ZXJzaW9uID0gZ2V0c3RhdHVzb3V0cHV0KGdp
bmFjX2NvbmZpZ19zY3JpcHQrJyAtLXZlcnNpb24nKQ0KaWYgbm90IHM6DQog
ICAgcHJpbnQgJ0dpTmFDIHZlcnNpb24nLGdpbmFjX3ZlcnNpb24NCiAgICBn
aW5hY19wcmVmaXg9Z2V0b3V0cHV0KGdpbmFjX2NvbmZpZ19zY3JpcHQrJyAt
LXByZWZpeCcpDQogICAgZ2luYWNfc28gPSBvcy5wYXRoLmpvaW4gKGdpbmFj
X3ByZWZpeCwnbGliJywnbGliZ2luYWMuc28nKQ0KICAgIGdpbmFjX2xpYnM9
Z2V0b3V0cHV0KGdpbmFjX2NvbmZpZ19zY3JpcHQrJyAtLWxpYnMnKQ0KICAg
IGdpbmFjX2NwcGZsYWdzPWdldG91dHB1dChnaW5hY19jb25maWdfc2NyaXB0
KycgLS1jcHBmbGFncycpDQogICAgcHJpbnQgZ2luYWNfcHJlZml4DQogICAg
cHJpbnQgZ2luYWNfbGlicw0KICAgIHByaW50IGdpbmFjX3NvDQogICAgcHJp
bnQgZ2luYWNfY3BwZmxhZ3MNCiAgICBnaW5hY19pbmNsdWRlX2RpcnMgPSBb
XQ0KICAgIG1hdGNoID0gcmUuY29tcGlsZShyJy1JLipcWicpLm1hdGNoDQog
ICAgZm9yIGQgaW4gZ2luYWNfY3BwZmxhZ3Muc3BsaXQoKToNCiAgICAgICAg
YXNzZXJ0IG1hdGNoKGQpDQogICAgICAgIGdpbmFjX2luY2x1ZGVfZGlycy5h
cHBlbmQoZFsyOl0pDQoNCiAgICBnaW5hY19saWJyYXJ5X2RpcnMgPSBbXQ0K
ICAgIGdpbmFjX2xpYnJhcmllcyA9IFtdDQogICAgbWF0Y2hfTCA9IHJlLmNv
bXBpbGUocictTC4qXFonKS5tYXRjaA0KICAgIG1hdGNoX2wgPSByZS5jb21w
aWxlKHInLWwuKlxaJykubWF0Y2gNCiAgICBmb3IgZCBpbiBnaW5hY19saWJz
LnNwbGl0KCk6DQogICAgICAgIGlmIG1hdGNoX0woZCk6DQogICAgICAgICAg
ICBnaW5hY19saWJyYXJ5X2RpcnMuYXBwZW5kKGRbMjpdKQ0KICAgICAgICBl
bGlmIG1hdGNoX2woZCk6DQogICAgICAgICAgICBnaW5hY19saWJyYXJpZXMu
YXBwZW5kKGRbMjpdKQ0KZWxzZToNCiAgICBwcmludCAnRmFpbGVkIHRvIGV4
ZWN1dGUnLGdpbmFjX2NvbmZpZ19zY3JpcHQNCiAgICBwcmludCAnSW5zdGFs
bCBHaU5hQyAod3d3LmdpbmFjLmRlKSBhbmQgcmVydW4nLHN5cy5hcmd2WzBd
DQogICAgc3lzLmV4aXQoKQ0KDQojKysrKysrKyBFeHRlbnNpb25zICsrKysr
KysNCmZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwLCBFeHRlbnNp
b24NCmV4dCA9IEV4dGVuc2lvbignZ2luYWMuX2dpbmFjJywNCiAgICAgICAg
ICAgICAgICBzb3VyY2VzPVsnc3JjL19naW5hYy5jcHAnXSwNCiAgICAgICAg
ICAgICAgICBpbmNsdWRlX2RpcnM9W2Jvb3N0X2Rpcl0rZ2luYWNfaW5jbHVk
ZV9kaXJzLA0KICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IGdpbmFjX2xp
YnJhcmllcywNCiAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnMgPSBnaW5h
Y19saWJyYXJ5X2RpcnMsDQogICAgICAgICAgICAgICAgZXh0cmFfb2JqZWN0
cyA9IFtib29zdF9zb10sDQogICAgICAgICAgICAgICAgKQ0KDQojKysrSEFD
SzogcmVwbGFjZSBsaW5rZXIgZ2NjIHdpdGggZysrICsrKysrKysrKysrDQoN
CmZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcNCnNhdmVfaW5pdF9w
b3NpeCA9IHN5c2NvbmZpZy5faW5pdF9wb3NpeA0KZGVmIG15X2luaXRfcG9z
aXgoKToNCiAgICBzYXZlX2luaXRfcG9zaXgoKQ0KICAgIGcgPSBzeXNjb25m
aWcuX2NvbmZpZ192YXJzDQogICAgZm9yIG4sciBpbiBbKCdMRFNIQVJFRCcs
Z3BwX2V4ZSksKCdDQycsZ2NjX2V4ZSldOg0KICAgICAgICBpZiBnW25dWzoz
XT09J2djYyc6DQogICAgICAgICAgICBwcmludCAnbXlfaW5pdF9wb3NpeDog
Y2hhbmdpbmcgJXMgPSAlciclKG4sZ1tuXSksDQogICAgICAgICAgICBnW25d
ID0gcitnW25dWzM6XQ0KICAgICAgICAgICAgcHJpbnQgJ3RvJyxgZ1tuXWAN
CiAgICBpZiBkaXNhYmxlX29wdCBhbmQgZ1snT1BUJ11bOjE1XT09Jy1ETkRF
QlVHIC1nIC1PMyc6DQogICAgICAgIHByaW50ICdteV9pbml0X3Bvc2l4OiBj
aGFuZ2luZyBPUFQgPScsYGdbJ09QVCddYCwNCiAgICAgICAgZ1snT1BUJ10g
PSAnIC1ETkRFQlVHIC1nICcrZ1snT1BUJ11bMTU6XQ0KICAgICAgICBwcmlu
dCAndG8nLGBnWydPUFQnXWANCnN5c2NvbmZpZy5faW5pdF9wb3NpeCA9IG15
X2luaXRfcG9zaXgNCg0KIysrKysrKysrKysrKysrKysrKysrKysrKw0KZnJv
bSBfX3ZlcnNpb25fXyBpbXBvcnQgdmVyc2lvbg0KcHJpbnQgJ1B5R2lOYUMg
dmVyc2lvbicsdmVyc2lvbg0KDQppZiBfX25hbWVfXyA9PSAiX19tYWluX18i
Og0KICAgIHNldHVwKG5hbWUgPSAicHlnaW5hYyIsDQogICAgICAgICAgdmVy
c2lvbiA9IHZlcnNpb24sDQogICAgICAgICAgZGVzY3JpcHRpb24gPSAiUHlH
aU5hQyAtLS0gUHl0aG9uIGJpbmRpbmdzIHRvIEMrKyBsaWJyYXJ5IEdpTmFD
IiwNCiAgICAgICAgICBsb25nX2Rlc2NyaXB0aW9uPSAiIiINClB5R2lOYUMg
aXMgYSBQeXRob24gcGFja2FnZSB0aGF0IGltcGxlbWVtZW50cyBiaW5kaW5n
IHRvIEMrKyBsaWJyYXJ5DQpHaU5hQy4gIEdpTmFDIChodHRwOi8vd3d3Lmdp
bmFjLmRlLykgaXMgYW4gb3BlbiBmcmFtZXdvcmsgZm9yIHN5bWJvbGljDQpj
b21wdXRhdGlvbiB3aXRoaW4gdGhlIEMrKyBwcm9ncmFtbWluZyBsYW5ndWFn
ZS4NCiIiIiwNCiAgICAgICAgICBhdXRob3IgPSAiUGVhcnUgUGV0ZXJzb24i
LA0KICAgICAgICAgIGF1dGhvcl9lbWFpbCA9ICJwZWFydUBjZW5zLmlvYy5l
ZSIsDQogICAgICAgICAgbWFpbnRhaW5lciA9ICJQZWFydSBQZXRlcnNvbiIs
DQogICAgICAgICAgbWFpbnRhaW5lcl9lbWFpbCA9ICJwZWFydUBjZW5zLmlv
Yy5lZSIsDQogICAgICAgICAgbGljZW5jZSA9ICJMR1BMIiwNCiAgICAgICAg
ICB1cmwgPSAiaHR0cDovL2NlbnMuaW9jLmVlL3Byb2plY3RzL3B5Z2luYWMv
IiwNCiAgICAgICAgICBleHRfbW9kdWxlcyA9IFtleHRdLA0KICAgICAgICAg
IHBhY2thZ2VzID0gWydnaW5hYycsJ2dpbmFjLnRlc3RzJ10sDQogICAgICAg
ICAgcGFja2FnZV9kaXIgPSB7J2dpbmFjJzonLid9LA0KICAgICAgICAgICkN
Cg==
--296533764-2147227541-1033893716=:5990
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="setup_libbpl2.py"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.21.0210061141561.5990@cens.kybi>
Content-Description: 
Content-Disposition: attachment; filename="setup_libbpl2.py"

IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMi4yDQoiIiINCg0KQnVpbGQgQm9vc3Qu
UHl0aG9uIFYyIHNoYXJlZCBsaWJyYXJ5Lg0KUmVxdWlyZXM6IFB5dGhvbiAy
LjIsIGdjYy0zLjAsIEJQTCBWMg0KDQoNCkNvcHlyaWdodCAyMDAyIFBlYXJ1
IFBldGVyc29uIGFsbCByaWdodHMgcmVzZXJ2ZWQsDQpQZWFydSBQZXRlcnNv
biA8cGVhcnVAY2Vucy5pb2MuZWU+ICAgICAgICAgIA0KUGVybWlzc2lvbiB0
byB1c2UsIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBp
cyBnaXZlbiB1bmRlciB0aGUNCnRlcm1zIG9mIHRoZSBMR1BMLiAgU2VlIGh0
dHA6Ly93d3cuZnNmLm9yZw0KDQpOTyBXQVJSQU5UWSBJUyBFWFBSRVNTRUQg
T1IgSU1QTElFRC4gIFVTRSBBVCBZT1VSIE9XTiBSSVNLLg0KJFJldmlzaW9u
OiAxLjQgJA0KJERhdGU6IDIwMDIvMDUvMTUgMDc6Mzc6MTggJA0KUGVhcnUg
UGV0ZXJzb24NCiIiIg0KDQpfX3ZlcnNpb25fXyA9ICIkSWQ6IHNldHVwX2xp
YmJwbDIucHksdiAxLjQgMjAwMi8wNS8xNSAwNzozNzoxOCBwZWFydSBFeHAg
JCINCg0KYm9vc3RfZGlyID0gJ2Jvb3N0Jw0KZ2NjX2V4ZSA9ICdnY2MtMy4w
Jw0KZ3BwX2V4ZSA9ICdnKystMy4wJw0KZ2NjX2V4ZSA9ICdnY2MnDQpncHBf
ZXhlID0gJ2crKycNCg0KaW1wb3J0IHN5cyxvcw0KDQppZiBzeXMudmVyc2lv
biA8ICcyLjInOg0KICAgIHByaW50ICdQeXRob24gPj0yLjIgaXMgcmVxdWly
ZWQgYnV0IGdvdCAnK3N5cy52ZXJzaW9uWzo2XQ0KICAgIHN5cy5leGl0KCkN
Cg0KaWYgbm90IG9zLnBhdGguaXNkaXIoYm9vc3RfZGlyKToNCiAgICBwcmlu
dCAnTm8gQm9vc3QgZGlyZWN0b3J5Jyxib29zdF9kaXINCiAgICBzeXMuZXhp
dCgpDQoNCmJwbF9kaXIgPSBvcy5wYXRoLmpvaW4oYm9vc3RfZGlyLCdsaWJz
L3B5dGhvbi9zcmMnKQ0KYnBsX3NyYyA9IFsnY29udmVydGVyL2Zyb21fcHl0
aG9uLmNwcCcsDQogICAgICAgICAgICdjb252ZXJ0ZXIvcmVnaXN0cnkuY3Bw
JywNCiAgICAgICAgICAgJ2NvbnZlcnRlci90eXBlX2lkLmNwcCcsDQogICAg
ICAgICAgICdvYmplY3QvY2xhc3MuY3BwJywNCiAgICAgICAgICAgJ29iamVj
dC9mdW5jdGlvbi5jcHAnLA0KICAgICAgICAgICAnb2JqZWN0L2luaGVyaXRh
bmNlLmNwcCcsDQogICAgICAgICAgICdvYmplY3QvbGlmZV9zdXBwb3J0LmNw
cCcsDQogICAgICAgICAgICdlcnJvcnMuY3BwJywNCiAgICAgICAgICAgJ21v
ZHVsZS5jcHAnLA0KICAgICAgICAgICAnb2JqZWN0cy5jcHAnLA0KICAgICAg
ICAgICAnY29udmVydGVyL2J1aWx0aW5fY29udmVydGVycy5jcHAnLA0KICAg
ICAgICAgICAnY29udmVydGVyL2NhbGxiYWNrLmNwcCcsDQogICAgICAgICAg
IF0NCmJwbF9zcmMgPSBbb3MucGF0aC5qb2luKGJwbF9kaXIscykgZm9yIHMg
aW4gYnBsX3NyY10NCg0KDQpzcmNfZmlsZSA9IG9zLnBhdGguam9pbigndG1w
X2xpYmJwbDIuYycpDQppZiBub3Qgb3MucGF0aC5leGlzdHMoc3JjX2ZpbGUp
Og0KICAgIHByaW50ICdDcmVhdGluZyBmaWxlJyxzcmNfZmlsZQ0KICAgIGYg
PSBvcGVuKHNyY19maWxlLCd3JykNCiAgICBmLndyaXRlKCcnJw0KI2lmZGVm
IF9fQ1BMVVNQTFVTX18NCmV4dGVybiAiQyIgew0KI2VuZGlmDQojaW5jbHVk
ZSAiUHl0aG9uLmgiDQpzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhv
ZHNbXSA9IHsge05VTEwsTlVMTH0gfTsNCkRMX0VYUE9SVCh2b2lkKSBpbml0
bGliYnBsMih2b2lkKSB7IFB5X0luaXRNb2R1bGUoImxpYmJwbDIiLCBtb2R1
bGVfbWV0aG9kcyk7IH0NCiNpZmRlZiBfX0NQTFVTQ1BMVVNfXw0KfQ0KI2Vu
ZGlmDQogICAgJycnKQ0KICAgIGYuY2xvc2UoKQ0KDQpmcm9tIGRpc3R1dGls
cy5jb3JlIGltcG9ydCBzZXR1cCwgRXh0ZW5zaW9uDQoNCmV4dCA9IEV4dGVu
c2lvbignbGliYnBsMicsDQogICAgICAgICAgICAgICAgc291cmNlcz1icGxf
c3JjICsgW3NyY19maWxlXSwNCiAgICAgICAgICAgICAgICBpbmNsdWRlX2Rp
cnM9W2Jvb3N0X2Rpcl0sDQogICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jv
cyA9IFsoJ0JPT1NUX1BZVEhPTl9TT1VSQ0UnLE5vbmUpLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCdCT09TVF9QWVRIT05fRFlOQU1J
Q19MSUInLE5vbmUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKCdCT09TVF9QWVRIT05fVjInLE5vbmUpXSwNCiAgICAgICAgICAgICAg
ICAjZXh0cmFfY29tcGlsZV9hcmdzPVsnLWZ0ZW1wbGF0ZS1kZXB0aC0yMCdd
ICMgZm9yIGdjYy0yLjk1LngNCiAgICAgICAgICAgICAgICApDQoNCiMrKytI
QUNLOiByZXBsYWNlIGxpbmtlciBnY2Mgd2l0aCBnKysgKysrKysrKysrKysN
Cg0KZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZw0Kc2F2ZV9pbml0
X3Bvc2l4ID0gc3lzY29uZmlnLl9pbml0X3Bvc2l4DQpkZWYgbXlfaW5pdF9w
b3NpeCgpOg0KICAgIHNhdmVfaW5pdF9wb3NpeCgpDQogICAgZyA9IHN5c2Nv
bmZpZy5fY29uZmlnX3ZhcnMNCiAgICBmb3IgbixyIGluIFsoJ0xEU0hBUkVE
JyxncHBfZXhlKSwoJ0NDJyxnY2NfZXhlKV06DQogICAgICAgIGlmIGdbbl1b
OjNdPT0nZ2NjJzoNCiAgICAgICAgICAgIHByaW50ICdteV9pbml0X3Bvc2l4
OiBjaGFuZ2luZyAlcyA9ICVyJyUobixnW25dKSwNCiAgICAgICAgICAgIGdb
bl0gPSByK2dbbl1bMzpdDQogICAgICAgICAgICBwcmludCAndG8nLGBnW25d
YA0Kc3lzY29uZmlnLl9pbml0X3Bvc2l4ID0gbXlfaW5pdF9wb3NpeA0KDQoN
CmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6DQogICAgc2V0dXAgKG5hbWUg
PSAibGliYnBsMiIsDQogICAgICAgICAgIHZlcnNpb24gPSAnMC4yJywNCiAg
ICAgICAgICAgZGVzY3JpcHRpb24gPSAibGliYnBsMiAtIEJvb3N0LlB5dGhv
biBWMiBzaGFyZWQgbGlicmFyeSIsDQogICAgICAgICAgIGF1dGhvciA9ICJQ
ZWFydSBQZXRlcnNvbiIsDQogICAgICAgICAgIGF1dGhvcl9lbWFpbCA9ICJw
ZWFydUBjZW5zLmlvYy5lZSIsDQogICAgICAgICAgIG1haW50YWluZXIgPSAi
UGVhcnUgUGV0ZXJzb24iLA0KICAgICAgICAgICBtYWludGFpbmVyX2VtYWls
ID0gInBlYXJ1QGNlbnMuaW9jLmVlIiwNCiAgICAgICAgICAgbGljZW5jZSA9
ICJMR1BMIiwNCiAgICAgICAgICAgdXJsID0gImh0dHA6Ly9jZW5zLmlvYy5l
ZS9wcm9qZWN0cy9weWdpbmFjLyIsDQogICAgICAgICAgIGV4dF9tb2R1bGVz
ID0gW2V4dF0sDQogICAgICAgICAgICkNCg0K
--296533764-2147227541-1033893716=:5990--