本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種操作系統(tǒng)的編譯方法和裝置。
背景技術(shù):
由于需要解決的問(wèn)題越來(lái)越多,各種操作系統(tǒng)應(yīng)用而生,但根據(jù)問(wèn)題所在的環(huán)境不同,操作系統(tǒng)的跨平臺(tái)應(yīng)用越來(lái)越廣泛,但一些操作系統(tǒng)不是支持所有的平臺(tái),從而給操作系統(tǒng)的跨平臺(tái)應(yīng)用帶來(lái)一些不便。
舉例來(lái)說(shuō),F(xiàn)edora(由全球社區(qū)愛(ài)好者構(gòu)建的面向日常應(yīng)用的快速、穩(wěn)定、強(qiáng)大的操作系統(tǒng))社區(qū)提供的Fedora操作系統(tǒng)不支持MIPS(Microprocessor without interlocked piped stages,精簡(jiǎn)指令集)架構(gòu),若需要在MIPS架構(gòu)上安裝Fedora操作系統(tǒng),需要下載用于建立Fedora操作系統(tǒng)的源碼數(shù)據(jù)包,源碼數(shù)據(jù)包可以為紅帽源碼包管理(Source RedHat Package Manager,簡(jiǎn)稱SPRM)包,并對(duì)源碼數(shù)據(jù)包進(jìn)行編譯得到編譯數(shù)據(jù)包,編譯數(shù)據(jù)包可以為紅帽包管理數(shù)據(jù)包(RedHat Package Manager,簡(jiǎn)稱RPM)包;但在對(duì)各個(gè)源碼數(shù)據(jù)包進(jìn)行編譯時(shí),由于MIPS架構(gòu)的平臺(tái)不清楚各個(gè)源碼數(shù)據(jù)包之間存在單向依賴關(guān)系,不能直接對(duì)各個(gè)源碼數(shù)據(jù)包進(jìn)行編譯;例如源碼數(shù)據(jù)包2依賴于源碼數(shù)據(jù)包1,則對(duì)源碼數(shù)據(jù)包2進(jìn)行編譯時(shí),需要以對(duì)源碼數(shù)據(jù)包1進(jìn)行編譯得到編譯數(shù)據(jù)包1,基于安裝編譯數(shù)據(jù)包1得到的編譯環(huán)境,才可對(duì)源碼數(shù)據(jù)包2進(jìn)行編譯,如果先對(duì)源碼數(shù)據(jù)包2進(jìn)行編譯,則會(huì)編譯不成功;因此技術(shù)人員需要按照各個(gè)源碼數(shù)據(jù)包之間存在的單向依賴關(guān)系,對(duì)各個(gè)源碼數(shù)據(jù)包進(jìn)行手動(dòng)編譯。
但由于建立Fedora操作系統(tǒng)的源碼數(shù)據(jù)包的個(gè)數(shù)通常在百位數(shù)以上,因此上述單向依賴關(guān)系的信息量繁雜龐大,通過(guò)技術(shù)人員的手動(dòng)編譯百位數(shù)以上的源碼數(shù)據(jù)包,基本是不現(xiàn)實(shí)的;即使通過(guò)技術(shù)人員的手動(dòng)編 譯,所耗費(fèi)的人力物力較大,不利于操作系統(tǒng)的跨平臺(tái)應(yīng)用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種操作系統(tǒng)的編譯方法和裝置,以實(shí)現(xiàn)在不可知源碼數(shù)據(jù)包之間存在的全部依賴關(guān)系的平臺(tái)上編譯操作系統(tǒng)的發(fā)行版,使得采用本發(fā)明提供的編譯方法編譯得到的操作系統(tǒng)的發(fā)行版可以在非Fedora開(kāi)發(fā)社區(qū)官方支持的平臺(tái)上運(yùn)行,擴(kuò)展了操作系統(tǒng)的通用性。
第一方面,本發(fā)明提供一種操作系統(tǒng)的編譯方法,包括:
步驟一、獲取最小編譯數(shù)據(jù)包,所述最小編譯數(shù)據(jù)包用于提供所述操作系統(tǒng)編譯時(shí)所需的最小編譯環(huán)境;
步驟二、在當(dāng)前平臺(tái)上,根據(jù)所述最小編譯數(shù)據(jù)包生成第一編譯環(huán)境;
步驟三、根據(jù)所述第一編譯環(huán)境在多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中確定第一源碼數(shù)據(jù)包,所述第一編譯環(huán)境滿足編譯所述第一源碼數(shù)據(jù)包所需的依賴條件;
步驟四、根據(jù)所述第一編譯環(huán)境對(duì)所述第一源碼數(shù)據(jù)包進(jìn)行編譯操作,得到第一編譯數(shù)據(jù)包;
步驟五、基于所述第一編譯環(huán)境安裝所述第一編譯數(shù)據(jù)包,建立第二編譯環(huán)境;
步驟六、將所述第二編譯環(huán)境作為新的第一編譯環(huán)境,執(zhí)行步驟三,直至所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包均已被編譯;
其中,所述操作系統(tǒng)的發(fā)行版所需的源碼集合由所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包和所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包構(gòu)成,所述最小編譯數(shù)據(jù)包根據(jù)多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包編譯得到。
在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)第一編譯環(huán)境在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中確定第一源碼數(shù)據(jù)包,包括:
在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中選取任意一個(gè)未編譯的源碼數(shù)據(jù)包;
根據(jù)所述第一編譯環(huán)境,對(duì)在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中選取的當(dāng)前源碼數(shù)據(jù)包進(jìn)行解析判斷操作,得到判斷結(jié)果;
判斷是否根據(jù)當(dāng)前的所述第一編譯環(huán)境對(duì)所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中所有未編譯的源碼數(shù)據(jù)包進(jìn)行過(guò)解析判斷操作,若否,則選擇任意一個(gè)未 進(jìn)行過(guò)解析判斷操作的源碼數(shù)據(jù)包作為新的當(dāng)前源碼數(shù)據(jù)包,返回執(zhí)行所述解析判斷操作;
將所述判斷結(jié)果為所述第一編譯環(huán)境符合編譯所述待編譯數(shù)據(jù)包所需的依賴條件的源碼數(shù)據(jù)包確定為所述第一源碼數(shù)據(jù)包。
根據(jù)第一方面的第一種可能的實(shí)現(xiàn)方式中,在第二種可能的實(shí)現(xiàn)方式,所述根據(jù)所述第一編譯環(huán)境,對(duì)在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中選取的當(dāng)前源碼數(shù)據(jù)包進(jìn)行解析判斷操作,包括:
對(duì)所述當(dāng)前源碼數(shù)據(jù)包進(jìn)行解析,獲得編譯所述當(dāng)前源碼數(shù)據(jù)包所需要的依賴條件,所述依賴條件為編譯所述當(dāng)前源碼數(shù)據(jù)包前需要預(yù)先安裝的編譯數(shù)據(jù)包的包名;
從所述第一編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引中獲取所述第一編譯環(huán)境已經(jīng)安裝的編譯數(shù)據(jù)包的信息;所述倉(cāng)庫(kù)索引中存儲(chǔ)了用于建立所述第一編譯環(huán)境的各個(gè)編譯數(shù)據(jù)包的包名
判斷所述第一編譯環(huán)境已經(jīng)安裝的編譯數(shù)據(jù)包的信息是否包含編譯所述當(dāng)前源碼數(shù)據(jù)包前需要預(yù)先安裝的全部編譯數(shù)據(jù)包的包名。
根據(jù)第一方面的第二種可能的實(shí)現(xiàn)方式中,在第三種可能的實(shí)現(xiàn)方式,所述基于所述第一編譯環(huán)境安裝所述第一編譯數(shù)據(jù)包,建立第二編譯環(huán)境之后,所述編譯方法還包括:
將所述第一編譯數(shù)據(jù)包的包名添加至所述第二編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引中,得到所述第二編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引。
根據(jù)第一方面的第三種可能的實(shí)現(xiàn)方式中,在第四種可能的實(shí)現(xiàn)方式,在所述獲取最小編譯數(shù)據(jù)包之前,所述編譯方法還包括:
下載所述操作系統(tǒng)的發(fā)行版所需的源碼集合和預(yù)設(shè)的最小依賴規(guī)則,所述預(yù)設(shè)的最小依賴規(guī)則為能夠提供所述操作系統(tǒng)的最小編譯環(huán)境的多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的包名和所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的編譯順序;
從所述操作系統(tǒng)的發(fā)行版所需的源碼集合中獲取所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的包名對(duì)應(yīng)的源碼數(shù)據(jù)包;
所述獲取用于提供所述操作系統(tǒng)編譯時(shí)所需的最小編譯環(huán)境的最小編譯數(shù)據(jù)包,包括:
按照所述預(yù)設(shè)的最小依賴規(guī)則,對(duì)所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包中的每一 個(gè)源碼數(shù)據(jù)包依次進(jìn)行編譯,得到多個(gè)所述基礎(chǔ)的源碼數(shù)據(jù)包對(duì)應(yīng)的最小編譯數(shù)據(jù)包;
所述根據(jù)所述最小編譯數(shù)據(jù)包生成第一編譯環(huán)境,包括:
安裝所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包對(duì)應(yīng)的最小編譯數(shù)據(jù)包,生成所述第一編譯環(huán)境,并生成所述第一編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引。
第二方面,本發(fā)明提供一種操作系統(tǒng)的編譯裝置,包括:
獲取模塊,用于獲取最小編譯數(shù)據(jù)包,所述最小編譯數(shù)據(jù)包用于提供所述操作系統(tǒng)的最小編譯環(huán)境,所述最小編譯數(shù)據(jù)包根據(jù)多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包編譯得到;
建立模塊,用于在當(dāng)前平臺(tái)上,根據(jù)所述最小編譯數(shù)據(jù)包生成第一編譯環(huán)境;
確定模塊,用于在當(dāng)前平臺(tái)上,根據(jù)所述第一編譯環(huán)境在多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中確定第一源碼數(shù)據(jù)包,所述第一編譯環(huán)境滿足編譯所述第一源碼數(shù)據(jù)包所需的依賴條件;
編譯模塊,用于根據(jù)所述建立模塊生成的所述第一編譯環(huán)境對(duì)所述確定模塊確定的所述第一源碼數(shù)據(jù)包進(jìn)行編譯操作,得到第一編譯數(shù)據(jù)包;
所述建立模塊,還用于基于所述第一編譯環(huán)境安裝所述編譯模塊得到的第一編譯數(shù)據(jù)包,建立第二編譯環(huán)境;
所述建立模塊,還用于將所述第二編譯環(huán)境作為新的第一編譯環(huán)境,控制所述確定模塊執(zhí)行所述根據(jù)所述第一編譯環(huán)境在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中確定第一源碼數(shù)據(jù)包,直至所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包均已被編譯;
其中,所述操作系統(tǒng)的發(fā)行版所需的源碼集合由所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包和所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包構(gòu)成,所述最小編譯數(shù)據(jù)包根據(jù)多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包編譯得到。
在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述確定模塊具體包括:
在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中選取任意一個(gè)未編譯的源碼數(shù)據(jù)包;
根據(jù)所述第一編譯環(huán)境,對(duì)在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中選取的當(dāng)前源碼數(shù)據(jù)包進(jìn)行解析判斷操作,得到判斷結(jié)果;
若所述當(dāng)前源碼數(shù)據(jù)包對(duì)應(yīng)的判斷結(jié)果為所述第一編譯環(huán)境不符合編譯 所述當(dāng)前源碼數(shù)據(jù)包所需的依賴條件,則在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中,選擇除該當(dāng)前源碼數(shù)據(jù)包以外的任意一個(gè)源碼數(shù)據(jù)包作為新的當(dāng)前源碼數(shù)據(jù)包,返回執(zhí)行所述解析判斷操作;
將所述判斷結(jié)果為所述第一編譯環(huán)境符合編譯所述待編譯數(shù)據(jù)包所需的依賴條件的源碼數(shù)據(jù)包確定為所述第一源碼數(shù)據(jù)包。
根據(jù)第二方面的第一種可能的實(shí)現(xiàn)方式中,在第二種可能的實(shí)現(xiàn)方式,所述確定模塊具體用于
對(duì)所述當(dāng)前源碼數(shù)據(jù)包進(jìn)行解析,獲得編譯所述當(dāng)前源碼數(shù)據(jù)包所需要的依賴條件,所述依賴條件為編譯所述當(dāng)前源碼數(shù)據(jù)包前需要預(yù)先安裝的編譯數(shù)據(jù)包的包名;
從所述第一編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引中獲取所述第一編譯環(huán)境已經(jīng)安裝的編譯數(shù)據(jù)包的信息;所述倉(cāng)庫(kù)索引中存儲(chǔ)了用于建立所述第一編譯環(huán)境的各個(gè)編譯數(shù)據(jù)包的包名;
判斷所述第一編譯環(huán)境已經(jīng)安裝的編譯數(shù)據(jù)包的信息是否包含編譯所述當(dāng)前源碼數(shù)據(jù)包前需要預(yù)先安裝的全部編譯數(shù)據(jù)包的包名。
根據(jù)第二方面的第二種可能的實(shí)現(xiàn)方式中,在第三種可能的實(shí)現(xiàn)方式,所述建立模塊還用于:
在基于所述第一編譯環(huán)境安裝所述編譯模塊得到的第一編譯數(shù)據(jù)包,建立第二編譯環(huán)境之后,將所述第一編譯數(shù)據(jù)包的包名添加至所述第二編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引中,得到所述第二編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引。
根據(jù)第二方面的第三種可能的實(shí)現(xiàn)方式中,在第四種可能的實(shí)現(xiàn)方式,
所述獲取模塊,還用于:
下載所述操作系統(tǒng)的發(fā)行版所需的源碼集合和預(yù)設(shè)的最小依賴規(guī)則,所述預(yù)設(shè)的最小依賴規(guī)則為能夠提供所述操作系統(tǒng)的最小編譯環(huán)境的多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的包名和所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的編譯順序;
從所述操作系統(tǒng)的發(fā)行版所需的源碼集合中獲取所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的包名對(duì)應(yīng)的源碼數(shù)據(jù)包;
所述獲取模塊,具體用于:
按照所述預(yù)設(shè)的最小依賴規(guī)則,對(duì)所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包中的每一個(gè)源碼數(shù)據(jù)包依次進(jìn)行編譯,得到多個(gè)所述基礎(chǔ)的源碼數(shù)據(jù)包對(duì)應(yīng)的最小編 譯數(shù)據(jù)包;
所述編譯模塊,還用于:
安裝所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包對(duì)應(yīng)的最小編譯數(shù)據(jù)包,生成第一編譯環(huán)境,并生成所述第一編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引。
本發(fā)明提供的操作系統(tǒng)的編譯方法和裝置,通過(guò)利用各個(gè)源碼數(shù)據(jù)包對(duì)編譯環(huán)境的依賴條件,可基于第一編譯環(huán)境確定當(dāng)前可進(jìn)行編譯和安裝的源碼數(shù)據(jù)包,隨后建立新的第一編譯環(huán)境,繼續(xù)確定基于新的第一編譯環(huán)境可進(jìn)行編譯和安裝的源碼數(shù)據(jù)包,以此類推自動(dòng)地對(duì)各個(gè)源碼數(shù)據(jù)包進(jìn)行編譯和安裝,直至多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包均被編譯,以完成操作系統(tǒng)的發(fā)行版所需的全部源碼數(shù)據(jù)包的編譯,從而實(shí)現(xiàn)了在不可知源碼數(shù)據(jù)包之間存在的全部依賴關(guān)系的平臺(tái)上編譯操作系統(tǒng)的發(fā)行版,由于在當(dāng)前平臺(tái)上編譯得到的操作系統(tǒng)能夠在該當(dāng)前平臺(tái)上安裝運(yùn)行,使得采用本發(fā)明提供的編譯方法編譯得到的操作系統(tǒng)的發(fā)行版可以在非Fedora開(kāi)發(fā)社區(qū)官方支持的平臺(tái)上運(yùn)行,擴(kuò)展了該操作系統(tǒng)的通用性。
附圖說(shuō)明
圖1為本發(fā)明操作系統(tǒng)的編譯方法實(shí)施例一的流程圖;
圖2為本發(fā)明操作系統(tǒng)的編譯方法實(shí)施例二的流程圖;
圖3為本發(fā)明操作系統(tǒng)的編譯裝置實(shí)施例一的結(jié)構(gòu)圖。
具體實(shí)施方式
圖1為本發(fā)明操作系統(tǒng)的編譯方法實(shí)施例一的流程圖。如圖1所示,本實(shí)施例的執(zhí)行主體為操作系統(tǒng)的編譯裝置,該編譯裝置可采用軟件和/或硬件的方式實(shí)現(xiàn),優(yōu)選的,該編譯裝置可以集成在需要安裝操作系統(tǒng)的當(dāng)前平臺(tái)上,該當(dāng)前平臺(tái)可以是對(duì)編譯操作系統(tǒng)所需的多個(gè)源碼數(shù)據(jù)包之間存在的全部單向依賴關(guān)系不可知的,具體的,本實(shí)施例包括:
S101、獲取最小編譯數(shù)據(jù)包,所述最小編譯數(shù)據(jù)包用于提供所述操作系統(tǒng)編譯時(shí)所需的最小編譯環(huán)境。
S102、在當(dāng)前平臺(tái)上,根據(jù)所述最小編譯數(shù)據(jù)包生成第一編譯環(huán)境。
S103、在當(dāng)前平臺(tái)上,根據(jù)第一編譯環(huán)境在多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中 確定第一源碼數(shù)據(jù)包。
在實(shí)際應(yīng)用中,本實(shí)施例的當(dāng)前平臺(tái)可以采用MIPS架構(gòu)的平臺(tái),即需要在該MIPS架構(gòu)的平臺(tái)上編譯Fedora操作系統(tǒng)的發(fā)行版的全部源碼數(shù)據(jù)包,以生成可以在當(dāng)前平臺(tái)上安裝的Fedora操作系統(tǒng)的發(fā)行版的可執(zhí)行的安裝文件,由于MIPS架構(gòu)不是Fedora開(kāi)發(fā)社區(qū)官方支持的架構(gòu),因此,基于MIPS架構(gòu)的當(dāng)前平臺(tái)不可知編譯Fedora操作系統(tǒng)的發(fā)行版所需的各個(gè)源碼數(shù)據(jù)包之間全部的單向依賴關(guān)系,不能直接對(duì)各個(gè)源碼數(shù)據(jù)包進(jìn)行編譯;例如源碼數(shù)據(jù)包2依賴于源碼數(shù)據(jù)包1,則對(duì)源碼數(shù)據(jù)包2進(jìn)行編譯時(shí),需要以對(duì)源碼數(shù)據(jù)包1進(jìn)行編譯得到編譯數(shù)據(jù)包1為編譯環(huán)境,基于安裝了編譯數(shù)據(jù)包1的編譯環(huán)境,才可對(duì)源碼數(shù)據(jù)包2進(jìn)行編譯,如果先對(duì)源碼數(shù)據(jù)包2進(jìn)行編譯,則會(huì)編譯不成功。
在本發(fā)明實(shí)施例中,通過(guò)S101獲取用于提供編譯所述操作系統(tǒng)的最小編譯環(huán)境的最小編譯數(shù)據(jù)包,并通過(guò)S102在當(dāng)前平臺(tái)上,安裝所述最小編譯數(shù)據(jù)包生成第一編譯環(huán)境,得到所述操作系統(tǒng)的初始編譯環(huán)境。然后,通過(guò)S103根據(jù)所述第一編譯環(huán)境確定當(dāng)前可進(jìn)行編譯的非基礎(chǔ)的源碼數(shù)據(jù)包為第一源碼數(shù)據(jù)包,該第一編譯環(huán)境滿足編譯該第一源碼數(shù)據(jù)包所需的依賴條件;其中,S103獲取到的第一源碼數(shù)據(jù)包為根據(jù)第一編譯環(huán)境篩選出來(lái)的,S103所獲取的第一源碼數(shù)據(jù)包,均為其所需的編譯環(huán)境已被當(dāng)前的第一編譯環(huán)境滿足的源碼數(shù)據(jù)包。也就是說(shuō),此時(shí)獲取到的第一源碼數(shù)據(jù)包必然能夠基于當(dāng)前的第一編譯環(huán)境進(jìn)行編譯。即S103選中的源碼數(shù)據(jù)包都能夠被成功編譯。
需要說(shuō)明的是,編譯Fedora操作系統(tǒng)的發(fā)行版所需的多個(gè)源碼數(shù)據(jù)包分為多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包和多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包,即多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包和多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包構(gòu)成了操作系統(tǒng)編譯時(shí)所需的源碼集合。S101中的最小編譯數(shù)據(jù)包可以根據(jù)所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包編譯得到??蛇x的,所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的包名可以由Federa開(kāi)發(fā)社區(qū)提供,根據(jù)所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包編譯得到的編譯數(shù)據(jù)包,能夠提供編譯系統(tǒng)需要的最小編譯環(huán)境。
還需要說(shuō)明的是,本發(fā)明實(shí)施例的方法也可以應(yīng)用于其他非Federa開(kāi)發(fā)社區(qū)官方支持的平臺(tái)。
S104、根據(jù)所述第一編譯環(huán)境對(duì)所述第一源碼數(shù)據(jù)包進(jìn)行編譯操作,得到第一編譯數(shù)據(jù)包。
上述第一源碼數(shù)據(jù)包為當(dāng)前待操作的源碼數(shù)據(jù)包,當(dāng)對(duì)該待操作的源碼數(shù)據(jù)包進(jìn)行編譯操作后,得到的編譯數(shù)據(jù)包即為第一編譯數(shù)據(jù)包。
S105、基于所述第一編譯環(huán)境安裝所述第一編譯數(shù)據(jù)包,建立第二編譯環(huán)境。
其中,所述第二編譯環(huán)境包括所述第一編譯環(huán)境和安裝所述第一編譯數(shù)據(jù)包生成的編譯環(huán)境,例如,可以設(shè)置安裝第一編譯數(shù)據(jù)包輸出的編譯環(huán)境的目錄指向第一編譯環(huán)境的存儲(chǔ)目錄。
S106、判斷所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包是否全部被編譯,若否,執(zhí)行S107,若是,S108。
S107、將第二編譯環(huán)境作為新的第一編譯環(huán)境,返回執(zhí)行S103。
S108、結(jié)束編譯。
舉例來(lái)說(shuō),在T1時(shí)刻,S101中的第一編譯環(huán)境是通過(guò)安裝RPM1~RPM80建立的,當(dāng)通過(guò)S102~S103安裝了RPM81,建立的了第二編譯環(huán)境,即該第二編譯環(huán)境是通過(guò)安裝RPM1~RPM81得到的,此時(shí)源碼集合中還剩余SRPM82~SRPM300,而建立Fedora操作系統(tǒng)需要將全部的源碼數(shù)據(jù)包進(jìn)行編譯、安裝,因此在T2時(shí)刻,將第二編譯環(huán)境作為新的第一編譯環(huán)境,返回執(zhí)行前述“根據(jù)所述第一編譯環(huán)境在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中確定第一源碼數(shù)據(jù)包”,直至所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包均已被編譯時(shí),就完成了所述操作系統(tǒng)的發(fā)行版的編譯。
其中第一源碼數(shù)據(jù)包的“第一”為相對(duì)概念,即在每一次執(zhí)行S103時(shí),根據(jù)當(dāng)前的第一編譯環(huán)境確定的源碼數(shù)據(jù)包,即為第一源碼數(shù)據(jù)包,例如在T1時(shí)刻,根據(jù)第一編譯環(huán)境確定的第一源碼數(shù)據(jù)包為SRPM81,隨后通過(guò)S104得到RPM81,再安裝RPM81,建立了第二編譯環(huán)境;隨后在T2時(shí)刻以第二編譯環(huán)境為第一編譯環(huán)境返回執(zhí)行S103時(shí),此時(shí)的第一編譯環(huán)境滿足編譯SRPM100和SRPM110所需的依賴條件,則此時(shí)的第一源碼數(shù)據(jù)包可以為SRPM100和SRPM110。
通過(guò)每一次S103~S106的循環(huán),利用各個(gè)源碼數(shù)據(jù)包對(duì)編譯環(huán)境的依賴條件,自動(dòng)地篩選并依次對(duì)各個(gè)源碼數(shù)據(jù)包進(jìn)行編譯和安裝,即在當(dāng)前平臺(tái) 不可知源碼集合中多個(gè)源碼數(shù)據(jù)包之間存在的全部單向依賴關(guān)系的情況下,仍然可完成操作系統(tǒng)的發(fā)行版的編譯。
本實(shí)施例中,通過(guò)利用各個(gè)源碼數(shù)據(jù)包對(duì)編譯環(huán)境的依賴條件,可基于第一編譯環(huán)境確定當(dāng)前可進(jìn)行編譯和安裝的源碼數(shù)據(jù)包,隨后建立新的第一編譯環(huán)境,繼續(xù)確定基于新的第一編譯環(huán)境可進(jìn)行編譯和安裝的源碼數(shù)據(jù)包,以此類推自動(dòng)地對(duì)各個(gè)源碼數(shù)據(jù)包進(jìn)行編譯和安裝,直至多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包均被編譯,以完成操作系統(tǒng)的發(fā)行版所需的全部源碼數(shù)據(jù)包的編譯,從而實(shí)現(xiàn)了在不可知源碼數(shù)據(jù)包之間存在的全部依賴關(guān)系的平臺(tái)上編譯操作系統(tǒng)的發(fā)行版,由于在當(dāng)前平臺(tái)上編譯得到的操作系統(tǒng)能夠在該當(dāng)前平臺(tái)上安裝運(yùn)行,使得采用本發(fā)明提供的編譯方法編譯得到的操作系統(tǒng)的發(fā)行版可以在非Fedora開(kāi)發(fā)社區(qū)官方支持的平臺(tái)上運(yùn)行,擴(kuò)展了該操作系統(tǒng)的通用性。
圖2為本發(fā)明操作系統(tǒng)的編譯方法實(shí)施例二的流程圖。如圖2所示,本實(shí)施例是在圖1所示的實(shí)施例的基礎(chǔ)上,做出進(jìn)一步的描述,本實(shí)施例可以包括:
圖1所示的實(shí)施例中的S101可以具體采用S203,在S203之前,所述編譯方法還可以包括S201和S202:
S201、下載建立操作系統(tǒng)所需的源碼集合和預(yù)設(shè)的最小依賴規(guī)則。
以Fedora操作系統(tǒng)為例,F(xiàn)edora開(kāi)發(fā)社區(qū)可以提供用于建立Fedora操作系統(tǒng)的全部源碼數(shù)據(jù)包,則建立操作系統(tǒng)的處理裝置可以訪問(wèn)Fedora開(kāi)發(fā)社區(qū),以下載源碼集合至當(dāng)前平臺(tái)上,且對(duì)源碼數(shù)據(jù)包進(jìn)行編譯時(shí)需要一個(gè)初始的編譯環(huán)境,該初始的編譯環(huán)境是通過(guò)對(duì)源碼集合中的基礎(chǔ)的源碼數(shù)據(jù)包(通常為80個(gè)源碼數(shù)據(jù)包)進(jìn)行編譯和安裝而建立的,而上述預(yù)設(shè)的最小依賴規(guī)則即用于Fedora開(kāi)發(fā)社區(qū)向操作系統(tǒng)的編譯裝置指示建立用于提供編譯所述操作系統(tǒng)的最小的編譯環(huán)境所需的多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包和所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的編譯順序。
S202、從所述操作系統(tǒng)的發(fā)行版所需的源碼集合中獲取所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的包名對(duì)應(yīng)的源碼數(shù)據(jù)包。
S203、按照所述預(yù)設(shè)的最小依賴規(guī)則,對(duì)所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包中 的每一個(gè)源碼數(shù)據(jù)包依次進(jìn)行編譯,得到多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包對(duì)應(yīng)的最小編譯數(shù)據(jù)包。
在實(shí)際應(yīng)用中,還需要在當(dāng)前平臺(tái)上搭建編譯Fedora操作系統(tǒng)的發(fā)行版所需的編譯系統(tǒng),例如,可采用科吉koji系統(tǒng),該koji系統(tǒng)用于編譯Fedora操作系統(tǒng)的發(fā)行版所需的各個(gè)源碼數(shù)據(jù)包;在koji系統(tǒng)中按照預(yù)設(shè)的最小依賴規(guī)則,對(duì)每一個(gè)基礎(chǔ)的源碼數(shù)據(jù)包進(jìn)行編譯,得到多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包對(duì)應(yīng)的多個(gè)最小編譯數(shù)據(jù)包,并將多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包導(dǎo)入至koji系統(tǒng)中,該最小編譯數(shù)據(jù)包可用于在當(dāng)前平臺(tái)安裝后得到編譯所述fedora操作系統(tǒng)的發(fā)行版所需的最小編譯環(huán)境。
相應(yīng)的,圖1所示的實(shí)施例中的S102可以具體采用S204,S103可以具體采用S205-S208,在S105之后可以還包括S210:
S204、安裝所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包對(duì)應(yīng)的最小編譯數(shù)據(jù)包,生成所述第一編譯環(huán)境,并生成所述第一編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引。
當(dāng)該第一編譯環(huán)境建立之后,便可自動(dòng)地按照S205、S206、S207、S208、S209、S104、S105、S210、S106循環(huán),將每一個(gè)源碼數(shù)據(jù)包編譯并安裝。
具體的,在每一次S205~S106的循環(huán)中,每一個(gè)第一編譯環(huán)境都與倉(cāng)庫(kù)索引相關(guān)聯(lián),所述倉(cāng)庫(kù)索引中存儲(chǔ)了用于建立所述第一編譯環(huán)境的各個(gè)編譯數(shù)據(jù)包的包名。
在S204中建立的第一編譯環(huán)境是初始的編譯環(huán)境,則此時(shí)的倉(cāng)庫(kù)索引中存儲(chǔ)的編譯數(shù)據(jù)包的標(biāo)識(shí),即為上述通過(guò)編譯了基礎(chǔ)的源碼數(shù)據(jù)包得到的各個(gè)編譯數(shù)據(jù)包的包名。
例如初始的第一編譯環(huán)境是通過(guò)安裝RPM1~RPM80建立的,則建立的初始的第一編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引中存儲(chǔ)了RPM1~RPM80各個(gè)編譯數(shù)據(jù)包的包名;
在實(shí)際應(yīng)用中,可將上述多個(gè)編譯數(shù)據(jù)包安裝在當(dāng)前平臺(tái)的“/fakeroot”目錄下,并將此目錄中的源指向koji系統(tǒng)自動(dòng)生成的倉(cāng)庫(kù)索引的地址。
S205、在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中選取任意一個(gè)未編譯的源碼數(shù)據(jù)包。
S206、根據(jù)所述第一編譯環(huán)境,對(duì)在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中選 取的當(dāng)前源碼數(shù)據(jù)包進(jìn)行解析判斷操作,得到判斷結(jié)果。
S207、判斷是否根據(jù)當(dāng)前的所述第一編譯環(huán)境對(duì)所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中所有未編譯的源碼數(shù)據(jù)包進(jìn)行過(guò)解析判斷操作,若否,執(zhí)行S208,若是,執(zhí)行S209。
S208、選擇任意一個(gè)未進(jìn)行過(guò)解析判斷操作的源碼數(shù)據(jù)包作為新的當(dāng)前源碼數(shù)據(jù)包,返回執(zhí)行S206。
S209、將所述判斷結(jié)果為所述第一編譯環(huán)境符合編譯所述待編譯數(shù)據(jù)包所需的依賴條件的源碼數(shù)據(jù)包確定為所述第一源碼數(shù)據(jù)包。
需要說(shuō)明的是,在第一次執(zhí)行S206時(shí),上述第一編譯環(huán)境即為S204中建立的第一編譯環(huán)境;隨著不斷循環(huán)執(zhí)行S205~S208,則在每一次循環(huán)中,S206中的第一編譯環(huán)境則為當(dāng)前時(shí)刻之前執(zhí)行下述S209得到的第一編譯環(huán)境。
具體的,所述根據(jù)所述第一編譯環(huán)境,對(duì)在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中選取的當(dāng)前源碼數(shù)據(jù)包進(jìn)行解析判斷操作,可以包括:
對(duì)所述當(dāng)前源碼數(shù)據(jù)包進(jìn)行解析,獲得編譯所述當(dāng)前源碼數(shù)據(jù)包所需要的依賴條件;所述依賴條件為編譯所述當(dāng)前源源碼數(shù)據(jù)包前需要預(yù)先安裝的編譯數(shù)據(jù)包的包名;
從所述第一編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引中獲取所述第一編譯環(huán)境已經(jīng)安裝的編譯數(shù)據(jù)包的信息;所述倉(cāng)庫(kù)索引中存儲(chǔ)了用于建立所述第一編譯環(huán)境的各個(gè)編譯數(shù)據(jù)包的包名;
判斷所述第一編譯環(huán)境已經(jīng)安裝的編譯數(shù)據(jù)包的信息是否包含編譯所述當(dāng)前源碼數(shù)據(jù)包前需要預(yù)先安裝的全部編譯數(shù)據(jù)包的包名。
在實(shí)際應(yīng)用中,所述操作系統(tǒng)的發(fā)行版所需的多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包有對(duì)應(yīng)的SPRM列表,該SRPM列表內(nèi)存儲(chǔ)了各個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包的包名,在SPRM列表上選擇任意一個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包的包名,獲取該非基礎(chǔ)的源碼數(shù)據(jù)包的包名對(duì)應(yīng)的非基礎(chǔ)的源碼數(shù)據(jù)包作為當(dāng)前源碼數(shù)據(jù)包,導(dǎo)入到當(dāng)前平臺(tái),隨后在koji系統(tǒng)下使用“rpmbuild-nobuild”分析當(dāng)前源碼數(shù)據(jù)包缺失的依賴條件,其中“rpmbuild”為命令,“nobuild”為參數(shù);舉例來(lái)說(shuō),對(duì)于當(dāng)前源碼數(shù)據(jù)包來(lái)說(shuō),需要一些依賴條件才可進(jìn)行編譯操作,即可以對(duì)當(dāng)前源碼數(shù)據(jù)包通過(guò)“rpmbuild-nobuild”分析獲知該當(dāng)前 源碼數(shù)據(jù)包所缺失的依賴條件,隨后使用yum命令的resolvedep在上述yum源指向的倉(cāng)庫(kù)索引中進(jìn)行查找,判斷當(dāng)前的倉(cāng)庫(kù)索引中是否有上述依賴條件的信息,若沒(méi)有則在所述多個(gè)非基礎(chǔ)的SRPM包中,選擇除該當(dāng)前SRPM包以外的任意一個(gè)SRPM包作為新的當(dāng)前SRPM包,返回執(zhí)行S206。
可選的,在實(shí)際應(yīng)用中,當(dāng)選擇除該當(dāng)前源碼數(shù)據(jù)包以外的任意一個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包作為新的當(dāng)前源碼數(shù)據(jù)包時(shí),可以將在S206中導(dǎo)入的當(dāng)前源碼數(shù)據(jù)包刪除;舉例來(lái)說(shuō),T3時(shí)刻,S203中導(dǎo)入了當(dāng)前源碼數(shù)據(jù)包SRPM 90,通過(guò)S207判斷后需執(zhí)行S206時(shí),可以選擇將SRPM 90從當(dāng)前平臺(tái)上刪除,則當(dāng)T5時(shí)刻再次將SRPM 90作為當(dāng)前源碼數(shù)據(jù)包時(shí),則在執(zhí)行S206時(shí),再次導(dǎo)入SRPM 90。
還需要說(shuō)明的是,在實(shí)際應(yīng)用中,在第一源碼數(shù)據(jù)包的標(biāo)識(shí)還需將S208中確定的第一源碼數(shù)據(jù)包對(duì)應(yīng)的非基礎(chǔ)的源碼數(shù)據(jù)包的包名在SRPM列表中標(biāo)記為已編譯。
S210、將第一編譯數(shù)據(jù)包的包名添加至所述第一編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引中,得到所述第二編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引。
本實(shí)施例通過(guò)S205~S210的循環(huán),將每一個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包編譯安裝,直至所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包均被編譯,以完成操作系統(tǒng)的的發(fā)行版的編譯。
本發(fā)明實(shí)施例的其他技術(shù)方案細(xì)節(jié)與圖1所示技術(shù)方案相同。
本實(shí)施例中,通過(guò)利用各個(gè)源碼數(shù)據(jù)包對(duì)編譯環(huán)境的依賴關(guān)系,可基于第一編譯環(huán)境確定當(dāng)前可進(jìn)行編譯和安裝的源碼數(shù)據(jù)包,隨后建立新的第一編譯環(huán)境,繼續(xù)確定基于新的第一編譯環(huán)境可進(jìn)行編譯和安裝的源碼數(shù)據(jù)包,以此類推自動(dòng)地對(duì)各個(gè)源碼數(shù)據(jù)包進(jìn)行編譯和安裝,直至多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包均被編譯,以完成操作系統(tǒng)的發(fā)行版所需的全部源碼數(shù)據(jù)包的編譯,從而實(shí)現(xiàn)了在不可知源碼數(shù)據(jù)包之間存在的全部依賴關(guān)系的平臺(tái)上編譯操作系統(tǒng)的發(fā)行版,由于在當(dāng)前平臺(tái)上編譯得到的操作系統(tǒng)能夠在該當(dāng)前平臺(tái)上安裝運(yùn)行,使得采用本發(fā)明提供的編譯方法編譯得到的操作系統(tǒng)的發(fā)行版可以在非Fedora開(kāi)發(fā)社區(qū)官方支持的平臺(tái)上運(yùn)行,擴(kuò)展了該操作系統(tǒng)的通用性。
圖3為本發(fā)明操作系統(tǒng)的編譯裝置實(shí)施例一的結(jié)構(gòu)圖。如圖3所示,包 括:
獲取模塊31,用于獲取最小編譯數(shù)據(jù)包,所述最小編譯數(shù)據(jù)包用于提供所述操作系統(tǒng)的最小編譯環(huán)境,所述最小編譯數(shù)據(jù)包根據(jù)多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包編譯得到;
建立模塊32,用于在當(dāng)前平臺(tái)上,根據(jù)所述最小編譯數(shù)據(jù)包生成第一編譯環(huán)境;
確定模塊33,用于在當(dāng)前平臺(tái)上,根據(jù)所述第一編譯環(huán)境在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中確定第一源碼數(shù)據(jù)包,所述第一編譯環(huán)境滿足編譯所述第一源碼數(shù)據(jù)包所需的依賴條件;
編譯模塊34,用于根據(jù)所述建立模塊32生成的所述第一編譯環(huán)境對(duì)所述確定模塊33確定的所述第一源碼數(shù)據(jù)包進(jìn)行編譯操作,得到第一編譯數(shù)據(jù)包;
所述建立模塊32,還用于基于所述第一編譯環(huán)境安裝所述編譯模塊34得到的第一編譯數(shù)據(jù)包,建立第二編譯環(huán)境;
所述建立模塊32,還用于將所述第二編譯環(huán)境作為新的第一編譯環(huán)境,控制所述確定模塊33執(zhí)行所述根據(jù)第一編譯環(huán)境在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中確定第一源碼數(shù)據(jù)包,直至所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中無(wú)源碼數(shù)據(jù)包,以完成操作系統(tǒng)的建立;
其中,所述操作系統(tǒng)的發(fā)行版所需的源碼集合由所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包和所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包構(gòu)成,所述最小編譯數(shù)據(jù)包根據(jù)多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包編譯得到。
本實(shí)施例中,通過(guò)利用各個(gè)源碼數(shù)據(jù)包對(duì)編譯環(huán)境的依賴關(guān)條件,可基于第一編譯環(huán)境確定當(dāng)前可進(jìn)行編譯和安裝的源碼數(shù)據(jù)包,隨后建立新的第一編譯環(huán)境,繼續(xù)確定基于新的第一編譯環(huán)境可進(jìn)行編譯和安裝的源碼數(shù)據(jù)包,以此類推自動(dòng)地對(duì)各個(gè)源碼數(shù)據(jù)包進(jìn)行編譯和安裝,直至多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包均被編譯,以完成操作系統(tǒng)的發(fā)行版所需的全部源碼數(shù)據(jù)包的編譯,從而實(shí)現(xiàn)了在不可知源碼數(shù)據(jù)包之間存在的全部依賴關(guān)系的平臺(tái)上編譯該操作系統(tǒng)的發(fā)行版,使得采用本發(fā)明提供的編譯方法編譯得到的操作系統(tǒng)的發(fā)行版可以在非Fedora開(kāi)發(fā)社區(qū)官方支持的平臺(tái)上運(yùn)行,擴(kuò)展了該操作系統(tǒng)的通用性。
可選的,在圖3所示的操作系統(tǒng)的編譯裝置的基礎(chǔ)上,本發(fā)明實(shí)施例還提供一種操作系統(tǒng)的編譯裝置的實(shí)施方式。
在本實(shí)施例中,確定模塊33可以具體用于:
在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中選取任意一個(gè)未編譯的源碼數(shù)據(jù)包;
根據(jù)所述第一編譯環(huán)境,對(duì)在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中選取的當(dāng)前源碼數(shù)據(jù)包進(jìn)行解析判斷操作,得到判斷結(jié)果;
若所述當(dāng)前源碼數(shù)據(jù)包對(duì)應(yīng)的判斷結(jié)果為所述第一編譯環(huán)境不符合編譯所述當(dāng)前源碼數(shù)據(jù)包所需的依賴條件,則在所述多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包中,選擇除該當(dāng)前源碼數(shù)據(jù)包以外的任意一個(gè)源碼數(shù)據(jù)包作為新的當(dāng)前源碼數(shù)據(jù)包,返回執(zhí)行所述解析判斷操作;
將所述判斷結(jié)果為所述第一編譯環(huán)境符合編譯所述待編譯數(shù)據(jù)包所需的依賴條件的源碼數(shù)據(jù)包確定為所述第一源碼數(shù)據(jù)包。
進(jìn)一步的,確定模塊33可以具體用于:
對(duì)所述當(dāng)前源碼數(shù)據(jù)包進(jìn)行解析,獲得編譯所述當(dāng)前源碼數(shù)據(jù)包所需要的依賴條件,所述依賴條件為編譯所述當(dāng)前源源碼數(shù)據(jù)包前需要預(yù)先安裝的編譯數(shù)據(jù)包的包名;
從所述第一編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引中獲取所述第一編譯環(huán)境已經(jīng)安裝的編譯數(shù)據(jù)包的信息;所述倉(cāng)庫(kù)索引中存儲(chǔ)了用于建立所述第一編譯環(huán)境的各個(gè)編譯數(shù)據(jù)包的標(biāo)識(shí);
判斷所述第一編譯環(huán)境已經(jīng)安裝的編譯數(shù)據(jù)包的信息是否包含編譯所述當(dāng)前源碼數(shù)據(jù)包前需要預(yù)先安裝的全部編譯數(shù)據(jù)包的包名。
進(jìn)一步的,建立模塊32還可以用于:
在基于所述第一編譯環(huán)境安裝所述編譯模塊得到的第一編譯數(shù)據(jù)包,建立第二編譯環(huán)境之后,將所述第一編譯數(shù)據(jù)包的包名添加至所述第二編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引中,得到所述第二編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引。
進(jìn)一步的,獲取模塊31,還可以用于:
下載所述操作系統(tǒng)的發(fā)行版所需的源碼集合和預(yù)設(shè)的最小依賴規(guī)則,所述預(yù)設(shè)的最小依賴規(guī)則為能夠提供所述操作系統(tǒng)的最小編譯環(huán)境的多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的包名和所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包的編譯順序;
從所述操作系統(tǒng)的發(fā)行版所需的源碼集合中獲取所述多個(gè)基礎(chǔ)的源碼數(shù) 據(jù)包的包名對(duì)應(yīng)的源碼數(shù)據(jù)包;
獲取模塊31,可以具體用于:
按照所述預(yù)設(shè)的最小依賴規(guī)則,對(duì)所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包中的每一個(gè)源碼數(shù)據(jù)包依次進(jìn)行編譯,得到多個(gè)所述基礎(chǔ)的源碼數(shù)據(jù)包對(duì)應(yīng)的最小編譯數(shù)據(jù)包;
建立模塊33,還可以用于:
安裝所述多個(gè)基礎(chǔ)的源碼數(shù)據(jù)包對(duì)應(yīng)的最小編譯數(shù)據(jù)包,生成第一編譯環(huán)境,并生成所述第一編譯環(huán)境對(duì)應(yīng)的倉(cāng)庫(kù)索引。
本實(shí)施例中,通過(guò)利用各個(gè)源碼數(shù)據(jù)包對(duì)編譯環(huán)境的依賴關(guān)系,可基于第一編譯環(huán)境確定當(dāng)前可進(jìn)行編譯和安裝的源碼數(shù)據(jù)包,隨后建立新的第一編譯環(huán)境,繼續(xù)確定基于新的第一編譯環(huán)境可進(jìn)行編譯和安裝的源碼數(shù)據(jù)包,以此類推自動(dòng)地對(duì)各個(gè)源碼數(shù)據(jù)包進(jìn)行編譯和安裝,直至多個(gè)非基礎(chǔ)的源碼數(shù)據(jù)包均被編譯,以完成操作系統(tǒng)的發(fā)行版所需的全部源碼數(shù)據(jù)包的編譯,從而實(shí)現(xiàn)了在在不可知源碼數(shù)據(jù)包之間存在的全部依賴關(guān)系的平臺(tái)上編譯操作系統(tǒng)的發(fā)行版,由于在當(dāng)前平臺(tái)上編譯得到的操作系統(tǒng)能夠在該當(dāng)前平臺(tái)上安裝運(yùn)行,使得采用本發(fā)明提供的編譯方法編譯得到的操作系統(tǒng)的發(fā)行版可以在非Fedora開(kāi)發(fā)社區(qū)官方支持的平臺(tái)上運(yùn)行,擴(kuò)展了該操作系統(tǒng)的通用性。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。