SlideShare una empresa de Scribd logo
1 de 22
Convert your package to multibuild on
Open Build Service
Max Lin
Software Engineer
mlin@suse.com
2
Agenda
Multiple build description files handling
The concept of multibuild
Usage (a real case: libproxy)
Q&A
3
Multiple build description files handling
4
Multiple build description files handling
A source package container have multiple build description files
exists.
FOO
FOO.spec
FOO-BAR.spec
5
Multiple build description files handling
A source package container have multiple build description files
exists.
FOO
FOO.spec
FOO-BAR.spec FOO-BAR
FOO.spec
FOO-BAR.spec
6
Build result
FOO FOO-BAR
FOO.src.rpm
libFOO1.rpm
libFOO-devel.rpm
FOO-BAR.src.rpm
libFOO-tools.rpm
python2-FOO.rpm
python3-FOO.rpm
7
Differ
The differ between FOO.spec and FOO-BAR.spec may small, however
packager have to maintain both of them and modify all build description
files every time.
2c2
< # spec file for package FOO
---
> # spec file for package FOO-BAR
19c19
< %define build_core_not_plugins 1
---
> %define build_core_not_plugins 0
35c35
< Name: FOO
---
> Name: FOO-BAR
8
The concept of multibuild
9
Multibuild
Combined build description files
Use the _multibuild directive to build the same source in the same
repository with different flavors
No local links anymore
A matching file for the source package container name is required
FOO
_multibuild
FOO.spec
10
Multibuild
Combined build description files
Use the _multibuild directive to build the same source in the same
repository with different flavors
No local links anymore
A matching file for the source package container name is required
FOO
_multibuild
FOO.spec
FOO-BAR.spec excluded
11
The _multibuild file
A xml format file defined the build flavor
<multibuild>
<package>plugins</package>
<package>doc</package>
<package>testsuite</package>
</multibuild>
$ osc r
standard x86_64 FOO succeeded
standard x86_64 FOO:plugins succeeded
standard x86_64 FOO:doc succeeded
standard x86_64 FOO:testsuite succeeded
12
Usage
13
A real case: libproxy
Package Sources
libproxy 0.4.15.tar.gz
baselibs.conf
libproxy-plugins.changes
libproxy-plugins.spec
libproxy.changes
libproxy.spec
pre_checkin.sh
libproxy-plugins _link (local linked to libproxy)
The only differ: libproxy has %define build_core_not_plugins 1
14
A real case: libproxy
Package Result
libproxy libproxy-0.4.15-6.1.src.rpm
libproxy-devel-0.4.15-6.1.x86_64.rpm
libproxy-tools-0.4.15-6.1.x86_64.rpm
libproxy1-0.4.15-6.1.x86_64.rpm
libproxy-plugins
(local linked to libproxy)
libproxy-plugins-0.4.15-6.1.src.rpm
libproxy-sharp-0.4.15-6.1.x86_64.rpm
libproxy1-config-gnome3-0.4.15-6.1.x86_64.rpm
libproxy1-config-kde-0.4.15-6.1.x86_64.rpm
libproxy1-networkmanager-0.4.15-6.1.x86_64.rpm
libproxy1-pacrunner-webkit-0.4.15-6.1.x86_64.rpm
perl-Net-Libproxy-0.4.15-6.1.x86_64.rpm
python-libproxy-0.4.15-6.1.noarch.rpm
python3-libproxy-0.4.15-6.1.noarch.rpm
15
A real case: libproxy
Add _multibuild file
<multibuild>
<package>plugins</package>
</multibuild>
$ osc ls home:mlin7442:demo_multi_specs
libproxy
libproxy-plugins
$ osc r home:mlin7442:demo_multi_specs
openSUSE_Tumbleweed i586 libproxy
succeeded
openSUSE_Tumbleweed i586 libproxy-plugins
excluded
openSUSE_Tumbleweed x86_64 libproxy
succeeded
openSUSE_Tumbleweed x86_64 libproxy-plugins
excluded
16
A real case: libproxy
Package overview
$osc rdelete home:mlin7442:demo_multi_build libproxy-plugins
$ osc ls home:mlin7442:demo_multi_build
libproxy
$ osc r home:mlin7442:demo_multi_build
openSUSE_Tumbleweed i586 libproxy succeeded
openSUSE_Tumbleweed i586 libproxy:plugins succeeded
openSUSE_Tumbleweed x86_64 libproxy succeeded
openSUSE_Tumbleweed x86_64 libproxy:plugins succeeded
$ osc ls home:mlin7442:demo_multi_build libproxy:plugins
Server returned an error: HTTP Error 404: Not Found
home:mlin7442:demo_multi_build/libproxy:plugins
17
A real case: libproxy
libproxy and libproxy:plugins have the duplicated result
Package Result
libproxy libproxy-0.4.15-6.1.src.rpm
libproxy-devel-0.4.15-6.1.x86_64.rpm
libproxy-tools-0.4.15-6.1.x86_64.rpm
libproxy1-0.4.15-6.1.x86_64.rpmlibproxy:plugins
18
A real case: libproxy
Adjust the build description file
– Combine two build description files
– Get the build flavor from @BUILD_FLAVOR@
%define flavor @BUILD_FLAVOR@%{nil}
– Use %flavor macro to control the change for main package specific or sub-
package specific
%if "%flavor" == "plugins"
XXX
%endif
19
A real case: libproxy (differ)
+%define flavor @BUILD_FLAVOR@%{nil}
-%define build_core_not_modules 1
-%define build_mozjs 0
+%define build_core_not_modules 1
+%define build_main 1
+
+%if "%flavor" == "plugins"
+%define build_core_not_modules 0
+%define build_main 0
+%endif
+
+%define build_mozjs 0
%if 0%{?suse_version}
%bcond_without mono
%else
@@ -29,10 +42,18 @@
%else
%define _sourcename %{_name}-%{version}
%endif
+
+%if %{build_main}
+%define name_suffix %{nil}
+%else
+%define name_suffix -%{flavor}
+%endif
+
-Name: libproxy
+
+Name: libproxy%{name_suffix}
Version: 0.4.15
20
A real case: libproxy (build result)
Package Result
libproxy libproxy-0.4.15-6.1.src.rpm
libproxy-devel-0.4.15-6.1.x86_64.rpm
libproxy-tools-0.4.15-6.1.x86_64.rpm
libproxy1-0.4.15-6.1.x86_64.rpm
libproxy:plugins libproxy-plugins-0.4.15-6.1.src.rpm
libproxy-sharp-0.4.15-6.1.x86_64.rpm
libproxy1-config-gnome3-0.4.15-6.1.x86_64.rpm
libproxy1-config-kde-0.4.15-6.1.x86_64.rpm
libproxy1-networkmanager-0.4.15-6.1.x86_64.rpm
libproxy1-pacrunner-webkit-0.4.15-6.1.x86_64.rpm
perl-Net-Libproxy-0.4.15-6.1.x86_64.rpm
python-libproxy-0.4.15-6.1.noarch.rpm
python3-libproxy-0.4.15-6.1.noarch.rpm
21
Tips
<bcntsynctag> tag still working
Can not have multiple _multibuild file
No effect to controlling builds on specific archs
<multibuild>
<package>plugins</package>
<package>testsuite</package>
</multibuild>
%if "%flavor" == "testsuite"
ExclusiveArch: %ix86
%define build_core_not_modules 0
%define build_main 0
%endif
22
Thanks

