a1ffb39276640fa9dd1dae559ceb7eddf9997441
[platform/core/system/upgrade.git] / packaging / upgrade.spec
1 %define upgrade_support_dir %{_libexecdir}/upgrade-support
2 %define upgrade_scripts_dir %TZ_SYS_UPGRADE
3
4 Name:           upgrade
5 Summary:        Upgrade support for Tizen
6 Version:        7.5.4
7 Release:        0
8 Group:          System
9 License:        Apache-2.0
10 Source0:        %{name}-%{version}.tar.gz
11
12 BuildRequires:  cmake
13 BuildRequires:  ca-certificates-devel
14 BuildRequires:  libbrotli-devel
15 BuildRequires:  pkgconfig(openssl1.1)
16 BuildRequires:  pkgconfig(libtzplatform-config)
17 BuildRequires:  pkgconfig(dlog)
18 Buildrequires:  pkgconfig(glib-2.0)
19 BuildRequires:  pkgconfig(hal-api-device)
20 BuildRequires:  libtar-devel
21
22 Requires:       upgrade-engine = %{version}-%{release}
23
24 %description
25 Metapackage requiring all upgrade-related packages on the platform.
26
27 %package        engine
28 Summary:        Utilities and configuration for handling Tizen platform upgrade
29 Group:          System
30 Requires:       tar
31 Requires:       gzip
32 # from factory-reset:
33 Requires:       %{_bindir}/rstsmack
34
35 %description    engine
36 Update engine adding all necessary tools, scripts and configuration
37 for updating Tizen platform images using delta files as generated by
38 upgrade-tools.
39
40 %description
41 Update engine for updating Tizen platform images using delta files
42 generated by upgrade-tools.
43
44 %prep
45 %setup -q
46
47 %build
48 export LDFLAGS+="-Wl,--rpath=%{_libdir} -Wl,--as-needed"
49 LDFLAGS="$LDFLAGS"
50
51 %define system_bus_services_dir /usr/share/dbus-1/system-services
52 %define systemd_dbus_conf_dir /etc/dbus-1/system.d
53
54 # You must set CA directory in the RO section to prevent manipulation
55 %define img_verifier_root_ca_dir %{TZ_SYS_RO_CA_DIR}/img-verifier
56 %define upgrade_initrd_list_dir %{_datadir}/initrd-recovery/initrd.list.d
57
58 %cmake \
59         -DCMAKE_INSTALL_PREFIX=%{_prefix} \
60         -DIMG_VERIFIER_ROOT_CA_DIR=%{img_verifier_root_ca_dir} \
61         -DUPGRADE_INITRD_LIST_DIR=%{upgrade_initrd_list_dir} \
62         -DUPGRADE_SCRIPTS_DIR=%{upgrade_scripts_dir} \
63         -DUPGRADE_VAR_DIR=%TZ_SYS_VAR \
64         -DUPGRADE_PKGSCRIPTS_DIR=%TZ_SYS_UPGRADE_SCRIPTS \
65         -DUNIT_DIR=%{_unitdir} \
66         .
67
68 make %{?jobs:-j%jobs}
69
70 %install
71 %make_install
72
73 mkdir -p %{buildroot}%{upgrade_support_dir}
74 install -m 755 scripts/upgrade-support/* %{buildroot}%{upgrade_support_dir}
75
76 %define fota_dir /opt/usr/data/fota
77 mkdir -p %{buildroot}%{fota_dir}
78 mkdir -p %{buildroot}%{img_verifier_root_ca_dir}
79 mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants
80
81 install -m 644 scripts/clone_partitions/clone_partitions.service %{buildroot}%{_unitdir}
82 ln -s ../clone_partitions.service %{buildroot}%{_unitdir}/multi-user.target.wants/
83 install -m 775 scripts/clone_partitions/clone_partitions.sh %{buildroot}%{_bindir}
84
85 mkdir -p %{buildroot}%{_unitdir}/recovery.service.wants
86 install -m 644 scripts/clone_partitions/clone_partitions_recovery.service %{buildroot}%{_unitdir}
87 ln -s ../clone_partitions_recovery.service %{buildroot}%{_unitdir}/recovery.service.wants/
88
89 # rw-update
90 mkdir -p %{buildroot}%{_unitdir}/system-update.target.wants
91 mkdir -p %{buildroot}%{_unitdir}/data-checkpoint.target.wants
92 mkdir -p %{buildroot}%{_unitdir}/delayed.target.wants
93 ln -s ../getty.target %{buildroot}%{_unitdir}/system-update.target.wants
94 ln -s ../cynara.socket %{buildroot}%{_unitdir}/system-update.target.wants
95 ln -s ../dbus.socket %{buildroot}%{_unitdir}/system-update.target.wants
96 ln -s ../udev-sdb-init.service %{buildroot}%{_unitdir}/system-update.target.wants
97 ln -s ../offline-update.service %{buildroot}%{_unitdir}/system-update.target.wants
98 ln -s ../udev-trigger-dmbow@.service %{buildroot}%{_unitdir}/system-update.target.wants/udev-trigger-dmbow@user.service
99 ln -s ../data-checkpoint.target %{buildroot}%{_unitdir}/system-update.target.wants
100 ln -s ../data-checkpoint.service %{buildroot}%{_unitdir}/data-checkpoint.target.wants/data-checkpoint.service
101 ln -s ../update-post.service %{buildroot}%{_unitdir}/system-update.target.wants
102 ln -s ../update-finalize.service %{buildroot}%{_unitdir}/delayed.target.wants
103
104 %posttrans engine
105 newrulesfile=99-sdb-switch.rules
106 newrulespath=%{upgrade_scripts_dir}/$newrulesfile
107 rulesdir=/usr/lib/udev/rules.d
108 if [ -e "$rulesdir/$newrulesfile" ]; then
109     echo "$newrulesfile exists. Skip creating symlink"
110 else
111     mkdir -p "$rulesdir"
112     ln -sf "$newrulespath" "$rulesdir"
113 fi
114
115 %files
116 %license LICENSE
117 %manifest upgrade.manifest
118
119 %files engine
120 %license LICENSE
121 %manifest upgrade.manifest
122 %doc README
123 %attr(775, root, system_fw) %{fota_dir}
124 %attr(700,-,-) %{upgrade_initrd_list_dir}/40-upgrade.list
125 %defattr(-,root,root,-)
126 %{_bindir}/clone_partitions.sh
127 %attr(644, root, root) %{_unitdir}/clone_partitions.service
128 %{_unitdir}/multi-user.target.wants/clone_partitions.service
129 %attr(644, root, root) %{_unitdir}/clone_partitions_recovery.service
130 %{_unitdir}/recovery.service.wants/clone_partitions_recovery.service
131 %{upgrade_support_dir}/upgrade-trigger.sh
132 %{upgrade_support_dir}/upgrade-partial.sh
133 %{upgrade_support_dir}/upgrade-prepare-partitions.sh
134 %{upgrade_support_dir}/upgrade-fota.sh
135 %{upgrade_support_dir}/upgrade-common.inc
136 %{_bindir}/upgrade-apply
137 %{_bindir}/verity_handler
138 %{_bindir}/upgrade-apply-deltafs
139 %{_bindir}/blkid-print
140 # Image verifier
141 %{_sbindir}/img-verifier
142 %attr(755,root,root) %{img_verifier_root_ca_dir}
143 # rw-upgrade
144 %{_unitdir}/data-checkpoint.service
145 %{_unitdir}/data-checkpoint.target
146 %{_unitdir}/data-checkpoint.target.wants/data-checkpoint.service
147 %{_unitdir}/delayed.target.wants/update-finalize.service
148 %{_unitdir}/offline-update.service
149 %{_unitdir}/system-update.target.wants/cynara.socket
150 %{_unitdir}/system-update.target.wants/data-checkpoint.target
151 %{_unitdir}/system-update.target.wants/dbus.socket
152 %{_unitdir}/system-update.target.wants/getty.target
153 %{_unitdir}/system-update.target.wants/offline-update.service
154 %{_unitdir}/system-update.target.wants/udev-sdb-init.service
155 %{_unitdir}/system-update.target.wants/udev-trigger-dmbow@user.service
156 %{_unitdir}/system-update.target.wants/update-post.service
157 %{_unitdir}/udev-sdb-init.service
158 %{_unitdir}/udev-trigger-dmbow@.service
159 %{_unitdir}/update-finalize.service
160 %{_unitdir}/update-post.service
161 %{upgrade_scripts_dir}/99-sdb-switch.rules
162 %{upgrade_scripts_dir}/install-sdb-rule.sh
163 %{upgrade_scripts_dir}/record-version.sh
164 %{upgrade_scripts_dir}/rw-update-macro.inc
165 %{upgrade_scripts_dir}/update-checkpoint-create.sh
166 %{upgrade_scripts_dir}/update-finalize.sh
167 %{upgrade_scripts_dir}/update-init.sh
168 %{upgrade_scripts_dir}/update-post.sh
169 %{upgrade_scripts_dir}/update.sh