blob: 5939f6eeba791c1fe28fadaf94d1eda934f7871e [file] [log] [blame]
mjnelson99dda202008-04-11 10:47:16 -07001#
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.
8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9# or
10# See the License for the specific language governing permissions
11# and limitations under the License.
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]
Mark J. Nelson5084e752010-08-02 16:37:22 -060021
mjnelson99dda202008-04-11 10:47:16 -070022#
Mark J. Nelson5084e752010-08-02 16:37:22 -060023# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
mjnelson99dda202008-04-11 10:47:16 -070024#
mjnelson99dda202008-04-11 10:47:16 -070025
26OK, so you've got approval to integrate code, and you want to know how to
27properly communicate the license terms. What do you do next?
Mark J. Nelson5084e752010-08-02 16:37:22 -0600290. Determine whether your code should be covered by Oracle copyright,
30 CDDL, and/or a third party license. If only Oracle copyright and/or
31 CDDL, then skip to step 3.
mjnelson99dda202008-04-11 10:47:16 -070032
331. Scan the source code and extract all of the third party licenses
34 into one or more separate files.
Mark J. Nelson5084e752010-08-02 16:37:22 -060036 This information may be present in comments in source code, or may
37 already be provided as separate files. For example, GPL license
38 terms are often found in files named "COPYING."
mjnelson99dda202008-04-11 10:47:16 -070040 A. In general, you'll name these files "THIRDPARTYLICENSE," and
41 you'll put one in each source directory (i.e. one per library,
42 or one per command, or one per kernel module.)
44 EXAMPLE: usr/src/uts/common/io/pcan/THIRDPARTYLICENSE
46 If this file proves unmanageable, or you're adding licenses
47 that really are independent of each other, you may instead
48 create multiple "" files, where "foo"
49 obviously corresponds to the license in question.
51 EXAMPLE: usr/src/lib/libsmbfs/smb/THIRDPARTYLICENSE.*
53 B. If you planned ahead and included graceful delimiters in your
54 source code, the THIRDPARTYLICENSE files may actually be build
55 targets in your Makefiles.
57 EXAMPLE: usr/src/cmd/perl/Makefile
Mark J. Nelson5084e752010-08-02 16:37:22 -060059 If the corresponding copyright will change dates frequently,
60 then this approach can work well, because you won't need to
61 update the license files manually.
63 If you do this, then your license file should be a dependency of
64 both the all and install targets, and should be removed via
65 clobber, usually by way of CLOBBERFILES.
mjnelson99dda202008-04-11 10:47:16 -070066
672. Give each of the license files a corresponding ".descrip" file with
Mark J. Nelson5084e752010-08-02 16:37:22 -060068 a terse explanation of the contents. Something like "MJN DRIVER"
mjnelson99dda202008-04-11 10:47:16 -070070
71 EXAMPLE: usr/src/cmd/refer/THIRDPARTYLICENSE.descrip
Mark J. Nelson5084e752010-08-02 16:37:22 -0600733. Figure out which packages deliver objects that are built using the
Liane Prazaead1f932010-03-02 19:29:26 -070074 new source, and add license actions to the package manifest(s).
mjnelson99dda202008-04-11 10:47:16 -070075
76 A. It's extremely rare for a package NOT to include a Sun copyright
Liane Prazaead1f932010-03-02 19:29:26 -070077 and CDDL. If your package is one of the 99 percent that should
78 have a Sun copyright and CDDL, then your package should have license
79 actions like this:
mjnelson99dda202008-04-11 10:47:16 -070080
Liane Prazaead1f932010-03-02 19:29:26 -070081 license lic_CDDL license=lic_CDDL
82 license cr_Sun license=cr_Sun
mjnelson99dda202008-04-11 10:47:16 -070083
Liane Prazaead1f932010-03-02 19:29:26 -070084 B. If your package delivers ONLY header files, and has multiple different
mjnelson99dda202008-04-11 10:47:16 -070085 copyrights or licenses, you can use
Liane Prazaead1f932010-03-02 19:29:26 -070087 license license_in_headers license=license_in_headers
Mark J. Nelson5084e752010-08-02 16:37:22 -060088 license path/to/most/common/copyright/file \
89 license=path/to/most/common/copyright/file
90 license path/to/most/common/license/file \
91 license=path/to/most/common/license/file
mjnelson99dda202008-04-11 10:47:16 -070092
Liane Prazaead1f932010-03-02 19:29:26 -070093 C. For your new license files, the path you use in your license
Mark J. Nelson5084e752010-08-02 16:37:22 -060094 actions should be relative to ${CODEMGR_WS}.
mjnelson99dda202008-04-11 10:47:16 -070095
Liane Prazaead1f932010-03-02 19:29:26 -070096 D. Empty packages: if your package delivers nothing (or, more strictly
97 speaking, nothing besides directories) you should include the Sun
98 copyright but not the CDDL.
mjnelson99dda202008-04-11 10:47:16 -070099
Liane Prazaead1f932010-03-02 19:29:26 -0700100 E. As with any other action that is architecture dependent, license
101 actions may be preceded by $(blah_ONLY), where "blah" corresponds
102 to $(uname -p).
Mark J. Nelson5084e752010-08-02 16:37:22 -0600103
104 If you don't add the appropriate license actions to package
105 manifests, then your license and description files will show up as
106 unreferenced in the build.