mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-23 04:23:08 +00:00
Update lang/ruby-devel to the latest snapshot as of 2002-11-22.
Add a DEBUG knob here too.
This commit is contained in:
parent
2f07bc93f4
commit
58a1c86076
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=70742
@ -121,9 +121,9 @@ RUBY?= ${LOCALBASE}/bin/${RUBY_NAME}
|
||||
.if defined(RUBY_VER) && ${RUBY_VER} == 1.7
|
||||
RUBY_VERSION?= 1.7.3
|
||||
RUBY_PORT?= lang/ruby${RUBY_R}-devel
|
||||
RUBY_DISTVERSION?= ${RUBY_VERSION}-2002.11.14
|
||||
RUBY_DISTVERSION?= ${RUBY_VERSION}-2002.11.22
|
||||
#RUBY_PATCHFILES?= ruby-${RUBY_DISTVERSION}-yyyy.mm.dd.diff.bz2
|
||||
RUBY_PORTVERSION?= ${RUBY_VERSION}.2002.11.14
|
||||
RUBY_PORTVERSION?= ${RUBY_VERSION}.2002.11.22
|
||||
.else
|
||||
RUBY_VERSION?= 1.6.8
|
||||
RUBY_DISTVERSION?= ${RUBY_VERSION}-preview2
|
||||
|
@ -7,7 +7,6 @@
|
||||
|
||||
PORTNAME= ruby${RUBY_R}
|
||||
PORTVERSION= ${RUBY_PORTVERSION}
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= lang ruby ipv6
|
||||
MASTER_SITES= ${MASTER_SITE_RUBY} \
|
||||
${ONIGURUMA_MASTER_SITES:S,$,:oniguruma,}
|
||||
@ -47,7 +46,12 @@ GNU_CONFIGURE= yes
|
||||
WRKSRC= ${RUBY_WRKSRC}
|
||||
CONFIGURE_ARGS= ${RUBY_CONFIGURE_ARGS} \
|
||||
--enable-shared
|
||||
MAKE_ENV= LANG=C # prevent bison 1.33 w/ gettext 0.10.35 from coredumping
|
||||
|
||||
.if defined(DEBUG)
|
||||
CFLAGS+= -g
|
||||
STRIP= # none
|
||||
.endif
|
||||
|
||||
MAKE_ARGS= -j3
|
||||
INSTALLS_SHLIB= yes
|
||||
MAN1= ruby${_RUBY_SUFFIX}.1
|
||||
@ -77,6 +81,7 @@ PLIST_SUB+= IF_DEFAULT=${IF_DEFAULT} \
|
||||
RUBYLIB=${RUBYLIB}
|
||||
|
||||
INSTALLED_SCRIPTS= ${PREFIX}/bin/irb \
|
||||
${PREFIX}/bin/erb \
|
||||
${PREFIX}/bin/h2rb
|
||||
|
||||
OBSOLETED_MODULES= dl \
|
||||
@ -92,6 +97,7 @@ OBSOLETED_MODULES= dl \
|
||||
uri
|
||||
|
||||
post-extract:
|
||||
${MV} ${WRKSRC}/ext/dl/h2rb ${WRKSRC}/bin/
|
||||
.if defined(WITH_ONIGURUMA)
|
||||
${TAR} -zxvf ${DISTDIR}/${DIST_SUBDIR}/${ONIGURUMA_DISTFILE} -C ${WRKDIR}
|
||||
.endif
|
||||
@ -113,22 +119,15 @@ pre-install:
|
||||
${RM} -f ${RUBY_WITHOUT_SUFFIX}${RUBY_R} \
|
||||
${PREFIX}/man/man1/ruby${RUBY_R}.1 \
|
||||
${PREFIX}/man/man1/ruby${RUBY_R}.1.gz
|
||||
for f in ${INSTALLED_SCRIPTS}; do \
|
||||
${RM} -f $${f}${RUBY_R}; \
|
||||
done
|
||||
|
||||
post-install:
|
||||
.if defined(STRIP) && ${STRIP} == -s
|
||||
strip ${RUBY}
|
||||
${STRIP_CMD} ${RUBY}
|
||||
.endif
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/ext/dl/h2rb ${PREFIX}/bin/
|
||||
.if ${RUBY_VER} == ${RUBY_DEFAULT_VER}
|
||||
${MV} -f ${RUBY_WITHOUT_SUFFIX}${RUBY_R} ${RUBY_WITH_SUFFIX}
|
||||
${MV} -f ${PREFIX}/man/man1/ruby${RUBY_R}.1 ${PREFIX}/man/man1/ruby${_RUBY_SUFFIX}.1
|
||||
.endif
|
||||
for f in ${INSTALLED_SCRIPTS}; do \
|
||||
${MV} -f $${f} $${f}${_RUBY_SUFFIX}; \
|
||||
done
|
||||
if [ -x ${RUBY_WITHOUT_SUFFIX}${RUBY_DEFAULT_SUFFIX}${RUBY_R} ]; then \
|
||||
${LN} -fs ${RUBY_WITHOUT_SUFFIX}${RUBY_DEFAULT_SUFFIX}${RUBY_R} ${RUBY_WITHOUT_SUFFIX}${RUBY_R}; \
|
||||
${LN} -fs ruby${RUBY_DEFAULT_SUFFIX}${RUBY_R}.1${MANEXT} ${PREFIX}/man/man1/ruby${RUBY_R}.1${MANEXT}; \
|
||||
@ -146,18 +145,6 @@ post-install:
|
||||
fi
|
||||
.endif
|
||||
${LDCONFIG} -m ${PREFIX}/lib
|
||||
.for f in ${INSTALLED_SCRIPTS}
|
||||
${RUBY_WITH_SUFFIX} ${RUBY_FLAGS} -i -p \
|
||||
-e 'if $$. == 1; ' \
|
||||
-e ' if /^#!/; ' \
|
||||
-e ' sub /^#!\s*\S*(\benv\s+)?\bruby/, "#!${RUBY_WITH_SUFFIX}";' \
|
||||
-e ' else;' \
|
||||
-e ' $$_ = "#!${RUBY_WITH_SUFFIX}\n" + $$_;' \
|
||||
-e ' end;' \
|
||||
-e 'end' \
|
||||
${f}${_RUBY_SUFFIX}
|
||||
${CHMOD} ${BINMODE} ${f}${_RUBY_SUFFIX}
|
||||
.endfor
|
||||
${MKDIR} ${RUBY_ELISPDIR}
|
||||
${TOUCH} ${RUBY_ELISPDIR}/.keep_me
|
||||
${MKDIR} ${RUBY_EXAMPLESDIR}
|
||||
|
@ -1,2 +1,2 @@
|
||||
MD5 (ruby/ruby-1.7.3-2002.11.14.tar.bz2) = 9e1978a64c23acc5ee754e7b9f1e0627
|
||||
MD5 (ruby/ruby-1.7.3-2002.11.22.tar.bz2) = fafe9cbd17e49dbf356710bc5751d78a
|
||||
MD5 (ruby/onigd20020424.tar.gz) = d5e6505aa776378a58cdb0fd4ef9cdc0
|
||||
|
33
lang/ruby-devel/files/patch-mkmf.rb
Normal file
33
lang/ruby-devel/files/patch-mkmf.rb
Normal file
@ -0,0 +1,33 @@
|
||||
Index: lib/mkmf.rb
|
||||
===================================================================
|
||||
RCS file: /src/ruby/lib/mkmf.rb,v
|
||||
retrieving revision 1.116
|
||||
diff -u -1 -r1.116 mkmf.rb
|
||||
--- lib/mkmf.rb 14 Nov 2002 13:51:19 -0000 1.116
|
||||
+++ lib/mkmf.rb 22 Nov 2002 12:38:13 -0000
|
||||
@@ -688,7 +688,6 @@
|
||||
mfile.print %{
|
||||
-all: $(DLLIB)
|
||||
+CLEANLIBS = "$(TARGET).{lib,exp,il?,tds,map}" $(DLLIB)
|
||||
+CLEANOBJS = "*.{#{$OBJEXT},#{$LIBEXT},s[ol],pdb,bak}"
|
||||
|
||||
-clean::
|
||||
- @$(RM) "$(TARGET).{lib,exp,il?,tds,map}" $(DLLIB)
|
||||
- @$(RM) "*.{#{$OBJEXT},#{$LIBEXT},s[ol],pdb,bak}"
|
||||
+all: $(DLLIB)
|
||||
}
|
||||
@@ -850,6 +849,6 @@
|
||||
CLEANINGS = "
|
||||
-clean::
|
||||
- @$(RM) $(CLEANFILES)
|
||||
+clean:
|
||||
+ @$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
|
||||
|
||||
-distclean:: clean
|
||||
+distclean: clean
|
||||
@$(RM) Makefile extconf.h conftest.* mkmf.log
|
||||
@@ -857,3 +856,3 @@
|
||||
|
||||
-realclean:: distclean
|
||||
+realclean: distclean
|
||||
"
|
@ -1,147 +0,0 @@
|
||||
Index: lib/tempfile.rb
|
||||
===================================================================
|
||||
RCS file: /src/ruby/lib/tempfile.rb,v
|
||||
retrieving revision 1.10
|
||||
retrieving revision 1.12
|
||||
diff -u -r1.10 -r1.12
|
||||
--- lib/tempfile.rb 4 Jun 2002 07:34:19 -0000 1.10
|
||||
+++ lib/tempfile.rb 18 Nov 2002 07:26:15 -0000 1.12
|
||||
@@ -1,31 +1,43 @@
|
||||
#
|
||||
-# $Id: tempfile.rb,v 1.10 2002/06/04 07:34:19 matz Exp $
|
||||
+# $Id: tempfile.rb,v 1.12 2002/11/18 07:26:15 knu Exp $
|
||||
#
|
||||
-# The class for temporary files.
|
||||
-# o creates a temporary file, which name is "basename.pid.n" with mode "w+".
|
||||
-# o Tempfile objects can be used like IO object.
|
||||
-# o with tempfile.close(true) created temporary files are removed.
|
||||
-# o created files are also removed on script termination.
|
||||
-# o with Tempfile#open, you can reopen the temporary file.
|
||||
-# o file mode of the temporary files are 0600.
|
||||
+# This is a class for managing temporary files.
|
||||
+#
|
||||
+# o Tempfile::new("basename") creates a temporary file whose name is
|
||||
+# "basename.pid.n" and opens with mode "w+".
|
||||
+# o A Tempfile object can be treated as an IO object.
|
||||
+# o The temporary directory is determined by ENV['TMPDIR'],
|
||||
+# ENV['TMP'], and ENV['TEMP'] in the order named, and if none of
|
||||
+# them is available, it is set to /tmp.
|
||||
+# o When $SAFE > 0, you should specify a directory via the second argument
|
||||
+# of Tempfile::new(), or it will end up finding an ENV value tainted and
|
||||
+# pick /tmp. In case you don't have it, an exception will be raised.
|
||||
+# o Tempfile#close(true) gets the temporary file removed immediately.
|
||||
+# o Otherwise, the removal is delayed until the object is finalized.
|
||||
+# o With Tempfile#open, you can reopen the temporary file.
|
||||
+# o The file mode for the temporary files is 0600.
|
||||
+# o This library is (considered to be) thread safe.
|
||||
|
||||
require 'delegate'
|
||||
|
||||
class Tempfile < SimpleDelegator
|
||||
Max_try = 10
|
||||
+ @@cleanlist = []
|
||||
|
||||
- def Tempfile.callback(path, data)
|
||||
+ def Tempfile.callback(data)
|
||||
pid = $$
|
||||
lambda{
|
||||
if pid == $$
|
||||
+ path, tmpfile, cleanlist = *data
|
||||
+
|
||||
print "removing ", path, "..." if $DEBUG
|
||||
- data[0].close if data[0]
|
||||
- if File.exist?(path)
|
||||
- File.unlink(path)
|
||||
- end
|
||||
- if File.exist?(path + '.lock')
|
||||
- Dir.rmdir(path + '.lock')
|
||||
- end
|
||||
+
|
||||
+ tmpfile.close if tmpfile
|
||||
+
|
||||
+ # keep this order for thread safeness
|
||||
+ File.unlink(path) if File.exist?(path)
|
||||
+ cleanlist.delete(path) if cleanlist
|
||||
+
|
||||
print "done\n" if $DEBUG
|
||||
end
|
||||
}
|
||||
@@ -35,30 +47,44 @@
|
||||
if $SAFE > 0 and tmpdir.tainted?
|
||||
tmpdir = '/tmp'
|
||||
end
|
||||
- n = 0
|
||||
- while true
|
||||
+
|
||||
+ lock = nil
|
||||
+ n = failure = 0
|
||||
+
|
||||
+ begin
|
||||
+ Thread.critical = true
|
||||
+
|
||||
begin
|
||||
tmpname = sprintf('%s/%s%d.%d', tmpdir, basename, $$, n)
|
||||
lock = tmpname + '.lock'
|
||||
- unless File.exist?(tmpname) or File.exist?(lock)
|
||||
- Dir.mkdir(lock)
|
||||
- break
|
||||
- end
|
||||
- rescue
|
||||
- raise "cannot generate tempfile `%s'" % tmpname if n >= Max_try
|
||||
- #sleep(1)
|
||||
- end
|
||||
- n += 1
|
||||
+ n += 1
|
||||
+ end while @@cleanlist.include?(tmpname) or
|
||||
+ File.exist?(lock) or File.exist?(tmpname)
|
||||
+
|
||||
+ Dir.mkdir(lock)
|
||||
+ rescue
|
||||
+ failure += 1
|
||||
+ retry if failure < Max_try
|
||||
+ raise "cannot generate tempfile `%s'" % tmpname
|
||||
+ ensure
|
||||
+ Thread.critical = false
|
||||
end
|
||||
|
||||
- @protect = []
|
||||
- @clean_files = Tempfile.callback(tmpname, @protect)
|
||||
- ObjectSpace.define_finalizer(self, @clean_files)
|
||||
+ @data = [tmpname]
|
||||
+ @clean_proc = Tempfile.callback(@data)
|
||||
+ ObjectSpace.define_finalizer(self, @clean_proc)
|
||||
|
||||
@tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600)
|
||||
- @protect[0] = @tmpfile
|
||||
@tmpname = tmpname
|
||||
+ @@cleanlist << @tmpname
|
||||
+ @data[1] = @tmpfile
|
||||
+ @data[2] = @@cleanlist
|
||||
+
|
||||
super(@tmpfile)
|
||||
+
|
||||
+ # Now we have all the File/IO methods defined, you must not
|
||||
+ # carelessly put bare puts(), etc. after this.
|
||||
+
|
||||
Dir.rmdir(lock)
|
||||
end
|
||||
|
||||
@@ -69,15 +95,15 @@
|
||||
def open
|
||||
@tmpfile.close if @tmpfile
|
||||
@tmpfile = File.open(@tmpname, 'r+')
|
||||
- @protect[0] = @tmpfile
|
||||
+ @data[1] = @tmpfile
|
||||
__setobj__(@tmpfile)
|
||||
end
|
||||
|
||||
def close(real=false)
|
||||
@tmpfile.close if @tmpfile
|
||||
- @protect[0] = @tmpfile = nil
|
||||
+ @data[1] = @tmpfile = nil
|
||||
if real
|
||||
- @clean_files.call
|
||||
+ @clean_proc.call
|
||||
ObjectSpace.undefine_finalizer(self)
|
||||
end
|
||||
end
|
@ -1,3 +1,5 @@
|
||||
%%IF_DEFAULT%%bin/erb%%RUBY_R%%
|
||||
bin/erb%%_RUBY_SUFFIX%%
|
||||
%%IF_DEFAULT%%bin/h2rb%%RUBY_R%%
|
||||
bin/h2rb%%_RUBY_SUFFIX%%
|
||||
%%IF_DEFAULT%%bin/irb%%RUBY_R%%
|
||||
@ -58,6 +60,7 @@ lib/lib%%RUBY_NAME%%.so.%%RUBY_SHLIBVER%%
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/debug.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/delegate.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/e2mmap.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/erb.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/eregex.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/expect.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/fileutils.rb
|
||||
@ -261,7 +264,6 @@ lib/lib%%RUBY_NAME%%.so.%%RUBY_SHLIBVER%%
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/fullpath.rb
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/getopts.test
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/goodfriday.rb
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/irb.rb
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/less.rb
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/list.rb
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/list2.rb
|
||||
|
@ -7,7 +7,6 @@
|
||||
|
||||
PORTNAME= ruby${RUBY_R}
|
||||
PORTVERSION= ${RUBY_PORTVERSION}
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= lang ruby ipv6
|
||||
MASTER_SITES= ${MASTER_SITE_RUBY} \
|
||||
${ONIGURUMA_MASTER_SITES:S,$,:oniguruma,}
|
||||
@ -47,7 +46,12 @@ GNU_CONFIGURE= yes
|
||||
WRKSRC= ${RUBY_WRKSRC}
|
||||
CONFIGURE_ARGS= ${RUBY_CONFIGURE_ARGS} \
|
||||
--enable-shared
|
||||
MAKE_ENV= LANG=C # prevent bison 1.33 w/ gettext 0.10.35 from coredumping
|
||||
|
||||
.if defined(DEBUG)
|
||||
CFLAGS+= -g
|
||||
STRIP= # none
|
||||
.endif
|
||||
|
||||
MAKE_ARGS= -j3
|
||||
INSTALLS_SHLIB= yes
|
||||
MAN1= ruby${_RUBY_SUFFIX}.1
|
||||
@ -77,6 +81,7 @@ PLIST_SUB+= IF_DEFAULT=${IF_DEFAULT} \
|
||||
RUBYLIB=${RUBYLIB}
|
||||
|
||||
INSTALLED_SCRIPTS= ${PREFIX}/bin/irb \
|
||||
${PREFIX}/bin/erb \
|
||||
${PREFIX}/bin/h2rb
|
||||
|
||||
OBSOLETED_MODULES= dl \
|
||||
@ -92,6 +97,7 @@ OBSOLETED_MODULES= dl \
|
||||
uri
|
||||
|
||||
post-extract:
|
||||
${MV} ${WRKSRC}/ext/dl/h2rb ${WRKSRC}/bin/
|
||||
.if defined(WITH_ONIGURUMA)
|
||||
${TAR} -zxvf ${DISTDIR}/${DIST_SUBDIR}/${ONIGURUMA_DISTFILE} -C ${WRKDIR}
|
||||
.endif
|
||||
@ -113,22 +119,15 @@ pre-install:
|
||||
${RM} -f ${RUBY_WITHOUT_SUFFIX}${RUBY_R} \
|
||||
${PREFIX}/man/man1/ruby${RUBY_R}.1 \
|
||||
${PREFIX}/man/man1/ruby${RUBY_R}.1.gz
|
||||
for f in ${INSTALLED_SCRIPTS}; do \
|
||||
${RM} -f $${f}${RUBY_R}; \
|
||||
done
|
||||
|
||||
post-install:
|
||||
.if defined(STRIP) && ${STRIP} == -s
|
||||
strip ${RUBY}
|
||||
${STRIP_CMD} ${RUBY}
|
||||
.endif
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/ext/dl/h2rb ${PREFIX}/bin/
|
||||
.if ${RUBY_VER} == ${RUBY_DEFAULT_VER}
|
||||
${MV} -f ${RUBY_WITHOUT_SUFFIX}${RUBY_R} ${RUBY_WITH_SUFFIX}
|
||||
${MV} -f ${PREFIX}/man/man1/ruby${RUBY_R}.1 ${PREFIX}/man/man1/ruby${_RUBY_SUFFIX}.1
|
||||
.endif
|
||||
for f in ${INSTALLED_SCRIPTS}; do \
|
||||
${MV} -f $${f} $${f}${_RUBY_SUFFIX}; \
|
||||
done
|
||||
if [ -x ${RUBY_WITHOUT_SUFFIX}${RUBY_DEFAULT_SUFFIX}${RUBY_R} ]; then \
|
||||
${LN} -fs ${RUBY_WITHOUT_SUFFIX}${RUBY_DEFAULT_SUFFIX}${RUBY_R} ${RUBY_WITHOUT_SUFFIX}${RUBY_R}; \
|
||||
${LN} -fs ruby${RUBY_DEFAULT_SUFFIX}${RUBY_R}.1${MANEXT} ${PREFIX}/man/man1/ruby${RUBY_R}.1${MANEXT}; \
|
||||
@ -146,18 +145,6 @@ post-install:
|
||||
fi
|
||||
.endif
|
||||
${LDCONFIG} -m ${PREFIX}/lib
|
||||
.for f in ${INSTALLED_SCRIPTS}
|
||||
${RUBY_WITH_SUFFIX} ${RUBY_FLAGS} -i -p \
|
||||
-e 'if $$. == 1; ' \
|
||||
-e ' if /^#!/; ' \
|
||||
-e ' sub /^#!\s*\S*(\benv\s+)?\bruby/, "#!${RUBY_WITH_SUFFIX}";' \
|
||||
-e ' else;' \
|
||||
-e ' $$_ = "#!${RUBY_WITH_SUFFIX}\n" + $$_;' \
|
||||
-e ' end;' \
|
||||
-e 'end' \
|
||||
${f}${_RUBY_SUFFIX}
|
||||
${CHMOD} ${BINMODE} ${f}${_RUBY_SUFFIX}
|
||||
.endfor
|
||||
${MKDIR} ${RUBY_ELISPDIR}
|
||||
${TOUCH} ${RUBY_ELISPDIR}/.keep_me
|
||||
${MKDIR} ${RUBY_EXAMPLESDIR}
|
||||
|
@ -1,2 +1,2 @@
|
||||
MD5 (ruby/ruby-1.7.3-2002.11.14.tar.bz2) = 9e1978a64c23acc5ee754e7b9f1e0627
|
||||
MD5 (ruby/ruby-1.7.3-2002.11.22.tar.bz2) = fafe9cbd17e49dbf356710bc5751d78a
|
||||
MD5 (ruby/onigd20020424.tar.gz) = d5e6505aa776378a58cdb0fd4ef9cdc0
|
||||
|
33
lang/ruby18/files/patch-mkmf.rb
Normal file
33
lang/ruby18/files/patch-mkmf.rb
Normal file
@ -0,0 +1,33 @@
|
||||
Index: lib/mkmf.rb
|
||||
===================================================================
|
||||
RCS file: /src/ruby/lib/mkmf.rb,v
|
||||
retrieving revision 1.116
|
||||
diff -u -1 -r1.116 mkmf.rb
|
||||
--- lib/mkmf.rb 14 Nov 2002 13:51:19 -0000 1.116
|
||||
+++ lib/mkmf.rb 22 Nov 2002 12:38:13 -0000
|
||||
@@ -688,7 +688,6 @@
|
||||
mfile.print %{
|
||||
-all: $(DLLIB)
|
||||
+CLEANLIBS = "$(TARGET).{lib,exp,il?,tds,map}" $(DLLIB)
|
||||
+CLEANOBJS = "*.{#{$OBJEXT},#{$LIBEXT},s[ol],pdb,bak}"
|
||||
|
||||
-clean::
|
||||
- @$(RM) "$(TARGET).{lib,exp,il?,tds,map}" $(DLLIB)
|
||||
- @$(RM) "*.{#{$OBJEXT},#{$LIBEXT},s[ol],pdb,bak}"
|
||||
+all: $(DLLIB)
|
||||
}
|
||||
@@ -850,6 +849,6 @@
|
||||
CLEANINGS = "
|
||||
-clean::
|
||||
- @$(RM) $(CLEANFILES)
|
||||
+clean:
|
||||
+ @$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
|
||||
|
||||
-distclean:: clean
|
||||
+distclean: clean
|
||||
@$(RM) Makefile extconf.h conftest.* mkmf.log
|
||||
@@ -857,3 +856,3 @@
|
||||
|
||||
-realclean:: distclean
|
||||
+realclean: distclean
|
||||
"
|
@ -1,147 +0,0 @@
|
||||
Index: lib/tempfile.rb
|
||||
===================================================================
|
||||
RCS file: /src/ruby/lib/tempfile.rb,v
|
||||
retrieving revision 1.10
|
||||
retrieving revision 1.12
|
||||
diff -u -r1.10 -r1.12
|
||||
--- lib/tempfile.rb 4 Jun 2002 07:34:19 -0000 1.10
|
||||
+++ lib/tempfile.rb 18 Nov 2002 07:26:15 -0000 1.12
|
||||
@@ -1,31 +1,43 @@
|
||||
#
|
||||
-# $Id: tempfile.rb,v 1.10 2002/06/04 07:34:19 matz Exp $
|
||||
+# $Id: tempfile.rb,v 1.12 2002/11/18 07:26:15 knu Exp $
|
||||
#
|
||||
-# The class for temporary files.
|
||||
-# o creates a temporary file, which name is "basename.pid.n" with mode "w+".
|
||||
-# o Tempfile objects can be used like IO object.
|
||||
-# o with tempfile.close(true) created temporary files are removed.
|
||||
-# o created files are also removed on script termination.
|
||||
-# o with Tempfile#open, you can reopen the temporary file.
|
||||
-# o file mode of the temporary files are 0600.
|
||||
+# This is a class for managing temporary files.
|
||||
+#
|
||||
+# o Tempfile::new("basename") creates a temporary file whose name is
|
||||
+# "basename.pid.n" and opens with mode "w+".
|
||||
+# o A Tempfile object can be treated as an IO object.
|
||||
+# o The temporary directory is determined by ENV['TMPDIR'],
|
||||
+# ENV['TMP'], and ENV['TEMP'] in the order named, and if none of
|
||||
+# them is available, it is set to /tmp.
|
||||
+# o When $SAFE > 0, you should specify a directory via the second argument
|
||||
+# of Tempfile::new(), or it will end up finding an ENV value tainted and
|
||||
+# pick /tmp. In case you don't have it, an exception will be raised.
|
||||
+# o Tempfile#close(true) gets the temporary file removed immediately.
|
||||
+# o Otherwise, the removal is delayed until the object is finalized.
|
||||
+# o With Tempfile#open, you can reopen the temporary file.
|
||||
+# o The file mode for the temporary files is 0600.
|
||||
+# o This library is (considered to be) thread safe.
|
||||
|
||||
require 'delegate'
|
||||
|
||||
class Tempfile < SimpleDelegator
|
||||
Max_try = 10
|
||||
+ @@cleanlist = []
|
||||
|
||||
- def Tempfile.callback(path, data)
|
||||
+ def Tempfile.callback(data)
|
||||
pid = $$
|
||||
lambda{
|
||||
if pid == $$
|
||||
+ path, tmpfile, cleanlist = *data
|
||||
+
|
||||
print "removing ", path, "..." if $DEBUG
|
||||
- data[0].close if data[0]
|
||||
- if File.exist?(path)
|
||||
- File.unlink(path)
|
||||
- end
|
||||
- if File.exist?(path + '.lock')
|
||||
- Dir.rmdir(path + '.lock')
|
||||
- end
|
||||
+
|
||||
+ tmpfile.close if tmpfile
|
||||
+
|
||||
+ # keep this order for thread safeness
|
||||
+ File.unlink(path) if File.exist?(path)
|
||||
+ cleanlist.delete(path) if cleanlist
|
||||
+
|
||||
print "done\n" if $DEBUG
|
||||
end
|
||||
}
|
||||
@@ -35,30 +47,44 @@
|
||||
if $SAFE > 0 and tmpdir.tainted?
|
||||
tmpdir = '/tmp'
|
||||
end
|
||||
- n = 0
|
||||
- while true
|
||||
+
|
||||
+ lock = nil
|
||||
+ n = failure = 0
|
||||
+
|
||||
+ begin
|
||||
+ Thread.critical = true
|
||||
+
|
||||
begin
|
||||
tmpname = sprintf('%s/%s%d.%d', tmpdir, basename, $$, n)
|
||||
lock = tmpname + '.lock'
|
||||
- unless File.exist?(tmpname) or File.exist?(lock)
|
||||
- Dir.mkdir(lock)
|
||||
- break
|
||||
- end
|
||||
- rescue
|
||||
- raise "cannot generate tempfile `%s'" % tmpname if n >= Max_try
|
||||
- #sleep(1)
|
||||
- end
|
||||
- n += 1
|
||||
+ n += 1
|
||||
+ end while @@cleanlist.include?(tmpname) or
|
||||
+ File.exist?(lock) or File.exist?(tmpname)
|
||||
+
|
||||
+ Dir.mkdir(lock)
|
||||
+ rescue
|
||||
+ failure += 1
|
||||
+ retry if failure < Max_try
|
||||
+ raise "cannot generate tempfile `%s'" % tmpname
|
||||
+ ensure
|
||||
+ Thread.critical = false
|
||||
end
|
||||
|
||||
- @protect = []
|
||||
- @clean_files = Tempfile.callback(tmpname, @protect)
|
||||
- ObjectSpace.define_finalizer(self, @clean_files)
|
||||
+ @data = [tmpname]
|
||||
+ @clean_proc = Tempfile.callback(@data)
|
||||
+ ObjectSpace.define_finalizer(self, @clean_proc)
|
||||
|
||||
@tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600)
|
||||
- @protect[0] = @tmpfile
|
||||
@tmpname = tmpname
|
||||
+ @@cleanlist << @tmpname
|
||||
+ @data[1] = @tmpfile
|
||||
+ @data[2] = @@cleanlist
|
||||
+
|
||||
super(@tmpfile)
|
||||
+
|
||||
+ # Now we have all the File/IO methods defined, you must not
|
||||
+ # carelessly put bare puts(), etc. after this.
|
||||
+
|
||||
Dir.rmdir(lock)
|
||||
end
|
||||
|
||||
@@ -69,15 +95,15 @@
|
||||
def open
|
||||
@tmpfile.close if @tmpfile
|
||||
@tmpfile = File.open(@tmpname, 'r+')
|
||||
- @protect[0] = @tmpfile
|
||||
+ @data[1] = @tmpfile
|
||||
__setobj__(@tmpfile)
|
||||
end
|
||||
|
||||
def close(real=false)
|
||||
@tmpfile.close if @tmpfile
|
||||
- @protect[0] = @tmpfile = nil
|
||||
+ @data[1] = @tmpfile = nil
|
||||
if real
|
||||
- @clean_files.call
|
||||
+ @clean_proc.call
|
||||
ObjectSpace.undefine_finalizer(self)
|
||||
end
|
||||
end
|
@ -1,3 +1,5 @@
|
||||
%%IF_DEFAULT%%bin/erb%%RUBY_R%%
|
||||
bin/erb%%_RUBY_SUFFIX%%
|
||||
%%IF_DEFAULT%%bin/h2rb%%RUBY_R%%
|
||||
bin/h2rb%%_RUBY_SUFFIX%%
|
||||
%%IF_DEFAULT%%bin/irb%%RUBY_R%%
|
||||
@ -58,6 +60,7 @@ lib/lib%%RUBY_NAME%%.so.%%RUBY_SHLIBVER%%
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/debug.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/delegate.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/e2mmap.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/erb.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/eregex.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/expect.rb
|
||||
%%RUBYLIB%%%%RUBY_LIBDIR%%/fileutils.rb
|
||||
@ -261,7 +264,6 @@ lib/lib%%RUBY_NAME%%.so.%%RUBY_SHLIBVER%%
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/fullpath.rb
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/getopts.test
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/goodfriday.rb
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/irb.rb
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/less.rb
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/list.rb
|
||||
%%PORTDOCS%%%%RUBY_EXAMPLESDIR%%/list2.rb
|
||||
|
Loading…
Reference in New Issue
Block a user