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)); |