diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e390859 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libgphoto2-2.5.15.tar.bz2 diff --git a/.libgphoto2.metadata b/.libgphoto2.metadata new file mode 100644 index 0000000..42a3b32 --- /dev/null +++ b/.libgphoto2.metadata @@ -0,0 +1 @@ +c6c462616574835ab4f16c785d3e72242c0aada6 SOURCES/libgphoto2-2.5.15.tar.bz2 diff --git a/SOURCES/gphoto2-device-return.patch b/SOURCES/gphoto2-device-return.patch new file mode 100644 index 0000000..456c2d4 --- /dev/null +++ b/SOURCES/gphoto2-device-return.patch @@ -0,0 +1,32 @@ +From 242878ac1cefd1ef99c2e5d84a794f72e49e28be Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Fri, 23 Oct 2009 13:12:16 +0200 +Subject: [PATCH] Repair reattach of kernel driver if it was unbound + +Drah in the header for USBDEVFS_CONNECT. + +Signed-off-by: Lubomir Rintel +--- + libgphoto2_port/usb/libusb.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +diff --git a/libgphoto2_port/usb/libusb.c b/libgphoto2_port/usb/libusb.c +index d1535a5..c8a63f1 100644 +--- a/libgphoto2_port/usb/libusb.c ++++ b/libgphoto2_port/usb/libusb.c +@@ -38,6 +38,12 @@ + #include + #include + ++#if defined(LIBUSB_HAS_GET_DRIVER_NP) && defined(LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP) ++/* Pull in USBDEVFS_CONNECT */ ++#include ++#include ++#endif ++ + #ifdef ENABLE_NLS + # include + # undef _ +-- +1.6.5.rc2 + diff --git a/SOURCES/gphoto2-ixany.patch b/SOURCES/gphoto2-ixany.patch new file mode 100644 index 0000000..09d9d90 --- /dev/null +++ b/SOURCES/gphoto2-ixany.patch @@ -0,0 +1,14 @@ +diff -up gphoto2-2.4.0/libgphoto2-2.4.0/libgphoto2_port/serial/unix.c.ixany gphoto2-2.4.0/libgphoto2-2.4.0/libgphoto2_port/serial/unix.c +--- libgphoto2-2.4.0/libgphoto2_port/serial/unix.c.ixany 2007-07-27 02:36:13.000000000 +0200 ++++ libgphoto2-2.4.0/libgphoto2_port/serial/unix.c 2008-02-25 06:40:40.000000000 +0100 +@@ -98,6 +98,10 @@ + + #define CHECK(result) {int r=(result); if (r<0) return (r);} + ++#ifndef IXANY ++#define IXANY 0004000 ++#endif ++ + /* Linux */ + #ifdef __linux__ + /* devfs is accounted for in the implementation */ diff --git a/SOURCES/gphoto2-pkgcfg.patch b/SOURCES/gphoto2-pkgcfg.patch new file mode 100644 index 0000000..e108a95 --- /dev/null +++ b/SOURCES/gphoto2-pkgcfg.patch @@ -0,0 +1,74 @@ +--- libgphoto2-2.4.1/gphoto2-config.in.pkgcfg 2007-07-27 02:36:23.000000000 +0200 ++++ libgphoto2-2.4.1/gphoto2-config.in 2007-07-31 12:21:14.000000000 +0200 +@@ -1,11 +1,5 @@ + #! /bin/sh + +-# leave these definitions here +-# they are required for correct interpolation of +-# @libdir@ and @includedir@ later on +-prefix="@prefix@" +-exec_prefix="@exec_prefix@" +- + usage() + { + cat <= total) + return NULL; + + length = dtoh8a(&data[offset]); /* PTP_MAXSTRLEN == 255, 8 bit len */ +- if (length == 0) /* nothing to do? */ ++ if (length == 0){ /* nothing to do? */ ++ *len = 0; + return NULL; ++ } + + if (offset + 1 + length*sizeof(string[0]) > total) + return NULL; diff --git a/SOURCES/gphoto2-storage.patch b/SOURCES/gphoto2-storage.patch new file mode 100644 index 0000000..7d8fe4b --- /dev/null +++ b/SOURCES/gphoto2-storage.patch @@ -0,0 +1,168 @@ +diff -up libgphoto2-2.4.7/packaging/generic/print-camera-list.c.storage libgphoto2-2.4.7/packaging/generic/print-camera-list.c +--- libgphoto2-2.4.7/packaging/generic/print-camera-list.c.storage 2009-08-11 17:11:27.000000000 +0200 ++++ libgphoto2-2.4.7/packaging/generic/print-camera-list.c 2009-08-19 15:44:41.000000000 +0200 +@@ -819,6 +819,8 @@ fdi_begin_func (const func_params_t *par + printf("\n"); + printf(" \n"); + printf(" \n"); ++ printf(" \n"); ++ printf(" \n"); + return 0; + } + +@@ -858,62 +860,62 @@ fdi_camera_func (const func_params_t *pa + return 0; + } + if (a->usb_vendor) { /* usb product id might be 0! */ +- printf(" \n", a->usb_vendor); +- printf(" \n", a->usb_product); ++ printf(" \n", a->usb_vendor); ++ printf(" \n", a->usb_product); + if (a->usb_vendor == 0x05ac) { /* Apple iPhone, PTP user. */ +- printf(" \n"); +- printf(" \n"); +- printf(" \n"); ++ printf(" \n"); ++ printf(" \n"); ++ printf(" \n"); + } + if (a->device_type & GP_DEVICE_AUDIO_PLAYER) { +- printf(" portable_audio_player\n"); +- printf(" portable_audio_player\n"); +- printf(" user\n"); +- printf(" mtp\n"); ++ printf(" portable_audio_player\n"); ++ printf(" portable_audio_player\n"); ++ printf(" user\n"); ++ printf(" mtp\n"); + + /* FIXME: needs true formats ... But all of them can do MP3 */ +- printf(" audio/mpeg\n"); ++ printf(" audio/mpeg\n"); + } else { +- printf(" camera\n"); +- printf(" camera\n"); ++ printf(" camera\n"); ++ printf(" camera\n"); + + /* HACK alert ... but the HAL / gnome-volume-manager guys want that */ + if (NULL!=strstr(a->library,"ptp")) +- printf(" ptp\n"); ++ printf(" ptp\n"); + else +- printf(" proprietary\n"); ++ printf(" proprietary\n"); + } + /* leave them here even for audio players */ +- printf(" %s\n", model); +- printf(" true\n"); ++ printf(" %s\n", model); ++ printf(" true\n"); + if (a->usb_vendor == 0x05ac) { /* Apple iPhone */ ++ printf(" \n"); + printf(" \n"); + printf(" \n"); +- printf(" \n"); + } ++ printf(" \n"); + printf(" \n"); +- printf(" \n"); + + } else if ((a->usb_class) && (a->usb_class != 666)) { +- printf(" \n", a->usb_class); +- printf(" \n", a->usb_subclass); +- printf(" \n", a->usb_protocol); +- printf(" camera\n"); +- printf(" camera\n"); ++ printf(" \n", a->usb_class); ++ printf(" \n", a->usb_subclass); ++ printf(" \n", a->usb_protocol); ++ printf(" camera\n"); ++ printf(" camera\n"); + if (a->usb_class == 6) { +- printf(" ptp\n"); ++ printf(" ptp\n"); + } else { + if (a->usb_class == 8) { +- printf(" storage\n"); ++ printf(" storage\n"); + } else { +- printf(" proprietary\n"); ++ printf(" proprietary\n"); + } + } +- printf(" %s\n", model); +- printf(" true\n"); ++ printf(" %s\n", model); ++ printf(" true\n"); ++ printf(" \n"); + printf(" \n"); + printf(" \n"); +- printf(" \n"); + } + } /* camera has USB connection */ + return 0; +@@ -922,6 +924,7 @@ fdi_camera_func (const func_params_t *pa + static int + fdi_end_func (const func_params_t *params, void *data) + { ++ printf(" \n"); + printf(" \n"); + printf(" \n"); + printf("\n"); +@@ -948,6 +951,8 @@ fdi_device_begin_func (const func_params + printf("\n"); + printf(" \n"); + printf(" \n"); ++ printf(" \n"); ++ printf(" \n"); + return 0; + } + +@@ -991,28 +996,28 @@ fdi_device_camera_func (const func_param + /* do not set category. We don't really know what this device really is. + * But we do now that is capable of being a camera, so add to capabilities + */ +- printf(" \n", a->usb_vendor); +- printf(" \n", a->usb_product); ++ printf(" \n", a->usb_vendor); ++ printf(" \n", a->usb_product); + if (params->add_comments) { + printf(" \n", a->model); + } + if (a->device_type & GP_DEVICE_AUDIO_PLAYER) +- printf(" portable_audio_player\n"); ++ printf(" portable_audio_player\n"); + else +- printf(" camera\n"); ++ printf(" camera\n"); ++ printf(" \n"); + printf(" \n"); +- printf(" \n"); + } + #if 0 + /* would need to be able to merge upwards ... but cannot currently */ + else if ((a->usb_class) && (a->usb_class != 666)) { +- printf(" \n", a->usb_class); +- printf(" \n", a->usb_subclass); +- printf(" \n", a->usb_protocol); +- printf(" camera\n"); ++ printf(" \n", a->usb_class); ++ printf(" \n", a->usb_subclass); ++ printf(" \n", a->usb_protocol); ++ printf(" camera\n"); ++ printf(" \n"); + printf(" \n"); + printf(" \n"); +- printf(" \n"); + } + #endif + } +@@ -1022,6 +1027,7 @@ fdi_device_camera_func (const func_param + static int + fdi_device_end_func (const func_params_t *params, void *data) + { ++ printf(" \n"); + printf(" \n"); + printf(" \n"); + printf("\n"); diff --git a/SPECS/libgphoto2.spec b/SPECS/libgphoto2.spec new file mode 100644 index 0000000..4612d94 --- /dev/null +++ b/SPECS/libgphoto2.spec @@ -0,0 +1,365 @@ +%bcond_with gp2ddb + +%global udevdir %(pkg-config --variable=udevdir udev) +%global port_version 0.12.0 + +Name: libgphoto2 +Version: 2.5.15 +Release: 3%{?dist} +Summary: Library for accessing digital cameras +Group: Development/Libraries +# GPLV2+ for the main lib (due to exif.c) and most plugins, some plugins GPLv2 +License: GPLv2+ and GPLv2 +URL: http://www.gphoto.org/ + +Source0: http://downloads.sourceforge.net/gphoto/%{name}-%{version}.tar.bz2 +Patch1: gphoto2-pkgcfg.patch +Patch2: gphoto2-storage.patch +Patch3: gphoto2-ixany.patch +Patch4: gphoto2-device-return.patch +Patch5: gphoto2-ptp.patch +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: make +BuildRequires: systemd +%if %{with gp2ddb} +BuildRequires: flex +BuildRequires: bison +%endif +BuildRequires: libtool-ltdl-devel +BuildRequires: libjpeg-devel +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: gd-devel +BuildRequires: pkgconfig(libexif) +# ----------------------------------- +# libgphoto2_port +# ----------------------------------- +BuildRequires: lockdev-devel +BuildRequires: pkgconfig(libusb-1.0) +Requires: lockdev +# ----------------------------------- +Obsoletes: gphoto2 < 2.4.0-11 + +%description +libgphoto2 is a library that can be used by applications to access +various digital cameras. libgphoto2 itself is not a GUI application, +opposed to gphoto. There are GUI frontends for the gphoto2 library, +however, such as gtkam for example. + + +%package devel +Summary: Headers and links to compile against the libgphoto2 library +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libexif-devel +Obsoletes: gphoto2-devel < 2.4.0-11 +Provides: gphoto2-devel = %{version}-%{release} + +%description devel +libgphoto2 is a library that can be used by applications to access +various digital cameras. libgphoto2 itself is not a GUI application, +opposed to gphoto. There are GUI frontends for the gphoto2 library, +however, such as gtkam for example. + +This package contains files needed to compile applications that +use libgphoto2. + + +%prep +%autosetup -p1 +for f in AUTHORS ChangeLog COPYING libgphoto2_port/AUTHORS libgphoto2_port/COPYING.LIB `find -name 'README.*'`; do + iconv -f ISO-8859-1 -t UTF-8 $f > $f.conv && mv -f $f.conv $f +done + +%build +CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" +CXXFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" + +%configure \ + udevscriptdir='%{udevdir}' \ + --with-drivers=all \ + --with-doc-dir=%{_pkgdocdir} \ +%if %{with gp2ddb} + --enable-gp2ddb \ +%endif + --disable-static \ + --disable-rpath \ + %{nil} + +# Don't use rpath! +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool libgphoto2_port/libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool libgphoto2_port/libtool + + +%make_build + +%install +%make_install INSTALL="install -p" mandir=%{_mandir} + +pushd packaging/linux-hotplug/ + export LIBDIR=%{buildroot}%{_libdir} + export CAMLIBS=%{buildroot}%{_libdir}/%{name}/%{version} + export LD_LIBRARY_PATH=%{buildroot}%{_libdir} + + # Output udev rules for device identification; this is used by GVfs gphoto2 + # backend and others. + mkdir -p %{buildroot}%{_udevrulesdir} + %{buildroot}%{_libdir}/%{name}/print-camera-list udev-rules version 136 > %{buildroot}%{_udevrulesdir}/40-libgphoto2.rules +popd + +# remove circular symlink in /usr/include/gphoto2 (#460807) +rm -f %{buildroot}%{_includedir}/gphoto2/gphoto2 + +# remove unneeded print-camera-list from libdir (#745081) +rm -f %{buildroot}%{_libdir}/libgphoto2/print-camera-list + +find %{buildroot} -type f -name "*.la" -print -delete + +%find_lang %{name}-6 +%find_lang %{name}_port-12 +cat libgphoto2*.lang >> %{name}.lang + +# https://fedoraproject.org/wiki/Packaging_tricks#With_.25doc +mkdir __doc +mv %{buildroot}%{_pkgdocdir}/* __doc +rm -rf %{buildroot}%{_pkgdocdir} +rm -rf %{buildroot}%{_datadir}/libgphoto2_port/*/vcamera/ + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + + +%files -f %{name}.lang +%license COPYING +%doc AUTHORS README NEWS +%{_libdir}/%{name}.so.* +%{_libdir}/%{name}_port.so.* +%dir %{_libdir}/%{name}/ +%dir %{_libdir}/%{name}/%{version}/ +%dir %{_libdir}/%{name}_port/ +%dir %{_libdir}/%{name}_port/%{port_version}/ +%{_libdir}/%{name}/%{version}/*.so +%{_libdir}/%{name}_port/%{port_version}/*.so +%{_udevrulesdir}/40-libgphoto2.rules +%{udevdir}/check-ptp-camera +%{_datadir}/libgphoto2/ + +%files devel +%doc __doc/* +%{_bindir}/gphoto2-config +%{_bindir}/gphoto2-port-config +%{_includedir}/gphoto2/ +%{_libdir}/%{name}.so +%{_libdir}/%{name}_port.so +%{_libdir}/pkgconfig/%{name}.pc +%{_libdir}/pkgconfig/%{name}_port.pc +%{_mandir}/man3/%{name}.3* +%{_mandir}/man3/%{name}_port.3* + +%changelog +* Wed Mar 06 2019 Josef Ridky - 2.5.15-3 +- fix CFLAGS and CXXFLAGS content + +* Wed Mar 06 2019 Josef Ridky - 2.5.15-2 +- Resolves: #1551747 - fix issue with get folder list + +* Wed Oct 04 2017 Josef Ridky - 2.5.15-1 +- Resolves: #1463585 - rebase to the latest upstream version + +* Wed Jun 21 2017 Debarshi Ray - 2.5.2-4 +- BuildRequire libusbx-devel, not libusbx +Resolves: #1365875 + +* Tue Jun 20 2017 Debarshi Ray - 2.5.2-4 +- Use only libusbx and drop libusb +Resolves: #1365875 + +* Fri Jan 24 2014 Daniel Mach - 2.5.2-3 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 2.5.2-2 +- Mass rebuild 2013-12-27 + +* Mon May 6 2013 Hans de Goede - 2.5.2-1 +- New upstream release bugfix 2.5.2 +- Drop bugfix patches (merged upstream) + +* Sat May 4 2013 Hans de Goede - 2.5.1.1-4 +- Fix crash when dealing with PTP devices without a memory card (rhbz#915688) + +* Thu May 2 2013 Hans de Goede - 2.5.1.1-3 +- Fix PTP devices not working in USB-3 ports (rhbz#819918) +- Cleanup spec-file + +* Tue Apr 23 2013 Tim Waugh 2.5.1.1-2 +- Use _udevrulesdir macro. + +* Tue Feb 19 2013 Jindrich Novy 2.5.1.1-1 +- update to 2.5.1.1 + +* Sun Feb 17 2013 Jindrich Novy 2.5.0-8 +- fix camera detection - thanks to Panu Matilainen (#912040) + +* Wed Jan 30 2013 Jindrich Novy 2.5.0-7 +- move /lib files to /usr/lib +- fix changelog + +* Fri Jan 18 2013 Adam Tkac - 2.5.0-6 +- rebuild due to "jpeg8-ABI" feature drop + +* Sun Jan 13 2013 Jindrich Novy 2.5.0-5 +- remove deprecated HAL file (#894527) + +* Sat Dec 01 2012 Jindrich Novy 2.5.0-4 +- compile with -fno-strict-aliasing (because of ptp.c) + +* Wed Sep 19 2012 Hans de Goede 2.5.0-3 +- Fix the usbscsi port driver not working, this fixes many miniature + (keychain) photo frames no longer being accessible + +* Thu Jul 19 2012 Fedora Release Engineering - 2.5.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jul 11 2012 Jindrich Novy 2.5.0-1 +- update to 2.5.0 + +* Mon Apr 16 2012 Jindrich Novy 2.4.14-1 +- update to 2.4.14 + +* Wed Mar 21 2012 Jindrich Novy 2.4.13-1 +- update to 2.4.13 + +* Fri Jan 13 2012 Fedora Release Engineering - 2.4.11-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Wed Oct 12 2011 Jindrich Novy 2.4.11-2 +- remove unneeded print-camera-list from libdir (#745081) + +* Mon Apr 18 2011 Jindrich Novy 2.4.11-1 +- update to 2.4.11 + +* Wed Feb 09 2011 Jindrich Novy 2.4.10.1-1 +- update to 2.4.10.1 + +* Tue Feb 08 2011 Fedora Release Engineering - 2.4.10-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Jan 26 2011 Caolán McNamara 2.4.10-4 +- rebuild for dependencies + +* Wed Oct 20 2010 Jindrich Novy 2.4.10-3 +- move udev helper scripts to /lib/udev (#644552) + +* Mon Sep 06 2010 Jindrich Novy 2.4.10-2 +- BR: gd-devel because of ax203 and st2205 camlibs (#630570) + +* Tue Aug 17 2010 Jindrich Novy 2.4.10-1 +- update to 2.4.10 + +* Mon Jul 12 2010 Dan Horák 2.4.9-2 +- remove the need to call autoreconf + +* Mon Apr 12 2010 Jindrich Novy 2.4.9-1 +- update to 2.4.9 + +* Mon Jan 25 2010 Jindrich Novy 2.4.8-1 +- update to 2.4.8 + +* Fri Dec 18 2009 Jindrich Novy 2.4.7-3 +- remove circular symlink in /usr/include/gphoto2 (#460807) + +* Fri Oct 23 2009 Jindrich Novy 2.4.7-2 +- return the dual-mode device to kernel once we don't use it (#530545) + +* Tue Aug 18 2009 Jindrich Novy 2.4.7-1 +- update to 2.4.7 +- drop udev patch, applied upstream +- update storage patch + +* Sun Aug 09 2009 David Zeuthen 2.4.6-3 +- Add patch from http://sourceforge.net/tracker/?func=detail&aid=2801117&group_id=8874&atid=308874 + and generate generic udev rules for device identification (ID_GPHOTO2* properties) + +* Fri Jul 24 2009 Fedora Release Engineering - 2.4.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon May 18 2009 Jindrich Novy 2.4.6-1 +- update to 2.4.6 +- new IDs for Kodak V803, M1063, Canon PowerShot A650IS, SD990 (aka IXUS 980IS), + SD880IS, A480, Canon EOS 50D, Fuji FinePix S1000fd +- many Canon related fixes + +* Wed Apr 08 2009 Jindrich Novy 2.4.5-1 +- update to 2.4.5 +- remove .canontimeout patch, applied upstream + +* Wed Apr 01 2009 Jindrich Novy 2.4.4-4 +- increase timeouts for Canon cameras (#476355), thanks to + Andrzej Nowak and Russell Harrison + +* Thu Mar 05 2009 Caolán McNamara - 2.4.4-3 +- tweak BR to get to build + +* Wed Feb 25 2009 Fedora Release Engineering - 2.4.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Jan 22 2009 Jindrich Novy 2.4.4-1 +- update to 2.4.4 +- many fixes and improvements to Nikon and Canon cameras +- translation updates + +* Thu Nov 13 2008 Rex Dieter 2.4.3-2 +- respin (libtool) + +* Mon Oct 20 2008 Jindrich Novy 2.4.3-1 +- update to libgphoto2-2.4.3 + +* Tue Sep 23 2008 Jindrich Novy 2.4.2-2 +- convert all shipped docs to UTF-8 + +* Fri Aug 01 2008 Jindrich Novy 2.4.2-1 +- update to 2.4.2 +- contains many fixes in the Canon camera communication interface +- drop build patch, no more needed + +* Mon Jul 07 2008 Jindrich Novy 2.4.1-6 +- increase maximal number of entries in the camera list (#454245) + +* Fri Jun 20 2008 Kevin Kofler 2.4.1-5 +- fix pkgcfg patch to match actual .pc file names (fixes kdegraphics build) + +* Thu Jun 12 2008 Jindrich Novy 2.4.1-3 +- libgphoto2-devel requires libusb-devel and libexif-devel for + pkgconfig + +* Wed Jun 04 2008 Jindrich Novy 2.4.1-2 +- fix obsoletes +- workaround problem with coreutils-6.12 and RHEL5-xen kernels + what prevents libgphoto2 koji build + +* Mon Jun 02 2008 Jindrich Novy 2.4.1-1 +- update to 2.4.1 (#443515, #436138) + +* Thu May 29 2008 Stepan Kasal 2.4.0-3 +- drop gphoto2-norpath.patch +- use quoted here-document in %%prep +- fix some typos in m4 sources +- run autoreconf to get autotools right + +* Mon Apr 21 2008 Jindrich Novy 2.4.0-2 +- apply patch to fix build with libusb + +* Fri Apr 18 2008 Jindrich Novy 2.4.0-1 +- backport patch from upstream to avoid segfault when + data phase is skipped for certain devices (#435413) +- initial build + +* Mon Apr 14 2008 Jindrich Novy 2.4.0-0.2 +- review fixes, thanks to Hans de Goede: (#437285) + - remove unused macro + - don't exclude s390/s390x + - preserve timestamps + - fix license + +* Thu Mar 13 2008 Jindrich Novy 2.4.0-0.1 +- initial libgphoto2 packaging