CN106648812A - 自动编译的方法和系统 - Google Patents

自动编译的方法和系统 Download PDF

Info

Publication number
CN106648812A
CN106648812A CN201610787301.2A CN201610787301A CN106648812A CN 106648812 A CN106648812 A CN 106648812A CN 201610787301 A CN201610787301 A CN 201610787301A CN 106648812 A CN106648812 A CN 106648812A
Authority
CN
China
Prior art keywords
server
compiling
module
version
compiler
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610787301.2A
Other languages
English (en)
Inventor
李奎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Rui Hong Telecom Technology Co Ltd
Original Assignee
Shanghai Rui Hong Telecom Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Rui Hong Telecom Technology Co Ltd filed Critical Shanghai Rui Hong Telecom Technology Co Ltd
Priority to CN201610787301.2A priority Critical patent/CN106648812A/zh
Publication of CN106648812A publication Critical patent/CN106648812A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开一种自动编译的方法和系统,所述方法包括以下步骤:设定编译时间;到达编译时间后查询可编译版本;查询到可编译版本后自动将编译任务分配给服务器,然后编译项目代码。本发明通过对每台服务器指定编译某一源码库的项目,有效控制每台服务器存储的代码量,同时有效的对编译项目进行自动分配,避免同一服务器存在太多任务,提高编译效率,节省人力资源,充分利用服务器资源。

Description