Más contenido relacionado

La actualidad más candente

Note - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and InstallNote - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and Installboyw165
 
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例National Cheng Kung University
 
Memory Management with Page Folios
Memory Management with Page FoliosMemory Management with Page Folios
Memory Management with Page FoliosAdrian Huang
 
CQRS and Event Sourcing in a Symfony application
CQRS and Event Sourcing in a Symfony applicationCQRS and Event Sourcing in a Symfony application
CQRS and Event Sourcing in a Symfony applicationSamuel ROZE
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelSUSE Labs Taipei
 
Memcache Injection (Hacktrick'15)
Memcache Injection (Hacktrick'15)Memcache Injection (Hacktrick'15)
Memcache Injection (Hacktrick'15)Ömer Çıtak
 
Postgresql 12 streaming replication hol
Postgresql 12 streaming replication holPostgresql 12 streaming replication hol
Postgresql 12 streaming replication holVijay Kumar N
 
Linux Kernel - Virtual File System
Linux Kernel - Virtual File SystemLinux Kernel - Virtual File System
Linux Kernel - Virtual File SystemAdrian Huang
 
Kdump and the kernel crash dump analysis
Kdump and the kernel crash dump analysisKdump and the kernel crash dump analysis
Kdump and the kernel crash dump analysisBuland Singh
 
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedVmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedAdrian Huang
 
Back to the future with C++ and Seastar
Back to the future with C++ and SeastarBack to the future with C++ and Seastar
Back to the future with C++ and SeastarTzach Livyatan
 
Stephan Ewen - Scaling to large State
Stephan Ewen - Scaling to large StateStephan Ewen - Scaling to large State
Stephan Ewen - Scaling to large StateFlink Forward
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototypingYan Vugenfirer
 
Android OTA updates
Android OTA updatesAndroid OTA updates
Android OTA updatesGary Bisson
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageKernel TLV
 

La actualidad más candente (20)

Note - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and InstallNote - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and Install
 
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
 
Memory Management with Page Folios
Memory Management with Page FoliosMemory Management with Page Folios
Memory Management with Page Folios
 
CQRS and Event Sourcing in a Symfony application
CQRS and Event Sourcing in a Symfony applicationCQRS and Event Sourcing in a Symfony application
CQRS and Event Sourcing in a Symfony application
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
 
Qemu JIT Code Generator and System Emulation
Qemu JIT Code Generator and System EmulationQemu JIT Code Generator and System Emulation
Qemu JIT Code Generator and System Emulation
 
Memcache Injection (Hacktrick'15)
Memcache Injection (Hacktrick'15)Memcache Injection (Hacktrick'15)
Memcache Injection (Hacktrick'15)
 
Postgresql 12 streaming replication hol
Postgresql 12 streaming replication holPostgresql 12 streaming replication hol
Postgresql 12 streaming replication hol
 
Linux Kernel - Virtual File System
Linux Kernel - Virtual File SystemLinux Kernel - Virtual File System
Linux Kernel - Virtual File System
 
spinlock.pdf
spinlock.pdfspinlock.pdf
spinlock.pdf
 
Kdump and the kernel crash dump analysis
Kdump and the kernel crash dump analysisKdump and the kernel crash dump analysis
Kdump and the kernel crash dump analysis
 
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedVmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
 
Back to the future with C++ and Seastar
Back to the future with C++ and SeastarBack to the future with C++ and Seastar
Back to the future with C++ and Seastar
 
Stephan Ewen - Scaling to large State
Stephan Ewen - Scaling to large StateStephan Ewen - Scaling to large State
Stephan Ewen - Scaling to large State
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototyping
 
Virtual Machine Constructions for Dummies
Virtual Machine Constructions for DummiesVirtual Machine Constructions for Dummies
Virtual Machine Constructions for Dummies
 
Android OTA updates
Android OTA updatesAndroid OTA updates
Android OTA updates
 
ClickHouse Keeper
ClickHouse KeeperClickHouse Keeper
ClickHouse Keeper
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast Storage
 
Kernel crashdump
Kernel crashdumpKernel crashdump
Kernel crashdump
 

Similar a Convert your package to multibuild on Open Build Service

Os Grossupdated
Os GrossupdatedOs Grossupdated
Os Grossupdatedoscon2007
 
Getting started with libfabric
Getting started with libfabricGetting started with libfabric
Getting started with libfabricJianxin Xiong
 
Build and deploy scientific Python Applications
Build and deploy scientific Python Applications  Build and deploy scientific Python Applications
Build and deploy scientific Python Applications Ramakrishna Reddy
 
An Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemAn Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemLinaro
 
Dependency management with Composer
Dependency management with ComposerDependency management with Composer
Dependency management with ComposerJason Grimes
 
Binary Packaging for HPC with Spack
Binary Packaging for HPC with SpackBinary Packaging for HPC with Spack
Binary Packaging for HPC with Spackinside-BigData.com
 
IPS: Image Packaging System
IPS: Image Packaging SystemIPS: Image Packaging System
IPS: Image Packaging SystemEric Sproul
 
PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with ComposerAdam Englander
 
Custom Buildpacks and Data Services
Custom Buildpacks and Data ServicesCustom Buildpacks and Data Services
Custom Buildpacks and Data ServicesTom Kranz
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionFabio Kung
 
PHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the CloudPHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the CloudSalesforce Developers
 
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)VMware Tanzu
 
Prizm Installation Guide
Prizm Installation GuidePrizm Installation Guide
Prizm Installation Guidevjvarenya
 
20111011 bigbluebutton
20111011 bigbluebutton20111011 bigbluebutton
20111011 bigbluebuttonhs1250
 
Composer & Drupal
Composer & DrupalComposer & Drupal
Composer & Drupaldrubb
 
Composer - The missing package manager for PHP
Composer - The missing package manager for PHPComposer - The missing package manager for PHP
Composer - The missing package manager for PHPTareq Hasan
 
Fn project quick installation guide
Fn project quick installation guideFn project quick installation guide
Fn project quick installation guideJohan Louwers
 

Similar a Convert your package to multibuild on Open Build Service (20)

Os Grossupdated
Os GrossupdatedOs Grossupdated
Os Grossupdated
 
Getting started with libfabric
Getting started with libfabricGetting started with libfabric
Getting started with libfabric
 
Build and deploy scientific Python Applications
Build and deploy scientific Python Applications  Build and deploy scientific Python Applications
Build and deploy scientific Python Applications
 
An Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemAn Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating System
 
Dependency management with Composer
Dependency management with ComposerDependency management with Composer
Dependency management with Composer
 
Composer namespacing
Composer namespacingComposer namespacing
Composer namespacing
 
Binary Packaging for HPC with Spack
Binary Packaging for HPC with SpackBinary Packaging for HPC with Spack
Binary Packaging for HPC with Spack
 
IPS: Image Packaging System
IPS: Image Packaging SystemIPS: Image Packaging System
IPS: Image Packaging System
 
PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with Composer
 
Custom Buildpacks and Data Services
Custom Buildpacks and Data ServicesCustom Buildpacks and Data Services
Custom Buildpacks and Data Services
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to Production
 
PHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the CloudPHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the Cloud
 
Firebird on Linux
Firebird on LinuxFirebird on Linux
Firebird on Linux
 
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
 
Prizm Installation Guide
Prizm Installation GuidePrizm Installation Guide
Prizm Installation Guide
 
20111011 bigbluebutton
20111011 bigbluebutton20111011 bigbluebutton
20111011 bigbluebutton
 
Composer & Drupal
Composer & DrupalComposer & Drupal
Composer & Drupal
 
Composer - The missing package manager for PHP
Composer - The missing package manager for PHPComposer - The missing package manager for PHP
Composer - The missing package manager for PHP
 
Fn project quick installation guide
Fn project quick installation guideFn project quick installation guide
Fn project quick installation guide
 
LabDocumentation
LabDocumentationLabDocumentation
LabDocumentation
 

Más de SUSE Labs Taipei

Locked down openSUSE Tumbleweed kernel
Locked down openSUSE Tumbleweed kernelLocked down openSUSE Tumbleweed kernel
Locked down openSUSE Tumbleweed kernelSUSE Labs Taipei
 
SUSE shim and things related to it
SUSE shim and things related to itSUSE shim and things related to it
SUSE shim and things related to itSUSE Labs Taipei
 
Profiling the ACPICA Namespace and Event Handing
Profiling the ACPICA Namespace and Event HandingProfiling the ACPICA Namespace and Event Handing
Profiling the ACPICA Namespace and Event HandingSUSE Labs Taipei
 
Kernel debug log and console on openSUSE
Kernel debug log and console on openSUSEKernel debug log and console on openSUSE
Kernel debug log and console on openSUSESUSE Labs Taipei
 
The bright future of SUSE and openSUSE
The bright future of SUSE and openSUSEThe bright future of SUSE and openSUSE
The bright future of SUSE and openSUSESUSE Labs Taipei
 
Linux Linux Traffic Control
Linux Linux Traffic ControlLinux Linux Traffic Control
Linux Linux Traffic ControlSUSE Labs Taipei
 
Looking into trusted and encrypted keys
Looking into trusted and encrypted keysLooking into trusted and encrypted keys
Looking into trusted and encrypted keysSUSE Labs Taipei
 
Use bonding driver with ethernet
Use bonding driver with ethernetUse bonding driver with ethernet
Use bonding driver with ethernetSUSE Labs Taipei
 
Use build service API in your program
Use build service API in your programUse build service API in your program
Use build service API in your programSUSE Labs Taipei
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceSUSE Labs Taipei
 
Develop and Maintain a Distro with Open Build Service
Develop and Maintain a Distro with Open Build ServiceDevelop and Maintain a Distro with Open Build Service
Develop and Maintain a Distro with Open Build ServiceSUSE Labs Taipei
 

Más de SUSE Labs Taipei (18)

Locked down openSUSE Tumbleweed kernel
Locked down openSUSE Tumbleweed kernelLocked down openSUSE Tumbleweed kernel
Locked down openSUSE Tumbleweed kernel
 
SUSE shim and things related to it
SUSE shim and things related to itSUSE shim and things related to it
SUSE shim and things related to it
 
Profiling the ACPICA Namespace and Event Handing
Profiling the ACPICA Namespace and Event HandingProfiling the ACPICA Namespace and Event Handing
Profiling the ACPICA Namespace and Event Handing
 
Kernel debug log and console on openSUSE
Kernel debug log and console on openSUSEKernel debug log and console on openSUSE
Kernel debug log and console on openSUSE
 
The bright future of SUSE and openSUSE
The bright future of SUSE and openSUSEThe bright future of SUSE and openSUSE
The bright future of SUSE and openSUSE
 
EFI Secure Key
EFI Secure KeyEFI Secure Key
EFI Secure Key
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
 
Linux Linux Traffic Control
Linux Linux Traffic ControlLinux Linux Traffic Control
Linux Linux Traffic Control
 
Looking into trusted and encrypted keys
Looking into trusted and encrypted keysLooking into trusted and encrypted keys
Looking into trusted and encrypted keys
 
Use bonding driver with ethernet
Use bonding driver with ethernetUse bonding driver with ethernet
Use bonding driver with ethernet
 
Use build service API in your program
Use build service API in your programUse build service API in your program
Use build service API in your program
 
Hands-on ethernet driver
Hands-on ethernet driverHands-on ethernet driver
Hands-on ethernet driver
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
 
S4 sig-check-lpc-20130918
S4 sig-check-lpc-20130918S4 sig-check-lpc-20130918
S4 sig-check-lpc-20130918
 
openSUSE12.2 Review
openSUSE12.2 ReviewopenSUSE12.2 Review
openSUSE12.2 Review
 
oS KDE Repos & MM
oS KDE Repos & MMoS KDE Repos & MM
oS KDE Repos & MM
 
Develop and Maintain a Distro with Open Build Service
Develop and Maintain a Distro with Open Build ServiceDevelop and Maintain a Distro with Open Build Service
Develop and Maintain a Distro with Open Build Service
 
Coscup 2012-urfkill
Coscup 2012-urfkillCoscup 2012-urfkill
Coscup 2012-urfkill
 

Último

The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationShrmpro
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Último (20)

The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

Convert your package to multibuild on Open Build Service

  • 1. Convert your package to multibuild on Open Build Service Max Lin Software Engineer mlin@suse.com
  • 2. 2 Agenda Multiple build description files handling The concept of multibuild Usage (a real case: libproxy) Q&A
  • 4. 4 Multiple build description files handling A source package container have multiple build description files exists. FOO FOO.spec FOO-BAR.spec
  • 5. 5 Multiple build description files handling A source package container have multiple build description files exists. FOO FOO.spec FOO-BAR.spec FOO-BAR FOO.spec FOO-BAR.spec
  • 7. 7 Differ The differ between FOO.spec and FOO-BAR.spec may small, however packager have to maintain both of them and modify all build description files every time. 2c2 < # spec file for package FOO --- > # spec file for package FOO-BAR 19c19 < %define build_core_not_plugins 1 --- > %define build_core_not_plugins 0 35c35 < Name: FOO --- > Name: FOO-BAR
  • 8. 8 The concept of multibuild
  • 9. 9 Multibuild Combined build description files Use the _multibuild directive to build the same source in the same repository with different flavors No local links anymore A matching file for the source package container name is required FOO _multibuild FOO.spec
  • 10. 10 Multibuild Combined build description files Use the _multibuild directive to build the same source in the same repository with different flavors No local links anymore A matching file for the source package container name is required FOO _multibuild FOO.spec FOO-BAR.spec excluded
  • 11. 11 The _multibuild file A xml format file defined the build flavor <multibuild> <package>plugins</package> <package>doc</package> <package>testsuite</package> </multibuild> $ osc r standard x86_64 FOO succeeded standard x86_64 FOO:plugins succeeded standard x86_64 FOO:doc succeeded standard x86_64 FOO:testsuite succeeded
  • 13. 13 A real case: libproxy Package Sources libproxy 0.4.15.tar.gz baselibs.conf libproxy-plugins.changes libproxy-plugins.spec libproxy.changes libproxy.spec pre_checkin.sh libproxy-plugins _link (local linked to libproxy) The only differ: libproxy has %define build_core_not_plugins 1
  • 14. 14 A real case: libproxy Package Result libproxy libproxy-0.4.15-6.1.src.rpm libproxy-devel-0.4.15-6.1.x86_64.rpm libproxy-tools-0.4.15-6.1.x86_64.rpm libproxy1-0.4.15-6.1.x86_64.rpm libproxy-plugins (local linked to libproxy) libproxy-plugins-0.4.15-6.1.src.rpm libproxy-sharp-0.4.15-6.1.x86_64.rpm libproxy1-config-gnome3-0.4.15-6.1.x86_64.rpm libproxy1-config-kde-0.4.15-6.1.x86_64.rpm libproxy1-networkmanager-0.4.15-6.1.x86_64.rpm libproxy1-pacrunner-webkit-0.4.15-6.1.x86_64.rpm perl-Net-Libproxy-0.4.15-6.1.x86_64.rpm python-libproxy-0.4.15-6.1.noarch.rpm python3-libproxy-0.4.15-6.1.noarch.rpm
  • 15. 15 A real case: libproxy Add _multibuild file <multibuild> <package>plugins</package> </multibuild> $ osc ls home:mlin7442:demo_multi_specs libproxy libproxy-plugins $ osc r home:mlin7442:demo_multi_specs openSUSE_Tumbleweed i586 libproxy succeeded openSUSE_Tumbleweed i586 libproxy-plugins excluded openSUSE_Tumbleweed x86_64 libproxy succeeded openSUSE_Tumbleweed x86_64 libproxy-plugins excluded
  • 16. 16 A real case: libproxy Package overview $osc rdelete home:mlin7442:demo_multi_build libproxy-plugins $ osc ls home:mlin7442:demo_multi_build libproxy $ osc r home:mlin7442:demo_multi_build openSUSE_Tumbleweed i586 libproxy succeeded openSUSE_Tumbleweed i586 libproxy:plugins succeeded openSUSE_Tumbleweed x86_64 libproxy succeeded openSUSE_Tumbleweed x86_64 libproxy:plugins succeeded $ osc ls home:mlin7442:demo_multi_build libproxy:plugins Server returned an error: HTTP Error 404: Not Found home:mlin7442:demo_multi_build/libproxy:plugins
  • 17. 17 A real case: libproxy libproxy and libproxy:plugins have the duplicated result Package Result libproxy libproxy-0.4.15-6.1.src.rpm libproxy-devel-0.4.15-6.1.x86_64.rpm libproxy-tools-0.4.15-6.1.x86_64.rpm libproxy1-0.4.15-6.1.x86_64.rpmlibproxy:plugins
  • 18. 18 A real case: libproxy Adjust the build description file – Combine two build description files – Get the build flavor from @BUILD_FLAVOR@ %define flavor @BUILD_FLAVOR@%{nil} – Use %flavor macro to control the change for main package specific or sub- package specific %if "%flavor" == "plugins" XXX %endif
  • 19. 19 A real case: libproxy (differ) +%define flavor @BUILD_FLAVOR@%{nil} -%define build_core_not_modules 1 -%define build_mozjs 0 +%define build_core_not_modules 1 +%define build_main 1 + +%if "%flavor" == "plugins" +%define build_core_not_modules 0 +%define build_main 0 +%endif + +%define build_mozjs 0 %if 0%{?suse_version} %bcond_without mono %else @@ -29,10 +42,18 @@ %else %define _sourcename %{_name}-%{version} %endif + +%if %{build_main} +%define name_suffix %{nil} +%else +%define name_suffix -%{flavor} +%endif + -Name: libproxy + +Name: libproxy%{name_suffix} Version: 0.4.15
  • 20. 20 A real case: libproxy (build result) Package Result libproxy libproxy-0.4.15-6.1.src.rpm libproxy-devel-0.4.15-6.1.x86_64.rpm libproxy-tools-0.4.15-6.1.x86_64.rpm libproxy1-0.4.15-6.1.x86_64.rpm libproxy:plugins libproxy-plugins-0.4.15-6.1.src.rpm libproxy-sharp-0.4.15-6.1.x86_64.rpm libproxy1-config-gnome3-0.4.15-6.1.x86_64.rpm libproxy1-config-kde-0.4.15-6.1.x86_64.rpm libproxy1-networkmanager-0.4.15-6.1.x86_64.rpm libproxy1-pacrunner-webkit-0.4.15-6.1.x86_64.rpm perl-Net-Libproxy-0.4.15-6.1.x86_64.rpm python-libproxy-0.4.15-6.1.noarch.rpm python3-libproxy-0.4.15-6.1.noarch.rpm
  • 21. 21 Tips <bcntsynctag> tag still working Can not have multiple _multibuild file No effect to controlling builds on specific archs <multibuild> <package>plugins</package> <package>testsuite</package> </multibuild> %if "%flavor" == "testsuite" ExclusiveArch: %ix86 %define build_core_not_modules 0 %define build_main 0 %endif