Craig Sanders: > Maybe this could be solved with a new field: > > UnpackDir: /usr/src/debian > > or for archives which unpack in ./ > > UnpackDir: /usr/src/debian/package-version That's a good location. I like it a bit better than /var/lib/dpkg/source/package-version (my previous suggestions) I don't think we need a field for that though - just have dpkg always install the source there, unless some command-line override option is used. Remember, of course, I'm advocating packaging source files in .sdeb and .upsdeb files, and using dpkg to "install" them (where installing means just copying the source - not unpacking upstream sources, patching, compiling, building, etc...) A sample session: dpkg -i jdk_1.0.2-7.sdeb jdk_1.0.2-2.upsdeb debmake_3.3.1.deb ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ Debian Source Upstream Source Binary Package would install all of these at once (perhaps the .sdeb depends on the other two) The binary package (debmake_3.3.1.deb) would go where it goes now. The upstream source package (jdk_1.0.2-2.upsdeb) would go into /usr/src/debian/upsdeb/jdk_1.0.2-2 It would look like: /usr/src/debian/upsdeb/jdk_1.0.2-2/linux.jdk-1.0.2-pl2.common.tar.gz /usr/src/debian/upsdeb/jdk_1.0.2-2/linux.jdk-1.0.2-pl2.shared-motif2.tar.gz /usr/src/debian/upsdeb/jdk_1.0.2-2/linux.jdk-1.0.2-pl2.static-motif.tar.gz /usr/src/debian/upsdeb/jdk_1.0.2-2/md5-10-17-96 (see, nothing's been unpacked or touched or anything) The source package (jdk_1.0.2-7.sdeb) would go into /usr/src/debian/sdeb/jdk_1.0.2-7 It would look like: /usr/src/debian/sdeb/jdk_1.0.2-7 /usr/src/debian/sdeb/jdk_1.0.2-7/debian /usr/src/debian/sdeb/jdk_1.0.2-7/debian/control /usr/src/debian/sdeb/jdk_1.0.2-7/debian/rules /usr/src/debian/sdeb/jdk_1.0.2-7/debian/..... /usr/src/debian/sdeb/jdk_1.0.2-7/patches/ /usr/src/debian/sdeb/patches/patch-common.1 /usr/src/debian/sdeb/patches/patch-shared.1 /usr/src/debian/sdeb/patches/patch-static.1 A quick overview of the build process: We might add another phony target in the debian/rules makefile called unpack: ie. (I cheated by only doing the static part of the package below) unpack: # Unpack upstream sources into ./java tar xzvf /usr/src/debian/upsdeb/jdk_1.0.2-2/linux.jdk-1.0.2-pl2.commo n.tar.gz tar xzvf /usr/src/debian/upsdeb/jdk_1.0.2-2/linux.jdk-1.0.2-pl2.stati c-motif.tar.gz # Do our patches patch -p0 patches/patch-common.1 patch -p0 patches/patch-static.1 binary-arch: checkroot unpack build $(checkdir) .... code to build package I hope that this demonstrates to people that the changes needed are extremely minimal. Another thing I should add: before I was advocating the use of a SrcDepends: field in the .sdeb package. That probably isn't necessary if dpkg does everything. Just add all the upstream sources as standard dependencies. ie. (in jdk_1.0.2-7.sdeb) Depends: jdk.upsdeb (=1.0.2-2), debmake (>=3.3.1) ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ Upstream source Binary package On second thought, that won't exactly work, since '.'s are a valid part of a package name. Maybe something like: Depends: upsdeb/jdk (=1.0.2-2), debmake (>=3.3.1) Also, I had previously suggested that the upstream source packages might need dependencies. I don't think so anymore, since the dependencies on binary packages needed to unpack wierd upstream source formats could just reside in the .sdeb's. > There would then be a standard source unpacker script which did something > like: > > mkdir -p $UnpackDir > cd $UnpackDir > srcformat=`some-script-to-figure-out-what-it-is` > case $srcformat in > tar.gz) ... ;; > tar) ... ;; > shar) ... ;; > zip) ... ;; > arj) ... ;; > esac I'd prefer to not have a standard source unpacker script, but rather do everything "by hand" in debian/rules. Of course, debmake might choose to automatically do something like the above. :-) Cheers, - Jim
Attachment:
pgpO0jAJJKy5f.pgp
Description: PGP signature