自动编译的方法和系统
技术领域
本发明涉及计算机领域,特别涉及一种自动编译的方法和系统。
背景技术
ODM(Original Designed Manufacture),是指为客户提供从产品研发到产品生产的全套服务。客户只需提出产品的功能、性能甚至只需提供相关的构思,ODM厂商将产品从设想变为现实。
拥有产品研发能力是ODM企业生存与发展的关键环节。国内的ODM企业大多是制造起家,在组织大规模生产方面有比较丰富的经验。相反,其研发管理的经验不是很足。
现有自动编译项目代码的实现方式有很多,最普遍的方式是通过脚本来实现自动编译,但其无法实现对项目和服务器的动态分配。由于每天有大量代码需要自动编译,需要大量服务器,最好能够每台服务器都参与编译,但是如果要求每台服务器都能够编译任意版本,那么就需在每台服务器都存储所有源码,这样会浪费很多服务器存储空间。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种自动编译的方法和系统。所述技术方案如下:
一方面,一种自动编译的方法,包括以下步骤:
设定编译时间;
到达编译时间后查询可编译版本;
查询到可编译版本后自动将编译任务分配给服务器,然后编译项目代码。
进一步的,设定编译时间的具体步骤为:
预定编译时间;
等待预定编译时间;
判断是否到达预定编译时间;
如判断为否,则继续等待直到到达预定编译时间;
如判断为是,则进行查询可编译版本步骤。
进一步的,查询可编译版本的具体步骤为:
连接数据库,查询当前时间是否有未编译的版本号,将未编译的版本号加入可编译版本列表;
根据数据库中查询返回的可编译列表是否为空,判断是否存在可编译版本;
若为空,表明没有可编译版本,则判断为否,返回等待预定编译时间步骤,重新等待下次预定编译时间;
若不为空,表明存在可编译版本,则判断为是,将可编译版本作为编译任务,进行项目代码编译步骤。
进一步的,进行项目代码编译的具体步骤为:
迭代可编译版本,同时查询所有编译服务器,以配置有编译任务版本库的编译服务器作为可用编译服务器;
根据各个可用编译服务器上配置的版本库名称和最大可编译的任务数量,对可用编译服务器进行分配;
发送编译任务到相应的可用编译服务器;
可用编译服务器分别独自编译项目代码。
进一步的,对可用编译服务器进行分配的具体方法为:(1)根据版本库匹配将每个编译任务分配到对应的可用编译服务器,然后每个可用编译服务器根据是否达到最大可编译的任务数量,确定是否接收编译任务;(2)若每个可用编译服务器上编译的任务数量都达到最大值,而可编译版本列表中还有未分配的编译任务,此时采用平均分配原则,按顺序将可编译任务依次分配到匹配版本库的可用编译服务器。
可选的,可用编译服务器可以是一个或多个。
可选的,单个可用编译服务器编译项目代码后,判断单个可用编译服务器是否完成编译任务,如判断为否,则发送错误信息到相关人员;
如判断为是,则发送版本描述到相关人员,完成项目代码编译。
可选的,所述相关人员包括代码提交人员和项目管理人员。
另一方面,提供了一种自动编译的系统,包括:
定时模块,用于设定编译开始时间;
查询模块,与定时模块连接,用于查询JIRA是否有可编译版本;
编译模块,与查询模块连接,用于编译项目代码。
进一步的,定时模块包括:
时间设定模块,用于设定编译开始时间;
时间判断模块,与时间设定模块连接,用于判断是否到达设定的编译开始时间。
进一步的,查询模块包括:
编译版本查询模块,与时间判断模块连接,用于查询JIRA编译版本;
编译版本判断模块,与编译版本查询模块连接,用于判断是否存在可编译的JIRA版本。
进一步的,编译模块包括:
版本迭代模块,与编译版本判断模块连接,用于迭代可编译版本;
服务器查询模块,与编译版本判断模块连接,用于查询可用的编译服务器;
服务器分配模块,与版本迭代模块和服务器查询模块分别连接,用于对可用的编译服务器分配编译任务,并发送编译任务给相应的服务器;
编译服务器模块,与服务器分配模块连接,用于接收编译任务,并编译相应的项目代码。
可选的,自动编译的系统还包括通知模块,与编译模块连接,用于发送通知。
进一步的,通知模块包括:
编译判断模块,与编译服务器连接,用于判断是否完成本服务器的项目代码编译任务;
发送模块,与编译判断模块连接,用于发送版本描述或错误信息。
本发明实施例提供的技术方案带来的有益效果是:本发明通过对每台服务器指定编译某一源码库的项目,有效控制每台服务器存储的代码量,同时有效的对编译项目进行自动分配,避免同一服务器存在太多任务,提高编译效率,节省人力资源,充分利用服务器资源。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的自动编译的方法流程图;
图2是本发明实施例一提供的自动编译的方法流程图;
图3是本发明实施例二提供的自动编译的系统结构图;
图4是本发明实施例二提供的自动编译的系统结构图;
图5是本发明实施例二提供的自动编译的系统结构图;
图6是本发明实施例二提供的自动编译的系统结构图;
图7是本发明实施例二提供的自动编译的系统结构图;
图8是本发明实施例二提供的自动编译的系统结构图;
图9是本发明实施例二提供的自动编译的系统结构图;
图10是本发明实施例二提供的自动编译的系统结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明提供一种自动编译的方法如图1所示。包括以下步骤:首先执行步骤S101,设定编译时间;然后进行步骤S102,到达编译时间后查询可编译版本;最后进行步骤S103,查询到可编译版本后自动将编译任务分配给服务器,然后编译项目代码。
具体的,如图2所示:
步骤S201,预定编译时间。根据指令设定编译开始时间、编译结束时间和/或编译总时间,一般可设定编译开始时间为0点,编译结束时间为9点。
步骤S202,等待预定编译时间。编译时间设定好后,系统进入待机状态,等待设定的编译开始时间。
步骤S203,判断是否到达预定编译时间。在等待预定编译时间的过程中,系统定期扫描当前时间并进行判定,判断是否到达预定的编译开始时间。
如判断为否,则返回步骤S202,重复步骤S202和S203,直至到达预定编译时间。
如判断为是,则进行步骤S204。
步骤S204,查询编译版本:连接JIRA的MySQL数据库,查询当前时间,是否有未编译的版本号,将未编译的版本号加入可编译列表。在本实施例中,对当前时间的查询过程精确到天。
步骤S205,判断是否存在可编译版本:根据从JIRA的MySQL数据库中查询返回的可编译列表是否为空,判断是否存在可编译版本。
若为空,表明没有可编译版本,则判断为否,返回步骤S202,重新等待下次预定编译时间。
若不为空,表明存在可编译版本,则判断为是,将可编译版本作为编译任务,进行步骤S206。
步骤S206,迭代可编译版本,同时查询所有编译服务器,以配置有编译任务版本库的编译服务器作为可用编译服务器。
步骤S207,分配可用编译服务器:根据各个可用编译服务器上配置的版本库名称和最大可编译的任务数量,对可用编译服务器进行分配。
每个编译服务器指定了可编译的版本库和最大可编译的任务数量,而可编译版本列表中的每个版本都指定了唯一的版本库。规则一:先迭代可编译版本列表,根据版本库匹配将每个可编译版本分配到对应的可用编译服务器,然后每个可用编译服务器根据是否达到最大可编译的任务数量,确定是否接收新的可编译版本。规则二:若每个可用编译服务器上编译的任务数量都达到极限值,而可编译版本列表中还有未分配的可编译版本,此时采用平均分配原则,按顺序将可编译版本依次分配到匹配版本库的可用编译服务器编译。通过上述两个规则,使每个编译服务器达到负载均衡的目标,避免资源浪费。
步骤S208,发送任务到相应的可用编译服务器。根据上一步分配的结果,将编译任务分别发送给对应的可用编译服务器。
步骤S209,可用编译服务器分别独自编译项目代码。在本实施例中,编译服务器可以是一个,也可以是多个,本发明对此不作限制。
单个可用编译服务器编译项目代码后,进行步骤S210,判断单个可用编译服务器是否完成编译任务,如判断为是,则进行步骤S211;如判断为否,则进行步骤S212。
步骤S211,发送版本描述(release notes)到相关人员,完成项目代码编译。当判断得到单个可用编译服务器已经完成项目代码的编译任务,此时将发送版本描述给相关人员,相关人员可以是代码提交人员、项目管理人员或其他人员,本发明对此不作限制。
步骤S212,发送错误信息到相关人员。当单个可用编译服务器未能完成项目代码的编译任务,则将未完成编译的错误信息,发送给相应的代码提交人员和项目管理人员。
本发明通过对每台服务器指定编译某一源码库的项目,有效控制每台服务器存储的代码量,同时有效的对编译项目进行自动分配,避免同一服务器存在太多任务,提高编译效率,节省人力资源,充分利用服务器资源。
实施例二
本发明还提供一种自动编译的系统如图3所示,包括定时模块100、查询模块200和编译模块300。定时模块100用于设定编译开始时间。查询模块200,与定时模块100连接,用于查询JIRA是否有可编译版本。编译模块300,与查询模块200连接,用于编译项目代码。
具体的,如图4所示,定时模块100包括:时间设定模块101和时间判断模块102。
如图5所示,查询模块200包括:编译版本查询模块201和编译版本判断模块202。
如图6所示,编译模块300包括:版本迭代模块301、服务器查询模块302、服务器分配模块303和编译服务器模块304。
如图7所示,时间设定模块101用于设定编译开始时间。时间判断模块102与时间设定模块101连接,用于判断是否到达设定的编译开始时间。编译版本查询模块201与时间判断模块102连接,用于查询JIRA编译版本。编译版本判断模块202与编译版本查询模块201连接,用于判断是否存在可编译的JIRA版本。版本迭代模块301与编译版本判断模块202连接,用于迭代可编译版本。服务器查询模块302与编译版本判断模块202连接,用于查询可用的编译服务器。服务器分配模块303与版本迭代模块301和服务器查询模块302分别连接,用于发送编译任务给相应的服务器。编译服务器模块304与服务器分配模块303连接,用于接收编译任务,并编译相应的项目代码。
如图8所示,可选的,自动编译的系统还包括:通知模块400,与编译模块300连接,用于发送通知。
具体的,如图9所示,通知模块400包括编译判断模块401和发送模块402。
如图10所示,编译判断模块401与编译服务器模块304连接,用于判断是否完成本服务器的项目代码编译任务;发送模块402与编译判断模块401连接,用于发送通知到相关人员。通知可以是版本描述(release notes)、错误信息或其他相关信息,相关人员可以是代码提交人员、项目管理人员或其他人员,本发明对此不作限制。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种自动编译的方法,其特征在于,包括以下步骤:
设定编译时间;
到达所述编译时间后查询可编译版本;
查询到所述可编译版本后自动将编译任务分配给服务器,然后编译项目代码。
2.如权利要求1所述的自动编译的方法,其特征在于,所述设定编译时间的具体步骤为:
预定编译时间;
等待所述预定编译时间;
判断是否到达所述预定编译时间;
如判断为否,则继续等待直到到达所述预定编译时间;
如判断为是,则进行所述查询可编译版本步骤。
3.如权利要求2所述的自动编译的方法,其特征在于,所述查询可编译版本的具体步骤为:
连接数据库,查询当前时间是否有未编译的版本号,将未编译的版本号加入可编译版本列表;
根据数据库中查询返回的可编译列表是否为空,判断是否存在可编译版本;
若为空,表明没有可编译版本,则判断为否,返回所述等待预定编译时间步骤;
若不为空,表明存在可编译版本,则判断为是,将可编译版本作为编译任务,进行所述项目代码编译步骤。
4.如权利要求3所述的自动编译的方法,其特征在于,所述进行项目代码编译的具体步骤为:
迭代可编译版本,同时查询可用编译服务器,以配置有编译任务版本库的编译服务器作为可用编译服务器;
根据各个可用编译服务器上配置的版本库名称和最大可编译的任务数量,对所述可用编译服务器进行分配;
发送编译任务到相应的所述可用编译服务器;
所述可用编译服务器分别独自编译项目代码。
5.如权利要求4所述的自动编译的方法,其特征在于,单个可用编译服务器完成项目代码编译后,判断所述单个可用编译服务器是否完成编译任务,如判断为否,则发送错误信息到相关人员;
如判断为是,则发送版本描述到相关人员,完成项目代码编译。
6.一种自动编译的系统,其特征在于,包括:
定时模块,用于设定编译开始时间;
查询模块,与所述定时模块连接,用于查询JIRA是否有可编译版本;
编译模块,与所述查询模块连接,用于编译项目代码。
7.如权利要求6所述的自动编译的系统,其特征在于,所述定时模块包括:
时间设定模块,用于设定编译开始时间;
时间判断模块,与所述时间设定模块连接,用于判断是否到达设定的编译开始时间。
8.如权利要求7所述的自动编译的系统,其特征在于,所述查询模块包括:
编译版本查询模块,与所述时间判断模块连接,用于查询JIRA编译版本;
编译版本判断模块,与所述编译版本查询模块连接,用于判断是否存在可编译的JIRA版本。
9.如权利要求8所述的自动编译的系统,其特征在于,所述编译模块包括:
版本迭代模块,与所述编译版本判断模块连接,用于迭代可编译版本;
服务器查询模块,与所述编译版本判断模块连接,用于查询可用的编译服务器;
服务器分配模块,与所述版本迭代模块和服务器查询模块分别连接,用于对可用的编译服务器分配编译任务,并发送编译任务给相应的服务器;
编译服务器模块,与所述服务器分配模块连接,用于接收编译任务,并编译相应的项目代码。
10.如权利要求9所述的自动编译的系统,其特征在于,所述自动编译的系统还包括通知模块,与所述编译模块连接,用于发送通知;
所述通知模块包括:
编译判断模块,与所述编译服务器连接,用于判断是否完成本服务器的项目代码编译任务;
发送模块,与所述编译判断模块连接,用于发送版本描述或错误信息。
CN201610787301.2A 2016-08-31 2016-08-31 自动编译的方法和系统 Pending CN106648812A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610787301.2A CN106648812A (zh) 2016-08-31 2016-08-31 自动编译的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610787301.2A CN106648812A (zh) 2016-08-31 2016-08-31 自动编译的方法和系统

