Gentoo Archives: gentoo-commits

From: Fabian Groffen <grobian@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage-utils:master commit in: /
Date: Sat, 28 Sep 2019 13:06:11
Message-Id: 1569675913.03912c73fb68cdfe6f45f26fc4f5efd099e41262.grobian@gentoo
1 commit: 03912c73fb68cdfe6f45f26fc4f5efd099e41262
2 Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
3 AuthorDate: Sat Sep 28 13:05:13 2019 +0000
4 Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
5 CommitDate: Sat Sep 28 13:05:13 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=03912c73
7
8 qpkg: fix tbz2 xpak generation
9
10 The xpak footer was missing causing files not to contain their metadata
11 (even though present in the file).
12
13 Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
14
15 qpkg.c | 23 ++++++++++++++++++-----
16 1 file changed, 18 insertions(+), 5 deletions(-)
17
18 diff --git a/qpkg.c b/qpkg.c
19 index 85e0940..0ac6e92 100644
20 --- a/qpkg.c
21 +++ b/qpkg.c
22 @@ -105,12 +105,11 @@ qpkg_clean_dir(char *dirp, set *vdb)
23 if ((st.st_size / KILOBYTE) > 1000)
24 disp_units = MEGABYTE;
25 num_all_bytes += st.st_size;
26 - qprintf(" %s[%s%s %3s %s %s%s]%s %s%s/%s%s\n",
27 - DKBLUE, NORM, GREEN,
28 + qprintf(" %s[%s %3s %s %s] %s%s%s\n",
29 + DKBLUE, GREEN,
30 make_human_readable_str(st.st_size, 1, disp_units),
31 - disp_units == MEGABYTE ? "M" : "K",
32 - NORM, DKBLUE, NORM, CYAN,
33 - basename(dirp), fnames[i]->d_name, NORM);
34 + disp_units == MEGABYTE ? "MiB" : "KiB",
35 + DKBLUE, BLUE, fnames[i]->d_name, NORM);
36 }
37 if (!pretend)
38 unlink(buf);
39 @@ -211,6 +210,7 @@ qpkg_make(depend_atom *atom)
40 char filelist[BUFSIZE + 32];
41 char tbz2[BUFSIZE + 32];
42 size_t buflen;
43 + size_t xpaksize;
44 char *buf;
45 int i;
46 char *xpak_argv[2];
47 @@ -286,12 +286,25 @@ qpkg_make(depend_atom *atom)
48 }
49 pclose(fp);
50
51 + /* get offset where xpak will start */
52 + stat(tbz2, &st);
53 + xpaksize = st.st_size;
54 +
55 snprintf(buf, buflen, "%s/%s/%s",
56 portvdb, atom->CATEGORY, atom_to_pvr(atom));
57 xpak_argv[0] = buf;
58 xpak_argv[1] = NULL;
59 xpak_create(AT_FDCWD, tbz2, 1, xpak_argv, 1, verbose);
60
61 + stat(tbz2, &st);
62 +
63 + /* save tbz2 tail: OOOOSTOP */
64 + fp = fopen(tbz2, "a");
65 + WRITE_BE_INT32(buf, st.st_size - xpaksize);
66 + fwrite(buf, 1, 4, fp);
67 + fwrite("STOP", 1, 4, fp);
68 + fclose(fp);
69 +
70 unlink(filelist);
71
72 snprintf(buf, buflen, "%s/%s.tbz2", qpkg_bindir, atom_to_pvr(atom));