Fix bug in .deb creation system

This commit is contained in:
rdb 2009-09-06 13:54:30 +00:00
parent 1bc9a8ef20
commit a797a5fdfc

View File

@ -54,36 +54,32 @@ class InstallerMaker:
# Create a control.tar.gz file in memory
controltargz = CachedFile()
controltarfile = tarfile.TarFile.gzopen("control.tar.gz", "w", controltargz)
controltarfile = tarfile.TarFile.gzopen("control.tar.gz", "w", controltargz, 9)
controltarfile.add(os.path.join(tempdir, "control"), "control")
controltarfile.close()
os.remove(os.path.join(tempdir, "control"))
# Create the data.tar.gz file in the temporary directory
datatarfile = tarfile.TarFile.gzopen(os.path.join(tempdir, "data.tar.gz"), "w")
datatargz = CachedFile()
datatarfile = tarfile.TarFile.gzopen("data.tar.gz", "w", datatargz, 9)
datatarfile.add(tempdir + "/usr", "/usr")
datatarfile.close()
# Open the deb file and write to it. It's actually
# just an AR file, which is very easy to make.
modtime = str(int(time.time())).ljust(11)
modtime = int(time.time())
if os.path.isfile(self.shortname + ".deb"):
os.remove(self.shortname + ".deb")
debfile = open(self.shortname + ".deb", "wb")
debfile.write("!<arch>\x0A")
debfile.write("debian-binary %s 0 0 100644 4 \x60\x0A" % modtime)
debfile.write("debian-binary %-12lu0 0 100644 %-10ld\x60\x0A" % (modtime, 4))
debfile.write("2.0\x0A")
debfile.write("control.tar.gz %s 0 0 100644 %s \x60\x0A" % (modtime, str(len(controltargz.str)).ljust(9)))
debfile.write("control.tar.gz %-12lu0 0 100644 %-10ld\x60\x0A" % (modtime, len(controltargz.str)))
debfile.write(controltargz.str)
debfile.write("data.tar.gz %s 0 0 100644 %s \x60\x0A" % (modtime, str(os.path.getsize(os.path.join(tempdir, "data.tar.gz"))).ljust(9)))
# Copy everything from data.tar.gz to the deb file megabyte by megabyte.
datatargz = open(os.path.join(tempdir, "data.tar.gz"), "rb")
data = datatargz.read(1024 * 1024)
while data != "":
debfile.write(data)
data = datatargz.read(1024 * 1024)
datatargz.close()
if (len(controltargz.str) & 1): debfile.write("\x0A")
debfile.write("data.tar.gz %-12lu0 0 100644 %-10ld\x60\x0A" % (modtime, len(datatargz.str)))
debfile.write(datatargz.str)
if (len(datatargz.str) & 1): debfile.write("\x0A")
debfile.close()
shutil.rmtree(tempdir)