README.license-files
1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21 #
22 # Copyright 2008 Sun Microsystems, Inc. All rights reserved.
23 # Use is subject to license terms.
24 #
25 # ident "%Z%%M% %I% %E% SMI"
26 #
27
28 OK, so you've got approval to integrate code, and you want to know how to
29 properly communicate the license terms. What do you do next?
30
31 0. If everything is covered by a Sun copyright and the CDDL, you're done.
32
33 1. Scan the source code and extract all of the third party licenses
34 into one or more separate files.
35
36 A. In general, you'll name these files "THIRDPARTYLICENSE," and
37 you'll put one in each source directory (i.e. one per library,
38 or one per command, or one per kernel module.)
39
40 EXAMPLE: usr/src/uts/common/io/pcan/THIRDPARTYLICENSE
41
42 If this file proves unmanageable, or you're adding licenses
43 that really are independent of each other, you may instead
44 create multiple "THIRDPARTYLICENSE.foo" files, where "foo"
45 obviously corresponds to the license in question.
46
47 EXAMPLE: usr/src/lib/libsmbfs/smb/THIRDPARTYLICENSE.*
48
49 B. If you planned ahead and included graceful delimiters in your
50 source code, the THIRDPARTYLICENSE files may actually be build
51 targets in your Makefiles.
52
53 EXAMPLE: usr/src/cmd/perl/Makefile
54
55 This approach is usually overkill. But if the third party license
56 will remain unchanged while the corresponding copyright will change
57 dates frequently, then this approach can work well, because you won't
58 need to update the license files manually.
59
60 2. Give each of the license files a corresponding ".descrip" file with
61 an extremely terse explanation of the contents. Something like
62 "MJN DRIVER" or "PORTIONS OF ARCANE FUNCTIONALITY" is sufficient.
63
64 EXAMPLE: usr/src/cmd/refer/THIRDPARTYLICENSE.descrip
65
66 3. Edit usr/src/tools/opensolaris/license-list and add the full path
67 of your new license file(s).
68
69 4. Figure out which packages deliver objects that are built using the
70 new third party source, and add a reference to LICENSEFILES in the
71 pkg Makefile.
72
73 A. It's extremely rare for a package NOT to include a Sun copyright
74 statement. If your package is one of the 99 percent that should
75 have a Sun copyright, then you should append to LICENSEFILES like
76 this:
77
78 LICENSEFILES += relative/path/to/my/new/license/file
79
80 or
81
82 LICENSEFILES += \
83 path/to/first/file \
84 path/to/other/file
85
86 These paths should be relative to the pkg build directory, for
87 example relative to usr/src/pkgdefs/SUNWbcp for pkg SUNWbcp.
88
89 EXAMPLE: usr/src/pkgdefs/SUNWpsm-ipp/Makefile
90 EXAMPLE: usr/src/pkgdefs/SUNWrcmdc/Makefile
91
92 B. If, on the other hand, you do NOT want a Sun copyright, then you
93 should follow the example above, but use "=" instead of "+=" when
94 you assign the LICENSEFILES macro.
95
96 EXAMPLE: usr/src/pkgdefs/SUNWrtls/Makefile
97
98 C. It's also unusual for a package NOT to reference the CDDL. If you
99 used "+=" above, and you want the CDDL, then you don't need to do
100 anything else. It will automatically be appended.
101
102 D. If you used "+=" above, because you want the Sun copyright, but you
103 do NOT want the CDDL, then you should also include the following line:
104
105 CDDL=
106
107 in your pkg Makefile.
108
109 EXAMPLE: usr/src/pkgdefs/SUNWwpi/Makefile
110
111 E. If you used "=" above, then you will not get the CDDL unless you
112 explicitly append it to LICENSEFILES:
113
114 LICENSEFILES = \
115 path/to/first/file \
116 path/to/other/file \
117 $(CDDL)
118
119
120 EXAMPLE: usr/src/pkgdefs/SUNWhea/Makefile
121
122 F. If your package delivers ONLY header files, and has multiple different
123 copyrights or licenses, you can use
124
125 LICENSEFILES = $(LIC_IN_HDRS) \
126 path/to/most/common/copyright/file \
127 path/to/most/common/license/file
128
129 EXAMPLE: usr/src/pkgdefs/SUNWhea/Makefile
130
131 G. Empty packages: if your package delivers nothing (or, more strictly
132 speaking, nothing besides directories) you should keep the Sun
133 copyright but nix the CDDL. As a reminder, that's done simply by
134 adding the single line
135
136 CDDL=
137
138 to your pkg Makefile.
139
140 EXAMPLE: usr/src/pkgdefs/SUNWdfb.i/Makefile
141
142 H. COPYRIGHT: Don't mess with this. If you reset this, then you must
143 use the "copyright=" convention in your prototype_com. As described
144 above, LICENSEFILES is the preferred mechanism.
145
146 I. Architecture dependent license files look like this:
147
148 LICENSEFILES_i386 = path/to/i386/only/license(s)
149
150 LICENSEFILES_sparc = path/to/sparc/only/license(s)
151
152 LICENSEFILES += \
153 path/to/common/license/files(s) \
154 $(LICENSEFILES_$(MACH))
155
156 EXAMPLE: usr/src/pkgdefs/SUNWcsl/Makefile
157 EXAMPLE: usr/src/pkgdefs/SUNWbcp/Makefile
158
159