FreeBSD Bugzilla – Attachment 41014 Details for
Bug 64320
New port: games/tenebrae Quake 1 source port with advanced graphics
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
tenebrae.shar
tenebrae.shar (text/plain), 15.66 KB, created by
Igor Pokrovsky
on 2004-03-16 03:50:09 UTC
(
hide
)
Description:
tenebrae.shar
Filename:
MIME Type:
Creator:
Igor Pokrovsky
Created:
2004-03-16 03:50:09 UTC
Size:
15.66 KB
patch
obsolete
># This is a shell archive. Save it in a file, remove anything before ># this line, and then unpack it by entering "sh file". Note, it may ># create directories; files and directories will be owned by you and ># have default permissions. ># ># This archive contains: ># ># tenebrae ># tenebrae/files ># tenebrae/files/patch-linux_Makefile.i386linux ># tenebrae/files/patch-cd__linux.c ># tenebrae/files/patch-snd__linux.c ># tenebrae/files/patch-gl__vidlinuxglx.c ># tenebrae/files/patch-gl__common.c ># tenebrae/files/patch-common.c ># tenebrae/files/patch-common.h ># tenebrae/files/patch-sys__uxfindfirst.c ># tenebrae/files/patch-snd__sdl.c ># tenebrae/pkg-plist ># tenebrae/pkg-descr ># tenebrae/distinfo ># tenebrae/Makefile ># tenebrae/pkg-message ># >echo c - tenebrae >mkdir -p tenebrae > /dev/null 2>&1 >echo c - tenebrae/files >mkdir -p tenebrae/files > /dev/null 2>&1 >echo x - tenebrae/files/patch-linux_Makefile.i386linux >sed 's/^X//' >tenebrae/files/patch-linux_Makefile.i386linux << 'END-of-tenebrae/files/patch-linux_Makefile.i386linux' >X--- linux/Makefile.i386linux.orig Sun Mar 14 15:07:08 2004 >X+++ linux/Makefile.i386linux Sun Mar 14 17:54:02 2004 >X@@ -18,30 +18,30 @@ >X >X MOUNT_DIR = ../ >X >X-MASTER_DIR = /usr/local/share/games/quake >X+MASTER_DIR = ${DATADIR} >X >X BUILD_DEBUG_DIR = debug$(ARCH)$(GLIBC) >X BUILD_RELEASE_DIR = release$(ARCH)$(GLIBC) >X >X-LEX = /usr/bin/flex -i -Cfr >X-CC = /usr/bin/gcc >X+LEX ?= /usr/bin/flex -i -Cfr >X+#CC = /usr/bin/gcc >X >X-X11_LIBS = -L/usr/X11R6/lib -lpthread -lX11 -lXext -lXxf86dga -lXxf86vm >X+X11_LIBS = -L${X11BASE}/lib ${PTHREAD_LIBS} -lX11 -lXext -lXxf86dga -lXxf86vm >X >X # to enable OpenGL code in source >X-OPENGL_CFLAGS = -D__glx__ -DGLQUAKE >X+OPENGL_CFLAGS = -D__glx__ -DGLQUAKE -I${X11BASE}/include >X OPENGL_LIBS = -lGL -lGLU >X >X-PNG_LIBS = -lpng -lz >X+PNG_LIBS = -L${LOCALBASE}/lib -lpng -lz >X >X #OPENAL_LIBS = -lopenal >X-#OPENAL_CFLAGS = -DOPENAL -I/usr/local/include/AL >X+#OPENAL_CFLAGS = -DOPENAL -I${LOCALBASE}/include/AL >X >X-BASE_CFLAGS = -DBASEDIR="$(MASTER_DIR)" -DUSERPREF_DIR $(OPENGL_CFLAGS) $(OPENAL_CFLAGS) -I$(MOUNT_DIR) >X-RELEASE_CFLAGS = $(BASE_CFLAGS) -mpentiumpro -O6 -ffast-math -funroll-loops \ >X+BASE_CFLAGS = -DBASEDIR="$(MASTER_DIR)" -DUSERPREF_DIR $(OPENGL_CFLAGS) $(OPENAL_CFLAGS) -I$(MOUNT_DIR) -I${LOCALBASE}/include `${SDL_CONFIG} --cflags` >X+RELEASE_CFLAGS = $(BASE_CFLAGS) -ffast-math -funroll-loops \ >X -fomit-frame-pointer -fexpensive-optimizations >X DEBUG_CFLAGS = $(BASE_CFLAGS) -g >X-LDFLAGS = -lm -ldl $(X11_LIBS) $(OPENGL_LIBS) $(PNG_LIBS) $(OPENAL_LIBS) >X+LDFLAGS = -lm $(X11_LIBS) $(OPENGL_LIBS) $(PNG_LIBS) $(OPENAL_LIBS) `${SDL_CONFIG} --libs` >X >X DO_GL_CC = $(CC) $(CFLAGS) -o $@ -c $< >X DO_GL_AS = $(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $< >X@@ -57,15 +57,15 @@ >X @-mkdir -p $(BUILD_DEBUG_DIR) \ >X $(BUILD_DEBUG_DIR)/bin \ >X $(BUILD_DEBUG_DIR)/glquake >X- $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)" >X+ $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS+="$(DEBUG_CFLAGS)" >X >X build_release: >X @-mkdir -p $(BUILD_RELEASE_DIR) \ >X $(BUILD_RELEASE_DIR)/bin \ >X $(BUILD_RELEASE_DIR)/glquake >X- $(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)" >X+ $(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS+="$(RELEASE_CFLAGS)" >X >X-all: build_debug build_release >X+all: build_debug >X >X targets: $(TARGETS) >X >X@@ -143,7 +143,7 @@ >X $(BUILDDIR)/glquake/snd_dma.o \ >X $(BUILDDIR)/glquake/snd_mem.o \ >X $(BUILDDIR)/glquake/snd_mix.o \ >X- $(BUILDDIR)/glquake/snd_linux.o \ >X+ $(BUILDDIR)/glquake/snd_sdl.o \ >X $(BUILDDIR)/glquake/gl_vidlinuxglx.o \ >X $(BUILDDIR)/glquake/math.o \ >X $(BUILDDIR)/glquake/worlda.o \ >X@@ -361,7 +361,7 @@ >X $(BUILDDIR)/glquake/snd_mix.o : $(MOUNT_DIR)/snd_mix.c >X $(DO_GL_CC) >X >X-$(BUILDDIR)/glquake/snd_linux.o : $(MOUNT_DIR)/snd_linux.c >X+$(BUILDDIR)/glquake/snd_sdl.o : $(MOUNT_DIR)/snd_sdl.c >X $(DO_GL_CC) >X >X $(BUILDDIR)/glquake/math.o : $(MOUNT_DIR)/math.s >END-of-tenebrae/files/patch-linux_Makefile.i386linux >echo x - tenebrae/files/patch-cd__linux.c >sed 's/^X//' >tenebrae/files/patch-cd__linux.c << 'END-of-tenebrae/files/patch-cd__linux.c' >X--- cd_linux.c.orig Sun Mar 14 12:11:16 2004 >X+++ cd_linux.c Sun Mar 14 12:24:07 2004 >X@@ -31,7 +31,7 @@ >X #include <time.h> >X #include <errno.h> >X >X-#include <linux/cdrom.h> >X+#include <sys/cdio.h> >X >X #include "quakedef.h" >X >X@@ -54,8 +54,8 @@ >X if (cdfile == -1 || !enabled) >X return; // no cd init'd >X >X- if ( ioctl(cdfile, CDROMEJECT) == -1 ) >X- Con_DPrintf("ioctl cdromeject failed\n"); >X+ if ( ioctl(cdfile, CDIOCEJECT) == -1 ) >X+ Con_DPrintf("ioctl CDIOCEJECT failed\n"); >X } >X >X >X@@ -64,30 +64,30 @@ >X if (cdfile == -1 || !enabled) >X return; // no cd init'd >X >X- if ( ioctl(cdfile, CDROMCLOSETRAY) == -1 ) >X- Con_DPrintf("ioctl cdromclosetray failed\n"); >X+ if ( ioctl(cdfile, CDIOCCLOSE) == -1 ) >X+ Con_DPrintf("ioctl CDIOCCLOSE failed\n"); >X } >X >X static int CDAudio_GetAudioDiskInfo(void) >X { >X- struct cdrom_tochdr tochdr; >X+ struct ioc_toc_header tochdr; >X >X cdValid = false; >X >X- if ( ioctl(cdfile, CDROMREADTOCHDR, &tochdr) == -1 ) >X+ if ( ioctl(cdfile, CDIOREADTOCHEADER, &tochdr) == -1 ) >X { >X- Con_DPrintf("ioctl cdromreadtochdr failed\n"); >X+ Con_DPrintf("ioctl CDIOREADTOCHEADER failed\n"); >X return -1; >X } >X >X- if (tochdr.cdth_trk0 < 1) >X+ if (tochdr.starting_track < 1) >X { >X Con_DPrintf("CDAudio: no music tracks\n"); >X return -1; >X } >X >X cdValid = true; >X- maxTrack = tochdr.cdth_trk1; >X+ maxTrack = tochdr.ending_track; >X >X return 0; >X } >X@@ -95,8 +95,8 @@ >X >X void CDAudio_Play(byte track, qboolean looping) >X { >X- struct cdrom_tocentry entry; >X- struct cdrom_ti ti; >X+ struct ioc_read_toc_single_entry entry; >X+ struct ioc_play_track ti; >X >X if (cdfile == -1 || !enabled) >X return; >X@@ -115,7 +115,7 @@ >X Con_DPrintf("CDAudio: Bad track number %u.\n", track); >X return; >X } >X- >X+/* >X // don't try to play a non-audio track >X entry.cdte_track = track; >X entry.cdte_format = CDROM_MSF; >X@@ -129,7 +129,7 @@ >X Con_Printf("CDAudio: track %i is not audio\n", track); >X return; >X } >X- >X+*/ >X if (playing) >X { >X if (playTrack == track) >X@@ -137,19 +137,19 @@ >X CDAudio_Stop(); >X } >X >X- ti.cdti_trk0 = track; >X- ti.cdti_trk1 = track; >X- ti.cdti_ind0 = 1; >X- ti.cdti_ind1 = 99; >X- >X- if ( ioctl(cdfile, CDROMPLAYTRKIND, &ti) == -1 ) >X+ ti.start_track = track; >X+ ti.end_track = track; >X+ ti.start_index = 1; >X+ ti.end_index = 99; >X+ >X+ if ( ioctl(cdfile, CDIOCPLAYTRACKS, &ti) == -1 ) >X { >X- Con_DPrintf("ioctl cdromplaytrkind failed\n"); >X+ Con_DPrintf("ioctl CDIOCPLAYTRACKS failed\n"); >X return; >X } >X >X- if ( ioctl(cdfile, CDROMRESUME) == -1 ) >X- Con_DPrintf("ioctl cdromresume failed\n"); >X+ if ( ioctl(cdfile, CDIOCRESUME) == -1 ) >X+ Con_DPrintf("ioctl CDIOCRESUME failed\n"); >X >X playLooping = looping; >X playTrack = track; >X@@ -168,8 +168,8 @@ >X if (!playing) >X return; >X >X- if ( ioctl(cdfile, CDROMSTOP) == -1 ) >X- Con_DPrintf("ioctl cdromstop failed (%d)\n", errno); >X+ if ( ioctl(cdfile, CDIOCSTOP) == -1 ) >X+ Con_DPrintf("ioctl CDIOCSTOP failed (%d)\n", errno); >X >X wasPlaying = false; >X playing = false; >X@@ -183,8 +183,8 @@ >X if (!playing) >X return; >X >X- if ( ioctl(cdfile, CDROMPAUSE) == -1 ) >X- Con_DPrintf("ioctl cdrompause failed\n"); >X+ if ( ioctl(cdfile, CDIOCPAUSE) == -1 ) >X+ Con_DPrintf("ioctl CDIOCPAUSE failed\n"); >X >X wasPlaying = playing; >X playing = false; >X@@ -202,8 +202,8 @@ >X if (!wasPlaying) >X return; >X >X- if ( ioctl(cdfile, CDROMRESUME) == -1 ) >X- Con_DPrintf("ioctl cdromresume failed\n"); >X+ if ( ioctl(cdfile, CDIOCRESUME) == -1 ) >X+ Con_DPrintf("ioctl CDIOCRESUME failed\n"); >X playing = true; >X } >X >X@@ -327,7 +327,8 @@ >X >X void CDAudio_Update(void) >X { >X- struct cdrom_subchnl subchnl; >X+ struct ioc_read_subchannel subchnl; >X+ struct cd_sub_channel_info data; >X static time_t lastchk; >X >X if (!enabled) >X@@ -351,14 +352,17 @@ >X >X if (playing && lastchk < time(NULL)) { >X lastchk = time(NULL) + 2; //two seconds between chks >X- subchnl.cdsc_format = CDROM_MSF; >X- if (ioctl(cdfile, CDROMSUBCHNL, &subchnl) == -1 ) { >X- Con_DPrintf("ioctl cdromsubchnl failed\n"); >X+ subchnl.data = &data; >X+ subchnl.data_len = sizeof(data); >X+ subchnl.address_format = CD_MSF_FORMAT; >X+ subchnl.data_format = CD_CURRENT_POSITION; >X+ if (ioctl(cdfile, CDIOCREADSUBCHANNEL, (char*) &subchnl) == -1 ) { >X+ Con_DPrintf("ioctl CDIOCREADSUBCHANNEL failed\n"); >X playing = false; >X return; >X } >X- if (subchnl.cdsc_audiostatus != CDROM_AUDIO_PLAY && >X- subchnl.cdsc_audiostatus != CDROM_AUDIO_PAUSED) { >X+ if (subchnl.data->header.audio_status != CD_AS_PLAY_IN_PROGRESS && >X+ subchnl.data->header.audio_status != CD_AS_PLAY_PAUSED) { >X playing = false; >X if (playLooping) >X CDAudio_Play(playTrack, true); >END-of-tenebrae/files/patch-cd__linux.c >echo x - tenebrae/files/patch-snd__linux.c >sed 's/^X//' >tenebrae/files/patch-snd__linux.c << 'END-of-tenebrae/files/patch-snd__linux.c' >X--- snd_linux.c.orig Sun Mar 14 12:25:10 2004 >X+++ snd_linux.c Sun Mar 14 12:25:46 2004 >X@@ -25,7 +25,7 @@ >X #include <sys/mman.h> >X #include <sys/shm.h> >X #include <sys/wait.h> >X-#include <linux/soundcard.h> >X+#include <sys/soundcard.h> >X #include <stdio.h> >X #include "quakedef.h" >X >END-of-tenebrae/files/patch-snd__linux.c >echo x - tenebrae/files/patch-gl__vidlinuxglx.c >sed 's/^X//' >tenebrae/files/patch-gl__vidlinuxglx.c << 'END-of-tenebrae/files/patch-gl__vidlinuxglx.c' >X--- gl_vidlinuxglx.c.orig Sun Mar 14 12:27:06 2004 >X+++ gl_vidlinuxglx.c Sun Mar 14 12:27:21 2004 >X@@ -20,7 +20,6 @@ >X #include <termios.h> >X #include <sys/ioctl.h> >X #include <sys/stat.h> >X-#include <sys/vt.h> >X #include <stdarg.h> >X #include <stdio.h> >X #include <signal.h> >END-of-tenebrae/files/patch-gl__vidlinuxglx.c >echo x - tenebrae/files/patch-gl__common.c >sed 's/^X//' >tenebrae/files/patch-gl__common.c << 'END-of-tenebrae/files/patch-gl__common.c' >X--- gl_common.c.orig Sun Mar 14 12:33:12 2004 >X+++ gl_common.c Sun Mar 14 12:35:26 2004 >X@@ -248,11 +248,11 @@ >X if (!strstr(gl_extensions, "GL_ARB_texture_env_dot3")) { >X Sys_Error ("ARB_texture_env_dot3 not found.\nProbably your 3d-card is not supported.\n"); >X } >X- >X+#if 0 >X if (!strstr(gl_extensions, "GL_ARB_texture_cube_map")) { >X Sys_Error ("ARB_texture_cube_map not found.\nProbably your 3d-card is not supported.\n"); >X } >X- >X+#endif >X //Just spit a warning user prob has gl-1.2 or something >X if (!strstr(gl_extensions, "GL_SGI_texture_edge_clamp") && >X !strstr(gl_extensions, "GL_EXT_texture_edge_clamp")) { >END-of-tenebrae/files/patch-gl__common.c >echo x - tenebrae/files/patch-common.c >sed 's/^X//' >tenebrae/files/patch-common.c << 'END-of-tenebrae/files/patch-common.c' >X--- common.c.orig Sun Mar 14 13:16:07 2004 >X+++ common.c Sun Mar 14 13:17:40 2004 >X@@ -2221,6 +2221,8 @@ >X if ((userdir[j-1] == '\\') || (userdir[j-1] == '/')) >X userdir[j-1] = 0; >X } >X+ >X+ strncpy (com_prefdir, userdir, j); >X COM_AddGameFS (userdir); >X #endif >X >END-of-tenebrae/files/patch-common.c >echo x - tenebrae/files/patch-common.h >sed 's/^X//' >tenebrae/files/patch-common.h << 'END-of-tenebrae/files/patch-common.h' >X--- common.h.orig Sun Mar 14 13:19:04 2004 >X+++ common.h Sun Mar 14 13:19:50 2004 >X@@ -169,6 +169,10 @@ >X >X extern char com_gamedir[MAX_OSPATH]; >X >X+#ifdef USERPREF_DIR >X+extern char com_prefdir[MAX_OSPATH]; >X+#endif >X+ >X void COM_WriteFile (char *filename, void *data, int len); >X int COM_OpenFile (const char *filename, int *hndl); >X int COM_FOpenFile (const char *filename, FILE **file); >END-of-tenebrae/files/patch-common.h >echo x - tenebrae/files/patch-sys__uxfindfirst.c >sed 's/^X//' >tenebrae/files/patch-sys__uxfindfirst.c << 'END-of-tenebrae/files/patch-sys__uxfindfirst.c' >X--- sys_uxfindfirst.c.orig Sun Mar 14 15:00:09 2004 >X+++ sys_uxfindfirst.c Sun Mar 14 15:06:52 2004 >X@@ -36,7 +36,7 @@ >X #include "quakedef.h" >X #include <errno.h> >X >X-#if !defined(__GLIBC__) >X+#if !defined(__GLIBC__) && !defined(__FreeBSD__) >X >X #include <dirent.h> >X #include <fnmatch.h> >END-of-tenebrae/files/patch-sys__uxfindfirst.c >echo x - tenebrae/files/patch-snd__sdl.c >sed 's/^X//' >tenebrae/files/patch-snd__sdl.c << 'END-of-tenebrae/files/patch-snd__sdl.c' >X--- snd_sdl.c.orig Sun Mar 14 17:59:19 2004 >X+++ snd_sdl.c Sun Mar 14 17:59:35 2004 >X@@ -119,3 +119,12 @@ >X } >X } >X >X+/* >X+============== >X+SNDDMA_Submit >X+Send sound to device if buffer isn't really the dma buffer >X+=============== >X+*/ >X+void SNDDMA_Submit(void) >X+{ >X+} >END-of-tenebrae/files/patch-snd__sdl.c >echo x - tenebrae/pkg-plist >sed 's/^X//' >tenebrae/pkg-plist << 'END-of-tenebrae/pkg-plist' >Xbin/tenebrae >X%%DATADIR%%/tenebrae/Pak0.pak >X@dirrm %%DATADIR%%/tenebrae >X@dirrm %%DATADIR%% >X%%PORTDOCS%%%%DOCSDIR%%/Tenebrae_Readme.txt >X%%PORTDOCS%%@dirrm %%DOCSDIR%% >END-of-tenebrae/pkg-plist >echo x - tenebrae/pkg-descr >sed 's/^X//' >tenebrae/pkg-descr << 'END-of-tenebrae/pkg-descr' >XTenebrae is not quake1 anymore, it uses more advanced graphics algorithms so it >Xrequires a much faster system to run. >XThese are the bare minimum reqs to run Tenebrae: >X >XPIII 600 >X64 Mb RAM (More if you want to use some mods.) >XGeforce1 >XQuake1 data (registered or shareware) >XWater vissed maps >X >XRecommended is a faster processor and a geforce4 / radeon 8500 class 3d card. >XTenebrae_Readme.txt contains full list of supported video cards. >X >XWWW: http://tenebrae.sourceforge.net/ >X >X- Igor Pokrovsky >Xtiamat@comset.net >END-of-tenebrae/pkg-descr >echo x - tenebrae/distinfo >sed 's/^X//' >tenebrae/distinfo << 'END-of-tenebrae/distinfo' >XMD5 (tenebrae_src.zip) = 132899bfcaf065b8cfd1bdf7f5a00787 >XSIZE (tenebrae_src.zip) = 1580702 >XMD5 (tenebraedata.zip) = b0769654088b4b9f46e69503ff453ec2 >XSIZE (tenebraedata.zip) = 3989498 >END-of-tenebrae/distinfo >echo x - tenebrae/Makefile >sed 's/^X//' >tenebrae/Makefile << 'END-of-tenebrae/Makefile' >X# New ports collection makefile for: tenebrae >X# Date created: 14 Mar 2004 >X# Whom: Igor Pokrovsky <tiamat@comset.net> >X# >X# $FreeBSD$ >X# >X >XPORTNAME= tenebrae >XPORTVERSION= 1.04 >XCATEGORIES= games >XMASTER_SITES= ${MASTER_SITE_SOURCEFORGE} >XMASTER_SITE_SUBDIR= ${PORTNAME} >XDISTFILES= ${PORTNAME}_src${EXTRACT_SUFX} \ >X ${PORTNAME}data${EXTRACT_SUFX} >X >XMAINTAINER= tiamat@comset.net >XCOMMENT= Quake 1 source port with advanced graphics >X >XLIB_DEPENDS= png.5:${PORTSDIR}/graphics/png >X >XUSE_ZIP= yes >XUSE_GMAKE= yes >XUSE_GL= yes >XUSE_XLIB= yes >XUSE_SDL= yes >XONLY_FOR_ARCHS= i386 >X >XWRKSRC= ${WRKDIR}/${PORTNAME}_0 >XBUILD_WRKSRC= ${WRKSRC}/linux >XMAKE_ENV= DATADIR="${DATADIR}" \ >X PTHREAD_LIBS="${PTHREAD_LIBS}" \ >X SDL_CONFIG="${SDL_CONFIG}" >X >Xpre-patch: >X @${PERL} -pi -e 's|\r||g' `${FIND} ${WRKSRC} -type f` >X >Xpre-build: >X @${LN} -sf ${WRKSRC}/linux/Makefile.i386linux ${WRKSRC}/linux/Makefile >X >Xdo-install: >X ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/debugi386.glibc/bin/${PORTNAME}.run \ >X ${PREFIX}/bin/${PORTNAME} >X @${MKDIR} ${DATADIR} >X @${MKDIR} ${DATADIR}/${PORTNAME} >X ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}/Pak0.pak ${DATADIR}/${PORTNAME} >X.ifndef (NOPORTDOCS) >X @${MKDIR} ${DOCSDIR} >X ${TR} -d '\r' <${WRKDIR}/Tenebrae_Readme.txt \ >X >${DOCSDIR}/Tenebrae_Readme.txt >X.endif >X >Xpost-install: >X @${SED} -e 's|%%DATADIR%%|${DATADIR}|' <${PKGMESSAGE} >X >X.include <bsd.port.mk> >END-of-tenebrae/Makefile >echo x - tenebrae/pkg-message >sed 's/^X//' >tenebrae/pkg-message << 'END-of-tenebrae/pkg-message' >X******************************************************************************* >X* Before running Tenebrae copy Quake 1 data files (id1 directory) >X* into %%DATADIR%%. >X* Filenames should be in lower case! >X******************************************************************************* >END-of-tenebrae/pkg-message >exit
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 64320
: 41014 |
41015