Publications (1)

Publication Number Publication Date
CN106648812A true CN106648812A (zh) 2017-05-10

Family

ID=58852940

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610787301.2A Pending CN106648812A (zh) 2016-08-31 2016-08-31 自动编译的方法和系统

Country Status (1)

Country Link
CN (1) CN106648812A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992257A (zh) * 2019-03-28 2019-07-09 深圳市创联时代科技有限公司 一种自动编译库的方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101290581A (zh) * 2008-05-16 2008-10-22 北京星网锐捷网络技术有限公司 编译系统及方法
CN103729195A (zh) * 2014-01-15 2014-04-16 北京奇虎科技有限公司 一种软件版本的控制方法及系统
US9116713B1 (en) * 2013-03-12 2015-08-25 Emc Corporation System and method for expression evaluation in a distributed networking environment
CN105068855A (zh) * 2015-08-19 2015-11-18 北京奇虎科技有限公司 一种编译安卓包开发文件的方法、服务器和系统
CN105302554A (zh) * 2015-10-23 2016-02-03 深圳市创维电器科技有限公司 一种Android系统自动化程序构建方法及系统
CN105511933A (zh) * 2015-12-03 2016-04-20 深圳市创维软件有限公司 一种源代码的编译方法及相关设备
CN105760208A (zh) * 2016-04-12 2016-07-13 芯讯通无线科技(上海)有限公司 计算机程序编译方法及装置
CN105893147A (zh) * 2016-03-29 2016-08-24 乐视控股(北京)有限公司 多任务队列管理方法、设备及系统
CN105893050A (zh) * 2016-04-05 2016-08-24 延锋伟世通电子科技(南京)有限公司 一种基于PLMS、SVN和Jenkins进行软件项目全生命周期管理的方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101290581A (zh) * 2008-05-16 2008-10-22 北京星网锐捷网络技术有限公司 编译系统及方法
US9116713B1 (en) * 2013-03-12 2015-08-25 Emc Corporation System and method for expression evaluation in a distributed networking environment
CN103729195A (zh) * 2014-01-15 2014-04-16 北京奇虎科技有限公司 一种软件版本的控制方法及系统
CN105068855A (zh) * 2015-08-19 2015-11-18 北京奇虎科技有限公司 一种编译安卓包开发文件的方法、服务器和系统
CN105302554A (zh) * 2015-10-23 2016-02-03 深圳市创维电器科技有限公司 一种Android系统自动化程序构建方法及系统
CN105511933A (zh) * 2015-12-03 2016-04-20 深圳市创维软件有限公司 一种源代码的编译方法及相关设备
CN105893147A (zh) * 2016-03-29 2016-08-24 乐视控股(北京)有限公司 多任务队列管理方法、设备及系统
CN105893050A (zh) * 2016-04-05 2016-08-24 延锋伟世通电子科技(南京)有限公司 一种基于PLMS、SVN和Jenkins进行软件项目全生命周期管理的方法
CN105760208A (zh) * 2016-04-12 2016-07-13 芯讯通无线科技(上海)有限公司 计算机程序编译方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992257A (zh) * 2019-03-28 2019-07-09 深圳市创联时代科技有限公司 一种自动编译库的方法
CN109992257B (zh) * 2019-03-28 2022-12-06 深圳市创联时代科技有限公司 一种自动编译库的方法

