Ubuntu – How to upload package with dependencies to the PPA

compilingdependenciesppa

I made a package for my PPA and uploaded it. It built without any problems.

Then I made another package that depended on the first and uploaded it. It failed because it couldn't find the files in the first package. This leads me to believe that the first package wasn't even installed.

How can I make sure the first package is installed before it tries to build the second package?

The control file for the first package (libjsoncpp):

Source: jsoncpp
Priority: extra
Maintainer: Nathan Osman 
Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.3
Section: libs
Homepage: http://jsoncpp.sf.net

Package: jsoncpp-dev
Section: libdevel
Architecture: any
Depends: libjsoncpp (= ${binary:Version})
Description: JSON parsing library for C++
 jsoncpp is a C++ library that makes it easy to
 read / write JSON data.
 .
 This package contains the development tools necessary
 to create applications that use jsoncpp.

Package: libjsoncpp
Section: libs
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: JSON parsing library for C++
 jsoncpp is a C++ library that makes it easy to
 read / write JSON data.

The control file for the second (libsopp):

Source: sopp
Priority: extra
Maintainer: Nathan Osman 
Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.3
Section: libs
Homepage: http://stackoverflow.quickmediasolutions.com

Package: sopp-dev
Section: libdevel
Architecture: any
Depends: libsopp (= ${binary:Version}), jsoncpp-dev
Description: A C++ library for interfacing with StackExchange sites.
 so++ is a C++ library that wraps the functionality of the StackOverflow
 API. It provides access to all of the StackExchange sites.
 .
 This package contains the development files necessary to write software
 that uses so++.

Package: libsopp
Section: libs
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libjsoncpp
Description: A C++ library for interfacing with StackExchange sites.
 so++ is a C++ library that wraps the functionality of the StackOverflow
 API. It provides access to all of the StackExchange sites.

Best Answer

Your second package (sopp) needs to specify that it needs the first to build; the dependency you have specified (with Depends:) will only handle installation.

To add a build dependency, add this to the top (Source:) section of your control file:

Build-Depends: jsoncpp-dev

You should then be able to drop jsoncpp from the Depends line, as the shlibs:Depends macro should work that out itself.

Related Question