summaryrefslogtreecommitdiff
path: root/source_repositories/glibc.mdwn
blob: e31fac6132815cbbe1abf211ad780823f0449566 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
[[!meta copyright="Copyright © 2010, 2012, 2013, 2014 Free Software Foundation,
Inc."]]

[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]

There is a repository for maintenance of [[/glibc]] for the Hurd's needs:
<http://git.savannah.gnu.org/cgit/hurd/glibc.git/>.  It's mainly used for
testing glibc's master branch, but with all the patches that we need on top of
it, and also for development and sharing of (Hurd-specific) glibc patches.

This repository uses [[TopGit]].

History: *A plan for the Hurd-specific glibc repository*, [[!message-id
"878wbp81ed.fsf@dirichlet.schwinge.homeip.net"]].


# Relation to Debian glibc

For a lot of topic branches there is a correspondence to a Debian glibc patch,
and vice-versa, which is also indicated by the Debian glibc patch files' names.

Debian glibc is based on EGLIBC 2.13 and the Savannah hurd/glibc.git one is
tracking sourceware master.

The Savannah hurd/glibc.git one does not/not yet include
[[libpthread|open_issues/libpthread]], [[open_issues/packaging_libpthread]].


# Usage

## Clone

    $ git init
    $ git remote add savannah git://git.sv.gnu.org/hurd/glibc.git
    $ git remote update
    $ tg remote --populate savannah
    tg: Remote savannah can now follow TopGit topic branches.
    tg: Populating local topic branches from remote 'savannah'...
    From git://git.sv.gnu.org/hurd/glibc
     * [new branch]      refs/top-bases/t/_dl_random -> savannah/top-bases/t/_dl_random
     * [new branch]      refs/top-bases/t/accept4 -> savannah/top-bases/t/accept4
    [...]
     * [new branch]      refs/top-bases/tschwinge/Roger_Whittaker -> savannah/top-bases/tschwinge/Roger_Whittaker
    tg: Adding branch t/_dl_random...
    tg: Adding branch t/accept4...
    [...]
    tg: Adding branch tschwinge/Roger_Whittaker...
    tg: The remote 'savannah' is now the default source of topic branches.

## Use tschwinge's Working Branch

    $ git checkout tschwinge/Roger_Whittaker

## Integrate a New Branch

A new (TopGit) branch has been published upstream:

    $ tg remote --populate savannah
    tg: Remote savannah can now follow TopGit topic branches.
    tg: Populating local topic branches from remote 'savannah'...
    remote: Counting objects: 28, done.
    remote: Compressing objects: 100% (19/19), done.
    remote: Total 20 (delta 13), reused 1 (delta 0)
    Unpacking objects: 100% (20/20), done.
    From git://git.sv.gnu.org/hurd/glibc
     * [new branch]      t/unwind-resume.c -> savannah/t/unwind-resume.c
     * [new branch]      refs/top-bases/t/unwind-resume.c -> savannah/top-bases/t/unwind-resume.c
    tg: Skipping branch t/____longjmp_chk: Already exists
    [...]
    tg: Skipping branch t/tlsdesc.sym: Already exists
    tg: Adding branch t/unwind-resume.c...
    tg: Skipping branch t/verify.h: Already exists
    tg: Skipping branch tschwinge/Roger_Whittaker: Already exists
    tg: The remote 'savannah' is now the default source of topic branches.

Make `tschwinge/Roger_Whittaker` (the current branch) depend on it:

    $ tg depend add t/unwind-resume.c
    [tschwinge/Roger_Whittaker 63f11ff] New TopGit dependency: t/unwind-resume.c
     1 files changed, 1 insertions(+), 0 deletions(-)
    tg: Updating base with t/unwind-resume.c changes...
    Auto-merging .topdeps
    Auto-merging .topmsg
    Merge made by recursive.
     nptl/sysdeps/pthread/Makefile                      |   12 ++----------
     sysdeps/gnu/Makefile                               |   18 ++++++++++++++++--
     .../pthread => sysdeps/gnu}/rt-unwind-resume.c     |    0
     .../pthread => sysdeps/gnu}/unwind-resume.c        |    4 ++--
     4 files changed, 20 insertions(+), 14 deletions(-)
     rename {nptl/sysdeps/pthread => sysdeps/gnu}/rt-unwind-resume.c (100%)
     rename {nptl/sysdeps/pthread => sysdeps/gnu}/unwind-resume.c (93%)
    tg: The tschwinge/Roger_Whittaker head is up-to-date wrt. its remote branch.
    tg: Updating tschwinge/Roger_Whittaker against new base...
    Merge made by recursive.
     nptl/sysdeps/pthread/Makefile                      |   12 ++----------
     sysdeps/gnu/Makefile                               |   18 ++++++++++++++++--
     .../pthread => sysdeps/gnu}/rt-unwind-resume.c     |    0
     .../pthread => sysdeps/gnu}/unwind-resume.c        |    4 ++--
     4 files changed, 20 insertions(+), 14 deletions(-)
     rename {nptl/sysdeps/pthread => sysdeps/gnu}/rt-unwind-resume.c (100%)
     rename {nptl/sysdeps/pthread => sysdeps/gnu}/unwind-resume.c (93%)


# Maintenance

## Tags

Occasionally push new tags from the sourceware repository to the Savannah one:

    $ git fetch sourceware
    $ git tag | grep ^glibc- | sed 's%^%tag %' | xargs git push savannah


# Open Issues

## IRC, freenode, #hurd, 2013-12-13

    <braunr> is it ok to store several patches in one topgit branch ?
    <braunr> or is it really designed for one patch per branch ?
    <braunr> fatal: ambiguous argument 'origin/youpi/tls-threadvar': unknown
      revision or path not in the working tree.
    <braunr> tschwinge: ^
    <braunr> tschwinge: does that ring a bell ?
    <tschwinge> braunr: When/how did that happen?
    <tschwinge> Has the branch been removed from the origin remote?
    <tschwinge> Yes, has been deleted (on Savannah) on 2013-09-22.
    <tschwinge> Are you somehow referencing that branch?
    <braunr> tschwinge: tg remote --populate origin
    <tschwinge> braunr: Then I'd guess that Samuel has removed that branch but
      it is still referenced in some other branch's .topdeps file.  I'll have a
      look (but don't hold your breath.)
    <braunr> tschwinge: sure