diff options
| -rw-r--r-- | meta-oe/recipes-core/systemd/systemd/format-replace-m-uclibc.patch | 402 | ||||
| -rw-r--r-- | meta-oe/recipes-core/systemd/systemd_git.bb | 8 |
2 files changed, 408 insertions, 2 deletions
diff --git a/meta-oe/recipes-core/systemd/systemd/format-replace-m-uclibc.patch b/meta-oe/recipes-core/systemd/systemd/format-replace-m-uclibc.patch new file mode 100644 index 0000000000..3b9ed31d70 --- /dev/null +++ b/meta-oe/recipes-core/systemd/systemd/format-replace-m-uclibc.patch | |||
| @@ -0,0 +1,402 @@ | |||
| 1 | Patch from Henning. %m is a glibc only thing. For uclibc we need to do it | ||
| 2 | differently. So we use static strings instead of mallocing them and free'ing | ||
| 3 | |||
| 4 | I dont know if upstream systemd have plans to make systemd work on non | ||
| 5 | glibc system libraries if not then this patch would not make sense for | ||
| 6 | upstream | ||
| 7 | |||
| 8 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 9 | |||
| 10 | Index: git/src/mount-setup.c | ||
| 11 | =================================================================== | ||
| 12 | --- git.orig/src/mount-setup.c 2011-07-03 08:24:43.892018457 -0700 | ||
| 13 | +++ git/src/mount-setup.c 2011-07-03 08:35:23.592956700 -0700 | ||
| 14 | @@ -147,10 +147,11 @@ | ||
| 15 | |||
| 16 | for (;;) { | ||
| 17 | MountPoint p; | ||
| 18 | - char *controller, *where; | ||
| 19 | + char controller[30]; | ||
| 20 | + char *where; | ||
| 21 | int enabled = false; | ||
| 22 | |||
| 23 | - if (fscanf(f, "%ms %*i %*i %i", &controller, &enabled) != 2) { | ||
| 24 | + if (fscanf(f, "%29s %*i %*i %i", controller, &enabled) != 2) { | ||
| 25 | |||
| 26 | if (feof(f)) | ||
| 27 | break; | ||
| 28 | @@ -161,12 +162,10 @@ | ||
| 29 | } | ||
| 30 | |||
| 31 | if (!enabled) { | ||
| 32 | - free(controller); | ||
| 33 | continue; | ||
| 34 | } | ||
| 35 | |||
| 36 | if (asprintf(&where, "/sys/fs/cgroup/%s", controller) < 0) { | ||
| 37 | - free(controller); | ||
| 38 | r = -ENOMEM; | ||
| 39 | goto finish; | ||
| 40 | } | ||
| 41 | @@ -180,7 +179,6 @@ | ||
| 42 | p.fatal = false; | ||
| 43 | |||
| 44 | r = mount_one(&p); | ||
| 45 | - free(controller); | ||
| 46 | free(where); | ||
| 47 | |||
| 48 | if (r < 0) | ||
| 49 | Index: git/src/socket-util.c | ||
| 50 | =================================================================== | ||
| 51 | --- git.orig/src/socket-util.c 2011-07-03 08:24:43.892018457 -0700 | ||
| 52 | +++ git/src/socket-util.c 2011-07-03 08:25:38.242098176 -0700 | ||
| 53 | @@ -192,7 +192,7 @@ | ||
| 54 | int socket_address_parse_netlink(SocketAddress *a, const char *s) { | ||
| 55 | int family; | ||
| 56 | unsigned group = 0; | ||
| 57 | - char* sfamily = NULL; | ||
| 58 | + char sfamily[50]; | ||
| 59 | assert(a); | ||
| 60 | assert(s); | ||
| 61 | |||
| 62 | @@ -200,17 +200,14 @@ | ||
| 63 | a->type = SOCK_RAW; | ||
| 64 | |||
| 65 | errno = 0; | ||
| 66 | - if (sscanf(s, "%ms %u", &sfamily, &group) < 1) | ||
| 67 | + if (sscanf(s, "%49s %u", &sfamily, &group) < 1) | ||
| 68 | return errno ? -errno : -EINVAL; | ||
| 69 | |||
| 70 | if ((family = netlink_family_from_string(sfamily)) < 0) | ||
| 71 | if (safe_atoi(sfamily, &family) < 0) { | ||
| 72 | - free(sfamily); | ||
| 73 | return -EINVAL; | ||
| 74 | } | ||
| 75 | |||
| 76 | - free(sfamily); | ||
| 77 | - | ||
| 78 | a->sockaddr.nl.nl_family = AF_NETLINK; | ||
| 79 | a->sockaddr.nl.nl_groups = group; | ||
| 80 | |||
| 81 | Index: git/src/cryptsetup-generator.c | ||
| 82 | =================================================================== | ||
| 83 | --- git.orig/src/cryptsetup-generator.c 2011-07-03 08:24:43.892018457 -0700 | ||
| 84 | +++ git/src/cryptsetup-generator.c 2011-07-03 08:25:38.252098188 -0700 | ||
| 85 | @@ -260,7 +260,7 @@ | ||
| 86 | |||
| 87 | for (;;) { | ||
| 88 | char line[LINE_MAX], *l; | ||
| 89 | - char *name = NULL, *device = NULL, *password = NULL, *options = NULL; | ||
| 90 | + char name[50], device[50], password[50], options[50] = NULL; | ||
| 91 | int k; | ||
| 92 | |||
| 93 | if (!(fgets(line, sizeof(line), f))) | ||
| 94 | @@ -272,7 +272,7 @@ | ||
| 95 | if (*l == '#' || *l == 0) | ||
| 96 | continue; | ||
| 97 | |||
| 98 | - if ((k = sscanf(l, "%ms %ms %ms %ms", &name, &device, &password, &options)) < 2 || k > 4) { | ||
| 99 | + if ((k = sscanf(l, "%s %s %s %s", &name, &device, &password, &options)) < 2 || k > 4) { | ||
| 100 | log_error("Failed to parse /etc/crypttab:%u, ignoring.", n); | ||
| 101 | r = EXIT_FAILURE; | ||
| 102 | goto next; | ||
| 103 | @@ -281,11 +281,7 @@ | ||
| 104 | if (create_disk(name, device, password, options) < 0) | ||
| 105 | r = EXIT_FAILURE; | ||
| 106 | |||
| 107 | - next: | ||
| 108 | - free(name); | ||
| 109 | - free(device); | ||
| 110 | - free(password); | ||
| 111 | - free(options); | ||
| 112 | + next:; | ||
| 113 | } | ||
| 114 | |||
| 115 | finish: | ||
| 116 | Index: git/src/swap.c | ||
| 117 | =================================================================== | ||
| 118 | --- git.orig/src/swap.c 2011-07-03 08:24:43.892018457 -0700 | ||
| 119 | +++ git/src/swap.c 2011-07-03 08:34:20.512864178 -0700 | ||
| 120 | @@ -1043,11 +1043,12 @@ | ||
| 121 | (void) fscanf(m->proc_swaps, "%*s %*s %*s %*s %*s\n"); | ||
| 122 | |||
| 123 | for (i = 1;; i++) { | ||
| 124 | - char *dev = NULL, *d; | ||
| 125 | + char *d; | ||
| 126 | + char dev[20]; | ||
| 127 | int prio = 0, k; | ||
| 128 | |||
| 129 | if ((k = fscanf(m->proc_swaps, | ||
| 130 | - "%ms " /* device/file */ | ||
| 131 | + "%19s " /* device/file */ | ||
| 132 | "%*s " /* type of swap */ | ||
| 133 | "%*s " /* swap size */ | ||
| 134 | "%*s " /* used */ | ||
| 135 | @@ -1058,12 +1059,10 @@ | ||
| 136 | break; | ||
| 137 | |||
| 138 | log_warning("Failed to parse /proc/swaps:%u.", i); | ||
| 139 | - free(dev); | ||
| 140 | continue; | ||
| 141 | } | ||
| 142 | |||
| 143 | d = cunescape(dev); | ||
| 144 | - free(dev); | ||
| 145 | |||
| 146 | if (!d) | ||
| 147 | return -ENOMEM; | ||
| 148 | Index: git/src/tmpfiles.c | ||
| 149 | =================================================================== | ||
| 150 | --- git.orig/src/tmpfiles.c 2011-07-03 08:24:43.892018457 -0700 | ||
| 151 | +++ git/src/tmpfiles.c 2011-07-03 08:25:38.272098222 -0700 | ||
| 152 | @@ -66,7 +66,7 @@ | ||
| 153 | typedef struct Item { | ||
| 154 | char type; | ||
| 155 | |||
| 156 | - char *path; | ||
| 157 | + char path[50]; | ||
| 158 | uid_t uid; | ||
| 159 | gid_t gid; | ||
| 160 | mode_t mode; | ||
| 161 | @@ -619,7 +619,6 @@ | ||
| 162 | static void item_free(Item *i) { | ||
| 163 | assert(i); | ||
| 164 | |||
| 165 | - free(i->path); | ||
| 166 | free(i); | ||
| 167 | } | ||
| 168 | |||
| 169 | @@ -654,7 +653,7 @@ | ||
| 170 | |||
| 171 | static int parse_line(const char *fname, unsigned line, const char *buffer) { | ||
| 172 | Item *i, *existing; | ||
| 173 | - char *mode = NULL, *user = NULL, *group = NULL, *age = NULL; | ||
| 174 | + char mode[50], user[50], group[50], age[50]; | ||
| 175 | Hashmap *h; | ||
| 176 | int r; | ||
| 177 | |||
| 178 | @@ -669,17 +668,17 @@ | ||
| 179 | |||
| 180 | if (sscanf(buffer, | ||
| 181 | "%c " | ||
| 182 | - "%ms " | ||
| 183 | - "%ms " | ||
| 184 | - "%ms " | ||
| 185 | - "%ms " | ||
| 186 | - "%ms", | ||
| 187 | + "%s " | ||
| 188 | + "%s " | ||
| 189 | + "%s " | ||
| 190 | + "%s " | ||
| 191 | + "%s", | ||
| 192 | &i->type, | ||
| 193 | &i->path, | ||
| 194 | - &mode, | ||
| 195 | - &user, | ||
| 196 | - &group, | ||
| 197 | - &age) < 2) { | ||
| 198 | + mode, | ||
| 199 | + user, | ||
| 200 | + group, | ||
| 201 | + age) < 2) { | ||
| 202 | log_error("[%s:%u] Syntax error.", fname, line); | ||
| 203 | r = -EIO; | ||
| 204 | goto finish; | ||
| 205 | @@ -793,11 +792,6 @@ | ||
| 206 | r = 0; | ||
| 207 | |||
| 208 | finish: | ||
| 209 | - free(user); | ||
| 210 | - free(group); | ||
| 211 | - free(mode); | ||
| 212 | - free(age); | ||
| 213 | - | ||
| 214 | if (i) | ||
| 215 | item_free(i); | ||
| 216 | |||
| 217 | Index: git/src/mount.c | ||
| 218 | =================================================================== | ||
| 219 | --- git.orig/src/mount.c 2011-07-03 08:24:43.892018457 -0700 | ||
| 220 | +++ git/src/mount.c 2011-07-03 08:33:43.112809328 -0700 | ||
| 221 | @@ -24,6 +24,7 @@ | ||
| 222 | #include <mntent.h> | ||
| 223 | #include <sys/epoll.h> | ||
| 224 | #include <signal.h> | ||
| 225 | +#include <string.h> | ||
| 226 | |||
| 227 | #include "unit.h" | ||
| 228 | #include "mount.h" | ||
| 229 | @@ -1555,7 +1556,13 @@ | ||
| 230 | static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) { | ||
| 231 | int r = 0; | ||
| 232 | unsigned i; | ||
| 233 | - char *device, *path, *options, *options2, *fstype, *d, *p, *o; | ||
| 234 | + char *d, *p, *o; | ||
| 235 | + char device[50]; | ||
| 236 | + char path[50]; | ||
| 237 | + char options[50]; | ||
| 238 | + char options2[50]; | ||
| 239 | + char fstype[50]; | ||
| 240 | + | ||
| 241 | |||
| 242 | assert(m); | ||
| 243 | |||
| 244 | @@ -1564,26 +1571,26 @@ | ||
| 245 | for (i = 1;; i++) { | ||
| 246 | int k; | ||
| 247 | |||
| 248 | - device = path = options = options2 = fstype = d = p = o = NULL; | ||
| 249 | + d = p = o = NULL; | ||
| 250 | |||
| 251 | if ((k = fscanf(m->proc_self_mountinfo, | ||
| 252 | "%*s " /* (1) mount id */ | ||
| 253 | "%*s " /* (2) parent id */ | ||
| 254 | "%*s " /* (3) major:minor */ | ||
| 255 | "%*s " /* (4) root */ | ||
| 256 | - "%ms " /* (5) mount point */ | ||
| 257 | - "%ms" /* (6) mount options */ | ||
| 258 | + "%49s " /* (5) mount point */ | ||
| 259 | + "%49s" /* (6) mount options */ | ||
| 260 | "%*[^-]" /* (7) optional fields */ | ||
| 261 | "- " /* (8) separator */ | ||
| 262 | - "%ms " /* (9) file system type */ | ||
| 263 | - "%ms" /* (10) mount source */ | ||
| 264 | - "%ms" /* (11) mount options 2 */ | ||
| 265 | + "%49s " /* (9) file system type */ | ||
| 266 | + "%49s" /* (10) mount source */ | ||
| 267 | + "%49s" /* (11) mount options 2 */ | ||
| 268 | "%*[^\n]", /* some rubbish at the end */ | ||
| 269 | - &path, | ||
| 270 | - &options, | ||
| 271 | - &fstype, | ||
| 272 | - &device, | ||
| 273 | - &options2)) != 5) { | ||
| 274 | + path, | ||
| 275 | + options, | ||
| 276 | + fstype, | ||
| 277 | + device, | ||
| 278 | + options2)) != 5) { | ||
| 279 | |||
| 280 | if (k == EOF) | ||
| 281 | break; | ||
| 282 | @@ -1607,22 +1614,12 @@ | ||
| 283 | r = k; | ||
| 284 | |||
| 285 | clean_up: | ||
| 286 | - free(device); | ||
| 287 | - free(path); | ||
| 288 | - free(options); | ||
| 289 | - free(options2); | ||
| 290 | - free(fstype); | ||
| 291 | free(d); | ||
| 292 | free(p); | ||
| 293 | free(o); | ||
| 294 | } | ||
| 295 | |||
| 296 | finish: | ||
| 297 | - free(device); | ||
| 298 | - free(path); | ||
| 299 | - free(options); | ||
| 300 | - free(options2); | ||
| 301 | - free(fstype); | ||
| 302 | free(d); | ||
| 303 | free(p); | ||
| 304 | free(o); | ||
| 305 | Index: git/src/umount.c | ||
| 306 | =================================================================== | ||
| 307 | --- git.orig/src/umount.c 2011-07-03 08:24:43.892018457 -0700 | ||
| 308 | +++ git/src/umount.c 2011-07-03 08:33:06.732755969 -0700 | ||
| 309 | @@ -60,7 +60,9 @@ | ||
| 310 | |||
| 311 | static int mount_points_list_get(MountPoint **head) { | ||
| 312 | FILE *proc_self_mountinfo; | ||
| 313 | - char *path, *p; | ||
| 314 | + char *p; | ||
| 315 | + char path[50]; | ||
| 316 | + | ||
| 317 | unsigned int i; | ||
| 318 | int r; | ||
| 319 | |||
| 320 | @@ -72,17 +74,17 @@ | ||
| 321 | for (i = 1;; i++) { | ||
| 322 | int k; | ||
| 323 | MountPoint *m; | ||
| 324 | - char *root; | ||
| 325 | + char root[50]; | ||
| 326 | bool skip_ro; | ||
| 327 | |||
| 328 | - path = p = NULL; | ||
| 329 | + p = NULL; | ||
| 330 | |||
| 331 | if ((k = fscanf(proc_self_mountinfo, | ||
| 332 | "%*s " /* (1) mount id */ | ||
| 333 | "%*s " /* (2) parent id */ | ||
| 334 | "%*s " /* (3) major:minor */ | ||
| 335 | - "%ms " /* (4) root */ | ||
| 336 | - "%ms " /* (5) mount point */ | ||
| 337 | + "%49s " /* (4) root */ | ||
| 338 | + "%49s " /* (5) mount point */ | ||
| 339 | "%*s" /* (6) mount options */ | ||
| 340 | "%*[^-]" /* (7) optional fields */ | ||
| 341 | "- " /* (8) separator */ | ||
| 342 | @@ -90,24 +92,21 @@ | ||
| 343 | "%*s" /* (10) mount source */ | ||
| 344 | "%*s" /* (11) mount options 2 */ | ||
| 345 | "%*[^\n]", /* some rubbish at the end */ | ||
| 346 | - &root, | ||
| 347 | - &path)) != 2) { | ||
| 348 | + root, | ||
| 349 | + path)) != 2) { | ||
| 350 | if (k == EOF) | ||
| 351 | break; | ||
| 352 | |||
| 353 | log_warning("Failed to parse /proc/self/mountinfo:%u.", i); | ||
| 354 | |||
| 355 | - free(path); | ||
| 356 | continue; | ||
| 357 | } | ||
| 358 | |||
| 359 | /* If we encounter a bind mount, don't try to remount | ||
| 360 | * the source dir too early */ | ||
| 361 | skip_ro = !streq(root, "/"); | ||
| 362 | - free(root); | ||
| 363 | |||
| 364 | p = cunescape(path); | ||
| 365 | - free(path); | ||
| 366 | |||
| 367 | if (!p) { | ||
| 368 | r = -ENOMEM; | ||
| 369 | @@ -152,28 +151,28 @@ | ||
| 370 | |||
| 371 | for (i = 2;; i++) { | ||
| 372 | MountPoint *swap; | ||
| 373 | - char *dev = NULL, *d; | ||
| 374 | + char *d; | ||
| 375 | + char dev[50]; | ||
| 376 | + | ||
| 377 | int k; | ||
| 378 | |||
| 379 | if ((k = fscanf(proc_swaps, | ||
| 380 | - "%ms " /* device/file */ | ||
| 381 | + "%50s " /* device/file */ | ||
| 382 | "%*s " /* type of swap */ | ||
| 383 | "%*s " /* swap size */ | ||
| 384 | "%*s " /* used */ | ||
| 385 | "%*s\n", /* priority */ | ||
| 386 | - &dev)) != 1) { | ||
| 387 | + dev)) != 1) { | ||
| 388 | |||
| 389 | if (k == EOF) | ||
| 390 | break; | ||
| 391 | |||
| 392 | log_warning("Failed to parse /proc/swaps:%u.", i); | ||
| 393 | |||
| 394 | - free(dev); | ||
| 395 | continue; | ||
| 396 | } | ||
| 397 | |||
| 398 | if (endswith(dev, "(deleted)")) { | ||
| 399 | - free(dev); | ||
| 400 | continue; | ||
| 401 | } | ||
| 402 | |||
diff --git a/meta-oe/recipes-core/systemd/systemd_git.bb b/meta-oe/recipes-core/systemd/systemd_git.bb index 66cc831f03..ebb8e7f84e 100644 --- a/meta-oe/recipes-core/systemd/systemd_git.bb +++ b/meta-oe/recipes-core/systemd/systemd_git.bb | |||
| @@ -15,7 +15,7 @@ inherit gitpkgv | |||
| 15 | PKGV = "v${GITPKGVTAG}" | 15 | PKGV = "v${GITPKGVTAG}" |
| 16 | 16 | ||
| 17 | PV = "git" | 17 | PV = "git" |
| 18 | PR = "r7" | 18 | PR = "r8" |
| 19 | 19 | ||
| 20 | inherit autotools vala | 20 | inherit autotools vala |
| 21 | 21 | ||
| @@ -23,9 +23,13 @@ SRCREV = "ef3a24de028efe885db1303b4843aba5ffd0f531" | |||
| 23 | 23 | ||
| 24 | SRC_URI = "git://anongit.freedesktop.org/systemd;protocol=git \ | 24 | SRC_URI = "git://anongit.freedesktop.org/systemd;protocol=git \ |
| 25 | file://0001-systemd-disable-xml-file-stuff-and-introspection.patch \ | 25 | file://0001-systemd-disable-xml-file-stuff-and-introspection.patch \ |
| 26 | file://paper-over-mkostemp.patch \ | ||
| 27 | file://use-nonet-for-docbook.patch \ | 26 | file://use-nonet-for-docbook.patch \ |
| 27 | ${UCLIBCPATCHES} \ | ||
| 28 | " | 28 | " |
| 29 | UCLIBCPATCHES = "" | ||
| 30 | UCLIBCPATCHES_libc-uclibc = "file://paper-over-mkostemp.patch \ | ||
| 31 | file://format-replace-m-uclibc.patch \ | ||
| 32 | " | ||
| 29 | 33 | ||
| 30 | S = "${WORKDIR}/git" | 34 | S = "${WORKDIR}/git" |
| 31 | 35 | ||