Similar Documents

Publication Publication Date Title
CN105049268B (zh) 分布式计算资源分配系统和任务处理方法
CN104391918B (zh) 基于对等部署的分布式数据库查询优先级管理的实现方法
US20130117290A1 (en) Platform for software as a service and method for provisioning service for supporting multi-tenants using the platform
CN105183564B (zh) 基于云测试平台的设备调度方法、装置及系统
CN108182111A (zh) 任务调度系统、方法和装置
CN107943453B (zh) 一种实现运维系统自定义计划任务的方法及系统
CN104580284A (zh) 业务分配装置和业务分配方法
CN103873534A (zh) 一种应用集群迁移方法及装置
CN107864211A (zh) 集群资源调度方法及系统
CN103793275A (zh) 实现负载均衡的系统及处理方法
CN110311965A (zh) 一种云计算环境下的任务调度方法及系统
CN102760073B (zh) 一种任务调度方法、系统及装置
CN106331160A (zh) 一种数据迁移方法及系统
CN103957255A (zh) 一种轻量级应用开发云服务平台及其资源的访问方法
CN103729742B (zh) 一种基于soa架构和模型驱动架构的数据资源管理系统
CN110134533B (zh) 一种可批量调度数据的系统及方法
CN105446812A (zh) 一种多任务调度配置方法
CN105550025B (zh) 分布式基础设施即服务(IaaS)调度方法及系统
CN106648812A (zh) 自动编译的方法和系统
CN108156194B (zh) 一种表单数据处理方法
CN110888925B (zh) 数据加载分发的方法、装置及存储介质
Brock et al. Execution of compute intensive applications on hybrid clouds (case study with mpiblast)
CN104735134B (zh) 一种用于提供计算服务的方法和装置
CN102147750A (zh) 作业处理方法和系统
CN114217875B (zh) 处理订单的方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170510

WD01 Invention patent application deemed withdrawn after publication