throbber
The following paper was originally presented at the
`Ninth System Administration Conference (LISA ’95)
`Monterey, California, September 18-22, 1995
`
`Patch Control Mechanism for Large Scale Software
`
`Atsushi Futakata
`Central Research Institute of Electric Power Industry (CRIEPI)
`
`For more information about USENIX Association contact:
`1. Phone:
`510 528-8649
`2. FAX:
`510 548-5738
`3. Email:
`office@usenix.org
`4. WWW URL: http://www.usenix.org
`
`Juniper Ex. 1024-p. 1
`Juniper v Finjan
`
`

`

`Patch Control Mechanism for
`Large Scale Software
`Atsushi Futakata – Central Research Institute of Electric Power Industry (CRIEPI)
`
`ABSTRACT
`
`Applying patches to large scale software is often difficult because unofficial patches and
`user modifications conflict with any ‘‘official’’ patches. Version control systems such as
`RCS[1], CVS[2], and configuration management[3,4,5] are useful solutions for this problem
`when the baseline of the software is fixed. However, an official patch that is developed
`externally changes the baseline and any local changes based on this become obsolete. Thus
`we must re-apply various unofficial patches and modifications, identify the causes of conflict,
`change or remove patches, and repeat the patch and unpatch operations.
`This paper presents a mechanism for (1) managing versions of a software package based
`on patches, (2) automating the application of unofficial patches and modifications by the user,
`and (3)
`rebuilding the package using file versions instead of
`timestamps. Using this
`mechanism, it becomes easy to apply patches and re-build software.
`
`Introduction
`We have spent a lot of time installing and
`patching large scale software packages such as the
`X11 Window System, TeX, etc.
`Installation of new
`software involves checking storage space, reading
`documentation and setting various configuration files
`correctly. This can be a non-trivial task even if the
`platform is officially supported.
`If the platform is
`not supported,
`installation becomes more compli-
`cated because changes to the source code may be
`required and tools such as Configure are not applica-
`ble. Thus software porting systems represented by
`the FreeBSD ports system[6] appear and become to
`support the installation task.
`Applying patches poses another difficult prob-
`If only official patches are applied to an
`lem:
`officially supported platform, the task is usually easy
`because the patches are well managed and cause no
`conflict. However an unsupported platform requires
`source code changes which often conflict with an
`official patch. Furthermore,
`the user may require
`many useful, unofficial patches. These may be
`patches for emergency security,
`localization (e.g.,
`japanization), machine/OS-dependencies or various
`extensions, such as Tcl/Tk has. Those patches may
`also conflict with official ones. The reason for the
`conflict is a lack of version management facilities
`for distributed development. This conflict usually
`necessitates the following operation:
`(cid:0) Remove all unofficial patches and apply the
`official one,
`(cid:0) Re-apply the unofficial patches
`and user
`modifications. If reject files are generated, the
`unofficial patch must be fixed or removed,
`(cid:0) Rebuild the software. This can take a long
`time because the above operations may cause
`unnecessary changes to timestamps.
`
`such as
`systems
`Configuration management
`Aegis[7], CMS/MMS[8] are useful for version con-
`trol and building software for multi-user develop-
`ment. They target the continuous development of the
`software and manage products based on a current
`baseline, that is a reference version of software on
`which each member of developing team fixes bugs
`and develops new functions. After each task is com-
`plete,
`all modifications
`are
`integrated and the
`modified source code becomes a new baseline for
`succeeding development. This baseline approach is
`useful for inhouse development teams.
`However, an official patch is delivered outside
`of a user’s control and it only changes the baseline.
`All modifications based on the previous version of
`the software then become obsolete. Thus if the user
`wants to apply a new official patch, all other patches
`and modifications must be rearranged and re-applied
`after the official one is applied.
`In future,
`self-adaptive software agents or
`automatic
`programming
`from very
`high
`level
`specifications may solve the problem but, for the
`present, we have no silver bullet. Thus, in order to
`solve the above problem and support patch applica-
`tion, this paper proposes a patch control mechanism
`which has the following features:
`(cid:0) version management of the whole package,
`including individual files and patches,
`(cid:0) management and control of patch application
`order,
`(cid:0) assistance with patch/unpatch operations and
`patch modification,
`(cid:0) software rebuilding according to an individual
`file version rather than a timestamp.
`
`1995 LISA IX – September 17-22, 1995 – Monterey, CA
`
`213
`
`Juniper Ex. 1024-p. 2
`Juniper v Finjan
`
`

