Support dual ABI 49/130249/6
authorDenis Khalikov <d.khalikov@partner.samsung.com>
Mon, 27 Mar 2017 10:58:31 +0000 (13:58 +0300)
committerDenis Khalikov <d.khalikov@partner.samsung.com>
Tue, 22 Aug 2017 08:04:36 +0000 (11:04 +0300)
Change-Id: Ic520341a98561771919f825cf25c289a57a35dba
Signed-off-by: Denis Khalikov <d.khalikov@partner.samsung.com>
CMakeLists.txt
packaging/pubkey-pinning.spec
src/gnutls/CMakeLists.txt
systemd/CMakeLists.txt
systemd/pubkey-pinning-popup-deprecated.service.in [new file with mode: 0644]
systemd/pubkey-pinning-popup-deprecated.socket.in [new file with mode: 0644]
tpkp-curl-deprecated.pc.in [new file with mode: 0644]

index dd225f00a4753458e9ef53695942ac8ecff903ac..f323cf2672d35f03464ab412bd956d0760672f18 100644 (file)
@@ -50,13 +50,34 @@ ADD_DEFINITIONS("-Wall")
 ADD_DEFINITIONS("-Wextra")
 ADD_DEFINITIONS("-Werror")
 
+
+IF (CXXABI STREQUAL "cxx03")
+ADD_DEFINITIONS("-D_GLIBCXX_USE_CXX11_ABI=0")
+SET(TARGET_TPKP_COMMON_LIB "tpkp-common-deprecated")
+SET(TARGET_TPKP_CURL_LIB "tpkp-curl-deprecated")
+SET(TARGET_TPKP_POPUP "tpkp-popup-deprecated")
+ELSE (CXXABI STREQUAL "cxx11")
 SET(TARGET_TPKP_COMMON_LIB "tpkp-common")
 SET(TARGET_TPKP_CURL_LIB "tpkp-curl")
 SET(TARGET_TPKP_GNUTLS_LIB "tpkp-gnutls")
 SET(TARGET_TPKP_POPUP "tpkp-popup")
+ENDIF (CXXABI STREQUAL "cxx03")
+
+IF (CXXABI STREQUAL "cxx03")
+CONFIGURE_FILE(tpkp-curl-deprecated.pc.in tpkp-curl-deprecated.pc @ONLY)
+
+INSTALL(
+       FILES
+               tpkp-curl-deprecated.pc
+       DESTINATION
+               ${LIB_INSTALL_DIR}/pkgconfig
+       )
+
+ELSE (CXXABI NOT STREQUAL "cxx03")
 
 CONFIGURE_FILE(tpkp-curl.pc.in tpkp-curl.pc @ONLY)
 CONFIGURE_FILE(tpkp-gnutls.pc.in tpkp-gnutls.pc @ONLY)
+
 INSTALL(
        FILES
                tpkp-curl.pc
@@ -65,11 +86,14 @@ INSTALL(
                ${LIB_INSTALL_DIR}/pkgconfig
        )
 
+ENDIF (CXXABI STREQUAL "cxx03")
+
 ADD_SUBDIRECTORY(src)
 ADD_SUBDIRECTORY(systemd)
-
 IF (DEFINED PUBKEY_PINNING_TEST_BUILD)
+IF (CXXABI STREQUAL "cxx11")
 SET(TARGET_TPKP_TEST "tpkp-internal-test")
 SET(TARGET_TPKP_POPUP_TEST "tpkp-internal-test-popup")
 ADD_SUBDIRECTORY(test)
+ENDIF (CXXABI STREQUAL "cxx11")
 ENDIF (DEFINED PUBKEY_PINNING_TEST_BUILD)
index 526fbd5b7a5a73d145ecdc30d1b4b448e1f01597..f936e7e161027cecdfca2fdff0173fdff3f7ec11 100644 (file)
@@ -18,6 +18,22 @@ Requires: /sbin/ldconfig
 %description
 Https Public Key Pinning for Tizen platform system framework.
 
+%package deprecated
+Summary:  Https Public Key Pinning for Tizen platform system framework with cxx03 abi
+Provides:  %{name}-deprecated = %{version}-%{release}
+
+%description deprecated
+Https Public Key Pinning for Tizen platform system framework with cxx03 abi
+
+%package devel-deprecated
+Summary:  Tizen HPKP library development files with cxx03 abi
+Group:    Development/Libraries
+Requires: %{name}-deprecated = %version-%release
+
+%description devel-deprecated
+Tizen HPKP library development files with cxx03 abi including headers and
+pkgconfig.
+
 %package devel
 Summary:  Tizen HPKP library development files
 Group:    Development/Libraries
@@ -64,7 +80,7 @@ export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
 
 export LDFLAGS+="-Wl,--rpath=%_prefix/lib"
 
-%global sock_path /tmp/.%name-popup.sock
+%global sock_path /tmp/.pubkey-pinning-popup.sock
 
 %{!?build_type:%define build_type "Release"}
 %cmake . -DCMAKE_INSTALL_PREFIX=%_prefix \
@@ -75,6 +91,47 @@ export LDFLAGS+="-Wl,--rpath=%_prefix/lib"
 %if 0%{?pubkey_pinning_test_build}
         -DPUBKEY_PINNING_TEST_BUILD=1    \
 %endif
+        -DCXXABI=cxx11 \
+        -DCMAKE_VERBOSE_MAKEFILE=ON \
+        -DSYSTEMD_UNIT_DIR=%_unitdir_user
+
+make %{?_smp_mflags}
+
+%make_install
+
+#save all we have built for cxx11 abi
+pushd %{buildroot}%{_libdir}
+for FILE in libtpkp*.so*; do mv "$FILE" "%{_builddir}/%{name}-%{version}/$FILE"; done
+mv pkgconfig/tpkp-*.pc %{_builddir}/%{name}-%{version}
+popd
+
+pushd %{buildroot}%{_bindir}
+mv tpkp-popup %{_builddir}/%{name}-%{version}
+%if 0%{?pubkey_pinning_test_build}
+for FILE in tpkp-internal*; do mv "$FILE" "%{_builddir}/%{name}-%{version}/$FILE"; done
+%endif
+popd
+
+pushd %{buildroot}%{_includedir}/tpkp/gnutls
+mv tpkp_gnutls.h %{_builddir}/%{name}-%{version}
+popd
+
+pushd %{buildroot}%_unitdir_user/
+mv %name-popup.* %{_builddir}/%{name}-%{version}
+popd
+
+make clean
+
+%{!?build_type:%define build_type "Release"}
+%cmake . -DCMAKE_INSTALL_PREFIX=%_prefix \
+        -DVERSION=%version               \
+        -DINCLUDEDIR=%_includedir        \
+        -DSOCK_PATH=%sock_path           \
+        -DCMAKE_BUILD_TYPE=%build_type   \
+%if 0%{?pubkey_pinning_test_build}
+        -DPUBKEY_PINNING_TEST_BUILD=1    \
+%endif
+        -DCXXABI=cxx03 \
         -DCMAKE_VERBOSE_MAKEFILE=ON \
         -DSYSTEMD_UNIT_DIR=%_unitdir_user
 
@@ -83,8 +140,23 @@ make %{?_smp_mflags}
 %install
 %make_install
 mkdir -p %buildroot%_unitdir_user/sockets.target.wants
-ln -sf ../%name-popup.socket %buildroot%_unitdir_user/sockets.target.wants/%name-popup.socket
-%find_lang %{name}
+ln -sf ../%name-popup-deprecated.socket %buildroot%_unitdir_user/sockets.target.wants/%name-popup-deprecated.socket
+%find_lang pubkey-pinning
+
+#move all we have build for cxx11 abi
+pushd %{_builddir}/%{name}-%{version}
+for FILE in libtpkp*.so*; do mv "$FILE" "%{buildroot}%{_libdir}/$FILE"; done
+%if 0%{?pubkey_pinning_test_build}
+for FILE in tpkp-internal*; do mv "$FILE" "%{buildroot}%{_bindir}/$FILE"; done
+%endif
+mv tpkp-popup %{buildroot}%{_bindir}
+mkdir -p %{buildroot}%{_includedir}/tpkp/gnutls
+mv tpkp_gnutls.h %{buildroot}%{_includedir}/tpkp/gnutls/tpkp_gnutls.h
+mv %name-popup.socket  %{buildroot}%_unitdir_user
+mv %name-popup.service  %{buildroot}%_unitdir_user
+mv tpkp*.pc %{buildroot}%{_libdir}/pkgconfig/
+ln -sf %_unitdir_user/popup.socket %buildroot%_unitdir_user/sockets.target.wants/%name-popup.socket
+popd
 
 %post
 /sbin/ldconfig
@@ -114,18 +186,48 @@ fi
 /sbin/ldconfig
 systemctl daemon-reload
 
-%files
-%manifest %name.manifest
+%post deprecated
+/sbin/ldconfig
+systemctl daemon-reload
+if [ $1 == 1 ]; then
+    systemctl start %name-popup-deprecated.socket
+fi
+
+if [ $1 == 2 ]; then
+    systemctl restart %name-popup-deprecated.socket
+fi
+
+%preun deprecated
+if [ $1 == 0 ]; then
+    systemctl stop %name-popup-deprecated.service
+    systemctl stop %name-popup-deprecated.socket
+    systemctl disable %name-popup-deprecated
+fi
+
+%postun deprecated
+/sbin/ldconfig
+systemctl daemon-reload
+
+%files deprecated -f pubkey-pinning.lang
+%manifest pubkey-pinning.manifest
+%license LICENSE
+%license LICENSE.BSD-3-Clause
+%license LICENSE.MPL-1.1
+%_libdir/libtpkp-common-deprecated.so.*
+%_libdir/libtpkp-curl-deprecated.so.*
+%_unitdir_user/%name-popup-deprecated.service
+%_unitdir_user/%name-popup-deprecated.socket
+%_unitdir_user/sockets.target.wants/%name-popup-deprecated.socket
+%_bindir/tpkp-popup-deprecated
+
+%files -f pubkey-pinning.lang
+%manifest pubkey-pinning.manifest
 %license LICENSE
 %license LICENSE.BSD-3-Clause
 %license LICENSE.MPL-1.1
 %_libdir/libtpkp-common.so.*
 %_libdir/libtpkp-curl.so.*
 %_libdir/libtpkp-gnutls.so.*
-
-%files ui -f %name.lang
-%manifest %name.manifest
-%license LICENSE
 %_unitdir_user/%name-popup.service
 %_unitdir_user/%name-popup.socket
 %_unitdir_user/sockets.target.wants/%name-popup.socket
@@ -141,6 +243,13 @@ systemctl daemon-reload
 %_libdir/libtpkp-curl.so
 %_libdir/libtpkp-gnutls.so
 
+%files devel-deprecated
+%_includedir/tpkp/common/tpkp_error.h
+%_includedir/tpkp/curl/tpkp_curl.h
+%_libdir/pkgconfig/tpkp-curl-deprecated.pc
+%_libdir/libtpkp-common-deprecated.so
+%_libdir/libtpkp-curl-deprecated.so
+
 %if 0%{?pubkey_pinning_test_build}
 %files test
 %_bindir/tpkp-internal-test
index adf0e92a504baef9b7520a0c2b61f25f33794946..a8eb02318ed09ce27c54189fcb180f6ebe122d70 100644 (file)
@@ -16,6 +16,7 @@
 # @author   Kyungwook Tak (k.tak@samsung.com)
 # @brief    TPKP gnutls lib makefile
 #
+IF (CXXABI STREQUAL "cxx11")
 PKG_CHECK_MODULES(TPKP_GNUTLS_DEP
        REQUIRED
        gnutls
@@ -50,3 +51,4 @@ TARGET_LINK_LIBRARIES(${TARGET_TPKP_GNUTLS_LIB}
 INSTALL(TARGETS ${TARGET_TPKP_GNUTLS_LIB} DESTINATION ${LIB_INSTALL_DIR})
 
 INSTALL(FILES include/tpkp_gnutls.h DESTINATION ${INCLUDEDIR}/tpkp/gnutls)
+ENDIF (CXXABI STREQUAL "cxx11")
index f18d387298f8e4d8f919252ad5e5fc65ded12ca6..47d702ad6138e7b2b4f175ee4bec6f9cf1fc0034 100644 (file)
@@ -1,3 +1,15 @@
+IF (CXXABI STREQUAL "cxx03")
+CONFIGURE_FILE(pubkey-pinning-popup-deprecated.service.in pubkey-pinning-popup-deprecated.service @ONLY)
+CONFIGURE_FILE(pubkey-pinning-popup-deprecated.socket.in pubkey-pinning-popup-deprecated.socket @ONLY)
+
+INSTALL(
+       FILES
+               pubkey-pinning-popup-deprecated.service
+               pubkey-pinning-popup-deprecated.socket
+       DESTINATION
+               ${SYSTEMD_UNIT_DIR}
+       )
+ELSE (CXXABI NOT STREQUAL "cxx03")
 CONFIGURE_FILE(pubkey-pinning-popup.service.in pubkey-pinning-popup.service @ONLY)
 CONFIGURE_FILE(pubkey-pinning-popup.socket.in pubkey-pinning-popup.socket @ONLY)
 
@@ -8,3 +20,4 @@ INSTALL(
        DESTINATION
                ${SYSTEMD_UNIT_DIR}
        )
+ENDIF (CXXABI STREQUAL "cxx03")
diff --git a/systemd/pubkey-pinning-popup-deprecated.service.in b/systemd/pubkey-pinning-popup-deprecated.service.in
new file mode 100644 (file)
index 0000000..397373c
--- /dev/null
@@ -0,0 +1,8 @@
+[Unit]
+Description=TPKP(Tizen Public Key Pinning) popup service
+
+[Service]
+ExecStart=/usr/bin/tpkp-popup-deprecated
+Type=simple
+EnvironmentFile=/run/tizen-system-env
+Sockets=pubkey-pinning-popup-deprecated.socket
diff --git a/systemd/pubkey-pinning-popup-deprecated.socket.in b/systemd/pubkey-pinning-popup-deprecated.socket.in
new file mode 100644 (file)
index 0000000..9e47f01
--- /dev/null
@@ -0,0 +1,7 @@
+[Socket]
+ListenStream=@SOCK_PATH@
+SocketMode=0777
+Service=pubkey-pinning-popup-deprecated.service
+
+[Install]
+WantedBy=sockets.target
diff --git a/tpkp-curl-deprecated.pc.in b/tpkp-curl-deprecated.pc.in
new file mode 100644 (file)
index 0000000..f8cac95
--- /dev/null
@@ -0,0 +1,9 @@
+libdir=@LIB_INSTALL_DIR@
+includedir=@INCLUDEDIR@
+
+Name: tpkp-curl-deprecated
+Description: Tizen HPKP for curl
+Version: @VERSION@
+Requires: openssl libcurl
+Libs: -L${libdir} -ltpkp-curl-deprecated -ltpkp-common-deprecated
+Cflags: -I${includedir}/tpkp/curl -I${includedir}/tpkp/common