Dear Tizen Platform Developers,


This is RFC for prototyping of unified Tizen build project.


We have been prototyping the possibility of unifying package names and Tizen 
build projects
so that we can
1. Remove duplicated build processes in the build infra
2. Guarantee that "PKGNAME-VERSION-RELEASE.ARCH.rpm" is unique
    so that we can forget its origin (profile) and its installation target 
(profile).
    (ultimately, we will be able to use yum/zypper/DNF more effectively)
3. (with 1/2) Generate platform images on-the-fly with any configurations

With (2) guaranteed, we can have a unique RPM repo for all Tizen profiles, 
allowing us
to configure any profiles or devices. However, we do not intend to remove the 
current
profiles, especially for app / device developers although such concept will be 
weakened
for platform developers. There will be "standard" configurations for each 
profile, which
will act as the conventional Tizen profiles for app / device developers.

I have been updating some packages that do have different build (normally by 
using profile macro in spec file)
for each profile, which make other build-depending packages to be built 
differently as well.
(Most of my recent commits are such: 
https://review.tizen.org/gerrit/#/q/owner:%22MyungJoo+Ham%22 )


So far, about 330 packages are being unified from lower layer in my personal 
OBS server,
which allows those 330 packages (git repos. not RPM files) to be built only 
once for every profile.



It would be ideal if packages behave according to runtime/boottime information 
of profile;
but that might sacrifice the performance and size besides unacceptable 
developer effort for now.

Thus, I have been creating per-profile subpackages that has per-profile 
differences; e.g.,
PKG.rpm / PKG-devel.rpm : provides the common part and interfaces. (sometimes 
we needed to clean up devel packages, which accidently comes with .so)
PKG-profile_tv.rpm: provides the "extended" part for TV profile (.so 
replacements)
PKG-profile_wearable.rpm: provides the "extended" part for wearable profile 
(.so replacements)
You can see such examples at: 
https://review.tizen.org/gerrit/#/c/89772/1/packaging/libsoup.spec
https://review.tizen.org/gerrit/#/c/89783/1/packaging/gumd.spec
https://review.tizen.org/gerrit/#/c/87290/1/packaging/vconf-internal-keys.spec



In order to keep this moving, besides those trivial commits that I've been 
submitting,
we need to address packages that
-- Generates headers / interfaces differently for each profile --

The packages requires significant attention for that reason include (not 
complete):
- xkb-tizen-data, xkbcommon, ... (thanks to Window/Wayland guys, it seems to be 
being resolved)
    (with this resolved, I expected about additional 200 packages might be 
unified soon.)
- model-build-features: (I've started removing it)
- efl-extension: (most serious, not even touched yet)
- there will be more...




There are some proposed rules to be discussed for future:

- No more additional profile RPM macros are added. (%profile)
- No more additional usage of model-build-features. 
    EXCEPT for adaptation packages (devices drivers without creating build 
dependencies)
               and KS file generating meta packages.
    Others: please determine at boot/run-time (vconf/buxton?) or create 
per-profile sub packages.
- NEVER EVER make headers/interfaces differently for profiles/devices.


As we are in prototyping stage (the unified OBS project is not pushed to 
build.tizen.org, yet),
we'd like to hear ideas and comments from platform developers.



Cheers,
MyungJoo
 
--
MyungJoo Ham (함명주), Ph.D.
Developer eXperience Lab, S/W Platform Team, Software R&D Center
Samsung Electronics
Cell: +82-10-6714-2858
 
_______________________________________________
Dev mailing list
Dev@lists.tizen.org
https://lists.tizen.org/listinfo/dev

Reply via email to