`

`location of the patches and the versions of individual
`files. The version tree records the application order
`for unofficial patches and modifications at each
`patchlevel. When a new patch arrives, the user adds
`the patch to the VDB using the VM.
`If the user
`wants to apply this, and the result is successful, the
`VM registers
`the sequence of patches actually
`applied, to the version tree.
`the
`controls
`The
`PM (Patch Manager)
`the
`patch/unpatch operations and the building of
`software according to the version tree.
`In this sys-
`tem, all operations,
`including editing a patch file,
`applying a patch, and building a package, are per-
`formed via the PM, and the result of the operation is
`reflected in the VDB and the version tree.
`When a user applies a new official patch, the
`PM tries to apply unofficial patches which were
`applied to the last version of software.
`If one of the
`patches is rejected,
`the PM notifies the user. The
`user may then remove or edit this patch and continue
`the job. After the job finished, the PM returns the
`result of the patch application and the VM revises
`the VDB and the version tree.
`The BM (Building Manager) is an extended
`make command, invoked from the PM to build a tar-
`get according to the version of file instead of its
`timestamp. Because a new official patch forces
`patch/unpatch operations of unofficial patches and
`modifications,
`the timestamp of a file may change
`even if the contents is not altered. The VM registers
`the version of the newly generated target with the
`VDB and the version tree.
`This system manages several packages at once
`by referring to the pcm file. An entry of the pcm
`file has the following form:
`application_name:top_directory:patch_option
`Application_name is an identifier
`to be used for
`selecting a package. Top_directory is the directory
`where official patches are applied. Patch_option
`species an option to the patch (1) command. For
`example, the entry for X11R5 (X11 Window System,
`Version 11, Release 5) becomes1:
`X11R5:/X11R5:-p -s
`This means that the following command is needed to
`apply the patch.
`% cd /X11R5
`% patch -p -s <foo.patch
`
`Version Management
`In this system, changes of source codes and the
`source code itself are managed separately to make
`
`1Because of the limitation of line width, we denote the
`location of
`the X11R5 package as /X11R5 in the
`following
`examples.
`The
`actually
`location
`is
`/staff/src/X11R5 in our site.
`
`manage
`
`manage
`
`VDB
`
`Version Tree
`
`build
`software
`
`software
`
`source
`patch
`object
`modification
`
`....................................................................
`
`Patch Control Mechanism for Large Scale Software
`
`Futakata
`
`Classification of patches
`Unofficial patches may be generated by dif-
`ferent people based on different baselines. Unified
`management of these patches can be difficult and
`confusing. In this paper, we classify patches into the
`following three types and treat each differently.
`official patch
`A patch that is authorized by and distributed
`from the software developer/maintainer. The
`latest official patch number
`is the official
`software version and we call it the patchlevel.
`unofficial patch
`is widely distributed
`A patch/extension that
`but
`is not an official patch. An unofficial
`patch may be applied in various directories
`with various patch (1) options.
`modification
`A change made by the local user, which
`includes editing files, fixing bugs, changing
`configuration files, etc.
`
`System Overview
`This section presents an overview of the system
`which is an implementation of the patch control
`mechanism. This includes; (1) management of the
`three types of patch, (2) control of patch application,
`and (3) rebuilding of the software. The components
`VM (Version Manager), PM (Patch Manager), and
`BM (Build Manager) implement the three functions
`respectively. Figure 1 shows the components and
`the relation among them.
`
`USER
`
`PM
`
`get info.
`& register
`
`VM
`
`invoke
`
`BM
`
`apply
`patch
`
`Figure 1: The components of this system
`
`The VM manages information in the VDB (Ver-
`sion Database) and the version tree, which records
`information about version control for updating and
`rebuilding of the software. The VDB records the
`
`214
`
`1995 LISA IX – September 17-22, 1995 – Monterey, CA
`
`Juniper Ex. 1024-p. 3
`Juniper v Finjan
`
`

`

`Futakata
`
`Patch Control Mechanism for Large Scale Software
`
`patches independent of the baseline specified by an
`official patch. Thus each unofficial patch and
`modification has a separate version to avoid conflicts
`which may occur with any new official patch. The
`versions of these patches are managed using RCS.
`The VM manages
`the patch information,
`including the location of patches, versions of patches
`themselves and the history of patch application. The
`VM performs the following functions:
`(cid:0) generates the specified version of a software
`package or a file by applying patches automat-
`ically,
`(cid:0) registers/deletes/updates a patch,
`(cid:0) creates/updates a modification from the differ-
`ences between a modified file and its original,
`(cid:0) maintains versions of files, which are deter-
`mined by the patches which actually cause
`change.
`Information managed by the VM is recorded in
`the VDB and the version tree. The VDB consists of
`the locations and the versions of patches and the ver-
`sions of
`the individual files. The version tree
`describes the order of patch application required to
`make the specified version of software, and which
`version of each patch should be applied.
`The version of the software package itself is
`represented by a path of the version tree. For exam-
`ple, #3:@1.2,@2.1,@3.2:$1.2 means that the
`version is generated by application of an official
`patch #3, unofficial patches @1.2, @2.1, and
`@3.2, and a modification $1.2 in order. The fol-
`lowing section describes the contents of the VDB
`and the version tree.
`
`#26
`#1:/X11R5/fixes/fix-01
`#2:/X11R5/fixes/fix-02
`#3:/X11R5/fixes/fix-03
`#4:/X11R5/fixes/fix-04
`Figure 2: A part of .official file for X11R5
`
`Version Database
`The VDB consists of the four files.
`.official
`.official contains the current patchlevel
`and the locations of official patches. The first line is
`the current patchlevel of the software. The follow-
`ing lines contain a patch identifier (which is used in
`the version tree), and a corresponding patch location.
`Figure 2 is a sample of a part of a .official file.
`#26 in line 1 means that the current patchlevel is
`26. The lines 2-5 specify the location of each official
`patch. For example, line 2 means that the location of
`the official patch #1 is /X11R5/fixes/fix-01.
`.unofficial
`of
`locations
`the
`.unofficial contains
`unofficial patches and the information required to
`
`apply them. Each entry of this file has the following
`form;
`id:location:place:option
`Id is the unofficial patch identifier which is used in
`the version tree. Location is the location of the
`unofficial patch. Place is the directory in which the
`patch is applied, and option is the patch (1) options.
`In general, there is no standard method for applying
`unofficial patches, and this is a reason for the place
`and option fields. Figure 3 shows a part of .unof-
`ficial for X11R5.
`
`@1:/X11R5/fixes/Xaw-p1:/X11R5:-p0
`@2:/X11R5/fixes/Xsi-p1:/X11R5:-p0
`@3:/X11R5/fixes/Xwchar-p1:/X11R5:-p0
`@4:/X11R5/fixes/Xaw-p2:/X11R5:-p0
`Figure 3: A sample of .unofficial file for X11R5
`
`Versions of the patches are managed by RCS
`and the RCS file for each patch is located in direc-
`tory of location/RCS. A user can edit the patched
`files themselves instead of the patch because it is
`almost impossible to edit the patch directly. Changes
`to the files are reflected in the patch by the follow-
`ing process:
`(cid:0) choose the version of the software and the tar-
`get patch to be edited. For example, we
`assume that the patch is @3.1 which changes
`two files, foo.c and bar.c, and the version
`is #3:@1.2,@2.1,@3.1,
`(cid:0) apply the sequence of patches which should
`be applied in this version before applying the
`target patch. After that, make a copy of the
`patched file and apply the target patch.
`In
`this example, first, the VM applies @1.2 and
`@2.1 to the software whose patchlevel is #3.
`Next, the VM makes copies of foo.c and
`bar.c with an extension .prev. Then,
`the
`VM applies @3.1 to the software,
`(cid:0) after editing the patched files, make a new
`patch by running diff (1) against the files of
`which the VM made copies in the last step.
`In this example,
`the two diff files between
`and
`foo.c/bar.c
`are
`con-
`foo.c.prev/bar.c.prev
`catenated to a new patch, whose path name is
`the same as @3.1.
`(cid:0) check in the new patch using ci (1) . In this
`example,
`the VM runs the following com-
`mand:
`% ci -r2.1 location of @3
`in which 2 of 2.1 is the new version number
`for the patch @3.
`The VM normally uses only the release number
`of RCS. Thus a patch with version N has a revision
`N.1 in the RCS file. For example, when applying
`the version 3 of the patch @1 in the Figure 5, the
`following commands are needed:
`
`1995 LISA IX – September 17-22, 1995 – Monterey, CA
`
`215
`
`Juniper Ex. 1024-p. 4
`Juniper v Finjan
`
`

`

`Patch Control Mechanism for Large Scale Software
`
`Futakata
`
`% co -l -r3.1 /X11R5/fixes/Xaw-p1
`% cd /X11R5
`% patch -p0 </X11R5/fixes/Xaw-p1
`
`.modification
`.modification contains the locations of
`user modifications.
`There
`is
`at most
`one
`modification file per directory and the result of edit-
`ing the source is reflected in the modification file in
`the same way as unofficial patch files. Figure 4
`shows a part of .modification. The first field is
`the
`identifier of modification and the
`second
`specifies the location of the modification.
`
`$1:/X11R5/mit/config/config.patch
`$2:/X11R5/mit/lib/Xt/Xt.patch
`Figure 4: A sample of .modification file for X11R5
`
`.f_ver
`.f_ver contains the version history of the
`source and object files.
`In this system, a file has
`two different forms of version. One is the strict ver-
`sion which is indicated by the software version. The
`other is the historical version which indicates the
`history of changes by patches. The historical ver-
`sion is used instead of the file timestamp when the
`software is rebuilt. For example, the strict version
`of file foo is indicated as:
`foo.#3.{@1.1,@2.1,@3.2}.$1.2
`is 3 and
`where #3 means the official patchlevel
`@N.M means
`that
`the applied unofficial patch
`identifier is N and the version of the patch itself is
`M. $1.2 means that the version of a modification
`to foo. The historical version has the following
`form:
`foo:#1,#3:@1.1,@2.1:$1.2
`This means that foo is changed by the official
`patches #1 and #3, unofficial patches @1.1 and
`@2.1, and user modifications with version $1.2.
`.f_ver must exist in all subdirectories of the
`software source tree. An source/object entry in this
`file is updated as follows:
`(cid:0) if a patch is applied to the file, the identifier
`of the patch is added to the entry,
`(cid:0) if the version of a source file differs from the
`object file, after making the object, the object
`is given the same version as the source.
`If
`multiple sources exist, e.g., linking *.o files,
`the versions of the sources are merged and
`becomes the version of the object because it
`is made under the effect of patch applications
`to the sources. This method is described in
`the section Make Command,
`(cid:0) editing the file changes the version of the
`modification in the entry.
`If the file in the VDB is a symbolic link, the VM
`follows the link and updates the location of the file
`to be the real location.
`
`Version tree
`The version tree manages the software version
`and describes the application order of unofficial
`patches and modifications at each patchlevel. The
`version tree includes applied unofficial patches and
`modifications only. Figure 5 shows the concept of
`the version tree. #N is the patchlevel and @N.M
`and $N.M are the unofficial patch identifier and the
`modification identifier
`to be applied. A conflict
`between unofficial patches causes branching or
`modification of a patch.
`The .vtree, which is located in the top direc-
`tory of the software, records the version tree as the
`collection of the following form;
`official_id:unofficial_ids:modifications
`For example, the path A in figure 5 is described as
`‘‘#1:@1.1,@2.1,@4.1:$1.1,...’’ and the path branched
`‘‘#1:@1.1,@3.1,
`from @1.1 is
`described
`as
`@4.2,...’’.
`
`#1
`
`#2
`
`#3
`
`patchlevel
`.......
`
`#4
`
`@1.1 .......
`
`@1.2 .......
`
`@2.2 .......
`
`unofficial patch
`
`@1.1
`
`@2.1
`
`@4.1
`
`modification
`$1.1 A.......
`
`@3.1
`
`@4.2
`
`.......
`
`Figure 5: The concept of version tree
`
`Patch Control Mechanism
`control
`section
`describes
`the
`patch
`This
`mechanism based on the version tree. The PM stores
`source files
`to which only official patches are
`applied. The unofficial patches/modifications are
`applied on demand when editing the latest version
`sources, rebuilding the software, etc.
`The PM provides an asynchronous way to
`apply a patch or to rebuild a software package by
`exchanging information with the user via e-mail.
`Once the PM is invoked, the PM reports conflicts or
`compilation failure to the user via e-mail. After the
`user edits files or abandons the patch, the user only
`sends a simple command with the file contents if it
`is needed. The PM accept the following commands:
`(cid:0) edit [file | id] (ver)
`edit the file or a patch whose identifier is id in
`the software version ver.
`In the PM interface,
`
`216
`
`1995 LISA IX – September 17-22, 1995 – Monterey, CA
`
`Juniper Ex. 1024-p. 5
`Juniper v Finjan
`
`

`

`Futakata
`
`Patch Control Mechanism for Large Scale Software
`
`a user can specify the ver in the form given in
`the version tree, or as the entry number in the
`version tree which the user can obtain by
`sending the command scan -v. This causes a
`change
`to
`an
`unofficial
`patch
`or
`a
`modification.
`(cid:0) add [-o |-u] patch_info
`register an official/unofficial patch with the
`patch_info. The patch_info has
`the same
`form as in .official or .unofficial
`without the identifier. The identifier is added
`by the VM.
`(cid:0) scan [-v |-o |-u |-m]
`show the contents of .vtree, .offi-
`cial, .unofficial, or .modifica-
`tion.
`(cid:0) show id (ver)
`show the contents of patch whose identifier is
`id in the software version ver. If the ver is
`omitted, show shows the patch that has been
`applied in the current version of software, or
`the latest version of the patch if the current
`version of software does not include this.
`(cid:0) apply id (ver)
`If the
`apply a patch whose identifier is id.
`patch is an official patch, a user does not need
`to specify the ver. If the patch is an unofficial
`patch or
`a modification,
`the user must
`specifies the ver as the full path form. Pro-
`the apply function is described
`cessing of
`later.
`(cid:0) make [-T] (ver)
`rebuild a software package whose version is
`ver, or the current version if the ver is omit-
`ted. If a user wants to rebuild the package
`according to timestamps, -T option is neces-
`sary.
`(cid:0) grep [-o |-u |-m |-a] string
`grep string from official patches, unofficial
`patches, modifications and all patches.
`When apply or make is
`the PM
`issued,
`interacts with the user. When applying a new official
`patch, the PM performs the following actions:
`1. apply the official patch.
`2. make a sequence of unofficial patches to be
`applied. The PM extracts the last sequence
`from the version tree and notifies the user via
`e-mail. The user can remove several patches
`or change the application order. The user then
`replies by e-mail.
`3. apply unofficial patches and any modifications
`in order.
`If no reject files are generated by
`patch (1), step (3) is done. Otherwise the PM
`suspends the job and sends the patched file
`with the rejected part embedded at a suitable
`place to the user via e-mail. The user must
`decide either to edit and apply this patch or to
`abandon this.
`If the user decides to abandon,
`the PM strips this patch from other files to
`
`which the patch was applied and the PM
`applies a next patch. The user can edit
`it
`before replying to the PM. In this operation,
`the user can refer to the whole patch by send-
`ing a command to the PM. When the all
`replies are gathered, the PM replaces the parts
`of the patch and reflects the change in the
`RCS file using ci (1). After that, the VM tries
`to apply the next patch.
`If user
`4. create a new entry in the version tree.
`wants to rebuild the software, the PM invokes
`the BM.
`the unofficial patches and the
`5. unpatch all
`modifications.
`the user
`When applying a new unofficial patch,
`should specify the version tree entry which includes
`the new patch. This new version tree entry is
`registered if the application process has terminated
`successfully. The other operations are similar to the
`above case for official patches.
`If reject files are generated, the PM sends e-
`mail to the user per reject file. Figure 6 is a sample
`of
`the e-mail, which notifies that application of
`unofficial patch $1.1 has been failed in sun.cf2.
`The body of e-mail is the contents of sun.cf and
`the rejected file is embedded in it.
`
`To: futakata
`Subject: REJECTION $1.1: sun.cf
`From: PCM <pcm@denken.or.jp>
`
`<Contents of sun.cf continue.>
`......
`Figure 6: A head of e-mail which notifies the rejec-
`tion
`
`After receiving the e-mail, the user can choose from
`the following three actions:
`(cid:0) replace: replaces a part of patch/modification
`by this file,
`(cid:0) delete: deletes this patch from the version tree
`entry,
`(cid:0) abort: aborts the job, recovers the software
`and terminates the PM.
`If the user chooses replace, the user must reply the
`e-mail like Figure 7 to the PM after editing the file
`in the original e-mail. The first
`line of the mail
`body is the action that the user chosen, and the rest
`of the body is the file to be replaced.
`If the user
`chooses delete or abort, only the action is needed in
`the body. After receiving all replies from the user,
`the PM extracts a new patch from the replies by the
`same manner described in the
`explanation of
`.unofficial, and applies the new patch instead
`of the original patch and revises the version of the
`patch.
`
`2We abridge the file name in the subject field of Figure
`6 for convenience of display. The subject of real e-mail
`contains the full path name of the file.
`
`1995 LISA IX – September 17-22, 1995 – Monterey, CA
`
`217
`
`Juniper Ex. 1024-p. 6
`Juniper v Finjan
`
`

`

`Patch Control Mechanism for Large Scale Software
`
`Futakata
`
`To: pcm@denken.or.jp
`Subject: RE: REJECTION $1.1: sun.cf
`From: futakata@denken.or.jp
`
`replace
`<Contents of new sun.cf continue.>
`......
`Figure 7: A head of reply mail with the action
`replace
`
`Make Command
`to
`The PM often causes needless changes
`timestamps and confuses timestamp-based traditional
`make (1) commands. Thus we developed the BM,
`which is based on the GNU make command, to per-
`form actions according to the historical file version,
`i.e., when the historical versions of source files are
`not included in the version of the object, the BM
`rebuilds the object. After that, the BM revises the
`version of object by the merged version of sources
`because the object is made under the effect of all
`patches applied to the sources.
`To compare versions, the BM treats the version
`as an ordered sequence of patches. Thus a version A
`includes a version B if and only if all patches in the
`B is appeared in the A, and an unified version of A
`and B does not causes inconsistency of the applica-
`tion
`order.
`For
`example,
`the
`version
`#1:$1.1,$2.1,$3.1 does
`not
`include
`the
`#1:$3.1,$1.1.
`After building objects, the BM sends the result
`to the VM and the VM updates the historical ver-
`sions of the objects.
`
`Experiment
`We have tested this
`system for applying
`patches to the X11R5.
`In this experiment,
`the
`number of official patches is 26 and the number of
`unofficial ones is 12 including internationalization
`patches for libraries Xaw, Xsi and Xwchar. We also
`modify configuration files
`in the /X11R5/mit
`directory
`and
`several
`files
`in
`/config
`/X11R5/mit/lib/Xt. Figure 8 is a head part of
`the version tree of this experiment.
`After
`the official patch #3 is applied, 3
`unofficial patches are issued and we apply them and
`rebuild the X11R5. There is no problem in this
`phase. When the #6 is applied, the internationaliza-
`tion mechanism of X11R5 is changed and @1.1 and
`@2.1 become obsolete. The PM then sends e-mail
`telling us that reject files are generated. We remove
`the patches and do not rebuild X11R5. After #8, a
`new unofficial patch @4.1 is issued and we rebuild
`after applying @4.1.
`This experiment shows that it is easy to control
`the patch/unpatch operations and to find conflicts
`between official patches and unofficial ones.
`
`#0::$1.1,$2.1,$3.1,$4.1
`#1::$1.1,$2.1,$3.1.$4.1
`#2::$1.1,$2.1,$3.2.$4.1
`#3:@1.1.@2.1,@3.1:$1.2,$2.1,$3.3,$4.1
`#4:@1.1,@2.1,@3.1:$1.2,$2.1,$3.3,$4.1
`#5:@1.1,@2.1,@3.1:$1.2,$2.1,$3.3,$4.1
`#6:@3.1:$1.2,$2.1,$3.3,$4.1
`#7:@3.1:$1.2,$2.1,$3.3,$4.1
`#8:@3.1,@4.1:$1.3,$2.1,$3.3,$4.1
`Figure 8: A part of the version tree for X11R5
`
`Conclusion
`In this paper, we presented a control mechan-
`ism for applying patches and confirmed that this sys-
`tem works well. However, even if the patches are
`successfully applied,
`rebuilding the software still
`takes a long time. In order to reduce the rebuilding
`time, we have tried to develop a mechanism for
`analyzing the dependency between makefiles and a
`distributed make mechanism based on it.
`
`Availability
`The system which we presents in this paper
`will be available via WWW from http://www
`.denken.or.jp/people/cirl/futakata.
`
`Acknowledgements
`the
`I would like to thank Paul Anderson at
`Univ. of Edinburgh for his useful advice on drafts of
`this paper. My thanks also go to Yasusi Sinohara
`and Shouichi Matsui at the CRIEPI for their sugges-
`tion in development of this system.
`
`Author Information
`Atsushi Futakata graduated from the Tokyo
`Institute of Technology at Tokyo in 1987. He has
`made
`studies
`of
`automatic
`programming
`and
`management of distributed information system in the
`Central Research Institute of Electric Power Indus-
`try. He is now working on the CSCW environment
`for researchers.
`Information Science
`Reach him via mail at:
`and
`Information
`Department,
`Communication
`Research Laboratory, CRIEPI, 11-1 Iwado-kita 2-
`chome Komae-shi Tokyo 201, JAPAN
`His e-mail address is futakata@denken.or.jp .
`
`References
`[1] Tichy, W. F.: ‘‘RCS - A System for Version
`Control’’, Software-Practice & Experience, Vol.
`15, No. 7, 1985.
`[2] Berliner, B.: ‘‘CVS II: Parallelizing Software
`Development’’,
`included in the CVS ver.1.3
`package, 1995.
`Software
`of
`‘‘Elements
`[3] Bersoff,
`E.:
`Configuration Management’’, IEEE Transaction
`
`218
`
`1995 LISA IX – September 17-22, 1995 – Monterey, CA
`
`Juniper Ex. 1024-p. 7
`Juniper v Finjan
`
`

`

`Futakata
`
`Patch Control Mechanism for Large Scale Software
`
`of Software Engineering, Vol. SE-10, No. 1,
`1984.
`[4] Whitgift, D.: Methods and Tools for Software
`Configuration Management, John Wiley and
`Sons, 1991.
`‘‘comp.software.config-mgmt FAQ
`[5] Eaton, D.:
`version
`1.12’’,
`posted
`to
`the
`comp.
`software.config-mgmt, 1995.
`[6] Palmer, G. and Hubbard, J. K.: ‘‘The FreeBSD
`Ports FAQ file version 1.1’’,
`included in the
`FreeBSD rel.2.0.5 package, 1995.
`[7] Miller, P.: ‘‘Aegis: A project Change Supervi-
`sor User Guide’’, included in the aegis ver.2.1
`package, 1993.
`[8] DEC: CASE Environment of DEC: COHESION
`- COHESION handbook rev.1, DEC, 1991.
`
`1995 LISA IX – September 17-22, 1995 – Monterey, CA
`
`219
`
`Juniper Ex. 1024-p. 8
`Juniper v Finjan
`
`

`

`220
`
`1995 LISA IX – September 17-22, 1995 – Monterey, CA
`
`Juniper Ex. 1024-p. 9
`Juniper v Finjan
`
`

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket