From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 12 Feb 2004 08:24:55 +0600 From: Alexey Morozov To: ALT Devel discussion list Message-ID: <20040212022455.GA23100@localhost.localdomain> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="6TrnltStXW4iwmi0" Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.4i Subject: [devel] RFC: =?koi8-r?b?8NLB18nM2M7B0SDTyMXNwSDQz9PU0s/FzsnRINDJ1M/OLc3P?= =?koi8-r?b?xNXMxco=?= X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.4 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Feb 2004 02:24:32 -0000 Archived-At: List-Archive: List-Post: --6TrnltStXW4iwmi0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit Я тут слегка доработал схему сборки. Основные цели, которых пытался добиться: * лёгкая сборка для "основной" версии питона * минимум изменений в спек-файл * возможность собрать модуль для строго указанной версии питон, неконфликтующий по имени с "основным" * контроль за типичными ошибками (сборка под несуществующий питон, попытка одновременной сборки под несколько версий) Что получилось на выходе: * "типичный спек файл" (на примере pyserial) * файл макросов, который необходимо положить в /etc/rpm/macros.d/python, и который должен принадлежать какому-нибудь python-common * сборка осуществляется либо через rpmbuild -ba pyserial.spec либо через rpmbuild -ba pyserial.spec --with python например rpmbuild -ba pyserial.spec --with python22 Особенности поведения (требуется доработка): * макросы %version и %release должны быть определены в момент вызова %setup_python_module * имя пакета должно определяться после вызова %setup_python_module через %packagename Чего добиться не удалось: * возможности инкрементального подключения новых версий питон, допустимые версии просто забиты в текст макрофайла * какая-то засада с макросом %error: про ошибку пишет, сборку не прекращает. Приходится выдумывать "ужасные методы" P.S. Brainfuck - фигня! Программирование на макроязыке RPM мозги почище всяких брэйнфаков! Как в макрофайле создать список неизвестной заранее длины а потом по нему проитерироваться я так и не понял. И эта черная магия с экспандом в экспанде. Я так и не понял, почему в одном случае обязательно надо делать вложенные экспанды, а в другом и так проканывает. --6TrnltStXW4iwmi0 Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=python # for an unknown reason %%error macro doesn't lead to immediate immediate abort # so we use BuildConflicts below as a headshot :-/ %check_python_version_internal() \ %{expand: %{expand:%%{?_with_python%{2}:%%{?__python_package_version:%%%%{error:Only one python version can be selected at a time}}}}} \ %(echo %{expand:%%{?_with_python%{2}:%%{?__python_package_version:BuildConflicts: python = %{1}}}}) \ %(echo %{expand:%%{?_with_python%{2}:BuildPreReq: python = %{1}}}) \ %(echo %{expand:%%{?_with_python%{2}:Requires: python = %{1}}}) \ %{expand: %{expand:%%{?_with_python%{2}:%%%%global __python %(which python%1 2>/dev/null || echo `which python`)}}} \ %{expand: %{expand:%%{?_with_python%{2}:%%%%global __python_package_version %2}}} %check_python_version() \ %{expand: %%check_python_version_internal %{1} %(echo %1 | sed -e 's/\\.//g')} %setup_python_module() \ %check_python_version 2.2 \ %check_python_version 2.4 \ %check_python_version 2.3 \ %{expand: %%{!?__python_package_version:%%global __python_package_version %%(echo %%__python_version | sed -e 's/\\.//g')}} \ %{expand: %%global modulename %{1}} \ %{expand: %%global packagename python%__python_package_version-%{1}} \ %(echo Provides: python-%1 = %version-%release) --6TrnltStXW4iwmi0 Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="pyserial.spec" Content-Transfer-Encoding: base64 IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0NCiVkZWZpbmUJdmVyc2lvbgkyLjANCiVkZWZpbmUg cmVsZWFzZSBhbHQyDQoNCiVzZXR1cF9weXRob25fbW9kdWxlIHB5c2VyaWFsDQoNClN1bW1h cnk6IFNlcmlhbCBwb3J0IGFjY2VzcyBmb3IgcHl0aG9uDQpTdW1tYXJ5KHJ1X1JVLlVURi04 KTog0JTQvtGB0YLRg9C/INC6INC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtC80YMg 0L/QvtGA0YLRgyDQuNC3IHB5dGhvbg0KTmFtZTogJXBhY2thZ2VuYW1lDQpWZXJzaW9uOiAl dmVyc2lvbg0KUmVsZWFzZTogJXJlbGVhc2UNClNvdXJjZTogJW1vZHVsZW5hbWUtJXZlcnNp b24uemlwDQpMaWNlbnNlOiBQeXRob24NCkdyb3VwOiBEZXZlbG9wbWVudC9QeXRob24NClBy ZWZpeDogJV9wcmVmaXgNClVybDogaHR0cDovL3B5c2VyaWFsLnNmLm5ldA0KDQoNCiMgQXV0 b21hdGljYWxseSBhZGRlZCBieSBidWlsZHJlcSBvbiBXZWQgSmFuIDE0IDIwMDQNCkJ1aWxk UmVxdWlyZXM6IHVuemlwDQoNCiVkZXNjcmlwdGlvbg0KVGhpcyBtb2R1bGUgY2Fwc3VsYXRl cyB0aGUgYWNjZXNzIGZvciB0aGUgc2VyaWFsIHBvcnQuIEl0IHByb3ZpZGVzDQpiYWNrZW5k cyBmb3Igc3RhbmRhcmQgUHl0aG9uIHJ1bm5pbmcgb24gV2luZG93cywgTGludXgsIEJTRCAo cG9zc2libHkNCmFueSBQT1NJWCBjb21waWxhbnQgc3lzdGVtKSBhbmQgSnl0aG9uLiBUaGUg bW9kdWxlIGF1dG9tYXRpY2FseQ0Kc2VsZWN0cyB0aGUgYXBwcm9wcmlhdGUgYmFja2VuZC4N Cg0KVGhpcyBtb2R1bGUgaXMgYnVpbHQgZm9yIHB5dGhvbiAlX19weXRob25fdmVyc2lvbg0K DQolZGVzY3JpcHRpb24gLWwgcnVfUlUuVVRGLTgNCtChINC/0L7QvNC+0YnRjNGOINGN0YLQ vtCz0L4g0LzQvtC00YPQu9GPINC80L7QttC90L4g0YDQsNCx0L7RgtCw0YLRjCDRgSDQv9C+ 0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90YvQvCDQv9C+0YDRgtC+0Lwg0LINCtGB0YLQsNC9 0LTQsNGA0YLQvdC+0LwgUHl0aG9uLCDQt9Cw0L/Rg9GJ0LXQvdC90L7QvCDQvdCwIFdpbmRv d3MsIExpbnV4LCBCU0QgKNCy0L7Qt9C80L7QttC90L4sINC70Y7QsdC+0LkNClBPU0lYLdGB 0L7QstC80LXRgdGC0LjQvNC+0Lkg0YHQuNGB0YLQtdC80LUpINC40LvQuCBKeXRob24uINCc 0L7QtNGD0LvRjCDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCDQstGL0LHQuNGA0LDQtdGC DQrQv9C+0LTRhdC+0LTRj9GJ0LjQuSDQtNC70Y8g0LTQsNC90L3QvtC5INGB0LjRgdGC0LXQ vNGLINC80LXRhdCw0L3QuNC30Lwg0LTQvtGB0YLRg9C/0LAuDQoNCtCt0YLQvtGCINC80L7Q tNGD0LvRjCDRgdC+0LHRgNCw0L0g0LTQu9GPIFB5dGhvbiDQstC10YDRgdC40LggJV9fcHl0 aG9uX3ZlcnNpb24NCg0KJXBhY2thZ2UgLW4gcHl0aG9uLSVtb2R1bGVuYW1lLWRvYw0KU3Vt bWFyeTogJW1vZHVsZW5hbWUgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZSBwcm9ncmFtcw0K U3VtbWFyeShydV9SVS5VVEYtOCk6INCU0L7QutGD0LzQtdC90YLQsNGG0LjRjyDQv9C+IEFQ SSDQuCDQv9GA0LjQvNC10YDRiyDQv9GA0L7Qs9GA0LDQvNC8INC00LvRjyAlbW9kdWxlbmFt ZQ0KR3JvdXA6IERldmVsb3BtZW50L1B5dGhvbg0KUHJlZml4OiAlX3ByZWZpeA0KUmVxdWly ZXM6IHB5dGhvbi0lbW9kdWxlbmFtZSA9ICV2ZXJzaW9uDQolZGVzY3JpcHRpb24gLW4gIHB5 dGhvbi0lbW9kdWxlbmFtZS1kb2MNCiVtb2R1bGVuYW1lIHByb3ZpZGVzIHBvcnRhYmxlIHdh eSB0byBhY2Nlc3Mgc2VyaWFsIHBvcnRzIGluIHZhcmlvdXMNCnN5c3RlbXMuIEluc3RhbGwg cHl0aG9uLSVtb2R1bGVuYW1lLWRvYyBpZiB5b3UgbmVlZCBBUEkgZG9jdW1lbnRhdGlvbg0K YW5kIGV4YW1wbGVzIGZvciB0aGlzIG1vZHVsZQ0KDQolZGVzY3JpcHRpb24gLW4gIHB5dGhv bi0lbW9kdWxlbmFtZS1kb2MgLWwgcnVfUlUuVVRGLTgNCiVtb2R1bGVuYW1lINC/0YDQtdC0 0L7RgdGC0LDQstC70Y/QtdGCINGD0L3QuNGE0LjRhtC40YDQvtCy0LDQvdC90YvQuSDQtNC+ 0YHRgtGD0L8g0Log0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0LzRgw0K0L/QvtGA 0YLRgyDQsiDRgNCw0LfQvdGL0YUg0YHQuNGB0YLQtdC80LDRhS4g0KPRgdGC0LDQvdC+0LLQ uNGC0LUgcHl0aG9uLSVtb2R1bGVuYW1lLWRvYywg0LXRgdC70Lgg0JLQsNC8DQrRgtGA0LXQ sdGD0LXRgtGB0Y8g0LTQvtC60YPQvNC10L3RgtCw0YbQuNGPINC/0L4gQVBJINC4INC/0YDQ uNC80LXRgNGLINC/0YDQvtCz0YDQsNC80LzQuNGA0L7QstCw0L3QuNGPINGBDQrQuNGB0L/Q vtC70YzQt9C+0LLQsNC90LjQtdC8INC00LDQvdC90L7Qs9C+INC80L7QtNGD0LvRjy4NCg0K JXByZXANCiVzZXR1cCAtcSAtbiAlbW9kdWxlbmFtZS0ldmVyc2lvbg0KDQolYnVpbGQNCm1r ZGlyIC1wIGJ1aWxkcm9vdA0KDQojIFVuZm9ydHVuYXRlbHkgYnVpbGQgYW5kIGluc3RhbGwg c3RlcHMgc2hvdWxkIGJlIGRvbmUgYXQgb25jZQ0KIyBiZWNhdXNlIG90aGVyd2lzZSAucHlv IGZpbGVzIHdvbid0IGdldCBpbnRvIElOU1RBTExFRF9GSUxFUw0KIyByZWNvcmQNCg0KQ0ZM QUdTPSIlb3B0ZmxhZ3MiICVfX3B5dGhvbiBzZXR1cC5weSBcDQoJaW5zdGFsbCAtLW9wdGlt aXplPTIgXA0KCQktLXJvb3Q9YHB3ZGAvYnVpbGRyb290IFwNCgkJLS1yZWNvcmQ9SU5TVEFM TEVEX0ZJTEVTDQolaW5zdGFsbA0KDQpjcCAtcHIgYnVpbGRyb290ICVidWlsZHJvb3QvDQoN CnVuc2V0IFJQTV9QWVRIT04NCg0KJWZpbGVzIC1mIElOU1RBTExFRF9GSUxFUw0KJWRvYyBj aGFuZ2VzLnR4dCByZWFkbWUudHh0DQoNCiVmaWxlcyAtbiBweXRob24tJW1vZHVsZW5hbWUt ZG9jDQolZG9jIGV4YW1wbGVzDQoNCg0KJWNoYW5nZWxvZw0KKiBXZWQgSmFuIDE0IDIwMDQg QWxleGV5IE1vcm96b3YgPG1vcm96b3ZAYWx0bGludXgub3JnPiAyLjAtYWx0MQ0KLSBJbml0 aWFsIGJ1aWxkIGZvciBBTFQgTGludXgNCg== --6TrnltStXW4iwmi0--